UNPKG

@stencil/core

Version:

A Compiler for Web Components and Progressive Web Apps

1,288 lines (1,217 loc) • 187 kB
/*! Stencil Testing v4.3.0 | MIT Licensed | https://stenciljs.com */ function _lazyRequire(e) { return new Proxy({}, { get(t, r) { const n = require(e); return Reflect.get(n, r); }, set(t, r, n) { const s = require(e); return Reflect.set(s, r, n); } }); } function _interopDefaultLegacy(e) { return e && "object" == typeof e && "default" in e ? e : { default: e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach((function(r) { if ("default" !== r) { var n = Object.getOwnPropertyDescriptor(e, r); Object.defineProperty(t, r, n.get ? n : { enumerable: !0, get: function() { return e[r]; } }); } })), t.default = e, Object.freeze(t); } function createCommonjsModule(e, t, r) { return e(r = { path: t, exports: {}, require: function(e, t) { return function n() { throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs"); }(null == t && r.path); } }, r.exports), r.exports; } async function startPuppeteerBrowser(e) { if (!e.flags.e2e) return null; const t = process.env, r = e.testing.browserExecutablePath ? "puppeteer-core" : "puppeteer", n = e.sys.lazyRequire.getModulePath(e.rootDir, r), s = e.sys.platformPath.join(n, "package.json"), o = e.sys.lazyRequire.require(e.rootDir, n); t.__STENCIL_PUPPETEER_MODULE__ = n; try { const r = e.sys.readFileSync(s, "utf8"), n = JSON.parse(r); t.__STENCIL_PUPPETEER_VERSION__ = major_1(n.version); } catch (e) { console.error(`An error occurred determining the version of Puppeteer installed:\n${e}`), t.__STENCIL_PUPPETEER_VERSION__ = void 0; } t.__STENCIL_BROWSER_WAIT_UNTIL = e.testing.browserWaitUntil, e.flags.devtools && (t.__STENCIL_E2E_DEVTOOLS__ = "true"), e.logger.debug(`puppeteer: ${n}`), e.logger.debug(`puppeteer headless: ${e.testing.browserHeadless}`), Array.isArray(e.testing.browserArgs) && e.logger.debug(`puppeteer args: ${e.testing.browserArgs.join(" ")}`), "boolean" == typeof e.testing.browserDevtools && e.logger.debug(`puppeteer devtools: ${e.testing.browserDevtools}`), "number" == typeof e.testing.browserSlowMo && e.logger.debug(`puppeteer slowMo: ${e.testing.browserSlowMo}`); const i = { ignoreHTTPSErrors: !0, slowMo: e.testing.browserSlowMo }; let a; if (e.testing.browserWSEndpoint) a = await o.connect({ browserWSEndpoint: e.testing.browserWSEndpoint, ...i }); else { const t = { args: e.testing.browserArgs, headless: e.testing.browserHeadless, devtools: e.testing.browserDevtools, ...i }; e.testing.browserExecutablePath && (t.executablePath = e.testing.browserExecutablePath), a = await o.launch({ ...t }); } return t.__STENCIL_BROWSER_WS_ENDPOINT__ = a.wsEndpoint(), e.logger.debug(`puppeteer browser wsEndpoint: ${t.__STENCIL_BROWSER_WS_ENDPOINT__}`), a; } function transpile(e, t = {}) { var r; t = { ...t, componentExport: null, componentMetadata: "compilerstatic", coreImportPath: isString(t.coreImportPath) ? t.coreImportPath : "@stencil/core/internal/testing", currentDirectory: t.currentDirectory || process.cwd(), module: "cjs", proxy: null, sourceMap: "inline", style: null, styleImportData: "queryparams", target: "es2015", transformAliasedImportPaths: (r = process.env.__STENCIL_TRANSPILE_PATHS__, "true" === r) }; try { const e = process.versions.node.split("."); parseInt(e[0], 10) >= 10 && (t.target = "es2017"); } catch (e) {} return stencil_js.transpileSync(e, t); } function formatDiagnostic(e) { let t = ""; return e.relFilePath && (t += e.relFilePath, "number" == typeof e.lineNumber && (t += ":" + e.lineNumber + 1, "number" == typeof e.columnNumber && (t += ":" + e.columnNumber)), t += "\n"), t += e.messageText, t; } function getCompilerOptions(e) { if (_tsCompilerOptions) return _tsCompilerOptions; if ("string" != typeof e) return null; e = normalizePath(e); const t = stencil_js.ts.findConfigFile(e, stencil_js.ts.sys.fileExists); if (!t) return null; const r = stencil_js.ts.readConfigFile(t, stencil_js.ts.sys.readFile); if (r.error) throw new Error(formatDiagnostic((e => { var t; const r = { absFilePath: void 0, code: e.code.toString(), columnNumber: void 0, header: "TypeScript", language: "typescript", level: "warn", lineNumber: void 0, lines: [], messageText: flattenDiagnosticMessageText(e, e.messageText), relFilePath: void 0, type: "typescript" }; if (1 === e.category && (r.level = "error"), e.file && "number" == typeof e.start) { r.absFilePath = e.file.fileName; const s = "string" != typeof (n = e.file.text) ? [] : (n = n.replace(/\\r/g, "\n")).split("\n"), o = e.file.getLineAndCharacterOfPosition(e.start), i = { lineIndex: o.line, lineNumber: o.line + 1, text: s[o.line], errorCharStart: o.character, errorLength: Math.max(null !== (t = e.length) && void 0 !== t ? t : 0, 1) }; if (r.lineNumber = i.lineNumber, r.columnNumber = i.errorCharStart + 1, r.lines.push(i), 0 === i.errorLength && i.errorCharStart > 0 && (i.errorLength = 1, i.errorCharStart--), i.lineIndex > 0) { const e = { lineIndex: i.lineIndex - 1, lineNumber: i.lineNumber - 1, text: s[i.lineIndex - 1], errorCharStart: -1, errorLength: -1 }; r.lines.unshift(e); } if (i.lineIndex + 1 < s.length) { const e = { lineIndex: i.lineIndex + 1, lineNumber: i.lineNumber + 1, text: s[i.lineIndex + 1], errorCharStart: -1, errorLength: -1 }; r.lines.push(e); } } var n; return r; })(r.error))); const n = stencil_js.ts.parseJsonConfigFileContent(r.config, stencil_js.ts.sys, e, void 0, t); return _tsCompilerOptions = n.options, _tsCompilerOptions; } function setScreenshotEmulateData(e, t) { const r = { userAgent: "default", viewport: { width: 800, height: 600, deviceScaleFactor: 1, isMobile: !1, hasTouch: !1, isLandscape: !1 } }; if ("string" == typeof e.device) try { const n = require(t.__STENCIL_PUPPETEER_MODULE__ + "/DeviceDescriptors")[e.device]; if (!n) return void console.error(`invalid emulate device: ${e.device}`); r.device = e.device, r.userAgent = n.userAgent, r.viewport = n.viewport; } catch (e) { return void console.error("error loading puppeteer DeviceDescriptors", e); } e.viewport && ("number" == typeof e.viewport.width && (r.viewport.width = e.viewport.width), "number" == typeof e.viewport.height && (r.viewport.height = e.viewport.height), "number" == typeof e.viewport.deviceScaleFactor && (r.viewport.deviceScaleFactor = e.viewport.deviceScaleFactor), "boolean" == typeof e.viewport.hasTouch && (r.viewport.hasTouch = e.viewport.hasTouch), "boolean" == typeof e.viewport.isLandscape && (r.viewport.isLandscape = e.viewport.isLandscape), "boolean" == typeof e.viewport.isMobile && (r.viewport.isMobile = e.viewport.isMobile), "string" == typeof e.userAgent && (r.userAgent = e.userAgent)), t.__STENCIL_EMULATE__ = JSON.stringify(r); } async function runJest(e, t) { let r = !1; try { const n = function n(e, t) { let r = e.emulate.slice(); if ("string" == typeof t.emulate) { const e = t.emulate.toLowerCase(); r = r.filter((t => "string" == typeof t.device && t.device.toLowerCase() === e || !("string" != typeof t.userAgent || !t.userAgent.toLowerCase().includes(e)))); } return r; }(e.testing, e.flags); t.__STENCIL_EMULATE_CONFIGS__ = JSON.stringify(n), t.__STENCIL_ENV__ = JSON.stringify(e.env), t.__STENCIL_TRANSPILE_PATHS__ = e.transformAliasedImportPaths ? "true" : "false", e.flags.ci || e.flags.e2e ? t.__STENCIL_DEFAULT_TIMEOUT__ = "30000" : t.__STENCIL_DEFAULT_TIMEOUT__ = "15000", e.flags.devtools && (t.__STENCIL_DEFAULT_TIMEOUT__ = "300000000"), e.logger.debug(`default timeout: ${t.__STENCIL_DEFAULT_TIMEOUT__}`); const s = function s(e) { const t = require("yargs"), r = e.flags.knownArgs.slice(); r.some((e => e.startsWith("--max-workers") || e.startsWith("--maxWorkers"))) || r.push(`--max-workers=${e.maxConcurrentWorkers}`), e.flags.devtools && r.push("--runInBand"); const n = [ ...r, ...e.flags.unknownArgs ]; e.logger.info(e.logger.magenta(`jest args: ${n.join(" ")}`)); let s = t(n).argv; if (s = { detectLeaks: !1, "detect-leaks": !1, detectOpenHandles: !1, "detect-open-handles": !1, errorOnDeprecated: !1, "error-on-deprecated": !1, listTests: !1, "list-tests": !1, maxConcurrency: 5, "max-concurrency": 5, notifyMode: "failure-change", "notify-mode": "failure-change", passWithNoTests: !1, "pass-with-no-tests": !1, runTestsByPath: !1, "run-tests-by-path": !1, testLocationInResults: !1, "test-location-in-results": !1, ...s }, s.config = function o(e) { const t = e.testing, r = require("jest-config").defaults, n = Object.keys(r), s = {}; return Object.keys(t).forEach((e => { n.includes(e) && (s[e] = t[e]); })), s.rootDir = e.rootDir, isString(t.collectCoverage) && (s.collectCoverage = t.collectCoverage), Array.isArray(t.collectCoverageFrom) && (s.collectCoverageFrom = t.collectCoverageFrom), isString(t.coverageDirectory) && (s.coverageDirectory = t.coverageDirectory), t.coverageThreshold && (s.coverageThreshold = t.coverageThreshold), isString(t.globalSetup) && (s.globalSetup = t.globalSetup), isString(t.globalTeardown) && (s.globalTeardown = t.globalTeardown), isString(t.preset) && (s.preset = t.preset), t.projects && (s.projects = t.projects), Array.isArray(t.reporters) && (s.reporters = t.reporters), isString(t.testResultsProcessor) && (s.testResultsProcessor = t.testResultsProcessor), t.transform && (s.transform = t.transform), t.verbose && (s.verbose = t.verbose), s.testRunner = "jest-jasmine2", JSON.stringify(s); }(e), "string" == typeof s.maxWorkers) try { s.maxWorkers = parseInt(s.maxWorkers, 10); } catch (e) {} return "string" == typeof s.ci && (s.ci = "true" === s.ci || "" === s.ci), s; }(e), o = function o(e, t) { const r = t.projects ? t.projects : []; return r.push(e.rootDir), r; }(e, s), {runCLI: i} = require("@jest/core"); r = !!(await i(s, o)).results.success; } catch (t) { e.logger.error(`runJest: ${t}`); } return r; } function toHaveClasses(e, t) { if (!e) throw new Error("expect toHaveClasses value is null"); if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested"); if (1 !== e.nodeType) throw new Error("expect toHaveClasses value is not an element"); const r = t.every((t => e.classList.contains(t))); return { message: () => `expected to ${r ? "not " : ""}have css classes "${t.join(" ")}", but className is "${e.className}"`, pass: r }; } function compareHtml(e, t, r) { if (null == e) throw new Error(`expect toEqualHtml() value is "${e}"`); if ("function" == typeof e.then) throw new Error("element must be a resolved value, not a promise, before it can be tested"); let n; if (1 === e.nodeType) { const t = function s(e) { return e && e.ownerDocument && e.ownerDocument.defaultView && e.ownerDocument.defaultView.__stencil_spec_options || {}; }(e); n = index_cjs.serializeNodeToHtml(e, { prettyHtml: !0, outerHtml: !0, removeHtmlComments: !1 === t.includeAnnotations, excludeTags: [ "body" ], serializeShadowRoot: r }); } else if (11 === e.nodeType) n = index_cjs.serializeNodeToHtml(e, { prettyHtml: !0, excludeTags: [ "style" ], excludeTagContent: [ "style" ], serializeShadowRoot: r }); else { if ("string" != typeof e) throw new Error("expect toEqualHtml() value should be an element, shadow root or string."); { const t = index_cjs.parseHtmlToFragment(e); n = index_cjs.serializeNodeToHtml(t, { prettyHtml: !0, serializeShadowRoot: r }); } } const o = index_cjs.parseHtmlToFragment(t), i = index_cjs.serializeNodeToHtml(o, { prettyHtml: !0, excludeTags: [ "body" ] }); return n !== i ? (expect(n).toBe(i), { message: () => "HTML does not match", pass: !1 }) : { message: () => "expect HTML to match", pass: !0 }; } async function globalMockFetch(e) { let t; if (null == e) throw new Error("missing url input for mock fetch()"); if ("string" == typeof e) t = e; else { if ("string" != typeof e.url) throw new Error("invalid url for mock fetch()"); t = e.url; } t = new URL(t, location.href).href; let r = mockedResponses.get(t); if (null == r) { const e = new URL(FETCH_DEFAULT_PATH, location.href); r = mockedResponses.get(e.href); } if (null == r) return new MockResponse404; const n = r.response.clone(); return "number" != typeof n.status && (n.status = 200), "string" != typeof n.statusText && (n.status >= 500 ? n.statusText = "Internal Server Error" : 404 === n.status ? n.statusText = "Not Found" : n.status >= 400 ? n.statusText = "Bad Request" : 302 === n.status ? n.statusText = "Found" : 301 === n.status ? n.statusText = "Moved Permanently" : n.status >= 300 ? n.statusText = "Redirection" : n.statusText = "OK"), n.ok = n.status >= 200 && n.status <= 299, "string" != typeof n.type && (n.type = "basic"), n; } function setMockedResponse(e, t, r) { if (!e) throw new Error("MockResponse required"); "string" == typeof e.url && "" !== e.url || ("string" == typeof t ? e.url = t : t && "string" == typeof t.url ? e.url = t.url : e.url = FETCH_DEFAULT_PATH); const n = new URL(e.url, location.href); e.url = n.href; const s = { response: e, reject: r }; mockedResponses.set(e.url, s); } function resetBuildConditionals(e) { Object.keys(e).forEach((t => { e[t] = !0; })), e.isDev = !0, e.isTesting = !0, e.isDebug = !1, e.lazyLoad = !0, e.member = !0, e.reflect = !0, e.scoped = !0, e.shadowDom = !0, e.slotRelocation = !0, e.asyncLoading = !0, e.svg = !0, e.updatable = !0, e.vdomAttribute = !0, e.vdomClass = !0, e.vdomFunctional = !0, e.vdomKey = !0, e.vdomPropOrAttr = !0, e.vdomRef = !0, e.vdomListener = !0, e.vdomStyle = !0, e.vdomText = !0, e.vdomXlink = !0, e.allRenderFn = !1, e.devTools = !1, e.hydrateClientSide = !1, e.hydrateServerSide = !1, e.cssAnnotations = !1, e.style = !1, e.hydratedAttribute = !1, e.hydratedClass = !0, e.invisiblePrehydration = !0, e.appendChildSlotFix = !1, e.cloneNodeFix = !1, e.hotModuleReplacement = !1, e.scriptDataOpts = !1, e.scopedSlotTextContentFix = !1, e.slotChildNodesFix = !1, e.patchPseudoShadowDom = !1; } function removeDomNodes(e) { var t, r; null != e && ((null === (t = e.childNodes) || void 0 === t ? void 0 : t.length) || e.remove(), null === (r = e.childNodes) || void 0 === r || r.forEach(removeDomNodes)); } function specifierIncluded$1(e, t) { var r, n, s, o = e.split("."), i = t.split(" "), a = i.length > 1 ? i[0] : "=", l = (i.length > 1 ? i[1] : i[0]).split("."); for (r = 0; r < 3; ++r) if ((n = parseInt(o[r] || 0, 10)) !== (s = parseInt(l[r] || 0, 10))) return "<" === a ? n < s : ">=" === a && n >= s; return ">=" === a; } function matchesRange$1(e, t) { var r, n = t.split(/ ?&& ?/); if (0 === n.length) return !1; for (r = 0; r < n.length; ++r) if (!specifierIncluded$1(e, n[r])) return !1; return !0; } function specifierIncluded(e) { var t, r, n, s = e.split(" "), o = s.length > 1 ? s[0] : "=", i = (s.length > 1 ? s[1] : s[0]).split("."); for (t = 0; t < 3; ++t) if ((r = parseInt(current[t] || 0, 10)) !== (n = parseInt(i[t] || 0, 10))) return "<" === o ? r < n : ">=" === o && r >= n; return ">=" === o; } function matchesRange(e) { var t, r = e.split(/ ?&& ?/); if (0 === r.length) return !1; for (t = 0; t < r.length; ++t) if (!specifierIncluded(r[t])) return !1; return !0; } function versionIncluded(e) { if ("boolean" == typeof e) return e; if (e && "object" == typeof e) { for (var t = 0; t < e.length; ++t) if (matchesRange(e[t])) return !0; return !1; } return matchesRange(e); } function mockValidatedConfig(e = {}) { var t; const r = mockConfig(e), n = path__default.default.resolve("/"); return { ...r, devServer: {}, extras: {}, flags: createConfigFlags(), hydratedFlag: null, logger: mockLogger(), outputTargets: null !== (t = r.outputTargets) && void 0 !== t ? t : [], packageJsonFilePath: path__default.default.join(n, "package.json"), rootDir: n, cacheDir: ".stencil", srcIndexHtml: "src/index.html", srcDir: "/src", sys: createTestingSystem(), testing: {}, transformAliasedImportPaths: !0, rollupConfig: { inputOptions: {}, outputOptions: {} }, validatePrimaryPackageOutputTarget: !1, ...e }; } function mockConfig(e = {}) { const t = path__default.default.resolve("/"); let {sys: r} = e; return r || (r = createTestingSystem()), r.getCurrentDirectory = () => t, { _isTesting: !0, buildAppCore: !1, buildDist: !0, buildEs5: !1, bundles: null, devMode: !0, enableCache: !1, extras: {}, flags: createConfigFlags(), globalScript: null, hashFileNames: !1, logger: new TestingLogger, maxConcurrentWorkers: 0, minifyCss: !1, minifyJs: !1, namespace: "Testing", nodeResolve: { customResolveOptions: {} }, outputTargets: null, rollupPlugins: { before: [], after: [] }, rootDir: t, sourceMap: !0, sys: r, testing: null, validateTypes: !1, ...e }; } function mockCompilerCtx(e) { const t = e || mockValidatedConfig(), r = { version: 1, activeBuildId: 0, activeDirsAdded: [], activeDirsDeleted: [], activeFilesAdded: [], activeFilesDeleted: [], activeFilesUpdated: [], addWatchDir: noop, addWatchFile: noop, cachedGlobalStyle: null, changedFiles: new Set, changedModules: new Set, collections: [], compilerOptions: null, cache: null, cssModuleImports: new Map, events: buildEvents(), fs: null, hasSuccessfulBuild: !1, isActivelyBuilding: !1, lastBuildResults: null, moduleMap: new Map, nodeMap: new WeakMap, reset: noop, resolvedCollections: new Set, rollupCache: new Map, rollupCacheHydrate: null, rollupCacheLazy: null, rollupCacheNative: null, styleModeNames: new Set, worker: stencil_js.createWorkerContext(t.sys) }; return Object.defineProperty(r, "fs", { get() { return null == this._fs && (this._fs = createInMemoryFs(t.sys)), this._fs; } }), Object.defineProperty(r, "cache", { get() { return null == this._cache && (this._cache = function e(t, r) { t.enableCache = !0; const n = new Cache(t, r.fs); return n.initCacheDir(), n; }(t, r)), this._cache; } }), r; } function mockLogger() { return new TestingLogger; } async function initPageEvents(e) { e._e2eEvents = new Map, e._e2eEventIds = 0, e.spyOnEvent = pageSpyOnEvent.bind(e, e), await e.exposeFunction("stencilOnEvent", ((t, r) => { !function n(e, t, r) { const n = e.get(t); n && n.callback(r); }(e._e2eEvents, t, r); })), await e.evaluateOnNewDocument(browserContextEvents); } async function pageSpyOnEvent(e, t, r) { const n = new EventSpy(t), s = "document" !== r ? () => window : () => document, o = await e.evaluateHandle(s); return await addE2EListener(e, o, t, (e => { n.push(e); })), n; } async function waitForEvent(e, t, r) { const n = .5 * jasmine.DEFAULT_TIMEOUT_INTERVAL, s = await e.evaluate(((e, t, r) => new Promise(((n, s) => { const o = setTimeout((() => { s(new Error(`waitForEvent() timeout, eventName: ${t}`)); }), r); e.addEventListener(t, (e => { clearTimeout(o), n(window.stencilSerializeEvent(e)); }), { once: !0 }); }))), r, t, n); return await e.waitForChanges(), s; } async function addE2EListener(e, t, r, n) { const s = e._e2eEventIds++; e._e2eEvents.set(s, { eventName: r, callback: n }), await t.evaluate(((e, t, r) => { e.addEventListener(r, (e => { window.stencilOnEvent(t, window.stencilSerializeEvent(e)); })); }), s, r); } function browserContextEvents() { const e = () => { const e = [], t = (e, r) => { if (null != r && 1 === r.nodeType) for (let n = 0; n < r.children.length; n++) { const s = r.children[n]; s.tagName.includes("-") && "function" == typeof s.componentOnReady && e.push(s.componentOnReady()), t(e, s); } }; return t(e, window.document.documentElement), Promise.all(e).catch((e => console.error(e))); }, t = () => e().then((() => new Promise((e => { requestAnimationFrame(e); })))).then((() => e())).then((() => { window.stencilAppLoaded = !0; })); window.stencilSerializeEventTarget = e => e ? e === window ? { serializedWindow: !0 } : e === document ? { serializedDocument: !0 } : null != e.nodeType ? { serializedElement: !0, nodeName: e.nodeName, nodeValue: e.nodeValue, nodeType: e.nodeType, tagName: e.tagName, className: e.className, id: e.id } : null : null, window.stencilSerializeEvent = e => ({ bubbles: e.bubbles, cancelBubble: e.cancelBubble, cancelable: e.cancelable, composed: e.composed, currentTarget: window.stencilSerializeEventTarget(e.currentTarget), defaultPrevented: e.defaultPrevented, detail: e.detail, eventPhase: e.eventPhase, isTrusted: e.isTrusted, returnValue: e.returnValue, srcElement: window.stencilSerializeEventTarget(e.srcElement), target: window.stencilSerializeEventTarget(e.target), timeStamp: e.timeStamp, type: e.type, isSerializedEvent: !0 }), "complete" === window.document.readyState ? t() : document.addEventListener("readystatechange", (function(e) { "complete" == e.target.readyState && t(); })); } async function find(e, t, r) { const {lightSelector: n, shadowSelector: s, text: o, contains: i} = getSelector(r); let a; if (a = "string" == typeof n ? await async function l(e, t, r, n) { let s = await t.$(r); if (!s) return null; if (n) { const t = await e.evaluateHandle(((e, t) => { if (!e.shadowRoot) throw new Error(`shadow root does not exist for element: ${e.tagName.toLowerCase()}`); return e.shadowRoot.querySelector(t); }), s, n); if (await s.dispose(), !t) return null; s = t.asElement(); } return s; }(e, t, n, s) : await async function c(e, t, r, n) { const s = await e.evaluateHandle(((e, t, r) => { let n = null; return function e(s) { if (s && !n) if (3 === s.nodeType) { if ("string" == typeof t && s.textContent.trim() === t) return void (n = s.parentElement); if ("string" == typeof r && s.textContent.includes(r)) return void (n = s.parentElement); } else { if ("SCRIPT" === s.nodeName || "STYLE" === s.nodeName) return; if (e(s.shadowRoot), s.childNodes) for (let t = 0; t < s.childNodes.length; t++) e(s.childNodes[t]); } }(e), n; }), t, r, n); return s ? s.asElement() : null; }(e, t, o, i), !a) return null; const u = new E2EElement(e, a); return await u.e2eSync(), u; } async function findAll(e, t, r) { const n = [], {lightSelector: s, shadowSelector: o} = getSelector(r), i = await t.$$(s); if (0 === i.length) return n; if (o) for (let t = 0; t < i.length; t++) { const r = getPuppeteerExecution(i[t]), s = await r.evaluateHandle(((e, t) => { if (!e.shadowRoot) throw new Error(`shadow root does not exist for element: ${e.tagName.toLowerCase()}`); return e.shadowRoot.querySelectorAll(t); }), i[t], o); await i[t].dispose(); const a = await s.getProperties(); await s.dispose(); for (const t of a.values()) { const r = t.asElement(); if (r) { const t = new E2EElement(e, r); await t.e2eSync(), n.push(t); } } } else for (let t = 0; t < i.length; t++) { const r = new E2EElement(e, i[t]); await r.e2eSync(), n.push(r); } return n; } function getSelector(e) { const t = { lightSelector: null, shadowSelector: null, text: null, contains: null }; if ("string" == typeof e) { const r = e.split(">>>"); t.lightSelector = r[0].trim(), t.shadowSelector = r.length > 1 ? r[1].trim() : null; } else if ("string" == typeof e.text) t.text = e.text.trim(); else { if ("string" != typeof e.contains) throw new Error(`invalid find selector: ${e}`); t.contains = e.contains.trim(); } return t; } function getPuppeteerExecution(e) { return parseInt(process.env.__STENCIL_PUPPETEER_VERSION__, 10) >= 17 ? e.frame : e.executionContext(); } async function writeScreenshotData(e, t) { const r = function n(e, t) { const r = `${t}.json`; return path__default.default.join(e, r); }(e, t.id), s = JSON.stringify(t, null, 2); await writeFile(r, s); } function writeFile(e, t) { return new Promise(((r, n) => { fs__default.default.writeFile(e, t, (e => { e ? n(e) : r(); })); })); } async function compareScreenshot(e, t, r, n, s, o, i, a) { var l, c, u, d, p, h, f, m; const g = `${require$$3.createHash("md5").update(r).digest("hex")}.png`, y = path$2.join(t.imagesDir, g); await async function w(e, t) { const r = await function n(e) { return new Promise((t => { fs__default.default.access(e, (e => t(!e))); })); }(e); r || await writeFile(e, t); }(y, r), r = null, i && (i = normalizePath(path$2.relative(t.rootDir, i))); const _ = function E(e, t) { if ("string" != typeof t || 0 === t.trim().length) throw new Error("invalid test description"); const r = require$$3.createHash("md5"); return r.update(t + ":"), r.update(e.userAgent + ":"), void 0 !== e.viewport && (r.update(e.viewport.width + ":"), r.update(e.viewport.height + ":"), r.update(e.viewport.deviceScaleFactor + ":"), r.update(e.viewport.hasTouch + ":"), r.update(e.viewport.isMobile + ":")), r.digest("hex").slice(0, 8).toLowerCase(); }(e, n), v = { id: _, image: g, device: e.device, userAgent: e.userAgent, desc: n, testPath: i, width: s, height: o, deviceScaleFactor: null === (l = e.viewport) || void 0 === l ? void 0 : l.deviceScaleFactor, hasTouch: null === (c = e.viewport) || void 0 === c ? void 0 : c.hasTouch, isLandscape: null === (u = e.viewport) || void 0 === u ? void 0 : u.isLandscape, isMobile: null === (d = e.viewport) || void 0 === d ? void 0 : d.isMobile, diff: { id: _, desc: n, imageA: g, imageB: g, mismatchedPixels: 0, device: e.device, userAgent: e.userAgent, width: s, height: o, deviceScaleFactor: null === (p = e.viewport) || void 0 === p ? void 0 : p.deviceScaleFactor, hasTouch: null === (h = e.viewport) || void 0 === h ? void 0 : h.hasTouch, isLandscape: null === (f = e.viewport) || void 0 === f ? void 0 : f.isLandscape, isMobile: null === (m = e.viewport) || void 0 === m ? void 0 : m.isMobile, allowableMismatchedPixels: t.allowableMismatchedPixels, allowableMismatchedRatio: t.allowableMismatchedRatio, testPath: i, cacheKey: void 0 } }; if (t.updateMaster) return await writeScreenshotData(t.currentBuildDir, v), v.diff; const b = t.masterScreenshots[v.id]; if (!b) return await writeScreenshotData(t.currentBuildDir, v), v.diff; if (v.diff.imageA = b, v.diff.imageA !== v.diff.imageB) { v.diff.cacheKey = function T(e, t, r) { const n = require$$3.createHash("md5"); return n.update(`${e}:${t}:${r}`), n.digest("hex").slice(0, 10); }(v.diff.imageA, v.diff.imageB, a); const r = t.cache[v.diff.cacheKey]; if ("number" != typeof r || isNaN(r)) { const r = Math.round(e.viewport.width * e.viewport.deviceScaleFactor), n = Math.round(e.viewport.height * e.viewport.deviceScaleFactor), s = { imageAPath: path$2.join(t.imagesDir, v.diff.imageA), imageBPath: path$2.join(t.imagesDir, v.diff.imageB), width: r, height: n, pixelmatchThreshold: a }; v.diff.mismatchedPixels = await async function S(e, t) { return new Promise(((r, n) => { const s = .5 * jasmine.DEFAULT_TIMEOUT_INTERVAL, o = setTimeout((() => { n(`getMismatchedPixels timeout: ${s}ms`); }), s); try { const s = { execArgv: process.execArgv.filter((e => !/^--(debug|inspect)/.test(e))), env: process.env, cwd: process.cwd(), stdio: [ "pipe", "pipe", "pipe", "ipc" ] }, i = cp.fork(e, [], s); i.on("message", (e => { i.kill(), clearTimeout(o), r(e); })), i.on("error", (e => { clearTimeout(o), n(e); })), i.send(t); } catch (e) { clearTimeout(o), n(`getMismatchedPixels error: ${e}`); } })); }(t.pixelmatchModulePath, s); } else v.diff.mismatchedPixels = r; } return await writeScreenshotData(t.currentBuildDir, v), v.diff; } async function e2eGoTo(e, t, r = {}) { if (e.isClosed()) throw new Error("e2eGoTo unavailable: page already closed"); if ("string" != typeof t) throw new Error("invalid gotoTest() url"); if (!t.startsWith("/")) throw new Error("gotoTest() url must start with /"); const n = env.__STENCIL_BROWSER_URL__; if ("string" != typeof n) throw new Error("invalid gotoTest() browser url"); const s = n + t.substring(1); r.waitUntil || (r.waitUntil = env.__STENCIL_BROWSER_WAIT_UNTIL); const o = await e._e2eGoto(s, r); if (!o.ok()) throw new Error(`Testing unable to load ${t}, HTTP status: ${o.status()}`); return await waitForStencil(e, r), o; } async function e2eSetContent(e, t, r = {}) { if (e.isClosed()) throw new Error("e2eSetContent unavailable: page already closed"); if ("string" != typeof t) throw new Error("invalid e2eSetContent() html"); const n = [], s = env.__STENCIL_APP_SCRIPT_URL__; if ("string" != typeof s) throw new Error("invalid e2eSetContent() app script url"); n.push("<!doctype html>"), n.push("<html>"), n.push("<head>"); const o = env.__STENCIL_APP_STYLE_URL__; "string" == typeof o && n.push(`<link rel="stylesheet" href="${o}">`), n.push(`<script type="module" src="${s}"><\/script>`), n.push("</head>"), n.push("<body>"), n.push(t), n.push("</body>"), n.push("</html>"); const i = env.__STENCIL_BROWSER_URL__; await e.setRequestInterception(!0), e.on("request", (e => { i === e.url() ? e.respond({ status: 200, contentType: "text/html", body: n.join("\n") }) : e.continue(); })), r.waitUntil || (r.waitUntil = env.__STENCIL_BROWSER_WAIT_UNTIL); const a = await e._e2eGoto(i, r); if (!a.ok()) throw new Error("Testing unable to load content"); return await waitForStencil(e, r), a; } async function waitForStencil(e, t) { try { const r = "number" == typeof t.timeout ? t.timeout : 4750; await e.waitForFunction("window.stencilAppLoaded", { timeout: r }); } catch (e) { throw new Error("App did not load in allowed time. Please ensure the content loads a stencil application."); } } async function waitForChanges(e) { try { if (e.isClosed()) return; if (await Promise.all(e._e2eElements.map((e => e.e2eRunActions()))), e.isClosed()) return; if (await e.evaluate((() => new Promise((e => { requestAnimationFrame((() => { const t = [], r = (e, t) => { if (null != e) { "shadowRoot" in e && e.shadowRoot instanceof ShadowRoot && r(e.shadowRoot, t); const n = e.children, s = n.length; for (let e = 0; e < s; e++) { const s = n[e]; null != s && (s.tagName.includes("-") && "function" == typeof s.componentOnReady && t.push(s.componentOnReady()), r(s, t)); } } }; r(document.documentElement, t), Promise.all(t).then((() => { e(); })).catch((() => { e(); })); })); })))), e.isClosed()) return; "function" == typeof e.waitForTimeout ? await e.waitForTimeout(100) : await e.waitFor(100), await Promise.all(e._e2eElements.map((e => e.e2eSync()))); } catch (e) {} } function serializeConsoleMessage(e) { return `${e.text()} ${function t(e) { let t = ""; return e && e.url && (t = `\nLocation: ${e.url}`, e.lineNumber && (t += `:${e.lineNumber}`), e.columnNumber && (t += `:${e.columnNumber}`)), t; }(e.location())}`; } function findRootComponent(e, t) { if (null != t) { const r = t.children, n = r.length; for (let t = 0; t < n; t++) { const n = r[t]; if (e.has(n.nodeName.toLowerCase())) return n; } for (let t = 0; t < n; t++) { const n = findRootComponent(e, r[t]); if (null != n) return n; } } return null; } function createBuildId() { const e = new Date; let t = e.getFullYear() + ""; return t += ("0" + (e.getMonth() + 1)).slice(-2), t += ("0" + e.getDate()).slice(-2), t += ("0" + e.getHours()).slice(-2), t += ("0" + e.getMinutes()).slice(-2), t += ("0" + e.getSeconds()).slice(-2), t; } function createBuildMessage() { const e = new Date; let t = e.getFullYear() + "-"; return t += ("0" + (e.getMonth() + 1)).slice(-2) + "-", t += ("0" + e.getDate()).slice(-2) + " ", t += ("0" + e.getHours()).slice(-2) + ":", t += ("0" + e.getMinutes()).slice(-2) + ":", t += ("0" + e.getSeconds()).slice(-2), `Build: ${t}`; } function getAppUrl(e, t, r) { const n = e.outputTargets.find(isOutputTargetWww); if (n) { const e = n.buildDir, s = path$2.join(e, r), o = path$2.relative(n.dir, s); return new URL(o, t).href; } const s = e.outputTargets.find(isOutputTargetDistLazy); if (s) { const n = s.esmDir, o = path$2.join(n, r), i = path$2.relative(e.rootDir, o); return new URL(i, t).href; } return t; } var debug_1, constants$2, commonjsGlobal, re_1, parseOptions_1, identifiers, semver, major_1, origCwd, cwd, platform, chdir, polyfills, Stream, legacyStreams, clone_1, getPrototypeOf, gracefulFs, symbols, ansiColors, create_1, caller, pathParse, parse, getNodeModulesDirs, nodeModulesPaths, normalizeOptions, slice, toStr, implementation, functionBind, src, isCoreModule, realpathFS$1, defaultIsFile$1, defaultIsDir$1, defaultRealpath, maybeRealpath, defaultReadPackage, getPackageCandidates$1, async, current, core, mod, core_1, isCore, realpathFS, defaultIsFile, defaultIsDir, defaultRealpathSync, maybeRealpathSync, defaultReadPackageSync, getPackageCandidates, sync, resolve; const stencil_js = require("../compiler/stencil.js"), appData = _lazyRequire("@stencil/core/internal/app-data"), testing = _lazyRequire("@stencil/core/internal/testing"), index_cjs = _lazyRequire("../mock-doc/index.cjs"), path$2 = require("path"), require$$3 = require("crypto"), os$2 = require("os"), process$3 = require("process"), fs$2 = require("fs"), constants$3 = require("constants"), require$$0 = require("stream"), util$2 = require("util"), assert$2 = require("assert"), index_js = _lazyRequire("../dev-server/index.js"), cp = require("child_process"), path__default = _interopDefaultLegacy(path$2), os__namespace = _interopNamespace(os$2), process__namespace = _interopNamespace(process$3), fs__default = _interopDefaultLegacy(fs$2), constants__default = _interopDefaultLegacy(constants$3), require$$0__default = _interopDefaultLegacy(require$$0), util__default = _interopDefaultLegacy(util$2), assert__default = _interopDefaultLegacy(assert$2), debug = ("object" == typeof process && process.env, () => {}); debug_1 = debug; const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || 9007199254740991; constants$2 = { MAX_LENGTH: 256, MAX_SAFE_COMPONENT_LENGTH: 16, MAX_SAFE_BUILD_LENGTH: 250, MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1, RELEASE_TYPES: [ "major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease" ], SEMVER_SPEC_VERSION: "2.0.0", FLAG_INCLUDE_PRERELEASE: 1, FLAG_LOOSE: 2 }, commonjsGlobal = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}, re_1 = createCommonjsModule((function(e, t) { const {MAX_SAFE_COMPONENT_LENGTH: r, MAX_SAFE_BUILD_LENGTH: n, MAX_LENGTH: s} = constants$2, o = (t = e.exports = {}).re = [], i = t.safeRe = [], a = t.src = [], l = t.t = {}; let c = 0; const u = "[a-zA-Z0-9-]", d = [ [ "\\s", 1 ], [ "\\d", s ], [ u, n ] ], p = (e, t, r) => { const n = (e => { for (const [t, r] of d) e = e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`); return e; })(t), s = c++; debug_1(e, s, t), l[e] = s, a[s] = t, o[s] = new RegExp(t, r ? "g" : void 0), i[s] = new RegExp(n, r ? "g" : void 0); }; p("NUMERICIDENTIFIER", "0|[1-9]\\d*"), p("NUMERICIDENTIFIERLOOSE", "\\d+"), p("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${u}*`), p("MAINVERSION", `(${a[l.NUMERICIDENTIFIER]})\\.(${a[l.NUMERICIDENTIFIER]})\\.(${a[l.NUMERICIDENTIFIER]})`), p("MAINVERSIONLOOSE", `(${a[l.NUMERICIDENTIFIERLOOSE]})\\.(${a[l.NUMERICIDENTIFIERLOOSE]})\\.(${a[l.NUMERICIDENTIFIERLOOSE]})`), p("PRERELEASEIDENTIFIER", `(?:${a[l.NUMERICIDENTIFIER]}|${a[l.NONNUMERICIDENTIFIER]})`), p("PRERELEASEIDENTIFIERLOOSE", `(?:${a[l.NUMERICIDENTIFIERLOOSE]}|${a[l.NONNUMERICIDENTIFIER]})`), p("PRERELEASE", `(?:-(${a[l.PRERELEASEIDENTIFIER]}(?:\\.${a[l.PRERELEASEIDENTIFIER]})*))`), p("PRERELEASELOOSE", `(?:-?(${a[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[l.PRERELEASEIDENTIFIERLOOSE]})*))`), p("BUILDIDENTIFIER", `${u}+`), p("BUILD", `(?:\\+(${a[l.BUILDIDENTIFIER]}(?:\\.${a[l.BUILDIDENTIFIER]})*))`), p("FULLPLAIN", `v?${a[l.MAINVERSION]}${a[l.PRERELEASE]}?${a[l.BUILD]}?`), p("FULL", `^${a[l.FULLPLAIN]}$`), p("LOOSEPLAIN", `[v=\\s]*${a[l.MAINVERSIONLOOSE]}${a[l.PRERELEASELOOSE]}?${a[l.BUILD]}?`), p("LOOSE", `^${a[l.LOOSEPLAIN]}$`), p("GTLT", "((?:<|>)?=?)"), p("XRANGEIDENTIFIERLOOSE", `${a[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`), p("XRANGEIDENTIFIER", `${a[l.NUMERICIDENTIFIER]}|x|X|\\*`), p("XRANGEPLAIN", `[v=\\s]*(${a[l.XRANGEIDENTIFIER]})(?:\\.(${a[l.XRANGEIDENTIFIER]})(?:\\.(${a[l.XRANGEIDENTIFIER]})(?:${a[l.PRERELEASE]})?${a[l.BUILD]}?)?)?`), p("XRANGEPLAINLOOSE", `[v=\\s]*(${a[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[l.XRANGEIDENTIFIERLOOSE]})(?:${a[l.PRERELEASELOOSE]})?${a[l.BUILD]}?)?)?`), p("XRANGE", `^${a[l.GTLT]}\\s*${a[l.XRANGEPLAIN]}$`), p("XRANGELOOSE", `^${a[l.GTLT]}\\s*${a[l.XRANGEPLAINLOOSE]}$`), p("COERCE", `(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?(?:$|[^\\d])`), p("COERCERTL", a[l.COERCE], !0), p("LONETILDE", "(?:~>?)"), p("TILDETRIM", `(\\s*)${a[l.LONETILDE]}\\s+`, !0), t.tildeTrimReplace = "$1~", p("TILDE", `^${a[l.LONETILDE]}${a[l.XRANGEPLAIN]}$`), p("TILDELOOSE", `^${a[l.LONETILDE]}${a[l.XRANGEPLAINLOOSE]}$`), p("LONECARET", "(?:\\^)"), p("CARETTRIM", `(\\s*)${a[l.LONECARET]}\\s+`, !0), t.caretTrimReplace = "$1^", p("CARET", `^${a[l.LONECARET]}${a[l.XRANGEPLAIN]}$`), p("CARETLOOSE", `^${a[l.LONECARET]}${a[l.XRANGEPLAINLOOSE]}$`), p("COMPARATORLOOSE", `^${a[l.GTLT]}\\s*(${a[l.LOOSEPLAIN]})$|^$`), p("COMPARATOR", `^${a[l.GTLT]}\\s*(${a[l.FULLPLAIN]})$|^$`), p("COMPARATORTRIM", `(\\s*)${a[l.GTLT]}\\s*(${a[l.LOOSEPLAIN]}|${a[l.XRANGEPLAIN]})`, !0), t.comparatorTrimReplace = "$1$2$3", p("HYPHENRANGE", `^\\s*(${a[l.XRANGEPLAIN]})\\s+-\\s+(${a[l.XRANGEPLAIN]})\\s*$`), p("HYPHENRANGELOOSE", `^\\s*(${a[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[l.XRANGEPLAINLOOSE]})\\s*$`), p("STAR", "(<|>)?=?\\s*\\*"), p("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), p("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); })); const looseOption = Object.freeze({ loose: !0 }), emptyOpts = Object.freeze({}); parseOptions_1 = e => e ? "object" != typeof e ? looseOption : e : emptyOpts; const numeric = /^[0-9]+$/, compareIdentifiers$1 = (e, t) => { const r = numeric.test(e), n = numeric.test(t); return r && n && (e = +e, t = +t), e === t ? 0 : r && !n ? -1 : n && !r ? 1 : e < t ? -1 : 1; }; identifiers = { compareIdentifiers: compareIdentifiers$1, rcompareIdentifiers: (e, t) => compareIdentifiers$1(t, e) }; const {MAX_LENGTH, MAX_SAFE_INTEGER} = constants$2, {safeRe: re, t} = re_1, {compareIdentifiers} = identifiers; class SemVer { constructor(e, r) { if (r = parseOptions_1(r), e instanceof SemVer) { if (e.loose === !!r.loose && e.includePrerelease === !!r.includePrerelease) return e; e = e.version; } else if ("string" != typeof e) throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`); if (e.length > MAX_LENGTH) throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); debug_1("SemVer", e, r), this.options = r, this.loose = !!r.loose, this.includePrerelease = !!r.includePrerelease; const n = e.trim().match(r.loose ? re[t.LOOSE] : re[t.FULL]); if (!n) throw new TypeError(`Invalid Version: ${e}`); if (this.raw = e, this.major = +n[1], this.minor = +n[2], this.patch = +n[3], this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError("Invalid major version"); if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError("Invalid minor version"); if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError("Invalid patch version"); n[4] ? this.prerelease = n[4].split(".").map((e => { if (/^[0-9]+$/.test(e)) { const t = +e; if (t >= 0 && t < MAX_SAFE_INTEGER) return t; } return e; })) : this.prerelease = [], this.build = n[5] ? n[5].split(".") : [], this.format(); } format() { return this.version = `${this.major}.${this.minor}.${this.patch}`, this.prerelease.length && (this.version += `-${this.prerelease.join(".")}`), this.version; } toString() { return this.version; } compare(e) { if (debug_1("SemVer.compare", this.version, this.options, e), !(e instanceof SemVer)) { if ("string" == typeof e && e === this.version) return 0; e = new SemVer(e, this.options); } return e.version === this.version ? 0 : this.compareMain(e) || this.comparePre(e); } compareMain(e) { return e instanceof SemVer || (e = new SemVer(e, this.options)), compareIdentifiers(this.major, e.major) || compareIdentifiers(this.minor, e.minor) || compareIdentifiers(this.patch, e.patch); } comparePre(e) { if (e instanceof SemVer || (e = new SemVer(e, this.options)), this.prerelease.length && !e.prerelease.length) return -1; if (!this.prerelease.length && e.prerelease.length) return 1; if (!this.prerelease.length && !e.prerelease.length) return 0; let t = 0; do { const r = this.prerelease[t], n = e.prerelease[t]; if (debug_1("prerelease compare", t, r, n), void 0 === r && void 0 === n) return 0; if (void 0 === n) return 1; if (void 0 === r) return -1; if (r !== n) return compareIdentifiers(r, n); } while (++t); } compareBuild(e) { e instanceof SemVer || (e = new SemVer(e, this.options)); let t = 0; do { const r = this.build[t], n = e.build[t]; if (debug_1("prerelease compare", t, r, n), void 0 === r && void 0 === n) return 0; if (void 0 === n) return 1; if (void 0 === r) return -1; if (r !== n) return compareIdentifiers(r, n); } while (++t); } inc(e, t, r) { switch (e) { case "premajor": this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", t, r); break; case "preminor": this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", t, r); break; case "prepatch": this.prerelease.length = 0, this.inc("patch", t, r), this.inc("pre", t, r); break; case "prerelease": 0 === this.prerelease.length && this.inc("patch", t, r), this.inc("pre", t, r); break; case "major": 0 === this.minor && 0 === this.patch && 0 !== this.prerelease.length || this.major++, this.minor = 0, this.patch = 0, this.prerelease = []; break; case "minor": 0 === this.patch && 0 !== this.prerelease.length || this.minor++, this.patch = 0, this.prerelease = []; break; case "patch": 0 === this.prerelease.length && this.patch++, this.prerelease = []; break; case "pre": { const e = Number(r) ? 1 : 0; if (!t && !1 === r) throw new Error("invalid increment argument: identifier is empty"); if (0 === this.prerelease.length) this.prerelease = [ e ]; else { let n = this.prerelease.length; for (;--n >= 0; ) "number" == typeof this.prerelease[n] && (this.prerelease[n]++, n = -2); if (-1 === n) { if (t === this.prerelease.join(".") && !1 === r) throw new Error("invalid increment argument: identifier already exists"); this.prerelease.push(e); } } if (t) { let n = [ t, e ]; !1 === r && (n = [ t ]), 0 === compareIdentifiers(this.prerelease[0], t) ? isNaN(this.prerelease[1]) && (this.prerelease = n) : this.prerelease = n; } break; } default: throw new Error(`invalid increment argument: ${e}`); } return this.raw = this.format(), this.build.length && (this.raw += `+${this.build.join(".")}`), this; } } semver = SemVer, major_1 = (e, t) => new semver(e, t).major; const formatComponentRuntimeWatchers = e => { const t = {}; return e.watchers.forEach((({propName: e, methodName: r}) => { var n; t[e] = [ ...null !== (n = t[e]) && void 0 !== n ? n : [], r ]; })), t; }, formatComponentRuntimeMembers = (e, t = !0) => ({ ...formatPropertiesRuntimeMember(e.properties), ...formatStatesRuntimeMember(e.states), ...t ? formatMethodsRuntimeMember(e.methods) : {} }), formatPropertiesRuntimeMember = e => { const t = {}; return e.forEach((e => { t[e.name] = trimFalsy([ formatFlags(e), formatAttrName(e) ]); })), t; }, formatFlags = e => { let t = formatPropType(e.type); return e.mutable && (t |= 1024), e.reflect && (t |= 512), t; }, formatAttrName = e => { if ("string" == typeof e.attribute) { if (e.name === e.attribute) return; return e.attribute; } }, formatPropType = e => "string" === e ? 1 : "number" === e ? 2 : "boolean" === e ? 4 : "any" === e ? 8 : 16, formatStatesRuntimeMember = e => { const t = {}; return e.forEach((e => { t[e.name] = [ 32 ]; })), t; }, formatMethodsRuntimeMember = e => { const t = {}; return e.forEach((e => { t[e.name] = [ 64 ]; })), t; }, formatHostListeners = e => e.listeners.map((e => [ computeListenerFlags(e), e.name, e.method ])), computeListenerFlags = e => { let t = 0; switch (e.capture && (t |= 2), e.passive && (t |= 1), e.target) { case "document": t |= 4; break; case "window": t |= 8; break; case "body": t |= 16; break; case "parent": t |= 32; } return t; }, trimFalsy = e => { const t = e; for (let e = t.length - 1; e >= 0 && !t[e]; e--) t.pop(); return t; }, noop = () => {}, isString = e => "string" == typeof e, isIterable = e => (e => null != e)(e) && (e => "function" == typeof e)(e[Symbol.iterator]), windowsPathRegex = /^(?:[a-zA-Z]:|[\\/]{2}[^\\/]+[\\/]+[^\\/]+)?[\\/]$/, hasError = e => null != e && 0 !== e.length && e.some((e => "error" === e.level && "runtime" !== e.type)), normalizePath = (e, t = !0) => { if ("string" != typeof e) throw new Error("invalid path to normalize"); e = normalizeSlashes(e.trim()); const r = pathComponents(e, getRootLength(e)), n = reducePathComponents(r), s = n[0], o = n[1], i = s + n.slice(1).join("/"); return "" === i ? "." : "" === s && o && e.includes("/") && !o.startsWith(".") && !o.startsWith("@") && t ? "./" + i : i; }, normalizeSlashes = e => e.replace(backslashRegExp, "/"), backslashRegExp = /\\/g, reducePathComponents = e => { if (!Array.isArray(e) || 0 === e.length) return []; const t = [ e[0] ]; for (let r = 1; r < e.length; r++) { const n = e[r]; if (n && "." !== n) { if (".." === n) if (t.length > 1) { if (".." !== t[t.length - 1]) { t.pop(); continue; } } else if (t[0]) continue; t.push(n); } } return t; }, getRootLength = e => { const t = getEncodedRootLength(e); return t < 0 ? ~t : t; }, getEncodedRootLength = e => { if (!e) return 0; const t = e.charCodeAt(0); if (47 === t || 92 === t) { if (e.charCodeAt(1) !== t) return 1; const r = e.indexOf(47 === t ? "/" : "\\", 2); return r < 0 ? e.length : r + 1; } if (isVolumeCharacter(t) && 58 === e.charCodeAt(1)) { const t = e.charCodeAt(2); if (47 === t || 92 === t) return 3; if (2 === e.length) return 2; } const r = e.indexOf("://"); if (-1 !== r) { const t = r + 3, n = e.indexOf("/", t); if (-1 !== n) { const s = e.slice(0, r), o = e.slice(t, n); if ("file" === s && ("" === o || "localhost" === o) && isVolumeCharacter(e.charCodeAt(n + 1))) { const t = getFileUrlVolumeSeparatorEnd(e, n + 2); if (-1 !== t) { if (47 === e.charCodeAt(t)) return ~(t + 1); if (t === e.length) return ~t; } } return ~(n + 1); } return ~e.length; } return 0; }, isVolumeCharacter = e => e >= 97 && e <= 122 || e >= 65 && e <= 90, getFileUrlVolumeSeparatorEnd = (e, t) => { const r = e.charCodeAt(t); if (58 === r) return t + 1; if (37 === r && 51 === e.charCodeAt(t + 1)) { const r = e.charCodeAt(t + 2); if (97 === r || 65 === r) return t + 3; } return -1; }, pathComponents = (e, t) => { const r = e.substring(0, t), n = e.substring(t).split("/"), s = n.length; return s > 0 && !n[s - 1] && n.pop(), [ r, ...n ]; }, normalizeFsPath = e => normalizePath(e.split("?")[0].replace(/\0/g, "")), flattenDiagnosticMessageText = (e, t) => { var r, n; if ("string" == typeof t) return t; if (void 0 === t) return ""; const s = [], o = (null !== (n = null === (r = e.file) || void 0 === r ? void 0 : r.fileName) && void 0 !== n ? n : "").includes("stencil.config"); o && s.push(2322); let i = ""; if (!s.includes(t.code) && (i = t.messageText, isIterable(t.next))) for (const r of t.next) i += flattenDiagnosticMessageText(e, r); return o && (i = i.replace("type 'StencilConfig'", "Stencil Config"), i = i.replace("Object literal may only specify known properties, but ", ""), i = i.replace("Object literal may only specify known properties, and ", "")), i.trim(); }, isOutputTargetDistLazy = e => "dist-lazy" === e.type, isOutputTargetWww = e => "www" === e.type, isJest27TransformOptions = e => null != e && "object" == typeof e && e.hasOwnProperty("config"); let _tsCompilerOptions = null, _tsCompilerOptionsKey = null; const jestPreprocessor = { process(e, t, r, n) { if (isJest27TransformOptions(r) && (n = r.config), !n) throw "Unable to find Jest transformation options."; if (function s(e, t) { var r; const n = (null !== (r = e.split(".").pop()) && void 0 !== r ? r : "").toLowerCase().split("?")[0]; if ("ts" === n || "tsx" === n || "jsx" === n) return !0; if ("mjs" === n) return !0; if ("js" === n) { if (t.includes("import ") || t.includes("import.") || t.includes("import(")) re