@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/dist/index.mjs
CHANGED
|
@@ -1,3 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ACCESS_RANK,
|
|
3
|
+
ACT,
|
|
4
|
+
AccessLevel,
|
|
5
|
+
ApprovalStatus,
|
|
6
|
+
ApprovalType,
|
|
7
|
+
AuditStatus,
|
|
8
|
+
AuditType,
|
|
9
|
+
CAT,
|
|
10
|
+
CropCycleStatus,
|
|
11
|
+
DOCUMENT_MENU_MAP,
|
|
12
|
+
DocumentType,
|
|
13
|
+
ERROR_DICTIONARY,
|
|
14
|
+
EVERYONE,
|
|
15
|
+
EmitterType,
|
|
16
|
+
EnabledModule,
|
|
17
|
+
FORM_REGISTRY,
|
|
18
|
+
FacilityType,
|
|
19
|
+
HarvestMethod,
|
|
20
|
+
LinkedStatus,
|
|
21
|
+
MOD,
|
|
22
|
+
MODULE_LABELS,
|
|
23
|
+
MicroclimateZone,
|
|
24
|
+
MimeType,
|
|
25
|
+
NettingType,
|
|
26
|
+
NotificationMode,
|
|
27
|
+
OrderStatus,
|
|
28
|
+
PhysicalState,
|
|
29
|
+
PlantingMethod,
|
|
30
|
+
RESOURCE_MODULE_MAP,
|
|
31
|
+
RESOURCE_PATHS,
|
|
32
|
+
RESOURCE_REQUIREMENTS,
|
|
33
|
+
ROLE_SECTIONS_BY_KEY,
|
|
34
|
+
RelationshipType,
|
|
35
|
+
RowOrientation,
|
|
36
|
+
SENTINEL_UUID,
|
|
37
|
+
SoilTexture,
|
|
38
|
+
TASK_TYPE_REGISTRY,
|
|
39
|
+
TargetEntityType,
|
|
40
|
+
TaskStatus,
|
|
41
|
+
TaskType,
|
|
42
|
+
TransactionType,
|
|
43
|
+
TrellisType,
|
|
44
|
+
UserPrivilege,
|
|
45
|
+
UserRole,
|
|
46
|
+
VigorRating,
|
|
47
|
+
WaterSource
|
|
48
|
+
} from "./chunk-QI4YXI4P.mjs";
|
|
49
|
+
|
|
1
50
|
// src/index.ts
|
|
2
51
|
import { jwtVerify } from "jose";
|
|
3
52
|
|
|
@@ -188,36 +237,6 @@ var Converter = {
|
|
|
188
237
|
};
|
|
189
238
|
|
|
190
239
|
// 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
240
|
var AppError = class extends Error {
|
|
222
241
|
status;
|
|
223
242
|
appCode;
|
|
@@ -255,43 +274,6 @@ var handleAppErrorResponse = (error, mod = MOD.ADMIN) => {
|
|
|
255
274
|
{ status: 500 }
|
|
256
275
|
);
|
|
257
276
|
};
|
|
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
277
|
var FALLBACK = {
|
|
296
278
|
title: "Something Went Wrong",
|
|
297
279
|
text: "An unexpected error occurred. Please try again or contact your administrator."
|
|
@@ -433,458 +415,6 @@ function isTabVisible(session, activeScopeId, tabConfig) {
|
|
|
433
415
|
function isTabWritable(session, activeScopeId, tabConfig) {
|
|
434
416
|
return resolveAccess(session, activeScopeId, tabConfig) === "WRITE";
|
|
435
417
|
}
|
|
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
418
|
function evaluateBaseAccess(resourcePath, session, requirements = {}) {
|
|
889
419
|
if (!session?.role) return "NONE";
|
|
890
420
|
if (session.role === UserRole.OWNER) return "WRITE";
|
|
@@ -961,6 +491,68 @@ async function verifyAndExtractSession(token, secret) {
|
|
|
961
491
|
throw ErrorFactory.unauthorized(MOD.SESSION, "UNAUTHORIZED: No secure session token provided.");
|
|
962
492
|
}
|
|
963
493
|
}
|
|
494
|
+
function getFormMeta(componentId) {
|
|
495
|
+
return FORM_REGISTRY[componentId] ?? null;
|
|
496
|
+
}
|
|
497
|
+
function getFormsGroupedByModule() {
|
|
498
|
+
const groups = {};
|
|
499
|
+
for (const [id, meta] of Object.entries(FORM_REGISTRY)) {
|
|
500
|
+
if (!groups[meta.module]) groups[meta.module] = [];
|
|
501
|
+
groups[meta.module].push({ id, ...meta });
|
|
502
|
+
}
|
|
503
|
+
return groups;
|
|
504
|
+
}
|
|
505
|
+
var getTaskTypeOptions = () => Object.entries(TASK_TYPE_REGISTRY).map(([value, config]) => ({
|
|
506
|
+
value,
|
|
507
|
+
label: config.label,
|
|
508
|
+
description: config.description,
|
|
509
|
+
mimeTypes: config.mimeTypes,
|
|
510
|
+
icon: config.icon
|
|
511
|
+
}));
|
|
512
|
+
var getAcceptedMimeTypes = (taskType) => {
|
|
513
|
+
const config = TASK_TYPE_REGISTRY[taskType];
|
|
514
|
+
return config ? config.mimeTypes.join(",") : "*/*";
|
|
515
|
+
};
|
|
516
|
+
var getApproveAction = (taskType) => {
|
|
517
|
+
return TASK_TYPE_REGISTRY[taskType]?.approveAction ?? null;
|
|
518
|
+
};
|
|
519
|
+
function generateDocumentPath(params) {
|
|
520
|
+
const sanitizedName = params.siteName.replace(/[^a-z0-9]/gi, "_");
|
|
521
|
+
if (params.isStatic) {
|
|
522
|
+
return `${sanitizedName}/_CORE/${params.docType}`;
|
|
523
|
+
} else {
|
|
524
|
+
const folderYear = params.year || (/* @__PURE__ */ new Date()).getUTCFullYear();
|
|
525
|
+
const folderCrop = params.crop ? `/${params.crop.toUpperCase()}` : "";
|
|
526
|
+
return `${sanitizedName}/_SEASONAL/${folderYear}/${params.docType}${folderCrop}`;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
function isValueMatch(fileValue, expectedValue) {
|
|
530
|
+
if (Array.isArray(expectedValue)) return expectedValue.includes(fileValue);
|
|
531
|
+
return fileValue === expectedValue;
|
|
532
|
+
}
|
|
533
|
+
function calculateFileMetadataMatch(criteria, fileMetadata, auditContext) {
|
|
534
|
+
for (const [key, expectedValue] of Object.entries(criteria.mustMatch)) {
|
|
535
|
+
if (!isValueMatch(fileMetadata[key], expectedValue)) return 0;
|
|
536
|
+
}
|
|
537
|
+
if (criteria.mustMatchContext) {
|
|
538
|
+
for (const field of criteria.mustMatchContext) {
|
|
539
|
+
const contextValue = auditContext[field];
|
|
540
|
+
if (contextValue === void 0) continue;
|
|
541
|
+
if (!isValueMatch(fileMetadata[field], contextValue)) return 0;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
if (fileMetadata.isStatic === true) return 100;
|
|
545
|
+
if (!criteria.contextMatch || criteria.contextMatch.length === 0) return 100;
|
|
546
|
+
let matches = 0;
|
|
547
|
+
let validChecks = 0;
|
|
548
|
+
criteria.contextMatch.forEach((field) => {
|
|
549
|
+
const contextValue = auditContext[field];
|
|
550
|
+
if (contextValue === void 0) return;
|
|
551
|
+
validChecks++;
|
|
552
|
+
if (isValueMatch(fileMetadata[field], contextValue)) matches++;
|
|
553
|
+
});
|
|
554
|
+
return validChecks > 0 ? Math.round(matches / validChecks * 100) : 100;
|
|
555
|
+
}
|
|
964
556
|
export {
|
|
965
557
|
ACCESS_RANK,
|
|
966
558
|
ACT,
|
|
@@ -974,6 +566,8 @@ export {
|
|
|
974
566
|
CAT,
|
|
975
567
|
Converter,
|
|
976
568
|
CropCycleStatus,
|
|
569
|
+
DOCUMENT_MENU_MAP,
|
|
570
|
+
DocumentType,
|
|
977
571
|
ERROR_DICTIONARY,
|
|
978
572
|
EVERYONE,
|
|
979
573
|
EmitterType,
|
|
@@ -1014,12 +608,14 @@ export {
|
|
|
1014
608
|
assertCanWrite,
|
|
1015
609
|
assertTenantBoundary,
|
|
1016
610
|
buildRlsFilter,
|
|
611
|
+
calculateFileMetadataMatch,
|
|
1017
612
|
canRead,
|
|
1018
613
|
canWrite,
|
|
1019
614
|
evaluateBaseAccess,
|
|
1020
615
|
extractAppCode,
|
|
1021
616
|
findSpecificOverride,
|
|
1022
617
|
generateCanonicalId,
|
|
618
|
+
generateDocumentPath,
|
|
1023
619
|
generateInfrastructureFields,
|
|
1024
620
|
getAcceptedMimeTypes,
|
|
1025
621
|
getApproveAction,
|