@volley/vwr-loader 1.5.0 → 1.6.0

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 (151) hide show
  1. package/dist/cli.js +37 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/main.js +11 -11
  4. package/dist/main.js.map +1 -1
  5. package/dist/{datadog.d.ts → vwr/src/datadog.d.ts} +7 -3
  6. package/dist/vwr/src/datadog.d.ts.map +1 -0
  7. package/dist/{datadog.js → vwr/src/datadog.js} +6 -5
  8. package/dist/vwr/src/datadog.js.map +1 -0
  9. package/dist/{envDefaults.d.ts → vwr/src/envDefaults.d.ts} +1 -0
  10. package/dist/vwr/src/envDefaults.d.ts.map +1 -0
  11. package/dist/{envDefaults.js → vwr/src/envDefaults.js} +26 -0
  12. package/dist/vwr/src/envDefaults.js.map +1 -0
  13. package/dist/vwr/src/logger.d.ts +15 -0
  14. package/dist/vwr/src/logger.d.ts.map +1 -0
  15. package/dist/{logger.js → vwr/src/logger.js} +30 -46
  16. package/dist/vwr/src/logger.js.map +1 -0
  17. package/dist/vwr/src/native/device-info/getDeviceId.d.ts +13 -0
  18. package/dist/vwr/src/native/device-info/getDeviceId.d.ts.map +1 -0
  19. package/dist/vwr/src/native/device-info/getDeviceId.js +137 -0
  20. package/dist/vwr/src/native/device-info/getDeviceId.js.map +1 -0
  21. package/dist/{vwrConfig.d.ts → vwr/src/vwrConfig.d.ts} +5 -0
  22. package/dist/vwr/src/vwrConfig.d.ts.map +1 -0
  23. package/dist/{vwrConfig.js → vwr/src/vwrConfig.js} +13 -5
  24. package/dist/vwr/src/vwrConfig.js.map +1 -0
  25. package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.d.ts.map +1 -0
  26. package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.js.map +1 -0
  27. package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.d.ts.map +1 -0
  28. package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.js.map +1 -0
  29. package/dist/vwr-loader/src/__mocks__/vwrModule.d.ts.map +1 -0
  30. package/dist/vwr-loader/src/__mocks__/vwrModule.js.map +1 -0
  31. package/dist/vwr-loader/src/amplitudeFlagFetcher.d.ts.map +1 -0
  32. package/dist/vwr-loader/src/amplitudeFlagFetcher.js.map +1 -0
  33. package/dist/vwr-loader/src/errors/InitializationError.d.ts.map +1 -0
  34. package/dist/vwr-loader/src/errors/InitializationError.js.map +1 -0
  35. package/dist/vwr-loader/src/errors/ensureError.d.ts.map +1 -0
  36. package/dist/vwr-loader/src/errors/ensureError.js.map +1 -0
  37. package/dist/vwr-loader/src/errors/index.d.ts.map +1 -0
  38. package/dist/vwr-loader/src/errors/index.js.map +1 -0
  39. package/dist/vwr-loader/src/exitHandler.d.ts.map +1 -0
  40. package/dist/{exitHandler.js → vwr-loader/src/exitHandler.js} +2 -3
  41. package/dist/vwr-loader/src/exitHandler.js.map +1 -0
  42. package/dist/vwr-loader/src/getEnvironment.d.ts.map +1 -0
  43. package/dist/vwr-loader/src/getEnvironment.js.map +1 -0
  44. package/dist/vwr-loader/src/getShellVersion.d.ts.map +1 -0
  45. package/dist/vwr-loader/src/getShellVersion.js.map +1 -0
  46. package/dist/vwr-loader/src/index.d.ts +8 -0
  47. package/dist/vwr-loader/src/index.d.ts.map +1 -0
  48. package/dist/vwr-loader/src/index.js +6 -0
  49. package/dist/vwr-loader/src/index.js.map +1 -0
  50. package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -0
  51. package/dist/{loadVwr.js → vwr-loader/src/loadVwr.js} +9 -6
  52. package/dist/vwr-loader/src/loadVwr.js.map +1 -0
  53. package/dist/vwr-loader/src/logger.d.ts +4 -0
  54. package/dist/vwr-loader/src/logger.d.ts.map +1 -0
  55. package/dist/vwr-loader/src/logger.js +10 -0
  56. package/dist/vwr-loader/src/logger.js.map +1 -0
  57. package/dist/vwr-loader/src/main.d.ts +2 -0
  58. package/dist/vwr-loader/src/main.d.ts.map +1 -0
  59. package/dist/vwr-loader/src/main.js +96 -0
  60. package/dist/vwr-loader/src/main.js.map +1 -0
  61. package/dist/vwr-loader/src/polyfills.d.ts.map +1 -0
  62. package/dist/vwr-loader/src/polyfills.js.map +1 -0
  63. package/dist/{test-setup.d.ts.map → vwr-loader/src/test-setup.d.ts.map} +1 -1
  64. package/dist/vwr-loader/src/test-setup.js.map +1 -0
  65. package/package.json +10 -8
  66. package/src/exitHandler.test.ts +44 -0
  67. package/src/exitHandler.ts +4 -3
  68. package/src/getShellVersion.ts +2 -1
  69. package/src/index.ts +3 -3
  70. package/src/loadVwr.test.ts +10 -5
  71. package/src/loadVwr.ts +18 -12
  72. package/src/logger.ts +5 -115
  73. package/src/main.ts +3 -2
  74. package/src/vite-env.d.ts +1 -0
  75. package/dist/__mocks__/@datadog/browser-logs.d.ts.map +0 -1
  76. package/dist/__mocks__/@datadog/browser-logs.js.map +0 -1
  77. package/dist/__mocks__/@datadog/browser-rum.d.ts.map +0 -1
  78. package/dist/__mocks__/@datadog/browser-rum.js.map +0 -1
  79. package/dist/__mocks__/vwrModule.d.ts.map +0 -1
  80. package/dist/__mocks__/vwrModule.js.map +0 -1
  81. package/dist/amplitudeFlagFetcher.d.ts.map +0 -1
  82. package/dist/amplitudeFlagFetcher.js.map +0 -1
  83. package/dist/datadog.d.ts.map +0 -1
  84. package/dist/datadog.js.map +0 -1
  85. package/dist/envDefaults.d.ts.map +0 -1
  86. package/dist/envDefaults.js.map +0 -1
  87. package/dist/errors/InitializationError.d.ts.map +0 -1
  88. package/dist/errors/InitializationError.js.map +0 -1
  89. package/dist/errors/ensureError.d.ts.map +0 -1
  90. package/dist/errors/ensureError.js.map +0 -1
  91. package/dist/errors/index.d.ts.map +0 -1
  92. package/dist/errors/index.js.map +0 -1
  93. package/dist/exitHandler.d.ts.map +0 -1
  94. package/dist/exitHandler.js.map +0 -1
  95. package/dist/getDeviceId.d.ts +0 -26
  96. package/dist/getDeviceId.d.ts.map +0 -1
  97. package/dist/getDeviceId.js +0 -209
  98. package/dist/getDeviceId.js.map +0 -1
  99. package/dist/getEnvironment.d.ts.map +0 -1
  100. package/dist/getEnvironment.js.map +0 -1
  101. package/dist/getShellVersion.d.ts.map +0 -1
  102. package/dist/getShellVersion.js.map +0 -1
  103. package/dist/index.d.ts +0 -8
  104. package/dist/index.d.ts.map +0 -1
  105. package/dist/index.js +0 -6
  106. package/dist/index.js.map +0 -1
  107. package/dist/loadVwr.d.ts.map +0 -1
  108. package/dist/loadVwr.js.map +0 -1
  109. package/dist/logger.d.ts +0 -12
  110. package/dist/logger.d.ts.map +0 -1
  111. package/dist/logger.js.map +0 -1
  112. package/dist/polyfills.d.ts.map +0 -1
  113. package/dist/polyfills.js.map +0 -1
  114. package/dist/test-setup.js.map +0 -1
  115. package/dist/types.d.ts +0 -103
  116. package/dist/types.d.ts.map +0 -1
  117. package/dist/types.js +0 -5
  118. package/dist/types.js.map +0 -1
  119. package/dist/vwrConfig.d.ts.map +0 -1
  120. package/dist/vwrConfig.js.map +0 -1
  121. package/src/datadog.ts +0 -55
  122. package/src/envDefaults.ts +0 -94
  123. package/src/getDeviceId.test.ts +0 -298
  124. package/src/getDeviceId.ts +0 -224
  125. package/src/types.ts +0 -105
  126. package/src/vwrConfig.test.ts +0 -386
  127. package/src/vwrConfig.ts +0 -374
  128. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.d.ts +0 -0
  129. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.js +0 -0
  130. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.d.ts +0 -0
  131. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.js +0 -0
  132. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/vwrModule.d.ts +0 -0
  133. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/vwrModule.js +0 -0
  134. /package/dist/{amplitudeFlagFetcher.d.ts → vwr-loader/src/amplitudeFlagFetcher.d.ts} +0 -0
  135. /package/dist/{amplitudeFlagFetcher.js → vwr-loader/src/amplitudeFlagFetcher.js} +0 -0
  136. /package/dist/{errors → vwr-loader/src/errors}/InitializationError.d.ts +0 -0
  137. /package/dist/{errors → vwr-loader/src/errors}/InitializationError.js +0 -0
  138. /package/dist/{errors → vwr-loader/src/errors}/ensureError.d.ts +0 -0
  139. /package/dist/{errors → vwr-loader/src/errors}/ensureError.js +0 -0
  140. /package/dist/{errors → vwr-loader/src/errors}/index.d.ts +0 -0
  141. /package/dist/{errors → vwr-loader/src/errors}/index.js +0 -0
  142. /package/dist/{exitHandler.d.ts → vwr-loader/src/exitHandler.d.ts} +0 -0
  143. /package/dist/{getEnvironment.d.ts → vwr-loader/src/getEnvironment.d.ts} +0 -0
  144. /package/dist/{getEnvironment.js → vwr-loader/src/getEnvironment.js} +0 -0
  145. /package/dist/{getShellVersion.d.ts → vwr-loader/src/getShellVersion.d.ts} +0 -0
  146. /package/dist/{getShellVersion.js → vwr-loader/src/getShellVersion.js} +0 -0
  147. /package/dist/{loadVwr.d.ts → vwr-loader/src/loadVwr.d.ts} +0 -0
  148. /package/dist/{polyfills.d.ts → vwr-loader/src/polyfills.d.ts} +0 -0
  149. /package/dist/{polyfills.js → vwr-loader/src/polyfills.js} +0 -0
  150. /package/dist/{test-setup.d.ts → vwr-loader/src/test-setup.d.ts} +0 -0
  151. /package/dist/{test-setup.js → vwr-loader/src/test-setup.js} +0 -0
@@ -1,224 +0,0 @@
1
- import { v4 as uuidv4 } from "uuid"
2
-
3
- import { logger } from "./logger"
4
- import type { LGDeviceIdResponse, MobileExtendedWindow } from "./types"
5
-
6
- /**
7
- * Get a unique device identifier for the current platform.
8
- *
9
- * This function attempts to retrieve a device ID from platform-specific APIs.
10
- *
11
- * Platform handling:
12
- * - FireTV: DeviceInfo (Capacitor plugin)
13
- * - Android/iOS: window.iosAppContext / window.androidAppContext (phoneDeviceId)
14
- * - Samsung TV: webapis
15
- * - LG TV: webOS Luna service
16
- * - Web: localStorage (with generated UUID fallback)
17
- *
18
- * @param platform - Platform identifier ('FIRE_TV', 'SAMSUNG_TV', 'LG_TV', 'ANDROID_MOBILE', 'IOS_MOBILE', 'WEB')
19
- * @param logger - Optional logger for error reporting. Defaults to defaultLogger.
20
- * @returns A promise that resolves to a unique device identifier string, or null if retrieval fails
21
- *
22
- * @example
23
- * ```typescript
24
- * const deviceId = await getDeviceId('SAMSUNG_TV', logger)
25
- * if (!deviceId) {
26
- * // Handle error
27
- * }
28
- * ```
29
- */
30
- export async function getDeviceId(platform: string): Promise<string | null> {
31
- const normalizedPlatform = platform.toUpperCase()
32
- switch (normalizedPlatform) {
33
- case "FIRE_TV":
34
- return await getFireTVDeviceId()
35
- case "SAMSUNG_TV":
36
- return await getSamsungDeviceId()
37
- case "LG_TV":
38
- return await getLGDeviceId()
39
- case "ANDROID_MOBILE":
40
- case "IOS_MOBILE":
41
- return await getMobileDeviceId()
42
- case "WEB":
43
- return getLocalStorageDeviceId()
44
- default:
45
- const message = `[getDeviceId] Unknown platform: ${platform}`
46
- logger.error(message)
47
- return null
48
- }
49
- }
50
-
51
- /**
52
- * Get or create device ID from localStorage (for Web platform)
53
- */
54
- function getLocalStorageDeviceId(): string {
55
- const existingDeviceId = localStorage.getItem("volley_device_id")
56
- if (existingDeviceId) {
57
- return existingDeviceId
58
- }
59
-
60
- const newDeviceId = uuidv4()
61
- localStorage.setItem("volley_device_id", newDeviceId)
62
- return newDeviceId
63
- }
64
-
65
- /**
66
- * Attempt to get device ID from Capacitor DeviceInfo plugin (FireTV)
67
- */
68
- async function getFireTVDeviceId(): Promise<string | null> {
69
- try {
70
- if (!window.Capacitor?.Plugins?.DeviceInfo?.getAndroidId) {
71
- return null
72
- }
73
-
74
- const result = await window.Capacitor.Plugins.DeviceInfo.getAndroidId()
75
- if (result?.androidId && result.androidId.trim()) {
76
- return result.androidId
77
- } else {
78
- logger.error(
79
- "Capacitor.Plugins.DeviceInfo.getAndroidId returned empty"
80
- )
81
- }
82
- } catch (error) {
83
- const message = "Capacitor.Plugins.DeviceInfo.getAndroidId failed:"
84
- logger.error(message, { error })
85
- }
86
- return null
87
- }
88
-
89
- /**
90
- * Attempt to get device ID from mobile app context (Android/iOS)
91
- *
92
- * iOS exposes phoneDeviceId via window.iosAppContext
93
- * Android exposes phoneDeviceId via window.androidAppContext (also check window.top for iframes)
94
- */
95
- function getMobileDeviceId(): string | null {
96
- // Try iOS first
97
- const iosId = (window as MobileExtendedWindow).iosAppContext?.phoneDeviceId
98
- if (iosId && iosId.trim()) {
99
- return iosId
100
- }
101
-
102
- // Try Android (check both window and window.top for iframe scenarios)
103
- const androidContext = (window as MobileExtendedWindow).androidAppContext
104
- try {
105
- const androidId =
106
- androidContext?.phoneDeviceId ??
107
- (window.top as MobileExtendedWindow | null)?.androidAppContext
108
- ?.phoneDeviceId
109
- if (androidId && androidId.trim()) {
110
- return androidId
111
- }
112
- } catch {
113
- // window.top access can throw if cross-origin
114
- const androidId = androidContext?.phoneDeviceId
115
- if (androidId && androidId.trim()) {
116
- return androidId
117
- }
118
- }
119
-
120
- logger.error("[VWR:MobileDeviceId] phoneDeviceId not found", {
121
- iosAppContext: !!(window as MobileExtendedWindow).iosAppContext,
122
- androidAppContext: !!androidContext,
123
- })
124
- return null
125
- }
126
-
127
- /**
128
- * Attempt to get device ID from Samsung TV webapis
129
- */
130
- async function getSamsungDeviceId(): Promise<string | null> {
131
- try {
132
- if (!window.webapis?.productinfo?.getDuid) {
133
- return null
134
- }
135
-
136
- const id = window.webapis.productinfo.getDuid()
137
- if (id && id.trim()) {
138
- return id
139
- } else {
140
- logger.error("Samsung webapis.getDuid returned empty")
141
- }
142
- } catch (error) {
143
- const message = "Samsung webapis.getDuid failed:"
144
- logger.error(message, { error })
145
- }
146
- return null
147
- }
148
-
149
- /**
150
- * Attempt to get device ID from LG TV using Luna Service.
151
- *
152
- * This implementation is copied from PSDK's LGTVDeviceInfo to ensure
153
- * the shell and SDK return the exact same device ID.
154
- *
155
- * TODO: In the future, PSDK should import this function from vwr-loader
156
- * to maintain a single source of truth for LG device ID retrieval.
157
- */
158
- const LG_LUNA_SERVICE_TIMEOUT = 5000
159
-
160
- async function getLGDeviceId(): Promise<string | null> {
161
- if (!window.webOS?.service?.request) {
162
- const message = "LG webOS service request not available"
163
- logger.error(message)
164
- return null
165
- }
166
-
167
- return new Promise((resolve) => {
168
- let timeoutId: ReturnType<typeof setTimeout> | undefined
169
- let request: { cancel: () => void } | undefined
170
- let resolved = false
171
-
172
- const cleanup = () => {
173
- if (timeoutId) {
174
- clearTimeout(timeoutId)
175
- timeoutId = undefined
176
- }
177
- request?.cancel()
178
- }
179
-
180
- const finish = (value: string | null) => {
181
- if (resolved) return
182
- resolved = true
183
- cleanup()
184
- resolve(value)
185
- }
186
-
187
- timeoutId = setTimeout(() => {
188
- const message = "LG Luna service timed out"
189
- logger.error(message)
190
- finish(null)
191
- }, LG_LUNA_SERVICE_TIMEOUT)
192
-
193
- try {
194
- request = window.webOS?.service?.request(
195
- "luna://com.webos.service.sm",
196
- {
197
- method: "deviceid/getIDs",
198
- parameters: { idType: ["LGUDID"] },
199
- onSuccess: (response: LGDeviceIdResponse) => {
200
- const deviceId = response.idList?.[0]?.idValue
201
- if (!deviceId) {
202
- const message =
203
- "LG Luna service returned no device ID"
204
- logger.error(message)
205
- }
206
- finish(deviceId || null)
207
- },
208
- onFailure: (error) => {
209
- const message = "LG Luna service failed:"
210
- logger.error(message, { error })
211
- finish(null)
212
- },
213
- subscribe: false,
214
- }
215
- )
216
- } catch (error) {
217
- const message = "LG Luna service request threw error:"
218
- logger.error(message, { error })
219
- finish(null)
220
- }
221
- })
222
- }
223
-
224
- // Types imported from ./types.ts
package/src/types.ts DELETED
@@ -1,105 +0,0 @@
1
- /**
2
- * Shared type definitions for vwr-loader platform APIs
3
- */
4
-
5
- /**
6
- * Extended window interface for mobile app context.
7
- * Matches the types from @volley/sdk ExtendedWindow.ts
8
- */
9
- export interface MobileExtendedWindow extends Window {
10
- iosAppContext?: {
11
- appVersion: string
12
- environment?: string
13
- phoneDeviceId?: string
14
- }
15
- androidAppContext?: {
16
- appVersion: string
17
- environment?: string
18
- phoneDeviceId?: string
19
- }
20
- }
21
-
22
- /**
23
- * Global type declarations for platform APIs
24
- */
25
- declare global {
26
- interface Window {
27
- Capacitor?: {
28
- Plugins?: {
29
- DeviceInfo?: {
30
- getDeviceInfo(): Promise<{
31
- versionName?: string
32
- [key: string]: any
33
- }>
34
- getAndroidId(): Promise<{
35
- androidId?: string
36
- [key: string]: any
37
- }>
38
- getNativeShellAppEnvironment(): Promise<{
39
- environment?: string
40
- }>
41
- [key: string]: any
42
- }
43
- AppLifecycle?: {
44
- exitApp(): Promise<void>
45
- [key: string]: any
46
- }
47
- InputHandler?: {
48
- addListener(
49
- eventName: "keyDown" | "keyUp",
50
- listenerFunc: (event: { keyCode: number }) => void
51
- ): Promise<{
52
- remove: () => Promise<void> | void
53
- }>
54
- [key: string]: any
55
- }
56
- [key: string]: any
57
- }
58
- [key: string]: any
59
- }
60
- webapis?: {
61
- productinfo?: {
62
- getDuid: () => string
63
- }
64
- }
65
- webOS?: {
66
- service?: {
67
- request: (
68
- uri: string,
69
- options: {
70
- method?: string
71
- parameters?: Record<string, unknown>
72
- onSuccess?: (response: LGDeviceIdResponse) => void
73
- onFailure?: (error: { errorText?: string }) => void
74
- subscribe?: boolean
75
- }
76
- ) => {
77
- cancel: () => void
78
- }
79
- }
80
- fetchAppInfo?: (
81
- callback: (appInfo?: { version?: string }) => void
82
- ) => void
83
- platformBack?: () => void
84
- }
85
- tizen?: {
86
- application?: {
87
- getAppInfo: () => { version?: string }
88
- getCurrentApplication: () => {
89
- exit: () => void
90
- }
91
- }
92
- }
93
- }
94
- }
95
-
96
- /**
97
- * LG Luna service response for device ID
98
- */
99
- export interface LGDeviceIdResponse {
100
- idList?: Array<{
101
- idType?: string
102
- idValue?: string
103
- }>
104
- returnValue?: boolean
105
- }