@deepintel-ltd/farmpro-contracts 1.5.8 → 1.5.9

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 (53) hide show
  1. package/dist/index.js +50 -92
  2. package/dist/routes/admin.routes.js +13 -16
  3. package/dist/routes/agent-workflows.routes.js +81 -84
  4. package/dist/routes/agents.routes.js +29 -32
  5. package/dist/routes/analytics.routes.js +11 -14
  6. package/dist/routes/auth.routes.js +55 -58
  7. package/dist/routes/categories.routes.js +23 -26
  8. package/dist/routes/documents.routes.js +67 -70
  9. package/dist/routes/equipment.routes.js +55 -58
  10. package/dist/routes/farms.routes.js +32 -35
  11. package/dist/routes/field-monitoring.routes.js +70 -73
  12. package/dist/routes/field-observations.routes.js +41 -44
  13. package/dist/routes/fields.routes.js +44 -47
  14. package/dist/routes/finance.routes.js +121 -124
  15. package/dist/routes/harvest.routes.js +46 -49
  16. package/dist/routes/health.routes.js +6 -9
  17. package/dist/routes/index.js +51 -54
  18. package/dist/routes/input-usage.routes.js +14 -17
  19. package/dist/routes/inventory.routes.js +57 -60
  20. package/dist/routes/seasonal-plans.routes.js +14 -17
  21. package/dist/routes/soil-tests.routes.js +45 -48
  22. package/dist/routes/suppliers.routes.js +70 -73
  23. package/dist/routes/tasks.routes.js +65 -68
  24. package/dist/routes/team.routes.js +57 -60
  25. package/dist/routes/users.routes.js +13 -16
  26. package/dist/routes/weather.routes.js +10 -13
  27. package/dist/schemas/admin.schemas.js +43 -46
  28. package/dist/schemas/agent-workflows.schemas.js +34 -37
  29. package/dist/schemas/agents.schemas.js +46 -49
  30. package/dist/schemas/analytics.schemas.js +51 -54
  31. package/dist/schemas/auth.schemas.js +96 -99
  32. package/dist/schemas/categories.schemas.js +27 -30
  33. package/dist/schemas/common.schemas.js +89 -95
  34. package/dist/schemas/documents.schemas.js +59 -62
  35. package/dist/schemas/equipment.schemas.js +86 -89
  36. package/dist/schemas/farms.schemas.js +40 -43
  37. package/dist/schemas/field-monitoring.schemas.js +207 -210
  38. package/dist/schemas/field-observations.schemas.js +93 -96
  39. package/dist/schemas/fields.schemas.js +82 -85
  40. package/dist/schemas/finance.schemas.js +134 -137
  41. package/dist/schemas/harvest.schemas.js +46 -49
  42. package/dist/schemas/health.schemas.js +14 -17
  43. package/dist/schemas/input-usage.schemas.js +21 -24
  44. package/dist/schemas/inventory.schemas.js +58 -61
  45. package/dist/schemas/recommendations.schemas.js +22 -25
  46. package/dist/schemas/seasonal-plans.schemas.js +21 -24
  47. package/dist/schemas/soil-tests.schemas.js +70 -73
  48. package/dist/schemas/suppliers.schemas.js +90 -93
  49. package/dist/schemas/tasks.schemas.js +93 -96
  50. package/dist/schemas/team.schemas.js +35 -38
  51. package/dist/schemas/users.schemas.js +19 -22
  52. package/dist/schemas/weather.schemas.js +32 -35
  53. package/package.json +9 -1
@@ -1,122 +1,116 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dateRangeQuerySchema = exports.paginationQuerySchema = exports.errorResponseSchema = exports.createJsonApiResourceSchema = exports.timestampsSchema = exports.idParamSchema = exports.jsonApiSuccessResponseSchema = exports.jsonApiErrorResponseSchema = exports.jsonApiErrorSchema = exports.jsonApiIncludeQuerySchema = exports.jsonApiFieldsQuerySchema = exports.jsonApiFilterQuerySchema = exports.jsonApiSortQuerySchema = exports.jsonApiPaginationMetaSchema = exports.jsonApiPaginationLinksSchema = exports.jsonApiPaginationQuerySchema = exports.jsonApiCollectionResponseSchema = exports.jsonApiSingleResponseSchema = exports.jsonApiResourceSchema = exports.geoJSONGeometrySchema = void 0;
4
- const zod_1 = require("zod");
1
+ import { z } from 'zod';
5
2
  /**
6
3
  * Common schemas used across all API contracts - JSON:API compliant
7
4
  */
8
5
  // GeoJSON Geometry Schema (Polygon, MultiPolygon, Point, LineString)
9
- exports.geoJSONGeometrySchema = zod_1.z.object({
10
- type: zod_1.z.enum(['Polygon', 'MultiPolygon', 'Point', 'LineString']),
11
- coordinates: zod_1.z.union([
12
- zod_1.z.array(zod_1.z.array(zod_1.z.array(zod_1.z.number()))), // Polygon: [[[lng, lat], ...]]
13
- zod_1.z.array(zod_1.z.array(zod_1.z.array(zod_1.z.array(zod_1.z.number())))), // MultiPolygon: [[[[lng, lat], ...]]]
14
- zod_1.z.array(zod_1.z.number()), // Point: [lng, lat]
15
- zod_1.z.array(zod_1.z.array(zod_1.z.number())), // LineString: [[lng, lat], ...]
6
+ export const geoJSONGeometrySchema = z.object({
7
+ type: z.enum(['Polygon', 'MultiPolygon', 'Point', 'LineString']),
8
+ coordinates: z.union([
9
+ z.array(z.array(z.array(z.number()))), // Polygon: [[[lng, lat], ...]]
10
+ z.array(z.array(z.array(z.array(z.number())))), // MultiPolygon: [[[[lng, lat], ...]]]
11
+ z.array(z.number()), // Point: [lng, lat]
12
+ z.array(z.array(z.number())), // LineString: [[lng, lat], ...]
16
13
  ]),
17
14
  });
18
15
  // JSON:API Resource Object Base
19
- exports.jsonApiResourceSchema = zod_1.z.object({
20
- type: zod_1.z.string(),
21
- id: zod_1.z.string(),
22
- attributes: zod_1.z.record(zod_1.z.unknown()).optional(),
23
- relationships: zod_1.z.record(zod_1.z.unknown()).optional(),
24
- links: zod_1.z.record(zod_1.z.string()).optional(),
25
- meta: zod_1.z.record(zod_1.z.unknown()).optional(),
16
+ export const jsonApiResourceSchema = z.object({
17
+ type: z.string(),
18
+ id: z.string(),
19
+ attributes: z.record(z.unknown()).optional(),
20
+ relationships: z.record(z.unknown()).optional(),
21
+ links: z.record(z.string()).optional(),
22
+ meta: z.record(z.unknown()).optional(),
26
23
  });
27
24
  // JSON:API Single Resource Response
28
- const jsonApiSingleResponseSchema = (resourceSchema) => zod_1.z.object({
25
+ export const jsonApiSingleResponseSchema = (resourceSchema) => z.object({
29
26
  data: resourceSchema,
30
- included: zod_1.z.array(exports.jsonApiResourceSchema).optional(),
31
- meta: zod_1.z.record(zod_1.z.unknown()).optional(),
32
- links: zod_1.z.record(zod_1.z.string()).optional(),
27
+ included: z.array(jsonApiResourceSchema).optional(),
28
+ meta: z.record(z.unknown()).optional(),
29
+ links: z.record(z.string()).optional(),
33
30
  });
34
- exports.jsonApiSingleResponseSchema = jsonApiSingleResponseSchema;
35
31
  // JSON:API Collection Response
36
- const jsonApiCollectionResponseSchema = (resourceSchema) => zod_1.z.object({
37
- data: zod_1.z.array(resourceSchema),
38
- included: zod_1.z.array(exports.jsonApiResourceSchema).optional(),
39
- meta: zod_1.z.record(zod_1.z.unknown()).optional(),
40
- links: zod_1.z.record(zod_1.z.string()).optional(),
41
- });
42
- exports.jsonApiCollectionResponseSchema = jsonApiCollectionResponseSchema;
43
- exports.jsonApiPaginationQuerySchema = zod_1.z.object({
44
- 'page[number]': zod_1.z.coerce.number().int().positive().default(1).optional(),
45
- 'page[size]': zod_1.z.coerce.number().int().positive().max(100).default(20).optional(),
46
- });
47
- exports.jsonApiPaginationLinksSchema = zod_1.z.object({
48
- first: zod_1.z.string().optional(),
49
- last: zod_1.z.string().optional(),
50
- prev: zod_1.z.string().optional(),
51
- next: zod_1.z.string().optional(),
52
- self: zod_1.z.string(),
53
- });
54
- exports.jsonApiPaginationMetaSchema = zod_1.z.object({
55
- totalRecords: zod_1.z.number().int().nonnegative(),
56
- totalPages: zod_1.z.number().int().nonnegative(),
57
- currentPage: zod_1.z.number().int().positive(),
58
- pageSize: zod_1.z.number().int().positive(),
59
- });
60
- exports.jsonApiSortQuerySchema = zod_1.z.object({
61
- sort: zod_1.z.string().optional(), // e.g., "name,-createdAt"
62
- });
63
- exports.jsonApiFilterQuerySchema = zod_1.z.object({
64
- 'filter[startDate]': zod_1.z.string().datetime().optional(),
65
- 'filter[endDate]': zod_1.z.string().datetime().optional(),
66
- 'filter[status]': zod_1.z.string().optional(),
67
- 'filter[crop]': zod_1.z.string().optional(),
68
- });
69
- exports.jsonApiFieldsQuerySchema = zod_1.z.record(zod_1.z.string(), // resource type
70
- zod_1.z.string() // comma-separated field names
32
+ export const jsonApiCollectionResponseSchema = (resourceSchema) => z.object({
33
+ data: z.array(resourceSchema),
34
+ included: z.array(jsonApiResourceSchema).optional(),
35
+ meta: z.record(z.unknown()).optional(),
36
+ links: z.record(z.string()).optional(),
37
+ });
38
+ export const jsonApiPaginationQuerySchema = z.object({
39
+ 'page[number]': z.coerce.number().int().positive().default(1).optional(),
40
+ 'page[size]': z.coerce.number().int().positive().max(100).default(20).optional(),
41
+ });
42
+ export const jsonApiPaginationLinksSchema = z.object({
43
+ first: z.string().optional(),
44
+ last: z.string().optional(),
45
+ prev: z.string().optional(),
46
+ next: z.string().optional(),
47
+ self: z.string(),
48
+ });
49
+ export const jsonApiPaginationMetaSchema = z.object({
50
+ totalRecords: z.number().int().nonnegative(),
51
+ totalPages: z.number().int().nonnegative(),
52
+ currentPage: z.number().int().positive(),
53
+ pageSize: z.number().int().positive(),
54
+ });
55
+ export const jsonApiSortQuerySchema = z.object({
56
+ sort: z.string().optional(), // e.g., "name,-createdAt"
57
+ });
58
+ export const jsonApiFilterQuerySchema = z.object({
59
+ 'filter[startDate]': z.string().datetime().optional(),
60
+ 'filter[endDate]': z.string().datetime().optional(),
61
+ 'filter[status]': z.string().optional(),
62
+ 'filter[crop]': z.string().optional(),
63
+ });
64
+ export const jsonApiFieldsQuerySchema = z.record(z.string(), // resource type
65
+ z.string() // comma-separated field names
71
66
  ).optional();
72
- exports.jsonApiIncludeQuerySchema = zod_1.z.object({
73
- include: zod_1.z.string().optional(), // e.g., "fields,team"
67
+ export const jsonApiIncludeQuerySchema = z.object({
68
+ include: z.string().optional(), // e.g., "fields,team"
74
69
  });
75
- exports.jsonApiErrorSchema = zod_1.z.object({
76
- id: zod_1.z.string().optional(),
77
- links: zod_1.z.object({
78
- about: zod_1.z.string().optional(),
70
+ export const jsonApiErrorSchema = z.object({
71
+ id: z.string().optional(),
72
+ links: z.object({
73
+ about: z.string().optional(),
79
74
  }).optional(),
80
- status: zod_1.z.string().optional(), // HTTP status code as string
81
- code: zod_1.z.string().optional(), // Application-specific error code
82
- title: zod_1.z.string().optional(), // Short, human-readable summary
83
- detail: zod_1.z.string().optional(), // Human-readable explanation
84
- source: zod_1.z.object({
85
- pointer: zod_1.z.string().optional(), // JSON Pointer to associated field
86
- parameter: zod_1.z.string().optional(), // Query parameter that caused the error
75
+ status: z.string().optional(), // HTTP status code as string
76
+ code: z.string().optional(), // Application-specific error code
77
+ title: z.string().optional(), // Short, human-readable summary
78
+ detail: z.string().optional(), // Human-readable explanation
79
+ source: z.object({
80
+ pointer: z.string().optional(), // JSON Pointer to associated field
81
+ parameter: z.string().optional(), // Query parameter that caused the error
87
82
  }).optional(),
88
- meta: zod_1.z.record(zod_1.z.unknown()).optional(),
83
+ meta: z.record(z.unknown()).optional(),
89
84
  });
90
- exports.jsonApiErrorResponseSchema = zod_1.z.object({
91
- errors: zod_1.z.array(exports.jsonApiErrorSchema),
92
- meta: zod_1.z.record(zod_1.z.unknown()).optional(),
85
+ export const jsonApiErrorResponseSchema = z.object({
86
+ errors: z.array(jsonApiErrorSchema),
87
+ meta: z.record(z.unknown()).optional(),
93
88
  });
94
- exports.jsonApiSuccessResponseSchema = zod_1.z.object({
95
- meta: zod_1.z.object({
96
- message: zod_1.z.string(),
89
+ export const jsonApiSuccessResponseSchema = z.object({
90
+ meta: z.object({
91
+ message: z.string(),
97
92
  }),
98
93
  });
99
- exports.idParamSchema = zod_1.z.object({
100
- id: zod_1.z.string().uuid(),
94
+ export const idParamSchema = z.object({
95
+ id: z.string().uuid(),
101
96
  });
102
- exports.timestampsSchema = zod_1.z.object({
103
- createdAt: zod_1.z.string().datetime(),
104
- updatedAt: zod_1.z.string().datetime(),
97
+ export const timestampsSchema = z.object({
98
+ createdAt: z.string().datetime(),
99
+ updatedAt: z.string().datetime(),
105
100
  });
106
101
  // Helper to create a JSON:API resource schema
107
- const createJsonApiResourceSchema = (resourceType, attributesSchema) => zod_1.z.object({
108
- type: zod_1.z.literal(resourceType),
109
- id: zod_1.z.string(),
102
+ export const createJsonApiResourceSchema = (resourceType, attributesSchema) => z.object({
103
+ type: z.literal(resourceType),
104
+ id: z.string(),
110
105
  attributes: attributesSchema,
111
- relationships: zod_1.z.record(zod_1.z.unknown()).optional(),
112
- links: zod_1.z.record(zod_1.z.string()).optional(),
113
- meta: zod_1.z.record(zod_1.z.unknown()).optional(),
106
+ relationships: z.record(z.unknown()).optional(),
107
+ links: z.record(z.string()).optional(),
108
+ meta: z.record(z.unknown()).optional(),
114
109
  });
115
- exports.createJsonApiResourceSchema = createJsonApiResourceSchema;
116
110
  // Backward compatibility exports (deprecated - use JSON:API versions)
117
- exports.errorResponseSchema = exports.jsonApiErrorResponseSchema;
118
- exports.paginationQuerySchema = exports.jsonApiPaginationQuerySchema;
119
- exports.dateRangeQuerySchema = zod_1.z.object({
120
- 'filter[startDate]': zod_1.z.string().datetime().optional(),
121
- 'filter[endDate]': zod_1.z.string().datetime().optional(),
111
+ export const errorResponseSchema = jsonApiErrorResponseSchema;
112
+ export const paginationQuerySchema = jsonApiPaginationQuerySchema;
113
+ export const dateRangeQuerySchema = z.object({
114
+ 'filter[startDate]': z.string().datetime().optional(),
115
+ 'filter[endDate]': z.string().datetime().optional(),
122
116
  });
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uploadFileBodySchema = exports.uploadedFileResponseSchema = exports.uploadedFileResourceSchema = exports.uploadedFileAttributesSchema = exports.documentListResponseSchema = exports.documentResponseSchema = exports.documentResourceSchema = exports.updateDocumentSchema = exports.createDocumentSchema = exports.updateDocumentAttributesSchema = exports.createDocumentAttributesSchema = exports.documentAttributesSchema = exports.relatedEntitySchema = exports.relatedEntityTypeSchema = exports.documentTypeSchema = void 0;
4
- const zod_1 = require("zod");
5
- const common_schemas_1 = require("./common.schemas");
1
+ import { z } from 'zod';
2
+ import { timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema } from './common.schemas';
6
3
  /**
7
4
  * Document schemas - JSON:API compliant
8
5
  */
9
6
  // Document type enum
10
- exports.documentTypeSchema = zod_1.z.enum([
7
+ export const documentTypeSchema = z.enum([
11
8
  'receipt',
12
9
  'certificate',
13
10
  'land-document',
@@ -17,74 +14,74 @@ exports.documentTypeSchema = zod_1.z.enum([
17
14
  'other',
18
15
  ]);
19
16
  // Related entity type enum
20
- exports.relatedEntityTypeSchema = zod_1.z.enum(['farm', 'field', 'purchase', 'expense', 'equipment', 'other']);
17
+ export const relatedEntityTypeSchema = z.enum(['farm', 'field', 'purchase', 'expense', 'equipment', 'other']);
21
18
  // Related entity schema
22
- exports.relatedEntitySchema = zod_1.z.object({
23
- type: exports.relatedEntityTypeSchema,
24
- id: zod_1.z.string().uuid(),
19
+ export const relatedEntitySchema = z.object({
20
+ type: relatedEntityTypeSchema,
21
+ id: z.string().uuid(),
25
22
  });
26
23
  // Document attributes schema (for JSON:API attributes object)
27
- exports.documentAttributesSchema = zod_1.z.object({
28
- farmId: zod_1.z.string().uuid(),
29
- name: zod_1.z.string(),
30
- type: exports.documentTypeSchema,
31
- category: zod_1.z.string().nullable(),
32
- fileUrl: zod_1.z.string(),
33
- fileExtension: zod_1.z.string().nullable().optional(),
34
- fileSize: zod_1.z.number().int().positive().nullable(), // in bytes
35
- uploadedDate: zod_1.z.string().datetime(),
36
- uploadedBy: zod_1.z.string().uuid().nullable(),
37
- relatedTo: exports.relatedEntitySchema.nullable(),
38
- tags: zod_1.z.array(zod_1.z.string()).optional(),
39
- description: zod_1.z.string().nullable(),
40
- }).merge(common_schemas_1.timestampsSchema);
24
+ export const documentAttributesSchema = z.object({
25
+ farmId: z.string().uuid(),
26
+ name: z.string(),
27
+ type: documentTypeSchema,
28
+ category: z.string().nullable(),
29
+ fileUrl: z.string(),
30
+ fileExtension: z.string().nullable().optional(),
31
+ fileSize: z.number().int().positive().nullable(), // in bytes
32
+ uploadedDate: z.string().datetime(),
33
+ uploadedBy: z.string().uuid().nullable(),
34
+ relatedTo: relatedEntitySchema.nullable(),
35
+ tags: z.array(z.string()).optional(),
36
+ description: z.string().nullable(),
37
+ }).merge(timestampsSchema);
41
38
  // Create document attributes (input)
42
- exports.createDocumentAttributesSchema = zod_1.z.object({
43
- name: zod_1.z.string().min(1).max(200),
44
- type: exports.documentTypeSchema,
45
- category: zod_1.z.string().optional(),
46
- fileUrl: zod_1.z.string().optional(), // View URL path (optional - will be set after file upload)
47
- fileSize: zod_1.z.number().int().positive().optional(), // in bytes
48
- relatedTo: exports.relatedEntitySchema.optional(),
49
- tags: zod_1.z.array(zod_1.z.string()).optional(),
50
- description: zod_1.z.string().optional(),
39
+ export const createDocumentAttributesSchema = z.object({
40
+ name: z.string().min(1).max(200),
41
+ type: documentTypeSchema,
42
+ category: z.string().optional(),
43
+ fileUrl: z.string().optional(), // View URL path (optional - will be set after file upload)
44
+ fileSize: z.number().int().positive().optional(), // in bytes
45
+ relatedTo: relatedEntitySchema.optional(),
46
+ tags: z.array(z.string()).optional(),
47
+ description: z.string().optional(),
51
48
  });
52
49
  // Update document attributes (input)
53
- exports.updateDocumentAttributesSchema = zod_1.z.object({
54
- name: zod_1.z.string().min(1).max(200).optional(),
55
- type: exports.documentTypeSchema.optional(),
56
- category: zod_1.z.string().nullable().optional(),
57
- fileUrl: zod_1.z.string().optional(), // View URL path (can be updated after file upload)
58
- fileSize: zod_1.z.number().int().positive().optional(), // in bytes
59
- relatedTo: exports.relatedEntitySchema.nullable().optional(),
60
- tags: zod_1.z.array(zod_1.z.string()).optional(),
61
- description: zod_1.z.string().nullable().optional(),
50
+ export const updateDocumentAttributesSchema = z.object({
51
+ name: z.string().min(1).max(200).optional(),
52
+ type: documentTypeSchema.optional(),
53
+ category: z.string().nullable().optional(),
54
+ fileUrl: z.string().optional(), // View URL path (can be updated after file upload)
55
+ fileSize: z.number().int().positive().optional(), // in bytes
56
+ relatedTo: relatedEntitySchema.nullable().optional(),
57
+ tags: z.array(z.string()).optional(),
58
+ description: z.string().nullable().optional(),
62
59
  });
63
60
  // Create document input (JSON:API format)
64
- exports.createDocumentSchema = zod_1.z.object({
65
- type: zod_1.z.literal('documents'),
66
- attributes: exports.createDocumentAttributesSchema,
61
+ export const createDocumentSchema = z.object({
62
+ type: z.literal('documents'),
63
+ attributes: createDocumentAttributesSchema,
67
64
  });
68
65
  // Update document input (JSON:API format)
69
- exports.updateDocumentSchema = zod_1.z.object({
70
- type: zod_1.z.literal('documents'),
71
- id: zod_1.z.string().uuid(),
72
- attributes: exports.updateDocumentAttributesSchema,
66
+ export const updateDocumentSchema = z.object({
67
+ type: z.literal('documents'),
68
+ id: z.string().uuid(),
69
+ attributes: updateDocumentAttributesSchema,
73
70
  });
74
71
  // Document resource (JSON:API resource object)
75
- exports.documentResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('documents', exports.documentAttributesSchema);
72
+ export const documentResourceSchema = createJsonApiResourceSchema('documents', documentAttributesSchema);
76
73
  // Document responses (JSON:API format)
77
- exports.documentResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.documentResourceSchema);
78
- exports.documentListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.documentResourceSchema);
79
- exports.uploadedFileAttributesSchema = zod_1.z.object({
80
- fileUrl: zod_1.z.string(),
81
- fileSize: zod_1.z.number().int().positive(),
82
- fileName: zod_1.z.string(),
83
- contentType: zod_1.z.string().optional(),
84
- uploadedAt: zod_1.z.string().datetime(),
74
+ export const documentResponseSchema = jsonApiSingleResponseSchema(documentResourceSchema);
75
+ export const documentListResponseSchema = jsonApiCollectionResponseSchema(documentResourceSchema);
76
+ export const uploadedFileAttributesSchema = z.object({
77
+ fileUrl: z.string(),
78
+ fileSize: z.number().int().positive(),
79
+ fileName: z.string(),
80
+ contentType: z.string().optional(),
81
+ uploadedAt: z.string().datetime(),
85
82
  });
86
- exports.uploadedFileResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('uploaded-files', exports.uploadedFileAttributesSchema);
87
- exports.uploadedFileResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.uploadedFileResourceSchema);
88
- exports.uploadFileBodySchema = zod_1.z.object({
89
- file: zod_1.z.any(),
83
+ export const uploadedFileResourceSchema = createJsonApiResourceSchema('uploaded-files', uploadedFileAttributesSchema);
84
+ export const uploadedFileResponseSchema = jsonApiSingleResponseSchema(uploadedFileResourceSchema);
85
+ export const uploadFileBodySchema = z.object({
86
+ file: z.any(),
90
87
  });
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.maintenanceRecordSchema = exports.equipmentListResponseSchema = exports.equipmentResponseSchema = exports.maintenanceRecordResourceSchema = exports.equipmentResourceSchema = exports.createMaintenanceRecordSchema = exports.updateEquipmentSchema = exports.createEquipmentSchema = exports.createMaintenanceRecordAttributesSchema = exports.updateEquipmentAttributesSchema = exports.createEquipmentAttributesSchema = exports.equipmentAttributesSchema = exports.maintenanceRecordAttributesSchema = exports.maintenanceScheduleSchema = exports.maintenanceTypeSchema = exports.equipmentStatusSchema = exports.equipmentTypeSchema = void 0;
4
- const zod_1 = require("zod");
5
- const common_schemas_1 = require("./common.schemas");
1
+ import { z } from 'zod';
2
+ import { timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema } from './common.schemas';
6
3
  /**
7
4
  * Equipment schemas - JSON:API compliant
8
5
  */
9
6
  // Equipment type enum
10
- exports.equipmentTypeSchema = zod_1.z.enum([
7
+ export const equipmentTypeSchema = z.enum([
11
8
  'tractor',
12
9
  'sprayer',
13
10
  'harvester',
@@ -18,108 +15,108 @@ exports.equipmentTypeSchema = zod_1.z.enum([
18
15
  'other',
19
16
  ]);
20
17
  // Equipment status enum
21
- exports.equipmentStatusSchema = zod_1.z.enum(['operational', 'maintenance', 'repair', 'retired']);
18
+ export const equipmentStatusSchema = z.enum(['operational', 'maintenance', 'repair', 'retired']);
22
19
  // Maintenance type enum
23
- exports.maintenanceTypeSchema = zod_1.z.enum(['routine', 'oil-change', 'inspection', 'repair', 'other']);
20
+ export const maintenanceTypeSchema = z.enum(['routine', 'oil-change', 'inspection', 'repair', 'other']);
24
21
  // Maintenance schedule
25
- exports.maintenanceScheduleSchema = zod_1.z.object({
26
- intervalDays: zod_1.z.number().int().positive(),
27
- lastMaintenanceDate: zod_1.z.string().datetime().nullable(),
28
- nextMaintenanceDate: zod_1.z.string().datetime().nullable(),
29
- maintenanceType: exports.maintenanceTypeSchema,
30
- description: zod_1.z.string().nullable(),
22
+ export const maintenanceScheduleSchema = z.object({
23
+ intervalDays: z.number().int().positive(),
24
+ lastMaintenanceDate: z.string().datetime().nullable(),
25
+ nextMaintenanceDate: z.string().datetime().nullable(),
26
+ maintenanceType: maintenanceTypeSchema,
27
+ description: z.string().nullable(),
31
28
  });
32
29
  // Maintenance record attributes
33
- exports.maintenanceRecordAttributesSchema = zod_1.z.object({
34
- date: zod_1.z.string().datetime(),
35
- type: exports.maintenanceTypeSchema,
36
- description: zod_1.z.string(),
37
- cost: zod_1.z.number().nonnegative().nullable(),
38
- performedBy: zod_1.z.string().nullable(), // TeamMember ID or service provider
39
- nextMaintenanceDate: zod_1.z.string().datetime().nullable(),
40
- notes: zod_1.z.string().nullable(),
30
+ export const maintenanceRecordAttributesSchema = z.object({
31
+ date: z.string().datetime(),
32
+ type: maintenanceTypeSchema,
33
+ description: z.string(),
34
+ cost: z.number().nonnegative().nullable(),
35
+ performedBy: z.string().nullable(), // TeamMember ID or service provider
36
+ nextMaintenanceDate: z.string().datetime().nullable(),
37
+ notes: z.string().nullable(),
41
38
  });
42
39
  // Equipment attributes schema (for JSON:API attributes object)
43
- exports.equipmentAttributesSchema = zod_1.z.object({
44
- farmId: zod_1.z.string().uuid(),
45
- name: zod_1.z.string(),
46
- type: exports.equipmentTypeSchema,
47
- brand: zod_1.z.string().nullable(),
48
- model: zod_1.z.string().nullable(),
49
- serialNumber: zod_1.z.string().nullable(),
50
- purchaseDate: zod_1.z.string().datetime().nullable(),
51
- purchasePrice: zod_1.z.number().nullable(),
52
- currentValue: zod_1.z.number().nullable(),
53
- status: exports.equipmentStatusSchema,
54
- location: zod_1.z.string().nullable(),
55
- assignedTo: zod_1.z.string().uuid().nullable(),
56
- assignedToName: zod_1.z.string().nullable().optional(),
57
- maintenanceSchedule: exports.maintenanceScheduleSchema.nullable().optional(),
58
- maintenanceHistory: zod_1.z.array(exports.maintenanceRecordAttributesSchema).optional(),
59
- notes: zod_1.z.string().nullable(),
60
- }).merge(common_schemas_1.timestampsSchema);
40
+ export const equipmentAttributesSchema = z.object({
41
+ farmId: z.string().uuid(),
42
+ name: z.string(),
43
+ type: equipmentTypeSchema,
44
+ brand: z.string().nullable(),
45
+ model: z.string().nullable(),
46
+ serialNumber: z.string().nullable(),
47
+ purchaseDate: z.string().datetime().nullable(),
48
+ purchasePrice: z.number().nullable(),
49
+ currentValue: z.number().nullable(),
50
+ status: equipmentStatusSchema,
51
+ location: z.string().nullable(),
52
+ assignedTo: z.string().uuid().nullable(),
53
+ assignedToName: z.string().nullable().optional(),
54
+ maintenanceSchedule: maintenanceScheduleSchema.nullable().optional(),
55
+ maintenanceHistory: z.array(maintenanceRecordAttributesSchema).optional(),
56
+ notes: z.string().nullable(),
57
+ }).merge(timestampsSchema);
61
58
  // Create equipment attributes (input)
62
- exports.createEquipmentAttributesSchema = zod_1.z.object({
63
- name: zod_1.z.string().min(1).max(200),
64
- type: exports.equipmentTypeSchema,
65
- brand: zod_1.z.string().optional(),
66
- model: zod_1.z.string().optional(),
67
- serialNumber: zod_1.z.string().optional(),
68
- purchaseDate: zod_1.z.string().datetime().optional(),
69
- purchasePrice: zod_1.z.number().nonnegative().optional(),
70
- currentValue: zod_1.z.number().nonnegative().optional(), // Depreciated value
71
- status: exports.equipmentStatusSchema.default('operational'),
72
- location: zod_1.z.string().optional(),
73
- assignedTo: zod_1.z.string().uuid().optional(), // TeamMember ID
74
- notes: zod_1.z.string().optional(),
59
+ export const createEquipmentAttributesSchema = z.object({
60
+ name: z.string().min(1).max(200),
61
+ type: equipmentTypeSchema,
62
+ brand: z.string().optional(),
63
+ model: z.string().optional(),
64
+ serialNumber: z.string().optional(),
65
+ purchaseDate: z.string().datetime().optional(),
66
+ purchasePrice: z.number().nonnegative().optional(),
67
+ currentValue: z.number().nonnegative().optional(), // Depreciated value
68
+ status: equipmentStatusSchema.default('operational'),
69
+ location: z.string().optional(),
70
+ assignedTo: z.string().uuid().optional(), // TeamMember ID
71
+ notes: z.string().optional(),
75
72
  });
76
73
  // Update equipment attributes (input)
77
- exports.updateEquipmentAttributesSchema = zod_1.z.object({
78
- name: zod_1.z.string().min(1).max(200).optional(),
79
- type: exports.equipmentTypeSchema.optional(),
80
- brand: zod_1.z.string().nullable().optional(),
81
- model: zod_1.z.string().nullable().optional(),
82
- serialNumber: zod_1.z.string().nullable().optional(),
83
- purchaseDate: zod_1.z.string().datetime().nullable().optional(),
84
- purchasePrice: zod_1.z.number().nonnegative().nullable().optional(),
85
- currentValue: zod_1.z.number().nonnegative().nullable().optional(),
86
- status: exports.equipmentStatusSchema.optional(),
87
- location: zod_1.z.string().nullable().optional(),
88
- assignedTo: zod_1.z.string().uuid().nullable().optional(),
89
- notes: zod_1.z.string().nullable().optional(),
74
+ export const updateEquipmentAttributesSchema = z.object({
75
+ name: z.string().min(1).max(200).optional(),
76
+ type: equipmentTypeSchema.optional(),
77
+ brand: z.string().nullable().optional(),
78
+ model: z.string().nullable().optional(),
79
+ serialNumber: z.string().nullable().optional(),
80
+ purchaseDate: z.string().datetime().nullable().optional(),
81
+ purchasePrice: z.number().nonnegative().nullable().optional(),
82
+ currentValue: z.number().nonnegative().nullable().optional(),
83
+ status: equipmentStatusSchema.optional(),
84
+ location: z.string().nullable().optional(),
85
+ assignedTo: z.string().uuid().nullable().optional(),
86
+ notes: z.string().nullable().optional(),
90
87
  });
91
88
  // Create maintenance record attributes (input)
92
- exports.createMaintenanceRecordAttributesSchema = zod_1.z.object({
93
- date: zod_1.z.string().datetime(),
94
- type: exports.maintenanceTypeSchema,
95
- description: zod_1.z.string().min(1),
96
- cost: zod_1.z.number().nonnegative().optional(),
97
- performedBy: zod_1.z.string().nullable().optional(),
98
- nextMaintenanceDate: zod_1.z.string().datetime().optional(),
99
- notes: zod_1.z.string().optional(),
89
+ export const createMaintenanceRecordAttributesSchema = z.object({
90
+ date: z.string().datetime(),
91
+ type: maintenanceTypeSchema,
92
+ description: z.string().min(1),
93
+ cost: z.number().nonnegative().optional(),
94
+ performedBy: z.string().nullable().optional(),
95
+ nextMaintenanceDate: z.string().datetime().optional(),
96
+ notes: z.string().optional(),
100
97
  });
101
98
  // Create equipment input (JSON:API format)
102
- exports.createEquipmentSchema = zod_1.z.object({
103
- type: zod_1.z.literal('equipment'),
104
- attributes: exports.createEquipmentAttributesSchema,
99
+ export const createEquipmentSchema = z.object({
100
+ type: z.literal('equipment'),
101
+ attributes: createEquipmentAttributesSchema,
105
102
  });
106
103
  // Update equipment input (JSON:API format)
107
- exports.updateEquipmentSchema = zod_1.z.object({
108
- type: zod_1.z.literal('equipment'),
109
- id: zod_1.z.string().uuid(),
110
- attributes: exports.updateEquipmentAttributesSchema,
104
+ export const updateEquipmentSchema = z.object({
105
+ type: z.literal('equipment'),
106
+ id: z.string().uuid(),
107
+ attributes: updateEquipmentAttributesSchema,
111
108
  });
112
109
  // Create maintenance record input (JSON:API format)
113
- exports.createMaintenanceRecordSchema = zod_1.z.object({
114
- type: zod_1.z.literal('maintenance-records'),
115
- attributes: exports.createMaintenanceRecordAttributesSchema,
110
+ export const createMaintenanceRecordSchema = z.object({
111
+ type: z.literal('maintenance-records'),
112
+ attributes: createMaintenanceRecordAttributesSchema,
116
113
  });
117
114
  // Equipment resource (JSON:API resource object)
118
- exports.equipmentResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('equipment', exports.equipmentAttributesSchema);
115
+ export const equipmentResourceSchema = createJsonApiResourceSchema('equipment', equipmentAttributesSchema);
119
116
  // Maintenance record resource (JSON:API resource object)
120
- exports.maintenanceRecordResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('maintenance-records', exports.maintenanceRecordAttributesSchema);
117
+ export const maintenanceRecordResourceSchema = createJsonApiResourceSchema('maintenance-records', maintenanceRecordAttributesSchema);
121
118
  // Equipment responses (JSON:API format)
122
- exports.equipmentResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.equipmentResourceSchema);
123
- exports.equipmentListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.equipmentResourceSchema);
119
+ export const equipmentResponseSchema = jsonApiSingleResponseSchema(equipmentResourceSchema);
120
+ export const equipmentListResponseSchema = jsonApiCollectionResponseSchema(equipmentResourceSchema);
124
121
  // Maintenance record response (JSON:API format)
125
- exports.maintenanceRecordSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.maintenanceRecordResourceSchema);
122
+ export const maintenanceRecordSchema = jsonApiSingleResponseSchema(maintenanceRecordResourceSchema);