store __uv$ variables as typed consts

This commit is contained in:
David Reed 2022-12-03 16:27:58 -05:00
parent 1fd66c00fa
commit 06580d90b7
No known key found for this signature in database
GPG key ID: 2211691D8A1EE72F

View file

@ -1,5 +1,3 @@
/*global __uv$config,__uv$bareData,__uv$bareURL,__uv$cookies*/
/** /**
* @type {import('./uv').UltravioletCtor} * @type {import('./uv').UltravioletCtor}
*/ */
@ -10,6 +8,33 @@ const Ultraviolet = globalThis.Ultraviolet;
*/ */
const UVClient = globalThis.UVClient; const UVClient = globalThis.UVClient;
/**
* @type {import('./uv').UVConfig}
*/
const __uv$config = globalThis.__uv$config;
/**
* @type {import('@tomphttp/bare-client').BareManifest}
*/
const __uv$bareData = globalThis.__uv$bareData;
/**
* @type {string}
*/
const __uv$bareURL = globalThis.__uv$bareURL;
/**
* @type {string}
*/
const __uv$cookies = globalThis.__uv$cookies;
if (
typeof __uv$bareData !== 'object' ||
typeof __uv$bareURL !== 'string' ||
typeof __uv$cookies !== 'string'
)
throw new TypeError('Unable to load global UV data');
if (!self.__uv) __uvHook(self); if (!self.__uv) __uvHook(self);
self.__uvHook = __uvHook; self.__uvHook = __uvHook;
@ -68,13 +93,8 @@ function __uvHook(window) {
} }
); );
try { let cookieStr = __uv$cookies;
__uv.bareData = __uv$bareData;
__uv.cookieStr = __uv$cookies;
__uv.bareURL = __uv$bareURL;
} catch (err) {
throw new Error('Unable to load global UV data');
}
__uv.meta.url = __uv.location; __uv.meta.url = __uv.location;
__uv.domain = __uv.meta.url.host; __uv.domain = __uv.meta.url.host;
__uv.blobUrls = new window.Map(); __uv.blobUrls = new window.Map();
@ -84,7 +104,7 @@ function __uvHook(window) {
__uv.sessionStorageObj = {}; __uv.sessionStorageObj = {};
// websockets // websockets
const bareClient = new Ultraviolet.BareClient(__uv.bareURL, __uv.bareData); const bareClient = new Ultraviolet.BareClient(__uv$bareURL, __uv$bareData);
if (__uv.location.href === 'about:srcdoc') { if (__uv.location.href === 'about:srcdoc') {
__uv.meta = window.parent.__uv.meta; __uv.meta = window.parent.__uv.meta;
@ -271,7 +291,7 @@ function __uvHook(window) {
// Cookies // Cookies
client.document.on('getCookie', (event) => { client.document.on('getCookie', (event) => {
event.data.value = __uv.cookieStr; event.data.value = cookieStr;
}); });
client.document.on('setCookie', (event) => { client.document.on('setCookie', (event) => {
@ -280,11 +300,7 @@ function __uvHook(window) {
).then(() => { ).then(() => {
__uv.cookie.db().then((db) => { __uv.cookie.db().then((db) => {
__uv.cookie.getCookies(db).then((cookies) => { __uv.cookie.getCookies(db).then((cookies) => {
__uv.cookieStr = __uv.cookie.serialize( cookieStr = __uv.cookie.serialize(cookies, __uv.meta, true);
cookies,
__uv.meta,
true
);
}); });
}); });
}); });
@ -294,8 +310,8 @@ function __uvHook(window) {
if (!cookie.domain) cookie.domain = __uv.meta.url.hostname; if (!cookie.domain) cookie.domain = __uv.meta.url.hostname;
if (__uv.cookie.validateCookie(cookie, __uv.meta, true)) { if (__uv.cookie.validateCookie(cookie, __uv.meta, true)) {
if (__uv.cookieStr.length) __uv.cookieStr += '; '; if (cookieStr.length) cookieStr += '; ';
__uv.cookieStr += `${cookie.name}=${cookie.value}`; cookieStr += `${cookie.name}=${cookie.value}`;
} }
event.respondWith(event.data.value); event.respondWith(event.data.value);
@ -539,9 +555,9 @@ function __uvHook(window) {
__uv.bundleScript, __uv.bundleScript,
__uv.clientScript, __uv.clientScript,
__uv.configScript, __uv.configScript,
__uv.bareURL, __uv$bareURL,
__uv.bareData, __uv$bareData,
__uv.cookieStr, cookieStr,
window.location.href window.location.href
), ),
}); });
@ -707,8 +723,6 @@ function __uvHook(window) {
if (!win.__uv) if (!win.__uv)
try { try {
win.__uv$bareData = __uv.bareData;
win.__uv$cookies = __uv.cookieStr;
__uvHook(win); __uvHook(win);
} catch (e) { } catch (e) {
console.error('catastrophic failure'); console.error('catastrophic failure');
@ -749,9 +763,9 @@ function __uvHook(window) {
__uv.bundleScript, __uv.bundleScript,
__uv.clientScript, __uv.clientScript,
__uv.configScript, __uv.configScript,
__uv.bareURL, __uv$bareURL,
__uv.bareData, __uv$bareData,
__uv.cookieStr, cookieStr,
window.location.href window.location.href
), ),
}) })
@ -861,9 +875,9 @@ function __uvHook(window) {
__uv.bundleScript, __uv.bundleScript,
__uv.clientScript, __uv.clientScript,
__uv.configScript, __uv.configScript,
__uv.bareURL, __uv$bareURL,
__uv.bareData, __uv$bareData,
__uv.cookieStr, cookieStr,
window.location.href window.location.href
), ),
}); });
@ -1035,8 +1049,8 @@ function __uvHook(window) {
requestHeaders['Origin'] = __uv.meta.url.origin; requestHeaders['Origin'] = __uv.meta.url.origin;
requestHeaders['User-Agent'] = navigator.userAgent; requestHeaders['User-Agent'] = navigator.userAgent;
if (__uv.cookieStr !== '') if (cookieStr !== '')
requestHeaders['Cookie'] = __uv.cookieStr.toString(); requestHeaders['Cookie'] = cookieStr.toString();
this.#socket = await bareClient.createWebSocket( this.#socket = await bareClient.createWebSocket(
url, url,