@volley/vwr-loader 1.6.0 → 1.7.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.
- package/dist/cli.js +51 -25
- package/dist/cli.js.map +1 -1
- package/dist/vwr/src/envDefaults.d.ts.map +1 -1
- package/dist/vwr/src/envDefaults.js +6 -39
- package/dist/vwr/src/envDefaults.js.map +1 -1
- package/dist/vwr/src/iframe.d.ts +25 -0
- package/dist/vwr/src/iframe.d.ts.map +1 -0
- package/dist/vwr/src/iframe.js +82 -0
- package/dist/vwr/src/iframe.js.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/factory.d.ts +7 -0
- package/dist/vwr/src/native/app-lifecycle/factory.d.ts.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/factory.js +68 -0
- package/dist/vwr/src/native/app-lifecycle/factory.js.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.d.ts +15 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.js +46 -0
- package/dist/vwr/src/native/app-lifecycle/rpc.js.map +1 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts +33 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.js +129 -0
- package/dist/vwr/src/native/capacitor-bridge/rpc.js.map +1 -0
- package/dist/vwr/src/native/device-info/factory.d.ts +9 -0
- package/dist/vwr/src/native/device-info/factory.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/factory.js +28 -0
- package/dist/vwr/src/native/device-info/factory.js.map +1 -0
- package/dist/vwr/src/native/device-info/firetvCollector.d.ts +9 -0
- package/dist/vwr/src/native/device-info/firetvCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/firetvCollector.js +180 -0
- package/dist/vwr/src/native/device-info/firetvCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/lgCollector.d.ts +8 -0
- package/dist/vwr/src/native/device-info/lgCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/lgCollector.js +136 -0
- package/dist/vwr/src/native/device-info/lgCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/mobileCollector.d.ts +9 -0
- package/dist/vwr/src/native/device-info/mobileCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/mobileCollector.js +47 -0
- package/dist/vwr/src/native/device-info/mobileCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/rpc.d.ts +51 -0
- package/dist/vwr/src/native/device-info/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/rpc.js +46 -0
- package/dist/vwr/src/native/device-info/rpc.js.map +1 -0
- package/dist/vwr/src/native/device-info/samsungCollector.d.ts +9 -0
- package/dist/vwr/src/native/device-info/samsungCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/samsungCollector.js +86 -0
- package/dist/vwr/src/native/device-info/samsungCollector.js.map +1 -0
- package/dist/vwr/src/native/device-info/webCollector.d.ts +4 -0
- package/dist/vwr/src/native/device-info/webCollector.d.ts.map +1 -0
- package/dist/vwr/src/native/device-info/webCollector.js +56 -0
- package/dist/vwr/src/native/device-info/webCollector.js.map +1 -0
- package/dist/vwr/src/native/native-bridge/rpc.d.ts +33 -0
- package/dist/vwr/src/native/native-bridge/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/native-bridge/rpc.js +114 -0
- package/dist/vwr/src/native/native-bridge/rpc.js.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts +14 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.d.ts.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js +187 -0
- package/dist/vwr/src/native/screensaver-prevention/LGLunaService.js.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts +27 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.d.ts.map +1 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.js +71 -0
- package/dist/vwr/src/native/screensaver-prevention/rpc.js.map +1 -0
- package/dist/vwr/src/observability.d.ts +35 -0
- package/dist/vwr/src/observability.d.ts.map +1 -0
- package/dist/vwr/src/observability.js +68 -0
- package/dist/vwr/src/observability.js.map +1 -0
- package/dist/vwr/src/shellEnvDefaults.d.ts +15 -0
- package/dist/vwr/src/shellEnvDefaults.d.ts.map +1 -0
- package/dist/vwr/src/shellEnvDefaults.js +34 -0
- package/dist/vwr/src/shellEnvDefaults.js.map +1 -0
- package/dist/vwr/src/types.d.ts +56 -0
- package/dist/vwr/src/types.d.ts.map +1 -0
- package/dist/vwr/src/types.js +27 -0
- package/dist/vwr/src/types.js.map +1 -0
- package/dist/vwr/src/urlUtils.d.ts +17 -0
- package/dist/vwr/src/urlUtils.d.ts.map +1 -0
- package/dist/vwr/src/urlUtils.js +42 -0
- package/dist/vwr/src/urlUtils.js.map +1 -0
- package/dist/vwr/src/vwrBootstrap.d.ts +26 -0
- package/dist/vwr/src/vwrBootstrap.d.ts.map +1 -0
- package/dist/vwr/src/vwrBootstrap.js +176 -0
- package/dist/vwr/src/vwrBootstrap.js.map +1 -0
- package/dist/vwr/src/vwrConfig.d.ts.map +1 -1
- package/dist/vwr/src/vwrConfig.js +11 -2
- package/dist/vwr/src/vwrConfig.js.map +1 -1
- package/{src → dist/vwr-loader}/index.html +1 -1
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts +2 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.d.ts.map +1 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js +2 -0
- package/dist/vwr-loader/src/__mocks__/invalidVwrModule.js.map +1 -0
- package/dist/vwr-loader/src/index.d.ts +3 -3
- package/dist/vwr-loader/src/index.d.ts.map +1 -1
- package/dist/vwr-loader/src/index.js +2 -2
- package/dist/vwr-loader/src/index.js.map +1 -1
- package/dist/vwr-loader/src/loadVwr.d.ts.map +1 -1
- package/dist/vwr-loader/src/loadVwr.js +28 -22
- package/dist/vwr-loader/src/loadVwr.js.map +1 -1
- package/dist/vwr-loader/src/logger.d.ts +1 -1
- package/dist/vwr-loader/src/logger.d.ts.map +1 -1
- package/dist/vwr-loader/src/logger.js +1 -1
- package/dist/vwr-loader/src/logger.js.map +1 -1
- package/dist/vwr-loader/src/main.js +1 -1
- package/dist/vwr-loader/src/main.js.map +1 -1
- package/package.json +4 -5
- package/dist/assets/profiler-BRmTNL9s.js +0 -2
- package/dist/assets/profiler-BRmTNL9s.js.map +0 -1
- package/dist/assets/startRecording-CuFdVhxx.js +0 -3
- package/dist/assets/startRecording-CuFdVhxx.js.map +0 -1
- package/dist/index.html +0 -25
- package/dist/main.js +0 -12
- package/dist/main.js.map +0 -1
- package/src/__mocks__/@datadog/browser-logs.ts +0 -35
- package/src/__mocks__/@datadog/browser-rum.ts +0 -27
- package/src/__mocks__/vwrModule.ts +0 -3
- package/src/amplitudeFlagFetcher.test.ts +0 -175
- package/src/amplitudeFlagFetcher.ts +0 -105
- package/src/errors/InitializationError.ts +0 -105
- package/src/errors/ensureError.ts +0 -6
- package/src/errors/index.ts +0 -16
- package/src/exitHandler.test.ts +0 -417
- package/src/exitHandler.ts +0 -233
- package/src/getEnvironment.test.ts +0 -417
- package/src/getEnvironment.ts +0 -144
- package/src/getShellVersion.test.ts +0 -403
- package/src/getShellVersion.ts +0 -133
- package/src/index.ts +0 -7
- package/src/loadVwr.test.ts +0 -554
- package/src/loadVwr.ts +0 -363
- package/src/logger.ts +0 -11
- package/src/main.test.ts +0 -157
- package/src/main.ts +0 -128
- package/src/polyfills.ts +0 -32
- package/src/test-setup.ts +0 -5
- package/src/vite-env.d.ts +0 -33
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LG Luna Service for screensaver prevention, used in the VWR bootstrap.
|
|
3
|
+
* Subscribes to screensaver events and responds to prevent activation.
|
|
4
|
+
*
|
|
5
|
+
* Runs in the bootstrap (file:// origin) where webOS globals are available.
|
|
6
|
+
*/
|
|
7
|
+
const LUNA_TIMEOUT_MS = 5000;
|
|
8
|
+
export class LGLunaService {
|
|
9
|
+
constructor(logger) {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
this.enabled = false;
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
const palmSystem = typeof window !== "undefined"
|
|
14
|
+
? window.PalmSystem
|
|
15
|
+
: undefined;
|
|
16
|
+
this.clientName =
|
|
17
|
+
(_b = (_a = palmSystem === null || palmSystem === void 0 ? void 0 : palmSystem.identifier) === null || _a === void 0 ? void 0 : _a.split(" ")[0]) !== null && _b !== void 0 ? _b : "com.volley.lgshell";
|
|
18
|
+
}
|
|
19
|
+
async enable() {
|
|
20
|
+
if (typeof webOS === "undefined" || !webOS.service) {
|
|
21
|
+
this.logger.error("webOS service not available, cannot enable LG screensaver prevention");
|
|
22
|
+
throw new Error("webOS service not available");
|
|
23
|
+
}
|
|
24
|
+
if (this.enabled) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
let settled = false;
|
|
29
|
+
const timeoutId = setTimeout(() => {
|
|
30
|
+
if (!settled) {
|
|
31
|
+
settled = true;
|
|
32
|
+
reject(new Error("LG screensaver enable timed out"));
|
|
33
|
+
}
|
|
34
|
+
}, LUNA_TIMEOUT_MS);
|
|
35
|
+
const settle = (fn) => {
|
|
36
|
+
if (!settled) {
|
|
37
|
+
settled = true;
|
|
38
|
+
clearTimeout(timeoutId);
|
|
39
|
+
fn();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
webOS.service.request("luna://com.webos.service.tvpower", {
|
|
44
|
+
method: "power/registerScreenSaverRequest",
|
|
45
|
+
parameters: {
|
|
46
|
+
clientName: this.clientName,
|
|
47
|
+
subscribe: true,
|
|
48
|
+
},
|
|
49
|
+
onComplete: (response) => {
|
|
50
|
+
if (!response.returnValue) {
|
|
51
|
+
this.logger.warn({ response }, "Failed to register for LG screensaver prevention");
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
onSuccess: (response) => {
|
|
55
|
+
if (typeof response.subscribed !== "undefined" &&
|
|
56
|
+
!response.subscribed) {
|
|
57
|
+
settle(() => reject(new Error("Failed to subscribe to LG screensaver events")));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (response.subscribed) {
|
|
61
|
+
this.logger.info("Successfully subscribed to LG screensaver events");
|
|
62
|
+
this.enabled = true;
|
|
63
|
+
settle(() => resolve());
|
|
64
|
+
}
|
|
65
|
+
else if (response.timestamp) {
|
|
66
|
+
this.respondToScreensaverTrigger(response.timestamp);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.enabled = true;
|
|
70
|
+
settle(() => resolve());
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
onFailure: (error) => {
|
|
74
|
+
let deregisterPromise = Promise.resolve();
|
|
75
|
+
// Error code -3 means we have already registered, so we need to disable it before registering again
|
|
76
|
+
if (Number(error.errorCode) === -3) {
|
|
77
|
+
this.logger.debug("LG screensaver prevention is already registered, deregistering");
|
|
78
|
+
deregisterPromise = this.deregister()
|
|
79
|
+
.then(() => {
|
|
80
|
+
this.logger.debug("Successfully deregistered LG screensaver prevention");
|
|
81
|
+
})
|
|
82
|
+
.catch((error) => {
|
|
83
|
+
this.logger.error({ error }, "Failed to disable LG screensaver prevention before registering again");
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
deregisterPromise.finally(() => {
|
|
87
|
+
this.enabled = false;
|
|
88
|
+
settle(() => reject(new Error(`Failed to enable LG screensaver prevention: [${error.errorCode}] ${error.errorText}`)));
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
subscribe: true,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
settle(() => reject(error));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async disable() {
|
|
100
|
+
if (!this.enabled) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
await this.deregister();
|
|
104
|
+
}
|
|
105
|
+
isEnabled() {
|
|
106
|
+
return this.enabled;
|
|
107
|
+
}
|
|
108
|
+
async deregister() {
|
|
109
|
+
if (typeof webOS === "undefined" || !webOS.service) {
|
|
110
|
+
this.logger.error("webOS service not available, cannot disable LG screensaver prevention");
|
|
111
|
+
throw new Error("webOS service not available");
|
|
112
|
+
}
|
|
113
|
+
return new Promise((resolve, reject) => {
|
|
114
|
+
let settled = false;
|
|
115
|
+
const timeoutId = setTimeout(() => {
|
|
116
|
+
if (!settled) {
|
|
117
|
+
settled = true;
|
|
118
|
+
this.enabled = false;
|
|
119
|
+
reject(new Error("LG screensaver deregister timed out"));
|
|
120
|
+
}
|
|
121
|
+
}, LUNA_TIMEOUT_MS);
|
|
122
|
+
const settle = (fn) => {
|
|
123
|
+
if (!settled) {
|
|
124
|
+
settled = true;
|
|
125
|
+
clearTimeout(timeoutId);
|
|
126
|
+
fn();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
try {
|
|
130
|
+
webOS.service.request("luna://com.webos.service.tvpower", {
|
|
131
|
+
method: "power/registerScreenSaverRequest",
|
|
132
|
+
parameters: {
|
|
133
|
+
clientName: this.clientName,
|
|
134
|
+
subscribe: false,
|
|
135
|
+
},
|
|
136
|
+
onComplete: (response) => {
|
|
137
|
+
if (!response.returnValue) {
|
|
138
|
+
this.logger.warn({ response }, "Failed to unregister from LG screensaver prevention");
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
onSuccess: (response) => {
|
|
142
|
+
if (typeof response.subscribed !== "undefined" &&
|
|
143
|
+
!response.subscribed) {
|
|
144
|
+
this.logger.info("Successfully unsubscribed from LG screensaver events");
|
|
145
|
+
this.enabled = false;
|
|
146
|
+
settle(() => resolve());
|
|
147
|
+
}
|
|
148
|
+
else if (response.subscribed) {
|
|
149
|
+
settle(() => reject(new Error("Failed to unsubscribe from LG screensaver events")));
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Treat unexpected successful response as disabled
|
|
153
|
+
this.enabled = false;
|
|
154
|
+
settle(() => resolve());
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
onFailure: (error) => {
|
|
158
|
+
settle(() => reject(new Error(`Failed to disable LG screensaver prevention: [${error.errorCode}] ${error.errorText}`)));
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
settle(() => reject(error));
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
respondToScreensaverTrigger(timestamp) {
|
|
168
|
+
if (typeof webOS === "undefined" || !webOS.service) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
webOS.service.request("luna://com.webos.service.tvpower", {
|
|
172
|
+
method: "power/responseScreenSaverRequest",
|
|
173
|
+
parameters: {
|
|
174
|
+
clientName: this.clientName,
|
|
175
|
+
ack: false, // false = prevent screensaver
|
|
176
|
+
timestamp: timestamp,
|
|
177
|
+
},
|
|
178
|
+
onSuccess: () => {
|
|
179
|
+
this.logger.info("Responded to LG screensaver trigger to prevent activation");
|
|
180
|
+
},
|
|
181
|
+
onFailure: (error) => {
|
|
182
|
+
this.logger.error({ errorCode: error.errorCode, errorText: error.errorText }, "Failed to respond to LG screensaver trigger");
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=LGLunaService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LGLunaService.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/screensaver-prevention/LGLunaService.ts"],"names":[],"mappings":"AA2BA;;;;;GAKG;AACH,MAAM,eAAe,GAAG,IAAI,CAAA;AAE5B,MAAM,OAAO,aAAa;IAKtB,YAAY,MAAe;;QAJnB,YAAO,GAAG,KAAK,CAAA;QAKnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,MAAM,UAAU,GACZ,OAAO,MAAM,KAAK,WAAW;YACzB,CAAC,CAAE,MAAc,CAAC,UAAU;YAC5B,CAAC,CAAC,SAAS,CAAA;QACnB,IAAI,CAAC,UAAU;YACX,MAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAI,oBAAoB,CAAA;IACrE,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,sEAAsE,CACzE,CAAA;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAM;QACV,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,GAAG,IAAI,CAAA;oBACd,MAAM,CACF,IAAI,KAAK,CACL,iCAAiC,CACpC,CACJ,CAAA;gBACL,CAAC;YACL,CAAC,EAAE,eAAe,CAAC,CAAA;YAEnB,MAAM,MAAM,GAAG,CAAC,EAAc,EAAE,EAAE;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,GAAG,IAAI,CAAA;oBACd,YAAY,CAAC,SAAS,CAAC,CAAA;oBACvB,EAAE,EAAE,CAAA;gBACR,CAAC;YACL,CAAC,CAAA;YAED,IAAI,CAAC;gBACD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,EAAE;oBACtD,MAAM,EAAE,kCAAkC;oBAC1C,UAAU,EAAE;wBACR,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,SAAS,EAAE,IAAI;qBAClB;oBACD,UAAU,EAAE,CAAC,QAA6B,EAAE,EAAE;wBAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;4BACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,EAAE,QAAQ,EAAE,EACZ,kDAAkD,CACrD,CAAA;wBACL,CAAC;oBACL,CAAC;oBACD,SAAS,EAAE,CAAC,QAA6B,EAAE,EAAE;wBACzC,IACI,OAAO,QAAQ,CAAC,UAAU,KAAK,WAAW;4BAC1C,CAAC,QAAQ,CAAC,UAAU,EACtB,CAAC;4BACC,MAAM,CAAC,GAAG,EAAE,CACR,MAAM,CACF,IAAI,KAAK,CACL,8CAA8C,CACjD,CACJ,CACJ,CAAA;4BACD,OAAM;wBACV,CAAC;wBAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;4BACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,kDAAkD,CACrD,CAAA;4BACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;4BACnB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC3B,CAAC;6BAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;4BAC5B,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;wBACxD,CAAC;6BAAM,CAAC;4BACJ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;4BACnB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC3B,CAAC;oBACL,CAAC;oBACD,SAAS,EAAE,CAAC,KAA0B,EAAE,EAAE;wBACtC,IAAI,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;wBACzC,oGAAoG;wBACpG,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;4BACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,gEAAgE,CACnE,CAAA;4BACD,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE;iCAChC,IAAI,CAAC,GAAG,EAAE;gCACP,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,qDAAqD,CACxD,CAAA;4BACL,CAAC,CAAC;iCACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gCACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,EAAE,KAAK,EAAE,EACT,sEAAsE,CACzE,CAAA;4BACL,CAAC,CAAC,CAAA;wBACV,CAAC;wBACD,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE;4BAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;4BACpB,MAAM,CAAC,GAAG,EAAE,CACR,MAAM,CACF,IAAI,KAAK,CACL,gDAAgD,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CACxF,CACJ,CACJ,CAAA;wBACL,CAAC,CAAC,CAAA;oBACN,CAAC;oBACD,SAAS,EAAE,IAAI;iBAClB,CAAC,CAAA;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/B,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAM;QACV,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,uEAAuE,CAC1E,CAAA;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAClD,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,GAAG,IAAI,CAAA;oBACd,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;oBACpB,MAAM,CACF,IAAI,KAAK,CACL,qCAAqC,CACxC,CACJ,CAAA;gBACL,CAAC;YACL,CAAC,EAAE,eAAe,CAAC,CAAA;YAEnB,MAAM,MAAM,GAAG,CAAC,EAAc,EAAE,EAAE;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,GAAG,IAAI,CAAA;oBACd,YAAY,CAAC,SAAS,CAAC,CAAA;oBACvB,EAAE,EAAE,CAAA;gBACR,CAAC;YACL,CAAC,CAAA;YAED,IAAI,CAAC;gBACD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,EAAE;oBACtD,MAAM,EAAE,kCAAkC;oBAC1C,UAAU,EAAE;wBACR,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,SAAS,EAAE,KAAK;qBACnB;oBACD,UAAU,EAAE,CAAC,QAA6B,EAAE,EAAE;wBAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;4BACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,EAAE,QAAQ,EAAE,EACZ,qDAAqD,CACxD,CAAA;wBACL,CAAC;oBACL,CAAC;oBACD,SAAS,EAAE,CAAC,QAA6B,EAAE,EAAE;wBACzC,IACI,OAAO,QAAQ,CAAC,UAAU,KAAK,WAAW;4BAC1C,CAAC,QAAQ,CAAC,UAAU,EACtB,CAAC;4BACC,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,sDAAsD,CACzD,CAAA;4BACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;4BACpB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC3B,CAAC;6BAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;4BAC7B,MAAM,CAAC,GAAG,EAAE,CACR,MAAM,CACF,IAAI,KAAK,CACL,kDAAkD,CACrD,CACJ,CACJ,CAAA;wBACL,CAAC;6BAAM,CAAC;4BACJ,mDAAmD;4BACnD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;4BACpB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC3B,CAAC;oBACL,CAAC;oBACD,SAAS,EAAE,CAAC,KAA0B,EAAE,EAAE;wBACtC,MAAM,CAAC,GAAG,EAAE,CACR,MAAM,CACF,IAAI,KAAK,CACL,iDAAiD,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CACzF,CACJ,CACJ,CAAA;oBACL,CAAC;iBACJ,CAAC,CAAA;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/B,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,2BAA2B,CAAC,SAAiB;QACjD,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,OAAM;QACV,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kCAAkC,EAAE;YACtD,MAAM,EAAE,kCAAkC;YAC1C,UAAU,EAAE;gBACR,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,GAAG,EAAE,KAAK,EAAE,8BAA8B;gBAC1C,SAAS,EAAE,SAAS;aACvB;YACD,SAAS,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,2DAA2D,CAC9D,CAAA;YACL,CAAC;YACD,SAAS,EAAE,CAAC,KAA0B,EAAE,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAC1D,6CAA6C,CAChD,CAAA;YACL,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { BrowserIpcConnection } from "@volley/browser-ipc";
|
|
2
|
+
import type { ILogger } from "@volley/logger";
|
|
3
|
+
import type { INativeScreensaverService } from "@volley/platform-sdk/lib";
|
|
4
|
+
/**
|
|
5
|
+
* RPC server that runs in the bootstrap where native screensaver calls are available.
|
|
6
|
+
* Wraps a native screensaver service (LG Luna, Samsung Tizen, etc.) and exposes enable/disable via RPC.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ScreensaverRpcServer {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(screensaverService: INativeScreensaverService, ipcConnection: BrowserIpcConnection, logger: ILogger);
|
|
11
|
+
destroy(): void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* RPC client that runs in the VWR iframe. Implements INativeScreensaverService
|
|
15
|
+
* so it can be injected into LGScreensaverPrevention (or future Samsung equivalent)
|
|
16
|
+
* as a drop-in replacement for the real native service.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ScreensaverRpcClient implements INativeScreensaverService {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(ipcConnection: BrowserIpcConnection, logger: ILogger);
|
|
21
|
+
init(): Promise<void>;
|
|
22
|
+
enable(): Promise<void>;
|
|
23
|
+
disable(): Promise<void>;
|
|
24
|
+
isEnabled(): boolean;
|
|
25
|
+
destroy(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../../../vwr/src/native/screensaver-prevention/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAO/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAMzE;;;GAGG;AACH,qBAAa,oBAAoB;;gBAIzB,kBAAkB,EAAE,yBAAyB,EAC7C,aAAa,EAAE,oBAAoB,EACnC,MAAM,EAAE,OAAO;IAwBZ,OAAO,IAAI,IAAI;CAGzB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,yBAAyB;;gBAMtD,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO;IAYnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,SAAS,IAAI,OAAO;IAId,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGxC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _ScreensaverRpcServer_rpcServer, _ScreensaverRpcClient_rpcClient, _ScreensaverRpcClient_enable, _ScreensaverRpcClient_disable, _ScreensaverRpcClient_enabled;
|
|
13
|
+
import { BrowserRpcClient, BrowserRpcServer, UnaryRpcClientMethod, UnaryRpcServerMethod, } from "@volley/browser-ipc";
|
|
14
|
+
const SCREENSAVER_API = "Native::Screensaver";
|
|
15
|
+
const ENABLE_METHOD = "enable";
|
|
16
|
+
const DISABLE_METHOD = "disable";
|
|
17
|
+
/**
|
|
18
|
+
* RPC server that runs in the bootstrap where native screensaver calls are available.
|
|
19
|
+
* Wraps a native screensaver service (LG Luna, Samsung Tizen, etc.) and exposes enable/disable via RPC.
|
|
20
|
+
*/
|
|
21
|
+
export class ScreensaverRpcServer {
|
|
22
|
+
constructor(screensaverService, ipcConnection, logger) {
|
|
23
|
+
_ScreensaverRpcServer_rpcServer.set(this, void 0);
|
|
24
|
+
const enableMethod = new UnaryRpcServerMethod(ENABLE_METHOD, async () => {
|
|
25
|
+
await screensaverService.enable();
|
|
26
|
+
});
|
|
27
|
+
const disableMethod = new UnaryRpcServerMethod(DISABLE_METHOD, async () => {
|
|
28
|
+
await screensaverService.disable();
|
|
29
|
+
});
|
|
30
|
+
__classPrivateFieldSet(this, _ScreensaverRpcServer_rpcServer, new BrowserRpcServer(SCREENSAVER_API, new Set([enableMethod, disableMethod]), ipcConnection, logger), "f");
|
|
31
|
+
}
|
|
32
|
+
destroy() {
|
|
33
|
+
__classPrivateFieldGet(this, _ScreensaverRpcServer_rpcServer, "f").destroy();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
_ScreensaverRpcServer_rpcServer = new WeakMap();
|
|
37
|
+
/**
|
|
38
|
+
* RPC client that runs in the VWR iframe. Implements INativeScreensaverService
|
|
39
|
+
* so it can be injected into LGScreensaverPrevention (or future Samsung equivalent)
|
|
40
|
+
* as a drop-in replacement for the real native service.
|
|
41
|
+
*/
|
|
42
|
+
export class ScreensaverRpcClient {
|
|
43
|
+
constructor(ipcConnection, logger) {
|
|
44
|
+
_ScreensaverRpcClient_rpcClient.set(this, void 0);
|
|
45
|
+
_ScreensaverRpcClient_enable.set(this, void 0);
|
|
46
|
+
_ScreensaverRpcClient_disable.set(this, void 0);
|
|
47
|
+
_ScreensaverRpcClient_enabled.set(this, false);
|
|
48
|
+
__classPrivateFieldSet(this, _ScreensaverRpcClient_enable, new UnaryRpcClientMethod(ENABLE_METHOD), "f");
|
|
49
|
+
__classPrivateFieldSet(this, _ScreensaverRpcClient_disable, new UnaryRpcClientMethod(DISABLE_METHOD), "f");
|
|
50
|
+
__classPrivateFieldSet(this, _ScreensaverRpcClient_rpcClient, new BrowserRpcClient(SCREENSAVER_API, new Set([__classPrivateFieldGet(this, _ScreensaverRpcClient_enable, "f"), __classPrivateFieldGet(this, _ScreensaverRpcClient_disable, "f")]), ipcConnection, logger), "f");
|
|
51
|
+
}
|
|
52
|
+
async init() {
|
|
53
|
+
await __classPrivateFieldGet(this, _ScreensaverRpcClient_rpcClient, "f").connect();
|
|
54
|
+
}
|
|
55
|
+
async enable() {
|
|
56
|
+
await __classPrivateFieldGet(this, _ScreensaverRpcClient_enable, "f").call();
|
|
57
|
+
__classPrivateFieldSet(this, _ScreensaverRpcClient_enabled, true, "f");
|
|
58
|
+
}
|
|
59
|
+
async disable() {
|
|
60
|
+
await __classPrivateFieldGet(this, _ScreensaverRpcClient_disable, "f").call();
|
|
61
|
+
__classPrivateFieldSet(this, _ScreensaverRpcClient_enabled, false, "f");
|
|
62
|
+
}
|
|
63
|
+
isEnabled() {
|
|
64
|
+
return __classPrivateFieldGet(this, _ScreensaverRpcClient_enabled, "f");
|
|
65
|
+
}
|
|
66
|
+
async destroy() {
|
|
67
|
+
await __classPrivateFieldGet(this, _ScreensaverRpcClient_rpcClient, "f").destroy();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
_ScreensaverRpcClient_rpcClient = new WeakMap(), _ScreensaverRpcClient_enable = new WeakMap(), _ScreensaverRpcClient_disable = new WeakMap(), _ScreensaverRpcClient_enabled = new WeakMap();
|
|
71
|
+
//# sourceMappingURL=rpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../../../vwr/src/native/screensaver-prevention/rpc.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,qBAAqB,CAAA;AAI5B,MAAM,eAAe,GAAG,qBAAqB,CAAA;AAC7C,MAAM,aAAa,GAAG,QAAQ,CAAA;AAC9B,MAAM,cAAc,GAAG,SAAS,CAAA;AAEhC;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAG7B,YACI,kBAA6C,EAC7C,aAAmC,EACnC,MAAe;QALnB,kDAA4B;QAOxB,MAAM,YAAY,GAAG,IAAI,oBAAoB,CACzC,aAAa,EACb,KAAK,IAAI,EAAE;YACP,MAAM,kBAAkB,CAAC,MAAM,EAAE,CAAA;QACrC,CAAC,CACJ,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAC1C,cAAc,EACd,KAAK,IAAI,EAAE;YACP,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAA;QACtC,CAAC,CACJ,CAAA;QAED,uBAAA,IAAI,mCAAc,IAAI,gBAAgB,CAClC,eAAe,EACf,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,EACtC,aAAa,EACb,MAAM,CACT,MAAA,CAAA;IACL,CAAC;IAEM,OAAO;QACV,uBAAA,IAAI,uCAAW,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;CACJ;;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IAM7B,YAAY,aAAmC,EAAE,MAAe;QALhE,kDAA4B;QAC5B,+CAAyC;QACzC,gDAA0C;QAC1C,wCAAW,KAAK,EAAA;QAGZ,uBAAA,IAAI,gCAAW,IAAI,oBAAoB,CAAa,aAAa,CAAC,MAAA,CAAA;QAClE,uBAAA,IAAI,iCAAY,IAAI,oBAAoB,CAAa,cAAc,CAAC,MAAA,CAAA;QAEpE,uBAAA,IAAI,mCAAc,IAAI,gBAAgB,CAClC,eAAe,EACf,IAAI,GAAG,CAAC,CAAC,uBAAA,IAAI,oCAAQ,EAAE,uBAAA,IAAI,qCAAS,CAAC,CAAC,EACtC,aAAa,EACb,MAAM,CACT,MAAA,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,MAAM,uBAAA,IAAI,uCAAW,CAAC,OAAO,EAAE,CAAA;IACnC,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,MAAM,uBAAA,IAAI,oCAAQ,CAAC,IAAI,EAAE,CAAA;QACzB,uBAAA,IAAI,iCAAY,IAAI,MAAA,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,MAAM,uBAAA,IAAI,qCAAS,CAAC,IAAI,EAAE,CAAA;QAC1B,uBAAA,IAAI,iCAAY,KAAK,MAAA,CAAA;IACzB,CAAC;IAEM,SAAS;QACZ,OAAO,uBAAA,IAAI,qCAAS,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,MAAM,uBAAA,IAAI,uCAAW,CAAC,OAAO,EAAE,CAAA;IACnC,CAAC;CACJ"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { DatadogRum } from "@datadog/browser-rum";
|
|
2
|
+
import type { ILogger } from "@volley/logger";
|
|
3
|
+
/**
|
|
4
|
+
* Initialize VWR observability from config passed by vwr-loader.
|
|
5
|
+
*/
|
|
6
|
+
export declare function initObservability(logger: ILogger, rum?: DatadogRum): void;
|
|
7
|
+
/**
|
|
8
|
+
* Get the VWR logger instance.
|
|
9
|
+
* Throws if called before initObservability.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getLogger(): ILogger;
|
|
12
|
+
/**
|
|
13
|
+
* Get the RUM client instance (may be null).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getRum(): DatadogRum | null;
|
|
16
|
+
/**
|
|
17
|
+
* Track a VWR RUM action with proper naming convention.
|
|
18
|
+
* Actions are prefixed with "vwr:" for easy filtering in Datadog.
|
|
19
|
+
*/
|
|
20
|
+
export declare function trackAction(action: string, context?: Record<string, unknown>): void;
|
|
21
|
+
/**
|
|
22
|
+
* Track a VWR error in RUM.
|
|
23
|
+
*/
|
|
24
|
+
export declare function trackError(error: Error | string, context?: Record<string, unknown>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Track a VWR performance timing metric.
|
|
27
|
+
*/
|
|
28
|
+
export declare function trackTiming(name: string, timestamp: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Record a timing mark at the current moment.
|
|
31
|
+
* Uses RUM's addTiming without a timestamp parameter, which records
|
|
32
|
+
* the time from RUM view start (essentially page load) to now.
|
|
33
|
+
*/
|
|
34
|
+
export declare function trackTimingMark(name: string): void;
|
|
35
|
+
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../../vwr/src/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAK7C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CASzE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,UAAU,GAAG,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,UAAU,CACtB,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAElD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
let vwrLogger = null;
|
|
2
|
+
let vwrRum = null;
|
|
3
|
+
/**
|
|
4
|
+
* Initialize VWR observability from config passed by vwr-loader.
|
|
5
|
+
*/
|
|
6
|
+
export function initObservability(logger, rum) {
|
|
7
|
+
vwrLogger = logger;
|
|
8
|
+
vwrRum = rum !== null && rum !== void 0 ? rum : null;
|
|
9
|
+
// Set VWR context in RUM if available
|
|
10
|
+
vwrRum === null || vwrRum === void 0 ? void 0 : vwrRum.setGlobalContextProperty("vwr", {
|
|
11
|
+
initialized: true,
|
|
12
|
+
timestamp: Date.now(),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get the VWR logger instance.
|
|
17
|
+
* Throws if called before initObservability.
|
|
18
|
+
*/
|
|
19
|
+
export function getLogger() {
|
|
20
|
+
if (!vwrLogger) {
|
|
21
|
+
throw new Error("[VWR] Logger not initialized. Call initObservability first.");
|
|
22
|
+
}
|
|
23
|
+
return vwrLogger;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the RUM client instance (may be null).
|
|
27
|
+
*/
|
|
28
|
+
export function getRum() {
|
|
29
|
+
return vwrRum;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Track a VWR RUM action with proper naming convention.
|
|
33
|
+
* Actions are prefixed with "vwr:" for easy filtering in Datadog.
|
|
34
|
+
*/
|
|
35
|
+
export function trackAction(action, context) {
|
|
36
|
+
vwrRum === null || vwrRum === void 0 ? void 0 : vwrRum.addAction(`vwr:${action}`, Object.assign(Object.assign({}, context), { service: "vwr" }));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Track a VWR error in RUM.
|
|
40
|
+
*/
|
|
41
|
+
export function trackError(error, context) {
|
|
42
|
+
const errorObj = typeof error === "string" ? new Error(error) : error;
|
|
43
|
+
// Serialize context to ensure Error objects are converted to strings
|
|
44
|
+
const serializedContext = context ? Object.assign({}, context) : {};
|
|
45
|
+
if (serializedContext.cause instanceof Error) {
|
|
46
|
+
serializedContext.cause = serializedContext.cause.message;
|
|
47
|
+
}
|
|
48
|
+
vwrLogger === null || vwrLogger === void 0 ? void 0 : vwrLogger.error(Object.assign({ error: errorObj }, serializedContext), errorObj.message);
|
|
49
|
+
// vwrRum?.addError(errorObj, {
|
|
50
|
+
// ...serializedContext,
|
|
51
|
+
// service: "vwr",
|
|
52
|
+
// })
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Track a VWR performance timing metric.
|
|
56
|
+
*/
|
|
57
|
+
export function trackTiming(name, timestamp) {
|
|
58
|
+
vwrRum === null || vwrRum === void 0 ? void 0 : vwrRum.addTiming(name, timestamp);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Record a timing mark at the current moment.
|
|
62
|
+
* Uses RUM's addTiming without a timestamp parameter, which records
|
|
63
|
+
* the time from RUM view start (essentially page load) to now.
|
|
64
|
+
*/
|
|
65
|
+
export function trackTimingMark(name) {
|
|
66
|
+
vwrRum === null || vwrRum === void 0 ? void 0 : vwrRum.addTiming(name);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=observability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../../vwr/src/observability.ts"],"names":[],"mappings":"AAGA,IAAI,SAAS,GAAmB,IAAI,CAAA;AACpC,IAAI,MAAM,GAAsB,IAAI,CAAA;AAEpC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe,EAAE,GAAgB;IAC/D,SAAS,GAAG,MAAM,CAAA;IAClB,MAAM,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,CAAA;IAEpB,sCAAsC;IACtC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,wBAAwB,CAAC,KAAK,EAAE;QACpC,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC,CAAA;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACX,6DAA6D,CAChE,CAAA;IACL,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IAClB,OAAO,MAAM,CAAA;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACvB,MAAc,EACd,OAAiC;IAEjC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,OAAO,MAAM,EAAE,kCAC1B,OAAO,KACV,OAAO,EAAE,KAAK,IAChB,CAAA;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACtB,KAAqB,EACrB,OAAiC;IAEjC,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAErE,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,OAAO,CAAC,CAAC,mBAAM,OAAO,EAAG,CAAC,CAAC,EAAE,CAAA;IACvD,IAAI,iBAAiB,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3C,iBAAiB,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAA;IAC7D,CAAC;IAED,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,iBACV,KAAK,EAAE,QAAQ,IAAK,iBAAiB,GACvC,QAAQ,CAAC,OAAO,CACnB,CAAA;IAED,+BAA+B;IAC/B,4BAA4B;IAC5B,sBAAsB;IACtB,KAAK;AACT,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,SAAiB;IACvD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IACxC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type SharedShellEnvironment = "dev" | "staging" | "prod";
|
|
2
|
+
export interface ShellEnvConfig {
|
|
3
|
+
hubUrl: string;
|
|
4
|
+
vwrUrl: string;
|
|
5
|
+
configUrl: string;
|
|
6
|
+
configFile: string;
|
|
7
|
+
platformApiUrl: string;
|
|
8
|
+
platformAuthApiUrl: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/";
|
|
11
|
+
export declare const CONFIG_FILE_DEFAULT = "vwrConfig.json";
|
|
12
|
+
export declare const VWR_DEFAULT_VERSION = "1.0.0";
|
|
13
|
+
export declare const VWR_URL_PATH_DEFAULT = "v1/1.0.0/vwr.js";
|
|
14
|
+
export declare function getShellEnvDefaults(env: SharedShellEnvironment): ShellEnvConfig;
|
|
15
|
+
//# sourceMappingURL=shellEnvDefaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shellEnvDefaults.d.ts","sourceRoot":"","sources":["../../../../vwr/src/shellEnvDefaults.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAA;AAE/D,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,kBAAkB,kCAAkC,CAAA;AACjE,eAAO,MAAM,mBAAmB,mBAAmB,CAAA;AACnD,eAAO,MAAM,mBAAmB,UAAU,CAAA;AAC1C,eAAO,MAAM,oBAAoB,oBAAqC,CAAA;AA6BtE,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,sBAAsB,GAC5B,cAAc,CAEhB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const CONFIG_URL_DEFAULT = "https://vwr.volley.tv/config/";
|
|
2
|
+
export const CONFIG_FILE_DEFAULT = "vwrConfig.json";
|
|
3
|
+
export const VWR_DEFAULT_VERSION = "1.0.0";
|
|
4
|
+
export const VWR_URL_PATH_DEFAULT = `v1/${VWR_DEFAULT_VERSION}/vwr.js`;
|
|
5
|
+
const SHELL_ENV_DEFAULTS = {
|
|
6
|
+
dev: {
|
|
7
|
+
hubUrl: "https://game-clients-dev.volley.tv/hub",
|
|
8
|
+
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
9
|
+
configUrl: CONFIG_URL_DEFAULT,
|
|
10
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
11
|
+
platformApiUrl: "https://platform-dev.volley-services.net",
|
|
12
|
+
platformAuthApiUrl: "https://auth-dev.volley.tv",
|
|
13
|
+
},
|
|
14
|
+
staging: {
|
|
15
|
+
hubUrl: "https://game-clients-staging.volley.tv/hub",
|
|
16
|
+
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
17
|
+
configUrl: CONFIG_URL_DEFAULT,
|
|
18
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
19
|
+
platformApiUrl: "https://platform-staging.volley-services.net",
|
|
20
|
+
platformAuthApiUrl: "https://auth-staging.volley.tv",
|
|
21
|
+
},
|
|
22
|
+
prod: {
|
|
23
|
+
hubUrl: "https://game-clients.volley.tv/hub",
|
|
24
|
+
vwrUrl: `https://vwr.volley.tv/${VWR_URL_PATH_DEFAULT}`,
|
|
25
|
+
configUrl: CONFIG_URL_DEFAULT,
|
|
26
|
+
configFile: CONFIG_FILE_DEFAULT,
|
|
27
|
+
platformApiUrl: "https://platform.volley-services.net",
|
|
28
|
+
platformAuthApiUrl: "https://auth.volley.tv",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export function getShellEnvDefaults(env) {
|
|
32
|
+
return SHELL_ENV_DEFAULTS[env];
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=shellEnvDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shellEnvDefaults.js","sourceRoot":"","sources":["../../../../vwr/src/shellEnvDefaults.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,kBAAkB,GAAG,+BAA+B,CAAA;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAA;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,SAAS,CAAA;AAEtE,MAAM,kBAAkB,GAAmD;IACvE,GAAG,EAAE;QACD,MAAM,EAAE,wCAAwC;QAChD,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;QACvD,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,0CAA0C;QAC1D,kBAAkB,EAAE,4BAA4B;KACnD;IACD,OAAO,EAAE;QACL,MAAM,EAAE,4CAA4C;QACpD,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;QACvD,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,8CAA8C;QAC9D,kBAAkB,EAAE,gCAAgC;KACvD;IACD,IAAI,EAAE;QACF,MAAM,EAAE,oCAAoC;QAC5C,MAAM,EAAE,yBAAyB,oBAAoB,EAAE;QACvD,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,sCAAsC;QACtD,kBAAkB,EAAE,wBAAwB;KAC/C;CACJ,CAAA;AAED,MAAM,UAAU,mBAAmB,CAC/B,GAA2B;IAE3B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { EventMap } from "@volley/platform-sdk/lib";
|
|
2
|
+
export type VwrEventType = keyof EventMap;
|
|
3
|
+
export interface VwrMessage {
|
|
4
|
+
source: string;
|
|
5
|
+
type: VwrEventType;
|
|
6
|
+
args: unknown[];
|
|
7
|
+
}
|
|
8
|
+
export declare function isTrustedSource(source: string): boolean;
|
|
9
|
+
export declare function isVwrMessage(data: unknown): data is VwrMessage;
|
|
10
|
+
/**
|
|
11
|
+
* Shared type definitions for vwr-loader platform APIs
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Extended window interface for mobile app context.
|
|
15
|
+
* Matches the types from @volley/sdk ExtendedWindow.ts
|
|
16
|
+
*/
|
|
17
|
+
export interface MobileExtendedWindow extends Window {
|
|
18
|
+
iosAppContext?: {
|
|
19
|
+
appVersion: string;
|
|
20
|
+
environment?: string;
|
|
21
|
+
phoneDeviceId?: string;
|
|
22
|
+
};
|
|
23
|
+
androidAppContext?: {
|
|
24
|
+
appVersion: string;
|
|
25
|
+
environment?: string;
|
|
26
|
+
phoneDeviceId?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Global type declarations for platform APIs
|
|
31
|
+
*/
|
|
32
|
+
declare global {
|
|
33
|
+
interface Window {
|
|
34
|
+
Capacitor?: any | {
|
|
35
|
+
Plugins?: {
|
|
36
|
+
DeviceInfo?: {
|
|
37
|
+
getDeviceInfo(): Promise<{
|
|
38
|
+
versionName?: string;
|
|
39
|
+
[key: string]: any;
|
|
40
|
+
}>;
|
|
41
|
+
getAndroidId(): Promise<{
|
|
42
|
+
androidId?: string;
|
|
43
|
+
[key: string]: any;
|
|
44
|
+
}>;
|
|
45
|
+
getNativeShellAppEnvironment(): Promise<{
|
|
46
|
+
environment?: string;
|
|
47
|
+
}>;
|
|
48
|
+
[key: string]: any;
|
|
49
|
+
};
|
|
50
|
+
[key: string]: any;
|
|
51
|
+
};
|
|
52
|
+
[key: string]: any;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../vwr/src/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAExD,MAAM,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAA;AAEzC,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,OAAO,EAAE,CAAA;CAClB;AAcD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,UAAU,CAW9D;AAED;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,MAAM;IAChD,aAAa,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,iBAAiB,CAAC,EAAE;QAChB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;CACJ;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,CAAC,EACJ,GAAG,GACH;YACI,OAAO,CAAC,EAAE;gBACN,UAAU,CAAC,EAAE;oBACT,aAAa,IAAI,OAAO,CAAC;wBACrB,WAAW,CAAC,EAAE,MAAM,CAAA;wBACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;qBACrB,CAAC,CAAA;oBACF,YAAY,IAAI,OAAO,CAAC;wBACpB,SAAS,CAAC,EAAE,MAAM,CAAA;wBAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;qBACrB,CAAC,CAAA;oBACF,4BAA4B,IAAI,OAAO,CAAC;wBACpC,WAAW,CAAC,EAAE,MAAM,CAAA;qBACvB,CAAC,CAAA;oBACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;iBACrB,CAAA;gBACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;aACrB,CAAA;YACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SACrB,CAAA;KACV;CACJ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const EVENT_SOURCE_PREFIX = "platform-sdk-iframe";
|
|
2
|
+
const HUB_EVENT_SOURCE = "hub";
|
|
3
|
+
const VWR_EVENT_SOURCE = "vwr";
|
|
4
|
+
const VALID_EVENT_TYPES = [
|
|
5
|
+
"vwr:launchGame",
|
|
6
|
+
"vwr:launchGameTimeout",
|
|
7
|
+
"vwr:initResult",
|
|
8
|
+
"ready",
|
|
9
|
+
"error",
|
|
10
|
+
"close",
|
|
11
|
+
];
|
|
12
|
+
export function isTrustedSource(source) {
|
|
13
|
+
return (source === HUB_EVENT_SOURCE ||
|
|
14
|
+
source === EVENT_SOURCE_PREFIX ||
|
|
15
|
+
source === VWR_EVENT_SOURCE ||
|
|
16
|
+
source.startsWith(`${EVENT_SOURCE_PREFIX}-`));
|
|
17
|
+
}
|
|
18
|
+
export function isVwrMessage(data) {
|
|
19
|
+
if (typeof data !== "object" || data === null)
|
|
20
|
+
return false;
|
|
21
|
+
const msg = data;
|
|
22
|
+
return (typeof msg.source === "string" &&
|
|
23
|
+
typeof msg.type === "string" &&
|
|
24
|
+
VALID_EVENT_TYPES.includes(msg.type) &&
|
|
25
|
+
Array.isArray(msg.args));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../vwr/src/types.ts"],"names":[],"mappings":"AAWA,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,KAAK,CAAA;AAC9B,MAAM,gBAAgB,GAAG,KAAK,CAAA;AAC9B,MAAM,iBAAiB,GAAmB;IACtC,gBAAgB;IAChB,uBAAuB;IACvB,gBAAgB;IAChB,OAAO;IACP,OAAO;IACP,OAAO;CACV,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,OAAO,CACH,MAAM,KAAK,gBAAgB;QAC3B,MAAM,KAAK,mBAAmB;QAC9B,MAAM,KAAK,gBAAgB;QAC3B,MAAM,CAAC,UAAU,CAAC,GAAG,mBAAmB,GAAG,CAAC,CAC/C,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAE3D,MAAM,GAAG,GAAG,IAA+B,CAAA;IAE3C,OAAO,CACH,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAoB,CAAC;QACpD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1B,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract origin (protocol + hostname + port) from a URL string.
|
|
3
|
+
* Returns null if URL is invalid.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getUrlOrigin(url: string): string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Check if a URL's origin matches any trusted origin.
|
|
8
|
+
* Compares full origins (protocol + hostname + port) for security.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isUrlTrusted(url: string, trustedOrigins: Set<string> | string[]): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Append a query parameter to a URL, preserving existing params.
|
|
13
|
+
* Overwrites the param if it already exists.
|
|
14
|
+
* Returns the original URL if it cannot be parsed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function appendQueryParam(url: string, key: string, value: string): string;
|
|
17
|
+
//# sourceMappingURL=urlUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../../../../vwr/src/urlUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GACvC,OAAO,CAQT;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACd,MAAM,CAQR"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract origin (protocol + hostname + port) from a URL string.
|
|
3
|
+
* Returns null if URL is invalid.
|
|
4
|
+
*/
|
|
5
|
+
export function getUrlOrigin(url) {
|
|
6
|
+
try {
|
|
7
|
+
return new URL(url).origin;
|
|
8
|
+
}
|
|
9
|
+
catch (_a) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if a URL's origin matches any trusted origin.
|
|
15
|
+
* Compares full origins (protocol + hostname + port) for security.
|
|
16
|
+
*/
|
|
17
|
+
export function isUrlTrusted(url, trustedOrigins) {
|
|
18
|
+
const origin = getUrlOrigin(url);
|
|
19
|
+
if (!origin)
|
|
20
|
+
return false;
|
|
21
|
+
for (const trusted of trustedOrigins) {
|
|
22
|
+
if (origin === trusted)
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Append a query parameter to a URL, preserving existing params.
|
|
29
|
+
* Overwrites the param if it already exists.
|
|
30
|
+
* Returns the original URL if it cannot be parsed.
|
|
31
|
+
*/
|
|
32
|
+
export function appendQueryParam(url, key, value) {
|
|
33
|
+
try {
|
|
34
|
+
const urlObj = new URL(url);
|
|
35
|
+
urlObj.searchParams.set(key, value);
|
|
36
|
+
return urlObj.toString();
|
|
37
|
+
}
|
|
38
|
+
catch (_a) {
|
|
39
|
+
return url;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=urlUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlUtils.js","sourceRoot":"","sources":["../../../../vwr/src/urlUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACpC,IAAI,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IAC9B,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CACxB,GAAW,EACX,cAAsC;IAEtC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEzB,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;IACvC,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC5B,GAAW,EACX,GAAW,EACX,KAAa;IAEb,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACnC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC5B,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,GAAG,CAAA;IACd,CAAC;AACL,CAAC"}
|