From e3891ef470dcedd0a757fe9144f1b07f2ef7d491 Mon Sep 17 00:00:00 2001
From: KonghaYao <20192831006@m.scnu.edu.cn>
Date: Wed, 21 Jul 2021 16:20:58 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20FakeServer=20?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=8B=E7=BB=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 2 +-
FakeServer/FakeServer.drawio | 51 +++++++++++++
FakeServer/package.json | 15 ++++
FakeServer/parseURL.js | 73 +++++++++++++++++++
FakeServer/pnpm-lock.yaml | 13 ++++
FakeServer/router.js | 31 ++++++++
src/index.js | 2 +-
{src/tools => tools}/Mock/Mock.js | 0
{src/tools => tools}/Mock/Server/excel.js | 0
{src/tools => tools}/Mock/Server/index.js | 0
{src/tools => tools}/UI/index.js | 0
{src/tools => tools}/UI/ui.html | 0
.../tools => tools}/analysis/Observer/hook.js | 0
.../analysis/Observer/hook/asyncApply.js | 0
.../analysis/Observer/hook/createProperty.js | 0
.../analysis/Observer/hook/syncApply.js | 0
.../analysis/Observer/watch.js | 0
.../analysis/Search/GlobalVars.js | 0
.../tools => tools}/analysis/Search/Search.js | 0
.../analysis/Search/searchObj.js | 0
.../analysis/Search/window-default.json | 0
{src/tools => tools}/analysis/antiDebugger.js | 0
{src/tools => tools}/analysis/copy.js | 0
{src/tools => tools}/analysis/index.js | 0
{src/tools => tools}/index.js | 1 +
{src/tools => tools}/loader/jsDelivr.js | 0
{src/tools => tools}/loader/loader.js | 0
{src/tools => tools}/loader/loaderFunction.js | 0
{src/tools => tools}/loader/scriptStore.js | 0
29 files changed, 186 insertions(+), 2 deletions(-)
create mode 100644 FakeServer/FakeServer.drawio
create mode 100644 FakeServer/package.json
create mode 100644 FakeServer/parseURL.js
create mode 100644 FakeServer/pnpm-lock.yaml
create mode 100644 FakeServer/router.js
rename {src/tools => tools}/Mock/Mock.js (100%)
rename {src/tools => tools}/Mock/Server/excel.js (100%)
rename {src/tools => tools}/Mock/Server/index.js (100%)
rename {src/tools => tools}/UI/index.js (100%)
rename {src/tools => tools}/UI/ui.html (100%)
rename {src/tools => tools}/analysis/Observer/hook.js (100%)
rename {src/tools => tools}/analysis/Observer/hook/asyncApply.js (100%)
rename {src/tools => tools}/analysis/Observer/hook/createProperty.js (100%)
rename {src/tools => tools}/analysis/Observer/hook/syncApply.js (100%)
rename {src/tools => tools}/analysis/Observer/watch.js (100%)
rename {src/tools => tools}/analysis/Search/GlobalVars.js (100%)
rename {src/tools => tools}/analysis/Search/Search.js (100%)
rename {src/tools => tools}/analysis/Search/searchObj.js (100%)
rename {src/tools => tools}/analysis/Search/window-default.json (100%)
rename {src/tools => tools}/analysis/antiDebugger.js (100%)
rename {src/tools => tools}/analysis/copy.js (100%)
rename {src/tools => tools}/analysis/index.js (100%)
rename {src/tools => tools}/index.js (84%)
rename {src/tools => tools}/loader/jsDelivr.js (100%)
rename {src/tools => tools}/loader/loader.js (100%)
rename {src/tools => tools}/loader/loaderFunction.js (100%)
rename {src/tools => tools}/loader/scriptStore.js (100%)
diff --git a/.gitignore b/.gitignore
index 0b4dd54..63da60c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,7 @@ bin-debug/
bin-release/
[Oo]bj/
[Bb]in/
-node_modules/*
+**/node_modules/*
# Other files and folders
.settings/
localFile/
diff --git a/FakeServer/FakeServer.drawio b/FakeServer/FakeServer.drawio
new file mode 100644
index 0000000..5acf9b4
--- /dev/null
+++ b/FakeServer/FakeServer.drawio
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FakeServer/package.json b/FakeServer/package.json
new file mode 100644
index 0000000..15ed119
--- /dev/null
+++ b/FakeServer/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "@konghayao/fake-server",
+ "version": "0.0.1",
+ "description": "",
+ "main": "parseURL.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "path-to-regexp": "^6.2.0"
+ }
+}
diff --git a/FakeServer/parseURL.js b/FakeServer/parseURL.js
new file mode 100644
index 0000000..d9104bd
--- /dev/null
+++ b/FakeServer/parseURL.js
@@ -0,0 +1,73 @@
+/*
+ * @license
+ * Copyright 2021 KonghaYao 江夏尧
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * The Regexps were copied from Purl (A JavaScript URL parser) v2.3.1
+ * which developed and maintained by Mark Perkins, mark@allmarkedup.com
+ * Source repository: https://github.com/allmarkedup/jQuery-URL-Parser
+ * Licensed under an MIT-style license.
+ */
+const key = [
+ "source",
+ "protocol",
+ "authority",
+ "userInfo",
+ "user",
+ "password",
+ "host",
+ "port",
+ "relative",
+ "path",
+ "directory",
+ "file",
+ "query",
+ "hash",
+]; // keys available to query
+const parser = {
+ //less intuitive, more accurate to the specs
+ strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
+ // more intuitive, fails on relative paths and deviates from specs
+ loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,
+};
+
+function parseUri(url, strictMode = false) {
+ const res = parser[strictMode ? "strict" : "loose"].exec(decodeURI(url));
+
+ const uri = key.reduce((col, keyName, index) => {
+ col[keyName] = res[index] || "";
+ return col;
+ }, {});
+
+ // build query and hash parameters
+ uri.queryParams = parseString(uri.query);
+
+ // compile a 'base' domain attribute
+ uri["base"] = uri.host
+ ? (uri.protocol ? uri.protocol + "://" + uri.host : uri.host) +
+ (uri.port ? ":" + uri.port : "")
+ : "";
+
+ return uri;
+}
+
+function parseString(queryString) {
+ return String(queryString)
+ .split(/&|;/)
+ .reduce(function (collection, pair) {
+ try {
+ pair = decodeURIComponent(pair.replace(/\+/g, " "));
+ } catch (e) {
+ // ignore
+ }
+ let [key, value] = pair.split(/=/g);
+ collection[key] = value;
+ return collection;
+ }, {});
+}
+
+export function parseURL(url, strictMode = false) {
+ return parseUri(url, strictMode);
+}
diff --git a/FakeServer/pnpm-lock.yaml b/FakeServer/pnpm-lock.yaml
new file mode 100644
index 0000000..9320af7
--- /dev/null
+++ b/FakeServer/pnpm-lock.yaml
@@ -0,0 +1,13 @@
+lockfileVersion: 5.3
+
+specifiers:
+ path-to-regexp: ^6.2.0
+
+dependencies:
+ path-to-regexp: 6.2.0
+
+packages:
+
+ /path-to-regexp/6.2.0:
+ resolution: {integrity: sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==}
+ dev: false
diff --git a/FakeServer/router.js b/FakeServer/router.js
new file mode 100644
index 0000000..d892e20
--- /dev/null
+++ b/FakeServer/router.js
@@ -0,0 +1,31 @@
+import { map } from 'rxjs/operators';
+import { of } from 'rxjs';
+import { pathToRegexp } from 'path-to-regexp';
+function normalizeRouters(Routers) {
+ return Object.entries(Routers);
+}
+function createRegexp(path, config = {}) {
+ return pathToRegexp(path, [], config);
+}
+class Route {
+ constructor(path, cb) {}
+ use(plugin) {}
+}
+class Router {
+ constructor(Routers) {
+ this.#RouterMap = new Map(normalizeRouters(Routers));
+ }
+ #RouterMap;
+ #RouteMatchers = [];
+ addRoute(path, mainCallback) {
+ const route = new Route(path, mainCallback);
+ const pathRegexp = createRegexp(path);
+ this.#RouterMap.set(pathRegexp, route);
+ this.#RouteMatchers.push(pathRegexp);
+ return route;
+ }
+ deleteRouter() {}
+ enableRouter() {}
+ disableRouter() {}
+ receiveMessage(path, message) {}
+}
diff --git a/src/index.js b/src/index.js
index 5d7c832..884acf6 100644
--- a/src/index.js
+++ b/src/index.js
@@ -5,7 +5,7 @@
*/
import { Spider } from './Spider/index';
import * as plugins from '../plugins/index.js';
-import * as tools from './tools/index.js'; // 工具都是 $ 开头的函数
+import * as tools from '../tools/index.js'; // 工具都是 $ 开头的函数
import { Plugin } from './Pipeline/PluginSystem';
import { Task, TaskGroup } from './TaskSystem/index';
export default Object.assign(Spider, tools, {
diff --git a/src/tools/Mock/Mock.js b/tools/Mock/Mock.js
similarity index 100%
rename from src/tools/Mock/Mock.js
rename to tools/Mock/Mock.js
diff --git a/src/tools/Mock/Server/excel.js b/tools/Mock/Server/excel.js
similarity index 100%
rename from src/tools/Mock/Server/excel.js
rename to tools/Mock/Server/excel.js
diff --git a/src/tools/Mock/Server/index.js b/tools/Mock/Server/index.js
similarity index 100%
rename from src/tools/Mock/Server/index.js
rename to tools/Mock/Server/index.js
diff --git a/src/tools/UI/index.js b/tools/UI/index.js
similarity index 100%
rename from src/tools/UI/index.js
rename to tools/UI/index.js
diff --git a/src/tools/UI/ui.html b/tools/UI/ui.html
similarity index 100%
rename from src/tools/UI/ui.html
rename to tools/UI/ui.html
diff --git a/src/tools/analysis/Observer/hook.js b/tools/analysis/Observer/hook.js
similarity index 100%
rename from src/tools/analysis/Observer/hook.js
rename to tools/analysis/Observer/hook.js
diff --git a/src/tools/analysis/Observer/hook/asyncApply.js b/tools/analysis/Observer/hook/asyncApply.js
similarity index 100%
rename from src/tools/analysis/Observer/hook/asyncApply.js
rename to tools/analysis/Observer/hook/asyncApply.js
diff --git a/src/tools/analysis/Observer/hook/createProperty.js b/tools/analysis/Observer/hook/createProperty.js
similarity index 100%
rename from src/tools/analysis/Observer/hook/createProperty.js
rename to tools/analysis/Observer/hook/createProperty.js
diff --git a/src/tools/analysis/Observer/hook/syncApply.js b/tools/analysis/Observer/hook/syncApply.js
similarity index 100%
rename from src/tools/analysis/Observer/hook/syncApply.js
rename to tools/analysis/Observer/hook/syncApply.js
diff --git a/src/tools/analysis/Observer/watch.js b/tools/analysis/Observer/watch.js
similarity index 100%
rename from src/tools/analysis/Observer/watch.js
rename to tools/analysis/Observer/watch.js
diff --git a/src/tools/analysis/Search/GlobalVars.js b/tools/analysis/Search/GlobalVars.js
similarity index 100%
rename from src/tools/analysis/Search/GlobalVars.js
rename to tools/analysis/Search/GlobalVars.js
diff --git a/src/tools/analysis/Search/Search.js b/tools/analysis/Search/Search.js
similarity index 100%
rename from src/tools/analysis/Search/Search.js
rename to tools/analysis/Search/Search.js
diff --git a/src/tools/analysis/Search/searchObj.js b/tools/analysis/Search/searchObj.js
similarity index 100%
rename from src/tools/analysis/Search/searchObj.js
rename to tools/analysis/Search/searchObj.js
diff --git a/src/tools/analysis/Search/window-default.json b/tools/analysis/Search/window-default.json
similarity index 100%
rename from src/tools/analysis/Search/window-default.json
rename to tools/analysis/Search/window-default.json
diff --git a/src/tools/analysis/antiDebugger.js b/tools/analysis/antiDebugger.js
similarity index 100%
rename from src/tools/analysis/antiDebugger.js
rename to tools/analysis/antiDebugger.js
diff --git a/src/tools/analysis/copy.js b/tools/analysis/copy.js
similarity index 100%
rename from src/tools/analysis/copy.js
rename to tools/analysis/copy.js
diff --git a/src/tools/analysis/index.js b/tools/analysis/index.js
similarity index 100%
rename from src/tools/analysis/index.js
rename to tools/analysis/index.js
diff --git a/src/tools/index.js b/tools/index.js
similarity index 84%
rename from src/tools/index.js
rename to tools/index.js
index 2d3c0b6..d831f8a 100644
--- a/src/tools/index.js
+++ b/tools/index.js
@@ -6,3 +6,4 @@
export * from './analysis/index.js';
export * from './loader/loader.js';
export * from './Mock/Mock.js';
+export * from '../FakeServer/parseURL.js';
diff --git a/src/tools/loader/jsDelivr.js b/tools/loader/jsDelivr.js
similarity index 100%
rename from src/tools/loader/jsDelivr.js
rename to tools/loader/jsDelivr.js
diff --git a/src/tools/loader/loader.js b/tools/loader/loader.js
similarity index 100%
rename from src/tools/loader/loader.js
rename to tools/loader/loader.js
diff --git a/src/tools/loader/loaderFunction.js b/tools/loader/loaderFunction.js
similarity index 100%
rename from src/tools/loader/loaderFunction.js
rename to tools/loader/loaderFunction.js
diff --git a/src/tools/loader/scriptStore.js b/tools/loader/scriptStore.js
similarity index 100%
rename from src/tools/loader/scriptStore.js
rename to tools/loader/scriptStore.js