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,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const node_test_1 = require("node:test");
5
+ const query_1 = require("../query");
6
+ const departmentId = "5195426cc4e016a988000969";
7
+ const movedAt = new Date("2024-01-01T00:00:00.000Z");
8
+ const modifiedDate = new Date("2024-01-02T00:00:00.000Z");
9
+ const longitude = -119.0669;
10
+ const latitude = 34.35264;
11
+ const diagonal = 5000;
12
+ (0, node_test_1.describe)("query", () => {
13
+ (0, node_test_1.describe)("adminListLocations", () => {
14
+ (0, node_test_1.it)("Scopes to the department, excludes uav and person/transponder-tracked records", () => {
15
+ const { list } = (0, query_1.adminListLocations)({ departmentId, movedAt });
16
+ chai_1.assert.equal(list.active, true);
17
+ chai_1.assert.equal(list.departmentId, departmentId);
18
+ chai_1.assert.deepEqual(list.kindType, { $ne: "uav" });
19
+ });
20
+ (0, node_test_1.it)("Drops the active filter when showAll is true", () => {
21
+ const { list } = (0, query_1.adminListLocations)({ departmentId, movedAt, showAll: true });
22
+ chai_1.assert.isUndefined(list.active);
23
+ });
24
+ (0, node_test_1.it)("Keeps the active filter when showAll is not set", () => {
25
+ const { list } = (0, query_1.adminListLocations)({ departmentId, movedAt });
26
+ chai_1.assert.property(list, "active");
27
+ });
28
+ });
29
+ (0, node_test_1.describe)("adminListPersonLocations", () => {
30
+ (0, node_test_1.it)("Scopes to the department and person kindType", () => {
31
+ const { list } = (0, query_1.adminListPersonLocations)({ departmentId, movedAt });
32
+ chai_1.assert.equal(list.active, true);
33
+ chai_1.assert.equal(list.departmentId, departmentId);
34
+ chai_1.assert.equal(list.kindType, "person");
35
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt });
36
+ });
37
+ (0, node_test_1.it)("Drops the active filter when showAll is true", () => {
38
+ const { list } = (0, query_1.adminListPersonLocations)({ departmentId, movedAt, showAll: true });
39
+ chai_1.assert.isUndefined(list.active);
40
+ });
41
+ });
42
+ (0, node_test_1.describe)("adminListUAVLocations", () => {
43
+ (0, node_test_1.it)("Scopes to the department and uav kindType", () => {
44
+ const { list } = (0, query_1.adminListUAVLocations)({ departmentId, movedAt });
45
+ chai_1.assert.equal(list.active, true);
46
+ chai_1.assert.equal(list.departmentId, departmentId);
47
+ chai_1.assert.equal(list.kindType, "uav");
48
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt });
49
+ });
50
+ (0, node_test_1.it)("Drops the active filter when showAll is true", () => {
51
+ const { list } = (0, query_1.adminListUAVLocations)({ departmentId, movedAt, showAll: true });
52
+ chai_1.assert.isUndefined(list.active);
53
+ });
54
+ });
55
+ (0, node_test_1.describe)("adminListAircraftLocations", () => {
56
+ (0, node_test_1.it)("Excludes the caller's department and matches shared ADSB aircraft", () => {
57
+ const { list } = (0, query_1.adminListAircraftLocations)({ departmentId, movedAt, longitude, latitude, diagonal });
58
+ chai_1.assert.equal(list.shared, true);
59
+ chai_1.assert.equal(list.active, true);
60
+ chai_1.assert.equal(list.source, "ADSB");
61
+ chai_1.assert.deepEqual(list.kindType, { $in: ["fixed-wing", "helicopter"] });
62
+ chai_1.assert.deepEqual(list.departmentId, { $ne: departmentId });
63
+ });
64
+ (0, node_test_1.it)("Sends movedAt as an ISO string", () => {
65
+ const { list } = (0, query_1.adminListAircraftLocations)({ departmentId, movedAt, longitude, latitude, diagonal });
66
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt.toISOString() });
67
+ });
68
+ (0, node_test_1.it)("Builds a $centerSphere filter as [longitude, latitude] with the diagonal converted to radians", () => {
69
+ const { list } = (0, query_1.adminListAircraftLocations)({ departmentId, movedAt, longitude, latitude, diagonal });
70
+ chai_1.assert.deepEqual(list.locationGeoJSON.$geoWithin.$centerSphere, [
71
+ [longitude, latitude],
72
+ diagonal / query_1.metersToRadians,
73
+ ]);
74
+ });
75
+ });
76
+ (0, node_test_1.describe)("adminListSharedLocations", () => {
77
+ (0, node_test_1.it)("Excludes the caller's department, ADSB source, and uav kindType", () => {
78
+ const { list } = (0, query_1.adminListSharedLocations)({ departmentId, movedAt, longitude, latitude, diagonal });
79
+ chai_1.assert.equal(list.shared, true);
80
+ chai_1.assert.equal(list.active, true);
81
+ chai_1.assert.deepEqual(list.source, { $ne: "ADSB" });
82
+ chai_1.assert.deepEqual(list.kindType, { $ne: "uav" });
83
+ chai_1.assert.deepEqual(list.departmentId, { $ne: departmentId });
84
+ });
85
+ });
86
+ (0, node_test_1.describe)("adminListFocusedLocations", () => {
87
+ (0, node_test_1.it)("Scopes to the caller's department with a geo filter", () => {
88
+ const { list } = (0, query_1.adminListFocusedLocations)({ departmentId, movedAt, longitude, latitude, diagonal });
89
+ chai_1.assert.equal(list.active, true);
90
+ chai_1.assert.equal(list.departmentId, departmentId);
91
+ chai_1.assert.property(list, "locationGeoJSON");
92
+ });
93
+ (0, node_test_1.it)("Drops the geo filter (not active) when showAll is true", () => {
94
+ const { list } = (0, query_1.adminListFocusedLocations)({ departmentId, movedAt, longitude, latitude, diagonal, showAll: true });
95
+ chai_1.assert.isUndefined(list.locationGeoJSON);
96
+ chai_1.assert.equal(list.active, true);
97
+ });
98
+ });
99
+ (0, node_test_1.describe)("syncListSharedLocations", () => {
100
+ (0, node_test_1.it)("Excludes the caller's department and ADSB/DroneSense sources", () => {
101
+ const { list } = (0, query_1.syncListSharedLocations)({ departmentId, movedAt, modifiedDate, longitude, latitude, diagonal });
102
+ chai_1.assert.equal(list.shared, true);
103
+ chai_1.assert.deepEqual(list.source, { $nin: ["ADSB", "DroneSense"] });
104
+ chai_1.assert.deepEqual(list.departmentId, { $ne: departmentId });
105
+ chai_1.assert.deepEqual(list.modified, { $gte: modifiedDate.toISOString() });
106
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt.toISOString() });
107
+ });
108
+ });
109
+ (0, node_test_1.describe)("syncListLocations", () => {
110
+ (0, node_test_1.it)("Scopes to the department, excludes uav and person/transponder-tracked records", () => {
111
+ const { list } = (0, query_1.syncListLocations)({ departmentId, movedAt, modifiedDate });
112
+ chai_1.assert.equal(list.departmentId, departmentId);
113
+ chai_1.assert.deepEqual(list.kindType, { $ne: "uav" });
114
+ chai_1.assert.deepEqual(list.modified, { $gte: modifiedDate.toISOString() });
115
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt.toISOString() });
116
+ chai_1.assert.deepEqual(list.$and, [
117
+ { $or: [{ personnelUUID: "" }, { personnelUUID: { $exists: false } }] },
118
+ { $or: [{ transponderUUID: "" }, { transponderUUID: { $exists: false } }] },
119
+ ]);
120
+ });
121
+ });
122
+ (0, node_test_1.describe)("syncListPersonLocations", () => {
123
+ (0, node_test_1.it)("Scopes to the department and person kindType", () => {
124
+ const { list } = (0, query_1.syncListPersonLocations)({ departmentId, movedAt, modifiedDate });
125
+ chai_1.assert.equal(list.departmentId, departmentId);
126
+ chai_1.assert.equal(list.kindType, "person");
127
+ chai_1.assert.deepEqual(list.modified, { $gte: modifiedDate.toISOString() });
128
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt.toISOString() });
129
+ });
130
+ });
131
+ (0, node_test_1.describe)("syncListUAVLocations", () => {
132
+ (0, node_test_1.it)("Scopes to the department and uav kindType", () => {
133
+ const { list } = (0, query_1.syncListUAVLocations)({ departmentId, movedAt, modifiedDate });
134
+ chai_1.assert.equal(list.departmentId, departmentId);
135
+ chai_1.assert.equal(list.kindType, "uav");
136
+ chai_1.assert.deepEqual(list.modified, { $gte: modifiedDate.toISOString() });
137
+ chai_1.assert.deepEqual(list.movedAt, { $gte: movedAt.toISOString() });
138
+ });
139
+ });
140
+ (0, node_test_1.describe)("syncListAircraftLocations", () => {
141
+ const base = { departmentId, movedAt, modifiedDate };
142
+ (0, node_test_1.it)("Matches shared ADSB aircraft, scoped away from the caller's department", () => {
143
+ const { list } = (0, query_1.syncListAircraftLocations)({ ...base, longitude, latitude, diagonal });
144
+ chai_1.assert.equal(list.shared, true);
145
+ chai_1.assert.equal(list.source, "ADSB");
146
+ chai_1.assert.deepEqual(list.kindType, { $in: ["fixed-wing", "helicopter"] });
147
+ chai_1.assert.deepEqual(list.departmentId, { $ne: departmentId });
148
+ });
149
+ (0, node_test_1.it)("Adds a geo filter when given valid, non-zero coordinates", () => {
150
+ const { list } = (0, query_1.syncListAircraftLocations)({ ...base, longitude, latitude, diagonal });
151
+ chai_1.assert.deepEqual(list.locationGeoJSON.$geoWithin.$centerSphere, [
152
+ [longitude, latitude],
153
+ diagonal / query_1.metersToRadians,
154
+ ]);
155
+ });
156
+ (0, node_test_1.it)("Omits the geo filter when coordinates are at the origin", () => {
157
+ const { list } = (0, query_1.syncListAircraftLocations)({ ...base, longitude: 0, latitude: 0, diagonal });
158
+ chai_1.assert.isUndefined(list.locationGeoJSON);
159
+ });
160
+ (0, node_test_1.it)("Omits the geo filter when coordinates are within the origin (<= 0.01)", () => {
161
+ const { list } = (0, query_1.syncListAircraftLocations)({ ...base, longitude: 0.01, latitude: 0.01, diagonal });
162
+ chai_1.assert.isUndefined(list.locationGeoJSON);
163
+ });
164
+ (0, node_test_1.it)("Omits the geo filter when latitude is out of range", () => {
165
+ const { list } = (0, query_1.syncListAircraftLocations)({ ...base, longitude, latitude: 90, diagonal });
166
+ chai_1.assert.isUndefined(list.locationGeoJSON);
167
+ });
168
+ (0, node_test_1.it)("Omits the geo filter when longitude is out of range", () => {
169
+ const { list } = (0, query_1.syncListAircraftLocations)({ ...base, longitude: 180, latitude, diagonal });
170
+ chai_1.assert.isUndefined(list.locationGeoJSON);
171
+ });
172
+ });
173
+ });
174
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/test/query.ts"],"names":[],"mappings":"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"}
package/cspell.json CHANGED
@@ -7,11 +7,14 @@
7
7
  // words - list of words to be always considered correct
8
8
  "words": [
9
9
  "accesslog",
10
+ "ADSB",
10
11
  "agencyapi",
11
12
  "agencypersonnelapi",
12
13
  "apikey",
13
14
  "backend",
14
15
  "bamse",
16
+ "BEEDOO",
17
+ "BOOPBEEP",
15
18
  "devops",
16
19
  "dmon",
17
20
  "expireat",
@@ -31,6 +34,7 @@
31
34
  "Somewear",
32
35
  "stacktraces",
33
36
  "tabletcommand",
37
+ "TXRX",
34
38
  "tyrion",
35
39
  "unixtime",
36
40
  "Ursache",
@@ -56,4 +60,4 @@
56
60
  "files": [
57
61
  "src/**"
58
62
  ]
59
- }
63
+ }
@@ -0,0 +1,18 @@
1
+ import { AccountIndustry } from "tabletcommand-backend-models";
2
+ export type AvlAudienceKind = "always" | "near" | "geo";
3
+ export interface AvlNearArea {
4
+ /** Radius around an anchor incident. Per-pair — deliberately not a shared constant. */
5
+ radiusMeters: number;
6
+ }
7
+ export type AvlAudienceEntry = {
8
+ kind: "always";
9
+ } | {
10
+ kind: "near";
11
+ area: AvlNearArea;
12
+ } | {
13
+ kind: "geo";
14
+ };
15
+ /** owner industry -> reader industry -> entry, or null for denied. Every pair present. */
16
+ export type AvlAudienceMatrix = Record<AccountIndustry, Record<AccountIndustry, AvlAudienceEntry | null>>;
17
+ export declare const AVL_AUDIENCE_MATRIX: AvlAudienceMatrix;
18
+ //# sourceMappingURL=audience.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpB,0FAA0F;AAC1F,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;AAQ1G,eAAO,MAAM,mBAAmB,EAAE,iBA0BjC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { DepartmentModel, LocationModel, CADVehicleModel, DeviceMappingModel, Department } from "tabletcommand-backend-models";
2
2
  import { LocationKindType, LocationPayload, LocationSource, LocationVisibility } from "./types";
3
3
  export { LocationKindType, LocationPayload, LocationSource, LocationVisibility, };
4
+ export * as query from "./query";
4
5
  export declare function lib(departmentModel: DepartmentModel, locationModel: LocationModel, cadVehicleModel: CADVehicleModel, deviceMappingModel: DeviceMappingModel): {
5
6
  processLocations: (department: Partial<Department>, items: LocationPayload[] | null | undefined) => Promise<void | never[]>;
6
7
  processLocationsDeviceMapping: (department: Partial<Department>, items: LocationPayload[] | null | undefined) => Promise<void | never[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,CAAC;AAEF,wBAAgB,GAAG,CACjB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB;mCAQM,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,GAAG,IAAI,GAAG,SAAS;gDAiBnD,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,GAAG,IAAI,GAAG,SAAS;EAsC1H;AAED,eAAe,GAAG,CAAC;AACnB,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,CAAC;AAKF,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,wBAAgB,GAAG,CACjB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB;mCAKM,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,GAAG,IAAI,GAAG,SAAS;gDAiBnD,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,GAAG,IAAI,GAAG,SAAS;EAqB1H;AAED,eAAe,GAAG,CAAC;AACnB,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAIX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW;2BAmIL,eAAe,cAAc,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI;;;;;;;;;;;;;;;;;;;;;;+BAsB1D,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,UAAU,IAAI;kDA+BxC,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,UAAU,IAAI;EAoDvH;AAED,eAAe,QAAQ,CAAC;AACxB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EAKX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW;2BAoJL,eAAe,cAAc,OAAO,CAAC,UAAU,CAAC,UAAU,IAAI;;;;;;;;;;;;;;;;;;;;;;+BAmD1D,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,UAAU,IAAI;kDAoCxC,OAAO,CAAC,UAAU,CAAC,SAAS,eAAe,EAAE,UAAU,IAAI;EA4DvH;AAED,eAAe,QAAQ,CAAC;AACxB,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { FilterQuery, ProjectionType, SortOrder } from "mongoose";
2
+ import { Location } from "tabletcommand-backend-models";
3
+ export type MQP = {
4
+ list: FilterQuery<Location>;
5
+ projection: ProjectionType<Location>;
6
+ sortBy?: Record<string, SortOrder>;
7
+ };
8
+ export type AdminListLocationParams1 = {
9
+ departmentId: string;
10
+ movedAt: Date;
11
+ showAll?: boolean;
12
+ };
13
+ export type AdminListLocationParams2 = {
14
+ departmentId: string;
15
+ movedAt: Date;
16
+ longitude: number;
17
+ latitude: number;
18
+ diagonal: number;
19
+ showAll?: boolean;
20
+ };
21
+ export type SyncModifiedDate = {
22
+ modifiedDate: Date;
23
+ };
24
+ export declare const metersToRadians = 6378100;
25
+ export declare function adminListLocations(params: AdminListLocationParams1): MQP;
26
+ export declare function adminListPersonLocations(params: AdminListLocationParams1): MQP;
27
+ export declare function adminListUAVLocations(params: AdminListLocationParams1): MQP;
28
+ export declare function adminListAircraftLocations(params: AdminListLocationParams2): MQP;
29
+ export declare function adminListSharedLocations(params: AdminListLocationParams2): MQP;
30
+ export declare function adminListFocusedLocations(params: AdminListLocationParams2): MQP;
31
+ export declare function syncListSharedLocations(params: AdminListLocationParams2 & SyncModifiedDate): MQP;
32
+ export declare function syncListLocations(params: AdminListLocationParams1 & SyncModifiedDate): MQP;
33
+ export declare function syncListPersonLocations(params: AdminListLocationParams1 & SyncModifiedDate): MQP;
34
+ export declare function syncListAircraftLocations(params: AdminListLocationParams2 & SyncModifiedDate): MQP;
35
+ export declare function syncListUAVLocations(params: AdminListLocationParams1 & SyncModifiedDate): MQP;
36
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,QAAQ,EACT,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,eAAe,UAAU,CAAC;AAiDvC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CA4BxE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CA4C9E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CAgD3E;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CA6BhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CA+B9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CA2B/E;AA0CD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,GAAG,CA+BhG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,GAAG,CAyB1F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,GAAG,CAsBhG;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,GAAG,CAuClG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,GAAG,GAAG,CAuB7F"}
@@ -42,6 +42,11 @@ export declare function store(departmentModel: DepartmentModel, locationModel: L
42
42
  note: string;
43
43
  mapHidden: boolean;
44
44
  locationToCAD: boolean;
45
+ cadToCAD: {
46
+ activeTransfer: boolean;
47
+ homeDepartmentId: string;
48
+ transferDate: Date;
49
+ };
45
50
  }> & Required<{
46
51
  _id: import("mongoose").Types.ObjectId;
47
52
  }> & {
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,QAAQ,EACR,aAAa,EACb,eAAe,EACf,UAAU,EACV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,KAAK,CACnB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB;uBAIN,eAAe,gBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;;;mCAQzB,eAAe,gBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;0BAS9C,OAAO,CAAC,UAAU,CAAC,gBAAgB,MAAM;;;;;2BAaxC,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI;EAqGpE;AACD,eAAe,KAAK,CAAC;AACrB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,QAAQ,EAER,aAAa,EACb,eAAe,EACf,UAAU,EACV,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,KAAK,CACnB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB;uBAIN,eAAe,gBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;;;mCAQzB,eAAe,gBAAgB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAS9C,OAAO,CAAC,UAAU,CAAC,gBAAgB,MAAM;;;;;2BAiBxC,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI;EAkJpE;AACD,eAAe,KAAK,CAAC;AACrB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC"}
@@ -56,6 +56,11 @@ export default function (modelsModule: typeof import("tabletcommand-backend-mode
56
56
  }> & {
57
57
  __v: number;
58
58
  }, any>;
59
+ CADInterfaceMetaData: import("mongoose").Model<import("tabletcommand-backend-models").CADInterfaceMetaData, {}, {}, {}, import("mongoose").Document<unknown, {}, import("tabletcommand-backend-models").CADInterfaceMetaData, {}, {}> & import("tabletcommand-backend-models").CADInterfaceMetaData & Required<{
60
+ _id: import("mongoose").Types.ObjectId;
61
+ }> & {
62
+ __v: number;
63
+ }, any>;
59
64
  CADSimulation: import("mongoose").Model<import("tabletcommand-backend-models").CADSimulation, {}, {}, {}, import("mongoose").Document<unknown, {}, import("tabletcommand-backend-models").CADSimulation, {}, {}> & import("tabletcommand-backend-models").CADSimulation & Required<{
60
65
  _id: import("mongoose").Types.ObjectId;
61
66
  }> & {
@@ -296,6 +301,11 @@ export default function (modelsModule: typeof import("tabletcommand-backend-mode
296
301
  }> & {
297
302
  __v: number;
298
303
  }, any>;
304
+ TrackerResponder: import("mongoose").Model<import("tabletcommand-backend-models").TrackerResponder, {}, {}, {}, import("mongoose").Document<unknown, {}, import("tabletcommand-backend-models").TrackerResponder, {}, {}> & import("tabletcommand-backend-models").TrackerResponder & Required<{
305
+ _id: import("mongoose").Types.ObjectId;
306
+ }> & {
307
+ __v: number;
308
+ }, any>;
299
309
  User: import("mongoose").Model<import("tabletcommand-backend-models").User, {}, {}, {}, import("mongoose").Document<unknown, {}, import("tabletcommand-backend-models").User, {}, {}> & import("tabletcommand-backend-models").User & Required<{
300
310
  _id: import("mongoose").Types.ObjectId;
301
311
  }> & {
@@ -316,6 +326,11 @@ export default function (modelsModule: typeof import("tabletcommand-backend-mode
316
326
  }> & {
317
327
  __v: number;
318
328
  }, any>;
329
+ WatchDutyEvent: import("mongoose").Model<import("tabletcommand-backend-models").WatchDutyEvent, {}, {}, {}, import("mongoose").Document<unknown, {}, import("tabletcommand-backend-models").WatchDutyEvent, {}, {}> & import("tabletcommand-backend-models").WatchDutyEvent & Required<{
330
+ _id: import("mongoose").Types.ObjectId;
331
+ }> & {
332
+ __v: number;
333
+ }, any>;
319
334
  }>;
320
335
  beforeEach: () => Promise<void>;
321
336
  after: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/test/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EACL,aAAa,EACb,MAAM,EACN,UAAU,EAEX,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,OAAO,WAAU,YAAY,EAAE,cAAc,8BAA8B,CAAC;;;0BAwF9C,aAAa;4BASX,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAsD5B,aAAa;yBAIT,OAAO,QAAQ;EAgB1C"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/test/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EACL,aAAa,EAEb,MAAM,EACN,UAAU,EAEX,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,OAAO,WAAU,YAAY,EAAE,cAAc,8BAA8B,CAAC;;;0BA6F9C,aAAa;4BASX,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAsD5B,aAAa;yBAIT,OAAO,QAAQ;EAgB1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/test/query.ts"],"names":[],"mappings":""}
@@ -19,6 +19,11 @@ export interface LocationPayload {
19
19
  heading?: number;
20
20
  vehicleId: string;
21
21
  visibility: LocationVisibility[];
22
+ personnelUUID?: string;
23
+ transponderUUID?: string;
24
+ userId?: string;
25
+ session?: string;
26
+ username?: string;
22
27
  }
23
28
  export interface Vehicle {
24
29
  departmentId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,EAAE,CAAC;IAIjC,aAAa,CAAC,EAAE,MAAM,CAAC;IAIvB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;CACnC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabletcommand-location",
3
- "version": "2.3.8",
3
+ "version": "2.4.1",
4
4
  "description": "Tablet Command Location",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -14,30 +14,34 @@
14
14
  "dependencies": {
15
15
  "debug": "^4.4.3",
16
16
  "lodash": "~4.18.1",
17
- "tabletcommand-backend-models": "~7.4.95"
17
+ "tabletcommand-backend-models": "~7.4.110"
18
+ },
19
+ "peerDependencies": {
20
+ "mongoose": "^8.24.1"
18
21
  },
19
22
  "devDependencies": {
20
- "@eslint/eslintrc": "^3.3.5",
21
- "@eslint/js": "^9.39.4",
23
+ "@eslint/eslintrc": "^3.3.6",
24
+ "@eslint/js": "^9.39.5",
22
25
  "@types/chai": "^5.2.3",
23
26
  "@types/debug": "^4.1.13",
24
27
  "@types/express": "^4.17.25",
25
- "@types/lodash": "^4.17.24",
26
- "@types/node": "^24.12.4",
27
- "@typescript-eslint/eslint-plugin": "^8.59.3",
28
- "@typescript-eslint/parser": "^8.59.3",
28
+ "@types/lodash": "^4.17.25",
29
+ "@types/node": "^24.13.3",
30
+ "@typescript-eslint/eslint-plugin": "^8.67.0",
31
+ "@typescript-eslint/parser": "^8.67.0",
29
32
  "chai": "^6.2.2",
30
- "cspell": "^10.0.0",
33
+ "cspell": "^10.0.1",
31
34
  "del": "^8.0.1",
32
- "eslint": "^9.39.4",
35
+ "eslint": "^9.39.5",
33
36
  "eslint-plugin-promise": "^7.3.0",
34
- "eslint-plugin-security": "^4.0.0",
35
- "globals": "^17.6.0",
37
+ "eslint-plugin-security": "^4.0.1",
38
+ "globals": "^17.11.0",
36
39
  "gulp": "^5.0.1",
37
40
  "gulp-execa": "^8.0.1",
41
+ "mongoose": "^8.24.3",
38
42
  "neostandard": "^0.13.0",
39
- "tsx": "^4.21.0",
40
- "type-coverage": "^2.29.7",
43
+ "tsx": "^4.23.12",
44
+ "type-coverage": "^2.30.1",
41
45
  "typescript": "~5.9.3"
42
46
  },
43
47
  "typeCoverage": {
@@ -0,0 +1,54 @@
1
+ import {
2
+ AccountIndustry,
3
+ } from "tabletcommand-backend-models";
4
+
5
+ export type AvlAudienceKind = "always" | "near" | "geo";
6
+
7
+ export interface AvlNearArea {
8
+ /** Radius around an anchor incident. Per-pair — deliberately not a shared constant. */
9
+ radiusMeters: number;
10
+ }
11
+
12
+ export type AvlAudienceEntry =
13
+ | { kind: "always" }
14
+ | { kind: "near"; area: AvlNearArea } // area required exactly when near
15
+ | { kind: "geo" }; // geometry comes from the OWNER's shareAVL.area
16
+
17
+ /** owner industry -> reader industry -> entry, or null for denied. Every pair present. */
18
+ export type AvlAudienceMatrix = Record<AccountIndustry, Record<AccountIndustry, AvlAudienceEntry | null>>;
19
+
20
+ const ALWAYS: AvlAudienceEntry = { kind: "always" };
21
+ // eslint-ignore-next-line
22
+ // const GEO: AvlAudienceEntry = { kind: "geo" };
23
+ const DENY = null;
24
+ const NEAR: AvlAudienceEntry = { kind: "near", area: { radiusMeters: 5000 } }; // 5km ~ 3.1mi
25
+
26
+ export const AVL_AUDIENCE_MATRIX: AvlAudienceMatrix = {
27
+ // owner => reader
28
+ [AccountIndustry.Fire]: {
29
+ [AccountIndustry.Fire]: ALWAYS,
30
+ [AccountIndustry.Law]: ALWAYS,
31
+ [AccountIndustry.Campus]: DENY,
32
+ [AccountIndustry.Utility]: NEAR,
33
+ },
34
+ [AccountIndustry.Law]: {
35
+ [AccountIndustry.Fire]: NEAR,
36
+ [AccountIndustry.Law]: ALWAYS,
37
+ [AccountIndustry.Campus]: DENY,
38
+ [AccountIndustry.Utility]: DENY,
39
+ },
40
+ [AccountIndustry.Campus]: {
41
+ [AccountIndustry.Fire]: ALWAYS,
42
+ [AccountIndustry.Law]: ALWAYS,
43
+ [AccountIndustry.Campus]: DENY, // deliberate — see above
44
+ [AccountIndustry.Utility]: DENY,
45
+ },
46
+ [AccountIndustry.Utility]: {
47
+ [AccountIndustry.Fire]: NEAR,
48
+ [AccountIndustry.Law]: DENY,
49
+ [AccountIndustry.Campus]: DENY,
50
+ [AccountIndustry.Utility]: ALWAYS,
51
+ },
52
+ };
53
+
54
+ // Unused/Incomplete
package/src/index.ts CHANGED
@@ -23,6 +23,11 @@ export {
23
23
  LocationVisibility,
24
24
  };
25
25
 
26
+ // When used externally
27
+ // import { query } from "tabletcommand-location";
28
+ // query.adminListLocations({ departmentId, movedAt });
29
+ export * as query from "./query";
30
+
26
31
  export function lib(
27
32
  departmentModel: DepartmentModel,
28
33
  locationModel: LocationModel,
@@ -31,9 +36,6 @@ export function lib(
31
36
  ) {
32
37
  const store = storeModule(departmentModel, locationModel, cadVehicleModel, deviceMappingModel);
33
38
  const location = locationModule(store);
34
- // async function processVehicle(department: Partial<Department>, item: Partial<CADVehicle>) {
35
- // // await location.processVehicle()
36
- // }
37
39
 
38
40
  async function processLocations(department: Partial<Department>, items: LocationPayload[] | null | undefined) {
39
41
  const atDate = new Date();
@@ -69,26 +71,9 @@ export function lib(
69
71
  }
70
72
  }
71
73
 
72
- // async function processLocationsOnly(department: Partial<Department>, items: Partial<Location>[] | null | undefined, agency: Partial<Agency>) {
73
- // try {
74
- // if (_.isUndefined(items) || _.isNull(items)) {
75
- // return [];
76
- // }
77
- // if (_.isObject(items) && !_.isArray(items)) {
78
- // items = [items];
79
- // }
80
- // const result = await location.processItemsNoVehicle(department, items, agency);
81
- // return result;
82
- // } catch (err) {
83
- // throw err;
84
- // }
85
- // }
86
-
87
74
  return {
88
- // processVehicle,
89
75
  processLocations,
90
76
  processLocationsDeviceMapping,
91
- // processLocationsOnly,
92
77
  };
93
78
  }
94
79