@mentra/sdk 2.1.27 → 2.1.29-beta.1
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/dist/app/session/api-client.d.ts.map +1 -1
- package/dist/app/session/dashboard.d.ts +5 -8
- package/dist/app/session/dashboard.d.ts.map +1 -1
- package/dist/app/session/events.d.ts +10 -4
- package/dist/app/session/events.d.ts.map +1 -1
- package/dist/app/session/index.d.ts +64 -4
- package/dist/app/session/index.d.ts.map +1 -1
- package/dist/app/session/modules/audio.d.ts +33 -4
- package/dist/app/session/modules/audio.d.ts.map +1 -1
- package/dist/app/session/modules/camera-managed-extension.d.ts +2 -3
- package/dist/app/session/modules/camera-managed-extension.d.ts.map +1 -1
- package/dist/app/session/modules/camera.d.ts +11 -10
- package/dist/app/session/modules/camera.d.ts.map +1 -1
- package/dist/app/session/modules/led.d.ts +141 -0
- package/dist/app/session/modules/led.d.ts.map +1 -0
- package/dist/app/session/modules/location.d.ts +1 -2
- package/dist/app/session/modules/location.d.ts.map +1 -1
- package/dist/app/session/modules/simple-storage.d.ts +22 -1
- package/dist/app/session/modules/simple-storage.d.ts.map +1 -1
- package/dist/display-utils.d.ts +989 -0
- package/dist/display-utils.d.ts.map +1 -0
- package/dist/display-utils.js +1197 -0
- package/dist/display-utils.js.map +17 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5427 -112
- package/dist/index.js.map +45 -0
- package/dist/logging/logger.d.ts +1 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/types/capabilities.d.ts +3 -0
- package/dist/types/capabilities.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/message-types.d.ts +8 -1
- package/dist/types/message-types.d.ts.map +1 -1
- package/dist/types/messages/app-to-cloud.d.ts +49 -3
- package/dist/types/messages/app-to-cloud.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-app.d.ts +18 -6
- package/dist/types/messages/cloud-to-app.d.ts.map +1 -1
- package/dist/types/messages/cloud-to-glasses.d.ts +30 -2
- package/dist/types/messages/cloud-to-glasses.d.ts.map +1 -1
- package/dist/types/messages/glasses-to-cloud.d.ts +24 -1
- package/dist/types/messages/glasses-to-cloud.d.ts.map +1 -1
- package/dist/types/rtmp-stream.d.ts +1 -1
- package/dist/types/rtmp-stream.d.ts.map +1 -1
- package/dist/types/streams.d.ts +31 -2
- package/dist/types/streams.d.ts.map +1 -1
- package/package.json +34 -11
- package/dist/app/index.js +0 -24
- package/dist/app/server/index.js +0 -658
- package/dist/app/session/api-client.js +0 -101
- package/dist/app/session/dashboard.js +0 -149
- package/dist/app/session/events.js +0 -315
- package/dist/app/session/index.js +0 -1573
- package/dist/app/session/layouts.js +0 -372
- package/dist/app/session/modules/audio.js +0 -321
- package/dist/app/session/modules/camera-managed-extension.js +0 -310
- package/dist/app/session/modules/camera.js +0 -607
- package/dist/app/session/modules/index.js +0 -19
- package/dist/app/session/modules/location.js +0 -61
- package/dist/app/session/modules/simple-storage.js +0 -232
- package/dist/app/session/settings.js +0 -358
- package/dist/app/token/index.js +0 -22
- package/dist/app/token/utils.js +0 -144
- package/dist/app/webview/index.js +0 -382
- package/dist/constants/index.js +0 -16
- package/dist/constants/log-messages/color.js +0 -14
- package/dist/constants/log-messages/logos.js +0 -48
- package/dist/constants/log-messages/updates.js +0 -55
- package/dist/constants/log-messages/warning.js +0 -89
- package/dist/examples/managed-rtmp-streaming-example.js +0 -158
- package/dist/examples/managed-rtmp-streaming-with-restream-example.js +0 -124
- package/dist/examples/rtmp-streaming-example.js +0 -102
- package/dist/logging/logger.js +0 -79
- package/dist/types/capabilities.js +0 -9
- package/dist/types/dashboard/index.js +0 -12
- package/dist/types/enums.js +0 -75
- package/dist/types/index.js +0 -101
- package/dist/types/layouts.js +0 -3
- package/dist/types/message-types.js +0 -212
- package/dist/types/messages/app-to-cloud.js +0 -95
- package/dist/types/messages/base.js +0 -3
- package/dist/types/messages/cloud-to-app.js +0 -78
- package/dist/types/messages/cloud-to-glasses.js +0 -68
- package/dist/types/messages/glasses-to-cloud.js +0 -140
- package/dist/types/models.js +0 -101
- package/dist/types/photo-data.js +0 -2
- package/dist/types/rtmp-stream.js +0 -3
- package/dist/types/streams.js +0 -306
- package/dist/types/token.js +0 -7
- package/dist/types/webhooks.js +0 -28
- package/dist/utils/animation-utils.js +0 -340
- package/dist/utils/bitmap-utils.js +0 -475
- package/dist/utils/permissions-utils.js +0 -263
- package/dist/utils/resource-tracker.js +0 -153
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 💡 LED Control Module
|
|
3
|
+
*
|
|
4
|
+
* Provides RGB LED control functionality for App Sessions.
|
|
5
|
+
* Controls the RGB LEDs on smart glasses with custom colors and timing patterns.
|
|
6
|
+
*/
|
|
7
|
+
import { LedColor } from "../../../types";
|
|
8
|
+
import { Logger } from "pino";
|
|
9
|
+
/**
|
|
10
|
+
* Options for LED control
|
|
11
|
+
*/
|
|
12
|
+
export interface LedControlOptions {
|
|
13
|
+
/** LED color */
|
|
14
|
+
color?: LedColor;
|
|
15
|
+
/** LED on duration in milliseconds */
|
|
16
|
+
ontime?: number;
|
|
17
|
+
/** LED off duration in milliseconds */
|
|
18
|
+
offtime?: number;
|
|
19
|
+
/** Number of on/off cycles */
|
|
20
|
+
count?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 💡 LED Control Module Implementation
|
|
24
|
+
*
|
|
25
|
+
* Provides methods for controlling LEDs on smart glasses.
|
|
26
|
+
* Supports both low-level on/off control and higher-level pattern methods.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* // General LED control
|
|
31
|
+
* await session.led.turnOn({ color: 'red', ontime: 1000, count: 1 });
|
|
32
|
+
*
|
|
33
|
+
* // Blink green LED
|
|
34
|
+
* await session.led.blink('green', 500, 500, 5);
|
|
35
|
+
*
|
|
36
|
+
* // Turn off all LEDs
|
|
37
|
+
* await session.led.turnOff();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare class LedModule {
|
|
41
|
+
private session;
|
|
42
|
+
private packageName;
|
|
43
|
+
private sessionId;
|
|
44
|
+
private logger;
|
|
45
|
+
/**
|
|
46
|
+
* Create a new LedModule
|
|
47
|
+
*
|
|
48
|
+
* @param session - Reference to the parent AppSession
|
|
49
|
+
* @param packageName - The App package name
|
|
50
|
+
* @param sessionId - The current session ID
|
|
51
|
+
* @param logger - Logger instance for debugging
|
|
52
|
+
*/
|
|
53
|
+
constructor(session: any, packageName: string, sessionId: string, logger?: Logger);
|
|
54
|
+
/**
|
|
55
|
+
* 💡 Turn on an LED with specified timing parameters
|
|
56
|
+
*
|
|
57
|
+
* @param options - LED control options (color, timing, count)
|
|
58
|
+
* @returns Promise that resolves immediately after sending the command
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* // Solid red for 2 seconds
|
|
63
|
+
* await session.led.turnOn({ color: 'red', ontime: 2000, count: 1 });
|
|
64
|
+
*
|
|
65
|
+
* // Blink white 3 times
|
|
66
|
+
* await session.led.turnOn({ color: 'white', ontime: 500, offtime: 500, count: 3 });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
turnOn(options: LedControlOptions): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* 💡 Turn off all LEDs
|
|
72
|
+
*
|
|
73
|
+
* @returns Promise that resolves immediately after sending the command
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* await session.led.turnOff();
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
turnOff(): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* 💡 Get available LED capabilities
|
|
83
|
+
*
|
|
84
|
+
* @returns Array of available LED configurations
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const capabilities = session.led.getCapabilities();
|
|
89
|
+
* console.log('Available LEDs:', capabilities);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
getCapabilities(): Array<{
|
|
93
|
+
id: string;
|
|
94
|
+
purpose: string;
|
|
95
|
+
isFullColor: boolean;
|
|
96
|
+
color?: string;
|
|
97
|
+
position?: string;
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* 💡 Blink an LED with specified timing
|
|
101
|
+
*
|
|
102
|
+
* @param color - LED color to use
|
|
103
|
+
* @param ontime - How long LED stays on (ms)
|
|
104
|
+
* @param offtime - How long LED stays off (ms)
|
|
105
|
+
* @param count - Number of blink cycles
|
|
106
|
+
* @returns Promise that resolves immediately after sending the command
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* // Blink red LED 5 times (500ms on, 500ms off)
|
|
111
|
+
* await session.led.blink('red', 500, 500, 5);
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
blink(color: LedColor, ontime: number, offtime: number, count: number): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* 💡 Solid LED mode - LED stays on continuously for specified duration
|
|
117
|
+
*
|
|
118
|
+
* Creates a solid LED effect with no off time, perfect for continuous illumination.
|
|
119
|
+
*
|
|
120
|
+
* @param color - LED color to use
|
|
121
|
+
* @param duration - How long LED stays on (ms)
|
|
122
|
+
* @returns Promise that resolves when the command is sent
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* // Solid red LED for 5 seconds
|
|
127
|
+
* await session.led.solid('red', 5000);
|
|
128
|
+
*
|
|
129
|
+
* // Solid white LED for 30 seconds
|
|
130
|
+
* await session.led.solid('white', 30000);
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
solid(color: LedColor, duration: number): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Clean up LED module
|
|
136
|
+
*
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
cleanup(): void;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=led.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"led.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/led.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA8C,QAAQ,EAAC,MAAM,gBAAgB,CAAA;AACpF,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAA;AAE3B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAQ;IAEtB;;;;;;;OAOG;gBACS,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAWjF;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCvD;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B9B;;;;;;;;;;OAUG;IACH,eAAe,IAAI,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAC;IAUF;;;;;;;;;;;;;;OAcG;IACG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3F;;;;;;;;;;;;;;;;;OAiBG;IACG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -2,9 +2,8 @@ import { AppSession } from "..";
|
|
|
2
2
|
import { LocationUpdate } from "../../../types";
|
|
3
3
|
export declare class LocationManager {
|
|
4
4
|
private session;
|
|
5
|
-
private send;
|
|
6
5
|
private lastLocationCleanupHandler;
|
|
7
|
-
constructor(session: AppSession
|
|
6
|
+
constructor(session: AppSession);
|
|
8
7
|
subscribeToStream(options: {
|
|
9
8
|
accuracy: "standard" | "high" | "realtime" | "tenMeters" | "hundredMeters" | "kilometer" | "threeKilometers" | "reduced";
|
|
10
9
|
}, handler: (data: LocationUpdate) => void): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/location.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/location.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAA;AAC7B,OAAO,EAAwB,cAAc,EAAwB,MAAM,gBAAgB,CAAA;AAE3F,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,0BAA0B,CAAuB;gBAE7C,OAAO,EAAE,UAAU;IAKxB,iBAAiB,CACtB,OAAO,EAAE;QACP,QAAQ,EACJ,UAAU,GACV,MAAM,GACN,UAAU,GACV,WAAW,GACX,eAAe,GACf,WAAW,GACX,iBAAiB,GACjB,SAAS,CAAA;KACd,EACD,OAAO,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACtC,MAAM,IAAI;IAcN,qBAAqB,IAAI,IAAI;IAUvB,iBAAiB,CAAC,OAAO,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CA4BrF"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Simple Storage SDK Module for MentraOS Apps
|
|
3
3
|
* Provides localStorage-like API with cloud synchronization
|
|
4
|
+
*
|
|
5
|
+
* Mental Model: App server RAM = source of truth, MongoDB = crash recovery backup
|
|
6
|
+
* - User interactions read/write to RAM instantly
|
|
7
|
+
* - Changes are debounced and batched to MongoDB (3s idle / 10s max)
|
|
8
|
+
* - On disconnect, pending writes are flushed automatically
|
|
4
9
|
*/
|
|
5
10
|
import { AppSession } from "..";
|
|
6
11
|
/**
|
|
7
|
-
* Key-value storage with local caching and cloud sync
|
|
12
|
+
* Key-value storage with local caching and debounced cloud sync
|
|
8
13
|
* Data is isolated by userId and packageName
|
|
9
14
|
*/
|
|
10
15
|
export declare class SimpleStorage {
|
|
@@ -13,12 +18,28 @@ export declare class SimpleStorage {
|
|
|
13
18
|
private userId;
|
|
14
19
|
private packageName;
|
|
15
20
|
private baseUrl;
|
|
21
|
+
private pendingWrites;
|
|
22
|
+
private debounceTimer?;
|
|
23
|
+
private maxWaitTimer?;
|
|
24
|
+
private firstWriteTime?;
|
|
25
|
+
private static readonly MAX_VALUE_SIZE;
|
|
26
|
+
private static readonly DEBOUNCE_MS;
|
|
27
|
+
private static readonly MAX_WAIT_MS;
|
|
16
28
|
constructor(appSession: AppSession);
|
|
17
29
|
private getBaseUrl;
|
|
18
30
|
private getAuthHeaders;
|
|
19
31
|
private fetchStorageFromCloud;
|
|
20
32
|
get(key: string): Promise<string | undefined>;
|
|
21
33
|
set(key: string, value: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Schedule flush with debounce (3s idle) and max wait (10s)
|
|
36
|
+
*/
|
|
37
|
+
private scheduleFlush;
|
|
38
|
+
/**
|
|
39
|
+
* Flush pending writes immediately
|
|
40
|
+
* Called by: debounce timeout, max wait timeout, disconnect, or explicit flush()
|
|
41
|
+
*/
|
|
42
|
+
flush(): Promise<void>;
|
|
22
43
|
delete(key: string): Promise<boolean>;
|
|
23
44
|
clear(): Promise<boolean>;
|
|
24
45
|
keys(): Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-storage.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/simple-storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"simple-storage.d.ts","sourceRoot":"","sources":["../../../../src/app/session/modules/simple-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAA;AAc7B;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAQ;IAGvB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAC,CAAQ;IAG/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEhC,UAAU,EAAE,UAAU;IAQlC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;YASR,qBAAqB;IAwBtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3D;;OAEG;IACH,OAAO,CAAC,aAAa;IA2CrB;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCrC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBzB,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAazB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAavB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa7C,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BtE"}
|