lego-front-web-sdk 0.1.1 → 0.1.2

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 (41) hide show
  1. package/dist/index.js +1475 -1714
  2. package/package.json +2 -2
  3. package/dist/constants.d.ts +0 -46
  4. package/dist/constants.d.ts.map +0 -1
  5. package/dist/devices/base.d.ts +0 -63
  6. package/dist/devices/base.d.ts.map +0 -1
  7. package/dist/devices/color-sensor.d.ts +0 -23
  8. package/dist/devices/color-sensor.d.ts.map +0 -1
  9. package/dist/devices/controller.d.ts +0 -20
  10. package/dist/devices/controller.d.ts.map +0 -1
  11. package/dist/devices/double-motor.d.ts +0 -131
  12. package/dist/devices/double-motor.d.ts.map +0 -1
  13. package/dist/devices/index.d.ts +0 -11
  14. package/dist/devices/index.d.ts.map +0 -1
  15. package/dist/devices/single-motor.d.ts +0 -73
  16. package/dist/devices/single-motor.d.ts.map +0 -1
  17. package/dist/index.d.ts +0 -11
  18. package/dist/index.d.ts.map +0 -1
  19. package/dist/index.js.map +0 -1
  20. package/dist/protocol/codec.d.ts +0 -54
  21. package/dist/protocol/codec.d.ts.map +0 -1
  22. package/dist/protocol/colors.d.ts +0 -20
  23. package/dist/protocol/colors.d.ts.map +0 -1
  24. package/dist/protocol/frames.d.ts +0 -6
  25. package/dist/protocol/frames.d.ts.map +0 -1
  26. package/dist/protocol/index.d.ts +0 -7
  27. package/dist/protocol/index.d.ts.map +0 -1
  28. package/dist/protocol/notifications.d.ts +0 -58
  29. package/dist/protocol/notifications.d.ts.map +0 -1
  30. package/dist/protocol/opcodes.d.ts +0 -78
  31. package/dist/protocol/opcodes.d.ts.map +0 -1
  32. package/dist/protocol/uuids.d.ts +0 -18
  33. package/dist/protocol/uuids.d.ts.map +0 -1
  34. package/dist/transport/index.d.ts +0 -7
  35. package/dist/transport/index.d.ts.map +0 -1
  36. package/dist/transport/mock.d.ts +0 -41
  37. package/dist/transport/mock.d.ts.map +0 -1
  38. package/dist/transport/types.d.ts +0 -55
  39. package/dist/transport/types.d.ts.map +0 -1
  40. package/dist/transport/web-bluetooth.d.ts +0 -47
  41. package/dist/transport/web-bluetooth.d.ts.map +0 -1
@@ -1,41 +0,0 @@
1
- import type { ConnectFilters, DeviceKind, DisconnectHandler, NotificationHandler, ScannedDevice, Transport, TransportConnection } from "./types.js";
2
- export interface MockTransportOptions {
3
- /** Auto-succeed connect without requiring a prior scan. Default true. */
4
- autoConnect?: boolean;
5
- /** Log send/connect activity. Default true. */
6
- verbose?: boolean;
7
- /** Simulated devices available to scan/connect. */
8
- devices?: ScannedDevice[];
9
- }
10
- /**
11
- * In-memory transport for development and demos — no Bluetooth required.
12
- * Command frames use the skeleton's mock JSON encoding (see encodeMockCommand).
13
- */
14
- export declare class MockTransport implements Transport {
15
- readonly name = "mock";
16
- private readonly autoConnect;
17
- private readonly verbose;
18
- private readonly catalog;
19
- private readonly active;
20
- private notificationHandler?;
21
- /** Mutable mock sensor / motor state for demos. */
22
- readonly state: {
23
- position: number;
24
- speed: number;
25
- color: number;
26
- leftPercent: number;
27
- rightPercent: number;
28
- };
29
- constructor(options?: MockTransportOptions);
30
- scan(kind: DeviceKind, filters?: ConnectFilters, _timeoutMs?: number): Promise<ScannedDevice[]>;
31
- connect(kind: DeviceKind, filters?: ConnectFilters, handlers?: {
32
- onNotification?: NotificationHandler;
33
- onDisconnect?: DisconnectHandler;
34
- }): Promise<TransportConnection>;
35
- send(connection: TransportConnection, message: Uint8Array): Promise<void>;
36
- disconnect(connection: TransportConnection): Promise<void>;
37
- shutdownAll(): Promise<void>;
38
- private applyCommand;
39
- private log;
40
- }
41
- //# sourceMappingURL=mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/transport/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAyCD;;;GAGG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,IAAI,UAAU;IAEvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAElD,mDAAmD;IACnD,QAAQ,CAAC,KAAK;;;;;;MAMZ;gBAEU,OAAO,GAAE,oBAAyB;IAMxC,IAAI,CACR,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,cAAc,EACxB,UAAU,SAAO,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC;IAMrB,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,mBAAmB,CAAC;QACrC,YAAY,CAAC,EAAE,iBAAiB,CAAC;KAClC,GACA,OAAO,CAAC,mBAAmB,CAAC;IAyBzB,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzE,UAAU,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,GAAG;CAQZ"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Pluggable BLE transport — mirrors the Python package's BLETransport idea:
3
- * Device APIs stay stable; swap Mock ↔ WebBluetooth (or a future bridge).
4
- */
5
- export type DeviceKind = "single-motor" | "double-motor" | "color-sensor" | "controller";
6
- export interface ConnectFilters {
7
- deviceName?: string;
8
- deviceMac?: string;
9
- cardColor?: number;
10
- cardSerial?: string;
11
- }
12
- export interface ScannedDevice {
13
- id: string;
14
- name?: string;
15
- kind: DeviceKind;
16
- cardColor?: number;
17
- cardSerial?: string;
18
- }
19
- export type NotificationHandler = (payload: Uint8Array) => void;
20
- export type DisconnectHandler = () => void;
21
- export interface TransportConnection {
22
- deviceId: string;
23
- kind: DeviceKind;
24
- }
25
- /**
26
- * Low-level transport contract.
27
- * Implementations: MockTransport (dev), WebBluetoothTransport (browser).
28
- */
29
- export interface Transport {
30
- readonly name: string;
31
- scan(kind: DeviceKind, filters?: ConnectFilters, timeoutMs?: number): Promise<ScannedDevice[]>;
32
- connect(kind: DeviceKind, filters?: ConnectFilters, handlers?: {
33
- onNotification?: NotificationHandler;
34
- onDisconnect?: DisconnectHandler;
35
- }): Promise<TransportConnection>;
36
- /** Send a raw RPC / protocol frame (already encoded). */
37
- send(connection: TransportConnection, message: Uint8Array): Promise<void>;
38
- disconnect(connection: TransportConnection): Promise<void>;
39
- shutdownAll(): Promise<void>;
40
- /**
41
- * Optional: map high-level method → wire bytes.
42
- * Mock omits this (DeviceBase falls back to JSON mock frames).
43
- * WebBluetooth provides real RPC packing.
44
- */
45
- encodeCommand?(method: string, args?: Record<string, unknown>): Uint8Array;
46
- /** Optional: wait until a notify frame with this opcode arrives. */
47
- waitForOpcode?(opcode: number, timeoutMs?: number): Promise<Uint8Array>;
48
- }
49
- /** Encode a high-level command for MockTransport (not the real LEGO RPC wire format). */
50
- export declare function encodeMockCommand(method: string, args?: Record<string, unknown>): Uint8Array;
51
- export declare function decodeMockCommand(message: Uint8Array): {
52
- method: string;
53
- args: Record<string, unknown>;
54
- };
55
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transport/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,cAAc,GACd,cAAc,GACd,YAAY,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,IAAI,CACF,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,cAAc,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAE5B,OAAO,CACL,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,mBAAmB,CAAC;QACrC,YAAY,CAAC,EAAE,iBAAiB,CAAC;KAClC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC,yDAAyD;IACzD,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,UAAU,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;;;OAIG;IACH,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IAE3E,oEAAoE;IACpE,aAAa,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACzE;AAED,yFAAyF;AACzF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,UAAU,CAGZ;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAMA"}
@@ -1,47 +0,0 @@
1
- import { type InfoResponse } from "../protocol/codec.js";
2
- import type { ConnectFilters, DeviceKind, DisconnectHandler, NotificationHandler, ScannedDevice, Transport, TransportConnection } from "./types.js";
3
- export interface WebBluetoothTransportOptions {
4
- /** Reject connect if INFO_RESPONSE productGroupDevice mismatches kind. Default true. */
5
- enforceProductGroup?: boolean;
6
- /** Warn (default) or throw when RPC version ≠ package expectation. */
7
- rpcVersionMode?: "warn" | "throw" | "ignore";
8
- /** Default timeout waiting for RPC result notify. */
9
- defaultTimeoutMs?: number;
10
- }
11
- /**
12
- * Browser Web Bluetooth transport (Chrome / Edge, HTTPS or localhost).
13
- *
14
- * Connect skeleton: requestDevice(fd02) → GATT → notify → INFO_REQUEST handshake.
15
- * Command encoding uses `encodeRpcCommand` (official-aligned frames).
16
- */
17
- export declare class WebBluetoothTransport implements Transport {
18
- readonly name = "web-bluetooth";
19
- private readonly enforceProductGroup;
20
- private readonly rpcVersionMode;
21
- private readonly defaultTimeoutMs;
22
- private readonly live;
23
- /** FIFO waiters per opcode (matches official Python deque). */
24
- private readonly waiters;
25
- constructor(options?: WebBluetoothTransportOptions);
26
- encodeCommand(method: string, args?: Record<string, unknown>): Uint8Array;
27
- scan(_kind: DeviceKind, _filters?: ConnectFilters, _timeoutMs?: number): Promise<ScannedDevice[]>;
28
- connect(kind: DeviceKind, _filters?: ConnectFilters, handlers?: {
29
- onNotification?: NotificationHandler;
30
- onDisconnect?: DisconnectHandler;
31
- }): Promise<TransportConnection>;
32
- send(connection: TransportConnection, message: Uint8Array): Promise<void>;
33
- waitForOpcode(opcode: number, timeoutMs?: number): Promise<Uint8Array>;
34
- disconnect(connection: TransportConnection): Promise<void>;
35
- shutdownAll(): Promise<void>;
36
- /** Last INFO_RESPONSE for a connection (if handshake completed). */
37
- getInfo(connection: TransportConnection): InfoResponse | undefined;
38
- static isSupported(): boolean;
39
- private writeRaw;
40
- private requireLive;
41
- private checkRpcVersion;
42
- private checkProductGroup;
43
- private resolveWaiter;
44
- private rejectAllWaiters;
45
- private assertBrowser;
46
- }
47
- //# sourceMappingURL=web-bluetooth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-bluetooth.d.ts","sourceRoot":"","sources":["../../src/transport/web-bluetooth.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAgB9B,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAmDpB,MAAM,WAAW,4BAA4B;IAC3C,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IACrD,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOpB;gBAEQ,OAAO,GAAE,4BAAiC;IAMtD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,UAAU;IAIvE,IAAI,CACR,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,cAAc,EACzB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC;IAMrB,OAAO,CACX,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,cAAc,EACzB,QAAQ,CAAC,EAAE;QACT,cAAc,CAAC,EAAE,mBAAmB,CAAC;QACrC,YAAY,CAAC,EAAE,iBAAiB,CAAC;KAClC,GACA,OAAO,CAAC,mBAAmB,CAAC;IA2EzB,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAwB,GAAG,OAAO,CAAC,UAAU,CAAC;IA4BrF,UAAU,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC,oEAAoE;IACpE,OAAO,CAAC,UAAU,EAAE,mBAAmB,GAAG,YAAY,GAAG,SAAS;IAIlE,MAAM,CAAC,WAAW,IAAI,OAAO;YAQf,QAAQ;IAatB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;CAOtB"}