Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion mockServer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
},
"dependencies": {
"@babel/runtime": "^7.9.2",
"@opentiny/tiny-engine-dsl-vue": "^2.0.0-alpha.4",
"@seald-io/nedb": "^4.0.2",
"fs-extra": "^11.1.1",
"glob": "^10.3.4",
Expand Down
99 changes: 2 additions & 97 deletions mockServer/src/services/schema2code.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,104 +10,9 @@
*
*/

import { pageService } from '../routes/main-routes'
import appInfo from '../assets/json/appinfo.json'

export default class Schema2CodeServcice {
constructor() {
this.blockHistories = appInfo.blockHistories
this.components = appInfo.materialHistory.components
}

constructor() {}
schema2code(pageInfo, type = 'page') {
const { schema, name } = pageInfo
return this.translateSchema({
schema,
name,
type
})
}

/**
* 通过dsl 将页面/区块schema数据生成对应代码
* @param { I_TranslateSchemaParam } params
* @return {Promise<I_Response>} dsl函数返回数据
*/
translateSchema(params) {
const { schema, name, type, blockHistories = this.blockHistories, components = this.components } = params
// 页面/区块 预览只需将页面、区块路径和区块构建产物路径统一设置为 ./components 即可
const defaultMain = './components'
let componentsMap = this.getComponentSchema(components)
componentsMap = componentsMap.concat(this.getBlockSchema(blockHistories))
componentsMap.forEach((component) => {
if (component.main !== undefined) {
component.main = defaultMain
}
})

componentsMap.push({
componentName: name,
main: defaultMain
})

const { generateCode } = require('@opentiny/tiny-engine-dsl-vue')
let code
try {
code = generateCode({
pageInfo: { schema, name },
blocksData: [],
componentsMap
})
} catch (e) {
this.getResponseData(null, e)
}

return this.getResponseData(code)
}

getResponseData(data, error) {
const res = {
data
}

if (error) {
const err_code = error.code || ''
res.error = {
code: err_code,
message: error.message || ''
}
}
return res
}

getComponentSchema(components) {
return components.map((component) => {
const {
component: componentName,
npm: { package: packageName, exportName, version, destructuring } = {}
} = component
return {
componentName,
package: packageName,
exportName,
destructuring,
version
}
})
}

// 将区块组装成schema数据
getBlockSchema(blockHistories) {
return blockHistories.map((blockHistory) => {
const { path, version } = blockHistory
// 每个区块历史记录必有content
const { fileName: componentName } = blockHistory.content
return {
componentName,
main: path || '',
destructuring: false,
version: version || 'N/A'
}
})
return { data: null, code: 410, message: 'deprecated api, please use `@opentiny/tiny-engine-dsl-vue` directly.' }
}
}