@signalk/server-api 2.8.0 → 2.10.0

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 (52) hide show
  1. package/dist/autopilotapi.d.ts +116 -9
  2. package/dist/autopilotapi.d.ts.map +1 -1
  3. package/dist/autopilotapi.js +41 -3
  4. package/dist/brand.d.ts +1 -1
  5. package/dist/course.d.ts +1 -0
  6. package/dist/course.d.ts.map +1 -1
  7. package/dist/coursetypes.d.ts +9 -0
  8. package/dist/coursetypes.d.ts.map +1 -1
  9. package/dist/coursetypes.js +1 -0
  10. package/dist/deltas.d.ts +21 -0
  11. package/dist/deltas.d.ts.map +1 -1
  12. package/dist/deltas.js +4 -0
  13. package/dist/features.d.ts +2 -0
  14. package/dist/features.d.ts.map +1 -1
  15. package/dist/history.d.ts +83 -0
  16. package/dist/history.d.ts.map +1 -1
  17. package/dist/history.js +10 -0
  18. package/dist/index.d.ts +5 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +3 -1
  21. package/dist/mmsi/mid.d.ts +21 -0
  22. package/dist/mmsi/mid.d.ts.map +1 -0
  23. package/dist/mmsi/mid.js +301 -0
  24. package/dist/mmsi/mmsi.d.ts +76 -0
  25. package/dist/mmsi/mmsi.d.ts.map +1 -0
  26. package/dist/mmsi/mmsi.js +165 -0
  27. package/dist/mmsi/mmsi.test.d.ts +2 -0
  28. package/dist/mmsi/mmsi.test.d.ts.map +1 -0
  29. package/dist/plugin.d.ts +2 -0
  30. package/dist/plugin.d.ts.map +1 -1
  31. package/dist/propertyvalues.d.ts +5 -0
  32. package/dist/propertyvalues.d.ts.map +1 -1
  33. package/dist/propertyvalues.js +1 -0
  34. package/dist/resourcesapi.d.ts +10 -0
  35. package/dist/resourcesapi.d.ts.map +1 -1
  36. package/dist/resourcesapi.js +4 -0
  37. package/dist/resourcetypes.d.ts +14 -1
  38. package/dist/resourcetypes.d.ts.map +1 -1
  39. package/dist/serverapi.d.ts +10 -1
  40. package/dist/serverapi.d.ts.map +1 -1
  41. package/dist/streambundle.d.ts +1 -0
  42. package/dist/streambundle.d.ts.map +1 -1
  43. package/dist/subscriptionmanager.d.ts +10 -2
  44. package/dist/subscriptionmanager.d.ts.map +1 -1
  45. package/dist/weatherapi.d.ts +115 -6
  46. package/dist/weatherapi.d.ts.map +1 -1
  47. package/dist/weatherapi.js +1 -0
  48. package/package.json +3 -2
  49. package/tsconfig.tsbuildinfo +1 -1
  50. package/dist/autopilotapi.guard.d.ts +0 -3
  51. package/dist/autopilotapi.guard.d.ts.map +0 -1
  52. package/dist/autopilotapi.guard.js +0 -22
@@ -1,17 +1,60 @@
1
1
  import { Value } from './deltas';
2
- export type AutopilotUpdateAttrib = 'mode' | 'state' | 'target' | 'engaged' | 'options' | 'alarm';
3
- export declare const isAutopilotUpdateAttrib: (s: string) => boolean;
2
+ /**
3
+ * Valid autopilot delta path names.
4
+ * @category Autopilot API
5
+ */
6
+ export type AutopilotUpdateAttrib = 'mode' | 'state' | 'target' | 'engaged' | 'options' | 'actions' | 'alarm';
7
+ /**
8
+ * This method returns true if the supplied value represents a valid autopilot delta path.
9
+ * @category Autopilot API
10
+ */
11
+ export declare const isAutopilotUpdateAttrib: (value: string) => boolean;
12
+ /**
13
+ * Valid autopilot alarm delta path names.
14
+ * @category Autopilot API
15
+ */
4
16
  export type AutopilotAlarm = 'waypointAdvance' | 'waypointArrival' | 'routeComplete' | 'xte' | 'heading' | 'wind';
5
- export declare const isAutopilotAlarm: (s: string) => boolean;
17
+ /**
18
+ * This method returns true if the supplied value represents a valid autopilot alarm delta path.
19
+ * @category Autopilot API
20
+ */
21
+ export declare const isAutopilotAlarm: (value: string) => boolean;
22
+ /**
23
+ * Valid tack / gybe action direction values.
24
+ * @category Autopilot API
25
+ */
6
26
  export type TackGybeDirection = 'port' | 'starboard';
27
+ /**
28
+ * This method returns true if the supplied object is a valid AutopilotProvider.
29
+ * @category Autopilot API
30
+ */
31
+ export declare const isAutopilotProvider: (obj: unknown) => boolean;
32
+ /** @category Autopilot API */
7
33
  export interface AutopilotApi {
8
34
  register(pluginId: string, provider: AutopilotProvider): void;
9
35
  unRegister(pluginId: string): void;
36
+ /**
37
+ * This method instructs the server to send deltas for the provided paths.
38
+ *
39
+ * > [!NOTE]
40
+ * > Valid `apInfo` paths are defined in {@link AutopilotUpdateAttrib}
41
+ * > `apInfo.actions` value (like `options.actions`) must contain an Array<{@link AutopilotActionDef}>
42
+
43
+ @example
44
+ * ```javascript
45
+ * apUpdate({
46
+ * 'mode': 'gps',
47
+ * 'actions': [{id: 'tack', name: 'Tack', available: true}]
48
+ * });
49
+ * ```
50
+
51
+
52
+ */
10
53
  apUpdate(pluginId: string, deviceId: string, apInfo: {
11
54
  [path: string]: Value;
12
55
  }): void;
13
56
  }
14
- /** @see {isAutopilotProvider} ts-auto-guard:type-guard */
57
+ /** @category Autopilot API */
15
58
  export interface AutopilotProvider {
16
59
  /**
17
60
  * This method returns an AutopilotInfo object containing the current data values and valid options for the supplied autopilot device identifier.
@@ -19,6 +62,9 @@ export interface AutopilotProvider {
19
62
  * > [!NOTE]
20
63
  * > It is the responsibility of the autopilot provider plugin to map the value of `engaged` to the current `state`.
21
64
  *
65
+ * Additionally, the plugin can maintain a list of `availableActions` that can be taken in the current
66
+ * operational state.
67
+ *
22
68
  * @example
23
69
  * API request:
24
70
  * ```
@@ -31,7 +77,7 @@ export interface AutopilotProvider {
31
77
  *
32
78
  * // Returns:
33
79
  * {
34
- * options: {
80
+ * options: {
35
81
  * states: [
36
82
  * {
37
83
  * name: 'auto' // autopilot state name
@@ -42,7 +88,19 @@ export interface AutopilotProvider {
42
88
  * engaged: false // not actively steering
43
89
  * }
44
90
  * ]
45
- * modes: ['compass', 'gps', 'wind']
91
+ * modes: ['compass', 'gps', 'wind'], // supported modes of operation
92
+ * actions: [
93
+ * {
94
+ * id: 'tack',
95
+ * name: 'Tack',
96
+ * available: true
97
+ * },
98
+ * {
99
+ * id: 'gybe',
100
+ * name: 'Gybe',
101
+ * available: false
102
+ * }
103
+ * ] // actions the autopilot supports
46
104
  * },
47
105
  * target: 0.326
48
106
  * mode: 'compass'
@@ -70,7 +128,7 @@ export interface AutopilotProvider {
70
128
  *
71
129
  * @param deviceId - identifier of the autopilot device to query.
72
130
  */
73
- getState(deviceId: string): Promise<string>;
131
+ getState(deviceId: string): Promise<string | null>;
74
132
  /**
75
133
  * Sets the autopilot device with the supplied identifier to the supplied state value.
76
134
  *
@@ -90,7 +148,7 @@ export interface AutopilotProvider {
90
148
  * @throws if supplied state value is invalid.
91
149
  */
92
150
  setState(state: string, deviceId: string): Promise<void>;
93
- getMode(deviceId: string): Promise<string>;
151
+ getMode(deviceId: string): Promise<string | null>;
94
152
  /**
95
153
  * Sets the autopilot device with the supplied identifier to the supplied mode value.
96
154
  *
@@ -109,7 +167,7 @@ export interface AutopilotProvider {
109
167
  * @throws if supplied mode value is invalid.
110
168
  */
111
169
  setMode(mode: string, deviceId: string): Promise<void>;
112
- getTarget(deviceId: string): Promise<number>;
170
+ getTarget(deviceId: string): Promise<number | null>;
113
171
  /**
114
172
  * Sets target for the autopilot device with the supplied identifier to the supplied value.
115
173
  *
@@ -181,6 +239,45 @@ export interface AutopilotProvider {
181
239
  * @throws on error.
182
240
  */
183
241
  disengage(deviceId: string): Promise<void>;
242
+ /**
243
+ * Instructs the autopilot device to steer for the currently set destination position.
244
+ *
245
+ * It is assumed that a destination has been set prior to invoking this action.
246
+ *
247
+ * The intended result of this action is that the autopilot device be engaged in the
248
+ * appropriate mode to steer to the active waypoint / position.
249
+ *
250
+ * @example
251
+ * API request
252
+ * ```
253
+ * POST /signalk/v2/api/vessels/self/autopilots/mypilot1/courseCurrentPoint
254
+ * ```
255
+ * AutopilotProvider method invocation
256
+ * ```javascript
257
+ * courseCurrentPoint('mypilot1');
258
+ * ```
259
+ *
260
+ * @param deviceId - identifier of the autopilot device to query.
261
+ * @throws on error.
262
+ */
263
+ courseCurrentPoint(deviceId: string): Promise<void>;
264
+ /**
265
+ * Instructs the autopilot device to advance to the next waypoint on the route.
266
+ *
267
+ * @example
268
+ * API request
269
+ * ```
270
+ * POST /signalk/v2/api/vessels/self/autopilots/mypilot1/courseNextPoint
271
+ * ```
272
+ * AutopilotProvider method invocation
273
+ * ```javascript
274
+ * courseNextPoint('mypilot1');
275
+ * ```
276
+ *
277
+ * @param deviceId - identifier of the autopilot device to query.
278
+ * @throws on error.
279
+ */
280
+ courseNextPoint(deviceId: string): Promise<void>;
184
281
  /**
185
282
  * Instructs the autopilot device with the supplied identifier to perform a tack in the supplied direction.
186
283
  *
@@ -256,14 +353,24 @@ export interface AutopilotProvider {
256
353
  */
257
354
  dodge(value: number | null, deviceId: string): Promise<void>;
258
355
  }
356
+ /** @category Autopilot API */
259
357
  export interface AutopilotStateDef {
260
358
  name: string;
261
359
  engaged: boolean;
262
360
  }
361
+ /** @category Autopilot API */
362
+ export interface AutopilotActionDef {
363
+ id: 'dodge' | 'tack' | 'gybe' | 'courseCurrentPoint' | 'courseNextPoint';
364
+ name: string;
365
+ available: boolean;
366
+ }
367
+ /** @category Autopilot API */
263
368
  export interface AutopilotOptions {
264
369
  states: AutopilotStateDef[];
265
370
  modes: string[];
371
+ actions: AutopilotActionDef[];
266
372
  }
373
+ /** @category Autopilot API */
267
374
  export interface AutopilotInfo {
268
375
  options: AutopilotOptions;
269
376
  target: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"autopilotapi.d.ts","sourceRoot":"","sources":["../src/autopilotapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autopilotapi.d.ts","sourceRoot":"","sources":["../src/autopilotapi.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAutopilotAlarm = exports.isAutopilotUpdateAttrib = void 0;
3
+ exports.isAutopilotProvider = exports.isAutopilotAlarm = exports.isAutopilotUpdateAttrib = void 0;
4
+ /**@hidden
5
+ * @category Autopilot API
6
+ */
4
7
  const AUTOPILOTUPDATEATTRIBS = [
5
8
  'mode',
6
9
  'state',
7
10
  'target',
8
11
  'engaged',
9
12
  'options',
13
+ 'actions',
10
14
  'alarm'
11
15
  ];
12
- const isAutopilotUpdateAttrib = (s) => AUTOPILOTUPDATEATTRIBS.includes(s);
16
+ /**
17
+ * This method returns true if the supplied value represents a valid autopilot delta path.
18
+ * @category Autopilot API
19
+ */
20
+ const isAutopilotUpdateAttrib = (value) => AUTOPILOTUPDATEATTRIBS.includes(value);
13
21
  exports.isAutopilotUpdateAttrib = isAutopilotUpdateAttrib;
22
+ /** @hidden
23
+ * @category Autopilot API
24
+ */
14
25
  const AUTOPILOTALARMS = [
15
26
  'waypointAdvance',
16
27
  'waypointArrival',
@@ -19,5 +30,32 @@ const AUTOPILOTALARMS = [
19
30
  'heading',
20
31
  'wind'
21
32
  ];
22
- const isAutopilotAlarm = (s) => AUTOPILOTALARMS.includes(s);
33
+ /**
34
+ * This method returns true if the supplied value represents a valid autopilot alarm delta path.
35
+ * @category Autopilot API
36
+ */
37
+ const isAutopilotAlarm = (value) => AUTOPILOTALARMS.includes(value);
23
38
  exports.isAutopilotAlarm = isAutopilotAlarm;
39
+ /**
40
+ * This method returns true if the supplied object is a valid AutopilotProvider.
41
+ * @category Autopilot API
42
+ */
43
+ const isAutopilotProvider = (obj) => {
44
+ const typedObj = obj;
45
+ return (((typedObj !== null && typeof typedObj === 'object') ||
46
+ typeof typedObj === 'function') &&
47
+ typeof typedObj['getData'] === 'function' &&
48
+ typeof typedObj['getState'] === 'function' &&
49
+ typeof typedObj['setState'] === 'function' &&
50
+ typeof typedObj['getMode'] === 'function' &&
51
+ typeof typedObj['setMode'] === 'function' &&
52
+ typeof typedObj['getTarget'] === 'function' &&
53
+ typeof typedObj['setTarget'] === 'function' &&
54
+ typeof typedObj['adjustTarget'] === 'function' &&
55
+ typeof typedObj['engage'] === 'function' &&
56
+ typeof typedObj['disengage'] === 'function' &&
57
+ typeof typedObj['tack'] === 'function' &&
58
+ typeof typedObj['gybe'] === 'function' &&
59
+ typeof typedObj['dodge'] === 'function');
60
+ };
61
+ exports.isAutopilotProvider = isAutopilotProvider;
package/dist/brand.d.ts CHANGED
@@ -2,7 +2,7 @@ declare const __brand: unique symbol;
2
2
  /**
3
3
  * An interface for creating branded types, which create a more specific and unique data type
4
4
  * with greater clarity and specificity,
5
- *
5
+ * @hidden
6
6
  * @example
7
7
  * ```ts
8
8
  * type Path = Branded<string, "path">
package/dist/course.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { PointDestination, RouteDestination, CourseInfo } from './coursetypes';
2
2
  /**
3
3
  * @see [Course REST API](../../../docs/develop/rest-api/course_api.md) provides the following functions for use by plugins.
4
+ * @category Course API
4
5
  */
5
6
  export interface CourseApi {
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"course.d.ts","sourceRoot":"","sources":["../src/course.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE9E;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhC;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjC;;;;;;;OAOG;IACH,cAAc,CACZ,IAAI,EAAE,CAAC,gBAAgB,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,GAC3D,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D"}
1
+ {"version":3,"file":"course.d.ts","sourceRoot":"","sources":["../src/course.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE9E;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhC;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjC;;;;;;;OAOG;IACH,cAAc,CACZ,IAAI,EAAE,CAAC,gBAAgB,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,GAC3D,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;;;;;;;OAQG;IACH,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5D"}
@@ -1,18 +1,23 @@
1
1
  import { Position } from '.';
2
2
  import { Brand } from './brand';
3
+ /** @category Course API */
3
4
  export interface HrefDestination {
4
5
  href: string;
5
6
  }
7
+ /** @category Course API */
6
8
  export interface PositionDestination {
7
9
  position: Position;
8
10
  }
11
+ /** @category Course API */
9
12
  export type PointDestination = HrefDestination | PositionDestination;
13
+ /** @category Course API */
10
14
  export interface RouteDestination {
11
15
  href: string;
12
16
  reverse?: boolean;
13
17
  pointIndex?: number;
14
18
  arrivalCircle?: number;
15
19
  }
20
+ /** @category Course API */
16
21
  export interface ActiveRoute {
17
22
  href: string;
18
23
  pointIndex: number;
@@ -20,17 +25,21 @@ export interface ActiveRoute {
20
25
  reverse: boolean;
21
26
  name: string;
22
27
  }
28
+ /** @category Course API */
23
29
  export interface NextPreviousPoint {
24
30
  href?: string;
25
31
  type: CoursePointType;
26
32
  position: Position;
27
33
  }
34
+ /** @category Course API */
28
35
  export type CoursePointType = Brand<string, 'coursepointtype'>;
36
+ /** @category Course API */
29
37
  export declare const COURSE_POINT_TYPES: {
30
38
  VesselPosition: CoursePointType;
31
39
  RoutePoint: CoursePointType;
32
40
  Location: CoursePointType;
33
41
  };
42
+ /** @category Course API */
34
43
  export interface CourseInfo {
35
44
  startTime: string | null;
36
45
  targetArrivalTime: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"coursetypes.d.ts","sourceRoot":"","sources":["../src/coursetypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,mBAAmB,CAAA;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAE9D,eAAO,MAAM,kBAAkB;oBACO,eAAe;gBACvB,eAAe;cACnB,eAAe;CACxC,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IAC/B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACnC,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACxC"}
1
+ {"version":3,"file":"coursetypes.d.ts","sourceRoot":"","sources":["../src/coursetypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,2BAA2B;AAC3B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,2BAA2B;AAC3B,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,mBAAmB,CAAA;AAEpE,2BAA2B;AAC3B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,2BAA2B;AAC3B,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,2BAA2B;AAC3B,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAE9D,4BAA4B;AAC5B,eAAO,MAAM,kBAAkB;oBACO,eAAe;gBACvB,eAAe;cACnB,eAAe;CACxC,CAAA;AAED,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IAC/B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACnC,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAA;CACxC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.COURSE_POINT_TYPES = void 0;
4
+ /** @category Course API */
4
5
  exports.COURSE_POINT_TYPES = {
5
6
  VesselPosition: 'VesselPosition',
6
7
  RoutePoint: 'RoutePoint',
package/dist/deltas.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Brand } from './brand';
2
+ /** @hidden */
2
3
  export interface WithContext {
3
4
  context: Context;
4
5
  }
@@ -10,21 +11,31 @@ type NormalizedBaseDelta = {
10
11
  path: Path;
11
12
  timestamp: Timestamp;
12
13
  };
14
+ /** @hidden */
13
15
  export type NormalizedMetaDelta = NormalizedBaseDelta & {
14
16
  value: MetaValue;
15
17
  isMeta: true;
16
18
  };
19
+ /** @hidden */
17
20
  export type NormalizedValueDelta = NormalizedBaseDelta & {
18
21
  value: Value;
19
22
  isMeta: false;
20
23
  };
24
+ /** @hidden */
21
25
  export type NormalizedDelta = NormalizedValueDelta | NormalizedMetaDelta;
26
+ /** @category Server API */
22
27
  export type SourceRef = Brand<string, 'sourceRef'>;
28
+ /** @category Server API */
23
29
  export type Source = any;
30
+ /** @category Server API */
24
31
  export type Path = Brand<string, 'path'>;
32
+ /** @category Server API */
25
33
  export type Timestamp = Brand<string, 'timestamp'>;
34
+ /** @category Server API */
26
35
  export type Context = Brand<string, 'context'>;
36
+ /** @category Server API */
27
37
  export type Value = object | number | string | null | Notification | boolean;
38
+ /** @category Server API */
28
39
  export interface Delta {
29
40
  context?: Context;
30
41
  updates: Update[];
@@ -39,6 +50,7 @@ export type ValuesDelta = Delta;
39
50
  * @hidden
40
51
  */
41
52
  export type MetaDelta = Delta;
53
+ /** @category Server API */
42
54
  export type Update = {
43
55
  timestamp?: Timestamp;
44
56
  source?: Source;
@@ -48,25 +60,31 @@ export type Update = {
48
60
  } | {
49
61
  meta: Meta[];
50
62
  });
63
+ /** @category Server API */
51
64
  export declare function hasValues(u: Update): u is Update & {
52
65
  values: PathValue[];
53
66
  };
67
+ /** @category Server API */
54
68
  export declare function hasMeta(u: Update): u is Update & {
55
69
  meta: Meta[];
56
70
  };
71
+ /** @category Server API */
57
72
  export interface PathValue {
58
73
  path: Path;
59
74
  value: Value;
60
75
  }
76
+ /** @category Server API */
61
77
  export interface Notification {
62
78
  state: ALARM_STATE;
63
79
  method: ALARM_METHOD[];
64
80
  message: string;
65
81
  }
82
+ /** @category Server API */
66
83
  export interface Meta {
67
84
  path: Path;
68
85
  value: MetaValue;
69
86
  }
87
+ /** @category Server API */
70
88
  export interface MetaValue {
71
89
  description?: string;
72
90
  units?: string;
@@ -80,6 +98,7 @@ export interface MetaValue {
80
98
  zones?: Zone[];
81
99
  supportsPut?: boolean;
82
100
  }
101
+ /** @category Server API */
83
102
  export declare enum ALARM_STATE {
84
103
  nominal = "nominal",
85
104
  normal = "normal",
@@ -88,10 +107,12 @@ export declare enum ALARM_STATE {
88
107
  alarm = "alarm",
89
108
  emergency = "emergency"
90
109
  }
110
+ /** @category Server API */
91
111
  export declare enum ALARM_METHOD {
92
112
  visual = "visual",
93
113
  sound = "sound"
94
114
  }
115
+ /** @category Server API */
95
116
  export interface Zone {
96
117
  lower: number | undefined;
97
118
  upper: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"deltas.d.ts","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deltas.d.ts","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"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"}
package/dist/deltas.js CHANGED
@@ -3,13 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ALARM_METHOD = exports.ALARM_STATE = void 0;
4
4
  exports.hasValues = hasValues;
5
5
  exports.hasMeta = hasMeta;
6
+ /** @category Server API */
6
7
  function hasValues(u) {
7
8
  return 'values' in u && Array.isArray(u.values);
8
9
  }
10
+ /** @category Server API */
9
11
  function hasMeta(u) {
10
12
  return 'meta' in u && Array.isArray(u.meta);
11
13
  }
12
14
  // Notification attribute types
15
+ /** @category Server API */
13
16
  var ALARM_STATE;
14
17
  (function (ALARM_STATE) {
15
18
  ALARM_STATE["nominal"] = "nominal";
@@ -19,6 +22,7 @@ var ALARM_STATE;
19
22
  ALARM_STATE["alarm"] = "alarm";
20
23
  ALARM_STATE["emergency"] = "emergency";
21
24
  })(ALARM_STATE || (exports.ALARM_STATE = ALARM_STATE = {}));
25
+ /** @category Server API */
22
26
  var ALARM_METHOD;
23
27
  (function (ALARM_METHOD) {
24
28
  ALARM_METHOD["visual"] = "visual";
@@ -51,6 +51,7 @@ export interface WithFeatures {
51
51
  }
52
52
  /**
53
53
  * Information about the available APIs and Plugins.
54
+ * @category Server API
54
55
  */
55
56
  export interface FeatureInfo {
56
57
  apis: SignalKApiId[];
@@ -61,5 +62,6 @@ export interface FeatureInfo {
61
62
  enabled: boolean;
62
63
  }>;
63
64
  }
65
+ /** @category Server API */
64
66
  export type SignalKApiId = 'weather' | 'course' | 'resources' | 'history' | 'autopilot' | 'anchor' | 'logbook' | 'historyplayback' | 'historysnapshot';
65
67
  //# sourceMappingURL=features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,OAAO,CAAA;KACjB,CAAC,CAAA;CACH;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,iBAAiB,CAAA"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACzD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,OAAO,CAAA;KACjB,CAAC,CAAA;CACH;AAED,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,iBAAiB,CAAA"}
package/dist/history.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Context, Path, Timestamp } from '.';
2
+ import { Temporal } from '@js-temporal/polyfill';
2
3
  export type AggregateMethod = 'average' | 'min' | 'max' | 'first' | 'last' | 'mid' | 'middle_index';
3
4
  export type ValueList = {
4
5
  path: Path;
@@ -43,4 +44,86 @@ export type PathsRequestQueryParams = TimeRangeQueryParams;
43
44
  export type PathsResponse = Path[];
44
45
  export type ContextsRequestQueryParams = TimeRangeQueryParams;
45
46
  export type ContextsResponse = Context[];
47
+ export type HistoryApiRegistry = {
48
+ registerHistoryApiProvider(provider: HistoryApi): void;
49
+ unregisterHistoryApiProvider(): void;
50
+ };
51
+ /** @category History API */
52
+ export type WithHistoryApi = {
53
+ /**
54
+ * Returns a promise for the active History API implementation, or rejects if unavailable.
55
+ * The property is optional to support explicitly older servers that do not have a history api provider.
56
+ *
57
+ * @returns Promise that resolves to a {@link HistoryApi} instance if available, or rejects with an error if not.
58
+ */
59
+ getHistoryApi?: () => Promise<HistoryApi>;
60
+ };
61
+ /** @category History API */
62
+ export interface HistoryApi {
63
+ /**
64
+ * Retrieves historical values for the specified query parameters.
65
+ *
66
+ * @param query - The {@link ValuesRequest} containing context, time range, resolution, and path specifications.
67
+ * @returns A promise that resolves to a {@link ValuesResponse} containing the requested historical data.
68
+ */
69
+ getValues(query: ValuesRequest): Promise<ValuesResponse>;
70
+ /**
71
+ * Lists available contexts for which historical data can be queried.
72
+ *
73
+ * @param query - The {@link ContextsRequest} specifying time range and filters.
74
+ * @returns A promise that resolves to a {@link ContextsResponse} array of available contexts.
75
+ */
76
+ getContexts(query: ContextsRequest): Promise<ContextsResponse>;
77
+ /**
78
+ * Lists available paths for historical data queries.
79
+ *
80
+ * @param query - The {@link PathsRequest} specifying time range and filters.
81
+ * @returns A promise that resolves to a {@link PathsResponse} array of available paths.
82
+ */
83
+ getPaths(query: PathsRequest): Promise<PathsResponse>;
84
+ }
85
+ export declare function isHistoryApi(obj: unknown): obj is HistoryApi;
86
+ /**
87
+ * Represents a time duration, either as a {@link Temporal.Duration} object or a number (milliseconds).
88
+ *
89
+ * @example
90
+ * // Using Temporal.Duration
91
+ * const duration: Duration = Temporal.Duration.from({ minutes: 5 });
92
+ *
93
+ * // Using milliseconds
94
+ * const duration: Duration = 300000; // 5 minutes in milliseconds
95
+ */
96
+ export type Duration = Temporal.Duration | number;
97
+ export type TimeRangeParams = {
98
+ duration: Temporal.Duration;
99
+ from?: never;
100
+ to?: never;
101
+ } | {
102
+ duration: Duration;
103
+ from: Temporal.Instant;
104
+ to?: never;
105
+ } | {
106
+ duration: Duration;
107
+ from?: never;
108
+ to: Temporal.Instant;
109
+ } | {
110
+ duration?: never;
111
+ from: Temporal.Instant;
112
+ to?: never;
113
+ } | {
114
+ duration: never;
115
+ from: Temporal.Instant;
116
+ to: Temporal.Instant;
117
+ };
118
+ export interface PathSpec {
119
+ path: Path;
120
+ aggregate: AggregateMethod;
121
+ }
122
+ export type ValuesRequest = TimeRangeParams & {
123
+ context?: Context;
124
+ resolution?: number;
125
+ pathSpecs: PathSpec[];
126
+ };
127
+ export type PathsRequest = TimeRangeParams;
128
+ export type ContextsRequest = TimeRangeParams;
46
129
  //# sourceMappingURL=history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;AAE5C,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,KAAK,GACL,KAAK,GACL,OAAO,GACP,MAAM,GACN,KAAK,GACL,cAAc,CAAA;AAElB,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,eAAe,CAAA;CACxB,EAAE,CAAA;AAGH,MAAM,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAE3C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAA;QACf,EAAE,EAAE,SAAS,CAAA;KACd,CAAA;IACD,MAAM,EAAE,SAAS,CAAA;IAEjB,IAAI,EAAE,OAAO,EAAE,CAAA;CAChB;AAqBD,MAAM,MAAM,oBAAoB,GAC5B;IAEE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,EAAE,CAAC,EAAE,KAAK,CAAA;CACX,GACD;IAEE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,KAAK,CAAA;CACX,GACD;IAEE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,GACD;IAEE,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,KAAK,CAAA;CACX,GACD;IAEE,QAAQ,EAAE,KAAK,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAEL,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,GAAG;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAA;AAC1D,MAAM,MAAM,aAAa,GAAG,IAAI,EAAE,CAAA;AAElC,MAAM,MAAM,0BAA0B,GAAG,oBAAoB,CAAA;AAC7D,MAAM,MAAM,gBAAgB,GAAG,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
package/dist/history.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHistoryApi = isHistoryApi;
4
+ /** @ignore */
3
5
  const _example = {
4
6
  context: 'vessels.urn:mrn:signalk:uuid:2ffee4a6-52f6-4d4e-8179-0fc9aaf22c87',
5
7
  range: {
@@ -17,3 +19,11 @@ const _example = {
17
19
  ['2025-08-11T05:26:10.000Z', 3.14]
18
20
  ]
19
21
  };
22
+ function isHistoryApi(obj) {
23
+ if (typeof obj !== 'object' || obj === null) {
24
+ return false;
25
+ }
26
+ return (typeof obj.getValues === 'function' &&
27
+ typeof obj.getContexts === 'function' &&
28
+ typeof obj.getPaths === 'function');
29
+ }