From be390d9b9671c31f35d163600bd274fc3446756e Mon Sep 17 00:00:00 2001 From: Chris Midgley Date: Sat, 12 Sep 2026 15:01:05 -0400 Subject: [PATCH 1/3] Update for embedded_network typings --- examples/manifest_typings.json | 9 +++++ .../embedded_network/dns/resolver/udp.d.ts | 5 ++- typings/embedded_network/http/server.d.ts | 9 +++-- .../http/server/route/static.d.ts | 33 +++++++++++++++++++ .../http/server/route/ws/handshake.d.ts | 26 +++++++++++++++ .../embedded_network/websocket/client.d.ts | 21 +++++------- typings/embedded_provider/builtin.d.ts | 25 ++++++++++++++ 7 files changed, 110 insertions(+), 18 deletions(-) create mode 100644 typings/embedded_network/http/server/route/static.d.ts create mode 100644 typings/embedded_network/http/server/route/ws/handshake.d.ts diff --git a/examples/manifest_typings.json b/examples/manifest_typings.json index a7de6544a5..32001e415f 100644 --- a/examples/manifest_typings.json +++ b/examples/manifest_typings.json @@ -42,9 +42,18 @@ "embedded:io/socket/*": [ "$(TYPINGS)/embedded_io/socket/*" ], + "embedded:io/socket/tcp/*": [ + "$(TYPINGS)/embedded_io/socket/tcp/*" + ], "embedded:network/http/*": [ "$(TYPINGS)/embedded_network/http/*" ], + "embedded:network/http/server/route/*": [ + "$(TYPINGS)/embedded_network/http/server/route/*" + ], + "embedded:network/http/server/route/ws/*": [ + "$(TYPINGS)/embedded_network/http/server/route/ws/*" + ], "embedded:network/mqtt/*": [ "$(TYPINGS)/embedded_network/mqtt/*" ], diff --git a/typings/embedded_network/dns/resolver/udp.d.ts b/typings/embedded_network/dns/resolver/udp.d.ts index 47123063ef..5b4f22a9e3 100644 --- a/typings/embedded_network/dns/resolver/udp.d.ts +++ b/typings/embedded_network/dns/resolver/udp.d.ts @@ -22,15 +22,14 @@ declare module "embedded:network/dns/resolver/udp" { interface Options { host: string - onResolved: ((host:string, address:any) => null) - onError: ((host:string) => null) + onResolved: ((host: string, address: any) => void) + onError: ((host: string) => void) } class Resolver { constructor(options: Record) close(): void resolve(options: Options): void - } interface Resolver extends Disposable {} diff --git a/typings/embedded_network/http/server.d.ts b/typings/embedded_network/http/server.d.ts index 8b4d5e9afa..993c98564f 100644 --- a/typings/embedded_network/http/server.d.ts +++ b/typings/embedded_network/http/server.d.ts @@ -40,7 +40,7 @@ declare module "embedded:network/http/server" { onResponse?(this: HTTPConnection, response: HTTPResponse): void; onWritable?(this: HTTPConnection, count: number): void; onDone?(this: HTTPConnection): void; - onError?(this: HTTPConnection): void; + onError?(this: HTTPConnection, error: string): void; } export interface HTTPConnection extends Disposable { @@ -52,12 +52,15 @@ declare module "embedded:network/http/server" { write(bytes?: ByteBuffer): number; route: HTTPConnectionHandlers; format: "buffer"; + protocol?: string; } export interface HTTPServerOptions { - io: typeof Listener; + socket: { io: typeof Listener } & Record; port?: number; - onConnect(this: HTTPServer, connection: HTTPConnection): void; + keepAlive?: number; + onConnect?(this: HTTPServer, connection: HTTPConnection): void; + onRoute?(this: HTTPServer, request: HTTPRequest): any; } class HTTPServer { diff --git a/typings/embedded_network/http/server/route/static.d.ts b/typings/embedded_network/http/server/route/static.d.ts new file mode 100644 index 0000000000..2e3465a256 --- /dev/null +++ b/typings/embedded_network/http/server/route/static.d.ts @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2026 Moddable Tech, Inc. + * + * This file is part of the Moddable SDK Tools. + * + * The Moddable SDK Tools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Moddable SDK Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Moddable SDK Tools. If not, see . + * + */ + +declare module "embedded:network/http/server/route/static" { + import type { HTTPConnectionHandlers } from "embedded:network/http/server"; + + export interface StaticRoute extends HTTPConnectionHandlers { + data: ByteBuffer | string; + contentType?: string; + headers?: Map; + status?: number; + } + + const route: StaticRoute; + export default route; +} diff --git a/typings/embedded_network/http/server/route/ws/handshake.d.ts b/typings/embedded_network/http/server/route/ws/handshake.d.ts new file mode 100644 index 0000000000..fdd88ae6ff --- /dev/null +++ b/typings/embedded_network/http/server/route/ws/handshake.d.ts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2026 Moddable Tech, Inc. + * + * This file is part of the Moddable SDK Tools. + * + * The Moddable SDK Tools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Moddable SDK Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Moddable SDK Tools. If not, see . + * + */ + +declare module "embedded:network/http/server/route/ws/handshake" { + import type { HTTPConnectionHandlers } from "embedded:network/http/server"; + + const route: HTTPConnectionHandlers; + export default route; +} diff --git a/typings/embedded_network/websocket/client.d.ts b/typings/embedded_network/websocket/client.d.ts index 240e4ac2a4..42d4b29c70 100644 --- a/typings/embedded_network/websocket/client.d.ts +++ b/typings/embedded_network/websocket/client.d.ts @@ -18,10 +18,13 @@ * */ -// websocketclient.d.ts +// websocket/client.d.ts declare module "embedded:network/websocket/client" { - interface WebSocketClientOptions { + import type TCP from "embedded:io/socket/tcp"; + import type TLSSocket from "embedded:io/socket/tcp/tls"; + + export interface WebSocketClientOptions { onReadable?: (this: WebSocketClient, count: number, options: { more: boolean; binary: boolean }) => void; onWritable?: (this: WebSocketClient, count: number) => void; onControl?: (this: WebSocketClient, opcode: number, data: ArrayBuffer) => void; @@ -29,23 +32,17 @@ declare module "embedded:network/websocket/client" { onError?: (this: WebSocketClient) => void; format?: "buffer" | "number"; target?: any; - attach?: { - constructor: new (options: any) => any; - }; + attach?: TCP | TLSSocket; host?: string; path?: string; port?: number; protocol?: string; headers?: Map; - dns?: { - io: new (options: any) => any; - }; - socket?: { - io: new (options: any) => any; - }; + dns?: { io: new (options: any) => any } & Record; + socket?: { io: new (options: any) => any } & Record; } - interface WebSocketWriteOptions { + export interface WebSocketWriteOptions { opcode?: number; binary?: boolean; more?: boolean; diff --git a/typings/embedded_provider/builtin.d.ts b/typings/embedded_provider/builtin.d.ts index ea56a861b6..a8c1757a9d 100644 --- a/typings/embedded_provider/builtin.d.ts +++ b/typings/embedded_provider/builtin.d.ts @@ -30,6 +30,10 @@ declare module "embedded:provider/builtin" { import SPI from "embedded:io/spi"; import Serial from "embedded:io/serial"; import type { PinSpecifier } from "embedded:io/_common"; + import type Listener from "embedded:io/socket/listener"; + import type HTTPServer from "embedded:network/http/server"; + import type WebSocketClient from "embedded:network/websocket/client"; + const device: { io: { Digital: typeof Digital; @@ -52,6 +56,27 @@ declare module "embedded:provider/builtin" { SPI: { default: ConstructorParameters[0] }; Serial: { default: ConstructorParameters[0] }; pin: { [name: string]: PinSpecifier }; + network: { + dns: { + resolver: Record; + }; + http: { + server: { + io: typeof HTTPServer; + socket: { io: typeof Listener } & Record; + }; + }; + ws: { + io: typeof WebSocketClient; + dns: { io: new (options: any) => any } & Record; + socket: { io: new (options: any) => any } & Record; + }; + wss: { + io: typeof WebSocketClient; + dns: { io: new (options: any) => any } & Record; + socket: { io: new (options: any) => any } & Record; + }; + }; }; export default device; } From 05d15254be38aeb76404f6bf41a5bf358a06cd9c Mon Sep 17 00:00:00 2001 From: Chris Midgley Date: Sun, 13 Sep 2026 08:15:25 -0400 Subject: [PATCH 2/3] ntp in builtin typings --- typings/embedded_provider/builtin.d.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/typings/embedded_provider/builtin.d.ts b/typings/embedded_provider/builtin.d.ts index a8c1757a9d..bdf1be2485 100644 --- a/typings/embedded_provider/builtin.d.ts +++ b/typings/embedded_provider/builtin.d.ts @@ -31,7 +31,10 @@ declare module "embedded:provider/builtin" { import Serial from "embedded:io/serial"; import type { PinSpecifier } from "embedded:io/_common"; import type Listener from "embedded:io/socket/listener"; + import type UDP from "embedded:io/socket/udp"; + import type Resolver from "embedded:network/dns/resolver/udp"; import type HTTPServer from "embedded:network/http/server"; + import type NTP from "embedded:network/ntp/client"; import type WebSocketClient from "embedded:network/websocket/client"; const device: { @@ -66,6 +69,14 @@ declare module "embedded:provider/builtin" { socket: { io: typeof Listener } & Record; }; }; + ntp: { + client: { + io: typeof NTP; + dns: { io: typeof Resolver } & Record; + socket: { io: typeof UDP } & Record; + servers: string[]; + }; + }; ws: { io: typeof WebSocketClient; dns: { io: new (options: any) => any } & Record; From 4902786591e9275451e8d01af3be98dedb100a37 Mon Sep 17 00:00:00 2001 From: Chris Midgley Date: Sun, 13 Sep 2026 09:40:49 -0400 Subject: [PATCH 3/3] Enhance wifi typings --- typings/embedded_network/interface/wifi.d.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/typings/embedded_network/interface/wifi.d.ts b/typings/embedded_network/interface/wifi.d.ts index dabb0fce1b..e05ccfeace 100644 --- a/typings/embedded_network/interface/wifi.d.ts +++ b/typings/embedded_network/interface/wifi.d.ts @@ -33,17 +33,20 @@ declare module "embedded:network/interface/wifi" { channel: number; RSSI: number; BSSID?: string; + security: string; } export interface WiFiScanOptions { - onFound?: (result: WiFiScanResult) => void; + onFound: (result: WiFiScanResult) => void; onComplete?: () => void; + channel?: number; } export interface WiFiConnectOptions { SSID: string; password?: string; secure?: boolean; + channel?: number; } export interface WiFiStaticAddress { @@ -70,7 +73,9 @@ declare module "embedded:network/interface/wifi" { readonly address: string | undefined; readonly MAC: string | undefined; readonly SSID: string | undefined; + readonly BSSID: string | undefined; readonly RSSI: number | undefined; + readonly channel: number | undefined; } interface WiFi extends Disposable {}