package-installer-cli 1.3.2 → 1.4.0

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/dist/commands/email.js +1140 -0
  3. data/dist/email-templates/bugReport.js +108 -0
  4. data/dist/email-templates/collectors/bugReport.js +41 -0
  5. data/dist/email-templates/collectors/common.js +56 -0
  6. data/dist/email-templates/collectors/docs.js +41 -0
  7. data/dist/email-templates/collectors/featureRequest.js +47 -0
  8. data/dist/email-templates/collectors/improvement.js +52 -0
  9. data/dist/email-templates/collectors/index.js +8 -0
  10. data/dist/email-templates/collectors/question.js +31 -0
  11. data/dist/email-templates/collectors/templateRequest.js +53 -0
  12. data/dist/email-templates/docs.js +111 -0
  13. data/dist/email-templates/featureRequest.js +111 -0
  14. data/dist/email-templates/generator.js +62 -0
  15. data/dist/email-templates/improvement.js +121 -0
  16. data/dist/email-templates/index.js +14 -0
  17. data/dist/email-templates/question.js +101 -0
  18. data/dist/email-templates/styles.js +168 -0
  19. data/dist/email-templates/templateRequest.js +120 -0
  20. data/dist/email-templates/testEmail.js +56 -0
  21. data/dist/email-templates/types.js +1 -0
  22. data/dist/index.js +29 -1
  23. data/dist/utils/featureInstaller.js +4 -11
  24. data/features/ai/ai.json +547 -0
  25. data/features/analytics/analytics.json +4 -0
  26. data/features/auth/auth.json +473 -0
  27. data/features/auth/auth0/django/backend/apiexample/urls.py +10 -0
  28. data/features/auth/auth0/django/backend/apiexample/validator.py +21 -0
  29. data/features/auth/auth0/django/backend/apiexample/views.py +30 -0
  30. data/features/auth/auth0/django/backend/requirements.txt +4 -0
  31. data/features/auth/auth0/django/web-app/requirements.txt +4 -0
  32. data/features/auth/auth0/django/web-app/webappexample/settings.py +28 -0
  33. data/features/auth/auth0/django/web-app/webappexample/templates/index.html +16 -0
  34. data/features/auth/auth0/django/web-app/webappexample/urls.py +10 -0
  35. data/features/auth/auth0/django/web-app/webappexample/views.py +52 -0
  36. data/features/auth/auth0/go/backend/go.mod +8 -0
  37. data/features/auth/auth0/go/backend/main.go +60 -0
  38. data/features/auth/auth0/go/backend/middleware/jwt.go +81 -0
  39. data/features/auth/auth0/go/web-app/auth.go +56 -0
  40. data/features/auth/auth0/go/web-app/callback.go +52 -0
  41. data/features/auth/auth0/go/web-app/go.mod +11 -0
  42. data/features/auth/auth0/go/web-app/isAuthenticated.go +20 -0
  43. data/features/auth/auth0/go/web-app/login.go +47 -0
  44. data/features/auth/auth0/go/web-app/logout.go +38 -0
  45. data/features/auth/auth0/go/web-app/main.go +31 -0
  46. data/features/auth/auth0/go/web-app/router.go +44 -0
  47. data/features/auth/auth0/go/web-app/user.go +18 -0
  48. data/features/auth/auth0/ruby-on-rails/backend/Gemfile +1 -0
  49. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/application_controller.rb +5 -0
  50. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/concern/secured.rb +60 -0
  51. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/private_controller.rb +6 -0
  52. data/features/auth/auth0/ruby-on-rails/backend/app/controllers/public-controller.rb +6 -0
  53. data/features/auth/auth0/ruby-on-rails/backend/app/lib/auth0_client.rb +59 -0
  54. data/features/auth/auth0/ruby-on-rails/web-app/Gemfile +2 -0
  55. data/features/auth/auth0/ruby-on-rails/web-app/auth0_controller.rb +41 -0
  56. data/features/auth/auth0/ruby-on-rails/web-app/config/auth0.yml +4 -0
  57. data/features/auth/auth0/ruby-on-rails/web-app/config/initializers/auth0.rb +14 -0
  58. data/features/auth/auth0/ruby-on-rails/web-app/config/routes.rb +6 -0
  59. data/features/auth/auth0/ruby-on-rails/web-app/config/secured.rb +11 -0
  60. data/features/auth/clerk/go/clerk_client.go +28 -0
  61. data/features/auth/clerk/go/go.mod +5 -0
  62. data/features/auth/clerk/go/main.go +82 -0
  63. data/features/auth/clerk/nextjs/typescript/app/layout.tsx +2 -2
  64. data/features/auth/clerk/ruby-on-rails/Gemfile +1 -0
  65. data/features/auth/clerk/ruby-on-rails/app.rb +50 -0
  66. data/features/auth/clerk/ruby-on-rails/config/initializers/clerk.rb +4 -0
  67. data/features/aws/aws.json +5207 -0
  68. data/features/database/database.json +246 -0
  69. data/features/docker/docker.json +108 -0
  70. data/features/features.json +44 -7321
  71. data/features/gitignore/gitignore.json +61 -0
  72. data/features/monitoring/monitoring.json +5 -0
  73. data/features/payment/payment.json +347 -0
  74. data/features/storage/storage.json +371 -0
  75. data/features/testing/jest/angularjs/typescript/tests/angularjs.test.ts +12 -0
  76. data/features/testing/jest/expressjs/javascript/tests/expressjs.test.js +10 -0
  77. data/features/testing/jest/expressjs/typescript/tests/expressjs.test.ts +10 -0
  78. data/features/testing/jest/nestjs/typescript/tests/nestjs.test.ts +10 -0
  79. data/features/testing/jest/nextjs/javascript/tests/nextjs.test.js +10 -0
  80. data/features/testing/jest/nextjs/typescript/tests/nextjs.test.ts +10 -0
  81. data/features/testing/jest/nuxtjs/typescript/tests/nuxtjs.test.ts +9 -0
  82. data/features/testing/jest/reactjs/javascript/tests/reactjs.test.js +10 -0
  83. data/features/testing/jest/reactjs/typescript/tests/reactjs.test.ts +10 -0
  84. data/features/testing/jest/reactjs-expressjs-shadcn/javascript/tests/reactjs.expressjs.shadcn.test.js +16 -0
  85. data/features/testing/jest/reactjs-expressjs-shadcn/typescript/tests/reactjs.expressjs.shadcn.test.ts +16 -0
  86. data/features/testing/jest/reactjs-nestjs-shadcn/typescript/tests/reactjs.nestjs.shadcn.test.ts +14 -0
  87. data/features/testing/jest/remixjs/typescript/tests/remixjs.test.ts +9 -0
  88. data/features/testing/jest/vuejs/javascript/tests/vuejs.test.ts +9 -0
  89. data/features/testing/jest/vuejs/typescript/tests/vuejs.test.ts +9 -0
  90. data/features/testing/testing.json +102 -0
  91. data/features/ui/ui.json +91 -0
  92. metadata +88 -8
  93. data/features/testing/jest/angularjs/tests/angularjs.test.js +0 -12
  94. data/features/testing/jest/expressjs/tests/javascript/expressjs.test.js +0 -12
  95. data/features/testing/jest/expressjs/tests/typescript/expressjs.test.ts +0 -12
  96. data/features/testing/jest/go/tests/go.test.js +0 -12
  97. data/features/testing/jest/nextjs/tests/javascript/nextjs.test.js +0 -12
  98. data/features/testing/jest/nextjs/tests/typescript/nextjs.test.ts +0 -12
@@ -0,0 +1,371 @@
1
+ {
2
+ "cloudinary": {
3
+ "expressjs": {
4
+ "javascript": {
5
+ ".env": {
6
+ "action": "append"
7
+ },
8
+ "controllers/cloudinaryControllers.js": {
9
+ "action": "create"
10
+ },
11
+ "index.js": {
12
+ "action": "prepend"
13
+ },
14
+ "package.json": {
15
+ "action": "install"
16
+ },
17
+ "routes/cloudinaryRoutes.js": {
18
+ "action": "create"
19
+ },
20
+ "utils/cloudinary.js": {
21
+ "action": "create"
22
+ }
23
+ },
24
+ "typescript": {
25
+ ".env": {
26
+ "action": "append"
27
+ },
28
+ "controllers/cloudinaryControllers.ts": {
29
+ "action": "create"
30
+ },
31
+ "index.ts": {
32
+ "action": "prepend"
33
+ },
34
+ "package.json": {
35
+ "action": "install"
36
+ },
37
+ "routes/cloudinaryRoutes.ts": {
38
+ "action": "create"
39
+ },
40
+ "utils/cloudinary.ts": {
41
+ "action": "create"
42
+ }
43
+ }
44
+ },
45
+ "nestjs": {
46
+ "typescript": {
47
+ ".env": {
48
+ "action": "append"
49
+ },
50
+ "package.json": {
51
+ "action": "install"
52
+ },
53
+ "src/cloudinary/cloudinary.controller.ts": {
54
+ "action": "create"
55
+ },
56
+ "src/cloudinary/cloudinary.module.ts": {
57
+ "action": "create"
58
+ },
59
+ "src/cloudinary/cloudinary.service.ts": {
60
+ "action": "create"
61
+ }
62
+ }
63
+ },
64
+ "nextjs": {
65
+ "javascript": {
66
+ ".env": {
67
+ "action": "append"
68
+ },
69
+ "app/api/cloudinary/delete/route.js": {
70
+ "action": "create"
71
+ },
72
+ "app/api/cloudinary/list/route.js": {
73
+ "action": "create"
74
+ },
75
+ "app/api/cloudinary/upload/route.js": {
76
+ "action": "create"
77
+ },
78
+ "lib/cloudinary.js": {
79
+ "action": "create"
80
+ },
81
+ "package.json": {
82
+ "action": "install"
83
+ }
84
+ },
85
+ "typescript": {
86
+ ".env": {
87
+ "action": "append"
88
+ },
89
+ "app/api/cloudinary/delete/route.ts": {
90
+ "action": "create"
91
+ },
92
+ "app/api/cloudinary/list/route.ts": {
93
+ "action": "create"
94
+ },
95
+ "app/api/cloudinary/upload/route.ts": {
96
+ "action": "create"
97
+ },
98
+ "lib/cloudinary.ts": {
99
+ "action": "create"
100
+ },
101
+ "package.json": {
102
+ "action": "install"
103
+ }
104
+ }
105
+ },
106
+ "remixjs": {
107
+ "typescript": {
108
+ ".env": {
109
+ "action": "append"
110
+ },
111
+ "app/routes/api/cloudinary.ts": {
112
+ "action": "create"
113
+ },
114
+ "app/utils/cloudinary.ts": {
115
+ "action": "create"
116
+ },
117
+ "package.json": {
118
+ "action": "install"
119
+ }
120
+ }
121
+ }
122
+ },
123
+ "google-cloud": {
124
+ "expressjs": {
125
+ "javascript": {
126
+ ".env": {
127
+ "action": "append"
128
+ },
129
+ "controllers/gcsControllers.js": {
130
+ "action": "create"
131
+ },
132
+ "index.js": {
133
+ "action": "prepend"
134
+ },
135
+ "package.json": {
136
+ "action": "install"
137
+ },
138
+ "routes/gcsRoutes.js": {
139
+ "action": "create"
140
+ },
141
+ "utils/gcs.js": {
142
+ "action": "create"
143
+ }
144
+ },
145
+ "typescript": {
146
+ ".env": {
147
+ "action": "append"
148
+ },
149
+ "controllers/gcsControllers.ts": {
150
+ "action": "create"
151
+ },
152
+ "index.ts": {
153
+ "action": "prepend"
154
+ },
155
+ "package.json": {
156
+ "action": "install"
157
+ },
158
+ "routes/gcsRoutes.ts": {
159
+ "action": "create"
160
+ },
161
+ "utils/gcs.ts": {
162
+ "action": "create"
163
+ }
164
+ }
165
+ },
166
+ "nestjs": {
167
+ "typescript": {
168
+ ".env": {
169
+ "action": "append"
170
+ },
171
+ "package.json": {
172
+ "action": "install"
173
+ },
174
+ "src/gcs/gcs.controller.ts": {
175
+ "action": "create"
176
+ },
177
+ "src/gcs/gcs.module.ts": {
178
+ "action": "create"
179
+ },
180
+ "src/gcs/gcs.service.ts": {
181
+ "action": "create"
182
+ }
183
+ }
184
+ },
185
+ "nextjs": {
186
+ "javascript": {
187
+ ".env": {
188
+ "action": "append"
189
+ },
190
+ "app/api/gcs/delete/route.js": {
191
+ "action": "create"
192
+ },
193
+ "app/api/gcs/list/route.js": {
194
+ "action": "create"
195
+ },
196
+ "app/api/gcs/upload/route.js": {
197
+ "action": "create"
198
+ },
199
+ "lib/gcs.js": {
200
+ "action": "create"
201
+ },
202
+ "package.json": {
203
+ "action": "install"
204
+ }
205
+ },
206
+ "typescript": {
207
+ ".env": {
208
+ "action": "append"
209
+ },
210
+ "app/api/gcs/delete/route.ts": {
211
+ "action": "create"
212
+ },
213
+ "app/api/gcs/list/route.ts": {
214
+ "action": "create"
215
+ },
216
+ "app/api/gcs/upload/route.ts": {
217
+ "action": "create"
218
+ },
219
+ "lib/gcs.ts": {
220
+ "action": "create"
221
+ },
222
+ "package.json": {
223
+ "action": "install"
224
+ }
225
+ }
226
+ },
227
+ "remixjs": {
228
+ "typescript": {
229
+ ".env": {
230
+ "action": "append"
231
+ },
232
+ "package.json": {
233
+ "action": "install"
234
+ },
235
+ "routes/api/gcs.ts": {
236
+ "action": "create"
237
+ },
238
+ "utils/gcs.ts": {
239
+ "action": "create"
240
+ }
241
+ }
242
+ }
243
+ },
244
+ "imagekit.io": {
245
+ "expressjs": {
246
+ "javascript": {
247
+ ".env": {
248
+ "action": "append"
249
+ },
250
+ "controllers/imageKitControllers.js": {
251
+ "action": "create"
252
+ },
253
+ "routes/imagekitRoutes.js": {
254
+ "action": "create"
255
+ },
256
+ "utils/imagekit.js": {
257
+ "action": "create"
258
+ },
259
+ "index.js": {
260
+ "action": "prepend"
261
+ },
262
+ "package.json": {
263
+ "action": "install"
264
+ },
265
+ "controllers/imagekitControllers.js": {
266
+ "action": "create"
267
+ }
268
+ },
269
+ "typescript": {
270
+ ".env": {
271
+ "action": "append"
272
+ },
273
+ "controllers/imageKitControllers.ts": {
274
+ "action": "create"
275
+ },
276
+ "routes/imagekitRoutes.ts": {
277
+ "action": "create"
278
+ },
279
+ "utils/imagekit.ts": {
280
+ "action": "create"
281
+ },
282
+ "index.ts": {
283
+ "action": "prepend"
284
+ },
285
+ "package.json": {
286
+ "action": "install"
287
+ },
288
+ "controllers/imagekitControllers.ts": {
289
+ "action": "create"
290
+ }
291
+ }
292
+ },
293
+ "nestjs": {
294
+ "typescript": {
295
+ "src/imagekit/imagekit.controller.ts": {
296
+ "action": "create"
297
+ },
298
+ "src/imagekit/imagekit.module.ts": {
299
+ "action": "create"
300
+ },
301
+ "src/imagekit/imagekit.service.ts": {
302
+ "action": "create"
303
+ },
304
+ ".env": {
305
+ "action": "append"
306
+ },
307
+ "package.json": {
308
+ "action": "install"
309
+ }
310
+ }
311
+ },
312
+ "nextjs": {
313
+ "javascript": {
314
+ "app/api/imagekit/delete/route.js": {
315
+ "action": "create"
316
+ },
317
+ "app/api/imagekit/upload/route.js": {
318
+ "action": "create"
319
+ },
320
+ "app/api/imagekit/list/route.js": {
321
+ "action": "create"
322
+ },
323
+ "lib/imagekit.js": {
324
+ "action": "create"
325
+ },
326
+ ".env": {
327
+ "action": "append"
328
+ },
329
+ "package.json": {
330
+ "action": "install"
331
+ }
332
+ },
333
+ "typescript": {
334
+ "app/api/imagekit/delete/route.ts": {
335
+ "action": "create"
336
+ },
337
+ "app/api/imagekit/upload/route.ts": {
338
+ "action": "create"
339
+ },
340
+ "app/api/imagekit/list/route.ts": {
341
+ "action": "create"
342
+ },
343
+ "lib/imagekit.ts": {
344
+ "action": "create"
345
+ },
346
+ ".env": {
347
+ "action": "append"
348
+ },
349
+ "package.json": {
350
+ "action": "install"
351
+ }
352
+ }
353
+ },
354
+ "remixjs": {
355
+ "typescript": {
356
+ "app/routes/api/imagekit.ts": {
357
+ "action": "create"
358
+ },
359
+ "app/utils/imagekit.ts": {
360
+ "action": "create"
361
+ },
362
+ ".env": {
363
+ "action": "append"
364
+ },
365
+ "package.json": {
366
+ "action": "install"
367
+ }
368
+ }
369
+ }
370
+ }
371
+ }
@@ -0,0 +1,12 @@
1
+ // angular.test.js
2
+ describe('AngularJS App', () => {
3
+ it('should initialize the app correctly', () => {
4
+ expect(true).toBe(true);
5
+ });
6
+
7
+ it('should render a component (mock test)', () => {
8
+ const scope = {};
9
+ // Simulate controller/component init
10
+ expect(scope).toBeDefined();
11
+ });
12
+ });
@@ -0,0 +1,10 @@
1
+ // express.test.js
2
+ import request from 'supertest';
3
+ import app from '../index'; // change path to your Express app
4
+
5
+ describe('Express App', () => {
6
+ it('GET / should return 200', async () => {
7
+ const res = await request(app).get('/');
8
+ expect(res.statusCode).toBe(200);
9
+ });
10
+ });
@@ -0,0 +1,10 @@
1
+ // express.test.js
2
+ import request from 'supertest';
3
+ import app from '../index'; // change path to your Express app
4
+
5
+ describe('Express App', () => {
6
+ it('GET / should return 200', async () => {
7
+ const res = await request(app).get('/');
8
+ expect(res.statusCode).toBe(200);
9
+ });
10
+ });
@@ -0,0 +1,10 @@
1
+ // nestjs.test.js
2
+ import request from 'supertest';
3
+ import app from './main'; // Nest app
4
+
5
+ describe('NestJS App', () => {
6
+ it('GET / should return 200', async () => {
7
+ const res = await request(app).get('/');
8
+ expect(res.statusCode).toBe(200);
9
+ });
10
+ });
@@ -0,0 +1,10 @@
1
+ // next.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+ import Home from './pages/index';
4
+
5
+ describe('Next.js Home Page', () => {
6
+ it('renders the home page', () => {
7
+ render(<Home />);
8
+ expect(screen.getByText(/welcome/i)).toBeInTheDocument();
9
+ });
10
+ });
@@ -0,0 +1,10 @@
1
+ // next.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+ import Home from './pages/index';
4
+
5
+ describe('Next.js Home Page', () => {
6
+ it('renders the home page', () => {
7
+ render(<Home />);
8
+ expect(screen.getByText(/welcome/i)).toBeInTheDocument();
9
+ });
10
+ });
@@ -0,0 +1,9 @@
1
+ // nuxt.test.js
2
+ import { render } from '@testing-library/vue';
3
+ import Home from './pages/index.vue';
4
+
5
+ describe('Nuxt App', () => {
6
+ it('renders homepage', () => {
7
+ render(Home);
8
+ });
9
+ });
@@ -0,0 +1,10 @@
1
+ // react.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+ import App from '../App';
4
+
5
+ describe('React App', () => {
6
+ it('renders a component', () => {
7
+ render(<App />);
8
+ expect(screen.getByText(/hello/i)).toBeInTheDocument();
9
+ });
10
+ });
@@ -0,0 +1,10 @@
1
+ // react.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+ import App from '../App';
4
+
5
+ describe('React App', () => {
6
+ it('renders a component', () => {
7
+ render(<App />);
8
+ expect(screen.getByText(/hello/i)).toBeInTheDocument();
9
+ });
10
+ });
@@ -0,0 +1,16 @@
1
+ // react-express-shadcn.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+ const request = require('supertest');
4
+ const app = require('./server'); // Express server
5
+
6
+ describe('React + Express + ShadCN App', () => {
7
+ it('renders frontend component', () => {
8
+ render(<div className="shadcn-ui">Frontend</div>);
9
+ expect(screen.getByText(/frontend/i)).toBeInTheDocument();
10
+ });
11
+
12
+ it('tests backend API', async () => {
13
+ const res = await request(app).get('/');
14
+ expect(res.statusCode).toBe(200);
15
+ });
16
+ });
@@ -0,0 +1,16 @@
1
+ // react-express-shadcn.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+ const request = require('supertest');
4
+ const app = require('./server'); // Express server
5
+
6
+ describe('React + Express + ShadCN App', () => {
7
+ it('renders frontend component', () => {
8
+ render(<div className="shadcn-ui">Frontend</div>);
9
+ expect(screen.getByText(/frontend/i)).toBeInTheDocument();
10
+ });
11
+
12
+ it('tests backend API', async () => {
13
+ const res = await request(app).get('/');
14
+ expect(res.statusCode).toBe(200);
15
+ });
16
+ });
@@ -0,0 +1,14 @@
1
+ // react-nest-shadcn.test.js
2
+ import { render, screen } from '@testing-library/react';
3
+
4
+ describe('React + NestJS + ShadCN App', () => {
5
+ it('renders a UI component', () => {
6
+ render(<div className="shadcn-ui">Hello</div>);
7
+ expect(screen.getByText(/hello/i)).toBeInTheDocument();
8
+ });
9
+
10
+ it('backend placeholder', () => {
11
+ // Normally you’d test NestJS endpoints with Supertest
12
+ expect(true).toBe(true);
13
+ });
14
+ });
@@ -0,0 +1,9 @@
1
+ // remix.test.js
2
+ import { render } from '@testing-library/react';
3
+ import Index from './app/routes/index';
4
+
5
+ describe('Remix App', () => {
6
+ it('renders homepage', () => {
7
+ render(<Index />);
8
+ });
9
+ });
@@ -0,0 +1,9 @@
1
+ // vue.test.js
2
+ import { render } from '@testing-library/vue';
3
+ import HelloWorld from './components/HelloWorld.vue';
4
+
5
+ describe('Vue App', () => {
6
+ it('renders component', () => {
7
+ render(HelloWorld);
8
+ });
9
+ });
@@ -0,0 +1,9 @@
1
+ // vue.test.js
2
+ import { render } from '@testing-library/vue';
3
+ import HelloWorld from './components/HelloWorld.vue';
4
+
5
+ describe('Vue App', () => {
6
+ it('renders component', () => {
7
+ render(HelloWorld);
8
+ });
9
+ });
@@ -0,0 +1,102 @@
1
+ {
2
+ "jest": {
3
+ "angularjs": {
4
+ "typescript": {
5
+ "tests/angularjs.test.ts": {
6
+ "action": "create"
7
+ }
8
+ }
9
+ },
10
+ "expressjs": {
11
+ "javascript": {
12
+ "tests/expressjs.test.js": {
13
+ "action": "create"
14
+ }
15
+ },
16
+ "typescript": {
17
+ "tests/expressjs.test.ts": {
18
+ "action": "create"
19
+ }
20
+ }
21
+ },
22
+ "nestjs": {
23
+ "typescript": {
24
+ "tests/nestjs.test.ts": {
25
+ "action": "create"
26
+ }
27
+ }
28
+ },
29
+ "nextjs": {
30
+ "javascript": {
31
+ "tests/nextjs.test.js": {
32
+ "action": "create"
33
+ }
34
+ },
35
+ "typescript": {
36
+ "tests/nextjs.test.ts": {
37
+ "action": "create"
38
+ }
39
+ }
40
+ },
41
+ "nuxtjs": {
42
+ "typescript": {
43
+ "tests/nuxtjs.test.ts": {
44
+ "action": "create"
45
+ }
46
+ }
47
+ },
48
+ "reactjs": {
49
+ "javascript": {
50
+ "tests/reactjs.test.js": {
51
+ "action": "create"
52
+ }
53
+ },
54
+ "typescript": {
55
+ "tests/reactjs.test.ts": {
56
+ "action": "create"
57
+ }
58
+ }
59
+ },
60
+ "reactjs+expressjs+shadcn": {
61
+ "javascript": {
62
+ "tests/reactjs.expressjs.shadcn.test.js": {
63
+ "action": "create"
64
+ }
65
+ },
66
+ "typescript": {
67
+ "tests/reactjs.expressjs.shadcn.test.ts": {
68
+ "action": "create"
69
+ }
70
+ }
71
+ },
72
+ "reactjs+nestjs+shadcn": {
73
+ "typescript": {
74
+ "tests/reactjs.expressjs.shadcn.test.ts": {
75
+ "action": "create"
76
+ }
77
+ }
78
+ },
79
+ "remixjs": {
80
+ "typescript": {
81
+ "tests/remixjs.test.ts": {
82
+ "action": "create"
83
+ }
84
+ }
85
+ },
86
+ "vuejs": {
87
+ "javascript": {
88
+ "tests/vuejs.test.js": {
89
+ "action": "create"
90
+ }
91
+ },
92
+ "typescript": {
93
+ "tests/vuejs.test.ts": {
94
+ "action": "create"
95
+ }
96
+ }
97
+ }
98
+ },
99
+ "cypress": {},
100
+ "mocha": {},
101
+ "playwright": {}
102
+ }