tabletcommand-location 2.3.8 → 2.4.1

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.
Files changed (43) hide show
  1. package/build/audience.js +38 -0
  2. package/build/audience.js.map +1 -0
  3. package/build/index.js +38 -20
  4. package/build/index.js.map +1 -1
  5. package/build/location.js +63 -6
  6. package/build/location.js.map +1 -1
  7. package/build/query.js +373 -0
  8. package/build/query.js.map +1 -0
  9. package/build/store.js +54 -5
  10. package/build/store.js.map +1 -1
  11. package/build/test/location.js +313 -0
  12. package/build/test/location.js.map +1 -1
  13. package/build/test/mock.js +5 -0
  14. package/build/test/mock.js.map +1 -1
  15. package/build/test/query.js +174 -0
  16. package/build/test/query.js.map +1 -0
  17. package/cspell.json +5 -1
  18. package/definitions/audience.d.ts +18 -0
  19. package/definitions/audience.d.ts.map +1 -0
  20. package/definitions/index.d.ts +1 -0
  21. package/definitions/index.d.ts.map +1 -1
  22. package/definitions/location.d.ts.map +1 -1
  23. package/definitions/query.d.ts +36 -0
  24. package/definitions/query.d.ts.map +1 -0
  25. package/definitions/store.d.ts +5 -0
  26. package/definitions/store.d.ts.map +1 -1
  27. package/definitions/test/mock.d.ts +15 -0
  28. package/definitions/test/mock.d.ts.map +1 -1
  29. package/definitions/test/query.d.ts +2 -0
  30. package/definitions/test/query.d.ts.map +1 -0
  31. package/definitions/types.d.ts +5 -0
  32. package/definitions/types.d.ts.map +1 -1
  33. package/package.json +18 -14
  34. package/src/audience.ts +54 -0
  35. package/src/index.ts +5 -20
  36. package/src/location.ts +67 -6
  37. package/src/query.ts +492 -0
  38. package/src/store.ts +55 -5
  39. package/src/test/location.ts +306 -1
  40. package/src/test/mock.ts +6 -0
  41. package/src/test/query.ts +209 -0
  42. package/src/types.ts +15 -0
  43. package/test.sh +1 -1
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AVL_AUDIENCE_MATRIX = void 0;
4
+ const tabletcommand_backend_models_1 = require("tabletcommand-backend-models");
5
+ const ALWAYS = { kind: "always" };
6
+ // eslint-ignore-next-line
7
+ // const GEO: AvlAudienceEntry = { kind: "geo" };
8
+ const DENY = null;
9
+ const NEAR = { kind: "near", area: { radiusMeters: 5000 } }; // 5km ~ 3.1mi
10
+ exports.AVL_AUDIENCE_MATRIX = {
11
+ // owner => reader
12
+ [tabletcommand_backend_models_1.AccountIndustry.Fire]: {
13
+ [tabletcommand_backend_models_1.AccountIndustry.Fire]: ALWAYS,
14
+ [tabletcommand_backend_models_1.AccountIndustry.Law]: ALWAYS,
15
+ [tabletcommand_backend_models_1.AccountIndustry.Campus]: DENY,
16
+ [tabletcommand_backend_models_1.AccountIndustry.Utility]: NEAR,
17
+ },
18
+ [tabletcommand_backend_models_1.AccountIndustry.Law]: {
19
+ [tabletcommand_backend_models_1.AccountIndustry.Fire]: NEAR,
20
+ [tabletcommand_backend_models_1.AccountIndustry.Law]: ALWAYS,
21
+ [tabletcommand_backend_models_1.AccountIndustry.Campus]: DENY,
22
+ [tabletcommand_backend_models_1.AccountIndustry.Utility]: DENY,
23
+ },
24
+ [tabletcommand_backend_models_1.AccountIndustry.Campus]: {
25
+ [tabletcommand_backend_models_1.AccountIndustry.Fire]: ALWAYS,
26
+ [tabletcommand_backend_models_1.AccountIndustry.Law]: ALWAYS,
27
+ [tabletcommand_backend_models_1.AccountIndustry.Campus]: DENY, // deliberate — see above
28
+ [tabletcommand_backend_models_1.AccountIndustry.Utility]: DENY,
29
+ },
30
+ [tabletcommand_backend_models_1.AccountIndustry.Utility]: {
31
+ [tabletcommand_backend_models_1.AccountIndustry.Fire]: NEAR,
32
+ [tabletcommand_backend_models_1.AccountIndustry.Law]: DENY,
33
+ [tabletcommand_backend_models_1.AccountIndustry.Campus]: DENY,
34
+ [tabletcommand_backend_models_1.AccountIndustry.Utility]: ALWAYS,
35
+ },
36
+ };
37
+ // Unused/Incomplete
38
+ //# sourceMappingURL=audience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audience.js","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":";;;AAAA,+EAEsC;AAiBtC,MAAM,MAAM,GAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACpD,0BAA0B;AAC1B,iDAAiD;AACjD,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,IAAI,GAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc;AAEhF,QAAA,mBAAmB,GAAsB;IACpD,mBAAmB;IACnB,CAAC,8CAAe,CAAC,IAAI,CAAC,EAAE;QACtB,CAAC,8CAAe,CAAC,IAAI,CAAC,EAAE,MAAM;QAC9B,CAAC,8CAAe,CAAC,GAAG,CAAC,EAAE,MAAM;QAC7B,CAAC,8CAAe,CAAC,MAAM,CAAC,EAAE,IAAI;QAC9B,CAAC,8CAAe,CAAC,OAAO,CAAC,EAAE,IAAI;KAChC;IACD,CAAC,8CAAe,CAAC,GAAG,CAAC,EAAE;QACrB,CAAC,8CAAe,CAAC,IAAI,CAAC,EAAE,IAAI;QAC5B,CAAC,8CAAe,CAAC,GAAG,CAAC,EAAE,MAAM;QAC7B,CAAC,8CAAe,CAAC,MAAM,CAAC,EAAE,IAAI;QAC9B,CAAC,8CAAe,CAAC,OAAO,CAAC,EAAE,IAAI;KAChC;IACD,CAAC,8CAAe,CAAC,MAAM,CAAC,EAAE;QACxB,CAAC,8CAAe,CAAC,IAAI,CAAC,EAAE,MAAM;QAC9B,CAAC,8CAAe,CAAC,GAAG,CAAC,EAAE,MAAM;QAC7B,CAAC,8CAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAI,yBAAyB;QAC3D,CAAC,8CAAe,CAAC,OAAO,CAAC,EAAE,IAAI;KAChC;IACD,CAAC,8CAAe,CAAC,OAAO,CAAC,EAAE;QACzB,CAAC,8CAAe,CAAC,IAAI,CAAC,EAAE,IAAI;QAC5B,CAAC,8CAAe,CAAC,GAAG,CAAC,EAAE,IAAI;QAC3B,CAAC,8CAAe,CAAC,MAAM,CAAC,EAAE,IAAI;QAC9B,CAAC,8CAAe,CAAC,OAAO,CAAC,EAAE,MAAM;KAClC;CACF,CAAC;AAEF,oBAAoB"}
package/build/index.js CHANGED
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LocationVisibility = exports.LocationSource = exports.LocationKindType = void 0;
39
+ exports.query = exports.LocationVisibility = exports.LocationSource = exports.LocationKindType = void 0;
7
40
  exports.lib = lib;
8
41
  const location_1 = __importDefault(require("./location"));
9
42
  const store_1 = __importDefault(require("./store"));
@@ -12,12 +45,13 @@ const types_1 = require("./types");
12
45
  Object.defineProperty(exports, "LocationKindType", { enumerable: true, get: function () { return types_1.LocationKindType; } });
13
46
  Object.defineProperty(exports, "LocationSource", { enumerable: true, get: function () { return types_1.LocationSource; } });
14
47
  Object.defineProperty(exports, "LocationVisibility", { enumerable: true, get: function () { return types_1.LocationVisibility; } });
48
+ // When used externally
49
+ // import { query } from "tabletcommand-location";
50
+ // query.adminListLocations({ departmentId, movedAt });
51
+ exports.query = __importStar(require("./query"));
15
52
  function lib(departmentModel, locationModel, cadVehicleModel, deviceMappingModel) {
16
53
  const store = (0, store_1.default)(departmentModel, locationModel, cadVehicleModel, deviceMappingModel);
17
54
  const location = (0, location_1.default)(store);
18
- // async function processVehicle(department: Partial<Department>, item: Partial<CADVehicle>) {
19
- // // await location.processVehicle()
20
- // }
21
55
  async function processLocations(department, items) {
22
56
  const atDate = new Date();
23
57
  try {
@@ -52,25 +86,9 @@ function lib(departmentModel, locationModel, cadVehicleModel, deviceMappingModel
52
86
  throw err;
53
87
  }
54
88
  }
55
- // async function processLocationsOnly(department: Partial<Department>, items: Partial<Location>[] | null | undefined, agency: Partial<Agency>) {
56
- // try {
57
- // if (_.isUndefined(items) || _.isNull(items)) {
58
- // return [];
59
- // }
60
- // if (_.isObject(items) && !_.isArray(items)) {
61
- // items = [items];
62
- // }
63
- // const result = await location.processItemsNoVehicle(department, items, agency);
64
- // return result;
65
- // } catch (err) {
66
- // throw err;
67
- // }
68
- // }
69
89
  return {
70
- // processVehicle,
71
90
  processLocations,
72
91
  processLocationsDeviceMapping,
73
- // processLocationsOnly,
74
92
  };
75
93
  }
76
94
  exports.default = lib;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAyBA,kBAmEC;AA5FD,0DAAwC;AACxC,oDAAkC;AAQlC,oDAAuB;AACvB,mCAKiB;AAIf,iGARA,wBAAgB,OAQA;AAEhB,+FARA,sBAAc,OAQA;AACd,mGARA,0BAAkB,OAQA;AAGpB,SAAgB,GAAG,CACjB,eAAgC,EAChC,aAA4B,EAC5B,eAAgC,EAChC,kBAAsC;IAEtC,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,IAAA,kBAAc,EAAC,KAAK,CAAC,CAAC;IACvC,8FAA8F;IAC9F,uCAAuC;IACvC,IAAI;IAEJ,KAAK,UAAU,gBAAgB,CAAC,UAA+B,EAAE,KAA2C;QAC1G,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,gBAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,UAAU,6BAA6B,CAAC,UAA+B,EAAE,KAA2C;QACvH,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,gBAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,+BAA+B,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,iJAAiJ;IACjJ,UAAU;IACV,qDAAqD;IACrD,mBAAmB;IACnB,QAAQ;IACR,oDAAoD;IACpD,yBAAyB;IACzB,QAAQ;IACR,sFAAsF;IACtF,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,MAAM;IACN,IAAI;IAEJ,OAAO;QACL,kBAAkB;QAClB,gBAAgB;QAChB,6BAA6B;QAC7B,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED,kBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,kBA+CC;AA7ED,0DAAwC;AACxC,oDAAkC;AAQlC,oDAAuB;AACvB,mCAKiB;AAIf,iGARA,wBAAgB,OAQA;AAEhB,+FARA,sBAAc,OAQA;AACd,mGARA,0BAAkB,OAQA;AAGpB,uBAAuB;AACvB,kDAAkD;AAClD,uDAAuD;AACvD,iDAAiC;AAEjC,SAAgB,GAAG,CACjB,eAAgC,EAChC,aAA4B,EAC5B,eAAgC,EAChC,kBAAsC;IAEtC,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,IAAA,kBAAc,EAAC,KAAK,CAAC,CAAC;IAEvC,KAAK,UAAU,gBAAgB,CAAC,UAA+B,EAAE,KAA2C;QAC1G,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,gBAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,UAAU,6BAA6B,CAAC,UAA+B,EAAE,KAA2C;QACvH,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,gBAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,+BAA+B,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,6BAA6B;KAC9B,CAAC;AACJ,CAAC;AAED,kBAAe,GAAG,CAAC"}
package/build/location.js CHANGED
@@ -10,6 +10,7 @@ const debug_1 = __importDefault(require("debug"));
10
10
  function location(store) {
11
11
  const debug = (0, debug_1.default)("tabletcommand-location:location");
12
12
  function decodeLocation(item, department, atDate, deviceType) {
13
+ var _a;
13
14
  let latitude = 0;
14
15
  let longitude = 0;
15
16
  if (lodash_1.default.isFinite(parseFloat(item.latitude.toString()))) {
@@ -36,7 +37,20 @@ function location(store) {
36
37
  movedAtUnix = cadUnixTime;
37
38
  }
38
39
  }
39
- const userId = `${item.radioName}-${item.vehicleId}`; // Fake user id radioName - vehicleId
40
+ // Originally always was this fake id, but now can override these values
41
+ // If overridden then we use the values on the record instead of the fake userId
42
+ let userId = `${item.radioName}-${item.vehicleId}`; // Fake user id radioName - vehicleId
43
+ if (lodash_1.default.isString(item.userId) && lodash_1.default.trim(item.userId) !== "") {
44
+ userId = item.userId;
45
+ }
46
+ let session = userId;
47
+ if (lodash_1.default.isString(item.session) && lodash_1.default.trim(item.session) !== "") {
48
+ session = item.session;
49
+ }
50
+ let username = item.radioName;
51
+ if (lodash_1.default.isString(item.username) && lodash_1.default.trim(item.username) !== "") {
52
+ username = item.username;
53
+ }
40
54
  let sharingEnabled = false;
41
55
  let opAreaName = "";
42
56
  let opAreaCode = "";
@@ -56,7 +70,9 @@ function location(store) {
56
70
  }
57
71
  }
58
72
  const deleteAfterDate = new Date(atDate.valueOf() + 1000 * 60 * locationStaleMinutes);
59
- const personnelUUID = "";
73
+ const personnelUUID = lodash_1.default.isString(item.personnelUUID) ? item.personnelUUID : "";
74
+ const transponderUUID = lodash_1.default.isString(item.transponderUUID) ? item.transponderUUID : "";
75
+ const industry = (_a = department === null || department === void 0 ? void 0 : department.industry) !== null && _a !== void 0 ? _a : tabletcommand_backend_models_1.AccountIndustry.Fire; // If not set, fallback to fire
60
76
  const cadAVL = {
61
77
  device_type: deviceType,
62
78
  source: item.source,
@@ -69,10 +85,10 @@ function location(store) {
69
85
  modified: atDate,
70
86
  movedAt: new Date(movedAtUnix * 1000),
71
87
  active: true,
72
- username: item.radioName,
88
+ username,
73
89
  userId,
74
90
  departmentId: String(department._id),
75
- session: userId,
91
+ session,
76
92
  version: 2,
77
93
  shared: sharingEnabled,
78
94
  sendToCAD: false,
@@ -81,6 +97,8 @@ function location(store) {
81
97
  state: deptState,
82
98
  visibility: [], // will be updated after .active is set
83
99
  personnelUUID,
100
+ transponderUUID,
101
+ industry,
84
102
  };
85
103
  if (lodash_1.default.isNumber(item.speed)) {
86
104
  const speed = item.speed;
@@ -140,12 +158,44 @@ function location(store) {
140
158
  }
141
159
  return cadItem;
142
160
  }
161
+ // Returns true when the item is a person location and was fully handled here
162
+ // Returns false if trying to handle vehicle item
163
+ async function processPersonItem(decoded, item, atDate) {
164
+ const isPerson = decoded.cadAVL.kindType === tabletcommand_backend_models_1.LocationKindType.Person ||
165
+ decoded.cadAVL.locationType === tabletcommand_backend_models_1.LocationKindType.Person;
166
+ if (!isPerson) {
167
+ return false;
168
+ }
169
+ const hasPersonnelUUID = lodash_1.default.isString(decoded.cadAVL.personnelUUID) && decoded.cadAVL.personnelUUID !== "";
170
+ const hasTransponderUUID = lodash_1.default.isString(decoded.cadAVL.transponderUUID) && decoded.cadAVL.transponderUUID !== "";
171
+ if (!hasPersonnelUUID && !hasTransponderUUID) {
172
+ // A person Location with neither personnelUUID nor transponderUUID
173
+ // would leak into the vehicle sync endpoints (they filter on
174
+ // personnelUUID: "") so to process person must have one or other
175
+ debug(`skipping person location without personnelUUID/transponderUUID: ${JSON.stringify(item)}`);
176
+ return true;
177
+ }
178
+ // Person records: no CAD vehicle, always active/visible, never shared or CAD.
179
+ // Stamp kindType so records classified by locationType alone still match
180
+ // the person feed query (kindType: "person")
181
+ decoded.cadAVL.kindType = tabletcommand_backend_models_1.LocationKindType.Person;
182
+ decoded.cadAVL.active = true;
183
+ decoded.cadAVL.shared = false;
184
+ decoded.cadAVL.sendToCAD = false;
185
+ decoded.cadAVL.visibility = [tabletcommand_backend_models_1.LocationVisibility.Visible];
186
+ await store.updateLocation(decoded.cadAVL, atDate);
187
+ return true;
188
+ }
143
189
  async function processItems(department, items, atDate) {
144
190
  for (const item of items) {
145
191
  const decoded = decodeLocation(item, department, atDate, "cad");
146
192
  debug(`processCADVehicleLocation item: ${JSON.stringify(item)} d:${JSON.stringify(department)} at: ${atDate.toISOString()}.`);
147
193
  if (!decoded.isValid) {
148
- return;
194
+ // Skip only the invalid item, not the rest of the batch
195
+ continue;
196
+ }
197
+ if (await processPersonItem(decoded, item, atDate)) {
198
+ continue;
149
199
  }
150
200
  let active = true;
151
201
  const cadItem = await processVehicle(item, department, atDate);
@@ -174,7 +224,14 @@ function location(store) {
174
224
  const decoded = decodeLocation(item, department, atDate, "geotab");
175
225
  debug(`processItemsDeviceMappingGeotab item: ${JSON.stringify(item)} d:${JSON.stringify(department)} at: ${atDate.toISOString()}.`);
176
226
  if (!decoded.isValid) {
177
- return;
227
+ // Skip only the invalid item, not the rest of the batch
228
+ // This is actually a fix for vehicle processing as well
229
+ continue;
230
+ }
231
+ // Defensive code technically we shouldn't be getting here with person
232
+ // But it would still be valid to use this with a person so added the logic
233
+ if (await processPersonItem(decoded, item, atDate)) {
234
+ continue;
178
235
  }
179
236
  let active = true;
180
237
  let locationToCAD = false;
@@ -1 +1 @@
1
- {"version":3,"file":"location.js","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"location.js","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"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"}
package/build/query.js ADDED
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.metersToRadians = void 0;
4
+ exports.adminListLocations = adminListLocations;
5
+ exports.adminListPersonLocations = adminListPersonLocations;
6
+ exports.adminListUAVLocations = adminListUAVLocations;
7
+ exports.adminListAircraftLocations = adminListAircraftLocations;
8
+ exports.adminListSharedLocations = adminListSharedLocations;
9
+ exports.adminListFocusedLocations = adminListFocusedLocations;
10
+ exports.syncListSharedLocations = syncListSharedLocations;
11
+ exports.syncListLocations = syncListLocations;
12
+ exports.syncListPersonLocations = syncListPersonLocations;
13
+ exports.syncListAircraftLocations = syncListAircraftLocations;
14
+ exports.syncListUAVLocations = syncListUAVLocations;
15
+ exports.metersToRadians = 6378100; // The equatorial radius of the Earth in meters
16
+ function centerSphereFilter(longitude, latitude, diagonal) {
17
+ return {
18
+ $geoWithin: {
19
+ $centerSphere: [
20
+ [longitude, latitude],
21
+ diagonal / exports.metersToRadians,
22
+ ],
23
+ },
24
+ };
25
+ }
26
+ // Transponder-tracked person records carry an empty personnelUUID;
27
+ // they surface via the person/responder feeds, never in unit/vehicle lists
28
+ const excludePersonAndTransponderRecords = [
29
+ {
30
+ $or: [
31
+ { personnelUUID: "" },
32
+ { personnelUUID: { $exists: false } }, // TODO: Remove $exists check once all location services are running the latest
33
+ ],
34
+ },
35
+ {
36
+ $or: [
37
+ { transponderUUID: "" },
38
+ { transponderUUID: { $exists: false } },
39
+ ],
40
+ },
41
+ ];
42
+ // Same fields defined in the frontend
43
+ // api/a1/location/units and api/a1/location/units-shared
44
+ const projectionAdmin = {
45
+ _id: 1,
46
+ active: 1,
47
+ altitude: 1,
48
+ color: 1,
49
+ device_type: 1,
50
+ kindType: 1,
51
+ location: 1,
52
+ locationGeoJSON: 1,
53
+ modified: 1,
54
+ movedAt: 1,
55
+ sendToCAD: 1,
56
+ source: 1,
57
+ speed: 1,
58
+ uuid: 1, // Legacy, remove later
59
+ };
60
+ function adminListLocations(params) {
61
+ const { departmentId, movedAt, showAll, } = params;
62
+ const query = {
63
+ // TODO: Replace models.Location active: true with visibility in "visible"
64
+ active: true,
65
+ departmentId,
66
+ $and: excludePersonAndTransponderRecords,
67
+ kindType: {
68
+ $ne: "uav",
69
+ },
70
+ // 03/14/23 (Joe) - Trying movedAt only [sc-11794] - determined modified was being overwritten by cad vehicle status updates
71
+ movedAt: {
72
+ $gte: movedAt,
73
+ },
74
+ };
75
+ if (showAll) {
76
+ delete query.active;
77
+ }
78
+ return {
79
+ list: query,
80
+ projection: projectionAdmin,
81
+ };
82
+ }
83
+ function adminListPersonLocations(params) {
84
+ const { departmentId, movedAt, showAll } = params;
85
+ const query = {
86
+ active: true,
87
+ departmentId,
88
+ kindType: "person",
89
+ movedAt: {
90
+ $gte: movedAt,
91
+ },
92
+ };
93
+ if (showAll) {
94
+ delete query.active;
95
+ }
96
+ // Same fields defined in the frontend
97
+ // api/a1/location/person
98
+ const projection = {
99
+ _id: 1,
100
+ active: 1,
101
+ altitude: 1,
102
+ color: 1,
103
+ device_type: 1,
104
+ kindType: 1,
105
+ location: 1,
106
+ locationGeoJSON: 1,
107
+ modified: 1,
108
+ movedAt: 1,
109
+ personnelUUID: 1,
110
+ sendToCAD: 1,
111
+ source: 1,
112
+ speed: 1,
113
+ transponderUUID: 1,
114
+ uuid: 1, // Legacy, remove later
115
+ };
116
+ return {
117
+ list: query,
118
+ projection,
119
+ };
120
+ }
121
+ function adminListUAVLocations(params) {
122
+ const { departmentId, movedAt, showAll, } = params;
123
+ const query = {
124
+ active: true,
125
+ departmentId,
126
+ kindType: "uav",
127
+ movedAt: {
128
+ $gte: movedAt,
129
+ },
130
+ };
131
+ if (showAll) {
132
+ delete query.active;
133
+ }
134
+ const projection = {
135
+ _id: 1,
136
+ active: 1,
137
+ agencyCode: 1,
138
+ agencyName: 1,
139
+ altitude: 1,
140
+ color: 1,
141
+ device_type: 1,
142
+ heading: 1,
143
+ kindType: 1,
144
+ locationGeoJSON: 1,
145
+ modified: 1,
146
+ movedAt: 1,
147
+ opAreaCode: 1,
148
+ opAreaName: 1,
149
+ sendToCAD: 1,
150
+ source: 1,
151
+ speed: 1,
152
+ state: 1,
153
+ userId: 1,
154
+ username: 1,
155
+ uuid: 1, // Legacy, remove later
156
+ vehicleId: 1,
157
+ };
158
+ return {
159
+ list: query,
160
+ projection,
161
+ };
162
+ }
163
+ function adminListAircraftLocations(params) {
164
+ const { departmentId, movedAt, longitude, latitude, diagonal } = params;
165
+ const list = {
166
+ shared: true,
167
+ active: true,
168
+ source: "ADSB",
169
+ kindType: {
170
+ $in: ["fixed-wing", "helicopter"],
171
+ },
172
+ departmentId: {
173
+ $ne: departmentId,
174
+ },
175
+ movedAt: {
176
+ $gte: movedAt.toISOString(),
177
+ },
178
+ locationGeoJSON: centerSphereFilter(longitude, latitude, diagonal),
179
+ };
180
+ return {
181
+ list,
182
+ projection: projectionAdmin,
183
+ };
184
+ }
185
+ function adminListSharedLocations(params) {
186
+ const { departmentId, movedAt, longitude, latitude, diagonal } = params;
187
+ const listSharedAVLQuery = {
188
+ shared: true,
189
+ active: true,
190
+ source: {
191
+ $ne: "ADSB"
192
+ },
193
+ departmentId: {
194
+ $ne: departmentId,
195
+ },
196
+ kindType: {
197
+ $ne: "uav",
198
+ },
199
+ movedAt: {
200
+ $gte: movedAt.toISOString(),
201
+ },
202
+ locationGeoJSON: centerSphereFilter(longitude, latitude, diagonal),
203
+ };
204
+ return {
205
+ list: listSharedAVLQuery,
206
+ projection: projectionAdmin,
207
+ };
208
+ }
209
+ function adminListFocusedLocations(params) {
210
+ const { departmentId, movedAt, longitude, latitude, diagonal, showAll } = params;
211
+ const listFocusedAVLQuery = {
212
+ active: true,
213
+ departmentId,
214
+ movedAt: {
215
+ $gte: movedAt.toISOString(),
216
+ },
217
+ locationGeoJSON: centerSphereFilter(longitude, latitude, diagonal),
218
+ };
219
+ if (showAll) {
220
+ delete listFocusedAVLQuery.locationGeoJSON;
221
+ }
222
+ return {
223
+ list: listFocusedAVLQuery,
224
+ projection: projectionAdmin,
225
+ };
226
+ }
227
+ // Sync queries
228
+ const projectionSync = {
229
+ active: 1,
230
+ departmentId: 1,
231
+ device_type: 1, // used in web ui
232
+ location: 1,
233
+ locationGeoJSON: 1,
234
+ modified: 1,
235
+ userId: 1,
236
+ username: 1,
237
+ uuid: 1, // used in iOS
238
+ // both used by AVL sharing
239
+ opAreaName: 1,
240
+ opAreaCode: 1,
241
+ shared: 1,
242
+ state: 1,
243
+ // v3
244
+ altitude: 1,
245
+ speed: 1,
246
+ movedAt: 1,
247
+ agencyName: 1,
248
+ agencyCode: 1,
249
+ // v4
250
+ color: 1,
251
+ colorChangedAt: 1,
252
+ propsChangedAt: 1,
253
+ heading: 1,
254
+ // v4 extra
255
+ kindType: 1,
256
+ source: 1,
257
+ personnelUUID: 1,
258
+ transponderUUID: 1,
259
+ // v4 kind/type/locationType
260
+ kind: 1,
261
+ type: 1,
262
+ locationType: 1,
263
+ kindColor: 1,
264
+ };
265
+ function syncListSharedLocations(params) {
266
+ const { departmentId, modifiedDate, movedAt, longitude, latitude, diagonal, } = params;
267
+ const list = {
268
+ shared: true,
269
+ source: {
270
+ $nin: ["ADSB", "DroneSense"]
271
+ },
272
+ departmentId: {
273
+ $ne: departmentId,
274
+ },
275
+ modified: {
276
+ $gte: modifiedDate.toISOString(),
277
+ },
278
+ movedAt: {
279
+ $gte: movedAt.toISOString(),
280
+ },
281
+ locationGeoJSON: centerSphereFilter(longitude, latitude, diagonal),
282
+ };
283
+ return {
284
+ list,
285
+ projection: projectionSync,
286
+ };
287
+ }
288
+ function syncListLocations(params) {
289
+ const { departmentId, modifiedDate, movedAt, } = params;
290
+ const list = {
291
+ departmentId,
292
+ $and: excludePersonAndTransponderRecords,
293
+ kindType: {
294
+ $ne: "uav"
295
+ },
296
+ modified: {
297
+ $gte: modifiedDate.toISOString(),
298
+ },
299
+ movedAt: {
300
+ $gte: movedAt.toISOString(),
301
+ }
302
+ };
303
+ return {
304
+ list,
305
+ projection: projectionSync,
306
+ };
307
+ }
308
+ function syncListPersonLocations(params) {
309
+ const { departmentId, modifiedDate, movedAt, } = params;
310
+ const list = {
311
+ departmentId,
312
+ kindType: "person",
313
+ modified: {
314
+ $gte: modifiedDate.toISOString(),
315
+ },
316
+ movedAt: {
317
+ $gte: movedAt.toISOString(),
318
+ },
319
+ };
320
+ return {
321
+ list,
322
+ projection: projectionSync,
323
+ };
324
+ }
325
+ function syncListAircraftLocations(params) {
326
+ const { departmentId, movedAt, modifiedDate,
327
+ // Possibly missing
328
+ longitude, latitude, diagonal } = params;
329
+ const list = {
330
+ shared: true,
331
+ source: "ADSB",
332
+ kindType: {
333
+ $in: ["fixed-wing", "helicopter"]
334
+ },
335
+ departmentId: {
336
+ $ne: departmentId,
337
+ },
338
+ modified: {
339
+ $gte: modifiedDate.toISOString(),
340
+ },
341
+ movedAt: {
342
+ $gte: movedAt.toISOString(),
343
+ }
344
+ };
345
+ const hasCoordinate = Math.abs(latitude) > 0.01 || Math.abs(longitude) > 0.01;
346
+ const validCoordinate = Math.abs(latitude) < 90 && Math.abs(longitude) < 180;
347
+ const filterOnLocation = hasCoordinate && validCoordinate;
348
+ if (filterOnLocation) {
349
+ list.locationGeoJSON = centerSphereFilter(longitude, latitude, diagonal);
350
+ }
351
+ return {
352
+ list,
353
+ projection: projectionSync,
354
+ };
355
+ }
356
+ function syncListUAVLocations(params) {
357
+ const { departmentId, modifiedDate, movedAt, } = params;
358
+ const list = {
359
+ departmentId,
360
+ kindType: "uav",
361
+ modified: {
362
+ $gte: modifiedDate.toISOString(),
363
+ },
364
+ movedAt: {
365
+ $gte: movedAt.toISOString(),
366
+ },
367
+ };
368
+ return {
369
+ list,
370
+ projection: projectionSync,
371
+ };
372
+ }
373
+ //# sourceMappingURL=query.js.map