signalk-masterbus 0.1.0 → 0.2.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.
package/README.md CHANGED
@@ -51,7 +51,44 @@ tarball), set `api_listen` and `api_token` in its `config.ini`, and give
51
51
  the plugin the host, ports and token. Everything below works the same.
52
52
 
53
53
  A container is not required and not offered: the daemon needs the CAN
54
- interface or the USB device, which a container only complicates.
54
+ interface or the USB device, which a container only complicates. (Signal K
55
+ itself may well run in one: with host networking the container shares the
56
+ host's CAN interface, and bundled mode works inside it.)
57
+
58
+ ### Switching between bundled and external
59
+
60
+ In **Server → Plugin Config → MasterBus**, the first setting, _Where the
61
+ MasterBus daemon runs_, selects the mode; fill in that mode's section and
62
+ save. Signal K restarts the plugin on save: bundled mode stops its child
63
+ daemon, external mode just disconnects. The other mode's settings are kept
64
+ but ignored, so switching back later needs no retyping.
65
+
66
+ **Going to external** needs a daemon already running on the machine wired
67
+ to the bus, with its API enabled in its `config.ini`:
68
+
69
+ ```ini
70
+ listen = 0.0.0.0:3009
71
+ api_listen = 0.0.0.0:3010
72
+ api_token = <something long and random>
73
+ ```
74
+
75
+ Both ports must be reachable from the Signal K host. The token is
76
+ mandatory on any address other than loopback; the daemon refuses to start
77
+ without one. Give the plugin the host, the two ports and the same token.
78
+
79
+ **Going to bundled** needs only the selection, provided the Signal K host
80
+ is the one wired to the bus. Transport on auto-detect picks a plugged-in
81
+ USB link, else the only CAN interface; set it explicitly when the machine
82
+ has several.
83
+
84
+ Two things are not automatic:
85
+
86
+ - The modes do not share a mapping. Bundled mode edits `mapping.json`
87
+ under the plugin's data directory; external mode edits the one on the
88
+ daemon's machine, through its API. Copy the file across when moving.
89
+ - A generic "Signal K over TCP" data connection to port 3009, left over from
90
+ running the daemon as a sidecar, must be disabled, or every value arrives
91
+ twice with two different sources.
55
92
 
56
93
  ## Telling it what to publish
57
94
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "signalk-masterbus",
3
- "version": "0.1.0",
4
- "masterbusDaemon": "0.4.1",
3
+ "version": "0.2.0",
4
+ "masterbusDaemon": "0.4.2",
5
5
  "description": "Mastervolt MasterBus for Signal K: publish battery, charger and inverter values, edit the mapping in the browser, and switch devices from Signal K",
6
6
  "main": "plugin/index.js",
7
7
  "type": "module",
@@ -139,8 +139,5 @@ export declare const UI_SCHEMA: {
139
139
  'ui:widget': string;
140
140
  };
141
141
  };
142
- installerCode: {
143
- 'ui:widget': string;
144
- };
145
142
  };
146
143
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,SAAS,EAAE,SAAS,CAAA;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,aAAa,CAAA;IACtB,QAAQ,EAAE,cAAc,CAAA;IACxB,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,QAAQ,EAAE,MAiBtB,CAAA;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAWpD;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGlB,CAAA;AAED,eAAO,MAAM,SAAS;;;;;;;;;CAGrB,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,SAAS,EAAE,SAAS,CAAA;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,aAAa,CAAA;IACtB,QAAQ,EAAE,cAAc,CAAA;IACxB,yEAAyE;IACzE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,QAAQ,EAAE,MAiBtB,CAAA;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAWpD;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGlB,CAAA;AAKD,eAAO,MAAM,SAAS;;;;;;CAErB,CAAA"}
package/plugin/config.js CHANGED
@@ -136,8 +136,10 @@ export const SCHEMA = {
136
136
  }
137
137
  }
138
138
  };
139
+ // The installer code is a number, and the form has no password widget for
140
+ // numbers ("No widget 'password' for type 'number'" takes the whole page
141
+ // down), so only the token is masked.
139
142
  export const UI_SCHEMA = {
140
- external: { token: { 'ui:widget': 'password' } },
141
- installerCode: { 'ui:widget': 'password' }
143
+ external: { token: { 'ui:widget': 'password' } }
142
144
  };
143
145
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH,MAAM,CAAC,MAAM,QAAQ,GAAW;IAC9B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE;QACP,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,EAAE;QACd,eAAe,EAAE,EAAE;QACnB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,EAAE;KACV;IACD,aAAa,EAAE,IAAI;CACpB,CAAA;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAoB,CAAA;IAC3C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACpD,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;QACtD,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;QACzD,aAAa,EACX,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;YACrE,CAAC,CAAC,CAAC,CAAC,aAAa;YACjB,CAAC,CAAC,IAAI;KACX,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iCAAiC;YACxC,WAAW,EACT,uFAAuF;gBACvF,gFAAgF;gBAChF,oEAAoE;YACtE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YAC7B,SAAS,EAAE,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;YACjE,OAAO,EAAE,SAAS;SACnB;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gBAAgB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EACT,mFAAmF;wBACnF,0CAA0C;oBAC5C,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;oBAC5B,SAAS,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;oBACtE,OAAO,EAAE,MAAM;iBAChB;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,2EAA2E;oBACxF,OAAO,EAAE,EAAE;iBACZ;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,4BAA4B;oBACnC,WAAW,EACT,mFAAmF;wBACnF,oFAAoF;wBACpF,UAAU;oBACZ,OAAO,EAAE,EAAE;iBACZ;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,wBAAwB;oBAC/B,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,qCAAqC;oBAC5C,WAAW,EACT,gFAAgF;wBAChF,oCAAoC;oBACtC,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,iBAAiB;YACxB,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;gBAC7D,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,UAAU;oBACjB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,6CAA6C;oBAC1D,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;QACD,aAAa,EAAE;YACb,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,kFAAkF;gBAClF,iDAAiD;YACnD,OAAO,EAAE,IAAI;SACd;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;IAChD,aAAa,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;CAC3C,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/plugin/index.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import type { Plugin, ServerAPI } from '@signalk/server-api';
2
2
  export declare const PLUGIN_ID = "signalk-masterbus";
3
+ /** This plugin's own version and the masterbus version it bundles. */
4
+ export declare const VERSIONS: {
5
+ plugin: string;
6
+ daemon: string;
7
+ };
3
8
  /**
4
9
  * Mastervolt MasterBus for Signal K.
5
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAU1E,eAAO,MAAM,SAAS,sBAAsB,CAAA;AAK5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CA2LrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAgB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAU1E,eAAO,MAAM,SAAS,sBAAsB,CAAA;AAE5C,sEAAsE;AACtE,eAAO,MAAM,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAWnD,CAAA;AAKJ;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CA8LrD"}
package/plugin/index.js CHANGED
@@ -1,4 +1,6 @@
1
+ import fs from 'node:fs';
1
2
  import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
2
4
  import { DaemonClient } from './client.js';
3
5
  import { SCHEMA, UI_SCHEMA, withDefaults } from './config.js';
4
6
  import { DaemonManager, errMsg, resolveBinary } from './daemon.js';
@@ -6,6 +8,17 @@ import { PutBridge } from './put-bridge.js';
6
8
  import { registerRoutes } from './router.js';
7
9
  import { StreamForwarder } from './stream-forwarder.js';
8
10
  export const PLUGIN_ID = 'signalk-masterbus';
11
+ /** This plugin's own version and the masterbus version it bundles. */
12
+ export const VERSIONS = (() => {
13
+ try {
14
+ const own = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
15
+ const pkg = JSON.parse(fs.readFileSync(own, 'utf8'));
16
+ return { plugin: pkg.version ?? '?', daemon: pkg.masterbusDaemon ?? '?' };
17
+ }
18
+ catch {
19
+ return { plugin: '?', daemon: '?' };
20
+ }
21
+ })();
9
22
  /** How often the daemon is asked for its status and the mapping re-synced. */
10
23
  const POLL_MS = 10_000;
11
24
  /**
@@ -34,6 +47,7 @@ export default function plugin(app) {
34
47
  // notices and does not resurrect anything.
35
48
  let generation = 0;
36
49
  const summary = () => ({
50
+ versions: VERSIONS,
37
51
  mode: config?.mode ?? null,
38
52
  connected: client !== null && lastStatus !== null,
39
53
  daemon: daemon ? { running: daemon.running, recentLog: daemon.recentLog } : null,
@@ -43,7 +57,9 @@ export default function plugin(app) {
43
57
  putPaths: bridge?.paths ?? []
44
58
  });
45
59
  const statusLine = (s) => {
46
- const where = config?.mode === 'bundled' ? 'Bundled daemon' : `Daemon at ${client?.endpoint.host}`;
60
+ const where = config?.mode === 'bundled'
61
+ ? `Bundled daemon ${s.version}`
62
+ : `Daemon ${s.version} at ${client?.endpoint.host}`;
47
63
  const problems = s.diagnostics.errors > 0
48
64
  ? `; ${s.diagnostics.errors} mapping entr${s.diagnostics.errors === 1 ? 'y' : 'ies'} skipped, see the editor`
49
65
  : '';
@@ -159,7 +175,7 @@ export default function plugin(app) {
159
175
  id: PLUGIN_ID,
160
176
  name: 'MasterBus',
161
177
  description: 'Mastervolt MasterBus: publish battery, charger and inverter values, edit the mapping ' +
162
- 'in the browser, and switch devices from Signal K.',
178
+ `in the browser, and switch devices from Signal K. Bundles masterbus-signalk ${VERSIONS.daemon}.`,
163
179
  schema: SCHEMA,
164
180
  uiSchema: UI_SCHEMA,
165
181
  start(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAI5B,OAAO,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAe,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,CAAC,MAAM,SAAS,GAAG,mBAAmB,CAAA;AAE5C,8EAA8E;AAC9E,MAAM,OAAO,GAAG,MAAM,CAAA;AAEtB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAc;IAC3C,IAAI,MAAM,GAAkB,IAAI,CAAA;IAChC,IAAI,MAAM,GAAyB,IAAI,CAAA;IACvC,IAAI,MAAM,GAAwB,IAAI,CAAA;IACtC,IAAI,SAAS,GAA2B,IAAI,CAAA;IAC5C,IAAI,MAAM,GAAqB,IAAI,CAAA;IACnC,IAAI,MAAM,GAA0C,IAAI,CAAA;IACxD,IAAI,UAAU,GAAkB,IAAI,CAAA;IACpC,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,yEAAyE;IACzE,2CAA2C;IAC3C,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,MAAM,OAAO,GAAG,GAA4B,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;QAC1B,SAAS,EAAE,MAAM,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;QACjD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QAChF,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;QAClF,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;KAC9B,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE;QACvC,MAAM,KAAK,GACT,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAA;QACtF,MAAM,QAAQ,GACZ,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,gBAAgB,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,0BAA0B;YAC7G,CAAC,CAAC,EAAE,CAAA;QACR,OAAO,CACL,GAAG,KAAK,eAAe,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ;YAC/E,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YACzE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,QAAQ,CACT,CAAA;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAQ,EAAE;QACrC,SAAS,GAAG,GAAG,CAAA;QACf,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,wEAAwE;IACxE,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAM;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAA;YACpC,UAAU,GAAG,MAAM,CAAA;YACnB,SAAS,GAAG,IAAI,CAAA;YAChB,MAAM,OAAO,GAAY,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC9C,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;qBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;qBACxB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aAChC,CAAC,CACH,CAAA;YACD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,WAAW,GAAG,MAAM,CAAA;gBACpB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC1F,CAAC;YACH,CAAC;YACD,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,UAAU,GAAG,IAAI,CAAA;YACjB,QAAQ,CAAC,WAAW,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,EAAE,GAAW,EAAE,GAAW,EAAiB,EAAE;QACnE,IAAI,QAAkB,CAAA;QACtB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAA;YAC5D,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC;gBAC1B,MAAM;gBACN,OAAO;gBACP,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,MAAM,EAAE;oBACN,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;wBACZ,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;oBAC9B,CAAC;oBACD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;wBAClC,MAAM,GAAG,GAAG,sBAAsB,IAAI,IAAI,MAAM,IAAI,GAAG,GAAG,CAAA;wBAC1D,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;4BACvB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBAChB,CAAC;6BAAM,CAAC;4BACN,QAAQ,CACN,GAAG,GAAG,mBAAmB,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACpF,CAAA;wBACH,CAAC;oBACH,CAAC;oBACD,KAAK,EAAE,GAAG,EAAE;wBACV,GAAG,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAA;wBACrD,KAAK,IAAI,EAAE,CAAA;oBACb,CAAC;iBACF;aACF,CAAC,CAAA;YACF,MAAM,GAAG,CAAC,CAAA;YACV,GAAG,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACzD,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;YACf,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBACvB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;gBACd,OAAM;YACR,CAAC;YACD,QAAQ,GAAG;gBACT,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO;gBAC5B,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU;gBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAA;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC9B,GAAG,CAAC,eAAe,CAAC,iBAAiB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAA;QAC5E,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAA;QACpC,0EAA0E;QAC1E,UAAU,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;QAC7B,IAAI,GAAG,KAAK,UAAU;YAAE,OAAM;QAC9B,MAAM,GAAG,CAAC,CAAA;QACV,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QAC1C,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACrC,MAAM,GAAG,CAAC,CAAA;QACV,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE;YACjC,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,UAAU;YACzB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACd,CAAC;SACF,CAAC,CAAA;QACF,SAAS,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,KAAK,EAAE,CAAA;QACT,MAAM,IAAI,EAAE,CAAA;QACZ,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;YACxB,KAAK,IAAI,EAAE,CAAA;QACb,CAAC,EAAE,OAAO,CAAC,CAAA;IACb,CAAC,CAAA;IAED,OAAO;QACL,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,uFAAuF;YACvF,mDAAmD;QACrD,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,SAAS;QAEnB,KAAK,CAAC,OAAe;YACnB,MAAM,GAAG,GAAG,EAAE,UAAU,CAAA;YACxB,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;YAC9B,SAAS,GAAG,IAAI,CAAA;YAChB,KAAK,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBAClD,IAAI,GAAG,KAAK,UAAU;oBAAE,OAAM;gBAC9B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,IAAI;YACR,UAAU,EAAE,CAAA;YACZ,IAAI,MAAM,EAAE,CAAC;gBACX,aAAa,CAAC,MAAM,CAAC,CAAA;gBACrB,MAAM,GAAG,IAAI,CAAA;YACf,CAAC;YACD,SAAS,EAAE,IAAI,EAAE,CAAA;YACjB,SAAS,GAAG,IAAI,CAAA;YAChB,MAAM,EAAE,KAAK,EAAE,CAAA;YACf,MAAM,GAAG,IAAI,CAAA;YACb,MAAM,GAAG,IAAI,CAAA;YACb,UAAU,GAAG,IAAI,CAAA;YACjB,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,MAAM,CAAA;gBAChB,MAAM,GAAG,IAAI,CAAA;gBACb,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YAChB,CAAC;YACD,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QAChC,CAAC;QAED,kBAAkB,CAAC,MAAoB;YACrC,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAC3D,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ :root{--bg: #e4e5e6;--panel: #ffffff;--text: #29363d;--muted: #73818f;--line: #c2cfd6;--accent: #003399;--accent-text: #ffffff;--ok: #3a9d5d;--warn: #a67c00;--err: #d9534f;--sel: #f0f3f5;--mono: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;color-scheme:light}*{box-sizing:border-box}body{margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:4px 10px;cursor:pointer}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}a.button{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:4px 10px;color:var(--accent);text-decoration:none;background:var(--panel)}a.button:hover{background:var(--sel)}input[type=text],input[type=number],select{border:1px solid var(--line);border-radius:6px;padding:4px 8px;background:var(--panel)}code,.mono{font-family:var(--mono);font-size:12.5px}.app{display:grid;grid-template-rows:auto 1fr;height:100vh}header.top{display:flex;gap:16px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap}header.top h1{font-size:16px;margin:0}header.top .status{color:var(--muted);flex:1;min-width:200px}header.top .status.err{color:var(--err)}.body{display:grid;grid-template-columns:280px 1fr;min-height:0}@media(max-width:700px){.body{grid-template-columns:1fr;grid-template-rows:auto 1fr}}aside.devices{border-right:1px solid var(--line);overflow:auto;background:var(--panel)}aside.devices .dev{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:8px 12px;background:transparent}aside.devices .dev.sel{background:var(--sel)}aside.devices .dev .name{font-weight:600}aside.devices .dev .meta{color:var(--muted);font-size:12px}main.fields{overflow:auto;padding:12px 16px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.toolbar .spacer{flex:1}.dirty{color:var(--warn);font-weight:600}table.fields{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line)}table.fields th,table.fields td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}table.fields th{font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}table.fields tr.menu td{background:var(--sel);font-weight:600}table.fields td.path{font-family:var(--mono);font-size:12.5px;word-break:break-all}table.fields td.num{text-align:right;font-family:var(--mono);white-space:nowrap}.tag{display:inline-block;padding:0 6px;border-radius:10px;font-size:11px;border:1px solid var(--line);color:var(--muted);margin-left:4px}.diag{margin-top:14px;padding:8px 12px;border:1px solid var(--line);border-radius:6px;background:var(--panel)}.diag li{margin:2px 0}.sev-error{color:var(--err)}.sev-warning{color:var(--warn)}.sev-info{color:var(--muted)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--panel);border-radius:10px;padding:16px 18px;width:min(640px,100%);max-height:90vh;overflow:auto;box-shadow:0 10px 40px #0000004d}.modal h2{margin:0 0 4px;font-size:16px}.modal .sub{color:var(--muted);margin-bottom:12px}.modal label.row{display:flex;gap:8px;align-items:center;margin:8px 0}.modal input.path{width:100%;font-family:var(--mono)}.hint{margin:6px 0 10px;padding:6px 10px;border-radius:6px;border:1px solid var(--line)}.hint.ok{border-color:var(--ok)}.hint.warn{border-color:var(--warn)}.hint.err{border-color:var(--err)}.table-edit{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:center;margin:6px 0 10px}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.empty{color:var(--muted);padding:24px;text-align:center}