123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- let Fs = require('fs');
- Editor.Panel.extend({
- style: Fs.readFileSync(Editor.url('packages://ccc-obfuscated-code/panel/index.css'), 'utf8'),
- template: Fs.readFileSync(Editor.url('packages://ccc-obfuscated-code/panel/index.html'), 'utf8'),
- ready() {
- let vue = new window.Vue({
- el: this.shadowRoot,
- data() {
- return {
- isSaving: false,
- auto: false,
- files: '/src/project.js',
- useAbsPath: false,
- preset: 'low',
- options: {
- compact: true,
- controlFlowFlattening: false,
- controlFlowFlatteningThreshold: 0.75,
- deadCodeInjection: false,
- deadCodeInjectionThreshold: 0.4,
- debugProtection: false,
- debugProtectionInterval: false,
- disableConsoleOutput: false,
- domainLock: '',
- identifierNamesGenerator: 'hexadecimal',
- identifiersDictionary: '',
- identifiersPrefix: '',
- inputFileName: '',
- log: false,
- renameGlobals: false,
- reservedNames: '',
- reservedStrings: '',
- rotateStringArray: false,
- seed: 0,
- selfDefending: false,
- shuffleStringArray: false,
- sourceMap: false,
- sourceMapBaseUrl: '',
- sourceMapFileName: '',
- sourceMapMode: 'separate',
- splitStrings: false,
- splitStringsChunkLength: 10,
- stringArray: false,
- stringArrayEncoding: false,
- stringArrayThreshold: 0.8,
- target: 'browser',
- transformObjectKeys: false,
- unicodeEscapeSequence: false
- }
- }
- },
- watch: {
- options: {
- handler(value) {
- if (value.deadCodeInjection) vue.options.stringArray = true;
- },
- deep: true
- }
- },
- methods: {
- /**
- * 保存配置
- */
- saveConfig() {
- if (this.isSaving) return;
- this.isSaving = true;
- let config = {
- auto: this.auto,
- files: this.files.split(','),
- useAbsPath: this.useAbsPath,
- preset: this.preset,
- options: {}
- };
- for (let key in this.options) {
- switch (key) {
- case 'domainLock': case 'identifiersDictionary': case 'reservedNames': case 'reservedStrings':
- config.options[key] = this.options[key] == '' ? [] : this.options[key].split(',');
- break;
- case 'stringArrayEncoding':
- config.options[key] = this.options.stringArrayEncoding == 'true' ||
- this.options.stringArrayEncoding == 'false' ?
- Boolean(this.options.stringArrayEncoding) :
- this.options.stringArrayEncoding;
- break;
- default:
- config.options[key] = this.options[key];
- break;
- }
- }
- Editor.Ipc.sendToMain('ccc-obfuscated-code:save-config', config, (err, msg) => {
- this.isSaving = false;
- });
- },
- /**
- * 读取配置
- */
- readConfig() {
- Editor.Ipc.sendToMain('ccc-obfuscated-code:read-config', (err, config) => {
- if (err) return;
- this.auto = config.auto;
- this.files = config.files.join(',');
- this.useAbsPath = config.useAbsPath;
- this.preset = config.preset;
- for (let key in config.options) {
- this.options[key] = Array.isArray(config.options[key]) ? config.options[key].join(',') : config.options[key];
- }
- });
- },
- /**
- * 读取预设
- */
- getPreset() {
- Editor.Ipc.sendToMain('ccc-obfuscated-code:get-preset', this.preset, (err, options) => {
- for (let key in options) {
- this.options[key] = options[key];
- }
- });
- }
- }
- });
- vue.readConfig();
- }
- });
|