xshell 0.0.8 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -2
- package/extension.js +12 -12
- package/extension.js.map +1 -1
- package/file.d.ts +24 -17
- package/file.js +49 -52
- package/file.js.map +1 -1
- package/index.js +5 -5
- package/index.js.map +1 -1
- package/net.d.ts +28 -19
- package/net.js +80 -70
- package/net.js.map +1 -1
- package/package.json +17 -25
- package/process.d.ts +17 -17
- package/process.js +61 -67
- package/process.js.map +1 -1
- package/prototype.d.ts +33 -22
- package/prototype.js +130 -108
- package/prototype.js.map +1 -1
- package/repl.d.ts +2 -5
- package/repl.js +87 -77
- package/repl.js.map +1 -1
- package/{REPL.png → repl.png} +0 -0
- package/server.d.ts +11 -7
- package/server.js +117 -113
- package/server.js.map +1 -1
- package/tsconfig.json +18 -6
- package/utils.d.ts +17 -10
- package/utils.js +87 -44
- package/utils.js.map +1 -1
- package/xshell.js +1 -1
- package/xshell.js.map +1 -1
package/prototype.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prototype.js","sourceRoot":"","sources":["prototype.ts"],"names":[],"mappings":"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","sourcesContent":["declare global {\n interface String {\n readonly width: number\n \n // --- 工具方法\n /** truncate string with fixed width and preserve color */\n truncate (this: string, width: number): string\n \n /** pad string to `<width>` \n - character?: `' '`\n - position?: `'right'`\n */\n pad (this: string, width: number, { character, position }?: { character?: string, position?: 'left' | 'right'}): string\n \n limit (this: string, width: number, { character, position }?: { character?: string, position?: 'left' | 'right'}): string\n \n to_regx (this: string, preservations?: string, flags?: string): RegExp\n \n to_bool (this: string): boolean\n \n /** string pattern replacement\n - pattern: pattern of matched string part\n - pattern_: pattern of target string part\n - preservations?: `''` preserved regexp characters\n - flags?: `''` regexp flags\n - transformer?: `(name, matched) => matched || ''` placeholder transformer\n - pattern_placeholder?: `/\\{.*?\\}/g`\n \n ```ts\n 'E:/ACGN/海贼王/[Skytree][海贼王][One_Piece][893][GB_BIG5_JP][X264_AAC][1080P][CRRIP][天空树双语字幕组].mkv'.reformat( \n '{dirp}/[Skytree][海贼王][{ en_name: \\\\w+ }][{ episode: \\\\d+ }][GB_BIG5_JP][{encoding}_AAC][1080P][CRRIP][天空树双语字幕组].{format}', \n 'G:/ACGN/海贼王/{episode} {encoding}.{format}', \n '\\\\+', \n 'i', \n (name, value) => name === 'episode' ? String(+value + 1) : value.toLowerCase() \n )\n ```\n */\n refmt ( this: string,\n pattern: string,\n \n pattern_: string,\n \n preservations?: string,\n \n flags?: string,\n \n transformer?: (name: string, value: string, placeholders: { [name: string]: string }) => string,\n \n pattern_placeholder?: RegExp\n \n ): string\n \n \n /** string pattern match\n ```ts\n 'git+https://github.com/tamino-martinius/node-ts-dedent-123.git'.find(\n '^{protocol:[\\\\w+]+}://{hostname:[\\\\w\\\\.]+}/{username}/{project}-{index:\\\\d+}.{suffix}', '^', 'i'\n )\n {\n protocol: 'git+https',\n hostname: 'github.com',\n ...\n }\n ```\n \n - preservations?: `''` preserved regexp characters\n - flags?: `''` regexp flags\n - pattern_placeholder?: `/\\{.*?\\}/g`\n */\n find (this: string,\n \n pattern: string, \n \n preservations?: string, \n \n flags?: string, \n \n pattern_placeholder?: RegExp\n \n ): { [name: string]: string }\n \n \n /** - type?: `'SINGLE'` */\n quote (this: string, type?: keyof typeof QUOTES | 'PSH'): string\n \n /** - shape?: `'PARENTHESIS'` */\n bracket (this: string, shape?: keyof typeof BRACKETS): string\n \n surround (this: string, left: string, right?: string): string\n \n surround_tag (this: string, tag_name: string): string\n \n to_lf (this: string): string\n \n to_crlf (this: string): string\n \n /** 'xxx'.replace(/pattern/g, '') \n if pattern is string then RegExp will add flags (default 'g'), else ignore flags\n */\n rm (this: string, pattern: string | RegExp, flags?: string): string\n \n \n // --- colors\n readonly red: string\n \n readonly green: string\n \n readonly yellow: string\n \n readonly blue: string\n \n readonly magenta: string\n \n readonly cyan: string\n \n readonly grey: string\n \n readonly underline: string\n \n strip_ansi (this: string): string\n \n \n // --- text processing\n split_lines (this: string): string[]\n \n trim_doc_comment (this: string): string\n \n split_indent (this: string): { indent: number, text: string }\n \n \n to_base64 (this: string): string\n \n decode_base64 (this: string): string\n \n \n space (this: string): string\n \n \n // --- path ops\n fdir: string\n \n /** path.basename, e.g. \n - D:/0/aaa.txt -> aaa.txt\n - D:/aaa/ -> aaa\n */\n fname: string\n \n /** .txt */\n fext: string\n \n /** fs.existsSync */\n fexists: boolean\n \n is_dir: boolean\n \n to_slash (this: string): string\n \n to_backslash (this: string): string\n }\n \n \n interface Date {\n /** - ms?: `false` show ms */\n to_str (this: Date, ms?: boolean): string\n \n to_date_str (this: Date): string\n \n to_time_str (this: Date): string\n }\n \n \n interface Number {\n /** 12.4 KB (1 KB = 1024 B) */\n to_fsize_str (this: number, units?: 'iec' | 'metric'): string\n \n \n to_bin_str (this: number): string\n \n to_hex_str (this: number, length?: number): string\n \n to_oct_str (this: number): string\n }\n \n \n interface Array<T> {\n last: T\n \n log (this: string[], limit?: number): void\n \n indent (this: string[], width: number, c?: string): string[]\n \n indent2to4 (this: string[]): string[]\n \n \n // --- text processing\n /**\n - trim_line?: `true`\n - rm_empty_lines?: `true`\n - rm_last_empty_lines?: `false`\n */\n trim_lines (this: string[], { trim_line, rm_empty_lines, rm_last_empty_lines }?: { trim_line?: boolean, rm_empty_lines?: boolean, rm_last_empty_lines?: boolean }): string[]\n \n trim_license (this: string[]): string[]\n \n split_indents (this: string[]): { indent: number, text: string }[]\n \n join_lines (): string\n }\n}\n\n\nimport fs from 'fs'\n\nimport path from 'upath'\n// @ts-ignore\nimport byte_size from 'byte-size'\n\nimport EmojiRegex from 'emoji-regex'\n\nimport strip_ansi from 'strip-ansi'\nimport colors from 'colors/safe'\n\nexport const EMOJI_REGEX = EmojiRegex()\n\nexport { colors }\n\n\nexport function to_method_property_descriptors (methods: { [name: string]: Function }): PropertyDescriptorMap {\n return Object.fromEntries( Object.entries(methods).map( ([name, value]) => ([name, {\n configurable: true,\n writable: true,\n enumerable: false,\n value,\n } as PropertyDescriptor])))\n}\n\n\nexport function to_getter_property_descriptors (getters: { [name: string]: Function }): PropertyDescriptorMap {\n return Object.fromEntries( Object.entries(getters).map( ([name, get]) => ([name, {\n configurable: true,\n enumerable: false,\n get,\n } as PropertyDescriptor])))\n}\n\n\nexport const CJK = '([\\u2e80-\\u9fff\\uf900-\\ufaff])'\n\nexport const QUOTES = {\n SINGLE: \"'\",\n DOUBLE: '\"',\n BACKTICK: '`',\n}\n\nexport const BRACKETS = {\n ROUND: [ '(', ')' ],\n SQUARE: [ '[', ']' ],\n CURLY: [ '{', '}' ],\n POINTY: [ '<', '>' ],\n CORNER: [ '「', '」' ],\n FAT: [ '【', '】' ],\n TORTOISE_SHELL: [ '〔', '〕' ],\n} as const\n\n\n\n// ------------------------------------ String.prototype\nObject.defineProperties( String.prototype, {\n ... to_getter_property_descriptors({\n width (this: string) {\n const s = strip_ansi(this.replace(EMOJI_REGEX, ' '))\n let width = 0\n for (let i = 0; i < s.length; i++) {\n const code = s.codePointAt(i)\n \n if (\n (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) || // Ignore control characters\n code >= 0x300 && code <= 0x36F // Ignore combining characters\n ) continue\n \n // Surrogates\n if (code > 0xFFFF)\n i++\n \n width += is_codepoint_fullwidth(code) ? 2 : 1\n }\n return width\n }\n }),\n \n \n // ------------ 文本处理工具方法\n ... to_method_property_descriptors({\n /** truncate string with fixed width and preserve color */\n truncate (this: string, width: number) {\n const color_bak = this.startsWith('\\u001b') ? this.slice(0, 5) : ''\n const s = strip_ansi(this)\n if (width <= 2) return this.slice(0, width)\n let i_fitted = 0\n let fitted_width = 0\n let cur_width = 0\n for (let i = 0; i < s.length; i++) {\n const code = s.codePointAt(i)\n \n if (\n (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) || // Ignore control characters\n code >= 0x300 && code <= 0x36F // Ignore combining characters\n ) continue\n \n // Surrogates (codepoint 需要用两个 UTF-16 编码单位表示,因此这里跳过第二个编码单位,防止重复计算显示宽度) \n if (code > 0xFFFF)\n i++\n \n const w = is_codepoint_fullwidth(code) ? 2 : 1\n \n if (cur_width + w + 2 <= width) {\n i_fitted = i\n fitted_width += w\n }\n \n cur_width += w\n \n if (cur_width > width) {\n const i_fitted_next = i_fitted + 1\n const t = s.slice(0, i_fitted_next) + ' '.repeat(width - 2 - fitted_width) + '…' \n return color_bak ? color_bak + t + '\\u001b[39m' : t\n }\n }\n return this\n },\n \n \n pad (this: string, width: number, { character = ' ', position = 'right' }: { character?: string, position?: 'left' | 'right'} = { }) {\n const _width = this.width\n if (_width >= width) return this\n if (position === 'right') return this + character.repeat( (width - _width) / character.width )\n return character.repeat(width - _width) + this\n },\n \n \n limit (this: string, width: number, { character = ' ', position = 'right' }: { character?: string, position?: 'left' | 'right'} = { }) {\n return this.pad(width, { character, position }).truncate(width)\n },\n \n \n to_regx (this: string, preservations: string, flags = ''): RegExp {\n const preserved_chars = new Set(preservations)\n const replace_chars: string = Array.prototype.filter.call('|\\\\{}()[]^$+*?.-', (c: string) => !preserved_chars.has(c))\n .map( (c: string) => c === ']' ? '\\\\]' : c )\n .join('')\n \n return new RegExp( this.replace(new RegExp(`[${replace_chars}]`, 'g'), '\\\\$&'), flags)\n },\n \n \n to_bool (this: string) {\n return this.length && this !== '0' && this.toLowerCase() !== 'false'\n },\n \n refmt (this: string, \n pattern : string,\n pattern_: string,\n preservations: string = '',\n flags = '',\n transformer: (name: string, value: string, placeholders: { [name: string]: string }) => string = (name, value) => value || '',\n pattern_placeholder = /\\{.*?\\}/g,\n ): string {\n // --- convert pattern to pattern_regx\n let last_end = 0\n \n // placeholder matched group indexes\n let $placeholders: { [name: string]: number } = { }\n \n let regx_parts = [ ]\n \n function add_part (left: number, right?: number) {\n const part = pattern.slice(left, right)\n if (part)\n regx_parts.push(part.to_regx(preservations).source.bracket())\n }\n \n pattern.replace(pattern_placeholder, ($0, offset) => {\n add_part(last_end, offset)\n last_end = offset + $0.length\n \n const placeholder = $0.slice(1, -1)\n let [ placeholder_name, placeholder_pattern ] = placeholder.split(':').map( s => s.trim() )\n let optional = false\n if (placeholder_name.endsWith('?')) {\n placeholder_name = placeholder_name.slice(0, -1)\n optional = true\n }\n $placeholders[placeholder_name] = regx_parts.push( placeholder_pattern ? placeholder_pattern.bracket() + ( optional ? '?' : '' ) : '(.*?)' )\n return ''\n })\n \n add_part(last_end)\n \n // modify last (.*?) to greedy in order to satisfy the situation of .{suffix}\n regx_parts = regx_parts.filter( part => part)\n if (regx_parts.last === '(.*?)')\n regx_parts[regx_parts.length - 1] = '(.*)'\n \n const pattern_regx = new RegExp(regx_parts.join(''), flags )\n \n \n // --- match original string based on pattern_regx, and get result to build placeholders dict\n const matches = pattern_regx.exec(this)\n \n if (!matches) return this\n \n const placeholders = Object.fromEntries( Object.entries($placeholders).map( ([name, $i]) => ([\n [ name, matches[$i] ],\n [ name + '.before', matches[ $i - 1 ] || '' ],\n [ name + '.after', matches[ $i + 1 ] || '' ],\n ])).flat())\n \n \n // --- convert pattern_ to replacement_str, if transformer exists then apply on placeholder\n last_end = 0\n let replacement_parts = [ ]\n \n pattern_.replace(pattern_placeholder, ($0, offset) => {\n replacement_parts.push(pattern_.slice(last_end, offset))\n last_end = offset + $0.length\n \n const placeholder_name = $0.slice(1, -1)\n \n replacement_parts.push( transformer(placeholder_name, placeholders[placeholder_name], placeholders))\n \n return ''\n })\n replacement_parts.push(pattern_.slice(last_end))\n \n return this.replace(pattern_regx, replacement_parts.join(''))\n },\n \n \n find (this: string,\n pattern: string, \n preservations: string = '', \n flags = '', \n pattern_placeholder = /\\{.*?\\}/g\n ): { [name: string]: string } {\n // --- convert pattern to pattern_regx\n let last_end = 0\n \n // placeholder matched group index\n let $placeholders: { [name: string]: number } = { }\n \n let regx_parts = [ ]\n \n function add_part (left: number, right?: number) {\n const part = pattern.slice(left, right)\n if (part)\n regx_parts.push(part.to_regx(preservations).source.bracket())\n }\n \n pattern.replace(pattern_placeholder, ($0, offset) => {\n add_part(last_end, offset)\n last_end = offset + $0.length\n \n const placeholder = $0.slice(1, -1)\n let [ placeholder_name, placeholder_pattern ] = placeholder.split(':').map( s => s.trim() )\n let optional = false\n if (placeholder_name.endsWith('?')) {\n placeholder_name = placeholder_name.slice(0, -1)\n optional = true\n }\n $placeholders[placeholder_name] = regx_parts.push( placeholder_pattern ? placeholder_pattern.bracket() + ( optional ? '?' : '' ) : '(.*?)' )\n return ''\n })\n \n add_part(last_end)\n \n // convert last (.*?) to greedy, to make .{suffix} work\n regx_parts = regx_parts.filter( part => part)\n if (regx_parts.last === '(.*?)')\n regx_parts[regx_parts.length - 1] = '(.*)'\n \n const pattern_regx = new RegExp(regx_parts.join(''), flags)\n \n \n // --- match original string based on pattern_regx, and get result to build placeholders dict\n const matches = pattern_regx.exec(this)\n \n if (!matches) return { }\n \n return Object.fromEntries(\n Object.entries($placeholders).map( ([name, $i]) => ([ name, matches[$i] || '' ]) )\n )\n },\n \n quote (this: string, type: keyof typeof QUOTES | 'PSH' = 'SINGLE') {\n if (type === 'PSH') return '& ' + this.quote()\n return this.surround(QUOTES[type])\n },\n \n \n bracket (this: string, shape: keyof typeof BRACKETS = 'ROUND') {\n return this.surround(...BRACKETS[shape] as [string, string])\n },\n \n \n surround (this: string, left: string, right?: string) {\n return left + this + (right || left)\n },\n \n surround_tag (this: string, tag_name: string): string {\n return '<' + tag_name + '>' + this + '</' + tag_name + '>'\n },\n \n \n to_lf (this: string) {\n return this.replace(/\\r\\n/g, '\\n')\n },\n \n \n to_crlf (this: string) {\n return this.replace(/\\n/g, '\\r\\n')\n },\n \n \n rm (this: string, pattern: string | RegExp, flags: string = 'g') {\n if (typeof pattern === 'string')\n pattern = new RegExp(pattern, flags)\n \n return this.replace(pattern, '')\n },\n \n \n split_lines (this: string, delimiter: string | RegExp = /\\r?\\n/) {\n return this.split(delimiter)\n },\n \n \n split_indent (this: string): { indent: number, text: string } {\n let i = 0\n let indent = 0\n for (; i < this.length; i++)\n if (this[i] === ' ')\n indent += 1\n else if (this[i] === '\\t')\n indent += 4\n else\n break\n \n return {\n indent,\n text: this.slice(i)\n }\n },\n \n \n trim_doc_comment (this: string) {\n return '/** ' + this.slice(3, -2).replace(/\\s*\\*\\s*/g, ' ').replace(/@(param|params|return) \\{.*?\\}\\s*/g, '').trim() + ' */'\n },\n \n \n to_base64 (this: string) {\n return Buffer.from(this).toString('base64')\n },\n \n \n decode_base64 (this: string) {\n return Buffer.from(this, 'base64').toString()\n },\n \n \n strip_ansi (this: string) {\n return strip_ansi(this)\n },\n \n \n space (this: string) {\n if (!this) return this\n let text_: string\n text_ = this\n .replace(new RegExp(CJK + `(['\"])`, 'g'), '$1 $2')\n .replace(new RegExp(`(['\"])` + CJK, 'g'), '$1 $2')\n \n .replace(/([\"']+)\\s*(.+?)\\s*([\"']+)/g, '$1$2$3')\n \n .replace(new RegExp(CJK + '([\\\\+\\\\-\\\\*\\\\/=&\\\\\\\\\\\\|<>])([A-Za-z0-9])', 'g'), '$1 $2 $3')\n .replace(new RegExp('([A-Za-z0-9])([\\\\+\\\\-\\\\*\\\\/=&\\\\\\\\\\\\|<>])' + CJK, 'g'), '$1 $2 $3')\n \n const textBak = text_\n \n text_ = text_.replace(new RegExp(CJK + '([\\\\(\\\\[\\\\{<\\u201c]+(.*?)[\\\\)\\\\]\\\\}>\\u201d]+)' + CJK, 'g'), '$1 $2 $4')\n \n if (text_ === textBak)\n text_ = text_\n .replace(new RegExp(CJK + '([\\\\(\\\\[\\\\{<\\u201c>])', 'g'), '$1 $2')\n .replace(new RegExp('([\\\\)\\\\]\\\\}>\\u201d<])' + CJK, 'g'), '$1 $2')\n \n return text_\n // eslint-disable-next-line no-useless-escape\n .replace(/([\\(\\[\\{<\\u201c]+)(\\s*)(.+?)(\\s*)([\\)\\]\\}>\\u201d]+)/g, '$1$3$5')\n .replace(new RegExp(CJK + '([~!;:,\\\\.\\\\?\\u2026])([A-Za-z0-9])', 'g'), '$1$2 $3')\n .replace(new RegExp(CJK + '([A-Za-z0-9`\\\\$%\\\\^&\\\\*\\\\-=\\\\+\\\\\\\\\\\\|\\\\/@\\u00a1-\\u00ff\\u2022\\u2027\\u2150-\\u218f])', 'g'), '$1 $2')\n .replace(new RegExp('([A-Za-z0-9`\\\\$%\\\\^&\\\\*\\\\-=\\\\+\\\\\\\\\\\\|\\\\/@\\u00a1-\\u00ff\\u2022\\u2027\\u2150-\\u218f])' + CJK, 'g'), '$1 $2')\n }\n }),\n \n \n // ------------ colors\n ... Object.fromEntries([ 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'grey', 'underline' ].map( color => ([color, {\n configurable: true,\n get (this: string) {\n return colors[color](this)\n }\n }]))),\n \n \n // ------------ file path ops\n ... to_getter_property_descriptors({\n fdir (this: string) {\n const dir = path.dirname(this)\n return dir.endsWith('/') ? dir : `${dir}/`\n },\n \n fname (this: string) {\n return path.basename(this)\n },\n \n fext (this: string) {\n return path.extname(this)\n },\n \n fexists (this: string) {\n return fs.existsSync(this)\n },\n \n is_dir (this: string) {\n if (this.endsWith('/')) return true\n try {\n return fs.lstatSync(this).isDirectory()\n } catch (error) {\n return false\n }\n },\n }),\n \n ... to_method_property_descriptors({\n to_slash (this: string) {\n if (!this) return this\n return path.normalizeSafe(this)\n },\n \n to_backslash (this: string) {\n return this.replaceAll('/', '\\\\')\n },\n })\n})\n\n\n// ------------------------------------ Date.prototype\nObject.defineProperties( Date.prototype, to_method_property_descriptors({\n to_str (this: Date, ms = false) {\n return this.toLocaleString().replace(/(\\d+)\\/(\\d+)\\/(\\d+) ?(上午|下午)(\\d+):(\\d{2}):(\\d{2}).*/, (matches, year, month, day, ampm, hour, minute, second) => {\n hour = Number(hour)\n if (ampm === '上午' && hour === 12) {\n hour = 0\n ampm = '凌晨'\n }\n else if (ampm === '上午' && hour <= 6) ampm = '凌晨'\n else if (ampm === '上午' && hour <= 8 ) ampm = '早上'\n else if (ampm === '上午' && hour <= 10) ampm = '上午'\n else if (ampm === '上午' && hour <= 11) ampm = '中午'\n else if (ampm === '下午' && hour === 12) ampm = '中午'\n else if (ampm === '下午' && hour <= 5 ) ampm = '下午'\n else ampm = '晚上'\n \n return `${year}.${month.pad(2, { character: '0', position: 'left' })}.${day.pad(2, { character: '0', position: 'left' })} ` +\n `${ampm} ${String(hour).pad(2, { character: '0', position: 'left' })}:${minute}:${second}${ ms ? `.${this.getMilliseconds().toString().pad(3, { character: '0', position: 'left' })}` : '' }`\n })\n },\n \n to_date_str (this: Date) {\n return this.to_str().split(' ')[0]\n },\n \n to_time_str (this: Date, ms = false) {\n const [, ampm, time ] = this.to_str(ms).split(' ')\n return `${ampm} ${time}`\n },\n}))\n\n\n\n// ------------------------------------ Number.prototype\nObject.defineProperties( Number.prototype, to_method_property_descriptors({\n to_fsize_str (this: number, units: 'iec' | 'metric' = 'iec') {\n const { value, unit } = byte_size(this, { units })\n return `${value} ${(unit as string).rm('i').toUpperCase()}`\n },\n \n to_bin_str (this: number) {\n return `0b${this.toString(2)}`\n },\n \n to_hex_str (this: number, length?: number) {\n const s = this.toString(16).toUpperCase()\n if (!length)\n length = Math.ceil(s.length / 4) * 4\n return `0x${'0'.repeat(length - s.length)}${s}`\n },\n \n to_oct_str (this: number) {\n return `0o${this.toString(8)}`\n },\n}))\n\n\n\n// ------------------------------------ Array.prototype\nObject.defineProperties( Array.prototype, {\n ... to_getter_property_descriptors({\n last (this: any[]) {\n return this[this.length - 1]\n }\n }),\n \n \n // --- text processing methods\n ... to_method_property_descriptors({\n log (this: string[], limit: number = 10000) {\n const text = this.join('\\n') + '\\n'\n if (limit === -1 || this.length <= limit)\n console.log(text)\n else if (limit > 0)\n console.log(text.slice(0, limit) + '\\n...'.blue)\n else \n console.log('...\\n'.blue + text.slice(limit))\n },\n \n trim_lines (this: string[], { trim_line = true, rm_empty_lines = true, rm_last_empty_lines = false }: { trim_line?: boolean, rm_empty_lines?: boolean, rm_last_empty_lines?: boolean } = { }) {\n if (!this.length) return this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let lines = this\n \n if (trim_line)\n lines = lines.map( line => line.trim() )\n \n if (rm_empty_lines)\n return lines.filter( line => line )\n \n if (rm_last_empty_lines) {\n lines.reverse()\n const i_not_empty = lines.findIndex( line => line )\n if (i_not_empty !== -1)\n lines = lines.slice(i_not_empty)\n lines.reverse()\n return lines\n }\n \n return lines\n },\n \n \n trim_license (this: string[]) {\n const i = this.indexOf('/*')\n const j = this.indexOf('*/')\n if (i === 0 && this[i+1].includes('License'))\n return this.slice(j+1)\n else\n return this\n },\n \n split_indents (this: string[]): { indent: number, text: string }[] {\n return this.map( line => line.split_indent())\n },\n \n indent (this: string[], width?: number, character: string = ' ') {\n return this.map( line => character.repeat(width) + line )\n },\n \n indent2to4 (this: string[]) {\n return this.split_indents().map( line => \n ' '.repeat( Math.floor( line.indent / 2 ) * 4 ) + line.text\n )\n },\n \n join_lines (this: string[]) {\n return this.join('\\n')\n }\n })\n})\n\n\nexport function to_json (obj: any, replacer?: any) {\n return JSON.stringify(obj, replacer, 4)\n}\n\nexport function to_json_safely (obj: any, replacer?: any) {\n return to_json(obj, replacer)\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n .replace(/<\\/script>/g, '<\\\\/script>')\n}\n\n\nexport function is_codepoint_fullwidth (codepoint: number) {\n // Code points are derived from:\n // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n return (\n !Number.isNaN(codepoint) &&\n codepoint >= 0x1100 &&\n (\n codepoint <= 0x115F || // Hangul Jamo\n \n codepoint === 0x2026 || // …\n codepoint === 0x203B || // ※\n \n // Arrows\n (0x2190 <= codepoint && codepoint <= 0x21FF) ||\n \n codepoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n codepoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n \n // ①\n (0x2460 <= codepoint && codepoint <= 0x24FF) ||\n \n // Box Drawing\n (0x2500 <= codepoint && codepoint <= 0x257F) ||\n \n // Shapes, Symbols, …\n (0x2580 <= codepoint && codepoint <= 0x2BEF) ||\n \n // CJK Radicals Supplement .. Enclosed CJK Letters and Months\n (0x2E80 <= codepoint && codepoint <= 0x3247 && codepoint !== 0x303F) ||\n \n // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n (0x3250 <= codepoint && codepoint <= 0x4DBF) ||\n \n // CJK Unified Ideographs .. Yi Radicals\n (0x4E00 <= codepoint && codepoint <= 0xA4C6) ||\n \n // Hangul Jamo Extended-A\n (0xA960 <= codepoint && codepoint <= 0xA97C) ||\n \n // Hangul Syllables\n (0xAC00 <= codepoint && codepoint <= 0xD7A3) ||\n \n // CJK Compatibility Ideographs\n (0xF900 <= codepoint && codepoint <= 0xFAFF) ||\n \n // Vertical Forms\n (0xFE10 <= codepoint && codepoint <= 0xFE19) ||\n \n // CJK Compatibility Forms .. Small Form Variants\n (0xFE30 <= codepoint && codepoint <= 0xFE6B) ||\n \n // Halfwidth and Fullwidth Forms\n (0xFF01 <= codepoint && codepoint <= 0xFF60) ||\n (0xFFE0 <= codepoint && codepoint <= 0xFFE6) ||\n \n // Kana Supplement\n (0x1B000 <= codepoint && codepoint <= 0x1B001) ||\n \n // Enclosed Ideographic Supplement\n (0x1F200 <= codepoint && codepoint <= 0x1F251) ||\n \n // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n (0x20000 <= codepoint && codepoint <= 0x3FFFD)\n )\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"prototype.js","sourceRoot":"","sources":["prototype.ts"],"names":[],"mappings":";;;;AA8NA,yDAAmB;AAEnB,+DAAwB;AACxB,aAAa;AACb,uEAAiC;AAEjC,2EAAoC;AAEpC,yEAAmC;AACnC,+DAAyB;AAIhB,gBAJF,eAAK,CAIE;AAFD,QAAA,WAAW,GAAG,IAAA,qBAAU,GAAE,CAAA;AAKvC,SAAgB,8BAA8B,CAAE,OAAqC;IACjF,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SAClB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;YAC5B,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,KAAK;YACjB,KAAK;SACc,CAAC,CAAC,CAC5B,CAAC,CAAA;AACV,CAAC;AAVD,wEAUC;AAGD,SAAgB,8BAA8B,CAAE,OAAqC;IACjF,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SAClB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;YAC1B,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,GAAG;SACgB,CAAC,CAAC,CAC5B,CAAC,CAAA;AACV,CAAC;AATD,wEASC;AAGY,QAAA,GAAG,GAAG,gCAAgC,CAAA;AAEtC,QAAA,MAAM,GAAG;IAClB,MAAM,EAAM,GAAG;IACf,MAAM,EAAM,GAAG;IACf,QAAQ,EAAI,GAAG;CAClB,CAAA;AAEY,QAAA,QAAQ,GAAG;IACpB,KAAK,EAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,KAAK,EAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,GAAG,EAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;CACpB,CAAA;AAEV,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAChC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACpE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAC9C,CAAA;AAED,wDAAwD;AACxD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE;IACtC,GAAI,8BAA8B,CAAC;QAC/B,KAAK;YACD,MAAM,CAAC,GAAG,IAAA,oBAAU,EAChB,IAAI,CAAC,OAAO,CAAC,mBAAW,EAAE,IAAI,CAAC,CAClC,CAAA;YACD,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;gBAE7B,IACI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,IAAK,4BAA4B;oBACjF,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAE,8BAA8B;;oBAChE,SAAQ;gBAEV,aAAa;gBACb,IAAI,IAAI,GAAG,MAAM;oBACb,CAAC,EAAE,CAAA;gBAEP,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAChD;YACD,OAAO,KAAK,CAAA;QAChB,CAAC;KACJ,CAAC;IAGF,qCAAqC;IACrC,GAAI,8BAA8B,CAAC;QAC/B,0DAA0D;QAC1D,QAAQ,CAAgB,KAAa;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACnE,MAAM,CAAC,GAAG,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAA;YAC1B,IAAI,KAAK,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YAC3C,IAAI,QAAQ,GAAO,CAAC,CAAA;YACpB,IAAI,YAAY,GAAG,CAAC,CAAA;YACpB,IAAI,SAAS,GAAM,CAAC,CAAA;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAG,CAAC,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;gBAE7B,IACI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,IAAK,4BAA4B;oBACjF,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAE,8BAA8B;;oBAChE,SAAQ;gBAEV,yHAAyH;gBACzH,IAAI,IAAI,GAAG,MAAM;oBACb,CAAC,EAAE,CAAA;gBAEP,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAE9C,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;oBAC5B,QAAQ,GAAG,CAAC,CAAA;oBACZ,YAAY,IAAI,CAAC,CAAA;iBACpB;gBAED,SAAS,IAAI,CAAC,CAAA;gBAEd,IAAI,SAAS,GAAG,KAAK,EAAE;oBACnB,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAA;oBAClC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,GAAG,CAAA;oBAChF,OAAO,SAAS,CAAE,CAAC,CAAE,SAAS,GAAG,CAAC,GAAG,YAAY,CAAE,CAAC,CAAE,CAAC,CAAA;iBAC1D;aACJ;YACD,OAAO,IAAI,CAAA;QACf,CAAC;QAGD,GAAG,CAAgB,KAAa,EAAE,EAAE,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,OAAO,KAA0D,EAAG;YAChI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;YACzB,IAAI,MAAM,IAAK,KAAK;gBAAE,OAAO,IAAI,CAAA;YACjC,IAAI,QAAQ,KAAK,OAAO;gBAAE,OAAO,IAAI,GAAG,SAAS,CAAC,MAAM,CAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAE,CAAA;YAC9F,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;QAClD,CAAC;QAGD,KAAK,CAAgB,KAAa,EAAE,EAAE,SAAS,GAAG,GAAG,EAAE,QAAQ,GAAG,OAAO,KAA0D,EAAG;YAClI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACnE,CAAC;QAGD,OAAO,CAAgB,aAAqB,EAAE,KAAK,GAAG,EAAE;YACpD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAA;YAC9C,MAAM,aAAa,GAAW,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChH,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CACf,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEd,OAAO,IAAI,MAAM,CAAE,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,aAAa,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,EAAG,KAAK,CAAC,CAAA;QAC3F,CAAC;QAGD,OAAO;YACH,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAA;QACxE,CAAC;QAED,KAAK,CACD,OAAgB,EAChB,QAAgB,EAChB,gBAAwB,EAAE,EAC1B,KAAK,GAAG,EAAE,EACV,cAAiG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,EAC7H,mBAAmB,GAAG,UAAU;YAEhC,sCAAsC;YACtC,IAAI,QAAQ,GAAG,CAAC,CAAA;YAEhB,oCAAoC;YACpC,IAAI,aAAa,GAA2B,EAAG,CAAA;YAE/C,IAAI,UAAU,GAAG,EAAG,CAAA;YAEpB,SAAS,QAAQ,CAAE,IAAY,EAAE,KAAc;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACvC,IAAI,IAAI;oBACJ,UAAU,CAAC,IAAI,CACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAC/C,CAAA;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;gBAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC1B,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;gBAE7B,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACnC,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;gBACvF,IAAI,QAAQ,GAAG,KAAK,CAAA;gBACpB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAChC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAChD,QAAQ,GAAG,IAAI,CAAA;iBAClB;gBACD,aAAa,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,IAAI,CAC7C,mBAAmB,CAAC,CAAC;oBACjB,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7D,CAAC;wBACG,OAAO,CACd,CAAA;gBACD,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAElB,6EAA6E;YAC7E,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;gBAC3B,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;YAE9C,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YAG3D,6FAA6F;YAC7F,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEvC,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YAEzB,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;iBACxB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC,GAAG,IAAI,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzC,CAAC,GAAG,IAAI,QAAQ,EAAG,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;aAC5C,CAAC;iBACD,IAAI,EAAE,CAClB,CAAA;YAGD,2FAA2F;YAC3F,QAAQ,GAAG,CAAC,CAAA;YACZ,IAAI,iBAAiB,GAAG,EAAG,CAAA;YAE3B,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;gBACjD,iBAAiB,CAAC,IAAI,CAClB,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CACnC,CAAA;gBACD,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;gBAE7B,MAAM,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAExC,iBAAiB,CAAC,IAAI,CAClB,WAAW,CAAC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,CAC9E,CAAA;gBAED,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YACF,iBAAiB,CAAC,IAAI,CAClB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC3B,CAAA;YAED,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACjE,CAAC;QAGD,IAAI,CACA,OAAe,EACf,gBAAwB,EAAE,EAC1B,KAAK,GAAG,EAAE,EACV,mBAAmB,GAAG,UAAU;YAEhC,sCAAsC;YACtC,IAAI,QAAQ,GAAG,CAAC,CAAA;YAEhB,kCAAkC;YAClC,IAAI,aAAa,GAA2B,EAAG,CAAA;YAE/C,IAAI,UAAU,GAAG,EAAG,CAAA;YAEpB,SAAS,QAAQ,CAAE,IAAY,EAAE,KAAc;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACvC,IAAI,IAAI;oBACJ,UAAU,CAAC,IAAI,CACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAC/C,CAAA;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;gBAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC1B,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;gBAE7B,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACnC,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;gBACvF,IAAI,QAAQ,GAAG,KAAK,CAAA;gBACpB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAChC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAChD,QAAQ,GAAG,IAAI,CAAA;iBAClB;gBAED,aAAa,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,IAAI,CAC7C,mBAAmB,CAAC,CAAC;oBACjB,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7D,CAAC;wBACG,OAAO,CACd,CAAA;gBACD,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAElB,uDAAuD;YACvD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO;gBAC7C,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;YAE9C,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YAG3D,6FAA6F;YAC7F,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEvC,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAG,CAAA;YAExB,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;iBACxB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAChB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAC5B,CACR,CAAA;QACL,CAAC;QAED,KAAK,CAAgB,OAAoC,QAAQ;YAC7D,IAAI,IAAI,KAAK,KAAK;gBACd,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,CAAA;YAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACtC,CAAC;QAGD,OAAO,CAAgB,QAA+B,OAAO;YACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,gBAAQ,CAAC,KAAK,CAAqB,CAAC,CAAA;QAChE,CAAC;QAGD,QAAQ,CAAgB,IAAY,EAAE,KAAc;YAChD,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;QACxC,CAAC;QAED,YAAY,CAAgB,QAAgB;YACxC,OAAO,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAA;QAC9D,CAAC;QAGD,KAAK;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACtC,CAAC;QAGD,OAAO;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACtC,CAAC;QAGD,EAAE,CAAgB,OAAwB,EAAE,QAAgB,GAAG;YAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAC3B,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAExC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACpC,CAAC;QAGD,WAAW,CAAgB,YAA6B,OAAO;YAC3D,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;gBACjB,KAAK,CAAC,GAAG,EAAE,CAAA;YACf,OAAO,KAAK,CAAA;QAChB,CAAC;QAGD,YAAY;YACR,IAAI,CAAC,GAAG,CAAC,CAAA;YACT,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,EAAG,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;oBACf,MAAM,IAAI,CAAC,CAAA;qBACV,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;oBACrB,MAAM,IAAI,CAAC,CAAA;;oBAEX,MAAK;YAEb,OAAO;gBACH,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACtB,CAAA;QACL,CAAC;QAGD,gBAAgB;YACZ,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAA;QACjI,CAAC;QAGD,SAAS;YACL,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC/C,CAAC;QAGD,aAAa,CAAgB,MAAM,GAAG,KAAK;YACvC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACvC,IAAI,MAAM;gBACN,OAAO,GAAG,CAAA;YACd,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC;QAGD,UAAU;YACN,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QAGD,KAAK;YACD,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YACtB,IAAI,KAAa,CAAA;YACjB,KAAK,GAAG,IAAI;iBACP,OAAO,CAAC,IAAI,MAAM,CAAC,WAAG,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;iBACjD,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,WAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;iBAEjD,OAAO,CAAC,4BAA4B,EAAE,QAAQ,CAAC;iBAE/C,OAAO,CAAC,IAAI,MAAM,CAAC,WAAG,GAAG,0CAA0C,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC;iBACtF,OAAO,CAAC,IAAI,MAAM,CAAC,0CAA0C,GAAG,WAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAA;YAE3F,MAAM,OAAO,GAAG,KAAK,CAAA;YAErB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAG,GAAG,+CAA+C,GAAG,WAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAA;YAE/G,IAAI,KAAK,KAAK,OAAO;gBACjB,KAAK,GAAG,KAAK;qBACR,OAAO,CAAC,IAAI,MAAM,CAAC,WAAG,GAAG,uBAAuB,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;qBAChE,OAAO,CAAC,IAAI,MAAM,CAAC,uBAAuB,GAAG,WAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;YAEzE,OAAO,KAAK;gBACR,6CAA6C;iBAC5C,OAAO,CAAC,sDAAsD,EAAE,QAAQ,CAAC;iBACzE,OAAO,CAAC,IAAI,MAAM,CAAC,WAAG,GAAG,oCAAoC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC;iBAC/E,OAAO,CAAC,IAAI,MAAM,CAAC,WAAG,GAAG,mFAAmF,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;iBAC5H,OAAO,CAAC,IAAI,MAAM,CAAC,mFAAmF,GAAG,WAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;QACrI,CAAC;KACJ,CAAC;IAGF,4BAA4B;IAC5B,GAAI,MAAM,CAAC,WAAW,CAClB;QACI,KAAK,EAAG,OAAO,EAAG,QAAQ,EAAG,MAAM,EAAG,SAAS,EAAG,MAAM,EAAG,MAAM;QACjE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;QACzD,WAAW;KACd,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACV,CAAC,CAAC,KAAK,EAAE;YACL,YAAY,EAAE,IAAI;YAClB,GAAG;gBACC,OAAO,eAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;YACjD,CAAC;SACJ,CAAC,CAAC,CAAC,CACP;IAGL,6BAA6B;IAC7B,GAAI,8BAA8B,CAAC;QAC/B,IAAI;YACA,MAAM,GAAG,GAAG,eAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC9B,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAA;QAC9C,CAAC;QAED,KAAK;YACD,OAAO,eAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QAED,IAAI;YACA,OAAO,eAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO;YACH,OAAO,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QAED,MAAM;YACF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;YACnC,IAAI;gBACA,OAAO,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;aAC1C;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,KAAK,CAAA;aACf;QACL,CAAC;KACJ,CAAC;IAEF,GAAI,8BAA8B,CAAC;QAC/B,QAAQ;YACJ,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YACtB,OAAO,eAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;QAED,YAAY;YACR,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrC,CAAC;KACJ,CAAC;CACL,CAAC,CAAA;AAGF,sDAAsD;AACtD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC;IACnE,MAAM,CAAc,EAAE,GAAG,KAAK;QAC1B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,qDAAqD,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAClJ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YACnB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;gBAC9B,IAAI,GAAG,CAAC,CAAA;gBACR,IAAI,GAAG,IAAI,CAAA;aACd;iBACI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC;gBAAI,IAAI,GAAG,IAAI,CAAA;iBAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC;gBAAI,IAAI,GAAG,IAAI,CAAA;iBAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;gBAAG,IAAI,GAAG,IAAI,CAAA;iBAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;gBAAG,IAAI,GAAG,IAAI,CAAA;iBAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;gBAAE,IAAI,GAAG,IAAI,CAAA;iBAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC;gBAAI,IAAI,GAAG,IAAI,CAAA;;gBAC7C,IAAI,GAAG,IAAI,CAAA;YAEhB,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG;gBACvH,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,MAAM,IAAI,MAAM,GAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAG,EAAE,CAAA;QACrM,CAAC,CAAC,CAAA;IACN,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,WAAW,CAAc,EAAE,GAAG,KAAK;QAC/B,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClD,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;IAC5B,CAAC;CACJ,CAAC,CAAC,CAAA;AAIH,wDAAwD;AACxD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,8BAA8B,CAAC;IACrE,YAAY,CAAgB,QAA0B,KAAK;QACvD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAS,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAClD,OAAO,GAAG,KAAK,IAAK,IAAe,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;IACjD,CAAC;IAED,UAAU;QACN,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAClC,CAAC;IAED,UAAU,CAAgB,MAAe;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC3B,IAAI,CAAC,MAAM;YACP,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACxC,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;IACnD,CAAC;IAED,UAAU;QACN,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAClC,CAAC;CACJ,CAAC,CAAC,CAAA;AAIH,uDAAuD;AACvD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE;IACrC,GAAI,8BAA8B,CAAC;QAC/B,IAAI;YACA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAChC,CAAC;KACJ,CAAC;IAGF,8BAA8B;IAC9B,GAAI,8BAA8B,CAAC;QAC/B,GAAG,CAAkB,QAAgB,KAAK;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YACnC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;gBACpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;iBAChB,IAAI,KAAK,GAAG,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;;gBAEhD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACrD,CAAC;QAED,UAAU,CAAkB,EAAE,SAAS,GAAG,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,mBAAmB,GAAG,KAAK,KAAuF,EAAG;YACxL,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAA;YAC7B,IAAI,KAAK,GAAG,IAAI,CAAA;YAEhB,IAAI,SAAS;gBACT,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;YAE3C,IAAI,cAAc;gBACd,OAAO,KAAK,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAE,CAAA;YAEvC,IAAI,mBAAmB,EAAE;gBACrB,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAE,CAAA;gBACnD,IAAI,WAAW,KAAK,CAAC,CAAC;oBAClB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBACpC,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,OAAO,KAAK,CAAA;aACf;YAED,OAAO,KAAK,CAAA;QAChB,CAAC;QAGD,YAAY;YACR,MAAM,CAAC,GAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC7B,MAAM,CAAC,GAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,CAAA;;gBAEtB,OAAO,IAAI,CAAA;QACnB,CAAC;QAED,aAAa;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACnB,IAAI,CAAC,YAAY,EAAE,CACtB,CAAA;QACL,CAAC;QAED,MAAM,CAAkB,KAAc,EAAE,YAAoB,GAAG;YAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACnB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CACjC,CAAA;QACL,CAAC;QAED,UAAU;YACN,OAAO,IAAI,CAAC,aAAa,EAAE;iBACtB,GAAG,CAAC,IAAI,CAAC,EAAE,CACR,GAAG,CAAC,MAAM,CACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAClC,GAAG,IAAI,CAAC,IAAI,CACpB,CAAA;QACL,CAAC;QAED,UAAU,CAAkB,MAAM,GAAG,IAAI;YACrC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QACpD,CAAC;KACJ,CAAC;CACL,CAAC,CAAA;AAGF,SAAgB,OAAO,CAAE,GAAQ,EAAE,QAAc;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;AAClD,CAAC;AAFD,0BAEC;AAED,SAAgB,cAAc,CAAE,GAAQ,EAAE,QAAc;IACpD,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;AAC9C,CAAC;AALD,wCAKC;AAGD,SAAgB,sBAAsB,CAAE,SAAiB;IACrD,gCAAgC;IAChC,wDAAwD;IACxD,OAAO,CACH,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QACxB,SAAS,IAAI,MAAM;QACnB,CACI,SAAS,IAAI,MAAM,IAAI,cAAc;YAErC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAK,GAAG;YACpD,SAAS,KAAK,MAAM,IAAK,IAAI;YAC7B,SAAS,KAAK,MAAM,IAAK,IAAI;YAE7B,SAAS;YACT,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,SAAS,KAAK,MAAM,IAAI,8BAA8B;YACtD,SAAS,KAAK,MAAM,IAAI,+BAA+B;YAEvD,IAAI;YACJ,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,cAAc;YACd,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,qBAAqB;YACrB,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,6DAA6D;YAC7D,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC;YAEpE,wEAAwE;YACxE,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,wCAAwC;YACxC,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,yBAAyB;YACzB,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,mBAAmB;YACnB,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,+BAA+B;YAC/B,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,iBAAiB;YACjB,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,iDAAiD;YACjD,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,gCAAgC;YAChC,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAC5C,CAAC,MAAM,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC;YAE5C,kBAAkB;YAClB,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,IAAI,OAAO,CAAC;YAE9C,kCAAkC;YAClC,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,IAAI,OAAO,CAAC;YAE9C,mEAAmE;YACnE,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,IAAI,OAAO,CAAC,CACjD,CACJ,CAAA;AACL,CAAC;AAlED,wDAkEC","sourcesContent":["declare global {\n interface String {\n readonly width: number\n \n // --- util methods\n /** truncate string with fixed width and preserve color */\n truncate (this: string, width: number): string\n \n /** pad string to `<width>` \n - character?: `' '`\n - position?: `'right'`\n */\n pad (this: string, width: number, { character, position }?: { character?: string, position?: 'left' | 'right'}): string\n \n limit (this: string, width: number, { character, position }?: { character?: string, position?: 'left' | 'right'}): string\n \n to_regx (this: string, preservations?: string, flags?: string): RegExp\n \n to_bool (this: string): boolean\n \n /** string pattern replacement\n - pattern: pattern of matched string part\n - pattern_: pattern of target string part\n - preservations?: `''` preserved regexp characters\n - flags?: `''` regexp flags\n - transformer?: `(name, matched) => matched || ''` placeholder transformer\n - pattern_placeholder?: `/\\{.*?\\}/g`\n \n ```ts\n 'g:/acgn/海贼王/[Skytree][海贼王][One_Piece][893][GB_BIG5_JP][X264_AAC][1080P][CRRIP][天空树双语字幕组].mkv'.reformat( \n '{dirp}/[Skytree][海贼王][{ en_name: \\\\w+ }][{ episode: \\\\d+ }][GB_BIG5_JP][{encoding}_AAC][1080P][CRRIP][天空树双语字幕组].{format}', \n 'g:/acgn/海贼王/{episode} {encoding}.{format}', \n '\\\\+', \n 'i', \n (name, value) => name === 'episode' ? String(+value + 1) : value.toLowerCase() \n )\n ```\n */\n refmt ( this: string,\n pattern: string,\n \n pattern_: string,\n \n preservations?: string,\n \n flags?: string,\n \n transformer?: (name: string, value: string, placeholders: { [name: string]: string }) => string,\n \n pattern_placeholder?: RegExp\n \n ): string\n \n \n /** string pattern match\n ```ts\n 'git+https://github.com/tamino-martinius/node-ts-dedent-123.git'.find(\n '^{protocol:[\\\\w+]+}://{hostname:[\\\\w\\\\.]+}/{username}/{project}-{index:\\\\d+}.{suffix}', '^', 'i'\n )\n {\n protocol: 'git+https',\n hostname: 'github.com',\n ...\n }\n ```\n \n - preservations?: `''` preserved regexp characters\n - flags?: `''` regexp flags\n - pattern_placeholder?: `/\\{.*?\\}/g`\n */\n find (this: string,\n \n pattern: string, \n \n preservations?: string, \n \n flags?: string, \n \n pattern_placeholder?: RegExp\n \n ): { [name: string]: string }\n \n \n /** - type?: `'single'` */\n quote (this: string, type?: keyof typeof quotes | 'psh'): string\n \n /** - shape?: `'parenthesis'` */\n bracket (this: string, shape?: keyof typeof brackets): string\n \n surround (this: string, left: string, right?: string): string\n \n surround_tag (this: string, tag_name: string): string\n \n to_lf (this: string): string\n \n to_crlf (this: string): string\n \n /** 'xxx'.replace(/pattern/g, '') \n if pattern is string then RegExp will add flags (default 'g'), else ignore flags\n */\n rm (this: string, pattern: string | RegExp, flags?: string): string\n \n \n // --- chalk colors\n readonly red: string\n readonly red_: string\n \n readonly green: string\n readonly green_: string\n \n readonly yellow: string\n readonly yellow_: string\n \n readonly blue: string\n readonly blue_: string\n \n readonly magenta: string\n readonly magenta_: string\n \n readonly cyan: string\n readonly cyan_: string\n \n readonly grey: string\n \n readonly underline: string\n \n strip_ansi (this: string): string\n \n \n // --- text processing\n /** split string to lines and strip last '' after last \\n */\n split_lines (this: string): string[]\n \n trim_doc_comment (this: string): string\n \n split_indent (this: string): { indent: number, text: string }\n \n \n to_base64 (this: string): string\n \n /** - buffer: `false` return raw Buffer */\n decode_base64 (this: string): string\n decode_base64 (this: string, buffer: true): Buffer\n decode_base64 (this: string, buffer?: boolean): string | Buffer\n \n \n space (this: string): string\n \n \n // --- path ops\n fdir: string\n \n /** path.basename, e.g. \n - D:/0/aaa.txt -> aaa.txt\n - D:/aaa/ -> aaa\n */\n fname: string\n \n /** .txt */\n fext: string\n \n /** fs.existsSync */\n fexists: boolean\n \n is_dir: boolean\n \n to_slash (this: string): string\n \n to_backslash (this: string): string\n }\n \n \n interface Date {\n /** - ms?: `false` show ms */\n to_str (this: Date, ms?: boolean): string\n \n to_date_str (this: Date): string\n \n to_time_str (this: Date): string\n }\n \n \n interface Number {\n /** 12.4 KB (1 KB = 1024 B) */\n to_fsize_str (this: number, units?: 'iec' | 'metric'): string\n \n \n to_bin_str (this: number): string\n \n to_hex_str (this: number, length?: number): string\n \n to_oct_str (this: number): string\n }\n \n \n interface Array<T> {\n last: T\n \n log (this: string[], limit?: number): void\n \n indent (this: string[], width: number, c?: string): string[]\n \n indent2to4 (this: string[]): string[]\n \n \n // --- text processing\n /**\n - trim_line?: `true`\n - rm_empty_lines?: `true`\n - rm_last_empty_lines?: `false`\n */\n trim_lines (this: string[], { trim_line, rm_empty_lines, rm_last_empty_lines }?: { trim_line?: boolean, rm_empty_lines?: boolean, rm_last_empty_lines?: boolean }): string[]\n \n trim_license (this: string[]): string[]\n \n split_indents (this: string[]): { indent: number, text: string }[]\n \n join_lines (): string\n }\n}\n\n\nimport fs from 'fs'\n\nimport path from 'upath'\n// @ts-ignore\nimport byte_size from 'byte-size'\n\nimport EmojiRegex from 'emoji-regex'\n\nimport strip_ansi from 'strip-ansi'\nimport chalk from 'chalk'\n\nexport const emoji_regex = EmojiRegex()\n\nexport { chalk }\n\n\nexport function to_method_property_descriptors (methods: { [name: string]: Function }): PropertyDescriptorMap {\n return Object.fromEntries(\n Object.entries(methods)\n .map(([name, value]) => ([name, {\n configurable: true,\n writable: true,\n enumerable: false,\n value,\n } as PropertyDescriptor])\n ))\n}\n\n\nexport function to_getter_property_descriptors (getters: { [name: string]: Function }): PropertyDescriptorMap {\n return Object.fromEntries(\n Object.entries(getters)\n .map(([name, get]) => ([name, {\n configurable: true,\n enumerable: false,\n get,\n } as PropertyDescriptor])\n ))\n}\n\n\nexport const cjk = '([\\u2e80-\\u9fff\\uf900-\\ufaff])'\n\nexport const quotes = {\n single: \"'\",\n double: '\"',\n backtick: '`',\n}\n\nexport const brackets = {\n round: ['(', ')'],\n square: ['[', ']'],\n curly: ['{', '}'],\n pointy: ['<', '>'],\n corner: ['「', '」'],\n fat: ['【', '】'],\n tortoise_shell: ['〔', '〕'],\n} as const\n\nconst color_map = Object.fromEntries(\n ['red_', 'green_', 'yellow_', 'blue_', 'magenta_', 'cyan_'].map(color =>\n [color, `${color.slice(0, -1)}Bright`])\n)\n\n// ------------------------------------ String.prototype\nObject.defineProperties(String.prototype, {\n ... to_getter_property_descriptors({\n width (this: string) {\n const s = strip_ansi(\n this.replace(emoji_regex, ' ')\n )\n let width = 0\n for (let i = 0; i < s.length; i++) {\n const code = s.codePointAt(i)\n \n if (\n (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) || // ignore control characters\n code >= 0x300 && code <= 0x36f // ignore combining characters\n ) continue\n \n // surrogates\n if (code > 0xffff)\n i++\n \n width += is_codepoint_fullwidth(code) ? 2 : 1\n }\n return width\n }\n }),\n \n \n // ------------ text processing utils\n ... to_method_property_descriptors({\n /** truncate string with fixed width and preserve color */\n truncate (this: string, width: number) {\n const color_bak = this.startsWith('\\u001b') ? this.slice(0, 5) : ''\n const s = strip_ansi(this)\n if (width <= 2) return this.slice(0, width)\n let i_fitted = 0\n let fitted_width = 0\n let cur_width = 0\n for (let i = 0; i < s.length; i++) {\n const code = s.codePointAt(i)\n \n if (\n (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) || // Ignore control characters\n code >= 0x300 && code <= 0x36F // Ignore combining characters\n ) continue\n \n // surrogates (codepoint need two utf-16 encoding units, thus here skip the first in order to prevent repeated counting) \n if (code > 0xFFFF)\n i++\n \n const w = is_codepoint_fullwidth(code) ? 2 : 1\n \n if (cur_width + w + 2 <= width) {\n i_fitted = i\n fitted_width += w\n }\n \n cur_width += w\n \n if (cur_width > width) {\n const i_fitted_next = i_fitted + 1\n const t = s.slice(0, i_fitted_next) + ' '.repeat(width - 2 - fitted_width) + '…' \n return color_bak ? color_bak + t + '\\u001b[39m' : t\n }\n }\n return this\n },\n \n \n pad (this: string, width: number, { character = ' ', position = 'right' }: { character?: string, position?: 'left' | 'right'} = { }) {\n const _width = this.width\n if (_width >= width) return this\n if (position === 'right') return this + character.repeat( (width - _width) / character.width )\n return character.repeat(width - _width) + this\n },\n \n \n limit (this: string, width: number, { character = ' ', position = 'right' }: { character?: string, position?: 'left' | 'right'} = { }) {\n return this.pad(width, { character, position }).truncate(width)\n },\n \n \n to_regx (this: string, preservations: string, flags = ''): RegExp {\n const preserved_chars = new Set(preservations)\n const replace_chars: string = Array.prototype.filter.call('|\\\\{}()[]^$+*?.-', (c: string) => !preserved_chars.has(c))\n .map((c: string) => \n c === ']' ? '\\\\]' : c\n ).join('')\n \n return new RegExp( this.replace(new RegExp(`[${replace_chars}]`, 'g'), '\\\\$&'), flags)\n },\n \n \n to_bool (this: string) {\n return this.length && this !== '0' && this.toLowerCase() !== 'false'\n },\n \n refmt (this: string, \n pattern : string,\n pattern_: string,\n preservations: string = '',\n flags = '',\n transformer: (name: string, value: string, placeholders: { [name: string]: string }) => string = (name, value) => value || '',\n pattern_placeholder = /\\{.*?\\}/g,\n ): string {\n // --- convert pattern to pattern_regx\n let last_end = 0\n \n // placeholder matched group indexes\n let $placeholders: Record<string, number> = { }\n \n let regx_parts = [ ]\n \n function add_part (left: number, right?: number) {\n const part = pattern.slice(left, right)\n if (part)\n regx_parts.push(\n part.to_regx(preservations).source.bracket()\n )\n }\n \n pattern.replace(pattern_placeholder, ($0, offset) => {\n add_part(last_end, offset)\n last_end = offset + $0.length\n \n const placeholder = $0.slice(1, -1)\n let [placeholder_name, placeholder_pattern] = placeholder.split(':').map(s => s.trim())\n let optional = false\n if (placeholder_name.endsWith('?')) {\n placeholder_name = placeholder_name.slice(0, -1)\n optional = true\n }\n $placeholders[placeholder_name] = regx_parts.push(\n placeholder_pattern ? \n `${placeholder_pattern.bracket()}${optional ? '?' : ''}`\n :\n '(.*?)'\n )\n return ''\n })\n \n add_part(last_end)\n \n // modify last (.*?) to greedy in order to satisfy the situation of .{suffix}\n regx_parts = regx_parts.filter(part => part)\n if (regx_parts.last === '(.*?)')\n regx_parts[regx_parts.length - 1] = '(.*)'\n \n const pattern_regx = new RegExp(regx_parts.join(''), flags)\n \n \n // --- match original string based on pattern_regx, and get result to build placeholders dict\n const matches = pattern_regx.exec(this)\n \n if (!matches) return this\n \n const placeholders = Object.fromEntries(\n Object.entries($placeholders)\n .map(([name, $i]) => [\n [name, matches[$i]],\n [`${name}.before`, matches[$i - 1] || ''],\n [`${name}.after`, matches[$i + 1] || ''],\n ])\n .flat()\n )\n \n \n // --- convert pattern_ to replacement_str, if transformer exists then apply on placeholder\n last_end = 0\n let replacement_parts = [ ]\n \n pattern_.replace(pattern_placeholder, ($0, offset) => {\n replacement_parts.push(\n pattern_.slice(last_end, offset)\n )\n last_end = offset + $0.length\n \n const placeholder_name = $0.slice(1, -1)\n \n replacement_parts.push(\n transformer(placeholder_name, placeholders[placeholder_name], placeholders)\n )\n \n return ''\n })\n replacement_parts.push(\n pattern_.slice(last_end)\n )\n \n return this.replace(pattern_regx, replacement_parts.join(''))\n },\n \n \n find (this: string,\n pattern: string, \n preservations: string = '', \n flags = '', \n pattern_placeholder = /\\{.*?\\}/g\n ): { [name: string]: string } {\n // --- convert pattern to pattern_regx\n let last_end = 0\n \n // placeholder matched group index\n let $placeholders: Record<string, number> = { }\n \n let regx_parts = [ ]\n \n function add_part (left: number, right?: number) {\n const part = pattern.slice(left, right)\n if (part)\n regx_parts.push(\n part.to_regx(preservations).source.bracket()\n )\n }\n \n pattern.replace(pattern_placeholder, ($0, offset) => {\n add_part(last_end, offset)\n last_end = offset + $0.length\n \n const placeholder = $0.slice(1, -1)\n let [placeholder_name, placeholder_pattern] = placeholder.split(':').map(s => s.trim())\n let optional = false\n if (placeholder_name.endsWith('?')) {\n placeholder_name = placeholder_name.slice(0, -1)\n optional = true\n }\n \n $placeholders[placeholder_name] = regx_parts.push(\n placeholder_pattern ? \n `${placeholder_pattern.bracket()}${optional ? '?' : ''}`\n :\n '(.*?)'\n )\n return ''\n })\n \n add_part(last_end)\n \n // convert last (.*?) to greedy, to make .{suffix} work\n regx_parts = regx_parts.filter(part => part)\n if (regx_parts[regx_parts.length - 1] === '(.*?)')\n regx_parts[regx_parts.length - 1] = '(.*)'\n \n const pattern_regx = new RegExp(regx_parts.join(''), flags)\n \n \n // --- match original string based on pattern_regx, and get result to build placeholders dict\n const matches = pattern_regx.exec(this)\n \n if (!matches) return { }\n \n return Object.fromEntries(\n Object.entries($placeholders)\n .map(([name, $i]) => \n [name, matches[$i] || '']\n )\n )\n },\n \n quote (this: string, type: keyof typeof quotes | 'psh' = 'single') {\n if (type === 'psh')\n return `& ${this.quote()}`\n return this.surround(quotes[type])\n },\n \n \n bracket (this: string, shape: keyof typeof brackets = 'round') {\n return this.surround(...brackets[shape] as [string, string])\n },\n \n \n surround (this: string, left: string, right?: string) {\n return left + this + (right || left)\n },\n \n surround_tag (this: string, tag_name: string): string {\n return '<' + tag_name + '>' + this + '</' + tag_name + '>'\n },\n \n \n to_lf (this: string) {\n return this.replace(/\\r\\n/g, '\\n')\n },\n \n \n to_crlf (this: string) {\n return this.replace(/\\n/g, '\\r\\n')\n },\n \n \n rm (this: string, pattern: string | RegExp, flags: string = 'g') {\n if (typeof pattern === 'string')\n pattern = new RegExp(pattern, flags)\n \n return this.replace(pattern, '')\n },\n \n \n split_lines (this: string, delimiter: string | RegExp = /\\r?\\n/) {\n let lines = this.split(delimiter)\n if (lines.last === '')\n lines.pop()\n return lines\n },\n \n \n split_indent (this: string): { indent: number, text: string } {\n let i = 0\n let indent = 0\n for (; i < this.length; i++)\n if (this[i] === ' ')\n indent += 1\n else if (this[i] === '\\t')\n indent += 4\n else\n break\n \n return {\n indent,\n text: this.slice(i)\n }\n },\n \n \n trim_doc_comment (this: string) {\n return '/** ' + this.slice(3, -2).replace(/\\s*\\*\\s*/g, ' ').replace(/@(param|params|return) \\{.*?\\}\\s*/g, '').trim() + ' */'\n },\n \n \n to_base64 (this: string) {\n return Buffer.from(this).toString('base64')\n },\n \n \n decode_base64 (this: string, buffer = false) {\n const buf = Buffer.from(this, 'base64')\n if (buffer)\n return buf\n return buf.toString()\n },\n \n \n strip_ansi (this: string) {\n return strip_ansi(this)\n },\n \n \n space (this: string) {\n if (!this) return this\n let text_: string\n text_ = this\n .replace(new RegExp(cjk + `(['\"])`, 'g'), '$1 $2')\n .replace(new RegExp(`(['\"])` + cjk, 'g'), '$1 $2')\n \n .replace(/([\"']+)\\s*(.+?)\\s*([\"']+)/g, '$1$2$3')\n \n .replace(new RegExp(cjk + '([\\\\+\\\\-\\\\*\\\\/=&\\\\\\\\\\\\|<>])([A-Za-z0-9])', 'g'), '$1 $2 $3')\n .replace(new RegExp('([A-Za-z0-9])([\\\\+\\\\-\\\\*\\\\/=&\\\\\\\\\\\\|<>])' + cjk, 'g'), '$1 $2 $3')\n \n const textBak = text_\n \n text_ = text_.replace(new RegExp(cjk + '([\\\\(\\\\[\\\\{<\\u201c]+(.*?)[\\\\)\\\\]\\\\}>\\u201d]+)' + cjk, 'g'), '$1 $2 $4')\n \n if (text_ === textBak)\n text_ = text_\n .replace(new RegExp(cjk + '([\\\\(\\\\[\\\\{<\\u201c>])', 'g'), '$1 $2')\n .replace(new RegExp('([\\\\)\\\\]\\\\}>\\u201d<])' + cjk, 'g'), '$1 $2')\n \n return text_\n // eslint-disable-next-line no-useless-escape\n .replace(/([\\(\\[\\{<\\u201c]+)(\\s*)(.+?)(\\s*)([\\)\\]\\}>\\u201d]+)/g, '$1$3$5')\n .replace(new RegExp(cjk + '([~!;:,\\\\.\\\\?\\u2026])([A-Za-z0-9])', 'g'), '$1$2 $3')\n .replace(new RegExp(cjk + '([A-Za-z0-9`\\\\$%\\\\^&\\\\*\\\\-=\\\\+\\\\\\\\\\\\|\\\\/@\\u00a1-\\u00ff\\u2022\\u2027\\u2150-\\u218f])', 'g'), '$1 $2')\n .replace(new RegExp('([A-Za-z0-9`\\\\$%\\\\^&\\\\*\\\\-=\\\\+\\\\\\\\\\\\|\\\\/@\\u00a1-\\u00ff\\u2022\\u2027\\u2150-\\u218f])' + cjk, 'g'), '$1 $2')\n }\n }),\n \n \n // ------------ chalk colors\n ... Object.fromEntries(\n [\n 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'grey', \n 'red_', 'green_', 'yellow_', 'blue_', 'magenta_', 'cyan_',\n 'underline',\n ].map(color =>\n ([color, {\n configurable: true,\n get (this: string) {\n return chalk[color_map[color] || color](this)\n }\n }]))\n ),\n \n \n // ------------ file path ops\n ... to_getter_property_descriptors({\n fdir (this: string) {\n const dir = path.dirname(this)\n return dir.endsWith('/') ? dir : `${dir}/`\n },\n \n fname (this: string) {\n return path.basename(this)\n },\n \n fext (this: string) {\n return path.extname(this)\n },\n \n fexists (this: string) {\n return fs.existsSync(this)\n },\n \n is_dir (this: string) {\n if (this.endsWith('/')) return true\n try {\n return fs.lstatSync(this).isDirectory()\n } catch (error) {\n return false\n }\n },\n }),\n \n ... to_method_property_descriptors({\n to_slash (this: string) {\n if (!this) return this\n return path.normalizeSafe(this)\n },\n \n to_backslash (this: string) {\n return this.replaceAll('/', '\\\\')\n },\n })\n})\n\n\n// ------------------------------------ Date.prototype\nObject.defineProperties(Date.prototype, to_method_property_descriptors({\n to_str (this: Date, ms = false) {\n return this.toLocaleString().replace(/(\\d+)\\/(\\d+)\\/(\\d+) ?(上午|下午)(\\d+):(\\d{2}):(\\d{2}).*/, (matches, year, month, day, ampm, hour, minute, second) => {\n hour = Number(hour)\n if (ampm === '上午' && hour === 12) {\n hour = 0\n ampm = '凌晨'\n }\n else if (ampm === '上午' && hour <= 6) ampm = '凌晨'\n else if (ampm === '上午' && hour <= 8 ) ampm = '早上'\n else if (ampm === '上午' && hour <= 10) ampm = '上午'\n else if (ampm === '上午' && hour <= 11) ampm = '中午'\n else if (ampm === '下午' && hour === 12) ampm = '中午'\n else if (ampm === '下午' && hour <= 5 ) ampm = '下午'\n else ampm = '晚上'\n \n return `${year}.${month.pad(2, { character: '0', position: 'left' })}.${day.pad(2, { character: '0', position: 'left' })} ` +\n `${ampm} ${String(hour).pad(2, { character: '0', position: 'left' })}:${minute}:${second}${ ms ? `.${this.getMilliseconds().toString().pad(3, { character: '0', position: 'left' })}` : '' }`\n })\n },\n \n to_date_str (this: Date) {\n return this.to_str().split(' ')[0]\n },\n \n to_time_str (this: Date, ms = false) {\n const [, ampm, time ] = this.to_str(ms).split(' ')\n return `${ampm} ${time}`\n },\n}))\n\n\n\n// ------------------------------------ Number.prototype\nObject.defineProperties(Number.prototype, to_method_property_descriptors({\n to_fsize_str (this: number, units: 'iec' | 'metric' = 'iec') {\n const { value, unit } = byte_size(this, { units })\n return `${value} ${(unit as string).rm('i')}`\n },\n \n to_bin_str (this: number) {\n return `0b${this.toString(2)}`\n },\n \n to_hex_str (this: number, length?: number) {\n const s = this.toString(16)\n if (!length)\n length = Math.ceil(s.length / 4) * 4\n return `0x${'0'.repeat(length - s.length)}${s}`\n },\n \n to_oct_str (this: number) {\n return `0o${this.toString(8)}`\n },\n}))\n\n\n\n// ------------------------------------ Array.prototype\nObject.defineProperties(Array.prototype, {\n ... to_getter_property_descriptors({\n last (this: any[]) {\n return this[this.length - 1]\n }\n }),\n \n \n // --- text processing methods\n ... to_method_property_descriptors({\n log (this: string[], limit: number = 10000) {\n const text = this.join('\\n') + '\\n'\n if (limit === -1 || this.length <= limit)\n console.log(text)\n else if (limit > 0)\n console.log(text.slice(0, limit) + '\\n...'.blue)\n else \n console.log('...\\n'.blue + text.slice(limit))\n },\n \n trim_lines (this: string[], { trim_line = true, rm_empty_lines = true, rm_last_empty_lines = false }: { trim_line?: boolean, rm_empty_lines?: boolean, rm_last_empty_lines?: boolean } = { }) {\n if (!this.length) return this\n let lines = this\n \n if (trim_line)\n lines = lines.map(line => line.trim() )\n \n if (rm_empty_lines)\n return lines.filter( line => line )\n \n if (rm_last_empty_lines) {\n lines.reverse()\n const i_not_empty = lines.findIndex( line => line )\n if (i_not_empty !== -1)\n lines = lines.slice(i_not_empty)\n lines.reverse()\n return lines\n }\n \n return lines\n },\n \n \n trim_license (this: string[]) {\n const i = this.indexOf('/*')\n const j = this.indexOf('*/')\n if (i === 0 && this[i+1].includes('License'))\n return this.slice(j+1)\n else\n return this\n },\n \n split_indents (this: string[]): { indent: number, text: string }[] {\n return this.map(line => \n line.split_indent()\n )\n },\n \n indent (this: string[], width?: number, character: string = ' ') {\n return this.map(line => \n character.repeat(width) + line\n )\n },\n \n indent2to4 (this: string[]) {\n return this.split_indents()\n .map(line => \n ' '.repeat(\n Math.floor(line.indent / 2) * 4\n ) + line.text\n )\n },\n \n join_lines (this: string[], append = true) {\n return `${this.join('\\n')}${append ? '\\n' : ''}`\n }\n })\n})\n\n\nexport function to_json (obj: any, replacer?: any) {\n return JSON.stringify(obj, replacer, 4) + '\\n'\n}\n\nexport function to_json_safely (obj: any, replacer?: any) {\n return to_json(obj, replacer)\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n .replace(/<\\/script>/g, '<\\\\/script>')\n}\n\n\nexport function is_codepoint_fullwidth (codepoint: number) {\n // code points are derived from:\n // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n return (\n !Number.isNaN(codepoint) &&\n codepoint >= 0x1100 &&\n (\n codepoint <= 0x115f || // hangul jamo\n \n codepoint === 0x201c || codepoint === 0x201d || // \n codepoint === 0x2026 || // …\n codepoint === 0x203b || // ※\n \n // arrows\n (0x2190 <= codepoint && codepoint <= 0x21FF) ||\n \n codepoint === 0x2329 || // left-pointing angle bracket\n codepoint === 0x232a || // right-pointing angle bracket\n \n // ①\n (0x2460 <= codepoint && codepoint <= 0x24ff) ||\n \n // box drawing\n (0x2500 <= codepoint && codepoint <= 0x257f) ||\n \n // shapes, symbols, …\n (0x2580 <= codepoint && codepoint <= 0x2bef) ||\n \n // cjk radicals supplement .. enclosed cjk letters and months\n (0x2e80 <= codepoint && codepoint <= 0x3247 && codepoint !== 0x303f) ||\n \n // enclosed cjk letters and months .. cjk unified ideographs extension a\n (0x3250 <= codepoint && codepoint <= 0x4dbf) ||\n \n // cjk unified ideographs .. yi radicals\n (0x4E00 <= codepoint && codepoint <= 0xA4C6) ||\n \n // hangul jamo extended-a\n (0xa960 <= codepoint && codepoint <= 0xa97c) ||\n \n // hangul syllables\n (0xac00 <= codepoint && codepoint <= 0xd7a3) ||\n \n // cjk compatibility ideographs\n (0xf900 <= codepoint && codepoint <= 0xfaff) ||\n \n // vertical forms\n (0xfe10 <= codepoint && codepoint <= 0xfe19) ||\n \n // cjk compatibility forms .. small form variants\n (0xfe30 <= codepoint && codepoint <= 0xfe6b) ||\n \n // halfwidth and fullwidth forms\n (0xff01 <= codepoint && codepoint <= 0xff60) ||\n (0xffe0 <= codepoint && codepoint <= 0xffe6) ||\n \n // kana supplement\n (0x1b000 <= codepoint && codepoint <= 0x1b001) ||\n \n // enclosed ideographic supplement\n (0x1f200 <= codepoint && codepoint <= 0x1f251) ||\n \n // cjk unified ideographs extension b .. tertiary ideographic plane\n (0x20000 <= codepoint && codepoint <= 0x3fffd)\n )\n )\n}\n"]}
|
package/repl.d.ts
CHANGED
|
@@ -4,14 +4,9 @@ import type { Context } from 'koa';
|
|
|
4
4
|
import './prototype';
|
|
5
5
|
declare global {
|
|
6
6
|
var __: any;
|
|
7
|
-
var ROOT: string;
|
|
8
|
-
var WIDTH: number;
|
|
9
7
|
var started_at: Date;
|
|
10
|
-
var server: import('./server').Server;
|
|
11
8
|
var repl_router: (ctx: Context) => Promise<boolean>;
|
|
12
9
|
}
|
|
13
|
-
export declare let INSPECTION_LIMIT: number;
|
|
14
|
-
export declare let PRINTING_COMPILED_JS: boolean;
|
|
15
10
|
export declare function set_inspection_limit(limit?: number): void;
|
|
16
11
|
export declare function set_printing_compiled_js(enabled: boolean): void;
|
|
17
12
|
export declare function parse_code(code: string): ts.SourceFile;
|
|
@@ -33,3 +28,5 @@ export declare function start_repl(): Promise<void>;
|
|
|
33
28
|
export declare function stop(): Promise<void>;
|
|
34
29
|
export declare function exit(): Promise<void>;
|
|
35
30
|
export declare function pollute_global(): Promise<void>;
|
|
31
|
+
export declare function pollute_module_exports(fp_mod: string): Promise<void>;
|
|
32
|
+
export declare function pollute_module_default_export(fp_mod: string, name: string): Promise<void>;
|
package/repl.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pollute_global = exports.exit = exports.stop = exports.start_repl = exports.repl_code = exports.eval_ts = exports.load_tsconfig = exports.ts_options_commonjs_repl = exports.ts_options_commonjs = exports.ts_options = exports.compile_ts = exports.generate_code = exports.parse_code = exports.set_printing_compiled_js = exports.set_inspection_limit =
|
|
3
|
+
exports.pollute_module_default_export = exports.pollute_module_exports = exports.pollute_global = exports.exit = exports.stop = exports.start_repl = exports.repl_code = exports.eval_ts = exports.load_tsconfig = exports.ts_options_commonjs_repl = exports.ts_options_commonjs = exports.ts_options = exports.compile_ts = exports.generate_code = exports.parse_code = exports.set_printing_compiled_js = exports.set_inspection_limit = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const util_1 = tslib_1.__importDefault(require("util"));
|
|
6
|
-
const vm_1 = tslib_1.__importDefault(require("vm"));
|
|
7
|
-
const repl_1 = tslib_1.__importDefault(require("repl"));
|
|
8
|
-
const process_1 = tslib_1.__importDefault(require("process"));
|
|
9
|
-
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
5
|
+
const util_1 = (0, tslib_1.__importDefault)(require("util"));
|
|
6
|
+
const vm_1 = (0, tslib_1.__importDefault)(require("vm"));
|
|
7
|
+
const repl_1 = (0, tslib_1.__importDefault)(require("repl"));
|
|
8
|
+
const process_1 = (0, tslib_1.__importDefault)(require("process"));
|
|
9
|
+
const typescript_1 = (0, tslib_1.__importDefault)(require("typescript"));
|
|
10
10
|
require("./prototype");
|
|
11
11
|
const utils_1 = require("./utils");
|
|
12
12
|
const file_1 = require("./file");
|
|
13
|
-
|
|
14
|
-
global.WIDTH = 240;
|
|
13
|
+
const process_js_1 = require("./process.js");
|
|
15
14
|
// ------------ inspect options
|
|
16
15
|
util_1.default.inspect.defaultOptions.maxArrayLength = 40;
|
|
17
16
|
try {
|
|
@@ -20,7 +19,7 @@ try {
|
|
|
20
19
|
catch {
|
|
21
20
|
console.error('set util.inspect.defaultOptions.maxStringLength error');
|
|
22
21
|
}
|
|
23
|
-
util_1.default.inspect.defaultOptions.breakLength =
|
|
22
|
+
util_1.default.inspect.defaultOptions.breakLength = utils_1.output_width;
|
|
24
23
|
util_1.default.inspect.defaultOptions.colors = true;
|
|
25
24
|
util_1.default.inspect.defaultOptions.compact = false;
|
|
26
25
|
util_1.default.inspect.defaultOptions.getters = true;
|
|
@@ -33,16 +32,16 @@ util_1.default.inspect.styles.boolean = 'blue';
|
|
|
33
32
|
util_1.default.inspect.styles.date = 'magenta';
|
|
34
33
|
util_1.default.inspect.styles.special = 'white';
|
|
35
34
|
const { factory, SyntaxKind, NodeFlags, ModifierFlags, isIdentifier: is_identifier, isNamedImports: is_named_imports, isImportDeclaration: is_import_decl, isAwaitExpression: is_await_expr, isExpressionStatement: is_expr_stmt, isVariableStatement: is_var_stmt, isNamespaceImport: is_namespace_import, isClassDeclaration: is_class_decl, isCallExpression: is_call_expr, isReturnStatement: is_return_stmt, isBinaryExpression: is_binary_expr, isFunctionDeclaration: is_func_decl, createPrinter: create_printer, } = typescript_1.default;
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
let inspection_limit = 10000;
|
|
36
|
+
let printing_compiled_js = false;
|
|
38
37
|
function set_inspection_limit(limit = 10000) {
|
|
39
38
|
if (limit === -1)
|
|
40
39
|
limit = 50 * 10 ** 4;
|
|
41
|
-
|
|
40
|
+
inspection_limit = limit;
|
|
42
41
|
}
|
|
43
42
|
exports.set_inspection_limit = set_inspection_limit;
|
|
44
43
|
function set_printing_compiled_js(enabled) {
|
|
45
|
-
|
|
44
|
+
printing_compiled_js = enabled;
|
|
46
45
|
}
|
|
47
46
|
exports.set_printing_compiled_js = set_printing_compiled_js;
|
|
48
47
|
// ------------------------------------ Code Compilers, Transformers
|
|
@@ -177,17 +176,17 @@ function trans_return_2_expr(stmt) {
|
|
|
177
176
|
return stmt;
|
|
178
177
|
return factory.createExpressionStatement(stmt.expression);
|
|
179
178
|
}
|
|
180
|
-
function assign_var_decl(
|
|
181
|
-
if (!is_var_stmt(
|
|
182
|
-
return [
|
|
179
|
+
function assign_var_decl(var_decl, destination = 'global') {
|
|
180
|
+
if (!is_var_stmt(var_decl))
|
|
181
|
+
return [var_decl];
|
|
183
182
|
// VariableDeclaration[] -> ObjectLiteral[]
|
|
184
183
|
// const a = 123, b = 234, { c, d: e } = obj
|
|
185
|
-
const obj_literal = factory.createObjectLiteralExpression(
|
|
184
|
+
const obj_literal = factory.createObjectLiteralExpression(var_decl.declarationList.declarations.map(declaration => is_identifier(declaration.name) ?
|
|
186
185
|
[factory.createShorthandPropertyAssignment(declaration.name)]
|
|
187
186
|
: // ObjectBindingPattern
|
|
188
187
|
declaration.name.elements.map((element) => factory.createShorthandPropertyAssignment(element.name))).flat(), true);
|
|
189
188
|
return [
|
|
190
|
-
|
|
189
|
+
var_decl,
|
|
191
190
|
factory.createExpressionStatement(factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Object'), 'assign'), [], [factory.createIdentifier(destination), obj_literal])),
|
|
192
191
|
factory.createExpressionStatement(obj_literal)
|
|
193
192
|
];
|
|
@@ -218,9 +217,9 @@ function wrap_await_stmt(statements, code) {
|
|
|
218
217
|
return wrap(statements);
|
|
219
218
|
return statements;
|
|
220
219
|
}
|
|
221
|
-
async function compile_ts({ fp, code, print =
|
|
220
|
+
async function compile_ts({ fp, code, print = printing_compiled_js, save = false, } = {}) {
|
|
222
221
|
if (!code && fp)
|
|
223
|
-
code = await file_1.fread(fp);
|
|
222
|
+
code = await (0, file_1.fread)(fp);
|
|
224
223
|
const source_file = parse_code(code);
|
|
225
224
|
let statements = [...source_file.statements];
|
|
226
225
|
statements = statements.map(trans_import_2_require).flat();
|
|
@@ -239,40 +238,41 @@ async function compile_ts({ fp, code, print = exports.PRINTING_COMPILED_JS, save
|
|
|
239
238
|
let { diagnostics, outputText: output_text } = typescript_1.default.transpileModule(code, { compilerOptions: exports.ts_options_commonjs_repl });
|
|
240
239
|
if (diagnostics.length) {
|
|
241
240
|
console.log(diagnostics.join('\n\n\n'));
|
|
242
|
-
utils_1.log_line();
|
|
241
|
+
(0, utils_1.log_line)();
|
|
243
242
|
}
|
|
244
243
|
if (print) {
|
|
245
244
|
console.log(output_text);
|
|
246
|
-
utils_1.log_line();
|
|
245
|
+
(0, utils_1.log_line)();
|
|
247
246
|
}
|
|
248
247
|
if (fp && save)
|
|
249
|
-
await file_1.fwrite(fp.replace(/\.ts(x?)$/, '.js$1'), output_text);
|
|
248
|
+
await (0, file_1.fwrite)(fp.replace(/\.ts(x?)$/, '.js$1'), output_text);
|
|
250
249
|
return output_text;
|
|
251
250
|
}
|
|
252
251
|
exports.compile_ts = compile_ts;
|
|
253
252
|
async function load_tsconfig() {
|
|
254
|
-
const fp = `${
|
|
255
|
-
({ config: { compilerOptions: exports.ts_options } } = typescript_1.default.parseConfigFileTextToJson(fp, await file_1.fread(fp, { print: false })));
|
|
253
|
+
const fp = `${process_js_1.fp_root}tsconfig.json`;
|
|
254
|
+
({ config: { compilerOptions: exports.ts_options } } = typescript_1.default.parseConfigFileTextToJson(fp, await (0, file_1.fread)(fp, { print: false })));
|
|
256
255
|
exports.ts_options_commonjs = {
|
|
257
256
|
...exports.ts_options,
|
|
258
257
|
module: 'CommonJS',
|
|
259
258
|
incremental: false,
|
|
260
|
-
//
|
|
259
|
+
// determine CommonJS module require method
|
|
261
260
|
esModuleInterop: true,
|
|
262
261
|
};
|
|
263
262
|
exports.ts_options_commonjs_repl = {
|
|
264
263
|
...exports.ts_options,
|
|
265
264
|
module: 'CommonJS',
|
|
266
265
|
esModuleInterop: true,
|
|
267
|
-
// nvm.runInThisContext
|
|
266
|
+
// nvm.runInThisContext doesn't support inline source map
|
|
268
267
|
sourceMap: false,
|
|
269
268
|
};
|
|
270
269
|
}
|
|
271
270
|
exports.load_tsconfig = load_tsconfig;
|
|
271
|
+
let eval_id = 0;
|
|
272
272
|
async function eval_ts(code) {
|
|
273
273
|
try {
|
|
274
274
|
const js = await compile_ts({ code });
|
|
275
|
-
global.__ = await vm_1.default.runInThisContext(js,
|
|
275
|
+
global.__ = await vm_1.default.runInThisContext(js, `repl/${eval_id++}.ts`);
|
|
276
276
|
return global.__;
|
|
277
277
|
}
|
|
278
278
|
catch (error) {
|
|
@@ -281,31 +281,30 @@ async function eval_ts(code) {
|
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
exports.eval_ts = eval_ts;
|
|
284
|
-
// ------------------------------------
|
|
284
|
+
// ------------------------------------ repl
|
|
285
285
|
async function repl_code(type, ...args) {
|
|
286
|
-
|
|
287
|
-
// ---
|
|
288
|
-
global.__ = await
|
|
289
|
-
utils_1.log_line(
|
|
286
|
+
(0, utils_1.log_line)();
|
|
287
|
+
// --- run code
|
|
288
|
+
global.__ = await global['eval_' + type](...args);
|
|
289
|
+
(0, utils_1.log_line)();
|
|
290
290
|
if (type !== 'shell')
|
|
291
|
-
console.log(utils_1.inspect(global.__, { limit:
|
|
292
|
-
console.log('\n'.repeat(
|
|
291
|
+
console.log((0, utils_1.inspect)(global.__, { limit: inspection_limit }));
|
|
292
|
+
console.log('\n'.repeat(2));
|
|
293
293
|
}
|
|
294
294
|
exports.repl_code = repl_code;
|
|
295
295
|
async function start_repl() {
|
|
296
|
-
// ------------
|
|
297
|
-
utils_1.log_section('xshell is booting ...', {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
utils_1.log_module_loaded('file');
|
|
304
|
-
utils_1.log_module_loaded('process');
|
|
305
|
-
utils_1.log_module_loaded('net');
|
|
296
|
+
// ------------ load library
|
|
297
|
+
(0, utils_1.log_section)('xshell is booting ...', { time: true });
|
|
298
|
+
log_mod_loaded('prototype');
|
|
299
|
+
log_mod_loaded('utils');
|
|
300
|
+
log_mod_loaded('file');
|
|
301
|
+
log_mod_loaded('process');
|
|
302
|
+
log_mod_loaded('net');
|
|
306
303
|
// --- prevent from exiting
|
|
307
|
-
process_1.default.on('uncaughtException', error => {
|
|
308
|
-
|
|
304
|
+
process_1.default.on('uncaughtException', error => {
|
|
305
|
+
console.error(error);
|
|
306
|
+
});
|
|
307
|
+
// --- start nodejs repl
|
|
309
308
|
repl_1.default.start({
|
|
310
309
|
prompt: '',
|
|
311
310
|
replMode: repl_1.default.REPL_MODE_SLOPPY,
|
|
@@ -313,32 +312,34 @@ async function start_repl() {
|
|
|
313
312
|
useColors: true,
|
|
314
313
|
terminal: true,
|
|
315
314
|
});
|
|
316
|
-
utils_1.log_section('
|
|
315
|
+
(0, utils_1.log_section)('repl initialized', { color: 'yellow', time: true });
|
|
317
316
|
process_1.default.title = 'xshell';
|
|
318
317
|
await Promise.all([
|
|
319
|
-
(async () => {
|
|
320
|
-
// --- HTTP Server
|
|
321
|
-
utils_1.log_section('server is initializing', { color: 'green', timestamp: true });
|
|
322
|
-
global.server = (await Promise.resolve().then(() => tslib_1.__importStar(require('./server')))).default;
|
|
323
|
-
await global.server.start();
|
|
324
|
-
utils_1.log_section('server initialized', { color: 'green', timestamp: true });
|
|
325
|
-
})(),
|
|
326
318
|
pollute_global(),
|
|
327
319
|
load_tsconfig(),
|
|
320
|
+
(async () => {
|
|
321
|
+
// --- http server
|
|
322
|
+
(0, utils_1.log_section)('server is initializing', { color: 'green', time: true });
|
|
323
|
+
let { server } = await Promise.resolve().then(() => (0, tslib_1.__importStar)(require('./server.js')));
|
|
324
|
+
await server.start();
|
|
325
|
+
(0, utils_1.log_section)('server initialized', { color: 'green', time: true });
|
|
326
|
+
})(),
|
|
328
327
|
]);
|
|
329
|
-
utils_1.log_section('xshell booted successfully', { color: 'red',
|
|
328
|
+
(0, utils_1.log_section)('xshell booted successfully', { color: 'red', time: true });
|
|
329
|
+
console.log('xshell is listening at http://0.0.0.0:8421'.green);
|
|
330
330
|
}
|
|
331
331
|
exports.start_repl = start_repl;
|
|
332
332
|
async function stop() {
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
(
|
|
333
|
+
(0, utils_1.log_section)('xshell is exiting', { color: 'red' });
|
|
334
|
+
for (const key in file_1.fwatchers)
|
|
335
|
+
file_1.fwatchers[key].close();
|
|
336
|
+
(await Promise.resolve().then(() => (0, tslib_1.__importStar)(require('./server.js'))))
|
|
337
|
+
.server.stop();
|
|
337
338
|
}
|
|
338
339
|
exports.stop = stop;
|
|
339
340
|
async function exit() {
|
|
340
341
|
await stop();
|
|
341
|
-
await utils_1.delay(100);
|
|
342
|
+
await (0, utils_1.delay)(100);
|
|
342
343
|
process_1.default.exit();
|
|
343
344
|
}
|
|
344
345
|
exports.exit = exit;
|
|
@@ -349,7 +350,6 @@ async function pollute_global() {
|
|
|
349
350
|
if (mod === null || mod === void 0 ? void 0 : mod.__esModule)
|
|
350
351
|
return mod;
|
|
351
352
|
let result = {};
|
|
352
|
-
// eslint-disable-next-line eqeqeq, no-eq-null
|
|
353
353
|
if (mod != null)
|
|
354
354
|
for (let k in mod)
|
|
355
355
|
if (Object.hasOwnProperty.call(mod, k))
|
|
@@ -360,22 +360,32 @@ async function pollute_global() {
|
|
|
360
360
|
exports: global
|
|
361
361
|
});
|
|
362
362
|
await Promise.all([
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
Promise.resolve().then(() => tslib_1.__importStar(require('./repl'))).then(_exports => { Object.assign(global, _exports); }),
|
|
363
|
+
pollute_module_default_export('upath', 'path'),
|
|
364
|
+
pollute_module_default_export('cheerio', 'cheerio'),
|
|
365
|
+
pollute_module_default_export('lodash/omit.js', 'omit'),
|
|
366
|
+
pollute_module_default_export('lodash/sortBy.js', 'sort_by'),
|
|
367
|
+
pollute_module_default_export('lodash/groupBy.js', 'group_by'),
|
|
368
|
+
pollute_module_default_export('qs', 'qs'),
|
|
369
|
+
pollute_module_exports('./prototype.js'),
|
|
370
|
+
pollute_module_exports('./utils.js'),
|
|
371
|
+
pollute_module_exports('./process.js'),
|
|
372
|
+
pollute_module_exports('./file.js'),
|
|
373
|
+
pollute_module_exports('./net.js'),
|
|
374
|
+
pollute_module_exports('./server.js'),
|
|
375
|
+
pollute_module_exports('./repl.js'),
|
|
377
376
|
]);
|
|
378
|
-
utils_1.log_section('all modules were loaded', { color: 'green',
|
|
377
|
+
(0, utils_1.log_section)('all modules were loaded', { color: 'green', time: true });
|
|
379
378
|
}
|
|
380
379
|
exports.pollute_global = pollute_global;
|
|
380
|
+
async function pollute_module_exports(fp_mod) {
|
|
381
|
+
Object.assign(global, await Promise.resolve().then(() => (0, tslib_1.__importStar)(require(fp_mod))));
|
|
382
|
+
}
|
|
383
|
+
exports.pollute_module_exports = pollute_module_exports;
|
|
384
|
+
async function pollute_module_default_export(fp_mod, name) {
|
|
385
|
+
global[name] = (await Promise.resolve().then(() => (0, tslib_1.__importStar)(require(fp_mod)))).default;
|
|
386
|
+
}
|
|
387
|
+
exports.pollute_module_default_export = pollute_module_default_export;
|
|
388
|
+
function log_mod_loaded(id) {
|
|
389
|
+
console.log(`${id.pad(20)}loaded`);
|
|
390
|
+
}
|
|
381
391
|
//# sourceMappingURL=repl.js.map
|