clarion-shared-types 1.0.93 → 1.0.95

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 (30) hide show
  1. package/dist/cjs/modules/permission/enums/permission-actions.enum.js +16 -0
  2. package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
  3. package/dist/cjs/modules/permission/enums/permissions-moudule.enum.js +1 -0
  4. package/dist/cjs/modules/permission/enums/permissions-moudule.enum.js.map +1 -1
  5. package/dist/cjs/modules/role/constants/roles-by-scope.js +7 -2
  6. package/dist/cjs/modules/role/constants/roles-by-scope.js.map +1 -1
  7. package/dist/cjs/modules/role/enums/role.enum.js +14 -0
  8. package/dist/cjs/modules/role/enums/role.enum.js.map +1 -1
  9. package/dist/cjs/modules/tracking/index.js +1 -0
  10. package/dist/cjs/modules/tracking/index.js.map +1 -1
  11. package/dist/cjs/modules/tracking/interfaces/tracking-provider-descriptor.js +17 -0
  12. package/dist/cjs/modules/tracking/interfaces/tracking-provider-descriptor.js.map +1 -0
  13. package/dist/esm/modules/permission/enums/permission-actions.enum.js +16 -0
  14. package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
  15. package/dist/esm/modules/permission/enums/permissions-moudule.enum.js +1 -0
  16. package/dist/esm/modules/permission/enums/permissions-moudule.enum.js.map +1 -1
  17. package/dist/esm/modules/role/constants/roles-by-scope.js +7 -2
  18. package/dist/esm/modules/role/constants/roles-by-scope.js.map +1 -1
  19. package/dist/esm/modules/role/enums/role.enum.js +14 -0
  20. package/dist/esm/modules/role/enums/role.enum.js.map +1 -1
  21. package/dist/esm/modules/tracking/index.js +1 -0
  22. package/dist/esm/modules/tracking/index.js.map +1 -1
  23. package/dist/esm/modules/tracking/interfaces/tracking-provider-descriptor.js +14 -0
  24. package/dist/esm/modules/tracking/interfaces/tracking-provider-descriptor.js.map +1 -0
  25. package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +12 -0
  26. package/dist/types/modules/permission/enums/permissions-moudule.enum.d.ts +1 -0
  27. package/dist/types/modules/role/enums/role.enum.d.ts +14 -0
  28. package/dist/types/modules/tracking/index.d.ts +1 -0
  29. package/dist/types/modules/tracking/interfaces/tracking-provider-descriptor.d.ts +111 -0
  30. package/package.json +1 -1
@@ -55,6 +55,22 @@ var PermissionActions;
55
55
  PermissionActions["READ_RESPONSE_UNIT"] = "read:response-unit";
56
56
  PermissionActions["UPDATE_RESPONSE_UNIT"] = "update:response-unit";
57
57
  PermissionActions["DELETE_RESPONSE_UNIT"] = "delete:response-unit";
58
+ // Module: Tracking (clarion-response-tracking). Mirrors grm-shared-library.
59
+ // UPDATE of a provider connection also covers test / enable / disable /
60
+ // reconnect; READ / UPDATE of a device binding also cover the unmapped-units
61
+ // worklist and resolving / reopening an entry on it.
62
+ PermissionActions["CREATE_TRACKING_PROVIDER_CONNECTION"] = "create:tracking-provider-connection";
63
+ PermissionActions["READ_TRACKING_PROVIDER_CONNECTION"] = "read:tracking-provider-connection";
64
+ PermissionActions["UPDATE_TRACKING_PROVIDER_CONNECTION"] = "update:tracking-provider-connection";
65
+ PermissionActions["DELETE_TRACKING_PROVIDER_CONNECTION"] = "delete:tracking-provider-connection";
66
+ PermissionActions["CREATE_TRACKING_DEVICE_BINDING"] = "create:tracking-device-binding";
67
+ PermissionActions["READ_TRACKING_DEVICE_BINDING"] = "read:tracking-device-binding";
68
+ PermissionActions["UPDATE_TRACKING_DEVICE_BINDING"] = "update:tracking-device-binding";
69
+ PermissionActions["DELETE_TRACKING_DEVICE_BINDING"] = "delete:tracking-device-binding";
70
+ PermissionActions["READ_TRACKING_POSITION"] = "read:tracking-position";
71
+ PermissionActions["READ_TRACKING_HISTORY"] = "read:tracking-history";
72
+ PermissionActions["READ_TRACKING_OPERATIONS"] = "read:tracking-operations";
73
+ PermissionActions["MANAGE_TRACKING_OPERATIONS"] = "manage:tracking-operations";
58
74
  // Module: Support
59
75
  //
60
76
  // Mirrors grm-shared-library exactly, values included: the admin gates its
@@ -1 +1 @@
1
- {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAuFX;AAvFD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,wEAAwE;IACxE,mEAAmE;IACnE,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,uDAAuD;IACvD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IAEvD,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAE7C,kBAAkB;IAClB,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,+BAA+B;IAC/B,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,kEAA6C,CAAA;IAC7C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,wEAAmD,CAAA;IACnD,0EAAqD,CAAA;IACrD,0EAAqD,CAAA;IACrD,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,8DAAyC,CAAA;IACzC,kFAA6D,CAAA;IAC7D,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;AAC/C,CAAC,EAvFW,iBAAiB,iCAAjB,iBAAiB,QAuF5B"}
1
+ {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAwGX;AAxGD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,wEAAwE;IACxE,mEAAmE;IACnE,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,uDAAuD;IACvD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IAEvD,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAE7C,4EAA4E;IAC5E,wEAAwE;IACxE,6EAA6E;IAC7E,qDAAqD;IACrD,gGAA2E,CAAA;IAC3E,4FAAuE,CAAA;IACvE,gGAA2E,CAAA;IAC3E,gGAA2E,CAAA;IAC3E,sFAAiE,CAAA;IACjE,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,sFAAiE,CAAA;IACjE,sEAAiD,CAAA;IACjD,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,8EAAyD,CAAA;IAEzD,kBAAkB;IAClB,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,+BAA+B;IAC/B,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,kEAA6C,CAAA;IAC7C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,wEAAmD,CAAA;IACnD,0EAAqD,CAAA;IACrD,0EAAqD,CAAA;IACrD,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,8DAAyC,CAAA;IACzC,kFAA6D,CAAA;IAC7D,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;AAC/C,CAAC,EAxGW,iBAAiB,iCAAjB,iBAAiB,QAwG5B"}
@@ -10,6 +10,7 @@ var PermissionsModule;
10
10
  PermissionsModule["ROLE"] = "Role";
11
11
  PermissionsModule["INCIDENT"] = "Grievance";
12
12
  PermissionsModule["RESPONSE_UNIT"] = "Response Unit";
13
+ PermissionsModule["TRACKING"] = "Tracking";
13
14
  PermissionsModule["SUPPORT"] = "Support";
14
15
  })(PermissionsModule || (exports.PermissionsModule = PermissionsModule = {}));
15
16
  //# sourceMappingURL=permissions-moudule.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-moudule.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-moudule.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBASX;AATD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,wCAAmB,CAAA;AACvB,CAAC,EATW,iBAAiB,iCAAjB,iBAAiB,QAS5B"}
1
+ {"version":3,"file":"permissions-moudule.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-moudule.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;AACvB,CAAC,EAVW,iBAAiB,iCAAjB,iBAAiB,QAU5B"}
@@ -5,12 +5,17 @@ const role_enum_1 = require("../enums/role.enum");
5
5
  exports.ORGANIZATION_ROLES = [
6
6
  role_enum_1.Roles.ORGANIZATION_OWNER,
7
7
  role_enum_1.Roles.ORGANIZATION_ADMIN,
8
- role_enum_1.Roles.ORGANIZATION_USER
8
+ role_enum_1.Roles.ORGANIZATION_USER,
9
+ role_enum_1.Roles.ORGANIZATION_BILLING_ADMIN,
10
+ role_enum_1.Roles.ORGANIZATION_NEWSFEED_ADMIN,
11
+ role_enum_1.Roles.ORGANIZATION_PARTNERSHIPS_ADMIN,
12
+ role_enum_1.Roles.ORGANIZATION_RESPONSE_UNITS_ADMIN
9
13
  ];
10
14
  exports.CONTROL_CENTRE_ROLES = [
11
15
  role_enum_1.Roles.CONTROL_CENTRE_ADMIN,
12
16
  role_enum_1.Roles.CONTROL_CENTRE_USER,
13
- role_enum_1.Roles.RESPONDER
17
+ role_enum_1.Roles.RESPONDER,
18
+ role_enum_1.Roles.CONTROL_CENTRE_RESPONSE_UNITS_ADMIN
14
19
  ];
15
20
  exports.MOBILE_ROLES = [
16
21
  role_enum_1.Roles.MOBILE_USER
@@ -1 +1 @@
1
- {"version":3,"file":"roles-by-scope.js","sourceRoot":"","sources":["../../../../../src/modules/role/constants/roles-by-scope.ts"],"names":[],"mappings":";;;AAAA,kDAA2C;AAE9B,QAAA,kBAAkB,GAAa;IACxC,iBAAK,CAAC,kBAAkB;IACxB,iBAAK,CAAC,kBAAkB;IACxB,iBAAK,CAAC,iBAAiB;CAC1B,CAAC;AAEW,QAAA,oBAAoB,GAAa;IAC1C,iBAAK,CAAC,oBAAoB;IAC1B,iBAAK,CAAC,mBAAmB;IACzB,iBAAK,CAAC,SAAS;CAClB,CAAC;AAEW,QAAA,YAAY,GAAa;IAClC,iBAAK,CAAC,WAAW;CACpB,CAAC"}
1
+ {"version":3,"file":"roles-by-scope.js","sourceRoot":"","sources":["../../../../../src/modules/role/constants/roles-by-scope.ts"],"names":[],"mappings":";;;AAAA,kDAA2C;AAE9B,QAAA,kBAAkB,GAAa;IACxC,iBAAK,CAAC,kBAAkB;IACxB,iBAAK,CAAC,kBAAkB;IACxB,iBAAK,CAAC,iBAAiB;IACvB,iBAAK,CAAC,0BAA0B;IAChC,iBAAK,CAAC,2BAA2B;IACjC,iBAAK,CAAC,+BAA+B;IACrC,iBAAK,CAAC,iCAAiC;CAC1C,CAAC;AAEW,QAAA,oBAAoB,GAAa;IAC1C,iBAAK,CAAC,oBAAoB;IAC1B,iBAAK,CAAC,mBAAmB;IACzB,iBAAK,CAAC,SAAS;IACf,iBAAK,CAAC,mCAAmC;CAC5C,CAAC;AAEW,QAAA,YAAY,GAAa;IAClC,iBAAK,CAAC,WAAW;CACpB,CAAC"}
@@ -7,12 +7,26 @@ var Roles;
7
7
  Roles["ORGANIZATION_OWNER"] = "Organization:Owner";
8
8
  Roles["ORGANIZATION_ADMIN"] = "Organization:Admin";
9
9
  Roles["ORGANIZATION_USER"] = "Organization:User";
10
+ Roles["ORGANIZATION_BILLING_ADMIN"] = "Organization:Billing-Admin";
11
+ Roles["ORGANIZATION_NEWSFEED_ADMIN"] = "Organization:Newsfeed-Admin";
12
+ /** Handles partnerships with third-party responders, and nothing else. */
13
+ Roles["ORGANIZATION_PARTNERSHIPS_ADMIN"] = "Organization:Partnerships-Admin";
14
+ /** Manages response units and how they are tracked, across the organization. */
15
+ Roles["ORGANIZATION_RESPONSE_UNITS_ADMIN"] = "Organization:Response-Units-Admin";
10
16
  Roles["CONTROL_CENTRE_ADMIN"] = "Control-Centre:Admin";
11
17
  Roles["CONTROL_CENTRE_USER"] = "Control-Centre:User";
18
+ /** The same job, confined to one control centre. */
19
+ Roles["CONTROL_CENTRE_RESPONSE_UNITS_ADMIN"] = "Control-Centre:Response-Units-Admin";
12
20
  Roles["RESPONDER"] = "Responder";
13
21
  Roles["MOBILE_USER"] = "Mobile-User";
14
22
  })(Roles || (exports.Roles = Roles = {}));
15
23
  /**
16
24
  * When defining a new role, also update the roles-by-scope.ts file
25
+ *
26
+ * A MIRROR of grm-shared-library's Roles, which is the authority: the backend
27
+ * declares roles and clarion-authentication seeds them. The admin client only
28
+ * compares role NAMES (to decide what to show), so a name missing here cannot be
29
+ * gated on at all. roles.spec.ts pins the values so the mirror cannot go stale
30
+ * silently again.
17
31
  */
18
32
  //# sourceMappingURL=role.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"role.enum.js","sourceRoot":"","sources":["../../../../../src/modules/role/enums/role.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,KASX;AATD,WAAY,KAAK;IACb,oCAA2B,CAAA;IAC3B,kDAAyC,CAAA;IACzC,kDAAyC,CAAA;IACzC,gDAAuC,CAAA;IACvC,sDAA6C,CAAA;IAC7C,oDAA2C,CAAA;IAC3C,gCAAuB,CAAA;IACvB,oCAA2B,CAAA;AAC/B,CAAC,EATW,KAAK,qBAAL,KAAK,QAShB;AAED;;GAEG"}
1
+ {"version":3,"file":"role.enum.js","sourceRoot":"","sources":["../../../../../src/modules/role/enums/role.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,KAiBX;AAjBD,WAAY,KAAK;IACb,oCAA2B,CAAA;IAC3B,kDAAyC,CAAA;IACzC,kDAAyC,CAAA;IACzC,gDAAuC,CAAA;IACvC,kEAAyD,CAAA;IACzD,oEAA2D,CAAA;IAC3D,0EAA0E;IAC1E,4EAAmE,CAAA;IACnE,gFAAgF;IAChF,gFAAuE,CAAA;IACvE,sDAA6C,CAAA;IAC7C,oDAA2C,CAAA;IAC3C,oDAAoD;IACpD,oFAA2E,CAAA;IAC3E,gCAAuB,CAAA;IACvB,oCAA2B,CAAA;AAC/B,CAAC,EAjBW,KAAK,qBAAL,KAAK,QAiBhB;AAED;;;;;;;;GAQG"}
@@ -21,6 +21,7 @@ __exportStar(require("./enums/tracking-connection-status.enum"), exports);
21
21
  __exportStar(require("./enums/tracking-unit-online-status.enum"), exports);
22
22
  // Interfaces / DTOs
23
23
  __exportStar(require("./interfaces/tracking-provider-connection.dto"), exports);
24
+ __exportStar(require("./interfaces/tracking-provider-descriptor"), exports);
24
25
  __exportStar(require("./interfaces/tracking-device-binding.dto"), exports);
25
26
  __exportStar(require("./interfaces/tracking-position.dto"), exports);
26
27
  __exportStar(require("./interfaces/tracking-socket-events"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,sEAAoD;AACpD,uEAAqD;AACrD,0EAAwD;AACxD,2EAAyD;AAEzD,oBAAoB;AACpB,gFAA8D;AAC9D,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,uEAAqD;AACrD,qEAAmD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,sEAAoD;AACpD,uEAAqD;AACrD,0EAAwD;AACxD,2EAAyD;AAEzD,oBAAoB;AACpB,gFAA8D;AAC9D,4EAA0D;AAC1D,2EAAyD;AACzD,qEAAmD;AACnD,sEAAoD;AACpD,uEAAqD;AACrD,qEAAmD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDefaultTrackingProviderConfiguration = buildDefaultTrackingProviderConfiguration;
4
+ /**
5
+ * The `configuration` a connection gets when the operator supplies none: every
6
+ * setting at its default. Stored explicitly on the connection so that readers
7
+ * which know nothing about adapters (the status evaluator, ingestion guards) see
8
+ * the provider's thresholds rather than the service-wide fallbacks.
9
+ */
10
+ function buildDefaultTrackingProviderConfiguration(descriptor) {
11
+ const configuration = {};
12
+ for (const setting of descriptor.settings) {
13
+ configuration[setting.key] = setting.defaultValue;
14
+ }
15
+ return configuration;
16
+ }
17
+ //# sourceMappingURL=tracking-provider-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking-provider-descriptor.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/interfaces/tracking-provider-descriptor.ts"],"names":[],"mappings":";;AAwHA,8FAQC;AAdD;;;;;GAKG;AACH,SAAgB,yCAAyC,CACrD,UAAwD;IAExD,MAAM,aAAa,GAA8C,EAAE,CAAC;IACpE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IACtD,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC"}
@@ -52,6 +52,22 @@ export var PermissionActions;
52
52
  PermissionActions["READ_RESPONSE_UNIT"] = "read:response-unit";
53
53
  PermissionActions["UPDATE_RESPONSE_UNIT"] = "update:response-unit";
54
54
  PermissionActions["DELETE_RESPONSE_UNIT"] = "delete:response-unit";
55
+ // Module: Tracking (clarion-response-tracking). Mirrors grm-shared-library.
56
+ // UPDATE of a provider connection also covers test / enable / disable /
57
+ // reconnect; READ / UPDATE of a device binding also cover the unmapped-units
58
+ // worklist and resolving / reopening an entry on it.
59
+ PermissionActions["CREATE_TRACKING_PROVIDER_CONNECTION"] = "create:tracking-provider-connection";
60
+ PermissionActions["READ_TRACKING_PROVIDER_CONNECTION"] = "read:tracking-provider-connection";
61
+ PermissionActions["UPDATE_TRACKING_PROVIDER_CONNECTION"] = "update:tracking-provider-connection";
62
+ PermissionActions["DELETE_TRACKING_PROVIDER_CONNECTION"] = "delete:tracking-provider-connection";
63
+ PermissionActions["CREATE_TRACKING_DEVICE_BINDING"] = "create:tracking-device-binding";
64
+ PermissionActions["READ_TRACKING_DEVICE_BINDING"] = "read:tracking-device-binding";
65
+ PermissionActions["UPDATE_TRACKING_DEVICE_BINDING"] = "update:tracking-device-binding";
66
+ PermissionActions["DELETE_TRACKING_DEVICE_BINDING"] = "delete:tracking-device-binding";
67
+ PermissionActions["READ_TRACKING_POSITION"] = "read:tracking-position";
68
+ PermissionActions["READ_TRACKING_HISTORY"] = "read:tracking-history";
69
+ PermissionActions["READ_TRACKING_OPERATIONS"] = "read:tracking-operations";
70
+ PermissionActions["MANAGE_TRACKING_OPERATIONS"] = "manage:tracking-operations";
55
71
  // Module: Support
56
72
  //
57
73
  // Mirrors grm-shared-library exactly, values included: the admin gates its
@@ -1 +1 @@
1
- {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAuFX;AAvFD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,wEAAwE;IACxE,mEAAmE;IACnE,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,uDAAuD;IACvD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IAEvD,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAE7C,kBAAkB;IAClB,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,+BAA+B;IAC/B,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,kEAA6C,CAAA;IAC7C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,wEAAmD,CAAA;IACnD,0EAAqD,CAAA;IACrD,0EAAqD,CAAA;IACrD,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,8DAAyC,CAAA;IACzC,kFAA6D,CAAA;IAC7D,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;AAC/C,CAAC,EAvFW,iBAAiB,KAAjB,iBAAiB,QAuF5B"}
1
+ {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAwGX;AAxGD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,wEAAwE;IACxE,mEAAmE;IACnE,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,uDAAuD;IACvD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IAEvD,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;IAE7C,4EAA4E;IAC5E,wEAAwE;IACxE,6EAA6E;IAC7E,qDAAqD;IACrD,gGAA2E,CAAA;IAC3E,4FAAuE,CAAA;IACvE,gGAA2E,CAAA;IAC3E,gGAA2E,CAAA;IAC3E,sFAAiE,CAAA;IACjE,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,sFAAiE,CAAA;IACjE,sEAAiD,CAAA;IACjD,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,8EAAyD,CAAA;IAEzD,kBAAkB;IAClB,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,+BAA+B;IAC/B,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,kEAA6C,CAAA;IAC7C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAC/C,wEAAmD,CAAA;IACnD,0EAAqD,CAAA;IACrD,0EAAqD,CAAA;IACrD,kEAA6C,CAAA;IAC7C,gEAA2C,CAAA;IAC3C,8DAAyC,CAAA;IACzC,kFAA6D,CAAA;IAC7D,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;AAC/C,CAAC,EAxGW,iBAAiB,KAAjB,iBAAiB,QAwG5B"}
@@ -7,6 +7,7 @@ export var PermissionsModule;
7
7
  PermissionsModule["ROLE"] = "Role";
8
8
  PermissionsModule["INCIDENT"] = "Grievance";
9
9
  PermissionsModule["RESPONSE_UNIT"] = "Response Unit";
10
+ PermissionsModule["TRACKING"] = "Tracking";
10
11
  PermissionsModule["SUPPORT"] = "Support";
11
12
  })(PermissionsModule || (PermissionsModule = {}));
12
13
  //# sourceMappingURL=permissions-moudule.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-moudule.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-moudule.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,wCAAmB,CAAA;AACvB,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B"}
1
+ {"version":3,"file":"permissions-moudule.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-moudule.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;AACvB,CAAC,EAVW,iBAAiB,KAAjB,iBAAiB,QAU5B"}
@@ -2,12 +2,17 @@ import { Roles } from "../enums/role.enum";
2
2
  export const ORGANIZATION_ROLES = [
3
3
  Roles.ORGANIZATION_OWNER,
4
4
  Roles.ORGANIZATION_ADMIN,
5
- Roles.ORGANIZATION_USER
5
+ Roles.ORGANIZATION_USER,
6
+ Roles.ORGANIZATION_BILLING_ADMIN,
7
+ Roles.ORGANIZATION_NEWSFEED_ADMIN,
8
+ Roles.ORGANIZATION_PARTNERSHIPS_ADMIN,
9
+ Roles.ORGANIZATION_RESPONSE_UNITS_ADMIN
6
10
  ];
7
11
  export const CONTROL_CENTRE_ROLES = [
8
12
  Roles.CONTROL_CENTRE_ADMIN,
9
13
  Roles.CONTROL_CENTRE_USER,
10
- Roles.RESPONDER
14
+ Roles.RESPONDER,
15
+ Roles.CONTROL_CENTRE_RESPONSE_UNITS_ADMIN
11
16
  ];
12
17
  export const MOBILE_ROLES = [
13
18
  Roles.MOBILE_USER
@@ -1 +1 @@
1
- {"version":3,"file":"roles-by-scope.js","sourceRoot":"","sources":["../../../../../src/modules/role/constants/roles-by-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAa;IACxC,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,iBAAiB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC1C,KAAK,CAAC,oBAAoB;IAC1B,KAAK,CAAC,mBAAmB;IACzB,KAAK,CAAC,SAAS;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAa;IAClC,KAAK,CAAC,WAAW;CACpB,CAAC"}
1
+ {"version":3,"file":"roles-by-scope.js","sourceRoot":"","sources":["../../../../../src/modules/role/constants/roles-by-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAa;IACxC,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,iBAAiB;IACvB,KAAK,CAAC,0BAA0B;IAChC,KAAK,CAAC,2BAA2B;IACjC,KAAK,CAAC,+BAA+B;IACrC,KAAK,CAAC,iCAAiC;CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC1C,KAAK,CAAC,oBAAoB;IAC1B,KAAK,CAAC,mBAAmB;IACzB,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,mCAAmC;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAa;IAClC,KAAK,CAAC,WAAW;CACpB,CAAC"}
@@ -4,12 +4,26 @@ export var Roles;
4
4
  Roles["ORGANIZATION_OWNER"] = "Organization:Owner";
5
5
  Roles["ORGANIZATION_ADMIN"] = "Organization:Admin";
6
6
  Roles["ORGANIZATION_USER"] = "Organization:User";
7
+ Roles["ORGANIZATION_BILLING_ADMIN"] = "Organization:Billing-Admin";
8
+ Roles["ORGANIZATION_NEWSFEED_ADMIN"] = "Organization:Newsfeed-Admin";
9
+ /** Handles partnerships with third-party responders, and nothing else. */
10
+ Roles["ORGANIZATION_PARTNERSHIPS_ADMIN"] = "Organization:Partnerships-Admin";
11
+ /** Manages response units and how they are tracked, across the organization. */
12
+ Roles["ORGANIZATION_RESPONSE_UNITS_ADMIN"] = "Organization:Response-Units-Admin";
7
13
  Roles["CONTROL_CENTRE_ADMIN"] = "Control-Centre:Admin";
8
14
  Roles["CONTROL_CENTRE_USER"] = "Control-Centre:User";
15
+ /** The same job, confined to one control centre. */
16
+ Roles["CONTROL_CENTRE_RESPONSE_UNITS_ADMIN"] = "Control-Centre:Response-Units-Admin";
9
17
  Roles["RESPONDER"] = "Responder";
10
18
  Roles["MOBILE_USER"] = "Mobile-User";
11
19
  })(Roles || (Roles = {}));
12
20
  /**
13
21
  * When defining a new role, also update the roles-by-scope.ts file
22
+ *
23
+ * A MIRROR of grm-shared-library's Roles, which is the authority: the backend
24
+ * declares roles and clarion-authentication seeds them. The admin client only
25
+ * compares role NAMES (to decide what to show), so a name missing here cannot be
26
+ * gated on at all. roles.spec.ts pins the values so the mirror cannot go stale
27
+ * silently again.
14
28
  */
15
29
  //# sourceMappingURL=role.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"role.enum.js","sourceRoot":"","sources":["../../../../../src/modules/role/enums/role.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,KASX;AATD,WAAY,KAAK;IACb,oCAA2B,CAAA;IAC3B,kDAAyC,CAAA;IACzC,kDAAyC,CAAA;IACzC,gDAAuC,CAAA;IACvC,sDAA6C,CAAA;IAC7C,oDAA2C,CAAA;IAC3C,gCAAuB,CAAA;IACvB,oCAA2B,CAAA;AAC/B,CAAC,EATW,KAAK,KAAL,KAAK,QAShB;AAED;;GAEG"}
1
+ {"version":3,"file":"role.enum.js","sourceRoot":"","sources":["../../../../../src/modules/role/enums/role.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,KAiBX;AAjBD,WAAY,KAAK;IACb,oCAA2B,CAAA;IAC3B,kDAAyC,CAAA;IACzC,kDAAyC,CAAA;IACzC,gDAAuC,CAAA;IACvC,kEAAyD,CAAA;IACzD,oEAA2D,CAAA;IAC3D,0EAA0E;IAC1E,4EAAmE,CAAA;IACnE,gFAAgF;IAChF,gFAAuE,CAAA;IACvE,sDAA6C,CAAA;IAC7C,oDAA2C,CAAA;IAC3C,oDAAoD;IACpD,oFAA2E,CAAA;IAC3E,gCAAuB,CAAA;IACvB,oCAA2B,CAAA;AAC/B,CAAC,EAjBW,KAAK,KAAL,KAAK,QAiBhB;AAED;;;;;;;;GAQG"}
@@ -5,6 +5,7 @@ export * from './enums/tracking-connection-status.enum';
5
5
  export * from './enums/tracking-unit-online-status.enum';
6
6
  // Interfaces / DTOs
7
7
  export * from './interfaces/tracking-provider-connection.dto';
8
+ export * from './interfaces/tracking-provider-descriptor';
8
9
  export * from './interfaces/tracking-device-binding.dto';
9
10
  export * from './interfaces/tracking-position.dto';
10
11
  export * from './interfaces/tracking-socket-events';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AAEzD,oBAAoB;AACpB,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/tracking/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AAEzD,oBAAoB;AACpB,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The `configuration` a connection gets when the operator supplies none: every
3
+ * setting at its default. Stored explicitly on the connection so that readers
4
+ * which know nothing about adapters (the status evaluator, ingestion guards) see
5
+ * the provider's thresholds rather than the service-wide fallbacks.
6
+ */
7
+ export function buildDefaultTrackingProviderConfiguration(descriptor) {
8
+ const configuration = {};
9
+ for (const setting of descriptor.settings) {
10
+ configuration[setting.key] = setting.defaultValue;
11
+ }
12
+ return configuration;
13
+ }
14
+ //# sourceMappingURL=tracking-provider-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking-provider-descriptor.js","sourceRoot":"","sources":["../../../../../src/modules/tracking/interfaces/tracking-provider-descriptor.ts"],"names":[],"mappings":"AAkHA;;;;;GAKG;AACH,MAAM,UAAU,yCAAyC,CACrD,UAAwD;IAExD,MAAM,aAAa,GAA8C,EAAE,CAAC;IACpE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IACtD,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC"}
@@ -38,6 +38,18 @@ export declare enum PermissionActions {
38
38
  READ_RESPONSE_UNIT = "read:response-unit",
39
39
  UPDATE_RESPONSE_UNIT = "update:response-unit",
40
40
  DELETE_RESPONSE_UNIT = "delete:response-unit",
41
+ CREATE_TRACKING_PROVIDER_CONNECTION = "create:tracking-provider-connection",
42
+ READ_TRACKING_PROVIDER_CONNECTION = "read:tracking-provider-connection",
43
+ UPDATE_TRACKING_PROVIDER_CONNECTION = "update:tracking-provider-connection",
44
+ DELETE_TRACKING_PROVIDER_CONNECTION = "delete:tracking-provider-connection",
45
+ CREATE_TRACKING_DEVICE_BINDING = "create:tracking-device-binding",
46
+ READ_TRACKING_DEVICE_BINDING = "read:tracking-device-binding",
47
+ UPDATE_TRACKING_DEVICE_BINDING = "update:tracking-device-binding",
48
+ DELETE_TRACKING_DEVICE_BINDING = "delete:tracking-device-binding",
49
+ READ_TRACKING_POSITION = "read:tracking-position",
50
+ READ_TRACKING_HISTORY = "read:tracking-history",
51
+ READ_TRACKING_OPERATIONS = "read:tracking-operations",
52
+ MANAGE_TRACKING_OPERATIONS = "manage:tracking-operations",
41
53
  CREATE_SUPPORT_TICKET = "create:support-ticket",
42
54
  READ_SUPPORT_TICKET = "read:support-ticket",
43
55
  UPDATE_SUPPORT_TICKET = "update:support-ticket",
@@ -6,5 +6,6 @@ export declare enum PermissionsModule {
6
6
  ROLE = "Role",
7
7
  INCIDENT = "Grievance",
8
8
  RESPONSE_UNIT = "Response Unit",
9
+ TRACKING = "Tracking",
9
10
  SUPPORT = "Support"
10
11
  }
@@ -3,11 +3,25 @@ export declare enum Roles {
3
3
  ORGANIZATION_OWNER = "Organization:Owner",
4
4
  ORGANIZATION_ADMIN = "Organization:Admin",
5
5
  ORGANIZATION_USER = "Organization:User",
6
+ ORGANIZATION_BILLING_ADMIN = "Organization:Billing-Admin",
7
+ ORGANIZATION_NEWSFEED_ADMIN = "Organization:Newsfeed-Admin",
8
+ /** Handles partnerships with third-party responders, and nothing else. */
9
+ ORGANIZATION_PARTNERSHIPS_ADMIN = "Organization:Partnerships-Admin",
10
+ /** Manages response units and how they are tracked, across the organization. */
11
+ ORGANIZATION_RESPONSE_UNITS_ADMIN = "Organization:Response-Units-Admin",
6
12
  CONTROL_CENTRE_ADMIN = "Control-Centre:Admin",
7
13
  CONTROL_CENTRE_USER = "Control-Centre:User",
14
+ /** The same job, confined to one control centre. */
15
+ CONTROL_CENTRE_RESPONSE_UNITS_ADMIN = "Control-Centre:Response-Units-Admin",
8
16
  RESPONDER = "Responder",
9
17
  MOBILE_USER = "Mobile-User"
10
18
  }
11
19
  /**
12
20
  * When defining a new role, also update the roles-by-scope.ts file
21
+ *
22
+ * A MIRROR of grm-shared-library's Roles, which is the authority: the backend
23
+ * declares roles and clarion-authentication seeds them. The admin client only
24
+ * compares role NAMES (to decide what to show), so a name missing here cannot be
25
+ * gated on at all. roles.spec.ts pins the values so the mirror cannot go stale
26
+ * silently again.
13
27
  */
@@ -3,6 +3,7 @@ export * from './enums/tracking-transport-type.enum';
3
3
  export * from './enums/tracking-connection-status.enum';
4
4
  export * from './enums/tracking-unit-online-status.enum';
5
5
  export * from './interfaces/tracking-provider-connection.dto';
6
+ export * from './interfaces/tracking-provider-descriptor';
6
7
  export * from './interfaces/tracking-device-binding.dto';
7
8
  export * from './interfaces/tracking-position.dto';
8
9
  export * from './interfaces/tracking-socket-events';
@@ -0,0 +1,111 @@
1
+ import { TrackingProviderCode } from '../enums/tracking-provider-code.enum';
2
+ import { TrackingTransportType } from '../enums/tracking-transport-type.enum';
3
+ /**
4
+ * Self-description of a tracking provider, published by clarion-response-tracking
5
+ * (`GET /tracking/providers`) and rendered by the admin client.
6
+ *
7
+ * Why it exists: every provider needs different things from an operator. Telox
8
+ * wants a WebSocket URL, a username, a domain and a password; Wialon wants an
9
+ * HTTPS host and an API token and has no domain at all; and each scales its raw
10
+ * telemetry differently. Encoding that in the client meant a form that only fit
11
+ * one provider and defaults that had to be kept in step with the service by hand.
12
+ * With a descriptor the service that owns the adapter is the single source of
13
+ * truth: adding a provider changes no client code, and a default can never drift.
14
+ *
15
+ * Only providers with a registered adapter are described, so the catalog also
16
+ * answers "which providers can I actually connect?" — the enum alone cannot,
17
+ * because it reserves codes for adapters that do not exist yet.
18
+ *
19
+ * Mirrors `grm-shared-library`'s TrackingProviderDescriptor (the backend copy also
20
+ * carries the validator the service enforces these bounds with).
21
+ *
22
+ * SECURITY: a descriptor is static metadata. It never carries a secret, a secret
23
+ * reference, or anything tenant-specific.
24
+ */
25
+ export type TrackingProviderSettingType = 'number' | 'boolean' | 'select' | 'text';
26
+ export interface TrackingProviderSettingOption {
27
+ value: string;
28
+ label: string;
29
+ }
30
+ /** One key of a provider connection's `configuration` blob. */
31
+ export interface TrackingProviderSettingDescriptor {
32
+ /** The `configuration` key this setting is stored under. */
33
+ key: string;
34
+ label: string;
35
+ type: TrackingProviderSettingType;
36
+ /** Key of the {@link TrackingProviderSettingGroupDescriptor} it is shown under. */
37
+ group: string;
38
+ /** Applied by the service when the key is absent, and pre-filled by the client. */
39
+ defaultValue: number | boolean | string;
40
+ description?: string;
41
+ /** Display unit, e.g. `s`, `m`, `km/h`. */
42
+ unit?: string;
43
+ /** `number` settings only. Bounds are inclusive and enforced by the service. */
44
+ min?: number;
45
+ max?: number;
46
+ step?: number;
47
+ /** `number` settings only: reject fractional values. */
48
+ integer?: boolean;
49
+ /** `text` settings only. */
50
+ maxLength?: number;
51
+ /** `select` settings only: the closed set of accepted values. */
52
+ options?: TrackingProviderSettingOption[];
53
+ }
54
+ export interface TrackingProviderSettingGroupDescriptor {
55
+ key: string;
56
+ label: string;
57
+ description?: string;
58
+ }
59
+ /** An optional connection field whose meaning (or existence) depends on the provider. */
60
+ export interface TrackingProviderFieldDescriptor {
61
+ /** false ⇒ the provider has no such concept: hide the field and send nothing. */
62
+ used: boolean;
63
+ required: boolean;
64
+ label: string;
65
+ placeholder?: string;
66
+ description?: string;
67
+ }
68
+ export interface TrackingProviderEndpointDescriptor {
69
+ label: string;
70
+ placeholder: string;
71
+ description?: string;
72
+ /** Pre-filled for providers with one well-known public endpoint. */
73
+ defaultValue?: string;
74
+ /** Accepted URL schemes, with the trailing colon: `wss:`, `https:`… */
75
+ protocols: string[];
76
+ }
77
+ /** What the referenced secret must contain. Describes the secret; never holds it. */
78
+ export interface TrackingProviderSecretDescriptor {
79
+ label: string;
80
+ description: string;
81
+ placeholder?: string;
82
+ }
83
+ /** How the provider identifies a unit — what an operator binds to a response unit. */
84
+ export interface TrackingProviderExternalUnitDescriptor {
85
+ label: string;
86
+ description: string;
87
+ placeholder?: string;
88
+ }
89
+ export interface TrackingProviderDescriptor {
90
+ providerCode: TrackingProviderCode;
91
+ displayName: string;
92
+ description: string;
93
+ /** Supported transports; the first is the default. */
94
+ transportTypes: TrackingTransportType[];
95
+ endpoint: TrackingProviderEndpointDescriptor;
96
+ externalUsername: TrackingProviderFieldDescriptor;
97
+ externalDomain: TrackingProviderFieldDescriptor;
98
+ secret: TrackingProviderSecretDescriptor;
99
+ externalUnitId: TrackingProviderExternalUnitDescriptor;
100
+ /** Display order of the setting groups. */
101
+ settingGroups: TrackingProviderSettingGroupDescriptor[];
102
+ settings: TrackingProviderSettingDescriptor[];
103
+ documentationUrl?: string;
104
+ }
105
+ /**
106
+ * The `configuration` a connection gets when the operator supplies none: every
107
+ * setting at its default. Stored explicitly on the connection so that readers
108
+ * which know nothing about adapters (the status evaluator, ingestion guards) see
109
+ * the provider's thresholds rather than the service-wide fallbacks.
110
+ */
111
+ export declare function buildDefaultTrackingProviderConfiguration(descriptor: Pick<TrackingProviderDescriptor, 'settings'>): Record<string, number | boolean | string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarion-shared-types",
3
- "version": "1.0.93",
3
+ "version": "1.0.95",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",