@signalk/path-metadata 1.0.0 → 1.0.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.
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { getAISShipTypeName } from './ais-ship-types';
10
10
  export { getAtonTypeName } from './aton-types';
11
11
  export declare class MetadataRegistry {
12
12
  private allMetadata;
13
+ private runtimeClones;
13
14
  private regexEntries;
14
15
  private readonly seedEntries;
15
16
  constructor(entries: Record<string, PathMetadataEntry>);
@@ -24,6 +25,7 @@ export declare class MetadataRegistry {
24
25
  * Returns the metadata entry or undefined if no match.
25
26
  */
26
27
  getMetadata(path: string): PathMetadataEntry | undefined;
28
+ private getMetadataForLookupPath;
27
29
  /**
28
30
  * Get or create a metadata entry for a specific context+path combination.
29
31
  * Used internally by FullSignalK to attach metadata to first-seen values.
@@ -42,7 +44,7 @@ export declare class MetadataRegistry {
42
44
  * FRONT of the lookup array so getMetadata() finds it before the
43
45
  * generic spec wildcard.
44
46
  */
45
- addMetaData(context: string, path: string, meta: Record<string, unknown>): void;
47
+ addMetaData(_context: string, path: string, meta: Record<string, unknown>): void;
46
48
  /** Return all registered metadata entries (for the /paths endpoint). */
47
49
  getAllMetadata(): Record<string, PathMetadataEntry>;
48
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAiBhD,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAmF9C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;gBAEnD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAMtD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAUxD;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IA0ChE;;;;;;;;;;OAUG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI;IAgCP,wEAAwE;IACxE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;CAGpD;AAOD,eAAO,MAAM,gBAAgB,kBAAmC,CAAA;AAEhE,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAiBhD,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AA6H9C,qBAAa,gBAAgB;IAM3B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;gBAEnD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAOtD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAexD,OAAO,CAAC,wBAAwB;IAWhC;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IA2ChE;;;;;;;;;;OAUG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI;IAmCP,wEAAwE;IACxE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;CAGpD;AAOD,eAAO,MAAM,gBAAgB,kBAAmC,CAAA;AAEhE,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEvE"}
package/dist/index.js CHANGED
@@ -58,26 +58,66 @@ function expandContextPrefixes(entries) {
58
58
  }
59
59
  return expanded;
60
60
  }
61
+ // Metadata is a PATH-keyed, context-INDEPENDENT namespace: a path's units /
62
+ // description are identical no matter which context root it appears under
63
+ // (vessels.<id>, meteo.<id>, aircraft.<id>, a bare 'meteo', ...). The four
64
+ // entity families share one data model, so their identity-scoped seed keys
65
+ // (/vessels/*/<path> and the /aircraft|/aton|/sar expansions) reduce to a
66
+ // single path-keyed matcher '/*/<path>'. Non-context keys (/self, /version,
67
+ // the /resources/* tree) are not '/<root>/*/<path>'-shaped and pass through
68
+ // unchanged, so they keep literal matching and cannot leak across roots.
69
+ const CONTEXT_ROOT_PREFIX = /^\/(?:vessels|aircraft|aton|sar)\/\*\//;
70
+ function toMatchKey(key) {
71
+ return key.replace(CONTEXT_ROOT_PREFIX, '/*/');
72
+ }
73
+ // Strip the context root + identity (first two dot segments) so a lookup
74
+ // resolves the same meta under ANY context, yielding the '/*/<tail>' shape
75
+ // the re-keyed matcher expects. This is the FIRST of getMetadata's two
76
+ // lookup stages and assumes a context-prefixed path
77
+ // (vessels.self.<path>, <context>.<identity>.<path>) — the common case.
78
+ // It is not safe for every input: a bare singleton or short-segment path
79
+ // (self, version, meteo.environment.outside.temperature) has no context
80
+ // root + identity to strip, so the two-segment slice produces a '/*/...'
81
+ // form that matches nothing. getMetadata falls back to a literal-path
82
+ // lookup for those, so this strip does not need to handle them.
83
+ function toLookupPath(path) {
84
+ return '/*/' + path.split('.').slice(2).join('/');
85
+ }
61
86
  function buildRegexArray(allEntries) {
62
87
  const result = [];
88
+ const seen = new Set();
63
89
  for (const [key, metadata] of Object.entries(allEntries)) {
64
- // Convert path wildcards to regex: * → [^/]+ and RegExp → [^/]+
65
- const pattern = key
66
- .replace(/\*/g, '[^/]+')
67
- .replace(/RegExp/g, '[^/]+')
68
- .replace(/\(([^)]+)\)/g, '($1)'); // preserve regex groups like (single)|([A-C])
69
90
  // Skip entries whose key ends in a bare wildcard. These are container
70
91
  // shapes (e.g. /vessels/*/electrical/ac/RegExp defines "an AC bus",
71
92
  // not "any child of electrical.ac"). Letting them match would attach
72
93
  // the container description to plugin-invented siblings — matches the
73
- // old @signalk/signalk-schema behaviour.
94
+ // old @signalk/signalk-schema behaviour. Evaluated on the ORIGINAL key,
95
+ // before re-keying.
74
96
  if (key.endsWith('/*') || key.endsWith('/RegExp')) {
75
97
  continue;
76
98
  }
99
+ // Re-key to the path-only matcher. The /aircraft|/aton|/sar expansions
100
+ // collapse onto the same '/*/<tail>' matcher as their /vessels/* source;
101
+ // the seen-Set drops the duplicates so the hot-path .find() stays short.
102
+ // Object.entries preserves insertion order and expandContextPrefixes
103
+ // emits the /vessels/* key before its expansions, so the first (and only
104
+ // retained) entry carries the /vessels/* metadata — identical object,
105
+ // so dropping the rest is harmless.
106
+ const matchKey = toMatchKey(key);
107
+ if (seen.has(matchKey)) {
108
+ continue;
109
+ }
110
+ seen.add(matchKey);
111
+ // Convert path wildcards to regex on the re-keyed matcher:
112
+ // * → [^/]+ and RegExp → [^/]+
113
+ const pattern = matchKey
114
+ .replace(/\*/g, '[^/]+')
115
+ .replace(/RegExp/g, '[^/]+')
116
+ .replace(/\(([^)]+)\)/g, '($1)'); // preserve regex groups like (single)|([A-C])
77
117
  try {
78
118
  result.push({
79
119
  pattern: new RegExp(`^${pattern}$`),
80
- key,
120
+ key: matchKey,
81
121
  metadata
82
122
  });
83
123
  }
@@ -94,12 +134,19 @@ function buildRegexArray(allEntries) {
94
134
  return result;
95
135
  }
96
136
  class MetadataRegistry {
137
+ // allMetadata stays keyed by the original on-disk keys (/vessels/*/...,
138
+ // /resources/*, /self, /version) and backs getAllMetadata() -> /paths, so
139
+ // the endpoint and PathReference.tsx (which filters on '/vessels/*/') keep
140
+ // the exact same JSON shape. Runtime per-path clones live in a separate
141
+ // path-only map so they never reshape that /paths view.
97
142
  allMetadata;
143
+ runtimeClones;
98
144
  regexEntries;
99
145
  seedEntries;
100
146
  constructor(entries) {
101
147
  this.seedEntries = entries;
102
148
  this.allMetadata = { ...entries };
149
+ this.runtimeClones = {};
103
150
  this.regexEntries = buildRegexArray(this.allMetadata);
104
151
  }
105
152
  /**
@@ -109,6 +156,7 @@ class MetadataRegistry {
109
156
  */
110
157
  reset() {
111
158
  this.allMetadata = { ...this.seedEntries };
159
+ this.runtimeClones = {};
112
160
  this.regexEntries = buildRegexArray(this.allMetadata);
113
161
  }
114
162
  /**
@@ -116,7 +164,18 @@ class MetadataRegistry {
116
164
  * Returns the metadata entry or undefined if no match.
117
165
  */
118
166
  getMetadata(path) {
119
- const slashPath = '/' + path.replace(/\./g, '/');
167
+ // Context-independent lookup first (strip context root + identity).
168
+ // Fall back to the literal path so non-context root entries — /self,
169
+ // /version — still resolve when looked up bare; those keys are not
170
+ // '/<root>/*/<tail>'-shaped, so they never participate in the
171
+ // path-only matcher.
172
+ return (this.getMetadataForLookupPath(toLookupPath(path)) ??
173
+ this.getMetadataForLookupPath('/' + path.replace(/\./g, '/')));
174
+ }
175
+ // Match an already-normalized '/*/<tail>' lookup path against the regex
176
+ // array. Shared by getMetadata and addMetaData's seed lookup so the
177
+ // path-only normalization lives in exactly one place.
178
+ getMetadataForLookupPath(slashPath) {
120
179
  const result = this.regexEntries.find((entry) => entry.pattern.test(slashPath));
121
180
  return result && result.metadata && Object.keys(result.metadata).length > 0
122
181
  ? result.metadata
@@ -129,22 +188,22 @@ class MetadataRegistry {
129
188
  * so runtime metadata additions don't pollute the template.
130
189
  */
131
190
  internalGetMetadata(path) {
132
- const slashPath = '/' + path.replace(/\./g, '/');
133
191
  const parts = path.split('.');
134
192
  // Need at least context root + identity + one path segment to
135
193
  // produce a meaningful per-path key. Anything shorter would yield
136
- // keys like "/vessels/*/" that match nothing.
194
+ // keys like "/*/" that match nothing.
137
195
  if (parts.length < 3) {
138
196
  return undefined;
139
197
  }
140
- // Use wildcard key so all identities share the same cloned entry
141
- const key = `/${parts[0]}/*/${parts.slice(2).join('/')}`;
142
- // Check for existing wildcard entry first
143
- if (this.allMetadata[key]) {
144
- return this.allMetadata[key];
198
+ // Key by PATH alone so a value first seen under any context
199
+ // (vessels.self, meteo.<id>, ...) shares one cloned per-path entry.
200
+ const key = `/*/${parts.slice(2).join('/')}`;
201
+ // Check for an existing per-path clone first
202
+ if (this.runtimeClones[key]) {
203
+ return this.runtimeClones[key];
145
204
  }
146
- // Find via regex against the full path
147
- const result = this.regexEntries.find((entry) => entry.pattern.test(slashPath));
205
+ // Find via regex against the path-only lookup form
206
+ const result = this.regexEntries.find((entry) => entry.pattern.test(key));
148
207
  if (!result || Object.keys(result.metadata).length === 0) {
149
208
  return undefined;
150
209
  }
@@ -154,10 +213,13 @@ class MetadataRegistry {
154
213
  // the template, so a plugin tweaking displayScale on one path would
155
214
  // silently change every other path that matches the same wildcard.
156
215
  const cloned = structuredClone(result.metadata);
157
- this.allMetadata[key] = cloned;
158
- // Escape special chars first, then replace wildcard
216
+ this.runtimeClones[key] = cloned;
217
+ // Escape special chars first, then replace wildcard. Front of the
218
+ // array so this per-path clone wins over the generic spec wildcard —
219
+ // and so a later addMetaData that merges into this same clone (e.g. a
220
+ // PUT meta displayUnits override) is found ahead of the spec entry.
159
221
  const escaped = key.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
160
- this.regexEntries.push({
222
+ this.regexEntries.unshift({
161
223
  pattern: new RegExp(`^${escaped.replace(/\*/g, '[^/]+')}$`),
162
224
  key,
163
225
  metadata: cloned
@@ -175,29 +237,32 @@ class MetadataRegistry {
175
237
  * FRONT of the lookup array so getMetadata() finds it before the
176
238
  * generic spec wildcard.
177
239
  */
178
- addMetaData(context, path, meta) {
179
- // An empty path would key the entry at "/vessels/*/" (no tail) and
180
- // mask every per-vessel entry under the same context root.
240
+ addMetaData(_context, path, meta) {
241
+ // An empty path would key the entry at "/*/" (no tail) and mask every
242
+ // per-path entry. The context is intentionally ignored: metadata is a
243
+ // path-keyed, context-independent namespace, so a meta delta under ANY
244
+ // context (including an identity-less 'meteo') populates the path for
245
+ // all contexts.
181
246
  if (!path) {
182
247
  return;
183
248
  }
184
- // Use wildcard key pattern so lookups with any identity match
185
- const root = context.split('.')[0];
186
- const key = `/${root}/*/${path.replace(/\./g, '/')}`;
187
- const existing = this.allMetadata[key];
249
+ const key = `/*/${path.replace(/\./g, '/')}`;
250
+ const existing = this.runtimeClones[key];
188
251
  if (existing) {
189
252
  Object.assign(existing, meta);
190
253
  return;
191
254
  }
192
- // Seed from the matching spec template, if any, so untouched fields
193
- // like units / enum survive when a plugin only updates description.
194
- const seed = this.getMetadata(`${context}.${path}`);
255
+ // Seed from the matching spec template by PATH, if any, so untouched
256
+ // fields like units / enum survive when a plugin only updates
257
+ // description. The key is already the normalized '/*/<tail>' form.
258
+ const seed = this.getMetadataForLookupPath(key);
195
259
  const entry = { description: '' };
196
260
  if (seed)
197
261
  Object.assign(entry, seed);
198
262
  Object.assign(entry, meta);
199
- this.allMetadata[key] = entry;
200
- // Escape special chars first, then replace wildcard
263
+ this.runtimeClones[key] = entry;
264
+ // Escape special chars first, then replace wildcard. The entry fronts
265
+ // the generic spec wildcard for EVERY context, not just one root.
201
266
  const escaped = key.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
202
267
  this.regexEntries.unshift({
203
268
  pattern: new RegExp(`^${escaped.replace(/\*/g, '[^/]+')}$`),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAwPH,kCAEC;AAtPD,iCAAqC;AACrC,6CAAiD;AACjD,+CAAmD;AACnD,6CAAiD;AACjD,mCAAuC;AACvC,6CAAiD;AACjD,+CAAmD;AACnD,mCAAuC;AACvC,yCAA6C;AAC7C,qCAAyC;AACzC,mDAAuD;AACvD,mDAAuD;AACvD,uCAA2C;AAC3C,mDAAuD;AAGvD,mDAAqD;AAA5C,oHAAA,kBAAkB,OAAA;AAC3B,2CAA8C;AAArC,6GAAA,eAAe,OAAA;AAExB,MAAM,cAAc,GAAsC;IACxD,GAAG,+BAAkB;IACrB,GAAG,iCAAmB;IACtB,GAAG,+BAAkB;IACrB,GAAG,qBAAa;IAChB,GAAG,+BAAkB;IACrB,GAAG,iCAAmB;IACtB,GAAG,qBAAa;IAChB,GAAG,2BAAgB;IACnB,GAAG,uBAAc;IACjB,GAAG,qCAAqB;IACxB,GAAG,qCAAqB;IACxB,GAAG,yBAAe;IAClB,GAAG,qCAAqB;CACzB,CAAA;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,OAA0C;IAE1C,MAAM,QAAQ,GAAsC,EAAE,CAAA;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrB,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YAC9C,QAAQ,CAAC,eAAe,MAAM,EAAE,CAAC,GAAG,KAAK,CAAA;YACzC,QAAQ,CAAC,WAAW,MAAM,EAAE,CAAC,GAAG,KAAK,CAAA;YACrC,QAAQ,CAAC,UAAU,MAAM,EAAE,CAAC,GAAG,KAAK,CAAA;QACtC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAQD,SAAS,eAAe,CACtB,UAA6C;IAE7C,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,gEAAgE;QAChE,MAAM,OAAO,GAAG,GAAG;aAChB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;aAC3B,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA,CAAC,8CAA8C;QACjF,sEAAsE;QACtE,oEAAoE;QACpE,qEAAqE;QACrE,sEAAsE;QACtE,yCAAyC;QACzC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,SAAQ;QACV,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC;gBACnC,GAAG;gBACH,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iEAAiE;YACjE,4DAA4D;YAC5D,+DAA+D;YAC/D,8DAA8D;YAC9D,6DAA6D;YAC7D,sBAAsB;YACtB,OAAO,CAAC,IAAI,CACV,oDAAoD,GAAG,MAAO,CAAW,CAAC,OAAO,EAAE,CACpF,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAa,gBAAgB;IACnB,WAAW,CAAmC;IAC9C,YAAY,CAAc;IACjB,WAAW,CAAmC;IAE/D,YAAY,OAA0C;QACpD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA;QACjC,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvD,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvD,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,IAAY;QACtB,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAC9B,CAAA;QACD,OAAO,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YACzE,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,IAAY;QAC9B,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7B,8DAA8D;QAC9D,kEAAkE;QAClE,8CAA8C;QAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,iEAAiE;QACjE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QAExD,0CAA0C;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAED,uCAAuC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAC9B,CAAA;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,kEAAkE;QAClE,sEAAsE;QACtE,qEAAqE;QACrE,oEAAoE;QACpE,mEAAmE;QACnE,MAAM,MAAM,GAAsB,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAClE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;QAC9B,oDAAoD;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;YAC3D,GAAG;YACH,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,OAAe,EACf,IAAY,EACZ,IAA6B;QAE7B,mEAAmE;QACnE,2DAA2D;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QACD,8DAA8D;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC7B,OAAM;QACR,CAAC;QAED,oEAAoE;QACpE,oEAAoE;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QACnD,MAAM,KAAK,GAAsB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;QACpD,IAAI,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAE7B,oDAAoD;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;QACzD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YACxB,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;YAC3D,GAAG;YACH,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;IACJ,CAAC;IAED,wEAAwE;IACxE,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;CACF;AAtID,4CAsIC;AAED,MAAM,UAAU,GAAG,qBAAqB,CAAC;IACvC,GAAG,mBAAY;IACf,GAAG,cAAc;CAClB,CAAC,CAAA;AAEW,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAA;AAEhE,0DAA0D;AAC1D,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,wBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AAC3C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/path-metadata",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Signal K path metadata registry — well-known path descriptions, units, and enums",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",