runQuery = (name, sql, opts) => {
	let initialData = undefined;
	let initialError = undefined;

	try {
		if (typeof window === 'undefined') {
			// SSR
			if (ssrHookInstalled) initialData = query(sql);
		} else {
			const ssrKey = btoa(sql);
			if (
				window.__evidence_ssr &&
				name in window.__evidence_ssr &&
				sql === window.__evidence_ssr[ssrKey].initialQuery
			) {
				initialData = window.__evidence_ssr[ssrKey].data;
				Object.defineProperty(initialData, '_evidenceColumnTypes', {
					enumerable: false,
					value: window.__evidence_ssr[ssrKey].columns
				});
			}
		}
	} catch (e) {
		initialError = new Error(`Error encountered while running query ${name}`, { cause: e });
	}

	return Query.create(sql, runner, { ...opts, initialData, initialError, id: name });
}
@param {string} name
@param {string} sql
@param {import('@evidence-dev/sdk/usql').QueryOpts} [opts]