velocious 1.0.92 → 1.0.94

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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/application.js +19 -0
  3. package/src/cli/base-command.js +1 -0
  4. package/src/cli/commands/db/migrate.js +2 -0
  5. package/src/cli/commands/generate/base-models.js +7 -0
  6. package/src/cli/commands/generate/model.js +1 -1
  7. package/src/configuration-resolver.js +6 -3
  8. package/src/configuration.js +27 -4
  9. package/src/database/drivers/base-column.js +69 -0
  10. package/src/database/drivers/base-columns-index.js +19 -0
  11. package/src/database/drivers/base-foreign-key.js +12 -0
  12. package/src/database/drivers/base-table.js +32 -0
  13. package/src/database/drivers/base.js +125 -3
  14. package/src/database/drivers/mysql/index.js +89 -11
  15. package/src/database/migrator.js +17 -2
  16. package/src/database/query/drop-table-base.js +8 -0
  17. package/src/database/query/index.js +42 -0
  18. package/src/database/query-parser/from-parser.js +17 -6
  19. package/src/database/query-parser/group-parser.js +21 -8
  20. package/src/database/record/index.js +5 -0
  21. package/src/database/record/relationships/base.js +18 -3
  22. package/src/database/table-data/index.js +198 -6
  23. package/src/environment-handlers/base.js +58 -0
  24. package/src/environment-handlers/browser.js +0 -24
  25. package/src/environment-handlers/node/cli/commands/generate/base-models.js +80 -0
  26. package/src/environment-handlers/node.js +6 -1
  27. package/src/initializer.js +4 -0
  28. package/src/logger.js +54 -2
  29. package/src/routes/base-route.js +25 -4
  30. package/src/routes/get-route.js +3 -1
  31. package/src/routes/namespace-route.js +3 -1
  32. package/src/routes/post-route.js +3 -1
  33. package/src/routes/resource-route.js +3 -1
  34. package/src/utils/backtrace-cleaner.js +10 -0
  35. package/src/database/drivers/mysql/connect-connection.js +0 -12
package/src/logger.js CHANGED
@@ -1,5 +1,10 @@
1
1
  import Configuration from "./configuration.js"
2
+ import restArgsError from "./utils/rest-args-error.js"
2
3
 
4
+ /**
5
+ * @param {string} message
6
+ * @returns {Promise<void>}
7
+ */
3
8
  function consoleLog(message) {
4
9
  return new Promise((resolve) => {
5
10
  if (process.stdout) {
@@ -10,6 +15,10 @@ function consoleLog(message) {
10
15
  })
11
16
  }
12
17
 
18
+ /**
19
+ * @param {string} message
20
+ * @returns {Promise<void>}
21
+ */
13
22
  function consoleError(message) {
14
23
  return new Promise((resolve) => {
15
24
  if (process.stderr) {
@@ -20,6 +29,10 @@ function consoleError(message) {
20
29
  })
21
30
  }
22
31
 
32
+ /**
33
+ * @param {string} message
34
+ * @returns {Promise<void>}
35
+ */
23
36
  function consoleWarn(message) {
24
37
  return new Promise((resolve) => {
25
38
  if (process.stderr) {
@@ -30,6 +43,9 @@ function consoleWarn(message) {
30
43
  })
31
44
  }
32
45
 
46
+ /**
47
+ * @param {Array} messages
48
+ */
33
49
  function functionOrMessages(messages) {
34
50
  if (messages.length === 1 && typeof messages[0] == "function") {
35
51
  messages = messages[0]()
@@ -38,6 +54,11 @@ function functionOrMessages(messages) {
38
54
  return messages
39
55
  }
40
56
 
57
+ /**
58
+ * Converts multiple message parts into a single string.
59
+ * @param {...any} messages - Parts to combine into a message
60
+ * @returns {string}
61
+ */
41
62
  function messagesToMessage(...messages) {
42
63
  let message = ""
43
64
 
@@ -59,8 +80,15 @@ function messagesToMessage(...messages) {
59
80
  }
60
81
 
61
82
  class Logger {
62
- constructor(object, args) {
63
- this._debug = args?.debug
83
+ /**
84
+ * @param {any} object
85
+ * @param {object} args
86
+ * @param {boolean} args.debug
87
+ */
88
+ constructor(object, {debug, ...restArgs} = {}) {
89
+ restArgsError(restArgs)
90
+
91
+ this._debug = debug
64
92
 
65
93
  if (typeof object == "string") {
66
94
  this._subject = object
@@ -85,20 +113,40 @@ class Logger {
85
113
  return this._configuration
86
114
  }
87
115
 
116
+ /**
117
+ * @param {...Parameters<typeof consoleLog>} messages - forwarded args
118
+ */
88
119
  async debug(...messages) {
89
120
  if (this._debug || this.getConfiguration()?.debug) {
90
121
  await this.log(...messages)
91
122
  }
92
123
  }
93
124
 
125
+ /**
126
+ * @param {...Parameters<typeof functionOrMessages>} messages - forwarded args
127
+ */
94
128
  async log(...messages) {
95
129
  await consoleLog(messagesToMessage(this._subject, ...functionOrMessages(messages)))
96
130
  }
97
131
 
132
+ /**
133
+ * @param {...Parameters<typeof functionOrMessages>} messages - forwarded args
134
+ */
98
135
  async error(...messages) {
99
136
  await consoleError(messagesToMessage(this._subject, ...functionOrMessages(messages)))
100
137
  }
101
138
 
139
+ /**
140
+ * @param {boolean} newValue
141
+ * @returns {void}
142
+ */
143
+ setDebug(newValue) {
144
+ this._debug = newValue
145
+ }
146
+
147
+ /**
148
+ * @param {...Parameters<typeof functionOrMessages>} messages - forwarded args
149
+ */
102
150
  async warn(...messages) {
103
151
  await consoleWarn(messagesToMessage(this._subject, ...functionOrMessages(messages)))
104
152
  }
@@ -106,6 +154,10 @@ class Logger {
106
154
 
107
155
  export {Logger}
108
156
 
157
+ /**
158
+ * @param {any} object
159
+ * @param {...Parameters<typeof functionOrMessages>} messages - forwarded args
160
+ */
109
161
  export default async function logger(object, ...messages) {
110
162
  const className = object.constructor.name
111
163
  const configuration = object.configuration || Configuration.current()
@@ -11,16 +11,28 @@ export function initBaseRoute() {
11
11
  VelociousBaseRoute = class VelociousBaseRoute {
12
12
  routes = []
13
13
 
14
- get(name, args) {
15
- const route = new GetRoute({name, args})
14
+ /**
15
+ * @param {string} name
16
+ */
17
+ get(name) {
18
+ const route = new GetRoute({name})
16
19
 
17
20
  this.routes.push(route)
18
21
  }
19
22
 
23
+ /**
24
+ * @interface
25
+ * @param {string} _path
26
+ */
20
27
  matchWithPath(_path) { // eslint-disable-line no-unused-vars
21
28
  throw new Error(`No 'matchWithPath' implemented on ${this.constructor.name}`)
22
29
  }
23
30
 
31
+ /**
32
+ * @param {string} name
33
+ * @param {function(NamespaceRoute) : void} callback
34
+ * @returns {void}
35
+ */
24
36
  namespace(name, callback) {
25
37
  const route = new NamespaceRoute({name})
26
38
 
@@ -31,12 +43,21 @@ export function initBaseRoute() {
31
43
  }
32
44
  }
33
45
 
34
- post(name, args) {
35
- const route = new PostRoute({name, args})
46
+ /**
47
+ * @param {string} name
48
+ * @returns {void}
49
+ */
50
+ post(name) {
51
+ const route = new PostRoute({name})
36
52
 
37
53
  this.routes.push(route)
38
54
  }
39
55
 
56
+ /**
57
+ * @param {string} name
58
+ * @param {function(ResourceRoute) : void} callback
59
+ * @returns {void}
60
+ */
40
61
  resources(name, callback) {
41
62
  const route = new ResourceRoute({name})
42
63
 
@@ -1,11 +1,13 @@
1
1
  import BaseRoute, {initBaseRoute} from "./base-route.js"
2
2
  import escapeStringRegexp from "escape-string-regexp"
3
+ import restArgsError from "../utils/rest-args-error.js"
3
4
 
4
5
  initBaseRoute()
5
6
 
6
7
  export default class VelociousRouteGetRoute extends BaseRoute {
7
- constructor({name}) {
8
+ constructor({name, ...restArgs}) {
8
9
  super()
10
+ restArgsError(restArgs)
9
11
  this.name = name
10
12
  this.regExp = new RegExp(`^(${escapeStringRegexp(name)})(.*)$`)
11
13
  }
@@ -1,11 +1,13 @@
1
+ import restArgsError from "../utils/rest-args-error.js"
1
2
  import BaseRoute, {initBaseRoute} from "./base-route.js"
2
3
  import escapeStringRegexp from "escape-string-regexp"
3
4
 
4
5
  initBaseRoute()
5
6
 
6
7
  export default class VelociousRouteNamespaceRoute extends BaseRoute {
7
- constructor({name}) {
8
+ constructor({name, ...restArgs}) {
8
9
  super()
10
+ restArgsError(restArgs)
9
11
  this.name = name
10
12
  this.regExp = new RegExp(`^(${escapeStringRegexp(name)})(.*)$`)
11
13
  }
@@ -1,11 +1,13 @@
1
1
  import BaseRoute, {initBaseRoute} from "./base-route.js"
2
2
  import escapeStringRegexp from "escape-string-regexp"
3
+ import restArgsError from "../utils/rest-args-error.js"
3
4
 
4
5
  initBaseRoute()
5
6
 
6
7
  export default class VelociousRoutePostRoute extends BaseRoute {
7
- constructor({name}) {
8
+ constructor({name, ...restArgs}) {
8
9
  super()
10
+ restArgsError(restArgs)
9
11
  this.name = name
10
12
  this.regExp = new RegExp(`^(${escapeStringRegexp(name)})(.*)$`)
11
13
  }
@@ -1,11 +1,13 @@
1
1
  import BaseRoute, {initBaseRoute} from "./base-route.js"
2
2
  import escapeStringRegexp from "escape-string-regexp"
3
+ import restArgsError from "../utils/rest-args-error.js"
3
4
 
4
5
  initBaseRoute()
5
6
 
6
7
  export default class VelociousRouteResourceRoute extends BaseRoute {
7
- constructor({name}) {
8
+ constructor({name, ...restArgs}) {
8
9
  super()
10
+ restArgsError(restArgs)
9
11
  this.name = name
10
12
  this.regExp = new RegExp(`^(${escapeStringRegexp(name)})(.*)$`)
11
13
  }
@@ -1,12 +1,22 @@
1
1
  export default class BacktraceCleaner {
2
+ /**
3
+ * @param {Error} error
4
+ * @returns {string}
5
+ */
2
6
  static getCleanedStack(error) {
3
7
  return new BacktraceCleaner(error).getCleanedStack()
4
8
  }
5
9
 
10
+ /**
11
+ * @param {Error} error
12
+ */
6
13
  constructor(error) {
7
14
  this.error = error
8
15
  }
9
16
 
17
+ /**
18
+ * @returns {string}
19
+ */
10
20
  getCleanedStack() {
11
21
  const backtrace = this.error.stack.split("\n")
12
22
 
@@ -1,12 +0,0 @@
1
- // Async function to connect a MySQL connection
2
- export default function connectConnection(connection) {
3
- return new Promise((resolve, reject) => {
4
- connection.connect((error) => {
5
- if (error) {
6
- reject(error)
7
- } else {
8
- resolve()
9
- }
10
- })
11
- })
12
- }