@adonisjs/core 6.1.5-2 → 6.1.5-21

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 (189) 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.d.ts +2 -0
  96. package/build/modules/http/main.js +10 -0
  97. package/build/modules/http/request_validator.d.ts +34 -0
  98. package/build/modules/http/request_validator.js +66 -0
  99. package/build/modules/logger.js +8 -0
  100. package/build/modules/repl.d.ts +1 -0
  101. package/build/modules/repl.js +9 -0
  102. package/build/providers/app_provider.d.ts +31 -2
  103. package/build/providers/app_provider.js +44 -15
  104. package/build/providers/edge_provider.d.ts +31 -0
  105. package/build/providers/edge_provider.js +69 -0
  106. package/build/providers/hash_provider.d.ts +22 -2
  107. package/build/providers/hash_provider.js +49 -7
  108. package/build/providers/http_provider.d.ts +17 -0
  109. package/build/providers/http_provider.js +26 -1
  110. package/build/providers/repl_provider.d.ts +13 -0
  111. package/build/providers/repl_provider.js +98 -0
  112. package/build/providers/vinejs_provider.d.ts +33 -0
  113. package/build/providers/vinejs_provider.js +84 -0
  114. package/build/services/ace.js +15 -0
  115. package/build/services/app.d.ts +8 -0
  116. package/build/services/app.js +16 -0
  117. package/build/services/config.js +11 -0
  118. package/build/services/emitter.js +13 -2
  119. package/build/services/encryption.js +13 -2
  120. package/build/services/hash.js +13 -2
  121. package/build/services/logger.js +13 -2
  122. package/build/services/repl.d.ts +3 -0
  123. package/build/services/repl.js +18 -0
  124. package/build/services/router.js +13 -2
  125. package/build/services/server.js +13 -2
  126. package/build/services/test_utils.js +15 -0
  127. package/build/src/cli_formatters/routes_list.d.ts +24 -1
  128. package/build/src/cli_formatters/routes_list.js +118 -0
  129. package/build/src/debug.d.ts +1 -1
  130. package/build/src/debug.js +8 -0
  131. package/build/src/exceptions.d.ts +1 -0
  132. package/build/src/exceptions.js +9 -0
  133. package/build/src/helpers/is.js +8 -0
  134. package/build/src/helpers/main.d.ts +1 -1
  135. package/build/src/helpers/main.js +9 -1
  136. package/build/src/helpers/parse_binding_reference.d.ts +40 -0
  137. package/build/src/helpers/parse_binding_reference.js +60 -0
  138. package/build/src/helpers/string.d.ts +26 -0
  139. package/build/src/helpers/string.js +15 -0
  140. package/build/src/helpers/types.d.ts +114 -16
  141. package/build/src/helpers/types.js +13 -0
  142. package/build/src/ignitor/ace.d.ts +12 -0
  143. package/build/src/ignitor/ace.js +50 -1
  144. package/build/src/ignitor/http.d.ts +9 -2
  145. package/build/src/ignitor/http.js +67 -0
  146. package/build/src/ignitor/main.d.ts +29 -1
  147. package/build/src/ignitor/main.js +56 -0
  148. package/build/src/ignitor/test.d.ts +10 -0
  149. package/build/src/ignitor/test.js +25 -0
  150. package/build/src/internal_helpers.d.ts +12 -5
  151. package/build/src/internal_helpers.js +35 -7
  152. package/build/src/test_utils/http.d.ts +10 -2
  153. package/build/src/test_utils/http.js +19 -0
  154. package/build/src/test_utils/main.d.ts +21 -3
  155. package/build/src/test_utils/main.js +27 -1
  156. package/build/src/types.d.ts +65 -4
  157. package/build/src/types.js +8 -0
  158. package/build/stubs/main.js +10 -0
  159. package/build/stubs/make/exception/main.stub +10 -0
  160. package/build/stubs/make/preload_file/main.stub +4 -0
  161. package/build/stubs/make/service/main.stub +4 -0
  162. package/build/stubs/make/validator/main.stub +5 -0
  163. package/build/stubs/make/view/main.stub +4 -0
  164. package/build/toolkit/commands/index_commands.d.ts +4 -0
  165. package/build/toolkit/commands/index_commands.js +13 -5
  166. package/build/toolkit/main.js +11 -0
  167. package/build/types/ace.js +8 -0
  168. package/build/types/app.js +8 -0
  169. package/build/types/bodyparser.js +8 -0
  170. package/build/types/container.js +8 -0
  171. package/build/types/encryption.js +8 -0
  172. package/build/types/events.js +8 -0
  173. package/build/types/hash.js +8 -0
  174. package/build/types/http.d.ts +7 -0
  175. package/build/types/http.js +8 -0
  176. package/build/types/logger.js +8 -0
  177. package/build/types/repl.d.ts +1 -0
  178. package/build/types/repl.js +9 -0
  179. package/package.json +83 -121
  180. package/build/commands/make/_base.d.ts +0 -6
  181. package/build/commands/make/_base.js +0 -19
  182. package/build/legacy/validator.d.ts +0 -1
  183. package/build/legacy/validator.js +0 -1
  184. package/build/modules/http.d.ts +0 -1
  185. package/build/modules/http.js +0 -1
  186. package/build/src/helpers/string_builder.d.ts +0 -23
  187. package/build/src/helpers/string_builder.js +0 -86
  188. package/build/stubs/index.js +0 -2
  189. /package/build/stubs/{index.d.ts → main.d.ts} +0 -0
@@ -1,5 +1,8 @@
1
- import { type Router } from '../../modules/http.js';
2
1
  import type { UIPrimitives } from '../../types/ace.js';
2
+ import { type Router } from '../../modules/http/main.js';
3
+ /**
4
+ * Shape of the serialized route specific to the formatter
5
+ */
3
6
  type SerializedRoute = {
4
7
  name: string;
5
8
  pattern: string;
@@ -14,6 +17,12 @@ type SerializedRoute = {
14
17
  method: string;
15
18
  };
16
19
  };
20
+ /**
21
+ * Routes list formatter is used to format the routes to JSON or an ANSI string
22
+ * with pretty output.
23
+ *
24
+ * The decisions of colors, padding, alignment are all handled by the lists formatter
25
+ */
17
26
  export declare class RoutesListFormatter {
18
27
  #private;
19
28
  constructor(router: Router, ui: UIPrimitives, options: {
@@ -24,14 +33,28 @@ export declare class RoutesListFormatter {
24
33
  middleware?: string[];
25
34
  ignoreMiddleware?: string[];
26
35
  });
36
+ /**
37
+ * Formats routes as an array of objects. Routes are grouped by
38
+ * domain.
39
+ */
27
40
  formatAsJSON(): Promise<{
28
41
  domain: string;
29
42
  routes: SerializedRoute[];
30
43
  }[]>;
44
+ /**
45
+ * Format routes to ansi list of tables. Each domain has its own table
46
+ * with heading and rows. Each row has colums with colors and spacing
47
+ * around them.
48
+ */
31
49
  formatAsAnsiList(): Promise<{
32
50
  heading: string;
33
51
  rows: string[];
34
52
  }[]>;
53
+ /**
54
+ * Format routes to ansi tables. Each domain has its own table
55
+ * with heading and rows. Each row has colums with colors and spacing
56
+ * around them.
57
+ */
35
58
  formatAsAnsiTable(): Promise<{
36
59
  heading: string;
37
60
  table: ReturnType<UIPrimitives['table']>;
@@ -1,11 +1,31 @@
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 stringWidth from 'string-width';
2
10
  import { cliHelpers } from '../../modules/ace/main.js';
3
11
  import { parseBindingReference } from '../../src/helpers/main.js';
12
+ /**
13
+ * Routes list formatter is used to format the routes to JSON or an ANSI string
14
+ * with pretty output.
15
+ *
16
+ * The decisions of colors, padding, alignment are all handled by the lists formatter
17
+ */
4
18
  export class RoutesListFormatter {
5
19
  #router;
6
20
  #colors;
7
21
  #table;
22
+ /**
23
+ * Options for printing routes
24
+ */
8
25
  #options;
26
+ /**
27
+ * Filters to apply when finding routes
28
+ */
9
29
  #filters;
10
30
  constructor(router, ui, options, filters) {
11
31
  this.#router = router;
@@ -15,8 +35,15 @@ export class RoutesListFormatter {
15
35
  this.#options = options;
16
36
  this.#router.commit();
17
37
  }
38
+ /**
39
+ * Test if a route clears the applied filters
40
+ */
18
41
  #isAllowedByFilters(route) {
19
42
  let allowRoute = true;
43
+ /**
44
+ * Check if the route is allowed by applying the middleware
45
+ * filter
46
+ */
20
47
  if (this.#filters.middleware) {
21
48
  allowRoute = this.#filters.middleware.every((name) => {
22
49
  if (name === '*') {
@@ -25,6 +52,10 @@ export class RoutesListFormatter {
25
52
  return route.middleware.includes(name);
26
53
  });
27
54
  }
55
+ /**
56
+ * Check if the route has any or the ignored middleware. If yes, do not
57
+ * display the route
58
+ */
28
59
  if (allowRoute && this.#filters.ignoreMiddleware) {
29
60
  allowRoute = this.#filters.ignoreMiddleware.every((name) => {
30
61
  if (name === '*') {
@@ -33,22 +64,40 @@ export class RoutesListFormatter {
33
64
  return !route.middleware.includes(name);
34
65
  });
35
66
  }
67
+ /**
68
+ * No more filters to be applied
69
+ */
36
70
  if (!this.#filters.match) {
37
71
  return allowRoute;
38
72
  }
73
+ /**
74
+ * Check if the route name has the match keyword
75
+ */
39
76
  if (route.name.includes(this.#filters.match)) {
40
77
  return true;
41
78
  }
79
+ /**
80
+ * Check if the route pattern has the match keyword
81
+ */
42
82
  if (route.pattern.includes(this.#filters.match)) {
43
83
  return true;
44
84
  }
85
+ /**
86
+ * Check if the route handler has the match keyword
87
+ */
45
88
  if (route.handler.type === 'controller'
46
89
  ? route.handler.moduleNameOrPath.includes(this.#filters.match)
47
90
  : route.handler.name.includes(this.#filters.match)) {
48
91
  return true;
49
92
  }
93
+ /**
94
+ * Disallow route
95
+ */
50
96
  return false;
51
97
  }
98
+ /**
99
+ * Serialize route middleware to an array of names
100
+ */
52
101
  #serializeMiddleware(middleware) {
53
102
  return [...middleware.all()].reduce((result, one) => {
54
103
  if (typeof one === 'function') {
@@ -61,18 +110,30 @@ export class RoutesListFormatter {
61
110
  return result;
62
111
  }, []);
63
112
  }
113
+ /**
114
+ * Serialize route handler reference to display object
115
+ */
64
116
  async #serializeHandler(handler) {
117
+ /**
118
+ * Value is a controller reference
119
+ */
65
120
  if ('reference' in handler) {
66
121
  return {
67
122
  type: 'controller',
68
123
  ...(await parseBindingReference(handler.reference)),
69
124
  };
70
125
  }
126
+ /**
127
+ * Value is an inline closure
128
+ */
71
129
  return {
72
130
  type: 'closure',
73
131
  name: handler.name || 'closure',
74
132
  };
75
133
  }
134
+ /**
135
+ * Serializes routes JSON to an object that can be used for pretty printing
136
+ */
76
137
  async #serializeRoute(route) {
77
138
  let methods = route.methods;
78
139
  if (!this.#options.displayHeadRoutes) {
@@ -86,9 +147,15 @@ export class RoutesListFormatter {
86
147
  middleware: this.#serializeMiddleware(route.middleware),
87
148
  };
88
149
  }
150
+ /**
151
+ * Formats the route method for the ansi list and table
152
+ */
89
153
  #formatRouteMethod(method) {
90
154
  return this.#colors.dim(method);
91
155
  }
156
+ /**
157
+ * Formats route pattern for the ansi list and table
158
+ */
92
159
  #formatRoutePattern(route) {
93
160
  const pattern = this.#router
94
161
  .parsePattern(route.pattern)
@@ -107,14 +174,23 @@ export class RoutesListFormatter {
107
174
  .join('/');
108
175
  return `${pattern === '/' ? pattern : `/${pattern}`}${route.name ? ` ${this.#colors.dim(`(${route.name})`)}` : ''} `;
109
176
  }
177
+ /**
178
+ * Formats controller name for the ansi list and table
179
+ */
110
180
  #formatControllerName(route) {
111
181
  return route.handler.type === 'controller' ? ` ${route.handler.moduleNameOrPath}.` : '';
112
182
  }
183
+ /**
184
+ * Formats action name for the ansi list and table
185
+ */
113
186
  #formatAction(route) {
114
187
  return route.handler.type === 'controller'
115
188
  ? `${this.#colors.cyan(route.handler.method)}`
116
189
  : ` ${this.#colors.cyan(route.handler.name)}`;
117
190
  }
191
+ /**
192
+ * Formats route middleware for the ansi list and table
193
+ */
118
194
  #formatMiddleware(route, mode = 'normal') {
119
195
  if (mode === 'compact' && route.middleware.length > 3) {
120
196
  const firstMiddleware = route.middleware[0];
@@ -124,6 +200,10 @@ export class RoutesListFormatter {
124
200
  }
125
201
  return this.#colors.dim(`${route.middleware.filter((one) => one).join(', ')}`);
126
202
  }
203
+ /**
204
+ * Formatting the domain headling to be in green color with
205
+ * dots around it
206
+ */
127
207
  #formatDomainHeadline(domain) {
128
208
  if (domain !== 'root') {
129
209
  return cliHelpers.justify([`${this.#colors.dim('..')} ${this.#colors.green(domain)} `], {
@@ -133,19 +213,31 @@ export class RoutesListFormatter {
133
213
  }
134
214
  return '';
135
215
  }
216
+ /**
217
+ * Justify the ansi list
218
+ */
136
219
  #justifyListTables(tables) {
137
220
  return tables.map((table) => {
221
+ /**
222
+ * Formatting methods
223
+ */
138
224
  const methods = table.rows.map((columns) => columns[0]);
139
225
  const largestMethodsLength = Math.max(...methods.map((method) => stringWidth(method)));
140
226
  const formattedMethods = cliHelpers.justify(methods, {
141
227
  maxWidth: largestMethodsLength,
142
228
  });
229
+ /**
230
+ * Formatting patterns
231
+ */
143
232
  const patterns = table.rows.map((columns) => columns[1]);
144
233
  const largestPatternLength = Math.max(...patterns.map((pattern) => stringWidth(pattern)));
145
234
  const formattedPatterns = cliHelpers.justify(patterns, {
146
235
  maxWidth: largestPatternLength,
147
236
  paddingChar: this.#colors.dim('.'),
148
237
  });
238
+ /**
239
+ * Formatting middleware to be right aligned
240
+ */
149
241
  const middleware = table.rows.map((columns) => columns[3]);
150
242
  const largestMiddlewareLength = Math.max(...middleware.map((one) => stringWidth(one)));
151
243
  const formattedMiddleware = cliHelpers.justify(middleware, {
@@ -153,6 +245,10 @@ export class RoutesListFormatter {
153
245
  align: 'right',
154
246
  paddingChar: ' ',
155
247
  });
248
+ /**
249
+ * Formatting controllers to be right aligned and take all the remaining
250
+ * space after printing route method, pattern and middleware.
251
+ */
156
252
  const controllers = table.rows.map((columns) => columns[2]);
157
253
  const largestControllerLength = (this.#options.maxPrettyPrintWidth || cliHelpers.TERMINAL_SIZE) -
158
254
  (largestPatternLength + largestMethodsLength + largestMiddlewareLength);
@@ -172,6 +268,10 @@ export class RoutesListFormatter {
172
268
  };
173
269
  });
174
270
  }
271
+ /**
272
+ * Formats routes as an array of objects. Routes are grouped by
273
+ * domain.
274
+ */
175
275
  async formatAsJSON() {
176
276
  const routes = this.#router.toJSON();
177
277
  const domains = Object.keys(routes);
@@ -185,6 +285,11 @@ export class RoutesListFormatter {
185
285
  }
186
286
  return routesJSON;
187
287
  }
288
+ /**
289
+ * Format routes to ansi list of tables. Each domain has its own table
290
+ * with heading and rows. Each row has colums with colors and spacing
291
+ * around them.
292
+ */
188
293
  async formatAsAnsiList() {
189
294
  const routes = this.#router.toJSON();
190
295
  const domains = Object.keys(routes);
@@ -201,6 +306,10 @@ export class RoutesListFormatter {
201
306
  ],
202
307
  ],
203
308
  };
309
+ /**
310
+ * Computing table rows. Each route+method will have its
311
+ * own row
312
+ */
204
313
  for (let route of routes[domain]) {
205
314
  const serializedRoute = await this.#serializeRoute(route);
206
315
  if (this.#isAllowedByFilters(serializedRoute)) {
@@ -218,6 +327,11 @@ export class RoutesListFormatter {
218
327
  }
219
328
  return this.#justifyListTables(tables);
220
329
  }
330
+ /**
331
+ * Format routes to ansi tables. Each domain has its own table
332
+ * with heading and rows. Each row has colums with colors and spacing
333
+ * around them.
334
+ */
221
335
  async formatAsAnsiTable() {
222
336
  const routes = this.#router.toJSON();
223
337
  const domains = Object.keys(routes);
@@ -235,6 +349,10 @@ export class RoutesListFormatter {
235
349
  { content: this.#colors.dim('MIDDLEWARE'), hAlign: 'right' },
236
350
  ]),
237
351
  };
352
+ /**
353
+ * Computing table rows. Each route+method will have its
354
+ * own row
355
+ */
238
356
  for (let route of routes[domain]) {
239
357
  const serializedRoute = await this.#serializeRoute(route);
240
358
  if (this.#isAllowedByFilters(serializedRoute)) {
@@ -1,3 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
1
+ /// <reference types="@types/node" resolution-mode="require"/>
2
2
  declare const _default: import("util").DebugLogger;
3
3
  export default _default;
@@ -1,2 +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
+ */
1
9
  import { debuglog } from 'node:util';
2
10
  export default debuglog('adonisjs:core');
@@ -0,0 +1 @@
1
+ export { Exception, createError, RuntimeException, InvalidArgumentsException, } from '@poppinss/utils';
@@ -0,0 +1,9 @@
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
+ export { Exception, createError, RuntimeException, InvalidArgumentsException, } from '@poppinss/utils';
@@ -1,2 +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
+ */
1
9
  import is from '@sindresorhus/is';
2
10
  export default is;
@@ -1,4 +1,4 @@
1
1
  export { default as parseImports } from 'parse-imports';
2
2
  export { createId as cuid } from '@paralleldrive/cuid2';
3
- export { safeEqual, compose, base64, fsImportAll, fsReadAll, slash } from '@poppinss/utils';
3
+ export { slash, base64, compose, fsReadAll, safeEqual, fsImportAll, MessageBuilder, } from '@poppinss/utils';
4
4
  export { parseBindingReference } from './parse_binding_reference.js';
@@ -1,4 +1,12 @@
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
  export { default as parseImports } from 'parse-imports';
2
10
  export { createId as cuid } from '@paralleldrive/cuid2';
3
- export { safeEqual, compose, base64, fsImportAll, fsReadAll, slash } from '@poppinss/utils';
11
+ export { slash, base64, compose, fsReadAll, safeEqual, fsImportAll, MessageBuilder, } from '@poppinss/utils';
4
12
  export { parseBindingReference } from './parse_binding_reference.js';
@@ -1,4 +1,44 @@
1
1
  import { LazyImport, Constructor } from '../../types/http.js';
2
+ /**
3
+ * The "parseBindingReference" method can be used to parse a binding references
4
+ * similar to route controller binding value or event listener binding value.
5
+ *
6
+ * See the following examples to understand how this function works.
7
+ *
8
+ * ### Magic strings
9
+ * ```ts
10
+ * parseBindingReference('#controllers/home_controller')
11
+ * // returns { moduleNameOrPath: '#controllers/home_controller', method: 'handle' }
12
+
13
+ * parseBindingReference('#controllers/home_controller.index')
14
+ * // returns { moduleNameOrPath: '#controllers/home_controller', method: 'index' }
15
+
16
+ * parseBindingReference('#controllers/home.controller.index')
17
+ * // returns { moduleNameOrPath: '#controllers/home.controller', method: 'index' }
18
+ * ```
19
+ *
20
+ * ### Class reference
21
+ * ```ts
22
+ * class HomeController {}
23
+ *
24
+ * parseBindingReference([HomeController])
25
+ * // returns { moduleNameOrPath: 'HomeController', method: 'handle' }
26
+
27
+ * parseBindingReference([HomeController, 'index'])
28
+ * // returns { moduleNameOrPath: 'HomeController', method: 'index' }
29
+ * ```
30
+ *
31
+ * ### Lazy import reference
32
+ * ```ts
33
+ * const HomeController = () => import('#controllers/home_controller')
34
+ *
35
+ * parseBindingReference([HomeController])
36
+ * // returns { moduleNameOrPath: '#controllers/home_controller', method: 'handle' }
37
+
38
+ * parseBindingReference([HomeController, 'index'])
39
+ * // returns { moduleNameOrPath: 'controllers/home_controller', method: 'index' }
40
+ * ```
41
+ */
2
42
  export declare function parseBindingReference(binding: string | [LazyImport<Constructor<any>> | Constructor<any>, any?]): Promise<{
3
43
  moduleNameOrPath: string;
4
44
  method: string;
@@ -1,5 +1,58 @@
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 parseImports from 'parse-imports';
10
+ /**
11
+ * The "parseBindingReference" method can be used to parse a binding references
12
+ * similar to route controller binding value or event listener binding value.
13
+ *
14
+ * See the following examples to understand how this function works.
15
+ *
16
+ * ### Magic strings
17
+ * ```ts
18
+ * parseBindingReference('#controllers/home_controller')
19
+ * // returns { moduleNameOrPath: '#controllers/home_controller', method: 'handle' }
20
+
21
+ * parseBindingReference('#controllers/home_controller.index')
22
+ * // returns { moduleNameOrPath: '#controllers/home_controller', method: 'index' }
23
+
24
+ * parseBindingReference('#controllers/home.controller.index')
25
+ * // returns { moduleNameOrPath: '#controllers/home.controller', method: 'index' }
26
+ * ```
27
+ *
28
+ * ### Class reference
29
+ * ```ts
30
+ * class HomeController {}
31
+ *
32
+ * parseBindingReference([HomeController])
33
+ * // returns { moduleNameOrPath: 'HomeController', method: 'handle' }
34
+
35
+ * parseBindingReference([HomeController, 'index'])
36
+ * // returns { moduleNameOrPath: 'HomeController', method: 'index' }
37
+ * ```
38
+ *
39
+ * ### Lazy import reference
40
+ * ```ts
41
+ * const HomeController = () => import('#controllers/home_controller')
42
+ *
43
+ * parseBindingReference([HomeController])
44
+ * // returns { moduleNameOrPath: '#controllers/home_controller', method: 'handle' }
45
+
46
+ * parseBindingReference([HomeController, 'index'])
47
+ * // returns { moduleNameOrPath: 'controllers/home_controller', method: 'index' }
48
+ * ```
49
+ */
2
50
  export async function parseBindingReference(binding) {
51
+ /**
52
+ * The binding reference is a magic string. It might not have method
53
+ * name attached to it. Therefore we split the string and attempt
54
+ * to find the method or use the default method name "handle".
55
+ */
3
56
  if (typeof binding === 'string') {
4
57
  const tokens = binding.split('.');
5
58
  if (tokens.length === 1) {
@@ -8,6 +61,10 @@ export async function parseBindingReference(binding) {
8
61
  return { method: tokens.pop(), moduleNameOrPath: tokens.join('.') };
9
62
  }
10
63
  const [bindingReference, method] = binding;
64
+ /**
65
+ * Parsing the binding reference for dynamic imports and using its
66
+ * import value.
67
+ */
11
68
  const imports = [...(await parseImports(bindingReference.toString()))];
12
69
  const importedModule = imports.find(($import) => $import.isDynamicImport && $import.moduleSpecifier.value);
13
70
  if (importedModule) {
@@ -16,6 +73,9 @@ export async function parseBindingReference(binding) {
16
73
  method: method || 'handle',
17
74
  };
18
75
  }
76
+ /**
77
+ * Otherwise using the name of the binding reference.
78
+ */
19
79
  return {
20
80
  moduleNameOrPath: bindingReference.name,
21
81
  method: method || 'handle',
@@ -1,17 +1,43 @@
1
1
  import { EncodeOptions } from 'he';
2
2
  import string from '@poppinss/utils/string';
3
+ import StringBuilder from '@poppinss/utils/string_builder';
4
+ /**
5
+ * Collection of string helpers to transform a string value.
6
+ */
3
7
  declare const stringHelpers: typeof string & {
8
+ /**
9
+ * Creates an instance of the string builder
10
+ */
11
+ create(value: string | StringBuilder): StringBuilder;
4
12
  ordinalize: (typeof string)['ordinal'];
13
+ /**
14
+ * Convert a string to a sentence
15
+ */
5
16
  toSentence: (typeof string)['sentence'];
17
+ /**
18
+ * Generate a random string value of a given length
19
+ */
6
20
  generateRandom: (typeof string)['random'];
21
+ /**
22
+ * Pretty print hrtime diff
23
+ */
7
24
  prettyHrTime(time: [number, number], options?: {
8
25
  verbose?: boolean | undefined;
9
26
  precise?: boolean | undefined;
10
27
  }): string;
28
+ /**
29
+ * Check if a string is empty.
30
+ */
11
31
  isEmpty(value: string): boolean;
32
+ /**
33
+ * Escape HTML entities
34
+ */
12
35
  escapeHTML(value: string, options?: {
13
36
  encodeSymbols?: boolean;
14
37
  }): string;
38
+ /**
39
+ * Encode symbols to html entities
40
+ */
15
41
  encodeSymbols(value: string, options?: EncodeOptions): string;
16
42
  };
17
43
  export default stringHelpers;
@@ -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
  },