@glassly/miniapp 0.3.0-dev.2 → 0.3.0-dev.460

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 (255) hide show
  1. package/README.md +219 -74
  2. package/dist/background/index.d.ts +14 -8
  3. package/dist/background/index.d.ts.map +1 -1
  4. package/dist/background/index.js +4 -0
  5. package/dist/background/index.js.map +1 -1
  6. package/dist/background/register.d.ts +1 -1
  7. package/dist/background/register.js +1 -1
  8. package/dist/display/index.d.ts +23 -0
  9. package/dist/display/index.d.ts.map +1 -0
  10. package/dist/display/index.js +17 -0
  11. package/dist/display/index.js.map +1 -0
  12. package/dist/display/measurer/TextMeasurer.d.ts +160 -0
  13. package/dist/display/measurer/TextMeasurer.d.ts.map +1 -0
  14. package/dist/display/measurer/TextMeasurer.js +272 -0
  15. package/dist/display/measurer/TextMeasurer.js.map +1 -0
  16. package/dist/display/measurer/index.d.ts +10 -0
  17. package/dist/display/measurer/index.d.ts.map +1 -0
  18. package/dist/display/measurer/index.js +11 -0
  19. package/dist/display/measurer/index.js.map +1 -0
  20. package/dist/display/measurer/script-detection.d.ts +53 -0
  21. package/dist/display/measurer/script-detection.d.ts.map +1 -0
  22. package/dist/display/measurer/script-detection.js +184 -0
  23. package/dist/display/measurer/script-detection.js.map +1 -0
  24. package/dist/display/pixelArt.d.ts +22 -0
  25. package/dist/display/pixelArt.d.ts.map +1 -0
  26. package/dist/display/pixelArt.js +126 -0
  27. package/dist/display/pixelArt.js.map +1 -0
  28. package/dist/display/profiles/g1.d.ts +33 -0
  29. package/dist/display/profiles/g1.d.ts.map +1 -0
  30. package/dist/display/profiles/g1.js +214 -0
  31. package/dist/display/profiles/g1.js.map +1 -0
  32. package/dist/display/profiles/g2.d.ts +13 -0
  33. package/dist/display/profiles/g2.d.ts.map +1 -0
  34. package/dist/display/profiles/g2.js +34 -0
  35. package/dist/display/profiles/g2.js.map +1 -0
  36. package/dist/display/profiles/index.d.ts +12 -0
  37. package/dist/display/profiles/index.d.ts.map +1 -0
  38. package/dist/display/profiles/index.js +15 -0
  39. package/dist/display/profiles/index.js.map +1 -0
  40. package/dist/display/profiles/nex.d.ts +10 -0
  41. package/dist/display/profiles/nex.d.ts.map +1 -0
  42. package/dist/display/profiles/nex.js +150 -0
  43. package/dist/display/profiles/nex.js.map +1 -0
  44. package/dist/display/profiles/types.d.ts +103 -0
  45. package/dist/display/profiles/types.d.ts.map +1 -0
  46. package/dist/display/profiles/types.js +2 -0
  47. package/dist/display/profiles/types.js.map +1 -0
  48. package/dist/display/profiles/z100.d.ts +33 -0
  49. package/dist/display/profiles/z100.d.ts.map +1 -0
  50. package/dist/display/profiles/z100.js +182 -0
  51. package/dist/display/profiles/z100.js.map +1 -0
  52. package/dist/display/scene/types.d.ts +292 -0
  53. package/dist/display/scene/types.d.ts.map +1 -0
  54. package/dist/display/scene/types.js +0 -0
  55. package/dist/display/scene/types.js.map +1 -0
  56. package/dist/display/wrapper/TextWrapper.d.ts +102 -0
  57. package/dist/display/wrapper/TextWrapper.d.ts.map +1 -0
  58. package/dist/display/wrapper/TextWrapper.js +469 -0
  59. package/dist/display/wrapper/TextWrapper.js.map +1 -0
  60. package/dist/display/wrapper/index.d.ts +12 -0
  61. package/dist/display/wrapper/index.d.ts.map +1 -0
  62. package/dist/display/wrapper/index.js +12 -0
  63. package/dist/display/wrapper/index.js.map +1 -0
  64. package/dist/display/wrapper/types.d.ts +75 -0
  65. package/dist/display/wrapper/types.d.ts.map +1 -0
  66. package/dist/display/wrapper/types.js +11 -0
  67. package/dist/display/wrapper/types.js.map +1 -0
  68. package/dist/globals.d.ts +5 -5
  69. package/dist/globals.d.ts.map +1 -1
  70. package/dist/globals.js +1 -1
  71. package/dist/globals.js.map +1 -1
  72. package/dist/hardware.d.ts +4 -18
  73. package/dist/hardware.d.ts.map +1 -1
  74. package/dist/hardware.js +2 -13
  75. package/dist/hardware.js.map +1 -1
  76. package/dist/index.d.ts +16 -10
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +3 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/knownApps.d.ts +26 -0
  81. package/dist/knownApps.d.ts.map +1 -0
  82. package/dist/knownApps.js +140 -0
  83. package/dist/knownApps.js.map +1 -0
  84. package/dist/mirror/canvas.d.ts +22 -0
  85. package/dist/mirror/canvas.d.ts.map +1 -0
  86. package/dist/mirror/canvas.js +311 -0
  87. package/dist/mirror/canvas.js.map +1 -0
  88. package/dist/mirror/geometry.d.ts +69 -0
  89. package/dist/mirror/geometry.d.ts.map +1 -0
  90. package/dist/mirror/geometry.js +75 -0
  91. package/dist/mirror/geometry.js.map +1 -0
  92. package/dist/mirror/index.d.ts +3 -0
  93. package/dist/mirror/index.d.ts.map +1 -0
  94. package/dist/mirror/index.js +2 -0
  95. package/dist/mirror/index.js.map +1 -0
  96. package/dist/mirror/types.d.ts +40 -0
  97. package/dist/mirror/types.d.ts.map +1 -0
  98. package/dist/mirror/types.js +2 -0
  99. package/dist/mirror/types.js.map +1 -0
  100. package/dist/modules/auth.d.ts +1 -1
  101. package/dist/modules/auth.d.ts.map +1 -1
  102. package/dist/modules/auth.js +2 -2
  103. package/dist/modules/auth.js.map +1 -1
  104. package/dist/modules/compass.d.ts +47 -0
  105. package/dist/modules/compass.d.ts.map +1 -0
  106. package/dist/modules/compass.js +39 -0
  107. package/dist/modules/compass.js.map +1 -0
  108. package/dist/modules/display.d.ts +192 -8
  109. package/dist/modules/display.d.ts.map +1 -1
  110. package/dist/modules/display.js +40 -3
  111. package/dist/modules/display.js.map +1 -1
  112. package/dist/modules/events.d.ts +30 -2
  113. package/dist/modules/events.d.ts.map +1 -1
  114. package/dist/modules/events.js.map +1 -1
  115. package/dist/modules/input.d.ts +40 -1
  116. package/dist/modules/input.d.ts.map +1 -1
  117. package/dist/modules/input.js +45 -1
  118. package/dist/modules/input.js.map +1 -1
  119. package/dist/modules/latest-render-scheduler.d.ts +19 -0
  120. package/dist/modules/latest-render-scheduler.d.ts.map +1 -0
  121. package/dist/modules/latest-render-scheduler.js +54 -0
  122. package/dist/modules/latest-render-scheduler.js.map +1 -0
  123. package/dist/modules/lightSensor.d.ts +44 -0
  124. package/dist/modules/lightSensor.d.ts.map +1 -0
  125. package/dist/modules/lightSensor.js +33 -0
  126. package/dist/modules/lightSensor.js.map +1 -0
  127. package/dist/modules/mic.d.ts +3 -2
  128. package/dist/modules/mic.d.ts.map +1 -1
  129. package/dist/modules/mic.js +3 -2
  130. package/dist/modules/mic.js.map +1 -1
  131. package/dist/modules/miniapps.d.ts +2 -0
  132. package/dist/modules/miniapps.d.ts.map +1 -1
  133. package/dist/modules/miniapps.js.map +1 -1
  134. package/dist/modules/mirror.d.ts +16 -0
  135. package/dist/modules/mirror.d.ts.map +1 -0
  136. package/dist/modules/mirror.js +40 -0
  137. package/dist/modules/mirror.js.map +1 -0
  138. package/dist/modules/mono-text-rows.d.ts +20 -0
  139. package/dist/modules/mono-text-rows.d.ts.map +1 -0
  140. package/dist/modules/mono-text-rows.js +26 -0
  141. package/dist/modules/mono-text-rows.js.map +1 -0
  142. package/dist/modules/navigation.d.ts.map +1 -1
  143. package/dist/modules/navigation.js +21 -14
  144. package/dist/modules/navigation.js.map +1 -1
  145. package/dist/modules/phone.d.ts +26 -1
  146. package/dist/modules/phone.d.ts.map +1 -1
  147. package/dist/modules/phone.js +28 -0
  148. package/dist/modules/phone.js.map +1 -1
  149. package/dist/modules/settings.d.ts +45 -0
  150. package/dist/modules/settings.d.ts.map +1 -0
  151. package/dist/modules/settings.js +54 -0
  152. package/dist/modules/settings.js.map +1 -0
  153. package/dist/modules/system.d.ts +21 -0
  154. package/dist/modules/system.d.ts.map +1 -1
  155. package/dist/modules/system.js +12 -0
  156. package/dist/modules/system.js.map +1 -1
  157. package/dist/modules/transcription.d.ts +3 -2
  158. package/dist/modules/transcription.d.ts.map +1 -1
  159. package/dist/modules/transcription.js +3 -2
  160. package/dist/modules/transcription.js.map +1 -1
  161. package/dist/protocol.d.ts +65 -5
  162. package/dist/protocol.d.ts.map +1 -1
  163. package/dist/protocol.js +66 -5
  164. package/dist/protocol.js.map +1 -1
  165. package/dist/react/MirrorCanvas.d.ts +10 -0
  166. package/dist/react/MirrorCanvas.d.ts.map +1 -0
  167. package/dist/react/MirrorCanvas.js +23 -0
  168. package/dist/react/MirrorCanvas.js.map +1 -0
  169. package/dist/react/index.d.ts +2 -0
  170. package/dist/react/index.d.ts.map +1 -1
  171. package/dist/react/index.js +1 -0
  172. package/dist/react/index.js.map +1 -1
  173. package/dist/react/useColorScheme.d.ts +2 -3
  174. package/dist/react/useColorScheme.d.ts.map +1 -1
  175. package/dist/react/useColorScheme.js +15 -8
  176. package/dist/react/useColorScheme.js.map +1 -1
  177. package/dist/react/useRpc.js +2 -2
  178. package/dist/react/useRpc.js.map +1 -1
  179. package/dist/react/useSafeArea.d.ts.map +1 -1
  180. package/dist/react/useSafeArea.js +2 -2
  181. package/dist/react/useSafeArea.js.map +1 -1
  182. package/dist/session.d.ts +50 -4
  183. package/dist/session.d.ts.map +1 -1
  184. package/dist/session.js +35 -6
  185. package/dist/session.js.map +1 -1
  186. package/dist/transport/auto.d.ts +2 -2
  187. package/dist/transport/auto.js +2 -2
  188. package/dist/transport/dispatch.d.ts +1 -1
  189. package/dist/transport/dispatch.js +1 -1
  190. package/dist/transport/mock.d.ts +4 -4
  191. package/dist/transport/mock.d.ts.map +1 -1
  192. package/dist/transport/mock.js +31 -7
  193. package/dist/transport/mock.js.map +1 -1
  194. package/dist/ui/index.d.ts +2 -0
  195. package/dist/ui/index.d.ts.map +1 -1
  196. package/dist/ui/index.js +1 -0
  197. package/dist/ui/index.js.map +1 -1
  198. package/package.json +19 -3
  199. package/src/background/index.ts +26 -4
  200. package/src/background/register.ts +1 -1
  201. package/src/display/index.ts +83 -0
  202. package/src/display/measurer/TextMeasurer.ts +346 -0
  203. package/src/display/measurer/index.ts +21 -0
  204. package/src/display/measurer/script-detection.ts +218 -0
  205. package/src/display/pixelArt.ts +141 -0
  206. package/src/display/profiles/g1.ts +237 -0
  207. package/src/display/profiles/g2.ts +39 -0
  208. package/src/display/profiles/index.ts +28 -0
  209. package/src/display/profiles/nex.ts +166 -0
  210. package/src/display/profiles/types.ts +132 -0
  211. package/src/display/profiles/z100.ts +198 -0
  212. package/src/display/scene/types.ts +335 -0
  213. package/src/display/wrapper/TextWrapper.ts +546 -0
  214. package/src/display/wrapper/index.ts +15 -0
  215. package/src/display/wrapper/types.ts +102 -0
  216. package/src/globals.ts +5 -5
  217. package/src/hardware.ts +6 -21
  218. package/src/index.ts +34 -6
  219. package/src/knownApps.ts +170 -0
  220. package/src/mirror/canvas.ts +322 -0
  221. package/src/mirror/geometry.ts +128 -0
  222. package/src/mirror/index.ts +2 -0
  223. package/src/mirror/types.ts +38 -0
  224. package/src/modules/auth.ts +2 -2
  225. package/src/modules/compass.ts +69 -0
  226. package/src/modules/display.ts +222 -12
  227. package/src/modules/events.ts +27 -1
  228. package/src/modules/input.ts +55 -2
  229. package/src/modules/latest-render-scheduler.ts +55 -0
  230. package/src/modules/lightSensor.ts +61 -0
  231. package/src/modules/mic.ts +3 -2
  232. package/src/modules/miniapps.ts +2 -0
  233. package/src/modules/mirror.ts +42 -0
  234. package/src/modules/mono-text-rows.ts +30 -0
  235. package/src/modules/navigation.ts +20 -14
  236. package/src/modules/phone.ts +40 -1
  237. package/src/modules/settings.ts +64 -0
  238. package/src/modules/system.ts +30 -1
  239. package/src/modules/transcription.ts +3 -2
  240. package/src/protocol.ts +72 -5
  241. package/src/react/MirrorCanvas.tsx +35 -0
  242. package/src/react/index.ts +3 -0
  243. package/src/react/useColorScheme.ts +17 -8
  244. package/src/react/useRpc.ts +2 -2
  245. package/src/react/useSafeArea.ts +2 -2
  246. package/src/session.ts +78 -8
  247. package/src/transport/auto.ts +2 -2
  248. package/src/transport/dispatch.ts +1 -1
  249. package/src/transport/mock.ts +42 -11
  250. package/src/ui/index.ts +3 -0
  251. package/dist/modules/heading.d.ts +0 -16
  252. package/dist/modules/heading.d.ts.map +0 -1
  253. package/dist/modules/heading.js +0 -20
  254. package/dist/modules/heading.js.map +0 -1
  255. package/src/modules/heading.ts +0 -23
@@ -0,0 +1,311 @@
1
+ import { sceneGeometry, geometryEqual, tweenAt } from "./geometry";
2
+ /** CSS cubic-bezier timing, matching the glasses mirror's easing curves. */
3
+ export function mirrorEase(t, name) {
4
+ if (name === "linear" || t <= 0 || t >= 1)
5
+ return t;
6
+ const [x1, y1, x2, y2] = name === "ease-in"
7
+ ? [0.42, 0, 1, 1]
8
+ : name === "ease-out"
9
+ ? [0, 0, 0.58, 1]
10
+ : name === "ease-in-out"
11
+ ? [0.42, 0, 0.58, 1]
12
+ : [0.25, 0.1, 0.25, 1];
13
+ const curve = (u, a, b) => 3 * (1 - u) ** 2 * u * a + 3 * (1 - u) * u ** 2 * b + u ** 3;
14
+ let low = 0, high = 1;
15
+ for (let i = 0; i < 16; i++) {
16
+ const mid = (low + high) / 2;
17
+ if (curve(mid, x1, x2) < t)
18
+ low = mid;
19
+ else
20
+ high = mid;
21
+ }
22
+ return curve((low + high) / 2, y1, y2);
23
+ }
24
+ function poseAt(pose, now) {
25
+ const geometry = tweenAt(pose.from, pose.to, mirrorEase(pose.duration ? Math.min(1, (now - pose.start) / pose.duration) : 1, pose.element.transition?.easing));
26
+ const rotationT = mirrorEase(pose.rotationDuration ? Math.min(1, (now - pose.rotationStart) / pose.rotationDuration) : 1, pose.element.transition?.easing);
27
+ return { ...geometry, rotation: pose.rotationFrom + (pose.rotationTo - pose.rotationFrom) * rotationT };
28
+ }
29
+ function canTween(previous, next) {
30
+ return (next.change !== "created" &&
31
+ previous.type === next.type &&
32
+ previous.text === next.text &&
33
+ previous.data === next.data &&
34
+ previous.d === next.d &&
35
+ previous.fillRule === next.fillRule &&
36
+ previous.style?.fill === next.style?.fill &&
37
+ previous.points?.length === next.points?.length &&
38
+ !(next.type === "image" && (previous.box.w !== next.box.w || previous.box.h !== next.box.h)));
39
+ }
40
+ /** Browser-only renderer. Feed snapshots from session.mirror through your UI channel. */
41
+ export class MirrorCanvasRenderer {
42
+ constructor(canvas) {
43
+ this.canvas = canvas;
44
+ this.frame = null;
45
+ this.poses = new Map();
46
+ this.images = new Map();
47
+ this.pending = new Set();
48
+ this.raf = null;
49
+ this.disposed = false;
50
+ const ctx = canvas.getContext("2d");
51
+ if (!ctx)
52
+ throw new Error("Canvas 2D is unavailable");
53
+ this.ctx = ctx;
54
+ }
55
+ update(frame) {
56
+ if (this.disposed || (this.frame && frame.revision < this.frame.revision))
57
+ return;
58
+ const previous = this.frame;
59
+ const scene = frame.content.kind === "scene" ? frame.content : null;
60
+ const prior = previous?.content.kind === "scene" ? previous.content : null;
61
+ const reset = !prior ||
62
+ !scene ||
63
+ previous?.model !== frame.model ||
64
+ previous.appId !== frame.appId ||
65
+ previous.view !== frame.view ||
66
+ prior.epoch !== scene.epoch ||
67
+ frame.revision > previous.revision + 1;
68
+ const now = Date.now();
69
+ const poses = new Map();
70
+ for (const element of scene?.elements ?? []) {
71
+ const to = sceneGeometry(element);
72
+ const prev = reset ? undefined : this.poses.get(element.id);
73
+ const animate = prev && canTween(prev.element, element);
74
+ const duration = element.transition?.durationMs ?? 0;
75
+ const current = prev ? poseAt(prev, now) : to;
76
+ const sameGeometry = animate && geometryEqual(prev.to, to);
77
+ const sameRotation = animate && prev.to.rotation === to.rotation && prev.to.pivotX === to.pivotX && prev.to.pivotY === to.pivotY;
78
+ poses.set(element.id, {
79
+ element,
80
+ to,
81
+ from: sameGeometry ? prev.from : animate ? current : to,
82
+ start: sameGeometry ? prev.start : now,
83
+ duration: sameGeometry ? prev.duration : animate ? Math.min(duration, 255 * 33) : 0,
84
+ rotationFrom: sameRotation ? prev.rotationFrom : animate ? current.rotation : to.rotation,
85
+ rotationTo: to.rotation,
86
+ rotationStart: sameRotation ? prev.rotationStart : now,
87
+ rotationDuration: sameRotation ? prev.rotationDuration : animate ? Math.min(duration, 65535) : 0,
88
+ });
89
+ }
90
+ this.poses = poses;
91
+ this.frame = frame;
92
+ const used = new Set(scene?.elements.flatMap((e) => (e.data ? [e.data] : [])) ?? []);
93
+ if (frame.content.kind === "bitmap")
94
+ used.add(frame.content.data);
95
+ for (const key of this.images.keys())
96
+ if (!used.has(key))
97
+ this.images.delete(key);
98
+ this.draw();
99
+ }
100
+ dispose() {
101
+ this.disposed = true;
102
+ if (this.raf !== null)
103
+ cancelAnimationFrame(this.raf);
104
+ this.raf = null;
105
+ this.poses.clear();
106
+ this.images.clear();
107
+ this.pending.clear();
108
+ }
109
+ image(data) {
110
+ if (this.images.has(data))
111
+ return this.images.get(data) ?? null;
112
+ if (this.pending.has(data))
113
+ return null;
114
+ this.pending.add(data);
115
+ const image = new Image();
116
+ image.onload = () => {
117
+ this.pending.delete(data);
118
+ if (this.disposed)
119
+ return;
120
+ const content = this.frame?.content;
121
+ if (!(content?.kind === "bitmap" && content.data === data) &&
122
+ !(content?.kind === "scene" && content.elements.some((e) => e.data === data)))
123
+ return;
124
+ const surface = document.createElement("canvas");
125
+ surface.width = image.naturalWidth;
126
+ surface.height = image.naturalHeight;
127
+ const ctx = surface.getContext("2d", { willReadFrequently: true });
128
+ if (!ctx)
129
+ return;
130
+ ctx.drawImage(image, 0, 0);
131
+ const pixels = ctx.getImageData(0, 0, surface.width, surface.height);
132
+ for (let i = 0; i < pixels.data.length; i += 4) {
133
+ const alpha = ((0.2126 * pixels.data[i] + 0.7152 * pixels.data[i + 1] + 0.0722 * pixels.data[i + 2]) * pixels.data[i + 3]) /
134
+ 255;
135
+ pixels.data[i] = 0;
136
+ pixels.data[i + 1] = 255;
137
+ pixels.data[i + 2] = 136;
138
+ pixels.data[i + 3] = alpha;
139
+ }
140
+ ctx.putImageData(pixels, 0, 0);
141
+ this.images.set(data, surface);
142
+ this.draw();
143
+ };
144
+ image.onerror = () => {
145
+ this.pending.delete(data);
146
+ if (!this.disposed)
147
+ this.images.set(data, null);
148
+ };
149
+ // Encoded images only: never fetch arbitrary URLs from scene data.
150
+ image.src = data.startsWith("data:image/")
151
+ ? data
152
+ : `data:image/${data.startsWith("Qk") ? "bmp" : "png"};base64,${data}`;
153
+ return null;
154
+ }
155
+ draw() {
156
+ if (this.disposed || !this.frame)
157
+ return;
158
+ if (this.raf !== null)
159
+ cancelAnimationFrame(this.raf);
160
+ this.raf = null;
161
+ const { canvas, content } = this.frame;
162
+ const w = Math.max(1, Math.round(canvas?.width ?? 1)), h = Math.max(1, Math.round(canvas?.height ?? 1));
163
+ if (this.canvas.width !== w)
164
+ this.canvas.width = w;
165
+ if (this.canvas.height !== h)
166
+ this.canvas.height = h;
167
+ const ctx = this.ctx;
168
+ ctx.clearRect(0, 0, w, h);
169
+ const now = Date.now();
170
+ let animating = false;
171
+ if (content.kind === "bitmap") {
172
+ const image = this.image(content.data);
173
+ if (image) {
174
+ const g1 = image.width === 576 && image.height === 135;
175
+ const x = g1 ? 29 : 0, y = g1 ? 21 : 0;
176
+ ctx.drawImage(image, x, y, image.width - x, image.height - y, 0, 0, w, h);
177
+ }
178
+ }
179
+ for (const pose of this.poses.values()) {
180
+ animating || (animating = now < pose.start + pose.duration || now < pose.rotationStart + pose.rotationDuration);
181
+ this.paint(pose.element, poseAt(pose, now));
182
+ }
183
+ if (animating)
184
+ this.raf = requestAnimationFrame(() => this.draw());
185
+ }
186
+ paint(element, g) {
187
+ const ctx = this.ctx;
188
+ ctx.save();
189
+ try {
190
+ if (g.rotation) {
191
+ ctx.translate(g.pivotX, g.pivotY);
192
+ ctx.rotate((g.rotation * Math.PI) / 180);
193
+ ctx.translate(-g.pivotX, -g.pivotY);
194
+ }
195
+ if (element.type === "image") {
196
+ const image = element.data ? this.image(element.data) : null;
197
+ ctx.globalAlpha = g.level;
198
+ if (image)
199
+ ctx.drawImage(image, g.x, g.y, g.w, g.h);
200
+ return;
201
+ }
202
+ if (element.type === "text") {
203
+ if (g.stroke > 0) {
204
+ const border = new Path2D();
205
+ border.roundRect(g.x, g.y, g.w, g.h, Math.max(0, Math.min(g.radius, g.w / 2, g.h / 2)));
206
+ this.path(border, false, g);
207
+ }
208
+ ctx.beginPath();
209
+ ctx.rect(g.x, g.y, g.w, g.h);
210
+ ctx.clip();
211
+ const mono = element.style?.font === "mono", size = mono ? element.style?.fontSize || 20 : 20;
212
+ const pitch = mono ? Math.round(size * 1.2) : 27;
213
+ ctx.font = `${size}px ${mono ? "monospace" : "Arial, sans-serif"}`;
214
+ const metrics = ctx.measureText("0"), cell = Math.max(1, Math.round(metrics.width));
215
+ const ascent = metrics.fontBoundingBoxAscent || size * 0.8, descent = metrics.fontBoundingBoxDescent || size * 0.2;
216
+ const baseline = mono ? Math.round((pitch - ascent - descent) / 2 + ascent) : 22;
217
+ ctx.fillStyle = `rgba(0,255,136,${g.level})`;
218
+ (element.text ?? "").split("\n").forEach((line, row) => {
219
+ if (row > 0 && (mono ? 2 + row * pitch >= g.h - 2 : (row + 1) * pitch > g.h))
220
+ return;
221
+ let x = g.x + 2;
222
+ for (const char of line) {
223
+ ctx.fillText(char, x, g.y + 2 + row * pitch + baseline);
224
+ x += mono ? cell : this.frame?.glyphWidths[char] ?? ctx.measureText(char).width;
225
+ }
226
+ });
227
+ return;
228
+ }
229
+ let path = new Path2D();
230
+ const pts = g.points, cx = g.x + g.w / 2, cy = g.y + g.h / 2, r = Math.min(g.w, g.h) / 2;
231
+ switch (element.type) {
232
+ case "rect":
233
+ path.roundRect(g.x, g.y, g.w, g.h, Math.max(0, Math.min(g.radius, g.w / 2, g.h / 2)));
234
+ break;
235
+ case "circle":
236
+ path.arc(cx, cy, r, 0, Math.PI * 2);
237
+ break;
238
+ case "arc":
239
+ case "pie": {
240
+ const sweep = g.endDeg - g.startDeg;
241
+ if (!sweep)
242
+ return;
243
+ if (Math.abs(sweep) >= 360)
244
+ path.arc(cx, cy, r, 0, Math.PI * 2);
245
+ else {
246
+ if (element.type === "pie")
247
+ path.moveTo(cx, cy);
248
+ path.arc(cx, cy, r, (g.startDeg * Math.PI) / 180, (g.endDeg * Math.PI) / 180, sweep < 0);
249
+ if (element.type === "pie")
250
+ path.closePath();
251
+ }
252
+ break;
253
+ }
254
+ case "line":
255
+ case "triangle":
256
+ case "quad":
257
+ if (pts.length < 4)
258
+ return;
259
+ path.moveTo(pts[0], pts[1]);
260
+ for (let i = 2; i < pts.length; i += 2)
261
+ path.lineTo(pts[i], pts[i + 1]);
262
+ if (element.type !== "line")
263
+ path.closePath();
264
+ break;
265
+ case "bezier":
266
+ path.moveTo(pts[0], pts[1]);
267
+ if (pts.length === 6)
268
+ path.quadraticCurveTo(pts[2], pts[3], pts[4], pts[5]);
269
+ else if (pts.length === 8)
270
+ path.bezierCurveTo(pts[2], pts[3], pts[4], pts[5], pts[6], pts[7]);
271
+ else
272
+ return;
273
+ break;
274
+ case "svg":
275
+ if (!element.d)
276
+ return;
277
+ path = new Path2D(element.d);
278
+ ctx.translate(g.x, g.y);
279
+ ctx.scale(g.pathScale, g.pathScale);
280
+ break;
281
+ default:
282
+ return;
283
+ }
284
+ const filled = element.type === "svg" ||
285
+ element.type === "pie" ||
286
+ (["rect", "circle", "triangle", "quad"].includes(element.type) && element.style?.fill === true);
287
+ this.path(path, filled, g, element.fillRule === "evenodd" ? "evenodd" : "nonzero");
288
+ }
289
+ finally {
290
+ ctx.restore();
291
+ }
292
+ }
293
+ path(path, fill, g, rule = "nonzero") {
294
+ const ctx = this.ctx;
295
+ ctx.lineWidth = Math.max(1, g.stroke);
296
+ // Replace the shape's covered pixels, including level-zero erasure.
297
+ ctx.globalCompositeOperation = "destination-out";
298
+ ctx.fillStyle = ctx.strokeStyle = "black";
299
+ if (fill)
300
+ ctx.fill(path, rule);
301
+ else
302
+ ctx.stroke(path);
303
+ ctx.globalCompositeOperation = "source-over";
304
+ ctx.fillStyle = ctx.strokeStyle = `rgba(0,255,136,${g.level})`;
305
+ if (fill)
306
+ ctx.fill(path, rule);
307
+ else
308
+ ctx.stroke(path);
309
+ }
310
+ }
311
+ //# sourceMappingURL=canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/mirror/canvas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export declare const SHAPE_TYPES: Set<string>;
2
+ /** The mirror consumes processed frames; it does not own native scene state. */
3
+ export interface MirrorSceneElement {
4
+ id?: string;
5
+ type?: string;
6
+ box?: {
7
+ x?: number;
8
+ y?: number;
9
+ w?: number;
10
+ h?: number;
11
+ };
12
+ points?: readonly {
13
+ x: number;
14
+ y: number;
15
+ }[];
16
+ style?: {
17
+ color?: number;
18
+ width?: number;
19
+ border?: number;
20
+ radius?: number;
21
+ fill?: boolean;
22
+ font?: string;
23
+ fontSize?: number;
24
+ };
25
+ startDeg?: number;
26
+ endDeg?: number;
27
+ rotation?: number;
28
+ pivot?: {
29
+ x: number;
30
+ y: number;
31
+ };
32
+ pathScale?: number;
33
+ d?: string;
34
+ fillRule?: string;
35
+ text?: string;
36
+ data?: string;
37
+ change?: string;
38
+ transition?: {
39
+ durationMs: number;
40
+ easing?: string;
41
+ };
42
+ }
43
+ /** Tweenable state of one scene element, in canvas pixels. */
44
+ export interface SceneGeometry {
45
+ x: number;
46
+ y: number;
47
+ w: number;
48
+ h: number;
49
+ /** Ink intensity derived from the gray level (0..15 → 0..1). */
50
+ level: number;
51
+ /** Stroke width in canvas px; 0 = no outline. */
52
+ stroke: number;
53
+ radius: number;
54
+ /** Flat x0, y0, x1, y1, … for point shapes. */
55
+ points: number[];
56
+ startDeg: number;
57
+ endDeg: number;
58
+ rotation: number;
59
+ pivotX: number;
60
+ pivotY: number;
61
+ pathScale: number;
62
+ }
63
+ /** Gray level 0..15 → normalized ink intensity. */
64
+ export declare function levelOpacity(color: unknown): number;
65
+ export declare function sceneGeometry(element: MirrorSceneElement): SceneGeometry;
66
+ export declare function geometryEqual(a: SceneGeometry, b: SceneGeometry): boolean;
67
+ /** Linear blend of two geometries at eased progress `t` (0..1). */
68
+ export declare function tweenAt(from: SceneGeometry, to: SceneGeometry, t: number): SceneGeometry;
69
+ //# sourceMappingURL=geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/mirror/geometry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,aAAyF,CAAA;AAEjH,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IACtD,MAAM,CAAC,EAAE,SAAS;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAA;IAC1C,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;CACnD;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGnD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa,CA2BxE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAezE;AAED,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,CAuBxF"}
@@ -0,0 +1,75 @@
1
+ export const SHAPE_TYPES = new Set(["rect", "circle", "arc", "pie", "line", "triangle", "quad", "bezier", "svg"]);
2
+ /** Gray level 0..15 → normalized ink intensity. */
3
+ export function levelOpacity(color) {
4
+ const level = Number(color);
5
+ return Number.isFinite(level) ? Math.max(0, Math.min(15, level)) / 15 : 1;
6
+ }
7
+ export function sceneGeometry(element) {
8
+ const box = element?.box ?? {};
9
+ const style = element?.style ?? {};
10
+ const type = element?.type;
11
+ const stroke = type !== "rect" && SHAPE_TYPES.has(type ?? "")
12
+ ? Number(style.width) || Number(style.border) || 1
13
+ : Number(style.border) || (type === "rect" && style.fill !== true ? 1 : 0);
14
+ const points = Array.isArray(element?.points)
15
+ ? element.points.flatMap((p) => [Number(p?.x) || 0, Number(p?.y) || 0])
16
+ : [];
17
+ return {
18
+ x: Number(box.x) || 0,
19
+ y: Number(box.y) || 0,
20
+ w: Math.max(0, Number(box.w) || 0),
21
+ h: Math.max(0, Number(box.h) || 0),
22
+ level: levelOpacity(style.color),
23
+ stroke,
24
+ radius: Number(style.radius) || 0,
25
+ points,
26
+ startDeg: Number(element?.startDeg) || 0,
27
+ endDeg: Number(element?.endDeg) || 0,
28
+ rotation: Number(element?.rotation) || 0,
29
+ pivotX: Number(element?.pivot?.x ?? Number(box.x || 0) + Number(box.w || 0) / 2),
30
+ pivotY: Number(element?.pivot?.y ?? Number(box.y || 0) + Number(box.h || 0) / 2),
31
+ pathScale: Number(element?.pathScale ?? 256) / 256,
32
+ };
33
+ }
34
+ export function geometryEqual(a, b) {
35
+ return (a.x === b.x &&
36
+ a.y === b.y &&
37
+ a.w === b.w &&
38
+ a.h === b.h &&
39
+ a.level === b.level &&
40
+ a.stroke === b.stroke &&
41
+ a.radius === b.radius &&
42
+ a.startDeg === b.startDeg &&
43
+ a.endDeg === b.endDeg &&
44
+ a.pathScale === b.pathScale &&
45
+ a.points.length === b.points.length &&
46
+ a.points.every((p, i) => p === b.points[i]));
47
+ }
48
+ /** Linear blend of two geometries at eased progress `t` (0..1). */
49
+ export function tweenAt(from, to, t) {
50
+ "worklet";
51
+ if (t >= 1)
52
+ return to;
53
+ if (t <= 0)
54
+ return from;
55
+ const mix = (a, b) => a + (b - a) * t;
56
+ const points = from.points.length === to.points.length ? to.points.map((p, i) => mix(from.points[i], p)) : to.points;
57
+ return {
58
+ x: mix(from.x, to.x),
59
+ y: mix(from.y, to.y),
60
+ w: mix(from.w, to.w),
61
+ h: mix(from.h, to.h),
62
+ level: mix(from.level, to.level),
63
+ stroke: mix(from.stroke, to.stroke),
64
+ radius: mix(from.radius, to.radius),
65
+ points,
66
+ startDeg: mix(from.startDeg, to.startDeg),
67
+ endDeg: mix(from.endDeg, to.endDeg),
68
+ rotation: mix(from.rotation, to.rotation),
69
+ // Firmware changes the fixed pivot immediately when a rotation retargets.
70
+ pivotX: to.pivotX,
71
+ pivotY: to.pivotY,
72
+ pathScale: mix(from.pathScale, to.pathScale),
73
+ };
74
+ }
75
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/mirror/geometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { MirrorCanvasRenderer } from "./canvas";
2
+ export type { MirrorSnapshot, MirrorContent, MirrorElement } from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mirror/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,UAAU,CAAA;AAC7C,YAAY,EAAC,cAAc,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { MirrorCanvasRenderer } from "./canvas";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mirror/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,UAAU,CAAA"}
@@ -0,0 +1,40 @@
1
+ import type { FrameElement, SceneTextStyle, SceneRectStyle, SceneShapeStyle, SceneStrokeStyle, SceneImageStyle } from "../display/scene/types";
2
+ type ReadonlyValue<T> = T extends object ? {
3
+ readonly [K in keyof T]: ReadonlyValue<T[K]>;
4
+ } : T;
5
+ /** Ordered, processed scene element. Coordinates are glasses canvas pixels. */
6
+ export type MirrorElement = ReadonlyValue<Omit<FrameElement, "path" | "contentHash" | "style"> & {
7
+ style?: SceneTextStyle & SceneRectStyle & SceneShapeStyle & SceneStrokeStyle & SceneImageStyle;
8
+ }>;
9
+ export type MirrorContent = {
10
+ readonly kind: "scene";
11
+ readonly elements: readonly MirrorElement[];
12
+ readonly epoch: number;
13
+ } | {
14
+ readonly kind: "bitmap";
15
+ readonly data: string;
16
+ } | {
17
+ readonly kind: "empty";
18
+ } | {
19
+ readonly kind: "unavailable";
20
+ readonly reason: string;
21
+ };
22
+ /** Serializable intended output after display arbitration; never a hardware screenshot. */
23
+ export interface MirrorSnapshot {
24
+ /** Monotonic within this host runtime; useful when mixing requests and updates. */
25
+ readonly revision: number;
26
+ readonly updatedAt: number;
27
+ readonly connected: boolean;
28
+ readonly model: string | null;
29
+ readonly canvas: {
30
+ readonly width: number;
31
+ readonly height: number;
32
+ } | null;
33
+ readonly view: "main" | "dashboard" | null;
34
+ readonly appId: string | null;
35
+ readonly content: MirrorContent;
36
+ /** Rendered advances for the code points in this snapshot (builtin text). */
37
+ readonly glyphWidths: Readonly<Record<string, number>>;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mirror/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAE/B,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG;IAAC,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,GAAG,CAAC,CAAA;AAE7F,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,aAAa,CACvC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,GAAG;IACrD,KAAK,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAA;CAC/F,CACF,CAAA;AAED,MAAM,MAAM,aAAa,GACrB;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAC7F;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAChD;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GACxB;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAA;AAE3D,2FAA2F;AAC3F,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAA;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACvD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mirror/types.ts"],"names":[],"mappings":""}
@@ -11,7 +11,7 @@ export declare class AuthModule {
11
11
  private readonly session;
12
12
  constructor(session: MiniappSession);
13
13
  get current(): MiniappAuthState | null;
14
- get glasslyUserId(): string | null;
14
+ get userId(): string | null;
15
15
  get oemId(): string | null;
16
16
  getToken(options?: {
17
17
  minTtlMs?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAA;AAEhE,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAID,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,IAAI,OAAO,IAAI,gBAAgB,GAAG,IAAI,CAErC;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAEK,QAAQ,CAAC,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D,aAAa,CAAC,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrF,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;CAGhE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAA;AAEhE,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAID,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,IAAI,OAAO,IAAI,gBAAgB,GAAG,IAAI,CAErC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAEK,QAAQ,CAAC,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D,aAAa,CAAC,OAAO,GAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrF,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;CAGhE"}
@@ -6,8 +6,8 @@ export class AuthModule {
6
6
  get current() {
7
7
  return this.session._getAuth();
8
8
  }
9
- get glasslyUserId() {
10
- return this.current?.glasslyUserId ?? null;
9
+ get userId() {
10
+ return this.current?.userId ?? null;
11
11
  }
12
12
  get oemId() {
13
13
  return this.current?.oemId ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAWA,MAAM,kBAAkB,GAAG,KAAM,CAAA;AAEjC,MAAM,OAAO,UAAU;IACrB,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;IAChC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI,CAAA;IAC5C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAA+B,EAAE;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAA;QACpF,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAA+B,EAAE;QACnD,OAAO,UAAU,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,OAAyB,EAAE;QAC/D,MAAM,EAAC,QAAQ,EAAE,GAAG,WAAW,EAAC,GAAG,IAAI,CAAA;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,aAAa,EAAE,UAAU,KAAK,EAAE,EAAC,CAAC,CAAA;QACrF,OAAO,KAAK,CAAC,KAAK,EAAE,EAAC,GAAG,WAAW,EAAE,OAAO,EAAC,CAAC,CAAA;IAChD,CAAC;IAED,QAAQ,CAAC,OAAyC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,IAA6B,EAAE,IAA4B;IAC/E,MAAM,OAAO,GAA2B,EAAE,CAAA;IAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrD,CAAC;IACH,CAAC;IAED,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAC,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAWA,MAAM,kBAAkB,GAAG,KAAM,CAAA;AAEjC,MAAM,OAAO,UAAU;IACrB,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;IAChC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAA;IACrC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAA+B,EAAE;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAA;QACpF,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAA+B,EAAE;QACnD,OAAO,UAAU,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,OAAyB,EAAE;QAC/D,MAAM,EAAC,QAAQ,EAAE,GAAG,WAAW,EAAC,GAAG,IAAI,CAAA;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,EAAC,aAAa,EAAE,UAAU,KAAK,EAAE,EAAC,CAAC,CAAA;QACrF,OAAO,KAAK,CAAC,KAAK,EAAE,EAAC,GAAG,WAAW,EAAE,OAAO,EAAC,CAAC,CAAA;IAChD,CAAC;IAED,QAAQ,CAAC,OAAyC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,IAA6B,EAAE,IAA4B;IAC/E,MAAM,OAAO,GAA2B,EAAE,CAAA;IAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrD,CAAC;IACH,CAAC;IAED,OAAO,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,EAAC,CAAA;AAC9B,CAAC"}