gitextract_s_vrwrw7/ ├── .coderabbit.yaml ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── dependabot.yml │ └── workflows/ │ ├── build-base-image.yml │ ├── build-docker.yml │ ├── plugin-ci.yml │ ├── release.yml │ ├── require_pr_label.yml │ ├── security-scan.yml │ └── test.yml ├── .gitignore ├── .mocharc.js ├── .npmignore ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── .python-version ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── LICENSE ├── Procfile ├── README.md ├── docker/ │ ├── Dockerfile │ ├── Dockerfile_base_24.04 │ ├── Dockerfile_base_alpine │ ├── Dockerfile_rel │ ├── README.md │ ├── avahi/ │ │ └── avahi-dbus.conf │ ├── bluez/ │ │ └── bluezuser.conf │ ├── docker-compose.yml │ ├── startup.sh │ └── v2_demo/ │ ├── Dockerfile │ ├── course-data.json │ ├── resources/ │ │ ├── routes/ │ │ │ ├── ad825f6c-1ae9-4f76-abc4-df2866b14b78 │ │ │ └── da825f6c-1ae9-4f76-abc4-df2866b14b78 │ │ └── waypoints/ │ │ ├── ac3a3b2d-07e8-4f25-92bc-98e7c92f7f1a │ │ └── afe46290-aa98-4d2f-9c04-d199ca64942e │ ├── resources-provider.json │ ├── serverstate/ │ │ └── course/ │ │ └── settings.json │ └── startup_heroku_demo.sh ├── docs/ │ ├── README.md │ ├── breaking_changes.md │ ├── develop/ │ │ ├── README.md │ │ ├── plugins/ │ │ │ ├── README.md │ │ │ ├── autopilot_provider_plugins.md │ │ │ ├── backpressure.md │ │ │ ├── ci.md │ │ │ ├── configuration.md │ │ │ ├── course_calculations.md │ │ │ ├── custom_renderers.md │ │ │ ├── deltas.md │ │ │ ├── examples/ │ │ │ │ ├── plugin-caller-example.yml │ │ │ │ ├── plugin-dependabot-example.yml │ │ │ │ └── plugin-release-example.yml │ │ │ ├── publishing.md │ │ │ ├── release.md │ │ │ ├── resource_provider_plugins.md │ │ │ ├── wasm/ │ │ │ │ ├── README.md │ │ │ │ ├── assemblyscript.md │ │ │ │ ├── best_practices.md │ │ │ │ ├── capabilities.md │ │ │ │ ├── deltas.md │ │ │ │ ├── go.md │ │ │ │ ├── http_endpoints.md │ │ │ │ ├── integration_guide.md │ │ │ │ └── rust.md │ │ │ └── weather_provider_plugins.md │ │ ├── rest-api/ │ │ │ ├── README.md │ │ │ ├── autopilot_api.md │ │ │ ├── conventions.md │ │ │ ├── course_api.md │ │ │ ├── history_api.md │ │ │ ├── notifications_api.md │ │ │ ├── plugin_api.md │ │ │ ├── proposed/ │ │ │ │ ├── README.md │ │ │ │ └── anchor_api.md │ │ │ ├── radar_api.md │ │ │ ├── resources_api.md │ │ │ └── weather_api.md │ │ └── webapps.md │ ├── guides/ │ │ ├── README.md │ │ ├── anchoralarm/ │ │ │ └── anchoralarm.md │ │ ├── datalogging/ │ │ │ └── datalogging.md │ │ ├── navdataserver/ │ │ │ └── navdataserver.md │ │ ├── udev.md │ │ └── unitpreferences.md │ ├── img/ │ │ ├── autopilot_provider.dia │ │ ├── course_provider.dia │ │ ├── notification_manager.dia │ │ ├── resource_provider.dia │ │ └── server_only.dia │ ├── installation/ │ │ ├── README.md │ │ ├── command_line.md │ │ ├── docker.md │ │ ├── npm.md │ │ ├── raspberry_pi_installation.md │ │ ├── source.md │ │ └── updating.md │ ├── internal/ │ │ ├── README.md │ │ ├── wasm-architecture.md │ │ └── wasm-asyncify.md │ ├── oidc.md │ ├── security-architecture.md │ ├── security.md │ ├── setup/ │ │ ├── configuration.md │ │ ├── generating_tokens.md │ │ ├── nmea.md │ │ └── seatalk/ │ │ └── README.md │ ├── src/ │ │ └── features/ │ │ └── weather/ │ │ └── weather.md │ ├── support/ │ │ ├── help.md │ │ └── sponsor.md │ └── whats_new.md ├── empty_file ├── eslint.config.js ├── examples/ │ └── wasm-plugins/ │ ├── example-anchor-watch-rust/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── lib.rs │ │ └── wit/ │ │ └── signalk-plugin.wit │ ├── example-hello-assemblyscript/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── asconfig.json │ │ ├── assembly/ │ │ │ └── index.ts │ │ └── package.json │ ├── example-routes-waypoints/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── asconfig.json │ │ ├── assembly/ │ │ │ └── index.ts │ │ └── package.json │ ├── example-weather-plugin/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── asconfig.json │ │ ├── assembly/ │ │ │ └── index.ts │ │ └── package.json │ └── example-weather-provider/ │ ├── .gitignore │ ├── .npmignore │ ├── README.md │ ├── asconfig.json │ ├── assembly/ │ │ └── index.ts │ └── package.json ├── fly_io/ │ ├── cr_signalk_io/ │ │ ├── Dockerfile │ │ ├── fly.toml │ │ └── nginx.conf │ └── demo_signalk_org/ │ ├── Dockerfile │ ├── fly.toml │ └── security.json ├── index.js ├── kubernetes/ │ ├── README.md │ ├── signalk-deployment.yaml │ └── signalk-ingress.yaml ├── kubernetes.md ├── package.json ├── packages/ │ ├── assemblyscript-plugin-sdk/ │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── asconfig.json │ │ ├── assembly/ │ │ │ ├── api.ts │ │ │ ├── index.ts │ │ │ ├── network.ts │ │ │ ├── plugin.ts │ │ │ ├── resources.ts │ │ │ └── signalk.ts │ │ ├── build/ │ │ │ ├── plugin.d.ts │ │ │ └── plugin.js │ │ └── package.json │ ├── resources-provider-plugin/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── @types/ │ │ │ │ └── geojson-validation.d.ts │ │ │ ├── index.ts │ │ │ ├── openApi.json │ │ │ └── types/ │ │ │ ├── index.ts │ │ │ └── store.ts │ │ └── tsconfig.json │ ├── server-admin-ui/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── public_src/ │ │ │ └── index.html │ │ ├── scss/ │ │ │ ├── _bootstrap-variables.scss │ │ │ ├── _core-variables.scss │ │ │ ├── _custom.scss │ │ │ ├── core/ │ │ │ │ ├── _animate.scss │ │ │ │ ├── _aside.scss │ │ │ │ ├── _avatars.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _breadcrumb-menu.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _callout.scss │ │ │ │ ├── _card.scss │ │ │ │ ├── _charts.scss │ │ │ │ ├── _dropdown-menu-right.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _footer.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _input-group.scss │ │ │ │ ├── _layout.scss │ │ │ │ ├── _loading.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _mobile.scss │ │ │ │ ├── _modal.scss │ │ │ │ ├── _nav.scss │ │ │ │ ├── _navbar.scss │ │ │ │ ├── _others.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── _rtl.scss │ │ │ │ ├── _sidebar.scss │ │ │ │ ├── _switches.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _temp.scss │ │ │ │ ├── _typography.scss │ │ │ │ ├── _utilities.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── _widgets.scss │ │ │ │ ├── core.scss │ │ │ │ └── utilities/ │ │ │ │ ├── _background.scss │ │ │ │ ├── _borders.scss │ │ │ │ └── _display.scss │ │ │ ├── style.scss │ │ │ └── vendors/ │ │ │ ├── _variables.scss │ │ │ └── chart.js/ │ │ │ └── chart.scss │ │ ├── src/ │ │ │ ├── actions.ts │ │ │ ├── blinking-circle.css │ │ │ ├── bootstrap.tsx │ │ │ ├── components/ │ │ │ │ ├── Aside/ │ │ │ │ │ └── Aside.tsx │ │ │ │ ├── Footer/ │ │ │ │ │ └── Footer.tsx │ │ │ │ ├── Header/ │ │ │ │ │ └── Header.tsx │ │ │ │ ├── Icons.tsx │ │ │ │ ├── Sidebar/ │ │ │ │ │ └── Sidebar.tsx │ │ │ │ ├── SidebarFooter/ │ │ │ │ │ └── SidebarFooter.tsx │ │ │ │ ├── SidebarForm/ │ │ │ │ │ └── SidebarForm.tsx │ │ │ │ ├── SidebarHeader/ │ │ │ │ │ └── SidebarHeader.tsx │ │ │ │ └── SidebarMinimizer/ │ │ │ │ └── SidebarMinimizer.tsx │ │ │ ├── containers/ │ │ │ │ └── Full/ │ │ │ │ └── Full.tsx │ │ │ ├── contexts/ │ │ │ │ └── WebSocketContext.tsx │ │ │ ├── dataFetching.ts │ │ │ ├── dependency-sync.test.ts │ │ │ ├── fa-pulse.css │ │ │ ├── hooks/ │ │ │ │ └── useWebSocket.ts │ │ │ ├── index.ts │ │ │ ├── routes.ts │ │ │ ├── services/ │ │ │ │ └── WebSocketService.ts │ │ │ ├── store/ │ │ │ │ ├── index.ts │ │ │ │ ├── slices/ │ │ │ │ │ ├── appSlice.test.ts │ │ │ │ │ ├── appSlice.ts │ │ │ │ │ ├── dataSlice.test.ts │ │ │ │ │ ├── dataSlice.ts │ │ │ │ │ ├── prioritiesSlice.test.ts │ │ │ │ │ ├── prioritiesSlice.ts │ │ │ │ │ ├── unitPreferencesSlice.ts │ │ │ │ │ ├── wsSlice.test.ts │ │ │ │ │ └── wsSlice.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ └── setup.ts │ │ │ ├── types/ │ │ │ │ └── jsonlint-mod.d.ts │ │ │ ├── utils/ │ │ │ │ └── unitConversion.ts │ │ │ └── views/ │ │ │ ├── Configuration/ │ │ │ │ ├── Configuration.tsx │ │ │ │ └── EmbeddedPluginConfigurationForm.tsx │ │ │ ├── Dashboard/ │ │ │ │ └── Dashboard.tsx │ │ │ ├── DataBrowser/ │ │ │ │ ├── CopyToClipboardWithFade.tsx │ │ │ │ ├── DataBrowser.tsx │ │ │ │ ├── DataRow.tsx │ │ │ │ ├── GranularSubscriptionManager.ts │ │ │ │ ├── Meta.tsx │ │ │ │ ├── TimestampCell.tsx │ │ │ │ ├── ValueRenderers.tsx │ │ │ │ ├── VirtualTable.css │ │ │ │ ├── VirtualizedDataTable.tsx │ │ │ │ ├── VirtualizedMetaTable.tsx │ │ │ │ ├── pathUtils.ts │ │ │ │ └── usePathData.ts │ │ │ ├── Playground.tsx │ │ │ ├── ServerConfig/ │ │ │ │ ├── BackupRestore.tsx │ │ │ │ ├── BasicProvider.tsx │ │ │ │ ├── Logging.tsx │ │ │ │ ├── N2KFilters.tsx │ │ │ │ ├── PluginConfigurationForm.tsx │ │ │ │ ├── ProvidersConfiguration.tsx │ │ │ │ ├── ServerLog.tsx │ │ │ │ ├── ServerUpdate.tsx │ │ │ │ ├── Settings.tsx │ │ │ │ ├── SourcePriorities.tsx │ │ │ │ ├── UnitPreferencesSettings.tsx │ │ │ │ └── VesselConfiguration.tsx │ │ │ ├── Webapps/ │ │ │ │ ├── Embedded.tsx │ │ │ │ ├── EmbeddedAsyncApi.tsx │ │ │ │ ├── EmbeddedDocs.tsx │ │ │ │ ├── Webapp.tsx │ │ │ │ ├── Webapps.tsx │ │ │ │ ├── dynamicutilities.ts │ │ │ │ └── loadingerror.tsx │ │ │ ├── appstore/ │ │ │ │ ├── Apps/ │ │ │ │ │ ├── Apps.tsx │ │ │ │ │ └── WarningBox.tsx │ │ │ │ ├── AppsList.tsx │ │ │ │ ├── Grid/ │ │ │ │ │ └── cell-renderers/ │ │ │ │ │ ├── ActionCellRenderer.test.tsx │ │ │ │ │ └── ActionCellRenderer.tsx │ │ │ │ └── appStore.scss │ │ │ └── security/ │ │ │ ├── AccessRequests.tsx │ │ │ ├── Devices.tsx │ │ │ ├── EnableSecurity.tsx │ │ │ ├── Login.tsx │ │ │ ├── OIDCSettings.tsx │ │ │ ├── Register.tsx │ │ │ ├── Settings.tsx │ │ │ └── Users.tsx │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── server-admin-ui-dependencies/ │ │ ├── index.js │ │ └── package.json │ ├── server-api/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .npmrc │ │ ├── package.json │ │ ├── src/ │ │ │ ├── autopilotapi.ts │ │ │ ├── brand.ts │ │ │ ├── course.ts │ │ │ ├── coursetypes.ts │ │ │ ├── deltas.test.ts │ │ │ ├── deltas.ts │ │ │ ├── features.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ ├── mmsi/ │ │ │ │ ├── mid.ts │ │ │ │ ├── mmsi.test.ts │ │ │ │ └── mmsi.ts │ │ │ ├── notificationsapi.ts │ │ │ ├── plugin.ts │ │ │ ├── propertyvalues.test.ts │ │ │ ├── propertyvalues.ts │ │ │ ├── radarapi.ts │ │ │ ├── resourcesapi.ts │ │ │ ├── resourcetypes.ts │ │ │ ├── serverapi.ts │ │ │ ├── streambundle.ts │ │ │ ├── subscriptionmanager.ts │ │ │ ├── typebox/ │ │ │ │ ├── autopilot-schemas.ts │ │ │ │ ├── course-schemas.ts │ │ │ │ ├── discovery-schemas.ts │ │ │ │ ├── history-schemas.ts │ │ │ │ ├── index.ts │ │ │ │ ├── notifications-schemas.ts │ │ │ │ ├── protocol-schemas.ts │ │ │ │ ├── radar-schemas.ts │ │ │ │ ├── resources-schemas.ts │ │ │ │ ├── shared-schemas.ts │ │ │ │ └── weather-schemas.ts │ │ │ ├── weatherapi.guard.ts │ │ │ └── weatherapi.ts │ │ ├── tsconfig.json │ │ ├── typedoc.json │ │ └── wit/ │ │ └── signalk.wit │ ├── streams/ │ │ ├── .npmrc │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actisense-serial.ts │ │ │ ├── autodetect.test.ts │ │ │ ├── autodetect.ts │ │ │ ├── canboatjs.test.ts │ │ │ ├── canboatjs.ts │ │ │ ├── canbus.ts │ │ │ ├── execute.test.ts │ │ │ ├── execute.ts │ │ │ ├── filestream.ts │ │ │ ├── folderstream.ts │ │ │ ├── from_json.test.ts │ │ │ ├── from_json.ts │ │ │ ├── gpiod-seatalk.ts │ │ │ ├── gpsd.test.ts │ │ │ ├── gpsd.ts │ │ │ ├── index.ts │ │ │ ├── keys-filter.test.ts │ │ │ ├── keys-filter.ts │ │ │ ├── liner.test.ts │ │ │ ├── liner.ts │ │ │ ├── log.ts │ │ │ ├── logging.test.ts │ │ │ ├── logging.ts │ │ │ ├── mdns-ws.test.ts │ │ │ ├── mdns-ws.ts │ │ │ ├── multiplexedlog.ts │ │ │ ├── n2k-signalk.test.ts │ │ │ ├── n2k-signalk.ts │ │ │ ├── n2kAnalyzer.ts │ │ │ ├── nmea0183-signalk.test.ts │ │ │ ├── nmea0183-signalk.ts │ │ │ ├── nullprovider.ts │ │ │ ├── pigpio-seatalk.ts │ │ │ ├── replacer.test.ts │ │ │ ├── replacer.ts │ │ │ ├── s3.ts │ │ │ ├── serialport.ts │ │ │ ├── simple.ts │ │ │ ├── splitting-liner.test.ts │ │ │ ├── splitting-liner.ts │ │ │ ├── tcp.test.ts │ │ │ ├── tcp.ts │ │ │ ├── tcpserver.ts │ │ │ ├── test-helpers.ts │ │ │ ├── throttle.ts │ │ │ ├── timestamp-throttle.test.ts │ │ │ ├── timestamp-throttle.ts │ │ │ ├── types.ts │ │ │ ├── udp.test.ts │ │ │ ├── udp.ts │ │ │ └── vendor.d.ts │ │ └── tsconfig.json │ └── typedoc-theme/ │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── SignalKTheme.tsx │ │ ├── SignalKThemeContext.tsx │ │ ├── assets/ │ │ │ └── theme.css │ │ ├── index.tsx │ │ └── partials/ │ │ └── toolbar.tsx │ └── tsconfig.json ├── public/ │ └── examples/ │ ├── http-example.html │ ├── index.html │ └── loginform.html ├── releasing.md ├── samples/ │ ├── aava-n2k.data │ ├── gofree-merrimac.log │ ├── gps.log │ ├── n2kd-183-merrimac.log │ ├── nais300-merrimac.log │ ├── nais400-merrimac.log │ └── plaka.log ├── settings/ │ ├── actisense-serial-settings.json │ ├── commandline-provider-settings.json │ ├── defaults.json-sample │ ├── multiple-sources.json │ ├── multiplexed.json │ ├── n2k-from-file-settings.json │ ├── signalk-ws-settings.json │ ├── simulator.json │ ├── volare-file-settings-filtered.json │ ├── volare-file-settings.json │ ├── volare-gpsd-settings.json │ ├── volare-serial-settings.json │ ├── volare-tcp-settings.json │ └── volare-udp-settings.json ├── src/ │ ├── @types/ │ │ ├── api-schema-builder.d.ts │ │ ├── primus.d.ts │ │ └── signalk_signalk-schema.d.ts │ ├── BackpressureManager.ts │ ├── LatestValuesAccumulator.ts │ ├── api/ │ │ ├── apps/ │ │ │ ├── openApi.json │ │ │ └── openApi.ts │ │ ├── autopilot/ │ │ │ ├── asyncApi.ts │ │ │ ├── index.ts │ │ │ └── openApi.ts │ │ ├── course/ │ │ │ ├── asyncApi.ts │ │ │ ├── index.ts │ │ │ └── openApi.ts │ │ ├── discovery/ │ │ │ ├── index.ts │ │ │ └── openApi.ts │ │ ├── history/ │ │ │ ├── index.ts │ │ │ └── openApi.ts │ │ ├── index.ts │ │ ├── notifications/ │ │ │ ├── alarm.ts │ │ │ ├── asyncApi.ts │ │ │ ├── index.ts │ │ │ ├── notificationManager.ts │ │ │ └── openApi.ts │ │ ├── openApiSchemas.ts │ │ ├── radar/ │ │ │ ├── asyncApi.ts │ │ │ ├── index.ts │ │ │ └── openApi.ts │ │ ├── resources/ │ │ │ ├── asyncApi.ts │ │ │ ├── index.ts │ │ │ ├── openApi.ts │ │ │ └── validate.ts │ │ ├── security/ │ │ │ ├── openApi.json │ │ │ └── openApi.ts │ │ ├── streams/ │ │ │ ├── binary-stream-manager.ts │ │ │ └── index.ts │ │ ├── swagger.ts │ │ └── weather/ │ │ ├── index.ts │ │ └── openApi.ts │ ├── app.ts │ ├── atomicWrite.ts │ ├── baconjs-compat.ts │ ├── categories.ts │ ├── config/ │ │ ├── config.test.js │ │ ├── config.ts │ │ ├── development.js │ │ ├── get.js │ │ └── production.js │ ├── constants.ts │ ├── cors.ts │ ├── debug.ts │ ├── deltaPriority.ts │ ├── deltacache.ts │ ├── deltachain.ts │ ├── deltaeditor.ts │ ├── deltastats.ts │ ├── discovery.js │ ├── dummysecurity.ts │ ├── events.ts │ ├── index.ts │ ├── interfaces/ │ │ ├── applicationData.js │ │ ├── appstore.js │ │ ├── index.js │ │ ├── logfiles.js │ │ ├── mfd_webapp.ts │ │ ├── nmea-tcp.ts │ │ ├── playground.js │ │ ├── plugins.ts │ │ ├── providers.ts │ │ ├── rest.js │ │ ├── tcp.ts │ │ ├── unitpreferences-api.js │ │ ├── wasm.ts │ │ ├── webapps.js │ │ └── ws.ts │ ├── logging.js │ ├── login-rate-limiter.ts │ ├── mdns.js │ ├── modules.ts │ ├── oidc/ │ │ ├── authorization.ts │ │ ├── config.ts │ │ ├── discovery.ts │ │ ├── id-token-validation.ts │ │ ├── index.ts │ │ ├── oidc-admin.ts │ │ ├── oidc-auth.ts │ │ ├── permission-mapping.ts │ │ ├── pkce.ts │ │ ├── state.ts │ │ ├── token-exchange.ts │ │ ├── types.ts │ │ └── user-info.ts │ ├── pipedproviders.ts │ ├── plugin-paths.ts │ ├── pluginid.ts │ ├── ports.ts │ ├── put.ts │ ├── redirects.json │ ├── requestResponse.ts │ ├── security.ts │ ├── serialports.ts │ ├── serverroutes.ts │ ├── serverstate/ │ │ └── store.ts │ ├── streambundle.ts │ ├── subscriptionmanager.ts │ ├── tokensecurity.ts │ ├── types.ts │ ├── unitpreferences/ │ │ ├── index.ts │ │ ├── loader.ts │ │ ├── resolver.ts │ │ └── types.ts │ ├── version.ts │ ├── wasm/ │ │ ├── bindings/ │ │ │ ├── binary-stream.ts │ │ │ ├── env-imports.ts │ │ │ ├── index.ts │ │ │ ├── radar-provider.ts │ │ │ ├── resource-provider.ts │ │ │ ├── socket-manager.ts │ │ │ └── weather-provider.ts │ │ ├── index.ts │ │ ├── loader/ │ │ │ ├── index.ts │ │ │ ├── plugin-config.ts │ │ │ ├── plugin-lifecycle.ts │ │ │ ├── plugin-registry.ts │ │ │ ├── plugin-routes.ts │ │ │ └── types.ts │ │ ├── loaders/ │ │ │ ├── index.ts │ │ │ └── standard-loader.ts │ │ ├── types.ts │ │ ├── utils/ │ │ │ ├── fetch-wrapper.ts │ │ │ ├── format-detection.ts │ │ │ └── index.ts │ │ ├── wasm-runtime.ts │ │ ├── wasm-serverapi.ts │ │ ├── wasm-storage.ts │ │ └── wasm-subscriptions.ts │ ├── zip.ts │ └── zones.ts ├── test/ │ ├── BackpressureManager.ts │ ├── LatestValuesAccumulator.js │ ├── acls.js │ ├── applicationData.ts │ ├── chart-tile-regex.ts │ ├── course.ts │ ├── delete.js │ ├── deltaPriority.ts │ ├── deltacache.js │ ├── endpoint-auth.ts │ ├── error-logging.ts │ ├── externalssl.ts │ ├── filter-test-helper.ts │ ├── history-api.ts │ ├── history.js │ ├── httpprovider.js │ ├── metadata-e2e.ts │ ├── metadata.js │ ├── modules.js │ ├── multiple-values.js │ ├── nmea0183-filtering.ts │ ├── notifications.ts │ ├── oidc/ │ │ ├── authorization.test.ts │ │ ├── config.test.ts │ │ ├── crypto-service.test.ts │ │ ├── discovery.test.ts │ │ ├── id-token-validation.test.ts │ │ ├── integration.test.ts │ │ ├── oidc-auth.test.ts │ │ ├── permission-mapping.test.ts │ │ ├── pkce.test.ts │ │ ├── settings-api.test.ts │ │ ├── state.test.ts │ │ ├── token-exchange.test.ts │ │ ├── user-info.test.ts │ │ ├── user-service.test.ts │ │ └── userinfo-validation.test.ts │ ├── plugin-crash-isolation.ts │ ├── plugin-test-config/ │ │ └── package.json │ ├── plugins.js │ ├── providers.js │ ├── put.js │ ├── rate-limit.ts │ ├── resources.ts │ ├── scripts/ │ │ ├── mock-systemctl │ │ └── signalk-server-setup │ ├── seatalk1-filtering.ts │ ├── security.js │ ├── server-test-config/ │ │ ├── .npmrc │ │ └── package.json │ ├── servertestutilities.js │ ├── sliding-session.ts │ ├── ssl.ts │ ├── staticData.js │ ├── subscriptions.js │ ├── ts-servertestutilities.ts │ ├── unitpreferences.ts │ ├── wasm-plugin-test-config/ │ │ └── package.json │ ├── wasm-plugins.ts │ ├── ws-connection-limit.ts │ └── zones.ts ├── test-server-as-include/ │ ├── package.json │ ├── run.sh │ └── works-as-include.js ├── tools/ │ ├── README.md │ ├── oidc-test-env/ │ │ ├── README.md │ │ ├── authelia/ │ │ │ ├── configuration.yml │ │ │ └── users_database.yml │ │ ├── docker-compose.yml │ │ └── traefik/ │ │ ├── dynamic.yml │ │ └── traefik.yml │ ├── test-auth-negative.sh │ ├── test-oidc-all.sh │ ├── test-oidc-flow.sh │ └── test-oidc-sso.sh ├── tsconfig.base.json ├── tsconfig.json ├── typedoc.json ├── unitpreferences/ │ ├── README.md │ ├── categories.json │ ├── config.json │ ├── custom-categories.json │ ├── default-categories.json │ ├── presets/ │ │ ├── imperial-uk.json │ │ ├── imperial-us.json │ │ ├── metric.json │ │ ├── nautical-imperial-uk.json │ │ ├── nautical-imperial-us.json │ │ └── nautical-metric.json │ ├── primary-categories.json │ └── standard-units-definitions.json └── util/ └── start-stop.js