update: wcc node module

fix: replace of wcc linux version
This commit is contained in:
msojocs 2022-04-23 20:25:55 +08:00
parent 22b579ec5e
commit a8c772b9a0
21 changed files with 490 additions and 18030 deletions

1
compiler/test/node-modules/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
data

View File

@ -0,0 +1,18 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "nwjs",
"request": "launch",
"name": "Launch NWjs",
"nwjsVersion": "any",
"webRoot": "${workspaceFolder}",
"reloadAfterAttached": true,
"userDataDir": "${workspaceFolder}/data",
"runtimeExecutable": "/mnt/disk2/wechat-web-devtools-linux/cache/wechat_devtools_1.05.2204180_x64/wechatdevtools.exe"
}
]
}

View File

@ -0,0 +1,4 @@
<script>
require('./wcc_test')
require('./wcsc_test')
</script>

View File

@ -0,0 +1,3 @@
#!/usr/bin/env node
require('./wcc_test')
require('./wcsc_test')

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
{
"forceVendor": true,
"name": "nw_test",
"main": "index.html",
"productName": "test",
"appname": "nw_test",
"version": "1.0",
"window": {
"frame": true
},
"chromium-args": "--no-sandbox --ignore-gpu-blacklist --register-pepper-plugins=./node_modules/mpv.js/build/Release/mpvjs.node;application/x-mpvjs",
"dependencies": {
"mpv.js": "^0.3.0",
"spdlog": "^0.13.6"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

19
compiler/test/node-modules/wcc_test.js Normal file → Executable file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,18 +1,16 @@
const fs = require('fs')
const path = require('path')
const MODE = typeof nw === 'object' ? 'wine': 'linux'
const wcsc_options1 = {"pageCount":34,"files":["./packageComponent/pages/view/view/view.wxss","./packageComponent/pages/view/scroll-view/scroll-view.wxss","./packageComponent/pages/view/swiper/swiper.wxss","./packageComponent/pages/view/movable-view/movable-view.wxss","./packageComponent/pages/view/cover-view/cover-view.wxss","./packageComponent/pages/content/text/text.wxss","./packageComponent/pages/content/icon/icon.wxss","./packageComponent/pages/content/progress/progress.wxss","./packageComponent/pages/content/rich-text/rich-text.wxss","./packageComponent/pages/form/button/button.wxss","./packageComponent/pages/form/checkbox/checkbox.wxss","./packageComponent/pages/form/form/form.wxss","./packageComponent/pages/form/input/input.wxss","./packageComponent/pages/form/label/label.wxss","./packageComponent/pages/form/picker/picker.wxss","./packageComponent/pages/form/picker-view/picker-view.wxss","./packageComponent/pages/form/radio/radio.wxss","./packageComponent/pages/form/slider/slider.wxss","./packageComponent/pages/form/switch/switch.wxss","./packageComponent/pages/form/textarea/textarea.wxss","./packageComponent/pages/form/editor/editor.wxss","./packageComponent/pages/nav/navigator/navigator.wxss","./packageComponent/pages/media/image/image.wxss","./packageComponent/pages/media/video/video.wxss","./packageComponent/pages/media/camera/camera.wxss","./packageComponent/pages/media/live-pusher/live-pusher.wxss","./packageComponent/pages/media/live-player/live-player.wxss","./packageComponent/pages/map/map/map.wxss","./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxss","./packageComponent/pages/canvas/webgl/webgl.wxss","./packageComponent/pages/open/ad/ad.wxss","./packageComponent/pages/open/open-data/open-data.wxss","./packageComponent/pages/open/web-view/web-view.wxss","./packageComponent/pages/obstacle-free/aria-component/aria-component.wxss","./app.wxss","./common/lib/weui.wxss","./miniprogram_npm/miniprogram-barrage/index.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss","./miniprogram_npm/wxml-to-canvas/index.wxss","./page/API/index.wxss","./page/API/components/set-tab-bar/set-tab-bar.wxss","./page/cloud/index.wxss","./page/common/common.wxss","./page/common/index.wxss","./page/common/lib/weui.wxss","./page/component/index.wxss","./page/extend/index.wxss","./packageComponent/pages/form/editor/assets/iconfont.wxss"],"cwd":"/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/","subPackage":"packageComponent/","replaceContent":{"./packageComponent/pages/camera-scan-code/camera-scan-code.wxss":"\n\ncamera {\n height: 250px;\n}\n\n.btn-area {\n margin-top: 0;\n}\n\nform {\n margin-top: 15px;\n}\n\n.weui-cell__bd {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: 10px 0;\n min-height: 30px;\n}"},"debug":true}
const wcsc_options2 = {"pageCount":9,"files":["./page/component/index.wxss","./page/API/index.wxss","./page/cloud/index.wxss","./page/extend/index.wxss","./miniprogram_npm/miniprogram-barrage/index.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxss","./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxss","./miniprogram_npm/wxml-to-canvas/index.wxss","./page/API/components/set-tab-bar/set-tab-bar.wxss","./app.wxss","./common/lib/weui.wxss","./page/common/common.wxss","./page/common/index.wxss","./page/common/lib/weui.wxss"],"cwd":"/mnt/disk1/WeChatProjects/miniprogram-demo/miniprogram/","replaceContent":{"./packageComponent/pages/camera-scan-code/camera-scan-code.wxss":"\n\ncamera {\n height: 250px;\n}\n\n.btn-area {\n margin-top: 0;\n}\n\nform {\n margin-top: 15px;\n}\n\n.weui-cell__bd {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: 10px 0;\n min-height: 30px;\n}"},"debug":true}
// const wcc_options6 =
// const wcc_options7 =
const test = async (options, id) => {
console.log("============")
const wcsc = require("wcsc");
console.log("============", id)
const wcsc = require("wcc_" + MODE).wcsc;
const wcsc_result = await wcsc(options);
fs.writeFileSync(path.resolve(__dirname, `wcsc_node${id}.txt`), JSON.stringify(wcsc_result, null, 4))
// const win_result = fs.readFileSync(path.resolve(__dirname, '../package.nw/win.txt'))
// console.log(wcsc_result == win_result)
fs.writeFileSync(path.resolve(__dirname, `wcsc_node_${id}${MODE}.txt`), JSON.stringify(wcsc_result, null, 4))
};
test(wcsc_options1, 1);
test(wcsc_options2, 2);

View File

@ -6,16 +6,16 @@ const options = {
"debugWXS": false,
"debug": true,
"genfuncname": "$gwx",
"wxmlCompileConfig": "2>_<7055./pages/index/index.wxml>_<70550>_<7055./pages/logs/logs.wxml>_<70550",
"wxmlCompileConfigSplit": ">_<7055",
"wxmlCompileConfig": "2>_<9401./pages/index/index.wxml>_<94010>_<9401./pages/logs/logs.wxml>_<94010",
"wxmlCompileConfigSplit": ">_<9401",
"replaceContent": {
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
"./pages/index/index.wxml": "<!--index.wxml-->\n<view class=\"container\" data-ib-structured-id=\"0\">\n <view class=\"userinfo\" data-ib-structured-id=\"1\">\n <block wx:if=\"{{canIUseOpenData}}\" data-ib-structured-id=\"2\">\n <view class=\"userinfo-avatar\" bindtap=\"bindViewTap\" style=\"width: 183rpx; height: 148rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"3\">\n <open-data type=\"userAvatarUrl\" data-ib-structured-id=\"4\"></open-data>\n </view>\n <open-data type=\"userNickName\" data-ib-structured-id=\"5\"></open-data>\n </block>\n <block wx:elif=\"{{!hasUserInfo}}\" data-ib-structured-id=\"6\">\n <button wx:if=\"{{canIUseGetUserProfile}}\" bindtap=\"getUserProfile\" data-ib-structured-id=\"7\"> 获取头像昵称 </button>\n <button wx:elif=\"{{canIUse}}\" open-type=\"getUserInfo\" bindgetuserinfo=\"getUserInfo\" data-ib-structured-id=\"8\"> 获取头像昵称 </button>\n <view wx:else data-ib-structured-id=\"9\"> 请使用1.4.4及以上版本基础库 </view>\n </block>\n <block wx:else data-ib-structured-id=\"10\">\n <image bindtap=\"bindViewTap\" class=\"userinfo-avatar\" src=\"{{userInfo.avatarUrl}}\" mode=\"cover\" data-ib-structured-id=\"11\"></image>\n <text class=\"userinfo-nickname\" data-ib-structured-id=\"12\">{{userInfo.nickName}}</text>\n </block>\n </view>\n <view class=\"usermotto\" style=\"width: 197rpx; height: 94rpx; display: block; box-sizing: border-box\" data-ib-structured-id=\"13\">\n <text class=\"user-motto\" data-ib-structured-id=\"14\">{{motto}}</text>\n </view>\n</view>\n"
},
"cwd": "/home/msojocs/Documents/we1",
"lazyloadConfig": "./pages/index/index>_<7055./pages/logs/logs"
"lazyloadConfig": "./pages/index/index>_<9401./pages/logs/logs"
}
wcc(options)
.then(res=>{
console.log(res)
fs.writeFileSync('test/wcc/viewedit/1/node.json', res)
})
.then(res => {
console.log(res)
fs.writeFileSync('test/wcc/viewedit/1/node.json', res)
})

View File

@ -60,7 +60,7 @@ exports = async function (options) {
let wccResult
try {
wccResult = wcsc(options)
wccResult = await wcsc(options)
} catch (errmsg) {
throw new Error(errmsg)
}

File diff suppressed because one or more lines are too long

View File

@ -154,3 +154,4 @@ git clone https://github.com/msojocs/wechat-devtools-linux.git
5. icepie
6. zyk-miao
7. Starrah
8. CoryByte

View File

@ -36,8 +36,8 @@ fi
# open -a Terminal "`pwd`" --> gnome-terminal
find_result=$( grep -lr 'open -a Terminal "`pwd`"' "$tmp_dir/core.wxvpkg" )
echo "Terminal启动位置: $find_result"
if [[ ! -z $find_result ]];then
echo "Terminal启动位置: $find_result"
new_str="gnome-terminal"
sed -i "s#open -a Terminal \"\`pwd\`\"#$new_str#g" "$find_result"
fi
@ -45,20 +45,21 @@ fi
# wcc、wcsc处理设置NO_WINE=true环境变量生效
if [[ $NO_WINE == 'true' ]];then
# "wcc.exe":!0,"wcsc.exe":!0
find_result=$( grep -lr '{wcc:!0,wcsc:!0,DevToolProtector:!0}' "$tmp_dir/core.wxvpkg" )
find_result=$( grep -lr '{wcc:!0,wcsc:!0}' "$tmp_dir/core.wxvpkg" )
echo "wcc: $find_result"
if [[ ! -z $find_result ]];then
echo "wcc: $find_result"
new_str='{"wcc.bin":!0,"wcsc.bin":!0,wcc:!0,wcsc:!0,DevToolProtector:!0}'
sed -i "s#{wcc:!0,wcsc:!0,DevToolProtector:!0}#$new_str#g" "$find_result"
new_str='{"wcc.bin":!0,"wcsc.bin":!0,wcc:!0,wcsc:!0}'
sed -i "s#{wcc:!0,wcsc:!0}#$new_str#g" "$find_result"
new_str='"linux"===process.platform'
sed -i "s#\"darwin\"===process.platform#$new_str#g" "$find_result"
sed -i 's#return I("wcc")#return I("wcc.bin"),I("wcc")#g' "$find_result"
sed -i 's#return I("wcsc")#return I("wcsc.bin"),I("wcsc")#g' "$find_result"
# TODO: 看能不能动态识别函数名j,因为不同版本会发生变化
sed -i 's#return j("wcc")#return j("wcc.bin"),j("wcc")#g' "$find_result"
sed -i 's#return j("wcsc")#return j("wcsc.bin"),j("wcsc")#g' "$find_result"
fi
# 处理报错时控制台显示的环境
find_result=$( grep -lr '(env:' "$tmp_dir/core.wxvpkg" )
echo "env: $find_result"
if [[ ! -z $find_result ]];then
echo "env: $find_result"
for file in $find_result; do
sed -i 's#"Windows"#"Linux"#g' "$file"
done
@ -72,14 +73,16 @@ fi
# fix theme
find_result=$( grep -lr "OSThemeController=" "$tmp_dir/core.wxvpkg" )
echo "theme: $find_result"
# require of child_process
sed -i 's/"use strict";O/"use strict";const {execSync,spawn}=require("child_process");O/' $find_result
# replace listener to monitor
sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result
# replace check func
sed -i 's/mediaQuery.matches/isDark/' $find_result
# add functions
sed -i 's#}getDefaultTheme#}get isDark(){try{const{DESKTOP_SESSION}=process.env;console.log(DESKTOP_SESSION);let theme="";switch(DESKTOP_SESSION){case"deepin":theme=execSync(`gsettings get com.deepin.dde.appearance gtk-theme`);break;case"gnome":case"gnome-classic":theme=execSync(`gsettings get org.gnome.desktop.interface ${this.gnomeScheme}`);break;default:break}return theme.includes("dark");}catch(err){console.error("尝试获取主题信息失败,使用默认暗色",err);return true;}}get gnomeScheme(){try{const gnomeVersion=execSync(`gnome-shell --version`).toString().replace(/[\\r\\n]/g,"").split(" ");const gnomeVersionNum=gnomeVersion.length==3?Number(gnomeVersion[2]):0;return gnomeVersionNum>=42?"color-scheme":"gtk-theme";}catch(err){console.error("检查gnome版本失败, 使用gtk-theme", err);return "gtk-theme";}}monitorTheme(){try{let monitor=null;const{DESKTOP_SESSION}=process.env;switch(DESKTOP_SESSION){case"deepin":monitor=spawn("gsettings",["monitor","com.deepin.dde.appearance","gtk-theme",]);break;case"gnome":case"gnome-classic":monitor=spawn("gsettings",["monitor","org.gnome.desktop.interface",this.gnomeScheme,]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.toLowerCase().includes("dark");(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400));process.on("SIGTERM",(signal)=>{monitor.kill(signal);});}catch(err){console.error("尝试监听主题失败!", err);}}getDefaultTheme#' $find_result
if [[ -n $find_result ]];then
# require of child_process
sed -i 's/"use strict";O/"use strict";const {execSync,spawn}=require("child_process");O/' $find_result
# replace listener to monitor
sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result
# replace check func
sed -i 's/mediaQuery.matches/isDark/' $find_result
# add functions
sed -i 's#}getDefaultTheme#}get isDark(){try{const{DESKTOP_SESSION}=process.env;console.log(DESKTOP_SESSION);let theme="";switch(DESKTOP_SESSION){case"deepin":theme=execSync(`gsettings get com.deepin.dde.appearance gtk-theme`);break;case"gnome":case"gnome-classic":theme=execSync(`gsettings get org.gnome.desktop.interface ${this.gnomeScheme}`);break;default:break}return theme.includes("dark");}catch(err){console.error("尝试获取主题信息失败,使用默认暗色",err);return true;}}get gnomeScheme(){try{const gnomeVersion=execSync(`gnome-shell --version`).toString().replace(/[\\r\\n]/g,"").split(" ");const gnomeVersionNum=gnomeVersion.length==3?Number(gnomeVersion[2]):0;return gnomeVersionNum>=42?"color-scheme":"gtk-theme";}catch(err){console.error("检查gnome版本失败, 使用gtk-theme", err);return "gtk-theme";}}monitorTheme(){try{let monitor=null;const{DESKTOP_SESSION}=process.env;switch(DESKTOP_SESSION){case"deepin":monitor=spawn("gsettings",["monitor","com.deepin.dde.appearance","gtk-theme",]);break;case"gnome":case"gnome-classic":monitor=spawn("gsettings",["monitor","org.gnome.desktop.interface",this.gnomeScheme,]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.toLowerCase().includes("dark");(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400));process.on("SIGTERM",(signal)=>{monitor.kill(signal);});}catch(err){console.error("尝试监听主题失败!", err);}}getDefaultTheme#' $find_result
fi
# fix update check
find_result=$( grep -lr "whatsnew.html" "$tmp_dir/core.wxvpkg" )