From 277be2f11e0ca4ba8df9b7d60b20fa7598d1f7f3 Mon Sep 17 00:00:00 2001 From: chilingling <26962197+chilingling@users.noreply.github.com> Date: Thu, 4 Jul 2024 20:06:11 -0700 Subject: [PATCH] fix(vue-generator): fix globalstate codegen error (#547) --- packages/vue-generator/package.json | 2 +- .../src/plugins/genGlobalState.js | 10 ++--- .../expected/appdemo01/src/stores/index.js | 1 + .../appdemo01/src/stores/testState.js | 27 +++++++++++++ .../test/testcases/generator/mockData.js | 38 ++++++++++++++++++- 5 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/testState.js diff --git a/packages/vue-generator/package.json b/packages/vue-generator/package.json index 4279794..8db5f80 100644 --- a/packages/vue-generator/package.json +++ b/packages/vue-generator/package.json @@ -47,7 +47,7 @@ "fs-extra": "^10.0.1", "prettier": "^2.6.1", "vite": "^4.3.7", - "vite-plugin-static-copy": "^1.0.4", + "vite-plugin-static-copy": "^0.16.0", "vitest": "^1.4.0", "winston": "^3.10.0" }, diff --git a/packages/vue-generator/src/plugins/genGlobalState.js b/packages/vue-generator/src/plugins/genGlobalState.js index 4c640d6..324f698 100644 --- a/packages/vue-generator/src/plugins/genGlobalState.js +++ b/packages/vue-generator/src/plugins/genGlobalState.js @@ -44,8 +44,8 @@ function genDependenciesPlugin(options = {}) { .map((item) => { let [key, value] = item - if (value === '') { - value = "''" + if (typeof value === 'string') { + value = `'${value}'` } if (value && typeof value === 'object') { @@ -57,19 +57,19 @@ function genDependenciesPlugin(options = {}) { .join(',')} })` const getterExpression = Object.entries(getters) - .filter((item) => item.value?.type === 'JSFunction') + .filter((item) => item[1]?.type === 'JSFunction') .map(([key, value]) => `${key}: ${value.value}`) .join(',') const actionExpressions = Object.entries(actions) - .filter((item) => item.value?.type === 'JSFunction') + .filter((item) => item[1]?.type === 'JSFunction') .map(([key, value]) => `${key}: ${value.value}`) .join(',') const storeFiles = ` ${importStatement} export const ${id} = defineStore({ - id: ${id}, + id: '${id}', state: ${stateExpression}, getters: { ${getterExpression} }, actions: { ${actionExpressions} } diff --git a/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/index.js b/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/index.js index e69de29..380fa26 100644 --- a/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/index.js +++ b/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/index.js @@ -0,0 +1 @@ +export { testState } from './testState' diff --git a/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/testState.js b/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/testState.js new file mode 100644 index 0000000..c231243 --- /dev/null +++ b/packages/vue-generator/test/testcases/generator/expected/appdemo01/src/stores/testState.js @@ -0,0 +1,27 @@ +import { defineStore } from 'pinia' +export const testState = defineStore({ + id: 'testState', + state: () => ({ + name: 'testName', + license: '', + age: 18, + food: ['apple', 'orange', 'banana', 19], + desc: { description: 'hello world', money: 100, other: '', rest: ['a', 'b', 'c', 20] } + }), + getters: { + getAge: function getAge() { + return this.age + }, + getName: function getName() { + return this.name + } + }, + actions: { + setAge: function setAge(age) { + this.age = age + }, + setName: function setName(name) { + this.name = name + } + } +}) diff --git a/packages/vue-generator/test/testcases/generator/mockData.js b/packages/vue-generator/test/testcases/generator/mockData.js index 6067bbb..71bdd35 100644 --- a/packages/vue-generator/test/testcases/generator/mockData.js +++ b/packages/vue-generator/test/testcases/generator/mockData.js @@ -676,7 +676,43 @@ export const appSchemaDemo01 = { value: 'function dataHanlder(res){\n return res;\n}' } }, - globalState: [], + globalState: [ + { + id: 'testState', + state: { + name: 'testName', + license: '', + age: 18, + food: ['apple', 'orange', 'banana', 19], + desc: { + description: 'hello world', + money: 100, + other: '', + rest: ['a', 'b', 'c', 20] + } + }, + getters: { + getAge: { + type: 'JSFunction', + value: 'function getAge() {\n return this.age \n}' + }, + getName: { + type: 'JSFunction', + value: 'function getName() {\n return this.name \n}' + } + }, + actions: { + setAge: { + type: 'JSFunction', + value: 'function setAge(age) {\n this.age = age; \n}' + }, + setName: { + type: 'JSFunction', + value: 'function setName(name) {\n this.name = name; \n}' + } + } + } + ], utils: [ { name: 'axios',