xshell 0.0.65 → 0.0.67
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/file.d.ts +36 -33
- package/file.js +76 -72
- package/file.js.map +1 -1
- package/i18n/README.md +5 -5
- package/i18n/dict.json +188 -0
- package/i18n/index.d.ts +1 -1
- package/i18n/index.js +14 -18
- package/i18n/index.js.map +1 -1
- package/i18n/instance.d.ts +9 -0
- package/i18n/instance.js +6 -0
- package/i18n/instance.js.map +1 -0
- package/i18n/scanner/parser.js +1 -1
- package/i18n/scanner/parser.js.map +1 -1
- package/net.browser.d.ts +1 -0
- package/net.browser.js +8 -6
- package/net.browser.js.map +1 -1
- package/net.d.ts +8 -8
- package/net.js +12 -12
- package/net.js.map +1 -1
- package/package.json +1 -1
- package/process.d.ts +63 -29
- package/process.js +63 -16
- package/process.js.map +1 -1
- package/prototype.browser.js +9 -8
- package/prototype.browser.js.map +1 -1
- package/prototype.js +9 -8
- package/prototype.js.map +1 -1
- package/repl.js +9 -8
- package/repl.js.map +1 -1
- package/utils.browser.d.ts +1 -1
- package/utils.browser.js +2 -1
- package/utils.browser.js.map +1 -1
- package/utils.d.ts +1 -1
- package/utils.js +2 -1
- package/utils.js.map +1 -1
package/utils.browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.browser.js","sourceRoot":"","sources":["utils.browser.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAE,SAAc,EAAE,OAAgB;IACpD,IAAI,SAAS;QACT,OAAM;IAEV,QAAQ,CAAA;IAER,MAAM,MAAM,CAAC,MAAM,CACf,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.browser.js","sourceRoot":"","sources":["utils.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AAEtC,MAAM,UAAU,MAAM,CAAE,SAAc,EAAE,OAAgB;IACpD,IAAI,SAAS;QACT,OAAM;IAEV,QAAQ,CAAA;IAER,MAAM,MAAM,CAAC,MAAM,CACf,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,EAAG,GAAG,SAAS,EAAE,CAAC,EACzE,EAAE,SAAS,EAAE,CAChB,CAAA;AACL,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAE,YAAoB;IAC7C,OAAO,IAAI,OAAO,CAAQ,OAAO,CAAC,EAAE;QAChC,UAAU,CAAC,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;QACb,CAAC,EAAE,YAAY,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAE,eAAuB,IAAI;IACpD,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;IACzB,QAAQ,CAAA;AACZ,CAAC;AAED,CAAC;AAAC,MAAc,CAAC,KAAK,GAAG,KAAK,CAAA;AAG9B,eAAe;AACf,MAAM,UAAU,MAAM,CAAE,CAAS,EAAE,CAAS;IACxC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACrB,IAAI,CAAC,GAAG,CAAC;QAAI,OAAO,CAAC,CAAC,CAAA;IACtB,OAAO,CAAC,CAAA;AACZ,CAAC;AAGD,wCAAwC;AACxC,MAAM,UAAU,MAAM,CAAE,MAAyB;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,CAAC,IAAI,MAAM;QAClB,MAAM,IAAI,CAAC,CAAC,UAAU,CAAA;IAE1B,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;QACpB,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;QACtE,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC1B,MAAM,IAAI,SAAS,CAAC,UAAU,CAAA;KACjC;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AAGD,8BAA8B;AAC9B,MAAM,UAAU,SAAS,CAAE,KAAa;IACpC,eAAe;IACf,IAAI,KAAK,GAAG,IAAI;QACZ,OAAO,GAAG,KAAK,KAAK,CAAA;IAExB,UAAU;IACV,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE;QAClC,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAE3C,gCAAgC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IAExC,IAAI,OAAO,GAAG,EAAE,GAAG,EAAE;QACjB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,QAAQ,OAAO,GAAG,EAAE,IAAI,CAAA;IAE9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAEvC,OAAO,GAAG,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,OAAO,GAAG,EAAE,IAAI,CAAA;AACxF,CAAC;AAGD,yBAAyB;AACzB,MAAM,UAAU,KAAK;IACjB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAE,EAAE,CAAA;AAChC,CAAC;AAGD,MAAM,OAAO,KAAK;IACd,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAE9B,KAAK,CAAQ;IAEb,IAAI;QACA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IACrC,CAAC;IAED,GAAG;QACC,IAAI,CAAC,IAAI,CAAC,KAAK;YACX,IAAI,CAAC,IAAI,EAAE,CAAA;QAEf,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAA;IACpC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAA;IACvC,CAAC;IAED,KAAK;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9B,CAAC;CACJ","sourcesContent":["import { t } from './i18n/instance.js'\n\nexport function assert (assertion: any, message?: string): never | void {\n if (assertion)\n return\n \n debugger\n \n throw Object.assign(\n new Error(`${t('断言失败')}: ${ message ? `${message}: ` : '' }${assertion}`),\n { assertion }\n )\n}\n\n\nexport async function delay (milliseconds: number) {\n return new Promise<void>( resolve => {\n setTimeout(() => {\n resolve()\n }, milliseconds)\n })\n}\n\nexport async function debug (milliseconds: number = 3000) {\n await delay(milliseconds)\n debugger\n}\n\n;(window as any).debug = debug\n\n\n/** 字符串字典序比较 */\nexport function strcmp (l: string, r: string) {\n if (l === r) return 0\n if (l < r) return -1\n return 1\n}\n\n\n/** 拼接 TypedArrays 生成一个完整的 Uint8Array */\nexport function concat (arrays: ArrayBufferView[]) {\n let length = 0\n for (const a of arrays)\n length += a.byteLength\n \n let buf = new Uint8Array(length)\n let offset = 0\n for (const a of arrays) {\n const uint8view = new Uint8Array(a.buffer, a.byteOffset, a.byteLength)\n buf.set(uint8view, offset)\n offset += uint8view.byteLength\n }\n \n return buf\n}\n\n\n/** 时间间隔 (milliseconds) 格式化 */\nexport function delta2str (delta: number) {\n // [0, 1000) ms\n if (delta < 1000)\n return `${delta} ms`\n \n // 1.123 s\n if (1000 <= delta && delta < 1000 * 60)\n return `${(delta / 1000).toFixed(1)} s`\n \n // 1 min 12 s [1 min 0s, 60 min)\n const seconds = Math.trunc(delta / 1000)\n \n if (seconds < 60 * 60)\n return `${Math.trunc(seconds / 60)} min ${seconds % 60} s`\n \n const hour = Math.trunc(seconds / 3600)\n \n return `${hour} h ${Math.trunc((seconds - 3600 * hour) / 60)} min ${seconds % 60} s`\n}\n\n\n/** generate random id */\nexport function genid () {\n return Math.random() * 2**53\n}\n\n\nexport class Timer {\n started = new Date().getTime()\n \n ended: number\n \n stop () {\n this.ended = new Date().getTime()\n }\n \n get () {\n if (!this.ended)\n this.stop()\n \n return this.ended - this.started\n }\n \n getstr () {\n return `(${delta2str(this.get())})`\n }\n \n print () {\n console.log(this.getstr())\n }\n}\n\n"]}
|
package/utils.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare function unique<T>(iterable: T[] | Iterable<T>, selector?: string
|
|
|
17
17
|
/** 排序对象中 key 的顺序,返回新的对象 */
|
|
18
18
|
export declare function sort_keys<T>(obj: T): T;
|
|
19
19
|
/** 字符串字典序比较 */
|
|
20
|
-
export declare function strcmp(l: string, r: string):
|
|
20
|
+
export declare function strcmp(l: string, r: string): 1 | -1 | 0;
|
|
21
21
|
/** 拼接 TypedArrays 生成一个完整的 Uint8Array */
|
|
22
22
|
export declare function concat(arrays: ArrayBufferView[]): Uint8Array;
|
|
23
23
|
export declare function typed_array_to_buffer(view: ArrayBufferView): Buffer;
|
package/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Stream } from 'stream';
|
|
2
2
|
import util from 'util';
|
|
3
3
|
import omit from 'lodash/omit.js';
|
|
4
|
+
import { t } from './i18n/instance.js';
|
|
4
5
|
import './prototype.js';
|
|
5
6
|
/** `230` term 字符宽度 (实际上有 240) */
|
|
6
7
|
export const output_width = 230;
|
|
@@ -24,7 +25,7 @@ export function assert(assertion, message) {
|
|
|
24
25
|
if (assertion)
|
|
25
26
|
return;
|
|
26
27
|
debugger;
|
|
27
|
-
throw new Error(
|
|
28
|
+
throw new Error(`${t('断言失败')}: ${message ? `${message}: ` : ''}${inspect(assertion)}`);
|
|
28
29
|
}
|
|
29
30
|
export function dedent(templ, ...values) {
|
|
30
31
|
let strings = Array.from(typeof templ === 'string' ? [templ] : templ.raw);
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Stream, type Readable, type Duplex } from 'stream'\nimport util from 'util'\n\nimport type Vinyl from 'vinyl'\nimport omit from 'lodash/omit.js'\n\nimport './prototype.js'\n\n\n/** `230` term 字符宽度 (实际上有 240) */\nexport const output_width = 230\n\n\nexport function set_inspect_options () {\n util.inspect.defaultOptions.maxArrayLength = 40\n util.inspect.defaultOptions.maxStringLength = 10000\n util.inspect.defaultOptions.breakLength = output_width\n util.inspect.defaultOptions.colors = true\n util.inspect.defaultOptions.compact = false\n util.inspect.defaultOptions.getters = true\n util.inspect.defaultOptions.depth = 2\n util.inspect.defaultOptions.sorted = false\n util.inspect.defaultOptions.showProxy = true\n \n util.inspect.styles.number = 'green'\n util.inspect.styles.string = 'cyan'\n util.inspect.styles.boolean = 'blue'\n util.inspect.styles.date = 'magenta'\n util.inspect.styles.special = 'white'\n}\n\n\nexport function assert (assertion: any, message?: string): never | void {\n if (assertion)\n return\n \n debugger\n \n throw new Error(`assertion failed: ${ message ? `${message}: ` : '' }${inspect(assertion)}`)\n}\n\n\nexport function dedent (\n templ: TemplateStringsArray | string,\n ...values: any[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ.raw)\n \n // 1. remove trailing whitespace\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n )\n \n // 2. find all line breaks to determine the highest common indentation level\n const indent_lengths = strings.reduce<number[]>(\n (arr, str) => {\n const matches = str.match(/\\n[\\t ]+/g)\n if (matches) \n return arr.concat(\n matches.map(match => \n match.length - 1)\n )\n \n return arr\n },\n [],\n )\n \n // 3. remove the common indentation from all strings\n if (indent_lengths.length) {\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indent_lengths)}}`, 'g')\n \n strings = strings.map(str => str.replace(pattern, '\\n'))\n }\n \n // 4. remove leading whitespace\n strings[0] = strings[0].replace(/^\\r?\\n/, '')\n \n // 5. perform interpolation\n let string = strings[0]\n \n values.forEach((value, i) => {\n string += value + strings[i + 1]\n })\n \n string += '\\n'\n \n return string\n}\n\n\n/** 数组或 iterable 去重(可按 selector 去重) \n - selector?: 可以是 key (string) 或 (obj: any) => any\n*/\nexport function unique <T> (iterable: T[] | Iterable<T>, selector?: string | ((obj: T) => any)) {\n if (!selector)\n return [...new Set(iterable)]\n \n let map = new Map()\n const is_str_selector = typeof selector === 'string'\n for (const x of iterable)\n map.set(\n is_str_selector ? x[selector] : selector(x),\n x\n )\n \n return [...map.values()]\n}\n\n/** 排序对象中 key 的顺序,返回新的对象 */\nexport function sort_keys <T> (obj: T) {\n return Object.fromEntries(\n Object.entries(obj)\n .sort(([key_l], [key_r]) => \n strcmp(key_l, key_r))\n ) as T\n}\n\n\n/** 字符串字典序比较 */\nexport function strcmp (l: string, r: string) {\n if (l === r) return 0\n if (l < r) return -1\n return 1\n}\n\n\n/** 拼接 TypedArrays 生成一个完整的 Uint8Array */\nexport function concat (arrays: ArrayBufferView[]) {\n let length = 0\n for (const a of arrays)\n length += a.byteLength\n \n let buf = new Uint8Array(length)\n let offset = 0\n for (const a of arrays) {\n const uint8view = new Uint8Array(a.buffer, a.byteOffset, a.byteLength)\n buf.set(uint8view, offset)\n offset += uint8view.byteLength\n }\n \n return buf\n}\n\n\nexport function typed_array_to_buffer (view: ArrayBufferView) {\n return Buffer.from(\n view.buffer,\n view.byteOffset,\n view.byteLength\n )\n}\n\n\n/** 时间间隔 (milliseconds) 格式化 */\nexport function delta2str (delta: number) {\n // [0, 1000) ms\n if (delta < 1000)\n return `${delta} ms`\n \n // 1.123 s\n if (1000 <= delta && delta < 1000 * 60)\n return `${(delta / 1000).toFixed(1)} s`\n \n // 1 min 12 s [1 min 0s, 60 min)\n const seconds = Math.trunc(delta / 1000)\n \n if (seconds < 60 * 60)\n return `${Math.trunc(seconds / 60)} min ${seconds % 60} s`\n \n const hour = Math.trunc(seconds / 3600)\n \n return `${hour} h ${Math.trunc((seconds - 3600 * hour) / 60)} min ${seconds % 60} s`\n}\n\n\n/** generate random id */\nexport function genid () {\n return Math.random() * 2**53\n}\n\n\nexport class Timer {\n started = new Date().getTime()\n \n ended: number\n \n stop () {\n this.ended = new Date().getTime()\n }\n \n get () {\n if (!this.ended)\n this.stop()\n \n return this.ended - this.started\n }\n \n getstr () {\n return `(${delta2str(this.get())})`\n }\n \n print () {\n console.log(this.getstr())\n }\n}\n\n\n// ------------------------------------ log: module loaded, section, line\nexport function log_section (\n message: string, \n {\n time = false,\n timestamp = false,\n color = undefined,\n }: {\n time?: boolean\n timestamp?: boolean | Date\n color?: 'green' | 'red' | 'yellow'\n } = { }\n) {\n const stime = (() => {\n if (time)\n return `${String(new Date().getTime() - global.started_at.getTime()).pad(4, { position: 'left' })} ms`\n if (timestamp)\n if (typeof timestamp === 'object')\n return `${timestamp.to_str()}`\n else\n return `${new Date().to_str()}`\n return ''\n })()\n \n message = `${`${message} `.pad(39, { character: '-' })} ${stime}`\n \n if (color)\n message = message[color]\n \n console.log(message)\n}\n\n\nexport function log_line () {\n console.log('---')\n}\n\n\nexport async function delay (milliseconds: number) {\n return new Promise( resolve => {\n setTimeout(resolve, milliseconds)\n })\n}\n\n\n// ------------ text\nexport function has_chinese (str: string) {\n return /[\\u4E00-\\u9FA5]/.test(str)\n}\n\n\nexport function escape_line_feed (str: string) {\n return str.replace(/\\n/g, '\\\\n')\n}\n\n/** util.inspect(obj) \n - options\n - limit?: `10000`\n - omit?: string[]\n*/\nexport function inspect (\n obj: any, \n options: util.InspectOptions & {\n limit?: number\n omit?: string[]\n } = { }\n) {\n if (options.omit)\n obj = omit(obj, [inspect.custom, ...(options.omit || [])])\n \n let text = util.inspect(obj, options)\n \n if (!('limit' in options))\n options.limit = 10000\n if (options.limit && text.length > options.limit)\n return `${text.slice(0, options.limit)}……'\\u001b[39m\\n`\n else\n return text\n}\n\nexport namespace inspect {\n export const custom: typeof util.inspect.custom = util.inspect.custom\n}\n\n\n// ------------------------------------ Steam\n/** npm map-stream \n filter will reemit the data if cb(err,pass) pass is truthy \n \n reduce is more tricky \n maybe we want to group the reductions or emit progress updates occasionally \n the most basic reduce just emits one 'data' event after it has recieved 'end'\n \n create an event stream and apply function to each .write, \n emitting each response as data unless it's an empty callback\n */\nexport function map_stream <Out, In = Vinyl> (\n mapper: (obj: In, cb: Function) => any, \n options?: { failures?: boolean }\n) {\n options = options || { }\n \n let inputs = 0,\n outputs = 0,\n ended = false,\n paused = false,\n destroyed = false,\n last_written = 0,\n in_next = false\n \n \n let stream = Object.assign(new Stream(), {\n readable: true, \n writable: true,\n \n write (data?: any) {\n if (ended) throw new Error('map stream is not writable')\n in_next = false\n inputs++\n \n try {\n // catch sync errors and handle them like async errors\n const written = wrapped_mapper(data, inputs, next)\n paused = (written === false)\n return !paused\n } catch (err) {\n // if the callback has been called syncronously, and the error has occured in an listener, throw it again.\n if (in_next)\n throw err\n next(err)\n return !paused\n }\n },\n \n end (data?: any) {\n if (ended) return\n _end(data)\n },\n \n destroy () {\n ended = destroyed = true\n stream.writable = stream.readable = paused = false\n process.nextTick(function () {\n stream.emit('close')\n })\n },\n \n pause () {\n paused = true\n },\n \n resume () {\n paused = false\n }\n })\n \n \n let error_event_name = options.failures ? 'failure' : 'error'\n \n // Items that are not ready to be written yet (because they would come out of order) get stuck in a queue for later.\n let write_queue = { }\n \n \n function queue_data (data, number) {\n let next_to_write = last_written + 1\n \n if (number === next_to_write) {\n // If it's next, and its not undefined write it\n if (data !== undefined) \n stream.emit('data', data)\n \n last_written++\n next_to_write++\n } else \n // Otherwise queue it for later.\n write_queue[number] = data\n \n \n // If the next value is in the queue, write it\n if (Object.prototype.hasOwnProperty.call(write_queue, next_to_write)) {\n let data_to_write = write_queue[next_to_write]\n delete write_queue[next_to_write]\n return queue_data(data_to_write, next_to_write)\n }\n \n outputs++\n if (inputs === outputs) {\n if (paused) {\n paused = false\n stream.emit('drain') // written all the incoming events\n }\n if (ended) _end()\n }\n }\n \n function next (err?: Error, data?: any, number?: number) {\n if (destroyed) return\n in_next = true\n \n if (!err || options.failures)\n queue_data(data, number)\n \n if (err)\n stream.emit(error_event_name, err)\n \n in_next = false\n }\n \n /** Wrap the mapper function by calling its callback with the order number of the item in the stream. */ \n function wrapped_mapper (input, number, callback) {\n return mapper.call(null, input, function (err, data) {\n callback(err, data, number)\n })\n }\n \n function _end (data?: any) {\n // if end was called with args, write it, \n ended = true // write will emit 'end' if ended is true\n stream.writable = false\n if (data !== undefined) \n return queue_data(data, inputs)\n else if (inputs === outputs) { // wait for processing \n stream.readable = false\n stream.emit('end')\n stream.destroy() \n }\n }\n \n return stream as Duplex\n}\n\n\nexport async function stream_to_buffer (stream: Readable) {\n let chunks = [ ]\n for await (const chunk of stream as AsyncIterable<Buffer>)\n chunks.push(chunk)\n return Buffer.concat(chunks)\n}\n\n\nexport async function * stream_to_lines (stream: Readable) {\n let buf = ''\n for await (const chunk of stream as AsyncIterable<string>) {\n let i = 0, j = 0\n for (; (i = chunk.indexOf('\\n', j)) >= 0; ) {\n let line = chunk.slice(j, i)\n if (buf) {\n line = buf + line\n buf = ''\n }\n j = i + 1\n yield line\n }\n buf = chunk.slice(j)\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Stream, type Readable, type Duplex } from 'stream'\nimport util from 'util'\n\nimport type Vinyl from 'vinyl'\nimport omit from 'lodash/omit.js'\n\nimport { t } from './i18n/instance.js'\nimport './prototype.js'\n\n\n/** `230` term 字符宽度 (实际上有 240) */\nexport const output_width = 230\n\n\nexport function set_inspect_options () {\n util.inspect.defaultOptions.maxArrayLength = 40\n util.inspect.defaultOptions.maxStringLength = 10000\n util.inspect.defaultOptions.breakLength = output_width\n util.inspect.defaultOptions.colors = true\n util.inspect.defaultOptions.compact = false\n util.inspect.defaultOptions.getters = true\n util.inspect.defaultOptions.depth = 2\n util.inspect.defaultOptions.sorted = false\n util.inspect.defaultOptions.showProxy = true\n \n util.inspect.styles.number = 'green'\n util.inspect.styles.string = 'cyan'\n util.inspect.styles.boolean = 'blue'\n util.inspect.styles.date = 'magenta'\n util.inspect.styles.special = 'white'\n}\n\n\nexport function assert (assertion: any, message?: string): never | void {\n if (assertion)\n return\n \n debugger\n \n throw new Error(`${t('断言失败')}: ${ message ? `${message}: ` : '' }${inspect(assertion)}`)\n}\n\n\nexport function dedent (\n templ: TemplateStringsArray | string,\n ...values: any[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ.raw)\n \n // 1. remove trailing whitespace\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n )\n \n // 2. find all line breaks to determine the highest common indentation level\n const indent_lengths = strings.reduce<number[]>(\n (arr, str) => {\n const matches = str.match(/\\n[\\t ]+/g)\n if (matches) \n return arr.concat(\n matches.map(match => \n match.length - 1)\n )\n \n return arr\n },\n [],\n )\n \n // 3. remove the common indentation from all strings\n if (indent_lengths.length) {\n const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indent_lengths)}}`, 'g')\n \n strings = strings.map(str => str.replace(pattern, '\\n'))\n }\n \n // 4. remove leading whitespace\n strings[0] = strings[0].replace(/^\\r?\\n/, '')\n \n // 5. perform interpolation\n let string = strings[0]\n \n values.forEach((value, i) => {\n string += value + strings[i + 1]\n })\n \n string += '\\n'\n \n return string\n}\n\n\n/** 数组或 iterable 去重(可按 selector 去重) \n - selector?: 可以是 key (string) 或 (obj: any) => any\n*/\nexport function unique <T> (iterable: T[] | Iterable<T>, selector?: string | ((obj: T) => any)) {\n if (!selector)\n return [...new Set(iterable)]\n \n let map = new Map()\n const is_str_selector = typeof selector === 'string'\n for (const x of iterable)\n map.set(\n is_str_selector ? x[selector] : selector(x),\n x\n )\n \n return [...map.values()]\n}\n\n/** 排序对象中 key 的顺序,返回新的对象 */\nexport function sort_keys <T> (obj: T) {\n return Object.fromEntries(\n Object.entries(obj)\n .sort(([key_l], [key_r]) => \n strcmp(key_l, key_r))\n ) as T\n}\n\n\n/** 字符串字典序比较 */\nexport function strcmp (l: string, r: string) {\n if (l === r) return 0\n if (l < r) return -1\n return 1\n}\n\n\n/** 拼接 TypedArrays 生成一个完整的 Uint8Array */\nexport function concat (arrays: ArrayBufferView[]) {\n let length = 0\n for (const a of arrays)\n length += a.byteLength\n \n let buf = new Uint8Array(length)\n let offset = 0\n for (const a of arrays) {\n const uint8view = new Uint8Array(a.buffer, a.byteOffset, a.byteLength)\n buf.set(uint8view, offset)\n offset += uint8view.byteLength\n }\n \n return buf\n}\n\n\nexport function typed_array_to_buffer (view: ArrayBufferView) {\n return Buffer.from(\n view.buffer,\n view.byteOffset,\n view.byteLength\n )\n}\n\n\n/** 时间间隔 (milliseconds) 格式化 */\nexport function delta2str (delta: number) {\n // [0, 1000) ms\n if (delta < 1000)\n return `${delta} ms`\n \n // 1.123 s\n if (1000 <= delta && delta < 1000 * 60)\n return `${(delta / 1000).toFixed(1)} s`\n \n // 1 min 12 s [1 min 0s, 60 min)\n const seconds = Math.trunc(delta / 1000)\n \n if (seconds < 60 * 60)\n return `${Math.trunc(seconds / 60)} min ${seconds % 60} s`\n \n const hour = Math.trunc(seconds / 3600)\n \n return `${hour} h ${Math.trunc((seconds - 3600 * hour) / 60)} min ${seconds % 60} s`\n}\n\n\n/** generate random id */\nexport function genid () {\n return Math.random() * 2**53\n}\n\n\nexport class Timer {\n started = new Date().getTime()\n \n ended: number\n \n stop () {\n this.ended = new Date().getTime()\n }\n \n get () {\n if (!this.ended)\n this.stop()\n \n return this.ended - this.started\n }\n \n getstr () {\n return `(${delta2str(this.get())})`\n }\n \n print () {\n console.log(this.getstr())\n }\n}\n\n\n// ------------------------------------ log: module loaded, section, line\nexport function log_section (\n message: string, \n {\n time = false,\n timestamp = false,\n color = undefined,\n }: {\n time?: boolean\n timestamp?: boolean | Date\n color?: 'green' | 'red' | 'yellow'\n } = { }\n) {\n const stime = (() => {\n if (time)\n return `${String(new Date().getTime() - global.started_at.getTime()).pad(4, { position: 'left' })} ms`\n if (timestamp)\n if (typeof timestamp === 'object')\n return `${timestamp.to_str()}`\n else\n return `${new Date().to_str()}`\n return ''\n })()\n \n message = `${`${message} `.pad(39, { character: '-' })} ${stime}`\n \n if (color)\n message = message[color]\n \n console.log(message)\n}\n\n\nexport function log_line () {\n console.log('---')\n}\n\n\nexport async function delay (milliseconds: number) {\n return new Promise( resolve => {\n setTimeout(resolve, milliseconds)\n })\n}\n\n\n// ------------ text\nexport function has_chinese (str: string) {\n return /[\\u4E00-\\u9FA5]/.test(str)\n}\n\n\nexport function escape_line_feed (str: string) {\n return str.replace(/\\n/g, '\\\\n')\n}\n\n/** util.inspect(obj) \n - options\n - limit?: `10000`\n - omit?: string[]\n*/\nexport function inspect (\n obj: any, \n options: util.InspectOptions & {\n limit?: number\n omit?: string[]\n } = { }\n) {\n if (options.omit)\n obj = omit(obj, [inspect.custom, ...(options.omit || [])])\n \n let text = util.inspect(obj, options)\n \n if (!('limit' in options))\n options.limit = 10000\n if (options.limit && text.length > options.limit)\n return `${text.slice(0, options.limit)}……'\\u001b[39m\\n`\n else\n return text\n}\n\nexport namespace inspect {\n export const custom: typeof util.inspect.custom = util.inspect.custom\n}\n\n\n// ------------------------------------ Steam\n/** npm map-stream \n filter will reemit the data if cb(err,pass) pass is truthy \n \n reduce is more tricky \n maybe we want to group the reductions or emit progress updates occasionally \n the most basic reduce just emits one 'data' event after it has recieved 'end'\n \n create an event stream and apply function to each .write, \n emitting each response as data unless it's an empty callback\n */\nexport function map_stream <Out, In = Vinyl> (\n mapper: (obj: In, cb: Function) => any, \n options?: { failures?: boolean }\n) {\n options = options || { }\n \n let inputs = 0,\n outputs = 0,\n ended = false,\n paused = false,\n destroyed = false,\n last_written = 0,\n in_next = false\n \n \n let stream = Object.assign(new Stream(), {\n readable: true, \n writable: true,\n \n write (data?: any) {\n if (ended) throw new Error('map stream is not writable')\n in_next = false\n inputs++\n \n try {\n // catch sync errors and handle them like async errors\n const written = wrapped_mapper(data, inputs, next)\n paused = (written === false)\n return !paused\n } catch (err) {\n // if the callback has been called syncronously, and the error has occured in an listener, throw it again.\n if (in_next)\n throw err\n next(err)\n return !paused\n }\n },\n \n end (data?: any) {\n if (ended) return\n _end(data)\n },\n \n destroy () {\n ended = destroyed = true\n stream.writable = stream.readable = paused = false\n process.nextTick(function () {\n stream.emit('close')\n })\n },\n \n pause () {\n paused = true\n },\n \n resume () {\n paused = false\n }\n })\n \n \n let error_event_name = options.failures ? 'failure' : 'error'\n \n // Items that are not ready to be written yet (because they would come out of order) get stuck in a queue for later.\n let write_queue = { }\n \n \n function queue_data (data, number) {\n let next_to_write = last_written + 1\n \n if (number === next_to_write) {\n // If it's next, and its not undefined write it\n if (data !== undefined) \n stream.emit('data', data)\n \n last_written++\n next_to_write++\n } else \n // Otherwise queue it for later.\n write_queue[number] = data\n \n \n // If the next value is in the queue, write it\n if (Object.prototype.hasOwnProperty.call(write_queue, next_to_write)) {\n let data_to_write = write_queue[next_to_write]\n delete write_queue[next_to_write]\n return queue_data(data_to_write, next_to_write)\n }\n \n outputs++\n if (inputs === outputs) {\n if (paused) {\n paused = false\n stream.emit('drain') // written all the incoming events\n }\n if (ended) _end()\n }\n }\n \n function next (err?: Error, data?: any, number?: number) {\n if (destroyed) return\n in_next = true\n \n if (!err || options.failures)\n queue_data(data, number)\n \n if (err)\n stream.emit(error_event_name, err)\n \n in_next = false\n }\n \n /** Wrap the mapper function by calling its callback with the order number of the item in the stream. */ \n function wrapped_mapper (input, number, callback) {\n return mapper.call(null, input, function (err, data) {\n callback(err, data, number)\n })\n }\n \n function _end (data?: any) {\n // if end was called with args, write it, \n ended = true // write will emit 'end' if ended is true\n stream.writable = false\n if (data !== undefined) \n return queue_data(data, inputs)\n else if (inputs === outputs) { // wait for processing \n stream.readable = false\n stream.emit('end')\n stream.destroy() \n }\n }\n \n return stream as Duplex\n}\n\n\nexport async function stream_to_buffer (stream: Readable) {\n let chunks = [ ]\n for await (const chunk of stream as AsyncIterable<Buffer>)\n chunks.push(chunk)\n return Buffer.concat(chunks)\n}\n\n\nexport async function * stream_to_lines (stream: Readable) {\n let buf = ''\n for await (const chunk of stream as AsyncIterable<string>) {\n let i = 0, j = 0\n for (; (i = chunk.indexOf('\\n', j)) >= 0; ) {\n let line = chunk.slice(j, i)\n if (buf) {\n line = buf + line\n buf = ''\n }\n j = i + 1\n yield line\n }\n buf = chunk.slice(j)\n }\n}\n\n"]}
|