@tarojs/taroize 4.0.0-canary.8 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/src/vue.js DELETED
@@ -1,357 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseModule = exports.parseTemplate = exports.generateVueFile = exports.parseWXML = exports.parseVue = void 0;
4
- /* eslint-disable camelcase */
5
- const traverse_1 = require("@babel/traverse");
6
- const t = require("@babel/types");
7
- const helper_1 = require("@tarojs/helper");
8
- const himalaya_wxml_1 = require("himalaya-wxml");
9
- const lodash_1 = require("lodash");
10
- const path_1 = require("path");
11
- const script_1 = require("./script");
12
- const template_1 = require("./template");
13
- const utils_1 = require("./utils");
14
- const wxml_1 = require("./wxml");
15
- const { prettyPrint } = require('html');
16
- function parseVue(dirPath, wxml, jsCode = '') {
17
- (0, utils_1.printToLogFile)(`package: taroize, funName: parseVue, dirPath: ${dirPath} ${(0, utils_1.getLineBreak)()}`);
18
- let ast = (0, utils_1.parseCode)(jsCode);
19
- let foundWXInstance = false;
20
- const vistor = {
21
- BlockStatement(path) {
22
- path.scope.rename('wx', 'Taro');
23
- },
24
- Identifier(path) {
25
- if (path.isReferenced() && path.node.name === 'wx') {
26
- path.replaceWith(t.identifier('Taro'));
27
- }
28
- },
29
- CallExpression(path) {
30
- const callee = path.get('callee');
31
- (0, script_1.replaceIdentifier)(callee);
32
- (0, script_1.replaceMemberExpression)(callee);
33
- if (callee.isIdentifier({ name: 'Page' }) ||
34
- callee.isIdentifier({ name: 'Component' }) ||
35
- callee.isIdentifier({ name: 'App' })) {
36
- foundWXInstance = true;
37
- const componentType = callee.node.name;
38
- ast.program.body.push(t.exportDefaultDeclaration(t.callExpression(t.identifier('withWeapp'), [path.node.arguments[0], t.stringLiteral(componentType)])));
39
- // path.insertAfter(t.exportDefaultDeclaration(t.identifier(defaultClassName)))
40
- path.remove();
41
- }
42
- },
43
- };
44
- (0, traverse_1.default)(ast, vistor);
45
- if (!foundWXInstance) {
46
- ast = (0, utils_1.parseCode)(jsCode + ';Component({})');
47
- (0, traverse_1.default)(ast, vistor);
48
- }
49
- const taroImport = (0, utils_1.buildImportStatement)('@tarojs/taro', [], 'Taro');
50
- const withWeappImport = (0, utils_1.buildImportStatement)('@tarojs/with-weapp', [], 'withWeapp');
51
- ast.program.body.unshift(taroImport, withWeappImport
52
- // ...wxses.filter(wxs => !wxs.src.startsWith('./wxs__')).map(wxs => buildImportStatement(wxs.src, [], wxs.module))
53
- );
54
- const { imports, template } = parseWXML(dirPath, wxml, []);
55
- return {
56
- ast,
57
- imports,
58
- template,
59
- };
60
- }
61
- exports.parseVue = parseVue;
62
- function parseWXML(dirPath, wxml, imports) {
63
- // const parseResult = getCacheWxml(dirPath)
64
- // if (parseResult) {
65
- // return parseResult
66
- // }
67
- try {
68
- wxml = prettyPrint(wxml, {
69
- max_char: 0,
70
- indent_char: 0,
71
- unformatted: ['text', 'wxs'],
72
- });
73
- }
74
- catch (error) {
75
- //
76
- }
77
- const nodes = (0, himalaya_wxml_1.parse)(wxml.trim()).map((node) => parseNode(node, dirPath, imports));
78
- const template = generateVueFile(nodes);
79
- return {
80
- nodes,
81
- template,
82
- imports,
83
- };
84
- }
85
- exports.parseWXML = parseWXML;
86
- function parseElement(element, dirPath, imports) {
87
- let forItem = 'item';
88
- let forIndex = 'index';
89
- switch (element.tagName) {
90
- case 'template':
91
- parseTemplate(element, imports);
92
- break;
93
- case 'wxs':
94
- parseWXS(element, imports);
95
- break;
96
- case 'import':
97
- case 'include':
98
- parseModule(element, dirPath, imports);
99
- return {
100
- type: wxml_1.NodeType.Text,
101
- content: '',
102
- };
103
- default:
104
- break;
105
- }
106
- return {
107
- tagName: element.tagName,
108
- type: element.type,
109
- children: element.children.map((child) => parseNode(child, dirPath, imports)),
110
- attributes: element.attributes
111
- .filter((a) => {
112
- let match = true;
113
- if (a.key === wxml_1.WX_FOR_ITEM) {
114
- match = false;
115
- // 这里用 `||` 不用 `??` 是因为用户可能会填一个空字符串
116
- forItem = a.value || forItem;
117
- }
118
- else if (a.key === wxml_1.WX_FOR_INDEX) {
119
- match = false;
120
- forIndex = a.value || forIndex;
121
- }
122
- return match;
123
- })
124
- .map((a) => {
125
- return parseAttribute(a, forItem, forIndex);
126
- }),
127
- };
128
- }
129
- function parseNode(node, dirPath, imports) {
130
- if (node.type === wxml_1.NodeType.Text) {
131
- return node;
132
- }
133
- else if (node.type === wxml_1.NodeType.Comment) {
134
- return node;
135
- }
136
- return parseElement(node, dirPath, imports);
137
- }
138
- const VUE_IF = 'v-if';
139
- const VUE_ELSE_IF = 'v-else-if';
140
- const VUE_FOR = 'v-for';
141
- const VUE_ELSE = 'v-else';
142
- const VUE_KEY = 'key';
143
- const WX_FOR_2 = 'wx:for-items';
144
- function parseAttribute(attr, forItem, forIndex) {
145
- let { key, value } = attr;
146
- let isVueDirectives = true;
147
- const isBind = key.startsWith('bind');
148
- const isCatch = key.startsWith('catch');
149
- const isEvent = isBind || isCatch;
150
- switch (key) {
151
- case wxml_1.WX_IF:
152
- key = VUE_IF;
153
- break;
154
- case wxml_1.WX_ELSE_IF:
155
- key = VUE_ELSE_IF;
156
- break;
157
- case wxml_1.WX_ELSE:
158
- key = VUE_ELSE;
159
- break;
160
- case wxml_1.WX_FOR:
161
- case WX_FOR_2:
162
- key = VUE_FOR;
163
- break;
164
- case wxml_1.WX_KEY:
165
- key = VUE_KEY;
166
- value = value || forIndex;
167
- isVueDirectives = false;
168
- break;
169
- default:
170
- isVueDirectives = false;
171
- break;
172
- }
173
- const { type, content } = (0, wxml_1.parseContent)(value !== null && value !== void 0 ? value : '', true);
174
- if (type === 'expression') {
175
- if ((content === null || content === void 0 ? void 0 : content.startsWith('(')) && content.endsWith(')')) {
176
- value = content.slice(1, content.length - 1);
177
- }
178
- else {
179
- value = content;
180
- }
181
- if (key === VUE_FOR) {
182
- value = `(${forItem}, ${forIndex}) in ${value}`;
183
- }
184
- if (key === 'data') {
185
- if (value.includes(':') || (value.includes('...') && value.includes(','))) {
186
- value = `{ ${value} }`;
187
- }
188
- }
189
- if (!isVueDirectives && !isEvent) {
190
- key = ':' + key;
191
- }
192
- }
193
- if (key === VUE_KEY) {
194
- // 微信小程序真的太多没在文档里的用法了
195
- if ((value === null || value === void 0 ? void 0 : value.includes('this')) || (value === null || value === void 0 ? void 0 : value.includes('*item'))) {
196
- value = forItem;
197
- }
198
- if (value !== forItem || value !== forIndex) {
199
- value = `${forItem}.${value} || ${value} || ${forIndex}`;
200
- }
201
- key = ':' + key;
202
- }
203
- if (value === null && key !== VUE_ELSE) {
204
- value = 'true';
205
- }
206
- if (isBind) {
207
- key = key.replace(/^bind/g, '@');
208
- }
209
- if (isCatch) {
210
- key = key.replace(/^catch/g, '@') + '.stop';
211
- }
212
- if (isEvent && value === 'true') {
213
- value = 'emptyHandler';
214
- }
215
- if (key.startsWith(':')) {
216
- key = ':' + (0, lodash_1.kebabCase)(key.slice(1));
217
- }
218
- else {
219
- key = (0, lodash_1.kebabCase)(key);
220
- }
221
- return {
222
- key,
223
- value,
224
- };
225
- }
226
- function createElement(tagName) {
227
- return {
228
- tagName,
229
- type: wxml_1.NodeType.Element,
230
- children: [],
231
- attributes: [],
232
- };
233
- }
234
- function generateVueFile(children) {
235
- const template = createElement('template');
236
- const container = createElement('block');
237
- container.children = children;
238
- template.children = [container];
239
- return (0, himalaya_wxml_1.stringify)([template]);
240
- }
241
- exports.generateVueFile = generateVueFile;
242
- function parseTemplate(element, imports) {
243
- const { attributes, children } = element;
244
- const is = attributes.find((a) => a.key === 'is');
245
- const data = attributes.find((a) => a.key === 'data');
246
- const name = attributes.find((a) => a.key === 'name');
247
- if (name) {
248
- const value = name.value;
249
- const { type } = (0, wxml_1.parseContent)(value !== null && value !== void 0 ? value : '');
250
- if (type === 'expression') {
251
- console.warn('template 的属性 name 只能是一个字符串,考虑更改以下源码逻辑:\n', (0, himalaya_wxml_1.stringify)(element));
252
- }
253
- const componentName = (0, template_1.buildTemplateName)(name.key);
254
- const component = parseWXML('', (0, himalaya_wxml_1.stringify)(children), imports);
255
- imports.push({
256
- name: componentName,
257
- template: component.template,
258
- });
259
- }
260
- else if (is) {
261
- const value = is.value;
262
- if (!value) {
263
- console.warn('template 的 `is` 属性不能为空', (0, himalaya_wxml_1.stringify)(element));
264
- }
265
- const { type } = (0, wxml_1.parseContent)(value !== null && value !== void 0 ? value : '');
266
- if (type === 'expression') {
267
- console.warn('template 的属性 is 只能是一个字符串,考虑更改以下源码逻辑:\n', (0, himalaya_wxml_1.stringify)(element));
268
- }
269
- element.tagName = (0, template_1.buildTemplateName)(value, false);
270
- element.attributes = [];
271
- if (data) {
272
- element.attributes.push({
273
- key: 'data',
274
- value: data.value,
275
- });
276
- }
277
- }
278
- else {
279
- throw new Error('template 标签必须指名 `is` 或 `name` 任意一个标签:\n' + (0, himalaya_wxml_1.stringify)(element));
280
- }
281
- return element;
282
- }
283
- exports.parseTemplate = parseTemplate;
284
- function parseModule(element, dirPath, imports) {
285
- var _a, _b;
286
- const { attributes, tagName } = element;
287
- const src = attributes.find((a) => a.key === 'src');
288
- if (!src) {
289
- throw new Error(`${tagName} 标签必须包含 \`src\` 属性` + '\n' + (0, himalaya_wxml_1.stringify)(element));
290
- }
291
- let srcValue = (_a = src.value) !== null && _a !== void 0 ? _a : '';
292
- const { type } = (0, wxml_1.parseContent)(srcValue);
293
- if (type === 'expression') {
294
- console.warn(tagName + '的属性 src 只能是一个字符串,考虑更改以下源码逻辑:\n', (0, himalaya_wxml_1.stringify)(element));
295
- }
296
- if (srcValue.startsWith('/')) {
297
- const vpath = (0, path_1.resolve)(utils_1.setting.rootPath, srcValue.substr(1));
298
- if (!helper_1.fs.existsSync(vpath)) {
299
- throw new Error(`import/include 的 src 请填入相对路径再进行转换:src="${srcValue}"`);
300
- }
301
- let relativePath = (0, path_1.relative)(dirPath, vpath);
302
- relativePath = relativePath.replace(/\\/g, '/');
303
- if (relativePath.indexOf('.') !== 0) {
304
- srcValue = './' + relativePath;
305
- }
306
- srcValue = relativePath;
307
- }
308
- if (tagName === 'import') {
309
- const wxml = (0, template_1.getWXMLsource)(dirPath, srcValue, tagName);
310
- const mods = (_b = parseWXML((0, path_1.resolve)(dirPath, srcValue), wxml, imports || [])) === null || _b === void 0 ? void 0 : _b.imports;
311
- imports.push(...(mods || []));
312
- }
313
- else {
314
- console.warn(`暂不支持 ${tagName} 标签的转换`, '考虑修改源码使用 import 替代\n' + (0, himalaya_wxml_1.stringify)(element));
315
- }
316
- }
317
- exports.parseModule = parseModule;
318
- function parseWXS(element, imports) {
319
- let moduleName = null;
320
- let src = null;
321
- const { attributes } = element;
322
- for (const attr of attributes) {
323
- const { key, value } = attr;
324
- if (key === 'module') {
325
- moduleName = value;
326
- }
327
- if (key === 'src') {
328
- src = value;
329
- }
330
- }
331
- if (!src) {
332
- const script = element.children.reduce((acc, node) => {
333
- if (node.type === wxml_1.NodeType.Text) {
334
- return acc + node.content;
335
- }
336
- return acc;
337
- }, '');
338
- src = './wxs__' + moduleName;
339
- const ast = (0, utils_1.parseCode)(script);
340
- (0, traverse_1.default)(ast, {
341
- CallExpression(path) {
342
- if (t.isIdentifier(path.node.callee, { name: 'getRegExp' })) {
343
- console.warn((0, utils_1.codeFrameError)(path.node, '请使用 JavaScript 标准正则表达式把这个 getRegExp 函数重构。'));
344
- }
345
- },
346
- });
347
- imports.push({
348
- ast,
349
- name: moduleName,
350
- wxs: true,
351
- });
352
- }
353
- if (!moduleName || !src) {
354
- throw new Error('一个 WXS 需要同时存在两个属性:`wxs`, `src`');
355
- }
356
- }
357
- //# sourceMappingURL=vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vue.js","sourceRoot":"","sources":["../../src/vue.ts"],"names":[],"mappings":"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"}