tabletcommand-backend-models 7.4.90 → 7.4.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/models/esri.js +26 -0
- package/build/models/esri.js.map +1 -1
- package/build/models/status-beacon-transition.js +51 -0
- package/build/models/status-beacon-transition.js.map +1 -0
- package/build/models/status-beacon.js +174 -0
- package/build/models/status-beacon.js.map +1 -0
- package/build/test/0index.js +2 -0
- package/build/test/0index.js.map +1 -1
- package/build/test/esri.js +38 -0
- package/build/test/esri.js.map +1 -1
- package/build/test/mock.js +64 -0
- package/build/test/mock.js.map +1 -1
- package/build/test/status-beacon.js +112 -0
- package/build/test/status-beacon.js.map +1 -0
- package/build/types/status-beacon.js +3 -0
- package/build/types/status-beacon.js.map +1 -0
- package/definitions/index.d.ts +12 -0
- package/definitions/index.d.ts.map +1 -1
- package/definitions/models/esri.d.ts.map +1 -1
- package/definitions/models/status-beacon-transition.d.ts +13 -0
- package/definitions/models/status-beacon-transition.d.ts.map +1 -0
- package/definitions/models/status-beacon.d.ts +13 -0
- package/definitions/models/status-beacon.d.ts.map +1 -0
- package/definitions/test/mock.d.ts +62 -0
- package/definitions/test/mock.d.ts.map +1 -1
- package/definitions/test/status-beacon.d.ts +2 -0
- package/definitions/test/status-beacon.d.ts.map +1 -0
- package/definitions/types/status-beacon.d.ts +72 -0
- package/definitions/types/status-beacon.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/models/esri.ts +28 -0
- package/src/models/status-beacon-transition.ts +60 -0
- package/src/models/status-beacon.ts +193 -0
- package/src/test/0index.ts +2 -0
- package/src/test/esri.ts +46 -0
- package/src/test/mock.ts +66 -0
- package/src/test/status-beacon.ts +121 -0
- package/src/types/status-beacon.ts +90 -0
package/README.md
CHANGED
|
@@ -1,3 +1,70 @@
|
|
|
1
1
|
# tabletcommand-backend-models
|
|
2
2
|
|
|
3
|
-
Tablet Command backend
|
|
3
|
+
Mongoose/TypeScript library exporting 64+ data models for the Tablet Command backend. Covers CAD, incidents, users, devices, integrations, and more.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install tabletcommand-backend-models
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
The primary API is `connect()`, which opens a MongoDB connection and wires all models.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { connect } from "tabletcommand-backend-models";
|
|
17
|
+
|
|
18
|
+
const { connection, models, mongoose } = await connect(process.env.MONGO_URL);
|
|
19
|
+
|
|
20
|
+
const dept = await models.Department.findById(id);
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`connect(mongoUrl, opts?)` accepts an optional Mongoose connection options object and returns `{ connection, models, mongoose }`.
|
|
24
|
+
|
|
25
|
+
## Project Structure
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
src/
|
|
29
|
+
├── index.ts # connect(), wireModels(), exported constants & helpers
|
|
30
|
+
├── constants.ts # Shared enums (AccountIndustry, IncidentFilterKind, etc.)
|
|
31
|
+
├── helpers.ts # Mongoose/TS utilities, ObjectId helpers
|
|
32
|
+
├── models/ # 64 Mongoose model files
|
|
33
|
+
│ └── schema/ # 17 reusable sub-schemas (geojson, oauth, webhook, etc.)
|
|
34
|
+
└── types/ # TypeScript interfaces mirroring each model
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Models
|
|
38
|
+
|
|
39
|
+
| Category | Key Models |
|
|
40
|
+
|---|---|
|
|
41
|
+
| **CAD** | `CadIncident`, `CadVehicle`, `CadStatus`, `CadVehicleStatusHistory`, `CadSimulation` |
|
|
42
|
+
| **Incidents** | `ManagedIncident`, `IncidentEvent`, `IncidentFilter`, `IncidentNotified`, `IncidentTakeover` |
|
|
43
|
+
| **Users & Auth** | `User`, `UserDevice`, `Session`, `UserRegistration`, `AudioStreamAuthentication` |
|
|
44
|
+
| **Departments & Config** | `Department`, `GlobalSettings`, `Battalion`, `Agency`, `Assignment` |
|
|
45
|
+
| **Integrations** | `Esri`, `DeviceMapping`, `GstMapping`, `Partner`, `Mark43IncidentRetry`, `Saml` |
|
|
46
|
+
| **Personnel** | `PersonnelRoster`, `PersonnelKnown`, `PersonnelImport` |
|
|
47
|
+
| **Beacons** | `StatusBeacon`, `StatusBeaconTransition`, `BeaconLog` |
|
|
48
|
+
| **Logging & Comms** | `ActionLog`, `JobLog`, `MailLog`, `SmsLog`, `SmtpUnhandled`, `Message` |
|
|
49
|
+
| **Charts / Analytics** | `ChartIncident`, `ChartUser`, `ChartDeviceStats`, `ChartManagedIncident` |
|
|
50
|
+
| **Misc** | `RateLimit`, `CsvImport`, `Monitor`, `ValidationReport`, `RemoteLog`, `ReleaseNote` |
|
|
51
|
+
|
|
52
|
+
## Key Call-outs
|
|
53
|
+
|
|
54
|
+
**Lazy-loading** — `wireModels()` uses dynamic imports internally. Models are not instantiated until `connect()` is called, avoiding premature Mongoose registration.
|
|
55
|
+
|
|
56
|
+
**Type safety** — The `BackendModels` type gives fully typed access to every model. 99.79% type coverage is enforced at build time.
|
|
57
|
+
|
|
58
|
+
**Schema composition** — `src/models/schema/` contains reusable sub-schemas (GeoJSON, OAuth, webhooks, colors, etc.) that are composed into larger models rather than duplicated.
|
|
59
|
+
|
|
60
|
+
**Decoupled types** — Interfaces live in `src/types/`, Mongoose schemas in `src/models/`. Import types directly without pulling in Mongoose as a dependency.
|
|
61
|
+
|
|
62
|
+
**Top-level exports** — `connect`, `wireModels`, `BackendModels`, `MongooseTypes`, all constants, and helper utilities are exported from the package root.
|
|
63
|
+
|
|
64
|
+
## Development
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
npm run build # compile via gulp
|
|
68
|
+
npm test # run tests with tsx
|
|
69
|
+
npm run lint # eslint src/
|
|
70
|
+
```
|
package/build/index.js
CHANGED
|
@@ -89,6 +89,8 @@ async function wireModels(mongoose) {
|
|
|
89
89
|
SAML: await getModel(Promise.resolve().then(() => require("./models/saml"))),
|
|
90
90
|
SMSLog: await getModel(Promise.resolve().then(() => require("./models/sms-log"))),
|
|
91
91
|
SMTPUnhandled: await getModel(Promise.resolve().then(() => require("./models/smtp-unhandled"))),
|
|
92
|
+
StatusBeacon: await getModel(Promise.resolve().then(() => require("./models/status-beacon"))),
|
|
93
|
+
StatusBeaconTransition: await getModel(Promise.resolve().then(() => require("./models/status-beacon-transition"))),
|
|
92
94
|
Template: await getModel(Promise.resolve().then(() => require("./models/template"))),
|
|
93
95
|
User: await getModel(Promise.resolve().then(() => require("./models/user"))),
|
|
94
96
|
UserDevice: await getModel(Promise.resolve().then(() => require("./models/user-device"))),
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/models/esri.js
CHANGED
|
@@ -102,6 +102,32 @@ function EsriSchema(mongoose) {
|
|
|
102
102
|
name: "departmentId_unique",
|
|
103
103
|
unique: true,
|
|
104
104
|
});
|
|
105
|
+
// cspell:disable-next-line
|
|
106
|
+
// arcGISAuth must be set-or-null, never a subdoc with an empty username.
|
|
107
|
+
// EsriAuth.username defaults to "" and that schema is shared with `auth`, so we
|
|
108
|
+
// normalize here rather than change the default: an arcGISAuth present without a
|
|
109
|
+
// username collapses to null, keeping it out of the $exists unique index below.
|
|
110
|
+
modelSchema.pre("save", function (next) {
|
|
111
|
+
const arcGISAuth = this.get("arcGISAuth");
|
|
112
|
+
if (arcGISAuth && !arcGISAuth.username) {
|
|
113
|
+
this.set("arcGISAuth", null);
|
|
114
|
+
}
|
|
115
|
+
next();
|
|
116
|
+
});
|
|
117
|
+
// arcGISAuth.username is generated lowercase (cron-maps domain.ts:
|
|
118
|
+
// name.toLowerCase() -> `tc_<slug>`), so this case-sensitive unique index is
|
|
119
|
+
// sufficient in practice; case-insensitive enforcement is intentionally deferred.
|
|
120
|
+
// $exists (not $gt: "") is correct because the pre-save hook above guarantees
|
|
121
|
+
// arcGISAuth is set-or-null, so the username field is present only on real records.
|
|
122
|
+
modelSchema.index({
|
|
123
|
+
"arcGISAuth.username": 1,
|
|
124
|
+
}, {
|
|
125
|
+
name: "arcGISAuth.username_1_unique",
|
|
126
|
+
unique: true,
|
|
127
|
+
partialFilterExpression: {
|
|
128
|
+
"arcGISAuth.username": { $exists: true },
|
|
129
|
+
},
|
|
130
|
+
});
|
|
105
131
|
return modelSchema;
|
|
106
132
|
}
|
|
107
133
|
async function EsriModule(mongoose) {
|
package/build/models/esri.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/models/esri.ts"],"names":[],"mappings":";;AAYA,
|
|
1
|
+
{"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/models/esri.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = StatusBeaconTransitionModule;
|
|
4
|
+
async function StatusBeaconTransitionModule(mongoose) {
|
|
5
|
+
const { Schema } = mongoose;
|
|
6
|
+
const modelSchema = new Schema({
|
|
7
|
+
_id: {
|
|
8
|
+
type: Schema.Types.ObjectId,
|
|
9
|
+
auto: true,
|
|
10
|
+
},
|
|
11
|
+
departmentId: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: "",
|
|
14
|
+
required: true,
|
|
15
|
+
},
|
|
16
|
+
integration: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: "",
|
|
19
|
+
required: true,
|
|
20
|
+
},
|
|
21
|
+
triggerReason: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: "",
|
|
24
|
+
},
|
|
25
|
+
healthState: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: "",
|
|
28
|
+
},
|
|
29
|
+
consecutiveFailures: {
|
|
30
|
+
type: Number,
|
|
31
|
+
default: 0,
|
|
32
|
+
},
|
|
33
|
+
totalFailuresSinceLastHealthy: {
|
|
34
|
+
type: Number,
|
|
35
|
+
default: 0,
|
|
36
|
+
},
|
|
37
|
+
lastError: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: "",
|
|
40
|
+
},
|
|
41
|
+
}, {
|
|
42
|
+
autoIndex: false,
|
|
43
|
+
timestamps: true,
|
|
44
|
+
});
|
|
45
|
+
modelSchema.index({ departmentId: 1, integration: 1, createdAt: -1 }, {
|
|
46
|
+
name: "departmentId_1_integration_1_createdAt_-1",
|
|
47
|
+
});
|
|
48
|
+
modelSchema.index({ createdAt: 1 }, { name: "createdAt_1" });
|
|
49
|
+
return mongoose.model("StatusBeaconTransition", modelSchema, "massive_status_beacon_transition", { overwriteModels: true });
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=status-beacon-transition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-beacon-transition.js","sourceRoot":"","sources":["../../src/models/status-beacon-transition.ts"],"names":[],"mappings":";;AAQA,+CAiDC;AAjDc,KAAK,UAAU,4BAA4B,CAAC,QAAwB;IACjF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,WAAW,GAAG,IAAI,MAAM,CAA6B;QACzD,GAAG,EAAE;YACH,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC3B,IAAI,EAAE,IAAI;SACX;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;SACf;QACD,WAAW,EAAE;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;SACf;QACD,aAAa,EAAE;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,WAAW,EAAE;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;SACX;QACD,6BAA6B,EAAE;YAC7B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;SACX;QACD,SAAS,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;KACF,EAAE;QACD,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,WAAW,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACpE,IAAI,EAAE,2CAA2C;KAClD,CAAC,CAAC;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAE7D,OAAO,QAAQ,CAAC,KAAK,CAAyB,wBAAwB,EAAE,WAAW,EAAE,kCAAkC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AACtJ,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = StatusBeaconModule;
|
|
4
|
+
const helpers_1 = require("../helpers");
|
|
5
|
+
async function StatusBeaconModule(mongoose) {
|
|
6
|
+
const { Schema } = mongoose;
|
|
7
|
+
const QueueDepths = new Schema({
|
|
8
|
+
incident: { type: Number, default: 0 },
|
|
9
|
+
status: { type: Number, default: 0 },
|
|
10
|
+
vehicle: { type: Number, default: 0 },
|
|
11
|
+
total: { type: Number, default: 0 },
|
|
12
|
+
}, { _id: false, id: false });
|
|
13
|
+
const TCSendHealth = new Schema({
|
|
14
|
+
lastSuccessfulIncidentSend: { type: Date },
|
|
15
|
+
lastSuccessfulUnitStatusSend: { type: Date },
|
|
16
|
+
sendFailuresDelta: { type: Number, default: 0 },
|
|
17
|
+
lastSendError: { type: String, default: "" },
|
|
18
|
+
}, { _id: false, id: false });
|
|
19
|
+
const WriteBackHealth = new Schema({
|
|
20
|
+
attemptsDelta: { type: Number, default: 0 },
|
|
21
|
+
failuresDelta: { type: Number, default: 0 },
|
|
22
|
+
lastSuccessfulWriteBack: { type: Date },
|
|
23
|
+
lastError: { type: String, default: "" },
|
|
24
|
+
}, { _id: false, id: false });
|
|
25
|
+
const SyncHealth = new Schema({
|
|
26
|
+
lastCacheRefresh: { type: Date },
|
|
27
|
+
cacheAgeSeconds: { type: Number, default: 0 },
|
|
28
|
+
consecutiveEmptyPolls: { type: Number, default: 0 },
|
|
29
|
+
lastPollChanges: { type: Number, default: 0 },
|
|
30
|
+
incidentCacheGrowthDelta: { type: Number, default: 0 },
|
|
31
|
+
}, { _id: false, id: false });
|
|
32
|
+
const modelSchema = new Schema({
|
|
33
|
+
_id: {
|
|
34
|
+
type: Schema.Types.ObjectId,
|
|
35
|
+
auto: true,
|
|
36
|
+
},
|
|
37
|
+
departmentId: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: "",
|
|
40
|
+
required: true,
|
|
41
|
+
},
|
|
42
|
+
// Identity
|
|
43
|
+
integration: {
|
|
44
|
+
type: String,
|
|
45
|
+
default: "",
|
|
46
|
+
required: true,
|
|
47
|
+
},
|
|
48
|
+
interfaceStartTime: {
|
|
49
|
+
type: Date,
|
|
50
|
+
default: helpers_1.currentDate,
|
|
51
|
+
},
|
|
52
|
+
// Health State
|
|
53
|
+
healthState: {
|
|
54
|
+
type: String,
|
|
55
|
+
default: "",
|
|
56
|
+
},
|
|
57
|
+
triggerReason: {
|
|
58
|
+
type: String,
|
|
59
|
+
default: "",
|
|
60
|
+
},
|
|
61
|
+
consecutiveFailures: {
|
|
62
|
+
type: Number,
|
|
63
|
+
default: 0,
|
|
64
|
+
},
|
|
65
|
+
consecutiveSuccesses: {
|
|
66
|
+
type: Number,
|
|
67
|
+
default: 0,
|
|
68
|
+
},
|
|
69
|
+
totalFailuresSinceLastHealthy: {
|
|
70
|
+
type: Number,
|
|
71
|
+
default: 0,
|
|
72
|
+
},
|
|
73
|
+
outageStartTime: {
|
|
74
|
+
type: Date,
|
|
75
|
+
},
|
|
76
|
+
// Cycle Metrics
|
|
77
|
+
pollCycle: {
|
|
78
|
+
type: Number,
|
|
79
|
+
default: 0,
|
|
80
|
+
},
|
|
81
|
+
lastPollMs: {
|
|
82
|
+
type: Number,
|
|
83
|
+
default: 0,
|
|
84
|
+
},
|
|
85
|
+
activeIncidents: {
|
|
86
|
+
type: Number,
|
|
87
|
+
default: 0,
|
|
88
|
+
},
|
|
89
|
+
activeUnits: {
|
|
90
|
+
type: Number,
|
|
91
|
+
default: 0,
|
|
92
|
+
},
|
|
93
|
+
// Data Flow Deltas
|
|
94
|
+
incidentsDelta: {
|
|
95
|
+
type: Number,
|
|
96
|
+
default: 0,
|
|
97
|
+
},
|
|
98
|
+
unitStatusDelta: {
|
|
99
|
+
type: Number,
|
|
100
|
+
default: 0,
|
|
101
|
+
},
|
|
102
|
+
// Queue Depths
|
|
103
|
+
queueDepths: {
|
|
104
|
+
type: QueueDepths,
|
|
105
|
+
default: () => ({}),
|
|
106
|
+
},
|
|
107
|
+
// Auth Token Health
|
|
108
|
+
tokenAgeSecs: {
|
|
109
|
+
type: Number,
|
|
110
|
+
},
|
|
111
|
+
tokenExpiresAt: {
|
|
112
|
+
type: Date,
|
|
113
|
+
},
|
|
114
|
+
// TC Send Health
|
|
115
|
+
tCSend: {
|
|
116
|
+
type: TCSendHealth,
|
|
117
|
+
default: () => ({}),
|
|
118
|
+
},
|
|
119
|
+
// Write-back Health
|
|
120
|
+
writeBack: {
|
|
121
|
+
type: WriteBackHealth,
|
|
122
|
+
default: () => ({}),
|
|
123
|
+
},
|
|
124
|
+
// Sync Health
|
|
125
|
+
sync: {
|
|
126
|
+
type: SyncHealth,
|
|
127
|
+
default: () => ({}),
|
|
128
|
+
},
|
|
129
|
+
// Debug & Config
|
|
130
|
+
debugPushActive: {
|
|
131
|
+
type: Boolean,
|
|
132
|
+
default: false,
|
|
133
|
+
},
|
|
134
|
+
lastConfigSave: {
|
|
135
|
+
type: Date,
|
|
136
|
+
},
|
|
137
|
+
lastConfigSaveFile: {
|
|
138
|
+
type: String,
|
|
139
|
+
default: "",
|
|
140
|
+
},
|
|
141
|
+
// Error & Version
|
|
142
|
+
lastError: {
|
|
143
|
+
type: String,
|
|
144
|
+
default: "",
|
|
145
|
+
},
|
|
146
|
+
interfaceVersion: {
|
|
147
|
+
type: String,
|
|
148
|
+
default: "",
|
|
149
|
+
},
|
|
150
|
+
cadVersion: {
|
|
151
|
+
type: String,
|
|
152
|
+
default: "",
|
|
153
|
+
},
|
|
154
|
+
unifiedVersion: {
|
|
155
|
+
type: String,
|
|
156
|
+
default: "",
|
|
157
|
+
},
|
|
158
|
+
}, {
|
|
159
|
+
autoIndex: false,
|
|
160
|
+
timestamps: true,
|
|
161
|
+
});
|
|
162
|
+
modelSchema.index({ departmentId: 1, integration: 1 }, {
|
|
163
|
+
name: "departmentId_1_integration_1",
|
|
164
|
+
unique: true,
|
|
165
|
+
});
|
|
166
|
+
modelSchema.index({ healthState: 1 }, { name: "healthState_1" });
|
|
167
|
+
modelSchema.index({ triggerReason: 1 }, { name: "triggerReason_1" });
|
|
168
|
+
modelSchema.index({ "queueDepths.total": 1 }, { name: "queueDepths_total_1" });
|
|
169
|
+
modelSchema.index({ "tCSend.sendFailuresDelta": 1 }, { name: "tCSend_sendFailuresDelta_1" });
|
|
170
|
+
modelSchema.index({ "writeBack.failuresDelta": 1 }, { name: "writeBack_failuresDelta_1" });
|
|
171
|
+
modelSchema.index({ "sync.consecutiveEmptyPolls": 1 }, { name: "sync_consecutiveEmptyPolls_1" });
|
|
172
|
+
return mongoose.model("StatusBeacon", modelSchema, "massive_status_beacon", { overwriteModels: true });
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=status-beacon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-beacon.js","sourceRoot":"","sources":["../../src/models/status-beacon.ts"],"names":[],"mappings":"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"}
|
package/build/test/0index.js
CHANGED
|
@@ -67,6 +67,8 @@ const config = require("./config");
|
|
|
67
67
|
chai_1.assert.isFunction(models.RemoteLogStream, "Missing RemoteLogStream");
|
|
68
68
|
chai_1.assert.isFunction(models.Session, "Missing Session");
|
|
69
69
|
chai_1.assert.isFunction(models.SAML, "Missing SAML");
|
|
70
|
+
chai_1.assert.isFunction(models.StatusBeacon, "Missing StatusBeacon");
|
|
71
|
+
chai_1.assert.isFunction(models.StatusBeaconTransition, "Missing StatusBeaconTransition");
|
|
70
72
|
chai_1.assert.isFunction(models.SMSLog, "Missing SMSLog");
|
|
71
73
|
chai_1.assert.isFunction(models.SMTPUnhandled, "Missing SMTPUnhandled");
|
|
72
74
|
chai_1.assert.isFunction(models.Template, "Missing Template");
|
package/build/test/0index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"0index.js","sourceRoot":"","sources":["../../src/test/0index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"0index.js","sourceRoot":"","sources":["../../src/test/0index.ts"],"names":[],"mappings":"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"}
|
package/build/test/esri.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const chai_1 = require("chai");
|
|
4
4
|
const node_test_1 = require("node:test");
|
|
5
|
+
const strict_1 = require("node:assert/strict");
|
|
5
6
|
const m = require("../index");
|
|
6
7
|
const config = require("./config");
|
|
7
8
|
const mock_1 = require("./mock");
|
|
@@ -57,5 +58,42 @@ const mock_1 = require("./mock");
|
|
|
57
58
|
const props = mapPropsFound[0];
|
|
58
59
|
chai_1.assert.equal(props === null || props === void 0 ? void 0 : props.download, true);
|
|
59
60
|
});
|
|
61
|
+
(0, node_test_1.it)("enforces unique arcGISAuth.username constraint", async function () {
|
|
62
|
+
await new models.Esri({
|
|
63
|
+
departmentId: new mongoose.Types.ObjectId(),
|
|
64
|
+
arcGISAuth: { username: "tc_dup_user" },
|
|
65
|
+
}).save();
|
|
66
|
+
// A second department claiming the same non-empty username must be rejected.
|
|
67
|
+
// assertRejects fails if the save does NOT reject, so there is no false-positive.
|
|
68
|
+
await (0, strict_1.rejects)(new models.Esri({
|
|
69
|
+
departmentId: new mongoose.Types.ObjectId(),
|
|
70
|
+
arcGISAuth: { username: "tc_dup_user" },
|
|
71
|
+
}).save(), /duplicate key/);
|
|
72
|
+
});
|
|
73
|
+
(0, node_test_1.it)("normalizes an empty arcGISAuth.username to null", async function () {
|
|
74
|
+
// EsriAuth.username defaults to "" (schema shared with auth); an arcGISAuth
|
|
75
|
+
// present without a real username collapses to null so it is never indexed.
|
|
76
|
+
const saved = await new models.Esri({
|
|
77
|
+
departmentId: new mongoose.Types.ObjectId(),
|
|
78
|
+
arcGISAuth: { username: "" },
|
|
79
|
+
}).save();
|
|
80
|
+
chai_1.assert.isNull(saved.arcGISAuth);
|
|
81
|
+
});
|
|
82
|
+
(0, node_test_1.it)("allows multiple missing/empty arcGISAuth.username and distinct values", async function () {
|
|
83
|
+
// missing arcGISAuth entirely (defaults to null) — not indexed
|
|
84
|
+
await new models.Esri({ departmentId: new mongoose.Types.ObjectId() }).save();
|
|
85
|
+
await new models.Esri({ departmentId: new mongoose.Types.ObjectId() }).save();
|
|
86
|
+
// empty-string username — normalized to null by the pre-save hook, so not indexed.
|
|
87
|
+
// Both must coexist: without normalization the second would collide on "" under $exists.
|
|
88
|
+
const empty1 = await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "" } }).save();
|
|
89
|
+
const empty2 = await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "" } }).save();
|
|
90
|
+
chai_1.assert.isNull(empty1.arcGISAuth);
|
|
91
|
+
chai_1.assert.isNull(empty2.arcGISAuth);
|
|
92
|
+
// distinct non-empty usernames — allowed
|
|
93
|
+
await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "tc_user_a" } }).save();
|
|
94
|
+
await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "tc_user_b" } }).save();
|
|
95
|
+
const count = await models.Esri.countDocuments({});
|
|
96
|
+
chai_1.assert.equal(count, 6);
|
|
97
|
+
});
|
|
60
98
|
});
|
|
61
99
|
//# sourceMappingURL=esri.js.map
|
package/build/test/esri.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/test/esri.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/test/esri.ts"],"names":[],"mappings":"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"}
|
package/build/test/mock.js
CHANGED
|
@@ -1428,6 +1428,68 @@ function mockModule(dependencies) {
|
|
|
1428
1428
|
status: "success",
|
|
1429
1429
|
sendNotification: false
|
|
1430
1430
|
};
|
|
1431
|
+
const statusBeacon = {
|
|
1432
|
+
_id: new mongoose.Types.ObjectId(),
|
|
1433
|
+
departmentId,
|
|
1434
|
+
integration: "test-cad-integration",
|
|
1435
|
+
interfaceStartTime: new Date(),
|
|
1436
|
+
healthState: "healthy",
|
|
1437
|
+
triggerReason: "poll_success",
|
|
1438
|
+
consecutiveFailures: 0,
|
|
1439
|
+
consecutiveSuccesses: 5,
|
|
1440
|
+
totalFailuresSinceLastHealthy: 0,
|
|
1441
|
+
outageStartTime: undefined,
|
|
1442
|
+
pollCycle: 42,
|
|
1443
|
+
lastPollMs: 350,
|
|
1444
|
+
activeIncidents: 3,
|
|
1445
|
+
activeUnits: 12,
|
|
1446
|
+
incidentsDelta: 1,
|
|
1447
|
+
unitStatusDelta: 2,
|
|
1448
|
+
queueDepths: {
|
|
1449
|
+
incident: 0,
|
|
1450
|
+
status: 0,
|
|
1451
|
+
vehicle: 0,
|
|
1452
|
+
total: 0,
|
|
1453
|
+
},
|
|
1454
|
+
tokenAgeSecs: 1800,
|
|
1455
|
+
tokenExpiresAt: new Date(),
|
|
1456
|
+
tCSend: {
|
|
1457
|
+
lastSuccessfulIncidentSend: new Date(),
|
|
1458
|
+
lastSuccessfulUnitStatusSend: new Date(),
|
|
1459
|
+
sendFailuresDelta: 0,
|
|
1460
|
+
lastSendError: "",
|
|
1461
|
+
},
|
|
1462
|
+
writeBack: {
|
|
1463
|
+
attemptsDelta: 0,
|
|
1464
|
+
failuresDelta: 0,
|
|
1465
|
+
lastSuccessfulWriteBack: new Date(),
|
|
1466
|
+
lastError: "",
|
|
1467
|
+
},
|
|
1468
|
+
sync: {
|
|
1469
|
+
lastCacheRefresh: new Date(),
|
|
1470
|
+
cacheAgeSeconds: 30,
|
|
1471
|
+
consecutiveEmptyPolls: 0,
|
|
1472
|
+
lastPollChanges: 2,
|
|
1473
|
+
incidentCacheGrowthDelta: 1,
|
|
1474
|
+
},
|
|
1475
|
+
debugPushActive: false,
|
|
1476
|
+
lastConfigSave: new Date(),
|
|
1477
|
+
lastConfigSaveFile: "config-v1.json",
|
|
1478
|
+
lastError: "",
|
|
1479
|
+
interfaceVersion: "1.2.3",
|
|
1480
|
+
cadVersion: "4.5.6",
|
|
1481
|
+
unifiedVersion: "7.8.9",
|
|
1482
|
+
};
|
|
1483
|
+
const statusBeaconTransition = {
|
|
1484
|
+
_id: new mongoose.Types.ObjectId(),
|
|
1485
|
+
departmentId,
|
|
1486
|
+
integration: "test-cad-integration",
|
|
1487
|
+
triggerReason: "consecutive_failures",
|
|
1488
|
+
healthState: "degraded",
|
|
1489
|
+
consecutiveFailures: 3,
|
|
1490
|
+
totalFailuresSinceLastHealthy: 5,
|
|
1491
|
+
lastError: "connection timeout",
|
|
1492
|
+
};
|
|
1431
1493
|
const validationReport = {
|
|
1432
1494
|
_id: new mongoose.Types.ObjectId(),
|
|
1433
1495
|
departmentId: new mongoose.Types.ObjectId("56131f724143487a10000001"),
|
|
@@ -1520,6 +1582,8 @@ function mockModule(dependencies) {
|
|
|
1520
1582
|
releaseNote,
|
|
1521
1583
|
session,
|
|
1522
1584
|
saml,
|
|
1585
|
+
statusBeacon,
|
|
1586
|
+
statusBeaconTransition,
|
|
1523
1587
|
template,
|
|
1524
1588
|
user,
|
|
1525
1589
|
userDevice,
|