@7365admin1/core 3.75.1 → 3.77.0
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/CHANGELOG.md +19 -0
- package/dist/index.d.ts +66 -5
- package/dist/index.js +167 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +165 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/test/camera-live-link.test.mjs +163 -0
- package/test/e2e/dashboard-inventory-low-stock.e2e.test.mjs +59 -0
- package/test/notification-category.util.test.mjs +21 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @iservice365/core
|
|
2
2
|
|
|
3
|
+
## 3.77.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 09c259b: Add the `inventory` notification category (in-app and push), offered to roles holding any `inventory:*` permission, for API-core's inventory alerts: a request waiting for approval, a decided request, and low stock.
|
|
8
|
+
|
|
9
|
+
## 3.76.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- bf1a7ac: Sign the camera relay's LIVE view link, the same way recorded footage is already signed
|
|
14
|
+
|
|
15
|
+
The relay's live routes (player page, stream socket, screenshot, clip) had no authorization at
|
|
16
|
+
all. The camera payloads this server returns now carry a signed `liveUrl` and a reusable
|
|
17
|
+
`liveAuth` (`exp=&sig=`), HMAC-SHA256 over `channel|exp` with the same PLAYBACK_SIGNING_KEY and
|
|
18
|
+
the same 120-second lifetime as a playback link. The stored `camera.host` is deliberately left
|
|
19
|
+
untouched: a query string there would switch off the liveVideo capability and would be frozen
|
|
20
|
+
into patrol-route documents. A camera whose relay is not configured is unchanged.
|
|
21
|
+
|
|
3
22
|
## 3.75.1
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -4018,6 +4018,7 @@ declare function useVehicleService(): {
|
|
|
4018
4018
|
|
|
4019
4019
|
declare function useVehicleController(): {
|
|
4020
4020
|
add: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
4021
|
+
addBulk: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
4021
4022
|
getVehicles: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
4022
4023
|
getSeasonPassTypes: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
4023
4024
|
getVehicleById: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
@@ -5148,6 +5149,9 @@ declare function formatCapabilityTrace(trace: CameraCapabilityTrace): string;
|
|
|
5148
5149
|
* ```
|
|
5149
5150
|
*
|
|
5150
5151
|
* The key is referenced by name, never embedded, so the JSON can be reviewed.
|
|
5152
|
+
*
|
|
5153
|
+
* The SAME key and the same configuration also sign LIVE view (`signLiveLink`
|
|
5154
|
+
* below), so a relay that is set up for recordings is set up for live view too.
|
|
5151
5155
|
*/
|
|
5152
5156
|
/** Who may watch recorded footage. `*` (full access) passes too. */
|
|
5153
5157
|
declare const CAMERA_RECORDINGS_PERMISSIONS: string[];
|
|
@@ -5178,6 +5182,46 @@ declare function signPlaybackLink(params: {
|
|
|
5178
5182
|
end: string;
|
|
5179
5183
|
expiresAt: string;
|
|
5180
5184
|
} | null;
|
|
5185
|
+
/**
|
|
5186
|
+
* The live routes on the relay had no check of any kind until now: anyone who
|
|
5187
|
+
* knew a channel number could watch a camera. They now take the SAME key as
|
|
5188
|
+
* recorded footage, over `channel|exp` — a live link has no window, so there is
|
|
5189
|
+
* no start/end to sign.
|
|
5190
|
+
*
|
|
5191
|
+
* **This never touches `camera.host`, and that is not a style choice.** Two
|
|
5192
|
+
* places in the estate break if a signature is written into the stored host:
|
|
5193
|
+
* `camera-capability.util.ts`'s `isRelayPlayerUrl` refuses any host carrying a
|
|
5194
|
+
* query (the `liveVideo` capability would go off for both mobile apps and the
|
|
5195
|
+
* web wall), and the patrol-route form copies `host` into the route document,
|
|
5196
|
+
* where a signature would be frozen at creation time and expire. So the signed
|
|
5197
|
+
* link is handed out as SEPARATE fields, minted per request.
|
|
5198
|
+
*/
|
|
5199
|
+
declare function signLiveLink(host: string | undefined, { relays, now, }?: {
|
|
5200
|
+
relays?: Record<string, string>;
|
|
5201
|
+
now?: Date;
|
|
5202
|
+
}): {
|
|
5203
|
+
liveUrl: string;
|
|
5204
|
+
liveAuth: string;
|
|
5205
|
+
liveExpiresAt: string;
|
|
5206
|
+
} | null;
|
|
5207
|
+
/**
|
|
5208
|
+
* A camera payload with its signed live link attached, or unchanged when no
|
|
5209
|
+
* relay is configured for it. The one place the wall, the health sweep and the
|
|
5210
|
+
* single-camera view all go through.
|
|
5211
|
+
*
|
|
5212
|
+
* It lives here rather than inside `publicCameraFields` only because
|
|
5213
|
+
* `camera-view.util.ts` cannot call this file without a circular import.
|
|
5214
|
+
*/
|
|
5215
|
+
declare function withLiveLink<T extends {
|
|
5216
|
+
host?: string;
|
|
5217
|
+
}>(fields: T, options?: {
|
|
5218
|
+
relays?: Record<string, string>;
|
|
5219
|
+
now?: Date;
|
|
5220
|
+
}): T & Partial<{
|
|
5221
|
+
liveUrl: string;
|
|
5222
|
+
liveAuth: string;
|
|
5223
|
+
liveExpiresAt: string;
|
|
5224
|
+
}>;
|
|
5181
5225
|
|
|
5182
5226
|
/**
|
|
5183
5227
|
* A client with ~150 cameras cannot be onboarded one two-field modal at a time,
|
|
@@ -5420,7 +5464,11 @@ declare function useCameraViewService(): {
|
|
|
5420
5464
|
relayVerified: null;
|
|
5421
5465
|
reachable: boolean;
|
|
5422
5466
|
health: "unsupported";
|
|
5423
|
-
camera: Record<string, any
|
|
5467
|
+
camera: Record<string, any> & Partial<{
|
|
5468
|
+
liveUrl: string;
|
|
5469
|
+
liveAuth: string;
|
|
5470
|
+
liveExpiresAt: string;
|
|
5471
|
+
}>;
|
|
5424
5472
|
snapshotSupported: boolean;
|
|
5425
5473
|
capabilities: CameraCapabilityDescriptor;
|
|
5426
5474
|
firmwareVersion: string | null;
|
|
@@ -5435,7 +5483,11 @@ declare function useCameraViewService(): {
|
|
|
5435
5483
|
reachable: boolean;
|
|
5436
5484
|
health: "ok" | "unreachable" | "drifted";
|
|
5437
5485
|
reason: string | null;
|
|
5438
|
-
camera: Record<string, any
|
|
5486
|
+
camera: Record<string, any> & Partial<{
|
|
5487
|
+
liveUrl: string;
|
|
5488
|
+
liveAuth: string;
|
|
5489
|
+
liveExpiresAt: string;
|
|
5490
|
+
}>;
|
|
5439
5491
|
snapshotSupported: boolean;
|
|
5440
5492
|
capabilities: CameraCapabilityDescriptor;
|
|
5441
5493
|
firmwareVersion: string | null;
|
|
@@ -5462,6 +5514,9 @@ declare function useCameraViewService(): {
|
|
|
5462
5514
|
cameras: {
|
|
5463
5515
|
unavailableReason: string | null;
|
|
5464
5516
|
capabilities: CameraCapabilityDescriptor;
|
|
5517
|
+
liveUrl?: string | undefined;
|
|
5518
|
+
liveAuth?: string | undefined;
|
|
5519
|
+
liveExpiresAt?: string | undefined;
|
|
5465
5520
|
}[];
|
|
5466
5521
|
}>;
|
|
5467
5522
|
getSiteHealth: (params: {
|
|
@@ -5484,6 +5539,9 @@ declare function useCameraViewService(): {
|
|
|
5484
5539
|
detailUnavailableReason: string;
|
|
5485
5540
|
lastFrameAt: string | null;
|
|
5486
5541
|
unavailableReason: string | null;
|
|
5542
|
+
liveUrl?: string | undefined;
|
|
5543
|
+
liveAuth?: string | undefined;
|
|
5544
|
+
liveExpiresAt?: string | undefined;
|
|
5487
5545
|
} | {
|
|
5488
5546
|
verified: "nothing" | "recorder-video-port";
|
|
5489
5547
|
verifiedDescription: string;
|
|
@@ -5499,6 +5557,9 @@ declare function useCameraViewService(): {
|
|
|
5499
5557
|
detailUnavailableReason: string;
|
|
5500
5558
|
lastFrameAt: string | null;
|
|
5501
5559
|
unavailableReason: string | null;
|
|
5560
|
+
liveUrl?: string | undefined;
|
|
5561
|
+
liveAuth?: string | undefined;
|
|
5562
|
+
liveExpiresAt?: string | undefined;
|
|
5502
5563
|
})[];
|
|
5503
5564
|
requested: number;
|
|
5504
5565
|
returned: number;
|
|
@@ -10391,12 +10452,12 @@ declare function useNewDashboardRepo(): {
|
|
|
10391
10452
|
percentage: number | null;
|
|
10392
10453
|
};
|
|
10393
10454
|
supplyAlert: {
|
|
10455
|
+
thresholdUnavailableReason?: string | undefined;
|
|
10394
10456
|
items: {
|
|
10395
10457
|
name: any;
|
|
10396
10458
|
qty: any;
|
|
10397
10459
|
}[];
|
|
10398
|
-
basis: "lowest-quantity";
|
|
10399
|
-
thresholdUnavailableReason: string;
|
|
10460
|
+
basis: "lowest-quantity" | "below-alert-level";
|
|
10400
10461
|
};
|
|
10401
10462
|
taskCompleted: {
|
|
10402
10463
|
completed: any;
|
|
@@ -15122,4 +15183,4 @@ declare function usePersonalEmergencyChainController(): {
|
|
|
15122
15183
|
update: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
15123
15184
|
};
|
|
15124
15185
|
|
|
15125
|
-
export { ANPRMode, APP_BASE_URLS, AUDIT_VALUE_MAX_LENGTH, AccessTypeProps, AppKey, AppServiceType, AssignCardConfig, BULK_CAMERA_COLUMNS, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCameraAccepted, BulkCameraOutcome, BulkCameraPlan, BulkCameraResult, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_ANPR_PERMISSIONS, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_MANAGE_ANY_PERMISSIONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_NO_SUB_STREAM_TTL_SECONDS, CAMERA_PTZ_PERMISSIONS, CAMERA_RECORDINGS_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SETUP_PERMISSIONS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TEST_MIN_INTERVAL_SECONDS, CAMERA_TEST_ROUND_LIMIT, CAMERA_TEST_ROUND_SECONDS, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLIENT_ACTIONS, CLOCK_DRIFT_WARN_SECONDS, CONSOLE_AUDIT_LABELS, CONSOLE_PERMISSIONS, CONTRACTOR_TYPE_LABELS, CROSS_CLIENT_GRANT, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, ConsoleGrant, DEFAULT_RING_SECONDS, DEFAULT_SITE_TIMEZONE, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, E164, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GOVERNED_MODULES, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, LIVE_ROLE, MANAGE_SITE_MODULES, MAX_BULK_CAMERA_ROWS, MAX_CAMERA_CHANNEL, MAX_CAMERA_NAME_LENGTH, MAX_PERSONAL_EMERGENCY_CONTACTS, MAX_RING_SECONDS, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MConsoleAudit, MCustomer, MCustomerSite, MDocumentManagement, MEMBER_TYPES, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSipAccount, MHidSitePermissions, MIN_RING_SECONDS, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MODULE_GATE_MODE_DEFAULT, MODULE_LIST_GATE_DEFAULT, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolEmail, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPersonalEmergencyChain, MPlatformTerms, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MSubscriptionPlan, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NOTIFICATION_CATEGORIES, NOTIFICATION_CHANNELS, NOTIFICATION_CHANNEL_LABELS, NOTIFICATION_NAMESPACE, NOTIFY_ACCESS_FILTER_DEFAULT, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, ORG_OWNER_REPAIR_CLAIM_STALE_MS, ORG_OWNER_REPAIR_CLAIM_TAKEN_REASON, ORG_OWNER_REPAIR_DEFAULT, ORG_OWNER_REPAIR_OFF_REASON, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PATROL_EMAIL_MAX_LOGS, PATROL_EMAIL_MAX_PER_HOUR, PATROL_EMAIL_MAX_RECIPIENTS, PERSON_TYPES, PLATFORM_STAFF_MEMBER_TYPE, PLATFORM_STAFF_ROLE_TYPE, PLAYBACK_LINK_SECONDS, PLAYBACK_MAX_WINDOW_SECONDS, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PlatformTermsStatus, PostOrder, PostSort, PostStatus, QrTagProps, REALTIME_MAX_FANOUT, ResidentAppModuleKey, SELF_SERVICE_RESEND_COOLDOWN_MS, SELF_SIGNUP_PLATFORM, SELF_SIGNUP_STATUS, SELF_SIGNUP_TYPES, SERVICE_PROVIDER_INVITE_LABELS, SERVICE_PROVIDER_INVITE_TRANSITIONS, SERVICE_PROVIDER_SIGN_IN_SUBJECT, SERVICE_PROVIDER_SIGN_IN_TYPE, SERVICE_PROVIDER_SIGN_UP_SUBJECT, SERVICE_PROVIDER_SIGN_UP_TYPE, SOFTWARE_VERSION_ENDPOINT, ServiceProviderInviteAction, ServiceProviderInviteDecision, ServiceProviderInviteFacts, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionBillingMode, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCameraHealthClaim, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TConsoleAudit, TConsoleAuditQuery, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TCustomerSitePropertyField, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoGatewayJob, THidAmicoIdentity, THidAmicoPhysicalCard, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidPermissionUserBinding, THidPhysicalCardInput, THidPhysicalCardType$1 as THidPhysicalCardType, THidSipAccount, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberModulesDeps, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TModuleAccess, TModuleGateMode, TModuleImpact, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TNotificationPreference, TNotificationPreferenceOff, TNotifyAccessContext, TNotifyAccessMode, TNotifyAccessReport, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOrgModulesDeps, TOrgOwnerRepairClaim, TOrgOwnerRepairDeps, TOrgOwnerRepairInput, TOrgOwnerRepairPayload, TOrgOwnerRepairPlan, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolEmail, TPatrolEmailCreatedBy, TPatrolEmailLogRef, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPersonalEmergencyChain, TPersonalEmergencyContact, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYBACK, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRolePermissionHistoryEntry, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TSelfServiceEmailOccasion, TSelfServiceEmailRecord, TSelfServiceResendDecision, TSelfServiceResendFacts, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteDayBounds, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteModulesDeps, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationCode, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, TVerificationOnboarding, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UNSTORED_COLUMNS, UseAccessManagementRepo, UserStatus, VERIFICATION_OPEN_STATUSES, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, allowedPlanApplications, attendanceSchema, attendanceSettingsSchema, buildSelfServiceEmailContext, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, callerAccountApproved, callerId, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraListClearConfirmation, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canManageSiteModules, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, claimReadsAsStale, clampPtzSpeed, clockDriftSeconds, consoleRoleAllows, consoleRoleAllowsAll, consoleSpellings, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideSelfServiceResend, decideServiceProviderInvite, decodeHidPacsCard, deniedModules, deriveBulletinStatus, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, emptyPersonalEmergencyChain, encodeHidPacsCard, entitledSiteScope, events_namespace_collection, expandModules, expiredBulletinSweepFilter, expiredVehicleSweepFilter, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, filterByAccess, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hasOrgInvitation, hasOrgOwnership, hasOrgSiteReach, hidRawUint64, holdsRole, incidentReport, incidentReportLog, incidents_namespace_collection, invitationOffersRole, isCameraEntitled, isDuplicateMemberError, isDuplicateVersionError, isLikelySelfServiceEmail, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSafeRelativePath, isSuperAdmin, isTermsCurrent, isValidTimezone, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, maskNric, memberModulesHandlers, moduleDeniedForCaller, moduleGateEnforceKeys, moduleGateMode, moduleImpact, moduleListGateOn, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationAccessReport, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, notifyAccessMode, occasionForStatus, occurrence_book_namespace_collection, online_forms_namespace_collection, orgLevelRoles, orgModulesHandlers, orgOwnerRepairHandlers, orgOwnerRepairOn, orgQualifiesForOwnerRepair, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, planBulkCameraImport, planOrgOwnerRepair, platform_terms_namespace_collection, playbackRelays, playbackWindowRefusal, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, readsAsApprovedAccount, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, renderPagePdf, requireConsolePermission, requirePlatformStaff, resetCameraTransports, residentAppModuleKeys, residentAppModulesSchema, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, resolveSiteTimezone, resolveStaffRole, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaConsoleAudit, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDiscoverHidAmicoReader, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoAccessLogQuery, schemaHidAmicoAssignUserCard, schemaHidAmicoConfiguration, schemaHidAmicoEnrollUserCard, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoMonitor, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoOperatingMode, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoReaderUserQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserCardIdParams, schemaHidAmicoUserCardParams, schemaHidAmicoUserImageParams, schemaHidAmicoUserImageUploadQuery, schemaHidAmicoUserPin, schemaHidAmicoUserPinParams, schemaHidAmicoVisitorImageParams, schemaHidAmicoVisitorImageUploadQuery, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaHidPermissionScopeQuery, schemaHidSipAccountRequest, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaNotificationPreference, schemaNotificationPreferenceOff, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolEmail, schemaPatrolEmailCreatedBy, schemaPatrolEmailLogRef, schemaPatrolEmailQuery, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPersonalEmergencyContact, schemaPlate, schemaPlatformTerms, schemaPost, schemaPostFavorite, schemaResendPatrolEmail, schemaResidentSelfSignUp, schemaSelfServiceVisitor, schemaSendPatrolEmail, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateNotificationPreference, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePersonalEmergencyChain, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, selectHealthTargets, selfServiceEmailSubject, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, signPlaybackLink, siteDayBounds, siteModulesHandlers, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, staffMayBypass, stringifyHidJson, stripFacialImageMetadata, subscriptionPlanSchema, summariseBulkCameraPlan, updateRemarksStatusEod, updateRemarksisAcknowledged, updateSiteSchema, useAccessManagementController, useAddressRepo, useAttendanceController, useAttendanceRepository, useAttendanceSettingsController, useAttendanceSettingsRepository, useAttendanceSettingsService, useAuthController, useAuthControllerV2, useAuthService, useAuthServiceV2, useBidPrelovedController, useBidPrelovedRepo, useBidPrelovedService, useBuildingController, useBuildingLevelController, useBuildingLevelRepo, useBuildingLevelService, useBuildingRepo, useBuildingService, useBuildingUnitController, useBuildingUnitRepo, useBuildingUnitService, useBulletinBoardController, useBulletinBoardRepo, useBulletinBoardService, useBulletinVideoController, useBulletinVideoRepo, useBulletinVideoService, useCameraViewController, useCameraViewService, useCategoryPrelovedController, useCategoryPrelovedRepo, useChannelPrelovedController, useChannelPrelovedRepo, useChatController, useChatPrelovedController, useChatPrelovedRepo, useChatPrelovedService, useChatRepo, useConsoleAuditController, useConsoleAuditRepo, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationPreferenceController, useNotificationPreferenceRepo, useNotificationPreferenceService, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgOwnerRepairRepo, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolEmailController, usePatrolEmailRepo, usePatrolEmailService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePersonalEmergencyChainController, usePersonalEmergencyChainRepo, usePersonalEmergencyChainService, usePlatformTermsController, usePlatformTermsRepo, usePlatformTermsService, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderInviteController, useServiceProviderInviteService, useServiceProviderRepo, useSessionRepo, useSiteBillingConfigurationController, useSiteBillingConfigurationRepo, useSiteBillingItemController, useSiteBillingItemRepo, useSiteCameraController, useSiteCameraRepo, useSiteCameraService, useSiteController, useSiteFacilityBookingController, useSiteFacilityBookingRepo, useSiteFacilityBookingService, useSiteFacilityController, useSiteFacilityRepo, useSiteFacilityService, useSiteRepo, useSiteService, useSiteUnitBillingController, useSiteUnitBillingRepo, useSiteUnitBillingService, useStatementOfAccountController, useStatementOfAccountRepo, useSubcategoryPrelovedController, useSubcategoryPrelovedRepo, useSubscriptionController, useSubscriptionPlanController, useSubscriptionPlanRepo, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|
|
15186
|
+
export { ANPRMode, APP_BASE_URLS, AUDIT_VALUE_MAX_LENGTH, AccessTypeProps, AppKey, AppServiceType, AssignCardConfig, BULK_CAMERA_COLUMNS, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCameraAccepted, BulkCameraOutcome, BulkCameraPlan, BulkCameraResult, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_ANPR_PERMISSIONS, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_MANAGE_ANY_PERMISSIONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_NO_SUB_STREAM_TTL_SECONDS, CAMERA_PTZ_PERMISSIONS, CAMERA_RECORDINGS_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SETUP_PERMISSIONS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TEST_MIN_INTERVAL_SECONDS, CAMERA_TEST_ROUND_LIMIT, CAMERA_TEST_ROUND_SECONDS, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLIENT_ACTIONS, CLOCK_DRIFT_WARN_SECONDS, CONSOLE_AUDIT_LABELS, CONSOLE_PERMISSIONS, CONTRACTOR_TYPE_LABELS, CROSS_CLIENT_GRANT, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, ConsoleGrant, DEFAULT_RING_SECONDS, DEFAULT_SITE_TIMEZONE, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, E164, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GOVERNED_MODULES, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, LIVE_ROLE, MANAGE_SITE_MODULES, MAX_BULK_CAMERA_ROWS, MAX_CAMERA_CHANNEL, MAX_CAMERA_NAME_LENGTH, MAX_PERSONAL_EMERGENCY_CONTACTS, MAX_RING_SECONDS, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MConsoleAudit, MCustomer, MCustomerSite, MDocumentManagement, MEMBER_TYPES, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSipAccount, MHidSitePermissions, MIN_RING_SECONDS, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MODULE_GATE_MODE_DEFAULT, MODULE_LIST_GATE_DEFAULT, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolEmail, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPersonalEmergencyChain, MPlatformTerms, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MSubscriptionPlan, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NOTIFICATION_CATEGORIES, NOTIFICATION_CHANNELS, NOTIFICATION_CHANNEL_LABELS, NOTIFICATION_NAMESPACE, NOTIFY_ACCESS_FILTER_DEFAULT, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, ORG_OWNER_REPAIR_CLAIM_STALE_MS, ORG_OWNER_REPAIR_CLAIM_TAKEN_REASON, ORG_OWNER_REPAIR_DEFAULT, ORG_OWNER_REPAIR_OFF_REASON, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PATROL_EMAIL_MAX_LOGS, PATROL_EMAIL_MAX_PER_HOUR, PATROL_EMAIL_MAX_RECIPIENTS, PERSON_TYPES, PLATFORM_STAFF_MEMBER_TYPE, PLATFORM_STAFF_ROLE_TYPE, PLAYBACK_LINK_SECONDS, PLAYBACK_MAX_WINDOW_SECONDS, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PlatformTermsStatus, PostOrder, PostSort, PostStatus, QrTagProps, REALTIME_MAX_FANOUT, ResidentAppModuleKey, SELF_SERVICE_RESEND_COOLDOWN_MS, SELF_SIGNUP_PLATFORM, SELF_SIGNUP_STATUS, SELF_SIGNUP_TYPES, SERVICE_PROVIDER_INVITE_LABELS, SERVICE_PROVIDER_INVITE_TRANSITIONS, SERVICE_PROVIDER_SIGN_IN_SUBJECT, SERVICE_PROVIDER_SIGN_IN_TYPE, SERVICE_PROVIDER_SIGN_UP_SUBJECT, SERVICE_PROVIDER_SIGN_UP_TYPE, SOFTWARE_VERSION_ENDPOINT, ServiceProviderInviteAction, ServiceProviderInviteDecision, ServiceProviderInviteFacts, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionBillingMode, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCameraHealthClaim, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TConsoleAudit, TConsoleAuditQuery, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TCustomerSitePropertyField, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoGatewayJob, THidAmicoIdentity, THidAmicoPhysicalCard, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidPermissionUserBinding, THidPhysicalCardInput, THidPhysicalCardType$1 as THidPhysicalCardType, THidSipAccount, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberModulesDeps, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TModuleAccess, TModuleGateMode, TModuleImpact, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TNotificationPreference, TNotificationPreferenceOff, TNotifyAccessContext, TNotifyAccessMode, TNotifyAccessReport, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOrgModulesDeps, TOrgOwnerRepairClaim, TOrgOwnerRepairDeps, TOrgOwnerRepairInput, TOrgOwnerRepairPayload, TOrgOwnerRepairPlan, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolEmail, TPatrolEmailCreatedBy, TPatrolEmailLogRef, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPersonalEmergencyChain, TPersonalEmergencyContact, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYBACK, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRolePermissionHistoryEntry, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TSelfServiceEmailOccasion, TSelfServiceEmailRecord, TSelfServiceResendDecision, TSelfServiceResendFacts, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteDayBounds, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteModulesDeps, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationCode, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, TVerificationOnboarding, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UNSTORED_COLUMNS, UseAccessManagementRepo, UserStatus, VERIFICATION_OPEN_STATUSES, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, allowedPlanApplications, attendanceSchema, attendanceSettingsSchema, buildSelfServiceEmailContext, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, callerAccountApproved, callerId, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraListClearConfirmation, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canManageSiteModules, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, claimReadsAsStale, clampPtzSpeed, clockDriftSeconds, consoleRoleAllows, consoleRoleAllowsAll, consoleSpellings, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideSelfServiceResend, decideServiceProviderInvite, decodeHidPacsCard, deniedModules, deriveBulletinStatus, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, emptyPersonalEmergencyChain, encodeHidPacsCard, entitledSiteScope, events_namespace_collection, expandModules, expiredBulletinSweepFilter, expiredVehicleSweepFilter, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, filterByAccess, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hasOrgInvitation, hasOrgOwnership, hasOrgSiteReach, hidRawUint64, holdsRole, incidentReport, incidentReportLog, incidents_namespace_collection, invitationOffersRole, isCameraEntitled, isDuplicateMemberError, isDuplicateVersionError, isLikelySelfServiceEmail, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSafeRelativePath, isSuperAdmin, isTermsCurrent, isValidTimezone, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, maskNric, memberModulesHandlers, moduleDeniedForCaller, moduleGateEnforceKeys, moduleGateMode, moduleImpact, moduleListGateOn, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationAccessReport, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, notifyAccessMode, occasionForStatus, occurrence_book_namespace_collection, online_forms_namespace_collection, orgLevelRoles, orgModulesHandlers, orgOwnerRepairHandlers, orgOwnerRepairOn, orgQualifiesForOwnerRepair, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, planBulkCameraImport, planOrgOwnerRepair, platform_terms_namespace_collection, playbackRelays, playbackWindowRefusal, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, readsAsApprovedAccount, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, renderPagePdf, requireConsolePermission, requirePlatformStaff, resetCameraTransports, residentAppModuleKeys, residentAppModulesSchema, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, resolveSiteTimezone, resolveStaffRole, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaConsoleAudit, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDiscoverHidAmicoReader, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoAccessLogQuery, schemaHidAmicoAssignUserCard, schemaHidAmicoConfiguration, schemaHidAmicoEnrollUserCard, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoMonitor, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoOperatingMode, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoReaderUserQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserCardIdParams, schemaHidAmicoUserCardParams, schemaHidAmicoUserImageParams, schemaHidAmicoUserImageUploadQuery, schemaHidAmicoUserPin, schemaHidAmicoUserPinParams, schemaHidAmicoVisitorImageParams, schemaHidAmicoVisitorImageUploadQuery, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaHidPermissionScopeQuery, schemaHidSipAccountRequest, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaNotificationPreference, schemaNotificationPreferenceOff, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolEmail, schemaPatrolEmailCreatedBy, schemaPatrolEmailLogRef, schemaPatrolEmailQuery, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPersonalEmergencyContact, schemaPlate, schemaPlatformTerms, schemaPost, schemaPostFavorite, schemaResendPatrolEmail, schemaResidentSelfSignUp, schemaSelfServiceVisitor, schemaSendPatrolEmail, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateNotificationPreference, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePersonalEmergencyChain, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, selectHealthTargets, selfServiceEmailSubject, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, signLiveLink, signPlaybackLink, siteDayBounds, siteModulesHandlers, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, staffMayBypass, stringifyHidJson, stripFacialImageMetadata, subscriptionPlanSchema, summariseBulkCameraPlan, updateRemarksStatusEod, updateRemarksisAcknowledged, updateSiteSchema, useAccessManagementController, useAddressRepo, useAttendanceController, useAttendanceRepository, useAttendanceSettingsController, useAttendanceSettingsRepository, useAttendanceSettingsService, useAuthController, useAuthControllerV2, useAuthService, useAuthServiceV2, useBidPrelovedController, useBidPrelovedRepo, useBidPrelovedService, useBuildingController, useBuildingLevelController, useBuildingLevelRepo, useBuildingLevelService, useBuildingRepo, useBuildingService, useBuildingUnitController, useBuildingUnitRepo, useBuildingUnitService, useBulletinBoardController, useBulletinBoardRepo, useBulletinBoardService, useBulletinVideoController, useBulletinVideoRepo, useBulletinVideoService, useCameraViewController, useCameraViewService, useCategoryPrelovedController, useCategoryPrelovedRepo, useChannelPrelovedController, useChannelPrelovedRepo, useChatController, useChatPrelovedController, useChatPrelovedRepo, useChatPrelovedService, useChatRepo, useConsoleAuditController, useConsoleAuditRepo, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationPreferenceController, useNotificationPreferenceRepo, useNotificationPreferenceService, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgOwnerRepairRepo, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolEmailController, usePatrolEmailRepo, usePatrolEmailService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePersonalEmergencyChainController, usePersonalEmergencyChainRepo, usePersonalEmergencyChainService, usePlatformTermsController, usePlatformTermsRepo, usePlatformTermsService, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderInviteController, useServiceProviderInviteService, useServiceProviderRepo, useSessionRepo, useSiteBillingConfigurationController, useSiteBillingConfigurationRepo, useSiteBillingItemController, useSiteBillingItemRepo, useSiteCameraController, useSiteCameraRepo, useSiteCameraService, useSiteController, useSiteFacilityBookingController, useSiteFacilityBookingRepo, useSiteFacilityBookingService, useSiteFacilityController, useSiteFacilityRepo, useSiteFacilityService, useSiteRepo, useSiteService, useSiteUnitBillingController, useSiteUnitBillingRepo, useSiteUnitBillingService, useStatementOfAccountController, useStatementOfAccountRepo, useSubcategoryPrelovedController, useSubcategoryPrelovedRepo, useSubscriptionController, useSubscriptionPlanController, useSubscriptionPlanRepo, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, withLiveLink, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|
package/dist/index.js
CHANGED
|
@@ -599,6 +599,7 @@ __export(src_exports, {
|
|
|
599
599
|
sessionSchema: () => sessionSchema,
|
|
600
600
|
setIO: () => setIO,
|
|
601
601
|
shiftSchema: () => shiftSchema,
|
|
602
|
+
signLiveLink: () => signLiveLink,
|
|
602
603
|
signPlaybackLink: () => signPlaybackLink,
|
|
603
604
|
siteDayBounds: () => siteDayBounds,
|
|
604
605
|
siteModulesHandlers: () => siteModulesHandlers,
|
|
@@ -849,6 +850,7 @@ __export(src_exports, {
|
|
|
849
850
|
vehicles_namespace_collection: () => vehicles_namespace_collection,
|
|
850
851
|
visitors_namespace_collection: () => visitors_namespace_collection,
|
|
851
852
|
wallConfig: () => wallConfig,
|
|
853
|
+
withLiveLink: () => withLiveLink,
|
|
852
854
|
workOrderSchema: () => workOrderSchema,
|
|
853
855
|
work_orders2_namespace_collection: () => work_orders2_namespace_collection,
|
|
854
856
|
work_orders_namespace_collection: () => work_orders_namespace_collection
|
|
@@ -9642,6 +9644,20 @@ var NOTIFICATION_CATEGORIES = [
|
|
|
9642
9644
|
vendorDefault: true,
|
|
9643
9645
|
rendered: true
|
|
9644
9646
|
},
|
|
9647
|
+
// Inventory (2026-09-17). Sent from `iservice365-API-core`'s inventory
|
|
9648
|
+
// module: a stock request waiting for approval and stock falling to its alert
|
|
9649
|
+
// level go to that store's staff; a decided request goes to the person who
|
|
9650
|
+
// asked. The caller checks `rendered` before it sends, so the sender and this
|
|
9651
|
+
// switch cannot land out of order.
|
|
9652
|
+
{
|
|
9653
|
+
key: "inventory",
|
|
9654
|
+
label: "Inventory",
|
|
9655
|
+
description: "When a stock request needs your approval or has been decided, or stock you look after runs low.",
|
|
9656
|
+
channels: { inApp: true, push: true, email: false },
|
|
9657
|
+
channelNote: { email: NO_EMAIL_RECIPIENT },
|
|
9658
|
+
permissionResources: ["inventory"],
|
|
9659
|
+
rendered: true
|
|
9660
|
+
},
|
|
9645
9661
|
{
|
|
9646
9662
|
key: "serviceProviderInvite",
|
|
9647
9663
|
label: "Service Provider Invitations",
|
|
@@ -21867,6 +21883,37 @@ function signPlaybackLink(params) {
|
|
|
21867
21883
|
expiresAt: new Date(exp * 1e3).toISOString()
|
|
21868
21884
|
};
|
|
21869
21885
|
}
|
|
21886
|
+
function signLiveLink(host, {
|
|
21887
|
+
relays = playbackRelays(),
|
|
21888
|
+
now = /* @__PURE__ */ new Date()
|
|
21889
|
+
} = {}) {
|
|
21890
|
+
const parsed = host ? parseCameraHost(host) : null;
|
|
21891
|
+
if (!parsed || parsed.channel === null)
|
|
21892
|
+
return null;
|
|
21893
|
+
const key = relays[parsed.authority];
|
|
21894
|
+
if (!key)
|
|
21895
|
+
return null;
|
|
21896
|
+
const exp = Math.floor(now.getTime() / 1e3) + PLAYBACK_LINK_SECONDS;
|
|
21897
|
+
const channel = String(parsed.channel);
|
|
21898
|
+
const sig = (0, import_node_crypto2.createHmac)("sha256", key).update(`${channel}|${exp}`).digest("hex");
|
|
21899
|
+
const liveAuth = `exp=${exp}&sig=${sig}`;
|
|
21900
|
+
return {
|
|
21901
|
+
/** The player page, ready for an iframe or a WebView. */
|
|
21902
|
+
liveUrl: `https://${parsed.authority}/${channel}?${liveAuth}`,
|
|
21903
|
+
/**
|
|
21904
|
+
* The same signature, on its own, to append to any of the relay's live
|
|
21905
|
+
* routes — the socket, the still, the clip. One signature serves all four
|
|
21906
|
+
* because it covers the CHANNEL and not the path, which is what lets
|
|
21907
|
+
* `insertScreenshot` keep splicing `screenshot` into the path.
|
|
21908
|
+
*/
|
|
21909
|
+
liveAuth,
|
|
21910
|
+
liveExpiresAt: new Date(exp * 1e3).toISOString()
|
|
21911
|
+
};
|
|
21912
|
+
}
|
|
21913
|
+
function withLiveLink(fields, options) {
|
|
21914
|
+
const live = signLiveLink(fields.host, options);
|
|
21915
|
+
return live ? { ...fields, ...live } : fields;
|
|
21916
|
+
}
|
|
21870
21917
|
|
|
21871
21918
|
// src/utils/camera-capability.util.ts
|
|
21872
21919
|
var CAMERA_CAPABILITIES = [
|
|
@@ -23222,7 +23269,9 @@ function useCameraViewService() {
|
|
|
23222
23269
|
// player-page URL, which is the one picture path proven to work, and the
|
|
23223
23270
|
// plain `GET /site-cameras` already returns it to every authenticated
|
|
23224
23271
|
// caller. The credential fields are still never included.
|
|
23225
|
-
...
|
|
23272
|
+
...withLiveLink(
|
|
23273
|
+
publicCameraFields({ ...camera, siteName: site?.name })
|
|
23274
|
+
),
|
|
23226
23275
|
// Answered before anything is requested, so a camera with no address or
|
|
23227
23276
|
// an inactive one renders with a reason and costs zero device requests.
|
|
23228
23277
|
// (An ANPR unit never reaches here — it is filtered out above.)
|
|
@@ -23265,7 +23314,7 @@ function useCameraViewService() {
|
|
|
23265
23314
|
async function probeCamera(camera, cacheSeconds) {
|
|
23266
23315
|
const id = camera?._id?.toString?.() ?? "";
|
|
23267
23316
|
const identity = {
|
|
23268
|
-
...publicCameraFields(camera),
|
|
23317
|
+
...withLiveLink(publicCameraFields(camera)),
|
|
23269
23318
|
unavailableReason: snapshotRefusalReason(camera)
|
|
23270
23319
|
};
|
|
23271
23320
|
const lastFrameAt = await getCache(`lastframe:${id}`) || null;
|
|
@@ -23399,7 +23448,7 @@ function useCameraViewService() {
|
|
|
23399
23448
|
);
|
|
23400
23449
|
const { capabilities } = capabilitiesOf(camera, probe);
|
|
23401
23450
|
const base = {
|
|
23402
|
-
camera: publicCameraFields(camera),
|
|
23451
|
+
camera: withLiveLink(publicCameraFields(camera)),
|
|
23403
23452
|
snapshotSupported: refusal === null,
|
|
23404
23453
|
capabilities,
|
|
23405
23454
|
// Filled in from the probe when the device answers. Today it does not, so
|
|
@@ -38434,6 +38483,87 @@ function useVehicleController() {
|
|
|
38434
38483
|
next(error);
|
|
38435
38484
|
}
|
|
38436
38485
|
}
|
|
38486
|
+
const MAX_BULK_VEHICLE_ROWS = 100;
|
|
38487
|
+
async function addBulk(req, res, next) {
|
|
38488
|
+
const rowSchema = import_joi57.default.object({
|
|
38489
|
+
// The sheet's own row id. Opaque to the server, handed straight back.
|
|
38490
|
+
id: import_joi57.default.string().trim().max(64).required(),
|
|
38491
|
+
block: import_joi57.default.string().hex().length(24).required(),
|
|
38492
|
+
level: import_joi57.default.string().hex().length(24).required(),
|
|
38493
|
+
unit: import_joi57.default.string().hex().length(24).required(),
|
|
38494
|
+
name: import_joi57.default.string().trim().min(1).required(),
|
|
38495
|
+
plateNumber: import_joi57.default.string().trim().min(1).required(),
|
|
38496
|
+
nric: import_joi57.default.string().trim().optional().allow("", null),
|
|
38497
|
+
phoneNumber: import_joi57.default.string().trim().optional().allow("", null)
|
|
38498
|
+
});
|
|
38499
|
+
const schema2 = import_joi57.default.object({
|
|
38500
|
+
site: import_joi57.default.string().hex().length(24).required(),
|
|
38501
|
+
org: import_joi57.default.string().hex().length(24).required(),
|
|
38502
|
+
category: import_joi57.default.string().optional().valid(...Object.values(VehicleCategory)).default("resident" /* RESIDENT */),
|
|
38503
|
+
rows: import_joi57.default.array().items(rowSchema).min(1).max(MAX_BULK_VEHICLE_ROWS).required()
|
|
38504
|
+
});
|
|
38505
|
+
const { error, value } = schema2.validate(req.body, { abortEarly: false });
|
|
38506
|
+
if (error) {
|
|
38507
|
+
const messages = error.details.map((d) => d.message).join(", ");
|
|
38508
|
+
import_node_server_utils121.logger.log({ level: "error", message: messages });
|
|
38509
|
+
next(new import_node_server_utils121.BadRequestError(messages));
|
|
38510
|
+
return;
|
|
38511
|
+
}
|
|
38512
|
+
try {
|
|
38513
|
+
await requireSiteReach(req, value.site);
|
|
38514
|
+
const user = req.user?.user || req.user?._id;
|
|
38515
|
+
const results = [];
|
|
38516
|
+
for (const row of value.rows) {
|
|
38517
|
+
try {
|
|
38518
|
+
const message = await _add(
|
|
38519
|
+
{
|
|
38520
|
+
site: value.site,
|
|
38521
|
+
org: value.org,
|
|
38522
|
+
type: "whitelist" /* WHITELIST */,
|
|
38523
|
+
category: value.category,
|
|
38524
|
+
name: row.name,
|
|
38525
|
+
nric: row.nric || "",
|
|
38526
|
+
phoneNumber: row.phoneNumber || "",
|
|
38527
|
+
block: row.block,
|
|
38528
|
+
level: row.level,
|
|
38529
|
+
unit: row.unit,
|
|
38530
|
+
plateNumber: [row.plateNumber]
|
|
38531
|
+
},
|
|
38532
|
+
void 0,
|
|
38533
|
+
user
|
|
38534
|
+
);
|
|
38535
|
+
results.push({
|
|
38536
|
+
id: row.id,
|
|
38537
|
+
ok: true,
|
|
38538
|
+
message: String(message ?? "Vehicle added successfully.")
|
|
38539
|
+
});
|
|
38540
|
+
} catch (rowError) {
|
|
38541
|
+
import_node_server_utils121.logger.log({
|
|
38542
|
+
level: "error",
|
|
38543
|
+
message: `bulk vehicle row ${row.id}: ${rowError?.message ?? rowError}`
|
|
38544
|
+
});
|
|
38545
|
+
results.push({
|
|
38546
|
+
id: row.id,
|
|
38547
|
+
ok: false,
|
|
38548
|
+
message: String(
|
|
38549
|
+
rowError?.message ?? "The vehicle could not be added."
|
|
38550
|
+
)
|
|
38551
|
+
});
|
|
38552
|
+
}
|
|
38553
|
+
}
|
|
38554
|
+
const added = results.filter((result) => result.ok).length;
|
|
38555
|
+
const failed = results.length - added;
|
|
38556
|
+
res.status(200).json({
|
|
38557
|
+
message: failed === 0 ? `${added} vehicle${added === 1 ? "" : "s"} added.` : `${added} of ${results.length} vehicles added; ${failed} could not be added.`,
|
|
38558
|
+
added,
|
|
38559
|
+
failed,
|
|
38560
|
+
results
|
|
38561
|
+
});
|
|
38562
|
+
} catch (error2) {
|
|
38563
|
+
import_node_server_utils121.logger.log({ level: "error", message: error2.message });
|
|
38564
|
+
next(error2);
|
|
38565
|
+
}
|
|
38566
|
+
}
|
|
38437
38567
|
async function add(req, res, next) {
|
|
38438
38568
|
const { error, value } = vehicleSchema.validate(req.body, {
|
|
38439
38569
|
abortEarly: false
|
|
@@ -38909,6 +39039,7 @@ function useVehicleController() {
|
|
|
38909
39039
|
}
|
|
38910
39040
|
return {
|
|
38911
39041
|
add,
|
|
39042
|
+
addBulk,
|
|
38912
39043
|
getVehicles,
|
|
38913
39044
|
getSeasonPassTypes,
|
|
38914
39045
|
getVehicleById,
|
|
@@ -76414,6 +76545,7 @@ function highSeverityIncidentCount(severities) {
|
|
|
76414
76545
|
).length;
|
|
76415
76546
|
}
|
|
76416
76547
|
var SUPPLY_BASIS_LOWEST_QUANTITY = "lowest-quantity";
|
|
76548
|
+
var SUPPLY_BASIS_BELOW_ALERT_LEVEL = "below-alert-level";
|
|
76417
76549
|
var SUPPLY_THRESHOLD_NOT_IN_MODEL = "Supplies do not record a stock threshold, so these are the lowest-quantity items rather than items below a level.";
|
|
76418
76550
|
|
|
76419
76551
|
// src/repositories/new-dashboard.repo.ts
|
|
@@ -77272,6 +77404,32 @@ function useNewDashboardRepo() {
|
|
|
77272
77404
|
{ $unwind: { path: "$scheduleDoc", preserveNullAndEmptyArrays: false } }
|
|
77273
77405
|
];
|
|
77274
77406
|
}
|
|
77407
|
+
async function lowStockItems(site, serviceType) {
|
|
77408
|
+
const stores = await db2.collection("inventory.stores").find({ sites: site, status: "active" }, { projection: { _id: 1 } }).toArray();
|
|
77409
|
+
if (stores.length) {
|
|
77410
|
+
const items2 = await db2.collection("inventory.items").aggregate([
|
|
77411
|
+
{
|
|
77412
|
+
$match: {
|
|
77413
|
+
store: { $in: stores.map((store) => store._id) },
|
|
77414
|
+
status: "active",
|
|
77415
|
+
reorderLevel: { $gt: 0 },
|
|
77416
|
+
$expr: { $lte: ["$onHand", "$reorderLevel"] }
|
|
77417
|
+
}
|
|
77418
|
+
},
|
|
77419
|
+
{ $sort: { onHand: 1 } },
|
|
77420
|
+
{ $limit: 5 },
|
|
77421
|
+
{ $project: { _id: 1, name: 1, qty: "$onHand" } }
|
|
77422
|
+
]).toArray();
|
|
77423
|
+
return { items: items2, basis: SUPPLY_BASIS_BELOW_ALERT_LEVEL };
|
|
77424
|
+
}
|
|
77425
|
+
const items = await supplyCollection.aggregate([
|
|
77426
|
+
{ $match: { site, serviceType, status: "active" } },
|
|
77427
|
+
{ $sort: { qty: 1 } },
|
|
77428
|
+
{ $limit: 3 },
|
|
77429
|
+
{ $project: { _id: 1, name: 1, qty: 1 } }
|
|
77430
|
+
]).toArray();
|
|
77431
|
+
return { items, basis: SUPPLY_BASIS_LOWEST_QUANTITY };
|
|
77432
|
+
}
|
|
77275
77433
|
async function getServiceDashboard({
|
|
77276
77434
|
site,
|
|
77277
77435
|
serviceType,
|
|
@@ -77329,12 +77487,7 @@ function useNewDashboardRepo() {
|
|
|
77329
77487
|
}
|
|
77330
77488
|
}
|
|
77331
77489
|
]).toArray(),
|
|
77332
|
-
|
|
77333
|
-
{ $match: { site, serviceType, status: "active" } },
|
|
77334
|
-
{ $sort: { qty: 1 } },
|
|
77335
|
-
{ $limit: 3 },
|
|
77336
|
-
{ $project: { _id: 1, name: 1, qty: 1 } }
|
|
77337
|
-
]).toArray(),
|
|
77490
|
+
lowStockItems(site, serviceType),
|
|
77338
77491
|
areaChecklistCollection.aggregate([
|
|
77339
77492
|
...areaChecklistScheduleLookup(site, serviceType, periodRange),
|
|
77340
77493
|
{
|
|
@@ -77396,7 +77549,7 @@ function useNewDashboardRepo() {
|
|
|
77396
77549
|
)
|
|
77397
77550
|
},
|
|
77398
77551
|
supplyAlert: {
|
|
77399
|
-
items: supplyAlertReport.map((item) => ({
|
|
77552
|
+
items: supplyAlertReport.items.map((item) => ({
|
|
77400
77553
|
name: item.name,
|
|
77401
77554
|
qty: item.qty
|
|
77402
77555
|
})),
|
|
@@ -77404,8 +77557,8 @@ function useNewDashboardRepo() {
|
|
|
77404
77557
|
// with no threshold, because `site.supplies` records no stock level to
|
|
77405
77558
|
// compare against. Naming the ordering stops 900 gloves being drawn as
|
|
77406
77559
|
// a warning. No threshold is invented here.
|
|
77407
|
-
basis:
|
|
77408
|
-
thresholdUnavailableReason: SUPPLY_THRESHOLD_NOT_IN_MODEL
|
|
77560
|
+
basis: supplyAlertReport.basis,
|
|
77561
|
+
...supplyAlertReport.basis === SUPPLY_BASIS_LOWEST_QUANTITY ? { thresholdUnavailableReason: SUPPLY_THRESHOLD_NOT_IN_MODEL } : {}
|
|
77409
77562
|
},
|
|
77410
77563
|
taskCompleted: {
|
|
77411
77564
|
completed: tFacet.completed[0]?.count ?? 0,
|
|
@@ -91660,6 +91813,7 @@ function usePersonalEmergencyChainController() {
|
|
|
91660
91813
|
sessionSchema,
|
|
91661
91814
|
setIO,
|
|
91662
91815
|
shiftSchema,
|
|
91816
|
+
signLiveLink,
|
|
91663
91817
|
signPlaybackLink,
|
|
91664
91818
|
siteDayBounds,
|
|
91665
91819
|
siteModulesHandlers,
|
|
@@ -91910,6 +92064,7 @@ function usePersonalEmergencyChainController() {
|
|
|
91910
92064
|
vehicles_namespace_collection,
|
|
91911
92065
|
visitors_namespace_collection,
|
|
91912
92066
|
wallConfig,
|
|
92067
|
+
withLiveLink,
|
|
91913
92068
|
workOrderSchema,
|
|
91914
92069
|
work_orders2_namespace_collection,
|
|
91915
92070
|
work_orders_namespace_collection
|