@adonisjs/core 7.0.0-next.10 → 7.0.0-next.11
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.
- package/build/commands/add.js +40 -110
- package/build/commands/build.js +51 -107
- package/build/commands/configure.js +82 -177
- package/build/commands/eject.js +17 -60
- package/build/commands/env/add.js +55 -134
- package/build/commands/generate_key.js +22 -66
- package/build/commands/inspect_rcfile.js +27 -55
- package/build/commands/list/routes.js +246 -116
- package/build/commands/make/command.js +15 -57
- package/build/commands/make/controller.js +43 -120
- package/build/commands/make/event.js +16 -62
- package/build/commands/make/exception.js +16 -62
- package/build/commands/make/listener.js +36 -93
- package/build/commands/make/middleware.js +41 -101
- package/build/commands/make/preload.js +47 -113
- package/build/commands/make/provider.js +47 -112
- package/build/commands/make/service.js +16 -55
- package/build/commands/make/test.js +47 -132
- package/build/commands/make/transformer.js +17 -64
- package/build/commands/make/validator.js +20 -80
- package/build/commands/make/view.js +15 -56
- package/build/commands/repl.js +17 -50
- package/build/commands/serve.js +80 -150
- package/build/commands/test.js +92 -202
- package/build/factories/app.js +2 -9
- package/build/factories/bodyparser.js +2 -9
- package/build/factories/core/ace.js +15 -46
- package/build/factories/core/ignitor.js +12 -180
- package/build/factories/core/main.js +22 -11
- package/build/factories/core/test_utils.js +19 -43
- package/build/factories/encryption.js +2 -9
- package/build/factories/events.js +2 -9
- package/build/factories/hash.js +2 -9
- package/build/factories/http.js +2 -9
- package/build/factories/logger.js +2 -9
- package/build/factories/stubs.js +28 -91
- package/build/index.js +13 -46
- package/build/modules/ace/codemods.js +222 -477
- package/build/modules/ace/main.js +2 -41
- package/build/modules/app.js +4 -26
- package/build/modules/bodyparser/bodyparser_middleware.js +2 -14
- package/build/modules/bodyparser/main.js +4 -9
- package/build/modules/config.js +4 -26
- package/build/modules/container.js +4 -9
- package/build/modules/dumper/main.js +6 -32
- package/build/modules/dumper/plugins/edge.js +2 -62
- package/build/modules/encryption.js +4 -26
- package/build/modules/env/editor.js +2 -9
- package/build/modules/env/main.js +2 -28
- package/build/modules/events.js +4 -9
- package/build/modules/hash/drivers/argon.js +2 -9
- package/build/modules/hash/drivers/bcrypt.js +2 -20
- package/build/modules/hash/drivers/scrypt.js +2 -9
- package/build/modules/hash/main.js +6 -28
- package/build/modules/hash/phc_formatter.js +2 -9
- package/build/modules/health.js +2 -9
- package/build/modules/http/main.js +4 -15
- package/build/modules/http/url_builder_client.js +2 -9
- package/build/modules/logger.d.ts +30 -0
- package/build/modules/logger.js +4 -9
- package/build/modules/repl.js +4 -9
- package/build/modules/transformers/main.js +4 -9
- package/build/providers/app_provider.js +147 -359
- package/build/providers/edge_provider.js +97 -165
- package/build/providers/hash_provider.js +29 -91
- package/build/providers/repl_provider.js +61 -152
- package/build/providers/vinejs_provider.d.ts +1 -1
- package/build/providers/vinejs_provider.js +20 -66
- package/build/services/ace.js +2 -17
- package/build/services/app.js +2 -21
- package/build/services/config.js +2 -13
- package/build/services/dumper.js +5 -21
- package/build/services/emitter.js +2 -14
- package/build/services/encryption.js +2 -14
- package/build/services/hash.js +2 -14
- package/build/services/logger.js +2 -14
- package/build/services/repl.js +2 -14
- package/build/services/router.js +2 -14
- package/build/services/server.js +2 -14
- package/build/services/test_utils.js +2 -17
- package/build/services/url_builder.js +5 -17
- package/build/src/exceptions.js +2 -49
- package/build/src/helpers/assert.js +2 -55
- package/build/src/helpers/http.js +2 -28
- package/build/src/helpers/is.js +3 -31
- package/build/src/helpers/main.js +5 -52
- package/build/src/helpers/string.js +2 -78
- package/build/src/helpers/types.js +26 -135
- package/build/src/helpers/verification_token.js +2 -120
- package/build/src/test_utils/main.js +5 -77
- package/build/src/types.js +0 -8
- package/build/src/vine.js +2 -105
- package/build/types/ace.js +2 -9
- package/build/types/app.js +2 -9
- package/build/types/bodyparser.js +2 -9
- package/build/types/common.js +2 -9
- package/build/types/container.js +2 -9
- package/build/types/encryption.js +2 -9
- package/build/types/events.js +2 -9
- package/build/types/hash.js +2 -9
- package/build/types/health.js +2 -9
- package/build/types/helpers.js +0 -8
- package/build/types/http.js +2 -9
- package/build/types/logger.js +2 -9
- package/build/types/repl.js +2 -9
- package/build/types/transformers.js +2 -9
- package/package.json +76 -19
- package/build/modules/ace/commands.js +0 -157
- package/build/modules/ace/create_kernel.js +0 -91
- package/build/modules/ace/kernel.js +0 -40
- package/build/modules/dumper/define_config.js +0 -36
- package/build/modules/dumper/dumper.js +0 -266
- package/build/modules/dumper/errors.js +0 -119
- package/build/modules/hash/define_config.js +0 -125
- package/build/modules/http/request_validator.js +0 -100
- package/build/src/assembler_hooks/index_entities.js +0 -112
- package/build/src/cli_formatters/routes_list.js +0 -397
- package/build/src/config_provider.js +0 -71
- package/build/src/debug.js +0 -25
- package/build/src/ignitor/ace.js +0 -102
- package/build/src/ignitor/http.js +0 -159
- package/build/src/ignitor/main.js +0 -124
- package/build/src/ignitor/test.js +0 -66
- package/build/src/test_utils/http.js +0 -82
- package/build/src/utils.js +0 -114
- package/build/stubs/main.js +0 -9
- package/build/toolkit/commands/index_commands.js +0 -30
- package/build/toolkit/main.js +0 -27
|
@@ -1,477 +1,222 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
* {
|
|
224
|
-
* name: 'UserPolicy',
|
|
225
|
-
* path: '#policies/user_policy'
|
|
226
|
-
* }
|
|
227
|
-
* ])
|
|
228
|
-
* ```
|
|
229
|
-
*/
|
|
230
|
-
async registerPolicies(policies) {
|
|
231
|
-
const transformer = await this.#getCodeTransformer();
|
|
232
|
-
if (!transformer) {
|
|
233
|
-
this.#cliLogger.warning('Cannot update "app/policies/main.ts" file. Install "@adonisjs/assembler" to modify source files');
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
const action = this.#cliLogger.action('update app/policies/main.ts file');
|
|
237
|
-
try {
|
|
238
|
-
await transformer.addPolicies(policies);
|
|
239
|
-
action.succeeded();
|
|
240
|
-
}
|
|
241
|
-
catch (error) {
|
|
242
|
-
this.emit('error', error);
|
|
243
|
-
action.failed(error.message);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Update the adonisrc.ts file with new configuration settings.
|
|
248
|
-
* This method allows modification of the AdonisJS runtime configuration.
|
|
249
|
-
*
|
|
250
|
-
* @param params - Parameters for updating the RC file (varies based on update type)
|
|
251
|
-
*
|
|
252
|
-
* @example
|
|
253
|
-
* ```ts
|
|
254
|
-
* await codemods.updateRcFile((rcFile) => {
|
|
255
|
-
* rcFile.addCommand('make:custom')
|
|
256
|
-
* rcFile.addPreloadFile('#app/events/main')
|
|
257
|
-
* })
|
|
258
|
-
* ```
|
|
259
|
-
*/
|
|
260
|
-
async updateRcFile(...params) {
|
|
261
|
-
const transformer = await this.#getCodeTransformer();
|
|
262
|
-
if (!transformer) {
|
|
263
|
-
this.#cliLogger.warning('Cannot update "adonisrc.ts" file. Install "@adonisjs/assembler" to modify source files');
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
const action = this.#cliLogger.action('update adonisrc.ts file');
|
|
267
|
-
try {
|
|
268
|
-
await transformer.updateRcFile(...params);
|
|
269
|
-
action.succeeded();
|
|
270
|
-
}
|
|
271
|
-
catch (error) {
|
|
272
|
-
this.emit('error', error);
|
|
273
|
-
action.failed(error.message);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Register a new Vite plugin in the vite.config.ts file.
|
|
278
|
-
* This method adds plugin configuration to the Vite build configuration.
|
|
279
|
-
*
|
|
280
|
-
* @param params - Parameters for adding the Vite plugin (varies based on plugin type)
|
|
281
|
-
*
|
|
282
|
-
* @example
|
|
283
|
-
* ```ts
|
|
284
|
-
* await codemods.registerVitePlugin({
|
|
285
|
-
* name: 'vue',
|
|
286
|
-
* import: 'import vue from "@vitejs/plugin-vue"',
|
|
287
|
-
* options: '()'
|
|
288
|
-
* })
|
|
289
|
-
* ```
|
|
290
|
-
*/
|
|
291
|
-
async registerVitePlugin(...params) {
|
|
292
|
-
const transformer = await this.#getCodeTransformer();
|
|
293
|
-
if (!transformer) {
|
|
294
|
-
this.#cliLogger.warning('Cannot update "vite.config.ts" file. Install "@adonisjs/assembler" to modify source files');
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
const action = this.#cliLogger.action('update vite.config.ts file');
|
|
298
|
-
try {
|
|
299
|
-
await transformer.addVitePlugin(...params);
|
|
300
|
-
action.succeeded();
|
|
301
|
-
}
|
|
302
|
-
catch (error) {
|
|
303
|
-
this.emit('error', error);
|
|
304
|
-
action.failed(error.message);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Register a new Japa plugin in the tests/bootstrap.ts file.
|
|
309
|
-
* This method adds plugin configuration to the test runner setup.
|
|
310
|
-
*
|
|
311
|
-
* @param params - Parameters for adding the Japa plugin (varies based on plugin type)
|
|
312
|
-
*
|
|
313
|
-
* @example
|
|
314
|
-
* ```ts
|
|
315
|
-
* await codemods.registerJapaPlugin({
|
|
316
|
-
* name: 'expect',
|
|
317
|
-
* import: 'import { expect } from "@japa/expect"'
|
|
318
|
-
* })
|
|
319
|
-
* ```
|
|
320
|
-
*/
|
|
321
|
-
async registerJapaPlugin(...params) {
|
|
322
|
-
const transformer = await this.#getCodeTransformer();
|
|
323
|
-
if (!transformer) {
|
|
324
|
-
this.#cliLogger.warning('Cannot update "tests/bootstrap.ts" file. Install "@adonisjs/assembler" to modify source files');
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
const action = this.#cliLogger.action('update tests/bootstrap.ts file');
|
|
328
|
-
try {
|
|
329
|
-
await transformer.addJapaPlugin(...params);
|
|
330
|
-
action.succeeded();
|
|
331
|
-
}
|
|
332
|
-
catch (error) {
|
|
333
|
-
this.emit('error', error);
|
|
334
|
-
action.failed(error.message);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Generate a file using a stub template
|
|
339
|
-
*
|
|
340
|
-
* @param stubsRoot - Root directory containing stub files
|
|
341
|
-
* @param stubPath - Path to the specific stub file
|
|
342
|
-
* @param stubState - Template variables for stub generation
|
|
343
|
-
*
|
|
344
|
-
* @example
|
|
345
|
-
* ```ts
|
|
346
|
-
* const result = await codemods.makeUsingStub(
|
|
347
|
-
* './stubs',
|
|
348
|
-
* 'controller.stub',
|
|
349
|
-
* {
|
|
350
|
-
* filename: 'UserController',
|
|
351
|
-
* entity: { name: 'User', modelName: 'User' },
|
|
352
|
-
* resourceful: true
|
|
353
|
-
* }
|
|
354
|
-
* )
|
|
355
|
-
* ```
|
|
356
|
-
*/
|
|
357
|
-
async makeUsingStub(stubsRoot, stubPath, stubState) {
|
|
358
|
-
const stubs = await this.#app.stubs.create();
|
|
359
|
-
const stub = await stubs.build(stubPath, { source: stubsRoot });
|
|
360
|
-
const output = await stub.generate({ force: this.overwriteExisting, ...stubState });
|
|
361
|
-
const entityFileName = stringHelpers.toUnixSlash(this.#app.relativePath(output.destination));
|
|
362
|
-
const result = { ...output, relativeFileName: entityFileName };
|
|
363
|
-
if (output.status === 'skipped') {
|
|
364
|
-
this.#cliLogger.action(`create ${entityFileName}`).skipped(output.skipReason);
|
|
365
|
-
return result;
|
|
366
|
-
}
|
|
367
|
-
this.#cliLogger.action(`create ${entityFileName}`).succeeded();
|
|
368
|
-
return result;
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Install packages using the detected or specified package manager.
|
|
372
|
-
* Automatically detects npm, yarn, or pnpm and installs dependencies accordingly.
|
|
373
|
-
* You can specify version of each package by setting it in the name like '@adonisjs/lucid@next'.
|
|
374
|
-
*
|
|
375
|
-
* @param packages - Array of packages with their dependency type
|
|
376
|
-
* @param packageManager - Optional package manager to use (auto-detected if not provided)
|
|
377
|
-
*
|
|
378
|
-
* @example
|
|
379
|
-
* ```ts
|
|
380
|
-
* const success = await codemods.installPackages([
|
|
381
|
-
* { name: '@adonisjs/lucid', isDevDependency: false },
|
|
382
|
-
* { name: '@types/node', isDevDependency: true }
|
|
383
|
-
* ])
|
|
384
|
-
* ```
|
|
385
|
-
*/
|
|
386
|
-
async installPackages(packages, packageManager) {
|
|
387
|
-
const transformer = await this.#getCodeTransformer();
|
|
388
|
-
const appPath = this.#app.makePath();
|
|
389
|
-
const colors = this.#cliLogger.getColors();
|
|
390
|
-
const devDependencies = packages
|
|
391
|
-
.filter((pkg) => pkg.isDevDependency)
|
|
392
|
-
.map(({ name }) => {
|
|
393
|
-
return name.startsWith('@adonisjs/') ? `${name}@next` : name;
|
|
394
|
-
});
|
|
395
|
-
const dependencies = packages
|
|
396
|
-
.filter((pkg) => !pkg.isDevDependency)
|
|
397
|
-
.map(({ name }) => {
|
|
398
|
-
return name.startsWith('@adonisjs/') ? `${name}@next` : name;
|
|
399
|
-
});
|
|
400
|
-
if (!transformer) {
|
|
401
|
-
this.#cliLogger.warning('Cannot install packages. Install "@adonisjs/assembler" or manually install following packages');
|
|
402
|
-
this.#cliLogger.log(`devDependencies: ${devDependencies.join(',')}`);
|
|
403
|
-
this.#cliLogger.log(`dependencies: ${dependencies.join(',')}`);
|
|
404
|
-
return false;
|
|
405
|
-
}
|
|
406
|
-
packageManager = packageManager ?? (await transformer.detectPackageManager(appPath)) ?? 'npm';
|
|
407
|
-
const spinner = this.#cliLogger.await(`installing dependencies using ${packageManager} `);
|
|
408
|
-
const silentLogs = !this.verboseInstallOutput;
|
|
409
|
-
if (silentLogs) {
|
|
410
|
-
spinner.start();
|
|
411
|
-
}
|
|
412
|
-
try {
|
|
413
|
-
if (dependencies.length) {
|
|
414
|
-
await transformer.installPackage(dependencies, {
|
|
415
|
-
cwd: appPath,
|
|
416
|
-
silent: silentLogs,
|
|
417
|
-
packageManager,
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
if (devDependencies.length) {
|
|
421
|
-
await transformer.installPackage(devDependencies, {
|
|
422
|
-
dev: true,
|
|
423
|
-
cwd: appPath,
|
|
424
|
-
silent: silentLogs,
|
|
425
|
-
packageManager,
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
if (silentLogs) {
|
|
429
|
-
spinner.stop();
|
|
430
|
-
}
|
|
431
|
-
this.#cliLogger.success('Packages installed');
|
|
432
|
-
this.#cliLogger.log(devDependencies.map((dependency) => ` ${colors.dim('dev')} ${dependency} `).join('\n'));
|
|
433
|
-
this.#cliLogger.log(dependencies.map((dependency) => ` ${colors.dim('prod')} ${dependency} `).join('\n'));
|
|
434
|
-
return true;
|
|
435
|
-
}
|
|
436
|
-
catch (error) {
|
|
437
|
-
if (silentLogs) {
|
|
438
|
-
spinner.update('unable to install dependencies');
|
|
439
|
-
spinner.stop();
|
|
440
|
-
}
|
|
441
|
-
this.#cliLogger.fatal(error);
|
|
442
|
-
this.emit('error', error);
|
|
443
|
-
return false;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* List the packages that should be installed manually.
|
|
448
|
-
* This method displays installation commands for different package managers
|
|
449
|
-
* when automatic installation is not available or desired.
|
|
450
|
-
*
|
|
451
|
-
* @param packages - Array of packages with their dependency type
|
|
452
|
-
*
|
|
453
|
-
* @example
|
|
454
|
-
* ```ts
|
|
455
|
-
* await codemods.listPackagesToInstall([
|
|
456
|
-
* { name: '@adonisjs/lucid', isDevDependency: false },
|
|
457
|
-
* { name: '@types/node', isDevDependency: true }
|
|
458
|
-
* ])
|
|
459
|
-
* // Output:
|
|
460
|
-
* // Please install following packages
|
|
461
|
-
* // npm i -D @types/node
|
|
462
|
-
* // npm i @adonisjs/lucid
|
|
463
|
-
* ```
|
|
464
|
-
*/
|
|
465
|
-
async listPackagesToInstall(packages) {
|
|
466
|
-
const appPath = this.#app.makePath();
|
|
467
|
-
const devDependencies = packages.filter((pkg) => pkg.isDevDependency).map(({ name }) => name);
|
|
468
|
-
const dependencies = packages.filter((pkg) => !pkg.isDevDependency).map(({ name }) => name);
|
|
469
|
-
let packageManager = null;
|
|
470
|
-
const transformer = await this.#getCodeTransformer();
|
|
471
|
-
if (transformer)
|
|
472
|
-
packageManager = await transformer.detectPackageManager(appPath);
|
|
473
|
-
this.#cliLogger.log('Please install following packages');
|
|
474
|
-
this.#cliLogger.log(this.#getInstallationCommands(devDependencies, packageManager || 'npm', true));
|
|
475
|
-
this.#cliLogger.log(this.#getInstallationCommands(dependencies, packageManager || 'npm', false));
|
|
476
|
-
}
|
|
477
|
-
}
|
|
1
|
+
import { t as string_default } from "../../string-CJ7ewUFq.js";
|
|
2
|
+
import { EnvEditor } from "@adonisjs/env/editor";
|
|
3
|
+
import { EventEmitter } from "node:events";
|
|
4
|
+
var Codemods = class extends EventEmitter {
|
|
5
|
+
#codeTransformer;
|
|
6
|
+
#app;
|
|
7
|
+
#cliLogger;
|
|
8
|
+
overwriteExisting = false;
|
|
9
|
+
verboseInstallOutput = false;
|
|
10
|
+
constructor(app, cliLogger) {
|
|
11
|
+
super();
|
|
12
|
+
this.#app = app;
|
|
13
|
+
this.#cliLogger = cliLogger;
|
|
14
|
+
}
|
|
15
|
+
async #getCodeTransformer() {
|
|
16
|
+
try {
|
|
17
|
+
if (!this.#codeTransformer) {
|
|
18
|
+
const { CodeTransformer } = await import("@adonisjs/assembler/code_transformer");
|
|
19
|
+
this.#codeTransformer = new CodeTransformer(this.#app.appRoot);
|
|
20
|
+
}
|
|
21
|
+
return this.#codeTransformer;
|
|
22
|
+
} catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
#getInstallationCommands(packages, packageManager, isDev) {
|
|
27
|
+
if (!packages.length) return "";
|
|
28
|
+
const colors = this.#cliLogger.getColors();
|
|
29
|
+
const devFlag = isDev ? " -D" : "";
|
|
30
|
+
switch (packageManager) {
|
|
31
|
+
case "yarn":
|
|
32
|
+
case "yarn@berry": return `${colors.yellow(`yarn add${devFlag}`)} ${packages.join(" ")}`;
|
|
33
|
+
case "pnpm": return `${colors.yellow(`pnpm add${devFlag}`)} ${packages.join(" ")}`;
|
|
34
|
+
case "npm":
|
|
35
|
+
default: return `${colors.yellow(`npm i${devFlag}`)} ${packages.join(" ")}`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async defineEnvVariables(environmentVariables, options) {
|
|
39
|
+
const editor = new EnvEditor(this.#app.appRoot);
|
|
40
|
+
await editor.load();
|
|
41
|
+
Object.keys(environmentVariables).forEach((key) => {
|
|
42
|
+
const value = environmentVariables[key];
|
|
43
|
+
editor.add(key, value, options?.omitFromExample?.includes(key));
|
|
44
|
+
});
|
|
45
|
+
await editor.save();
|
|
46
|
+
this.#cliLogger.action("update .env file").succeeded();
|
|
47
|
+
}
|
|
48
|
+
async getTsMorphProject() {
|
|
49
|
+
const transformer = await this.#getCodeTransformer();
|
|
50
|
+
if (!transformer) {
|
|
51
|
+
this.#cliLogger.warning("Cannot create CodeTransformer. Install \"@adonisjs/assembler\" to modify source files");
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
return transformer.project;
|
|
55
|
+
}
|
|
56
|
+
async defineEnvValidations(validations) {
|
|
57
|
+
const transformer = await this.#getCodeTransformer();
|
|
58
|
+
if (!transformer) {
|
|
59
|
+
this.#cliLogger.warning("Cannot update \"start/env.ts\" file. Install \"@adonisjs/assembler\" to modify source files");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const action = this.#cliLogger.action("update start/env.ts file");
|
|
63
|
+
try {
|
|
64
|
+
await transformer.defineEnvValidations(validations);
|
|
65
|
+
action.succeeded();
|
|
66
|
+
} catch (error) {
|
|
67
|
+
this.emit("error", error);
|
|
68
|
+
action.failed(error.message);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async registerMiddleware(stack, middleware) {
|
|
72
|
+
const transformer = await this.#getCodeTransformer();
|
|
73
|
+
if (!transformer) {
|
|
74
|
+
this.#cliLogger.warning("Cannot update \"start/kernel.ts\" file. Install \"@adonisjs/assembler\" to modify source files");
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const action = this.#cliLogger.action("update start/kernel.ts file");
|
|
78
|
+
try {
|
|
79
|
+
await transformer.addMiddlewareToStack(stack, middleware);
|
|
80
|
+
action.succeeded();
|
|
81
|
+
} catch (error) {
|
|
82
|
+
this.emit("error", error);
|
|
83
|
+
action.failed(error.message);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async registerPolicies(policies) {
|
|
87
|
+
const transformer = await this.#getCodeTransformer();
|
|
88
|
+
if (!transformer) {
|
|
89
|
+
this.#cliLogger.warning("Cannot update \"app/policies/main.ts\" file. Install \"@adonisjs/assembler\" to modify source files");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const action = this.#cliLogger.action("update app/policies/main.ts file");
|
|
93
|
+
try {
|
|
94
|
+
await transformer.addPolicies(policies);
|
|
95
|
+
action.succeeded();
|
|
96
|
+
} catch (error) {
|
|
97
|
+
this.emit("error", error);
|
|
98
|
+
action.failed(error.message);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async updateRcFile(...params) {
|
|
102
|
+
const transformer = await this.#getCodeTransformer();
|
|
103
|
+
if (!transformer) {
|
|
104
|
+
this.#cliLogger.warning("Cannot update \"adonisrc.ts\" file. Install \"@adonisjs/assembler\" to modify source files");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const action = this.#cliLogger.action("update adonisrc.ts file");
|
|
108
|
+
try {
|
|
109
|
+
await transformer.updateRcFile(...params);
|
|
110
|
+
action.succeeded();
|
|
111
|
+
} catch (error) {
|
|
112
|
+
this.emit("error", error);
|
|
113
|
+
action.failed(error.message);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async registerVitePlugin(...params) {
|
|
117
|
+
const transformer = await this.#getCodeTransformer();
|
|
118
|
+
if (!transformer) {
|
|
119
|
+
this.#cliLogger.warning("Cannot update \"vite.config.ts\" file. Install \"@adonisjs/assembler\" to modify source files");
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const action = this.#cliLogger.action("update vite.config.ts file");
|
|
123
|
+
try {
|
|
124
|
+
await transformer.addVitePlugin(...params);
|
|
125
|
+
action.succeeded();
|
|
126
|
+
} catch (error) {
|
|
127
|
+
this.emit("error", error);
|
|
128
|
+
action.failed(error.message);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async registerJapaPlugin(...params) {
|
|
132
|
+
const transformer = await this.#getCodeTransformer();
|
|
133
|
+
if (!transformer) {
|
|
134
|
+
this.#cliLogger.warning("Cannot update \"tests/bootstrap.ts\" file. Install \"@adonisjs/assembler\" to modify source files");
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const action = this.#cliLogger.action("update tests/bootstrap.ts file");
|
|
138
|
+
try {
|
|
139
|
+
await transformer.addJapaPlugin(...params);
|
|
140
|
+
action.succeeded();
|
|
141
|
+
} catch (error) {
|
|
142
|
+
this.emit("error", error);
|
|
143
|
+
action.failed(error.message);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async makeUsingStub(stubsRoot, stubPath, stubState) {
|
|
147
|
+
const output = await (await (await this.#app.stubs.create()).build(stubPath, { source: stubsRoot })).generate({
|
|
148
|
+
force: this.overwriteExisting,
|
|
149
|
+
...stubState
|
|
150
|
+
});
|
|
151
|
+
const entityFileName = string_default.toUnixSlash(this.#app.relativePath(output.destination));
|
|
152
|
+
const result = {
|
|
153
|
+
...output,
|
|
154
|
+
relativeFileName: entityFileName
|
|
155
|
+
};
|
|
156
|
+
if (output.status === "skipped") {
|
|
157
|
+
this.#cliLogger.action(`create ${entityFileName}`).skipped(output.skipReason);
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
this.#cliLogger.action(`create ${entityFileName}`).succeeded();
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
async installPackages(packages, packageManager) {
|
|
164
|
+
const transformer = await this.#getCodeTransformer();
|
|
165
|
+
const appPath = this.#app.makePath();
|
|
166
|
+
const colors = this.#cliLogger.getColors();
|
|
167
|
+
const devDependencies = packages.filter((pkg) => pkg.isDevDependency).map(({ name }) => {
|
|
168
|
+
return name.startsWith("@adonisjs/") ? `${name}@next` : name;
|
|
169
|
+
});
|
|
170
|
+
const dependencies = packages.filter((pkg) => !pkg.isDevDependency).map(({ name }) => {
|
|
171
|
+
return name.startsWith("@adonisjs/") ? `${name}@next` : name;
|
|
172
|
+
});
|
|
173
|
+
if (!transformer) {
|
|
174
|
+
this.#cliLogger.warning("Cannot install packages. Install \"@adonisjs/assembler\" or manually install following packages");
|
|
175
|
+
this.#cliLogger.log(`devDependencies: ${devDependencies.join(",")}`);
|
|
176
|
+
this.#cliLogger.log(`dependencies: ${dependencies.join(",")}`);
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
packageManager = packageManager ?? await transformer.detectPackageManager(appPath) ?? "npm";
|
|
180
|
+
const spinner = this.#cliLogger.await(`installing dependencies using ${packageManager} `);
|
|
181
|
+
const silentLogs = !this.verboseInstallOutput;
|
|
182
|
+
if (silentLogs) spinner.start();
|
|
183
|
+
try {
|
|
184
|
+
if (dependencies.length) await transformer.installPackage(dependencies, {
|
|
185
|
+
cwd: appPath,
|
|
186
|
+
silent: silentLogs,
|
|
187
|
+
packageManager
|
|
188
|
+
});
|
|
189
|
+
if (devDependencies.length) await transformer.installPackage(devDependencies, {
|
|
190
|
+
dev: true,
|
|
191
|
+
cwd: appPath,
|
|
192
|
+
silent: silentLogs,
|
|
193
|
+
packageManager
|
|
194
|
+
});
|
|
195
|
+
if (silentLogs) spinner.stop();
|
|
196
|
+
this.#cliLogger.success("Packages installed");
|
|
197
|
+
this.#cliLogger.log(devDependencies.map((dependency) => ` ${colors.dim("dev")} ${dependency} `).join("\n"));
|
|
198
|
+
this.#cliLogger.log(dependencies.map((dependency) => ` ${colors.dim("prod")} ${dependency} `).join("\n"));
|
|
199
|
+
return true;
|
|
200
|
+
} catch (error) {
|
|
201
|
+
if (silentLogs) {
|
|
202
|
+
spinner.update("unable to install dependencies");
|
|
203
|
+
spinner.stop();
|
|
204
|
+
}
|
|
205
|
+
this.#cliLogger.fatal(error);
|
|
206
|
+
this.emit("error", error);
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async listPackagesToInstall(packages) {
|
|
211
|
+
const appPath = this.#app.makePath();
|
|
212
|
+
const devDependencies = packages.filter((pkg) => pkg.isDevDependency).map(({ name }) => name);
|
|
213
|
+
const dependencies = packages.filter((pkg) => !pkg.isDevDependency).map(({ name }) => name);
|
|
214
|
+
let packageManager = null;
|
|
215
|
+
const transformer = await this.#getCodeTransformer();
|
|
216
|
+
if (transformer) packageManager = await transformer.detectPackageManager(appPath);
|
|
217
|
+
this.#cliLogger.log("Please install following packages");
|
|
218
|
+
this.#cliLogger.log(this.#getInstallationCommands(devDependencies, packageManager || "npm", true));
|
|
219
|
+
this.#cliLogger.log(this.#getInstallationCommands(dependencies, packageManager || "npm", false));
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
export { Codemods };
|