@deepintel-ltd/farmpro-contracts 1.5.8 → 1.5.10

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 (57) 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.d.ts +8 -1
  12. package/dist/routes/field-monitoring.routes.d.ts.map +1 -1
  13. package/dist/routes/field-monitoring.routes.js +77 -74
  14. package/dist/routes/field-observations.routes.js +41 -44
  15. package/dist/routes/fields.routes.js +44 -47
  16. package/dist/routes/finance.routes.js +121 -124
  17. package/dist/routes/harvest.routes.js +46 -49
  18. package/dist/routes/health.routes.js +6 -9
  19. package/dist/routes/index.js +51 -54
  20. package/dist/routes/input-usage.routes.js +14 -17
  21. package/dist/routes/inventory.routes.js +57 -60
  22. package/dist/routes/seasonal-plans.routes.js +14 -17
  23. package/dist/routes/soil-tests.routes.js +45 -48
  24. package/dist/routes/suppliers.routes.js +70 -73
  25. package/dist/routes/tasks.routes.js +65 -68
  26. package/dist/routes/team.routes.d.ts +306 -0
  27. package/dist/routes/team.routes.d.ts.map +1 -1
  28. package/dist/routes/team.routes.js +79 -60
  29. package/dist/routes/users.routes.js +13 -16
  30. package/dist/routes/weather.routes.js +10 -13
  31. package/dist/schemas/admin.schemas.js +43 -46
  32. package/dist/schemas/agent-workflows.schemas.js +34 -37
  33. package/dist/schemas/agents.schemas.js +46 -49
  34. package/dist/schemas/analytics.schemas.js +51 -54
  35. package/dist/schemas/auth.schemas.js +96 -99
  36. package/dist/schemas/categories.schemas.js +27 -30
  37. package/dist/schemas/common.schemas.js +89 -95
  38. package/dist/schemas/documents.schemas.js +59 -62
  39. package/dist/schemas/equipment.schemas.js +86 -89
  40. package/dist/schemas/farms.schemas.js +40 -43
  41. package/dist/schemas/field-monitoring.schemas.js +207 -210
  42. package/dist/schemas/field-observations.schemas.js +93 -96
  43. package/dist/schemas/fields.schemas.js +82 -85
  44. package/dist/schemas/finance.schemas.js +134 -137
  45. package/dist/schemas/harvest.schemas.js +46 -49
  46. package/dist/schemas/health.schemas.js +14 -17
  47. package/dist/schemas/input-usage.schemas.js +21 -24
  48. package/dist/schemas/inventory.schemas.js +58 -61
  49. package/dist/schemas/recommendations.schemas.js +22 -25
  50. package/dist/schemas/seasonal-plans.schemas.js +21 -24
  51. package/dist/schemas/soil-tests.schemas.js +70 -73
  52. package/dist/schemas/suppliers.schemas.js +90 -93
  53. package/dist/schemas/tasks.schemas.js +93 -96
  54. package/dist/schemas/team.schemas.js +35 -38
  55. package/dist/schemas/users.schemas.js +19 -22
  56. package/dist/schemas/weather.schemas.js +32 -35
  57. package/package.json +9 -1
@@ -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);
@@ -1,66 +1,63 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.farmListResponseSchema = exports.farmDetailResponseSchema = exports.farmResponseSchema = exports.farmDetailResourceSchema = exports.farmResourceSchema = exports.updateFarmSchema = exports.createFarmSchema = exports.updateFarmAttributesSchema = exports.createFarmAttributesSchema = exports.farmAttributesSchema = exports.currencySchema = void 0;
4
- const zod_1 = require("zod");
5
- const common_schemas_1 = require("./common.schemas");
1
+ import { z } from 'zod';
2
+ import { geoJSONGeometrySchema, timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema } from './common.schemas';
6
3
  /**
7
4
  * Farm schemas - JSON:API compliant
8
5
  */
9
6
  // Currency enum for supported currencies
10
- exports.currencySchema = zod_1.z.enum(['NGN', 'USD']);
7
+ export const currencySchema = z.enum(['NGN', 'USD']);
11
8
  // Farm attributes schema (for JSON:API attributes object)
12
- exports.farmAttributesSchema = zod_1.z.object({
13
- name: zod_1.z.string().min(1).max(100),
14
- location: zod_1.z.string(),
15
- size: zod_1.z.number().nullable(),
16
- boundary: common_schemas_1.geoJSONGeometrySchema.nullable(),
17
- currency: exports.currencySchema,
18
- }).merge(common_schemas_1.timestampsSchema);
9
+ export const farmAttributesSchema = z.object({
10
+ name: z.string().min(1).max(100),
11
+ location: z.string(),
12
+ size: z.number().nullable(),
13
+ boundary: geoJSONGeometrySchema.nullable(),
14
+ currency: currencySchema,
15
+ }).merge(timestampsSchema);
19
16
  // Farm attributes for creation (input)
20
- exports.createFarmAttributesSchema = zod_1.z.object({
21
- name: zod_1.z.string().min(1).max(100),
22
- location: zod_1.z.string().min(1),
23
- size: zod_1.z.number().positive().optional(),
24
- boundary: common_schemas_1.geoJSONGeometrySchema.optional(),
25
- currency: exports.currencySchema.optional().default('NGN'),
17
+ export const createFarmAttributesSchema = z.object({
18
+ name: z.string().min(1).max(100),
19
+ location: z.string().min(1),
20
+ size: z.number().positive().optional(),
21
+ boundary: geoJSONGeometrySchema.optional(),
22
+ currency: currencySchema.optional().default('NGN'),
26
23
  });
27
24
  // Farm attributes for update (input)
28
- exports.updateFarmAttributesSchema = exports.createFarmAttributesSchema.partial();
25
+ export const updateFarmAttributesSchema = createFarmAttributesSchema.partial();
29
26
  // Create farm input (JSON:API format)
30
- exports.createFarmSchema = zod_1.z.object({
31
- type: zod_1.z.literal('farms'),
32
- attributes: exports.createFarmAttributesSchema,
27
+ export const createFarmSchema = z.object({
28
+ type: z.literal('farms'),
29
+ attributes: createFarmAttributesSchema,
33
30
  });
34
31
  // Update farm input (JSON:API format)
35
- exports.updateFarmSchema = zod_1.z.object({
36
- type: zod_1.z.literal('farms'),
37
- id: zod_1.z.string().uuid(),
38
- attributes: exports.updateFarmAttributesSchema,
32
+ export const updateFarmSchema = z.object({
33
+ type: z.literal('farms'),
34
+ id: z.string().uuid(),
35
+ attributes: updateFarmAttributesSchema,
39
36
  });
40
37
  // Farm resource (JSON:API resource object)
41
- exports.farmResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('farms', exports.farmAttributesSchema);
38
+ export const farmResourceSchema = createJsonApiResourceSchema('farms', farmAttributesSchema);
42
39
  // Farm detail resource with relationships
43
- exports.farmDetailResourceSchema = exports.farmResourceSchema.extend({
44
- relationships: zod_1.z.object({
45
- fields: zod_1.z.object({
46
- meta: zod_1.z.object({
47
- count: zod_1.z.number().int().nonnegative(),
40
+ export const farmDetailResourceSchema = farmResourceSchema.extend({
41
+ relationships: z.object({
42
+ fields: z.object({
43
+ meta: z.object({
44
+ count: z.number().int().nonnegative(),
48
45
  }),
49
- links: zod_1.z.object({
50
- related: zod_1.z.string(),
46
+ links: z.object({
47
+ related: z.string(),
51
48
  }),
52
49
  }).optional(),
53
- team: zod_1.z.object({
54
- meta: zod_1.z.object({
55
- count: zod_1.z.number().int().nonnegative(),
50
+ team: z.object({
51
+ meta: z.object({
52
+ count: z.number().int().nonnegative(),
56
53
  }),
57
- links: zod_1.z.object({
58
- related: zod_1.z.string(),
54
+ links: z.object({
55
+ related: z.string(),
59
56
  }),
60
57
  }).optional(),
61
58
  }).optional(),
62
59
  });
63
60
  // Farm responses (JSON:API format)
64
- exports.farmResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.farmResourceSchema);
65
- exports.farmDetailResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.farmDetailResourceSchema);
66
- exports.farmListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.farmResourceSchema);
61
+ export const farmResponseSchema = jsonApiSingleResponseSchema(farmResourceSchema);
62
+ export const farmDetailResponseSchema = jsonApiSingleResponseSchema(farmDetailResourceSchema);
63
+ export const farmListResponseSchema = jsonApiCollectionResponseSchema(farmResourceSchema);