@lukoweb/create-apitogo 0.2.22 → 0.2.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/LICENSE.md +18 -18
  2. package/README.md +60 -60
  3. package/dist/index.js +0 -1
  4. package/dist/templates/default/js/AGENTS.md +35 -35
  5. package/dist/templates/default/js/README-template.md +24 -24
  6. package/dist/templates/default/js/apis/openapi.yaml +806 -806
  7. package/dist/templates/default/js/apitogo.config.json +256 -256
  8. package/dist/templates/default/js/apitogo.config.jsx +3 -3
  9. package/dist/templates/default/js/env +23 -23
  10. package/dist/templates/default/js/eslintrc.json +4 -4
  11. package/dist/templates/default/js/gitignore +32 -32
  12. package/dist/templates/default/js/pages/example.mdx +131 -131
  13. package/dist/templates/default/js/pages/introduction.mdx +20 -20
  14. package/dist/templates/default/js/public/logo-dark.svg +4 -4
  15. package/dist/templates/default/js/public/logo-light.svg +4 -4
  16. package/dist/templates/default/js/user-panel/AccountPlansPage.tsx +1 -1
  17. package/dist/templates/default/js/user-panel/DashboardPage.tsx +1 -1
  18. package/dist/templates/default/ts/AGENTS.md +35 -35
  19. package/dist/templates/default/ts/README-template.md +24 -24
  20. package/dist/templates/default/ts/apis/openapi.yaml +806 -806
  21. package/dist/templates/default/ts/apitogo.config.json +221 -221
  22. package/dist/templates/default/ts/apitogo.config.tsx +8 -8
  23. package/dist/templates/default/ts/env +23 -23
  24. package/dist/templates/default/ts/eslintrc.json +6 -6
  25. package/dist/templates/default/ts/gitignore +32 -32
  26. package/dist/templates/default/ts/landing/LandingPage.tsx +176 -176
  27. package/dist/templates/default/ts/pages/example.mdx +132 -132
  28. package/dist/templates/default/ts/pages/introduction.mdx +21 -21
  29. package/dist/templates/default/ts/public/logo-dark.svg +4 -4
  30. package/dist/templates/default/ts/public/logo-light.svg +4 -4
  31. package/dist/templates/default/ts/tsconfig.json +16 -16
  32. package/dist/templates/default/ts/user-panel/AccountPlansPage.tsx +1 -1
  33. package/dist/templates/default/ts/user-panel/DashboardPage.tsx +1 -1
  34. package/dist/templates/empty/js/AGENTS.md +35 -35
  35. package/dist/templates/empty/js/README-template.md +23 -23
  36. package/dist/templates/empty/js/apitogo.config.json +80 -80
  37. package/dist/templates/empty/js/apitogo.config.jsx +6 -6
  38. package/dist/templates/empty/js/env +23 -23
  39. package/dist/templates/empty/js/eslintrc.json +4 -4
  40. package/dist/templates/empty/js/gitignore +32 -32
  41. package/dist/templates/empty/js/public/logo-dark.svg +4 -4
  42. package/dist/templates/empty/js/public/logo-light.svg +4 -4
  43. package/dist/templates/empty/js/user-panel/AccountPlansPage.tsx +1 -1
  44. package/dist/templates/empty/js/user-panel/DashboardPage.tsx +1 -1
  45. package/dist/templates/empty/ts/AGENTS.md +35 -35
  46. package/dist/templates/empty/ts/README-template.md +23 -23
  47. package/dist/templates/empty/ts/apitogo.config.json +81 -81
  48. package/dist/templates/empty/ts/apitogo.config.tsx +8 -8
  49. package/dist/templates/empty/ts/env +23 -23
  50. package/dist/templates/empty/ts/eslintrc.json +6 -6
  51. package/dist/templates/empty/ts/gitignore +32 -32
  52. package/dist/templates/empty/ts/landing/LandingPage.tsx +43 -43
  53. package/dist/templates/empty/ts/public/logo-dark.svg +4 -4
  54. package/dist/templates/empty/ts/public/logo-light.svg +4 -4
  55. package/dist/templates/empty/ts/tsconfig.json +16 -16
  56. package/dist/templates/empty/ts/user-panel/AccountPlansPage.tsx +1 -1
  57. package/dist/templates/empty/ts/user-panel/DashboardPage.tsx +1 -1
  58. package/dist/templates/index.ts +422 -422
  59. package/dist/templates/types.ts +23 -23
  60. package/package.json +1 -1
@@ -1,221 +1,221 @@
1
- {
2
- "site": {
3
- "title": "Sample API",
4
- "showTitleInHeader": false,
5
- "logo": {
6
- "src": { "light": "/logo-light.svg", "dark": "/logo-dark.svg" }
7
- }
8
- },
9
- "authentication": {
10
- "enabled": true,
11
- "type": "dev-portal",
12
- "redirectToAfterSignIn": "/account/dashboard",
13
- "redirectToAfterSignUp": "/account/dashboard"
14
- },
15
- "metadata": {
16
- "favicon": "/Icon.png"
17
- },
18
- "theme": {
19
- "fonts": {
20
- "sans": "Inter",
21
- "mono": "JetBrains Mono"
22
- },
23
- "light": {
24
- "background": "#ffffff",
25
- "foreground": "#252b3b",
26
- "card": "#ffffff",
27
- "cardForeground": "#252b3b",
28
- "primary": "#0d9488",
29
- "primaryForeground": "#ffffff",
30
- "secondary": "#f4f6fb",
31
- "secondaryForeground": "#252b3b",
32
- "muted": "#e9edf5",
33
- "mutedForeground": "rgba(37, 43, 59, 0.55)",
34
- "accent": "rgba(13, 148, 136, 0.1)",
35
- "accentForeground": "#0d9488",
36
- "border": "#d9deea",
37
- "input": "#d9deea",
38
- "ring": "#0d9488"
39
- },
40
- "dark": {
41
- "background": "#252b3b",
42
- "foreground": "#e9edf5",
43
- "card": "#2b3243",
44
- "cardForeground": "#e9edf5",
45
- "primary": "#0d9488",
46
- "primaryForeground": "#ffffff",
47
- "secondary": "#1e2330",
48
- "secondaryForeground": "#e9edf5",
49
- "muted": "#1e2330",
50
- "mutedForeground": "rgba(217, 222, 234, 0.58)",
51
- "accent": "rgba(13, 148, 136, 0.12)",
52
- "accentForeground": "#0d9488",
53
- "border": "rgba(217, 222, 234, 0.18)",
54
- "input": "#323a4f",
55
- "ring": "#0d9488"
56
- }
57
- },
58
- "header": {
59
- "placements": { "navigation": "center" },
60
- "navigation": [
61
- { "label": "Product", "to": "/#features" },
62
- { "label": "Pricing", "to": "/pricing" },
63
- { "label": "Docs", "to": "/introduction" }
64
- ]
65
- },
66
- "modules": {
67
- "docs": {
68
- "files": "/pages/**/*.{md,mdx}"
69
- },
70
- "landing": {
71
- "enabled": true,
72
- "path": "/",
73
- "layout": "landing",
74
- "page": "./landing/LandingPage.tsx",
75
- "content": {
76
- "footer": {
77
- "brand": {
78
- "name": "SampleAPI",
79
- "tagline": "A hosted sandbox API for prototypes, demos, and QA — realistic data, real auth, real limits."
80
- },
81
- "columns": [
82
- {
83
- "title": "Product",
84
- "links": [
85
- { "label": "Overview", "href": "/#features" },
86
- { "label": "Pricing", "href": "/pricing" },
87
- { "label": "Documentation", "href": "/introduction" }
88
- ]
89
- },
90
- {
91
- "title": "Account",
92
- "links": [
93
- { "label": "Log in", "href": "/signin" },
94
- { "label": "Get started", "href": "/signup" },
95
- { "label": "Dashboard", "href": "/account/dashboard" }
96
- ]
97
- },
98
- {
99
- "title": "Company",
100
- "links": [
101
- { "label": "Contact", "href": "#" },
102
- { "label": "Terms", "href": "#" },
103
- { "label": "Privacy", "href": "#" }
104
- ]
105
- }
106
- ],
107
- "copyright": "© 2026 Sample API"
108
- }
109
- }
110
- },
111
- "userPanel": {
112
- "enabled": true,
113
- "dashboard": {
114
- "enabled": true,
115
- "page": "./user-panel/DashboardPage.tsx"
116
- },
117
- "userManagement": { "enabled": true },
118
- "plans": {
119
- "enabled": true,
120
- "page": "./user-panel/AccountPlansPage.tsx",
121
- "items": [
122
- {
123
- "sku": "free",
124
- "displayName": "Free",
125
- "priceAmount": 0,
126
- "billingPeriod": "month",
127
- "limits": {
128
- "rateLimit": { "calls": 1, "renewalPeriodSeconds": 60 },
129
- "quota": { "calls": 1000, "renewalPeriodDays": 30 }
130
- }
131
- },
132
- {
133
- "sku": "developer",
134
- "displayName": "Developer",
135
- "priceAmount": 19,
136
- "billingPeriod": "month",
137
- "limits": {
138
- "rateLimit": { "calls": 2, "renewalPeriodSeconds": 60 },
139
- "quota": { "calls": 5000, "renewalPeriodDays": 30 }
140
- }
141
- },
142
- {
143
- "sku": "team",
144
- "displayName": "Team",
145
- "priceAmount": 79,
146
- "billingPeriod": "month",
147
- "limits": {
148
- "rateLimit": { "calls": 3, "renewalPeriodSeconds": 60 },
149
- "quota": { "calls": 10000, "renewalPeriodDays": 30 }
150
- }
151
- },
152
- {
153
- "sku": "enterprise",
154
- "displayName": "Enterprise",
155
- "pricingModel": "custom",
156
- "priceLabel": "Let's talk",
157
- "billingPeriod": "month"
158
- }
159
- ]
160
- }
161
- }
162
- },
163
- "navigation": [
164
- {
165
- "type": "category",
166
- "label": "Documentation",
167
- "items": [
168
- {
169
- "type": "category",
170
- "label": "Getting Started",
171
- "icon": "sparkles",
172
- "items": [
173
- "/introduction",
174
- "/example",
175
- {
176
- "type": "link",
177
- "icon": "folder-cog",
178
- "badge": {
179
- "label": "New",
180
- "color": "purple"
181
- },
182
- "label": "API Reference",
183
- "to": "/api"
184
- }
185
- ]
186
- },
187
- {
188
- "type": "category",
189
- "label": "Useful Links",
190
- "collapsible": false,
191
- "icon": "link",
192
- "items": [
193
- {
194
- "type": "link",
195
- "icon": "book",
196
- "label": "API ToGo",
197
- "to": "https://apitogo.com"
198
- }
199
- ]
200
- }
201
- ]
202
- },
203
- {
204
- "type": "link",
205
- "to": "/api",
206
- "label": "API Reference"
207
- },
208
- {
209
- "type": "link",
210
- "to": "/pricing",
211
- "label": "Pricing"
212
- }
213
- ],
214
- "apis": [
215
- {
216
- "type": "file",
217
- "input": "./apis/openapi.yaml",
218
- "path": "api"
219
- }
220
- ]
221
- }
1
+ {
2
+ "site": {
3
+ "title": "Sample API",
4
+ "showTitleInHeader": false,
5
+ "logo": {
6
+ "src": { "light": "/logo-light.svg", "dark": "/logo-dark.svg" }
7
+ }
8
+ },
9
+ "authentication": {
10
+ "enabled": true,
11
+ "type": "dev-portal",
12
+ "redirectToAfterSignIn": "/account/dashboard",
13
+ "redirectToAfterSignUp": "/account/dashboard"
14
+ },
15
+ "metadata": {
16
+ "favicon": "/Icon.png"
17
+ },
18
+ "theme": {
19
+ "fonts": {
20
+ "sans": "Inter",
21
+ "mono": "JetBrains Mono"
22
+ },
23
+ "light": {
24
+ "background": "#ffffff",
25
+ "foreground": "#252b3b",
26
+ "card": "#ffffff",
27
+ "cardForeground": "#252b3b",
28
+ "primary": "#0d9488",
29
+ "primaryForeground": "#ffffff",
30
+ "secondary": "#f4f6fb",
31
+ "secondaryForeground": "#252b3b",
32
+ "muted": "#e9edf5",
33
+ "mutedForeground": "rgba(37, 43, 59, 0.55)",
34
+ "accent": "rgba(13, 148, 136, 0.1)",
35
+ "accentForeground": "#0d9488",
36
+ "border": "#d9deea",
37
+ "input": "#d9deea",
38
+ "ring": "#0d9488"
39
+ },
40
+ "dark": {
41
+ "background": "#252b3b",
42
+ "foreground": "#e9edf5",
43
+ "card": "#2b3243",
44
+ "cardForeground": "#e9edf5",
45
+ "primary": "#0d9488",
46
+ "primaryForeground": "#ffffff",
47
+ "secondary": "#1e2330",
48
+ "secondaryForeground": "#e9edf5",
49
+ "muted": "#1e2330",
50
+ "mutedForeground": "rgba(217, 222, 234, 0.58)",
51
+ "accent": "rgba(13, 148, 136, 0.12)",
52
+ "accentForeground": "#0d9488",
53
+ "border": "rgba(217, 222, 234, 0.18)",
54
+ "input": "#323a4f",
55
+ "ring": "#0d9488"
56
+ }
57
+ },
58
+ "header": {
59
+ "placements": { "navigation": "center" },
60
+ "navigation": [
61
+ { "label": "Product", "to": "/#features" },
62
+ { "label": "Pricing", "to": "/pricing" },
63
+ { "label": "Docs", "to": "/introduction" }
64
+ ]
65
+ },
66
+ "modules": {
67
+ "docs": {
68
+ "files": "/pages/**/*.{md,mdx}"
69
+ },
70
+ "landing": {
71
+ "enabled": true,
72
+ "path": "/",
73
+ "layout": "landing",
74
+ "page": "./landing/LandingPage.tsx",
75
+ "content": {
76
+ "footer": {
77
+ "brand": {
78
+ "name": "SampleAPI",
79
+ "tagline": "A hosted sandbox API for prototypes, demos, and QA — realistic data, real auth, real limits."
80
+ },
81
+ "columns": [
82
+ {
83
+ "title": "Product",
84
+ "links": [
85
+ { "label": "Overview", "href": "/#features" },
86
+ { "label": "Pricing", "href": "/pricing" },
87
+ { "label": "Documentation", "href": "/introduction" }
88
+ ]
89
+ },
90
+ {
91
+ "title": "Account",
92
+ "links": [
93
+ { "label": "Log in", "href": "/signin" },
94
+ { "label": "Get started", "href": "/signup" },
95
+ { "label": "Dashboard", "href": "/account/dashboard" }
96
+ ]
97
+ },
98
+ {
99
+ "title": "Company",
100
+ "links": [
101
+ { "label": "Contact", "href": "#" },
102
+ { "label": "Terms", "href": "#" },
103
+ { "label": "Privacy", "href": "#" }
104
+ ]
105
+ }
106
+ ],
107
+ "copyright": "© 2026 Sample API"
108
+ }
109
+ }
110
+ },
111
+ "userPanel": {
112
+ "enabled": true,
113
+ "dashboard": {
114
+ "enabled": true,
115
+ "page": "./user-panel/DashboardPage.tsx"
116
+ },
117
+ "userManagement": { "enabled": true },
118
+ "plans": {
119
+ "enabled": true,
120
+ "page": "./user-panel/AccountPlansPage.tsx",
121
+ "items": [
122
+ {
123
+ "sku": "free",
124
+ "displayName": "Free",
125
+ "priceAmount": 0,
126
+ "billingPeriod": "month",
127
+ "limits": {
128
+ "rateLimit": { "calls": 1, "renewalPeriodSeconds": 60 },
129
+ "quota": { "calls": 1000, "renewalPeriodDays": 30 }
130
+ }
131
+ },
132
+ {
133
+ "sku": "developer",
134
+ "displayName": "Developer",
135
+ "priceAmount": 19,
136
+ "billingPeriod": "month",
137
+ "limits": {
138
+ "rateLimit": { "calls": 2, "renewalPeriodSeconds": 60 },
139
+ "quota": { "calls": 5000, "renewalPeriodDays": 30 }
140
+ }
141
+ },
142
+ {
143
+ "sku": "team",
144
+ "displayName": "Team",
145
+ "priceAmount": 79,
146
+ "billingPeriod": "month",
147
+ "limits": {
148
+ "rateLimit": { "calls": 3, "renewalPeriodSeconds": 60 },
149
+ "quota": { "calls": 10000, "renewalPeriodDays": 30 }
150
+ }
151
+ },
152
+ {
153
+ "sku": "enterprise",
154
+ "displayName": "Enterprise",
155
+ "pricingModel": "custom",
156
+ "priceLabel": "Let's talk",
157
+ "billingPeriod": "month"
158
+ }
159
+ ]
160
+ }
161
+ }
162
+ },
163
+ "navigation": [
164
+ {
165
+ "type": "category",
166
+ "label": "Documentation",
167
+ "items": [
168
+ {
169
+ "type": "category",
170
+ "label": "Getting Started",
171
+ "icon": "sparkles",
172
+ "items": [
173
+ "/introduction",
174
+ "/example",
175
+ {
176
+ "type": "link",
177
+ "icon": "folder-cog",
178
+ "badge": {
179
+ "label": "New",
180
+ "color": "purple"
181
+ },
182
+ "label": "API Reference",
183
+ "to": "/api"
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "type": "category",
189
+ "label": "Useful Links",
190
+ "collapsible": false,
191
+ "icon": "link",
192
+ "items": [
193
+ {
194
+ "type": "link",
195
+ "icon": "book",
196
+ "label": "API ToGo",
197
+ "to": "https://apitogo.com"
198
+ }
199
+ ]
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "type": "link",
205
+ "to": "/api",
206
+ "label": "API Reference"
207
+ },
208
+ {
209
+ "type": "link",
210
+ "to": "/pricing",
211
+ "label": "Pricing"
212
+ }
213
+ ],
214
+ "apis": [
215
+ {
216
+ "type": "file",
217
+ "input": "./apis/openapi.yaml",
218
+ "path": "api"
219
+ }
220
+ ]
221
+ }
@@ -1,8 +1,8 @@
1
- import { devPortalBillingPlugin } from "@lukoweb/apitogo-plugin-dev-portal-billing";
2
- import { buildApitogoConfig } from "@lukoweb/apitogo/build-config";
3
- import siteConfig from "./apitogo.config.json";
4
-
5
- export default buildApitogoConfig({
6
- ...siteConfig,
7
- plugins: [devPortalBillingPlugin()],
8
- });
1
+ import { devPortalBillingPlugin } from "@lukoweb/apitogo-plugin-dev-portal-billing";
2
+ import { buildApitogoConfig } from "@lukoweb/apitogo/build-config";
3
+ import siteConfig from "./apitogo.config.json";
4
+
5
+ export default buildApitogoConfig({
6
+ ...siteConfig,
7
+ plugins: [devPortalBillingPlugin()],
8
+ });
@@ -1,23 +1,23 @@
1
- # APItoGo local configuration
2
- # Uncomment the settings you need and fill in values. Do not commit secrets.
3
- #
4
- # Local demo auth is enabled by default in development.
5
- # Sign in at /login with demo@apitogo.local / password
6
- # APITOGO_CONFIG_DEMO_MODE=false
7
-
8
- # --- Live API URL (set automatically on publish; needed for production builds) ---
9
- # VITE_APITOGO_AUTHENTICATION_API_BASE_URL=https://your-dev-portal-api.example.com
10
-
11
- # --- OIDC (required when auth mode includes OIDC) ---
12
- # APITOGO_CONFIG_AUTHENTICATION__OIDC__AUTHORITY=https://login.example.com
13
- # APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_ID=your-client-id
14
- # APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_SECRET=your-client-secret
15
-
16
- # --- Provider client secrets (optional alternative to OIDC__* above) ---
17
- # APITOGO_CONFIG_AUTHENTICATION__PROVIDERS__OIDC__CLIENT_SECRET=your-client-secret
18
- # APITOGO_CONFIG_AUTHENTICATION__PROVIDERS__GOOGLE__CLIENT_SECRET=your-google-client-secret
19
- # APITOGO_CONFIG_AUTHENTICATION__PROVIDERS__GITHUB__CLIENT_SECRET=your-github-client-secret
20
-
21
- # --- Stripe (required when you have paid plans) ---
22
- # APITOGO_CONFIG_AUTHENTICATION__STRIPE__SECRET_KEY=sk_test_...
23
- # APITOGO_CONFIG_AUTHENTICATION__STRIPE__WEBHOOK_SECRET=whsec_...
1
+ # APItoGo local configuration
2
+ # Uncomment the settings you need and fill in values. Do not commit secrets.
3
+ #
4
+ # Local demo auth is enabled by default in development.
5
+ # Sign in at /login with demo@apitogo.local / password
6
+ # APITOGO_CONFIG_DEMO_MODE=false
7
+
8
+ # --- Live API URL (set automatically on publish; needed for production builds) ---
9
+ # VITE_APITOGO_AUTHENTICATION_API_BASE_URL=https://your-dev-portal-api.example.com
10
+
11
+ # --- OIDC (required when auth mode includes OIDC) ---
12
+ # APITOGO_CONFIG_AUTHENTICATION__OIDC__AUTHORITY=https://login.example.com
13
+ # APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_ID=your-client-id
14
+ # APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_SECRET=your-client-secret
15
+
16
+ # --- Provider client secrets (optional alternative to OIDC__* above) ---
17
+ # APITOGO_CONFIG_AUTHENTICATION__PROVIDERS__OIDC__CLIENT_SECRET=your-client-secret
18
+ # APITOGO_CONFIG_AUTHENTICATION__PROVIDERS__GOOGLE__CLIENT_SECRET=your-google-client-secret
19
+ # APITOGO_CONFIG_AUTHENTICATION__PROVIDERS__GITHUB__CLIENT_SECRET=your-github-client-secret
20
+
21
+ # --- Stripe (required when you have paid plans) ---
22
+ # APITOGO_CONFIG_AUTHENTICATION__STRIPE__SECRET_KEY=sk_test_...
23
+ # APITOGO_CONFIG_AUTHENTICATION__STRIPE__WEBHOOK_SECRET=whsec_...
@@ -1,6 +1,6 @@
1
- {
2
- "root": true,
3
- "extends": "eslint:recommended",
4
- "parser": "@typescript-eslint/parser",
5
- "plugins": ["@typescript-eslint"]
6
- }
1
+ {
2
+ "root": true,
3
+ "extends": "eslint:recommended",
4
+ "parser": "@typescript-eslint/parser",
5
+ "plugins": ["@typescript-eslint"]
6
+ }
@@ -1,32 +1,32 @@
1
- # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
-
3
- # dependencies
4
- /node_modules
5
- /.pnp
6
- .pnp.*
7
- .yarn/*
8
- !.yarn/patches
9
- !.yarn/plugins
10
- !.yarn/releases
11
- !.yarn/versions
12
-
13
- # testing
14
- /coverage
15
-
16
- # zudoku
17
- /dist/
18
-
19
- # misc
20
- .DS_Store
21
- *.pem
22
-
23
- # debug
24
- npm-debug.log*
25
- yarn-debug.log*
26
- yarn-error.log*
27
-
28
- # env files (can opt-in for commiting if needed)
29
- .env*
30
-
31
- # typescript
32
- *.tsbuildinfo
1
+ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
+
3
+ # dependencies
4
+ /node_modules
5
+ /.pnp
6
+ .pnp.*
7
+ .yarn/*
8
+ !.yarn/patches
9
+ !.yarn/plugins
10
+ !.yarn/releases
11
+ !.yarn/versions
12
+
13
+ # testing
14
+ /coverage
15
+
16
+ # zudoku
17
+ /dist/
18
+
19
+ # misc
20
+ .DS_Store
21
+ *.pem
22
+
23
+ # debug
24
+ npm-debug.log*
25
+ yarn-debug.log*
26
+ yarn-error.log*
27
+
28
+ # env files (can opt-in for commiting if needed)
29
+ .env*
30
+
31
+ # typescript
32
+ *.tsbuildinfo