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/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":"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","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 = exports.PRINTING_COMPILED_JS = exports.INSPECTION_LIMIT = void 0;
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
- global.ROOT = `${__dirname}/`.to_slash();
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 = 240;
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
- exports.INSPECTION_LIMIT = 10000;
37
- exports.PRINTING_COMPILED_JS = false;
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
- exports.INSPECTION_LIMIT = limit;
40
+ inspection_limit = limit;
42
41
  }
43
42
  exports.set_inspection_limit = set_inspection_limit;
44
43
  function set_printing_compiled_js(enabled) {
45
- exports.PRINTING_COMPILED_JS = enabled;
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(variableDeclaraion, destination = 'global') {
181
- if (!is_var_stmt(variableDeclaraion))
182
- return [variableDeclaraion];
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(variableDeclaraion.declarationList.declarations.map(declaration => is_identifier(declaration.name) ?
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
- variableDeclaraion,
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 = exports.PRINTING_COMPILED_JS, save = false, } = {}) {
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 = `${global.ROOT}tsconfig.json`;
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
- // 决定编译到 CommonJS 的模块 require 方式
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 不支持 inline source map
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, 'repl.ts');
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
- // ------------------------------------ REPL
284
+ // ------------------------------------ repl
285
285
  async function repl_code(type, ...args) {
286
- console.log('-'.repeat(global.WIDTH));
287
- // --- 运行代码
288
- global.__ = await exports['eval_' + type](...args);
289
- utils_1.log_line(global.WIDTH);
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: exports.INSPECTION_LIMIT }));
292
- console.log('\n'.repeat(4));
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 ...', { timestamp: true });
298
- // process.env.TS_NODE_FILES = true
299
- // require('ts-node/register/transpile-only')
300
- // require('ts-node/register')
301
- utils_1.log_module_loaded('prototype');
302
- utils_1.log_module_loaded('utils');
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 => { console.error(error); });
308
- // --- Start NodeJS REPL
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('REPL initialized', { color: 'yellow', timestamp: true });
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', timestamp: true });
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
- var _a;
334
- utils_1.log_section('xshell is exiting', { color: 'red' });
335
- Object.values(file_1.fwatchers).forEach(watcher => { watcher.close(); });
336
- (_a = global.server) === null || _a === void 0 ? void 0 : _a.stop();
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
- Promise.resolve().then(() => tslib_1.__importStar(require('upath'))).then(({ default: _default }) => { global['path'] = _default; }),
364
- Promise.resolve().then(() => tslib_1.__importStar(require('cheerio'))).then(({ default: _default }) => { global['cheerio'] = _default; }),
365
- Promise.resolve().then(() => tslib_1.__importStar(require('lodash/omit'))).then(({ default: _default }) => { global['omit'] = _default; }),
366
- Promise.resolve().then(() => tslib_1.__importStar(require('lodash/sortBy'))).then(({ default: _default }) => { global['sort_by'] = _default; }),
367
- Promise.resolve().then(() => tslib_1.__importStar(require('lodash/groupBy'))).then(({ default: _default }) => { global['group_by'] = _default; }),
368
- Promise.resolve().then(() => tslib_1.__importStar(require('lodash/isRegExp'))).then(({ default: _default }) => { global['is_regx'] = _default; }),
369
- Promise.resolve().then(() => tslib_1.__importStar(require('lodash/isString'))).then(({ default: _default }) => { global['is_str'] = _default; }),
370
- Promise.resolve().then(() => tslib_1.__importStar(require('qs'))).then(({ default: _default }) => { global['qs'] = _default; }),
371
- Promise.resolve().then(() => tslib_1.__importStar(require('./prototype'))).then(_exports => { Object.assign(global, _exports); }),
372
- Promise.resolve().then(() => tslib_1.__importStar(require('./utils'))).then(_exports => { Object.assign(global, _exports); }),
373
- Promise.resolve().then(() => tslib_1.__importStar(require('./process'))).then(_exports => { Object.assign(global, _exports); }),
374
- Promise.resolve().then(() => tslib_1.__importStar(require('./file'))).then(_exports => { Object.assign(global, _exports); }),
375
- Promise.resolve().then(() => tslib_1.__importStar(require('./net'))).then(_exports => { Object.assign(global, _exports); }),
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', timestamp: true });
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