@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/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
- var DocumentType = /* @__PURE__ */ ((DocumentType2) => {
965
- DocumentType2["SPRAY_RECORD"] = "SPRAY_RECORD";
966
- DocumentType2["FERTIGATION_RECORD"] = "FERTIGATION_RECORD";
967
- DocumentType2["FERTILIZER_RECORD"] = "FERTILIZER_RECORD";
968
- DocumentType2["QA"] = "QA";
969
- DocumentType2["CLEANING"] = "CLEANING";
970
- DocumentType2["PEST"] = "PEST";
971
- DocumentType2["EQUIPMENT_CALIBRATION_RECORD"] = "EQUIPMENT_CALIBRATION_RECORD";
972
- DocumentType2["INVENTORY_CONSUMABLES"] = "INVENTORY_CONSUMABLES";
973
- DocumentType2["INVENTORY_BOX_CARTON"] = "INVENTORY_BOX_CARTON";
974
- DocumentType2["INVENTORY_CHEMICALS"] = "INVENTORY_CHEMICALS";
975
- DocumentType2["STOCKTAKE"] = "STOCKTAKE";
976
- DocumentType2["STOCKTAKE_MSDS"] = "STOCKTAKE_MSDS";
977
- DocumentType2["MAPPING_FARM_MAPS"] = "MAPPING_FARM_MAPS";
978
- DocumentType2["MAPPING_TRAFIC_MANAGEMENT"] = "MAPPING_TRAFIC_MANAGEMENT";
979
- DocumentType2["MAPPING_EMERGENCY"] = "MAPPING_EMERGENCY";
980
- DocumentType2["INCIDENT_REPORT"] = "INCIDENT_REPORT";
981
- DocumentType2["TRAINING_RECORDS"] = "TRAINING_RECORDS";
982
- DocumentType2["SOPS"] = "SOPS";
983
- DocumentType2["RISK_ASSESSMENTS"] = "RISK_ASSESSMENTS";
984
- DocumentType2["SERVICING_MAINTENANCE"] = "SERVICING_MAINTENANCE";
985
- DocumentType2["SOIL_TEST"] = "SOIL_TEST";
986
- DocumentType2["LEAF_TEST"] = "LEAF_TEST";
987
- DocumentType2["WATER_TEST"] = "WATER_TEST";
988
- DocumentType2["MRL_TESTING"] = "MRL_TESTING";
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,