Skip to content

Commit 0fbdc1e

Browse files
feat: review typescript question (#106)
1 parent 86ea173 commit 0fbdc1e

File tree

4 files changed

+44
-25
lines changed

4 files changed

+44
-25
lines changed

src/constants/templates.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const TEMPLATES: Template[] = [
1010
keys: [
1111
{
1212
key: 'astro-starter',
13-
language: 'TypeScript'
13+
typeChecking: true
1414
}
1515
],
1616
type: 'Starter',
@@ -22,7 +22,7 @@ export const TEMPLATES: Template[] = [
2222
keys: [
2323
{
2424
key: 'nextjs-starter',
25-
language: 'TypeScript'
25+
typeChecking: true
2626
}
2727
],
2828
type: 'Starter',
@@ -34,7 +34,7 @@ export const TEMPLATES: Template[] = [
3434
keys: [
3535
{
3636
key: 'nextjs-example',
37-
language: 'TypeScript'
37+
typeChecking: true
3838
}
3939
],
4040
type: 'Example',
@@ -46,11 +46,11 @@ export const TEMPLATES: Template[] = [
4646
keys: [
4747
{
4848
key: 'react-starter',
49-
language: 'JavaScript'
49+
typeChecking: false
5050
},
5151
{
5252
key: 'react-ts-starter',
53-
language: 'TypeScript'
53+
typeChecking: true
5454
}
5555
],
5656
type: 'Starter',
@@ -62,11 +62,11 @@ export const TEMPLATES: Template[] = [
6262
keys: [
6363
{
6464
key: 'react-example',
65-
language: 'JavaScript'
65+
typeChecking: false
6666
},
6767
{
6868
key: 'react-ts-example',
69-
language: 'TypeScript'
69+
typeChecking: true
7070
}
7171
],
7272
type: 'Example',
@@ -78,7 +78,7 @@ export const TEMPLATES: Template[] = [
7878
keys: [
7979
{
8080
key: 'react-workshop',
81-
language: 'JavaScript'
81+
typeChecking: false
8282
}
8383
],
8484
type: 'Workshop',
@@ -90,7 +90,7 @@ export const TEMPLATES: Template[] = [
9090
keys: [
9191
{
9292
key: 'sveltekit-starter',
93-
language: 'TypeScript'
93+
typeChecking: true
9494
}
9595
],
9696
type: 'Starter',
@@ -102,7 +102,7 @@ export const TEMPLATES: Template[] = [
102102
keys: [
103103
{
104104
key: 'sveltekit-example',
105-
language: 'TypeScript'
105+
typeChecking: true
106106
}
107107
],
108108
type: 'Example',
@@ -114,7 +114,7 @@ export const TEMPLATES: Template[] = [
114114
keys: [
115115
{
116116
key: 'vue-starter',
117-
language: 'TypeScript'
117+
typeChecking: true
118118
}
119119
],
120120
type: 'Starter',
@@ -126,7 +126,7 @@ export const TEMPLATES: Template[] = [
126126
keys: [
127127
{
128128
key: 'vue-example',
129-
language: 'TypeScript'
129+
typeChecking: true
130130
}
131131
],
132132
type: 'Example',
@@ -138,7 +138,7 @@ export const TEMPLATES: Template[] = [
138138
keys: [
139139
{
140140
key: 'angular-starter',
141-
language: 'TypeScript'
141+
typeChecking: true
142142
}
143143
],
144144
type: 'Starter',
@@ -150,7 +150,7 @@ export const TEMPLATES: Template[] = [
150150
keys: [
151151
{
152152
key: 'angular-example',
153-
language: 'TypeScript'
153+
typeChecking: true
154154
}
155155
],
156156
type: 'Example',
@@ -162,7 +162,7 @@ export const TEMPLATES: Template[] = [
162162
keys: [
163163
{
164164
key: 'vanilla-js-example',
165-
language: 'JavaScript'
165+
typeChecking: false
166166
}
167167
],
168168
type: 'Example',

src/services/generate.services.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ const removeLocalConfig = async ({where, template}: PopulateInputFn) => {
161161
: template.framework === 'Next.js'
162162
? 'next.config.mjs'
163163
: template.framework === 'React'
164-
? template.language === 'TypeScript'
164+
? template.typeChecking
165165
? 'vite.config.ts'
166166
: 'vite.config.js'
167167
: template.framework === 'Vanilla JavaScript'

src/services/prompt.services.ts

+14-5
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,23 @@ export const promptLanguage = async ({
7575
};
7676
}
7777

78+
const keyJavaScript = keys[0].typeChecking ? keys[1] : keys[0];
79+
const keyTypeScript = keys[0].typeChecking ? keys[0] : keys[1];
80+
7881
const {key}: {key: TemplateKeyOption | undefined} = await prompts({
7982
type: 'select',
8083
name: 'key',
81-
message: 'Which language do you prefer?',
82-
choices: keys.map((key) => ({
83-
title: key.language,
84-
value: key
85-
}))
84+
message: 'Add type checking?',
85+
choices: [
86+
{
87+
title: 'Yes, using TypeScript syntax',
88+
value: keyTypeScript
89+
},
90+
{
91+
title: 'No',
92+
value: keyJavaScript
93+
}
94+
]
8695
});
8796

8897
if (isNullish(key)) {

src/types/template.ts

+14-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,22 @@ export type TemplateKey = string;
44

55
export interface TemplateKeyOption {
66
key: TemplateKey;
7-
language: TemplateLanguage;
7+
typeChecking: boolean;
88
}
99

10-
export type TemplateKeys = TemplateKeyOption[];
10+
export interface TemplateKeyJavaScript extends Omit<TemplateKeyOption, 'typeChecking'> {
11+
typeChecking: false;
12+
}
13+
14+
export interface TemplateKeyTypeScript extends Omit<TemplateKeyOption, 'typeChecking'> {
15+
typeChecking: true;
16+
}
17+
18+
export type TemplateKeys =
19+
| [TemplateKeyJavaScript]
20+
| [TemplateKeyTypeScript]
21+
| [TemplateKeyTypeScript, TemplateKeyJavaScript]
22+
| [TemplateKeyJavaScript, TemplateKeyTypeScript];
1123

1224
export interface Template {
1325
keys: TemplateKeys;
@@ -27,5 +39,3 @@ export type TemplateFramework =
2739
| 'Vanilla JavaScript';
2840

2941
export type TemplateType = 'Starter' | 'Example' | 'Workshop';
30-
31-
export type TemplateLanguage = 'JavaScript' | 'TypeScript';

0 commit comments

Comments
 (0)