@litusarchieve18/agricore-utils 1.0.11 β 1.0.13
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.
- package/README.md +58 -0
- package/dist/chunk-QI4YXI4P.mjs +585 -0
- package/dist/constants-DxCjnH4L.d.mts +402 -0
- package/dist/constants-DxCjnH4L.d.ts +402 -0
- package/dist/constants.d.mts +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +654 -0
- package/dist/constants.mjs +96 -0
- package/dist/index.d.mts +33 -382
- package/dist/index.d.ts +33 -382
- package/dist/index.js +324 -236
- package/dist/index.mjs +115 -519
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -65,6 +65,8 @@ The universal vocabulary of the AgriCore platform, ensuring type-safety across a
|
|
|
65
65
|
π Security & Access Control
|
|
66
66
|
The library now includes a centralized logic layer to enforce granular permissions across all AgriCore services.
|
|
67
67
|
|
|
68
|
+
---------------------------------------------------------------------
|
|
69
|
+
|
|
68
70
|
evaluateBaseAccess: Automatically determines a user's base permission level (NONE, READ, or WRITE) for a specific resource path (e.g., records.financials). It respects the OWNER role "God Mode" bypass and uses ROLE_SECTIONS_BY_KEY to provide sensible defaults for different app sections.
|
|
69
71
|
|
|
70
72
|
Access Ranking (resolveEffectiveAccess): Implements an additive permission model. By ranking levels (NONE < READ < WRITE), it allows the system to compare base permissions against specific user overrides and resolve the highest authorized access level.
|
|
@@ -92,6 +94,8 @@ const recordToSave = {
|
|
|
92
94
|
|
|
93
95
|
To completely eliminate database bottlenecks and solve serverless rate-limiting, AgriCore has migrated to a state-of-the-art, "Zero-DB" authorization architecture. By decoupling our security rules from the database SDK, our backend API endpoints now resolve complex multi-tenant boundaries and granular role-based access controls in roughly 1 millisecond.
|
|
94
96
|
|
|
97
|
+
---------------------------------------------------------------------
|
|
98
|
+
|
|
95
99
|
Key Features of the New Security Engine:
|
|
96
100
|
|
|
97
101
|
One-Time Session Generation: On login, the backend dynamically aggregates a user's full hierarchical profileβincluding role assignments, availableScopes (Company > Legal Entity > Facility), and granular resourceOverridesβinto a single, cryptographically signed JSON Web Token (JWT).
|
|
@@ -102,6 +106,56 @@ Smart Frontend Interceptor: A centralized React hook (useApiClient) acts as an a
|
|
|
102
106
|
|
|
103
107
|
Instant Context Switching: Because the JWT securely holds the user's entire "VIP List" of permitted scopes, users can instantly switch between farms, legal entities, and facilities in the frontend global dropdown without triggering a new authentication handshake or database query.
|
|
104
108
|
|
|
109
|
+
---------------------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
This Document Management Engine provides a standardized, compliant, and migration-ready architecture for handling agricultural records. It ensures that files are stored predictably and matched against audit requirements with high precision.
|
|
112
|
+
|
|
113
|
+
Document Management & Compliance Engine
|
|
114
|
+
This module handles the lifecycle of file assets, from standardized naming and path generation to intelligent metadata matching for compliance audits.
|
|
115
|
+
|
|
116
|
+
1. Standardized Taxonomy (DocumentType)
|
|
117
|
+
The DocumentType enum serves as the single source of truth for the AgriCore document ecosystem. It categorizes every recordβfrom SPRAY_RECORD to MAPPING_FARM_MAPSβensuring that the database remains searchable and consistent across different farms and legal entities.
|
|
118
|
+
|
|
119
|
+
2. Smart Routing (generateDocumentPath)
|
|
120
|
+
This function enforces the "Core vs. Seasonal" storage architecture. It ensures that permanent files (Fixed Assets) and crop-cycle files (Working Assets) are physically and logically separated:
|
|
121
|
+
|
|
122
|
+
Static Assets (isStatic: true): Routed to {SiteName}/_CORE/{DocumentType}.
|
|
123
|
+
|
|
124
|
+
Seasonal Assets: Routed to a strict temporal hierarchy: {SiteName}/_SEASONAL/{Year}/{DocumentType}/{Crop}.
|
|
125
|
+
|
|
126
|
+
3. Intelligence Engine (calculateFileMetadataMatch)
|
|
127
|
+
A 3-tier matching algorithm used to automatically suggest evidence for audit questions. It evaluates the relevance of a file based on three layers:
|
|
128
|
+
|
|
129
|
+
Static Hard Fails: Strict equality checks for properties like documentType.
|
|
130
|
+
|
|
131
|
+
Dynamic Hard Fails (mustMatchContext): Ensures files belong to the correct boundaries (e.g., siteId array inclusion) based on the current AuditHeader.
|
|
132
|
+
|
|
133
|
+
Soft Relevance Scoring (contextMatch): Calculates a percentage score based on environmental tags like seasonId or crop, allowing the UI to surface the "best matches" first.
|
|
134
|
+
|
|
135
|
+
Quick Example
|
|
136
|
+
TypeScript
|
|
137
|
+
// 1. Generate a path for a seasonal spray record
|
|
138
|
+
const path = generateDocumentPath({
|
|
139
|
+
siteName: "North Farm",
|
|
140
|
+
docType: DocumentType.SPRAY_RECORD,
|
|
141
|
+
year: 2026,
|
|
142
|
+
crop: "Mango"
|
|
143
|
+
});
|
|
144
|
+
// Output: North_Farm/_SEASONAL/2026/SPRAY_RECORD/MANGO
|
|
145
|
+
|
|
146
|
+
// 2. Score a file against an audit requirement
|
|
147
|
+
const score = calculateFileMetadataMatch(
|
|
148
|
+
{
|
|
149
|
+
mustMatch: { documentType: "SPRAY_RECORD" },
|
|
150
|
+
mustMatchContext: ["siteId"], // Hard fail if wrong farm
|
|
151
|
+
contextMatch: ["seasonId"] // Soft score for season relevance
|
|
152
|
+
},
|
|
153
|
+
file.metadata,
|
|
154
|
+
auditHeader.context
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
============================================================================
|
|
158
|
+
|
|
105
159
|
π οΈ Development & Publishing Guide
|
|
106
160
|
Zero Dependencies
|
|
107
161
|
To keep the package ultra-lightweight (~30KB), this library has zero runtime dependencies. All build tools (tsup, typescript) are strictly kept in devDependencies, and the package.json uses the "files": ["dist"] array to ensure only compiled code is uploaded.
|
|
@@ -129,6 +183,10 @@ Run the publish command:
|
|
|
129
183
|
Bash
|
|
130
184
|
npm publish --access public
|
|
131
185
|
π Version History
|
|
186
|
+
V1.0.12 β add DocumentMenuMap and refactoring library code to export enum
|
|
187
|
+
|
|
188
|
+
V1.0.12 β add some functionality to add a file tag
|
|
189
|
+
|
|
132
190
|
V1.0.11 β add userName and userEmail to AgriCoreSession
|
|
133
191
|
|
|
134
192
|
V1.0.10 β add an explicit exports map
|
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
// src/constants.ts
|
|
2
|
+
var MOD = {
|
|
3
|
+
OPERATIONS: "OPR",
|
|
4
|
+
EQUIPMENT: "EQP",
|
|
5
|
+
PACKHOUSE: "PCK",
|
|
6
|
+
FARM: "FRM",
|
|
7
|
+
SAFETY: "SAF",
|
|
8
|
+
TEAM_HR: "THR",
|
|
9
|
+
RECORDS: "REC",
|
|
10
|
+
ADMIN: "ADM",
|
|
11
|
+
DOCUMENTS: "DOC",
|
|
12
|
+
ALERTS: "ALT",
|
|
13
|
+
INFRA: "INF",
|
|
14
|
+
SESSION: "SES"
|
|
15
|
+
};
|
|
16
|
+
var CAT = {
|
|
17
|
+
SUBSCRIPTION: "1",
|
|
18
|
+
PERMISSION: "2",
|
|
19
|
+
VALIDATION: "3",
|
|
20
|
+
INTEGRITY: "4"
|
|
21
|
+
};
|
|
22
|
+
var ACT = {
|
|
23
|
+
GENERIC: "00",
|
|
24
|
+
VIEW: "01",
|
|
25
|
+
CREATE: "02",
|
|
26
|
+
EDIT: "03",
|
|
27
|
+
DELETE: "04",
|
|
28
|
+
UPLOAD: "05"
|
|
29
|
+
};
|
|
30
|
+
var SENTINEL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
31
|
+
var MODULE_LABELS = {
|
|
32
|
+
[MOD.OPERATIONS]: "Operations",
|
|
33
|
+
[MOD.EQUIPMENT]: "Equipment & Fleet",
|
|
34
|
+
[MOD.PACKHOUSE]: "Packhouse",
|
|
35
|
+
[MOD.FARM]: "Farm Management",
|
|
36
|
+
[MOD.SAFETY]: "Safety & Compliance",
|
|
37
|
+
[MOD.TEAM_HR]: "Team & HR",
|
|
38
|
+
[MOD.RECORDS]: "Records & Reports",
|
|
39
|
+
[MOD.ADMIN]: "Admin Settings",
|
|
40
|
+
[MOD.DOCUMENTS]: "Documents",
|
|
41
|
+
[MOD.ALERTS]: "Alerts",
|
|
42
|
+
[MOD.INFRA]: "Infrastructure",
|
|
43
|
+
[MOD.SESSION]: "Session"
|
|
44
|
+
};
|
|
45
|
+
var ERROR_DICTIONARY = {
|
|
46
|
+
// ββ Gate 1: Subscription ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
47
|
+
"100": { title: "Module Locked", text: "This feature is part of a module not enabled for your company. Contact your administrator to unlock it." },
|
|
48
|
+
// ββ Gate 2: Permission ββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
49
|
+
"200": { title: "Access Denied", text: "You do not have permission to perform this action. Contact your manager." },
|
|
50
|
+
"201": { title: "Restricted View", text: "Viewing this section requires higher access. Contact your administrator." },
|
|
51
|
+
"202": { title: "Creation Restricted", text: "You are not permitted to create new records here." },
|
|
52
|
+
"203": { title: "Edit Restricted", text: "You do not have permission to edit this record." },
|
|
53
|
+
"204": { title: "Protected Record", text: "You do not have permission to delete this record. Contact your administrator." },
|
|
54
|
+
"205": { title: "Upload Restricted", text: "You are not permitted to upload files here." },
|
|
55
|
+
// ββ Gate 3: Validation ββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
56
|
+
"300": { title: "Invalid Input", text: "Something is wrong with the data provided. Please review and try again." },
|
|
57
|
+
"301": { title: "Cannot Load Data", text: "Required information is missing to load this page." },
|
|
58
|
+
"302": { title: "Missing Fields", text: "Please fill in all required fields before saving." },
|
|
59
|
+
"303": { title: "Invalid Update", text: "The data you are trying to save is not valid. Please check your inputs." },
|
|
60
|
+
"304": { title: "Cannot Delete", text: "The record cannot be deleted due to a validation issue." },
|
|
61
|
+
"305": { title: "Upload Failed", text: "The file could not be uploaded. Please check the file type and size." },
|
|
62
|
+
// ββ Gate 4: Integrity βββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
63
|
+
"400": { title: "Data Conflict", text: "A conflict occurred with an existing record. Please review and try again." },
|
|
64
|
+
"402": { title: "Duplicate Entry", text: "A record with this name or identifier already exists." },
|
|
65
|
+
"403": { title: "Edit Conflict", text: "This record was recently updated by someone else. Please refresh and try again." },
|
|
66
|
+
"404": { title: "Record In Use", text: "This record cannot be deleted because it is referenced by other data." }
|
|
67
|
+
};
|
|
68
|
+
var UserRole = {
|
|
69
|
+
OWNER: "owner",
|
|
70
|
+
MANAGER: "manager",
|
|
71
|
+
SUPERVISOR: "supervisor",
|
|
72
|
+
LEADING_HAND: "leadingHand",
|
|
73
|
+
WORKER: "worker"
|
|
74
|
+
};
|
|
75
|
+
var UserPrivilege = {
|
|
76
|
+
FINANCE: "finance",
|
|
77
|
+
HR: "hr",
|
|
78
|
+
MECHANIC: "mechanic",
|
|
79
|
+
AUDIT_COMPLIANCE: "auditCompliance",
|
|
80
|
+
ADMIN: "admin"
|
|
81
|
+
};
|
|
82
|
+
var AccessLevel = {
|
|
83
|
+
NONE: "NONE",
|
|
84
|
+
READ: "READ",
|
|
85
|
+
WRITE: "WRITE"
|
|
86
|
+
};
|
|
87
|
+
var EnabledModule = {
|
|
88
|
+
FARM_MANAGEMENT: "farm_management",
|
|
89
|
+
PACKHOUSE: "packhouse",
|
|
90
|
+
ACCOMMODATION: "accommodation"
|
|
91
|
+
};
|
|
92
|
+
var FacilityType = {
|
|
93
|
+
FARM: "farm",
|
|
94
|
+
PACKHOUSE: "packhouse",
|
|
95
|
+
ACCOMMODATION: "accommodation"
|
|
96
|
+
};
|
|
97
|
+
var LinkedStatus = {
|
|
98
|
+
NOT_LINKED: "not_linked",
|
|
99
|
+
PENDING_LINK: "pending_link",
|
|
100
|
+
LINKED: "linked"
|
|
101
|
+
};
|
|
102
|
+
var RelationshipType = {
|
|
103
|
+
SUPPLIER: "supplier",
|
|
104
|
+
CUSTOMER: "customer",
|
|
105
|
+
BOTH: "both"
|
|
106
|
+
};
|
|
107
|
+
var ApprovalType = {
|
|
108
|
+
ROLE: "role",
|
|
109
|
+
PRIVILEGE: "privilege",
|
|
110
|
+
SPECIFIC_USERS: "specific_users"
|
|
111
|
+
};
|
|
112
|
+
var TransactionType = {
|
|
113
|
+
PURCHASE_ORDER: "purchase_order",
|
|
114
|
+
SALES_ORDER: "sales_order",
|
|
115
|
+
REPAIR: "repair",
|
|
116
|
+
FUEL: "fuel",
|
|
117
|
+
OTHER: "other"
|
|
118
|
+
};
|
|
119
|
+
var ApprovalStatus = {
|
|
120
|
+
PENDING: "pending",
|
|
121
|
+
APPROVED: "approved",
|
|
122
|
+
REJECTED: "rejected"
|
|
123
|
+
};
|
|
124
|
+
var OrderStatus = {
|
|
125
|
+
DRAFT: "draft",
|
|
126
|
+
PENDING_FINANCE: "pending_finance",
|
|
127
|
+
NEW: "new",
|
|
128
|
+
ACKNOWLEDGED: "acknowledged",
|
|
129
|
+
IN_PROGRESS: "in_progress",
|
|
130
|
+
SHIPPED: "shipped",
|
|
131
|
+
RECEIVED: "received",
|
|
132
|
+
CANCELLED: "cancelled"
|
|
133
|
+
};
|
|
134
|
+
var NotificationMode = {
|
|
135
|
+
INTERNAL: "internal",
|
|
136
|
+
EXTERNAL_EMAIL: "external_email",
|
|
137
|
+
NONE: "none"
|
|
138
|
+
};
|
|
139
|
+
var TaskType = {
|
|
140
|
+
KML_PARSE: "KML_PARSE",
|
|
141
|
+
INVOICE_OCR: "INVOICE_OCR",
|
|
142
|
+
AUDIT_UPLOAD: "AUDIT_UPLOAD",
|
|
143
|
+
REPORT_GEN: "REPORT_GEN"
|
|
144
|
+
};
|
|
145
|
+
var TaskStatus = {
|
|
146
|
+
PENDING: "PENDING",
|
|
147
|
+
PROCESSING: "PROCESSING",
|
|
148
|
+
COMPLETED: "COMPLETED",
|
|
149
|
+
FAILED: "FAILED",
|
|
150
|
+
AWAITING_REVIEW: "AWAITING_REVIEW",
|
|
151
|
+
VERIFIED: "VERIFIED",
|
|
152
|
+
REJECTED: "REJECTED"
|
|
153
|
+
};
|
|
154
|
+
var MimeType = {
|
|
155
|
+
KML: "application/vnd.google-earth.kml+xml",
|
|
156
|
+
KMZ: "application/vnd.google-earth.kmz",
|
|
157
|
+
PDF: "application/pdf",
|
|
158
|
+
XLSX: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
159
|
+
XLS: "application/vnd.ms-excel",
|
|
160
|
+
JPEG: "image/jpeg",
|
|
161
|
+
PNG: "image/png"
|
|
162
|
+
};
|
|
163
|
+
var TargetEntityType = {
|
|
164
|
+
FARM: "FARM",
|
|
165
|
+
ZONE: "ZONE",
|
|
166
|
+
BLOCK: "BLOCK",
|
|
167
|
+
INFRASTRUCTURE: "INFRASTRUCTURE",
|
|
168
|
+
AUTO: "AUTO"
|
|
169
|
+
};
|
|
170
|
+
var AuditType = {
|
|
171
|
+
FRESHCARE: "Freshcare",
|
|
172
|
+
HACCP: "HACCP",
|
|
173
|
+
WHS: "WHS",
|
|
174
|
+
CUSTOM: "Custom"
|
|
175
|
+
};
|
|
176
|
+
var AuditStatus = {
|
|
177
|
+
DRAFT: "DRAFT",
|
|
178
|
+
IN_REVIEW: "IN_REVIEW",
|
|
179
|
+
FINALIZED: "FINALIZED"
|
|
180
|
+
};
|
|
181
|
+
var SoilTexture = {
|
|
182
|
+
SAND: "SAND",
|
|
183
|
+
LOAMY_SAND: "LOAMY_SAND",
|
|
184
|
+
SANDY_LOAM: "SANDY_LOAM",
|
|
185
|
+
LOAM: "LOAM",
|
|
186
|
+
SILT_LOAM: "SILT_LOAM",
|
|
187
|
+
SILT: "SILT",
|
|
188
|
+
SANDY_CLAY_LOAM: "SANDY_CLAY_LOAM",
|
|
189
|
+
CLAY_LOAM: "CLAY_LOAM",
|
|
190
|
+
SILTY_CLAY_LOAM: "SILTY_CLAY_LOAM",
|
|
191
|
+
SANDY_CLAY: "SANDY_CLAY",
|
|
192
|
+
SILTY_CLAY: "SILTY_CLAY",
|
|
193
|
+
CLAY: "CLAY"
|
|
194
|
+
};
|
|
195
|
+
var MicroclimateZone = {
|
|
196
|
+
STANDARD: "STANDARD",
|
|
197
|
+
FROST_POCKET: "FROST_POCKET",
|
|
198
|
+
WIND_CORRIDOR: "WIND_CORRIDOR",
|
|
199
|
+
EXPOSED_RIDGE: "EXPOSED_RIDGE",
|
|
200
|
+
HEAT_TRAP: "HEAT_TRAP",
|
|
201
|
+
RIPARIAN: "RIPARIAN"
|
|
202
|
+
};
|
|
203
|
+
var PlantingMethod = {
|
|
204
|
+
SQUARE: "SQUARE",
|
|
205
|
+
RECTANGULAR: "RECTANGULAR",
|
|
206
|
+
HEXAGONAL: "HEXAGONAL",
|
|
207
|
+
QUINCUNX: "QUINCUNX",
|
|
208
|
+
CONTOUR: "CONTOUR"
|
|
209
|
+
};
|
|
210
|
+
var RowOrientation = {
|
|
211
|
+
NORTH_SOUTH: "NORTH_SOUTH",
|
|
212
|
+
EAST_WEST: "EAST_WEST",
|
|
213
|
+
NORTHEAST_SOUTHWEST: "NORTHEAST_SOUTHWEST",
|
|
214
|
+
NORTHWEST_SOUTHEAST: "NORTHWEST_SOUTHEAST"
|
|
215
|
+
};
|
|
216
|
+
var EmitterType = {
|
|
217
|
+
SURFACE_DRIP: "SURFACE_DRIP",
|
|
218
|
+
SUBSURFACE_DRIP: "SUBSURFACE_DRIP",
|
|
219
|
+
MICRO_SPRINKLER: "MICRO_SPRINKLER",
|
|
220
|
+
JET_SPRAY: "JET_SPRAY",
|
|
221
|
+
INLINE_DRIPPER: "INLINE_DRIPPER",
|
|
222
|
+
PRESSURE_COMPENSATED: "PRESSURE_COMPENSATED"
|
|
223
|
+
};
|
|
224
|
+
var TrellisType = {
|
|
225
|
+
NONE: "NONE",
|
|
226
|
+
VERTICAL_AXIS: "VERTICAL_AXIS",
|
|
227
|
+
TWO_D_PLANE: "2D_PLANE",
|
|
228
|
+
V_TRELLIS: "V_TRELLIS",
|
|
229
|
+
T_BAR: "T_BAR",
|
|
230
|
+
PERGOLA: "PERGOLA",
|
|
231
|
+
Y_TRELLIS: "Y_TRELLIS"
|
|
232
|
+
};
|
|
233
|
+
var NettingType = {
|
|
234
|
+
NONE: "NONE",
|
|
235
|
+
OVERHEAD_HAIL: "OVERHEAD_HAIL",
|
|
236
|
+
SIDE_BIRD: "SIDE_BIRD",
|
|
237
|
+
FULL_EXCLUSION: "FULL_EXCLUSION",
|
|
238
|
+
SHADE_30: "SHADE_30",
|
|
239
|
+
SHADE_50: "SHADE_50",
|
|
240
|
+
CROSS_OVER: "CROSS_OVER"
|
|
241
|
+
};
|
|
242
|
+
var HarvestMethod = {
|
|
243
|
+
HAND: "HAND",
|
|
244
|
+
MACHINE: "MACHINE"
|
|
245
|
+
};
|
|
246
|
+
var VigorRating = {
|
|
247
|
+
VERY_LOW: "VERY_LOW",
|
|
248
|
+
LOW: "LOW",
|
|
249
|
+
MODERATE: "MODERATE",
|
|
250
|
+
HIGH: "HIGH",
|
|
251
|
+
VERY_HIGH: "VERY_HIGH"
|
|
252
|
+
};
|
|
253
|
+
var CropCycleStatus = {
|
|
254
|
+
NEW: "NEW",
|
|
255
|
+
CONFIRMED: "CONFIRMED",
|
|
256
|
+
ACTIVE: "ACTIVE",
|
|
257
|
+
COMPLETED: "COMPLETED"
|
|
258
|
+
};
|
|
259
|
+
var WaterSource = {
|
|
260
|
+
BORE_WELL: "BORE_WELL",
|
|
261
|
+
RIVER_STREAM: "RIVER_STREAM",
|
|
262
|
+
ON_FARM_DAM: "ON_FARM_DAM",
|
|
263
|
+
IRRIGATION_SCHEME: "IRRIGATION_SCHEME",
|
|
264
|
+
MUNICIPAL: "MUNICIPAL",
|
|
265
|
+
RECLAIMED_WASTE: "RECLAIMED_WASTE",
|
|
266
|
+
RAINWATER: "RAINWATER"
|
|
267
|
+
};
|
|
268
|
+
var PhysicalState = {
|
|
269
|
+
LIQUID: "LIQUID",
|
|
270
|
+
GAS: "GAS"
|
|
271
|
+
};
|
|
272
|
+
var FORM_REGISTRY = {
|
|
273
|
+
// ββ Farm Management ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
274
|
+
farmForm: { label: "Farm Profile", menuUrl: "/admin", module: "Farm Management" },
|
|
275
|
+
zoneForm: { label: "Zone Mapping", menuUrl: "/admin", module: "Farm Management" },
|
|
276
|
+
blockForm: { label: "Block Definition", menuUrl: "/admin", module: "Farm Management" },
|
|
277
|
+
// ββ Crop & Variety βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
278
|
+
cropForm: { label: "Crop Profile", menuUrl: "/admin", module: "Crop Library" },
|
|
279
|
+
varietyForm: { label: "Variety Blueprint", menuUrl: "/admin", module: "Crop Library" },
|
|
280
|
+
// ββ Administration βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
281
|
+
userAccessForm: { label: "User Access & Roles", menuUrl: "/admin/users", module: "Administration" },
|
|
282
|
+
companySettingsForm: { label: "Company Settings", menuUrl: "/admin/company", module: "Administration" },
|
|
283
|
+
financeTierForm: { label: "Finance Approval Tier", menuUrl: "/admin/company", module: "Administration" },
|
|
284
|
+
// ββ Audit & Compliance βββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
285
|
+
auditProjectForm: { label: "Audit Project", menuUrl: "/admin", module: "Audit & Compliance" }
|
|
286
|
+
};
|
|
287
|
+
var TASK_TYPE_REGISTRY = {
|
|
288
|
+
INVOICE_OCR: {
|
|
289
|
+
label: "Invoice / Receipt OCR",
|
|
290
|
+
targetEntity: "FuelInvoice",
|
|
291
|
+
description: "Extract invoice data (supplier, amount, date, line items) using AI.",
|
|
292
|
+
mimeTypes: [MimeType.PDF, MimeType.JPEG, MimeType.PNG],
|
|
293
|
+
icon: "FileText",
|
|
294
|
+
approveAction: "CREATE_FUEL_INVOICE"
|
|
295
|
+
},
|
|
296
|
+
KML_PARSE: {
|
|
297
|
+
label: "KML / Farm Boundary",
|
|
298
|
+
targetEntity: "Zone",
|
|
299
|
+
description: "Parse KML file to extract GPS polygon boundaries for a farm zone.",
|
|
300
|
+
mimeTypes: [MimeType.KML],
|
|
301
|
+
icon: "MapPin",
|
|
302
|
+
approveAction: "UPDATE_ZONE_POLYGON"
|
|
303
|
+
},
|
|
304
|
+
AUDIT_UPLOAD: {
|
|
305
|
+
label: "Audit / Compliance Document",
|
|
306
|
+
targetEntity: "AuditManifest",
|
|
307
|
+
description: "Attach evidence documents to a compliance audit project.",
|
|
308
|
+
mimeTypes: [MimeType.PDF, MimeType.JPEG, MimeType.PNG, MimeType.XLSX],
|
|
309
|
+
icon: "ShieldCheck",
|
|
310
|
+
approveAction: "LINK_AUDIT_MANIFEST"
|
|
311
|
+
},
|
|
312
|
+
REPORT_GEN: {
|
|
313
|
+
label: "Report Generation",
|
|
314
|
+
targetEntity: "AuditProject",
|
|
315
|
+
description: "Upload a completed audit report for storage and linking.",
|
|
316
|
+
mimeTypes: [MimeType.PDF],
|
|
317
|
+
icon: "BarChart2",
|
|
318
|
+
approveAction: "ATTACH_REPORT_FILE"
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
var RESOURCE_PATHS = {
|
|
322
|
+
// ββ Top-level menu sections ββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
323
|
+
dashboard: "dashboard",
|
|
324
|
+
operations: "operations",
|
|
325
|
+
equipment: "equipment",
|
|
326
|
+
safety: "safety",
|
|
327
|
+
team: "team",
|
|
328
|
+
records: "records",
|
|
329
|
+
adminSettings: "adminSettings",
|
|
330
|
+
// ββ Records & Reports ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
331
|
+
documentHub: "records.documentHub",
|
|
332
|
+
documentHubTemplates: "records.documentHub.templates",
|
|
333
|
+
documentHubFolder: "records.documentHub.companyFolder",
|
|
334
|
+
documentHubExtraction: "records.documentHub.extractionHub",
|
|
335
|
+
documentHubQueue: "records.documentHub.verificationQueue",
|
|
336
|
+
analytics: "records.analytics",
|
|
337
|
+
// ββ Admin Settings βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
338
|
+
adminUserRoster: "adminSettings.userRoster",
|
|
339
|
+
adminRolesPermissions: "adminSettings.rolesPermissions",
|
|
340
|
+
adminBlueprintsSites: "adminSettings.blueprintsSites",
|
|
341
|
+
adminCompanySettings: "adminSettings.companySettings",
|
|
342
|
+
// ββ Operations ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
343
|
+
farmManagement: "operations.farmManagement",
|
|
344
|
+
packhouse: "operations.packhouse",
|
|
345
|
+
accommodation: "operations.accommodation",
|
|
346
|
+
// ββ Equipment & Fleet ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
347
|
+
equipPreStart: "equipment.preStart",
|
|
348
|
+
equipMaintenance: "equipment.maintenance",
|
|
349
|
+
equipFuelRegister: "equipment.fuelRegister",
|
|
350
|
+
equipCalibration: "equipment.calibration",
|
|
351
|
+
equipFleet: "equipment.fleetManagement",
|
|
352
|
+
// ββ Safety, Quality & Compliance ββββββββββββββββββββββββββββββββββββββββββ
|
|
353
|
+
safetyAuditing: "safety.auditing",
|
|
354
|
+
safetyFood: "safety.foodSafety",
|
|
355
|
+
safetyWhs: "safety.whs",
|
|
356
|
+
safetyCleaning: "safety.cleaning",
|
|
357
|
+
// ββ Team & HR ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
358
|
+
teamStaff: "team.staff",
|
|
359
|
+
teamTraining: "team.training"
|
|
360
|
+
};
|
|
361
|
+
var ALL_OPERATIONS = [
|
|
362
|
+
EnabledModule.FARM_MANAGEMENT,
|
|
363
|
+
EnabledModule.PACKHOUSE,
|
|
364
|
+
EnabledModule.ACCOMMODATION
|
|
365
|
+
];
|
|
366
|
+
var AGRI_ONLY = [
|
|
367
|
+
EnabledModule.FARM_MANAGEMENT,
|
|
368
|
+
EnabledModule.PACKHOUSE
|
|
369
|
+
];
|
|
370
|
+
var RESOURCE_MODULE_MAP = {
|
|
371
|
+
// ββ Top-level menu sections ββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
372
|
+
[RESOURCE_PATHS.dashboard]: [],
|
|
373
|
+
[RESOURCE_PATHS.operations]: ALL_OPERATIONS,
|
|
374
|
+
[RESOURCE_PATHS.equipment]: ALL_OPERATIONS,
|
|
375
|
+
[RESOURCE_PATHS.safety]: ALL_OPERATIONS,
|
|
376
|
+
[RESOURCE_PATHS.team]: ALL_OPERATIONS,
|
|
377
|
+
[RESOURCE_PATHS.records]: ALL_OPERATIONS,
|
|
378
|
+
[RESOURCE_PATHS.adminSettings]: ALL_OPERATIONS,
|
|
379
|
+
// ββ Records & Reports ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
380
|
+
[RESOURCE_PATHS.documentHub]: ALL_OPERATIONS,
|
|
381
|
+
[RESOURCE_PATHS.documentHubTemplates]: ALL_OPERATIONS,
|
|
382
|
+
[RESOURCE_PATHS.documentHubFolder]: ALL_OPERATIONS,
|
|
383
|
+
[RESOURCE_PATHS.documentHubExtraction]: ALL_OPERATIONS,
|
|
384
|
+
[RESOURCE_PATHS.documentHubQueue]: ALL_OPERATIONS,
|
|
385
|
+
[RESOURCE_PATHS.analytics]: ALL_OPERATIONS,
|
|
386
|
+
// ββ Admin Settings βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
387
|
+
[RESOURCE_PATHS.adminUserRoster]: ALL_OPERATIONS,
|
|
388
|
+
[RESOURCE_PATHS.adminBlueprintsSites]: ALL_OPERATIONS,
|
|
389
|
+
[RESOURCE_PATHS.adminRolesPermissions]: ALL_OPERATIONS,
|
|
390
|
+
[RESOURCE_PATHS.adminCompanySettings]: ALL_OPERATIONS,
|
|
391
|
+
// ββ Operations ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
392
|
+
[RESOURCE_PATHS.farmManagement]: [EnabledModule.FARM_MANAGEMENT],
|
|
393
|
+
[RESOURCE_PATHS.packhouse]: [EnabledModule.PACKHOUSE],
|
|
394
|
+
[RESOURCE_PATHS.accommodation]: [EnabledModule.ACCOMMODATION],
|
|
395
|
+
// ββ Equipment & Fleet ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
396
|
+
[RESOURCE_PATHS.equipPreStart]: ALL_OPERATIONS,
|
|
397
|
+
[RESOURCE_PATHS.equipMaintenance]: ALL_OPERATIONS,
|
|
398
|
+
[RESOURCE_PATHS.equipFuelRegister]: ALL_OPERATIONS,
|
|
399
|
+
[RESOURCE_PATHS.equipCalibration]: AGRI_ONLY,
|
|
400
|
+
[RESOURCE_PATHS.equipFleet]: ALL_OPERATIONS,
|
|
401
|
+
// ββ Safety, Quality & Compliance ββββββββββββββββββββββββββββββββββββββββββ
|
|
402
|
+
[RESOURCE_PATHS.safetyAuditing]: ALL_OPERATIONS,
|
|
403
|
+
[RESOURCE_PATHS.safetyFood]: AGRI_ONLY,
|
|
404
|
+
[RESOURCE_PATHS.safetyWhs]: ALL_OPERATIONS,
|
|
405
|
+
[RESOURCE_PATHS.safetyCleaning]: ALL_OPERATIONS,
|
|
406
|
+
// ββ Team & HR ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
407
|
+
[RESOURCE_PATHS.teamStaff]: ALL_OPERATIONS,
|
|
408
|
+
[RESOURCE_PATHS.teamTraining]: ALL_OPERATIONS
|
|
409
|
+
};
|
|
410
|
+
var ACCESS_RANK = {
|
|
411
|
+
NONE: 0,
|
|
412
|
+
READ: 1,
|
|
413
|
+
WRITE: 2
|
|
414
|
+
};
|
|
415
|
+
var ROLE_SECTIONS_BY_KEY = {
|
|
416
|
+
dashboard: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
|
|
417
|
+
operations: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
|
|
418
|
+
equipment: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
|
|
419
|
+
safety: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
420
|
+
team: [UserRole.OWNER, UserRole.MANAGER],
|
|
421
|
+
records: [UserRole.OWNER, UserRole.MANAGER],
|
|
422
|
+
adminSettings: []
|
|
423
|
+
};
|
|
424
|
+
var EVERYONE = Object.values(UserRole);
|
|
425
|
+
var RESOURCE_REQUIREMENTS = {
|
|
426
|
+
[RESOURCE_PATHS.dashboard]: { allowedRoles: EVERYONE },
|
|
427
|
+
[RESOURCE_PATHS.operations]: { allowedRoles: EVERYONE },
|
|
428
|
+
// ββ Records & Reports ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
429
|
+
[RESOURCE_PATHS.documentHub]: {
|
|
430
|
+
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
431
|
+
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
432
|
+
},
|
|
433
|
+
[RESOURCE_PATHS.documentHubTemplates]: {
|
|
434
|
+
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
435
|
+
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
436
|
+
},
|
|
437
|
+
[RESOURCE_PATHS.documentHubFolder]: {
|
|
438
|
+
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
439
|
+
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
440
|
+
},
|
|
441
|
+
[RESOURCE_PATHS.documentHubExtraction]: {
|
|
442
|
+
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
443
|
+
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
444
|
+
},
|
|
445
|
+
[RESOURCE_PATHS.documentHubQueue]: {
|
|
446
|
+
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
447
|
+
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
448
|
+
},
|
|
449
|
+
// ββ Admin Settings βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
450
|
+
[RESOURCE_PATHS.adminUserRoster]: {
|
|
451
|
+
allowedRoles: [UserRole.OWNER],
|
|
452
|
+
requiredPrivileges: [UserPrivilege.ADMIN]
|
|
453
|
+
},
|
|
454
|
+
[RESOURCE_PATHS.adminBlueprintsSites]: {
|
|
455
|
+
allowedRoles: [UserRole.OWNER],
|
|
456
|
+
requiredPrivileges: [UserPrivilege.ADMIN]
|
|
457
|
+
},
|
|
458
|
+
[RESOURCE_PATHS.adminRolesPermissions]: {
|
|
459
|
+
allowedRoles: [UserRole.OWNER],
|
|
460
|
+
requiredPrivileges: [UserPrivilege.ADMIN]
|
|
461
|
+
},
|
|
462
|
+
[RESOURCE_PATHS.adminCompanySettings]: {
|
|
463
|
+
allowedRoles: [UserRole.OWNER]
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
var DocumentType = /* @__PURE__ */ ((DocumentType2) => {
|
|
467
|
+
DocumentType2["SPRAY_RECORD"] = "SPRAY_RECORD";
|
|
468
|
+
DocumentType2["FERTIGATION_RECORD"] = "FERTIGATION_RECORD";
|
|
469
|
+
DocumentType2["FERTILIZER_RECORD"] = "FERTILIZER_RECORD";
|
|
470
|
+
DocumentType2["QA"] = "QA";
|
|
471
|
+
DocumentType2["CLEANING"] = "CLEANING";
|
|
472
|
+
DocumentType2["PEST"] = "PEST";
|
|
473
|
+
DocumentType2["EQUIPMENT_CALIBRATION_RECORD"] = "EQUIPMENT_CALIBRATION_RECORD";
|
|
474
|
+
DocumentType2["INVENTORY_CONSUMABLES"] = "INVENTORY_CONSUMABLES";
|
|
475
|
+
DocumentType2["INVENTORY_BOX_CARTON"] = "INVENTORY_BOX_CARTON";
|
|
476
|
+
DocumentType2["INVENTORY_CHEMICALS"] = "INVENTORY_CHEMICALS";
|
|
477
|
+
DocumentType2["STOCKTAKE"] = "STOCKTAKE";
|
|
478
|
+
DocumentType2["STOCKTAKE_MSDS"] = "STOCKTAKE_MSDS";
|
|
479
|
+
DocumentType2["MAPPING_FARM_MAPS"] = "MAPPING_FARM_MAPS";
|
|
480
|
+
DocumentType2["MAPPING_TRAFIC_MANAGEMENT"] = "MAPPING_TRAFIC_MANAGEMENT";
|
|
481
|
+
DocumentType2["MAPPING_EMERGENCY"] = "MAPPING_EMERGENCY";
|
|
482
|
+
DocumentType2["INCIDENT_REPORT"] = "INCIDENT_REPORT";
|
|
483
|
+
DocumentType2["TRAINING_RECORDS"] = "TRAINING_RECORDS";
|
|
484
|
+
DocumentType2["SOPS"] = "SOPS";
|
|
485
|
+
DocumentType2["RISK_ASSESSMENTS"] = "RISK_ASSESSMENTS";
|
|
486
|
+
DocumentType2["SERVICING_MAINTENANCE"] = "SERVICING_MAINTENANCE";
|
|
487
|
+
DocumentType2["SOIL_TEST"] = "SOIL_TEST";
|
|
488
|
+
DocumentType2["LEAF_TEST"] = "LEAF_TEST";
|
|
489
|
+
DocumentType2["WATER_TEST"] = "WATER_TEST";
|
|
490
|
+
DocumentType2["MRL_TESTING"] = "MRL_TESTING";
|
|
491
|
+
DocumentType2["HEAVY_METAL"] = "HEAVY_METAL";
|
|
492
|
+
DocumentType2["MICROBIAL"] = "MICROBIAL";
|
|
493
|
+
DocumentType2["HARVEST_LOG"] = "HARVEST_LOG";
|
|
494
|
+
DocumentType2["PACKHOUSE_INSPECTION"] = "PACKHOUSE_INSPECTION";
|
|
495
|
+
DocumentType2["TRAINING_CERTIFICATE"] = "TRAINING_CERTIFICATE";
|
|
496
|
+
DocumentType2["INVOICE"] = "INVOICE";
|
|
497
|
+
DocumentType2["LEGAL_CONTRACT"] = "LEGAL_CONTRACT";
|
|
498
|
+
DocumentType2["AUDIT_REPORT"] = "AUDIT_REPORT";
|
|
499
|
+
DocumentType2["SENSITIVE_IDENTITY"] = "SENSITIVE_IDENTITY";
|
|
500
|
+
return DocumentType2;
|
|
501
|
+
})(DocumentType || {});
|
|
502
|
+
var DOCUMENT_MENU_MAP = {
|
|
503
|
+
["SPRAY_RECORD" /* SPRAY_RECORD */]: [RESOURCE_PATHS.farmManagement],
|
|
504
|
+
["FERTIGATION_RECORD" /* FERTIGATION_RECORD */]: [RESOURCE_PATHS.farmManagement],
|
|
505
|
+
["FERTILIZER_RECORD" /* FERTILIZER_RECORD */]: [RESOURCE_PATHS.farmManagement],
|
|
506
|
+
["QA" /* QA */]: [RESOURCE_PATHS.safetyAuditing],
|
|
507
|
+
["CLEANING" /* CLEANING */]: [RESOURCE_PATHS.safetyCleaning],
|
|
508
|
+
["PEST" /* PEST */]: [RESOURCE_PATHS.farmManagement],
|
|
509
|
+
["EQUIPMENT_CALIBRATION_RECORD" /* EQUIPMENT_CALIBRATION_RECORD */]: [RESOURCE_PATHS.equipCalibration],
|
|
510
|
+
["SERVICING_MAINTENANCE" /* SERVICING_MAINTENANCE */]: [RESOURCE_PATHS.equipMaintenance],
|
|
511
|
+
["INVENTORY_CONSUMABLES" /* INVENTORY_CONSUMABLES */]: [RESOURCE_PATHS.packhouse],
|
|
512
|
+
["INVENTORY_BOX_CARTON" /* INVENTORY_BOX_CARTON */]: [RESOURCE_PATHS.packhouse],
|
|
513
|
+
["INVENTORY_CHEMICALS" /* INVENTORY_CHEMICALS */]: [RESOURCE_PATHS.packhouse, RESOURCE_PATHS.farmManagement],
|
|
514
|
+
["STOCKTAKE" /* STOCKTAKE */]: [RESOURCE_PATHS.packhouse],
|
|
515
|
+
["STOCKTAKE_MSDS" /* STOCKTAKE_MSDS */]: [RESOURCE_PATHS.safetyWhs],
|
|
516
|
+
["MAPPING_FARM_MAPS" /* MAPPING_FARM_MAPS */]: [RESOURCE_PATHS.adminBlueprintsSites],
|
|
517
|
+
["MAPPING_TRAFIC_MANAGEMENT" /* MAPPING_TRAFIC_MANAGEMENT */]: [RESOURCE_PATHS.adminBlueprintsSites],
|
|
518
|
+
["MAPPING_EMERGENCY" /* MAPPING_EMERGENCY */]: [RESOURCE_PATHS.adminBlueprintsSites],
|
|
519
|
+
["INCIDENT_REPORT" /* INCIDENT_REPORT */]: [RESOURCE_PATHS.safetyWhs],
|
|
520
|
+
["RISK_ASSESSMENTS" /* RISK_ASSESSMENTS */]: [RESOURCE_PATHS.safetyWhs],
|
|
521
|
+
["TRAINING_RECORDS" /* TRAINING_RECORDS */]: [RESOURCE_PATHS.teamTraining],
|
|
522
|
+
["TRAINING_CERTIFICATE" /* TRAINING_CERTIFICATE */]: [RESOURCE_PATHS.teamTraining],
|
|
523
|
+
["SOPS" /* SOPS */]: [RESOURCE_PATHS.documentHubTemplates],
|
|
524
|
+
["SOIL_TEST" /* SOIL_TEST */]: [RESOURCE_PATHS.farmManagement],
|
|
525
|
+
["LEAF_TEST" /* LEAF_TEST */]: [RESOURCE_PATHS.farmManagement],
|
|
526
|
+
["WATER_TEST" /* WATER_TEST */]: [RESOURCE_PATHS.farmManagement, RESOURCE_PATHS.safetyFood],
|
|
527
|
+
["MRL_TESTING" /* MRL_TESTING */]: [RESOURCE_PATHS.safetyFood],
|
|
528
|
+
["HEAVY_METAL" /* HEAVY_METAL */]: [RESOURCE_PATHS.safetyFood],
|
|
529
|
+
["MICROBIAL" /* MICROBIAL */]: [RESOURCE_PATHS.safetyFood],
|
|
530
|
+
["HARVEST_LOG" /* HARVEST_LOG */]: [RESOURCE_PATHS.farmManagement],
|
|
531
|
+
["PACKHOUSE_INSPECTION" /* PACKHOUSE_INSPECTION */]: [RESOURCE_PATHS.packhouse],
|
|
532
|
+
["INVOICE" /* INVOICE */]: [RESOURCE_PATHS.documentHub],
|
|
533
|
+
["LEGAL_CONTRACT" /* LEGAL_CONTRACT */]: [RESOURCE_PATHS.documentHub],
|
|
534
|
+
["AUDIT_REPORT" /* AUDIT_REPORT */]: [RESOURCE_PATHS.safetyAuditing, RESOURCE_PATHS.dashboard],
|
|
535
|
+
["SENSITIVE_IDENTITY" /* SENSITIVE_IDENTITY */]: [RESOURCE_PATHS.adminUserRoster]
|
|
536
|
+
};
|
|
537
|
+
|
|
538
|
+
export {
|
|
539
|
+
MOD,
|
|
540
|
+
CAT,
|
|
541
|
+
ACT,
|
|
542
|
+
SENTINEL_UUID,
|
|
543
|
+
MODULE_LABELS,
|
|
544
|
+
ERROR_DICTIONARY,
|
|
545
|
+
UserRole,
|
|
546
|
+
UserPrivilege,
|
|
547
|
+
AccessLevel,
|
|
548
|
+
EnabledModule,
|
|
549
|
+
FacilityType,
|
|
550
|
+
LinkedStatus,
|
|
551
|
+
RelationshipType,
|
|
552
|
+
ApprovalType,
|
|
553
|
+
TransactionType,
|
|
554
|
+
ApprovalStatus,
|
|
555
|
+
OrderStatus,
|
|
556
|
+
NotificationMode,
|
|
557
|
+
TaskType,
|
|
558
|
+
TaskStatus,
|
|
559
|
+
MimeType,
|
|
560
|
+
TargetEntityType,
|
|
561
|
+
AuditType,
|
|
562
|
+
AuditStatus,
|
|
563
|
+
SoilTexture,
|
|
564
|
+
MicroclimateZone,
|
|
565
|
+
PlantingMethod,
|
|
566
|
+
RowOrientation,
|
|
567
|
+
EmitterType,
|
|
568
|
+
TrellisType,
|
|
569
|
+
NettingType,
|
|
570
|
+
HarvestMethod,
|
|
571
|
+
VigorRating,
|
|
572
|
+
CropCycleStatus,
|
|
573
|
+
WaterSource,
|
|
574
|
+
PhysicalState,
|
|
575
|
+
FORM_REGISTRY,
|
|
576
|
+
TASK_TYPE_REGISTRY,
|
|
577
|
+
RESOURCE_PATHS,
|
|
578
|
+
RESOURCE_MODULE_MAP,
|
|
579
|
+
ACCESS_RANK,
|
|
580
|
+
ROLE_SECTIONS_BY_KEY,
|
|
581
|
+
EVERYONE,
|
|
582
|
+
RESOURCE_REQUIREMENTS,
|
|
583
|
+
DocumentType,
|
|
584
|
+
DOCUMENT_MENU_MAP
|
|
585
|
+
};
|