@stencil/core
Version:
A Compiler for Web Components and Progressive Web Apps
1,359 lines (1,309 loc) • 153 kB
JavaScript
/*!
Stencil Testing v2.14.0 | MIT Licensed | https://stenciljs.com
*/
function _lazyRequire(e) {
return new Proxy({}, {
get(t, r) {
const s = require(e);
return Reflect.get(s, r);
},
set(t, r, s) {
const n = require(e);
return Reflect.set(n, r, s);
}
});
}
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 s = Object.getOwnPropertyDescriptor(e, r);
Object.defineProperty(t, r, s.get ? s : {
enumerable: !0,
get: function() {
return e[r];
}
});
}
})), t.default = e, Object.freeze(t);
}
async function startPuppeteerBrowser(e) {
if (!e.flags.e2e) return null;
const t = process.env, r = e.testing.browserExecutablePath ? "puppeteer-core" : "puppeteer", s = e.sys.lazyRequire.getModulePath(e.rootDir, r), n = e.sys.lazyRequire.require(e.rootDir, s);
t.__STENCIL_PUPPETEER_MODULE__ = s, t.__STENCIL_BROWSER_WAIT_UNTIL = e.testing.browserWaitUntil,
e.flags.devtools && (e.testing.browserDevtools = !0, e.testing.browserHeadless = !1,
t.__STENCIL_E2E_DEVTOOLS__ = "true"), e.logger.debug(`puppeteer: ${s}`), 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 o = {
ignoreHTTPSErrors: !0,
slowMo: e.testing.browserSlowMo
};
let i;
if (e.testing.browserWSEndpoint) i = await n.connect({
browserWSEndpoint: e.testing.browserWSEndpoint,
...o
}); else {
const t = {
args: e.testing.browserArgs,
headless: e.testing.browserHeadless,
devtools: e.testing.browserDevtools,
...o
};
e.testing.browserExecutablePath && (t.executablePath = e.testing.browserExecutablePath),
i = await n.launch({
...t
});
}
return t.__STENCIL_BROWSER_WS_ENDPOINT__ = i.wsEndpoint(), e.logger.debug(`puppeteer browser wsEndpoint: ${t.__STENCIL_BROWSER_WS_ENDPOINT__}`),
i;
}
function getAppStyleUrl(e, t) {
return e.globalStyle ? getAppUrl(e, t, `${e.fsNamespace}.css`) : null;
}
function getAppUrl(e, t, r) {
const s = e.outputTargets.find(isOutputTargetWww);
if (s) {
const e = s.buildDir, n = path$2.join(e, r), o = path$2.relative(s.dir, n);
return new URL(o, t).href;
}
const n = e.outputTargets.find(isOutputTargetDistLazy);
if (n) {
const s = n.esmDir, o = path$2.join(s, r), i = path$2.relative(e.rootDir, o);
return new URL(i, t).href;
}
return t;
}
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 s = require(t.__STENCIL_PUPPETEER_MODULE__ + "/DeviceDescriptors")[e.device];
if (!s) return void console.error(`invalid emulate device: ${e.device}`);
r.device = e.device, r.userAgent = s.userAgent, r.viewport = s.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 s = function s(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(s), t.__STENCIL_ENV__ = JSON.stringify(e.env),
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 n = function n(e) {
const t = require("yargs"), r = [ ...e.flags.unknownArgs.slice(), ...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"), e.logger.info(e.logger.magenta(`jest args: ${r.join(" ")}`));
let s = t(r).argv;
if (s = {
...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.config = function n(e) {
const t = e.testing, r = require("jest-config").defaults, s = Object.keys(r), n = {};
return Object.keys(t).forEach((e => {
s.includes(e) && (n[e] = t[e]);
})), n.rootDir = e.rootDir, isString(t.collectCoverage) && (n.collectCoverage = t.collectCoverage),
Array.isArray(t.collectCoverageFrom) && (n.collectCoverageFrom = t.collectCoverageFrom),
isString(t.coverageDirectory) && (n.coverageDirectory = t.coverageDirectory), t.coverageThreshold && (n.coverageThreshold = t.coverageThreshold),
isString(t.globalSetup) && (n.globalSetup = t.globalSetup), isString(t.globalTeardown) && (n.globalTeardown = t.globalTeardown),
isString(t.preset) && (n.preset = t.preset), t.projects && (n.projects = t.projects),
Array.isArray(t.reporters) && (n.reporters = t.reporters), isString(t.testResultsProcessor) && (n.testResultsProcessor = t.testResultsProcessor),
t.transform && (n.transform = t.transform), t.verbose && (n.verbose = t.verbose),
n.testRunner = "jest-jasmine2", JSON.stringify(n);
}(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, n), {runCLI: i} = require("@jest/core");
r = !!(await i(n, o)).results.success;
} catch (t) {
e.logger.error(`runJest: ${t}`);
}
return r;
}
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 transpile(e, t = {}) {
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"
};
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 => {
const t = {
level: "warn",
type: "typescript",
language: "typescript",
header: "TypeScript",
code: e.code.toString(),
messageText: flattenDiagnosticMessageText(e, e.messageText),
relFilePath: null,
absFilePath: null,
lines: []
};
if (1 === e.category && (t.level = "error"), e.file) {
t.absFilePath = e.file.fileName;
const s = "string" != typeof (r = e.file.text) ? [] : (r = r.replace(/\\r/g, "\n")).split("\n"), n = e.file.getLineAndCharacterOfPosition(e.start), o = {
lineIndex: n.line,
lineNumber: n.line + 1,
text: s[n.line],
errorCharStart: n.character,
errorLength: Math.max(e.length, 1)
};
if (t.lineNumber = o.lineNumber, t.columnNumber = o.errorCharStart + 1, t.lines.push(o),
0 === o.errorLength && o.errorCharStart > 0 && (o.errorLength = 1, o.errorCharStart--),
o.lineIndex > 0) {
const e = {
lineIndex: o.lineIndex - 1,
lineNumber: o.lineNumber - 1,
text: s[o.lineIndex - 1],
errorCharStart: -1,
errorLength: -1
};
t.lines.unshift(e);
}
if (o.lineIndex + 1 < s.length) {
const e = {
lineIndex: o.lineIndex + 1,
lineNumber: o.lineNumber + 1,
text: s[o.lineIndex + 1],
errorCharStart: -1,
errorLength: -1
};
t.lines.push(e);
}
}
var r;
return t;
})(r.error)));
const s = stencil_js.ts.parseJsonConfigFileContent(r.config, stencil_js.ts.sys, e, void 0, t);
return _tsCompilerOptions = s.options, _tsCompilerOptions;
}
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 s;
if (1 === e.nodeType) {
const t = function n(e) {
return e && e.ownerDocument && e.ownerDocument.defaultView && e.ownerDocument.defaultView.__stencil_spec_options || {};
}(e);
s = index_cjs.serializeNodeToHtml(e, {
prettyHtml: !0,
outerHtml: !0,
removeHtmlComments: !1 === t.includeAnnotations,
excludeTags: [ "body" ],
serializeShadowRoot: r
});
} else if (11 === e.nodeType) s = 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);
s = index_cjs.serializeNodeToHtml(t, {
prettyHtml: !0,
serializeShadowRoot: r
});
}
}
const o = index_cjs.parseHtmlToFragment(t), i = index_cjs.serializeNodeToHtml(o, {
prettyHtml: !0,
excludeTags: [ "body" ]
});
return s !== i ? (expect(s).toBe(i), {
message: () => "HTML does not match",
pass: !1
}) : {
message: () => "expect HTML to match",
pass: !0
};
}
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
};
}
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 s = r.response.clone();
return "number" != typeof s.status && (s.status = 200), "string" != typeof s.statusText && (s.status >= 500 ? s.statusText = "Internal Server Error" : 404 === s.status ? s.statusText = "Not Found" : s.status >= 400 ? s.statusText = "Bad Request" : 302 === s.status ? s.statusText = "Found" : 301 === s.status ? s.statusText = "Moved Permanently" : s.status >= 300 ? s.statusText = "Redirection" : s.statusText = "OK"),
s.ok = s.status >= 200 && s.status <= 299, "string" != typeof s.type && (s.type = "basic"),
s;
}
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 s = new URL(e.url, location.href);
e.url = s.href;
const n = {
response: e,
reject: r
};
mockedResponses.set(e.url, n);
}
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.dynamicImportShim = !1, e.hotModuleReplacement = !1, e.safari10 = !1, e.scriptDataOpts = !1,
e.scopedSlotTextContentFix = !1, e.slotChildNodesFix = !1;
}
function assertPath(e) {
if ("string" != typeof e) throw new TypeError("Path must be a string. Received " + JSON.stringify(e));
}
function normalizeStringPosix(e, t) {
var r, s, n, o = "", i = 0, a = -1, l = 0;
for (s = 0; s <= e.length; ++s) {
if (s < e.length) r = e.charCodeAt(s); else {
if (47 === r) break;
r = 47;
}
if (47 === r) {
if (a === s - 1 || 1 === l) ; else if (a !== s - 1 && 2 === l) {
if (o.length < 2 || 2 !== i || 46 !== o.charCodeAt(o.length - 1) || 46 !== o.charCodeAt(o.length - 2)) if (o.length > 2) {
if ((n = o.lastIndexOf("/")) !== o.length - 1) {
-1 === n ? (o = "", i = 0) : i = (o = o.slice(0, n)).length - 1 - o.lastIndexOf("/"),
a = s, l = 0;
continue;
}
} else if (2 === o.length || 1 === o.length) {
o = "", i = 0, a = s, l = 0;
continue;
}
t && (o.length > 0 ? o += "/.." : o = "..", i = 2);
} else o.length > 0 ? o += "/" + e.slice(a + 1, s) : o = e.slice(a + 1, s), i = s - a - 1;
a = s, l = 0;
} else 46 === r && -1 !== l ? ++l : l = -1;
}
return o;
}
function specifierIncluded$1(e, t) {
var r, s, n, 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 ((s = parseInt(o[r] || 0, 10)) !== (n = parseInt(l[r] || 0, 10))) return "<" === a ? s < n : ">=" === a && s >= n;
return ">=" === a;
}
function matchesRange$1(e, t) {
var r, s = t.split(/ ?&& ?/);
if (0 === s.length) return !1;
for (r = 0; r < s.length; ++r) if (!specifierIncluded$1(e, s[r])) return !1;
return !0;
}
function specifierIncluded(e) {
var t, r, s, n = e.split(" "), o = n.length > 1 ? n[0] : "=", i = (n.length > 1 ? n[1] : n[0]).split(".");
for (t = 0; t < 3; ++t) if ((r = parseInt(current[t] || 0, 10)) !== (s = parseInt(i[t] || 0, 10))) return "<" === o ? r < s : ">=" === o && r >= s;
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 mockConfig(e) {
const t = path__default.default.resolve("/");
return e || (e = createTestingSystem()), e.getCurrentDirectory = () => t, {
_isTesting: !0,
namespace: "Testing",
rootDir: t,
globalScript: null,
devMode: !0,
enableCache: !1,
buildAppCore: !1,
buildDist: !0,
flags: {},
bundles: null,
outputTargets: null,
buildEs5: !1,
hashFileNames: !1,
logger: new TestingLogger,
maxConcurrentWorkers: 0,
minifyCss: !1,
minifyJs: !1,
sys: e,
testing: null,
validateTypes: !1,
extras: {},
nodeResolve: {
customResolveOptions: {}
},
sourceMap: !0
};
}
function mockCompilerCtx(e) {
e || (e = mockConfig());
const t = {
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: null,
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(e.sys)
};
return Object.defineProperty(t, "fs", {
get() {
return null == this._fs && (this._fs = (e => {
const t = new Map, r = new Map, s = async e => {
const t = b(e);
if ("boolean" == typeof t.exists) return {
exists: t.exists,
isDirectory: t.isDirectory,
isFile: t.isFile
};
const r = {
exists: !1,
isDirectory: !1,
isFile: !1
}, s = await c(e);
return s ? (t.exists = s.exists, t.isDirectory = s.isDirectory, t.isFile = s.isFile,
r.exists = t.exists, r.isDirectory = t.isDirectory, r.isFile = t.isFile) : t.exists = !1,
r;
}, n = async (e, r = {}) => {
e = normalizePath(e);
const s = [];
if (!0 === r.inMemoryOnly) {
let n = e;
n.endsWith("/") || (n += "/");
const o = e.split("/");
t.forEach(((t, n) => {
if (!n.startsWith(e)) return;
const a = n.split("/");
if ((a.length === o.length + 1 || r.recursive && a.length > o.length) && t.exists) {
const e = {
absPath: n,
relPath: a[o.length],
isDirectory: t.isDirectory,
isFile: t.isFile
};
i(r, e) || s.push(e);
}
}));
} else await o(e, e, r, s);
return s.sort(((e, t) => e.absPath < t.absPath ? -1 : e.absPath > t.absPath ? 1 : 0));
}, o = async (t, r, s, n) => {
const a = await e.readDir(r);
if (a.length > 0) {
const e = b(r);
e.exists = !0, e.isFile = !1, e.isDirectory = !0, await Promise.all(a.map((async e => {
const r = normalizePath(e), a = normalizePath(path$2.relative(t, r)), l = await c(r), u = {
absPath: r,
relPath: a,
isDirectory: l.isDirectory,
isFile: l.isFile
};
i(s, u) || (n.push(u), !0 === s.recursive && !0 === l.isDirectory && await o(t, r, s, n));
})));
}
}, i = (e, t) => {
if (t.isDirectory) {
if (Array.isArray(e.excludeDirNames)) {
const r = path$2.basename(t.absPath);
if (e.excludeDirNames.some((e => r === e))) return !0;
}
} else if (Array.isArray(e.excludeExtensions)) {
const r = t.relPath.toLowerCase();
if (e.excludeExtensions.some((e => r.endsWith(e)))) return !0;
}
return !1;
}, a = async e => {
const t = b(e);
t.isFile = !1, t.isDirectory = !0, t.queueWriteToDisk || (t.queueDeleteFromDisk = !0);
try {
const t = await n(e, {
recursive: !0
});
await Promise.all(t.map((e => e.relPath.endsWith(".gitkeep") ? null : l(e.absPath))));
} catch (e) {}
}, l = async e => {
const t = b(e);
t.queueWriteToDisk || (t.queueDeleteFromDisk = !0);
}, c = async t => {
const r = b(t);
if ("boolean" != typeof r.isDirectory || "boolean" != typeof r.isFile) {
const s = await e.stat(t);
s.error ? r.exists = !1 : (r.exists = !0, s.isFile ? (r.isFile = !0, r.isDirectory = !1,
r.size = s.size) : s.isDirectory ? (r.isFile = !1, r.isDirectory = !0, r.size = s.size) : (r.isFile = !1,
r.isDirectory = !1, r.size = null));
}
return {
exists: !!r.exists,
isFile: !!r.isFile,
isDirectory: !!r.isDirectory,
size: "number" == typeof r.size ? r.size : 0
};
}, u = t => {
const r = b(t);
if ("boolean" != typeof r.isDirectory || "boolean" != typeof r.isFile) {
const s = e.statSync(t);
s.error ? r.exists = !1 : (r.exists = !0, s.isFile ? (r.isFile = !0, r.isDirectory = !1,
r.size = s.size) : s.isDirectory ? (r.isFile = !1, r.isDirectory = !0, r.size = s.size) : (r.isFile = !1,
r.isDirectory = !1, r.size = null));
}
return {
exists: !!r.exists,
isFile: !!r.isFile,
isDirectory: !!r.isDirectory
};
}, d = async (t, s, n) => {
if ("string" != typeof t) throw new Error(`writeFile, invalid filePath: ${t}`);
if ("string" != typeof s) throw new Error(`writeFile, invalid content: ${t}`);
const o = {
ignored: !1,
changedContent: !1,
queuedWrite: !1
};
if (!0 === shouldIgnore(t)) return o.ignored = !0, o;
const i = b(t);
if (i.exists = !0, i.isFile = !0, i.isDirectory = !1, i.queueDeleteFromDisk = !1,
"string" == typeof i.fileText ? o.changedContent = i.fileText.replace(/\r/g, "") !== s.replace(/\r/g, "") : o.changedContent = !0,
i.fileText = s, o.queuedWrite = !1, null != n && ("string" == typeof n.outputTargetType && r.set(t, n.outputTargetType),
!1 === n.useCache && (i.useCache = !1)), null != n && !0 === n.inMemoryOnly) i.queueWriteToDisk ? o.queuedWrite = !0 : i.queueWriteToDisk = !1,
await h(t, !0); else if (null != n && !0 === n.immediateWrite) {
if (o.changedContent || !0 !== n.useCache) {
const r = await e.readFile(t);
"string" == typeof r && (o.changedContent = i.fileText.replace(/\r/g, "") !== r.replace(/\r/g, "")),
o.changedContent && (await h(t, !1), await e.writeFile(t, i.fileText));
}
} else i.queueWriteToDisk || !0 !== o.changedContent || (i.queueWriteToDisk = !0,
o.queuedWrite = !0);
return o;
}, h = async (e, t) => {
const r = [];
for (;"string" == typeof (e = path$2.dirname(e)) && e.length > 0 && "/" !== e && !1 === e.endsWith(":/") && !1 === e.endsWith(":\\"); ) r.push(e);
r.reverse(), await p(r, t);
}, p = async (t, r) => {
const s = [];
for (const n of t) {
const t = b(n);
if (!0 !== t.exists || !0 !== t.isDirectory) try {
t.exists = !0, t.isDirectory = !0, t.isFile = !1, r || await e.createDir(n), s.push(n);
} catch (e) {}
}
return s;
}, f = t => Promise.all(t.map((async t => {
const r = t[0], s = t[1];
return await e.copyFile(r, s), [ r, s ];
}))), m = e => Promise.all(e.map((async e => {
if ("string" != typeof e) throw new Error("unable to writeFile without filePath");
return g(e);
}))), g = async t => {
const r = b(t);
if (null == r.fileText) throw new Error(`unable to find item fileText to write: ${t}`);
return await e.writeFile(t, r.fileText), !1 === r.useCache && v(t), t;
}, y = async t => await Promise.all(t.map((async t => {
if ("string" != typeof t) throw new Error("unable to unlink without filePath");
return await e.removeFile(t), t;
}))), w = async t => {
const r = [];
for (const s of t) await e.removeDir(s), r.push(s);
return r;
}, _ = e => {
e = normalizePath(e), t.forEach(((t, r) => {
const s = path$2.relative(e, r).split("/")[0];
s.startsWith(".") || s.startsWith("/") || v(r);
}));
}, v = e => {
e = normalizePath(e);
const r = t.get(e);
null == r || r.queueWriteToDisk || t.delete(e);
}, b = e => {
e = normalizePath(e);
let r = t.get(e);
return null != r || t.set(e, r = {
exists: null,
fileText: null,
size: null,
mtimeMs: null,
isDirectory: null,
isFile: null,
queueCopyFileToDest: null,
queueDeleteFromDisk: null,
queueWriteToDisk: null,
useCache: null
}), r;
}, E = 5242880;
return {
access: async e => (await s(e)).exists,
accessSync: e => {
const t = b(e);
if ("boolean" != typeof t.exists) {
const r = u(e);
t.exists = r.exists, t.isDirectory = r.isDirectory, t.isFile = r.isFile;
}
return t.exists;
},
accessData: s,
cancelDeleteDirectoriesFromDisk: e => {
for (const t of e) {
const e = b(t);
!0 === e.queueDeleteFromDisk && (e.queueDeleteFromDisk = !1);
}
},
cancelDeleteFilesFromDisk: e => {
for (const t of e) {
const e = b(t);
!0 === e.isFile && !0 === e.queueDeleteFromDisk && (e.queueDeleteFromDisk = !1);
}
},
clearCache: () => t.clear(),
clearDirCache: _,
clearFileCache: v,
commit: async () => {
const e = getCommitInstructions(t), r = await p(e.dirsToEnsure, !1), s = await m(e.filesToWrite), n = await f(e.filesToCopy), o = await y(e.filesToDelete), i = await w(e.dirsToDelete);
return e.filesToDelete.forEach(v), e.dirsToDelete.forEach(_), {
filesCopied: n,
filesWritten: s,
filesDeleted: o,
dirsDeleted: i,
dirsAdded: r
};
},
copyFile: async (e, t) => {
b(e).queueCopyFileToDest = t;
},
emptyDirs: async e => {
e = e.filter(isString).map(normalizePath).reduce(((e, t) => (e.includes(t) || e.push(t),
e)), []);
const t = await Promise.all(e.map((e => n(e, {
recursive: !0
})))), r = [];
for (const e of t) for (const t of e) r.includes(t.absPath) || r.push(t.absPath);
r.sort(((e, t) => {
const r = e.split("/").length, s = t.split("/").length;
return r < s ? 1 : r > s ? -1 : 0;
})), await Promise.all(r.map(l)), e.forEach((e => {
const t = b(e);
t.isFile = !1, t.isDirectory = !0, t.queueWriteToDisk = !0, t.queueDeleteFromDisk = !1;
}));
},
getBuildOutputs: () => {
const e = [];
return r.forEach(((t, r) => {
const s = e.find((e => e.type === t));
s ? s.files.push(r) : e.push({
type: t,
files: [ r ]
});
})), e.forEach((e => e.files.sort())), e.sort(((e, t) => e.type < t.type ? -1 : e.type > t.type ? 1 : 0));
},
getItem: b,
getMemoryStats: () => `data length: ${t.size}`,
keys: () => Array.from(t.keys()).sort(),
readFile: async (t, r) => {
if (null == r || !0 === r.useCache || void 0 === r.useCache) {
const e = b(t);
if (e.exists && "string" == typeof e.fileText) return e.fileText;
}
const s = await e.readFile(t), n = b(t);
return "string" == typeof s ? s.length < E && (n.exists = !0, n.isFile = !0, n.isDirectory = !1,
n.fileText = s) : n.exists = !1, s;
},
readFileSync: (t, r) => {
if (null == r || !0 === r.useCache || void 0 === r.useCache) {
const e = b(t);
if (e.exists && "string" == typeof e.fileText) return e.fileText;
}
const s = e.readFileSync(t), n = b(t);
return "string" == typeof s ? s.length < E && (n.exists = !0, n.isFile = !0, n.isDirectory = !1,
n.fileText = s) : n.exists = !1, s;
},
readdir: n,
remove: async e => {
const t = await c(e);
!0 === t.isDirectory ? await a(e) : !0 === t.isFile && await l(e);
},
stat: c,
statSync: u,
sys: e,
writeFile: d,
writeFiles: (e, t) => {
const r = [];
return isIterable(e) ? e.forEach(((e, s) => {
r.push(d(s, e, t));
})) : Object.keys(e).map((s => {
r.push(d(s, e[s], t));
})), Promise.all(r);
}
};
})(e.sys)), this._fs;
}
}), Object.defineProperty(t, "cache", {
get() {
return null == this._cache && (this._cache = function r(e, t) {
e || (e = mockConfig()), t || (t = mockCompilerCtx(e)), e.enableCache = !0;
const r = new Cache(e, t.fs);
return r.initCacheDir(), r;
}(e, t)), this._cache;
}
}), t;
}
function findRootComponent(e, t) {
if (null != t) {
const r = t.children, s = r.length;
for (let t = 0; t < s; t++) {
const s = r[t];
if (e.has(s.nodeName.toLowerCase())) return s;
}
for (let t = 0; t < s; t++) {
const s = findRootComponent(e, r[t]);
if (null != s) return s;
}
}
return null;
}
async function initPageEvents(e) {
e._e2eEvents = new Map, e._e2eEventIds = 0, e.spyOnEvent = pageSpyOnEvent.bind(e, e),
await e.exposeFunction("stencilOnEvent", ((t, r) => {
!function s(e, t, r) {
const s = e.get(t);
s && s.callback(r);
}(e._e2eEvents, t, r);
})), await e.evaluateOnNewDocument(browserContextEvents);
}
async function pageSpyOnEvent(e, t, r) {
const s = new EventSpy(t), n = "document" !== r ? () => window : () => document, o = await e.evaluateHandle(n);
return await addE2EListener(e, o, t, (e => {
s.push(e);
})), s;
}
async function waitForEvent(e, t, r) {
const s = .5 * jasmine.DEFAULT_TIMEOUT_INTERVAL, n = await e.evaluate(((e, t, r) => new Promise(((s, n) => {
const o = setTimeout((() => {
n(new Error(`waitForEvent() timeout, eventName: ${t}`));
}), r);
e.addEventListener(t, (e => {
clearTimeout(o), s(window.stencilSerializeEvent(e));
}), {
once: !0
});
}))), r, t, s);
return await e.waitForChanges(), n;
}
async function addE2EListener(e, t, r, s) {
const n = e._e2eEventIds++;
e._e2eEvents.set(n, {
eventName: r,
callback: s
});
const o = t.executionContext();
await o.evaluate(((e, t, r) => {
e.addEventListener(r, (e => {
window.stencilOnEvent(t, window.stencilSerializeEvent(e));
}));
}), t, n, r);
}
function browserContextEvents() {
const e = () => {
const e = [], t = (e, r) => {
if (null != r && 1 === r.nodeType) for (let s = 0; s < r.children.length; s++) {
const n = r.children[s];
n.tagName.includes("-") && "function" == typeof n.componentOnReady && e.push(n.componentOnReady()),
t(e, n);
}
};
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: s, shadowSelector: n, text: o, contains: i} = getSelector(r);
let a;
if (a = "string" == typeof s ? await async function l(e, t, r, s) {
let n = await t.$(r);
if (!n) return null;
if (s) {
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);
}), n, s);
if (await n.dispose(), !t) return null;
n = t.asElement();
}
return n;
}(e, t, s, n) : await async function c(e, t, r, s) {
const n = await e.evaluateHandle(((e, t, r) => {
let s = null;
return function e(n) {
if (n && !s) if (3 === n.nodeType) {
if ("string" == typeof t && n.textContent.trim() === t) return void (s = n.parentElement);
if ("string" == typeof r && n.textContent.includes(r)) return void (s = n.parentElement);
} else {
if ("SCRIPT" === n.nodeName || "STYLE" === n.nodeName) return;
if (e(n.shadowRoot), n.childNodes) for (let t = 0; t < n.childNodes.length; t++) e(n.childNodes[t]);
}
}(e), s;
}), t, r, s);
return n ? n.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 s = [], {lightSelector: n, shadowSelector: o} = getSelector(r), i = await t.$$(n);
if (0 === i.length) return s;
if (o) for (let t = 0; t < i.length; t++) {
const r = i[t].executionContext(), n = 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 n.getProperties();
await n.dispose();
for (const t of a.values()) {
const r = t.asElement();
if (r) {
const t = new E2EElement(e, r);
await t.e2eSync(), s.push(t);
}
}
} else for (let t = 0; t < i.length; t++) {
const r = new E2EElement(e, i[t]);
await r.e2eSync(), s.push(r);
}
return s;
}
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;
}
async function writeScreenshotData(e, t) {
const r = function s(e, t) {
const r = `${t}.json`;
return path__default.default.join(e, r);
}(e, t.id), n = JSON.stringify(t, null, 2);
await writeFile(r, n);
}
function writeFile(e, t) {
return new Promise(((r, s) => {
fs__default.default.writeFile(e, t, (e => {
e ? s(e) : r();
}));
}));
}
async function compareScreenshot(e, t, r, s, n, o, i, a) {
const l = `${crypto$3.createHash("md5").update(r).digest("hex")}.png`, c = path$2.join(t.imagesDir, l);
await async function u(e, t) {
await function r(e) {
return new Promise((t => {
fs__default.default.access(e, (e => t(!e)));
}));
}(e) || await writeFile(e, t);
}(c, r), r = null, i && (i = normalizePath(path$2.relative(t.rootDir, i)));
const d = function h(e, t) {
if ("string" != typeof t || 0 === t.trim().length) throw new Error("invalid test description");
const r = crypto$3.createHash("md5");
return r.update(t + ":"), r.update(e.userAgent + ":"), 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").substr(0, 8).toLowerCase();
}(e, s), p = {
id: d,
image: l,
device: e.device,
userAgent: e.userAgent,
desc: s,
testPath: i,
width: n,
height: o,
deviceScaleFactor: e.viewport.deviceScaleFactor,
hasTouch: e.viewport.hasTouch,
isLandscape: e.viewport.isLandscape,
isMobile: e.viewport.isMobile,
diff: {
id: d,
desc: s,
imageA: l,
imageB: l,
mismatchedPixels: 0,
device: e.device,
userAgent: e.userAgent,
width: n,
height: o,
deviceScaleFactor: e.viewport.deviceScaleFactor,
hasTouch: e.viewport.hasTouch,
isLandscape: e.viewport.isLandscape,
isMobile: e.viewport.isMobile,
allowableMismatchedPixels: t.allowableMismatchedPixels,
allowableMismatchedRatio: t.allowableMismatchedRatio,
testPath: i
}
};
if (t.updateMaster) return await writeScreenshotData(t.currentBuildDir, p), p.diff;
const f = t.masterScreenshots[p.id];
if (!f) return await writeScreenshotData(t.currentBuildDir, p), p.diff;
if (p.diff.imageA = f, p.diff.imageA !== p.diff.imageB) {
p.diff.cacheKey = function m(e, t, r) {
const s = crypto$3.createHash("md5");
return s.update(`${e}:${t}:${r}`), s.digest("hex").substr(0, 10);
}(p.diff.imageA, p.diff.imageB, a);
const r = t.cache[p.diff.cacheKey];
if ("number" != typeof r || isNaN(r)) {
const r = Math.round(e.viewport.width * e.viewport.deviceScaleFactor), s = Math.round(e.viewport.height * e.viewport.deviceScaleFactor), n = {
imageAPath: path$2.join(t.imagesDir, p.diff.imageA),
imageBPath: path$2.join(t.imagesDir, p.diff.imageB),
width: r,
height: s,
pixelmatchThreshold: a
};
p.diff.mismatchedPixels = await async function g(e, t) {
return new Promise(((r, s) => {
const n = .5 * jasmine.DEFAULT_TIMEOUT_INTERVAL, o = setTimeout((() => {
s(`getMismatchedPixels timeout: ${n}ms`);
}), n);
try {
const n = {
execArgv: process.execArgv.filter((e => !/^--(debug|inspect)/.test(e))),
env: process.env,
cwd: process.cwd(),
stdio: [ "pipe", "pipe", "pipe", "ipc" ]
}, i = child_process$2.fork(e, [], n);
i.on("message", (e => {
i.kill(), clearTimeout(o), r(e);
})), i.on("error", (e => {
clearTimeout(o), s(e);
})), i.send(t);
} catch (e) {
clearTimeout(o), s(`getMismatchedPixels error: ${e}`);
}
}));
}(t.pixelmatchModulePath, n);
} else p.diff.mismatchedPixels = r;
}
return await writeScreenshotData(t.currentBuildDir, p), p.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 s = env.__STENCIL_BROWSER_URL__;
if ("string" != typeof s) throw new Error("invalid gotoTest() browser url");
const n = s + t.substring(1);
r.waitUntil || (r.waitUntil = env.__STENCIL_BROWSER_WAIT_UNTIL);
const o = await e._e2eGoto(n, 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 s = [], n = env.__STENCIL_APP_SCRIPT_URL__;
if ("string" != typeof n) throw new Error("invalid e2eSetContent() app script url");
s.push("<!doctype html>"), s.push("<html>"), s.push("<head>");
const o = env.__STENCIL_APP_STYLE_URL__;
"string" == typeof o && s.push(`<link rel="stylesheet" href="${o}">`), s.push(`<script type="module" src="${n}"><\/script>`),
s.push("</head>"), s.push("<body>"), s.push(t), s.push("</body>"), s.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: s.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 s = e.children, n = s.length;
for (let e = 0; e < n; e++) {
const n = s[e];
null != n && (n.tagName.includes("-") && "function" == typeof n.componentOnReady && t.push(n.componentOnReady()),
r(n, 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())}`;
}
var posix, pathBrowserify, caller, pathParse, parse, getNodeModulesDirs, nodeModulesPaths, normalizeOptions, ERROR_MESSAGE, 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 path$2 = require("path"), index_js = _lazyRequire("../dev-server/index.js"), stencil_js = require("../compiler/stencil.js"), appData = _lazyRequire("@stencil/core/internal/app-data"), index_cjs = _lazyRequire("../mock-doc/index.cjs"), testing = _lazyRequire("@stencil/core/internal/testing"), process$3 = require("process"), os$2 = require("os"), fs$2 = require("fs"), crypto$3 = require("crypto"), child_process$2 = require("child_process"), path__default = _interopDefaultLegacy(path$2), process__namespace = _interopNamespace(process$3), os__namespace = _interopNamespace(os$2), fs__default = _interopDefaultLegacy(fs$2), 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 (var r = t.length - 1; r >= 0 && !t[r]; r--) t.pop();
return t;
}, noop = () => {}, isFunction = e => "function" == typeof e, isString = e => "string" == typeof e, isIterable = e => (e => null != e)(e) && isFunction(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 => {
if ("string" != typeof e) throw new Error("invalid path to normalize");
e = normalizeSlashes(e.trim());
const t = pathComponents(e, getRootLength(e)), r = reducePathComponents(t), s = r[0], n = r[1], o = s + r.slice(1).join("/");
return "" === o ? "." : "" === s && n && e.includes("/") && !n.startsWith(".") && !n.startsWith("@") ? "./" + o : o;
}, 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 s = e[r];
if (s && "." !== s) {
if (".." === s) if (t.length > 1) {
if (".." !== t[t.length - 1]) {
t.pop();
continue;
}
} else if (t[0]) continue;
t.push(s);
}
}
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 + "://".length, s = e.indexOf("/", t);
if (-1 !== s) {
const n = e.slice(0, r), o = e.slice(t, s);
if ("file" === n && ("" === o || "localhost" === o) && isVolumeCharacter(e.charCodeAt(s + 1))) {
const t = getFileUrlVolumeSeparatorEnd(e, s + 2);
if (-1 !== t) {
if (47 === e.charCodeAt(t)) return ~(t + 1);
if (t === e.length) return ~t;
}
}
return ~(s + 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), s = e.substring(t).split("/"), n = s.length;
return n > 0 && !s[n - 1] && s.pop(), [ r, ...s ];
}, normalizeFsPath = e => normalizePath(e.split("?")[0].replace(/\0/g, "")), flattenDiagnosticMessageText = (e, t) => {
if ("string" == typeof t) return t;
if (void 0 === t) return "";
const r = [], s = e.file.fileName.includes("stencil.config");
s && r.push(2322);
let n = "";
if (!r.includes(t.code) && (n = t.messageText, isIterable(t.next))) for (const r of t.next) n += flattenDiagnosticMessageText(e, r);
return s && (n = n.replace("type 'StencilConfig'", "Stencil Config"), n = n.replace("Object literal may only specify known properties, but ", ""),
n = n.replace("Object literal may only specify known properties, and ", "")), n.trim();
}, isOutputTargetDistLazy = e => e.type === DIST_LAZY, isOutputTargetWww = e => e.type === WWW, DIST_LAZY = "dist-lazy", WWW = "www", isJest27TransformOptions = e => "object" == typeof e && e.hasOwnProperty("config");
let _tsCompilerOptions = null, _tsCompilerOptionsKey = null;
const jestPreprocessor = {
process(e, t, r, s) {
if (isJest27TransformOptions(r) && (s = r.config), function n(e, t) {
const r = e.split(".").pop().toLowerCase().split("?")[0];
if ("ts" === r || "tsx" === r || "jsx" === r) return !0;
if ("mjs" === r) return !0;
if ("js" === r) {
if (t.includes("import ") || t.includes("import.") || t.includes("import(")) return !0;
if (t.includes("export ")) return !0;
}
return "css" === r;
}(t, e)) {
const r = {
file: t,
currentDirectory: s.rootDir
}, n = getCompilerOptions(s.rootDir);
n && (n.baseUrl && (r.baseUrl = n.baseUrl), n.paths && (r.paths = n.paths));
const o = transpile(e, r), i = o.diagnostics.some((e => "error" === e.level));
if (o.diagnostics && i) {
const e = o.diagnostics.map(formatDiagnostic).join("\n\n");
throw new Error(e);
}
return o.code;
}
return e;
},
getCacheKey(e, t, r, s) {
if (isJest27TransformOptions(r) && (s = r.config), !_tsCompilerOptionsKey) {
const e = getCompilerOptions(s.rootDir);
_tsCompilerOptionsKey = JSON.stringify(e);
}
return [ process.version, _tsCompilerOptionsKey, e, t, r, !!s.instrument, 7 ].join(":");
}
}, deepEqual = function e(t, r) {
var s, n, o, i, a, l, c, u, d, h;
if (t === r) return !0;
if (t && r && "object" == typeof t && "object" == typeof r) {
if (s = Array.isArray(t), n = Array.isArray(r), s && n) {
if ((i = t.length) != r.length) return !1;
for (o