New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

wx-to-tt

Package Overview
Dependencies
Maintainers
5
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wx-to-tt - npm Package Compare versions

Comparing version 0.2.5 to 0.2.6-beta

101

dist/index.js

@@ -1,100 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.wx2tt = void 0;
/** wx to tt
* @author
*/
const path_1 = __importDefault(require("path"));
const utils = __importStar(require("./utils/index"));
const log_1 = require("./utils/log");
const transform_1 = require("./transform");
/**
* options.src 源地址
* options.dist 目标地址
* options.log 日志地址
*/
function wx2tt(options, cb) {
return __awaiter(this, void 0, void 0, function* () {
options.isIDE = options.isIDE || false;
log_1.log.init({ isIDE: options.isIDE });
if (!options.src) {
const errorMsg = 'argument options.src is required';
log_1.log.printLog(`⛔ ${errorMsg}`, log_1.Level.ERROR);
cb && cb(errorMsg);
return;
}
const valid = utils.isDirValid(options.src);
if (!valid) {
const errorMsg = `${options.src} is not a wx miniprogram project`;
log_1.log.printLog(`⛔ ${errorMsg}`, log_1.Level.INFO);
cb && cb(errorMsg);
return;
}
options.dist = utils.isDirectory(options.dist)
? options.dist
: utils.getDefaultDest(options.src);
let defaultLog = options.dist || options.src;
if (!utils.isDirectory(defaultLog)) {
defaultLog = path_1.default.dirname(defaultLog);
}
options.log = defaultLog;
const context = Object.assign(Object.assign({}, options), { data: {} });
log_1.log.printLog('🛠️ Transform source project...', log_1.Level.INFO);
try {
yield utils.copyProject(options.src, options.dist);
yield (0, transform_1.transformApi)(context);
yield (0, transform_1.transformView)(context);
yield (0, transform_1.transformScript)(context);
yield (0, transform_1.transformStyle)(context);
yield (0, transform_1.transformConfig)(context);
yield utils.auditCode(context);
log_1.log.printLog('🎊 Congratulations, transform done! Please check transform log in', log_1.Level.SUCCESS);
log_1.log.printLog(`📝 ${path_1.default.resolve(options.log, 'log.txt')}`, log_1.Level.UNDERLINE);
log_1.log.save(options.log);
cb && cb(null, log_1.log.result);
}
catch (err) {
log_1.log.recordLog({
type: 'error',
message: `Transform error: ${err}`,
}, log_1.Level.ERROR, true);
log_1.log.printLog(`📝 ${path_1.default.resolve(options.log, 'log.txt')}`, log_1.Level.UNDERLINE);
log_1.log.save(options.log);
cb && cb(err, log_1.log.result);
}
return log_1.log.result;
});
}
exports.wx2tt = wx2tt;
;
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var o={};if(null!=r)for(var i in r)"default"!==i&&Object.prototype.hasOwnProperty.call(r,i)&&e(o,r,i);return t(o,r),o},o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(i,n){function s(e){try{u(o.next(e))}catch(e){n(e)}}function l(e){try{u(o.throw(e))}catch(e){n(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,l)}u((o=o.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.wx2tt=void 0;const n=i(require("path")),s=r(require("./utils/index")),l=require("./utils/log"),u=require("./transform");exports.wx2tt=function(e,t){return o(this,void 0,void 0,(function*(){if(e.isIDE=e.isIDE||!1,l.log.init({isIDE:e.isIDE}),!e.src){const e="argument options.src is required";return l.log.printLog(`⛔ ${e}`,l.Level.ERROR),void(t&&t(e))}if(!s.isDirValid(e.src)){const r=`${e.src} is not a wx miniprogram project`;return l.log.printLog(`⛔ ${r}`,l.Level.INFO),void(t&&t(r))}e.dist=s.isDirectory(e.dist)?e.dist:s.getDefaultDest(e.src);let r=e.dist||e.src;s.isDirectory(r)||(r=n.default.dirname(r)),e.log=r;const o=Object.assign(Object.assign({},e),{data:{}});l.log.printLog("🛠️ Transform source project...",l.Level.INFO);try{yield s.copyProject(e.src,e.dist),yield(0,u.transformApi)(o),yield(0,u.transformView)(o),yield(0,u.transformScript)(o),yield(0,u.transformStyle)(o),yield(0,u.transformConfig)(o),yield s.auditCode(o),l.log.printLog("🎊 Congratulations, transform done! Please check transform log in",l.Level.SUCCESS),l.log.printLog(`📝 ${n.default.resolve(e.log,"log.txt")}`,l.Level.UNDERLINE),l.log.save(e.log),t&&t(null,l.log.result)}catch(r){l.log.recordLog({type:"error",message:`Transform error: ${r}`},l.Level.ERROR,!0),l.log.printLog(`📝 ${n.default.resolve(e.log,"log.txt")}`,l.Level.UNDERLINE),l.log.save(e.log),t&&t(r,l.log.result)}return l.log.result}))};

@@ -1,27 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parse = void 0;
/**
* 视图内容解析为ast
*
* @file 视图内容解析为ast
*/
const lodash_1 = require("lodash");
const constant_1 = require("../utils/constant");
const index_1 = require("../utils/index");
function parse(options = {}) {
// @ts-ignore
this.Parser = parser;
function parser(doc) {
const { htmlParser, handler } = (0, index_1.getHtmlParser)(options);
htmlParser.end(doc);
return {
type: 'tag',
name: constant_1.FAKE_ROOT,
attribs: {},
children: (0, lodash_1.isArray)(handler.dom) ? handler.dom : [handler.dom],
};
}
}
exports.parse = parse;
;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parse=void 0;const e=require("lodash"),r=require("../utils/constant"),t=require("../utils/index");exports.parse=function(s={}){this.Parser=function(i){const{htmlParser:n,handler:o}=(0,t.getHtmlParser)(s);return n.end(i),{type:"tag",name:r.FAKE_ROOT,attribs:{},children:(0,e.isArray)(o.dom)?o.dom:[o.dom]}}};

@@ -1,89 +0,1 @@

"use strict";
/**
* 视图ast序列化插件
*
* @file 视图ast序列化插件
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.stringify = void 0;
const constant_1 = require("../utils/constant");
const SINGLE_QUOTE = "'";
const DOUBLE_QUOTE = '"';
// 把标签名、属性片段join起来
const join = (...args) => args.filter((arg) => !!arg).join(' ');
function stringify(options = {}) {
// @ts-ignore
this.Compiler = compiler;
function compiler(tree, file) {
if (!tree) {
return '';
}
if (Array.isArray(tree)) {
return tree.map((node) => compiler(node, file)).join('');
}
const { type } = tree;
switch (type) {
case 'tag': {
const children = tree.children;
// 跳过虚假的根节点
if (tree.name === constant_1.FAKE_ROOT) {
return compiler(children, file);
}
const content = children.map((node) => compiler(node, file)).join('');
return nodeToString(tree, content, file);
}
case 'text':
return tree.data;
case 'comment':
return `<!--${tree.data}-->`;
}
return '';
}
}
exports.stringify = stringify;
;
/**
* 生成tag节点的字符串
*
* @param {Object} node tag节点
* @param {string} content 子元素字符串
* @param {VFile} file 文件描述
* @return {string}
*/
function nodeToString(node, content, file) {
const { name, attribs, singleQuoteAttribs = {}, selfclose } = node;
const stringAttribs = attribsToString(attribs, singleQuoteAttribs, file);
return selfclose
? `<${join(name, stringAttribs)} />`
: `<${join(name, stringAttribs)}>${content}</${name}>`;
}
/**
* 生成tag节点属性的字符串
*
* @param {Object} attribs tag节点属性集合
* @param {Object} singleQuoteAttribs tag节点使用单引号的属性集合
* @param {VFile} file 文件描述
* @return {string}
*/
function attribsToString(attribs, singleQuoteAttribs, file) {
if (!attribs) {
return '';
}
return Object.keys(attribs)
.map((key) => {
let value = attribs[key];
if (value === '') {
return key;
}
const quote = singleQuoteAttribs[key] ? SINGLE_QUOTE : DOUBLE_QUOTE;
if (quote === DOUBLE_QUOTE && value.indexOf('\\"') >= 0) {
value = value.replace(/\\"/g, "'");
file.message('Danger \\" in attribute value');
}
if (key !== '') {
return `${key}=${quote}${value}${quote}`;
}
return `${key}`;
})
.join(' ');
}
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.stringify=void 0;const t=require("../utils/constant"),e=(...t)=>t.filter((t=>!!t)).join(" ");exports.stringify=function(r={}){this.Compiler=function r(n,i){if(!n)return"";if(Array.isArray(n))return n.map((t=>r(t,i))).join("");const{type:s}=n;switch(s){case"tag":{const s=n.children;if(n.name===t.FAKE_ROOT)return r(s,i);const o=s.map((t=>r(t,i))).join("");return function(t,r,n){const{name:i,attribs:s,singleQuoteAttribs:o={},selfclose:u}=t,a=function(t,e,r){if(!t)return"";return Object.keys(t).map((n=>{let i=t[n];if(""===i)return n;const s=e[n]?"'":'"';return'"'===s&&i.indexOf('\\"')>=0&&(i=i.replace(/\\"/g,"'"),r.message('Danger \\" in attribute value')),""!==n?`${n}=${s}${i}${s}`:`${n}`})).join(" ")}(s,o,n);return u?`<${e(i,a)} />`:`<${e(i,a)}>${r}</${i}>`}(n,o,i)}case"text":return n.data;case"comment":return`\x3c!--${n.data}--\x3e`}return""}};

@@ -1,154 +0,1 @@

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.wxmlToTtml = void 0;
const script_1 = require("../transform/script");
const compare_json_1 = __importDefault(require("../config/compare.json"));
const constant_1 = require("../utils/constant");
const log_1 = require("../utils/log");
const attr_json_1 = __importDefault(require("../config/attr.json"));
function wxmlToTtml(options = {}) {
const { path: filePath, ctx } = options;
return transform;
function transform(tree, file) {
transformTree(tree, file);
}
function transformTree(tree, file) {
if (tree.type === 'tag') {
const name = tree.name;
const children = tree.children;
componentCheck(name, filePath);
if (name === constant_1.WX_SUFFIX.script) {
tree.name = constant_1.TT_SUFFIX.script;
if (tree.attribs && tree.attribs.src) {
tree = transformScript(tree);
}
else if (tree.children.length > 0) {
const child = tree.children[0];
if (child.type !== 'text') {
log_1.log.recordLog({
type: '编译出错',
message: "wxs 标签内部只支持文本内容"
}, log_1.Level.ERROR, true);
}
else {
const { data } = child;
const reg = constant_1.WX_REGEXP.script;
const _data = (0, script_1.transformScriptContent)(data);
child.data = `\n${_data}\n`;
}
}
}
if (name === 'import' || name === 'include') {
tree = transformImport(tree);
}
tree.children = children.map((node) => transformTree(node, file));
tree = transformDirective(tree, filePath);
}
if (tree.type === 'comment') {
tree = transformComment(tree);
}
return tree;
}
}
exports.wxmlToTtml = wxmlToTtml;
;
function transformScript(node) {
const { attribs } = node;
if (attribs && attribs.src) {
const regexp = /\.wxs$/i;
const src = attribs.src.replace(regexp, `.${constant_1.TT_SUFFIX.script}`);
return Object.assign(Object.assign({}, node), { attribs: Object.assign(Object.assign({}, attribs), { src }) });
}
return node;
}
/**
* 转换import和include标签
*
* @param {Object} node 节点对象
* @param {VFile} file 虚拟文件
* @param {Object} options 转换配置
* @return {Object}
*/
function transformImport(node) {
const { attribs } = node;
if (attribs && attribs.src) {
let src = attribs.src.replace(/\.wxml$/i, `.${constant_1.TT_SUFFIX.view}`);
// src中没有扩展名的添加默认扩展名.ttml
if (!/\w+\.\w+$/.test(src)) {
src += `.${constant_1.TT_SUFFIX.view}`;
}
return Object.assign(Object.assign({}, node), { attribs: Object.assign(Object.assign({}, attribs), { src }) });
}
return node;
}
/**
* 转换注释中的wxml
*/
function transformComment(node) {
const { data } = node;
if (data) {
const newComment = data.replace(/\.wxml$/i, `.${constant_1.TT_SUFFIX.view}`);
return Object.assign(Object.assign({}, node), { data: newComment });
}
return node;
}
/**
* 转换标签上的directive
*
* @param {Object} node 节点对象
* @param {VFile} file 虚拟文件
* @param {Object} options 转换配置
* @return {Object}
*/
function transformDirective(node, filePath) {
const { attribs, singleQuoteAttribs = {} } = node;
if (!attribs) {
return node;
}
if (node.type === 'tag' && attr_json_1.default[node.name]) {
Object.keys(attribs).forEach((attr) => {
if (attr_json_1.default[node.name].indexOf(attr) > -1) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.attribNotSupport,
file: filePath,
message: `<${node.name}> attribute: ${attr} 暂未支持,请参考开发者文档完成适配。`,
}, log_1.Level.WARNING, true);
}
});
}
const newAttribs = Object.keys(attribs).reduce((newAttribs, key) => {
// 删除空wx:前缀
const newKey = key.replace(/^wx:$/, '').replace(/^wx:/, `${constant_1.TT_PREFIX}:`);
const value = attribs[key];
const newValue = value;
newAttribs[newKey] = newValue;
if (singleQuoteAttribs[key]) {
singleQuoteAttribs[newKey] = true;
}
return newAttribs;
}, {});
return Object.assign(Object.assign({}, node), { attribs: newAttribs, singleQuoteAttribs });
}
function componentCheck(name, filePath) {
if (typeof name !== 'string' ||
name === 'import' ||
name === 'template' ||
name === 'include' ||
name === 'wxs')
return;
const { component } = compare_json_1.default;
// 对于自定义组件,目前未加依赖判断
if (!component[name])
return;
const { wx, tt } = component[name];
if (wx && !tt) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.componentNotSupport,
file: filePath,
message: `component: ${name} 暂未支持,请参考开发者文档完成适配。`,
}, log_1.Level.WARNING, true);
}
}
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.wxmlToTtml=void 0;const e=require("../transform/script"),r=t(require("../config/compare.json")),n=require("../utils/constant"),s=require("../utils/log"),i=t(require("../config/attr.json"));exports.wxmlToTtml=function(t={}){const{path:c,ctx:o}=t;return function(t,e){a(t,e)};function a(t,o){if("tag"===t.type){const u=t.name,l=t.children;if(function(t,e){if("string"!=typeof t||"import"===t||"template"===t||"include"===t||"wxs"===t)return;const{component:i}=r.default;if(!i[t])return;const{wx:c,tt:o}=i[t];c&&!o&&s.log.recordLog({type:n.LOG_TYPE.componentNotSupport,file:e,message:`component: ${t} 暂未支持,请参考开发者文档完成适配。`},s.Level.WARNING,!0)}(u,c),u===n.WX_SUFFIX.script)if(t.name=n.TT_SUFFIX.script,t.attribs&&t.attribs.src)t=function(t){const{attribs:e}=t;if(e&&e.src){const r=/\.wxs$/i,s=e.src.replace(r,`.${n.TT_SUFFIX.script}`);return Object.assign(Object.assign({},t),{attribs:Object.assign(Object.assign({},e),{src:s})})}return t}(t);else if(t.children.length>0){const r=t.children[0];if("text"!==r.type)s.log.recordLog({type:"编译出错",message:"wxs 标签内部只支持文本内容"},s.Level.ERROR,!0);else{const{data:t}=r,s=(n.WX_REGEXP.script,(0,e.transformScriptContent)(t));r.data=`\n${s}\n`}}"import"!==u&&"include"!==u||(t=function(t){const{attribs:e}=t;if(e&&e.src){let r=e.src.replace(/\.wxml$/i,`.${n.TT_SUFFIX.view}`);return/\w+\.\w+$/.test(r)||(r+=`.${n.TT_SUFFIX.view}`),Object.assign(Object.assign({},t),{attribs:Object.assign(Object.assign({},e),{src:r})})}return t}(t)),t.children=l.map((t=>a(t,o))),t=function(t,e){const{attribs:r,singleQuoteAttribs:c={}}=t;if(!r)return t;"tag"===t.type&&i.default[t.name]&&Object.keys(r).forEach((r=>{i.default[t.name].indexOf(r)>-1&&s.log.recordLog({type:n.LOG_TYPE.attribNotSupport,file:e,message:`<${t.name}> attribute: ${r} 暂未支持,请参考开发者文档完成适配。`},s.Level.WARNING,!0)}));const o=Object.keys(r).reduce(((t,e)=>{const s=e.replace(/^wx:$/,"").replace(/^wx:/,`${n.TT_PREFIX}:`),i=r[e];return t[s]=i,c[e]&&(c[s]=!0),t}),{});return Object.assign(Object.assign({},t),{attribs:o,singleQuoteAttribs:c})}(t,c)}return"comment"===t.type&&(t=function(t){const{data:e}=t;if(e){const r=e.replace(/\.wxml$/i,`.${n.TT_SUFFIX.view}`);return Object.assign(Object.assign({},t),{data:r})}return t}(t)),t}};

@@ -1,117 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformApi = void 0;
const utils = __importStar(require("../utils"));
const parser = __importStar(require("@babel/parser"));
const traverse_1 = __importDefault(require("@babel/traverse"));
const generator_1 = __importDefault(require("@babel/generator"));
const types = __importStar(require("@babel/types"));
const compare_json_1 = __importDefault(require("../config/compare.json"));
const constant_1 = require("../utils/constant");
const log_1 = require("../utils/log");
function traverseApi(path, filePath) {
if (types.isMemberExpression(path.node) &&
types.isIdentifier(path.node.object, {
name: constant_1.WX_PREFIX,
}) &&
types.isIdentifier(path.node.property)) {
const apiName = path.node.property.name;
if (apiName === 'cloud') {
path.node.object.name = constant_1.TT_PREFIX;
log_1.log.recordLog({
type: constant_1.LOG_TYPE.apiNotSupport,
file: filePath,
message: `api: ${apiName} 暂未支持云开发模式,仅更换前缀,请参考开发者文档完成适配。转换 ${constant_1.WX_PREFIX}.${apiName} -> ${constant_1.TT_PREFIX}.${apiName}`,
}, log_1.Level.WARNING, true);
return;
}
const { api } = compare_json_1.default;
if (api[apiName]) {
path.node.object.name = constant_1.TT_PREFIX;
if (api[apiName][constant_1.WX_PREFIX] && !api[apiName][constant_1.TT_PREFIX]) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.apiNotSupport,
file: filePath,
message: `api: ${apiName} 暂未支持,仅更换前缀,请参考开发者文档完成适配。转换 ${constant_1.WX_PREFIX}.${apiName} -> ${constant_1.TT_PREFIX}.${apiName}`,
}, log_1.Level.WARNING, true);
}
}
else {
path.node.object.name = constant_1.TT_PREFIX;
log_1.log.recordLog({
type: constant_1.LOG_TYPE.apiNotSupport,
file: filePath,
message: `api: ${apiName} 未能识别,请确保该 api 使用正确。转换 ${constant_1.WX_PREFIX}.${apiName} -> ${constant_1.TT_PREFIX}.${apiName}`,
}, log_1.Level.WARNING, true);
}
}
}
function transformApiContent(content, filePath) {
const ast = parser.parse(content, {
sourceType: 'module',
});
(0, traverse_1.default)(ast, {
enter(path) {
traverseApi(path, filePath);
},
});
const _content = (0, generator_1.default)(ast, {}, content);
return _content.code;
}
const transformApi = function (ctx) {
return __awaiter(this, void 0, void 0, function* () {
try {
const files = yield utils.traverseFiles(ctx, 'js');
if (files.length < 1)
return;
for (const i in files) {
const filePath = files[i];
const content = yield utils.getContent(filePath);
const _content = transformApiContent(content, filePath);
yield utils.saveFile(filePath, _content);
}
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformApiFile,
message: '🍻 Successfully transform js files',
}, log_1.Level.INFO, true);
}
catch (err) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformApiFile,
message: `transform js files error: ${err}`,
}, log_1.Level.ERROR, true);
}
});
};
exports.transformApi = transformApi;
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var o={};if(null!=r)for(var n in r)"default"!==n&&Object.prototype.hasOwnProperty.call(r,n)&&e(o,r,n);return t(o,r),o},o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,i){function s(e){try{u(o.next(e))}catch(e){i(e)}}function a(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}u((o=o.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformApi=void 0;const i=r(require("../utils")),s=r(require("@babel/parser")),a=n(require("@babel/traverse")),u=n(require("@babel/generator")),c=r(require("@babel/types")),l=n(require("../config/compare.json")),f=require("../utils/constant"),p=require("../utils/log");function d(e,t){const r=s.parse(e,{sourceType:"module"});(0,a.default)(r,{enter(e){!function(e,t){if(c.isMemberExpression(e.node)&&c.isIdentifier(e.node.object,{name:f.WX_PREFIX})&&c.isIdentifier(e.node.property)){const r=e.node.property.name;if("cloud"===r)return e.node.object.name=f.TT_PREFIX,void p.log.recordLog({type:f.LOG_TYPE.apiNotSupport,file:t,message:`api: ${r} 暂未支持云开发模式,仅更换前缀,请参考开发者文档完成适配。转换 ${f.WX_PREFIX}.${r} -> ${f.TT_PREFIX}.${r}`},p.Level.WARNING,!0);const{api:o}=l.default;o[r]?(e.node.object.name=f.TT_PREFIX,o[r][f.WX_PREFIX]&&!o[r][f.TT_PREFIX]&&p.log.recordLog({type:f.LOG_TYPE.apiNotSupport,file:t,message:`api: ${r} 暂未支持,仅更换前缀,请参考开发者文档完成适配。转换 ${f.WX_PREFIX}.${r} -> ${f.TT_PREFIX}.${r}`},p.Level.WARNING,!0)):(e.node.object.name=f.TT_PREFIX,p.log.recordLog({type:f.LOG_TYPE.apiNotSupport,file:t,message:`api: ${r} 未能识别,请确保该 api 使用正确。转换 ${f.WX_PREFIX}.${r} -> ${f.TT_PREFIX}.${r}`},p.Level.WARNING,!0))}}(e,t)}});return(0,u.default)(r,{},e).code}exports.transformApi=function(e){return o(this,void 0,void 0,(function*(){try{const t=yield i.traverseFiles(e,"js");if(t.length<1)return;for(const e in t){const r=t[e],o=d(yield i.getContent(r),r);yield i.saveFile(r,o)}p.log.recordLog({type:f.LOG_TYPE.transformApiFile,message:"🍻 Successfully transform js files"},p.Level.INFO,!0)}catch(e){p.log.recordLog({type:f.LOG_TYPE.transformApiFile,message:`transform js files error: ${e}`},p.Level.ERROR,!0)}}))};

@@ -1,66 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformConfig = void 0;
const utils = __importStar(require("../utils"));
const constant_1 = require("../utils/constant");
const log_1 = require("../utils/log");
function parserConfig(content, filePath) {
if (content.plugins) {
Object.keys(content.plugins).forEach((name) => {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.configNotSupport,
file: filePath,
message: `plugin: ${name} 暂未支持引用插件,请参考开发者文档完成适配。`,
}, log_1.Level.WARNING, true);
});
}
if (content.useExtendedLib &&
Object.keys(content.useExtendedLib).length > 0) {
Object.keys(content.useExtendedLib).forEach((lib) => {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.configNotSupport,
file: filePath,
message: `extendedLib: ${lib} 暂未支持引用扩展库,请参考开发者文档完成适配。`,
}, log_1.Level.WARNING, true);
});
}
}
// 主要是分包加载相关的配置转换
const transformConfig = function (ctx) {
return __awaiter(this, void 0, void 0, function* () {
const files = yield utils.traverseFiles(ctx, 'json');
for (let i in files) {
const content = yield utils.getJSONContent(files[i]);
parserConfig(content, files[i]);
}
});
};
exports.transformConfig = transformConfig;
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=this&&this.__importStar||function(n){if(n&&n.__esModule)return n;var i={};if(null!=n)for(var o in n)"default"!==o&&Object.prototype.hasOwnProperty.call(n,o)&&e(i,n,o);return t(i,n),i},i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(o,r){function u(e){try{s(i.next(e))}catch(e){r(e)}}function c(e){try{s(i.throw(e))}catch(e){r(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(u,c)}s((i=i.apply(e,t||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformConfig=void 0;const o=n(require("../utils")),r=require("../utils/constant"),u=require("../utils/log");function c(e,t){e.plugins&&Object.keys(e.plugins).forEach((e=>{u.log.recordLog({type:r.LOG_TYPE.configNotSupport,file:t,message:`plugin: ${e} 暂未支持引用插件,请参考开发者文档完成适配。`},u.Level.WARNING,!0)})),e.useExtendedLib&&Object.keys(e.useExtendedLib).length>0&&Object.keys(e.useExtendedLib).forEach((e=>{u.log.recordLog({type:r.LOG_TYPE.configNotSupport,file:t,message:`extendedLib: ${e} 暂未支持引用扩展库,请参考开发者文档完成适配。`},u.Level.WARNING,!0)}))}exports.transformConfig=function(e){return i(this,void 0,void 0,(function*(){const t=yield o.traverseFiles(e,"json");for(let e in t){c(yield o.getJSONContent(t[e]),t[e])}}))};

@@ -1,13 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformView = exports.transformScript = exports.transformConfig = exports.transformApi = exports.transformStyle = void 0;
const style_1 = require("./style");
Object.defineProperty(exports, "transformStyle", { enumerable: true, get: function () { return style_1.transformStyle; } });
const api_1 = require("./api");
Object.defineProperty(exports, "transformApi", { enumerable: true, get: function () { return api_1.transformApi; } });
const config_1 = require("./config");
Object.defineProperty(exports, "transformConfig", { enumerable: true, get: function () { return config_1.transformConfig; } });
const script_1 = require("./script");
Object.defineProperty(exports, "transformScript", { enumerable: true, get: function () { return script_1.transformScript; } });
const view_1 = require("./view");
Object.defineProperty(exports, "transformView", { enumerable: true, get: function () { return view_1.transformView; } });
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformView=exports.transformScript=exports.transformConfig=exports.transformApi=exports.transformStyle=void 0;const r=require("./style");Object.defineProperty(exports,"transformStyle",{enumerable:!0,get:function(){return r.transformStyle}});const e=require("./api");Object.defineProperty(exports,"transformApi",{enumerable:!0,get:function(){return e.transformApi}});const t=require("./config");Object.defineProperty(exports,"transformConfig",{enumerable:!0,get:function(){return t.transformConfig}});const n=require("./script");Object.defineProperty(exports,"transformScript",{enumerable:!0,get:function(){return n.transformScript}});const o=require("./view");Object.defineProperty(exports,"transformView",{enumerable:!0,get:function(){return o.transformView}});

@@ -1,92 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformScript = exports.transformScriptContent = void 0;
const constant_1 = require("../utils/constant");
const log_1 = require("../utils/log");
const utils = __importStar(require("../utils"));
const parser = __importStar(require("@babel/parser"));
const traverse_1 = __importDefault(require("@babel/traverse"));
const generator_1 = __importDefault(require("@babel/generator"));
const types = __importStar(require("@babel/types"));
function traverseScript(path) {
if (types.isCallExpression(path.node) &&
types.isIdentifier(path.node.callee, {
name: 'require',
})) {
for (const i in path.node.arguments) {
const _node = path.node.arguments[i];
if (types.isStringLiteral(_node)) {
_node.value = _node.value.replace(constant_1.WX_REGEXP.script, `.${constant_1.TT_SUFFIX.script}`);
}
}
}
}
function transformScriptContent(content) {
const ast = parser.parse(content, {
sourceType: 'module',
});
(0, traverse_1.default)(ast, {
enter(path) {
traverseScript(path);
},
});
const _content = (0, generator_1.default)(ast, {}, content);
return _content.code;
}
exports.transformScriptContent = transformScriptContent;
const transformScript = function (ctx) {
return __awaiter(this, void 0, void 0, function* () {
try {
const files = yield utils.traverseFiles(ctx, constant_1.TT_SUFFIX.script);
if (files.length < 1)
return;
for (const i in files) {
const content = yield utils.getContent(files[i]);
const _content = transformScriptContent(content);
yield utils.saveFile(files[i], _content);
}
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformScriptFile,
message: '🍻 Successfully transform wxs files',
}, log_1.Level.INFO, true);
}
catch (err) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformScriptFile,
message: `transform wxs files error: ${err}`,
}, log_1.Level.ERROR, true);
}
});
};
exports.transformScript = transformScript;
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var n={};if(null!=r)for(var i in r)"default"!==i&&Object.prototype.hasOwnProperty.call(r,i)&&e(n,r,i);return t(n,r),n},n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{a(n.next(e))}catch(e){o(e)}}function u(e){try{a(n.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,u)}a((n=n.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformScript=exports.transformScriptContent=void 0;const o=require("../utils/constant"),s=require("../utils/log"),u=r(require("../utils")),a=r(require("@babel/parser")),c=i(require("@babel/traverse")),l=i(require("@babel/generator")),f=r(require("@babel/types"));function d(e){const t=a.parse(e,{sourceType:"module"});(0,c.default)(t,{enter(e){!function(e){if(f.isCallExpression(e.node)&&f.isIdentifier(e.node.callee,{name:"require"}))for(const t in e.node.arguments){const r=e.node.arguments[t];f.isStringLiteral(r)&&(r.value=r.value.replace(o.WX_REGEXP.script,`.${o.TT_SUFFIX.script}`))}}(e)}});return(0,l.default)(t,{},e).code}exports.transformScriptContent=d;exports.transformScript=function(e){return n(this,void 0,void 0,(function*(){try{const t=yield u.traverseFiles(e,o.TT_SUFFIX.script);if(t.length<1)return;for(const e in t){const r=d(yield u.getContent(t[e]));yield u.saveFile(t[e],r)}s.log.recordLog({type:o.LOG_TYPE.transformScriptFile,message:"🍻 Successfully transform wxs files"},s.Level.INFO,!0)}catch(e){s.log.recordLog({type:o.LOG_TYPE.transformScriptFile,message:`transform wxs files error: ${e}`},s.Level.ERROR,!0)}}))};

@@ -1,62 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformStyle = void 0;
const utils = __importStar(require("../utils"));
const log_1 = require("../utils/log");
const constant_1 = require("../utils/constant");
function transformStyleContent(content) {
return content.replace(/\.wxss/gi, `.${constant_1.TT_SUFFIX.style}`);
}
const transformStyle = function (ctx) {
return __awaiter(this, void 0, void 0, function* () {
try {
const files = yield utils.traverseFiles(ctx, constant_1.TT_SUFFIX.style);
if (files.length < 1)
return;
for (const i in files) {
const content = yield utils.getContent(files[i]);
const _content = transformStyleContent(content);
yield utils.saveFile(files[i], _content);
}
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformStyleFile,
message: '🍻 Successfully transform wxss files',
}, log_1.Level.INFO, true);
}
catch (err) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformStyleFile,
message: `transform wxss files error: ${err}`,
}, log_1.Level.ERROR, true);
}
});
};
exports.transformStyle = transformStyle;
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var n={};if(null!=r)for(var i in r)"default"!==i&&Object.prototype.hasOwnProperty.call(r,i)&&e(n,r,i);return t(n,r),n},n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{u(n.next(e))}catch(e){o(e)}}function l(e){try{u(n.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,l)}u((n=n.apply(e,t||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformStyle=void 0;const i=r(require("../utils")),o=require("../utils/log"),s=require("../utils/constant");function l(e){return e.replace(/\.wxss/gi,`.${s.TT_SUFFIX.style}`)}exports.transformStyle=function(e){return n(this,void 0,void 0,(function*(){try{const t=yield i.traverseFiles(e,s.TT_SUFFIX.style);if(t.length<1)return;for(const e in t){const r=l(yield i.getContent(t[e]));yield i.saveFile(t[e],r)}o.log.recordLog({type:s.LOG_TYPE.transformStyleFile,message:"🍻 Successfully transform wxss files"},o.Level.INFO,!0)}catch(e){o.log.recordLog({type:s.LOG_TYPE.transformStyleFile,message:`transform wxss files error: ${e}`},o.Level.ERROR,!0)}}))};

@@ -1,77 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformView = void 0;
const stringify_1 = require("../plugins/stringify");
const constant_1 = require("../utils/constant");
const log_1 = require("../utils/log");
const unified_1 = __importDefault(require("unified"));
const utils = __importStar(require("../utils"));
const wxml_to_ttml_1 = require("../plugins/wxml-to-ttml");
const parse_1 = require("../plugins/parse");
// 转换视图文件
function transformViewContent(path, content, ctx) {
return (0, unified_1.default)()
.use(parse_1.parse)
.use(wxml_to_ttml_1.wxmlToTtml, {
path,
ctx,
})
.use(stringify_1.stringify)
.process(utils.toVFile(path, content));
}
const transformView = function (ctx) {
return __awaiter(this, void 0, void 0, function* () {
try {
const files = yield utils.traverseFiles(ctx, constant_1.TT_SUFFIX.view);
if (files.length < 1)
return;
for (const i in files) {
const content = yield utils.getContent(files[i]);
const _content = yield transformViewContent(files[i], content, ctx);
yield utils.saveFile(files[i], String(_content));
}
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformViewFile,
message: '🍻 Successfully transform wxml files',
}, log_1.Level.INFO, true);
}
catch (err) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.transformViewFile,
message: `transform wxml files error: ${err}`,
}, log_1.Level.ERROR, true);
}
});
};
exports.transformView = transformView;
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(null!=r)for(var n in r)"default"!==n&&Object.prototype.hasOwnProperty.call(r,n)&&e(i,r,n);return t(i,r),i},i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,o){function u(e){try{l(i.next(e))}catch(e){o(e)}}function s(e){try{l(i.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,s)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.transformView=void 0;const o=require("../plugins/stringify"),u=require("../utils/constant"),s=require("../utils/log"),l=n(require("unified")),c=r(require("../utils")),a=require("../plugins/wxml-to-ttml"),f=require("../plugins/parse");function d(e,t,r){return(0,l.default)().use(f.parse).use(a.wxmlToTtml,{path:e,ctx:r}).use(o.stringify).process(c.toVFile(e,t))}exports.transformView=function(e){return i(this,void 0,void 0,(function*(){try{const t=yield c.traverseFiles(e,u.TT_SUFFIX.view);if(t.length<1)return;for(const r in t){const i=yield c.getContent(t[r]),n=yield d(t[r],i,e);yield c.saveFile(t[r],String(n))}s.log.recordLog({type:u.LOG_TYPE.transformViewFile,message:"🍻 Successfully transform wxml files"},s.Level.INFO,!0)}catch(e){s.log.recordLog({type:u.LOG_TYPE.transformViewFile,message:`transform wxml files error: ${e}`},s.Level.ERROR,!0)}}))};

@@ -1,50 +0,1 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LOG_TYPE = exports.FAKE_ROOT = exports.TT_SUFFIX = exports.WX_SUFFIX = exports.WX_REGEXP = exports.TT_PREFIX = exports.WX_PREFIX = exports.LOG_COLOR_TYPE = exports.HOST_MAP = void 0;
exports.HOST_MAP = {
13: '今日头条',
35: '今日头条极速版',
1128: '抖音',
};
exports.LOG_COLOR_TYPE = {
info: 'cyan',
error: 'red',
success: 'green',
warning: 'yellow',
};
exports.WX_PREFIX = 'wx';
exports.TT_PREFIX = 'tt';
exports.WX_REGEXP = {
view: /\.wxml$/,
style: /\.wxss$/,
script: /\.wxs$/,
};
exports.WX_SUFFIX = {
view: 'wxml',
style: 'wxss',
script: 'wxs',
};
exports.TT_SUFFIX = {
view: "ttml" /* VIEW */,
style: "ttss" /* STYLE */,
script: "sjs" /* SCRIPT */
};
// 虚拟根节点名称
exports.FAKE_ROOT = Symbol('fake-root');
// 日志类型
exports.LOG_TYPE = {
// 文件名后缀转换
wxml2ttml: 'wxml -> ttml',
wxss2ttss: 'wxss -> ttss',
wxs2sjs: 'wxs -> sjs',
// 文件内容转换
transformViewFile: 'transform view file',
transformStyleFile: 'transform style file',
transformScriptFile: 'transform wxs file',
transformApiFile: 'transform api file',
// 能力支持
apiNotSupport: 'api is not supported',
componentNotSupport: 'component is not supported',
configNotSupport: 'config is not supported',
attribNotSupport: 'attribute is not supported',
};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LOG_TYPE=exports.FAKE_ROOT=exports.TT_SUFFIX=exports.WX_SUFFIX=exports.WX_REGEXP=exports.TT_PREFIX=exports.WX_PREFIX=exports.LOG_COLOR_TYPE=exports.HOST_MAP=void 0,exports.HOST_MAP={13:"今日头条",35:"今日头条极速版",1128:"抖音"},exports.LOG_COLOR_TYPE={info:"cyan",error:"red",success:"green",warning:"yellow"},exports.WX_PREFIX="wx",exports.TT_PREFIX="tt",exports.WX_REGEXP={view:/\.wxml$/,style:/\.wxss$/,script:/\.wxs$/},exports.WX_SUFFIX={view:"wxml",style:"wxss",script:"wxs"},exports.TT_SUFFIX={view:"ttml",style:"ttss",script:"sjs"},exports.FAKE_ROOT=Symbol("fake-root"),exports.LOG_TYPE={wxml2ttml:"wxml -> ttml",wxss2ttss:"wxss -> ttss",wxs2sjs:"wxs -> sjs",transformViewFile:"transform view file",transformStyleFile:"transform style file",transformScriptFile:"transform wxs file",transformApiFile:"transform api file",apiNotSupport:"api is not supported",componentNotSupport:"component is not supported",configNotSupport:"config is not supported",attribNotSupport:"attribute is not supported"};

@@ -1,369 +0,1 @@

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.auditCode = exports.getDefaultDest = exports.toVFile = exports.saveLog = exports.saveFile = exports.getContentSync = exports.getJSONContent = exports.getContent = exports.isDirectory = exports.copyProject = exports.traverseFiles = exports.getHtmlParser = exports.isDirValid = void 0;
/**
* @file wx convert to tt, util file
*/
const fs_extra_1 = __importDefault(require("fs-extra"));
const recursive_copy_1 = __importDefault(require("recursive-copy"));
const mkdirp_1 = __importDefault(require("mkdirp"));
const path_1 = __importDefault(require("path"));
const vfile_1 = __importDefault(require("vfile"));
const glob_1 = __importDefault(require("glob"));
const stricter_htmlparser2_1 = require("stricter-htmlparser2");
const constant_1 = require("./constant");
const log_1 = require("./log");
const lodash_1 = require("lodash");
const isDirValid = function (path) {
const appJsonPath = `${path}/app.json`;
try {
const res = fs_extra_1.default.statSync(appJsonPath);
return res.isFile();
}
catch (err) {
return false;
}
};
exports.isDirValid = isDirValid;
const getHtmlParser = function (options) {
options = Object.assign({}, {
xmlMode: false,
lowerCaseAttributeNames: false,
recognizeSelfClosing: true,
lowerCaseTags: false,
}, options);
const handler = new stricter_htmlparser2_1.DomHandler();
const htmlParser = new stricter_htmlparser2_1.Parser(handler, options);
return { htmlParser, handler };
};
exports.getHtmlParser = getHtmlParser;
/**
*
* @param {object} config 配置文件
* @param {string} suffix 文件名后缀
* @returns
*/
const traverseFiles = function (config, suffix) {
return __awaiter(this, void 0, void 0, function* () {
const files = yield new Promise((resolve) => {
let filePath = config.dist;
let extname;
const isDir = isDirectory(config.src);
if (isDir) {
filePath = `${filePath}/**/*.${suffix}`;
extname = path_1.default.extname(filePath);
}
else {
const newFileName = renameFile(config.src);
filePath = path_1.default.resolve(filePath, path_1.default.basename(newFileName));
extname = path_1.default.extname(filePath);
}
if (extname === `.${suffix}`) {
if (suffix == 'js') {
// 针对 js 文件,忽略部分文件
(0, glob_1.default)(filePath, {
ignore: ['**/node_modules/**/*.js', '**/*.ttpkg.js'],
nodir: true,
}, (err, res) => {
resolve(err ? [] : res);
});
}
else {
if (isDir) {
(0, glob_1.default)(filePath, { nodir: true }, (err, res) => {
resolve(err ? [] : res);
});
}
else {
resolve([filePath]);
}
}
}
else {
resolve([]);
}
});
return files;
});
};
exports.traverseFiles = traverseFiles;
/**
* 拷贝项目
*
* @param {string} fromPath 目标目录路径
* @param {string} toPath 生成目录路径
* @return {Promise}
*/
const copyProject = function (fromPath, toPath) {
if (isDirectory(fromPath)) {
return copyDirectory(fromPath, toPath);
}
// 支持转换入口为单一文件
return copyFile(fromPath, toPath);
};
exports.copyProject = copyProject;
/**
* 拷贝目录
*
* @param {string} fromPath 目标目录路径
* @param {string} toPath 生成目录路径
* @return {Promise}
*/
function copyDirectory(fromPath, toPath) {
return __awaiter(this, void 0, void 0, function* () {
const ignoreReg = /(node_modules|DS_store)/i;
const arr = [];
const lists = fs_extra_1.default
.readdirSync(fromPath)
.filter((item) => !ignoreReg.test(item));
const isToPathDir = isDirectory(toPath);
const _toPath = isToPathDir ? toPath : path_1.default.dirname(toPath);
// 如果目标路径不是目录,则将文件复制到对应的文件夹下,并给出警告
if (!isToPathDir) {
// TODO 警告提示
}
const options = {
overwrite: true,
expand: true,
dot: true,
rename(filePath) {
// 转换深层文件夹下的文件名后缀
return renameFileExt(filePath);
},
};
for (const i in lists) {
const fileName = !isDirectory(lists[i])
? lists[i]
.replace(constant_1.WX_REGEXP.view, `.${constant_1.TT_SUFFIX.view}`)
.replace(constant_1.WX_REGEXP.style, `.${constant_1.TT_SUFFIX.style}`)
.replace(constant_1.WX_REGEXP.script, `.${constant_1.TT_SUFFIX.script}`)
: lists[i];
// 只是转换跟目标目录同级的文件名后缀
arr.push((0, recursive_copy_1.default)(path_1.default.join(fromPath, lists[i]), path_1.default.join(_toPath, fileName), options));
}
const res = yield Promise.all(arr);
printCopyInfo(res);
return res;
});
}
/**
* 记录修改了后缀的文件信息
* @param {array} records
* @returns
*/
function printCopyInfo(records) {
if (!(0, lodash_1.isArray)(records))
return;
for (let i in records) {
if ((0, lodash_1.isArray)(records[i])) {
printCopyInfo(records[i]);
continue;
}
const { src, dest, stats } = records[i];
if (stats.isDirectory())
continue;
if (constant_1.WX_REGEXP.view.test(src)) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.wxml2ttml,
file: dest,
message: `转换视图文件后缀 wxml -> ttml`,
}, log_1.Level.INFO);
continue;
}
if (constant_1.WX_REGEXP.style.test(src)) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.wxss2ttss,
file: dest,
message: `转换样式文件后缀 wxss -> ttss`,
}, log_1.Level.INFO);
continue;
}
if (constant_1.WX_REGEXP.script.test(src)) {
log_1.log.recordLog({
type: constant_1.LOG_TYPE.wxs2sjs,
file: dest,
message: `转换 wxs 文件后缀 wxs -> sjs`,
}, log_1.Level.INFO);
continue;
}
}
}
function renameFile(name) {
const reg = constant_1.WX_REGEXP;
let specialType;
Object.keys(reg).forEach((type) => {
if (reg[type].test(name)) {
specialType = type;
}
});
return specialType
? name.replace(reg[specialType], `.${constant_1.TT_SUFFIX[specialType]}`)
: name;
}
/**
* 拷贝单文件
*
* @param {string} fromPath 目标文件路径
* @param {string} toPath 生成文件路径
* @return {Promise}
*/
function copyFile(fromPath, toPath) {
let fileName = path_1.default.basename(fromPath);
fileName = renameFile(fileName);
if (isDirectory(toPath)) {
toPath = path_1.default.join(toPath, fileName);
}
else {
toPath = path_1.default.join(path_1.default.dirname(toPath), fileName);
}
return fs_extra_1.default.copy(fromPath, toPath);
}
/**
* 重命名文件扩展名
*
* @param {string} filePath 文件路径
* @return {string} 处理后路径
*/
function renameFileExt(filePath) {
if (isDirectory(filePath))
return filePath;
if (constant_1.WX_REGEXP.view.test(filePath)) {
return filePath.replace(constant_1.WX_REGEXP.view, `.${constant_1.TT_SUFFIX.view}`);
}
if (constant_1.WX_REGEXP.style.test(filePath)) {
return filePath.replace(constant_1.WX_REGEXP.style, `.${constant_1.TT_SUFFIX.style}`);
}
if (constant_1.WX_REGEXP.script.test(filePath)) {
return filePath.replace(constant_1.WX_REGEXP.script, `.${constant_1.TT_SUFFIX.script}`);
}
return filePath;
}
/**
* 判断路径是否为目录
*
* @param {string} entryPath 路径
* @return {boolean}
*/
function isDirectory(entryPath) {
return !path_1.default.extname(entryPath);
}
exports.isDirectory = isDirectory;
// get content
const getContent = function (filepath) {
return new Promise((resolve) => {
fs_extra_1.default.readFile(filepath, (err, con) => {
resolve(con.toString());
});
});
};
exports.getContent = getContent;
const getJSONContent = function (filepath) {
return new Promise((resolve) => {
fs_extra_1.default.readJSON(filepath, (err, con) => {
resolve(con);
});
});
};
exports.getJSONContent = getJSONContent;
// get content sync
const getContentSync = function (filepath) {
return fs_extra_1.default.readFileSync(filepath).toString();
};
exports.getContentSync = getContentSync;
// write content
const saveFile = function (path, con) {
return new Promise((resolve, reject) => {
fs_extra_1.default.writeFile(path, con, (error) => {
if (error) {
reject(error);
}
else {
resolve(true);
}
});
});
};
exports.saveFile = saveFile;
// write content
const saveLog = function (ContentPath, con) {
return new Promise((resolve, reject) => {
(0, mkdirp_1.default)(path_1.default.dirname(ContentPath), (err) => {
if (err) {
reject(err);
}
else {
fs_extra_1.default.writeFileSync(ContentPath, con);
}
});
});
};
exports.saveLog = saveLog;
/**
* 创建虚拟文件,并添加关联文件
*
* @param {string} filePath 文件路径
* @param {string} contents 文件内容
* @return {VFile}
*/
const toVFile = function (filePath, contents) {
const file = (0, vfile_1.default)({ path: filePath, contents });
const related = {
style: constant_1.TT_SUFFIX.style,
view: constant_1.TT_SUFFIX.view,
js: 'js',
config: 'json',
script: constant_1.TT_SUFFIX.script,
};
const { cwd, dirname, stem, extname } = file;
file.data.relatedFiles = Object.keys(related).reduce((prev, type) => {
const ext = `.${related[type]}`;
if (ext !== extname) {
const filePath = path_1.default.resolve(cwd, dirname, stem + ext);
fs_extra_1.default.existsSync(filePath) && (prev[type] = filePath);
}
return prev;
}, {});
return file;
};
exports.toVFile = toVFile;
const getDefaultDest = function (dist) {
return path_1.default.join(path_1.default.dirname(dist), `${path_1.default.basename(dist)}-tt`);
};
exports.getDefaultDest = getDefaultDest;
const auditCode = function (ctx) {
return __awaiter(this, void 0, void 0, function* () {
try {
const audit = require('tma-code-audit');
const filePath = ctx.dist;
const res = yield audit(filePath);
Object.keys(res).forEach((item) => {
const name = item.startsWith('$') ? item.slice(1) : item;
const type = item.startsWith('$') ? 'component:' : 'api:';
// @ts-ignore
const hosts = res[item].map((code) => constant_1.HOST_MAP[code]).join(', ');
log_1.log.recordLog({
type: type.indexOf('api') > -1
? constant_1.LOG_TYPE.apiNotSupport
: constant_1.LOG_TYPE.componentNotSupport,
message: `${type} ${name} 在宿主${hosts}中暂未支持。`,
}, log_1.Level.WARNING, true);
});
}
catch (e) {
log_1.log.recordLog(`audit code error: ${e}`, log_1.Level.ERROR, true);
}
});
};
exports.auditCode = auditCode;
"use strict";var e=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(s,o){function i(e){try{u(n.next(e))}catch(e){o(e)}}function a(e){try{u(n.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.auditCode=exports.getDefaultDest=exports.toVFile=exports.saveLog=exports.saveFile=exports.getContentSync=exports.getJSONContent=exports.getContent=exports.isDirectory=exports.copyProject=exports.traverseFiles=exports.getHtmlParser=exports.isDirValid=void 0;const r=t(require("fs-extra")),n=t(require("recursive-copy")),s=t(require("mkdirp")),o=t(require("path")),i=t(require("vfile")),a=t(require("glob")),u=require("stricter-htmlparser2"),l=require("./constant"),c=require("./log"),d=require("lodash");exports.isDirValid=function(e){const t=`${e}/app.json`;try{return r.default.statSync(t).isFile()}catch(e){return!1}};exports.getHtmlParser=function(e){e=Object.assign({},{xmlMode:!1,lowerCaseAttributeNames:!1,recognizeSelfClosing:!0,lowerCaseTags:!1},e);const t=new u.DomHandler;return{htmlParser:new u.Parser(t,e),handler:t}};exports.traverseFiles=function(t,r){return e(this,void 0,void 0,(function*(){return yield new Promise((e=>{let n,s=t.dist;const i=m(t.src);if(i)s=`${s}/**/*.${r}`,n=o.default.extname(s);else{const e=x(t.src);s=o.default.resolve(s,o.default.basename(e)),n=o.default.extname(s)}n===`.${r}`?"js"==r?(0,a.default)(s,{ignore:["**/node_modules/**/*.js","**/*.ttpkg.js"],nodir:!0},((t,r)=>{e(t?[]:r)})):i?(0,a.default)(s,{nodir:!0},((t,r)=>{e(t?[]:r)})):e([s]):e([])}))}))};function f(e){return{overwrite:!0,expand:!0,dot:!0,rename:t=>function(e,t){if(m(o.default.join(e,t)))return t;if(l.WX_REGEXP.view.test(t))return t.replace(l.WX_REGEXP.view,`.${l.TT_SUFFIX.view}`);if(l.WX_REGEXP.style.test(t))return t.replace(l.WX_REGEXP.style,`.${l.TT_SUFFIX.style}`);if(l.WX_REGEXP.script.test(t))return t.replace(l.WX_REGEXP.script,`.${l.TT_SUFFIX.script}`);return t}(e,t)}}function p(e){if((0,d.isArray)(e))for(let t in e){if((0,d.isArray)(e[t])){p(e[t]);continue}const{src:r,dest:n,stats:s}=e[t];s.isDirectory()||(l.WX_REGEXP.view.test(r)?c.log.recordLog({type:l.LOG_TYPE.wxml2ttml,file:n,message:"转换视图文件后缀 wxml -> ttml"},c.Level.INFO):l.WX_REGEXP.style.test(r)?c.log.recordLog({type:l.LOG_TYPE.wxss2ttss,file:n,message:"转换样式文件后缀 wxss -> ttss"},c.Level.INFO):l.WX_REGEXP.script.test(r)&&c.log.recordLog({type:l.LOG_TYPE.wxs2sjs,file:n,message:"转换 wxs 文件后缀 wxs -> sjs"},c.Level.INFO))}}function x(e){const t=l.WX_REGEXP;let r;return Object.keys(t).forEach((n=>{t[n].test(e)&&(r=n)})),r?e.replace(t[r],`.${l.TT_SUFFIX[r]}`):e}function m(e){return!!e&&r.default.statSync(e).isDirectory()}exports.copyProject=function(t,s){return m(t)?function(t,s){return e(this,void 0,void 0,(function*(){const e=/(node_modules|DS_store)/i,i=[],a=r.default.readdirSync(t).filter((t=>!e.test(t))),u=m(s),c=u?s:o.default.dirname(s);for(const e in a){const r=m(o.default.join(t,a[e]))?a[e]:a[e].replace(l.WX_REGEXP.view,`.${l.TT_SUFFIX.view}`).replace(l.WX_REGEXP.style,`.${l.TT_SUFFIX.style}`).replace(l.WX_REGEXP.script,`.${l.TT_SUFFIX.script}`);i.push((0,n.default)(o.default.join(t,a[e]),o.default.join(c,r),f(o.default.join(t,a[e]))))}const d=yield Promise.all(i);return p(d),d}))}(t,s):function(e,t){let n=o.default.basename(e);n=x(n),t=m(t)?o.default.join(t,n):o.default.join(o.default.dirname(t),n);return r.default.copy(e,t)}(t,s)},exports.isDirectory=m;exports.getContent=function(e){return new Promise((t=>{r.default.readFile(e,((e,r)=>{t(r.toString())}))}))};exports.getJSONContent=function(e){return new Promise((t=>{r.default.readJSON(e,((e,r)=>{t(r)}))}))};exports.getContentSync=function(e){return r.default.readFileSync(e).toString()};exports.saveFile=function(e,t){return new Promise(((n,s)=>{r.default.writeFile(e,t,(e=>{e?s(e):n(!0)}))}))};exports.saveLog=function(e,t){return new Promise(((n,i)=>{(0,s.default)(o.default.dirname(e),(n=>{n?i(n):r.default.writeFileSync(e,t)}))}))};exports.toVFile=function(e,t){const n=(0,i.default)({path:e,contents:t}),s={style:l.TT_SUFFIX.style,view:l.TT_SUFFIX.view,js:"js",config:"json",script:l.TT_SUFFIX.script},{cwd:a,dirname:u,stem:c,extname:d}=n;return n.data.relatedFiles=Object.keys(s).reduce(((e,t)=>{const n=`.${s[t]}`;if(n!==d){const s=o.default.resolve(a,u,c+n);r.default.existsSync(s)&&(e[t]=s)}return e}),{}),n};exports.getDefaultDest=function(e){return o.default.join(o.default.dirname(e),`${o.default.basename(e)}-tt`)};exports.auditCode=function(t){return e(this,void 0,void 0,(function*(){try{const e=require("tma-code-audit"),r=t.dist,n=yield e(r);Object.keys(n).forEach((e=>{const t=e.startsWith("$")?e.slice(1):e,r=e.startsWith("$")?"component:":"api:",s=n[e].map((e=>l.HOST_MAP[e])).join(", ");c.log.recordLog({type:r.indexOf("api")>-1?l.LOG_TYPE.apiNotSupport:l.LOG_TYPE.componentNotSupport,message:`${r} ${t} 在宿主${s}中暂未支持。`},c.Level.WARNING,!0)}))}catch(e){c.log.recordLog(`audit code error: ${e}`,c.Level.ERROR,!0)}}))};

@@ -1,202 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.log = exports.Level = void 0;
const constant_1 = require("./constant");
const chalk_1 = __importDefault(require("chalk"));
const utils = __importStar(require("./index"));
var Level;
(function (Level) {
Level["SUCCESS"] = "success";
Level["ERROR"] = "error";
Level["WARNING"] = "warning";
Level["INFO"] = "info";
Level["UNDERLINE"] = "underline";
})(Level = exports.Level || (exports.Level = {}));
class Log {
constructor() {
this.store = {
info: [],
warning: [],
error: [],
success: [],
};
this.logMap = new Map();
this.isIDE = false;
this.beginTime = null;
this.endTime = null;
this.result = null;
this.status = null;
}
init(params) {
this.clear();
this.isIDE = params.isIDE;
this.beginTime = new Date();
}
isLogExist(log, level) {
const id = `${level}_${JSON.stringify(log)}`;
if (this.logMap.has(id))
return true;
this.logMap.set(id, 1);
return false;
}
recordLog(log, level, isPrint = false) {
if (this.isLogExist(log, level))
return;
isPrint && this.printLog(log, level);
if (level === Level.UNDERLINE) {
this.store.success.push(log);
}
else {
this.store[level].push(log);
}
}
printLog(log, level) {
const msg = typeof log === 'string' ? log : log.message;
if (level === Level.UNDERLINE) {
console.log(chalk_1.default.blue.underline.bold(msg));
}
else {
if (this.attentionLog(log, level))
return;
console.log(chalk_1.default[constant_1.LOG_COLOR_TYPE[level]](msg));
}
}
attentionLog(log, level) {
if (typeof log === 'string' || level === Level.INFO || level === Level.SUCCESS)
return false;
if (level === Level.WARNING) {
console.log(chalk_1.default.keyword('orange')(`⚡ ${chalk_1.default.yellow('[Warning]: ')} ${log.message}`));
log.file && console.log(chalk_1.default.yellow(` ${log.file}`));
console.log('--------------------------------------------------------');
}
else {
console.log(chalk_1.default.keyword('orange')(`⛔ ${chalk_1.default.redBright('[Error]: ')} ${log.message}`));
log.file && console.log(chalk_1.default.redBright(` ${log.file}`));
console.log('--------------------------------------------------------');
}
return true;
}
sortLog(logPath) {
const duration = String(this.endTime.getTime() - this.beginTime.getTime()) + ' ms';
const transformExtnameFiles = {
wxml2ttml: [],
wxss2ttss: [],
wxs2sjs: [],
};
const _extnameTypes = Object.keys(transformExtnameFiles);
const transformContent = {
apiNotSupport: [],
componentNotSupport: [],
configNotSupport: [],
attribNotSupport: [],
};
const _contentTypes = Object.keys(transformContent);
for (let i in this.store.info) {
const log = this.store.info[i];
if (typeof log === 'string')
continue;
if (!log.file)
continue;
_extnameTypes.forEach((type) => {
if (log.type === constant_1.LOG_TYPE[type]) {
log.file && transformExtnameFiles[type].push(log.file);
return;
}
});
}
for (let j in this.store.warning) {
const log = this.store.warning[j];
if (typeof log === 'string')
continue;
_contentTypes.forEach((type) => {
if (log.type === constant_1.LOG_TYPE[type]) {
if (log.file) {
transformContent[type].push({
file: log.file,
message: log.message,
});
}
else {
transformContent[type].push({
message: log.message,
});
}
}
});
}
const result = {
beginTime: this.beginTime.toString(),
duration,
transformFileExtName: _extnameTypes
.map((type) => {
if (transformExtnameFiles[type].length < 1)
return null;
return {
type: constant_1.LOG_TYPE[type],
message: `转换文件名后缀 ${constant_1.LOG_TYPE[type]},共计 ${transformExtnameFiles[type].length} 个文件`,
files: transformExtnameFiles[type],
};
})
.filter((item) => item),
needAttention: _contentTypes
.map((type) => {
if (transformContent[type].length < 1)
return null;
return {
type: constant_1.LOG_TYPE[type],
content: transformContent[type],
};
})
.filter((item) => item),
transformError: this.store.error.map((err) => {
if (typeof err !== 'string' && err.type && err.message) {
return err.message;
}
return err;
}),
transformLog: logPath,
};
return JSON.stringify(result, null, 2);
}
save(logPath) {
this.endTime = new Date();
const _logPath = `${logPath}/log.txt`;
const result = this.sortLog(_logPath);
this.result = result;
utils.saveLog(_logPath, result);
}
clear() {
this.store.info = [];
this.store.warning = [];
this.store.error = [];
this.store.success = [];
this.result = null;
this.logMap.clear();
this.beginTime = null;
this.endTime = null;
this.status = null;
}
}
exports.log = new Log();
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,s,i){void 0===i&&(i=s),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,i){void 0===i&&(i=s),e[i]=t[s]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(s){if(s&&s.__esModule)return s;var i={};if(null!=s)for(var o in s)"default"!==o&&Object.prototype.hasOwnProperty.call(s,o)&&e(i,s,o);return t(i,s),i},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.log=exports.Level=void 0;const o=require("./constant"),r=i(require("chalk")),n=s(require("./index"));var l;!function(e){e.SUCCESS="success",e.ERROR="error",e.WARNING="warning",e.INFO="info",e.UNDERLINE="underline"}(l=exports.Level||(exports.Level={}));exports.log=new class{constructor(){this.store={info:[],warning:[],error:[],success:[]},this.logMap=new Map,this.isIDE=!1,this.beginTime=null,this.endTime=null,this.result=null,this.status=null}init(e){this.clear(),this.isIDE=e.isIDE,this.beginTime=new Date}isLogExist(e,t){const s=`${t}_${JSON.stringify(e)}`;return!!this.logMap.has(s)||(this.logMap.set(s,1),!1)}recordLog(e,t,s=!1){this.isLogExist(e,t)||(s&&this.printLog(e,t),t===l.UNDERLINE?this.store.success.push(e):this.store[t].push(e))}printLog(e,t){const s="string"==typeof e?e:e.message;if(t===l.UNDERLINE)console.log(r.default.blue.underline.bold(s));else{if(this.attentionLog(e,t))return;console.log(r.default[o.LOG_COLOR_TYPE[t]](s))}}attentionLog(e,t){return"string"!=typeof e&&t!==l.INFO&&t!==l.SUCCESS&&(t===l.WARNING?(console.log(r.default.keyword("orange")(`⚡ ${r.default.yellow("[Warning]: ")} ${e.message}`)),e.file&&console.log(r.default.yellow(` ${e.file}`)),console.log("--------------------------------------------------------")):(console.log(r.default.keyword("orange")(`⛔ ${r.default.redBright("[Error]: ")} ${e.message}`)),e.file&&console.log(r.default.redBright(` ${e.file}`)),console.log("--------------------------------------------------------")),!0)}sortLog(e){const t=String(this.endTime.getTime()-this.beginTime.getTime())+" ms",s={wxml2ttml:[],wxss2ttss:[],wxs2sjs:[]},i=Object.keys(s),r={apiNotSupport:[],componentNotSupport:[],configNotSupport:[],attribNotSupport:[]},n=Object.keys(r);for(let e in this.store.info){const t=this.store.info[e];"string"!=typeof t&&(t.file&&i.forEach((e=>{t.type!==o.LOG_TYPE[e]||t.file&&s[e].push(t.file)})))}for(let e in this.store.warning){const t=this.store.warning[e];"string"!=typeof t&&n.forEach((e=>{t.type===o.LOG_TYPE[e]&&(t.file?r[e].push({file:t.file,message:t.message}):r[e].push({message:t.message}))}))}const l={beginTime:this.beginTime.toString(),duration:t,transformFileExtName:i.map((e=>s[e].length<1?null:{type:o.LOG_TYPE[e],message:`转换文件名后缀 ${o.LOG_TYPE[e]},共计 ${s[e].length} 个文件`,files:s[e]})).filter((e=>e)),needAttention:n.map((e=>r[e].length<1?null:{type:o.LOG_TYPE[e],content:r[e]})).filter((e=>e)),transformError:this.store.error.map((e=>"string"!=typeof e&&e.type&&e.message?e.message:e)),transformLog:e};return JSON.stringify(l,null,2)}save(e){this.endTime=new Date;const t=`${e}/log.txt`,s=this.sortLog(t);this.result=s,n.saveLog(t,s)}clear(){this.store.info=[],this.store.warning=[],this.store.error=[],this.store.success=[],this.result=null,this.logMap.clear(),this.beginTime=null,this.endTime=null,this.status=null}};

4

package.json
{
"name": "wx-to-tt",
"version": "0.2.5",
"version": "0.2.6-beta",
"description": "transform wx micro app to bytedance micro app",

@@ -10,3 +10,3 @@ "main": "dist/index.js",

"scripts": {
"build": "tsc -p ./",
"build": "tsc -p ./ && node ../../scripts/compress.js ./dist",
"prepublish": "yarn build"

@@ -13,0 +13,0 @@ },

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc