ranuts 0.1.0-alpha → 0.1.0-alpha-21
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/LICENSE +21 -0
- package/dist/build/build.es.d.ts +2 -0
- package/dist/build/build.umd.d.ts +2 -0
- package/dist/build/build.umd.ml.d.ts +2 -0
- package/dist/build/build.umd.node.d.ts +2 -0
- package/dist/build/build.umd.react.d.ts +2 -0
- package/dist/build/build.umd.utils.d.ts +2 -0
- package/dist/build/build.umd.wasm.d.ts +2 -0
- package/dist/color-BgjAdNyp.js +82296 -0
- package/dist/examples/clone-deep-example.d.ts +1 -0
- package/dist/examples/is-equal-example.d.ts +1 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.js +151 -84
- package/dist/plugins/vite-plugins-banner.d.ts +2 -0
- package/dist/reactify-Z-V9Vblb.js +83 -0
- package/dist/src/arithmetic/index.d.ts +186 -0
- package/dist/src/cache/expires.d.ts +1 -0
- package/dist/src/ml/index.d.ts +2 -0
- package/dist/src/ml/index.js +1243 -0
- package/dist/src/ml/ocr.d.ts +11 -0
- package/dist/src/node/appendFile.d.ts +7 -0
- package/dist/src/node/body.d.ts +9 -0
- package/dist/src/node/color.d.ts +7 -0
- package/dist/src/node/command.d.ts +8 -0
- package/dist/src/node/ctx2req.d.ts +5 -0
- package/dist/src/node/fileInfo.d.ts +7 -0
- package/dist/src/node/fs.d.ts +7 -0
- package/dist/src/node/get.d.ts +10 -0
- package/dist/src/node/getIPAdress.d.ts +1 -0
- package/dist/src/node/index.d.ts +25 -0
- package/dist/src/node/index.js +54 -0
- package/dist/src/node/isColorSupported.d.ts +2 -0
- package/dist/src/node/paresUrl.d.ts +19 -0
- package/dist/src/node/readDir.d.ts +6 -0
- package/dist/src/node/readFile.d.ts +9 -0
- package/dist/src/node/router.d.ts +42 -0
- package/dist/src/node/send.d.ts +7 -0
- package/dist/src/node/server.d.ts +18 -0
- package/dist/src/node/startTask.d.ts +2 -0
- package/dist/src/node/stream.d.ts +15 -0
- package/dist/src/node/taskEnd.d.ts +2 -0
- package/dist/src/node/traverse.d.ts +17 -0
- package/dist/src/node/watchFile.d.ts +8 -0
- package/dist/src/node/websocket.d.ts +57 -0
- package/dist/src/node/writeFile.d.ts +8 -0
- package/dist/src/node/ws.d.ts +8 -0
- package/dist/src/optimize/index.d.ts +36 -0
- package/dist/src/optimize/promise.d.ts +0 -0
- package/dist/src/ran/commit.d.ts +0 -0
- package/dist/src/ran/dom.d.ts +0 -0
- package/dist/src/ran/hooks.d.ts +0 -0
- package/dist/src/ran/index.d.ts +20 -0
- package/dist/src/ran/min.d.ts +32 -0
- package/dist/src/ran/reconcile.d.ts +0 -0
- package/dist/src/ran/schedule.d.ts +0 -0
- package/dist/src/react/index.d.ts +2 -0
- package/dist/src/react/index.js +4 -0
- package/dist/src/react/reactify.d.ts +2 -0
- package/dist/src/sort/bubble.d.ts +7 -0
- package/dist/src/sort/bucket.d.ts +7 -0
- package/dist/src/sort/count.d.ts +7 -0
- package/dist/src/sort/heap.d.ts +7 -0
- package/dist/src/sort/index.d.ts +0 -0
- package/dist/src/sort/insert.d.ts +7 -0
- package/dist/src/sort/merge.d.ts +7 -0
- package/dist/src/sort/quick.d.ts +7 -0
- package/dist/src/sort/radix.d.ts +7 -0
- package/dist/src/sort/randomArray.d.ts +9 -0
- package/dist/src/sort/select.d.ts +7 -0
- package/dist/src/sort/shell.d.ts +7 -0
- package/dist/src/utils/audioRecorder.d.ts +16 -0
- package/dist/src/utils/behavior.d.ts +15 -0
- package/dist/src/utils/bom.d.ts +230 -0
- package/dist/src/utils/color.d.ts +71 -0
- package/dist/src/utils/compose.d.ts +10 -0
- package/dist/src/utils/console.d.ts +1 -0
- package/dist/src/utils/debounce.d.ts +7 -0
- package/dist/src/utils/device.d.ts +25 -0
- package/dist/src/utils/dom.d.ts +105 -0
- package/dist/src/utils/error.d.ts +1 -0
- package/dist/src/utils/func.d.ts +1 -0
- package/dist/src/utils/img.d.ts +16 -0
- package/dist/src/utils/index.d.ts +35 -0
- package/dist/src/utils/index.js +4548 -0
- package/dist/src/utils/memoize.d.ts +7 -0
- package/dist/src/utils/mimeType.d.ts +9 -0
- package/dist/src/utils/monitor.d.ts +38 -0
- package/dist/src/utils/network.d.ts +39 -0
- package/dist/src/utils/noop.d.ts +2 -0
- package/dist/src/utils/number.d.ts +45 -0
- package/dist/src/utils/obj.d.ts +83 -0
- package/dist/src/utils/performance.d.ts +21 -0
- package/dist/src/utils/queue.d.ts +33 -0
- package/dist/src/utils/report.d.ts +8 -0
- package/dist/src/utils/request.d.ts +17 -0
- package/dist/src/utils/script.d.ts +7 -0
- package/dist/src/utils/signal.d.ts +6 -0
- package/dist/src/utils/storage.d.ts +2 -0
- package/dist/src/utils/str.d.ts +212 -0
- package/dist/src/utils/subscribe.d.ts +46 -0
- package/dist/src/utils/throttle.d.ts +15 -0
- package/dist/src/utils/time.d.ts +20 -0
- package/dist/src/utils/totp/sha/common.d.ts +151 -0
- package/dist/src/utils/totp/sha/converters.d.ts +88 -0
- package/dist/src/utils/totp/sha/custom_types.d.ts +60 -0
- package/dist/src/utils/totp/sha/primitives_32.d.ts +98 -0
- package/dist/src/utils/totp/sha/primitives_64.d.ts +116 -0
- package/dist/src/utils/totp/sha/sha.d.ts +103 -0
- package/dist/src/utils/totp/sha/sha1.d.ts +18 -0
- package/dist/src/utils/totp/sha/sha256.d.ts +20 -0
- package/dist/src/utils/totp/sha/sha3.d.ts +53 -0
- package/dist/src/utils/totp/sha/sha512.d.ts +21 -0
- package/dist/src/utils/totp/totp.d.ts +23 -0
- package/dist/src/utils/visual/application.d.ts +14 -0
- package/dist/src/utils/visual/demo/index.d.ts +1 -0
- package/dist/src/utils/visual/demo/sankey.d.ts +2 -0
- package/dist/src/utils/visual/enums.d.ts +27 -0
- package/dist/src/utils/visual/event/boundary.d.ts +22 -0
- package/dist/src/utils/visual/event/event.d.ts +14 -0
- package/dist/src/utils/visual/event/index.d.ts +6 -0
- package/dist/src/utils/visual/event/types.d.ts +32 -0
- package/dist/src/utils/visual/graphics/graphics.d.ts +81 -0
- package/dist/src/utils/visual/graphics/graphicsData.d.ts +13 -0
- package/dist/src/utils/visual/graphics/graphicsGeometry.d.ts +35 -0
- package/dist/src/utils/visual/graphics/index.d.ts +4 -0
- package/dist/src/utils/visual/index.d.ts +7 -0
- package/dist/src/utils/visual/math/bezier.d.ts +2 -0
- package/dist/src/utils/visual/math/enums.d.ts +3 -0
- package/dist/src/utils/visual/math/index.d.ts +5 -0
- package/dist/src/utils/visual/math/matrix.d.ts +113 -0
- package/dist/src/utils/visual/math/transform.d.ts +29 -0
- package/dist/src/utils/visual/render/batchRenderer.d.ts +72 -0
- package/dist/src/utils/visual/render/canvasRenderer.d.ts +10 -0
- package/dist/src/utils/visual/render/index.d.ts +3 -0
- package/dist/src/utils/visual/render/render.d.ts +15 -0
- package/dist/src/utils/visual/render/utils/batch/index.d.ts +90 -0
- package/dist/src/utils/visual/render/utils/float.d.ts +63 -0
- package/dist/src/utils/visual/render/utils/index.d.ts +3 -0
- package/dist/src/utils/visual/render/utils/verticy.d.ts +13 -0
- package/dist/src/utils/visual/render/utils/webgl/batchPool.d.ts +28 -0
- package/dist/src/utils/visual/render/utils/webgl/initShader.d.ts +2 -0
- package/dist/src/utils/visual/render/utils/webgl/shaders.d.ts +2 -0
- package/dist/src/utils/visual/render/utils/webgpu/shaders.d.ts +8 -0
- package/dist/src/utils/visual/render/webGPURenderer.d.ts +49 -0
- package/dist/src/utils/visual/render/webGlRenderer.d.ts +17 -0
- package/dist/src/utils/visual/shape/circle.d.ts +11 -0
- package/dist/src/utils/visual/shape/ellipse.d.ts +12 -0
- package/dist/src/utils/visual/shape/index.d.ts +7 -0
- package/dist/src/utils/visual/shape/polygon.d.ts +11 -0
- package/dist/src/utils/visual/shape/rectangle.d.ts +12 -0
- package/dist/src/utils/visual/shape/roundedRectangle.d.ts +13 -0
- package/dist/src/utils/visual/shape/shape.d.ts +6 -0
- package/dist/src/utils/visual/style/fill.d.ts +8 -0
- package/dist/src/utils/visual/style/index.d.ts +3 -0
- package/dist/src/utils/visual/style/line.d.ts +10 -0
- package/dist/src/utils/visual/types.d.ts +17 -0
- package/dist/src/utils/visual/vertex/container.d.ts +73 -0
- package/dist/src/utils/visual/vertex/index.d.ts +5 -0
- package/dist/src/utils/visual/vertex/point.d.ts +18 -0
- package/dist/src/utils/visual/vertex/vertex.d.ts +36 -0
- package/dist/src/vnode/chainDom.d.ts +47 -0
- package/dist/src/vnode/h.d.ts +6 -0
- package/dist/src/vnode/hooks.d.ts +23 -0
- package/dist/src/vnode/htmlDomApi.d.ts +33 -0
- package/dist/src/vnode/init.d.ts +2 -0
- package/dist/src/vnode/is.d.ts +5 -0
- package/dist/src/vnode/modules/attributes.d.ts +8 -0
- package/dist/src/vnode/modules/class.d.ts +8 -0
- package/dist/src/vnode/modules/index.d.ts +3 -0
- package/dist/src/vnode/modules/listeners.d.ts +12 -0
- package/dist/src/vnode/modules/props.d.ts +8 -0
- package/dist/src/vnode/modules/style.d.ts +14 -0
- package/dist/src/vnode/vnode.d.ts +31 -0
- package/dist/src/wasm/index.d.ts +2 -0
- package/dist/src/wasm/index.js +346 -0
- package/dist/src/wasm/word.d.ts +17 -0
- package/dist/src/wicket/bridge.d.ts +4 -0
- package/dist/src/wicket/index.d.ts +29 -0
- package/dist/test/arithmetic.test.d.ts +1 -0
- package/dist/test/cloneDeep.test.d.ts +1 -0
- package/dist/test/encodeUrl.test.d.ts +1 -0
- package/dist/test/escapeHtml.test.d.ts +1 -0
- package/dist/test/is-equal.test.d.ts +1 -0
- package/dist/test/mimeType.test.d.ts +1 -0
- package/dist/test/server.test.d.ts +1 -0
- package/dist/test/sort.test.d.ts +1 -0
- package/dist/test/status.test.d.ts +1 -0
- package/dist/test/totp.test.d.ts +1 -0
- package/dist/test/utils/compose.test.d.ts +1 -0
- package/dist/test/utils/mergeObj.test.d.ts +1 -0
- package/dist/test/utils/ocr.test.d.ts +1 -0
- package/dist/test/visual/math.test.d.ts +1 -0
- package/dist/test/vnode/index.d.ts +1 -0
- package/dist/test/vnode/server.d.ts +2 -0
- package/dist/test/vnode/vnode.d.ts +1 -0
- package/dist/test/websocket.test.d.ts +1 -0
- package/dist/test/writeFile.test.d.ts +1 -0
- package/dist/umd/index.umd.cjs +1 -0
- package/dist/umd/ml/ml.umd.cjs +1 -0
- package/dist/umd/node/node.umd.cjs +1 -0
- package/dist/umd/react/react.umd.cjs +1 -0
- package/dist/umd/utils/utils.umd.cjs +1 -0
- package/dist/umd/wasm/wasm.umd.cjs +1 -0
- package/dist/vite.config.d.ts +11 -0
- package/dist/ws-D7Jt2dzL.js +703 -0
- package/package.json +70 -13
- package/readme.md +91 -0
- package/typings.d.ts +28 -0
- package/dist/index.js.map +0 -1
- package/dist/index.umd.cjs +0 -2
- package/dist/index.umd.cjs.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BuildOptions, UserConfig } from 'vite';
|
|
2
|
+
export declare const umd: BuildOptions;
|
|
3
|
+
export declare const umdUtil: BuildOptions;
|
|
4
|
+
export declare const umdWasm: BuildOptions;
|
|
5
|
+
export declare const umdReact: BuildOptions;
|
|
6
|
+
export declare const umdNode: BuildOptions;
|
|
7
|
+
export declare const umdMl: BuildOptions;
|
|
8
|
+
export declare const es: BuildOptions;
|
|
9
|
+
export declare const viteConfig: UserConfig;
|
|
10
|
+
declare const _default: UserConfig;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
var _a;
|
|
5
|
+
import { Socket } from "node:net";
|
|
6
|
+
import http from "node:http";
|
|
7
|
+
import os from "node:os";
|
|
8
|
+
import fs, { createReadStream, createWriteStream, stat, readdir, readdirSync, statSync } from "node:fs";
|
|
9
|
+
import { F as FMT, w as strParse, u as setMime, h as getMime } from "./color-BgjAdNyp.js";
|
|
10
|
+
import tty from "node:tty";
|
|
11
|
+
import process$1, { hrtime } from "node:process";
|
|
12
|
+
import childProcess from "node:child_process";
|
|
13
|
+
import readline from "node:readline";
|
|
14
|
+
import https from "node:https";
|
|
15
|
+
import path, { resolve, join } from "node:path";
|
|
16
|
+
import { promisify } from "node:util";
|
|
17
|
+
import { Buffer as Buffer$1 } from "node:buffer";
|
|
18
|
+
import crypto from "node:crypto";
|
|
19
|
+
function ipv4() {
|
|
20
|
+
const interfaces = os.networkInterfaces();
|
|
21
|
+
for (const name in interfaces) {
|
|
22
|
+
const iface = interfaces[name];
|
|
23
|
+
if (iface) {
|
|
24
|
+
for (let i = 0; i < iface.length; i++) {
|
|
25
|
+
const alias = iface[i];
|
|
26
|
+
if (alias.family === "IPv4" && alias.address !== "127.0.0.1" && !alias.internal) {
|
|
27
|
+
return alias.address;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class Server {
|
|
34
|
+
constructor() {
|
|
35
|
+
__publicField(this, "middleware");
|
|
36
|
+
__publicField(this, "ctx");
|
|
37
|
+
const req = new http.IncomingMessage(new Socket());
|
|
38
|
+
const res = new http.ServerResponse(req);
|
|
39
|
+
this.ctx = {
|
|
40
|
+
ipv4,
|
|
41
|
+
req,
|
|
42
|
+
res
|
|
43
|
+
};
|
|
44
|
+
this.middleware = [];
|
|
45
|
+
}
|
|
46
|
+
use(handle) {
|
|
47
|
+
if (!handle) {
|
|
48
|
+
throw new Error("the use function has an incorrect argument");
|
|
49
|
+
}
|
|
50
|
+
this.middleware.push(handle);
|
|
51
|
+
}
|
|
52
|
+
listen(...args) {
|
|
53
|
+
const fn = compose(this.middleware);
|
|
54
|
+
const server = http.createServer((req, res) => {
|
|
55
|
+
this.ctx.req = req;
|
|
56
|
+
this.ctx.res = res;
|
|
57
|
+
fn(this.ctx).then().catch(onerror);
|
|
58
|
+
});
|
|
59
|
+
return server.listen(...args);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function onerror(err) {
|
|
63
|
+
console.error(err.stack || err.toString());
|
|
64
|
+
}
|
|
65
|
+
function compose(middleware) {
|
|
66
|
+
if (!Array.isArray(middleware)) throw new TypeError("Middleware stack must be an array!");
|
|
67
|
+
for (const fn of middleware) {
|
|
68
|
+
if (typeof fn !== "function") throw new TypeError("Middleware must be composed of functions!");
|
|
69
|
+
}
|
|
70
|
+
return function(ctx, next) {
|
|
71
|
+
let index = -1;
|
|
72
|
+
function dispatch(i) {
|
|
73
|
+
if (i <= index) return Promise.reject(new Error("next() called multiple times"));
|
|
74
|
+
index = i;
|
|
75
|
+
let fn = middleware[i];
|
|
76
|
+
if (i === middleware.length && next) fn = next;
|
|
77
|
+
if (!fn) return Promise.resolve();
|
|
78
|
+
try {
|
|
79
|
+
return Promise.resolve(fn(ctx, dispatch.bind(null, i + 1)));
|
|
80
|
+
} catch (err) {
|
|
81
|
+
return Promise.reject(err);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return dispatch(0);
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const readFile = (path2, format = "utf-8") => {
|
|
88
|
+
const controller = new AbortController();
|
|
89
|
+
const signal = controller.signal;
|
|
90
|
+
const result = new Promise((resolve2, reject) => {
|
|
91
|
+
fs.readFile(path2, { encoding: format, signal }, (err, data) => {
|
|
92
|
+
if (err) {
|
|
93
|
+
controller.abort();
|
|
94
|
+
reject({ success: false, _identification: false, data: err });
|
|
95
|
+
} else {
|
|
96
|
+
resolve2({ success: true, _identification: true, data });
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
result.abort = controller.abort;
|
|
101
|
+
return result;
|
|
102
|
+
};
|
|
103
|
+
const appendFile = (path2, content) => new Promise((resolve2, reject) => {
|
|
104
|
+
fs.appendFile(path2, content, (err) => {
|
|
105
|
+
err ? reject({ success: false, _identification: false, data: err }) : readFile(path2).then((result) => {
|
|
106
|
+
resolve2(result);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
const isColorSupported = ((_a = process$1) == null ? void 0 : _a.env) && !("NO_COLOR" in process$1.env || process$1.argv.includes("--no-color")) && ("FORCE_COLOR" in process$1.env || process$1.argv.includes("--color") || process$1.platform === "win32" || tty.isatty(1) && process$1.env.TERM !== "dumb" || "CI" in process$1.env);
|
|
111
|
+
const OPEN = 0;
|
|
112
|
+
const CLOSE = 1;
|
|
113
|
+
const formatter = (open, close, replace = open) => (input) => {
|
|
114
|
+
const string = "" + input;
|
|
115
|
+
const index = string.indexOf(close, open.length);
|
|
116
|
+
return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
|
|
117
|
+
};
|
|
118
|
+
const replaceClose = (string, close, replace, index) => {
|
|
119
|
+
const start = string.substring(0, index) + replace;
|
|
120
|
+
const end = string.substring(index + close.length);
|
|
121
|
+
const nextIndex = end.indexOf(close);
|
|
122
|
+
return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end;
|
|
123
|
+
};
|
|
124
|
+
const colors = (enabled = isColorSupported) => {
|
|
125
|
+
const result = {};
|
|
126
|
+
Object.keys(FMT).forEach((key) => result[key] = enabled ? formatter(FMT[key][OPEN], FMT[key][CLOSE]) : String);
|
|
127
|
+
return result;
|
|
128
|
+
};
|
|
129
|
+
const createColors = (enabled = isColorSupported) => ({
|
|
130
|
+
isColorSupported: enabled,
|
|
131
|
+
reset: enabled ? (s) => `${FMT.reset[OPEN]}${s}${FMT.reset[CLOSE]}` : String,
|
|
132
|
+
bold: enabled ? formatter(FMT.bold[OPEN], FMT.bold[CLOSE], `${FMT.bold[CLOSE]}${FMT.bold[OPEN]}`) : String,
|
|
133
|
+
dim: enabled ? formatter(FMT.dim[OPEN], FMT.dim[CLOSE], `${FMT.dim[CLOSE]}${FMT.dim[OPEN]}`) : String
|
|
134
|
+
});
|
|
135
|
+
const color = Object.assign({}, colors(), createColors());
|
|
136
|
+
const bodyMiddleware = (options = {}) => {
|
|
137
|
+
const { uploadDir = ".", encoding = "", json = true } = options;
|
|
138
|
+
return (ctx, next) => {
|
|
139
|
+
var _a2;
|
|
140
|
+
const { req, res } = ctx;
|
|
141
|
+
const { url, method } = req;
|
|
142
|
+
const [path2 = "", search = ""] = (url == null ? void 0 : url.split("?")) || [];
|
|
143
|
+
const query = search ? new URLSearchParams(search) : {};
|
|
144
|
+
if (!ctx.request) {
|
|
145
|
+
ctx.request = {};
|
|
146
|
+
}
|
|
147
|
+
ctx.request.method = method;
|
|
148
|
+
ctx.request.path = path2;
|
|
149
|
+
ctx.request.url = url;
|
|
150
|
+
ctx.request.query = query;
|
|
151
|
+
const contentType = req.headers["content-type"];
|
|
152
|
+
if (contentType === "application/json") {
|
|
153
|
+
if (encoding) {
|
|
154
|
+
req.setEncoding(encoding);
|
|
155
|
+
} else {
|
|
156
|
+
req.setEncoding("utf-8");
|
|
157
|
+
}
|
|
158
|
+
let body = "";
|
|
159
|
+
req.on("data", (data) => {
|
|
160
|
+
body += data;
|
|
161
|
+
});
|
|
162
|
+
req.on("end", () => {
|
|
163
|
+
res.setHeader("content-type", "application/json;charset=UTF-8");
|
|
164
|
+
try {
|
|
165
|
+
ctx.request.body = json ? JSON.parse(body) : body;
|
|
166
|
+
} catch (_error) {
|
|
167
|
+
ctx.request.body = body;
|
|
168
|
+
}
|
|
169
|
+
next();
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (contentType == null ? void 0 : contentType.includes("multipart/form-data;")) {
|
|
173
|
+
const [__, boundaryStr] = ((_a2 = req.headers["content-type"]) == null ? void 0 : _a2.split(";").map((item) => item.trim())) || [];
|
|
174
|
+
const [_, boundary] = boundaryStr.split("=");
|
|
175
|
+
if (encoding) {
|
|
176
|
+
req.setEncoding(encoding);
|
|
177
|
+
} else {
|
|
178
|
+
req.setEncoding("binary");
|
|
179
|
+
}
|
|
180
|
+
let body = "";
|
|
181
|
+
req.on("data", (data) => {
|
|
182
|
+
body += data;
|
|
183
|
+
});
|
|
184
|
+
req.on("end", () => {
|
|
185
|
+
const payload = {};
|
|
186
|
+
body.split("\r\n").slice(0, 4).forEach((item) => {
|
|
187
|
+
Object.assign(payload, strParse(item, ";", /=|:/));
|
|
188
|
+
});
|
|
189
|
+
const fileContentType = payload["Content-Type"];
|
|
190
|
+
const fileName = Buffer.from(payload["filename"], "latin1").toString("utf8");
|
|
191
|
+
const fileDataIndex = body.indexOf(fileContentType) + fileContentType.length;
|
|
192
|
+
const fileData = body.substring(fileDataIndex).replace(/^\s+/, "");
|
|
193
|
+
const finalData = fileData.substring(0, fileData.indexOf(`--${boundary}--`));
|
|
194
|
+
fs.writeFile(`${uploadDir}/${fileName}`, finalData, { encoding: "binary" }, (error) => {
|
|
195
|
+
if (!error) {
|
|
196
|
+
res.setHeader("content-type", "application/json;charset=UTF-8");
|
|
197
|
+
next();
|
|
198
|
+
} else {
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
const runCommand = (command, args) => {
|
|
207
|
+
return new Promise((resolve2, reject) => {
|
|
208
|
+
const executedCommand = childProcess.spawn(command, args, {
|
|
209
|
+
stdio: "inherit",
|
|
210
|
+
// 子进程继承父进程的 stdio(标准输入/输出)流。这意味着子进程可以使用父进程的 stdin(标准输入流)和 stdout(标准输出流)。
|
|
211
|
+
shell: true
|
|
212
|
+
// 指示 spawn 方法在 shell 中执行命令。
|
|
213
|
+
});
|
|
214
|
+
executedCommand.on("error", (e) => reject(e));
|
|
215
|
+
executedCommand.on("exit", (c) => c === 0 ? resolve2() : reject(new Error(`Command exited with code ${c}`)));
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
const prompt = ({ message, stream = process.stderr, defaultResponse = "Y" }) => {
|
|
219
|
+
const rl = readline.createInterface({
|
|
220
|
+
input: process.stdin,
|
|
221
|
+
output: stream
|
|
222
|
+
});
|
|
223
|
+
return new Promise((resolve2) => {
|
|
224
|
+
rl.question(`${message} `, (answer) => {
|
|
225
|
+
rl.close();
|
|
226
|
+
const response = (answer || defaultResponse).toLowerCase();
|
|
227
|
+
response === "y" || response === "yes" ? resolve2(true) : resolve2(false);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
const noop = () => {
|
|
232
|
+
};
|
|
233
|
+
const PARAM_LENGTH = 3;
|
|
234
|
+
function noCallbackHandler(ctx, connectMiddleware, next) {
|
|
235
|
+
connectMiddleware(ctx.req, ctx.res, noop);
|
|
236
|
+
return next();
|
|
237
|
+
}
|
|
238
|
+
function withCallbackHandler(ctx, connectMiddleware, next) {
|
|
239
|
+
return new Promise((resolve2, reject) => {
|
|
240
|
+
connectMiddleware(ctx.req, ctx.res, (err) => {
|
|
241
|
+
err ? reject(err) : resolve2(next());
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
function connect(connectMiddleware) {
|
|
246
|
+
const handler = connectMiddleware.length < PARAM_LENGTH ? noCallbackHandler : withCallbackHandler;
|
|
247
|
+
return function connect2(ctx, next) {
|
|
248
|
+
return handler(ctx, connectMiddleware, next);
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
const queryFileInfo = (path2) => new Promise((resolve2, reject) => {
|
|
252
|
+
fs.stat(path2, (err, data) => {
|
|
253
|
+
err ? reject({ success: false, _identification: false, data: err }) : resolve2({ success: true, _identification: true, data });
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
const get = ({ url }) => {
|
|
257
|
+
return new Promise((resolve2, reject) => {
|
|
258
|
+
https.get(url, (res) => {
|
|
259
|
+
const list = [];
|
|
260
|
+
res.on("data", (chunk) => {
|
|
261
|
+
list.push(chunk);
|
|
262
|
+
});
|
|
263
|
+
res.on("end", () => {
|
|
264
|
+
const { data = [] } = JSON.parse(Buffer.concat(list).toString());
|
|
265
|
+
data.forEach((item) => {
|
|
266
|
+
});
|
|
267
|
+
resolve2({ success: true, data, message: "request success" });
|
|
268
|
+
});
|
|
269
|
+
}).on("error", (err) => {
|
|
270
|
+
console.log("Error: ", err.message);
|
|
271
|
+
reject({ success: false, data: err, message: err.message });
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
const getIPAdress = () => {
|
|
276
|
+
const interfaces = os.networkInterfaces();
|
|
277
|
+
for (const name in interfaces) {
|
|
278
|
+
const iface = interfaces[name];
|
|
279
|
+
for (let i = 0; i < iface.length; i++) {
|
|
280
|
+
const alias = iface[i];
|
|
281
|
+
if (alias.family === "IPv4" && alias.address !== "127.0.0.1" && !alias.internal) {
|
|
282
|
+
return alias.address;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
function paresUrl(req) {
|
|
288
|
+
const url = req.url;
|
|
289
|
+
if (url === void 0) return;
|
|
290
|
+
let obj = req._parsedUrl;
|
|
291
|
+
if (obj && obj._raw === url) return obj;
|
|
292
|
+
obj = {};
|
|
293
|
+
obj.query = obj.search = void 0;
|
|
294
|
+
obj.href = obj.path = obj.pathname = url;
|
|
295
|
+
const idx = url.indexOf("?", 1);
|
|
296
|
+
if (idx !== -1) {
|
|
297
|
+
obj.search = url.substring(idx);
|
|
298
|
+
obj.query = obj.search.substring(1);
|
|
299
|
+
obj.pathname = url.substring(0, idx);
|
|
300
|
+
}
|
|
301
|
+
obj._raw = url;
|
|
302
|
+
return req._parsedUrl = obj;
|
|
303
|
+
}
|
|
304
|
+
const readDir = (options) => {
|
|
305
|
+
const { dirPath } = options;
|
|
306
|
+
try {
|
|
307
|
+
return fs.readdirSync(dirPath);
|
|
308
|
+
} catch (error) {
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
class Router {
|
|
313
|
+
constructor() {
|
|
314
|
+
__publicField(this, "ctx");
|
|
315
|
+
__publicField(this, "map");
|
|
316
|
+
__publicField(this, "methods");
|
|
317
|
+
__publicField(this, "paths");
|
|
318
|
+
this.map = /* @__PURE__ */ new Map();
|
|
319
|
+
this.methods = /* @__PURE__ */ new Set();
|
|
320
|
+
this.paths = /* @__PURE__ */ new Set();
|
|
321
|
+
}
|
|
322
|
+
get(url, handler) {
|
|
323
|
+
this.addHandlerToMap("GET")(url, handler);
|
|
324
|
+
}
|
|
325
|
+
post(url, handler) {
|
|
326
|
+
this.addHandlerToMap("POST")(url, handler);
|
|
327
|
+
}
|
|
328
|
+
put(url, handler) {
|
|
329
|
+
this.addHandlerToMap("PUT")(url, handler);
|
|
330
|
+
}
|
|
331
|
+
patch(url, handler) {
|
|
332
|
+
this.addHandlerToMap("PATCH")(url, handler);
|
|
333
|
+
}
|
|
334
|
+
del(url, handler) {
|
|
335
|
+
this.addHandlerToMap("DELETE")(url, handler);
|
|
336
|
+
}
|
|
337
|
+
head(url, handler) {
|
|
338
|
+
this.addHandlerToMap("HEAD")(url, handler);
|
|
339
|
+
}
|
|
340
|
+
options(url, handler) {
|
|
341
|
+
this.addHandlerToMap("OPTIONS")(url, handler);
|
|
342
|
+
}
|
|
343
|
+
addHandlerToMap(method) {
|
|
344
|
+
this.methods.add(method);
|
|
345
|
+
return (url, handler) => {
|
|
346
|
+
this.paths.add(url);
|
|
347
|
+
let path2 = this.map.get(method);
|
|
348
|
+
if (!path2) {
|
|
349
|
+
path2 = /* @__PURE__ */ new Map();
|
|
350
|
+
this.map.set(method, path2);
|
|
351
|
+
}
|
|
352
|
+
path2.set(url, handler);
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
routes() {
|
|
356
|
+
return (ctx, next) => {
|
|
357
|
+
this.ctx = ctx;
|
|
358
|
+
const { path: path2, method } = ctx.request;
|
|
359
|
+
const pathMap = this.map.get(method);
|
|
360
|
+
const handler = pathMap ? pathMap.get(path2) : next;
|
|
361
|
+
handler && handler(ctx, next);
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
allowedMethods() {
|
|
365
|
+
return (ctx) => {
|
|
366
|
+
const { res } = ctx;
|
|
367
|
+
const { path: path2, method } = ctx.request;
|
|
368
|
+
if (!this.methods.has(method) && this.paths.has(path2)) {
|
|
369
|
+
res.statusCode = 405;
|
|
370
|
+
res.end("405, method is not allowed");
|
|
371
|
+
}
|
|
372
|
+
if (this.methods.has(method) && !this.paths.has(path2)) {
|
|
373
|
+
res.statusCode = 404;
|
|
374
|
+
res.end("404, the request address does not exist");
|
|
375
|
+
}
|
|
376
|
+
if (!this.methods.has(method) && !this.paths.has(path2)) {
|
|
377
|
+
res.statusCode = 501;
|
|
378
|
+
res.end("501, not support the functionality needed to satisfy the request");
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const staticMiddleware = (option = {}) => {
|
|
384
|
+
const { pathname, fileTypes = {} } = option;
|
|
385
|
+
return async (ctx, next) => {
|
|
386
|
+
try {
|
|
387
|
+
const { req, res } = ctx;
|
|
388
|
+
if (req.url) {
|
|
389
|
+
const htmlContentType = "text/html";
|
|
390
|
+
const dirPath = pathname ? pathname : process.cwd();
|
|
391
|
+
const root = path.normalize(path.resolve(dirPath));
|
|
392
|
+
const extension = path.extname(req.url).slice(1);
|
|
393
|
+
Object.keys(fileTypes).forEach((key) => setMime(key, fileTypes[key]));
|
|
394
|
+
const type = extension ? getMime(extension) : htmlContentType;
|
|
395
|
+
const supportedExtension = Boolean(type);
|
|
396
|
+
if (!supportedExtension) {
|
|
397
|
+
res.writeHead(404, { "Content-Type": "text/html" });
|
|
398
|
+
res.end("404: File not found");
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
let fileName = req.url;
|
|
402
|
+
if (req.url === "/") {
|
|
403
|
+
fileName = "index.html";
|
|
404
|
+
} else if (!extension) {
|
|
405
|
+
try {
|
|
406
|
+
fs.accessSync(path.join(root, req.url + ".html"), fs.constants.F_OK);
|
|
407
|
+
fileName = req.url + ".html";
|
|
408
|
+
} catch (_e) {
|
|
409
|
+
fileName = path.join(req.url, "index.html");
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
const filePath = path.join(root, fileName);
|
|
413
|
+
const isPathUnderRoot = path.normalize(path.resolve(filePath)).startsWith(root);
|
|
414
|
+
if (!isPathUnderRoot) {
|
|
415
|
+
res.writeHead(404, { "Content-Type": "text/html" });
|
|
416
|
+
res.end("404: File not found");
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
fs.readFile(filePath, (err, data) => {
|
|
420
|
+
if (err) {
|
|
421
|
+
res.writeHead(404, { "Content-Type": "text/html" });
|
|
422
|
+
res.end("404: File not found");
|
|
423
|
+
} else {
|
|
424
|
+
res.writeHead(200, { "Content-Type": type });
|
|
425
|
+
res.end(data);
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
} else {
|
|
429
|
+
console.log("request has not url");
|
|
430
|
+
}
|
|
431
|
+
await next();
|
|
432
|
+
} catch (_error) {
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
};
|
|
436
|
+
const startTask = () => {
|
|
437
|
+
if (typeof window !== "undefined") {
|
|
438
|
+
const startTime = window.performance.now();
|
|
439
|
+
return Symbol.for(`${startTime}`);
|
|
440
|
+
}
|
|
441
|
+
if (typeof process !== "undefined") {
|
|
442
|
+
const startTime = hrtime.bigint();
|
|
443
|
+
return Symbol.for(`${startTime}`);
|
|
444
|
+
}
|
|
445
|
+
return Symbol.for(`${Date.now()}`);
|
|
446
|
+
};
|
|
447
|
+
const readStream = (option) => {
|
|
448
|
+
const { path: path2 } = option;
|
|
449
|
+
if (path2) {
|
|
450
|
+
const stream = createReadStream(path2);
|
|
451
|
+
return stream;
|
|
452
|
+
}
|
|
453
|
+
throw new Error("path is not defined");
|
|
454
|
+
};
|
|
455
|
+
const writeStream = (option) => {
|
|
456
|
+
const { path: path2 } = option;
|
|
457
|
+
if (path2) {
|
|
458
|
+
const stream = createWriteStream(path2);
|
|
459
|
+
return stream;
|
|
460
|
+
}
|
|
461
|
+
throw new Error("path is not defined");
|
|
462
|
+
};
|
|
463
|
+
const taskEnd = (symbol) => {
|
|
464
|
+
const startTime = Symbol.keyFor(symbol);
|
|
465
|
+
if (typeof window !== "undefined" && startTime) {
|
|
466
|
+
return window.performance.now() - Number(startTime);
|
|
467
|
+
}
|
|
468
|
+
if (typeof process !== "undefined" && startTime) {
|
|
469
|
+
return hrtime.bigint() - BigInt(startTime);
|
|
470
|
+
}
|
|
471
|
+
return Date.now() - Number(startTime);
|
|
472
|
+
};
|
|
473
|
+
const toStats = promisify(stat);
|
|
474
|
+
const toRead = promisify(readdir);
|
|
475
|
+
async function traverse(dir, callback, pre = "") {
|
|
476
|
+
dir = resolve(".", dir);
|
|
477
|
+
await toRead(dir).then((arr) => {
|
|
478
|
+
return Promise.all(
|
|
479
|
+
arr.map((str) => {
|
|
480
|
+
const abs = join(dir, str);
|
|
481
|
+
return toStats(abs).then((stats) => {
|
|
482
|
+
return stats.isDirectory() ? traverse(abs, callback, join(pre, str)) : callback(join(pre, str), abs, stats);
|
|
483
|
+
});
|
|
484
|
+
})
|
|
485
|
+
);
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
function traverseSync(dir, callback, pre = "") {
|
|
489
|
+
dir = resolve(".", dir);
|
|
490
|
+
const arr = readdirSync(dir);
|
|
491
|
+
let i = 0, abs, stats;
|
|
492
|
+
for (; i < arr.length; i++) {
|
|
493
|
+
abs = join(dir, arr[i]);
|
|
494
|
+
stats = statSync(abs);
|
|
495
|
+
stats.isDirectory() ? traverseSync(abs, callback, join(pre, arr[i])) : callback(join(pre, arr[i]), abs, stats);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
const watchFile = (path2, interval = 20) => new Promise((resolve2) => {
|
|
499
|
+
fs.watchFile(path2, { interval }, (curr, prev) => {
|
|
500
|
+
if (curr.mtime !== prev.mtime) {
|
|
501
|
+
fs.unwatchFile(path2);
|
|
502
|
+
resolve2({
|
|
503
|
+
success: true,
|
|
504
|
+
_identification: true,
|
|
505
|
+
data: {},
|
|
506
|
+
message: "file is changed"
|
|
507
|
+
});
|
|
508
|
+
} else {
|
|
509
|
+
resolve2({
|
|
510
|
+
success: false,
|
|
511
|
+
_identification: false,
|
|
512
|
+
data: {},
|
|
513
|
+
message: "file is not changed"
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
});
|
|
517
|
+
});
|
|
518
|
+
function createFrame(content, options) {
|
|
519
|
+
const len = Buffer$1.byteLength(content);
|
|
520
|
+
let buf = null;
|
|
521
|
+
if (len > 65535) {
|
|
522
|
+
buf = Buffer$1.alloc(10 + len);
|
|
523
|
+
buf[1] = 127;
|
|
524
|
+
buf.writeUInt32BE(len, 6);
|
|
525
|
+
buf.write(content, 10);
|
|
526
|
+
} else if (len > 125) {
|
|
527
|
+
buf = Buffer$1.alloc(4 + len);
|
|
528
|
+
buf[1] = 126;
|
|
529
|
+
buf.writeUInt16BE(len, 2);
|
|
530
|
+
buf.write(content, 4);
|
|
531
|
+
} else {
|
|
532
|
+
buf = Buffer$1.alloc(2 + len);
|
|
533
|
+
buf[1] = len;
|
|
534
|
+
buf.write(content, 2);
|
|
535
|
+
}
|
|
536
|
+
if (options) {
|
|
537
|
+
const opcode = options.opcode;
|
|
538
|
+
if (opcode && opcode < 15 && opcode >= 0) buf[0] = 128 | opcode;
|
|
539
|
+
} else buf[0] = 129;
|
|
540
|
+
return buf;
|
|
541
|
+
}
|
|
542
|
+
function parseFrameMeta(source) {
|
|
543
|
+
const src = Buffer$1.from(source);
|
|
544
|
+
const len7 = src[1] & 127;
|
|
545
|
+
let len = 0;
|
|
546
|
+
let lenMeta = 0;
|
|
547
|
+
const masked = src[1] >= 128;
|
|
548
|
+
if (len7 === 127) {
|
|
549
|
+
len = src.readUInt32BE(6);
|
|
550
|
+
lenMeta = 10;
|
|
551
|
+
} else if (len7 === 126) {
|
|
552
|
+
len = src.readUInt16BE(2);
|
|
553
|
+
lenMeta = 4;
|
|
554
|
+
} else {
|
|
555
|
+
len = len7;
|
|
556
|
+
lenMeta = 2;
|
|
557
|
+
}
|
|
558
|
+
return {
|
|
559
|
+
fin: src[0] >= 128,
|
|
560
|
+
opcode: src[0] & 15,
|
|
561
|
+
mask: masked,
|
|
562
|
+
maskKey: masked ? src.subarray(lenMeta, lenMeta + (masked ? 4 : 0)) : null,
|
|
563
|
+
len7,
|
|
564
|
+
len,
|
|
565
|
+
lenMeta: lenMeta + (masked ? 4 : 0)
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
function iMask(data, key) {
|
|
569
|
+
if (!key) return data;
|
|
570
|
+
const d = Buffer$1.from(data);
|
|
571
|
+
for (let i = 0; i < d.length; ++i) d[i] = d[i] ^ key[i % 4];
|
|
572
|
+
return d;
|
|
573
|
+
}
|
|
574
|
+
function Event() {
|
|
575
|
+
const listeners = {};
|
|
576
|
+
this.on = (event, callback) => {
|
|
577
|
+
if (listeners[event]) listeners[event].push(callback);
|
|
578
|
+
else listeners[event] = [callback];
|
|
579
|
+
};
|
|
580
|
+
this.off = (event, callback) => {
|
|
581
|
+
const e = listeners[event];
|
|
582
|
+
const i = e.indexOf(callback);
|
|
583
|
+
if (e && i !== -1) e.splice(i, 1);
|
|
584
|
+
};
|
|
585
|
+
this.emit = (event, param) => {
|
|
586
|
+
if (listeners[event]) listeners[event].forEach((callback) => callback(param));
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
function WSS(server) {
|
|
590
|
+
Event.call(this);
|
|
591
|
+
const clients = [];
|
|
592
|
+
this.server = server;
|
|
593
|
+
this.clients = clients;
|
|
594
|
+
this.broadcast = (data) => {
|
|
595
|
+
clients.forEach((v) => {
|
|
596
|
+
v.send(data);
|
|
597
|
+
});
|
|
598
|
+
};
|
|
599
|
+
server.on("upgrade", (req, socket) => {
|
|
600
|
+
socket.write(
|
|
601
|
+
[
|
|
602
|
+
"HTTP/1.1 101 Switching Protocols",
|
|
603
|
+
"Upgrade: websocket",
|
|
604
|
+
"Connection: Upgrade",
|
|
605
|
+
"Sec-WebSocket-Accept: " + crypto.createHash("sha1").update(req.headers["sec-websocket-key"] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").digest("base64")
|
|
606
|
+
].join("\n") + "\n\n"
|
|
607
|
+
);
|
|
608
|
+
const cli = {
|
|
609
|
+
// this is the `cli` parameter when you `connect`
|
|
610
|
+
send(data, options) {
|
|
611
|
+
socket.write(createFrame(data, options));
|
|
612
|
+
},
|
|
613
|
+
ping() {
|
|
614
|
+
socket.write(createFrame("", { opcode: 9 }));
|
|
615
|
+
},
|
|
616
|
+
pong() {
|
|
617
|
+
socket.write(createFrame("", { opcode: 10 }));
|
|
618
|
+
},
|
|
619
|
+
close() {
|
|
620
|
+
const cliI = clients.indexOf(cli);
|
|
621
|
+
if (cliI === -1) return false;
|
|
622
|
+
clients.splice(clients.indexOf(cli), 1);
|
|
623
|
+
socket.write(createFrame("", { opcode: 8 }));
|
|
624
|
+
cli.emit("close");
|
|
625
|
+
socket.destroy();
|
|
626
|
+
},
|
|
627
|
+
socket
|
|
628
|
+
// you can use `cli.socket` to get the socket object
|
|
629
|
+
};
|
|
630
|
+
Event.call(cli);
|
|
631
|
+
this.emit("connect", cli);
|
|
632
|
+
clients.push(cli);
|
|
633
|
+
let buf = Buffer$1.allocUnsafe(0);
|
|
634
|
+
let messageData = Buffer$1.allocUnsafe(0);
|
|
635
|
+
const dataList = [];
|
|
636
|
+
let frameEnd = true;
|
|
637
|
+
function nextFrame() {
|
|
638
|
+
const meta = parseFrameMeta(buf);
|
|
639
|
+
dataList.push({
|
|
640
|
+
l: meta.lenMeta,
|
|
641
|
+
f: () => {
|
|
642
|
+
frameEnd = false;
|
|
643
|
+
dataList.push({
|
|
644
|
+
l: meta.len,
|
|
645
|
+
f: (d) => {
|
|
646
|
+
messageData = Buffer$1.concat([messageData, iMask(d, meta.maskKey)]);
|
|
647
|
+
frameEnd = true;
|
|
648
|
+
if (meta.fin) {
|
|
649
|
+
if (meta.opcode === 8) return cli.close();
|
|
650
|
+
if (meta.opcode === 9) return cli.pong();
|
|
651
|
+
cli.emit("message", messageData);
|
|
652
|
+
messageData = Buffer$1.allocUnsafe(0);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
});
|
|
656
|
+
}
|
|
657
|
+
});
|
|
658
|
+
}
|
|
659
|
+
socket.on("data", (chunk) => {
|
|
660
|
+
buf = Buffer$1.concat([buf, chunk]);
|
|
661
|
+
if (frameEnd) nextFrame();
|
|
662
|
+
while (dataList[0] && buf.byteLength >= dataList[0].l) {
|
|
663
|
+
const l = dataList[0].l;
|
|
664
|
+
dataList[0].f(buf.subarray(0, l));
|
|
665
|
+
buf = buf.subarray(l);
|
|
666
|
+
dataList.splice(0, 1);
|
|
667
|
+
}
|
|
668
|
+
});
|
|
669
|
+
socket.on("end", () => {
|
|
670
|
+
cli.close();
|
|
671
|
+
});
|
|
672
|
+
socket.on("error", (err) => {
|
|
673
|
+
cli.emit("error", err);
|
|
674
|
+
cli.close();
|
|
675
|
+
});
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
export {
|
|
679
|
+
Router as R,
|
|
680
|
+
Server as S,
|
|
681
|
+
WSS as W,
|
|
682
|
+
appendFile as a,
|
|
683
|
+
bodyMiddleware as b,
|
|
684
|
+
color as c,
|
|
685
|
+
connect as d,
|
|
686
|
+
getIPAdress as e,
|
|
687
|
+
prompt as f,
|
|
688
|
+
get as g,
|
|
689
|
+
readFile as h,
|
|
690
|
+
isColorSupported as i,
|
|
691
|
+
readStream as j,
|
|
692
|
+
runCommand as k,
|
|
693
|
+
staticMiddleware as l,
|
|
694
|
+
traverse as m,
|
|
695
|
+
traverseSync as n,
|
|
696
|
+
writeStream as o,
|
|
697
|
+
paresUrl as p,
|
|
698
|
+
queryFileInfo as q,
|
|
699
|
+
readDir as r,
|
|
700
|
+
startTask as s,
|
|
701
|
+
taskEnd as t,
|
|
702
|
+
watchFile as w
|
|
703
|
+
};
|