@signalk/server-admin-ui 2.23.2 → 2.24.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 (56) hide show
  1. package/README.md +42 -10
  2. package/index.html +1 -1
  3. package/package.json +54 -25
  4. package/public/assets/adminUI__loadShare__react__loadShare__.mjs-D12K3nc7.js +2 -0
  5. package/public/assets/adminUI__loadShare__react__loadShare__.mjs_commonjs-proxy-CxhLHr3R.js +2 -0
  6. package/public/assets/adminUI__loadShare__react_mf_2_dom__loadShare__.mjs-BWXpsqcx.js +2 -0
  7. package/public/assets/adminUI__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-BdljRO5t.js +2 -0
  8. package/public/assets/bootstrap-BU9GjXh2.js +832 -0
  9. package/public/assets/hostInit-D-eMgRM5.js +2 -0
  10. package/public/assets/index-A9nEavld.js +10 -0
  11. package/public/assets/index-CRpLmmqx.js +10 -0
  12. package/public/assets/index-CjzeMIEK.js +3 -0
  13. package/public/assets/localSharedImportMap-DB5tFz3u.js +2 -0
  14. package/public/assets/style-CLVMbhfE.css +11 -0
  15. package/public/assets/virtualExposes-FmFgRqLi.js +2 -0
  16. package/public/index.html +4 -5
  17. package/public/react-16.production.min.js +786 -0
  18. package/public/react-dom-16.production.min.js +7454 -0
  19. package/public/remoteEntry.js +7 -2
  20. package/tsconfig.node.json +10 -0
  21. package/public/assets/Simple-Line-Icons-TZpPYPE3.svg +0 -200
  22. package/public/assets/adminUI__loadShare__react__loadShare__.mjs-D8asHvWX.js +0 -2
  23. package/public/assets/adminUI__loadShare__react__loadShare__.mjs_commonjs-proxy-ByXi4yJ8.js +0 -2
  24. package/public/assets/adminUI__loadShare__react_mf_2_dom__loadShare__.mjs-DH1wL779.js +0 -2
  25. package/public/assets/bootstrap-bNZv2cMS.js +0 -818
  26. package/public/assets/fa-brands-400-CEJbCg16.woff +0 -0
  27. package/public/assets/fa-brands-400-CSYNqBb_.ttf +0 -0
  28. package/public/assets/fa-brands-400-DnkPfk3o.eot +0 -0
  29. package/public/assets/fa-brands-400-UxlILjvJ.woff2 +0 -0
  30. package/public/assets/fa-brands-400-cH1MgKbP.svg +0 -3717
  31. package/public/assets/fa-regular-400-BhTwtT8w.eot +0 -0
  32. package/public/assets/fa-regular-400-D1vz6WBx.ttf +0 -0
  33. package/public/assets/fa-regular-400-DFnMcJPd.woff +0 -0
  34. package/public/assets/fa-regular-400-DGzu1beS.woff2 +0 -0
  35. package/public/assets/fa-regular-400-gwj8Pxq-.svg +0 -801
  36. package/public/assets/fa-solid-900-B4ZZ7kfP.svg +0 -5034
  37. package/public/assets/fa-solid-900-B6Axprfb.eot +0 -0
  38. package/public/assets/fa-solid-900-BUswJgRo.woff2 +0 -0
  39. package/public/assets/fa-solid-900-DOXgCApm.woff +0 -0
  40. package/public/assets/fa-solid-900-mxuxnBEa.ttf +0 -0
  41. package/public/assets/fontawesome-webfont-B-jkhYfk.woff2 +0 -0
  42. package/public/assets/fontawesome-webfont-CDK5bt4p.woff +0 -0
  43. package/public/assets/fontawesome-webfont-CQDK8MU3.ttf +0 -0
  44. package/public/assets/fontawesome-webfont-D13rzr4g.svg +0 -2671
  45. package/public/assets/fontawesome-webfont-G5YE5S7X.eot +0 -0
  46. package/public/assets/hostInit-BMKH-INB.js +0 -3
  47. package/public/assets/index-BEQk0SN_.js +0 -9
  48. package/public/assets/index-C0euSWDO.js +0 -19
  49. package/public/assets/index-CLC5Par7.js +0 -3
  50. package/public/assets/index-LtR7LJbL.js +0 -6
  51. package/public/assets/index.cjs-qNTcCtpj.js +0 -8
  52. package/public/assets/loadingerror-Beick9Sd.js +0 -2
  53. package/public/assets/runtimeInit-DE95pSy4.js +0 -2
  54. package/public/assets/style-CzSZ78W4.css +0 -18
  55. package/public/assets/virtualExposes-BIHI7g3E.js +0 -2
  56. package/vite.config.js +0 -66
package/README.md CHANGED
@@ -1,15 +1,47 @@
1
1
  # @signalk/server-admin-ui
2
2
 
3
- Used within the [Signal K](http://signalk.org) [Node Server](https://github.com/SignalK/signalk-server-node) to render the admin interface.
4
-
5
- This is its own package so when its installed the javascript asset files come compiled. It makes the build process from the git repo easier and more efficient.
3
+ Admin interface for the [Signal K](http://signalk.org) [Node Server](https://github.com/SignalK/signalk-server-node).
6
4
 
7
5
  ## Development
8
6
 
9
- - Install dev packages with `npm i`.
10
- - Edit files with `/src`.
11
- - Run `npm run prepublishOnly`
12
- - `npm link`
13
- - `cd ../../`
14
- - `npm link @signalk/server-admin-ui`
15
- - Restart signalk `npm start`
7
+ ### Hot Reload
8
+
9
+ 1. Start the Signal K server on port 3000:
10
+
11
+ ```bash
12
+ bin/nmea-from-file
13
+ ```
14
+
15
+ 2. In a separate terminal, start the Vite dev server:
16
+
17
+ ```bash
18
+ cd packages/server-admin-ui
19
+ npm run dev
20
+ ```
21
+
22
+ 3. Open http://localhost:5173 in your browser
23
+
24
+ The dev server proxies API requests to the Signal K server on port 3000.
25
+
26
+ ### Production Build
27
+
28
+ ```bash
29
+ npm run build
30
+ npm link
31
+ cd ../../
32
+ npm link @signalk/server-admin-ui
33
+ npm start
34
+ ```
35
+
36
+ Then access the Admin UI at http://localhost:3000.
37
+
38
+ ### Scripts
39
+
40
+ - `npm run dev` - Vite dev server with hot reload (port 5173)
41
+ - `npm run build` - Production build
42
+ - `npm run lint` - ESLint with auto-fix
43
+ - `npm run format` - Prettier
44
+
45
+ ## Module Federation
46
+
47
+ Embedded webapps and plugin configuration panels use Module Federation to share React as a singleton. See the [WebApps documentation](../../docs/develop/webapps.md) for details.
package/index.html CHANGED
@@ -18,6 +18,6 @@
18
18
  class="app header-fixed sidebar-fixed aside-menu-fixed aside-menu-hidden"
19
19
  >
20
20
  <div id="root"></div>
21
- <script type="module" src="/src/index.js"></script>
21
+ <script type="module" src="/src/index.ts"></script>
22
22
  </body>
23
23
  </html>
package/package.json CHANGED
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "@signalk/server-admin-ui",
3
- "version": "2.23.2",
3
+ "version": "2.24.0",
4
4
  "description": "Signal K server admin webapp",
5
- "author": "Scott Bender, Teppo Kurki",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/SignalK/signalk-server.git",
8
+ "directory": "packages/server-admin-ui"
9
+ },
10
+ "author": "Dirk Wahrheit, Scott Bender, Teppo Kurki",
6
11
  "contributors": [
7
12
  {
8
13
  "name": "Teppo Kurki"
@@ -12,50 +17,68 @@
12
17
  }
13
18
  ],
14
19
  "license": "MIT",
20
+ "type": "module",
21
+ "keywords": [
22
+ "signalk-webapp"
23
+ ],
24
+ "signalk": {
25
+ "appIcon": "./img/signal-k-logo-image.svg",
26
+ "displayName": "Admin UI"
27
+ },
15
28
  "devDependencies": {
16
29
  "@babel/core": "^7.11.6",
17
30
  "@babel/preset-react": "^7.10.4",
18
- "@fortawesome/fontawesome-free": "^5.15.1",
19
31
  "@fortawesome/fontawesome-svg-core": "^6.5.1",
32
+ "@fortawesome/free-brands-svg-icons": "^6.5.1",
20
33
  "@fortawesome/free-regular-svg-icons": "^6.5.1",
21
34
  "@fortawesome/free-solid-svg-icons": "^6.5.1",
22
- "@fortawesome/react-fontawesome": "^0.2.0",
23
- "@module-federation/vite": "^1.0.10",
24
- "@rjsf/bootstrap-4": "^5.24.13",
35
+ "@fortawesome/react-fontawesome": "^3.1.1",
36
+ "@module-federation/vite": "^1.9.4",
25
37
  "@rjsf/core": "^5.24.13",
26
38
  "@rjsf/utils": "^5.24.13",
27
39
  "@rjsf/validator-ajv8": "^5.24.13",
28
- "@signalk/server-admin-ui-dependencies": "1.0.1",
29
- "@vitejs/plugin-react": "^4.3.4",
40
+ "@signalk/server-admin-ui-dependencies": "2.23.0",
41
+ "@testing-library/dom": "^10.4.0",
42
+ "@testing-library/jest-dom": "^6.9.1",
43
+ "@testing-library/react": "^16.3.2",
44
+ "@testing-library/user-event": "^14.6.1",
45
+ "@types/escape-html": "^1.0.4",
46
+ "@types/lodash.remove": "^4.7.9",
47
+ "@types/lodash.set": "^4.3.9",
48
+ "@types/lodash.uniq": "^4.5.9",
49
+ "@types/react": "^19.2.0",
50
+ "@types/react-dom": "^19.2.0",
51
+ "@vitejs/plugin-react": "^5.1.2",
52
+ "@vitest/coverage-v8": "^4.0.18",
30
53
  "ansi-to-html": "^0.6.14",
31
- "bootstrap": "^4.5.3",
54
+ "babel-plugin-react-compiler": "^1.0.0",
55
+ "bootstrap": "^5.3.3",
32
56
  "buffer": "^6.0.3",
57
+ "dayjs": "^1.11.13",
33
58
  "escape-html": "^1.0.3",
34
- "font-awesome": "^4.7.0",
59
+ "html-react-parser": "^5.2.5",
60
+ "jsdom": "^27.4.0",
35
61
  "jsonlint-mod": "^1.7.6",
36
62
  "lodash.remove": "^4.7.0",
37
- "mathjs": "^12.4.0",
38
63
  "lodash.set": "^4.3.2",
39
64
  "lodash.uniq": "^4.5.0",
40
- "moment": "^2.29.1",
41
- "react": "^16.14.0",
42
- "react-bootstrap": "^1.6.8",
43
- "react-copy-to-clipboard": "^5.0.3",
44
- "react-dom": "^16.14.0",
45
- "react-html-parser": "^2.0.2",
65
+ "mathjs": "^12.4.0",
66
+ "react": "^19.2.0",
67
+ "react-dom": "^19.2.0",
46
68
  "react-infinite-scroll-component": "^6.1.0",
47
69
  "react-json-tree": "^0.20.0",
48
- "react-redux": "^5.1.2",
49
- "react-router-dom": "^4.3.1",
50
- "react-select": "^3.1.0",
51
- "reactstrap": "^5.0.0",
70
+ "react-router-dom": "^6.28.0",
71
+ "react-bootstrap": "^2.10.10",
72
+ "react-select": "^5.10.2",
52
73
  "reconnecting-websocket": "^4.4.0",
53
- "redux": "^3.7.2",
54
- "redux-thunk": "2.3.0",
55
74
  "rollup-plugin-visualizer": "^5.12.0",
56
75
  "sass": "^1.81.0",
76
+ "@fortawesome/fontawesome-free": "^5.15.1",
77
+ "font-awesome": "^4.7.0",
57
78
  "simple-line-icons": "^2.5.5",
58
- "vite": "^6.0.5"
79
+ "typescript": "^5.7.2",
80
+ "vite": "^6.0.5",
81
+ "vitest": "^4.0.18"
59
82
  },
60
83
  "scripts": {
61
84
  "prepublishOnly": "npm run build",
@@ -66,6 +89,12 @@
66
89
  "format": "prettier --write src/",
67
90
  "lint": "eslint --fix",
68
91
  "clean": "rimraf ./public",
69
- "bundle-analyzer": "vite-bundle-visualizer"
92
+ "bundle-analyzer": "vite-bundle-visualizer",
93
+ "test": "vitest run",
94
+ "test:watch": "vitest",
95
+ "test:coverage": "vitest run --coverage"
96
+ },
97
+ "dependencies": {
98
+ "zustand": "^5.0.10"
70
99
  }
71
100
  }
@@ -0,0 +1,2 @@
1
+ function i(e,n){for(var a=0;a<n.length;a++){const _=n[a];if(typeof _!="string"&&!Array.isArray(_)){for(const t in _)if(t!=="default"&&!(t in e)){const f=Object.getOwnPropertyDescriptor(_,t);f&&Object.defineProperty(e,t,f.get?f:{enumerable:!0,get:()=>_[t]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const o="__mf_init____mf__virtual/adminUI__mf_v__runtimeInit__mf_v__.js__";let r=globalThis[o];if(!r){let e,n;const a=new Promise((_,t)=>{e=_,n=t});r=globalThis[o]={initPromise:a,initResolve:e,initReject:n},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const m=r.initPromise,u=m.then(e=>e.loadShare("react",{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:"^19.0.0"}}})),s=await u.then(e=>typeof e=="function"?e():e),c=s,l=s.__esModule?s.default:s.default??s,{Activity:d,Children:E,Component:R,Fragment:S,Profiler:p,PureComponent:C,StrictMode:h,Suspense:g,__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:P,__COMPILER_RUNTIME:T,cache:v,cacheSignal:y,cloneElement:I,createContext:N,createElement:O,createRef:b,forwardRef:A,isValidElement:M,lazy:x,memo:D,startTransition:U,unstable_useCacheRefresh:w,use:L,useActionState:V,useCallback:j,useContext:k,useDebugValue:z,useDeferredValue:H,useEffect:G,useEffectEvent:q,useId:F,useImperativeHandle:W,useInsertionEffect:Y,useLayoutEffect:K,useMemo:$,useOptimistic:B,useReducer:J,useRef:Q,useState:X,useSyncExternalStore:Z,useTransition:ee,version:_e}=s,te=i({__proto__:null,Activity:d,Children:E,Component:R,Fragment:S,Profiler:p,PureComponent:C,StrictMode:h,Suspense:g,__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:P,__COMPILER_RUNTIME:T,cache:v,cacheSignal:y,cloneElement:I,createContext:N,createElement:O,createRef:b,default:l,forwardRef:A,isValidElement:M,lazy:x,memo:D,startTransition:U,unstable_useCacheRefresh:w,use:L,useActionState:V,useCallback:j,useContext:k,useDebugValue:z,useDeferredValue:H,useEffect:G,useEffectEvent:q,useId:F,useImperativeHandle:W,useInsertionEffect:Y,useLayoutEffect:K,useMemo:$,useOptimistic:B,useReducer:J,useRef:Q,useState:X,useSyncExternalStore:Z,useTransition:ee,version:_e},[c]);export{B as A,te as R,k as _,$ as a,O as b,E as c,M as d,S as e,G as f,N as g,Q as h,j as i,K as j,R as k,X as l,A as m,l as n,_e as o,I as p,J as q,W as r,F as s,V as t,g as u,Z as v,D as w,H as x,ee as y,b as z};
2
+ //# sourceMappingURL=adminUI__loadShare__react__loadShare__.mjs-D12K3nc7.js.map
@@ -0,0 +1,2 @@
1
+ import{R as u}from"./adminUI__loadShare__react__loadShare__.mjs-D12K3nc7.js";var s=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function l(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function f(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var o=e.default;if(typeof o=="function"){var t=function r(){return this instanceof r?Reflect.construct(o,arguments,this.constructor):o.apply(this,arguments)};t.prototype=o.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}),t}const c=f(u);export{l as a,s as c,f as g,c as r};
2
+ //# sourceMappingURL=adminUI__loadShare__react__loadShare__.mjs_commonjs-proxy-CxhLHr3R.js.map
@@ -0,0 +1,2 @@
1
+ function f(e,r){for(var n=0;n<r.length;n++){const _=r[n];if(typeof _!="string"&&!Array.isArray(_)){for(const t in _)if(t!=="default"&&!(t in e)){const i=Object.getOwnPropertyDescriptor(_,t);i&&Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>_[t]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const a="__mf_init____mf__virtual/adminUI__mf_v__runtimeInit__mf_v__.js__";let s=globalThis[a];if(!s){let e,r;const n=new Promise((_,t)=>{e=_,r=t});s=globalThis[a]={initPromise:n,initResolve:e,initReject:r},typeof window>"u"&&e({loadRemote:function(){return Promise.resolve(void 0)},loadShare:function(){return Promise.resolve(void 0)}})}const l=s.initPromise,m=l.then(e=>e.loadShare("react-dom",{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:"^19.0.0"}}})),o=await m.then(e=>typeof e=="function"?e():e),u=o,c=o.__esModule?o.default:o.default??o,{__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:d,createPortal:p,flushSync:S,preconnect:R,prefetchDNS:O,preinit:h,preinitModule:N,preload:P,preloadModule:b,requestFormReset:g,unstable_batchedUpdates:D,useFormState:E,useFormStatus:M,version:T}=o,v=f({__proto__:null,__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE:d,createPortal:p,default:c,flushSync:S,preconnect:R,prefetchDNS:O,preinit:h,preinitModule:N,preload:P,preloadModule:b,requestFormReset:g,unstable_batchedUpdates:D,useFormState:E,useFormStatus:M,version:T},[u]);export{v as R,p as _,c as a};
2
+ //# sourceMappingURL=adminUI__loadShare__react_mf_2_dom__loadShare__.mjs-BWXpsqcx.js.map
@@ -0,0 +1,2 @@
1
+ import{R as e}from"./adminUI__loadShare__react_mf_2_dom__loadShare__.mjs-BWXpsqcx.js";import{g as r}from"./adminUI__loadShare__react__loadShare__.mjs_commonjs-proxy-CxhLHr3R.js";const m=r(e);export{m as r};
2
+ //# sourceMappingURL=adminUI__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-BdljRO5t.js.map