Comparing version 1.3.1 to 1.3.2
const { Replaceable } = require('restream'); | ||
const typedefJsRule = require('./typedef/rule'); | ||
const JSDocRule = require('./typedef/jsdoc'); | ||
const Type = require('./Type'); // eslint-disable-line | ||
class JSTypal extends Replaceable { | ||
constructor(conf = {}) { | ||
super([typedefJsRule, JSDocRule]) | ||
constructor(rules, conf = {}) { | ||
super(rules) | ||
this._types = {} | ||
@@ -17,4 +15,5 @@ | ||
}) | ||
/** @type {{ closure: boolean, externs: boolean }} */ | ||
this.conf = conf | ||
/** @type {Array<string>} */ | ||
/** @type {!Array<string>} */ | ||
this.namespaces = [] | ||
@@ -25,3 +24,3 @@ this.LOG = console.log | ||
* Add types emitted during typedefJsRule replacement. | ||
* @param {Array<Type>} typedefs | ||
* @param {!Array<!Type>} typedefs | ||
*/ | ||
@@ -48,3 +47,3 @@ addTypes(typedefs) { | ||
/** | ||
* @type {Object.<string, Type>} | ||
* @type {!Object.<string, !Type>} | ||
*/ | ||
@@ -56,7 +55,2 @@ get types() { | ||
/** | ||
* @suppress {nonStandardJsDocs} | ||
* @typedef {import('../lib/Type').default} Type | ||
*/ | ||
module.exports = JSTypal |
@@ -182,3 +182,11 @@ let extractTags = require('rexml'); if (extractTags && extractTags.__esModule) extractTags = extractTags.default; | ||
const pp = getLinks(allTypes, generic) | ||
return `${gen}.<${string}${pp}>` | ||
return `${gen}<${string}${pp}>` | ||
} else if (/^function\(.+?\)$/.test(t)) { | ||
const [,vars] = /** @type {!RegExpResult} */ | ||
(/^function\((.+?)\)$/.exec(t)) | ||
const allVars = vars.split(',').map(v => v.trim()) | ||
const pp = allVars.map(v => { | ||
return getLinks(allTypes, v) | ||
}) | ||
return `function(${pp.join(', ')})` | ||
} | ||
@@ -207,3 +215,3 @@ const link = getLinkToType(allTypes, t) | ||
const d = !prop.hasDefault ? '-' : `\`${prop.default}\`` | ||
return [name, `_${esc(linkedType)}_`, esc(prop.description), d] | ||
return [name, `<em>${esc(linkedType)}</em>`, esc(prop.description), d] | ||
}) | ||
@@ -210,0 +218,0 @@ const pre = [h, ...ps] |
const Type = require('../Type'); // eslint-disable-line | ||
const JSTypal = require('../JSTypal'); // eslint-disable-line | ||
/** | ||
@@ -3,0 +5,0 @@ * _JSDoc regex_ detects the ` * @param {Type}` declaration above functions, and the _JSDoc rule_ updates them according to existing types that were detected with the `typedefRule` rule. |
let read = require('@wrote/read'); if (read && read.__esModule) read = read.default; | ||
const { makeBlock, importToTypedef } = require('../'); | ||
const Type = require('../Type'); // eslint-disable-line | ||
const JSTypal = require('../JSTypal'); // eslint-disable-line | ||
const parseFile = require('../parse'); | ||
@@ -14,3 +15,3 @@ const { closureJoinTypes, externsJoinTypes } = require('../closure'); | ||
* @suppress {globalThis} | ||
* @type {function(this: { namespaces: !Array<string>, emit: function(string, *), LOG: function(...string), conf: { closure: boolean, externs: boolean } }, ...string): !Promise<string>} | ||
* @type {function(this:JSTypal, ...string): !Promise<string>} | ||
*/ | ||
@@ -17,0 +18,0 @@ async function replacement(match, docOrTypal, location) { |
@@ -0,1 +1,7 @@ | ||
## 20 April 2019 | ||
### [1.3.2](https://github.com/artdecocode/typal/compare/v1.3.1...v1.3.2) | ||
- [feature] Basic parsing of the types in a function type, to link. | ||
## 17 April 2019 | ||
@@ -2,0 +8,0 @@ |
@@ -36,3 +36,3 @@ #!/usr/bin/env node | ||
return b; | ||
}, x = () => { | ||
}, aa = () => { | ||
var a = w; | ||
@@ -51,3 +51,3 @@ return Object.keys(a).reduce((b, c) => { | ||
const w = {source:{description:"The path to the source file or directory with files to embed types into.", command:!0}, output:{description:"The destination where to save output.\nIf not passed, the file will be overwritten.\nIf `-` is passed, prints to stdout.", short:"o"}, closure:{description:"Whether to generate types in _Closure_ mode.", boolean:!0, short:"c"}, externs:{description:"Whether to generate externs for _GCC_.", boolean:!0, short:"e"}, migrate:{description:"Extracts types from JavaScript source code and saves them\ninto the types.xml file specified in the output option.", | ||
boolean:!0, short:"m"}, help:{description:"Print the help information and exit.", boolean:!0, short:"h"}, version:{description:"Show the version's number and exit.", boolean:!0, short:"v"}}, y = function(a, b) { | ||
boolean:!0, short:"m"}, help:{description:"Print the help information and exit.", boolean:!0, short:"h"}, version:{description:"Show the version's number and exit.", boolean:!0, short:"v"}}, x = function(a, b) { | ||
a = void 0 === a ? {} : a; | ||
@@ -61,6 +61,6 @@ b = void 0 === b ? process.argv : b; | ||
var g = Object.assign({}, e); | ||
e = e.f; | ||
g = (delete g.f, g); | ||
e = e.g; | ||
g = (delete g.g, g); | ||
if (0 == e.length && d) { | ||
return Object.assign({}, {f:e}, g); | ||
return Object.assign({}, {g:e}, g); | ||
} | ||
@@ -76,9 +76,9 @@ const h = a[f]; | ||
} catch (k) { | ||
return Object.assign({}, {f:e}, g); | ||
return Object.assign({}, {g:e}, g); | ||
} | ||
} | ||
return void 0 === l ? Object.assign({}, {f:e}, g) : Object.assign({}, {f:e}, g, {[f]:l}); | ||
}, {f:b}); | ||
}(w), z = y.source, A = y.output, aa = y.closure, ba = y.externs, ca = y.migrate, da = y.help, ea = y.version; | ||
function fa(a = {usage:{}}) { | ||
return void 0 === l ? Object.assign({}, {g:e}, g) : Object.assign({}, {g:e}, g, {[f]:l}); | ||
}, {g:b}); | ||
}(w), y = x.source, z = x.output, ba = x.closure, ca = x.externs, da = x.migrate, ea = x.help, fa = x.version; | ||
function ha(a = {usage:{}}) { | ||
const {usage:b = {}, description:c, line:d, example:e} = a; | ||
@@ -114,5 +114,6 @@ a = Object.keys(b); | ||
} | ||
;const {createReadStream:ha, createWriteStream:ia, lstat:B, readdir:ja} = fs; | ||
const {Transform:C, Writable:ka} = stream; | ||
const D = (a, b = 0, c = !1) => { | ||
;const {createReadStream:ia, createWriteStream:ja, lstat:A, readdir:ka} = fs; | ||
var la = stream; | ||
const {Transform:B, Writable:ma} = stream; | ||
const C = (a, b = 0, c = !1) => { | ||
if (0 === b && !c) { | ||
@@ -123,11 +124,11 @@ return a; | ||
return c ? a[a.length - 1] : a.slice(b).join("\n"); | ||
}, la = (a, b = !1) => D(a, 2 + (b ? 1 : 0)), E = a => { | ||
}, na = (a, b = !1) => C(a, 2 + (b ? 1 : 0)), D = a => { | ||
({callee:{caller:a}} = a); | ||
return a; | ||
}; | ||
const {homedir:ma} = os; | ||
const F = /\s+at.*(?:\(|\s)(.*)\)?/, na = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:IGNORED_MODULES)\/.*)?\w+)\.js:\d+:\d+)|native)/, oa = ma(), G = a => { | ||
const {pretty:b = !1, ignoredModules:c = ["pirates"]} = {}, d = c.join("|"), e = new RegExp(na.source.replace("IGNORED_MODULES", d)); | ||
const {homedir:oa} = os; | ||
const E = /\s+at.*(?:\(|\s)(.*)\)?/, pa = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:IGNORED_MODULES)\/.*)?\w+)\.js:\d+:\d+)|native)/, qa = oa(), F = a => { | ||
const {pretty:b = !1, ignoredModules:c = ["pirates"]} = {}, d = c.join("|"), e = new RegExp(pa.source.replace("IGNORED_MODULES", d)); | ||
return a.replace(/\\/g, "/").split("\n").filter(f => { | ||
f = f.match(F); | ||
f = f.match(E); | ||
if (null === f || !f[1]) { | ||
@@ -138,20 +139,20 @@ return !0; | ||
return f.includes(".app/Contents/Resources/electron.asar") || f.includes(".app/Contents/Resources/default_app.asar") ? !1 : !e.test(f); | ||
}).filter(f => f.trim()).map(f => b ? f.replace(F, (g, h) => g.replace(h, h.replace(oa, "~"))) : f).join("\n"); | ||
}).filter(f => f.trim()).map(f => b ? f.replace(E, (g, h) => g.replace(h, h.replace(qa, "~"))) : f).join("\n"); | ||
}; | ||
function pa(a, b, c = !1) { | ||
function ra(a, b, c = !1) { | ||
return function(d) { | ||
var e = E(arguments), {stack:f} = Error(); | ||
const g = D(f, 2, !0), h = (f = d instanceof Error) ? d.message : d; | ||
var e = D(arguments), {stack:f} = Error(); | ||
const g = C(f, 2, !0), h = (f = d instanceof Error) ? d.message : d; | ||
e = [`Error: ${h}`, ...null !== e && a === e || c ? [b] : [g, b]].join("\n"); | ||
e = G(e); | ||
e = F(e); | ||
return Object.assign(f ? d : Error(), {message:h, stack:e}); | ||
}; | ||
} | ||
;function H(a) { | ||
;function G(a) { | ||
var {stack:b} = Error(); | ||
const c = E(arguments); | ||
b = la(b, a); | ||
return pa(c, b, a); | ||
const c = D(arguments); | ||
b = na(b, a); | ||
return ra(c, b, a); | ||
} | ||
;const qa = (a, b) => { | ||
;const sa = (a, b) => { | ||
b.once("error", c => { | ||
@@ -162,3 +163,3 @@ a.emit("error", c); | ||
}; | ||
class ra extends ka { | ||
class ta extends ma { | ||
constructor(a) { | ||
@@ -168,6 +169,6 @@ var b = a || {}, c = Object.assign({}, b); | ||
b = (delete c.binary, delete c.rs, c); | ||
const {C:f = H(!0), proxyError:g} = a || {}, h = (l, k) => f(k); | ||
const {C:f = G(!0), proxyError:g} = a || {}, h = (l, k) => f(k); | ||
super(b); | ||
this.a = []; | ||
this.A = new Promise((l, k) => { | ||
this.B = new Promise((l, k) => { | ||
this.on("finish", () => { | ||
@@ -183,3 +184,3 @@ let m; | ||
} else { | ||
const n = G(m.stack); | ||
const n = F(m.stack); | ||
m.stack = n; | ||
@@ -190,3 +191,3 @@ g && h`${m}`; | ||
}); | ||
e && qa(this, e).pipe(this); | ||
e && sa(this, e).pipe(this); | ||
}); | ||
@@ -198,20 +199,20 @@ } | ||
} | ||
get l() { | ||
return this.A; | ||
get f() { | ||
return this.B; | ||
} | ||
} | ||
const I = async a => { | ||
const H = async a => { | ||
var b = void 0 === b ? {} : b; | ||
({l:a} = new ra(Object.assign({}, {rs:a}, b, {C:H(!0)}))); | ||
({f:a} = new ta(Object.assign({}, {rs:a}, b, {C:G(!0)}))); | ||
return await a; | ||
}; | ||
async function J(a) { | ||
a = ha(a); | ||
return await I(a); | ||
async function I(a) { | ||
a = ia(a); | ||
return await H(a); | ||
} | ||
;async function K(a, b) { | ||
;async function J(a, b) { | ||
if (!a) { | ||
throw Error("No path is given."); | ||
} | ||
const c = H(!0), d = ia(a); | ||
const c = G(!0), d = ja(a); | ||
await new Promise((e, f) => { | ||
@@ -224,3 +225,3 @@ d.on("error", g => { | ||
} | ||
;function L(a, b) { | ||
;function K(a, b) { | ||
if (b > a - 2) { | ||
@@ -230,4 +231,4 @@ throw Error("Function does not accept that many arguments."); | ||
} | ||
async function M(a, b, c) { | ||
const d = H(!0); | ||
async function L(a, b, c) { | ||
const d = G(!0); | ||
if ("function" !== typeof a) { | ||
@@ -244,27 +245,27 @@ throw Error("Function must be passed."); | ||
Array.isArray(b) ? (b.forEach((k, m) => { | ||
L(e, m); | ||
}), l = [...b, h]) : 1 < Array.from(arguments).length && (L(e, 0), l = [b, h]); | ||
K(e, m); | ||
}), l = [...b, h]) : 1 < Array.from(arguments).length && (K(e, 0), l = [b, h]); | ||
a(...l); | ||
}); | ||
} | ||
;const {join:N} = path; | ||
async function sa(a, b) { | ||
;const {join:M} = path; | ||
async function ua(a, b) { | ||
b = b.map(async c => { | ||
const d = N(a, c); | ||
return {lstat:await M(B, d), path:d, relativePath:c}; | ||
const d = M(a, c); | ||
return {lstat:await L(A, d), path:d, relativePath:c}; | ||
}); | ||
return await Promise.all(b); | ||
} | ||
const ta = a => a.lstat.isDirectory(), ua = a => !a.lstat.isDirectory(); | ||
async function O(a) { | ||
const va = a => a.lstat.isDirectory(), wa = a => !a.lstat.isDirectory(); | ||
async function N(a) { | ||
if (!a) { | ||
throw Error("Please specify a path to the directory"); | ||
} | ||
if (!(await M(B, a)).isDirectory()) { | ||
if (!(await L(A, a)).isDirectory()) { | ||
throw a = Error("Path is not a directory"), a.code = "ENOTDIR", a; | ||
} | ||
var b = await M(ja, a); | ||
b = await sa(a, b); | ||
a = b.filter(ta); | ||
b = b.filter(ua).reduce((c, d) => { | ||
var b = await L(ka, a); | ||
b = await ua(a, b); | ||
a = b.filter(va); | ||
b = b.filter(wa).reduce((c, d) => { | ||
var e = d.lstat.isDirectory() ? "Directory" : d.lstat.isFile() ? "File" : d.lstat.isSymbolicLink() ? "SymbolicLink" : void 0; | ||
@@ -276,3 +277,3 @@ return Object.assign({}, c, {[d.relativePath]:{type:e}}); | ||
c = await c; | ||
d = await O(e); | ||
d = await N(e); | ||
return Object.assign({}, c, {[f]:d}); | ||
@@ -282,11 +283,11 @@ }, {}); | ||
} | ||
const P = (a, b) => { | ||
const O = (a, b) => { | ||
let c = [], d = []; | ||
Object.keys(a).forEach(f => { | ||
const {type:g} = a[f]; | ||
"File" == g ? c.push(N(b, f)) : "Directory" == g && d.push(f); | ||
"File" == g ? c.push(M(b, f)) : "Directory" == g && d.push(f); | ||
}); | ||
const e = d.reduce((f, g) => { | ||
const {content:h} = a[g]; | ||
g = P(h, N(b, g)); | ||
g = O(h, M(b, g)); | ||
return [...f, ...g]; | ||
@@ -296,85 +297,3 @@ }, []); | ||
}; | ||
function va(a) { | ||
if ("object" != typeof a) { | ||
return !1; | ||
} | ||
const {re:b, replacement:c} = a; | ||
a = b instanceof RegExp; | ||
const d = -1 != ["string", "function"].indexOf(typeof c); | ||
return a && d; | ||
} | ||
const Q = (a, b) => { | ||
if (!(b instanceof Error)) { | ||
throw b; | ||
} | ||
[, , a] = a.stack.split("\n", 3); | ||
a = b.stack.indexOf(a); | ||
if (-1 == a) { | ||
throw b; | ||
} | ||
a = b.stack.substr(0, a - 1); | ||
const c = a.lastIndexOf("\n"); | ||
b.stack = a.substr(0, c); | ||
throw b; | ||
}; | ||
class wa extends C { | ||
constructor(a, b) { | ||
super(b); | ||
this.a = (Array.isArray(a) ? a : [a]).filter(va); | ||
} | ||
async reduce(a) { | ||
return await this.a.reduce(async(b, {re:c, replacement:d}) => { | ||
b = await b; | ||
if ("string" == typeof d) { | ||
b = b.replace(c, d); | ||
} else { | ||
const e = []; | ||
let f; | ||
const g = b.replace(c, (h, ...l) => { | ||
f = Error(); | ||
try { | ||
const k = d.call(this, h, ...l); | ||
k instanceof Promise && e.push(k); | ||
return k; | ||
} catch (k) { | ||
Q(f, k); | ||
} | ||
}); | ||
if (e.length) { | ||
try { | ||
const h = await Promise.all(e); | ||
b = b.replace(c, () => h.shift()); | ||
} catch (h) { | ||
Q(f, h); | ||
} | ||
} else { | ||
b = g; | ||
} | ||
} | ||
return b; | ||
}, `${a}`); | ||
} | ||
async _transform(a, b, c) { | ||
try { | ||
const d = await this.reduce(a); | ||
this.push(d); | ||
c(); | ||
} catch (d) { | ||
a = G(d.stack), d.stack = a, c(d); | ||
} | ||
} | ||
} | ||
;function xa() { | ||
var a = ya; | ||
let b = ""; | ||
const c = new C({transform(d, e, f) { | ||
let g; | ||
for (b += d.toString(); (d = a.exec(b)) && (c.push(d), g = d, a.global);) { | ||
} | ||
g && (b = b.slice(g.index + g[0].length)); | ||
f(); | ||
}, objectMode:!0}); | ||
return c; | ||
} | ||
;const R = (a, b, c, d) => { | ||
const P = (a, b, c, d) => { | ||
if (!a) { | ||
@@ -389,12 +308,12 @@ throw Error("The name of the property is not given"); | ||
return `${a}=${b}`; | ||
}, za = ({number:a, D:b, boolean:c, type:d}) => b ? "string" : a ? "number" : c ? "boolean" : d ? d : "*", Aa = a => `/** | ||
}, xa = ({number:a, F:b, boolean:c, type:d}) => b ? "string" : a ? "number" : c ? "boolean" : d ? d : "*", ya = a => `/** | ||
${a} | ||
*/ | ||
`, S = (a, b = !0) => ` * @typedef {import('${a.from}').${a.name}} ${b ? `${a.from}.${a.name}` : a.name}`, T = a => ` * @suppress {nonStandardJsDocs} | ||
`, Q = (a, b = !0) => ` * @typedef {import('${a.from}').${a.name}} ${b ? `${a.from}.${a.name}` : a.name}`, R = a => ` * @suppress {nonStandardJsDocs} | ||
${a}`; | ||
const U = new RegExp(`(${/[A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{1031F}\u{1032D}-\u{10340}\u{10342}-\u{10349}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{103A0}-\u{103C3}\u{103C8}-\u{103CF}\u{10400}-\u{1049D}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10860}-\u{10876}\u{10880}-\u{1089E}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{10900}-\u{10915}\u{10920}-\u{10939}\u{10980}-\u{109B7}\u{109BE}\u{109BF}\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A60}-\u{10A7C}\u{10A80}-\u{10A9C}\u{10AC0}-\u{10AC7}\u{10AC9}-\u{10AE4}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B60}-\u{10B72}\u{10B80}-\u{10B91}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10D00}-\u{10D23}\u{10F00}-\u{10F1C}\u{10F27}\u{10F30}-\u{10F45}\u{11003}-\u{11037}\u{11083}-\u{110AF}\u{110D0}-\u{110E8}\u{11103}-\u{11126}\u{11144}\u{11150}-\u{11172}\u{11176}\u{11183}-\u{111B2}\u{111C1}-\u{111C4}\u{111DA}\u{111DC}\u{11200}-\u{11211}\u{11213}-\u{1122B}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A8}\u{112B0}-\u{112DE}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}\u{11350}\u{1135D}-\u{11361}\u{11400}-\u{11434}\u{11447}-\u{1144A}\u{11480}-\u{114AF}\u{114C4}\u{114C5}\u{114C7}\u{11580}-\u{115AE}\u{115D8}-\u{115DB}\u{11600}-\u{1162F}\u{11644}\u{11680}-\u{116AA}\u{11700}-\u{1171A}\u{11800}-\u{1182B}\u{118A0}-\u{118DF}\u{118FF}\u{11A00}\u{11A0B}-\u{11A32}\u{11A3A}\u{11A50}\u{11A5C}-\u{11A83}\u{11A86}-\u{11A89}\u{11A9D}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2E}\u{11C40}\u{11C72}-\u{11C8F}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D89}\u{11D98}\u{11EE0}-\u{11EF2}\u{12000}-\u{12399}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16AD0}-\u{16AED}\u{16B00}-\u{16B2F}\u{16B40}-\u{16B43}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E7F}\u{16F00}-\u{16F44}\u{16F50}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187F1}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6C0}\u{1D6C2}-\u{1D6DA}\u{1D6DC}-\u{1D6FA}\u{1D6FC}-\u{1D714}\u{1D716}-\u{1D734}\u{1D736}-\u{1D74E}\u{1D750}-\u{1D76E}\u{1D770}-\u{1D788}\u{1D78A}-\u{1D7A8}\u{1D7AA}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1E800}-\u{1E8C4}\u{1E900}-\u{1E943}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}][\x2D\.0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{1031F}\u{1032D}-\u{10340}\u{10342}-\u{10349}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{103A0}-\u{103C3}\u{103C8}-\u{103CF}\u{10400}-\u{1049D}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10860}-\u{10876}\u{10880}-\u{1089E}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{10900}-\u{10915}\u{10920}-\u{10939}\u{10980}-\u{109B7}\u{109BE}\u{109BF}\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A60}-\u{10A7C}\u{10A80}-\u{10A9C}\u{10AC0}-\u{10AC7}\u{10AC9}-\u{10AE4}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B60}-\u{10B72}\u{10B80}-\u{10B91}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10D00}-\u{10D23}\u{10F00}-\u{10F1C}\u{10F27}\u{10F30}-\u{10F45}\u{11003}-\u{11037}\u{11083}-\u{110AF}\u{110D0}-\u{110E8}\u{11103}-\u{11126}\u{11144}\u{11150}-\u{11172}\u{11176}\u{11183}-\u{111B2}\u{111C1}-\u{111C4}\u{111DA}\u{111DC}\u{11200}-\u{11211}\u{11213}-\u{1122B}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A8}\u{112B0}-\u{112DE}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}\u{11350}\u{1135D}-\u{11361}\u{11400}-\u{11434}\u{11447}-\u{1144A}\u{11480}-\u{114AF}\u{114C4}\u{114C5}\u{114C7}\u{11580}-\u{115AE}\u{115D8}-\u{115DB}\u{11600}-\u{1162F}\u{11644}\u{11680}-\u{116AA}\u{11700}-\u{1171A}\u{11800}-\u{1182B}\u{118A0}-\u{118DF}\u{118FF}\u{11A00}\u{11A0B}-\u{11A32}\u{11A3A}\u{11A50}\u{11A5C}-\u{11A83}\u{11A86}-\u{11A89}\u{11A9D}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2E}\u{11C40}\u{11C72}-\u{11C8F}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D89}\u{11D98}\u{11EE0}-\u{11EF2}\u{12000}-\u{12399}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16AD0}-\u{16AED}\u{16B00}-\u{16B2F}\u{16B40}-\u{16B43}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E7F}\u{16F00}-\u{16F44}\u{16F50}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187F1}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6C0}\u{1D6C2}-\u{1D6DA}\u{1D6DC}-\u{1D6FA}\u{1D6FC}-\u{1D714}\u{1D716}-\u{1D734}\u{1D736}-\u{1D74E}\u{1D750}-\u{1D76E}\u{1D770}-\u{1D788}\u{1D78A}-\u{1D7A8}\u{1D7AA}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1E800}-\u{1E8C4}\u{1E900}-\u{1E943}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}]*/u.source})(?:\\s*=\\s*${/(?:"([\s\S]*?)"|'([\s\S]*?)')/.source})?`, | ||
"u"), Ba = U.source.replace(/\(\[/g, "(?:["), Ca = new RegExp(`\\s*((?:${Ba}\\s*)*)`, "u"); | ||
const Da = a => { | ||
const S = new RegExp(`(${/[A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{1031F}\u{1032D}-\u{10340}\u{10342}-\u{10349}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{103A0}-\u{103C3}\u{103C8}-\u{103CF}\u{10400}-\u{1049D}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10860}-\u{10876}\u{10880}-\u{1089E}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{10900}-\u{10915}\u{10920}-\u{10939}\u{10980}-\u{109B7}\u{109BE}\u{109BF}\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A60}-\u{10A7C}\u{10A80}-\u{10A9C}\u{10AC0}-\u{10AC7}\u{10AC9}-\u{10AE4}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B60}-\u{10B72}\u{10B80}-\u{10B91}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10D00}-\u{10D23}\u{10F00}-\u{10F1C}\u{10F27}\u{10F30}-\u{10F45}\u{11003}-\u{11037}\u{11083}-\u{110AF}\u{110D0}-\u{110E8}\u{11103}-\u{11126}\u{11144}\u{11150}-\u{11172}\u{11176}\u{11183}-\u{111B2}\u{111C1}-\u{111C4}\u{111DA}\u{111DC}\u{11200}-\u{11211}\u{11213}-\u{1122B}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A8}\u{112B0}-\u{112DE}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}\u{11350}\u{1135D}-\u{11361}\u{11400}-\u{11434}\u{11447}-\u{1144A}\u{11480}-\u{114AF}\u{114C4}\u{114C5}\u{114C7}\u{11580}-\u{115AE}\u{115D8}-\u{115DB}\u{11600}-\u{1162F}\u{11644}\u{11680}-\u{116AA}\u{11700}-\u{1171A}\u{11800}-\u{1182B}\u{118A0}-\u{118DF}\u{118FF}\u{11A00}\u{11A0B}-\u{11A32}\u{11A3A}\u{11A50}\u{11A5C}-\u{11A83}\u{11A86}-\u{11A89}\u{11A9D}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2E}\u{11C40}\u{11C72}-\u{11C8F}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D89}\u{11D98}\u{11EE0}-\u{11EF2}\u{12000}-\u{12399}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16AD0}-\u{16AED}\u{16B00}-\u{16B2F}\u{16B40}-\u{16B43}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E7F}\u{16F00}-\u{16F44}\u{16F50}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187F1}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6C0}\u{1D6C2}-\u{1D6DA}\u{1D6DC}-\u{1D6FA}\u{1D6FC}-\u{1D714}\u{1D716}-\u{1D734}\u{1D736}-\u{1D74E}\u{1D750}-\u{1D76E}\u{1D770}-\u{1D788}\u{1D78A}-\u{1D7A8}\u{1D7AA}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1E800}-\u{1E8C4}\u{1E900}-\u{1E943}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}][\x2D\.0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{1031F}\u{1032D}-\u{10340}\u{10342}-\u{10349}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{103A0}-\u{103C3}\u{103C8}-\u{103CF}\u{10400}-\u{1049D}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10860}-\u{10876}\u{10880}-\u{1089E}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{10900}-\u{10915}\u{10920}-\u{10939}\u{10980}-\u{109B7}\u{109BE}\u{109BF}\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A60}-\u{10A7C}\u{10A80}-\u{10A9C}\u{10AC0}-\u{10AC7}\u{10AC9}-\u{10AE4}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B60}-\u{10B72}\u{10B80}-\u{10B91}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10D00}-\u{10D23}\u{10F00}-\u{10F1C}\u{10F27}\u{10F30}-\u{10F45}\u{11003}-\u{11037}\u{11083}-\u{110AF}\u{110D0}-\u{110E8}\u{11103}-\u{11126}\u{11144}\u{11150}-\u{11172}\u{11176}\u{11183}-\u{111B2}\u{111C1}-\u{111C4}\u{111DA}\u{111DC}\u{11200}-\u{11211}\u{11213}-\u{1122B}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A8}\u{112B0}-\u{112DE}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}\u{11350}\u{1135D}-\u{11361}\u{11400}-\u{11434}\u{11447}-\u{1144A}\u{11480}-\u{114AF}\u{114C4}\u{114C5}\u{114C7}\u{11580}-\u{115AE}\u{115D8}-\u{115DB}\u{11600}-\u{1162F}\u{11644}\u{11680}-\u{116AA}\u{11700}-\u{1171A}\u{11800}-\u{1182B}\u{118A0}-\u{118DF}\u{118FF}\u{11A00}\u{11A0B}-\u{11A32}\u{11A3A}\u{11A50}\u{11A5C}-\u{11A83}\u{11A86}-\u{11A89}\u{11A9D}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2E}\u{11C40}\u{11C72}-\u{11C8F}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D89}\u{11D98}\u{11EE0}-\u{11EF2}\u{12000}-\u{12399}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16AD0}-\u{16AED}\u{16B00}-\u{16B2F}\u{16B40}-\u{16B43}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E7F}\u{16F00}-\u{16F44}\u{16F50}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{17000}-\u{187F1}\u{18800}-\u{18AF2}\u{1B000}-\u{1B11E}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6C0}\u{1D6C2}-\u{1D6DA}\u{1D6DC}-\u{1D6FA}\u{1D6FC}-\u{1D714}\u{1D716}-\u{1D734}\u{1D736}-\u{1D74E}\u{1D750}-\u{1D76E}\u{1D770}-\u{1D788}\u{1D78A}-\u{1D7A8}\u{1D7AA}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1E800}-\u{1E8C4}\u{1E900}-\u{1E943}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{20000}-\u{2A6D6}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}]*/u.source})(?:\\s*=\\s*${/(?:"([\s\S]*?)"|'([\s\S]*?)')/.source})?`, | ||
"u"), za = S.source.replace(/\(\[/g, "(?:["), Aa = new RegExp(`\\s*((?:${za}\\s*)*)`, "u"); | ||
const Ba = a => { | ||
const b = {}; | ||
a.replace(new RegExp(U.source, "gu"), (c, d, e, f) => { | ||
a.replace(new RegExp(S.source, "gu"), (c, d, e, f) => { | ||
c = f || e; | ||
@@ -407,3 +326,3 @@ c = void 0 === c ? !0 : c; | ||
}; | ||
const Ea = (a, b) => { | ||
const Ca = (a, b) => { | ||
a = a.exec(b); | ||
@@ -415,6 +334,6 @@ if (!a) { | ||
return a; | ||
}, V = (a, b) => { | ||
a = new RegExp(`<${a}${Ca.source}?(?:${/\s*\/>/.source}|${(new RegExp(`>([\\s\\S]+?)?</${a}>`)).source})`, "gu"); | ||
}, T = (a, b) => { | ||
a = new RegExp(`<${a}${Aa.source}?(?:${/\s*\/>/.source}|${(new RegExp(`>([\\s\\S]+?)?</${a}>`)).source})`, "gu"); | ||
const c = []; | ||
for (var d; d = Ea(a, b);) { | ||
for (var d; d = Ca(a, b);) { | ||
if (!d.length) { | ||
@@ -425,3 +344,3 @@ continue; | ||
d = e.replace(/\/$/, "").trim(); | ||
d = {o:Da(d), content:f}; | ||
d = {s:Ba(d), content:f}; | ||
c.push(d); | ||
@@ -431,6 +350,6 @@ } | ||
}; | ||
function Fa(a) { | ||
var b = Ga; | ||
function Da(a) { | ||
var b = Ea; | ||
const c = []; | ||
a.replace(Ha, (d, ...e) => { | ||
a.replace(Fa, (d, ...e) => { | ||
d = e.slice(0, e.length - 2).reduce((f, g, h) => { | ||
@@ -448,3 +367,3 @@ h = b[h]; | ||
} | ||
;function Ia(a, b, {name:c, string:d, "boolean":e, opt:f, number:g, type:h, "default":l, closure:k}) { | ||
;function Ga(a, b, {name:c, string:d, "boolean":e, opt:f, number:g, type:h, "default":l, closure:k}) { | ||
if (!c) { | ||
@@ -455,3 +374,3 @@ throw Error("Property does not have a name."); | ||
b && (a.description = b.trim()); | ||
a.type = za({number:g, D:d, boolean:e, type:h}); | ||
a.type = xa({number:g, F:d, boolean:e, type:h}); | ||
k ? a.b = k : a.b = a.type; | ||
@@ -464,17 +383,17 @@ void 0 !== l && (a.a = !0); | ||
} | ||
function W(a, b = null, c = !1) { | ||
function U(a, b = null, c = !1) { | ||
if (!a.name) { | ||
throw Error("Property does not have a name. Has it been constructed using fromXML?"); | ||
} | ||
b = R(a.name, a.default, a.type, b); | ||
b = P(a.name, a.default, a.type, b); | ||
return `{${c ? a.b : a.type}} ${a.optional ? `[${b}]` : b}${`${a.description ? ` ${a.description}` : ""}${a.a ? ` Default \`${a.default}\`.` : ""}`}`; | ||
} | ||
function Ja(a, b = !1) { | ||
return ` * @prop ${W(a, null, b)}`; | ||
function Ha(a, b = !1) { | ||
return ` * @prop ${U(a, null, b)}`; | ||
} | ||
function Ka(a, b, c = "", d = !1) { | ||
a = W(a, b, d); | ||
function Ia(a, b, c = "", d = !1) { | ||
a = U(a, b, d); | ||
return `${c} * @param ${a}`; | ||
} | ||
class La { | ||
class Ja { | ||
constructor() { | ||
@@ -489,3 +408,3 @@ this.description = this.name = null; | ||
} | ||
;function Ma(a, b, {name:c, type:d, desc:e, spread:f, noExpand:g, link:h, closure:l}, k) { | ||
;function Ka(a, b, {name:c, type:d, desc:e, spread:f, noExpand:g, link:h, closure:l}, k) { | ||
if (!c) { | ||
@@ -498,18 +417,18 @@ throw Error("Type does not have a name."); | ||
e && (a.description = e.trim()); | ||
a.l = !!f; | ||
a.f = !!f; | ||
a.a = !!g; | ||
h && (a.link = h); | ||
b && (a.c = V("prop", b).map(({content:m, o:n}) => { | ||
const p = new La; | ||
Ia(p, m, n); | ||
b && (a.c = T("prop", b).map(({content:m, s:n}) => { | ||
const p = new Ja; | ||
Ga(p, m, n); | ||
return p; | ||
})); | ||
k && (a.g = k); | ||
k && (a.h = k); | ||
} | ||
function X(a, b = !1) { | ||
function V(a, b = !1) { | ||
const c = a.description ? ` ${a.description}` : ""; | ||
var d = ` * @typedef {${(b ? a.b : a.type) || "Object"}}${` ${b ? a.h : a.name}${c}`}`; | ||
const e = a.c ? a.c.map(g => Ja(g, b)) : []; | ||
var d = ` * @typedef {${(b ? a.b : a.type) || "Object"}}${` ${b ? a.i : a.name}${c}`}`; | ||
const e = a.c ? a.c.map(g => Ha(g, b)) : []; | ||
var f = ""; | ||
a.g && b && (f = ` * @typedef {${a.h}} ${a.name}${c}`, b && (f = T(f)), f = `/** | ||
a.h && b && (f = ` * @typedef {${a.i}} ${a.name}${c}`, b && (f = R(f)), f = `/** | ||
${f} | ||
@@ -519,3 +438,3 @@ */ | ||
d = [d, ...e].join("\n"); | ||
b && (d = T(d)); | ||
b && (d = R(d)); | ||
return `${f}${`/** | ||
@@ -526,22 +445,22 @@ ${d} | ||
} | ||
function Na(a, b, c, d = "", e = !1, f = !1) { | ||
const g = a.description ? ` ${a.description}` : "", h = a.l ? Y(a.c) : f ? a.h : a.name; | ||
function La(a, b, c, d = "", e = !1, f = !1) { | ||
const g = a.description ? ` ${a.description}` : "", h = a.f ? W(a.c) : f ? a.i : a.name; | ||
c = `${d} * @param {${e ? "!" : ""}${h}} ${c ? `[${b}]` : b}${g}`; | ||
a = a.c && !a.a ? a.c.map(l => Ka(l, b, d, f)) : []; | ||
a = a.c && !a.a ? a.c.map(l => Ia(l, b, d, f)) : []; | ||
return [c, ...a].join("\n"); | ||
} | ||
class Oa { | ||
class Ma { | ||
constructor() { | ||
this.link = this.a = this.l = this.description = this.b = this.type = this.name = null; | ||
this.link = this.a = this.f = this.description = this.b = this.type = this.name = null; | ||
this.c = []; | ||
this.g = null; | ||
this.h = null; | ||
} | ||
get B() { | ||
return this.g ? `${this.g}.` : ""; | ||
get m() { | ||
return this.h ? `${this.h}.` : ""; | ||
} | ||
get h() { | ||
return `${this.B}${this.name}`; | ||
get i() { | ||
return `${this.m}${this.name}`; | ||
} | ||
} | ||
const Y = (a = [], b = !1) => `{ ${a.map(c => { | ||
const W = (a = [], b = !1) => `{ ${a.map(c => { | ||
const d = b ? c.b : c.type; | ||
@@ -552,26 +471,156 @@ let e = c.name, f = d; | ||
}).join(", ")} }`; | ||
const Pa = a => { | ||
a = V("types", a); | ||
function Na(a) { | ||
if ("object" != typeof a) { | ||
return !1; | ||
} | ||
const {re:b, replacement:c} = a; | ||
a = b instanceof RegExp; | ||
const d = -1 != ["string", "function"].indexOf(typeof c); | ||
return a && d; | ||
} | ||
const X = (a, b) => { | ||
if (!(b instanceof Error)) { | ||
throw b; | ||
} | ||
[, , a] = a.stack.split("\n", 3); | ||
a = b.stack.indexOf(a); | ||
if (-1 == a) { | ||
throw b; | ||
} | ||
a = b.stack.substr(0, a - 1); | ||
const c = a.lastIndexOf("\n"); | ||
b.stack = a.substr(0, c); | ||
throw b; | ||
}; | ||
async function Oa(a, b) { | ||
b instanceof la ? b.pipe(a) : a.end(b); | ||
return await H(a); | ||
} | ||
class Y extends B { | ||
constructor(a, b) { | ||
super(b); | ||
this.m = (Array.isArray(a) ? a : [a]).filter(Na); | ||
this.a = !1; | ||
this.D = b; | ||
} | ||
async replace(a, b) { | ||
const c = new Y(this.m, this.D); | ||
b && Object.assign(c, b); | ||
a = await Oa(c, a); | ||
c.a && this.brake(); | ||
b && Object.keys(b).forEach(d => { | ||
b[d] = c[d]; | ||
}); | ||
return a; | ||
} | ||
brake() { | ||
this.a = !0; | ||
} | ||
async reduce(a) { | ||
return await this.m.reduce(async(b, {re:c, replacement:d}) => { | ||
b = await b; | ||
if (this.a) { | ||
return b; | ||
} | ||
if ("string" == typeof d) { | ||
b = b.replace(c, d); | ||
} else { | ||
const e = []; | ||
let f; | ||
const g = b.replace(c, (h, ...l) => { | ||
f = Error(); | ||
try { | ||
if (this.a) { | ||
return e.length ? e.push(Promise.resolve(h)) : h; | ||
} | ||
const k = d.call(this, h, ...l); | ||
k instanceof Promise && e.push(k); | ||
return k; | ||
} catch (k) { | ||
X(f, k); | ||
} | ||
}); | ||
if (e.length) { | ||
try { | ||
const h = await Promise.all(e); | ||
b = b.replace(c, () => h.shift()); | ||
} catch (h) { | ||
X(f, h); | ||
} | ||
} else { | ||
b = g; | ||
} | ||
} | ||
return b; | ||
}, `${a}`); | ||
} | ||
async _transform(a, b, c) { | ||
try { | ||
const d = await this.reduce(a); | ||
this.push(d); | ||
c(); | ||
} catch (d) { | ||
a = F(d.stack), d.stack = a, c(d); | ||
} | ||
} | ||
} | ||
;function Pa() { | ||
var a = Qa; | ||
let b = ""; | ||
const c = new B({transform(d, e, f) { | ||
let g; | ||
for (b += d.toString(); (d = a.exec(b)) && (c.push(d), g = d, a.global);) { | ||
} | ||
g && (b = b.slice(g.index + g[0].length)); | ||
f(); | ||
}, objectMode:!0}); | ||
return c; | ||
} | ||
;function Ra(a, b) { | ||
b = b.reduce((c, d) => Object.assign({}, c, {[d.i]:d}), {}); | ||
a.u = Object.assign({}, a.u, b); | ||
} | ||
class Sa extends Y { | ||
constructor(a, b) { | ||
b = void 0 === b ? {} : b; | ||
super(a); | ||
this.u = {}; | ||
this.on("types", c => { | ||
Ra(this, c); | ||
}); | ||
this.on("namespace", c => { | ||
this.f.includes(c) || this.f.push(c); | ||
}); | ||
this.A = b; | ||
this.f = []; | ||
this.l = console.log; | ||
} | ||
get types() { | ||
return this.u; | ||
} | ||
} | ||
;const Ta = a => { | ||
a = T("types", a); | ||
if (!a.length) { | ||
throw Error("XML file should contain root types element."); | ||
} | ||
const [{content:b, o:{namespace:c, ns:d = c}}] = a, e = void 0 == d ? void 0 : d; | ||
a = V("type", b).map(({content:g, o:h}) => { | ||
const l = new Oa; | ||
Ma(l, g, h, e); | ||
const [{content:b, s:{namespace:c, ns:d = c}}] = a, e = void 0 == d ? void 0 : d; | ||
a = T("type", b).map(({content:g, s:h}) => { | ||
const l = new Ma; | ||
Ka(l, g, h, e); | ||
return l; | ||
}); | ||
const f = V("import", b).map(({o:{name:g, from:h, desc:l, link:k}}) => ({name:g, from:h, F:l, link:k})); | ||
return {g:d, types:a, imports:f}; | ||
const f = T("import", b).map(({s:{name:g, from:h, desc:l, link:k}}) => ({name:g, from:h, G:l, link:k})); | ||
return {h:d, types:a, imports:f}; | ||
}; | ||
const Qa = (a, b) => { | ||
b = b.map(c => X(c, !0)); | ||
const Ua = (a, b) => { | ||
b = b.map(c => V(c, !0)); | ||
a = a.map(c => `/** | ||
${T(S(c))} | ||
${R(Q(c))} | ||
*/ | ||
`); | ||
return [...b, ...a].join(""); | ||
}, Ra = (a, b, c) => { | ||
}, Va = (a, b, c) => { | ||
a = [...a.map(d => { | ||
var e = d.b ? ` * @typedef {${""}${d.b}}` : ` * @typedef {${""}${Y(d.c, !0)}}`; | ||
var e = d.b ? ` * @typedef {${""}${d.b}}` : ` * @typedef {${""}${W(d.c, !0)}}`; | ||
return `${`/** | ||
@@ -586,63 +635,40 @@ ${e} | ||
}; | ||
const Ta = {re:/^\/\*\*? (documentary|typal) (.+?) \*\/\n(?:([^\n][\s\S]+?\n))?$/mg, replacement:async function(a, b, c) { | ||
const {m:d, u:e} = this.w; | ||
const Xa = {re:/^\/\*\*? (documentary|typal) (.+?) \*\/\n(?:([^\n][\s\S]+?\n))?$/mg, replacement:async function(a, b, c) { | ||
const {o:d, v:e} = this.A; | ||
try { | ||
this.j("Detected type marker: %s", c); | ||
const f = await J(c), {g, types:h, imports:l} = Pa(f); | ||
this.l("Detected type marker: %s", c); | ||
const f = await I(c), {h:g, types:h, imports:l} = Ta(f); | ||
this.emit("types", h); | ||
let k; | ||
d ? k = Qa(l, h) : e ? (k = Ra(h, g, this.namespaces) + "\n", g && this.emit("namespace", g)) : k = Sa(l, h); | ||
d ? k = Ua(l, h) : e ? (k = Va(h, g, this.f) + "\n", g && this.emit("namespace", g)) : k = Wa(l, h); | ||
return `/* ${b} ${c} */\n${k}`; | ||
} catch (f) { | ||
return this.j("(%s) Could not process typedef-js: %s", c, f.message), a; | ||
return this.l("(%s) Could not process typedef-js: %s", c, f.message), a; | ||
} | ||
}}, Sa = (a, b) => { | ||
b = b.map(c => X(c)); | ||
a = a.map(c => S(c, !1)).map(Aa).join(""); | ||
}}, Wa = (a, b) => { | ||
b = b.map(c => V(c)); | ||
a = a.map(c => Q(c, !1)).map(ya).join(""); | ||
b = b.join(""); | ||
return `${a}${b}`.replace(Ua, " * @typedef"); | ||
}, Ua = / \*\/\n\/\*\*\n \* @typedef/g; | ||
const Va = {re:/( *) \* @param {(.+?)} (\[)?([^\s\]]+)\]?(?: .+)?((?:\n(?: +)\* @param {(?:.+?)} \[?\4\]?.*)*)/gm, replacement(a, b, c, d, e) { | ||
const {m:f} = this.w, g = /^!/.test(c), h = g ? c.replace(/^!/, "") : c; | ||
c = Object.values(this.types).find(({name:l, h:k}) => f ? k == h : l == h); | ||
return c ? Na(c, e, d, b, g, f) : (this.j("Type %s not found", h), a); | ||
return `${a}${b}`.replace(Ya, " * @typedef"); | ||
}, Ya = / \*\/\n\/\*\*\n \* @typedef/g; | ||
const Za = {re:/( *) \* @param {(.+?)} (\[)?([^\s\]]+)\]?(?: .+)?((?:\n(?: +)\* @param {(?:.+?)} \[?\4\]?.*)*)/gm, replacement(a, b, c, d, e) { | ||
const {o:f} = this.A, g = /^!/.test(c), h = g ? c.replace(/^!/, "") : c; | ||
c = Object.values(this.types).find(({name:l, i:k}) => f ? k == h : l == h); | ||
return c ? La(c, e, d, b, g, f) : (this.l("Type %s not found", h), a); | ||
}}; | ||
function Wa(a, b) { | ||
b = b.reduce((c, d) => Object.assign({}, c, {[d.h]:d}), {}); | ||
a.s = Object.assign({}, a.s, b); | ||
} | ||
class Xa extends wa { | ||
constructor(a) { | ||
a = void 0 === a ? {} : a; | ||
super([Ta, Va]); | ||
this.s = {}; | ||
this.on("types", b => { | ||
Wa(this, b); | ||
}); | ||
this.on("namespace", b => { | ||
this.namespaces.includes(b) || this.namespaces.push(b); | ||
}); | ||
this.w = a; | ||
this.namespaces = []; | ||
this.j = console.log; | ||
} | ||
get types() { | ||
return this.s; | ||
} | ||
} | ||
;var Za = async() => { | ||
const {m:a = !1, u:b = !1, v:c} = {m:aa, u:ba, v:A}; | ||
var d = await M(B, z); | ||
var ab = async() => { | ||
const {o:a = !1, v:b = !1, w:c} = {o:ba, v:ca, w:z}; | ||
var d = await L(A, y); | ||
let e; | ||
d.isFile() ? e = [z] : d.isDirectory() && (d = await O(z), e = P(d.content, z)); | ||
await Ya(e, a, b, c); | ||
d.isFile() ? e = [y] : d.isDirectory() && (d = await N(y), e = O(d.content, y)); | ||
await $a(e, a, b, c); | ||
}; | ||
const Ya = async(a, b = !1, c = !1, d = null) => { | ||
const $a = async(a, b = !1, c = !1, d = null) => { | ||
await Promise.all(a.map(async e => { | ||
var f = await J(e); | ||
const g = new Xa({m:b, u:c}); | ||
g.j = console.error; | ||
var f = await I(e); | ||
const g = new Sa([Xa, Za], {o:b, v:c}); | ||
g.l = console.error; | ||
g.end(f); | ||
f = await I(g); | ||
"-" == d ? console.log(f) : d ? await K(d, f) : await K(e, f); | ||
f = await H(g); | ||
"-" == d ? console.log(f) : d ? await J(d, f) : await J(e, f); | ||
})); | ||
@@ -654,3 +680,3 @@ }; | ||
return void 0 !== b ? b : a; | ||
}, Ha = /^ \* @prop {(.+?)} (\[)?(.+?)(?:=(["'])?(.+?)\4)?(?:])?(?: (.+?))?(?: Default `(.+?)`.)?$/gm, Ga = "type opt name quote defaultValue description Default".split(" "), ya = new RegExp(`^ \\* @typedef {(.+?)} (.+?)(?: (.+))?\\n((?:${/ \* @prop(?:erty)? .+\n/.source})*)`, "gm"), $a = (a, b, c, d) => { | ||
}, Fa = /^ \* @prop {(.+?)} (\[)?(.+?)(?:=(["'])?(.+?)\4)?(?:])?(?: (.+?))?(?: Default `(.+?)`.)?$/gm, Ea = "type opt name quote defaultValue description Default".split(" "), Qa = new RegExp(`^ \\* @typedef {(.+?)} (.+?)(?: (.+))?\\n((?:${/ \* @prop(?:erty)? .+\n/.source})*)`, "gm"), bb = (a, b, c, d) => { | ||
d = d.length; | ||
@@ -661,3 +687,3 @@ a = a && "Object" != a ? ` type="${a}"` : ""; | ||
}; | ||
class ab extends C { | ||
class cb extends B { | ||
constructor() { | ||
@@ -668,3 +694,3 @@ super({writableObjectMode:!0}); | ||
var {type:d, name:e, description:f, c:g} = a; | ||
a = d && d.startsWith("import") ? bb(d, e) : $a(d, e, f, g); | ||
a = d && d.startsWith("import") ? db(d, e) : bb(d, e, f, g); | ||
this.push(a); | ||
@@ -678,4 +704,4 @@ g.forEach(h => { | ||
q = p && !q ? " opt" : ""; | ||
const v = " ".repeat(4), cb = " ".repeat(6); | ||
h = `${v}<prop${q}${h} name="${k}"${t}${n ? `>\n${cb}${n}\n${v}</prop>` : "/>"}\n`; | ||
const v = " ".repeat(4), eb = " ".repeat(6); | ||
h = `${v}<prop${q}${h} name="${k}"${t}${n ? `>\n${eb}${n}\n${v}</prop>` : "/>"}\n`; | ||
} | ||
@@ -688,3 +714,3 @@ this.push(h); | ||
} | ||
const bb = (a, b) => { | ||
const db = (a, b) => { | ||
const c = /import\((['"])(.+?)\1\)/.exec(a); | ||
@@ -697,3 +723,3 @@ if (!c) { | ||
}; | ||
class db extends C { | ||
class fb extends B { | ||
constructor() { | ||
@@ -704,3 +730,3 @@ super({objectMode:!0}); | ||
var [, d, e, f, g] = a; | ||
a = Fa(g).map(h => { | ||
a = Da(g).map(h => { | ||
var l = Object.assign({}, h), k = h.defaultValue; | ||
@@ -712,5 +738,5 @@ const m = h.Default; | ||
l = (delete l.defaultValue, delete l.Default, delete l.opt, delete l.name, delete l.type, l); | ||
n = Object.assign({}, l, {name:p, type:h}, k ? {defaultValue:Z(k)} : {}, m ? {i:Z(m)} : {}, n ? {optional:!0} : {}); | ||
n = Object.assign({}, l, {name:p, type:h}, k ? {defaultValue:Z(k)} : {}, m ? {j:Z(m)} : {}, n ? {optional:!0} : {}); | ||
if (k || m) { | ||
k ? k !== m && void 0 !== n.i && (k = R(p, m, h), console.error("%s[%s] does not match Default `%s`.", e, k, n.i)) : (k = R(p, m, h), console.error("%s[%s] got from Default.", e, k)), n.default = "defaultValue" in n ? n.defaultValue : n.i, delete n.defaultValue, delete n.i; | ||
k ? k !== m && void 0 !== n.j && (k = P(p, m, h), console.error("%s[%s] does not match Default `%s`.", e, k, n.j)) : (k = P(p, m, h), console.error("%s[%s] got from Default.", e, k)), n.default = "defaultValue" in n ? n.defaultValue : n.j, delete n.defaultValue, delete n.j; | ||
} | ||
@@ -723,4 +749,4 @@ return n; | ||
} | ||
async function eb(a) { | ||
const b = xa(), c = new db, d = new ab; | ||
async function gb(a) { | ||
const b = Pa(), c = new fb, d = new cb; | ||
b.pipe(c).pipe(d); | ||
@@ -741,21 +767,21 @@ b.end(a); | ||
return `<types> | ||
${(await I(d)).trim()} | ||
${(await H(d)).trim()} | ||
</types>`; | ||
} | ||
;var fb = async() => { | ||
const {v:a} = {v:A}; | ||
var b = await J(z); | ||
b = await eb(b); | ||
a ? await K(a, b) : console.log(b); | ||
;var hb = async() => { | ||
const {w:a} = {w:z}; | ||
var b = await I(y); | ||
b = await gb(b); | ||
a ? await J(a, b) : console.log(b); | ||
}; | ||
if (da) { | ||
const a = x(); | ||
console.log(fa({usage:a, description:"Embeds and maintains Closure-compatible types JSDoc in\nJavaScript source code from an external types.xml file.", line:"typal source [--closure|externs] [--migrate] [-o output] [-hv]", example:"typal src/index.js -c"})); | ||
if (ea) { | ||
const a = aa(); | ||
console.log(ha({usage:a, description:"Embeds and maintains Closure-compatible types JSDoc in\nJavaScript source code from an external types.xml file.", line:"typal source [--closure|externs] [--migrate] [-o output] [-hv]", example:"typal src/index.js -c"})); | ||
process.exit(); | ||
} else { | ||
ea && (console.log(require("../../package.json").version), process.exit()); | ||
fa && (console.log(require("../../package.json").version), process.exit()); | ||
} | ||
(async() => { | ||
try { | ||
return ca ? await fb() : await Za(); | ||
return da ? await hb() : await ab(); | ||
} catch (a) { | ||
@@ -762,0 +788,0 @@ process.env.DEBUG ? console.log(a.stack) : console.log(a.message); |
{ | ||
"name": "typal", | ||
"version": "1.3.1", | ||
"version": "1.3.2", | ||
"description": "Organises TypeDefs By Placing Them Into Types.Xml File To Be Embedded Into Source Code Compatible With VSCode And Google Closure Compiler, Generates Externs And Allows To Place Documentation In README Markdown.", | ||
@@ -69,5 +69,5 @@ "main": "build/index.js", | ||
"alamode": "^1.9.3", | ||
"argufy": "^1.4.0", | ||
"argufy": "^1.5.0", | ||
"catchment": "^3.3.0", | ||
"documentary": "^1.23.4", | ||
"documentary": "^1.24.1", | ||
"erotic": "^2.1.1", | ||
@@ -77,7 +77,7 @@ "eslint-config-artdeco": "1.0.1", | ||
"preact": "8.4.2", | ||
"restream": "^3.6.0", | ||
"restream": "^3.7.1", | ||
"temp-context": "^2.1.3", | ||
"usually": "^1.2.0", | ||
"yarn-s": "1.1.0", | ||
"zoroaster": "^3.11.5" | ||
"zoroaster": "^3.11.6" | ||
}, | ||
@@ -84,0 +84,0 @@ "dependencies": { |
@@ -7,3 +7,3 @@ import read from '@wrote/read' | ||
import makePromise from 'makepromise' | ||
import JSTypal from '../../lib/JSTypal' | ||
import makeJSTypal from '../../lib/make-JSTypal' | ||
@@ -29,3 +29,3 @@ export default async (source, opts = {}) => { | ||
const content = await read(file) | ||
const js = new JSTypal({ closure, externs }) | ||
const js = makeJSTypal({ closure, externs }) | ||
js.LOG = console.error | ||
@@ -32,0 +32,0 @@ js.end(content) |
import { Replaceable } from 'restream' | ||
import typedefJsRule from './typedef/rule' | ||
import JSDocRule from './typedef/jsdoc' | ||
import Type from './Type' // eslint-disable-line | ||
export default class JSTypal extends Replaceable { | ||
constructor(conf = {}) { | ||
super([typedefJsRule, JSDocRule]) | ||
constructor(rules, conf = {}) { | ||
super(rules) | ||
this._types = {} | ||
@@ -17,4 +15,5 @@ | ||
}) | ||
/** @type {{ closure: boolean, externs: boolean }} */ | ||
this.conf = conf | ||
/** @type {Array<string>} */ | ||
/** @type {!Array<string>} */ | ||
this.namespaces = [] | ||
@@ -25,3 +24,3 @@ this.LOG = console.log | ||
* Add types emitted during typedefJsRule replacement. | ||
* @param {Array<Type>} typedefs | ||
* @param {!Array<!Type>} typedefs | ||
*/ | ||
@@ -48,3 +47,3 @@ addTypes(typedefs) { | ||
/** | ||
* @type {Object.<string, Type>} | ||
* @type {!Object.<string, !Type>} | ||
*/ | ||
@@ -54,7 +53,2 @@ get types() { | ||
} | ||
} | ||
/** | ||
* @suppress {nonStandardJsDocs} | ||
* @typedef {import('../lib/Type').default} Type | ||
*/ | ||
} |
@@ -182,3 +182,11 @@ import extractTags from 'rexml' | ||
const pp = getLinks(allTypes, generic) | ||
return `${gen}.<${string}${pp}>` | ||
return `${gen}<${string}${pp}>` | ||
} else if (/^function\(.+?\)$/.test(t)) { | ||
const [,vars] = /** @type {!RegExpResult} */ | ||
(/^function\((.+?)\)$/.exec(t)) | ||
const allVars = vars.split(',').map(v => v.trim()) | ||
const pp = allVars.map(v => { | ||
return getLinks(allTypes, v) | ||
}) | ||
return `function(${pp.join(', ')})` | ||
} | ||
@@ -207,3 +215,3 @@ const link = getLinkToType(allTypes, t) | ||
const d = !prop.hasDefault ? '-' : `\`${prop.default}\`` | ||
return [name, `_${esc(linkedType)}_`, esc(prop.description), d] | ||
return [name, `<em>${esc(linkedType)}</em>`, esc(prop.description), d] | ||
}) | ||
@@ -210,0 +218,0 @@ const pre = [h, ...ps] |
import Type from '../Type' // eslint-disable-line | ||
import JSTypal from '../JSTypal' // eslint-disable-line | ||
/** | ||
@@ -3,0 +5,0 @@ * _JSDoc regex_ detects the ` * @param {Type}` declaration above functions, and the _JSDoc rule_ updates them according to existing types that were detected with the `typedefRule` rule. |
import read from '@wrote/read' | ||
import { makeBlock, importToTypedef } from '../' | ||
import Type from '../Type' // eslint-disable-line | ||
import JSTypal from '../JSTypal' // eslint-disable-line | ||
import parseFile from '../parse' | ||
@@ -14,3 +15,3 @@ import { closureJoinTypes, externsJoinTypes } from '../closure' | ||
* @suppress {globalThis} | ||
* @type {function(this: { namespaces: !Array<string>, emit: function(string, *), LOG: function(...string), conf: { closure: boolean, externs: boolean } }, ...string): !Promise<string>} | ||
* @type {function(this:JSTypal, ...string): !Promise<string>} | ||
*/ | ||
@@ -17,0 +18,0 @@ async function replacement(match, docOrTypal, location) { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
185492
33
2500