function js(script, root, allow_reactive_declarations, parent) {
	/** @type {Program} */
	const ast = script?.content ?? {
		type: 'Program',
		sourceType: 'module',
		start: -1,
		end: -1,
		body: []
	};

	const { scope, scopes } = create_scopes(ast, root, allow_reactive_declarations, parent);

	return { ast, scope, scopes };
}
@param {AST.Script | null} script
@param {ScopeRoot} root
@param {boolean} allow_reactive_declarations
@param {Scope | null} parent
@returns {Js}