Skip to content

Commit a6b5e64

Browse files
feat: migrate templates from Vue 2 to Vue 3 (#345)
1 parent ad6e4f5 commit a6b5e64

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+1860
-1567
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
"test-gen-custom": "rm -rf ./tmp && yarn build && babel src/generators/ReactGenerator.js src/generators/BaseGenerator.js -d ./tmp/gens && cp -r ./templates/react ./templates/react-common ./templates/entrypoint.js ./tmp/gens && ./lib/index.js https://demo.api-platform.com ./tmp/react-custom -g \"$(pwd)/tmp/gens/ReactGenerator.js\" -t ./tmp/gens",
6666
"test-gen-env": "rm -rf ./tmp && yarn build && API_PLATFORM_CREATE_CLIENT_ENTRYPOINT=https://demo.api-platform.com API_PLATFORM_CREATE_CLIENT_OUTPUT=./tmp ./lib/index.js",
6767
"test-react-app": "rm -rf ./tmp/app && mkdir -p ./tmp/app && yarn create react-app --template typescript ./tmp/app/reactapp && yarn --cwd ./tmp/app/reactapp add react-router-dom react-hook-form && cp -R ./tmp/react/* ./tmp/app/reactapp/src && cp ./templates/react/index.tsx ./tmp/app/reactapp/src && start-server-and-test 'BROWSER=none yarn --cwd ./tmp/app/reactapp start' http://127.0.0.1:3000/books/ 'yarn playwright test'",
68-
"test-next-app": "rm -rf ./tmp/app && mkdir -p ./tmp/app && yarn create next-app --typescript --eslint ./tmp/app/next && yarn prettier --write ./tmp/app/next && yarn --cwd ./tmp/app/next add isomorphic-unfetch formik react-query && cp -R ./tmp/next/* ./tmp/app/next && rm ./tmp/app/next/pages/index.tsx && rm -rf ./tmp/app/next/pages/api && yarn --cwd ./tmp/app/next build && start-server-and-test 'yarn --cwd ./tmp/app/next start' http://127.0.0.1:3000/books/ 'yarn playwright test'",
69-
"test-vue-app": "rm -rf ./tmp/app && mkdir -p ./tmp/app && cd ./tmp/app && npm init -y vue@2 -- --router vue && cd ../.. && yarn --cwd ./tmp/app/vue add vuex@3 vuex-map-fields lodash && cp -R ./tmp/vue/* ./tmp/app/vue/src && cp ./templates/vue/main.js ./tmp/app/vue/src && yarn --cwd ./tmp/app/vue build && start-server-and-test 'yarn --cwd ./tmp/app/vue vite preview --host 127.0.0.1 --port 3000' http://127.0.0.1:3000/books/ 'yarn playwright test'",
68+
"test-next-app": "./testapp.sh next",
69+
"test-vue-app": "./testapp.sh vue",
7070
"test-nuxt-app": "rm -rf ./tmp/app && mkdir -p ./tmp/app && yarn create nuxt-app --answers \"'{\\\"name\\\":\\\"nuxt\\\",\\\"language\\\":\\\"js\\\",\\\"pm\\\":\\\"yarn\\\",\\\"ui\\\":\\\"vuetify\\\",\\\"template\\\":\\\"html\\\",\\\"features\\\":[],\\\"linter\\\":[],\\\"test\\\":\\\"none\\\",\\\"mode\\\":\\\"spa\\\",\\\"target\\\":\\\"static\\\",\\\"devTools\\\":[],\\\"vcs\\\":\\\"none\\\"}'\" ./tmp/app/nuxt && yarn --cwd ./tmp/app/nuxt add moment lodash vuelidate vuex-map-fields && cp -R ./tmp/nuxt/* ./tmp/app/nuxt && NUXT_TELEMETRY_DISABLED=1 yarn --cwd ./tmp/app/nuxt generate && start-server-and-test 'yarn --cwd ./tmp/app/nuxt start --hostname 127.0.0.1' http://127.0.0.1:3000/books/ 'yarn playwright test'"
7171
},
7272
"lint-staged": {

src/generators/BaseGenerator.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import chalk from "chalk";
22
import fs from "fs";
33
import handlebars from "handlebars";
44
import mkdirp from "mkdirp";
5-
import { sprintf } from "sprintf-js";
5+
import { vsprintf } from "sprintf-js";
66
import prettier from "prettier";
77

88
export default class {
@@ -37,10 +37,16 @@ export default class {
3737
}
3838
}
3939

40-
createFileFromPattern(pattern, dir, value, context, templateValue = "foo") {
40+
createFileFromPattern(
41+
pattern,
42+
dir,
43+
values,
44+
context,
45+
templateValues = ["foo", "Foo"]
46+
) {
4147
this.createFile(
42-
sprintf(pattern, templateValue),
43-
sprintf(`${dir}/${pattern}`, value),
48+
vsprintf(pattern, templateValues),
49+
vsprintf(`${dir}/${pattern}`, values),
4450
context
4551
);
4652
}
@@ -75,6 +81,10 @@ export default class {
7581
this.createFile("entrypoint.js", dest, { entrypoint }, false);
7682
}
7783

84+
createConfigFile(dest, context) {
85+
this.createFile("utils/config.ts", dest, context, false);
86+
}
87+
7888
// eslint-disable-next-line no-unused-vars
7989
checkDependencies(dir) {}
8090

src/generators/NextGenerator.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export default class NextGenerator extends BaseGenerator {
9393
"pages/%ss/index.tsx",
9494
"pages/%ss/create.tsx",
9595
].forEach((pattern) =>
96-
this.createFileFromPattern(pattern, dir, context.lc, context)
96+
this.createFileFromPattern(pattern, dir, [context.lc], context)
9797
);
9898

9999
// interface pattern should be camel cased
@@ -137,8 +137,10 @@ export default class NextGenerator extends BaseGenerator {
137137
return list;
138138
}
139139

140-
const isReferences = field.reference && field.maxCardinality !== 1;
141-
const isEmbeddeds = field.embedded && field.maxCardinality !== 1;
140+
const isReferences = Boolean(
141+
field.reference && field.maxCardinality !== 1
142+
);
143+
const isEmbeddeds = Boolean(field.embedded && field.maxCardinality !== 1);
142144

143145
return {
144146
...list,

src/generators/NuxtGenerator.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ export default class NuxtGenerator extends BaseVueGenerator {
134134
// store
135135
"store/%s.js",
136136
].forEach((pattern) =>
137-
this.createFileFromPattern(pattern, dir, lc, context)
137+
this.createFileFromPattern(pattern, dir, [lc], context)
138138
);
139139

140140
// components

src/generators/QuasarGenerator.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ export const store = new Vuex.Store({
533533
) {
534534
return;
535535
}
536-
this.createFileFromPattern(pattern, dir, lc, context);
536+
this.createFileFromPattern(pattern, dir, [lc], context);
537537
});
538538

539539
// error

src/generators/ReactGenerator.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ import ${titleLc}Routes from './routes/${titleLc}';
111111
// routes
112112
"routes/%s.tsx",
113113
].forEach((pattern) =>
114-
this.createFileFromPattern(pattern, dir, lc, context)
114+
this.createFileFromPattern(pattern, dir, [lc], context)
115115
);
116116

117117
// interface pattern should be camel cased
@@ -166,8 +166,10 @@ import ${titleLc}Routes from './routes/${titleLc}';
166166
return list;
167167
}
168168

169-
const isReferences = field.reference && field.maxCardinality !== 1;
170-
const isEmbeddeds = field.embedded && field.maxCardinality !== 1;
169+
const isReferences = Boolean(
170+
field.reference && field.maxCardinality !== 1
171+
);
172+
const isEmbeddeds = Boolean(field.embedded && field.maxCardinality !== 1);
171173

172174
return {
173175
...list,

src/generators/ReactNativeGenerator.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ combineReducers({ ${titleLc}, /* ... */ }),
133133
// routes
134134
"routes/%s.js",
135135
].forEach((pattern) =>
136-
this.createFileFromPattern(pattern, dir, lc, context)
136+
this.createFileFromPattern(pattern, dir, [lc], context)
137137
);
138138

139139
[

src/generators/VueBaseGenerator.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ export default class extends BaseGenerator {
214214
this.createFileFromPattern(
215215
"services/%s.js",
216216
dir,
217-
resource.title.toLowerCase(),
217+
[resource.title.toLowerCase()],
218218
{ name: resource.name }
219219
);
220220

@@ -311,8 +311,10 @@ export default class extends BaseGenerator {
311311
return list;
312312
}
313313

314-
const isReferences = field.reference && field.maxCardinality !== 1;
315-
const isEmbeddeds = field.embedded && field.maxCardinality !== 1;
314+
const isReferences = Boolean(
315+
field.reference && field.maxCardinality !== 1
316+
);
317+
const isEmbeddeds = Boolean(field.embedded && field.maxCardinality !== 1);
316318

317319
return {
318320
...list,

0 commit comments

Comments
 (0)