@stencil/core
Version:
A Compiler for Web Components and Progressive Web Apps
1,288 lines (1,217 loc) • 187 kB
JavaScript
/*!
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