xshell 0.0.18 → 0.0.23

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.
Files changed (49) hide show
  1. package/file.js +1 -2
  2. package/file.js.map +1 -1
  3. package/i18n/README.md +275 -0
  4. package/i18n/dict.d.ts +30 -0
  5. package/i18n/dict.js +34 -0
  6. package/i18n/dict.js.map +1 -0
  7. package/i18n/i18n-scan.d.ts +2 -0
  8. package/i18n/i18n-scan.js +21 -0
  9. package/i18n/i18n-scan.js.map +1 -0
  10. package/i18n/i18n.ico +0 -0
  11. package/i18n/index.d.ts +65 -0
  12. package/i18n/index.js +118 -0
  13. package/i18n/index.js.map +1 -0
  14. package/i18n/rwdict.d.ts +42 -0
  15. package/i18n/rwdict.js +110 -0
  16. package/i18n/rwdict.js.map +1 -0
  17. package/i18n/scanner/checker.d.ts +5 -0
  18. package/i18n/scanner/checker.js +73 -0
  19. package/i18n/scanner/checker.js.map +1 -0
  20. package/i18n/scanner/index.d.ts +52 -0
  21. package/i18n/scanner/index.js +319 -0
  22. package/i18n/scanner/index.js.map +1 -0
  23. package/i18n/scanner/parser.d.ts +3 -0
  24. package/i18n/scanner/parser.js +154 -0
  25. package/i18n/scanner/parser.js.map +1 -0
  26. package/i18n/utils.d.ts +1 -0
  27. package/i18n/utils.js +14 -0
  28. package/i18n/utils.js.map +1 -0
  29. package/myfont.sass +3 -0
  30. package/net.d.ts +4 -4
  31. package/net.js +18 -20
  32. package/net.js.map +1 -1
  33. package/package.json +38 -11
  34. package/process.d.ts +4 -4
  35. package/process.js +4 -4
  36. package/process.js.map +1 -1
  37. package/prototype.browser.js +25 -24
  38. package/prototype.browser.js.map +1 -1
  39. package/prototype.js +27 -26
  40. package/prototype.js.map +1 -1
  41. package/repl.d.ts +1 -2
  42. package/repl.js +4 -8
  43. package/repl.js.map +1 -1
  44. package/server.d.ts +2 -3
  45. package/server.js +12 -13
  46. package/server.js.map +1 -1
  47. package/tsconfig.json +1 -1
  48. package/ufs.js +3 -3
  49. package/ufs.js.map +1 -1
package/net.js CHANGED
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rpc_curl = exports.rpc = exports.to_curl = exports.request_page = exports.parse_html = exports.request_json = exports.request = exports.request_retry = exports._request = exports.Cookie = exports.cookies = exports.MyProxy = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const request_promise_native_1 = (0, tslib_1.__importDefault)(require("request-promise-native"));
6
- const errors_1 = require("request-promise-native/errors");
6
+ const errors_js_1 = require("request-promise-native/errors.js");
7
7
  const promise_retry_1 = (0, tslib_1.__importDefault)(require("promise-retry"));
8
8
  const iconv_lite_1 = (0, tslib_1.__importDefault)(require("iconv-lite"));
9
9
  const cheerio_1 = (0, tslib_1.__importDefault)(require("cheerio"));
10
10
  const qs_1 = (0, tslib_1.__importDefault)(require("qs"));
11
11
  const tough_cookie_1 = require("tough-cookie");
12
12
  Object.defineProperty(exports, "Cookie", { enumerable: true, get: function () { return tough_cookie_1.Cookie; } });
13
- require("./prototype");
14
- const utils_1 = require("./utils");
13
+ require("./prototype.js");
14
+ const utils_js_1 = require("./utils.js");
15
15
  var MyProxy;
16
16
  (function (MyProxy) {
17
17
  MyProxy["socks5"] = "http://localhost:10080";
@@ -51,12 +51,11 @@ async function request_retry(retries, request_options) {
51
51
  maxTimeout: Infinity,
52
52
  factor: 2
53
53
  }, async (retry, count) => {
54
- var _a;
55
54
  try {
56
55
  return await (0, exports._request)(request_options);
57
56
  }
58
57
  catch (error) {
59
- if (!['ECONNRESET', 'ETIMEDOUT', 'ESOCKETTIMEDOUT'].includes((_a = error.cause) === null || _a === void 0 ? void 0 : _a.code))
58
+ if (!['ECONNRESET', 'ETIMEDOUT', 'ESOCKETTIMEDOUT'].includes(error.cause?.code))
60
59
  throw error;
61
60
  if (count <= retries)
62
61
  console.log(`${`retry (${count}) …`.yellow} ${request_options.url.toString().blue.underline}`);
@@ -66,7 +65,6 @@ async function request_retry(retries, request_options) {
66
65
  }
67
66
  exports.request_retry = request_retry;
68
67
  async function request(url, { queries, body, type = 'application/json', proxy, method, headers, encoding, raw = false, retries, timeout = 20 * 1000, auth, gzip, cookies, } = {}) {
69
- var _a;
70
68
  url = url.toString();
71
69
  if (!url.startsWith('http'))
72
70
  url = 'http://' + url;
@@ -126,36 +124,36 @@ async function request(url, { queries, body, type = 'application/json', proxy, m
126
124
  else
127
125
  resp = await (0, exports._request)(options);
128
126
  if (!(200 <= resp.statusCode && resp.statusCode <= 299))
129
- throw new errors_1.StatusCodeError(resp.statusCode, resp.body, options, resp);
127
+ throw new errors_js_1.StatusCodeError(resp.statusCode, resp.body, options, resp);
130
128
  }
131
129
  catch (error) {
132
130
  const { name, options: { method, url, uri, qs }, response, } = error;
133
- error[utils_1.inspect.custom] = () => {
134
- let s = '─'.repeat(utils_1.output_width / 2) + '\n' +
131
+ error[utils_js_1.inspect.custom] = () => {
132
+ let s = '─'.repeat(utils_js_1.output_width / 2) + '\n' +
135
133
  `${(method || 'get').toLowerCase().red} ${String(url || uri).blue.underline}\n`;
136
134
  if (qs)
137
135
  s += `\n${'request.query:'.blue}\n` +
138
- (0, utils_1.inspect)(qs) + '\n';
136
+ (0, utils_js_1.inspect)(qs) + '\n';
139
137
  if (_body)
140
138
  s += `\n${'request.body:'.blue}\n` +
141
- (0, utils_1.inspect)(body) + '\n';
139
+ (0, utils_js_1.inspect)(body) + '\n';
142
140
  if (name === 'StatusCodeError')
143
141
  s += `\n${'response.status:'.yellow} ${String(error.statusCode).red}\n`;
144
- else if (error instanceof errors_1.RequestError)
142
+ else if (error instanceof errors_js_1.RequestError)
145
143
  s += `\n${'response.cause:'.yellow}\n` +
146
- `${(0, utils_1.inspect)(error.cause)}\n`;
144
+ `${(0, utils_js_1.inspect)(error.cause)}\n`;
147
145
  else
148
- s += `\n${(0, utils_1.inspect)(error)}\n`;
146
+ s += `\n${(0, utils_js_1.inspect)(error)}\n`;
149
147
  if (response) {
150
148
  s += `\n${'response.headers:'.yellow}\n` +
151
- `${(0, utils_1.inspect)(response.headers)}\n`;
149
+ `${(0, utils_js_1.inspect)(response.headers)}\n`;
152
150
  if (response.body)
153
151
  s += `\n${'response.body:'.yellow}\n` +
154
- `${(0, utils_1.inspect)(response.body.toString())}\n`;
152
+ `${(0, utils_js_1.inspect)(response.body.toString())}\n`;
155
153
  }
156
154
  s += `\n${'stack:'.yellow}\n` +
157
155
  `${new Error().stack}\n` +
158
- '─'.repeat(utils_1.output_width / 2);
156
+ '─'.repeat(utils_js_1.output_width / 2);
159
157
  return s;
160
158
  };
161
159
  throw error;
@@ -167,7 +165,7 @@ async function request(url, { queries, body, type = 'application/json', proxy, m
167
165
  // --- decode body
168
166
  if (encoding === 'binary')
169
167
  return resp.body;
170
- encoding || (encoding = ((_a = /charset=(.*)/.exec(resp.headers['content-type'])) === null || _a === void 0 ? void 0 : _a[1]) || 'utf-8');
168
+ encoding || (encoding = /charset=(.*)/.exec(resp.headers['content-type'])?.[1] || 'utf-8');
171
169
  if (/utf-?8/i.test(encoding))
172
170
  return resp.body.toString('utf-8');
173
171
  return iconv_lite_1.default.decode(resp.body, encoding);
@@ -190,14 +188,14 @@ exports.request_json = request_json;
190
188
  /** use $.html(cheerio_element) to get outer html */
191
189
  function parse_html(html) {
192
190
  let $ = cheerio_1.default.load(html, { decodeEntities: false });
193
- Object.defineProperty($, utils_1.inspect.custom, {
191
+ Object.defineProperty($, utils_js_1.inspect.custom, {
194
192
  configurable: true,
195
193
  enumerable: false,
196
194
  value() {
197
195
  return this.html();
198
196
  }
199
197
  });
200
- Object.defineProperty($.prototype, utils_1.inspect.custom, {
198
+ Object.defineProperty($.prototype, utils_js_1.inspect.custom, {
201
199
  configurable: true,
202
200
  enumerable: false,
203
201
  value() {
package/net.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"net.js","sourceRoot":"","sources":["net.ts"],"names":[],"mappings":"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","sourcesContent":["import request_lib from 'request'\nimport type { OptionsWithUri, OptionsWithUrl } from 'request'\n\nimport request_promise from 'request-promise-native'\nimport type { FullResponse } from 'request-promise-native'\nimport { RequestError, StatusCodeError } from 'request-promise-native/errors'\n\nimport promise_retry from 'promise-retry'\n\nimport iconv from 'iconv-lite'\nimport cheerio from 'cheerio'\nimport qs from 'qs'\nimport { Cookie, MemoryCookieStore } from 'tough-cookie'\n\ndeclare module 'tough-cookie' {\n interface MemoryCookieStore {\n idx: Record<string, any>\n }\n}\n\n\nimport './prototype'\nimport type { Encoding } from './file'\nimport { inspect, output_width } from './utils'\n\nexport enum MyProxy {\n socks5 = 'http://localhost:10080',\n whistle = 'http://localhost:8899',\n}\n\n\n// ------------------------------------ Fetch, Request\nconst cookie_store = new MemoryCookieStore()\n\nexport const cookies = {\n store: cookie_store,\n \n jar: request_promise.jar(cookie_store),\n \n get (domain_or_url: string, str = false) {\n if (domain_or_url.startsWith('http'))\n if (str)\n return this.jar.getCookieString(domain_or_url)\n else\n return this.jar.getCookies(domain_or_url)\n \n let cookies: Cookie[]\n this.store.findCookies(domain_or_url, null, true, (error, _cookies) => {\n if (error) throw error\n cookies = _cookies\n })\n return cookies\n },\n}\n\nexport { Cookie }\n\n\nexport const _request = request_promise.defaults({\n rejectUnauthorized: false,\n gzip: true,\n /** prevent 302 redirect cause error, which is a boolean to set whether status codes other than 2xx should also reject the promise */\n simple: false,\n \n jar: cookies.jar\n})\n\n\nexport async function request_retry (retries: number, request_options: request_promise.OptionsWithUrl) {\n return promise_retry<FullResponse>({\n retries,\n minTimeout: 1000,\n maxTimeout: Infinity,\n factor: 2\n }, async (retry, count) => {\n try {\n return await _request(request_options)\n } catch (error) {\n if (!['ECONNRESET', 'ETIMEDOUT', 'ESOCKETTIMEDOUT'].includes(error.cause?.code)) throw error\n if (count <= retries)\n console.log(`${`retry (${count}) …`.yellow} ${request_options.url.toString().blue.underline}`)\n return retry(error)\n }\n })\n}\n\n\nexport interface RequestOptions {\n method?: 'get' | 'post' | 'put' | 'head' | 'delete' | 'patch'\n \n queries?: Record<string, any>\n \n headers?: Record<string, string>\n \n body?: string | Record<string, any>\n \n type?: 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data'\n \n \n proxy?: boolean | MyProxy | string\n \n encoding?: Encoding\n \n retries?: true | number\n \n timeout?: number\n \n auth?: {\n username: string\n password: string\n }\n \n gzip?: boolean\n \n cookies?: Record<string, string>\n}\n\nexport interface RequestRawOptions extends RequestOptions {\n raw: true\n}\n\n/** \n - url: must be full url\n - options:\n - raw: `false` 传入后返回整个 response\n - encoding: `(response content-type: charset=gb18030) || 'utf-8'` when 'binary' then return buffer\n - type: `'application/json'` request content-type header (if has body)\n - proxy: `false` proxy === true then use MyProxy.whistle\n - retries: `false` could be true (default 3 times) or retry times\n - timeout: `20 * 1000`\n - gzip: `raw -> false; else -> true`\n*/\nexport async function request (url: string | URL): Promise<string>\nexport async function request (url: string | URL, options: RequestRawOptions): Promise<request_lib.Response>\nexport async function request (url: string | URL, options: RequestOptions & { encoding: 'binary' }): Promise<Buffer>\nexport async function request (url: string | URL, options: RequestOptions): Promise<string>\nexport async function request (url: string | URL, {\n queries,\n \n body,\n \n type = 'application/json',\n \n proxy,\n \n method,\n \n headers,\n \n encoding,\n \n raw = false,\n \n retries,\n \n timeout = 20 * 1000,\n \n auth,\n \n gzip,\n \n cookies,\n \n}: RequestOptions & { raw?: boolean } = { }) {\n url = url.toString()\n \n if (!url.startsWith('http'))\n url = 'http://' + url\n \n const _body = body // for error log\n \n if (body && !method)\n method = 'post'\n \n if (type === 'application/json' && typeof body !== 'undefined' && (typeof body !== 'string' && !Buffer.isBuffer(body)))\n body = JSON.stringify(body)\n \n // --- proxy\n if (proxy) {\n if (proxy === true)\n proxy = MyProxy.whistle\n } else\n proxy = false\n \n // --- gzip\n if (gzip === undefined)\n gzip = !raw\n \n \n const options: request_lib.Options & { resolveWithFullResponse: boolean } = {\n url,\n \n ... method ? { method: method.toUpperCase() } : { },\n \n proxy,\n \n gzip,\n \n encoding: null,\n \n resolveWithFullResponse: true,\n \n headers: {\n 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,ja-JP;q=0.6,ja;q=0.5',\n 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',\n ... body ? { 'content-type': type } : { }, \n ... cookies ? {\n cookie: Object.entries(cookies)\n .map(([key, value]) => \n `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n ).join('; ')\n } : { },\n ... headers\n },\n \n ... queries ? { qs: queries } : { },\n \n // --- body\n ... (() => {\n if (!body) return { }\n if (type === 'application/x-www-form-urlencoded') return { form: body }\n if (type === 'multipart/form-data') return { formData: body as Record<string, any> }\n return { body }\n })(),\n \n ... timeout ? { timeout } : { },\n \n ... auth ? { auth } : { },\n }\n \n let resp: request_lib.Response\n \n try {\n if (retries) {\n if (retries === true)\n retries = 3\n \n resp = await request_retry(retries, options)\n } else\n resp = await _request(options)\n \n if (!(200 <= resp.statusCode && resp.statusCode <= 299))\n throw new StatusCodeError(resp.statusCode, resp.body, options, resp)\n \n } catch (error) {\n const {\n name, \n options: { method, url, uri, qs }, \n response,\n }: {\n options: OptionsWithUri & OptionsWithUrl\n response: FullResponse\n } & Error = error\n \n error[inspect.custom] = () => {\n let s = '─'.repeat(output_width / 2) + '\\n' +\n `${(method || 'get').toLowerCase().red} ${String(url || uri).blue.underline}\\n`\n \n if (qs)\n s += `\\n${'request.query:'.blue}\\n` +\n inspect(qs) + '\\n'\n \n if (_body)\n s += `\\n${'request.body:'.blue}\\n` +\n inspect(body) + '\\n'\n \n if (name === 'StatusCodeError')\n s += `\\n${'response.status:'.yellow} ${String(error.statusCode).red}\\n`\n else if (error instanceof RequestError)\n s += `\\n${'response.cause:'.yellow}\\n` +\n `${inspect(error.cause)}\\n`\n else\n s += `\\n${inspect(error)}\\n`\n \n if (response) {\n s += `\\n${'response.headers:'.yellow}\\n` + \n `${inspect(response.headers)}\\n`\n \n if (response.body)\n s += `\\n${'response.body:'.yellow}\\n` +\n `${inspect(response.body.toString())}\\n`\n }\n \n s += `\\n${'stack:'.yellow}\\n` +\n `${new Error().stack}\\n` +\n '─'.repeat(output_width / 2)\n \n return s\n }\n \n throw error\n }\n \n if (raw)\n return resp\n \n if (!resp.body)\n return resp.body\n \n // --- decode body\n if (encoding === 'binary')\n return resp.body\n \n encoding ||= /charset=(.*)/.exec(resp.headers['content-type'])?.[1] as Encoding || 'utf-8'\n \n if (/utf-?8/i.test(encoding))\n return (resp.body as Buffer).toString('utf-8')\n \n return iconv.decode((resp.body as Buffer), encoding)\n}\n\n\n/** make http request and parse body as json */\nexport async function request_json <T = any> (url: string | URL, options?: RequestOptions): Promise<T> {\n const resp = await request(url, options)\n if (!resp) return\n try {\n return JSON.parse(resp)\n } catch (error) {\n console.log(resp)\n throw error\n }\n}\n\n\n/** use $.html(cheerio_element) to get outer html */\nexport function parse_html (html: string) {\n let $ = cheerio.load(html, { decodeEntities: false })\n \n Object.defineProperty($, inspect.custom, {\n configurable: true,\n enumerable: false,\n value () {\n return this.html()\n }\n })\n \n Object.defineProperty($.prototype, inspect.custom, {\n configurable: true,\n enumerable: false,\n value (this: cheerio.Cheerio) {\n if (this.length > 1)\n return this.map((index, element) => {\n if (typeof element === 'string') return element\n return $.html(element)\n }).get().join_lines()\n \n return this.toString()\n }\n })\n \n return $\n}\n\n\n/** use $.html(cheerio_element) to get outer html */\nexport async function request_page (url: string | URL, options?: RequestOptions) {\n return parse_html(\n await request(url, options)\n )\n}\n\n\nexport function to_curl (url: string | URL, { queries, headers, method, body, proxy, exe = true }: RequestOptions & { exe?: boolean } = { }) {\n if (proxy === true)\n proxy = process.env.http_proxy\n \n url = url.toString()\n \n if (!url.startsWith('http'))\n url = `http://${url}`\n \n return (exe ? 'curl.exe' : 'curl') + \n ' ' + ( url + (queries ? '?' : '') + qs.stringify(queries) ).quote() +\n // ( typeof proxy === 'undefined' ?\n // ''\n // :\n // ( proxy ? ' --proxy ' + proxy.quote() : ' --noproxy ' + '*'.quote())\n // ) +\n ( proxy ? ` --proxy ${proxy.quote()}` : '' ) +\n ( method && method !== 'get' ? ` -X ${method}` : '' ) +\n ( headers ? Object.entries(headers).map( ([key, value]) => ' -H ' + `${key}: ${value}`.quote() ).join('') : '' ) +\n ( body ? ' -H ' + 'content-type: application/json'.quote() : '') +\n ( body ? ' --data ' + JSON.stringify(body).quote() : '')\n}\n\n\n\n\n// ------------------------------------ rpc client\n/** post json to http://localhost:8421/api/rpc\n - func: function name\n - args?: argument array\n - options?:\n - ignore?: `false` wait for execution but do not serialize result to response\n - async?: `false` do not wait for exec\n*/\nexport async function rpc (\n func: string, \n args?: any[], \n { url = 'http://localhost:8421/api/rpc', async: _async = false, ignore = false }: { url?: string, async?: boolean, ignore?: boolean } = { }\n) {\n if (!func) throw new Error('rpc argument error: no func')\n \n return request_json(url, {\n body: {\n func,\n args,\n async: _async,\n ignore,\n }\n })\n}\n\n\nexport function rpc_curl (func: string, args: any[]) {\n const cmd = args.find( arg => typeof arg === 'object') ?\n to_curl('http://localhost:8421/api/rpc', { body: { func, args } })\n :\n to_curl('http://localhost:8421/api/rpc', { queries: { func, args } })\n return cmd\n}\n\n"]}
1
+ {"version":3,"file":"net.js","sourceRoot":"","sources":["net.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n default as request_lib,\n type OptionsWithUri,\n type OptionsWithUrl\n} from 'request'\n\nimport {\n default as request_promise,\n type FullResponse,\n} from 'request-promise-native'\nimport { RequestError, StatusCodeError } from 'request-promise-native/errors.js'\n\nimport promise_retry from 'promise-retry'\n\nimport iconv from 'iconv-lite'\nimport cheerio from 'cheerio'\nimport qs from 'qs'\nimport { Cookie, MemoryCookieStore } from 'tough-cookie'\n\ndeclare module 'tough-cookie' {\n interface MemoryCookieStore {\n idx: Record<string, any>\n }\n}\n\n\nimport './prototype.js'\nimport type { Encoding } from './file.js'\nimport { inspect, output_width } from './utils.js'\n\nexport enum MyProxy {\n socks5 = 'http://localhost:10080',\n whistle = 'http://localhost:8899',\n}\n\n\n// ------------------------------------ Fetch, Request\nconst cookie_store = new MemoryCookieStore()\n\nexport const cookies = {\n store: cookie_store,\n \n jar: request_promise.jar(cookie_store),\n \n get (domain_or_url: string, str = false) {\n if (domain_or_url.startsWith('http'))\n if (str)\n return this.jar.getCookieString(domain_or_url)\n else\n return this.jar.getCookies(domain_or_url)\n \n let cookies: Cookie[]\n this.store.findCookies(domain_or_url, null, true, (error, _cookies) => {\n if (error) throw error\n cookies = _cookies\n })\n return cookies\n },\n}\n\nexport { Cookie }\n\n\nexport const _request = request_promise.defaults({\n rejectUnauthorized: false,\n gzip: true,\n /** prevent 302 redirect cause error, which is a boolean to set whether status codes other than 2xx should also reject the promise */\n simple: false,\n \n jar: cookies.jar\n})\n\n\nexport async function request_retry (retries: number, request_options: request_promise.OptionsWithUrl) {\n return promise_retry<FullResponse>({\n retries,\n minTimeout: 1000,\n maxTimeout: Infinity,\n factor: 2\n }, async (retry, count) => {\n try {\n return await _request(request_options)\n } catch (error) {\n if (!['ECONNRESET', 'ETIMEDOUT', 'ESOCKETTIMEDOUT'].includes(error.cause?.code)) throw error\n if (count <= retries)\n console.log(`${`retry (${count}) …`.yellow} ${request_options.url.toString().blue.underline}`)\n return retry(error)\n }\n })\n}\n\n\nexport interface RequestOptions {\n method?: 'get' | 'post' | 'put' | 'head' | 'delete' | 'patch'\n \n queries?: Record<string, any>\n \n headers?: Record<string, string>\n \n body?: string | Record<string, any>\n \n type?: 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data'\n \n \n proxy?: boolean | MyProxy | string\n \n encoding?: Encoding\n \n retries?: true | number\n \n timeout?: number\n \n auth?: {\n username: string\n password: string\n }\n \n gzip?: boolean\n \n cookies?: Record<string, string>\n}\n\nexport interface RequestRawOptions extends RequestOptions {\n raw: true\n}\n\n/** \n - url: must be full url\n - options:\n - raw: `false` 传入后返回整个 response\n - encoding: `(response content-type: charset=gb18030) || 'utf-8'` when 'binary' then return buffer\n - type: `'application/json'` request content-type header (if has body)\n - proxy: `false` proxy === true then use MyProxy.whistle\n - retries: `false` could be true (default 3 times) or retry times\n - timeout: `20 * 1000`\n - gzip: `raw -> false; else -> true`\n*/\nexport async function request (url: string | URL): Promise<string>\nexport async function request (url: string | URL, options: RequestRawOptions): Promise<request_lib.Response>\nexport async function request (url: string | URL, options: RequestOptions & { encoding: 'binary' }): Promise<Buffer>\nexport async function request (url: string | URL, options: RequestOptions): Promise<string>\nexport async function request (url: string | URL, {\n queries,\n \n body,\n \n type = 'application/json',\n \n proxy,\n \n method,\n \n headers,\n \n encoding,\n \n raw = false,\n \n retries,\n \n timeout = 20 * 1000,\n \n auth,\n \n gzip,\n \n cookies,\n \n}: RequestOptions & { raw?: boolean } = { }) {\n url = url.toString()\n \n if (!url.startsWith('http'))\n url = 'http://' + url\n \n const _body = body // for error log\n \n if (body && !method)\n method = 'post'\n \n if (type === 'application/json' && typeof body !== 'undefined' && (typeof body !== 'string' && !Buffer.isBuffer(body)))\n body = JSON.stringify(body)\n \n // --- proxy\n if (proxy) {\n if (proxy === true)\n proxy = MyProxy.whistle\n } else\n proxy = false\n \n // --- gzip\n if (gzip === undefined)\n gzip = !raw\n \n \n const options: request_lib.Options & { resolveWithFullResponse: boolean } = {\n url,\n \n ... method ? { method: method.toUpperCase() } : { },\n \n proxy,\n \n gzip,\n \n encoding: null,\n \n resolveWithFullResponse: true,\n \n headers: {\n 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,ja-JP;q=0.6,ja;q=0.5',\n 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36',\n ... body ? { 'content-type': type } : { }, \n ... cookies ? {\n cookie: Object.entries(cookies)\n .map(([key, value]) => \n `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n ).join('; ')\n } : { },\n ... headers\n },\n \n ... queries ? { qs: queries } : { },\n \n // --- body\n ... (() => {\n if (!body) return { }\n if (type === 'application/x-www-form-urlencoded') return { form: body }\n if (type === 'multipart/form-data') return { formData: body as Record<string, any> }\n return { body }\n })(),\n \n ... timeout ? { timeout } : { },\n \n ... auth ? { auth } : { },\n }\n \n let resp: request_lib.Response\n \n try {\n if (retries) {\n if (retries === true)\n retries = 3\n \n resp = await request_retry(retries, options)\n } else\n resp = await _request(options)\n \n if (!(200 <= resp.statusCode && resp.statusCode <= 299))\n throw new StatusCodeError(resp.statusCode, resp.body, options, resp)\n \n } catch (error) {\n const {\n name, \n options: { method, url, uri, qs }, \n response,\n }: {\n options: OptionsWithUri & OptionsWithUrl\n response: FullResponse\n } & Error = error\n \n error[inspect.custom] = () => {\n let s = '─'.repeat(output_width / 2) + '\\n' +\n `${(method || 'get').toLowerCase().red} ${String(url || uri).blue.underline}\\n`\n \n if (qs)\n s += `\\n${'request.query:'.blue}\\n` +\n inspect(qs) + '\\n'\n \n if (_body)\n s += `\\n${'request.body:'.blue}\\n` +\n inspect(body) + '\\n'\n \n if (name === 'StatusCodeError')\n s += `\\n${'response.status:'.yellow} ${String(error.statusCode).red}\\n`\n else if (error instanceof RequestError)\n s += `\\n${'response.cause:'.yellow}\\n` +\n `${inspect(error.cause)}\\n`\n else\n s += `\\n${inspect(error)}\\n`\n \n if (response) {\n s += `\\n${'response.headers:'.yellow}\\n` + \n `${inspect(response.headers)}\\n`\n \n if (response.body)\n s += `\\n${'response.body:'.yellow}\\n` +\n `${inspect(response.body.toString())}\\n`\n }\n \n s += `\\n${'stack:'.yellow}\\n` +\n `${new Error().stack}\\n` +\n '─'.repeat(output_width / 2)\n \n return s\n }\n \n throw error\n }\n \n if (raw)\n return resp\n \n if (!resp.body)\n return resp.body\n \n // --- decode body\n if (encoding === 'binary')\n return resp.body\n \n encoding ||= /charset=(.*)/.exec(resp.headers['content-type'])?.[1] as Encoding || 'utf-8'\n \n if (/utf-?8/i.test(encoding))\n return (resp.body as Buffer).toString('utf-8')\n \n return iconv.decode((resp.body as Buffer), encoding)\n}\n\n\n/** make http request and parse body as json */\nexport async function request_json <T = any> (url: string | URL, options?: RequestOptions): Promise<T> {\n const resp = await request(url, options)\n if (!resp) return\n try {\n return JSON.parse(resp)\n } catch (error) {\n console.log(resp)\n throw error\n }\n}\n\n\n/** use $.html(cheerio_element) to get outer html */\nexport function parse_html (html: string) {\n let $ = cheerio.load(html, { decodeEntities: false })\n \n Object.defineProperty($, inspect.custom, {\n configurable: true,\n enumerable: false,\n value () {\n return this.html()\n }\n })\n \n Object.defineProperty($.prototype, inspect.custom, {\n configurable: true,\n enumerable: false,\n value (this: cheerio.Cheerio) {\n if (this.length > 1)\n return this.map((index, element) => {\n if (typeof element === 'string') return element\n return $.html(element)\n }).get().join_lines()\n \n return this.toString()\n }\n })\n \n return $\n}\n\n\n/** use $.html(cheerio_element) to get outer html */\nexport async function request_page (url: string | URL, options?: RequestOptions) {\n return parse_html(\n await request(url, options)\n )\n}\n\n\nexport function to_curl (url: string | URL, { queries, headers, method, body, proxy, exe = true }: RequestOptions & { exe?: boolean } = { }) {\n if (proxy === true)\n proxy = process.env.http_proxy\n \n url = url.toString()\n \n if (!url.startsWith('http'))\n url = `http://${url}`\n \n return (exe ? 'curl.exe' : 'curl') + \n ' ' + ( url + (queries ? '?' : '') + qs.stringify(queries) ).quote() +\n // ( typeof proxy === 'undefined' ?\n // ''\n // :\n // ( proxy ? ' --proxy ' + proxy.quote() : ' --noproxy ' + '*'.quote())\n // ) +\n ( proxy ? ` --proxy ${proxy.quote()}` : '' ) +\n ( method && method !== 'get' ? ` -X ${method}` : '' ) +\n ( headers ? Object.entries(headers).map( ([key, value]) => ' -H ' + `${key}: ${value}`.quote() ).join('') : '' ) +\n ( body ? ' -H ' + 'content-type: application/json'.quote() : '') +\n ( body ? ' --data ' + JSON.stringify(body).quote() : '')\n}\n\n\n\n\n// ------------------------------------ rpc client\n/** post json to http://localhost:8421/api/rpc\n - func: function name\n - args?: argument array\n - options?:\n - ignore?: `false` wait for execution but do not serialize result to response\n - async?: `false` do not wait for exec\n*/\nexport async function rpc (\n func: string, \n args?: any[], \n { url = 'http://localhost:8421/api/rpc', async: _async = false, ignore = false }: { url?: string, async?: boolean, ignore?: boolean } = { }\n) {\n if (!func) throw new Error('rpc argument error: no func')\n \n return request_json(url, {\n body: {\n func,\n args,\n async: _async,\n ignore,\n }\n })\n}\n\n\nexport function rpc_curl (func: string, args: any[]) {\n const cmd = args.find( arg => typeof arg === 'object') ?\n to_curl('http://localhost:8421/api/rpc', { body: { func, args } })\n :\n to_curl('http://localhost:8421/api/rpc', { queries: { func, args } })\n return cmd\n}\n\n"]}
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "xshell",
3
- "version": "0.0.18",
3
+ "version": "0.0.23",
4
4
  "main": "./index.js",
5
5
  "bin": {
6
- "xshell": "./xshell.js"
6
+ "xshell": "./xshell.js",
7
+ "i18n-scan": "./i18n/i18n-scan.js"
7
8
  },
8
9
  "description": "xshell is a shell designed to provide a brand new human-computer interaction experience.",
9
10
  "keywords": [
10
11
  "shell",
11
12
  "node",
12
13
  "repl",
14
+ "i18n",
13
15
  "interactive programming"
14
16
  ],
15
17
  "type": "commonjs",
@@ -63,25 +65,42 @@
63
65
  ]
64
66
  },
65
67
  "dependencies": {
68
+ "@babel/core": "^7.16.0",
69
+ "@babel/parser": "^7.16.4",
70
+ "@babel/traverse": "^7.16.3",
66
71
  "@koa/cors": "^3.1.0",
67
72
  "byte-size": "^8.1.0",
68
73
  "chalk": "^4.1.2",
69
74
  "chardet": "^1.4.0",
70
75
  "cheerio": "^1.0.0-rc.10",
76
+ "cli-table3": "^0.6.0",
77
+ "cli-truncate": "=2.1.0",
78
+ "colors": "^1.4.0",
79
+ "commander": "^8.3.0",
80
+ "ejs": "^3.1.6",
71
81
  "emoji-regex": "^10.0.0",
72
82
  "fs-extra": "^10.0.0",
73
83
  "fs-monkey": "^1.0.3",
84
+ "gulp-sort": "^2.0.0",
85
+ "hash-string": "^1.0.0",
86
+ "i18next-scanner": "^3.1.0",
87
+ "i18next": "^21.5.4",
74
88
  "iconv-lite": "^0.6.3",
75
- "koa": "^2.13.4",
89
+ "js-cookie": "^3.0.1",
76
90
  "koa-compress": "^5.1.0",
77
91
  "koa-useragent": "^4.0.0",
92
+ "koa": "^2.13.4",
78
93
  "lodash": "^4.17.21",
94
+ "map-stream": "0.0.7",
79
95
  "memfs": "^3.4.0",
96
+ "ora": "=5.4.1",
80
97
  "promise-retry": "^2.0.1",
81
98
  "qs": "^6.10.1",
99
+ "react-i18next": "^11.14.3",
100
+ "react": "^17.0.2",
82
101
  "readdir-enhanced": "^6.0.4",
83
- "request": "^2.88.2",
84
102
  "request-promise-native": "^1.0.9",
103
+ "request": "^2.88.2",
85
104
  "resolve-path": "^1.4.0",
86
105
  "rimraf": "^3.0.2",
87
106
  "stream-buffers": "^3.0.2",
@@ -89,25 +108,33 @@
89
108
  "tough-cookie": "^4.0.0",
90
109
  "tslib": "^2.3.1",
91
110
  "typescript": "^4.5.2",
92
- "upath": "^2.0.1"
111
+ "upath": "^2.0.1",
112
+ "vinyl-fs": "^3.0.3",
113
+ "vinyl": "^2.2.1"
93
114
  },
94
115
  "devDependencies": {
116
+ "@babel/types": "^7.16.0",
117
+ "@types/babel__traverse": "^7.14.2",
95
118
  "@types/chardet": "^0.8.1",
96
119
  "@types/cheerio": "^0.22.30",
120
+ "@types/ejs": "^3.1.0",
121
+ "@types/express": "^4.17.13",
97
122
  "@types/fs-extra": "^9.0.13",
98
- "@types/koa": "^2.13.4",
123
+ "@types/gulp-sort": "2.0.0",
124
+ "@types/js-cookie": "^3.0.1",
99
125
  "@types/koa-compress": "^4.0.3",
126
+ "@types/koa": "^2.13.4",
100
127
  "@types/lodash": "^4.14.177",
101
- "@types/node": "^16.11.10",
128
+ "@types/node": "^16.11.11",
102
129
  "@types/promise-retry": "^1.1.3",
103
130
  "@types/qs": "^6.9.7",
104
- "@types/request": "^2.48.7",
131
+ "@types/react": "^17.0.37",
105
132
  "@types/request-promise-native": "^1.0.18",
133
+ "@types/request": "^2.48.7",
106
134
  "@types/rimraf": "^3.0.2",
107
135
  "@types/stream-buffers": "^3.0.4",
108
136
  "@types/tampermonkey": "^4.0.5",
109
- "@types/vscode": "^1.62.0",
110
- "source-map-loader": "^3.0.0",
111
- "ts-loader": "^9.2.6"
137
+ "@types/vinyl-fs": "^2.4.12",
138
+ "@types/vscode": "^1.62.0"
112
139
  }
113
140
  }
package/process.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /// <reference types="node" />
2
- import type { ChildProcess } from 'child_process';
3
- import './prototype';
4
- import { Encoding } from './file';
5
- import { inspect } from './utils';
2
+ import { type ChildProcess } from 'child_process';
3
+ import './prototype.js';
4
+ import { Encoding } from './file.js';
5
+ import { inspect } from './utils.js';
6
6
  export declare const fp_root: string;
7
7
  export declare const exe_node: string;
8
8
  interface StartOptions {
package/process.js CHANGED
@@ -4,8 +4,8 @@ exports.call_node = exports.call = exports.start = exports.exe_node = exports.fp
4
4
  const tslib_1 = require("tslib");
5
5
  const child_process_1 = require("child_process");
6
6
  const iconv_lite_1 = (0, tslib_1.__importDefault)(require("iconv-lite"));
7
- require("./prototype");
8
- const utils_1 = require("./utils");
7
+ require("./prototype.js");
8
+ const utils_js_1 = require("./utils.js");
9
9
  exports.fp_root = `${__dirname}/`.to_slash();
10
10
  exports.exe_node = process.execPath.to_slash();
11
11
  /** start process
@@ -126,8 +126,8 @@ async function call(exe, args = [], options = {}) {
126
126
  code,
127
127
  signal,
128
128
  child,
129
- [utils_1.inspect.custom]() {
130
- return (0, utils_1.inspect)(this, { omit: ['child'] });
129
+ [utils_js_1.inspect.custom]() {
130
+ return (0, utils_js_1.inspect)(this, { omit: ['child'] });
131
131
  }
132
132
  };
133
133
  if (code && throw_code)
package/process.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["process.ts"],"names":[],"mappings":";;;;AAAA,iDAAqC;AAIrC,yEAA8B;AAE9B,uBAAoB;AAEpB,mCAAiC;AAEpB,QAAA,OAAO,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE,CAAA;AAEpC,QAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;AA8BnD;;;;;;;;;;EAUE;AACF,SAAgB,KAAK,CAAE,GAAW,EAAE,OAAiB,EAAE,EAAE,EACrD,GAAG,GAAG,eAAO,EAEb,QAAQ,GAAG,OAAO,EAElB,KAAK,GAAG,IAAI,EAEZ,KAAK,GAAG,MAAM,EAEd,QAAQ,GAAG,KAAK,EAEhB,GAAG,MAEW,EAAG;IACjB,MAAM,OAAO,GAAiB;QAC1B,GAAG;QACH,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,CAAC,QAAQ;QACtB,KAAK;QACL,GAAI,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;SAClC,CAAC,CAAC,CAAC,EAAG;KACV,CAAA;IAED,IAAI,KAAK;QACL,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAEpG,IAAI,QAAQ,EAAE;QACV,IAAI,KAAK,GAAG,IAAA,qBAAK,EAAC,GAAG,EAAE,IAAI,EAAE;YACzB,GAAG,OAAO;YACV,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAA;QAEF,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,OAAO,KAAK,CAAA;KACf;IAED,IAAI,KAAK,GAAG,IAAA,qBAAK,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAErC,IAAI,KAAK,KAAK,MAAM;QAChB,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAE1C,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAEpC,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACvB,IAAI,QAAQ,KAAK,OAAO,EAAE;YACtB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACjC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;SACpC;aAAM;YACH,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAC5B,oBAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CACZ,CAAA;YACpB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAC5B,oBAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CACZ,CAAA;SACvB;QAED,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;YACjD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;SACpD;KACJ;IAED,OAAO,KAAK,CAAA;AAChB,CAAC;AAtED,sBAsEC;AAkCM,KAAK,UAAU,IAAI,CAAE,GAAW,EAAE,OAAiB,EAAE,EAAE,UAAuB,EAAG;IACpF,MAAM,EACF,QAAQ,GAAG,OAAO,EAClB,KAAK,GAAG,IAAI,EACZ,UAAU,GAAG,IAAI,GACpB,GAAG,OAAO,CAAA;IAEX,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC;QAC1C;YACI,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACf;QACL,CAAC;YACG,KAAK,CAAA;IAEb,MAAM,GAAG,GAAG,GAAG,GAAG,IAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,CAAA;IAE1F,IAAI,aAAa,CAAC,OAAO;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAEzB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;IAErB,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAGrC,qBAAqB;IACrB,IAAI,OAAO,GAAwB,EAAG,CAAA;IACtC,IAAI,OAAO,GAAwB,EAAG,CAAA;IAEtC,IAAI,IAAmB,EACnB,MAAsB,CAAA;IAE1B,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACxB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBAChC,IAAI,GAAG,KAAK,CAAA;gBACZ,MAAM,GAAG,OAAO,CAAA;gBAChB,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;QACN,CAAC,CAAC;QACF,CAAC,KAAK,IAAI,EAAE;YACR,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,MAAwC,EAAE;gBACtE,IAAI,QAAQ,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM;oBAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACtB;QACL,CAAC,CAAC,EAAE;QACJ,CAAC,KAAK,IAAI,EAAE;YACR,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,MAAwC,EAAE;gBACtE,IAAI,QAAQ,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM;oBAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACtB;QACL,CAAC,CAAC,EAAE;KACP,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,WAAY,KAAK,CAAC,GAAI,MAAO,GAAI,YAAa,IAAK,GAAI,MAAM,CAAC,CAAC,CAAC,eAAgB,MAAO,EAAE,CAAC,CAAC,CAAC,EAAG,GAAG,CAAA;IAElH,IAAI,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM;QACpC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAEzD,MAAM,MAAM,GAAG;QACX,GAAG,EAAE,KAAK,CAAC,GAAG;QAEd,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,OAAmB,CAAC;YACtC,CAAC;gBACI,OAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAElC,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,OAAmB,CAAC;YACtC,CAAC;gBACI,OAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAElC,IAAI;QAEJ,MAAM;QAEN,KAAK;QAEL,CAAC,eAAO,CAAC,MAAM,CAAC;YACZ,OAAO,IAAA,eAAO,EAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC7C,CAAC;KACJ,CAAA;IAED,IAAI,IAAI,IAAI,UAAU;QAClB,MAAM,MAAM,CAAC,MAAM,CACf,IAAI,KAAK,CAAC,OAAO,CAAC,EAClB,MAAM,CACT,CAAA;IAEL,OAAO,MAAM,CAAA;AACjB,CAAC;AA/FD,oBA+FC;AAGD;;;;;;;;;;;EAWE;AACK,KAAK,UAAU,SAAS,CAAE,EAAU,EAAE,OAAiB,EAAE,EAAE,OAA0D;IACxH,OAAO,IAAI,CAAC,gBAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AAFD,8BAEC","sourcesContent":["import { spawn } from 'child_process'\nimport type { SpawnOptions, ChildProcess } from 'child_process'\nimport { Readable, Writable } from 'stream'\n\nimport iconv from 'iconv-lite'\n\nimport './prototype'\nimport { Encoding } from './file'\nimport { inspect } from './utils'\n\nexport const fp_root = `${__dirname}/`.to_slash()\n\nexport const exe_node = process.execPath.to_slash()\n\n\n// ------------------------------------ start & call\ninterface StartOptions {\n /** `'d:/'` */\n cwd?: string\n \n /** `process.env` overwrite/add to process.env */\n env?: Record<string, string>\n \n /** `'utf-8'` child output encoding */\n encoding?: Encoding\n \n /** `true` print option (with details) */\n print?: boolean | {\n command?: boolean\n stdout?: boolean\n stderr?: boolean\n code?: boolean\n error?: boolean\n }\n \n /** `'pipe'` when 'ignore' then ignore stdio processing */\n stdio?: 'pipe' | 'ignore'\n \n /** `false` whether to break the connection with child (ignore stdio, unref) */\n detached?: boolean\n}\n\n/** start process \n - exe: .exe path or filename (full path is recommanded to skip path searching for better perf)\n - args: `[]` arguments list\n - options\n - cwd?: `fp_root`\n - env?: `process.env` overwrite/add to process.env\n - encoding?: `'utf-8'` child output encoding\n - print?: `true` print option (with details)\n - stdio?: `'pipe'` when 'ignore' then ignore stdio processing\n - detached?: `false` whether to break the connection with child (ignore stdio, unref)\n*/\nexport function start (exe: string, args: string[] = [], {\n cwd = fp_root,\n \n encoding = 'utf-8',\n \n print = true,\n \n stdio = 'pipe',\n \n detached = false,\n \n env,\n \n}: StartOptions = { }): ChildProcess {\n const options: SpawnOptions = {\n cwd,\n shell: false,\n windowsHide: !detached,\n stdio,\n ... env ? {\n env: { ...process.env, ...env }\n } : { },\n }\n \n if (print)\n console.log(`${exe} ${ args.map(arg => arg.includes(' ') ? arg.quote() : arg).join(' ') }`.blue)\n \n if (detached) {\n let child = spawn(exe, args, {\n ...options,\n stdio: 'ignore',\n detached: true,\n })\n \n child.unref()\n return child\n }\n \n let child = spawn(exe, args, options)\n \n if (stdio === 'pipe')\n child.stdin.setDefaultEncoding('utf8')\n \n // prevent child spawn error crashing nodejs process\n child.on('error', error => {\n console.error(error)\n })\n \n if (stdio === 'ignore') return child\n \n if (encoding !== 'binary') {\n if (encoding === 'utf-8') {\n child.stdout.setEncoding('utf-8')\n child.stderr.setEncoding('utf-8')\n } else {\n child.stdout = child.stdout.pipe(\n iconv.decodeStream(encoding)\n ) as any as Readable\n child.stderr = child.stderr.pipe(\n iconv.decodeStream(encoding)\n ) as any as Readable\n }\n \n if (print) {\n child.stdout.pipe(process.stdout, { end: false })\n child.stderr.pipe(process.stderr, { end: false })\n }\n }\n \n return child\n}\n\n\nexport interface CallOptions extends StartOptions {\n /** `true` whether to throw Error when code is not 0 */\n throw_code?: boolean\n}\n\nexport interface CallResult<T = string> {\n pid: number\n stdout: T\n stderr: T\n code: number | null\n signal: NodeJS.Signals | null\n child: ChildProcess\n [inspect.custom] (): string\n}\n\n\n/** call process for result\n - exe: .exe path or filename (full path is recommanded to skip path searching for better perf)\n - args: `[]` arguments list\n - options\n - cwd?: `'d:/'`\n - env?: `process.env` overwrite/add to process.env\n - encoding?: `'utf-8'` child output encoding\n - print?: `true` print option (with details)\n - stdio?: `'pipe'` when 'ignore' then ignore stdio processing\n - detached?: `false` whether to break the connection with child (ignore stdio, unref)\n - throw_code?: `true` whether to throw Error when code is not 0\n*/\nexport async function call (exe: string, args?: string[]): Promise<CallResult<string>>\nexport async function call (exe: string, args?: string[], options?: CallOptions & { encoding?: 'utf-8' | 'gb18030' }): Promise<CallResult<string>>\nexport async function call (exe: string, args?: string[], options?: CallOptions & { encoding: 'binary' }): Promise<CallResult<Buffer>>\nexport async function call (exe: string, args: string[] = [], options: CallOptions = { }): Promise<CallResult<string | Buffer>> {\n const {\n encoding = 'utf-8', \n print = true,\n throw_code = true,\n } = options\n \n const print_options = typeof print === 'boolean' ?\n {\n command: print,\n stdout: print,\n stderr: print,\n code: print,\n error: print\n }\n :\n print\n \n const cmd = `${exe} ${ args.map(arg => arg.includes(' ') ? arg.quote() : arg).join(' ') }`\n \n if (print_options.command)\n console.log(cmd.blue)\n \n options.print = false\n \n let child = start(exe, args, options)\n \n \n // --- collect output\n let stdouts: (string | Buffer)[] = [ ]\n let stderrs: (string | Buffer)[] = [ ]\n \n let code: number | null, \n signal: NodeJS.Signals\n \n await Promise.all([\n new Promise<void>(resolve => {\n child.on('exit', (_code, _signal) => {\n code = _code\n signal = _signal\n resolve()\n })\n }),\n (async () => {\n for await (const chunk of child.stdout as AsyncIterable<string | Buffer>) {\n if (encoding !== 'binary' && print_options.stdout)\n process.stdout.write(chunk)\n stdouts.push(chunk)\n }\n })(),\n (async () => {\n for await (const chunk of child.stderr as AsyncIterable<string | Buffer>) {\n if (encoding !== 'binary' && print_options.stderr)\n process.stderr.write(chunk)\n stderrs.push(chunk)\n }\n })()\n ])\n \n const message = `process(${ child.pid }) '${ cmd }' exited ${ code }${ signal ? `, by signal ${ signal }` : '' }.`\n \n if (print_options.code || code || signal)\n console.log(message[code || signal ? 'red' : 'blue'])\n \n const result = {\n pid: child.pid,\n \n stdout: encoding === 'binary' ?\n Buffer.concat(stdouts as Buffer[])\n :\n (stdouts as string[]).join(''),\n \n stderr: encoding === 'binary' ?\n Buffer.concat(stderrs as Buffer[])\n :\n (stderrs as string[]).join(''),\n \n code,\n \n signal,\n \n child,\n \n [inspect.custom] () {\n return inspect(this, { omit: ['child'] })\n }\n }\n \n if (code && throw_code)\n throw Object.assign(\n new Error(message), \n result\n )\n \n return result\n}\n\n\n/** call node <js> for result\n - js: .js path (relative path will resolve based on cwd)\n - args: `[]` arguments list\n - options\n - cwd?: `'d:/'`\n - env?: `process.env` overwrite/add to process.env\n - encoding?: `'utf-8'` child process output encoding\n - print?: `true` print option (with details)\n - stdio?: `'pipe'` when 'ignore' then ignore stdio processing\n - detached?: `false` whether to break the connection with child (ignore stdio, unref)\n - throw_code?: `true` whether to throw Error when code is not 0\n*/\nexport async function call_node (js: string, args: string[] = [], options?: CallOptions & { encoding?: 'utf-8' | 'gb18030' }) {\n return call(exe_node, [js, ...args], options)\n}\n\n"]}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["process.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n spawn,\n type SpawnOptions,\n type ChildProcess\n} from 'child_process'\nimport { Readable } from 'stream'\n\nimport iconv from 'iconv-lite'\n\nimport './prototype.js'\nimport { Encoding } from './file.js'\nimport { inspect } from './utils.js'\n\nexport const fp_root = `${__dirname}/`.to_slash()\n\nexport const exe_node = process.execPath.to_slash()\n\n\n// ------------------------------------ start & call\ninterface StartOptions {\n /** `'d:/'` */\n cwd?: string\n \n /** `process.env` overwrite/add to process.env */\n env?: Record<string, string>\n \n /** `'utf-8'` child output encoding */\n encoding?: Encoding\n \n /** `true` print option (with details) */\n print?: boolean | {\n command?: boolean\n stdout?: boolean\n stderr?: boolean\n code?: boolean\n error?: boolean\n }\n \n /** `'pipe'` when 'ignore' then ignore stdio processing */\n stdio?: 'pipe' | 'ignore'\n \n /** `false` whether to break the connection with child (ignore stdio, unref) */\n detached?: boolean\n}\n\n/** start process \n - exe: .exe path or filename (full path is recommanded to skip path searching for better perf)\n - args: `[]` arguments list\n - options\n - cwd?: `fp_root`\n - env?: `process.env` overwrite/add to process.env\n - encoding?: `'utf-8'` child output encoding\n - print?: `true` print option (with details)\n - stdio?: `'pipe'` when 'ignore' then ignore stdio processing\n - detached?: `false` whether to break the connection with child (ignore stdio, unref)\n*/\nexport function start (exe: string, args: string[] = [], {\n cwd = fp_root,\n \n encoding = 'utf-8',\n \n print = true,\n \n stdio = 'pipe',\n \n detached = false,\n \n env,\n \n}: StartOptions = { }): ChildProcess {\n const options: SpawnOptions = {\n cwd,\n shell: false,\n windowsHide: !detached,\n stdio,\n ... env ? {\n env: { ...process.env, ...env }\n } : { },\n }\n \n if (print)\n console.log(`${exe} ${ args.map(arg => arg.includes(' ') ? arg.quote() : arg).join(' ') }`.blue)\n \n if (detached) {\n let child = spawn(exe, args, {\n ...options,\n stdio: 'ignore',\n detached: true,\n })\n \n child.unref()\n return child\n }\n \n let child = spawn(exe, args, options)\n \n if (stdio === 'pipe')\n child.stdin.setDefaultEncoding('utf8')\n \n // prevent child spawn error crashing nodejs process\n child.on('error', error => {\n console.error(error)\n })\n \n if (stdio === 'ignore') return child\n \n if (encoding !== 'binary') {\n if (encoding === 'utf-8') {\n child.stdout.setEncoding('utf-8')\n child.stderr.setEncoding('utf-8')\n } else {\n child.stdout = child.stdout.pipe(\n iconv.decodeStream(encoding)\n ) as any as Readable\n child.stderr = child.stderr.pipe(\n iconv.decodeStream(encoding)\n ) as any as Readable\n }\n \n if (print) {\n child.stdout.pipe(process.stdout, { end: false })\n child.stderr.pipe(process.stderr, { end: false })\n }\n }\n \n return child\n}\n\n\nexport interface CallOptions extends StartOptions {\n /** `true` whether to throw Error when code is not 0 */\n throw_code?: boolean\n}\n\nexport interface CallResult<T = string> {\n pid: number\n stdout: T\n stderr: T\n code: number | null\n signal: NodeJS.Signals | null\n child: ChildProcess\n [inspect.custom] (): string\n}\n\n\n/** call process for result\n - exe: .exe path or filename (full path is recommanded to skip path searching for better perf)\n - args: `[]` arguments list\n - options\n - cwd?: `'d:/'`\n - env?: `process.env` overwrite/add to process.env\n - encoding?: `'utf-8'` child output encoding\n - print?: `true` print option (with details)\n - stdio?: `'pipe'` when 'ignore' then ignore stdio processing\n - detached?: `false` whether to break the connection with child (ignore stdio, unref)\n - throw_code?: `true` whether to throw Error when code is not 0\n*/\nexport async function call (exe: string, args?: string[]): Promise<CallResult<string>>\nexport async function call (exe: string, args?: string[], options?: CallOptions & { encoding?: 'utf-8' | 'gb18030' }): Promise<CallResult<string>>\nexport async function call (exe: string, args?: string[], options?: CallOptions & { encoding: 'binary' }): Promise<CallResult<Buffer>>\nexport async function call (exe: string, args: string[] = [], options: CallOptions = { }): Promise<CallResult<string | Buffer>> {\n const {\n encoding = 'utf-8', \n print = true,\n throw_code = true,\n } = options\n \n const print_options = typeof print === 'boolean' ?\n {\n command: print,\n stdout: print,\n stderr: print,\n code: print,\n error: print\n }\n :\n print\n \n const cmd = `${exe} ${ args.map(arg => arg.includes(' ') ? arg.quote() : arg).join(' ') }`\n \n if (print_options.command)\n console.log(cmd.blue)\n \n options.print = false\n \n let child = start(exe, args, options)\n \n \n // --- collect output\n let stdouts: (string | Buffer)[] = [ ]\n let stderrs: (string | Buffer)[] = [ ]\n \n let code: number | null, \n signal: NodeJS.Signals\n \n await Promise.all([\n new Promise<void>(resolve => {\n child.on('exit', (_code, _signal) => {\n code = _code\n signal = _signal\n resolve()\n })\n }),\n (async () => {\n for await (const chunk of child.stdout as AsyncIterable<string | Buffer>) {\n if (encoding !== 'binary' && print_options.stdout)\n process.stdout.write(chunk)\n stdouts.push(chunk)\n }\n })(),\n (async () => {\n for await (const chunk of child.stderr as AsyncIterable<string | Buffer>) {\n if (encoding !== 'binary' && print_options.stderr)\n process.stderr.write(chunk)\n stderrs.push(chunk)\n }\n })()\n ])\n \n const message = `process(${ child.pid }) '${ cmd }' exited ${ code }${ signal ? `, by signal ${ signal }` : '' }.`\n \n if (print_options.code || code || signal)\n console.log(message[code || signal ? 'red' : 'blue'])\n \n const result = {\n pid: child.pid,\n \n stdout: encoding === 'binary' ?\n Buffer.concat(stdouts as Buffer[])\n :\n (stdouts as string[]).join(''),\n \n stderr: encoding === 'binary' ?\n Buffer.concat(stderrs as Buffer[])\n :\n (stderrs as string[]).join(''),\n \n code,\n \n signal,\n \n child,\n \n [inspect.custom] () {\n return inspect(this, { omit: ['child'] })\n }\n }\n \n if (code && throw_code)\n throw Object.assign(\n new Error(message), \n result\n )\n \n return result\n}\n\n\n/** call node <js> for result\n - js: .js path (relative path will resolve based on cwd)\n - args: `[]` arguments list\n - options\n - cwd?: `'d:/'`\n - env?: `process.env` overwrite/add to process.env\n - encoding?: `'utf-8'` child process output encoding\n - print?: `true` print option (with details)\n - stdio?: `'pipe'` when 'ignore' then ignore stdio processing\n - detached?: `false` whether to break the connection with child (ignore stdio, unref)\n - throw_code?: `true` whether to throw Error when code is not 0\n*/\nexport async function call_node (js: string, args: string[] = [], options?: CallOptions & { encoding?: 'utf-8' | 'gb18030' }) {\n return call(exe_node, [js, ...args], options)\n}\n\n"]}
@@ -290,36 +290,37 @@ Object.defineProperties(String.prototype, {
290
290
  // ------------------------------------ Date.prototype
291
291
  Object.defineProperties(Date.prototype, to_method_property_descriptors({
292
292
  to_str() {
293
- return this.toLocaleString().replace(/(\d+)\/(\d+)\/(\d+) ?(上午|下午)(\d+):(\d{2}):(\d{2}).*/, (matches, year, month, day, ampm, hour, minute, second) => {
294
- hour = Number(hour);
295
- if (ampm === '上午' && hour === 12) {
296
- hour = 0;
297
- ampm = '凌晨';
298
- }
299
- else if (ampm === '上午' && hour <= 6)
300
- ampm = '凌晨';
301
- else if (ampm === '上午' && hour <= 8)
302
- ampm = '早上';
303
- else if (ampm === '上午' && hour <= 10)
304
- ampm = '上午';
305
- else if (ampm === '上午' && hour <= 11)
306
- ampm = '中午';
307
- else if (ampm === '下午' && hour === 12)
308
- ampm = '中午';
309
- else if (ampm === '下午' && hour <= 5)
310
- ampm = '下午';
311
- else
312
- ampm = '晚上';
313
- return year + '.' + month.pad(2, { character: '0', position: 'left' }) + '.' + day.pad(2, { character: '0', position: 'left' }) + ' ' +
314
- ampm + ' ' + hour.toString().pad(2, { character: '0', position: 'left' }) + ':' + minute + ':' + second;
315
- });
293
+ const [ampm, hour] = (() => {
294
+ let hour = this.getHours();
295
+ if (hour <= 6)
296
+ return ['凌晨', hour];
297
+ if (hour <= 8)
298
+ return ['清晨', hour];
299
+ if (hour <= 9)
300
+ return ['早上', hour];
301
+ if (hour <= 10)
302
+ return ['上午', hour];
303
+ if (hour <= 12)
304
+ return ['中午', hour];
305
+ hour -= 12;
306
+ if (hour <= 5)
307
+ return ['下午', hour];
308
+ if (hour <= 10)
309
+ return ['晚上', hour];
310
+ return ['深夜', hour];
311
+ })();
312
+ return '' +
313
+ // year.month.date
314
+ `${this.getFullYear()}.${String(this.getMonth() + 1).pad(2, { character: '0', position: 'left' })}.${String(this.getDate()).pad(2, { character: '0', position: 'left' })} ` +
315
+ // 上午 10:03:02
316
+ `${ampm} ${String(hour).pad(2, { character: '0', position: 'left' })}:${String(this.getMinutes()).pad(2, { character: '0', position: 'left' })}:${String(this.getSeconds()).pad(2, { character: '0', position: 'left' })}`;
316
317
  },
317
318
  to_date_str() {
318
319
  return this.to_str().split(' ')[0];
319
320
  },
320
321
  to_time_str() {
321
322
  const [, ampm, time] = this.to_str().split(' ');
322
- return ampm + ' ' + time;
323
+ return `${ampm} ${time}`;
323
324
  },
324
325
  }));
325
326
  // ------------------------------------ Number.prototype