@tuya-sat/micro-dev-loader 2.2.14 → 2.2.15
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/dist/index.d.ts +3 -4
- package/dist/index.js +6 -23
- package/dist/less/plugin/bundle.overwrite.d.ts +13 -0
- package/dist/less/plugin/bundle.overwrite.js +23 -0
- package/dist/{plugins/theme → less/plugin}/dark.variable.less +0 -0
- package/dist/less/plugin/file.d.ts +2 -0
- package/dist/less/plugin/file.js +57 -0
- package/dist/less/utils/index.d.ts +25 -0
- package/dist/less/utils/index.js +25 -0
- package/dist/loader/changeAntdGlobalImport.d.ts +2 -0
- package/dist/loader/changeAntdGlobalImport.js +21 -0
- package/dist/loader/filterCssVariableLoader.d.ts +3 -0
- package/dist/loader/filterCssVariableLoader.js +23 -0
- package/dist/plugins/theme/index.d.ts +1 -1
- package/dist/plugins/theme/index.js +4 -60
- package/dist/{plugins/theme → postcss/plugin}/filterPlugin.d.ts +0 -0
- package/dist/{plugins/theme → postcss/plugin}/filterPlugin.js +0 -0
- package/package.json +2 -2
- package/dist/codeMaker/base.d.ts +0 -22
- package/dist/codeMaker/base.js +0 -57
- package/dist/codeMaker/index.d.ts +0 -2
- package/dist/codeMaker/index.js +0 -12
- package/dist/codeMaker/mobileCodeMaker.d.ts +0 -12
- package/dist/codeMaker/mobileCodeMaker.js +0 -91
- package/dist/codeMaker/pcCodeMaker.d.ts +0 -13
- package/dist/codeMaker/pcCodeMaker.js +0 -114
- package/dist/codePiece/permissionComponent.d.ts +0 -2
- package/dist/codePiece/permissionComponent.js +0 -14
- package/dist/plugins/layoutMock/index.d.ts +0 -4
- package/dist/plugins/layoutMock/index.js +0 -47
- package/dist/plugins/layoutMock/layout-static/index.html +0 -269
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import LayoutMockPlugin from "./plugins/layoutMock";
|
|
2
1
|
import ThemePlugin from "./plugins/theme";
|
|
3
|
-
declare const
|
|
4
|
-
|
|
5
|
-
export {
|
|
2
|
+
declare const filterCssVariableLoader: string;
|
|
3
|
+
declare const changeAntdGlobalImport: string;
|
|
4
|
+
export { ThemePlugin, filterCssVariableLoader, changeAntdGlobalImport };
|
package/dist/index.js
CHANGED
|
@@ -2,28 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var index$2 = require('./codeMaker/index.js');
|
|
7
|
-
var microUtils = require('@tuya-sat/micro-utils');
|
|
8
|
-
var index = require('./plugins/layoutMock/index.js');
|
|
9
|
-
var index$1 = require('./plugins/theme/index.js');
|
|
5
|
+
var index = require('./plugins/theme/index.js');
|
|
10
6
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
const { authedCode = [], microFramework } = loaderUtils.getOptions(this);
|
|
14
|
-
const manifest = microUtils.parseManifest();
|
|
15
|
-
const isMobile = ((_a = manifest.supportedPlatform) === null || _a === void 0 ? void 0 : _a[0]) === "MOBILE";
|
|
16
|
-
const codeMaker = new (index$2.createCodeMaker(isMobile))({
|
|
17
|
-
sourceCode,
|
|
18
|
-
microFramework,
|
|
19
|
-
});
|
|
20
|
-
codeMaker.changeCode({
|
|
21
|
-
authedCode,
|
|
22
|
-
manifest,
|
|
23
|
-
});
|
|
24
|
-
return codeMaker.getResultCode();
|
|
25
|
-
};
|
|
7
|
+
const filterCssVariableLoader = require.resolve("./loader/filterCssVariableLoader");
|
|
8
|
+
const changeAntdGlobalImport = require.resolve("./loader/changeAntdGlobalImport");
|
|
26
9
|
|
|
27
|
-
exports.
|
|
28
|
-
exports.
|
|
29
|
-
exports
|
|
10
|
+
exports.ThemePlugin = index["default"];
|
|
11
|
+
exports.changeAntdGlobalImport = changeAntdGlobalImport;
|
|
12
|
+
exports.filterCssVariableLoader = filterCssVariableLoader;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
light: {};
|
|
3
|
+
dark: {
|
|
4
|
+
"component-background": string;
|
|
5
|
+
"body-background": string;
|
|
6
|
+
"popover-background": string;
|
|
7
|
+
"table-header-bg": string;
|
|
8
|
+
"table-row-hover-bg": string;
|
|
9
|
+
"border-color-split": string;
|
|
10
|
+
"border-color-base": string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const common = {
|
|
6
|
+
"heading-color": "",
|
|
7
|
+
"text-color": "",
|
|
8
|
+
"text-color-secondary": "",
|
|
9
|
+
};
|
|
10
|
+
var overwrite = {
|
|
11
|
+
light: {},
|
|
12
|
+
dark: {
|
|
13
|
+
"component-background": "#303b53",
|
|
14
|
+
"body-background": "#232e48",
|
|
15
|
+
"popover-background": "#303b53",
|
|
16
|
+
"table-header-bg": "#232e48",
|
|
17
|
+
"table-row-hover-bg": "#232e48",
|
|
18
|
+
"border-color-split": "rgba(255, 255, 255, 0.1)",
|
|
19
|
+
"border-color-base": "rgba(255, 255, 255, 0.2)",
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports["default"] = overwrite;
|
|
File without changes
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var path = require('path');
|
|
7
|
+
var fse = require('fs-extra');
|
|
8
|
+
var less = require('less');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
13
|
+
var fse__default = /*#__PURE__*/_interopDefaultLegacy(fse);
|
|
14
|
+
|
|
15
|
+
class HandleImport extends less.FileManager {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.interceptReg = /antd\/(es|lib)\/style\/themes\/variable\.less$/;
|
|
19
|
+
this.darkVariableContent = fse__default["default"].readFileSync(require.resolve("./dark.variable.less"), "utf-8");
|
|
20
|
+
}
|
|
21
|
+
loadFile(filename, currentDirectory, options, environment) {
|
|
22
|
+
const _super = Object.create(null, {
|
|
23
|
+
loadFile: { get: () => super.loadFile }
|
|
24
|
+
});
|
|
25
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (filename.startsWith("~")) {
|
|
27
|
+
let filenamed = filename.replace("~", "");
|
|
28
|
+
const fullPath = require.resolve(filenamed);
|
|
29
|
+
if (this.interceptReg.test(fullPath)) {
|
|
30
|
+
return {
|
|
31
|
+
filename: fullPath,
|
|
32
|
+
contents: this.darkVariableContent,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return _super.loadFile.call(this, filenamed, currentDirectory, options, environment);
|
|
36
|
+
}
|
|
37
|
+
const fullPath = path__default["default"].join(currentDirectory, filename);
|
|
38
|
+
if (this.interceptReg.test(fullPath)) {
|
|
39
|
+
return {
|
|
40
|
+
filename: fullPath,
|
|
41
|
+
contents: this.darkVariableContent,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return _super.loadFile.call(this, filename, currentDirectory, options, environment);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function createHandleImportPlugin() {
|
|
49
|
+
return {
|
|
50
|
+
install(lessInstance, pluginManager) {
|
|
51
|
+
pluginManager.addFileManager(new HandleImport());
|
|
52
|
+
},
|
|
53
|
+
minVersion: [3, 0, 0],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
exports["default"] = createHandleImportPlugin;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="less" />
|
|
2
|
+
export declare const DARK_THEME = "dark";
|
|
3
|
+
export declare const LIGHT_THEME = "light";
|
|
4
|
+
export declare type ThemeCat = typeof DARK_THEME | typeof LIGHT_THEME;
|
|
5
|
+
export declare function getLessOptions(theme?: ThemeCat): {
|
|
6
|
+
javascriptEnabled: boolean;
|
|
7
|
+
modifyVars: {
|
|
8
|
+
"entry-name": string;
|
|
9
|
+
"root-entry-name": string;
|
|
10
|
+
"component-background": string;
|
|
11
|
+
"body-background": string;
|
|
12
|
+
"popover-background": string;
|
|
13
|
+
"table-header-bg": string;
|
|
14
|
+
"table-row-hover-bg": string;
|
|
15
|
+
"border-color-split": string;
|
|
16
|
+
"border-color-base": string;
|
|
17
|
+
};
|
|
18
|
+
plugins: Less.Plugin[];
|
|
19
|
+
} | {
|
|
20
|
+
javascriptEnabled: boolean;
|
|
21
|
+
modifyVars: {
|
|
22
|
+
"entry-name": string;
|
|
23
|
+
"root-entry-name": string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var microUtils = require('@tuya-sat/micro-utils');
|
|
6
|
+
var file = require('../plugin/file.js');
|
|
7
|
+
var bundle_overwrite = require('../plugin/bundle.overwrite.js');
|
|
8
|
+
|
|
9
|
+
const DARK_THEME = "dark";
|
|
10
|
+
const LIGHT_THEME = "light";
|
|
11
|
+
function getLessOptions(theme = LIGHT_THEME) {
|
|
12
|
+
const config = {
|
|
13
|
+
javascriptEnabled: true,
|
|
14
|
+
};
|
|
15
|
+
if (theme === DARK_THEME) {
|
|
16
|
+
return Object.assign({ modifyVars: Object.assign(Object.assign(Object.assign({}, bundle_overwrite["default"].dark), microUtils.theme.getAntdOverWriteFile().dark), { "entry-name": "dark", "root-entry-name": "variable" }), plugins: [file["default"]()] }, config);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return Object.assign({ modifyVars: Object.assign(Object.assign(Object.assign({}, bundle_overwrite["default"].light), microUtils.theme.getAntdOverWriteFile().light), { "entry-name": "light", "root-entry-name": "variable" }) }, config);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.DARK_THEME = DARK_THEME;
|
|
24
|
+
exports.LIGHT_THEME = LIGHT_THEME;
|
|
25
|
+
exports.getLessOptions = getLessOptions;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* antd 4.19.5的问题,按需加载无法通过@entry-root-name实现
|
|
7
|
+
* issue https://github.com/ant-design/ant-design/issues/35259
|
|
8
|
+
* 写一个loader,在构建时修改内容
|
|
9
|
+
*/
|
|
10
|
+
const ANTD_GLOBAL_REGEX = /antd\/(es|lib)\/style\/default(\.less)?$/;
|
|
11
|
+
function changeAntdGlobalImport(input) {
|
|
12
|
+
if (ANTD_GLOBAL_REGEX.test(this.resourcePath)) {
|
|
13
|
+
return `
|
|
14
|
+
@root-entry-name: default;
|
|
15
|
+
@import './index-pure.less';
|
|
16
|
+
`;
|
|
17
|
+
}
|
|
18
|
+
return input;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports["default"] = changeAntdGlobalImport;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var postcss = require('postcss');
|
|
6
|
+
var filterPlugin = require('../postcss/plugin/filterPlugin.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var postcss__default = /*#__PURE__*/_interopDefaultLegacy(postcss);
|
|
11
|
+
|
|
12
|
+
function filterCssVariableLoader(input) {
|
|
13
|
+
const [css] = filterCssVarible(input);
|
|
14
|
+
return css;
|
|
15
|
+
}
|
|
16
|
+
function filterCssVarible(css) {
|
|
17
|
+
const store = [];
|
|
18
|
+
//@ts-ignore
|
|
19
|
+
return [postcss__default["default"]([filterPlugin.getFilterPlugin(store)]).process(css).css, store];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports["default"] = filterCssVariableLoader;
|
|
23
|
+
exports.filterCssVarible = filterCssVarible;
|
|
@@ -3,8 +3,8 @@ export default class ThemePlugin {
|
|
|
3
3
|
private stylePath;
|
|
4
4
|
private pluginName;
|
|
5
5
|
private lessFiles;
|
|
6
|
+
private filterCssVarible;
|
|
6
7
|
constructor(stylePath?: string);
|
|
7
8
|
apply(compiler: Compiler): void;
|
|
8
9
|
runCssbundle(): Promise<[string, string[]]>;
|
|
9
|
-
filterCssVarible(css: string): [string, string[]];
|
|
10
10
|
}
|
|
@@ -7,10 +7,8 @@ var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
|
7
7
|
var cheerio = require('cheerio');
|
|
8
8
|
var less = require('less');
|
|
9
9
|
var fse = require('fs-extra');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var path = require('path');
|
|
13
|
-
var filterPlugin = require('./filterPlugin.js');
|
|
10
|
+
var index = require('../../less/utils/index.js');
|
|
11
|
+
var filterCssVariableLoader = require('../../loader/filterCssVariableLoader.js');
|
|
14
12
|
|
|
15
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
14
|
|
|
@@ -18,17 +16,13 @@ var HtmlWebpackPlugin__default = /*#__PURE__*/_interopDefaultLegacy(HtmlWebpackP
|
|
|
18
16
|
var cheerio__default = /*#__PURE__*/_interopDefaultLegacy(cheerio);
|
|
19
17
|
var less__default = /*#__PURE__*/_interopDefaultLegacy(less);
|
|
20
18
|
var fse__default = /*#__PURE__*/_interopDefaultLegacy(fse);
|
|
21
|
-
var postcss__default = /*#__PURE__*/_interopDefaultLegacy(postcss);
|
|
22
|
-
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
23
19
|
|
|
24
|
-
// const darkfile
|
|
25
|
-
const darkVariableFile = require.resolve("./dark.variable.less");
|
|
26
|
-
const darkVariableContent = fse__default["default"].readFileSync(darkVariableFile, "utf-8");
|
|
27
20
|
class ThemePlugin {
|
|
28
21
|
constructor(stylePath = "static/css") {
|
|
29
22
|
this.stylePath = stylePath;
|
|
30
23
|
this.pluginName = "ThemePlugin";
|
|
31
24
|
this.lessFiles = [];
|
|
25
|
+
this.filterCssVarible = filterCssVariableLoader.filterCssVarible;
|
|
32
26
|
}
|
|
33
27
|
apply(compiler) {
|
|
34
28
|
const isProduction = process.env.NODE_ENV === "production";
|
|
@@ -84,12 +78,7 @@ class ThemePlugin {
|
|
|
84
78
|
const lessTasks = this.lessFiles.map((file) => {
|
|
85
79
|
let bufferString = fse__default["default"].readFileSync(file, "utf-8");
|
|
86
80
|
bufferString = `${bufferString}`;
|
|
87
|
-
return less__default["default"].render(bufferString, {
|
|
88
|
-
filename: file,
|
|
89
|
-
javascriptEnabled: true,
|
|
90
|
-
modifyVars: Object.assign(Object.assign({}, microUtils.theme.getAntdOverWriteFile().dark), { "entry-name": "dark", "root-entry-name": "variable" }),
|
|
91
|
-
plugins: [createHandleImportPlugin()],
|
|
92
|
-
});
|
|
81
|
+
return less__default["default"].render(bufferString, Object.assign({ filename: file }, index.getLessOptions()));
|
|
93
82
|
});
|
|
94
83
|
const cssContents = yield Promise.all(lessTasks);
|
|
95
84
|
let singleCssContent = "";
|
|
@@ -99,51 +88,6 @@ class ThemePlugin {
|
|
|
99
88
|
return this.filterCssVarible(singleCssContent);
|
|
100
89
|
});
|
|
101
90
|
}
|
|
102
|
-
filterCssVarible(css) {
|
|
103
|
-
const store = [];
|
|
104
|
-
//@ts-ignore
|
|
105
|
-
return [postcss__default["default"]([filterPlugin.getFilterPlugin(store)]).process(css).css, store];
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function createHandleImportPlugin() {
|
|
109
|
-
return {
|
|
110
|
-
install(lessInstance, pluginManager) {
|
|
111
|
-
pluginManager.addFileManager(new HandleImport());
|
|
112
|
-
},
|
|
113
|
-
minVersion: [3, 0, 0],
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
class HandleImport extends less.FileManager {
|
|
117
|
-
constructor() {
|
|
118
|
-
super(...arguments);
|
|
119
|
-
this.interceptReg = /\/style\/themes\/(variable|default)(\.less)*$/;
|
|
120
|
-
}
|
|
121
|
-
loadFile(filename, currentDirectory, options, environment) {
|
|
122
|
-
const _super = Object.create(null, {
|
|
123
|
-
loadFile: { get: () => super.loadFile }
|
|
124
|
-
});
|
|
125
|
-
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
if (filename.startsWith("~")) {
|
|
127
|
-
let filenamed = filename.replace("~", "");
|
|
128
|
-
const fullPath = require.resolve(filenamed);
|
|
129
|
-
if (this.interceptReg.test(fullPath)) {
|
|
130
|
-
return {
|
|
131
|
-
filename: fullPath,
|
|
132
|
-
contents: darkVariableContent,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
return _super.loadFile.call(this, filenamed, currentDirectory, options, environment);
|
|
136
|
-
}
|
|
137
|
-
const fullPath = path__default["default"].join(currentDirectory, filename);
|
|
138
|
-
if (this.interceptReg.test(fullPath)) {
|
|
139
|
-
return {
|
|
140
|
-
filename: fullPath,
|
|
141
|
-
contents: darkVariableContent,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
return _super.loadFile.call(this, filename, currentDirectory, options, environment);
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
91
|
}
|
|
148
92
|
|
|
149
93
|
exports["default"] = ThemePlugin;
|
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuya-sat/micro-dev-loader",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.15",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"scripts": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@babel/generator": "7.17.7",
|
|
15
15
|
"@babel/plugin-syntax-typescript": "7.16.7",
|
|
16
16
|
"@babel/template": "7.16.7",
|
|
17
|
-
"@tuya-sat/micro-utils": "2.2.
|
|
17
|
+
"@tuya-sat/micro-utils": "2.2.15",
|
|
18
18
|
"cheerio": "1.0.0-rc.10",
|
|
19
19
|
"ejs": "3.1.6",
|
|
20
20
|
"fs-extra": "10.0.1",
|
package/dist/codeMaker/base.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Manifest } from "@tuya-sat/micro-utils";
|
|
2
|
-
export declare type MICRO_FRAMEWORKS_TYPE = "REACT_TS" | "REACT_JS" | "VUE_TS" | "VUE_JS";
|
|
3
|
-
export declare const REACT_TYPES: string[];
|
|
4
|
-
export interface ChangeCodeProps {
|
|
5
|
-
authedCode: string[];
|
|
6
|
-
manifest: Manifest;
|
|
7
|
-
}
|
|
8
|
-
export interface CodeMakerProps {
|
|
9
|
-
sourceCode: string;
|
|
10
|
-
microFramework: MICRO_FRAMEWORKS_TYPE;
|
|
11
|
-
}
|
|
12
|
-
export default class CodeMaker {
|
|
13
|
-
microFramework: MICRO_FRAMEWORKS_TYPE;
|
|
14
|
-
sourceCode: string;
|
|
15
|
-
permissionComponent: string;
|
|
16
|
-
resultCode: string;
|
|
17
|
-
constructor({ sourceCode, microFramework }: CodeMakerProps);
|
|
18
|
-
parse(code: string): import("@babel/parser").ParseResult<import("@babel/types").File>;
|
|
19
|
-
getResultCode(): string;
|
|
20
|
-
vueReRenderTemp(): string;
|
|
21
|
-
reactReRenderTemp(): string;
|
|
22
|
-
}
|
package/dist/codeMaker/base.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var core = require('@babel/core');
|
|
6
|
-
var syntaxTs = require('@babel/plugin-syntax-typescript');
|
|
7
|
-
var permissionComponent = require('../codePiece/permissionComponent.js');
|
|
8
|
-
|
|
9
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
-
|
|
11
|
-
var syntaxTs__default = /*#__PURE__*/_interopDefaultLegacy(syntaxTs);
|
|
12
|
-
|
|
13
|
-
const REACT_TYPES = ["REACT_TS", "REACT_JS"];
|
|
14
|
-
class CodeMaker {
|
|
15
|
-
constructor({ sourceCode, microFramework }) {
|
|
16
|
-
this.permissionComponent = permissionComponent["default"];
|
|
17
|
-
this.sourceCode = sourceCode;
|
|
18
|
-
this.microFramework = microFramework;
|
|
19
|
-
}
|
|
20
|
-
parse(code) {
|
|
21
|
-
return core.parse(code, {
|
|
22
|
-
plugins: [
|
|
23
|
-
[
|
|
24
|
-
syntaxTs__default["default"],
|
|
25
|
-
{
|
|
26
|
-
isTSX: true,
|
|
27
|
-
allExtensions: true,
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
],
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
getResultCode() {
|
|
34
|
-
return this.resultCode;
|
|
35
|
-
}
|
|
36
|
-
vueReRenderTemp() {
|
|
37
|
-
return `
|
|
38
|
-
const reRender = () => {
|
|
39
|
-
app.unmount();
|
|
40
|
-
message.destroy();
|
|
41
|
-
render({});
|
|
42
|
-
}
|
|
43
|
-
`;
|
|
44
|
-
}
|
|
45
|
-
reactReRenderTemp() {
|
|
46
|
-
return `
|
|
47
|
-
const reRender = () => {
|
|
48
|
-
ReactDOM.unmountComponentAtNode(document.querySelector('#root'));
|
|
49
|
-
message.destroy();
|
|
50
|
-
render({});
|
|
51
|
-
}
|
|
52
|
-
`;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
exports.REACT_TYPES = REACT_TYPES;
|
|
57
|
-
exports["default"] = CodeMaker;
|
package/dist/codeMaker/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var mobileCodeMaker = require('./mobileCodeMaker.js');
|
|
6
|
-
var pcCodeMaker = require('./pcCodeMaker.js');
|
|
7
|
-
|
|
8
|
-
const createCodeMaker = (isMobile) => {
|
|
9
|
-
return isMobile ? mobileCodeMaker["default"] : pcCodeMaker["default"];
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
exports.createCodeMaker = createCodeMaker;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Manifest } from "@tuya-sat/micro-utils";
|
|
2
|
-
import CodeMaker, { CodeMakerProps, ChangeCodeProps } from "./base";
|
|
3
|
-
export default class MobileCodeMaker extends CodeMaker {
|
|
4
|
-
constructor(props: CodeMakerProps);
|
|
5
|
-
changeCode(props: ChangeCodeProps): void;
|
|
6
|
-
reactReRenderTemp(): string;
|
|
7
|
-
vueReRenderTemp(): string;
|
|
8
|
-
getAuthTemp(props: {
|
|
9
|
-
privileges: Manifest["privileges"];
|
|
10
|
-
authedCode: ChangeCodeProps["authedCode"];
|
|
11
|
-
}): string;
|
|
12
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var base = require('./base.js');
|
|
6
|
-
|
|
7
|
-
class MobileCodeMaker extends base["default"] {
|
|
8
|
-
constructor(props) {
|
|
9
|
-
super(props);
|
|
10
|
-
}
|
|
11
|
-
changeCode(props) {
|
|
12
|
-
const { manifest, authedCode } = props;
|
|
13
|
-
const { privileges } = manifest;
|
|
14
|
-
this.resultCode = `${this.getAuthTemp({
|
|
15
|
-
privileges,
|
|
16
|
-
authedCode,
|
|
17
|
-
})};${this.sourceCode};${this.permissionComponent}`;
|
|
18
|
-
}
|
|
19
|
-
reactReRenderTemp() {
|
|
20
|
-
return `
|
|
21
|
-
const reRender = () => {
|
|
22
|
-
const ReactDom = require('react-dom');
|
|
23
|
-
const rootElement = document.getElementById('root');
|
|
24
|
-
ReactDom.unmountComponentAtNode(rootElement);
|
|
25
|
-
render(<App />, rootElement);
|
|
26
|
-
}
|
|
27
|
-
`;
|
|
28
|
-
}
|
|
29
|
-
vueReRenderTemp() {
|
|
30
|
-
return `
|
|
31
|
-
const reRender = () => {
|
|
32
|
-
}
|
|
33
|
-
`;
|
|
34
|
-
}
|
|
35
|
-
getAuthTemp(props) {
|
|
36
|
-
const { privileges = [], authedCode = [] } = props;
|
|
37
|
-
const temp = `
|
|
38
|
-
{
|
|
39
|
-
//重刷函数
|
|
40
|
-
${base.REACT_TYPES.includes(this.microFramework)
|
|
41
|
-
? this.reactReRenderTemp()
|
|
42
|
-
: this.vueReRenderTemp()}
|
|
43
|
-
//权限点
|
|
44
|
-
window._SDF = {
|
|
45
|
-
permissions:{}
|
|
46
|
-
}
|
|
47
|
-
//用于组件渲染
|
|
48
|
-
window._allCodesStatusMap = new Map()
|
|
49
|
-
//修改权限点的方法
|
|
50
|
-
const changeAuthedMap = (authedCode) => {
|
|
51
|
-
const privileges = ${JSON.stringify(privileges)}
|
|
52
|
-
const allCodesStatus = privileges?.map(
|
|
53
|
-
({ name, code }) => [
|
|
54
|
-
code,
|
|
55
|
-
authedCode.includes(code),
|
|
56
|
-
]
|
|
57
|
-
);
|
|
58
|
-
window._allCodesStatusMap = new Map(allCodesStatus)
|
|
59
|
-
window._SDF.permissions = allCodesStatus.reduce((pre, item) => {
|
|
60
|
-
const [key, value] = item;
|
|
61
|
-
pre[key] = value;
|
|
62
|
-
return pre;
|
|
63
|
-
}, {});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const authedCodeInfo = {
|
|
67
|
-
authedCode:${JSON.stringify(authedCode)}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
changeAuthedMap(authedCodeInfo.authedCode)
|
|
71
|
-
window._authedCodeInfoProxy = new Proxy(authedCodeInfo,{
|
|
72
|
-
get(target,prop){
|
|
73
|
-
return target[prop]
|
|
74
|
-
},
|
|
75
|
-
set(target,prop,value){
|
|
76
|
-
target[prop] = value
|
|
77
|
-
if(prop === 'authedCode') {
|
|
78
|
-
changeAuthedMap(value)
|
|
79
|
-
reRender()
|
|
80
|
-
}
|
|
81
|
-
return true
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
`;
|
|
87
|
-
return temp;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
exports["default"] = MobileCodeMaker;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ParseResult } from "@babel/core";
|
|
2
|
-
import { Manifest } from "@tuya-sat/micro-utils";
|
|
3
|
-
import CodeMaker, { CodeMakerProps, ChangeCodeProps } from "./base";
|
|
4
|
-
export default class PcCodeMaker extends CodeMaker {
|
|
5
|
-
ast: ParseResult;
|
|
6
|
-
constructor(props: CodeMakerProps);
|
|
7
|
-
changeCode(props: ChangeCodeProps): void;
|
|
8
|
-
getMenuCode(manifest: Manifest): string;
|
|
9
|
-
getAuthTemp(props: {
|
|
10
|
-
privileges: Manifest["privileges"];
|
|
11
|
-
authedCode: ChangeCodeProps["authedCode"];
|
|
12
|
-
}): string;
|
|
13
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var core = require('@babel/core');
|
|
6
|
-
var template = require('@babel/template');
|
|
7
|
-
var generate = require('@babel/generator');
|
|
8
|
-
var microUtils = require('@tuya-sat/micro-utils');
|
|
9
|
-
var base = require('./base.js');
|
|
10
|
-
|
|
11
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
-
|
|
13
|
-
var template__default = /*#__PURE__*/_interopDefaultLegacy(template);
|
|
14
|
-
var generate__default = /*#__PURE__*/_interopDefaultLegacy(generate);
|
|
15
|
-
|
|
16
|
-
class PcCodeMaker extends base["default"] {
|
|
17
|
-
constructor(props) {
|
|
18
|
-
super(props);
|
|
19
|
-
this.ast = this.parse(this.sourceCode);
|
|
20
|
-
}
|
|
21
|
-
changeCode(props) {
|
|
22
|
-
const { manifest, authedCode } = props;
|
|
23
|
-
const { privileges } = manifest;
|
|
24
|
-
const authTemp = this.getAuthTemp({ authedCode, privileges });
|
|
25
|
-
const menuTemp = this.getMenuCode(manifest);
|
|
26
|
-
core.traverse(this.ast, {
|
|
27
|
-
ExportNamedDeclaration(path) {
|
|
28
|
-
let isTarget = false;
|
|
29
|
-
try {
|
|
30
|
-
isTarget =
|
|
31
|
-
path.node.declaration.kind === "let" &&
|
|
32
|
-
path.node.declaration.declarations[0].id.name ===
|
|
33
|
-
"microProps";
|
|
34
|
-
}
|
|
35
|
-
catch (_a) { }
|
|
36
|
-
if (!isTarget) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
[authTemp, menuTemp, "microProps = {}"].forEach((temp) => {
|
|
40
|
-
path.insertAfter(template__default["default"].ast(temp));
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
this.resultCode = generate__default["default"](this.ast).code + ";" + this.permissionComponent;
|
|
45
|
-
}
|
|
46
|
-
getMenuCode(manifest) {
|
|
47
|
-
const temp = `
|
|
48
|
-
{
|
|
49
|
-
microProps.getOwnMenu = ()=> {
|
|
50
|
-
const localLng = localStorage.getItem("i18nextLng");
|
|
51
|
-
let index = localLng === "zh-CN" ? 0 : 1
|
|
52
|
-
const ownMenu = ${JSON.stringify(microUtils.getFakeMenu(manifest))}
|
|
53
|
-
ownMenu.micro_app_name = ownMenu.micro_app_name[index]
|
|
54
|
-
ownMenu.entry_name = ownMenu.entry_name[index]
|
|
55
|
-
ownMenu.sub_entry_list = ownMenu.sub_entry_list.map(item=>({
|
|
56
|
-
...item,
|
|
57
|
-
micro_app_name:item.micro_app_name[index],
|
|
58
|
-
entry_name:item.entry_name[index]
|
|
59
|
-
}))
|
|
60
|
-
return ownMenu
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
`;
|
|
64
|
-
return temp;
|
|
65
|
-
}
|
|
66
|
-
getAuthTemp(props) {
|
|
67
|
-
const { privileges = [], authedCode = [] } = props;
|
|
68
|
-
const temp = `
|
|
69
|
-
{
|
|
70
|
-
window._allCodesStatusMap = new Map()
|
|
71
|
-
window._authedCodeInfoProxy = {}
|
|
72
|
-
microProps.hasPermission = (code) => {
|
|
73
|
-
return window._allCodesStatusMap.get(code)
|
|
74
|
-
};
|
|
75
|
-
const changeAuthedMap = (authedCode) => {
|
|
76
|
-
const privileges = ${JSON.stringify(privileges)}
|
|
77
|
-
const allCodesStatus = privileges?.map(
|
|
78
|
-
({ name, code }) => [
|
|
79
|
-
code,
|
|
80
|
-
authedCode.includes(code),
|
|
81
|
-
]
|
|
82
|
-
);
|
|
83
|
-
window._allCodesStatusMap = new Map(allCodesStatus)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
${base.REACT_TYPES.includes(this.microFramework)
|
|
87
|
-
? this.reactReRenderTemp()
|
|
88
|
-
: this.vueReRenderTemp()}
|
|
89
|
-
const authedCodeInfo = {
|
|
90
|
-
authedCode:${JSON.stringify(authedCode)}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
changeAuthedMap(authedCodeInfo.authedCode)
|
|
94
|
-
window._authedCodeInfoProxy = new Proxy(authedCodeInfo,{
|
|
95
|
-
get(target,prop){
|
|
96
|
-
return target[prop]
|
|
97
|
-
},
|
|
98
|
-
set(target,prop,value){
|
|
99
|
-
target[prop] = value
|
|
100
|
-
if(prop === 'authedCode') {
|
|
101
|
-
changeAuthedMap(value)
|
|
102
|
-
reRender()
|
|
103
|
-
}
|
|
104
|
-
return true
|
|
105
|
-
}
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
`;
|
|
110
|
-
return temp;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
exports["default"] = PcCodeMaker;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const permissionComponent = "\n(function ExternalRender() {\n const div = document.createElement('div');\n const { insertDom } = require(\"@tuya-sat/micro-dev-component\");\n insertDom(div)\n document.body.appendChild(div);\n})();\n";
|
|
2
|
-
export default permissionComponent;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
const permissionComponent = `
|
|
6
|
-
(function ExternalRender() {
|
|
7
|
-
const div = document.createElement('div');
|
|
8
|
-
const { insertDom } = require("@tuya-sat/micro-dev-component");
|
|
9
|
-
insertDom(div)
|
|
10
|
-
document.body.appendChild(div);
|
|
11
|
-
})();
|
|
12
|
-
`;
|
|
13
|
-
|
|
14
|
-
exports["default"] = permissionComponent;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var fse = require('fs-extra');
|
|
6
|
-
var path = require('path');
|
|
7
|
-
var ejs = require('ejs');
|
|
8
|
-
var cheerio = require('cheerio');
|
|
9
|
-
var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
10
|
-
var microUtils = require('@tuya-sat/micro-utils');
|
|
11
|
-
|
|
12
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
-
|
|
14
|
-
var fse__default = /*#__PURE__*/_interopDefaultLegacy(fse);
|
|
15
|
-
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
16
|
-
var ejs__default = /*#__PURE__*/_interopDefaultLegacy(ejs);
|
|
17
|
-
var cheerio__default = /*#__PURE__*/_interopDefaultLegacy(cheerio);
|
|
18
|
-
var HtmlWebpackPlugin__default = /*#__PURE__*/_interopDefaultLegacy(HtmlWebpackPlugin);
|
|
19
|
-
|
|
20
|
-
const manifest = microUtils.parseManifest();
|
|
21
|
-
const layoutMockTpl = fse__default["default"].readFileSync(path__default["default"].resolve(__dirname, "./layout-static/index.html"), {
|
|
22
|
-
encoding: "utf-8",
|
|
23
|
-
});
|
|
24
|
-
class LayoutMockPlugin {
|
|
25
|
-
static useLayoutStatic(app) {
|
|
26
|
-
app.get("/layout-static/*", function (req, res) {
|
|
27
|
-
res.sendFile(path__default["default"].join(__dirname, req.path));
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
apply(compiler) {
|
|
31
|
-
compiler.hooks.compilation.tap("MyPlugin", (compilation) => {
|
|
32
|
-
HtmlWebpackPlugin__default["default"].getHooks(compilation).beforeEmit.tapAsync("LayoutMockPlugin", (data, cb) => {
|
|
33
|
-
const $ = cheerio__default["default"].load(data.html);
|
|
34
|
-
const { name, defaultMenuIcon } = manifest;
|
|
35
|
-
data.html = ejs__default["default"].render(layoutMockTpl, {
|
|
36
|
-
appName: microUtils.nameProcesser2(name)[0],
|
|
37
|
-
appIcon: defaultMenuIcon.url,
|
|
38
|
-
menu: microUtils.getFakeMenu(manifest),
|
|
39
|
-
appHtml: [$("head").html(), $("body").html()].join(""),
|
|
40
|
-
});
|
|
41
|
-
cb(null, data);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
exports["default"] = LayoutMockPlugin;
|
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" style="margin: 0; padding: 0">
|
|
3
|
-
<head>
|
|
4
|
-
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
|
5
|
-
<meta charset="utf-8" />
|
|
6
|
-
<link rel="icon" href="favicon.ico" />
|
|
7
|
-
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
8
|
-
<meta name="theme-color" content="#000000" />
|
|
9
|
-
<meta name="description" content="Tuya General Management Portal" />
|
|
10
|
-
<title><%= appName %></title>
|
|
11
|
-
<style>
|
|
12
|
-
.c-debugger-container {
|
|
13
|
-
width: 100vw;
|
|
14
|
-
height: 100vh;
|
|
15
|
-
display: flex;
|
|
16
|
-
flex-direction: column;
|
|
17
|
-
}
|
|
18
|
-
.c-debugger-header {
|
|
19
|
-
flex: 0 0 auto;
|
|
20
|
-
display: flex;
|
|
21
|
-
align-items: center;
|
|
22
|
-
justify-content: space-between;
|
|
23
|
-
height: 55px;
|
|
24
|
-
padding: 0 16px;
|
|
25
|
-
border-bottom: 1px solid #eee;
|
|
26
|
-
color: rgba(0, 0, 0, 0.85);
|
|
27
|
-
}
|
|
28
|
-
.c-debugger-logo {
|
|
29
|
-
position: relative;
|
|
30
|
-
overflow: hidden;
|
|
31
|
-
display: flex;
|
|
32
|
-
align-items: center;
|
|
33
|
-
}
|
|
34
|
-
.c-debugger-title {
|
|
35
|
-
color: #000;
|
|
36
|
-
font-size: 14px;
|
|
37
|
-
font-weight: 700;
|
|
38
|
-
height: 32px;
|
|
39
|
-
line-height: 32px;
|
|
40
|
-
margin: 0 0 0 12px;
|
|
41
|
-
}
|
|
42
|
-
.c-debugger-main {
|
|
43
|
-
display: flex;
|
|
44
|
-
flex: 1 1 auto;
|
|
45
|
-
}
|
|
46
|
-
.c-debugger-side {
|
|
47
|
-
flex: 0 0 auto;
|
|
48
|
-
width: 208px;
|
|
49
|
-
height: 100%;
|
|
50
|
-
border-right: 1px solid #f0f2f5;
|
|
51
|
-
}
|
|
52
|
-
.c-debugger-content {
|
|
53
|
-
flex: 1 1 auto;
|
|
54
|
-
height: 100%;
|
|
55
|
-
width: 0;
|
|
56
|
-
}
|
|
57
|
-
#root {
|
|
58
|
-
width: 100%;
|
|
59
|
-
height: 100%;
|
|
60
|
-
}
|
|
61
|
-
.c-debugger-lang-trigger {
|
|
62
|
-
position: relative;
|
|
63
|
-
display: flex;
|
|
64
|
-
align-items: center;
|
|
65
|
-
white-space: nowrap;
|
|
66
|
-
cursor: pointer;
|
|
67
|
-
font-size: 14px;
|
|
68
|
-
font-weight: normal;
|
|
69
|
-
height: 100%;
|
|
70
|
-
}
|
|
71
|
-
.c-debugger-lang-trigger:hover .c-debugger-lang-list {
|
|
72
|
-
display: block;
|
|
73
|
-
line-height: 1.5;
|
|
74
|
-
}
|
|
75
|
-
.c-debugger-lang-trigger .c-debugger-lang-list {
|
|
76
|
-
position: absolute;
|
|
77
|
-
top: 42px;
|
|
78
|
-
right: -5px;
|
|
79
|
-
display: none;
|
|
80
|
-
background: #ffffff;
|
|
81
|
-
border-radius: 2px;
|
|
82
|
-
outline: none;
|
|
83
|
-
box-shadow: 0 3px 6px -4px rgb(0 0 0 / 12%),
|
|
84
|
-
0 6px 16px 0 rgb(0 0 0 / 8%), 0 9px 28px 8px rgb(0 0 0 / 5%);
|
|
85
|
-
z-index: 100;
|
|
86
|
-
}
|
|
87
|
-
.c-debugger-lang-trigger .c-debugger-lang-list span {
|
|
88
|
-
display: block;
|
|
89
|
-
padding: 5px 12px;
|
|
90
|
-
}
|
|
91
|
-
.c-debugger-lang-trigger .c-debugger-lang-list span:hover {
|
|
92
|
-
background-color: #f5f5f5;
|
|
93
|
-
}
|
|
94
|
-
.c-debugger-menu {
|
|
95
|
-
display: flex;
|
|
96
|
-
justify-content: flex-start;
|
|
97
|
-
align-items: center;
|
|
98
|
-
height: 40px;
|
|
99
|
-
padding: 0 0 0 17px;
|
|
100
|
-
margin: 4px 0 8px;
|
|
101
|
-
cursor: pointer;
|
|
102
|
-
font-size: 14px;
|
|
103
|
-
color: rgba(0, 0, 0, 0.85);
|
|
104
|
-
}
|
|
105
|
-
.c-debugger-menu-name {
|
|
106
|
-
flex: 1 1 auto;
|
|
107
|
-
margin-left: 10px;
|
|
108
|
-
overflow: hidden;
|
|
109
|
-
text-overflow: ellipsis;
|
|
110
|
-
}
|
|
111
|
-
.c-debugger-menu-suffix {
|
|
112
|
-
display: flex;
|
|
113
|
-
align-items: center;
|
|
114
|
-
width: 14px;
|
|
115
|
-
height: 14px;
|
|
116
|
-
margin: 0 10px 0 0;
|
|
117
|
-
}
|
|
118
|
-
.c-debugger-menu:hover {
|
|
119
|
-
color: #1890ff;
|
|
120
|
-
}
|
|
121
|
-
</style>
|
|
122
|
-
</head>
|
|
123
|
-
<body style="margin: 0; padding: 0">
|
|
124
|
-
<div class="c-debugger-container">
|
|
125
|
-
<div class="c-debugger-header">
|
|
126
|
-
<div class="c-debugger-logo">
|
|
127
|
-
<svg
|
|
128
|
-
version="1.1"
|
|
129
|
-
id="Layer_1"
|
|
130
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
131
|
-
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
132
|
-
x="0px"
|
|
133
|
-
y="0px"
|
|
134
|
-
width="28px"
|
|
135
|
-
height="28px"
|
|
136
|
-
viewBox="0 0 28 28"
|
|
137
|
-
enable-background="new 0 0 28 28"
|
|
138
|
-
xml:space="preserve"
|
|
139
|
-
>
|
|
140
|
-
<image
|
|
141
|
-
id="image0"
|
|
142
|
-
width="28"
|
|
143
|
-
height="28"
|
|
144
|
-
x="0"
|
|
145
|
-
y="0"
|
|
146
|
-
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
|
|
147
|
-
AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABYlBMVEUAAAAxY/QwYfMxYvMx
|
|
148
|
-
YvQwYPMvYfMwYvMjWegdTdYyYvQyY/QwYfQwZfY4aPc3ZPQwYvQ1ZPYzZvhMhP8vYPIxYvUhWOQr
|
|
149
|
-
WOwvYfIxYfQwYvUwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMw
|
|
150
|
-
YfMwYfMwYfMwYfMzZPgwYfMwYfMwYfQwYfQxYvMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMxYfMw
|
|
151
|
-
YfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfQwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMy
|
|
152
|
-
YvQxYvQwYfMwYfMxYvQwYfMwYfMwYfMwYfMwYfMwYfMxYvQwYfMwYfMwYfMzZPcxYvMwYfMwYfMw
|
|
153
|
-
YfMxYvMxY/QxY/UwYvQwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfMwYfP///98
|
|
154
|
-
NzqoAAAAdHRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVZ7S8PwRaMj2Orz9V+NW7Pt2
|
|
155
|
-
Afl/BwYLWhMKh/c378YMuPVUZP6cK+nRzgi7B7kNxyHhTwINrmcFhIL44jknAzCp6wEK5EkaBwIB
|
|
156
|
-
BhdCklvZuqemt9b0FNHt+VwAAAABYktHRHWoapj7AAAAB3RJTUUH5QweCh8zgHYHYgAAAXtJREFU
|
|
157
|
-
KM9t0/dXwjAQB/BwxIW4xUULbdlYxImICoqguAcOcOPe8/7/51VALeZ+6/ukeblvLoxRWQDAKcku
|
|
158
|
-
t6K4XbLkpE8Lq5SVg6p5vFgpr0dTgVvLxnmdzx/APxXw++o5N6yBNwZDWFOhcJOBNl4XHKw11CND
|
|
159
|
-
3GZjAL5//2F0eATqARiofoGNwtj4BKEWEFlsMq4Bc3pEBlMJnHYyySsymJnFZIrJIqNjzs1jmrlE
|
|
160
|
-
xpphIYNZ5hYZoyYWMcEUoTH7Ug51E/4ag+UVQrfQGKyu0bYuobXA+gYdSBYZtbIZpVaqIZjMwrdk
|
|
161
|
-
I4RKfCZrpfgyRnzl4E3WBrC9g4F85cpMZgPY3VMwp8L3ZeuGtds7DOrkHMb2D7BQpOU0JuHICMQO
|
|
162
|
-
jwCsnLcDdB2fKHgqdXOHMWA9Z3A+WUpfXF5d39ze3T+UEAtSb3n8OG30GEeMPz2/vL69f9Bo5op9
|
|
163
|
-
ZaNywKc2naymkVzL01D3V883YDyHVDqb0PVENp36eQ5fpMSxyXHqNUQAAABEZVhJZk1NACoAAAAI
|
|
164
|
-
AAGHaQAEAAAAAQAAABoAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAQSgAwAEAAAAAQAAAQQA
|
|
165
|
-
AAAA4WKbRgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0xMi0zMFQxMDozMTo1MSswMDowMFxFjZgA
|
|
166
|
-
AAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMTItMzBUMTA6MzE6NTErMDA6MDAtGDUkAAAAEXRFWHRl
|
|
167
|
-
eGlmOkNvbG9yU3BhY2UAMQ+bAkkAAAASdEVYdGV4aWY6RXhpZk9mZnNldAAyNlMbomUAAAAYdEVY
|
|
168
|
-
dGV4aWY6UGl4ZWxYRGltZW5zaW9uADI2MBIuWbIAAAAYdEVYdGV4aWY6UGl4ZWxZRGltZW5zaW9u
|
|
169
|
-
ADI2MI8huMQAAAAASUVORK5CYII="
|
|
170
|
-
/>
|
|
171
|
-
</svg>
|
|
172
|
-
<div class="c-debugger-title"><%= appName %></div>
|
|
173
|
-
</div>
|
|
174
|
-
<div class="c-debugger-lang-trigger">
|
|
175
|
-
<span id="c-debugger-lang-name"></span>
|
|
176
|
-
<div class="c-debugger-lang-list">
|
|
177
|
-
<span onclick="changeLng('en-US')">English</span>
|
|
178
|
-
<span onclick="changeLng('zh-CN')">简体中文</span>
|
|
179
|
-
</div>
|
|
180
|
-
</div>
|
|
181
|
-
</div>
|
|
182
|
-
<div class="c-debugger-main">
|
|
183
|
-
<div class="c-debugger-side">
|
|
184
|
-
<% if (!menu.sub_entry_list.length) { %>
|
|
185
|
-
<div class="c-debugger-menu" onclick="toPage('<%= menu.path %>')">
|
|
186
|
-
<svg
|
|
187
|
-
viewBox="0 0 1024 1024"
|
|
188
|
-
version="1.1"
|
|
189
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
190
|
-
p-id="2323"
|
|
191
|
-
width="14"
|
|
192
|
-
height="14"
|
|
193
|
-
>
|
|
194
|
-
<path
|
|
195
|
-
d="M192.037 287.953h640.124c17.673 0 32-14.327 32-32s-14.327-32-32-32H192.037c-17.673 0-32 14.327-32 32s14.327 32 32 32zM192.028 543.17h638.608c17.673 0 32-14.327 32-32s-14.327-32-32-32H192.028c-17.673 0-32 14.327-32 32s14.327 32 32 32zM832.161 735.802H192.037c-17.673 0-32 14.327-32 32s14.327 32 32 32h640.124c17.673 0 32-14.327 32-32s-14.327-32-32-32z"
|
|
196
|
-
fill=""
|
|
197
|
-
p-id="2324"
|
|
198
|
-
></path>
|
|
199
|
-
</svg>
|
|
200
|
-
<div class="c-debugger-menu-name"><%= menu.entry_name[0] %></div>
|
|
201
|
-
</div>
|
|
202
|
-
<% } else { %>
|
|
203
|
-
<div class="c-debugger-menu">
|
|
204
|
-
<svg
|
|
205
|
-
viewBox="0 0 1024 1024"
|
|
206
|
-
version="1.1"
|
|
207
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
208
|
-
p-id="2323"
|
|
209
|
-
width="14"
|
|
210
|
-
height="14"
|
|
211
|
-
>
|
|
212
|
-
<path
|
|
213
|
-
d="M192.037 287.953h640.124c17.673 0 32-14.327 32-32s-14.327-32-32-32H192.037c-17.673 0-32 14.327-32 32s14.327 32 32 32zM192.028 543.17h638.608c17.673 0 32-14.327 32-32s-14.327-32-32-32H192.028c-17.673 0-32 14.327-32 32s14.327 32 32 32zM832.161 735.802H192.037c-17.673 0-32 14.327-32 32s14.327 32 32 32h640.124c17.673 0 32-14.327 32-32s-14.327-32-32-32z"
|
|
214
|
-
fill=""
|
|
215
|
-
p-id="2324"
|
|
216
|
-
></path>
|
|
217
|
-
</svg>
|
|
218
|
-
<div class="c-debugger-menu-name">
|
|
219
|
-
<%= menu.micro_app_name[0] %>
|
|
220
|
-
</div>
|
|
221
|
-
<div class="c-debugger-menu-suffix">
|
|
222
|
-
<svg
|
|
223
|
-
viewBox="0 0 1024 1024"
|
|
224
|
-
version="1.1"
|
|
225
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
226
|
-
p-id="2307"
|
|
227
|
-
width="12"
|
|
228
|
-
height="12"
|
|
229
|
-
>
|
|
230
|
-
<path
|
|
231
|
-
d="M881.975333 774.688841 512 404.713508 142.024667 774.688841 64.322981 696.987155 512 249.311159 959.677019 696.987155Z"
|
|
232
|
-
p-id="2308"
|
|
233
|
-
></path>
|
|
234
|
-
</svg>
|
|
235
|
-
</div>
|
|
236
|
-
</div>
|
|
237
|
-
<% menu.sub_entry_list.forEach(function(subMenu){ %>
|
|
238
|
-
<div class="c-debugger-menu" onclick="toPage('<%= subMenu.path %>')">
|
|
239
|
-
<div style="width: 14px; height: 14px"></div>
|
|
240
|
-
<div class="c-debugger-menu-name"><%= subMenu.entry_name[0] %></div>
|
|
241
|
-
</div>
|
|
242
|
-
<% }) %> <% } %>
|
|
243
|
-
</div>
|
|
244
|
-
<div class="c-debugger-content"><%- appHtml %></div>
|
|
245
|
-
</div>
|
|
246
|
-
</div>
|
|
247
|
-
<script>
|
|
248
|
-
(() => {
|
|
249
|
-
const lngMap = {
|
|
250
|
-
"en-US": "English",
|
|
251
|
-
"zh-CN": "简体中文",
|
|
252
|
-
};
|
|
253
|
-
const localLng = localStorage.getItem("i18nextLng");
|
|
254
|
-
const lng = lngMap[localLng] ? localLng : "zh-CN";
|
|
255
|
-
document.querySelector("#c-debugger-lang-name").textContent =
|
|
256
|
-
lngMap[lng];
|
|
257
|
-
})();
|
|
258
|
-
|
|
259
|
-
function toPage(path) {
|
|
260
|
-
window.location.href = new URL(path, window.location.origin);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
function changeLng(lng, name) {
|
|
264
|
-
localStorage.setItem("i18nextLng", lng);
|
|
265
|
-
location.reload();
|
|
266
|
-
}
|
|
267
|
-
</script>
|
|
268
|
-
</body>
|
|
269
|
-
</html>
|