/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const domino = require('domino'); import {ɵBrowserDomAdapter as BrowserDomAdapter} from '@angular/platform-browser'; import {ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/common'; export function setDomTypes() { // Make all Domino types available in the global env. Object.assign(global, domino.impl); (global as any)['KeyboardEvent'] = domino.impl.Event; } /** * Parses a document string to a Document object. */ export function parseDocument(html: string, url = '/') { let window = domino.createWindow(html, url); let doc = window.document; return doc; } /** * Serializes a document to string. */ export function serializeDocument(doc: Document): string { return (doc as any).serialize(); } /** * DOM Adapter for the server platform based on https://github.com/fgnass/domino. */ export class DominoAdapter extends BrowserDomAdapter { static makeCurrent() { setDomTypes(); setRootDomAdapter(new DominoAdapter()); } readonly supportsDOMEvents = false; private static defaultDoc: Document; createHtmlDocument(): HTMLDocument { return parseDocument('