@litusarchieve18/agricore-utils 1.0.12 → 1.0.14
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 +4 -0
- package/dist/chunk-LGEV4MBQ.mjs +776 -0
- package/dist/constants-DVuhM7rv.d.mts +417 -0
- package/dist/constants-DVuhM7rv.d.ts +417 -0
- package/dist/constants.d.mts +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +848 -0
- package/dist/constants.mjs +102 -0
- package/dist/index.d.mts +16 -417
- package/dist/index.d.ts +16 -417
- package/dist/index.js +515 -312
- package/dist/index.mjs +81 -555
- package/package.json +7 -2
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ACCESS_RANK,
|
|
3
|
+
ACT,
|
|
4
|
+
AccessLevel,
|
|
5
|
+
ApprovalStatus,
|
|
6
|
+
ApprovalType,
|
|
7
|
+
AuditStatus,
|
|
8
|
+
AuditType,
|
|
9
|
+
CAT,
|
|
10
|
+
CATEGORY_TABS,
|
|
11
|
+
CropCycleStatus,
|
|
12
|
+
DOCUMENT_DISPLAY_INFO,
|
|
13
|
+
DOCUMENT_MENU_MAP,
|
|
14
|
+
DocumentCategory,
|
|
15
|
+
DocumentType,
|
|
16
|
+
ERROR_DICTIONARY,
|
|
17
|
+
EVERYONE,
|
|
18
|
+
EmitterType,
|
|
19
|
+
EnabledModule,
|
|
20
|
+
FORM_REGISTRY,
|
|
21
|
+
FacilityType,
|
|
22
|
+
HarvestMethod,
|
|
23
|
+
LinkedStatus,
|
|
24
|
+
MOD,
|
|
25
|
+
MODULE_LABELS,
|
|
26
|
+
MicroclimateZone,
|
|
27
|
+
MimeType,
|
|
28
|
+
NettingType,
|
|
29
|
+
NotificationMode,
|
|
30
|
+
OrderStatus,
|
|
31
|
+
PhysicalState,
|
|
32
|
+
PlantingMethod,
|
|
33
|
+
RESOURCE_MODULE_MAP,
|
|
34
|
+
RESOURCE_PATHS,
|
|
35
|
+
RESOURCE_REQUIREMENTS,
|
|
36
|
+
ROLE_SECTIONS_BY_KEY,
|
|
37
|
+
RelationshipType,
|
|
38
|
+
RowOrientation,
|
|
39
|
+
SENTINEL_UUID,
|
|
40
|
+
SoilTexture,
|
|
41
|
+
TASK_TYPE_REGISTRY,
|
|
42
|
+
TargetEntityType,
|
|
43
|
+
TaskStatus,
|
|
44
|
+
TaskType,
|
|
45
|
+
TransactionType,
|
|
46
|
+
TrellisType,
|
|
47
|
+
UserPrivilege,
|
|
48
|
+
UserRole,
|
|
49
|
+
VigorRating,
|
|
50
|
+
WaterSource
|
|
51
|
+
} from "./chunk-LGEV4MBQ.mjs";
|
|
52
|
+
|
|
1
53
|
// src/index.ts
|
|
2
54
|
import { jwtVerify } from "jose";
|
|
3
55
|
|
|
@@ -188,36 +240,6 @@ var Converter = {
|
|
|
188
240
|
};
|
|
189
241
|
|
|
190
242
|
// src/index.ts
|
|
191
|
-
var MOD = {
|
|
192
|
-
OPERATIONS: "OPR",
|
|
193
|
-
EQUIPMENT: "EQP",
|
|
194
|
-
PACKHOUSE: "PCK",
|
|
195
|
-
FARM: "FRM",
|
|
196
|
-
SAFETY: "SAF",
|
|
197
|
-
TEAM_HR: "THR",
|
|
198
|
-
RECORDS: "REC",
|
|
199
|
-
ADMIN: "ADM",
|
|
200
|
-
DOCUMENTS: "DOC",
|
|
201
|
-
ALERTS: "ALT",
|
|
202
|
-
INFRA: "INF",
|
|
203
|
-
SESSION: "SES"
|
|
204
|
-
// ← added: used in generateSessionContext but was missing from errorRegistry.js
|
|
205
|
-
};
|
|
206
|
-
var CAT = {
|
|
207
|
-
SUBSCRIPTION: "1",
|
|
208
|
-
PERMISSION: "2",
|
|
209
|
-
VALIDATION: "3",
|
|
210
|
-
INTEGRITY: "4"
|
|
211
|
-
};
|
|
212
|
-
var ACT = {
|
|
213
|
-
GENERIC: "00",
|
|
214
|
-
VIEW: "01",
|
|
215
|
-
CREATE: "02",
|
|
216
|
-
EDIT: "03",
|
|
217
|
-
DELETE: "04",
|
|
218
|
-
UPLOAD: "05"
|
|
219
|
-
};
|
|
220
|
-
var SENTINEL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
221
243
|
var AppError = class extends Error {
|
|
222
244
|
status;
|
|
223
245
|
appCode;
|
|
@@ -255,43 +277,6 @@ var handleAppErrorResponse = (error, mod = MOD.ADMIN) => {
|
|
|
255
277
|
{ status: 500 }
|
|
256
278
|
);
|
|
257
279
|
};
|
|
258
|
-
var MODULE_LABELS = {
|
|
259
|
-
[MOD.OPERATIONS]: "Operations",
|
|
260
|
-
[MOD.EQUIPMENT]: "Equipment & Fleet",
|
|
261
|
-
[MOD.PACKHOUSE]: "Packhouse",
|
|
262
|
-
[MOD.FARM]: "Farm Management",
|
|
263
|
-
[MOD.SAFETY]: "Safety & Compliance",
|
|
264
|
-
[MOD.TEAM_HR]: "Team & HR",
|
|
265
|
-
[MOD.RECORDS]: "Records & Reports",
|
|
266
|
-
[MOD.ADMIN]: "Admin Settings",
|
|
267
|
-
[MOD.DOCUMENTS]: "Documents",
|
|
268
|
-
[MOD.ALERTS]: "Alerts",
|
|
269
|
-
[MOD.INFRA]: "Infrastructure",
|
|
270
|
-
[MOD.SESSION]: "Session"
|
|
271
|
-
};
|
|
272
|
-
var ERROR_DICTIONARY = {
|
|
273
|
-
// ── Gate 1: Subscription ──────────────────────────────────────────────────
|
|
274
|
-
"100": { title: "Module Locked", text: "This feature is part of a module not enabled for your company. Contact your administrator to unlock it." },
|
|
275
|
-
// ── Gate 2: Permission ────────────────────────────────────────────────────
|
|
276
|
-
"200": { title: "Access Denied", text: "You do not have permission to perform this action. Contact your manager." },
|
|
277
|
-
"201": { title: "Restricted View", text: "Viewing this section requires higher access. Contact your administrator." },
|
|
278
|
-
"202": { title: "Creation Restricted", text: "You are not permitted to create new records here." },
|
|
279
|
-
"203": { title: "Edit Restricted", text: "You do not have permission to edit this record." },
|
|
280
|
-
"204": { title: "Protected Record", text: "You do not have permission to delete this record. Contact your administrator." },
|
|
281
|
-
"205": { title: "Upload Restricted", text: "You are not permitted to upload files here." },
|
|
282
|
-
// ── Gate 3: Validation ────────────────────────────────────────────────────
|
|
283
|
-
"300": { title: "Invalid Input", text: "Something is wrong with the data provided. Please review and try again." },
|
|
284
|
-
"301": { title: "Cannot Load Data", text: "Required information is missing to load this page." },
|
|
285
|
-
"302": { title: "Missing Fields", text: "Please fill in all required fields before saving." },
|
|
286
|
-
"303": { title: "Invalid Update", text: "The data you are trying to save is not valid. Please check your inputs." },
|
|
287
|
-
"304": { title: "Cannot Delete", text: "The record cannot be deleted due to a validation issue." },
|
|
288
|
-
"305": { title: "Upload Failed", text: "The file could not be uploaded. Please check the file type and size." },
|
|
289
|
-
// ── Gate 4: Integrity ─────────────────────────────────────────────────────
|
|
290
|
-
"400": { title: "Data Conflict", text: "A conflict occurred with an existing record. Please review and try again." },
|
|
291
|
-
"402": { title: "Duplicate Entry", text: "A record with this name or identifier already exists." },
|
|
292
|
-
"403": { title: "Edit Conflict", text: "This record was recently updated by someone else. Please refresh and try again." },
|
|
293
|
-
"404": { title: "Record In Use", text: "This record cannot be deleted because it is referenced by other data." }
|
|
294
|
-
};
|
|
295
280
|
var FALLBACK = {
|
|
296
281
|
title: "Something Went Wrong",
|
|
297
282
|
text: "An unexpected error occurred. Please try again or contact your administrator."
|
|
@@ -433,458 +418,6 @@ function isTabVisible(session, activeScopeId, tabConfig) {
|
|
|
433
418
|
function isTabWritable(session, activeScopeId, tabConfig) {
|
|
434
419
|
return resolveAccess(session, activeScopeId, tabConfig) === "WRITE";
|
|
435
420
|
}
|
|
436
|
-
var UserRole = {
|
|
437
|
-
OWNER: "owner",
|
|
438
|
-
MANAGER: "manager",
|
|
439
|
-
SUPERVISOR: "supervisor",
|
|
440
|
-
LEADING_HAND: "leadingHand",
|
|
441
|
-
WORKER: "worker"
|
|
442
|
-
};
|
|
443
|
-
var UserPrivilege = {
|
|
444
|
-
FINANCE: "finance",
|
|
445
|
-
HR: "hr",
|
|
446
|
-
MECHANIC: "mechanic",
|
|
447
|
-
AUDIT_COMPLIANCE: "auditCompliance",
|
|
448
|
-
ADMIN: "admin"
|
|
449
|
-
};
|
|
450
|
-
var AccessLevel = {
|
|
451
|
-
NONE: "NONE",
|
|
452
|
-
READ: "READ",
|
|
453
|
-
WRITE: "WRITE"
|
|
454
|
-
};
|
|
455
|
-
var EnabledModule = {
|
|
456
|
-
FARM_MANAGEMENT: "farm_management",
|
|
457
|
-
PACKHOUSE: "packhouse",
|
|
458
|
-
ACCOMMODATION: "accommodation"
|
|
459
|
-
};
|
|
460
|
-
var FacilityType = {
|
|
461
|
-
FARM: "farm",
|
|
462
|
-
PACKHOUSE: "packhouse",
|
|
463
|
-
ACCOMMODATION: "accommodation"
|
|
464
|
-
};
|
|
465
|
-
var LinkedStatus = {
|
|
466
|
-
NOT_LINKED: "not_linked",
|
|
467
|
-
PENDING_LINK: "pending_link",
|
|
468
|
-
LINKED: "linked"
|
|
469
|
-
};
|
|
470
|
-
var RelationshipType = {
|
|
471
|
-
SUPPLIER: "supplier",
|
|
472
|
-
CUSTOMER: "customer",
|
|
473
|
-
BOTH: "both"
|
|
474
|
-
};
|
|
475
|
-
var ApprovalType = {
|
|
476
|
-
ROLE: "role",
|
|
477
|
-
PRIVILEGE: "privilege",
|
|
478
|
-
SPECIFIC_USERS: "specific_users"
|
|
479
|
-
};
|
|
480
|
-
var TransactionType = {
|
|
481
|
-
PURCHASE_ORDER: "purchase_order",
|
|
482
|
-
SALES_ORDER: "sales_order",
|
|
483
|
-
REPAIR: "repair",
|
|
484
|
-
FUEL: "fuel",
|
|
485
|
-
OTHER: "other"
|
|
486
|
-
};
|
|
487
|
-
var ApprovalStatus = {
|
|
488
|
-
PENDING: "pending",
|
|
489
|
-
APPROVED: "approved",
|
|
490
|
-
REJECTED: "rejected"
|
|
491
|
-
};
|
|
492
|
-
var OrderStatus = {
|
|
493
|
-
DRAFT: "draft",
|
|
494
|
-
PENDING_FINANCE: "pending_finance",
|
|
495
|
-
NEW: "new",
|
|
496
|
-
ACKNOWLEDGED: "acknowledged",
|
|
497
|
-
IN_PROGRESS: "in_progress",
|
|
498
|
-
SHIPPED: "shipped",
|
|
499
|
-
RECEIVED: "received",
|
|
500
|
-
CANCELLED: "cancelled"
|
|
501
|
-
};
|
|
502
|
-
var NotificationMode = {
|
|
503
|
-
INTERNAL: "internal",
|
|
504
|
-
EXTERNAL_EMAIL: "external_email",
|
|
505
|
-
NONE: "none"
|
|
506
|
-
};
|
|
507
|
-
var TaskType = {
|
|
508
|
-
KML_PARSE: "KML_PARSE",
|
|
509
|
-
INVOICE_OCR: "INVOICE_OCR",
|
|
510
|
-
AUDIT_UPLOAD: "AUDIT_UPLOAD",
|
|
511
|
-
REPORT_GEN: "REPORT_GEN"
|
|
512
|
-
};
|
|
513
|
-
var TaskStatus = {
|
|
514
|
-
PENDING: "PENDING",
|
|
515
|
-
PROCESSING: "PROCESSING",
|
|
516
|
-
COMPLETED: "COMPLETED",
|
|
517
|
-
FAILED: "FAILED",
|
|
518
|
-
AWAITING_REVIEW: "AWAITING_REVIEW",
|
|
519
|
-
VERIFIED: "VERIFIED",
|
|
520
|
-
REJECTED: "REJECTED"
|
|
521
|
-
};
|
|
522
|
-
var MimeType = {
|
|
523
|
-
KML: "application/vnd.google-earth.kml+xml",
|
|
524
|
-
KMZ: "application/vnd.google-earth.kmz",
|
|
525
|
-
PDF: "application/pdf",
|
|
526
|
-
XLSX: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
527
|
-
XLS: "application/vnd.ms-excel",
|
|
528
|
-
JPEG: "image/jpeg",
|
|
529
|
-
PNG: "image/png"
|
|
530
|
-
};
|
|
531
|
-
var TargetEntityType = {
|
|
532
|
-
FARM: "FARM",
|
|
533
|
-
ZONE: "ZONE",
|
|
534
|
-
BLOCK: "BLOCK",
|
|
535
|
-
INFRASTRUCTURE: "INFRASTRUCTURE",
|
|
536
|
-
AUTO: "AUTO"
|
|
537
|
-
};
|
|
538
|
-
var AuditType = {
|
|
539
|
-
FRESHCARE: "Freshcare",
|
|
540
|
-
HACCP: "HACCP",
|
|
541
|
-
WHS: "WHS",
|
|
542
|
-
CUSTOM: "Custom"
|
|
543
|
-
};
|
|
544
|
-
var AuditStatus = {
|
|
545
|
-
DRAFT: "DRAFT",
|
|
546
|
-
IN_REVIEW: "IN_REVIEW",
|
|
547
|
-
FINALIZED: "FINALIZED"
|
|
548
|
-
};
|
|
549
|
-
var SoilTexture = {
|
|
550
|
-
SAND: "SAND",
|
|
551
|
-
LOAMY_SAND: "LOAMY_SAND",
|
|
552
|
-
SANDY_LOAM: "SANDY_LOAM",
|
|
553
|
-
LOAM: "LOAM",
|
|
554
|
-
SILT_LOAM: "SILT_LOAM",
|
|
555
|
-
SILT: "SILT",
|
|
556
|
-
SANDY_CLAY_LOAM: "SANDY_CLAY_LOAM",
|
|
557
|
-
CLAY_LOAM: "CLAY_LOAM",
|
|
558
|
-
SILTY_CLAY_LOAM: "SILTY_CLAY_LOAM",
|
|
559
|
-
SANDY_CLAY: "SANDY_CLAY",
|
|
560
|
-
SILTY_CLAY: "SILTY_CLAY",
|
|
561
|
-
CLAY: "CLAY"
|
|
562
|
-
};
|
|
563
|
-
var MicroclimateZone = {
|
|
564
|
-
STANDARD: "STANDARD",
|
|
565
|
-
FROST_POCKET: "FROST_POCKET",
|
|
566
|
-
WIND_CORRIDOR: "WIND_CORRIDOR",
|
|
567
|
-
EXPOSED_RIDGE: "EXPOSED_RIDGE",
|
|
568
|
-
HEAT_TRAP: "HEAT_TRAP",
|
|
569
|
-
RIPARIAN: "RIPARIAN"
|
|
570
|
-
};
|
|
571
|
-
var PlantingMethod = {
|
|
572
|
-
SQUARE: "SQUARE",
|
|
573
|
-
RECTANGULAR: "RECTANGULAR",
|
|
574
|
-
HEXAGONAL: "HEXAGONAL",
|
|
575
|
-
QUINCUNX: "QUINCUNX",
|
|
576
|
-
CONTOUR: "CONTOUR"
|
|
577
|
-
};
|
|
578
|
-
var RowOrientation = {
|
|
579
|
-
NORTH_SOUTH: "NORTH_SOUTH",
|
|
580
|
-
EAST_WEST: "EAST_WEST",
|
|
581
|
-
NORTHEAST_SOUTHWEST: "NORTHEAST_SOUTHWEST",
|
|
582
|
-
NORTHWEST_SOUTHEAST: "NORTHWEST_SOUTHEAST"
|
|
583
|
-
};
|
|
584
|
-
var EmitterType = {
|
|
585
|
-
SURFACE_DRIP: "SURFACE_DRIP",
|
|
586
|
-
SUBSURFACE_DRIP: "SUBSURFACE_DRIP",
|
|
587
|
-
MICRO_SPRINKLER: "MICRO_SPRINKLER",
|
|
588
|
-
JET_SPRAY: "JET_SPRAY",
|
|
589
|
-
INLINE_DRIPPER: "INLINE_DRIPPER",
|
|
590
|
-
PRESSURE_COMPENSATED: "PRESSURE_COMPENSATED"
|
|
591
|
-
};
|
|
592
|
-
var TrellisType = {
|
|
593
|
-
NONE: "NONE",
|
|
594
|
-
VERTICAL_AXIS: "VERTICAL_AXIS",
|
|
595
|
-
TWO_D_PLANE: "2D_PLANE",
|
|
596
|
-
V_TRELLIS: "V_TRELLIS",
|
|
597
|
-
T_BAR: "T_BAR",
|
|
598
|
-
PERGOLA: "PERGOLA",
|
|
599
|
-
Y_TRELLIS: "Y_TRELLIS"
|
|
600
|
-
};
|
|
601
|
-
var NettingType = {
|
|
602
|
-
NONE: "NONE",
|
|
603
|
-
OVERHEAD_HAIL: "OVERHEAD_HAIL",
|
|
604
|
-
SIDE_BIRD: "SIDE_BIRD",
|
|
605
|
-
FULL_EXCLUSION: "FULL_EXCLUSION",
|
|
606
|
-
SHADE_30: "SHADE_30",
|
|
607
|
-
SHADE_50: "SHADE_50",
|
|
608
|
-
CROSS_OVER: "CROSS_OVER"
|
|
609
|
-
};
|
|
610
|
-
var HarvestMethod = {
|
|
611
|
-
HAND: "HAND",
|
|
612
|
-
MACHINE: "MACHINE"
|
|
613
|
-
};
|
|
614
|
-
var VigorRating = {
|
|
615
|
-
VERY_LOW: "VERY_LOW",
|
|
616
|
-
LOW: "LOW",
|
|
617
|
-
MODERATE: "MODERATE",
|
|
618
|
-
HIGH: "HIGH",
|
|
619
|
-
VERY_HIGH: "VERY_HIGH"
|
|
620
|
-
};
|
|
621
|
-
var CropCycleStatus = {
|
|
622
|
-
NEW: "NEW",
|
|
623
|
-
CONFIRMED: "CONFIRMED",
|
|
624
|
-
ACTIVE: "ACTIVE",
|
|
625
|
-
COMPLETED: "COMPLETED"
|
|
626
|
-
};
|
|
627
|
-
var WaterSource = {
|
|
628
|
-
BORE_WELL: "BORE_WELL",
|
|
629
|
-
RIVER_STREAM: "RIVER_STREAM",
|
|
630
|
-
ON_FARM_DAM: "ON_FARM_DAM",
|
|
631
|
-
IRRIGATION_SCHEME: "IRRIGATION_SCHEME",
|
|
632
|
-
MUNICIPAL: "MUNICIPAL",
|
|
633
|
-
RECLAIMED_WASTE: "RECLAIMED_WASTE",
|
|
634
|
-
RAINWATER: "RAINWATER"
|
|
635
|
-
};
|
|
636
|
-
var PhysicalState = {
|
|
637
|
-
LIQUID: "LIQUID",
|
|
638
|
-
GAS: "GAS"
|
|
639
|
-
};
|
|
640
|
-
var FORM_REGISTRY = {
|
|
641
|
-
// ── Farm Management ──────────────────────────────────────────────────────
|
|
642
|
-
farmForm: { label: "Farm Profile", menuUrl: "/admin", module: "Farm Management" },
|
|
643
|
-
zoneForm: { label: "Zone Mapping", menuUrl: "/admin", module: "Farm Management" },
|
|
644
|
-
blockForm: { label: "Block Definition", menuUrl: "/admin", module: "Farm Management" },
|
|
645
|
-
// ── Crop & Variety ───────────────────────────────────────────────────────
|
|
646
|
-
cropForm: { label: "Crop Profile", menuUrl: "/admin", module: "Crop Library" },
|
|
647
|
-
varietyForm: { label: "Variety Blueprint", menuUrl: "/admin", module: "Crop Library" },
|
|
648
|
-
// ── Administration ───────────────────────────────────────────────────────
|
|
649
|
-
userAccessForm: { label: "User Access & Roles", menuUrl: "/admin/users", module: "Administration" },
|
|
650
|
-
companySettingsForm: { label: "Company Settings", menuUrl: "/admin/company", module: "Administration" },
|
|
651
|
-
financeTierForm: { label: "Finance Approval Tier", menuUrl: "/admin/company", module: "Administration" },
|
|
652
|
-
// ── Audit & Compliance ───────────────────────────────────────────────────
|
|
653
|
-
auditProjectForm: { label: "Audit Project", menuUrl: "/admin", module: "Audit & Compliance" }
|
|
654
|
-
};
|
|
655
|
-
function getFormMeta(componentId) {
|
|
656
|
-
return FORM_REGISTRY[componentId] ?? null;
|
|
657
|
-
}
|
|
658
|
-
function getFormsGroupedByModule() {
|
|
659
|
-
const groups = {};
|
|
660
|
-
for (const [id, meta] of Object.entries(FORM_REGISTRY)) {
|
|
661
|
-
if (!groups[meta.module]) groups[meta.module] = [];
|
|
662
|
-
groups[meta.module].push({ id, ...meta });
|
|
663
|
-
}
|
|
664
|
-
return groups;
|
|
665
|
-
}
|
|
666
|
-
var TASK_TYPE_REGISTRY = {
|
|
667
|
-
INVOICE_OCR: {
|
|
668
|
-
label: "Invoice / Receipt OCR",
|
|
669
|
-
targetEntity: "FuelInvoice",
|
|
670
|
-
description: "Extract invoice data (supplier, amount, date, line items) using AI.",
|
|
671
|
-
mimeTypes: [MimeType.PDF, MimeType.JPEG, MimeType.PNG],
|
|
672
|
-
icon: "FileText",
|
|
673
|
-
approveAction: "CREATE_FUEL_INVOICE"
|
|
674
|
-
},
|
|
675
|
-
KML_PARSE: {
|
|
676
|
-
label: "KML / Farm Boundary",
|
|
677
|
-
targetEntity: "Zone",
|
|
678
|
-
description: "Parse KML file to extract GPS polygon boundaries for a farm zone.",
|
|
679
|
-
mimeTypes: [MimeType.KML],
|
|
680
|
-
icon: "MapPin",
|
|
681
|
-
approveAction: "UPDATE_ZONE_POLYGON"
|
|
682
|
-
},
|
|
683
|
-
AUDIT_UPLOAD: {
|
|
684
|
-
label: "Audit / Compliance Document",
|
|
685
|
-
targetEntity: "AuditManifest",
|
|
686
|
-
description: "Attach evidence documents to a compliance audit project.",
|
|
687
|
-
mimeTypes: [MimeType.PDF, MimeType.JPEG, MimeType.PNG, MimeType.XLSX],
|
|
688
|
-
icon: "ShieldCheck",
|
|
689
|
-
approveAction: "LINK_AUDIT_MANIFEST"
|
|
690
|
-
},
|
|
691
|
-
REPORT_GEN: {
|
|
692
|
-
label: "Report Generation",
|
|
693
|
-
targetEntity: "AuditProject",
|
|
694
|
-
description: "Upload a completed audit report for storage and linking.",
|
|
695
|
-
mimeTypes: [MimeType.PDF],
|
|
696
|
-
icon: "BarChart2",
|
|
697
|
-
approveAction: "ATTACH_REPORT_FILE"
|
|
698
|
-
}
|
|
699
|
-
};
|
|
700
|
-
var getTaskTypeOptions = () => Object.entries(TASK_TYPE_REGISTRY).map(([value, config]) => ({
|
|
701
|
-
value,
|
|
702
|
-
label: config.label,
|
|
703
|
-
description: config.description,
|
|
704
|
-
mimeTypes: config.mimeTypes,
|
|
705
|
-
icon: config.icon
|
|
706
|
-
}));
|
|
707
|
-
var getAcceptedMimeTypes = (taskType) => {
|
|
708
|
-
const config = TASK_TYPE_REGISTRY[taskType];
|
|
709
|
-
return config ? config.mimeTypes.join(",") : "*/*";
|
|
710
|
-
};
|
|
711
|
-
var getApproveAction = (taskType) => {
|
|
712
|
-
return TASK_TYPE_REGISTRY[taskType]?.approveAction ?? null;
|
|
713
|
-
};
|
|
714
|
-
var RESOURCE_PATHS = {
|
|
715
|
-
// ── Top-level menu sections ────────────────────────────────────────────────
|
|
716
|
-
dashboard: "dashboard",
|
|
717
|
-
operations: "operations",
|
|
718
|
-
equipment: "equipment",
|
|
719
|
-
safety: "safety",
|
|
720
|
-
team: "team",
|
|
721
|
-
records: "records",
|
|
722
|
-
adminSettings: "adminSettings",
|
|
723
|
-
// ── Records & Reports ──────────────────────────────────────────────────────
|
|
724
|
-
documentHub: "records.documentHub",
|
|
725
|
-
documentHubTemplates: "records.documentHub.templates",
|
|
726
|
-
documentHubFolder: "records.documentHub.companyFolder",
|
|
727
|
-
documentHubExtraction: "records.documentHub.extractionHub",
|
|
728
|
-
documentHubQueue: "records.documentHub.verificationQueue",
|
|
729
|
-
analytics: "records.analytics",
|
|
730
|
-
// ── Admin Settings ─────────────────────────────────────────────────────────
|
|
731
|
-
adminUserRoster: "adminSettings.userRoster",
|
|
732
|
-
adminRolesPermissions: "adminSettings.rolesPermissions",
|
|
733
|
-
adminBlueprintsSites: "adminSettings.blueprintsSites",
|
|
734
|
-
adminCompanySettings: "adminSettings.companySettings",
|
|
735
|
-
// ── Operations ────────────────────────────────────────────────────────────
|
|
736
|
-
farmManagement: "operations.farmManagement",
|
|
737
|
-
packhouse: "operations.packhouse",
|
|
738
|
-
accommodation: "operations.accommodation",
|
|
739
|
-
// ── Equipment & Fleet ──────────────────────────────────────────────────────
|
|
740
|
-
equipPreStart: "equipment.preStart",
|
|
741
|
-
equipMaintenance: "equipment.maintenance",
|
|
742
|
-
equipFuelRegister: "equipment.fuelRegister",
|
|
743
|
-
equipCalibration: "equipment.calibration",
|
|
744
|
-
equipFleet: "equipment.fleetManagement",
|
|
745
|
-
// ── Safety, Quality & Compliance ──────────────────────────────────────────
|
|
746
|
-
safetyAuditing: "safety.auditing",
|
|
747
|
-
safetyFood: "safety.foodSafety",
|
|
748
|
-
safetyWhs: "safety.whs",
|
|
749
|
-
safetyCleaning: "safety.cleaning",
|
|
750
|
-
// ── Team & HR ──────────────────────────────────────────────────────────────
|
|
751
|
-
teamStaff: "team.staff",
|
|
752
|
-
teamTraining: "team.training"
|
|
753
|
-
};
|
|
754
|
-
var ALL_OPERATIONS = [
|
|
755
|
-
EnabledModule.FARM_MANAGEMENT,
|
|
756
|
-
EnabledModule.PACKHOUSE,
|
|
757
|
-
EnabledModule.ACCOMMODATION
|
|
758
|
-
];
|
|
759
|
-
var AGRI_ONLY = [
|
|
760
|
-
EnabledModule.FARM_MANAGEMENT,
|
|
761
|
-
EnabledModule.PACKHOUSE
|
|
762
|
-
];
|
|
763
|
-
var RESOURCE_MODULE_MAP = {
|
|
764
|
-
// ── Top-level menu sections ────────────────────────────────────────────────
|
|
765
|
-
// CORE features (accessible to everyone with an account)
|
|
766
|
-
[RESOURCE_PATHS.dashboard]: [],
|
|
767
|
-
[RESOURCE_PATHS.operations]: ALL_OPERATIONS,
|
|
768
|
-
[RESOURCE_PATHS.equipment]: ALL_OPERATIONS,
|
|
769
|
-
[RESOURCE_PATHS.safety]: ALL_OPERATIONS,
|
|
770
|
-
[RESOURCE_PATHS.team]: ALL_OPERATIONS,
|
|
771
|
-
[RESOURCE_PATHS.records]: ALL_OPERATIONS,
|
|
772
|
-
[RESOURCE_PATHS.adminSettings]: ALL_OPERATIONS,
|
|
773
|
-
// ── Records & Reports ──────────────────────────────────────────────────────
|
|
774
|
-
[RESOURCE_PATHS.documentHub]: ALL_OPERATIONS,
|
|
775
|
-
[RESOURCE_PATHS.documentHubTemplates]: ALL_OPERATIONS,
|
|
776
|
-
[RESOURCE_PATHS.documentHubFolder]: ALL_OPERATIONS,
|
|
777
|
-
[RESOURCE_PATHS.documentHubExtraction]: ALL_OPERATIONS,
|
|
778
|
-
[RESOURCE_PATHS.documentHubQueue]: ALL_OPERATIONS,
|
|
779
|
-
[RESOURCE_PATHS.analytics]: ALL_OPERATIONS,
|
|
780
|
-
// ── Admin Settings ─────────────────────────────────────────────────────────
|
|
781
|
-
[RESOURCE_PATHS.adminUserRoster]: ALL_OPERATIONS,
|
|
782
|
-
[RESOURCE_PATHS.adminBlueprintsSites]: ALL_OPERATIONS,
|
|
783
|
-
[RESOURCE_PATHS.adminRolesPermissions]: ALL_OPERATIONS,
|
|
784
|
-
[RESOURCE_PATHS.adminCompanySettings]: ALL_OPERATIONS,
|
|
785
|
-
// ── Operations ────────────────────────────────────────────────────────────
|
|
786
|
-
[RESOURCE_PATHS.farmManagement]: [EnabledModule.FARM_MANAGEMENT],
|
|
787
|
-
[RESOURCE_PATHS.packhouse]: [EnabledModule.PACKHOUSE],
|
|
788
|
-
[RESOURCE_PATHS.accommodation]: [EnabledModule.ACCOMMODATION],
|
|
789
|
-
// ── Equipment & Fleet ──────────────────────────────────────────────────────
|
|
790
|
-
[RESOURCE_PATHS.equipPreStart]: ALL_OPERATIONS,
|
|
791
|
-
[RESOURCE_PATHS.equipMaintenance]: ALL_OPERATIONS,
|
|
792
|
-
[RESOURCE_PATHS.equipFuelRegister]: ALL_OPERATIONS,
|
|
793
|
-
[RESOURCE_PATHS.equipCalibration]: AGRI_ONLY,
|
|
794
|
-
[RESOURCE_PATHS.equipFleet]: ALL_OPERATIONS,
|
|
795
|
-
// ── Safety, Quality & Compliance ──────────────────────────────────────────
|
|
796
|
-
[RESOURCE_PATHS.safetyAuditing]: ALL_OPERATIONS,
|
|
797
|
-
[RESOURCE_PATHS.safetyFood]: AGRI_ONLY,
|
|
798
|
-
[RESOURCE_PATHS.safetyWhs]: ALL_OPERATIONS,
|
|
799
|
-
[RESOURCE_PATHS.safetyCleaning]: ALL_OPERATIONS,
|
|
800
|
-
// ── Team & HR ──────────────────────────────────────────────────────────────
|
|
801
|
-
[RESOURCE_PATHS.teamStaff]: ALL_OPERATIONS,
|
|
802
|
-
[RESOURCE_PATHS.teamTraining]: ALL_OPERATIONS
|
|
803
|
-
};
|
|
804
|
-
var ACCESS_RANK = {
|
|
805
|
-
NONE: 0,
|
|
806
|
-
READ: 1,
|
|
807
|
-
WRITE: 2
|
|
808
|
-
};
|
|
809
|
-
var ROLE_SECTIONS_BY_KEY = {
|
|
810
|
-
dashboard: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
|
|
811
|
-
operations: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
|
|
812
|
-
equipment: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
|
|
813
|
-
safety: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
814
|
-
team: [UserRole.OWNER, UserRole.MANAGER],
|
|
815
|
-
records: [UserRole.OWNER, UserRole.MANAGER],
|
|
816
|
-
adminSettings: []
|
|
817
|
-
};
|
|
818
|
-
var EVERYONE = Object.values(UserRole);
|
|
819
|
-
var RESOURCE_REQUIREMENTS = {
|
|
820
|
-
[RESOURCE_PATHS.dashboard]: {
|
|
821
|
-
allowedRoles: EVERYONE
|
|
822
|
-
},
|
|
823
|
-
[RESOURCE_PATHS.operations]: {
|
|
824
|
-
allowedRoles: EVERYONE
|
|
825
|
-
},
|
|
826
|
-
// [RESOURCE_PATHS.equipment]: EVERYONE,
|
|
827
|
-
// [RESOURCE_PATHS.safety]: ALL_OPERATIONS,
|
|
828
|
-
// [RESOURCE_PATHS.team]: ALL_OPERATIONS,
|
|
829
|
-
// [RESOURCE_PATHS.records]: ALL_OPERATIONS,
|
|
830
|
-
// [RESOURCE_PATHS.adminSettings]: ALL_OPERATIONS,
|
|
831
|
-
// ── Records & Reports ──────────────────────────────────────────────────────
|
|
832
|
-
[RESOURCE_PATHS.documentHub]: {
|
|
833
|
-
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
834
|
-
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
835
|
-
},
|
|
836
|
-
[RESOURCE_PATHS.documentHubTemplates]: {
|
|
837
|
-
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
838
|
-
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
839
|
-
},
|
|
840
|
-
[RESOURCE_PATHS.documentHubFolder]: {
|
|
841
|
-
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
842
|
-
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
843
|
-
},
|
|
844
|
-
[RESOURCE_PATHS.documentHubExtraction]: {
|
|
845
|
-
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
846
|
-
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
847
|
-
},
|
|
848
|
-
[RESOURCE_PATHS.documentHubQueue]: {
|
|
849
|
-
allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
|
|
850
|
-
requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
|
|
851
|
-
},
|
|
852
|
-
// [RESOURCE_PATHS.analytics]: ALL_OPERATIONS,
|
|
853
|
-
// ── Admin Settings ─────────────────────────────────────────────────────────
|
|
854
|
-
[RESOURCE_PATHS.adminUserRoster]: {
|
|
855
|
-
allowedRoles: [UserRole.OWNER],
|
|
856
|
-
requiredPrivileges: [UserPrivilege.ADMIN]
|
|
857
|
-
},
|
|
858
|
-
[RESOURCE_PATHS.adminBlueprintsSites]: {
|
|
859
|
-
allowedRoles: [UserRole.OWNER],
|
|
860
|
-
requiredPrivileges: [UserPrivilege.ADMIN]
|
|
861
|
-
},
|
|
862
|
-
[RESOURCE_PATHS.adminRolesPermissions]: {
|
|
863
|
-
allowedRoles: [UserRole.OWNER],
|
|
864
|
-
requiredPrivileges: [UserPrivilege.ADMIN]
|
|
865
|
-
},
|
|
866
|
-
[RESOURCE_PATHS.adminCompanySettings]: {
|
|
867
|
-
allowedRoles: [UserRole.OWNER]
|
|
868
|
-
}
|
|
869
|
-
// // ── Operations ────────────────────────────────────────────────────────────
|
|
870
|
-
// [RESOURCE_PATHS.farmManagement]: [EnabledModule.FARM_MANAGEMENT],
|
|
871
|
-
// [RESOURCE_PATHS.packhouse]: [EnabledModule.PACKHOUSE],
|
|
872
|
-
// [RESOURCE_PATHS.accommodation]: [EnabledModule.ACCOMMODATION],
|
|
873
|
-
// // ── Equipment & Fleet ──────────────────────────────────────────────────────
|
|
874
|
-
// [RESOURCE_PATHS.equipPreStart]: ALL_OPERATIONS,
|
|
875
|
-
// [RESOURCE_PATHS.equipMaintenance]: ALL_OPERATIONS,
|
|
876
|
-
// [RESOURCE_PATHS.equipFuelRegister]: ALL_OPERATIONS,
|
|
877
|
-
// [RESOURCE_PATHS.equipCalibration]: AGRI_ONLY,
|
|
878
|
-
// [RESOURCE_PATHS.equipFleet]: ALL_OPERATIONS,
|
|
879
|
-
// // ── Safety, Quality & Compliance ──────────────────────────────────────────
|
|
880
|
-
// [RESOURCE_PATHS.safetyAuditing]: ALL_OPERATIONS,
|
|
881
|
-
// [RESOURCE_PATHS.safetyFood]: AGRI_ONLY,
|
|
882
|
-
// [RESOURCE_PATHS.safetyWhs]: ALL_OPERATIONS,
|
|
883
|
-
// [RESOURCE_PATHS.safetyCleaning]: ALL_OPERATIONS,
|
|
884
|
-
// // ── Team & HR ──────────────────────────────────────────────────────────────
|
|
885
|
-
// [RESOURCE_PATHS.teamStaff]: ALL_OPERATIONS,
|
|
886
|
-
// [RESOURCE_PATHS.teamTraining]: ALL_OPERATIONS,
|
|
887
|
-
};
|
|
888
421
|
function evaluateBaseAccess(resourcePath, session, requirements = {}) {
|
|
889
422
|
if (!session?.role) return "NONE";
|
|
890
423
|
if (session.role === UserRole.OWNER) return "WRITE";
|
|
@@ -961,42 +494,31 @@ async function verifyAndExtractSession(token, secret) {
|
|
|
961
494
|
throw ErrorFactory.unauthorized(MOD.SESSION, "UNAUTHORIZED: No secure session token provided.");
|
|
962
495
|
}
|
|
963
496
|
}
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
DocumentType2["HEAVY_METAL"] = "HEAVY_METAL";
|
|
990
|
-
DocumentType2["MICROBIAL"] = "MICROBIAL";
|
|
991
|
-
DocumentType2["HARVEST_LOG"] = "HARVEST_LOG";
|
|
992
|
-
DocumentType2["PACKHOUSE_INSPECTION"] = "PACKHOUSE_INSPECTION";
|
|
993
|
-
DocumentType2["TRAINING_CERTIFICATE"] = "TRAINING_CERTIFICATE";
|
|
994
|
-
DocumentType2["INVOICE"] = "INVOICE";
|
|
995
|
-
DocumentType2["LEGAL_CONTRACT"] = "LEGAL_CONTRACT";
|
|
996
|
-
DocumentType2["AUDIT_REPORT"] = "AUDIT_REPORT";
|
|
997
|
-
DocumentType2["SENSITIVE_IDENTITY"] = "SENSITIVE_IDENTITY";
|
|
998
|
-
return DocumentType2;
|
|
999
|
-
})(DocumentType || {});
|
|
497
|
+
function getFormMeta(componentId) {
|
|
498
|
+
return FORM_REGISTRY[componentId] ?? null;
|
|
499
|
+
}
|
|
500
|
+
function getFormsGroupedByModule() {
|
|
501
|
+
const groups = {};
|
|
502
|
+
for (const [id, meta] of Object.entries(FORM_REGISTRY)) {
|
|
503
|
+
if (!groups[meta.module]) groups[meta.module] = [];
|
|
504
|
+
groups[meta.module].push({ id, ...meta });
|
|
505
|
+
}
|
|
506
|
+
return groups;
|
|
507
|
+
}
|
|
508
|
+
var getTaskTypeOptions = () => Object.entries(TASK_TYPE_REGISTRY).map(([value, config]) => ({
|
|
509
|
+
value,
|
|
510
|
+
label: config.label,
|
|
511
|
+
description: config.description,
|
|
512
|
+
mimeTypes: config.mimeTypes,
|
|
513
|
+
icon: config.icon
|
|
514
|
+
}));
|
|
515
|
+
var getAcceptedMimeTypes = (taskType) => {
|
|
516
|
+
const config = TASK_TYPE_REGISTRY[taskType];
|
|
517
|
+
return config ? config.mimeTypes.join(",") : "*/*";
|
|
518
|
+
};
|
|
519
|
+
var getApproveAction = (taskType) => {
|
|
520
|
+
return TASK_TYPE_REGISTRY[taskType]?.approveAction ?? null;
|
|
521
|
+
};
|
|
1000
522
|
function generateDocumentPath(params) {
|
|
1001
523
|
const sanitizedName = params.siteName.replace(/[^a-z0-9]/gi, "_");
|
|
1002
524
|
if (params.isStatic) {
|
|
@@ -1045,8 +567,12 @@ export {
|
|
|
1045
567
|
AuditStatus,
|
|
1046
568
|
AuditType,
|
|
1047
569
|
CAT,
|
|
570
|
+
CATEGORY_TABS,
|
|
1048
571
|
Converter,
|
|
1049
572
|
CropCycleStatus,
|
|
573
|
+
DOCUMENT_DISPLAY_INFO,
|
|
574
|
+
DOCUMENT_MENU_MAP,
|
|
575
|
+
DocumentCategory,
|
|
1050
576
|
DocumentType,
|
|
1051
577
|
ERROR_DICTIONARY,
|
|
1052
578
|
EVERYONE,
|