@7365admin1/core 3.75.0 → 3.76.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 +64 -3
- package/dist/index.js +150 -18
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +148 -18
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/test/camera-live-link.test.mjs +163 -0
- package/test/default-staff-role.test.mjs +1 -1
- package/test/e2e/client-invite-service365.e2e.test.mjs +57 -0
- package/test/service-app-type.test.mjs +35 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @iservice365/core
|
|
2
2
|
|
|
3
|
+
## 3.76.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- bf1a7ac: Sign the camera relay's LIVE view link, the same way recorded footage is already signed
|
|
8
|
+
|
|
9
|
+
The relay's live routes (player page, stream socket, screenshot, clip) had no authorization at
|
|
10
|
+
all. The camera payloads this server returns now carry a signed `liveUrl` and a reusable
|
|
11
|
+
`liveAuth` (`exp=&sig=`), HMAC-SHA256 over `channel|exp` with the same PLAYBACK_SIGNING_KEY and
|
|
12
|
+
the same 120-second lifetime as a playback link. The stored `camera.host` is deliberately left
|
|
13
|
+
untouched: a query string there would switch off the liveVideo capability and would be frozen
|
|
14
|
+
into patrol-route documents. A camera whose relay is not configured is unchanged.
|
|
15
|
+
|
|
16
|
+
## 3.75.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- da435e7: Membership and role lookups by type match every stored spelling of an application: a Property Management lookup finds rows stored as `real_estate_developer` (written before 3.75.0) as well as `property_management_agency`, including the module deny list and the owner-grant cap.
|
|
21
|
+
|
|
3
22
|
## 3.75.0
|
|
4
23
|
|
|
5
24
|
### Minor 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;
|
|
@@ -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
|
|
@@ -3983,6 +3985,20 @@ function serviceAppType(type) {
|
|
|
3983
3985
|
return type;
|
|
3984
3986
|
return APP_TYPE_ALIASES[type] ?? type;
|
|
3985
3987
|
}
|
|
3988
|
+
function storedAppTypes(type) {
|
|
3989
|
+
const app = serviceAppType(type);
|
|
3990
|
+
return [
|
|
3991
|
+
app,
|
|
3992
|
+
...Object.keys(APP_TYPE_ALIASES).filter((alias) => APP_TYPE_ALIASES[alias] === app)
|
|
3993
|
+
];
|
|
3994
|
+
}
|
|
3995
|
+
function appTypeQuery(type) {
|
|
3996
|
+
const types = storedAppTypes(type);
|
|
3997
|
+
return types.length === 1 ? types[0] : { $in: types };
|
|
3998
|
+
}
|
|
3999
|
+
function sameAppType(a, b) {
|
|
4000
|
+
return !!a && !!b && serviceAppType(a) === serviceAppType(b);
|
|
4001
|
+
}
|
|
3986
4002
|
|
|
3987
4003
|
// src/repositories/member.repo.ts
|
|
3988
4004
|
var import_node_server_utils14 = require("@7365admin1/node-server-utils");
|
|
@@ -4280,7 +4296,7 @@ function useMemberRepo() {
|
|
|
4280
4296
|
return cachedData;
|
|
4281
4297
|
}
|
|
4282
4298
|
try {
|
|
4283
|
-
const data = await collection.findOne({ user, type });
|
|
4299
|
+
const data = await collection.findOne({ user, type: appTypeQuery(type) });
|
|
4284
4300
|
if (!data) {
|
|
4285
4301
|
throw new import_node_server_utils14.NotFoundError("Member not found.");
|
|
4286
4302
|
}
|
|
@@ -4424,7 +4440,7 @@ function useMemberRepo() {
|
|
|
4424
4440
|
search = search || "";
|
|
4425
4441
|
page = page > 0 ? page - 1 : 0;
|
|
4426
4442
|
const query2 = {
|
|
4427
|
-
type:
|
|
4443
|
+
type: type ? appTypeQuery(type) : type,
|
|
4428
4444
|
status
|
|
4429
4445
|
};
|
|
4430
4446
|
const cacheOptions = {
|
|
@@ -4553,7 +4569,7 @@ function useMemberRepo() {
|
|
|
4553
4569
|
const query2 = {
|
|
4554
4570
|
user,
|
|
4555
4571
|
org: { $nin: [null, ""] },
|
|
4556
|
-
type
|
|
4572
|
+
type: appTypeQuery(type)
|
|
4557
4573
|
};
|
|
4558
4574
|
const cacheOptions = {
|
|
4559
4575
|
page,
|
|
@@ -4970,7 +4986,7 @@ function useMemberRepo() {
|
|
|
4970
4986
|
try {
|
|
4971
4987
|
const data = await collection.findOne({
|
|
4972
4988
|
user,
|
|
4973
|
-
type,
|
|
4989
|
+
type: appTypeQuery(type),
|
|
4974
4990
|
org
|
|
4975
4991
|
});
|
|
4976
4992
|
if (!data) {
|
|
@@ -10548,7 +10564,7 @@ function pickSiteMembership(rows, type, site, org = "") {
|
|
|
10548
10564
|
if (!site)
|
|
10549
10565
|
return null;
|
|
10550
10566
|
const live = rows.filter(
|
|
10551
|
-
(m) => m.type
|
|
10567
|
+
(m) => sameAppType(m.type, type) && isLiveMembership(m) && (!org || idOf2(m.org) === org)
|
|
10552
10568
|
);
|
|
10553
10569
|
const atSite = live.find((m) => idOf2(m.siteId) === site);
|
|
10554
10570
|
if (atSite)
|
|
@@ -10562,10 +10578,10 @@ function pickLookupMembership(rows, type, site = "", org = "") {
|
|
|
10562
10578
|
const atSite = site ? pickSiteMembership(list, type, site, org) : null;
|
|
10563
10579
|
if (atSite)
|
|
10564
10580
|
return atSite;
|
|
10565
|
-
const inOrg = org ? list.find((m) => m.type
|
|
10581
|
+
const inOrg = org ? list.find((m) => sameAppType(m.type, type) && idOf2(m.org) === org.toLowerCase()) : void 0;
|
|
10566
10582
|
if (inOrg && isLiveMembership(inOrg))
|
|
10567
10583
|
return inOrg;
|
|
10568
|
-
return list.find((m) => m.type
|
|
10584
|
+
return list.find((m) => sameAppType(m.type, type)) ?? null;
|
|
10569
10585
|
}
|
|
10570
10586
|
function memberListSiteScope(memberships, org) {
|
|
10571
10587
|
const inOrg = (memberships ?? []).filter((m) => idOf2(m.org) === idOf2(org));
|
|
@@ -12518,7 +12534,7 @@ function useRoleRepo() {
|
|
|
12518
12534
|
return cachedData;
|
|
12519
12535
|
}
|
|
12520
12536
|
try {
|
|
12521
|
-
const data = await collection.find({ org, permissions: "*", type, status: "active" }).toArray();
|
|
12537
|
+
const data = await collection.find({ org, permissions: "*", type: appTypeQuery(type), status: "active" }).toArray();
|
|
12522
12538
|
setCache(cacheKey, data, 15 * 60).then(() => {
|
|
12523
12539
|
import_node_server_utils42.logger.info(`Cache set for key: ${cacheKey}`);
|
|
12524
12540
|
}).catch((err) => {
|
|
@@ -12558,7 +12574,7 @@ function useRoleRepo() {
|
|
|
12558
12574
|
throw new import_node_server_utils42.BadRequestError("Role name is required.");
|
|
12559
12575
|
}
|
|
12560
12576
|
type = serviceAppType(type);
|
|
12561
|
-
const query2 = type ? { name, type } : { name };
|
|
12577
|
+
const query2 = type ? { name, type: appTypeQuery(type) } : { name };
|
|
12562
12578
|
try {
|
|
12563
12579
|
const cacheKey = (0, import_node_server_utils42.makeCacheKey)(namespace_collection3, query2);
|
|
12564
12580
|
const cachedData = await getCache(cacheKey);
|
|
@@ -12614,8 +12630,8 @@ function useRoleRepo() {
|
|
|
12614
12630
|
cacheOptions.search = search;
|
|
12615
12631
|
}
|
|
12616
12632
|
if (type) {
|
|
12617
|
-
query2.type =
|
|
12618
|
-
cacheOptions.type =
|
|
12633
|
+
query2.type = appTypeQuery(type);
|
|
12634
|
+
cacheOptions.type = serviceAppType(type);
|
|
12619
12635
|
}
|
|
12620
12636
|
const cacheKey = (0, import_node_server_utils42.makeCacheKey)(namespace_collection3, cacheOptions);
|
|
12621
12637
|
const cachedData = await getCache(cacheKey);
|
|
@@ -15326,12 +15342,11 @@ async function ownerGrantCeiling(org, type) {
|
|
|
15326
15342
|
return null;
|
|
15327
15343
|
try {
|
|
15328
15344
|
const orgDoc = await useOrgRepo().getById(orgId).catch(() => null);
|
|
15329
|
-
|
|
15330
|
-
if (!orgDoc?.invitedRole || appType !== type)
|
|
15345
|
+
if (!orgDoc?.invitedRole || !sameAppType(orgDoc?.nature, type))
|
|
15331
15346
|
return null;
|
|
15332
15347
|
const role = await useRoleRepo().getRoleById(String(orgDoc.invitedRole)).catch(() => null);
|
|
15333
15348
|
const permissions = role?.permissions;
|
|
15334
|
-
const chosen = role && String(role.org ?? "") === orgId && role.default === true && role.type
|
|
15349
|
+
const chosen = role && String(role.org ?? "") === orgId && role.default === true && sameAppType(role.type, type) && Array.isArray(permissions) && permissions.length > 0 && !permissions.includes("*");
|
|
15335
15350
|
return chosen ? permissions.map(String) : null;
|
|
15336
15351
|
} catch {
|
|
15337
15352
|
return null;
|
|
@@ -21854,6 +21869,37 @@ function signPlaybackLink(params) {
|
|
|
21854
21869
|
expiresAt: new Date(exp * 1e3).toISOString()
|
|
21855
21870
|
};
|
|
21856
21871
|
}
|
|
21872
|
+
function signLiveLink(host, {
|
|
21873
|
+
relays = playbackRelays(),
|
|
21874
|
+
now = /* @__PURE__ */ new Date()
|
|
21875
|
+
} = {}) {
|
|
21876
|
+
const parsed = host ? parseCameraHost(host) : null;
|
|
21877
|
+
if (!parsed || parsed.channel === null)
|
|
21878
|
+
return null;
|
|
21879
|
+
const key = relays[parsed.authority];
|
|
21880
|
+
if (!key)
|
|
21881
|
+
return null;
|
|
21882
|
+
const exp = Math.floor(now.getTime() / 1e3) + PLAYBACK_LINK_SECONDS;
|
|
21883
|
+
const channel = String(parsed.channel);
|
|
21884
|
+
const sig = (0, import_node_crypto2.createHmac)("sha256", key).update(`${channel}|${exp}`).digest("hex");
|
|
21885
|
+
const liveAuth = `exp=${exp}&sig=${sig}`;
|
|
21886
|
+
return {
|
|
21887
|
+
/** The player page, ready for an iframe or a WebView. */
|
|
21888
|
+
liveUrl: `https://${parsed.authority}/${channel}?${liveAuth}`,
|
|
21889
|
+
/**
|
|
21890
|
+
* The same signature, on its own, to append to any of the relay's live
|
|
21891
|
+
* routes — the socket, the still, the clip. One signature serves all four
|
|
21892
|
+
* because it covers the CHANNEL and not the path, which is what lets
|
|
21893
|
+
* `insertScreenshot` keep splicing `screenshot` into the path.
|
|
21894
|
+
*/
|
|
21895
|
+
liveAuth,
|
|
21896
|
+
liveExpiresAt: new Date(exp * 1e3).toISOString()
|
|
21897
|
+
};
|
|
21898
|
+
}
|
|
21899
|
+
function withLiveLink(fields, options) {
|
|
21900
|
+
const live = signLiveLink(fields.host, options);
|
|
21901
|
+
return live ? { ...fields, ...live } : fields;
|
|
21902
|
+
}
|
|
21857
21903
|
|
|
21858
21904
|
// src/utils/camera-capability.util.ts
|
|
21859
21905
|
var CAMERA_CAPABILITIES = [
|
|
@@ -23209,7 +23255,9 @@ function useCameraViewService() {
|
|
|
23209
23255
|
// player-page URL, which is the one picture path proven to work, and the
|
|
23210
23256
|
// plain `GET /site-cameras` already returns it to every authenticated
|
|
23211
23257
|
// caller. The credential fields are still never included.
|
|
23212
|
-
...
|
|
23258
|
+
...withLiveLink(
|
|
23259
|
+
publicCameraFields({ ...camera, siteName: site?.name })
|
|
23260
|
+
),
|
|
23213
23261
|
// Answered before anything is requested, so a camera with no address or
|
|
23214
23262
|
// an inactive one renders with a reason and costs zero device requests.
|
|
23215
23263
|
// (An ANPR unit never reaches here — it is filtered out above.)
|
|
@@ -23252,7 +23300,7 @@ function useCameraViewService() {
|
|
|
23252
23300
|
async function probeCamera(camera, cacheSeconds) {
|
|
23253
23301
|
const id = camera?._id?.toString?.() ?? "";
|
|
23254
23302
|
const identity = {
|
|
23255
|
-
...publicCameraFields(camera),
|
|
23303
|
+
...withLiveLink(publicCameraFields(camera)),
|
|
23256
23304
|
unavailableReason: snapshotRefusalReason(camera)
|
|
23257
23305
|
};
|
|
23258
23306
|
const lastFrameAt = await getCache(`lastframe:${id}`) || null;
|
|
@@ -23386,7 +23434,7 @@ function useCameraViewService() {
|
|
|
23386
23434
|
);
|
|
23387
23435
|
const { capabilities } = capabilitiesOf(camera, probe);
|
|
23388
23436
|
const base = {
|
|
23389
|
-
camera: publicCameraFields(camera),
|
|
23437
|
+
camera: withLiveLink(publicCameraFields(camera)),
|
|
23390
23438
|
snapshotSupported: refusal === null,
|
|
23391
23439
|
capabilities,
|
|
23392
23440
|
// Filled in from the probe when the device answers. Today it does not, so
|
|
@@ -26283,7 +26331,7 @@ function useOrgController() {
|
|
|
26283
26331
|
invitedModules?.permissions
|
|
26284
26332
|
);
|
|
26285
26333
|
const appOwnerRole = invitedModules?.permissions.length ? seededRoles.find(
|
|
26286
|
-
(role) => role.type
|
|
26334
|
+
(role) => sameAppType(role.type, body.nature) && role.name === "owner"
|
|
26287
26335
|
) : void 0;
|
|
26288
26336
|
if (appOwnerRole) {
|
|
26289
26337
|
try {
|
|
@@ -38421,6 +38469,87 @@ function useVehicleController() {
|
|
|
38421
38469
|
next(error);
|
|
38422
38470
|
}
|
|
38423
38471
|
}
|
|
38472
|
+
const MAX_BULK_VEHICLE_ROWS = 100;
|
|
38473
|
+
async function addBulk(req, res, next) {
|
|
38474
|
+
const rowSchema = import_joi57.default.object({
|
|
38475
|
+
// The sheet's own row id. Opaque to the server, handed straight back.
|
|
38476
|
+
id: import_joi57.default.string().trim().max(64).required(),
|
|
38477
|
+
block: import_joi57.default.string().hex().length(24).required(),
|
|
38478
|
+
level: import_joi57.default.string().hex().length(24).required(),
|
|
38479
|
+
unit: import_joi57.default.string().hex().length(24).required(),
|
|
38480
|
+
name: import_joi57.default.string().trim().min(1).required(),
|
|
38481
|
+
plateNumber: import_joi57.default.string().trim().min(1).required(),
|
|
38482
|
+
nric: import_joi57.default.string().trim().optional().allow("", null),
|
|
38483
|
+
phoneNumber: import_joi57.default.string().trim().optional().allow("", null)
|
|
38484
|
+
});
|
|
38485
|
+
const schema2 = import_joi57.default.object({
|
|
38486
|
+
site: import_joi57.default.string().hex().length(24).required(),
|
|
38487
|
+
org: import_joi57.default.string().hex().length(24).required(),
|
|
38488
|
+
category: import_joi57.default.string().optional().valid(...Object.values(VehicleCategory)).default("resident" /* RESIDENT */),
|
|
38489
|
+
rows: import_joi57.default.array().items(rowSchema).min(1).max(MAX_BULK_VEHICLE_ROWS).required()
|
|
38490
|
+
});
|
|
38491
|
+
const { error, value } = schema2.validate(req.body, { abortEarly: false });
|
|
38492
|
+
if (error) {
|
|
38493
|
+
const messages = error.details.map((d) => d.message).join(", ");
|
|
38494
|
+
import_node_server_utils121.logger.log({ level: "error", message: messages });
|
|
38495
|
+
next(new import_node_server_utils121.BadRequestError(messages));
|
|
38496
|
+
return;
|
|
38497
|
+
}
|
|
38498
|
+
try {
|
|
38499
|
+
await requireSiteReach(req, value.site);
|
|
38500
|
+
const user = req.user?.user || req.user?._id;
|
|
38501
|
+
const results = [];
|
|
38502
|
+
for (const row of value.rows) {
|
|
38503
|
+
try {
|
|
38504
|
+
const message = await _add(
|
|
38505
|
+
{
|
|
38506
|
+
site: value.site,
|
|
38507
|
+
org: value.org,
|
|
38508
|
+
type: "whitelist" /* WHITELIST */,
|
|
38509
|
+
category: value.category,
|
|
38510
|
+
name: row.name,
|
|
38511
|
+
nric: row.nric || "",
|
|
38512
|
+
phoneNumber: row.phoneNumber || "",
|
|
38513
|
+
block: row.block,
|
|
38514
|
+
level: row.level,
|
|
38515
|
+
unit: row.unit,
|
|
38516
|
+
plateNumber: [row.plateNumber]
|
|
38517
|
+
},
|
|
38518
|
+
void 0,
|
|
38519
|
+
user
|
|
38520
|
+
);
|
|
38521
|
+
results.push({
|
|
38522
|
+
id: row.id,
|
|
38523
|
+
ok: true,
|
|
38524
|
+
message: String(message ?? "Vehicle added successfully.")
|
|
38525
|
+
});
|
|
38526
|
+
} catch (rowError) {
|
|
38527
|
+
import_node_server_utils121.logger.log({
|
|
38528
|
+
level: "error",
|
|
38529
|
+
message: `bulk vehicle row ${row.id}: ${rowError?.message ?? rowError}`
|
|
38530
|
+
});
|
|
38531
|
+
results.push({
|
|
38532
|
+
id: row.id,
|
|
38533
|
+
ok: false,
|
|
38534
|
+
message: String(
|
|
38535
|
+
rowError?.message ?? "The vehicle could not be added."
|
|
38536
|
+
)
|
|
38537
|
+
});
|
|
38538
|
+
}
|
|
38539
|
+
}
|
|
38540
|
+
const added = results.filter((result) => result.ok).length;
|
|
38541
|
+
const failed = results.length - added;
|
|
38542
|
+
res.status(200).json({
|
|
38543
|
+
message: failed === 0 ? `${added} vehicle${added === 1 ? "" : "s"} added.` : `${added} of ${results.length} vehicles added; ${failed} could not be added.`,
|
|
38544
|
+
added,
|
|
38545
|
+
failed,
|
|
38546
|
+
results
|
|
38547
|
+
});
|
|
38548
|
+
} catch (error2) {
|
|
38549
|
+
import_node_server_utils121.logger.log({ level: "error", message: error2.message });
|
|
38550
|
+
next(error2);
|
|
38551
|
+
}
|
|
38552
|
+
}
|
|
38424
38553
|
async function add(req, res, next) {
|
|
38425
38554
|
const { error, value } = vehicleSchema.validate(req.body, {
|
|
38426
38555
|
abortEarly: false
|
|
@@ -38896,6 +39025,7 @@ function useVehicleController() {
|
|
|
38896
39025
|
}
|
|
38897
39026
|
return {
|
|
38898
39027
|
add,
|
|
39028
|
+
addBulk,
|
|
38899
39029
|
getVehicles,
|
|
38900
39030
|
getSeasonPassTypes,
|
|
38901
39031
|
getVehicleById,
|
|
@@ -91647,6 +91777,7 @@ function usePersonalEmergencyChainController() {
|
|
|
91647
91777
|
sessionSchema,
|
|
91648
91778
|
setIO,
|
|
91649
91779
|
shiftSchema,
|
|
91780
|
+
signLiveLink,
|
|
91650
91781
|
signPlaybackLink,
|
|
91651
91782
|
siteDayBounds,
|
|
91652
91783
|
siteModulesHandlers,
|
|
@@ -91897,6 +92028,7 @@ function usePersonalEmergencyChainController() {
|
|
|
91897
92028
|
vehicles_namespace_collection,
|
|
91898
92029
|
visitors_namespace_collection,
|
|
91899
92030
|
wallConfig,
|
|
92031
|
+
withLiveLink,
|
|
91900
92032
|
workOrderSchema,
|
|
91901
92033
|
work_orders2_namespace_collection,
|
|
91902
92034
|
work_orders_namespace_collection
|