@adonisjs/core 6.1.5-2 → 6.1.5-3

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 (304) hide show
  1. package/build/commands/build.d.ts +3 -0
  2. package/build/commands/build.d.ts.map +1 -0
  3. package/build/commands/build.js +22 -2
  4. package/build/commands/commands.json +1 -1
  5. package/build/commands/configure.d.ts +1 -0
  6. package/build/commands/configure.d.ts.map +1 -0
  7. package/build/commands/configure.js +2 -1
  8. package/build/commands/eject.d.ts +1 -0
  9. package/build/commands/eject.d.ts.map +1 -0
  10. package/build/commands/eject.js +2 -1
  11. package/build/commands/generate_key.d.ts +1 -0
  12. package/build/commands/generate_key.d.ts.map +1 -0
  13. package/build/commands/generate_key.js +2 -1
  14. package/build/commands/inspect_rcfile.d.ts +7 -0
  15. package/build/commands/inspect_rcfile.d.ts.map +1 -0
  16. package/build/commands/inspect_rcfile.js +10 -0
  17. package/build/commands/list/routes.d.ts +1 -0
  18. package/build/commands/list/routes.d.ts.map +1 -0
  19. package/build/commands/list/routes.js +2 -1
  20. package/build/commands/make/_base.d.ts +23 -1
  21. package/build/commands/make/_base.d.ts.map +1 -0
  22. package/build/commands/make/_base.js +11 -2
  23. package/build/commands/make/command.d.ts +1 -0
  24. package/build/commands/make/command.d.ts.map +1 -0
  25. package/build/commands/make/command.js +2 -1
  26. package/build/commands/make/controller.d.ts +1 -0
  27. package/build/commands/make/controller.d.ts.map +1 -0
  28. package/build/commands/make/controller.js +2 -1
  29. package/build/commands/make/event.d.ts +1 -0
  30. package/build/commands/make/event.d.ts.map +1 -0
  31. package/build/commands/make/event.js +2 -1
  32. package/build/commands/make/listener.d.ts +1 -0
  33. package/build/commands/make/listener.d.ts.map +1 -0
  34. package/build/commands/make/listener.js +2 -1
  35. package/build/commands/make/middleware.d.ts +1 -0
  36. package/build/commands/make/middleware.d.ts.map +1 -0
  37. package/build/commands/make/middleware.js +2 -1
  38. package/build/commands/make/prldfile.d.ts +9 -0
  39. package/build/commands/make/prldfile.d.ts.map +1 -0
  40. package/build/commands/make/prldfile.js +28 -0
  41. package/build/commands/make/provider.d.ts +1 -0
  42. package/build/commands/make/provider.d.ts.map +1 -0
  43. package/build/commands/make/provider.js +5 -2
  44. package/build/commands/make/service.d.ts +9 -0
  45. package/build/commands/make/service.d.ts.map +1 -0
  46. package/build/commands/make/service.js +26 -0
  47. package/build/commands/make/test.d.ts +1 -0
  48. package/build/commands/make/test.d.ts.map +1 -0
  49. package/build/commands/make/test.js +2 -1
  50. package/build/commands/serve.d.ts +3 -0
  51. package/build/commands/serve.d.ts.map +1 -0
  52. package/build/commands/serve.js +21 -1
  53. package/build/commands/test.d.ts +21 -0
  54. package/build/commands/test.d.ts.map +1 -0
  55. package/build/commands/test.js +156 -0
  56. package/build/factories/app.d.ts +1 -0
  57. package/build/factories/app.d.ts.map +1 -0
  58. package/build/factories/bodyparser.d.ts +1 -0
  59. package/build/factories/bodyparser.d.ts.map +1 -0
  60. package/build/factories/core/ace.d.ts +1 -0
  61. package/build/factories/core/ace.d.ts.map +1 -0
  62. package/build/factories/core/ignitor.d.ts +1 -0
  63. package/build/factories/core/ignitor.d.ts.map +1 -0
  64. package/build/factories/core/main.d.ts +1 -0
  65. package/build/factories/core/main.d.ts.map +1 -0
  66. package/build/factories/core/test_utils.d.ts +1 -0
  67. package/build/factories/core/test_utils.d.ts.map +1 -0
  68. package/build/factories/encryption.d.ts +1 -0
  69. package/build/factories/encryption.d.ts.map +1 -0
  70. package/build/factories/events.d.ts +1 -0
  71. package/build/factories/events.d.ts.map +1 -0
  72. package/build/factories/hash.d.ts +1 -0
  73. package/build/factories/hash.d.ts.map +1 -0
  74. package/build/factories/http.d.ts +1 -0
  75. package/build/factories/http.d.ts.map +1 -0
  76. package/build/factories/logger.d.ts +1 -0
  77. package/build/factories/logger.d.ts.map +1 -0
  78. package/build/factories/stubs.d.ts +1 -0
  79. package/build/factories/stubs.d.ts.map +1 -0
  80. package/build/index.d.ts +1 -0
  81. package/build/index.d.ts.map +1 -0
  82. package/build/legacy/validator.d.ts +1 -0
  83. package/build/legacy/validator.d.ts.map +1 -0
  84. package/build/modules/ace/commands.d.ts +1 -0
  85. package/build/modules/ace/commands.d.ts.map +1 -0
  86. package/build/modules/ace/commands.js +4 -2
  87. package/build/modules/ace/create_kernel.d.ts +1 -0
  88. package/build/modules/ace/create_kernel.d.ts.map +1 -0
  89. package/build/modules/ace/kernel.d.ts +1 -0
  90. package/build/modules/ace/kernel.d.ts.map +1 -0
  91. package/build/modules/ace/main.d.ts +1 -0
  92. package/build/modules/ace/main.d.ts.map +1 -0
  93. package/build/modules/ace/shell.d.ts +1 -0
  94. package/build/modules/ace/shell.d.ts.map +1 -0
  95. package/build/modules/app.d.ts +1 -0
  96. package/build/modules/app.d.ts.map +1 -0
  97. package/build/modules/bodyparser/bodyparser_middleware.d.ts +1 -0
  98. package/build/modules/bodyparser/bodyparser_middleware.d.ts.map +1 -0
  99. package/build/modules/bodyparser/main.d.ts +1 -0
  100. package/build/modules/bodyparser/main.d.ts.map +1 -0
  101. package/build/modules/config.d.ts +1 -0
  102. package/build/modules/config.d.ts.map +1 -0
  103. package/build/modules/container.d.ts +1 -0
  104. package/build/modules/container.d.ts.map +1 -0
  105. package/build/modules/encryption.d.ts +1 -0
  106. package/build/modules/encryption.d.ts.map +1 -0
  107. package/build/modules/env.d.ts +1 -0
  108. package/build/modules/env.d.ts.map +1 -0
  109. package/build/modules/events.d.ts +1 -0
  110. package/build/modules/events.d.ts.map +1 -0
  111. package/build/modules/hash/define_config.d.ts +1 -0
  112. package/build/modules/hash/define_config.d.ts.map +1 -0
  113. package/build/modules/hash/drivers_collection.d.ts +4 -4
  114. package/build/modules/hash/drivers_collection.d.ts.map +1 -0
  115. package/build/modules/hash/drivers_collection.js +2 -8
  116. package/build/modules/hash/main.d.ts +2 -0
  117. package/build/modules/hash/main.d.ts.map +1 -0
  118. package/build/modules/hash/main.js +1 -0
  119. package/build/modules/http.d.ts +1 -0
  120. package/build/modules/http.d.ts.map +1 -0
  121. package/build/modules/logger.d.ts +1 -0
  122. package/build/modules/logger.d.ts.map +1 -0
  123. package/build/providers/app_provider.d.ts +1 -0
  124. package/build/providers/app_provider.d.ts.map +1 -0
  125. package/build/providers/app_provider.js +5 -7
  126. package/build/providers/hash_provider.d.ts +1 -0
  127. package/build/providers/hash_provider.d.ts.map +1 -0
  128. package/build/providers/hash_provider.js +7 -6
  129. package/build/providers/http_provider.d.ts +1 -0
  130. package/build/providers/http_provider.d.ts.map +1 -0
  131. package/build/services/ace.d.ts +1 -0
  132. package/build/services/ace.d.ts.map +1 -0
  133. package/build/services/app.d.ts +1 -0
  134. package/build/services/app.d.ts.map +1 -0
  135. package/build/services/config.d.ts +1 -0
  136. package/build/services/config.d.ts.map +1 -0
  137. package/build/services/emitter.d.ts +1 -0
  138. package/build/services/emitter.d.ts.map +1 -0
  139. package/build/services/emitter.js +1 -2
  140. package/build/services/encryption.d.ts +1 -0
  141. package/build/services/encryption.d.ts.map +1 -0
  142. package/build/services/encryption.js +1 -2
  143. package/build/services/hash.d.ts +1 -0
  144. package/build/services/hash.d.ts.map +1 -0
  145. package/build/services/hash.js +1 -2
  146. package/build/services/logger.d.ts +1 -0
  147. package/build/services/logger.d.ts.map +1 -0
  148. package/build/services/logger.js +1 -2
  149. package/build/services/router.d.ts +1 -0
  150. package/build/services/router.d.ts.map +1 -0
  151. package/build/services/router.js +1 -2
  152. package/build/services/server.d.ts +1 -0
  153. package/build/services/server.d.ts.map +1 -0
  154. package/build/services/server.js +1 -2
  155. package/build/services/test_utils.d.ts +1 -0
  156. package/build/services/test_utils.d.ts.map +1 -0
  157. package/build/src/cli_formatters/routes_list.d.ts +1 -0
  158. package/build/src/cli_formatters/routes_list.d.ts.map +1 -0
  159. package/build/src/debug.d.ts +1 -0
  160. package/build/src/debug.d.ts.map +1 -0
  161. package/build/src/helpers/is.d.ts +1 -0
  162. package/build/src/helpers/is.d.ts.map +1 -0
  163. package/build/src/helpers/main.d.ts +1 -0
  164. package/build/src/helpers/main.d.ts.map +1 -0
  165. package/build/src/helpers/parse_binding_reference.d.ts +1 -0
  166. package/build/src/helpers/parse_binding_reference.d.ts.map +1 -0
  167. package/build/src/helpers/string.d.ts +3 -0
  168. package/build/src/helpers/string.d.ts.map +1 -0
  169. package/build/src/helpers/string.js +4 -0
  170. package/build/src/helpers/types.d.ts +1 -0
  171. package/build/src/helpers/types.d.ts.map +1 -0
  172. package/build/src/ignitor/ace.d.ts +1 -0
  173. package/build/src/ignitor/ace.d.ts.map +1 -0
  174. package/build/src/ignitor/http.d.ts +1 -0
  175. package/build/src/ignitor/http.d.ts.map +1 -0
  176. package/build/src/ignitor/main.d.ts +1 -0
  177. package/build/src/ignitor/main.d.ts.map +1 -0
  178. package/build/src/ignitor/test.d.ts +1 -0
  179. package/build/src/ignitor/test.d.ts.map +1 -0
  180. package/build/src/internal_helpers.d.ts +1 -0
  181. package/build/src/internal_helpers.d.ts.map +1 -0
  182. package/build/src/test_utils/http.d.ts +1 -0
  183. package/build/src/test_utils/http.d.ts.map +1 -0
  184. package/build/src/test_utils/main.d.ts +2 -1
  185. package/build/src/test_utils/main.d.ts.map +1 -0
  186. package/build/src/types.d.ts +3 -2
  187. package/build/src/types.d.ts.map +1 -0
  188. package/build/stubs/index.d.ts +1 -0
  189. package/build/stubs/index.d.ts.map +1 -0
  190. package/build/stubs/make/preload_file/main.stub +4 -0
  191. package/build/stubs/make/service/main.stub +4 -0
  192. package/build/toolkit/commands/index_commands.d.ts +1 -0
  193. package/build/toolkit/commands/index_commands.d.ts.map +1 -0
  194. package/build/toolkit/commands/index_commands.js +2 -1
  195. package/build/toolkit/main.d.ts +1 -0
  196. package/build/toolkit/main.d.ts.map +1 -0
  197. package/build/types/ace.d.ts +1 -0
  198. package/build/types/ace.d.ts.map +1 -0
  199. package/build/types/app.d.ts +1 -0
  200. package/build/types/app.d.ts.map +1 -0
  201. package/build/types/bodyparser.d.ts +1 -0
  202. package/build/types/bodyparser.d.ts.map +1 -0
  203. package/build/types/container.d.ts +1 -0
  204. package/build/types/container.d.ts.map +1 -0
  205. package/build/types/encryption.d.ts +1 -0
  206. package/build/types/encryption.d.ts.map +1 -0
  207. package/build/types/events.d.ts +1 -0
  208. package/build/types/events.d.ts.map +1 -0
  209. package/build/types/hash.d.ts +1 -0
  210. package/build/types/hash.d.ts.map +1 -0
  211. package/build/types/http.d.ts +1 -0
  212. package/build/types/http.d.ts.map +1 -0
  213. package/build/types/logger.d.ts +1 -0
  214. package/build/types/logger.d.ts.map +1 -0
  215. package/commands/build.ts +122 -0
  216. package/commands/configure.ts +179 -0
  217. package/commands/eject.ts +39 -0
  218. package/commands/generate_key.ts +53 -0
  219. package/commands/inspect_rcfile.ts +23 -0
  220. package/commands/list/routes.ts +121 -0
  221. package/commands/make/_base.ts +55 -0
  222. package/commands/make/command.ts +33 -0
  223. package/commands/make/controller.ts +77 -0
  224. package/commands/make/event.ts +33 -0
  225. package/commands/make/listener.ts +63 -0
  226. package/commands/make/middleware.ts +34 -0
  227. package/commands/make/prldfile.ts +40 -0
  228. package/commands/make/provider.ts +40 -0
  229. package/commands/make/service.ts +33 -0
  230. package/commands/make/test.ts +115 -0
  231. package/commands/serve.ts +146 -0
  232. package/commands/test.ts +189 -0
  233. package/factories/app.ts +10 -0
  234. package/factories/bodyparser.ts +10 -0
  235. package/factories/core/ace.ts +38 -0
  236. package/factories/core/ignitor.ts +132 -0
  237. package/factories/core/main.ts +13 -0
  238. package/factories/core/test_utils.ts +34 -0
  239. package/factories/encryption.ts +10 -0
  240. package/factories/events.ts +10 -0
  241. package/factories/hash.ts +10 -0
  242. package/factories/http.ts +10 -0
  243. package/factories/logger.ts +10 -0
  244. package/factories/stubs.ts +53 -0
  245. package/index.ts +39 -0
  246. package/legacy/validator.ts +10 -0
  247. package/modules/ace/commands.ts +152 -0
  248. package/modules/ace/create_kernel.ts +73 -0
  249. package/modules/ace/kernel.ts +28 -0
  250. package/modules/ace/main.ts +22 -0
  251. package/modules/ace/shell.ts +49 -0
  252. package/modules/app.ts +10 -0
  253. package/modules/bodyparser/bodyparser_middleware.ts +16 -0
  254. package/modules/bodyparser/main.ts +10 -0
  255. package/modules/config.ts +10 -0
  256. package/modules/container.ts +10 -0
  257. package/modules/encryption.ts +10 -0
  258. package/modules/env.ts +10 -0
  259. package/modules/events.ts +10 -0
  260. package/modules/hash/define_config.ts +64 -0
  261. package/modules/hash/drivers_collection.ts +61 -0
  262. package/modules/hash/main.ts +12 -0
  263. package/modules/http.ts +10 -0
  264. package/modules/logger.ts +10 -0
  265. package/package.json +39 -30
  266. package/providers/app_provider.ts +125 -0
  267. package/providers/hash_provider.ts +58 -0
  268. package/providers/http_provider.ts +66 -0
  269. package/services/ace.ts +26 -0
  270. package/services/app.ts +26 -0
  271. package/services/config.ts +22 -0
  272. package/services/emitter.ts +23 -0
  273. package/services/encryption.ts +23 -0
  274. package/services/hash.ts +23 -0
  275. package/services/logger.ts +23 -0
  276. package/services/router.ts +23 -0
  277. package/services/server.ts +23 -0
  278. package/services/test_utils.ts +26 -0
  279. package/src/cli_formatters/routes_list.ts +480 -0
  280. package/src/debug.ts +12 -0
  281. package/src/helpers/is.ts +11 -0
  282. package/src/helpers/main.ts +13 -0
  283. package/src/helpers/parse_binding_reference.ts +93 -0
  284. package/src/helpers/string.ts +89 -0
  285. package/src/helpers/types.ts +46 -0
  286. package/src/ignitor/ace.ts +90 -0
  287. package/src/ignitor/http.ts +167 -0
  288. package/src/ignitor/main.ts +118 -0
  289. package/src/ignitor/test.ts +51 -0
  290. package/src/internal_helpers.ts +59 -0
  291. package/src/test_utils/http.ts +79 -0
  292. package/src/test_utils/main.ts +69 -0
  293. package/src/types.ts +136 -0
  294. package/types/ace.ts +15 -0
  295. package/types/app.ts +10 -0
  296. package/types/bodyparser.ts +10 -0
  297. package/types/container.ts +10 -0
  298. package/types/encryption.ts +10 -0
  299. package/types/events.ts +10 -0
  300. package/types/hash.ts +10 -0
  301. package/types/http.ts +10 -0
  302. package/types/logger.ts +10 -0
  303. package/build/src/helpers/string_builder.d.ts +0 -23
  304. package/build/src/helpers/string_builder.js +0 -86
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/bodyparser/factories'
@@ -0,0 +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
+ import { IgnitorFactory } from './ignitor.js'
11
+ import { Ignitor } from '../../src/ignitor/main.js'
12
+ import type { IgnitorOptions } from '../../src/types.js'
13
+ import type { Kernel } from '../../modules/ace/kernel.js'
14
+ import { createAceKernel } from '../../modules/ace/create_kernel.js'
15
+
16
+ /**
17
+ * Creates an instance of Ace kernel
18
+ */
19
+ export class AceFactory {
20
+ async make(ignitor: Ignitor): Promise<Kernel>
21
+ async make(appRoot: URL, options: IgnitorOptions): Promise<Kernel>
22
+ async make(ignitorOrAppRoot: URL | Ignitor, options?: IgnitorOptions): Promise<Kernel> {
23
+ if (ignitorOrAppRoot instanceof Ignitor) {
24
+ const app = ignitorOrAppRoot.createApp('console')
25
+ await app.init()
26
+ return createAceKernel(app)
27
+ }
28
+
29
+ const app = new IgnitorFactory()
30
+ .withCoreConfig()
31
+ .withCoreProviders()
32
+ .create(ignitorOrAppRoot, options!)
33
+ .createApp('console')
34
+
35
+ await app.init()
36
+ return createAceKernel(app)
37
+ }
38
+ }
@@ -0,0 +1,132 @@
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
+ import { Ignitor } from '../../src/ignitor/main.js'
11
+ import { defineConfig as defineHttpConfig } from '../../modules/http.js'
12
+ import type { ApplicationService, IgnitorOptions } from '../../src/types.js'
13
+ import { defineConfig as defineLoggerConfig } from '../../modules/logger.js'
14
+ import { defineConfig as defineHashConfig } from '../../modules/hash/main.js'
15
+ import { defineConfig as defineBodyParserConfig } from '../../modules/bodyparser/main.js'
16
+
17
+ type FactoryParameters = {
18
+ rcFileContents: Record<string, any>
19
+ config: Record<string, any>
20
+ }
21
+
22
+ /**
23
+ * Ignitor factory creates an instance of the AdonisJS ignitor
24
+ */
25
+ export class IgnitorFactory {
26
+ #preloadActions: ((app: ApplicationService) => Promise<void> | void)[] = []
27
+ #parameters: Partial<FactoryParameters> = {}
28
+
29
+ /**
30
+ * A flag to know if we should load the core providers
31
+ */
32
+ #loadCoreProviders: boolean = false
33
+
34
+ /**
35
+ * Define preload actions to run.
36
+ */
37
+ preload(action: (app: ApplicationService) => void | Promise<void>): this {
38
+ this.#preloadActions.push(action)
39
+ return this
40
+ }
41
+
42
+ /**
43
+ * Merge core providers with user defined providers
44
+ */
45
+ #mergeCoreProviders(providers?: string[]) {
46
+ return [
47
+ '@adonisjs/core/providers/app_provider',
48
+ '@adonisjs/core/providers/hash_provider',
49
+ '@adonisjs/core/providers/http_provider',
50
+ ].concat(providers || [])
51
+ }
52
+
53
+ /**
54
+ * Merge custom factory parameters
55
+ */
56
+ merge(params: Partial<FactoryParameters>): this {
57
+ if (params.config) {
58
+ this.#parameters.config = Object.assign(this.#parameters.config || {}, params.config)
59
+ }
60
+
61
+ if (params.rcFileContents) {
62
+ this.#parameters.rcFileContents = Object.assign(
63
+ this.#parameters.rcFileContents || {},
64
+ params.rcFileContents
65
+ )
66
+ }
67
+
68
+ return this
69
+ }
70
+
71
+ /**
72
+ * Load core provider when booting the app
73
+ */
74
+ withCoreProviders(): this {
75
+ this.#loadCoreProviders = true
76
+ return this
77
+ }
78
+
79
+ /**
80
+ * Merge default config for the core features. A shallow merge
81
+ * is performed.
82
+ */
83
+ withCoreConfig(): this {
84
+ this.merge({
85
+ config: {
86
+ app: {
87
+ appKey: 'averylongrandomsecretkey',
88
+ http: defineHttpConfig({}),
89
+ },
90
+ validator: {},
91
+ bodyparser: defineBodyParserConfig({}),
92
+ hash: defineHashConfig({
93
+ default: 'scrypt',
94
+ list: {
95
+ scrypt: {
96
+ driver: 'scrypt',
97
+ },
98
+ },
99
+ }),
100
+ logger: defineLoggerConfig({
101
+ default: 'app',
102
+ loggers: {
103
+ app: {},
104
+ },
105
+ }),
106
+ },
107
+ })
108
+ return this
109
+ }
110
+
111
+ /**
112
+ * Create ignitor instance
113
+ */
114
+ create(appRoot: URL, options: IgnitorOptions): Ignitor {
115
+ return new Ignitor(appRoot, options).tap((app) => {
116
+ app.booted(async () => {
117
+ for (let action of this.#preloadActions) {
118
+ await action(app)
119
+ }
120
+ })
121
+
122
+ if (this.#loadCoreProviders) {
123
+ this.#parameters.rcFileContents = this.#parameters.rcFileContents || {}
124
+ this.#parameters.rcFileContents.providers = this.#mergeCoreProviders(
125
+ this.#parameters.rcFileContents.providers
126
+ )
127
+ }
128
+ this.#parameters.rcFileContents && app.rcContents(this.#parameters.rcFileContents)
129
+ this.#parameters.config && app.useConfig(this.#parameters.config)
130
+ })
131
+ }
132
+ }
@@ -0,0 +1,13 @@
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
+ export { AceFactory } from './ace.js'
11
+ export { StubsFactory } from '../stubs.js'
12
+ export { IgnitorFactory } from './ignitor.js'
13
+ export { TestUtilsFactory } from './test_utils.js'
@@ -0,0 +1,34 @@
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
+ import { Ignitor } from '../../index.js'
11
+ import { IgnitorFactory } from './ignitor.js'
12
+ import type { IgnitorOptions } from '../../src/types.js'
13
+ import { TestUtils } from '../../src/test_utils/main.js'
14
+
15
+ /**
16
+ * Creates an instance of TestUtils class
17
+ */
18
+ export class TestUtilsFactory {
19
+ create(ignitor: Ignitor): TestUtils
20
+ create(appRoot: URL, options: IgnitorOptions): TestUtils
21
+ create(ignitorOrAppRoot: URL | Ignitor, options?: IgnitorOptions): TestUtils {
22
+ if (ignitorOrAppRoot instanceof Ignitor) {
23
+ return new TestUtils(ignitorOrAppRoot.createApp('test'))
24
+ }
25
+
26
+ return new TestUtils(
27
+ new IgnitorFactory()
28
+ .withCoreConfig()
29
+ .withCoreProviders()
30
+ .create(ignitorOrAppRoot, options!)
31
+ .createApp('console')
32
+ )
33
+ }
34
+ }
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/encryption/factories'
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/events/factories'
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/hash/factories'
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/http-server/factories'
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/logger/factories'
@@ -0,0 +1,53 @@
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
+ import { AppFactory } from '@adonisjs/application/factories'
11
+
12
+ import { stubsRoot } from '../index.js'
13
+ import type { ApplicationService } from '../src/types.js'
14
+
15
+ type FactoryParameters = {
16
+ app: ApplicationService
17
+ }
18
+
19
+ /**
20
+ * Prepares stubs from "@adonisjs/core" package. We do not publish this class as it
21
+ * is for internal testing only using the "stubsRoot" of the core package
22
+ */
23
+ export class StubsFactory {
24
+ #parameters: Partial<FactoryParameters> = {}
25
+
26
+ /**
27
+ * Returns an instance of application
28
+ */
29
+ #getApp() {
30
+ return this.#parameters.app || new AppFactory().create(new URL('./', import.meta.url), () => {})
31
+ }
32
+
33
+ /**
34
+ * Merge custom factory parameters
35
+ */
36
+ merge(params: Partial<FactoryParameters>): this {
37
+ this.#parameters = Object.assign(this.#parameters, params)
38
+ return this
39
+ }
40
+
41
+ /**
42
+ * Prepares a stub
43
+ */
44
+ async prepare(stubPath: string, data: Record<string, any>) {
45
+ const app = this.#getApp()
46
+ await app.init()
47
+
48
+ const stub = await app.stubs.build(stubPath, {
49
+ source: stubsRoot,
50
+ })
51
+ return stub.prepare(data)
52
+ }
53
+ }
package/index.ts ADDED
@@ -0,0 +1,39 @@
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
+ import { errors as aceErrors } from '@adonisjs/ace'
11
+ import { errors as envErrors } from '@adonisjs/env'
12
+ import { errors as appErrors } from '@adonisjs/application'
13
+ import { errors as encryptionErrors } from '@adonisjs/encryption'
14
+ import { errors as httpServerErrors } from '@adonisjs/http-server'
15
+
16
+ export { stubsRoot } from './stubs/index.js'
17
+ export { inject } from './modules/container.js'
18
+ export { Ignitor } from './src/ignitor/main.js'
19
+
20
+ export const errors = {
21
+ ...encryptionErrors,
22
+ ...httpServerErrors,
23
+ ...appErrors,
24
+ ...aceErrors,
25
+ ...envErrors,
26
+ }
27
+
28
+ /**
29
+ * Pretty prints an error with colorful output using
30
+ * Youch terminal
31
+ */
32
+ export async function prettyPrintError(error: any) {
33
+ // @ts-expect-error
34
+ const { default: youchTerminal } = await import('youch-terminal')
35
+ const { default: Youch } = await import('youch')
36
+
37
+ const youch = new Youch(error, {})
38
+ console.error(youchTerminal(await youch.toJSON(), { displayShortPath: true }))
39
+ }
@@ -0,0 +1,10 @@
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
+ export * from '@adonisjs/validator'
@@ -0,0 +1,152 @@
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
+ import { BaseCommand as AceBaseCommand, ListCommand as AceListCommand } from '@adonisjs/ace'
11
+
12
+ import { Kernel } from './kernel.js'
13
+ import type { ApplicationService } from '../../src/types.js'
14
+ import type { CommandOptions, ParsedOutput, UIPrimitives } from '../../types/ace.js'
15
+
16
+ /**
17
+ * The base command to create custom ace commands. The AdonisJS base commands
18
+ * receives the application instance
19
+ */
20
+ export class BaseCommand extends AceBaseCommand {
21
+ static options: CommandOptions = {}
22
+
23
+ get staysAlive() {
24
+ return (this.constructor as typeof BaseCommand).options.staysAlive
25
+ }
26
+
27
+ get startApp() {
28
+ return (this.constructor as typeof BaseCommand).options.startApp
29
+ }
30
+
31
+ constructor(
32
+ public app: ApplicationService,
33
+ public kernel: Kernel,
34
+ parsed: ParsedOutput,
35
+ ui: UIPrimitives,
36
+ prompt: Kernel['prompt']
37
+ ) {
38
+ super(kernel, parsed, ui, prompt)
39
+ }
40
+
41
+ /**
42
+ * The prepare template method is used to prepare the
43
+ * state for the command. This is the first method
44
+ * executed on a given command instance.
45
+ */
46
+ prepare?(..._: any[]): any
47
+
48
+ /**
49
+ * The interact template method is used to display the prompts
50
+ * to the user. The method is called after the prepare
51
+ * method.
52
+ */
53
+ interact?(..._: any[]): any
54
+
55
+ /**
56
+ * The completed method is the method invoked after the command
57
+ * finishes or results in an error.
58
+ *
59
+ * You can access the command error using the `this.error` property.
60
+ * Returning `true` from completed method supresses the error
61
+ * reporting to the kernel layer.
62
+ */
63
+ completed?(..._: any[]): any
64
+
65
+ /**
66
+ * Executes the command
67
+ */
68
+ async exec() {
69
+ this.hydrate()
70
+
71
+ try {
72
+ /**
73
+ * Executing the template methods
74
+ */
75
+ this.prepare && (await this.app.container.call<any, 'prepare'>(this, 'prepare'))
76
+ this.interact && (await this.app.container.call<any, 'interact'>(this, 'interact'))
77
+ const result = await this.app.container.call<BaseCommand, 'run'>(this, 'run')
78
+
79
+ /**
80
+ * Set exit code
81
+ */
82
+ this.result = this.result === undefined ? result : this.result
83
+ this.exitCode = this.exitCode ?? 0
84
+ } catch (error) {
85
+ this.error = error
86
+ this.exitCode = this.exitCode ?? 1
87
+ }
88
+
89
+ /**
90
+ * Run the completed method (if exists) and check if has handled
91
+ * the error
92
+ */
93
+ let errorHandled = this.completed
94
+ ? await this.app.container.call<any, 'completed'>(this, 'completed')
95
+ : false
96
+
97
+ if (this.error && !errorHandled) {
98
+ this.logger.fatal(this.error)
99
+ }
100
+
101
+ return this.result
102
+ }
103
+
104
+ /**
105
+ * Terminate the app. A command should prefer calling this method
106
+ * over the "app.terminate", because this method only triggers
107
+ * app termination when the current command is in the charge
108
+ * of the process.
109
+ */
110
+ async terminate() {
111
+ if (this.kernel.getMainCommand() === this) {
112
+ await this.app.terminate()
113
+ }
114
+ }
115
+ }
116
+
117
+ /**
118
+ * The List command is used to display a list of commands
119
+ */
120
+ export class ListCommand extends AceListCommand implements BaseCommand {
121
+ static options: CommandOptions = {}
122
+
123
+ get staysAlive() {
124
+ return (this.constructor as typeof BaseCommand).options.staysAlive
125
+ }
126
+
127
+ get startApp() {
128
+ return (this.constructor as typeof BaseCommand).options.startApp
129
+ }
130
+
131
+ constructor(
132
+ public app: ApplicationService,
133
+ public kernel: Kernel,
134
+ parsed: ParsedOutput,
135
+ ui: UIPrimitives,
136
+ prompt: Kernel['prompt']
137
+ ) {
138
+ super(kernel, parsed, ui, prompt)
139
+ }
140
+
141
+ /**
142
+ * Terminate the app. A command should prefer calling this method
143
+ * over the "app.terminate", because this method only triggers
144
+ * app termination when the current command is in the charge
145
+ * of the process.
146
+ */
147
+ async terminate() {
148
+ if (this.kernel.getMainCommand() === this) {
149
+ await this.app.terminate()
150
+ }
151
+ }
152
+ }
@@ -0,0 +1,73 @@
1
+ /*
2
+ * @adonisjs/ace
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
+ import { Kernel } from './main.js'
11
+ import type { ApplicationService } from '../../src/types.js'
12
+ import { FsLoader, HelpCommand } from '../../modules/ace/main.js'
13
+
14
+ /**
15
+ * We abstract the logic for creating the ace kernel in this
16
+ * file. So that both the "console" environment and rest
17
+ * of the environments can configure and use ace.
18
+ *
19
+ * - In console environment, ace manages the lifecycle of the process
20
+ * - In other environments, ace can be pulled from the container to
21
+ * run commands
22
+ */
23
+ export function createAceKernel(app: ApplicationService) {
24
+ const kernel = new Kernel(app)
25
+ kernel.addLoader(new FsLoader(app.commandsPath()))
26
+
27
+ /**
28
+ * Lazy import commands mentioned in the "commands" array
29
+ * of rcFile
30
+ */
31
+ app.rcFile.commands.forEach((commandModule) => {
32
+ kernel.addLoader(() => app.import(commandModule))
33
+ })
34
+
35
+ /**
36
+ * Custom global flags
37
+ */
38
+ kernel.defineFlag('ansi', {
39
+ type: 'boolean',
40
+ showNegatedVariantInHelp: true,
41
+ description: 'Force enable or disable colorful output',
42
+ })
43
+
44
+ kernel.defineFlag('help', {
45
+ type: 'boolean',
46
+ description: HelpCommand.description,
47
+ })
48
+
49
+ /**
50
+ * Flag listener to turn colors on/off
51
+ */
52
+ kernel.on('ansi', (_, $kernel, parsed) => {
53
+ if (parsed.flags.ansi === false) {
54
+ $kernel.ui.switchMode('silent')
55
+ }
56
+
57
+ if (parsed.flags.ansi === true) {
58
+ $kernel.ui.switchMode('normal')
59
+ }
60
+ })
61
+
62
+ /**
63
+ * Flag listener to display the help
64
+ */
65
+ kernel.on('help', async (command, $kernel, parsed) => {
66
+ parsed.args.unshift(command.commandName)
67
+ const help = new HelpCommand($kernel, parsed, kernel.ui, kernel.prompt)
68
+ await help.exec()
69
+ return $kernel.shortcircuit()
70
+ })
71
+
72
+ return kernel
73
+ }
@@ -0,0 +1,28 @@
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
+ import { Kernel as AceKernel } from '@adonisjs/ace'
11
+ import { BaseCommand, ListCommand } from './commands.js'
12
+ import type { ApplicationService } from '../../src/types.js'
13
+
14
+ /**
15
+ * The base command to create custom ace commands. The AdonisJS base commands
16
+ * receives the application instance
17
+ */
18
+ export class Kernel extends AceKernel<typeof BaseCommand> {
19
+ constructor(public app: ApplicationService) {
20
+ super(ListCommand, {
21
+ create: async (command, parsedOutput, $kernel) => {
22
+ return app.container.make(command, [app, $kernel, parsedOutput, $kernel.ui, $kernel.prompt])
23
+ },
24
+
25
+ run: (command) => command.exec(),
26
+ })
27
+ }
28
+ }
@@ -0,0 +1,22 @@
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
+ export { Kernel } from './kernel.js'
11
+ export { BaseCommand, ListCommand } from './commands.js'
12
+ export {
13
+ args,
14
+ flags,
15
+ errors,
16
+ Parser,
17
+ FsLoader,
18
+ ListLoader,
19
+ cliHelpers,
20
+ HelpCommand,
21
+ IndexGenerator,
22
+ } from '@adonisjs/ace'