@7365admin1/core 3.51.1-staging.225 → 3.51.1-staging.228
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/.changeset/camera-edit-audit-trail.md +16 -0
- package/.changeset/camera-health-decouple-from-wall-cap.md +17 -0
- package/.changeset/site-camera-direction-valid.md +15 -0
- package/dist/index.d.ts +63 -2
- package/dist/index.js +149 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +148 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/test/camera-audit-fields.test.mjs +142 -0
- package/test/camera-health-cap.test.mjs +131 -0
- package/test/site-camera-direction.test.mjs +109 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": patch
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Record who added, changed or removed a camera.
|
|
6
|
+
|
|
7
|
+
"Who changed this camera's address, and when" had no answer anywhere in the system: a camera record
|
|
8
|
+
carries `createdAt`/`updatedAt` and no actor, and a write overwrites the previous `host` in place. At
|
|
9
|
+
Seventh Condominium that turned a one-line port correction into nine days.
|
|
10
|
+
|
|
11
|
+
`add`, `updateById` and `deleteById` on site cameras now append a row to the existing append-only
|
|
12
|
+
`console-audit` collection, with the actor from the session, the camera id, and `before`/`after`
|
|
13
|
+
values drawn from a per-action allow-list. No schema changes, no migration, and no new collection.
|
|
14
|
+
|
|
15
|
+
The allow-list is the boundary that matters: a camera document holds a device credential, and
|
|
16
|
+
`username` and `password` are not on it. `loadForWrite` still never reads them.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": patch
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Decouple the camera health sweep from the wall's tile ceiling.
|
|
6
|
+
|
|
7
|
+
`getSiteHealth` sliced its input to `maxTiles` (9), so a health request covering a 150-camera site
|
|
8
|
+
answered for the first nine cameras and said nothing at all about the other 141 — and did not report
|
|
9
|
+
that it had shortened the list. No client could build a site-wide "which of my cameras is down" view,
|
|
10
|
+
however it asked.
|
|
11
|
+
|
|
12
|
+
Health is now bounded by its own `maxHealthCameras` (`CAMERA_HEALTH_MAX_CAMERAS`, default 200), and a
|
|
13
|
+
request past that cap comes back with `requested` / `returned` / `truncated` instead of a quietly
|
|
14
|
+
partial list. The device fan-out is unchanged: `maxConcurrentProbes` still bounds probes in flight at
|
|
15
|
+
4, the reachability probe is still cached per recorder, and `probeCamera` still reads a cached device
|
|
16
|
+
probe rather than making a fresh one — so a 150-camera sweep costs a recorder no more than a 9-camera
|
|
17
|
+
one after the first pass.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": patch
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Constrain a site camera's `direction` to a fixed set instead of accepting any string.
|
|
6
|
+
|
|
7
|
+
`Joi.string().allow("entry", "exit", "both", "none")` reads like a whitelist but is not one — on a
|
|
8
|
+
validator that already accepts every non-empty string, `.allow()` only adds permitted values, so the
|
|
9
|
+
field rejected nothing. It is now `.valid()`.
|
|
10
|
+
|
|
11
|
+
The accepted set is `entry | exit | both | none | visitors | residents`: the four values the staging
|
|
12
|
+
collection actually holds (measured read-only across all 22 rows), plus the two extra options
|
|
13
|
+
layer-common's live `CameraForm.vue` offers for ANPR cameras. No stored camera and no reachable form
|
|
14
|
+
is refused. Whether `visitors` and `residents` are directions at all is a product question; dropping
|
|
15
|
+
them later is a zero-row migration.
|
package/dist/index.d.ts
CHANGED
|
@@ -3504,6 +3504,22 @@ declare function wallConfig(env?: Record<string, string | undefined>): {
|
|
|
3504
3504
|
singlePollMs: number;
|
|
3505
3505
|
/** The 3x3 ceiling, enforced here as well as in the client's layout list. */
|
|
3506
3506
|
maxTiles: number;
|
|
3507
|
+
/**
|
|
3508
|
+
* How many cameras ONE health sweep may cover.
|
|
3509
|
+
*
|
|
3510
|
+
* Deliberately NOT `maxTiles`. A wall shows nine tiles because nine is what a
|
|
3511
|
+
* person can watch; health is a list question — "which of my cameras is
|
|
3512
|
+
* down" — and the answer for a 150-camera estate cannot be the first nine of
|
|
3513
|
+
* them. Capping health at the wall's layout meant no client could ever build
|
|
3514
|
+
* a site-wide health view, however it asked.
|
|
3515
|
+
*
|
|
3516
|
+
* It is still a cap, and a request past it is reported rather than silently
|
|
3517
|
+
* shortened. The fan-out is bounded by `maxConcurrentProbes` (below) and not
|
|
3518
|
+
* by this number: a sweep of 150 is still four probes in flight, and the
|
|
3519
|
+
* reachability half is cached per RECORDER, so 150 channels on twelve devices
|
|
3520
|
+
* is twelve connects, not 150.
|
|
3521
|
+
*/
|
|
3522
|
+
maxHealthCameras: number;
|
|
3507
3523
|
/** How many cameras a health sweep probes at once. */
|
|
3508
3524
|
maxConcurrentProbes: number;
|
|
3509
3525
|
/** Health changes slowly; N supervisors on one wall should be one probe. */
|
|
@@ -3565,6 +3581,26 @@ type TCameraHealthClaim = {
|
|
|
3565
3581
|
};
|
|
3566
3582
|
/** `null` means the probe never ran, which is a different answer from `false`. */
|
|
3567
3583
|
declare function cameraHealthClaim(reachable: boolean | null): TCameraHealthClaim;
|
|
3584
|
+
/**
|
|
3585
|
+
* Which cameras a health sweep will actually answer for, and whether it had to
|
|
3586
|
+
* leave any out.
|
|
3587
|
+
*
|
|
3588
|
+
* Split out from the service so the cap is assertable without a database: the
|
|
3589
|
+
* service half needs Atlas, this half is the whole decision.
|
|
3590
|
+
*
|
|
3591
|
+
* Invalid ids are dropped before the cap is applied, so a caller that sends
|
|
3592
|
+
* rubbish does not lose real cameras to it. Duplicates are collapsed for the
|
|
3593
|
+
* same reason — the same camera twice must not cost another camera its place.
|
|
3594
|
+
*
|
|
3595
|
+
* `truncated` exists so the caller can say "showing 200 of 240" instead of
|
|
3596
|
+
* quietly presenting a partial answer as a complete one, which is the failure
|
|
3597
|
+
* this replaced.
|
|
3598
|
+
*/
|
|
3599
|
+
declare function selectHealthTargets(cameraIds: Array<string>, cap: number, isValidId: (id: string) => boolean): {
|
|
3600
|
+
ids: Array<string>;
|
|
3601
|
+
requested: number;
|
|
3602
|
+
truncated: boolean;
|
|
3603
|
+
};
|
|
3568
3604
|
|
|
3569
3605
|
/**
|
|
3570
3606
|
* What a camera can actually do RIGHT NOW, and which transport would do it.
|
|
@@ -4114,6 +4150,7 @@ declare function useCameraViewService(): {
|
|
|
4114
4150
|
snapshotPollMs: number;
|
|
4115
4151
|
singlePollMs: number;
|
|
4116
4152
|
maxTiles: number;
|
|
4153
|
+
maxHealthCameras: number;
|
|
4117
4154
|
maxConcurrentProbes: number;
|
|
4118
4155
|
healthCacheSeconds: number;
|
|
4119
4156
|
};
|
|
@@ -4158,6 +4195,9 @@ declare function useCameraViewService(): {
|
|
|
4158
4195
|
lastFrameAt: string | null;
|
|
4159
4196
|
unavailableReason: string | null;
|
|
4160
4197
|
})[];
|
|
4198
|
+
requested: number;
|
|
4199
|
+
returned: number;
|
|
4200
|
+
truncated: boolean;
|
|
4161
4201
|
}>;
|
|
4162
4202
|
movePtz: (params: {
|
|
4163
4203
|
cameraId: string;
|
|
@@ -12104,7 +12144,28 @@ declare enum ConsoleAuditAction {
|
|
|
12104
12144
|
* switchable off by us. See `updateById` in `site-camera.controller.ts` for
|
|
12105
12145
|
* the boundary that allows it and nothing else.
|
|
12106
12146
|
*/
|
|
12107
|
-
CAMERA_STATUS_CHANGED = "camera.status-changed"
|
|
12147
|
+
CAMERA_STATUS_CHANGED = "camera.status-changed",
|
|
12148
|
+
/**
|
|
12149
|
+
* A camera being added, edited or removed BY THE SITE'S OWN PEOPLE.
|
|
12150
|
+
*
|
|
12151
|
+
* The three below are the answer to "who changed this camera's address, and
|
|
12152
|
+
* when" - a question that had no answer anywhere in the system. A camera
|
|
12153
|
+
* record carries `createdAt`/`updatedAt` and no actor, and a write overwrites
|
|
12154
|
+
* the previous `host` in place, so a wrong port number could only be traced by
|
|
12155
|
+
* asking people what they remembered doing. At Seventh Condominium that turned
|
|
12156
|
+
* a one-line correction into nine days.
|
|
12157
|
+
*
|
|
12158
|
+
* This is a widening of what the collection holds: `CAMERA_STATUS_CHANGED` is
|
|
12159
|
+
* a Seven365 STAFF action, and these are tenant actions. That is deliberate.
|
|
12160
|
+
* The console is where an operator goes to answer exactly this question, the
|
|
12161
|
+
* row already carries `actor`, `target` and `createdAt`, and the alternative -
|
|
12162
|
+
* a second audit collection with its own repository, model and indexes - is
|
|
12163
|
+
* more moving parts for the same row. Nothing existing changes: the collection
|
|
12164
|
+
* is append-only and every reader filters by `action`.
|
|
12165
|
+
*/
|
|
12166
|
+
CAMERA_ADDED = "camera.added",
|
|
12167
|
+
CAMERA_UPDATED = "camera.updated",
|
|
12168
|
+
CAMERA_REMOVED = "camera.removed"
|
|
12108
12169
|
}
|
|
12109
12170
|
/**
|
|
12110
12171
|
* The three actions that live in `organization.controller.ts`.
|
|
@@ -12821,4 +12882,4 @@ declare function useNotificationPreferenceController(): {
|
|
|
12821
12882
|
update: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
12822
12883
|
};
|
|
12823
12884
|
|
|
12824
|
-
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_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, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, LIVE_ROLE, MAX_BULK_CAMERA_ROWS, MAX_CAMERA_CHANNEL, MAX_CAMERA_NAME_LENGTH, 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, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolEmail, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, 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, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, 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, 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_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, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TNotificationPreference, TNotificationPreferenceOff, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolEmail, TPatrolEmailCreatedBy, TPatrolEmailLogRef, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, 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, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideServiceProviderInvite, decodeHidPacsCard, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, encodeHidPacsCard, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hasOrgInvitation, hidRawUint64, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isDuplicateVersionError, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSafeRelativePath, isSuperAdmin, isTermsCurrent, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, planBulkCameraImport, platform_terms_namespace_collection, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, renderPagePdf, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, 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, 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, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, 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, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolEmailController, usePatrolEmailRepo, usePatrolEmailService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, 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 };
|
|
12885
|
+
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_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, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, LIVE_ROLE, MAX_BULK_CAMERA_ROWS, MAX_CAMERA_CHANNEL, MAX_CAMERA_NAME_LENGTH, 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, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolEmail, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, 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, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, 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, 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_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, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TNotificationPreference, TNotificationPreferenceOff, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolEmail, TPatrolEmailCreatedBy, TPatrolEmailLogRef, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, 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, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideServiceProviderInvite, decodeHidPacsCard, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, encodeHidPacsCard, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hasOrgInvitation, hidRawUint64, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isDuplicateVersionError, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSafeRelativePath, isSuperAdmin, isTermsCurrent, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, planBulkCameraImport, platform_terms_namespace_collection, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, renderPagePdf, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, 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, 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, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, selectHealthTargets, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, 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, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolEmailController, usePatrolEmailRepo, usePatrolEmailService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, 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 };
|
package/dist/index.js
CHANGED
|
@@ -6377,6 +6377,7 @@ __export(src_exports, {
|
|
|
6377
6377
|
schemaVisitorTransaction: () => schemaVisitorTransaction,
|
|
6378
6378
|
schemeCamera: () => schemeCamera,
|
|
6379
6379
|
schemeLogCamera: () => schemeLogCamera,
|
|
6380
|
+
selectHealthTargets: () => selectHealthTargets,
|
|
6380
6381
|
serviceProviderInviteLabel: () => serviceProviderInviteLabel,
|
|
6381
6382
|
sessionSchema: () => sessionSchema,
|
|
6382
6383
|
setIO: () => setIO,
|
|
@@ -19414,14 +19415,47 @@ var schemaUpdateSiteCamera = import_joi20.default.object({
|
|
|
19414
19415
|
* write callers in the estate (layer-common `CameraForm.vue` and
|
|
19415
19416
|
* `iservice365-mobile-app-security`) offer exactly those values.
|
|
19416
19417
|
*
|
|
19417
|
-
* `direction` is
|
|
19418
|
-
*
|
|
19419
|
-
*
|
|
19420
|
-
*
|
|
19418
|
+
* `direction` is now `.valid()` too, but over a WIDER set than the intended
|
|
19419
|
+
* one - deliberately, because tightening to the intended set alone would
|
|
19420
|
+
* break a live form.
|
|
19421
|
+
*
|
|
19422
|
+
* Measured read-only on the staging `site.cameras` collection on 2026-08-28,
|
|
19423
|
+
* all 22 rows, no nulls and no missing field:
|
|
19424
|
+
*
|
|
19425
|
+
* none 13 (all type:ip) both 6 (4 anpr, 2 ip) entry 2 (anpr) exit 1 (anpr)
|
|
19426
|
+
*
|
|
19427
|
+
* So every stored value is inside `entry|exit|both|none` and no real row
|
|
19428
|
+
* would be rejected by the narrow set. The write callers are the problem, not
|
|
19429
|
+
* the data. Swept by path across the org, not by credential:
|
|
19430
|
+
*
|
|
19431
|
+
* - layer-common `CameraForm.vue` (LIVE, the camera add/edit form) offers
|
|
19432
|
+
* five ANPR options: entry, exit, both, **visitors**, **residents**. The
|
|
19433
|
+
* last two are outside the intended set and are held by 0 of 22 rows -
|
|
19434
|
+
* nobody has ever picked them - but the options are on screen today, so the
|
|
19435
|
+
* narrow set would turn two of five into a 400.
|
|
19436
|
+
* - `iservice365-web-app-security` `VehicleCameraSettingAdd.vue` offers a
|
|
19437
|
+
* third vocabulary entirely (approach, depart, both). It is an ORPHAN: the
|
|
19438
|
+
* string `VehicleCameraSetting` appears nowhere else in that repository on
|
|
19439
|
+
* `staging` or `main`, so no page or component can mount it and no user can
|
|
19440
|
+
* reach it. `approach`/`depart` are therefore NOT accepted here.
|
|
19441
|
+
* - the bulk import (`site-camera.controller.ts` `addBulk`) always writes
|
|
19442
|
+
* `direction: "none"`.
|
|
19443
|
+
*
|
|
19444
|
+
* So the set below is: what real data holds, plus what a reachable form can
|
|
19445
|
+
* actually send. That is still a genuine tightening - `.allow()` on a
|
|
19446
|
+
* `Joi.string()` accepts EVERY non-empty string, including a 10 MB one - and
|
|
19447
|
+
* it breaks nothing.
|
|
19448
|
+
*
|
|
19449
|
+
* **Follow-up for product:** are "visitors" and "residents" directions at
|
|
19450
|
+
* all, or lane designations that belong in a different field? If they should
|
|
19451
|
+
* not be offered, removing them from `CameraForm.vue` and dropping the two
|
|
19452
|
+
* entries here is a one-line change with a **zero-row** migration, because no
|
|
19453
|
+
* stored camera uses either. Until someone answers that, refusing them would
|
|
19454
|
+
* be breaking a form on a guess.
|
|
19421
19455
|
*/
|
|
19422
19456
|
category: import_joi20.default.string().valid("standard", "resident", "visitor").required(),
|
|
19423
19457
|
guardPost: import_joi20.default.number().integer().optional(),
|
|
19424
|
-
direction: import_joi20.default.string().optional().
|
|
19458
|
+
direction: import_joi20.default.string().optional().valid("entry", "exit", "both", "none", "visitors", "residents"),
|
|
19425
19459
|
status: import_joi20.default.string().optional().valid("active", "inactive", "deleted"),
|
|
19426
19460
|
name: import_joi20.default.string().optional().allow(null, "")
|
|
19427
19461
|
});
|
|
@@ -19455,9 +19489,9 @@ var schemaSiteCamera = import_joi20.default.object({
|
|
|
19455
19489
|
* today. Every client in the estate already sends the lower-case pair.
|
|
19456
19490
|
*/
|
|
19457
19491
|
type: import_joi20.default.string().trim().lowercase().valid("ip", "anpr").required(),
|
|
19458
|
-
/** See the note on `schemaUpdateSiteCamera` for
|
|
19492
|
+
/** See the note on `schemaUpdateSiteCamera` for the `direction` set and why it is wider than the intended one. */
|
|
19459
19493
|
category: import_joi20.default.string().valid("standard", "resident", "visitor").required(),
|
|
19460
|
-
direction: import_joi20.default.string().required().
|
|
19494
|
+
direction: import_joi20.default.string().required().valid("entry", "exit", "both", "none", "visitors", "residents"),
|
|
19461
19495
|
guardPost: import_joi20.default.number().integer().optional(),
|
|
19462
19496
|
status: import_joi20.default.string().optional().valid("active", "inactive", "deleted"),
|
|
19463
19497
|
name: import_joi20.default.string().optional().allow(null, ""),
|
|
@@ -24184,6 +24218,22 @@ function wallConfig(env2 = globalThis?.process?.env ?? {}) {
|
|
|
24184
24218
|
singlePollMs: positiveNumber(env2.CAMERA_SINGLE_POLL_MS, 2e3),
|
|
24185
24219
|
/** The 3x3 ceiling, enforced here as well as in the client's layout list. */
|
|
24186
24220
|
maxTiles: positiveNumber(env2.CAMERA_WALL_MAX_TILES, 9),
|
|
24221
|
+
/**
|
|
24222
|
+
* How many cameras ONE health sweep may cover.
|
|
24223
|
+
*
|
|
24224
|
+
* Deliberately NOT `maxTiles`. A wall shows nine tiles because nine is what a
|
|
24225
|
+
* person can watch; health is a list question — "which of my cameras is
|
|
24226
|
+
* down" — and the answer for a 150-camera estate cannot be the first nine of
|
|
24227
|
+
* them. Capping health at the wall's layout meant no client could ever build
|
|
24228
|
+
* a site-wide health view, however it asked.
|
|
24229
|
+
*
|
|
24230
|
+
* It is still a cap, and a request past it is reported rather than silently
|
|
24231
|
+
* shortened. The fan-out is bounded by `maxConcurrentProbes` (below) and not
|
|
24232
|
+
* by this number: a sweep of 150 is still four probes in flight, and the
|
|
24233
|
+
* reachability half is cached per RECORDER, so 150 channels on twelve devices
|
|
24234
|
+
* is twelve connects, not 150.
|
|
24235
|
+
*/
|
|
24236
|
+
maxHealthCameras: positiveNumber(env2.CAMERA_HEALTH_MAX_CAMERAS, 200),
|
|
24187
24237
|
/** How many cameras a health sweep probes at once. */
|
|
24188
24238
|
maxConcurrentProbes: positiveNumber(env2.CAMERA_WALL_MAX_CONCURRENT_PROBES, 4),
|
|
24189
24239
|
/** Health changes slowly; N supervisors on one wall should be one probe. */
|
|
@@ -24224,6 +24274,21 @@ function cameraHealthClaim(reachable) {
|
|
|
24224
24274
|
relayVerified: null
|
|
24225
24275
|
};
|
|
24226
24276
|
}
|
|
24277
|
+
function selectHealthTargets(cameraIds, cap, isValidId) {
|
|
24278
|
+
const seen = /* @__PURE__ */ new Set();
|
|
24279
|
+
for (const id of cameraIds ?? []) {
|
|
24280
|
+
const trimmed = typeof id === "string" ? id.trim() : "";
|
|
24281
|
+
if (trimmed && isValidId(trimmed))
|
|
24282
|
+
seen.add(trimmed);
|
|
24283
|
+
}
|
|
24284
|
+
const unique = Array.from(seen);
|
|
24285
|
+
const limit = Number.isFinite(cap) && cap > 0 ? Math.floor(cap) : unique.length;
|
|
24286
|
+
return {
|
|
24287
|
+
ids: unique.slice(0, limit),
|
|
24288
|
+
requested: unique.length,
|
|
24289
|
+
truncated: unique.length > limit
|
|
24290
|
+
};
|
|
24291
|
+
}
|
|
24227
24292
|
|
|
24228
24293
|
// src/utils/camera-capability.util.ts
|
|
24229
24294
|
var CAMERA_CAPABILITIES = [
|
|
@@ -25559,9 +25624,14 @@ function useCameraViewService() {
|
|
|
25559
25624
|
async function getSiteHealth(params) {
|
|
25560
25625
|
const { siteObjectId, db: db2 } = await authorizeSite(params);
|
|
25561
25626
|
const config2 = wallConfig();
|
|
25562
|
-
const wanted
|
|
25563
|
-
|
|
25564
|
-
|
|
25627
|
+
const { ids: wanted, requested, truncated } = selectHealthTargets(
|
|
25628
|
+
params.cameraIds,
|
|
25629
|
+
config2.maxHealthCameras,
|
|
25630
|
+
(id) => import_mongodb45.ObjectId.isValid(id)
|
|
25631
|
+
);
|
|
25632
|
+
if (wanted.length === 0) {
|
|
25633
|
+
return { cameras: [], requested, returned: 0, truncated };
|
|
25634
|
+
}
|
|
25565
25635
|
const cameras = await db2.collection("site.cameras").find({
|
|
25566
25636
|
...PATROL_CCTV_CAMERA_FILTER,
|
|
25567
25637
|
_id: { $in: wanted.map((id) => new import_mongodb45.ObjectId(id)) },
|
|
@@ -25572,7 +25642,7 @@ function useCameraViewService() {
|
|
|
25572
25642
|
config2.maxConcurrentProbes,
|
|
25573
25643
|
(camera) => probeCamera(camera, config2.healthCacheSeconds)
|
|
25574
25644
|
);
|
|
25575
|
-
return { cameras: results };
|
|
25645
|
+
return { cameras: results, requested, returned: results.length, truncated };
|
|
25576
25646
|
}
|
|
25577
25647
|
async function probeCamera(camera, cacheSeconds) {
|
|
25578
25648
|
const id = camera?._id?.toString?.() ?? "";
|
|
@@ -27729,6 +27799,9 @@ var ConsoleAuditAction = /* @__PURE__ */ ((ConsoleAuditAction3) => {
|
|
|
27729
27799
|
ConsoleAuditAction3["PLAN_STATUS_CHANGED"] = "plan.status-changed";
|
|
27730
27800
|
ConsoleAuditAction3["TERMS_PUBLISHED"] = "terms.published";
|
|
27731
27801
|
ConsoleAuditAction3["CAMERA_STATUS_CHANGED"] = "camera.status-changed";
|
|
27802
|
+
ConsoleAuditAction3["CAMERA_ADDED"] = "camera.added";
|
|
27803
|
+
ConsoleAuditAction3["CAMERA_UPDATED"] = "camera.updated";
|
|
27804
|
+
ConsoleAuditAction3["CAMERA_REMOVED"] = "camera.removed";
|
|
27732
27805
|
return ConsoleAuditAction3;
|
|
27733
27806
|
})(ConsoleAuditAction || {});
|
|
27734
27807
|
var CLIENT_ACTIONS = [
|
|
@@ -27750,7 +27823,10 @@ var CONSOLE_AUDIT_LABELS = {
|
|
|
27750
27823
|
["plan.updated" /* PLAN_UPDATED */]: "Plan edited",
|
|
27751
27824
|
["plan.status-changed" /* PLAN_STATUS_CHANGED */]: "Plan enabled or disabled",
|
|
27752
27825
|
["terms.published" /* TERMS_PUBLISHED */]: "Platform Terms published",
|
|
27753
|
-
["camera.status-changed" /* CAMERA_STATUS_CHANGED */]: "Camera switched on or off by Seven365 staff"
|
|
27826
|
+
["camera.status-changed" /* CAMERA_STATUS_CHANGED */]: "Camera switched on or off by Seven365 staff",
|
|
27827
|
+
["camera.added" /* CAMERA_ADDED */]: "Camera added",
|
|
27828
|
+
["camera.updated" /* CAMERA_UPDATED */]: "Camera settings changed",
|
|
27829
|
+
["camera.removed" /* CAMERA_REMOVED */]: "Camera removed"
|
|
27754
27830
|
};
|
|
27755
27831
|
var ConsoleAuditTarget = /* @__PURE__ */ ((ConsoleAuditTarget2) => {
|
|
27756
27832
|
ConsoleAuditTarget2["ORGANIZATION"] = "organization";
|
|
@@ -27761,6 +27837,15 @@ var ConsoleAuditTarget = /* @__PURE__ */ ((ConsoleAuditTarget2) => {
|
|
|
27761
27837
|
ConsoleAuditTarget2["CAMERA"] = "camera";
|
|
27762
27838
|
return ConsoleAuditTarget2;
|
|
27763
27839
|
})(ConsoleAuditTarget || {});
|
|
27840
|
+
var CAMERA_AUDIT_FIELDS = [
|
|
27841
|
+
"name",
|
|
27842
|
+
"host",
|
|
27843
|
+
"type",
|
|
27844
|
+
"category",
|
|
27845
|
+
"direction",
|
|
27846
|
+
"status",
|
|
27847
|
+
"guardPost"
|
|
27848
|
+
];
|
|
27764
27849
|
var AUDIT_FIELDS = {
|
|
27765
27850
|
["subscription.created" /* SUBSCRIPTION_CREATED */]: [
|
|
27766
27851
|
"plan",
|
|
@@ -27826,7 +27911,19 @@ var AUDIT_FIELDS = {
|
|
|
27826
27911
|
// `status` only. Not the host, not the username, not the password - the whole
|
|
27827
27912
|
// point of the staff camera path is that it may change nothing else, and the
|
|
27828
27913
|
// audit row must not become the place a device credential is copied to.
|
|
27829
|
-
["camera.status-changed" /* CAMERA_STATUS_CHANGED */]: ["status"]
|
|
27914
|
+
["camera.status-changed" /* CAMERA_STATUS_CHANGED */]: ["status"],
|
|
27915
|
+
/**
|
|
27916
|
+
* What a camera row may carry - and, far more importantly, what it may not.
|
|
27917
|
+
*
|
|
27918
|
+
* `host` is the whole point: it is the address that was wrong at Seventh
|
|
27919
|
+
* Condominium. `username` and `password` are ABSENT and must stay absent: a
|
|
27920
|
+
* camera document holds a device credential, and an audit trail is exactly the
|
|
27921
|
+
* place a credential must never be copied into. The allow-list is what
|
|
27922
|
+
* guarantees that even if a handler later hands the whole record over.
|
|
27923
|
+
*/
|
|
27924
|
+
["camera.added" /* CAMERA_ADDED */]: CAMERA_AUDIT_FIELDS,
|
|
27925
|
+
["camera.updated" /* CAMERA_UPDATED */]: CAMERA_AUDIT_FIELDS,
|
|
27926
|
+
["camera.removed" /* CAMERA_REMOVED */]: CAMERA_AUDIT_FIELDS
|
|
27830
27927
|
};
|
|
27831
27928
|
var AUDIT_VALUE_MAX_LENGTH = 120;
|
|
27832
27929
|
function auditValue(value) {
|
|
@@ -40000,7 +40097,21 @@ function useSiteCameraController() {
|
|
|
40000
40097
|
return null;
|
|
40001
40098
|
return await _findOne(
|
|
40002
40099
|
{ _id: new import_mongodb73.ObjectId(id) },
|
|
40003
|
-
|
|
40100
|
+
// `name`, `direction`, `status` and `guardPost` are read for the audit
|
|
40101
|
+
// row's `before` - without them "the address changed" cannot be told from
|
|
40102
|
+
// "the whole camera was reconfigured". `username` and `password` are still
|
|
40103
|
+
// never loaded: a device credential has no business being read to edit a
|
|
40104
|
+
// camera, and must never reach an audit row.
|
|
40105
|
+
{
|
|
40106
|
+
site: 1,
|
|
40107
|
+
type: 1,
|
|
40108
|
+
host: 1,
|
|
40109
|
+
category: 1,
|
|
40110
|
+
name: 1,
|
|
40111
|
+
direction: 1,
|
|
40112
|
+
status: 1,
|
|
40113
|
+
guardPost: 1
|
|
40114
|
+
}
|
|
40004
40115
|
);
|
|
40005
40116
|
}
|
|
40006
40117
|
function staffUpdate(camera, status) {
|
|
@@ -40047,6 +40158,13 @@ function useSiteCameraController() {
|
|
|
40047
40158
|
notFound: "Site not found."
|
|
40048
40159
|
});
|
|
40049
40160
|
const vehicle = await _add(value);
|
|
40161
|
+
await recordConsoleAction({
|
|
40162
|
+
action: "camera.added" /* CAMERA_ADDED */,
|
|
40163
|
+
actor: callerId4(req) ?? "",
|
|
40164
|
+
target: String(vehicle?._id ?? ""),
|
|
40165
|
+
targetType: "camera" /* CAMERA */,
|
|
40166
|
+
after: pickAuditFields("camera.added" /* CAMERA_ADDED */, value)
|
|
40167
|
+
});
|
|
40050
40168
|
res.status(201).json({
|
|
40051
40169
|
message: "ANPR(s) added successfully.",
|
|
40052
40170
|
data: { vehicle }
|
|
@@ -40203,6 +40321,15 @@ function useSiteCameraController() {
|
|
|
40203
40321
|
status: value.status
|
|
40204
40322
|
})
|
|
40205
40323
|
});
|
|
40324
|
+
} else {
|
|
40325
|
+
await recordConsoleAction({
|
|
40326
|
+
action: "camera.updated" /* CAMERA_UPDATED */,
|
|
40327
|
+
actor: callerId4(req) ?? "",
|
|
40328
|
+
target: id,
|
|
40329
|
+
targetType: "camera" /* CAMERA */,
|
|
40330
|
+
before: pickAuditFields("camera.updated" /* CAMERA_UPDATED */, camera),
|
|
40331
|
+
after: pickAuditFields("camera.updated" /* CAMERA_UPDATED */, update)
|
|
40332
|
+
});
|
|
40206
40333
|
}
|
|
40207
40334
|
res.json({
|
|
40208
40335
|
message
|
|
@@ -40232,6 +40359,13 @@ function useSiteCameraController() {
|
|
|
40232
40359
|
notFound: "Camera not found."
|
|
40233
40360
|
});
|
|
40234
40361
|
const message = await _deleteById(id);
|
|
40362
|
+
await recordConsoleAction({
|
|
40363
|
+
action: "camera.removed" /* CAMERA_REMOVED */,
|
|
40364
|
+
actor: callerId4(req) ?? "",
|
|
40365
|
+
target: id,
|
|
40366
|
+
targetType: "camera" /* CAMERA */,
|
|
40367
|
+
before: pickAuditFields("camera.removed" /* CAMERA_REMOVED */, camera)
|
|
40368
|
+
});
|
|
40235
40369
|
res.json({
|
|
40236
40370
|
message
|
|
40237
40371
|
});
|
|
@@ -90408,6 +90542,7 @@ function useNotificationPreferenceController() {
|
|
|
90408
90542
|
schemaVisitorTransaction,
|
|
90409
90543
|
schemeCamera,
|
|
90410
90544
|
schemeLogCamera,
|
|
90545
|
+
selectHealthTargets,
|
|
90411
90546
|
serviceProviderInviteLabel,
|
|
90412
90547
|
sessionSchema,
|
|
90413
90548
|
setIO,
|