UNPKG

2.17 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const class_1 = require("../class");
4const util_1 = require("../util");
5/**
6 * 单文件组合类
7 *
8 * @export
9 * @class WxSFC
10 * @implements {WxFile.Core}
11 */
12class WxSFC {
13 /**
14 * Creates an instance of WxSFC.
15 * @param {string} source
16 * @param {Request} request
17 * @memberof WxSFC
18 */
19 constructor(source, request) {
20 this.source = source;
21 let { script: { code: scriptCode, compileType: scriptCompileType }, template: { code: templateCode, compileType: templateCompileType }, style: { code: styleCode, compileType: styleCompileType } } = util_1.dom.getSFC(this.source);
22 // SCRIPT
23 this.script = new class_1.WxSFMScript(scriptCode, request, {
24 compileType: scriptCompileType
25 });
26 let usingComponents = this.script.getUsingComponents();
27 // TEMPLATE
28 this.template = new class_1.WxSFMTemplate(templateCode, request, {
29 compileType: templateCompileType,
30 usingComponents
31 });
32 // STYLE
33 this.style = new class_1.WxSFMStyle(styleCode, request, {
34 compileType: styleCompileType
35 });
36 }
37 /**
38 * 单文件模块列表,包括模板,脚本和样式
39 *
40 * @readonly
41 * @memberof WxSFC
42 */
43 get sfms() {
44 return [this.template, this.style, this.script];
45 }
46 /**
47 * 保存文件
48 *
49 * @memberof WxSFC
50 */
51 save() {
52 this.sfms.forEach(sfm => sfm.save());
53 }
54 /**
55 * 移除文件
56 *
57 * @memberof WxSFC
58 */
59 remove() {
60 this.sfms.forEach(sfm => sfm.remove());
61 }
62 /**
63 * 获取依赖列表
64 *
65 * @returns {Depend[]}
66 * @memberof WxSFC
67 */
68 getDepends() {
69 return Array.prototype.concat.apply([], this.sfms.map(sfm => sfm.getDepends()));
70 }
71 /**
72 * 更新依赖列表
73 *
74 * @param {Request.Core[]} useRequests 可用的请求列表
75 * @memberof WxSFC
76 */
77 updateDepends(useRequests) {
78 this.sfms.forEach(sfm => sfm.updateDepends(useRequests));
79 }
80}
81exports.WxSFC = WxSFC;