@adonisjs/core 6.1.5-1 → 6.1.5-10

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 (174) hide show
  1. package/build/commands/build.d.ts +10 -0
  2. package/build/commands/build.js +65 -22
  3. package/build/commands/commands.json +1 -1
  4. package/build/commands/configure.d.ts +36 -0
  5. package/build/commands/configure.js +84 -6
  6. package/build/commands/eject.d.ts +4 -0
  7. package/build/commands/eject.js +14 -7
  8. package/build/commands/generate_key.d.ts +4 -0
  9. package/build/commands/generate_key.js +14 -7
  10. package/build/commands/inspect_rcfile.d.ts +9 -0
  11. package/build/commands/inspect_rcfile.js +20 -0
  12. package/build/commands/list/routes.d.ts +36 -0
  13. package/build/commands/list/routes.js +94 -0
  14. package/build/commands/make/_base.d.ts +31 -1
  15. package/build/commands/make/_base.js +18 -10
  16. package/build/commands/make/command.d.ts +6 -0
  17. package/build/commands/make/command.js +15 -5
  18. package/build/commands/make/controller.d.ts +9 -0
  19. package/build/commands/make/controller.js +30 -11
  20. package/build/commands/make/event.d.ts +6 -0
  21. package/build/commands/make/event.js +15 -5
  22. package/build/commands/make/exception.d.ts +14 -0
  23. package/build/commands/make/exception.js +35 -0
  24. package/build/commands/make/listener.d.ts +7 -0
  25. package/build/commands/make/listener.js +20 -7
  26. package/build/commands/make/middleware.d.ts +7 -0
  27. package/build/commands/make/middleware.js +16 -5
  28. package/build/commands/make/preload.d.ts +22 -0
  29. package/build/commands/make/preload.js +95 -0
  30. package/build/commands/make/provider.d.ts +6 -0
  31. package/build/commands/make/provider.js +22 -6
  32. package/build/commands/make/service.d.ts +14 -0
  33. package/build/commands/make/service.js +35 -0
  34. package/build/commands/make/test.d.ts +9 -0
  35. package/build/commands/make/test.js +41 -7
  36. package/build/commands/repl.d.ts +14 -0
  37. package/build/commands/repl.js +30 -0
  38. package/build/commands/serve.d.ts +12 -0
  39. package/build/commands/serve.js +78 -27
  40. package/build/commands/test.d.ts +32 -0
  41. package/build/commands/test.js +203 -0
  42. package/build/factories/app.js +8 -0
  43. package/build/factories/bodyparser.js +8 -0
  44. package/build/factories/core/ace.d.ts +4 -1
  45. package/build/factories/core/ace.js +11 -0
  46. package/build/factories/core/ignitor.d.ts +20 -1
  47. package/build/factories/core/ignitor.js +35 -1
  48. package/build/factories/core/main.js +8 -0
  49. package/build/factories/core/test_utils.d.ts +4 -1
  50. package/build/factories/core/test_utils.js +11 -0
  51. package/build/factories/encryption.js +8 -0
  52. package/build/factories/events.js +8 -0
  53. package/build/factories/hash.js +8 -0
  54. package/build/factories/http.js +8 -0
  55. package/build/factories/logger.js +8 -0
  56. package/build/factories/stubs.d.ts +10 -0
  57. package/build/factories/stubs.js +21 -0
  58. package/build/index.d.ts +5 -1
  59. package/build/index.js +13 -0
  60. package/build/modules/ace/commands.d.ts +123 -0
  61. package/build/modules/ace/commands.js +79 -0
  62. package/build/modules/ace/create_kernel.d.ts +9 -0
  63. package/build/modules/ace/create_kernel.js +31 -0
  64. package/build/modules/ace/kernel.d.ts +4 -0
  65. package/build/modules/ace/kernel.js +12 -0
  66. package/build/modules/ace/main.d.ts +1 -1
  67. package/build/modules/ace/main.js +9 -1
  68. package/build/modules/ace/shell.d.ts +9 -1
  69. package/build/modules/ace/shell.js +21 -0
  70. package/build/modules/app.js +8 -0
  71. package/build/modules/bodyparser/bodyparser_middleware.d.ts +4 -0
  72. package/build/modules/bodyparser/bodyparser_middleware.js +12 -0
  73. package/build/modules/bodyparser/main.js +8 -0
  74. package/build/modules/config.js +8 -0
  75. package/build/modules/container.js +8 -0
  76. package/build/modules/encryption.js +8 -0
  77. package/build/modules/env.js +8 -0
  78. package/build/modules/events.js +8 -0
  79. package/build/modules/hash/define_config.d.ts +3 -0
  80. package/build/modules/hash/define_config.js +20 -0
  81. package/build/modules/hash/drivers_collection.d.ts +16 -4
  82. package/build/modules/hash/drivers_collection.js +31 -8
  83. package/build/modules/hash/main.d.ts +1 -0
  84. package/build/modules/hash/main.js +9 -0
  85. package/build/modules/http/main.d.ts +2 -0
  86. package/build/modules/http/main.js +10 -0
  87. package/build/modules/http/request_validator.d.ts +44 -0
  88. package/build/modules/http/request_validator.js +74 -0
  89. package/build/modules/logger.js +8 -0
  90. package/build/modules/repl.d.ts +1 -0
  91. package/build/modules/repl.js +9 -0
  92. package/build/providers/app_provider.d.ts +31 -2
  93. package/build/providers/app_provider.js +44 -15
  94. package/build/providers/hash_provider.d.ts +16 -0
  95. package/build/providers/hash_provider.js +31 -6
  96. package/build/providers/http_provider.d.ts +17 -0
  97. package/build/providers/http_provider.js +26 -1
  98. package/build/providers/repl_provider.d.ts +13 -0
  99. package/build/providers/repl_provider.js +37 -0
  100. package/build/services/ace.js +15 -0
  101. package/build/services/app.d.ts +8 -0
  102. package/build/services/app.js +16 -0
  103. package/build/services/config.js +11 -0
  104. package/build/services/emitter.js +13 -2
  105. package/build/services/encryption.js +13 -2
  106. package/build/services/hash.js +13 -2
  107. package/build/services/logger.js +13 -2
  108. package/build/services/repl.d.ts +3 -0
  109. package/build/services/repl.js +18 -0
  110. package/build/services/router.js +13 -2
  111. package/build/services/server.js +13 -2
  112. package/build/services/test_utils.js +15 -0
  113. package/build/src/bindings/repl.d.ts +6 -0
  114. package/build/src/bindings/repl.js +78 -0
  115. package/build/src/cli_formatters/routes_list.d.ts +63 -0
  116. package/build/src/cli_formatters/routes_list.js +376 -0
  117. package/build/src/debug.d.ts +1 -1
  118. package/build/src/debug.js +8 -0
  119. package/build/src/exceptions.d.ts +1 -0
  120. package/build/src/exceptions.js +9 -0
  121. package/build/src/helpers/is.js +8 -0
  122. package/build/src/helpers/main.d.ts +2 -0
  123. package/build/src/helpers/main.js +10 -0
  124. package/build/src/helpers/parse_binding_reference.d.ts +45 -0
  125. package/build/src/helpers/parse_binding_reference.js +83 -0
  126. package/build/src/helpers/string.d.ts +26 -0
  127. package/build/src/helpers/string.js +15 -0
  128. package/build/src/helpers/types.d.ts +7 -2
  129. package/build/src/helpers/types.js +13 -0
  130. package/build/src/ignitor/ace.d.ts +12 -0
  131. package/build/src/ignitor/ace.js +50 -1
  132. package/build/src/ignitor/http.d.ts +9 -2
  133. package/build/src/ignitor/http.js +67 -0
  134. package/build/src/ignitor/main.d.ts +29 -1
  135. package/build/src/ignitor/main.js +56 -0
  136. package/build/src/ignitor/test.d.ts +10 -0
  137. package/build/src/ignitor/test.js +25 -0
  138. package/build/src/internal_helpers.d.ts +12 -5
  139. package/build/src/internal_helpers.js +35 -7
  140. package/build/src/test_utils/http.d.ts +10 -2
  141. package/build/src/test_utils/http.js +19 -0
  142. package/build/src/test_utils/main.d.ts +21 -3
  143. package/build/src/test_utils/main.js +27 -1
  144. package/build/src/types.d.ts +61 -3
  145. package/build/src/types.js +8 -0
  146. package/build/src/vinejs/extensions/main.d.ts +1 -0
  147. package/build/src/vinejs/extensions/main.js +9 -0
  148. package/build/src/vinejs/extensions/validates_files.d.ts +22 -0
  149. package/build/src/vinejs/extensions/validates_files.js +76 -0
  150. package/build/stubs/index.js +8 -0
  151. package/build/stubs/make/exception/main.stub +10 -0
  152. package/build/stubs/make/preload_file/main.stub +4 -0
  153. package/build/stubs/make/service/main.stub +4 -0
  154. package/build/toolkit/commands/index_commands.d.ts +4 -0
  155. package/build/toolkit/commands/index_commands.js +13 -5
  156. package/build/toolkit/main.js +11 -0
  157. package/build/types/ace.js +8 -0
  158. package/build/types/app.js +8 -0
  159. package/build/types/bodyparser.js +8 -0
  160. package/build/types/container.js +8 -0
  161. package/build/types/encryption.js +8 -0
  162. package/build/types/events.js +8 -0
  163. package/build/types/hash.js +8 -0
  164. package/build/types/http.js +8 -0
  165. package/build/types/logger.js +8 -0
  166. package/build/types/repl.d.ts +1 -0
  167. package/build/types/repl.js +9 -0
  168. package/package.json +74 -121
  169. package/build/legacy/validator.d.ts +0 -1
  170. package/build/legacy/validator.js +0 -1
  171. package/build/modules/http.d.ts +0 -1
  172. package/build/modules/http.js +0 -1
  173. package/build/src/helpers/string_builder.d.ts +0 -23
  174. package/build/src/helpers/string_builder.js +0 -86
@@ -0,0 +1,95 @@
1
+ /*
2
+ * @adonisjs/core
3
+ *
4
+ * (c) AdonisJS
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ import BaseCommand from './_base.js';
16
+ import { args, flags } from '../../modules/ace/main.js';
17
+ const ALLOWED_ENVIRONMENTS = ['web', 'console', 'test', 'repl'];
18
+ /**
19
+ * Make a new preload file
20
+ */
21
+ export default class MakePreload extends BaseCommand {
22
+ static commandName = 'make:preload';
23
+ static description = 'Create a new preload file inside the start directory';
24
+ /**
25
+ * The stub to use for generating the preload file
26
+ */
27
+ stubPath = 'make/preload_file/main.stub';
28
+ /**
29
+ * Check if the mentioned environments are valid
30
+ */
31
+ #isValidEnvironment(environment) {
32
+ return !environment.find((one) => !ALLOWED_ENVIRONMENTS.includes(one));
33
+ }
34
+ /**
35
+ * Validate the environments flag passed by the user
36
+ */
37
+ #isEnvironmentsFlagValid() {
38
+ if (!this.environments || !this.environments.length) {
39
+ return true;
40
+ }
41
+ return this.#isValidEnvironment(this.environments);
42
+ }
43
+ /**
44
+ * Prompt for the environments
45
+ */
46
+ async #promptForEnvironments() {
47
+ const selectedEnvironments = await this.prompt.multiple('Select the environment(s) in which you want to load this file', [
48
+ { name: 'all', message: 'Load file in all environments' },
49
+ { name: 'console', message: 'Environment for ace commands' },
50
+ { name: 'repl', message: 'Environment for the REPL session' },
51
+ { name: 'web', message: 'Environment for HTTP requests' },
52
+ { name: 'test', message: 'Environment for the test process' },
53
+ ]);
54
+ if (selectedEnvironments.includes('all')) {
55
+ return ['web', 'console', 'test', 'repl'];
56
+ }
57
+ return selectedEnvironments;
58
+ }
59
+ /**
60
+ * Run command
61
+ */
62
+ async run() {
63
+ let environments = this.environments;
64
+ /**
65
+ * Ensure the environments are valid when provided via flag
66
+ */
67
+ if (!this.#isEnvironmentsFlagValid()) {
68
+ this.logger.error(`Invalid environment(s) "${this.environments}". Only "${ALLOWED_ENVIRONMENTS}" are allowed`);
69
+ return;
70
+ }
71
+ /**
72
+ * Prompt for the environments when not defined
73
+ */
74
+ if (!environments) {
75
+ environments = await this.#promptForEnvironments();
76
+ }
77
+ const output = await this.generate(this.stubPath, {
78
+ entity: this.app.generators.createEntity(this.name),
79
+ });
80
+ /**
81
+ * Registering the preload file with the `.adonisrc.json` file. We register
82
+ * the relative path, since we cannot be sure about aliases to exist.
83
+ */
84
+ const preloadImportPath = `./${output.relativeFileName.replace(/(\.js|\.ts)$/, '')}.js`;
85
+ await this.app.rcFileEditor.addPreloadFile(preloadImportPath, environments).save();
86
+ }
87
+ }
88
+ __decorate([
89
+ args.string({ description: 'Name of the preload file' })
90
+ ], MakePreload.prototype, "name", void 0);
91
+ __decorate([
92
+ flags.array({
93
+ description: `Define the preload file's environment. Accepted values are "${ALLOWED_ENVIRONMENTS}"`,
94
+ })
95
+ ], MakePreload.prototype, "environments", void 0);
@@ -1,8 +1,14 @@
1
1
  import BaseCommand from './_base.js';
2
+ /**
3
+ * Make a new provider class
4
+ */
2
5
  export default class MakeProvider extends BaseCommand {
3
6
  static commandName: string;
4
7
  static description: string;
5
8
  name: string;
9
+ /**
10
+ * The stub to use for generating the provider class
11
+ */
6
12
  protected stubPath: string;
7
13
  run(): Promise<void>;
8
14
  }
@@ -1,25 +1,41 @@
1
+ /*
2
+ * @adonisjs/core
3
+ *
4
+ * (c) AdonisJS
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
1
9
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
10
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
11
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
12
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
13
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
14
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
15
  import BaseCommand from './_base.js';
11
16
  import { args } from '../../modules/ace/main.js';
17
+ /**
18
+ * Make a new provider class
19
+ */
12
20
  export default class MakeProvider extends BaseCommand {
13
21
  static commandName = 'make:provider';
14
22
  static description = 'Create a new service provider class';
23
+ /**
24
+ * The stub to use for generating the provider class
25
+ */
15
26
  stubPath = 'make/provider/main.stub';
16
27
  async run() {
17
- await this.generate(this.stubPath, {
28
+ const output = await this.generate(this.stubPath, {
18
29
  entity: this.app.generators.createEntity(this.name),
19
30
  });
31
+ /**
32
+ * Registering the provider with the `.adonisrc.json` file. We register
33
+ * the relative path, since we cannot be sure about aliases to exist.
34
+ */
35
+ const providerImportPath = `./${output.relativeFileName.replace(/(\.js|\.ts)$/, '')}.js`;
36
+ await this.app.rcFileEditor.addProvider(providerImportPath).save();
20
37
  }
21
38
  }
22
39
  __decorate([
23
- args.string({ description: 'Name of the provider' }),
24
- __metadata("design:type", String)
40
+ args.string({ description: 'Name of the provider' })
25
41
  ], MakeProvider.prototype, "name", void 0);
@@ -0,0 +1,14 @@
1
+ import BaseCommand from './_base.js';
2
+ /**
3
+ * Make a new service class
4
+ */
5
+ export default class MakeService extends BaseCommand {
6
+ static commandName: string;
7
+ static description: string;
8
+ name: string;
9
+ /**
10
+ * The stub to use for generating the service class
11
+ */
12
+ protected stubPath: string;
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,35 @@
1
+ /*
2
+ * @adonisjs/core
3
+ *
4
+ * (c) AdonisJS
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ import BaseCommand from './_base.js';
16
+ import { args } from '../../modules/ace/main.js';
17
+ /**
18
+ * Make a new service class
19
+ */
20
+ export default class MakeService extends BaseCommand {
21
+ static commandName = 'make:service';
22
+ static description = 'Create a new service class';
23
+ /**
24
+ * The stub to use for generating the service class
25
+ */
26
+ stubPath = 'make/service/main.stub';
27
+ async run() {
28
+ await this.generate(this.stubPath, {
29
+ entity: this.app.generators.createEntity(this.name),
30
+ });
31
+ }
32
+ }
33
+ __decorate([
34
+ args.string({ description: 'Name of the service' })
35
+ ], MakeService.prototype, "name", void 0);
@@ -1,10 +1,19 @@
1
1
  import BaseCommand from './_base.js';
2
+ /**
3
+ * Make a new test file
4
+ */
2
5
  export default class MakeTest extends BaseCommand {
3
6
  #private;
4
7
  static commandName: string;
5
8
  static description: string;
6
9
  name: string;
7
10
  suite?: string;
11
+ /**
12
+ * The stub to use for generating the test file
13
+ */
8
14
  protected stubPath: string;
15
+ /**
16
+ * Executed by ace
17
+ */
9
18
  run(): Promise<void>;
10
19
  }
@@ -1,26 +1,47 @@
1
+ /*
2
+ * @adonisjs/core
3
+ *
4
+ * (c) AdonisJS
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
1
9
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
10
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
11
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
12
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
13
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
14
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
15
  import BaseCommand from './_base.js';
11
16
  import { args, flags } from '../../modules/ace/main.js';
17
+ /**
18
+ * Make a new test file
19
+ */
12
20
  export default class MakeTest extends BaseCommand {
13
21
  static commandName = 'make:test';
14
22
  static description = 'Create a new Japa test file';
23
+ /**
24
+ * The stub to use for generating the test file
25
+ */
15
26
  stubPath = 'make/test/main.stub';
27
+ /**
28
+ * Returns the suite name for creating the test file
29
+ */
16
30
  async #getSuite() {
17
31
  if (this.suite) {
18
32
  return this.suite;
19
33
  }
34
+ /**
35
+ * Use the first suite from the rcFile when there is only
36
+ * one suite
37
+ */
20
38
  const rcFileSuites = this.app.rcFile.tests.suites;
21
39
  if (rcFileSuites.length === 1) {
22
40
  return rcFileSuites[0].name;
23
41
  }
42
+ /**
43
+ * Prompt the user to select a suite manually
44
+ */
24
45
  return this.prompt.choice('Select the suite for the test file', this.app.rcFile.tests.suites.map((suite) => {
25
46
  return suite.name;
26
47
  }), {
@@ -29,6 +50,9 @@ export default class MakeTest extends BaseCommand {
29
50
  },
30
51
  });
31
52
  }
53
+ /**
54
+ * Returns the directory path for the selected suite.
55
+ */
32
56
  async #getSuiteDirectory(directories) {
33
57
  if (directories.length === 1) {
34
58
  return directories[0];
@@ -39,18 +63,30 @@ export default class MakeTest extends BaseCommand {
39
63
  },
40
64
  });
41
65
  }
66
+ /**
67
+ * Find suite info from the rcFile file
68
+ */
42
69
  #findSuite(suiteName) {
43
70
  return this.app.rcFile.tests.suites.find((suite) => {
44
71
  return suite.name === suiteName;
45
72
  });
46
73
  }
74
+ /**
75
+ * Executed by ace
76
+ */
47
77
  async run() {
48
78
  const suite = this.#findSuite(await this.#getSuite());
79
+ /**
80
+ * Show error when mentioned/selected suite does not exist
81
+ */
49
82
  if (!suite) {
50
83
  this.logger.error(`The "${this.suite}" suite is not configured inside the .adonisrc.json file`);
51
84
  this.exitCode = 1;
52
85
  return;
53
86
  }
87
+ /**
88
+ * Generate entity
89
+ */
54
90
  await this.generate(this.stubPath, {
55
91
  entity: this.app.generators.createEntity(this.name),
56
92
  suite: {
@@ -60,10 +96,8 @@ export default class MakeTest extends BaseCommand {
60
96
  }
61
97
  }
62
98
  __decorate([
63
- args.string({ description: 'Name of the test file' }),
64
- __metadata("design:type", String)
99
+ args.string({ description: 'Name of the test file' })
65
100
  ], MakeTest.prototype, "name", void 0);
66
101
  __decorate([
67
- flags.string({ description: 'The suite for which to create the test file' }),
68
- __metadata("design:type", String)
102
+ flags.string({ description: 'The suite for which to create the test file' })
69
103
  ], MakeTest.prototype, "suite", void 0);
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../modules/ace/main.js';
2
+ import { CommandOptions } from '../types/ace.js';
3
+ /**
4
+ * The ReplCommand class is used to start the Repl server
5
+ */
6
+ export default class ReplCommand extends BaseCommand {
7
+ static commandName: string;
8
+ static description: string;
9
+ static options: CommandOptions;
10
+ /**
11
+ * Starts the REPL server process
12
+ */
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,30 @@
1
+ /*
2
+ * @adonisjs/core
3
+ *
4
+ * (c) AdonisJS
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+ import { BaseCommand } from '../modules/ace/main.js';
10
+ /**
11
+ * The ReplCommand class is used to start the Repl server
12
+ */
13
+ export default class ReplCommand extends BaseCommand {
14
+ static commandName = 'repl';
15
+ static description = 'Start a new REPL session';
16
+ static options = {
17
+ startApp: true,
18
+ staysAlive: true,
19
+ };
20
+ /**
21
+ * Starts the REPL server process
22
+ */
23
+ async run() {
24
+ const repl = await this.app.container.make('repl');
25
+ repl.start();
26
+ repl.server.on('exit', async () => {
27
+ await this.terminate();
28
+ });
29
+ }
30
+ }
@@ -1,13 +1,25 @@
1
+ import type { DevServer } from '@adonisjs/assembler';
1
2
  import type { CommandOptions } from '../types/ace.js';
2
3
  import { BaseCommand } from '../modules/ace/main.js';
4
+ /**
5
+ * Serve command is used to run the AdonisJS HTTP server during development. The
6
+ * command under the hood runs the "bin/server.ts" file and watches for file
7
+ * system changes
8
+ */
3
9
  export default class Serve extends BaseCommand {
4
10
  #private;
5
11
  static commandName: string;
6
12
  static description: string;
13
+ static help: string[];
7
14
  static options: CommandOptions;
15
+ devServer: DevServer;
8
16
  watch?: boolean;
9
17
  poll?: boolean;
10
18
  clear?: boolean;
11
19
  assets?: boolean;
20
+ assetsArgs?: string[];
21
+ /**
22
+ * Runs the HTTP server
23
+ */
12
24
  run(): Promise<void>;
13
25
  }
@@ -1,20 +1,45 @@
1
+ /*
2
+ * @adonisjs/core
3
+ *
4
+ * (c) AdonisJS
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
1
9
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
10
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
11
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
12
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
13
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
14
  };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
15
  import { BaseCommand, flags } from '../modules/ace/main.js';
11
16
  import { detectAssetsBundler, importAssembler, importTypeScript } from '../src/internal_helpers.js';
17
+ /**
18
+ * Serve command is used to run the AdonisJS HTTP server during development. The
19
+ * command under the hood runs the "bin/server.ts" file and watches for file
20
+ * system changes
21
+ */
12
22
  export default class Serve extends BaseCommand {
13
23
  static commandName = 'serve';
14
24
  static description = 'Start the development HTTP server along with the file watcher to perform restarts on file change';
25
+ static help = [
26
+ 'Start the development server with file watcher using the following command.',
27
+ '```',
28
+ '{{ binaryName }} serve --watch',
29
+ '```',
30
+ '',
31
+ 'The assets bundler dev server runs automatically after detecting vite config or webpack config files',
32
+ 'You may pass vite CLI args using the --assets-args command line flag.',
33
+ '```',
34
+ '{{ binaryName }} serve --assets-args="--debug --base=/public"',
35
+ '```',
36
+ ];
15
37
  static options = {
16
38
  staysAlive: true,
17
39
  };
40
+ /**
41
+ * Log a development dependency is missing
42
+ */
18
43
  #logMissingDevelopmentDependency(dependency) {
19
44
  this.logger.error([
20
45
  `Cannot find package "${dependency}"`,
@@ -24,6 +49,25 @@ export default class Serve extends BaseCommand {
24
49
  'If you are running your application in production, then use "node bin/server.js" command to start the HTTP server',
25
50
  ].join('\n'));
26
51
  }
52
+ /**
53
+ * Returns the assets bundler config
54
+ */
55
+ async #getAssetsBundlerConfig() {
56
+ const assetsBundler = await detectAssetsBundler(this.app);
57
+ return assetsBundler
58
+ ? {
59
+ serve: this.assets === false ? false : true,
60
+ driver: assetsBundler.name,
61
+ cmd: assetsBundler.devServer.command,
62
+ args: (assetsBundler.devServer.args || []).concat(this.assetsArgs || []),
63
+ }
64
+ : {
65
+ serve: false,
66
+ };
67
+ }
68
+ /**
69
+ * Runs the HTTP server
70
+ */
27
71
  async run() {
28
72
  const assembler = await importAssembler(this.app);
29
73
  if (!assembler) {
@@ -31,29 +75,35 @@ export default class Serve extends BaseCommand {
31
75
  this.exitCode = 1;
32
76
  return;
33
77
  }
34
- const assetsBundler = await detectAssetsBundler(this.app);
35
- const devServer = new assembler.DevServer(this.app.appRoot, {
78
+ this.devServer = new assembler.DevServer(this.app.appRoot, {
36
79
  clearScreen: this.clear === false ? false : true,
37
80
  nodeArgs: this.parsed.nodeArgs,
38
81
  scriptArgs: [],
39
- assets: assetsBundler
40
- ? {
41
- serve: this.assets === false ? false : true,
42
- driver: assetsBundler.name,
43
- cmd: assetsBundler.devServerCommand,
44
- }
45
- : {
46
- serve: false,
47
- },
82
+ assets: await this.#getAssetsBundlerConfig(),
48
83
  metaFiles: this.app.rcFile.metaFiles,
49
84
  });
50
- devServer.setLogger(this.logger);
51
- devServer.onClose((exitCode) => {
85
+ /**
86
+ * Share command logger with assembler, so that CLI flags like --no-ansi has
87
+ * similar impact for assembler logs as well.
88
+ */
89
+ this.devServer.setLogger(this.logger);
90
+ /**
91
+ * Exit command when the dev server is closed
92
+ */
93
+ this.devServer.onClose((exitCode) => {
52
94
  this.exitCode = exitCode;
95
+ this.terminate();
53
96
  });
54
- devServer.onError(() => {
97
+ /**
98
+ * Exit command when the dev server crashes
99
+ */
100
+ this.devServer.onError(() => {
55
101
  this.exitCode = 1;
102
+ this.terminate();
56
103
  });
104
+ /**
105
+ * Start the development server
106
+ */
57
107
  if (this.watch) {
58
108
  const ts = await importTypeScript(this.app);
59
109
  if (!ts) {
@@ -61,34 +111,35 @@ export default class Serve extends BaseCommand {
61
111
  this.exitCode = 1;
62
112
  return;
63
113
  }
64
- await devServer.startAndWatch(ts, { poll: this.poll || false });
114
+ await this.devServer.startAndWatch(ts, { poll: this.poll || false });
65
115
  }
66
116
  else {
67
- await devServer.start();
117
+ await this.devServer.start();
68
118
  }
69
119
  }
70
120
  }
71
121
  __decorate([
72
- flags.boolean({ description: 'Watch filesystem and restart the HTTP server on file change' }),
73
- __metadata("design:type", Boolean)
122
+ flags.boolean({ description: 'Watch filesystem and restart the HTTP server on file change' })
74
123
  ], Serve.prototype, "watch", void 0);
75
124
  __decorate([
76
- flags.boolean({ description: 'Use polling to detect filesystem changes' }),
77
- __metadata("design:type", Boolean)
125
+ flags.boolean({ description: 'Use polling to detect filesystem changes' })
78
126
  ], Serve.prototype, "poll", void 0);
79
127
  __decorate([
80
128
  flags.boolean({
81
129
  description: 'Clear the terminal for new logs after file change',
82
130
  showNegatedVariantInHelp: true,
83
131
  default: true,
84
- }),
85
- __metadata("design:type", Boolean)
132
+ })
86
133
  ], Serve.prototype, "clear", void 0);
87
134
  __decorate([
88
135
  flags.boolean({
89
136
  description: 'Start assets bundler dev server',
90
137
  showNegatedVariantInHelp: true,
91
138
  default: true,
92
- }),
93
- __metadata("design:type", Boolean)
139
+ })
94
140
  ], Serve.prototype, "assets", void 0);
141
+ __decorate([
142
+ flags.array({
143
+ description: 'Define CLI arguments to pass to the assets bundler',
144
+ })
145
+ ], Serve.prototype, "assetsArgs", void 0);
@@ -0,0 +1,32 @@
1
+ import type { TestRunner } from '@adonisjs/assembler';
2
+ import type { CommandOptions } from '../types/ace.js';
3
+ import { BaseCommand } from '../modules/ace/main.js';
4
+ /**
5
+ * Test command is used to run tests with optional file watcher. Under the
6
+ * hood, we run "bin/test.js" file.
7
+ */
8
+ export default class Test extends BaseCommand {
9
+ #private;
10
+ static commandName: string;
11
+ static description: string;
12
+ static options: CommandOptions;
13
+ testsRunner: TestRunner;
14
+ suites?: string[];
15
+ files?: string[];
16
+ tags?: string[];
17
+ groups?: string[];
18
+ tests?: string[];
19
+ reporters?: string[];
20
+ watch?: boolean;
21
+ poll?: boolean;
22
+ timeout?: number;
23
+ retries?: number;
24
+ failed?: boolean;
25
+ clear?: boolean;
26
+ assets?: boolean;
27
+ assetsArgs?: string[];
28
+ /**
29
+ * Runs tests
30
+ */
31
+ run(): Promise<void>;
32
+ }