Home / File/ driver.js — svelte Source File

driver.js — svelte Source File

Architecture documentation for driver.js, a javascript file in the svelte codebase. 5 imports, 0 dependents.

File javascript 5 imports

Entity Profile

Dependency Diagram

graph LR
  5356c441_f7d0_ed2c_0521_aa99b7042df3["driver.js"]
  cbc8b341_8c50_6658_3311_b9aae7c6d268["__MAIN_DOT_SVELTE__"]
  5356c441_f7d0_ed2c_0521_aa99b7042df3 --> cbc8b341_8c50_6658_3311_b9aae7c6d268
  b3fd33a9_508c_a778_7b78_fe4bb4cc9c60["__CONFIG__"]
  5356c441_f7d0_ed2c_0521_aa99b7042df3 --> b3fd33a9_508c_a778_7b78_fe4bb4cc9c60
  d8193e0e_f38a_3f5d_633b_c34e0918fdb4["assert.js"]
  5356c441_f7d0_ed2c_0521_aa99b7042df3 --> d8193e0e_f38a_3f5d_633b_c34e0918fdb4
  0089bc1e_86a8_7436_5025_0d4d65a18542["legacy"]
  5356c441_f7d0_ed2c_0521_aa99b7042df3 --> 0089bc1e_86a8_7436_5025_0d4d65a18542
  4ead6623_c53e_ab40_5690_64903d5addf1["svelte"]
  5356c441_f7d0_ed2c_0521_aa99b7042df3 --> 4ead6623_c53e_ab40_5690_64903d5addf1
  style 5356c441_f7d0_ed2c_0521_aa99b7042df3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

// @ts-expect-error
import SvelteComponent from '__MAIN_DOT_SVELTE__';
// @ts-expect-error
import config from '__CONFIG__';
// @ts-expect-error
import * as assert from 'assert.js';
import { createClassComponent } from 'svelte/legacy';
import { flushSync } from 'svelte';

/** @param {HTMLElement} target */
export default async function (target) {
	let unhandled_rejection = false;
	/** @param {any} event */
	function unhandled_rejection_handler(event) {
		unhandled_rejection = event.reason;
	}
	window.addEventListener('unhandledrejection', unhandled_rejection_handler);

	try {
		if (config.before_test) config.before_test();

		const options = Object.assign(
			{},
			{
				component: SvelteComponent,
				target,
				props: config.props,
				intro: config.intro,
				hydrate: __HYDRATE__,
				recover: false
			},
			config.options || {}
		);

		const component = __CE_TEST__ ? null : createClassComponent(options);

		/**
		 * @param {() => boolean} fn
		 * @param {number} ms
		 */
		const wait_until = async (fn, ms = 500) => {
			const start = new Date().getTime();
			do {
				if (fn()) return;
				await new Promise((resolve) => window.setTimeout(resolve, 1));
			} while (new Date().getTime() <= start + ms);
		};

		flushSync();

		if (config.html) {
			assert.htmlEqual(target.innerHTML, config.html);
		}

		if (config.test) {
			await config.test({
				assert,
				get component() {
					if (!component) {
						throw new Error('test property `component` is not available in custom element tests');
					}
					return component;
				},
				componentCtor: SvelteComponent,
				target,
				window,
				waitUntil: wait_until
			});

			component?.$destroy();

			if (unhandled_rejection) {
				throw unhandled_rejection;
			}
		} else {
			component.$destroy();
			assert.htmlEqual(target.innerHTML, '');

			if (unhandled_rejection) {
				throw unhandled_rejection;
			}
		}

		if (config.after_test) config.after_test();
	} catch (error) {
		if (config.error) {
			assert.equal(/** @type {Error} */ (error).message, config.error);
		} else {
			throw error;
		}
	} finally {
		window.removeEventListener('unhandledrejection', unhandled_rejection_handler);
	}
}

Dependencies

  • __CONFIG__
  • __MAIN_DOT_SVELTE__
  • assert.js
  • legacy
  • svelte

Frequently Asked Questions

What does driver.js do?
driver.js is a source file in the svelte codebase, written in javascript.
What does driver.js depend on?
driver.js imports 5 module(s): __CONFIG__, __MAIN_DOT_SVELTE__, assert.js, legacy, svelte.
Where is driver.js in the architecture?
driver.js is located at packages/svelte/tests/runtime-browser/driver.js (directory: packages/svelte/tests/runtime-browser).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free