youzanyun-devtool-worker
Version:
- web - ws - proxy
135 lines (134 loc) • 5.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const path_1 = tslib_1.__importDefault(require("path"));
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
const nunjucks_1 = tslib_1.__importDefault(require("nunjucks"));
class PageHandler {
constructor({ demoDir, developDir, pageConfig, projectDir, projectId }) {
this.demoDir = demoDir;
this.developDir = developDir;
this.pageConfig = pageConfig;
this.projectDir = projectDir;
this.projectId = projectId;
}
async start() {
}
async customPage() {
await fs_extra_1.default.copy(this.demoDir, this.developDir);
}
async cancelCustom() {
await fs_extra_1.default.remove(this.developDir);
}
async getCustomInfo() {
let isCustomed = await fs_extra_1.default.pathExists(this.developDir);
let relativePath = '';
let needUpdate = false;
let previewUrl = '';
if (isCustomed) {
relativePath = path_1.default.relative(this.projectDir, this.developDir);
let metaJson = await fs_extra_1.default.readJson(path_1.default.resolve(this.demoDir, 'page.meta.json'));
let { demoVersion } = metaJson;
needUpdate = this.pageConfig.demoVersion != demoVersion;
let env = new nunjucks_1.default.Environment(null, {
tags: {
blockStart: '{%',
blockEnd: '%}',
variableStart: '{$',
variableEnd: '$}',
commentStart: '{#',
commentEnd: '#}'
}
});
let previewUrlTemplate = nunjucks_1.default.compile(this.pageConfig.previewUrl, env);
let context = {
projectId: this.projectId
};
previewUrl = previewUrlTemplate.render(context);
}
return {
name: this.pageConfig.name,
isCustomed,
relativePath,
needUpdate,
previewUrl
};
}
async update() {
let updateFiles = JSON.parse(JSON.stringify(this.pageConfig.updateFiles));
updateFiles.push('page.meta.json');
for (let updateFile of updateFiles) {
await fs_extra_1.default.remove(path_1.default.resolve(this.developDir, updateFile));
await fs_extra_1.default.copy(path_1.default.resolve(this.demoDir, updateFile), path_1.default.resolve(this.developDir, updateFile));
}
}
async getDevBuildFileList() {
let devBuildDir = path_1.default.resolve(this.developDir, this.pageConfig.devBuildDir);
let fileList = await fs_extra_1.default.readdir(devBuildDir);
let result = fileList.map(fileShorr => {
return path_1.default.resolve(devBuildDir, fileShorr);
});
return result;
}
async getProdBuildFileList() {
let prodBuildDir = path_1.default.resolve(this.developDir, this.pageConfig.prodBuildDir);
let fileList = await fs_extra_1.default.readdir(prodBuildDir);
let result = fileList.map(fileShorr => {
return path_1.default.resolve(prodBuildDir, fileShorr);
});
return result;
}
async getFileRequestResponse() {
let metaJsonPath = path_1.default.resolve(this.demoDir, 'page.meta.json');
let metaJson = await fs_extra_1.default.readJson(metaJsonPath);
let { pageVersion, demoVersion } = metaJson;
let fileList = await this.getDevBuildFileList();
let jsList = [];
let cssList = [];
for (let filePath of fileList) {
let fileUrl = `https://cdn.youzanyun.com/_yzydev_/local/file?filePath=${encodeURIComponent(filePath)}`;
if (filePath.endsWith('.js')) {
jsList.push(fileUrl);
}
else if (filePath.endsWith('.css')) {
cssList.push(fileUrl);
}
}
return {
code: 0,
data: {
customized: true,
pageContent: {
pageVersion,
demoVersion,
jsList,
cssList
}
}
};
}
async getPageInfoNeedToSave({ uploadedFileList }) {
let metaJsonPath = path_1.default.resolve(this.demoDir, 'page.meta.json');
let metaJson = await fs_extra_1.default.readJson(metaJsonPath);
let { pageVersion, demoVersion } = metaJson;
let jsList = [];
let cssList = [];
for (let uploadedFile of uploadedFileList) {
let { filePath, url } = uploadedFile;
if (filePath.endsWith('.js')) {
jsList.push(url);
}
else if (filePath.endsWith('.css')) {
cssList.push(url);
}
}
return {
pageVersion,
demoVersion,
jsList,
cssList
};
}
}
exports.default = PageHandler;
;