@shopify/cli
Version:
A CLI tool to build for the Shopify platform
1,038 lines (1,020 loc) • 9.53 MB
JavaScript
import {
require_src,
require_supports_color
} from "./chunk-UMUTXITN.js";
import {
require_semver
} from "./chunk-HMDWNGIV.js";
import {
require_brace_expansion,
require_source_map_support
} from "./chunk-G5R6YD27.js";
import {
require_is_wsl
} from "./chunk-G2ZZKGSV.js";
import {
require_indent_string
} from "./chunk-UV5N2VL7.js";
import {
__commonJS,
__require,
init_cjs_shims
} from "./chunk-PKR7KJ6P.js";
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/util/util.js
var require_util = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/util/util.js"(exports) {
"use strict";
init_cjs_shims();
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.pickBy = pickBy;
exports.compact = compact;
exports.uniqBy = uniqBy;
exports.last = last;
exports.sortBy = sortBy;
exports.castArray = castArray;
exports.isProd = isProd;
exports.maxBy = maxBy;
exports.sumBy = sumBy;
exports.capitalize = capitalize;
exports.isTruthy = isTruthy;
exports.isNotFalsy = isNotFalsy;
exports.uniq = uniq;
exports.mapValues = mapValues;
exports.mergeNestedObjects = mergeNestedObjects;
function pickBy(obj, fn) {
return Object.entries(obj).reduce((o, [k, v]) => (fn(v) && (o[k] = v), o), {});
}
function compact(a) {
return a.filter((a2) => !!a2);
}
function uniqBy(arr, fn) {
return arr.filter((a, i) => {
let aVal = fn(a);
return !arr.some((b, j) => j > i && fn(b) === aVal);
});
}
function last(arr) {
if (arr)
return arr.at(-1);
}
function compare(a, b) {
if (a = a === void 0 ? 0 : a, b = b === void 0 ? 0 : b, Array.isArray(a) && Array.isArray(b)) {
if (a.length === 0 && b.length === 0)
return 0;
let diff = compare(a[0], b[0]);
return diff !== 0 ? diff : compare(a.slice(1), b.slice(1));
}
return a < b ? -1 : a > b ? 1 : 0;
}
function sortBy(arr, fn) {
return arr.sort((a, b) => compare(fn(a), fn(b)));
}
function castArray(input) {
return input === void 0 ? [] : Array.isArray(input) ? input : [input];
}
function isProd() {
return !["development", "test"].includes(process.env.NODE_ENV ?? "");
}
function maxBy(arr, fn) {
if (arr.length !== 0)
return arr.reduce((maxItem, i) => {
let curr = fn(i), max = fn(maxItem);
return curr > max ? i : maxItem;
});
}
function sumBy(arr, fn) {
return arr.reduce((sum, i) => sum + fn(i), 0);
}
function capitalize(s) {
return s ? s.charAt(0).toUpperCase() + s.slice(1).toLowerCase() : "";
}
function isTruthy(input) {
return ["1", "true", "y", "yes"].includes(input.toLowerCase());
}
function isNotFalsy(input) {
return !["0", "false", "n", "no"].includes(input.toLowerCase());
}
function uniq(arr) {
return [...new Set(arr)].sort();
}
function mapValues(obj, fn) {
return Object.entries(obj).reduce((o, [k, v]) => (o[k] = fn(v, k), o), {});
}
function get(obj, path) {
return path.split(".").reduce((o, p) => o?.[p], obj);
}
function mergeNestedObjects(objs, path) {
return Object.fromEntries(objs.flatMap((o) => Object.entries(get(o, path) ?? {})).reverse());
}
}
});
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/util/fs.js
var require_fs = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/util/fs.js"(exports) {
"use strict";
init_cjs_shims();
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.fileExists = exports.dirExists = void 0;
exports.readJson = readJson;
exports.safeReadJson = safeReadJson;
exports.existsSync = existsSync;
var node_fs_1 = __require("node:fs"), promises_1 = __require("node:fs/promises"), util_1 = require_util(), dirExists = async (input) => {
let dirStat;
try {
dirStat = await (0, promises_1.stat)(input);
} catch {
throw new Error(`No directory found at ${input}`);
}
if (!dirStat.isDirectory())
throw new Error(`${input} exists but is not a directory`);
return input;
};
exports.dirExists = dirExists;
var fileExists = async (input) => {
let fileStat;
try {
fileStat = await (0, promises_1.stat)(input);
} catch {
throw new Error(`No file found at ${input}`);
}
if (!fileStat.isFile())
throw new Error(`${input} exists but is not a file`);
return input;
};
exports.fileExists = fileExists;
var ProdOnlyCache = class extends Map {
set(key, value) {
return ((0, util_1.isProd)() ?? !1) && super.set(key, value), this;
}
}, cache = new ProdOnlyCache();
async function readJson(path, useCache = !0) {
if (useCache && cache.has(path))
return JSON.parse(cache.get(path));
let contents = await (0, promises_1.readFile)(path, "utf8");
return cache.set(path, contents), JSON.parse(contents);
}
async function safeReadJson(path, useCache = !0) {
try {
return await readJson(path, useCache);
} catch {
}
}
function existsSync(path) {
return (0, node_fs_1.existsSync)(path);
}
}
});
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/args.js
var require_args = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/args.js"(exports) {
"use strict";
init_cjs_shims();
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.string = exports.url = exports.file = exports.directory = exports.integer = exports.boolean = void 0;
exports.custom = custom;
var node_url_1 = __require("node:url"), fs_1 = require_fs(), util_1 = require_util();
function custom(defaults) {
return (options = {}) => ({
parse: async (i, _context, _opts) => i,
...defaults,
...options,
input: [],
type: "option"
});
}
exports.boolean = custom({
parse: async (b) => !!b && (0, util_1.isNotFalsy)(b)
});
exports.integer = custom({
async parse(input, _, opts) {
if (!/^-?\d+$/.test(input))
throw new Error(`Expected an integer but received: ${input}`);
let num = Number.parseInt(input, 10);
if (opts.min !== void 0 && num < opts.min)
throw new Error(`Expected an integer greater than or equal to ${opts.min} but received: ${input}`);
if (opts.max !== void 0 && num > opts.max)
throw new Error(`Expected an integer less than or equal to ${opts.max} but received: ${input}`);
return num;
}
});
exports.directory = custom({
async parse(input, _, opts) {
return opts.exists ? (0, fs_1.dirExists)(input) : input;
}
});
exports.file = custom({
async parse(input, _, opts) {
return opts.exists ? (0, fs_1.fileExists)(input) : input;
}
});
exports.url = custom({
async parse(input) {
try {
return new node_url_1.URL(input);
} catch {
throw new Error(`Expected a valid url but received: ${input}`);
}
}
});
var stringArg = custom({});
exports.string = stringArg;
}
});
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/package.json
var require_package = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/package.json"(exports, module) {
module.exports = {
name: "@oclif/core",
description: "base library for oclif CLIs",
version: "4.4.0",
author: "Salesforce",
bugs: "https://github.com/oclif/core/issues",
dependencies: {
"ansi-escapes": "^4.3.2",
ansis: "^3.17.0",
"clean-stack": "^3.0.1",
"cli-spinners": "^2.9.2",
debug: "^4.4.0",
ejs: "^3.1.10",
"get-package-type": "^0.1.0",
"indent-string": "^4.0.0",
"is-wsl": "^2.2.0",
lilconfig: "^3.1.3",
minimatch: "^9.0.5",
semver: "^7.6.3",
"string-width": "^4.2.3",
"supports-color": "^8",
tinyglobby: "^0.2.14",
"widest-line": "^3.1.0",
wordwrap: "^1.0.0",
"wrap-ansi": "^7.0.0"
},
devDependencies: {
"@commitlint/config-conventional": "^19",
"@eslint/compat": "^1.3.0",
"@oclif/plugin-help": "^6",
"@oclif/plugin-plugins": "^5",
"@oclif/prettier-config": "^0.2.1",
"@oclif/test": "^4",
"@types/benchmark": "^2.1.5",
"@types/chai": "^4.3.16",
"@types/chai-as-promised": "^7.1.8",
"@types/clean-stack": "^2.1.1",
"@types/debug": "^4.1.10",
"@types/ejs": "^3.1.5",
"@types/indent-string": "^4.0.1",
"@types/mocha": "^10.0.10",
"@types/node": "^18",
"@types/pnpapi": "^0.0.5",
"@types/sinon": "^17.0.3",
"@types/supports-color": "^8.1.3",
"@types/wordwrap": "^1.0.3",
"@types/wrap-ansi": "^3.0.0",
benchmark: "^2.1.4",
chai: "^4.5.0",
"chai-as-promised": "^7.1.2",
commitlint: "^19",
"cross-env": "^7.0.3",
eslint: "^9",
"eslint-config-oclif": "^6",
"eslint-config-prettier": "^10",
husky: "^9.1.7",
"lint-staged": "^15",
madge: "^6.1.0",
mocha: "^10.8.2",
nyc: "^15.1.0",
prettier: "^3.5.3",
shx: "^0.4.0",
sinon: "^18",
"ts-node": "^10.9.2",
tsd: "^0.32.0",
typescript: "^5"
},
engines: {
node: ">=18.0.0"
},
files: [
"/lib"
],
homepage: "https://github.com/oclif/core",
keywords: [
"oclif",
"cli",
"command",
"command line",
"parser",
"args",
"argv"
],
license: "MIT",
exports: {
".": "./lib/index.js",
"./args": "./lib/args.js",
"./command": "./lib/command.js",
"./config": "./lib/config/index.js",
"./errors": "./lib/errors/index.js",
"./execute": "./lib/execute.js",
"./flags": "./lib/flags.js",
"./flush": "./lib/flush.js",
"./handle": "./lib/errors/handle.js",
"./help": "./lib/help/index.js",
"./hooks": "./lib/interfaces/hooks.js",
"./interfaces": "./lib/interfaces/index.js",
"./logger": "./lib/logger.js",
"./package.json": "./package.json",
"./parser": "./lib/parser/index.js",
"./performance": "./lib/performance.js",
"./run": "./lib/main.js",
"./settings": "./lib/settings.js",
"./util/ids": "./lib/util/ids.js",
"./ux": "./lib/ux/index.js"
},
repository: "oclif/core",
oclif: {
bin: "oclif",
devPlugins: [
"@oclif/plugin-help",
"@oclif/plugin-plugins"
]
},
publishConfig: {
access: "public"
},
scripts: {
build: "shx rm -rf lib && tsc",
compile: "tsc",
format: 'prettier --write "+(src|test)/**/*.+(ts|js|json)"',
lint: "eslint",
posttest: "yarn lint && yarn test:circular-deps",
prepack: "yarn run build",
prepare: "husky",
"test:circular-deps": "yarn build && madge lib/ -c",
"test:debug": 'nyc mocha --debug-brk --inspect "test/**/*.test.ts"',
"test:integration": 'mocha --forbid-only "test/**/*.integration.ts" --parallel --timeout 1200000',
"test:interoperability": "cross-env DEBUG=integration:* ts-node test/integration/interop.ts",
"test:perf": "ts-node test/perf/parser.perf.ts",
test: 'nyc mocha --forbid-only "test/**/*.test.ts" --parallel'
},
types: "lib/index.d.ts"
};
}
});
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/cache.js
var require_cache = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/cache.js"(exports) {
"use strict";
init_cjs_shims();
Object.defineProperty(exports, "__esModule", { value: !0 });
var node_fs_1 = __require("node:fs"), node_path_1 = __require("node:path"), Cache = class _Cache extends Map {
static instance;
constructor() {
super(), this.set("@oclif/core", this.getOclifCoreMeta());
}
static getInstance() {
return _Cache.instance || (_Cache.instance = new _Cache()), _Cache.instance;
}
get(key) {
return super.get(key);
}
getOclifCoreMeta() {
try {
return { name: "@oclif/core", version: require_package().version };
} catch {
try {
return {
name: "@oclif/core",
version: JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, "..", "package.json"), "utf8")).version
};
} catch {
return { name: "@oclif/core", version: "unknown" };
}
}
}
};
exports.default = Cache;
}
});
// ../../node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/lib/utils.js
var require_utils = __commonJS({
"../../node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/lib/utils.js"(exports) {
"use strict";
init_cjs_shims();
var regExpChars = /[|\\{}()[\]^$+*?.]/g, hasOwnProperty = Object.prototype.hasOwnProperty, hasOwn = function(obj, key) {
return hasOwnProperty.apply(obj, [key]);
};
exports.escapeRegExpChars = function(string) {
return string ? String(string).replace(regExpChars, "\\$&") : "";
};
var _ENCODE_HTML_RULES = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'"
}, _MATCH_HTML = /[&<>'"]/g;
function encode_char(c) {
return _ENCODE_HTML_RULES[c] || c;
}
var escapeFuncStr = `var _ENCODE_HTML_RULES = {
"&": "&"
, "<": "<"
, ">": ">"
, '"': """
, "'": "'"
}
, _MATCH_HTML = /[&<>'"]/g;
function encode_char(c) {
return _ENCODE_HTML_RULES[c] || c;
};
`;
exports.escapeXML = function(markup) {
return markup == null ? "" : String(markup).replace(_MATCH_HTML, encode_char);
};
function escapeXMLToString() {
return Function.prototype.toString.call(this) + `;
` + escapeFuncStr;
}
try {
typeof Object.defineProperty == "function" ? Object.defineProperty(exports.escapeXML, "toString", { value: escapeXMLToString }) : exports.escapeXML.toString = escapeXMLToString;
} catch {
console.warn("Unable to set escapeXML.toString (is the Function prototype frozen?)");
}
exports.shallowCopy = function(to, from) {
if (from = from || {}, to != null)
for (var p in from)
hasOwn(from, p) && (p === "__proto__" || p === "constructor" || (to[p] = from[p]));
return to;
};
exports.shallowCopyFromList = function(to, from, list) {
if (list = list || [], from = from || {}, to != null)
for (var i = 0; i < list.length; i++) {
var p = list[i];
if (typeof from[p] < "u") {
if (!hasOwn(from, p) || p === "__proto__" || p === "constructor")
continue;
to[p] = from[p];
}
}
return to;
};
exports.cache = {
_data: {},
set: function(key, val) {
this._data[key] = val;
},
get: function(key) {
return this._data[key];
},
remove: function(key) {
delete this._data[key];
},
reset: function() {
this._data = {};
}
};
exports.hyphenToCamel = function(str) {
return str.replace(/-[a-z]/g, function(match) {
return match[1].toUpperCase();
});
};
exports.createNullProtoObjWherePossible = function() {
return typeof Object.create == "function" ? function() {
return /* @__PURE__ */ Object.create(null);
} : { __proto__: null } instanceof Object ? function() {
return {};
} : function() {
return { __proto__: null };
};
}();
exports.hasOwnOnlyObject = function(obj) {
var o = exports.createNullProtoObjWherePossible();
for (var p in obj)
hasOwn(obj, p) && (o[p] = obj[p]);
return o;
};
}
});
// ../../node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/package.json
var require_package2 = __commonJS({
"../../node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/package.json"(exports, module) {
module.exports = {
name: "ejs",
description: "Embedded JavaScript templates",
keywords: [
"template",
"engine",
"ejs"
],
version: "3.1.10",
author: "Matthew Eernisse <mde@fleegix.org> (http://fleegix.org)",
license: "Apache-2.0",
bin: {
ejs: "./bin/cli.js"
},
main: "./lib/ejs.js",
jsdelivr: "ejs.min.js",
unpkg: "ejs.min.js",
repository: {
type: "git",
url: "git://github.com/mde/ejs.git"
},
bugs: "https://github.com/mde/ejs/issues",
homepage: "https://github.com/mde/ejs",
dependencies: {
jake: "^10.8.5"
},
devDependencies: {
browserify: "^16.5.1",
eslint: "^6.8.0",
"git-directory-deploy": "^1.5.1",
jsdoc: "^4.0.2",
"lru-cache": "^4.0.1",
mocha: "^10.2.0",
"uglify-js": "^3.3.16"
},
engines: {
node: ">=0.10.0"
},
scripts: {
test: "npx jake test"
}
};
}
});
// ../../node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/lib/ejs.js
var require_ejs = __commonJS({
"../../node_modules/.pnpm/ejs@3.1.10/node_modules/ejs/lib/ejs.js"(exports) {
"use strict";
init_cjs_shims();
var fs = __require("fs"), path = __require("path"), utils = require_utils(), scopeOptionWarned = !1, _VERSION_STRING = require_package2().version, _DEFAULT_OPEN_DELIMITER = "<", _DEFAULT_CLOSE_DELIMITER = ">", _DEFAULT_DELIMITER = "%", _DEFAULT_LOCALS_NAME = "locals", _NAME = "ejs", _REGEX_STRING = "(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)", _OPTS_PASSABLE_WITH_DATA = [
"delimiter",
"scope",
"context",
"debug",
"compileDebug",
"client",
"_with",
"rmWhitespace",
"strict",
"filename",
"async"
], _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat("cache"), _BOM = /^\uFEFF/, _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;
exports.cache = utils.cache;
exports.fileLoader = fs.readFileSync;
exports.localsName = _DEFAULT_LOCALS_NAME;
exports.promiseImpl = new Function("return this;")().Promise;
exports.resolveInclude = function(name, filename, isDir) {
var dirname = path.dirname, extname = path.extname, resolve = path.resolve, includePath = resolve(isDir ? filename : dirname(filename), name), ext = extname(name);
return ext || (includePath += ".ejs"), includePath;
};
function resolvePaths(name, paths) {
var filePath;
if (paths.some(function(v) {
return filePath = exports.resolveInclude(name, v, !0), fs.existsSync(filePath);
}))
return filePath;
}
function getIncludePath(path2, options) {
var includePath, filePath, views = options.views, match = /^[A-Za-z]+:\\|^\//.exec(path2);
if (match && match.length)
path2 = path2.replace(/^\/*/, ""), Array.isArray(options.root) ? includePath = resolvePaths(path2, options.root) : includePath = exports.resolveInclude(path2, options.root || "/", !0);
else if (options.filename && (filePath = exports.resolveInclude(path2, options.filename), fs.existsSync(filePath) && (includePath = filePath)), !includePath && Array.isArray(views) && (includePath = resolvePaths(path2, views)), !includePath && typeof options.includer != "function")
throw new Error('Could not find the include file "' + options.escapeFunction(path2) + '"');
return includePath;
}
function handleCache(options, template) {
var func, filename = options.filename, hasTemplate = arguments.length > 1;
if (options.cache) {
if (!filename)
throw new Error("cache option requires a filename");
if (func = exports.cache.get(filename), func)
return func;
hasTemplate || (template = fileLoader(filename).toString().replace(_BOM, ""));
} else if (!hasTemplate) {
if (!filename)
throw new Error("Internal EJS error: no file name or template provided");
template = fileLoader(filename).toString().replace(_BOM, "");
}
return func = exports.compile(template, options), options.cache && exports.cache.set(filename, func), func;
}
function tryHandleCache(options, data, cb) {
var result;
if (cb) {
try {
result = handleCache(options)(data);
} catch (err) {
return cb(err);
}
cb(null, result);
} else {
if (typeof exports.promiseImpl == "function")
return new exports.promiseImpl(function(resolve, reject) {
try {
result = handleCache(options)(data), resolve(result);
} catch (err) {
reject(err);
}
});
throw new Error("Please provide a callback function");
}
}
function fileLoader(filePath) {
return exports.fileLoader(filePath);
}
function includeFile(path2, options) {
var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);
if (opts.filename = getIncludePath(path2, opts), typeof options.includer == "function") {
var includerResult = options.includer(path2, opts.filename);
if (includerResult && (includerResult.filename && (opts.filename = includerResult.filename), includerResult.template))
return handleCache(opts, includerResult.template);
}
return handleCache(opts);
}
function rethrow(err, str, flnm, lineno, esc) {
var lines = str.split(`
`), start = Math.max(lineno - 3, 0), end = Math.min(lines.length, lineno + 3), filename = esc(flnm), context = lines.slice(start, end).map(function(line, i) {
var curr = i + start + 1;
return (curr == lineno ? " >> " : " ") + curr + "| " + line;
}).join(`
`);
throw err.path = filename, err.message = (filename || "ejs") + ":" + lineno + `
` + context + `
` + err.message, err;
}
function stripSemi(str) {
return str.replace(/;(\s*$)/, "$1");
}
exports.compile = function(template, opts) {
var templ;
return opts && opts.scope && (scopeOptionWarned || (console.warn("`scope` option is deprecated and will be removed in EJS 3"), scopeOptionWarned = !0), opts.context || (opts.context = opts.scope), delete opts.scope), templ = new Template(template, opts), templ.compile();
};
exports.render = function(template, d, o) {
var data = d || utils.createNullProtoObjWherePossible(), opts = o || utils.createNullProtoObjWherePossible();
return arguments.length == 2 && utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA), handleCache(opts, template)(data);
};
exports.renderFile = function() {
var args = Array.prototype.slice.call(arguments), filename = args.shift(), cb, opts = { filename }, data, viewOpts;
return typeof arguments[arguments.length - 1] == "function" && (cb = args.pop()), args.length ? (data = args.shift(), args.length ? utils.shallowCopy(opts, args.pop()) : (data.settings && (data.settings.views && (opts.views = data.settings.views), data.settings["view cache"] && (opts.cache = !0), viewOpts = data.settings["view options"], viewOpts && utils.shallowCopy(opts, viewOpts)), utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS)), opts.filename = filename) : data = utils.createNullProtoObjWherePossible(), tryHandleCache(opts, data, cb);
};
exports.Template = Template;
exports.clearCache = function() {
exports.cache.reset();
};
function Template(text, optsParam) {
var opts = utils.hasOwnOnlyObject(optsParam), options = utils.createNullProtoObjWherePossible();
this.templateText = text, this.mode = null, this.truncate = !1, this.currentLine = 1, this.source = "", options.client = opts.client || !1, options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML, options.compileDebug = opts.compileDebug !== !1, options.debug = !!opts.debug, options.filename = opts.filename, options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER, options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER, options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER, options.strict = opts.strict || !1, options.context = opts.context, options.cache = opts.cache || !1, options.rmWhitespace = opts.rmWhitespace, options.root = opts.root, options.includer = opts.includer, options.outputFunctionName = opts.outputFunctionName, options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME, options.views = opts.views, options.async = opts.async, options.destructuredLocals = opts.destructuredLocals, options.legacyInclude = typeof opts.legacyInclude < "u" ? !!opts.legacyInclude : !0, options.strict ? options._with = !1 : options._with = typeof opts._with < "u" ? opts._with : !0, this.opts = options, this.regex = this.createRegex();
}
Template.modes = {
EVAL: "eval",
ESCAPED: "escaped",
RAW: "raw",
COMMENT: "comment",
LITERAL: "literal"
};
Template.prototype = {
createRegex: function() {
var str = _REGEX_STRING, delim = utils.escapeRegExpChars(this.opts.delimiter), open = utils.escapeRegExpChars(this.opts.openDelimiter), close = utils.escapeRegExpChars(this.opts.closeDelimiter);
return str = str.replace(/%/g, delim).replace(/</g, open).replace(/>/g, close), new RegExp(str);
},
compile: function() {
var src, fn, opts = this.opts, prepended = "", appended = "", escapeFn = opts.escapeFunction, ctor, sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : "undefined";
if (!this.source) {
if (this.generateSource(), prepended += ` var __output = "";
function __append(s) { if (s !== undefined && s !== null) __output += s }
`, opts.outputFunctionName) {
if (!_JS_IDENTIFIER.test(opts.outputFunctionName))
throw new Error("outputFunctionName is not a valid JS identifier.");
prepended += " var " + opts.outputFunctionName + ` = __append;
`;
}
if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName))
throw new Error("localsName is not a valid JS identifier.");
if (opts.destructuredLocals && opts.destructuredLocals.length) {
for (var destructuring = " var __locals = (" + opts.localsName + ` || {}),
`, i = 0; i < opts.destructuredLocals.length; i++) {
var name = opts.destructuredLocals[i];
if (!_JS_IDENTIFIER.test(name))
throw new Error("destructuredLocals[" + i + "] is not a valid JS identifier.");
i > 0 && (destructuring += `,
`), destructuring += name + " = __locals." + name;
}
prepended += destructuring + `;
`;
}
opts._with !== !1 && (prepended += " with (" + opts.localsName + ` || {}) {
`, appended += ` }
`), appended += ` return __output;
`, this.source = prepended + this.source + appended;
}
opts.compileDebug ? src = `var __line = 1
, __lines = ` + JSON.stringify(this.templateText) + `
, __filename = ` + sanitizedFilename + `;
try {
` + this.source + `} catch (e) {
rethrow(e, __lines, __filename, __line, escapeFn);
}
` : src = this.source, opts.client && (src = "escapeFn = escapeFn || " + escapeFn.toString() + `;
` + src, opts.compileDebug && (src = "rethrow = rethrow || " + rethrow.toString() + `;
` + src)), opts.strict && (src = `"use strict";
` + src), opts.debug && console.log(src), opts.compileDebug && opts.filename && (src = src + `
//# sourceURL=` + sanitizedFilename + `
`);
try {
if (opts.async)
try {
ctor = new Function("return (async function(){}).constructor;")();
} catch (e) {
throw e instanceof SyntaxError ? new Error("This environment does not support async/await") : e;
}
else
ctor = Function;
fn = new ctor(opts.localsName + ", escapeFn, include, rethrow", src);
} catch (e) {
throw e instanceof SyntaxError && (opts.filename && (e.message += " in " + opts.filename), e.message += ` while compiling ejs
`, e.message += `If the above error is not helpful, you may want to try EJS-Lint:
`, e.message += "https://github.com/RyanZim/EJS-Lint", opts.async || (e.message += `
`, e.message += "Or, if you meant to create an async function, pass `async: true` as an option.")), e;
}
var returnedFn = opts.client ? fn : function(data) {
var include = function(path2, includeData) {
var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);
return includeData && (d = utils.shallowCopy(d, includeData)), includeFile(path2, opts)(d);
};
return fn.apply(
opts.context,
[data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]
);
};
if (opts.filename && typeof Object.defineProperty == "function") {
var filename = opts.filename, basename = path.basename(filename, path.extname(filename));
try {
Object.defineProperty(returnedFn, "name", {
value: basename,
writable: !1,
enumerable: !1,
configurable: !0
});
} catch {
}
}
return returnedFn;
},
generateSource: function() {
var opts = this.opts;
opts.rmWhitespace && (this.templateText = this.templateText.replace(/[\r\n]+/g, `
`).replace(/^\s+|\s+$/gm, "")), this.templateText = this.templateText.replace(/[ \t]*<%_/gm, "<%_").replace(/_%>[ \t]*/gm, "_%>");
var self = this, matches = this.parseTemplateText(), d = this.opts.delimiter, o = this.opts.openDelimiter, c = this.opts.closeDelimiter;
matches && matches.length && matches.forEach(function(line, index) {
var closing;
if (line.indexOf(o + d) === 0 && line.indexOf(o + d + d) !== 0 && (closing = matches[index + 2], !(closing == d + c || closing == "-" + d + c || closing == "_" + d + c)))
throw new Error('Could not find matching close tag for "' + line + '".');
self.scanLine(line);
});
},
parseTemplateText: function() {
for (var str = this.templateText, pat = this.regex, result = pat.exec(str), arr = [], firstPos; result; )
firstPos = result.index, firstPos !== 0 && (arr.push(str.substring(0, firstPos)), str = str.slice(firstPos)), arr.push(result[0]), str = str.slice(result[0].length), result = pat.exec(str);
return str && arr.push(str), arr;
},
_addOutput: function(line) {
if (this.truncate && (line = line.replace(/^(?:\r\n|\r|\n)/, ""), this.truncate = !1), !line)
return line;
line = line.replace(/\\/g, "\\\\"), line = line.replace(/\n/g, "\\n"), line = line.replace(/\r/g, "\\r"), line = line.replace(/"/g, '\\"'), this.source += ' ; __append("' + line + `")
`;
},
scanLine: function(line) {
var self = this, d = this.opts.delimiter, o = this.opts.openDelimiter, c = this.opts.closeDelimiter, newLineCount = 0;
switch (newLineCount = line.split(`
`).length - 1, line) {
case o + d:
case o + d + "_":
this.mode = Template.modes.EVAL;
break;
case o + d + "=":
this.mode = Template.modes.ESCAPED;
break;
case o + d + "-":
this.mode = Template.modes.RAW;
break;
case o + d + "#":
this.mode = Template.modes.COMMENT;
break;
case o + d + d:
this.mode = Template.modes.LITERAL, this.source += ' ; __append("' + line.replace(o + d + d, o + d) + `")
`;
break;
case d + d + c:
this.mode = Template.modes.LITERAL, this.source += ' ; __append("' + line.replace(d + d + c, d + c) + `")
`;
break;
case d + c:
case "-" + d + c:
case "_" + d + c:
this.mode == Template.modes.LITERAL && this._addOutput(line), this.mode = null, this.truncate = line.indexOf("-") === 0 || line.indexOf("_") === 0;
break;
default:
if (this.mode) {
switch (this.mode) {
case Template.modes.EVAL:
case Template.modes.ESCAPED:
case Template.modes.RAW:
line.lastIndexOf("//") > line.lastIndexOf(`
`) && (line += `
`);
}
switch (this.mode) {
// Just executing code
case Template.modes.EVAL:
this.source += " ; " + line + `
`;
break;
// Exec, esc, and output
case Template.modes.ESCAPED:
this.source += " ; __append(escapeFn(" + stripSemi(line) + `))
`;
break;
// Exec and output
case Template.modes.RAW:
this.source += " ; __append(" + stripSemi(line) + `)
`;
break;
case Template.modes.COMMENT:
break;
// Literal <%% mode, append as raw output
case Template.modes.LITERAL:
this._addOutput(line);
break;
}
} else
this._addOutput(line);
}
self.opts.compileDebug && newLineCount && (this.currentLine += newLineCount, this.source += " ; __line = " + this.currentLine + `
`);
}
};
exports.escapeXML = utils.escapeXML;
exports.__express = exports.renderFile;
exports.VERSION = _VERSION_STRING;
exports.name = _NAME;
typeof window < "u" && (window.ejs = exports);
}
});
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/logger.js
var require_logger = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/logger.js"(exports) {
"use strict";
init_cjs_shims();
var __importDefault = exports && exports.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.getLogger = getLogger;
exports.makeDebug = makeDebug;
exports.setLogger = setLogger;
exports.clearLoggers = clearLoggers;
var debug_1 = __importDefault(require_src()), OCLIF_NS = "oclif";
function makeLogger(namespace = OCLIF_NS) {
let debug = (0, debug_1.default)(namespace);
return {
child: (ns, delimiter) => makeLogger(`${namespace}${delimiter ?? ":"}${ns}`),
debug,
error: (formatter, ...args) => makeLogger(`${namespace}:error`).debug(formatter, ...args),
info: debug,
namespace,
trace: debug,
warn: debug
};
}
var cachedLoggers = /* @__PURE__ */ new Map();
function getLogger(namespace) {
let rootLogger = cachedLoggers.get("root");
if (rootLogger || set(makeLogger(OCLIF_NS)), rootLogger = cachedLoggers.get("root"), namespace) {
let cachedLogger = cachedLoggers.get(namespace);
if (cachedLogger)
return cachedLogger;
let logger = rootLogger.child(namespace);
return cachedLoggers.set(namespace, logger), logger;
}
return rootLogger;
}
function ensureItMatchesInterface(newLogger) {
return typeof newLogger.child == "function" && typeof newLogger.debug == "function" && typeof newLogger.error == "function" && typeof newLogger.info == "function" && typeof newLogger.trace == "function" && typeof newLogger.warn == "function" && typeof newLogger.namespace == "string";
}
function set(newLogger) {
cachedLoggers.has(newLogger.namespace) || cachedLoggers.has("root") || (ensureItMatchesInterface(newLogger) ? (cachedLoggers.set(newLogger.namespace, newLogger), cachedLoggers.set("root", newLogger)) : process.emitWarning("Logger does not match the Logger interface. Using default logger."));
}
function makeDebug(namespace) {
return (formatter, ...args) => getLogger(namespace).debug(formatter, ...args);
}
function setLogger(loadOptions) {
loadOptions && typeof loadOptions != "string" && "logger" in loadOptions && loadOptions.logger ? set(loadOptions.logger) : set(makeLogger(OCLIF_NS));
}
function clearLoggers() {
cachedLoggers.clear();
}
}
});
// ../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/ux/write.js
var require_write = __commonJS({
"../../node_modules/.pnpm/@oclif+core@4.4.0/node_modules/@oclif/core/lib/ux/write.js"(exports) {
"use strict";
init_cjs_shims();
Object.defineProperty(exports, "__esModule", { value: !0 });
exports.stderr = exports.stdout = void 0;
var node_util_1 = __require("node:util"), stdout = (str, ...args) => {
!str && args ? console.log((0, node_util_1.format)(...args)) : str ? console.log(typeof str == "string" ? (0, node_util_1.format)(str, ...args) : (0, node_util_1.format)(...str, ...args)) : console.log();
};
exports.stdout = stdout;
var stderr = (str, ...args) => {
!str && args ? console.error((0, node_util_1.format)(...args)) : str ? console.error(typeof str == "string" ? (0, node_util_1.format)(str, ...args) : (0, node_util_1.format)(...str, ...args)) : console.error();
};
exports.stderr = stderr;
}
});
// ../../node_modules/.pnpm/escape-string-regexp@4.0.0/node_modules/escape-string-regexp/index.js
var require_escape_string_regexp = __commonJS({
"../../node_modules/.pnpm/escape-string-regexp@4.0.0/node_modules/escape-string-regexp/index.js"(exports, module) {
"use strict";
init_cjs_shims();
module.exports = (string) => {
if (typeof string != "string")
throw new TypeError("Expected a string");
return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
};
}
});
// ../../node_modules/.pnpm/clean-stack@3.0.1/node_modules/clean-stack/index.js
var require_clean_stack = __commonJS({
"../../node_modules/.pnpm/clean-stack@3.0.1/node_modules/clean-stack/index.js"(exports, module) {
"use strict";
init_cjs_shims();
var os = __require("os"), escapeStringRegexp = require_escape_string_regexp(), extractPathRegex = /\s+at.*[(\s](.*)\)?/, pathRegex = /^(?:(?:(?:node|(?:(?:node:)?internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)(?:\.js)?:\d+:\d+)|native)/, homeDir = typeof os.homedir > "u" ? "" : os.homedir();
module.exports = (stack, { pretty = !1, basePath } = {}) => {
let basePathRegex = basePath && new RegExp(`(at | \\()${escapeStringRegexp(basePath)}`, "g");
return stack.replace(/\\/g, "/").split(`
`).filter((line) => {
let pathMatches = line.match(extractPathRegex);
if (pathMatches === null || !pathMatches[1])
return !0;
let match = pathMatches[1];
return match.includes(".app/Contents/Resources/electron.asar") || match.includes(".app/Contents/Resources/default_app.asar") ? !1 : !pathRegex.test(match);
}).filter((line) => line.trim() !== "").map((line) => (basePathRegex && (line = line.replace(basePathRegex, "$1")), pretty && (line = line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, "~")))), line)).join(`
`);
};
}
});
// ../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js
var require_ansi_regex = __commonJS({
"../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js"(exports, module) {
"use strict";
init_cjs_shims();
module.exports = ({ onlyFirst = !1 } = {}) => {
let pattern = [
"[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
"(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
].join("|");
return new RegExp(pattern, onlyFirst ? void 0 : "g");
};
}
});
// ../../node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js
var require_strip_ansi = __commonJS({
"../../node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js"(exports, module) {
"use strict";
init_cjs_shims();
var ansiRegex = require_ansi_regex();
module.exports = (string) => typeof string == "string" ? string.replace(ansiRegex(), "") : string;
}
});
// ../../node_modules/.pnpm/is-fullwidth-code-point@3.0.0/node_modules/is-fullwidth-code-point/index.js
var require_is_fullwidth_code_point = __commonJS({
"../../node_modules/.pnpm/is-fullwidth-code-point@3.0.0/node_modules/is-fullwidth-code-point/index.js"(exports, module) {
"use strict";
init_cjs_shims();
var isFullwidthCodePoint = (codePoint) => Number.isNaN(codePoint) ? !1 : codePoint >= 4352 && (codePoint <= 4447 || // Hangul Jamo
codePoint === 9001 || // LEFT-POINTING ANGLE BRACKET
codePoint === 9002 || // RIGHT-POINTING ANGLE BRACKET
// CJK Radicals Supplement .. Enclosed CJK Letters and Months
11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
12880 <= codePoint && codePoint <= 19903 || // CJK Unified Ideographs .. Yi Radicals
19968 <= codePoint && codePoint <= 42182 || // Hangul Jamo Extended-A
43360 <= codePoint && codePoint <= 43388 || // Hangul Syllables
44032 <= codePoint && codePoint <= 55203 || // CJK Compatibility Ideographs
63744 <= codePoint && codePoint <= 64255 || // Vertical Forms
65040 <= codePoint && codePoint <= 65049 || // CJK Compatibility Forms .. Small Form Variants
65072 <= codePoint && codePoint <= 65131 || // Halfwidth and Fullwidth Forms
65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || // Kana Supplement
110592 <= codePoint && codePoint <= 110593 || // Enclosed Ideographic Supplement
127488 <= codePoint && codePoint <= 127569 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
131072 <= codePoint && codePoint <= 262141);
module.exports = isFullwidthCodePoint;
module.exports.default = isFullwidthCodePoint;
}
});
// ../../node_modules/.pnpm/emoji-regex@8.0.0/node_modules/emoji-regex/index.js
var require_emoji_regex = __commonJS({
"../../node_modules/.pnpm/emoji-regex@8.0.0/node_modules/emoji-regex/index.js"(exports, module) {
"use strict";
init_cjs_shims();
module.exports = function() {
return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[