grm-shared-library 1.1.207 → 1.1.209

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 (49) hide show
  1. package/README.md +70 -0
  2. package/dist/cjs/modules/permission/data/permissions.data.js +17 -0
  3. package/dist/cjs/modules/permission/data/permissions.data.js.map +1 -1
  4. package/dist/cjs/modules/permission/enums/permission-actions.enum.js +36 -0
  5. package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
  6. package/dist/cjs/modules/permission/enums/permissions-module.enum.js +1 -0
  7. package/dist/cjs/modules/permission/enums/permissions-module.enum.js.map +1 -1
  8. package/dist/cjs/modules/role/constants/roles-by-scope.js +4 -2
  9. package/dist/cjs/modules/role/constants/roles-by-scope.js.map +1 -1
  10. package/dist/cjs/modules/role/data/roles.data.js +103 -5
  11. package/dist/cjs/modules/role/data/roles.data.js.map +1 -1
  12. package/dist/cjs/modules/role/enums/role.enum.js +16 -0
  13. package/dist/cjs/modules/role/enums/role.enum.js.map +1 -1
  14. package/dist/cjs/modules/tracking/enums/tracking-provider-code.enum.js +7 -4
  15. package/dist/cjs/modules/tracking/enums/tracking-provider-code.enum.js.map +1 -1
  16. package/dist/cjs/modules/tracking/enums/tracking-transport-type.enum.js +3 -3
  17. package/dist/cjs/modules/tracking/enums/tracking-transport-type.enum.js.map +1 -1
  18. package/dist/cjs/modules/tracking/index.js +2 -0
  19. package/dist/cjs/modules/tracking/index.js.map +1 -1
  20. package/dist/cjs/modules/tracking/interfaces/tracking-provider-descriptor.js +79 -0
  21. package/dist/cjs/modules/tracking/interfaces/tracking-provider-descriptor.js.map +1 -0
  22. package/dist/esm/modules/permission/data/permissions.data.js +17 -0
  23. package/dist/esm/modules/permission/data/permissions.data.js.map +1 -1
  24. package/dist/esm/modules/permission/enums/permission-actions.enum.js +36 -0
  25. package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
  26. package/dist/esm/modules/permission/enums/permissions-module.enum.js +1 -0
  27. package/dist/esm/modules/permission/enums/permissions-module.enum.js.map +1 -1
  28. package/dist/esm/modules/role/constants/roles-by-scope.js +4 -2
  29. package/dist/esm/modules/role/constants/roles-by-scope.js.map +1 -1
  30. package/dist/esm/modules/role/data/roles.data.js +103 -5
  31. package/dist/esm/modules/role/data/roles.data.js.map +1 -1
  32. package/dist/esm/modules/role/enums/role.enum.js +16 -0
  33. package/dist/esm/modules/role/enums/role.enum.js.map +1 -1
  34. package/dist/esm/modules/tracking/enums/tracking-provider-code.enum.js +7 -4
  35. package/dist/esm/modules/tracking/enums/tracking-provider-code.enum.js.map +1 -1
  36. package/dist/esm/modules/tracking/enums/tracking-transport-type.enum.js +3 -3
  37. package/dist/esm/modules/tracking/enums/tracking-transport-type.enum.js.map +1 -1
  38. package/dist/esm/modules/tracking/index.js +2 -0
  39. package/dist/esm/modules/tracking/index.js.map +1 -1
  40. package/dist/esm/modules/tracking/interfaces/tracking-provider-descriptor.js +75 -0
  41. package/dist/esm/modules/tracking/interfaces/tracking-provider-descriptor.js.map +1 -0
  42. package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +12 -0
  43. package/dist/types/modules/permission/enums/permissions-module.enum.d.ts +1 -0
  44. package/dist/types/modules/role/enums/role.enum.d.ts +16 -0
  45. package/dist/types/modules/tracking/enums/tracking-provider-code.enum.d.ts +7 -4
  46. package/dist/types/modules/tracking/enums/tracking-transport-type.enum.d.ts +3 -3
  47. package/dist/types/modules/tracking/index.d.ts +1 -0
  48. package/dist/types/modules/tracking/interfaces/tracking-provider-descriptor.d.ts +117 -0
  49. package/package.json +1 -1
@@ -5,14 +5,17 @@
5
5
  * per-provider adapter inside clarion-response-tracking understands the raw
6
6
  * wire format.
7
7
  *
8
- * Only {@link TrackingProviderCode.TELOX} has a working adapter in Phase 1. The
9
- * remaining values are reserved so future adapters can be added without changing
10
- * the shared contracts, database columns or Kafka events.
8
+ * {@link TrackingProviderCode.TELOX} and {@link TrackingProviderCode.WIALON} have
9
+ * working adapters. The remaining values are reserved so future adapters can be
10
+ * added without changing the shared contracts, database columns or Kafka events.
11
+ *
12
+ * A value here does NOT mean the provider can be connected — ask the service
13
+ * (`GET /tracking/providers`, see TrackingProviderDescriptor) which adapters exist.
11
14
  */
12
15
  export declare enum TrackingProviderCode {
13
16
  /** Telox WebSocket platform (G4S Phase 1 integration). */
14
17
  TELOX = "TELOX",
15
- /** Wialon (reserved — not implemented in Phase 1). */
18
+ /** Wialon Hosting / Wialon Local, polled over the Remote API. */
16
19
  WIALON = "WIALON",
17
20
  /** Teltonika direct device ingestion (reserved — not implemented in Phase 1). */
18
21
  TELTONIKA = "TELTONIKA",
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * How a provider connection physically transports telemetry into
3
- * clarion-response-tracking. Phase 1 implements only {@link WEBSOCKET} (Telox);
4
- * the remaining values are reserved for future adapters.
3
+ * clarion-response-tracking. {@link WEBSOCKET} (Telox) and {@link HTTP_POLLING}
4
+ * (Wialon) are implemented; the remaining values are reserved for future adapters.
5
5
  */
6
6
  export declare enum TrackingTransportType {
7
7
  /** Outbound WebSocket client maintained by the connector worker (Telox). */
8
8
  WEBSOCKET = "WEBSOCKET",
9
- /** Outbound HTTP polling loop. */
9
+ /** Outbound HTTP polling loop maintained by the connector worker (Wialon). */
10
10
  HTTP_POLLING = "HTTP_POLLING",
11
11
  /** Inbound TCP listener (direct device ingestion). */
12
12
  TCP = "TCP",
@@ -13,6 +13,7 @@ export * from './interfaces/response-unit-lifecycle-events';
13
13
  export * from './interfaces/tracking-unit-current-state';
14
14
  export * from './interfaces/tracking-socket-payloads';
15
15
  export * from './interfaces/tracking-realtime-envelope';
16
+ export * from './interfaces/tracking-provider-descriptor';
16
17
  export * from './constants/tracking-kafka.const';
17
18
  export * from './utils/tracking-event-id.util';
18
19
  export * from './utils/tracking-validation.util';
@@ -0,0 +1,117 @@
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
+ * SECURITY: a descriptor is static metadata. It never carries a secret, a secret
20
+ * reference, or anything tenant-specific.
21
+ */
22
+ export type TrackingProviderSettingType = 'number' | 'boolean' | 'select' | 'text';
23
+ export interface TrackingProviderSettingOption {
24
+ value: string;
25
+ label: string;
26
+ }
27
+ /** One key of a provider connection's `configuration` blob. */
28
+ export interface TrackingProviderSettingDescriptor {
29
+ /** The `configuration` key this setting is stored under. */
30
+ key: string;
31
+ label: string;
32
+ type: TrackingProviderSettingType;
33
+ /** Key of the {@link TrackingProviderSettingGroupDescriptor} it is shown under. */
34
+ group: string;
35
+ /** Applied by the service when the key is absent, and pre-filled by the client. */
36
+ defaultValue: number | boolean | string;
37
+ description?: string;
38
+ /** Display unit, e.g. `s`, `m`, `km/h`. */
39
+ unit?: string;
40
+ /** `number` settings only. Bounds are inclusive and enforced by the service. */
41
+ min?: number;
42
+ max?: number;
43
+ step?: number;
44
+ /** `number` settings only: reject fractional values. */
45
+ integer?: boolean;
46
+ /** `text` settings only. */
47
+ maxLength?: number;
48
+ /** `select` settings only: the closed set of accepted values. */
49
+ options?: TrackingProviderSettingOption[];
50
+ }
51
+ export interface TrackingProviderSettingGroupDescriptor {
52
+ key: string;
53
+ label: string;
54
+ description?: string;
55
+ }
56
+ /** An optional connection field whose meaning (or existence) depends on the provider. */
57
+ export interface TrackingProviderFieldDescriptor {
58
+ /** false ⇒ the provider has no such concept: hide the field and send nothing. */
59
+ used: boolean;
60
+ required: boolean;
61
+ label: string;
62
+ placeholder?: string;
63
+ description?: string;
64
+ }
65
+ export interface TrackingProviderEndpointDescriptor {
66
+ label: string;
67
+ placeholder: string;
68
+ description?: string;
69
+ /** Pre-filled for providers with one well-known public endpoint. */
70
+ defaultValue?: string;
71
+ /** Accepted URL schemes, with the trailing colon: `wss:`, `https:`… */
72
+ protocols: string[];
73
+ }
74
+ /** What the referenced secret must contain. Describes the secret; never holds it. */
75
+ export interface TrackingProviderSecretDescriptor {
76
+ label: string;
77
+ description: string;
78
+ placeholder?: string;
79
+ }
80
+ /** How the provider identifies a unit — what an operator binds to a response unit. */
81
+ export interface TrackingProviderExternalUnitDescriptor {
82
+ label: string;
83
+ description: string;
84
+ placeholder?: string;
85
+ }
86
+ export interface TrackingProviderDescriptor {
87
+ providerCode: TrackingProviderCode;
88
+ displayName: string;
89
+ description: string;
90
+ /** Supported transports; the first is the default. */
91
+ transportTypes: TrackingTransportType[];
92
+ endpoint: TrackingProviderEndpointDescriptor;
93
+ externalUsername: TrackingProviderFieldDescriptor;
94
+ externalDomain: TrackingProviderFieldDescriptor;
95
+ secret: TrackingProviderSecretDescriptor;
96
+ externalUnitId: TrackingProviderExternalUnitDescriptor;
97
+ /** Display order of the setting groups. */
98
+ settingGroups: TrackingProviderSettingGroupDescriptor[];
99
+ settings: TrackingProviderSettingDescriptor[];
100
+ documentationUrl?: string;
101
+ }
102
+ /**
103
+ * The `configuration` a connection gets when the operator supplies none: every
104
+ * setting at its default. Stored explicitly on the connection so that readers
105
+ * which know nothing about adapters (the status evaluator, ingestion guards) see
106
+ * the provider's thresholds rather than the service-wide fallbacks.
107
+ */
108
+ export declare function buildDefaultTrackingProviderConfiguration(descriptor: Pick<TrackingProviderDescriptor, 'settings'>): Record<string, number | boolean | string>;
109
+ /**
110
+ * Validate a raw `configuration` blob against a provider's setting descriptors.
111
+ * Returns human-readable errors (empty ⇒ valid). Absent keys are valid — they
112
+ * take their default. Keys the descriptor does not know are ignored, not
113
+ * rejected: a connection saved before a setting was retired must stay editable.
114
+ *
115
+ * Cross-field rules (e.g. "offline must not precede stale") are the adapter's.
116
+ */
117
+ export declare function validateTrackingProviderSettings(settings: readonly TrackingProviderSettingDescriptor[], configuration: Record<string, unknown> | null | undefined): string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grm-shared-library",
3
- "version": "1.1.207",
3
+ "version": "1.1.209",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",