@adonisjs/core 6.1.5-2 → 6.1.5-20

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 (197) 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 +30 -3
  5. package/build/commands/configure.js +103 -25
  6. package/build/commands/eject.d.ts +4 -0
  7. package/build/commands/eject.js +16 -8
  8. package/build/commands/generate_key.d.ts +4 -0
  9. package/build/commands/generate_key.js +15 -8
  10. package/build/commands/inspect_rcfile.d.ts +9 -0
  11. package/build/commands/inspect_rcfile.js +36 -0
  12. package/build/commands/list/routes.d.ts +23 -0
  13. package/build/commands/list/routes.js +29 -13
  14. package/build/commands/main.d.ts +4 -0
  15. package/build/commands/make/command.d.ts +7 -1
  16. package/build/commands/make/command.js +20 -7
  17. package/build/commands/make/controller.d.ts +10 -1
  18. package/build/commands/make/controller.js +35 -14
  19. package/build/commands/make/event.d.ts +7 -1
  20. package/build/commands/make/event.js +20 -8
  21. package/build/commands/make/exception.d.ts +14 -0
  22. package/build/commands/make/exception.js +37 -0
  23. package/build/commands/make/listener.d.ts +8 -1
  24. package/build/commands/make/listener.js +28 -12
  25. package/build/commands/make/middleware.d.ts +8 -1
  26. package/build/commands/make/middleware.js +21 -8
  27. package/build/commands/make/preload.d.ts +22 -0
  28. package/build/commands/make/preload.js +99 -0
  29. package/build/commands/make/provider.d.ts +7 -1
  30. package/build/commands/make/provider.js +28 -8
  31. package/build/commands/make/service.d.ts +14 -0
  32. package/build/commands/make/service.js +37 -0
  33. package/build/commands/make/test.d.ts +10 -1
  34. package/build/commands/make/test.js +46 -10
  35. package/build/commands/make/validator.d.ts +14 -0
  36. package/build/commands/make/validator.js +37 -0
  37. package/build/commands/make/view.d.ts +14 -0
  38. package/build/commands/make/view.js +37 -0
  39. package/build/commands/repl.d.ts +14 -0
  40. package/build/commands/repl.js +30 -0
  41. package/build/commands/serve.d.ts +12 -0
  42. package/build/commands/serve.js +78 -27
  43. package/build/commands/test.d.ts +32 -0
  44. package/build/commands/test.js +203 -0
  45. package/build/factories/app.js +8 -0
  46. package/build/factories/bodyparser.js +8 -0
  47. package/build/factories/core/ace.d.ts +4 -1
  48. package/build/factories/core/ace.js +11 -0
  49. package/build/factories/core/ignitor.d.ts +20 -1
  50. package/build/factories/core/ignitor.js +35 -1
  51. package/build/factories/core/main.js +8 -0
  52. package/build/factories/core/test_utils.d.ts +4 -1
  53. package/build/factories/core/test_utils.js +11 -0
  54. package/build/factories/encryption.js +8 -0
  55. package/build/factories/events.js +8 -0
  56. package/build/factories/hash.js +8 -0
  57. package/build/factories/http.js +8 -0
  58. package/build/factories/logger.js +8 -0
  59. package/build/factories/stubs.d.ts +10 -0
  60. package/build/factories/stubs.js +23 -1
  61. package/build/index.d.ts +6 -2
  62. package/build/index.js +14 -1
  63. package/build/modules/ace/codemods.d.ts +54 -0
  64. package/build/modules/ace/codemods.js +133 -0
  65. package/build/modules/ace/commands.d.ts +48 -0
  66. package/build/modules/ace/commands.js +54 -0
  67. package/build/modules/ace/create_kernel.d.ts +9 -0
  68. package/build/modules/ace/create_kernel.js +32 -1
  69. package/build/modules/ace/kernel.d.ts +4 -0
  70. package/build/modules/ace/kernel.js +12 -0
  71. package/build/modules/ace/main.js +8 -0
  72. package/build/modules/ace/shell.d.ts +9 -1
  73. package/build/modules/ace/shell.js +21 -0
  74. package/build/modules/app.js +8 -0
  75. package/build/modules/bodyparser/bodyparser_middleware.d.ts +4 -0
  76. package/build/modules/bodyparser/bodyparser_middleware.js +12 -0
  77. package/build/modules/bodyparser/main.js +8 -0
  78. package/build/modules/config.js +8 -0
  79. package/build/modules/container.js +8 -0
  80. package/build/modules/encryption.js +8 -0
  81. package/build/modules/env.js +8 -0
  82. package/build/modules/events.js +8 -0
  83. package/build/modules/hash/define_config.d.ts +4 -0
  84. package/build/modules/hash/define_config.js +23 -0
  85. package/build/modules/hash/drivers/argon.d.ts +1 -0
  86. package/build/modules/hash/drivers/argon.js +9 -0
  87. package/build/modules/hash/drivers/bcrypt.d.ts +1 -0
  88. package/build/modules/hash/drivers/bcrypt.js +9 -0
  89. package/build/modules/hash/drivers/scrypt.d.ts +1 -0
  90. package/build/modules/hash/drivers/scrypt.js +9 -0
  91. package/build/modules/hash/drivers_collection.d.ts +16 -4
  92. package/build/modules/hash/drivers_collection.js +31 -8
  93. package/build/modules/hash/main.d.ts +1 -0
  94. package/build/modules/hash/main.js +9 -0
  95. package/build/modules/http/main.js +9 -0
  96. package/build/modules/http/request_validator.d.ts +44 -0
  97. package/build/modules/http/request_validator.js +74 -0
  98. package/build/modules/logger.js +8 -0
  99. package/build/modules/repl.d.ts +1 -0
  100. package/build/modules/repl.js +9 -0
  101. package/build/providers/app_provider.d.ts +31 -2
  102. package/build/providers/app_provider.js +44 -15
  103. package/build/providers/edge_provider.d.ts +10 -0
  104. package/build/providers/edge_provider.js +22 -0
  105. package/build/providers/hash_provider.d.ts +22 -2
  106. package/build/providers/hash_provider.js +49 -7
  107. package/build/providers/http_provider.d.ts +17 -0
  108. package/build/providers/http_provider.js +26 -1
  109. package/build/providers/repl_provider.d.ts +13 -0
  110. package/build/providers/repl_provider.js +35 -0
  111. package/build/providers/vinejs_provider.d.ts +5 -0
  112. package/build/providers/vinejs_provider.js +13 -0
  113. package/build/services/ace.js +15 -0
  114. package/build/services/app.d.ts +8 -0
  115. package/build/services/app.js +16 -0
  116. package/build/services/config.js +11 -0
  117. package/build/services/emitter.js +13 -2
  118. package/build/services/encryption.js +13 -2
  119. package/build/services/hash.js +13 -2
  120. package/build/services/logger.js +13 -2
  121. package/build/services/repl.d.ts +3 -0
  122. package/build/services/repl.js +18 -0
  123. package/build/services/router.js +13 -2
  124. package/build/services/server.js +13 -2
  125. package/build/services/test_utils.js +15 -0
  126. package/build/src/bindings/edge/main.d.ts +7 -0
  127. package/build/src/bindings/edge/main.js +58 -0
  128. package/build/src/bindings/edge/types.d.ts +18 -0
  129. package/build/src/bindings/edge/types.js +9 -0
  130. package/build/src/bindings/repl.d.ts +6 -0
  131. package/build/src/bindings/repl.js +78 -0
  132. package/build/src/bindings/vinejs/main.d.ts +13 -0
  133. package/build/src/bindings/vinejs/main.js +76 -0
  134. package/build/src/bindings/vinejs/types.d.ts +12 -0
  135. package/build/src/bindings/vinejs/types.js +9 -0
  136. package/build/src/cli_formatters/routes_list.d.ts +24 -1
  137. package/build/src/cli_formatters/routes_list.js +118 -0
  138. package/build/src/debug.d.ts +1 -1
  139. package/build/src/debug.js +8 -0
  140. package/build/src/exceptions.d.ts +1 -0
  141. package/build/src/exceptions.js +9 -0
  142. package/build/src/helpers/is.js +8 -0
  143. package/build/src/helpers/main.d.ts +1 -1
  144. package/build/src/helpers/main.js +9 -1
  145. package/build/src/helpers/parse_binding_reference.d.ts +40 -0
  146. package/build/src/helpers/parse_binding_reference.js +60 -0
  147. package/build/src/helpers/string.d.ts +26 -0
  148. package/build/src/helpers/string.js +15 -0
  149. package/build/src/helpers/types.d.ts +114 -16
  150. package/build/src/helpers/types.js +13 -0
  151. package/build/src/ignitor/ace.d.ts +12 -0
  152. package/build/src/ignitor/ace.js +50 -1
  153. package/build/src/ignitor/http.d.ts +9 -2
  154. package/build/src/ignitor/http.js +67 -0
  155. package/build/src/ignitor/main.d.ts +29 -1
  156. package/build/src/ignitor/main.js +56 -0
  157. package/build/src/ignitor/test.d.ts +10 -0
  158. package/build/src/ignitor/test.js +25 -0
  159. package/build/src/internal_helpers.d.ts +12 -5
  160. package/build/src/internal_helpers.js +35 -7
  161. package/build/src/test_utils/http.d.ts +10 -2
  162. package/build/src/test_utils/http.js +19 -0
  163. package/build/src/test_utils/main.d.ts +21 -3
  164. package/build/src/test_utils/main.js +27 -1
  165. package/build/src/types.d.ts +65 -4
  166. package/build/src/types.js +8 -0
  167. package/build/stubs/main.js +10 -0
  168. package/build/stubs/make/exception/main.stub +10 -0
  169. package/build/stubs/make/preload_file/main.stub +4 -0
  170. package/build/stubs/make/service/main.stub +4 -0
  171. package/build/stubs/make/validator/main.stub +5 -0
  172. package/build/stubs/make/view/main.stub +4 -0
  173. package/build/toolkit/commands/index_commands.d.ts +4 -0
  174. package/build/toolkit/commands/index_commands.js +13 -5
  175. package/build/toolkit/main.js +11 -0
  176. package/build/types/ace.js +8 -0
  177. package/build/types/app.js +8 -0
  178. package/build/types/bodyparser.js +8 -0
  179. package/build/types/container.js +8 -0
  180. package/build/types/encryption.js +8 -0
  181. package/build/types/events.js +8 -0
  182. package/build/types/hash.js +8 -0
  183. package/build/types/http.js +8 -0
  184. package/build/types/logger.js +8 -0
  185. package/build/types/repl.d.ts +1 -0
  186. package/build/types/repl.js +9 -0
  187. package/package.json +83 -121
  188. package/build/commands/make/_base.d.ts +0 -6
  189. package/build/commands/make/_base.js +0 -19
  190. package/build/legacy/validator.d.ts +0 -1
  191. package/build/legacy/validator.js +0 -1
  192. package/build/modules/http.js +0 -1
  193. package/build/src/helpers/string_builder.d.ts +0 -23
  194. package/build/src/helpers/string_builder.js +0 -86
  195. package/build/stubs/index.js +0 -2
  196. /package/build/modules/{http.d.ts → http/main.d.ts} +0 -0
  197. /package/build/stubs/{index.d.ts → main.d.ts} +0 -0
@@ -1,11 +1,26 @@
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
  import he from 'he';
2
10
  import prettyHrTime from 'pretty-hrtime';
3
11
  import string from '@poppinss/utils/string';
12
+ import StringBuilder from '@poppinss/utils/string_builder';
13
+ /**
14
+ * Collection of string helpers to transform a string value.
15
+ */
4
16
  const stringHelpers = {
5
17
  ...string,
6
18
  toSentence: string.sentence,
7
19
  ordinalize: string.ordinal,
8
20
  generateRandom: string.random,
21
+ create(value) {
22
+ return new StringBuilder(value);
23
+ },
9
24
  prettyHrTime(time, options) {
10
25
  return prettyHrTime(time, options);
11
26
  },
@@ -1,21 +1,119 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import is from '@sindresorhus/is';
1
+ /**
2
+ * @deprecated
3
+ * Use "is" helpers instead. The types helpers exists
4
+ * for backward compatibility
5
+ */
3
6
  declare const types: {
4
- lookup: typeof is;
5
- isNull: (value: unknown) => value is null;
6
- isBoolean: (value: unknown) => value is boolean;
7
- isBuffer: (value: unknown) => value is Buffer;
8
- isNumber: (value: unknown) => value is number;
9
- isString: (value: unknown) => value is string;
7
+ lookup: ((value: unknown) => import("@sindresorhus/is").TypeName) & {
8
+ all: typeof import("@sindresorhus/is").isAll;
9
+ any: typeof import("@sindresorhus/is").isAny;
10
+ array: typeof import("@sindresorhus/is").isArray;
11
+ arrayBuffer: typeof import("@sindresorhus/is").isArrayBuffer;
12
+ arrayLike: typeof import("@sindresorhus/is").isArrayLike;
13
+ asyncFunction: typeof import("@sindresorhus/is").isAsyncFunction;
14
+ asyncGenerator: typeof import("@sindresorhus/is").isAsyncGenerator;
15
+ asyncGeneratorFunction: typeof import("@sindresorhus/is").isAsyncGeneratorFunction;
16
+ asyncIterable: typeof import("@sindresorhus/is").isAsyncIterable;
17
+ bigint: typeof import("@sindresorhus/is").isBigint;
18
+ bigInt64Array: typeof import("@sindresorhus/is").isBigInt64Array;
19
+ bigUint64Array: typeof import("@sindresorhus/is").isBigUint64Array;
20
+ blob: typeof import("@sindresorhus/is").isBlob;
21
+ boolean: typeof import("@sindresorhus/is").isBoolean;
22
+ boundFunction: typeof import("@sindresorhus/is").isBoundFunction;
23
+ buffer: typeof import("@sindresorhus/is").isBuffer;
24
+ class: typeof import("@sindresorhus/is").isClass;
25
+ class_: typeof import("@sindresorhus/is").isClass;
26
+ dataView: typeof import("@sindresorhus/is").isDataView;
27
+ date: typeof import("@sindresorhus/is").isDate;
28
+ detect: (value: unknown) => import("@sindresorhus/is").TypeName;
29
+ directInstanceOf: typeof import("@sindresorhus/is").isDirectInstanceOf;
30
+ domElement: typeof import("@sindresorhus/is").isHtmlElement;
31
+ emptyArray: typeof import("@sindresorhus/is").isEmptyArray;
32
+ emptyMap: typeof import("@sindresorhus/is").isEmptyMap;
33
+ emptyObject: typeof import("@sindresorhus/is").isEmptyObject;
34
+ emptySet: typeof import("@sindresorhus/is").isEmptySet;
35
+ emptyString: typeof import("@sindresorhus/is").isEmptyString;
36
+ emptyStringOrWhitespace: typeof import("@sindresorhus/is").isEmptyStringOrWhitespace;
37
+ enumCase: typeof import("@sindresorhus/is").isEnumCase;
38
+ error: typeof import("@sindresorhus/is").isError;
39
+ evenInteger: typeof import("@sindresorhus/is").isEvenInteger;
40
+ falsy: typeof import("@sindresorhus/is").isFalsy;
41
+ float32Array: typeof import("@sindresorhus/is").isFloat32Array;
42
+ float64Array: typeof import("@sindresorhus/is").isFloat64Array;
43
+ formData: typeof import("@sindresorhus/is").isFormData;
44
+ function: typeof import("@sindresorhus/is").isFunction;
45
+ function_: typeof import("@sindresorhus/is").isFunction;
46
+ generator: typeof import("@sindresorhus/is").isGenerator;
47
+ generatorFunction: typeof import("@sindresorhus/is").isGeneratorFunction;
48
+ htmlElement: typeof import("@sindresorhus/is").isHtmlElement;
49
+ infinite: typeof import("@sindresorhus/is").isInfinite;
50
+ inRange: typeof import("@sindresorhus/is").isInRange;
51
+ int16Array: typeof import("@sindresorhus/is").isInt16Array;
52
+ int32Array: typeof import("@sindresorhus/is").isInt32Array;
53
+ int8Array: typeof import("@sindresorhus/is").isInt8Array;
54
+ integer: typeof import("@sindresorhus/is").isInteger;
55
+ iterable: typeof import("@sindresorhus/is").isIterable;
56
+ map: typeof import("@sindresorhus/is").isMap;
57
+ nan: typeof import("@sindresorhus/is").isNan;
58
+ nativePromise: typeof import("@sindresorhus/is").isNativePromise;
59
+ negativeNumber: typeof import("@sindresorhus/is").isNegativeNumber;
60
+ nodeStream: typeof import("@sindresorhus/is").isNodeStream;
61
+ nonEmptyArray: typeof import("@sindresorhus/is").isNonEmptyArray;
62
+ nonEmptyMap: typeof import("@sindresorhus/is").isNonEmptyMap;
63
+ nonEmptyObject: typeof import("@sindresorhus/is").isNonEmptyObject;
64
+ nonEmptySet: typeof import("@sindresorhus/is").isNonEmptySet;
65
+ nonEmptyString: typeof import("@sindresorhus/is").isNonEmptyString;
66
+ nonEmptyStringAndNotWhitespace: typeof import("@sindresorhus/is").isNonEmptyStringAndNotWhitespace;
67
+ null: typeof import("@sindresorhus/is").isNull;
68
+ null_: typeof import("@sindresorhus/is").isNull;
69
+ nullOrUndefined: typeof import("@sindresorhus/is").isNullOrUndefined;
70
+ number: typeof import("@sindresorhus/is").isNumber;
71
+ numericString: typeof import("@sindresorhus/is").isNumericString;
72
+ object: typeof import("@sindresorhus/is").isObject;
73
+ observable: typeof import("@sindresorhus/is").isObservable;
74
+ oddInteger: typeof import("@sindresorhus/is").isOddInteger;
75
+ plainObject: typeof import("@sindresorhus/is").isPlainObject;
76
+ positiveNumber: typeof import("@sindresorhus/is").isPositiveNumber;
77
+ primitive: typeof import("@sindresorhus/is").isPrimitive;
78
+ promise: typeof import("@sindresorhus/is").isPromise;
79
+ propertyKey: typeof import("@sindresorhus/is").isPropertyKey;
80
+ regExp: typeof import("@sindresorhus/is").isRegExp;
81
+ safeInteger: typeof import("@sindresorhus/is").isSafeInteger;
82
+ set: typeof import("@sindresorhus/is").isSet;
83
+ sharedArrayBuffer: typeof import("@sindresorhus/is").isSharedArrayBuffer;
84
+ string: typeof import("@sindresorhus/is").isString;
85
+ symbol: typeof import("@sindresorhus/is").isSymbol;
86
+ truthy: typeof import("@sindresorhus/is").isTruthy;
87
+ tupleLike: typeof import("@sindresorhus/is").isTupleLike;
88
+ typedArray: typeof import("@sindresorhus/is").isTypedArray;
89
+ uint16Array: typeof import("@sindresorhus/is").isUint16Array;
90
+ uint32Array: typeof import("@sindresorhus/is").isUint32Array;
91
+ uint8Array: typeof import("@sindresorhus/is").isUint8Array;
92
+ uint8ClampedArray: typeof import("@sindresorhus/is").isUint8ClampedArray;
93
+ undefined: typeof import("@sindresorhus/is").isUndefined;
94
+ urlInstance: typeof import("@sindresorhus/is").isUrlInstance;
95
+ urlSearchParams: typeof import("@sindresorhus/is").isUrlSearchParams;
96
+ urlString: typeof import("@sindresorhus/is").isUrlString;
97
+ validLength: typeof import("@sindresorhus/is").isValidLength;
98
+ weakMap: typeof import("@sindresorhus/is").isWeakMap;
99
+ weakRef: typeof import("@sindresorhus/is").isWeakRef;
100
+ weakSet: typeof import("@sindresorhus/is").isWeakSet;
101
+ whitespaceString: typeof import("@sindresorhus/is").isWhitespaceString;
102
+ };
103
+ isNull: typeof import("@sindresorhus/is").isNull;
104
+ isBoolean: typeof import("@sindresorhus/is").isBoolean;
105
+ isBuffer: typeof import("@sindresorhus/is").isBuffer;
106
+ isNumber: typeof import("@sindresorhus/is").isNumber;
107
+ isString: typeof import("@sindresorhus/is").isString;
10
108
  isArguments: any;
11
- isObject: (value: unknown) => value is object;
12
- isDate: (value: unknown) => value is Date;
13
- isArray: <T = unknown>(value: unknown, assertion?: ((value: T) => value is T) | undefined) => value is T[];
14
- isRegexp: (value: unknown) => value is RegExp;
15
- isError: (value: unknown) => value is Error;
16
- isFunction: (value: unknown) => value is Function;
17
- isClass: (value: unknown) => value is import("@sindresorhus/is").Class<unknown, any[]>;
18
- isInteger: (value: unknown) => value is number;
109
+ isObject: typeof import("@sindresorhus/is").isObject;
110
+ isDate: typeof import("@sindresorhus/is").isDate;
111
+ isArray: typeof import("@sindresorhus/is").isArray;
112
+ isRegexp: typeof import("@sindresorhus/is").isRegExp;
113
+ isError: typeof import("@sindresorhus/is").isError;
114
+ isFunction: typeof import("@sindresorhus/is").isFunction;
115
+ isClass: typeof import("@sindresorhus/is").isClass;
116
+ isInteger: typeof import("@sindresorhus/is").isInteger;
19
117
  isFloat(value: number): value is number;
20
118
  isDecimal(value: string | number, options?: {
21
119
  decimalPlaces?: string;
@@ -1,4 +1,17 @@
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
  import is from '@sindresorhus/is';
10
+ /**
11
+ * @deprecated
12
+ * Use "is" helpers instead. The types helpers exists
13
+ * for backward compatibility
14
+ */
2
15
  const types = {
3
16
  lookup: is,
4
17
  isNull: is.null_,
@@ -1,8 +1,20 @@
1
1
  import { Ignitor } from './main.js';
2
2
  import type { ApplicationService } from '../types.js';
3
+ /**
4
+ * The Ace process is used to start the application in the
5
+ * console environment.
6
+ */
3
7
  export declare class AceProcess {
4
8
  #private;
5
9
  constructor(ignitor: Ignitor);
10
+ /**
11
+ * Register a callback that can be used to configure the ace
12
+ * kernel before the handle method is called
13
+ */
6
14
  configure(callback: (app: ApplicationService) => Promise<void> | void): this;
15
+ /**
16
+ * Handles the command line arguments and executes
17
+ * the matching ace commands
18
+ */
7
19
  handle(argv: string[]): Promise<void>;
8
20
  }
@@ -1,31 +1,80 @@
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
+ /**
10
+ * The Ace process is used to start the application in the
11
+ * console environment.
12
+ */
1
13
  export class AceProcess {
14
+ /**
15
+ * Ignitor reference
16
+ */
2
17
  #ignitor;
18
+ /**
19
+ * The callback that configures the ace instance before the
20
+ * handle method is called
21
+ */
3
22
  #configureCallback = () => { };
4
23
  constructor(ignitor) {
5
24
  this.#ignitor = ignitor;
6
25
  }
26
+ /**
27
+ * Register a callback that can be used to configure the ace
28
+ * kernel before the handle method is called
29
+ */
7
30
  configure(callback) {
8
31
  this.#configureCallback = callback;
9
32
  return this;
10
33
  }
34
+ /**
35
+ * Handles the command line arguments and executes
36
+ * the matching ace commands
37
+ */
11
38
  async handle(argv) {
12
39
  const app = this.#ignitor.createApp('console');
13
40
  await app.init();
14
41
  const { createAceKernel } = await import('../../modules/ace/create_kernel.js');
15
42
  const kernel = createAceKernel(app);
16
43
  app.container.bindValue('ace', kernel);
44
+ /**
45
+ * Hook into kernel and start the app when the
46
+ * command needs the app.
47
+ *
48
+ * Since multiple commands can be executed in a single process,
49
+ * we add a check to only start the app only once.
50
+ */
17
51
  kernel.loading(async (metaData) => {
18
52
  if (metaData.options.startApp && !app.isReady) {
53
+ if (metaData.commandName === 'repl') {
54
+ app.setEnvironment('repl');
55
+ }
19
56
  await app.boot();
20
57
  await app.start(() => { });
21
58
  }
22
59
  });
23
60
  await this.#configureCallback(app);
61
+ /**
62
+ * Handle command line args
63
+ */
24
64
  await kernel.handle(argv);
25
- process.exitCode = kernel.exitCode;
65
+ /**
66
+ * Terminate the app when the command does not want to
67
+ * hold a long running process
68
+ */
26
69
  const mainCommand = kernel.getMainCommand();
27
70
  if (!mainCommand || !mainCommand.staysAlive) {
71
+ process.exitCode = kernel.exitCode;
28
72
  await app.terminate();
29
73
  }
74
+ else {
75
+ app.terminating(() => {
76
+ process.exitCode = mainCommand.exitCode;
77
+ });
78
+ }
30
79
  }
31
80
  }
@@ -1,10 +1,17 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
1
+ /// <reference types="@types/node" resolution-mode="require"/>
2
+ /// <reference types="@types/node" resolution-mode="require"/>
3
3
  import type { Server as NodeHttpsServer } from 'node:https';
4
4
  import { IncomingMessage, ServerResponse, Server as NodeHttpServer } from 'node:http';
5
5
  import { Ignitor } from './main.js';
6
+ /**
7
+ * The HTTP server process is used to start the application in the
8
+ * web environment.
9
+ */
6
10
  export declare class HttpServerProcess {
7
11
  #private;
8
12
  constructor(ignitor: Ignitor);
13
+ /**
14
+ * Start the HTTP server by wiring up the application
15
+ */
9
16
  start(serverCallback?: (handler: (req: IncomingMessage, res: ServerResponse) => any) => NodeHttpsServer | NodeHttpServer): Promise<void>;
10
17
  }
@@ -1,21 +1,50 @@
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
  import { createServer } from 'node:http';
2
10
  import debug from '../debug.js';
11
+ /**
12
+ * The HTTP server process is used to start the application in the
13
+ * web environment.
14
+ */
3
15
  export class HttpServerProcess {
16
+ /**
17
+ * Ignitor reference
18
+ */
4
19
  #ignitor;
5
20
  constructor(ignitor) {
6
21
  this.#ignitor = ignitor;
7
22
  }
23
+ /**
24
+ * Calling this method closes the underlying HTTP server
25
+ */
8
26
  #close(nodeHttpServer) {
9
27
  return new Promise((resolve) => {
10
28
  debug('closing http server process');
11
29
  nodeHttpServer.close(() => resolve());
12
30
  });
13
31
  }
32
+ /**
33
+ * Monitors the app and the server to close the HTTP server when
34
+ * either one of them goes down
35
+ */
14
36
  #monitorAppAndServer(nodeHttpServer, app, logger) {
37
+ /**
38
+ * Close the HTTP server when the application begins to
39
+ * terminate
40
+ */
15
41
  app.terminating(async () => {
16
42
  debug('terminating signal received');
17
43
  await this.#close(nodeHttpServer);
18
44
  });
45
+ /**
46
+ * Terminate the app when the HTTP server crashes
47
+ */
19
48
  nodeHttpServer.once('error', (error) => {
20
49
  debug('http server crashed with error "%O"', error);
21
50
  logger.fatal({ err: error }, error.message);
@@ -23,6 +52,9 @@ export class HttpServerProcess {
23
52
  app.terminate();
24
53
  });
25
54
  }
55
+ /**
56
+ * Starts the http server a given host and port
57
+ */
26
58
  #listen(nodeHttpServer) {
27
59
  return new Promise((resolve, reject) => {
28
60
  const host = process.env.HOST || '0.0.0.0';
@@ -37,25 +69,60 @@ export class HttpServerProcess {
37
69
  });
38
70
  });
39
71
  }
72
+ /**
73
+ * Notifies the app and the parent process that the
74
+ * HTTP server is ready
75
+ */
40
76
  #notifyServerHasStarted(app, logger, emitter, payload) {
77
+ /**
78
+ * Notify parent process
79
+ */
41
80
  app.notify({ isAdonisJS: true, environment: 'web', ...payload });
81
+ /**
82
+ * Visual notification
83
+ */
42
84
  logger.info('started HTTP server on %s:%s', payload.host, payload.port);
85
+ /**
86
+ * Notify app
87
+ */
43
88
  emitter.emit('http:server_ready', payload);
44
89
  }
90
+ /**
91
+ * Start the HTTP server by wiring up the application
92
+ */
45
93
  async start(serverCallback) {
94
+ /**
95
+ * Method to create the HTTP server
96
+ */
46
97
  const createHTTPServer = serverCallback || createServer;
47
98
  const app = this.#ignitor.createApp('web');
48
99
  await app.init();
49
100
  await app.boot();
50
101
  await app.start(async () => {
102
+ /**
103
+ * Resolve and boot the AdonisJS HTTP server
104
+ */
51
105
  const server = await app.container.make('server');
52
106
  await server.boot();
107
+ /**
108
+ * Create Node.js HTTP server instance and share it with the
109
+ * AdonisJS HTTP server
110
+ */
53
111
  const httpServer = createHTTPServer(server.handle.bind(server));
54
112
  server.setNodeServer(httpServer);
55
113
  const logger = await app.container.make('logger');
56
114
  const emitter = await app.container.make('emitter');
115
+ /**
116
+ * Start the server by listening on a port of host
117
+ */
57
118
  const payload = await this.#listen(httpServer);
119
+ /**
120
+ * Notify
121
+ */
58
122
  this.#notifyServerHasStarted(app, logger, emitter, payload);
123
+ /**
124
+ * Monitor app and the server (after the server is listening)
125
+ */
59
126
  this.#monitorAppAndServer(httpServer, app, logger);
60
127
  });
61
128
  }
@@ -1,17 +1,45 @@
1
- /// <reference types="node" resolution-mode="require"/>
1
+ /// <reference types="@types/node" resolution-mode="require"/>
2
2
  import { AceProcess } from './ace.js';
3
3
  import { TestRunnerProcess } from './test.js';
4
4
  import { HttpServerProcess } from './http.js';
5
5
  import type { AppEnvironments } from '../../types/app.js';
6
6
  import type { ApplicationService, IgnitorOptions } from '../types.js';
7
+ /**
8
+ * Ignitor is used to instantiate an AdonisJS application in different
9
+ * known environments.
10
+ */
7
11
  export declare class Ignitor {
8
12
  #private;
9
13
  constructor(appRoot: URL, options: IgnitorOptions);
14
+ /**
15
+ * Get access to the application instance created
16
+ * by either the http server process or the ace
17
+ * process
18
+ */
10
19
  getApp(): ApplicationService | undefined;
20
+ /**
21
+ * Create an instance of AdonisJS application
22
+ */
11
23
  createApp(environment: AppEnvironments): ApplicationService;
24
+ /**
25
+ * Tap to access the application class instance.
26
+ */
12
27
  tap(callback: (app: ApplicationService) => void): this;
28
+ /**
29
+ * Get instance of the HTTPServerProcess
30
+ */
13
31
  httpServer(): HttpServerProcess;
32
+ /**
33
+ * Get an instance of the AceProcess class
34
+ */
14
35
  ace(): AceProcess;
36
+ /**
37
+ * Get an instance of the TestRunnerProcess class
38
+ */
15
39
  testRunner(): TestRunnerProcess;
40
+ /**
41
+ * Terminates the app by calling the "app.terminate"
42
+ * method
43
+ */
16
44
  terminate(): Promise<void>;
17
45
  }
@@ -1,24 +1,64 @@
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
  import debug from '../debug.js';
2
10
  import { AceProcess } from './ace.js';
3
11
  import { TestRunnerProcess } from './test.js';
4
12
  import { HttpServerProcess } from './http.js';
5
13
  import { setApp } from '../../services/app.js';
6
14
  import { Application } from '../../modules/app.js';
15
+ /**
16
+ * Ignitor is used to instantiate an AdonisJS application in different
17
+ * known environments.
18
+ */
7
19
  export class Ignitor {
20
+ /**
21
+ * Ignitor options
22
+ */
8
23
  #options;
24
+ /**
25
+ * Application root URL
26
+ */
9
27
  #appRoot;
28
+ /**
29
+ * Reference to the application instance created using
30
+ * the "createApp" method.
31
+ *
32
+ * We store the output of the last call made to "createApp" method
33
+ * and assume that in one process only one entrypoint will
34
+ * call this method.
35
+ */
10
36
  #app;
37
+ /**
38
+ * Reference to the created application
39
+ */
11
40
  #tapCallbacks = new Set();
12
41
  constructor(appRoot, options) {
13
42
  this.#appRoot = appRoot;
14
43
  this.#options = options;
15
44
  }
45
+ /**
46
+ * Runs all the tap callbacks
47
+ */
16
48
  #runTapCallbacks(app) {
17
49
  this.#tapCallbacks.forEach((tapCallback) => tapCallback(app));
18
50
  }
51
+ /**
52
+ * Get access to the application instance created
53
+ * by either the http server process or the ace
54
+ * process
55
+ */
19
56
  getApp() {
20
57
  return this.#app;
21
58
  }
59
+ /**
60
+ * Create an instance of AdonisJS application
61
+ */
22
62
  createApp(environment) {
23
63
  debug('creating application instance');
24
64
  this.#app = new Application(this.#appRoot, { environment, importer: this.#options.importer });
@@ -26,19 +66,35 @@ export class Ignitor {
26
66
  this.#runTapCallbacks(this.#app);
27
67
  return this.#app;
28
68
  }
69
+ /**
70
+ * Tap to access the application class instance.
71
+ */
29
72
  tap(callback) {
30
73
  this.#tapCallbacks.add(callback);
31
74
  return this;
32
75
  }
76
+ /**
77
+ * Get instance of the HTTPServerProcess
78
+ */
33
79
  httpServer() {
34
80
  return new HttpServerProcess(this);
35
81
  }
82
+ /**
83
+ * Get an instance of the AceProcess class
84
+ */
36
85
  ace() {
37
86
  return new AceProcess(this);
38
87
  }
88
+ /**
89
+ * Get an instance of the TestRunnerProcess class
90
+ */
39
91
  testRunner() {
40
92
  return new TestRunnerProcess(this);
41
93
  }
94
+ /**
95
+ * Terminates the app by calling the "app.terminate"
96
+ * method
97
+ */
42
98
  async terminate() {
43
99
  await this.#app?.terminate();
44
100
  }
@@ -1,8 +1,18 @@
1
1
  import { Ignitor } from './main.js';
2
2
  import type { ApplicationService } from '../types.js';
3
+ /**
4
+ * The Test runner process is used to start the tests runner process
5
+ */
3
6
  export declare class TestRunnerProcess {
4
7
  #private;
5
8
  constructor(ignitor: Ignitor);
9
+ /**
10
+ * Register a callback that runs after booting the AdonisJS app
11
+ * and just before the provider's ready hook
12
+ */
6
13
  configure(callback: (app: ApplicationService) => Promise<void> | void): this;
14
+ /**
15
+ * Runs a callback after starting the app
16
+ */
7
17
  run(callback: (app: ApplicationService) => Promise<void> | void): Promise<void>;
8
18
  }
@@ -1,13 +1,38 @@
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
+ /**
10
+ * The Test runner process is used to start the tests runner process
11
+ */
1
12
  export class TestRunnerProcess {
13
+ /**
14
+ * Ignitor reference
15
+ */
2
16
  #ignitor;
17
+ /**
18
+ * The callback that configures the tests runner. This callback
19
+ * runs at the time of starting the app.
20
+ */
3
21
  #configureCallback = () => { };
4
22
  constructor(ignitor) {
5
23
  this.#ignitor = ignitor;
6
24
  }
25
+ /**
26
+ * Register a callback that runs after booting the AdonisJS app
27
+ * and just before the provider's ready hook
28
+ */
7
29
  configure(callback) {
8
30
  this.#configureCallback = callback;
9
31
  return this;
10
32
  }
33
+ /**
34
+ * Runs a callback after starting the app
35
+ */
11
36
  async run(callback) {
12
37
  const app = this.#ignitor.createApp('test');
13
38
  await app.init();
@@ -1,8 +1,15 @@
1
1
  import { ApplicationService } from './types.js';
2
+ import { RcFile } from '@adonisjs/application/types';
3
+ /**
4
+ * Imports assembler optionally
5
+ */
2
6
  export declare function importAssembler(app: ApplicationService): Promise<typeof import('@adonisjs/assembler') | undefined>;
7
+ /**
8
+ * Imports typescript optionally
9
+ */
3
10
  export declare function importTypeScript(app: ApplicationService): Promise<typeof import('typescript') | undefined>;
4
- export declare function detectAssetsBundler(app: ApplicationService): Promise<{
5
- name: string;
6
- devServerCommand: string;
7
- buildCommand: string;
8
- } | undefined>;
11
+ /**
12
+ * Detects the assets bundler in use. The rcFile.assetsBundler is
13
+ * used when exists.
14
+ */
15
+ export declare function detectAssetsBundler(app: ApplicationService): Promise<RcFile['assetsBundler']>;