UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

135 lines (134 loc) 5.09 kB
"use strict"; 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; ;