@volley/vwr-loader 1.4.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/README.md +1 -1
  2. package/dist/cli.js +41 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/main.js +11 -11
  5. package/dist/main.js.map +1 -1
  6. package/dist/{datadog.d.ts → vwr/src/datadog.d.ts} +7 -3
  7. package/dist/vwr/src/datadog.d.ts.map +1 -0
  8. package/dist/{datadog.js → vwr/src/datadog.js} +6 -5
  9. package/dist/vwr/src/datadog.js.map +1 -0
  10. package/dist/{envDefaults.d.ts → vwr/src/envDefaults.d.ts} +1 -0
  11. package/dist/vwr/src/envDefaults.d.ts.map +1 -0
  12. package/dist/{envDefaults.js → vwr/src/envDefaults.js} +30 -3
  13. package/dist/vwr/src/envDefaults.js.map +1 -0
  14. package/dist/vwr/src/logger.d.ts +15 -0
  15. package/dist/vwr/src/logger.d.ts.map +1 -0
  16. package/dist/{logger.js → vwr/src/logger.js} +30 -46
  17. package/dist/vwr/src/logger.js.map +1 -0
  18. package/dist/vwr/src/native/device-info/getDeviceId.d.ts +13 -0
  19. package/dist/vwr/src/native/device-info/getDeviceId.d.ts.map +1 -0
  20. package/dist/vwr/src/native/device-info/getDeviceId.js +137 -0
  21. package/dist/vwr/src/native/device-info/getDeviceId.js.map +1 -0
  22. package/dist/{vwrConfig.d.ts → vwr/src/vwrConfig.d.ts} +5 -0
  23. package/dist/vwr/src/vwrConfig.d.ts.map +1 -0
  24. package/dist/{vwrConfig.js → vwr/src/vwrConfig.js} +13 -5
  25. package/dist/vwr/src/vwrConfig.js.map +1 -0
  26. package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.d.ts.map +1 -0
  27. package/dist/vwr-loader/src/__mocks__/@datadog/browser-logs.js.map +1 -0
  28. package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.d.ts.map +1 -0
  29. package/dist/vwr-loader/src/__mocks__/@datadog/browser-rum.js.map +1 -0
  30. package/dist/vwr-loader/src/__mocks__/vwrModule.d.ts +2 -0
  31. package/dist/vwr-loader/src/__mocks__/vwrModule.d.ts.map +1 -0
  32. package/dist/vwr-loader/src/__mocks__/vwrModule.js +3 -0
  33. package/dist/vwr-loader/src/__mocks__/vwrModule.js.map +1 -0
  34. package/dist/vwr-loader/src/amplitudeFlagFetcher.d.ts.map +1 -0
  35. package/dist/vwr-loader/src/amplitudeFlagFetcher.js.map +1 -0
  36. package/dist/vwr-loader/src/errors/InitializationError.d.ts.map +1 -0
  37. package/dist/vwr-loader/src/errors/InitializationError.js.map +1 -0
  38. package/dist/vwr-loader/src/errors/ensureError.d.ts.map +1 -0
  39. package/dist/vwr-loader/src/errors/ensureError.js.map +1 -0
  40. package/dist/vwr-loader/src/errors/index.d.ts.map +1 -0
  41. package/dist/vwr-loader/src/errors/index.js.map +1 -0
  42. package/dist/{exitHandler.d.ts → vwr-loader/src/exitHandler.d.ts} +14 -0
  43. package/dist/vwr-loader/src/exitHandler.d.ts.map +1 -0
  44. package/dist/{exitHandler.js → vwr-loader/src/exitHandler.js} +82 -1
  45. package/dist/vwr-loader/src/exitHandler.js.map +1 -0
  46. package/dist/vwr-loader/src/getEnvironment.d.ts.map +1 -0
  47. package/dist/vwr-loader/src/getEnvironment.js.map +1 -0
  48. package/dist/vwr-loader/src/getShellVersion.d.ts.map +1 -0
  49. package/dist/vwr-loader/src/getShellVersion.js.map +1 -0
  50. package/dist/vwr-loader/src/index.d.ts +8 -0
  51. package/dist/vwr-loader/src/index.d.ts.map +1 -0
  52. package/dist/vwr-loader/src/index.js +6 -0
  53. package/dist/vwr-loader/src/index.js.map +1 -0
  54. package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -0
  55. package/dist/{loadVwr.js → vwr-loader/src/loadVwr.js} +29 -6
  56. package/dist/vwr-loader/src/loadVwr.js.map +1 -0
  57. package/dist/vwr-loader/src/logger.d.ts +4 -0
  58. package/dist/vwr-loader/src/logger.d.ts.map +1 -0
  59. package/dist/vwr-loader/src/logger.js +10 -0
  60. package/dist/vwr-loader/src/logger.js.map +1 -0
  61. package/dist/vwr-loader/src/main.d.ts +2 -0
  62. package/dist/vwr-loader/src/main.d.ts.map +1 -0
  63. package/dist/vwr-loader/src/main.js +96 -0
  64. package/dist/vwr-loader/src/main.js.map +1 -0
  65. package/dist/vwr-loader/src/polyfills.d.ts.map +1 -0
  66. package/dist/vwr-loader/src/polyfills.js.map +1 -0
  67. package/dist/{test-setup.d.ts.map → vwr-loader/src/test-setup.d.ts.map} +1 -1
  68. package/dist/vwr-loader/src/test-setup.js.map +1 -0
  69. package/package.json +10 -8
  70. package/src/__mocks__/vwrModule.ts +3 -0
  71. package/src/exitHandler.test.ts +241 -3
  72. package/src/exitHandler.ts +109 -1
  73. package/src/getShellVersion.ts +2 -1
  74. package/src/index.ts +3 -3
  75. package/src/loadVwr.test.ts +170 -10
  76. package/src/loadVwr.ts +39 -12
  77. package/src/logger.ts +5 -115
  78. package/src/main.ts +16 -8
  79. package/src/vite-env.d.ts +1 -0
  80. package/dist/__mocks__/@datadog/browser-logs.d.ts.map +0 -1
  81. package/dist/__mocks__/@datadog/browser-logs.js.map +0 -1
  82. package/dist/__mocks__/@datadog/browser-rum.d.ts.map +0 -1
  83. package/dist/__mocks__/@datadog/browser-rum.js.map +0 -1
  84. package/dist/amplitudeFlagFetcher.d.ts.map +0 -1
  85. package/dist/amplitudeFlagFetcher.js.map +0 -1
  86. package/dist/datadog.d.ts.map +0 -1
  87. package/dist/datadog.js.map +0 -1
  88. package/dist/envDefaults.d.ts.map +0 -1
  89. package/dist/envDefaults.js.map +0 -1
  90. package/dist/errors/InitializationError.d.ts.map +0 -1
  91. package/dist/errors/InitializationError.js.map +0 -1
  92. package/dist/errors/ensureError.d.ts.map +0 -1
  93. package/dist/errors/ensureError.js.map +0 -1
  94. package/dist/errors/index.d.ts.map +0 -1
  95. package/dist/errors/index.js.map +0 -1
  96. package/dist/exitHandler.d.ts.map +0 -1
  97. package/dist/exitHandler.js.map +0 -1
  98. package/dist/getDeviceId.d.ts +0 -26
  99. package/dist/getDeviceId.d.ts.map +0 -1
  100. package/dist/getDeviceId.js +0 -209
  101. package/dist/getDeviceId.js.map +0 -1
  102. package/dist/getEnvironment.d.ts.map +0 -1
  103. package/dist/getEnvironment.js.map +0 -1
  104. package/dist/getShellVersion.d.ts.map +0 -1
  105. package/dist/getShellVersion.js.map +0 -1
  106. package/dist/index.d.ts +0 -8
  107. package/dist/index.d.ts.map +0 -1
  108. package/dist/index.js +0 -6
  109. package/dist/index.js.map +0 -1
  110. package/dist/loadVwr.d.ts.map +0 -1
  111. package/dist/loadVwr.js.map +0 -1
  112. package/dist/logger.d.ts +0 -12
  113. package/dist/logger.d.ts.map +0 -1
  114. package/dist/logger.js.map +0 -1
  115. package/dist/polyfills.d.ts.map +0 -1
  116. package/dist/polyfills.js.map +0 -1
  117. package/dist/test-setup.js.map +0 -1
  118. package/dist/types.d.ts +0 -91
  119. package/dist/types.d.ts.map +0 -1
  120. package/dist/types.js +0 -5
  121. package/dist/types.js.map +0 -1
  122. package/dist/vwrConfig.d.ts.map +0 -1
  123. package/dist/vwrConfig.js.map +0 -1
  124. package/src/datadog.ts +0 -55
  125. package/src/envDefaults.ts +0 -93
  126. package/src/getDeviceId.test.ts +0 -298
  127. package/src/getDeviceId.ts +0 -224
  128. package/src/types.ts +0 -92
  129. package/src/vwrConfig.test.ts +0 -386
  130. package/src/vwrConfig.ts +0 -374
  131. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.d.ts +0 -0
  132. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-logs.js +0 -0
  133. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.d.ts +0 -0
  134. /package/dist/{__mocks__ → vwr-loader/src/__mocks__}/@datadog/browser-rum.js +0 -0
  135. /package/dist/{amplitudeFlagFetcher.d.ts → vwr-loader/src/amplitudeFlagFetcher.d.ts} +0 -0
  136. /package/dist/{amplitudeFlagFetcher.js → vwr-loader/src/amplitudeFlagFetcher.js} +0 -0
  137. /package/dist/{errors → vwr-loader/src/errors}/InitializationError.d.ts +0 -0
  138. /package/dist/{errors → vwr-loader/src/errors}/InitializationError.js +0 -0
  139. /package/dist/{errors → vwr-loader/src/errors}/ensureError.d.ts +0 -0
  140. /package/dist/{errors → vwr-loader/src/errors}/ensureError.js +0 -0
  141. /package/dist/{errors → vwr-loader/src/errors}/index.d.ts +0 -0
  142. /package/dist/{errors → vwr-loader/src/errors}/index.js +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,92 +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
- [key: string]: any
44
- }
45
- [key: string]: any
46
- }
47
- webapis?: {
48
- productinfo?: {
49
- getDuid: () => string
50
- }
51
- }
52
- webOS?: {
53
- service?: {
54
- request: (
55
- uri: string,
56
- options: {
57
- method?: string
58
- parameters?: Record<string, unknown>
59
- onSuccess?: (response: LGDeviceIdResponse) => void
60
- onFailure?: (error: { errorText?: string }) => void
61
- subscribe?: boolean
62
- }
63
- ) => {
64
- cancel: () => void
65
- }
66
- }
67
- fetchAppInfo?: (
68
- callback: (appInfo?: { version?: string }) => void
69
- ) => void
70
- platformBack?: () => void
71
- }
72
- tizen?: {
73
- application?: {
74
- getAppInfo: () => { version?: string }
75
- getCurrentApplication: () => {
76
- exit: () => void
77
- }
78
- }
79
- }
80
- }
81
- }
82
-
83
- /**
84
- * LG Luna service response for device ID
85
- */
86
- export interface LGDeviceIdResponse {
87
- idList?: Array<{
88
- idType?: string
89
- idValue?: string
90
- }>
91
- returnValue?: boolean
92
- }