@volcanicminds/backend 2.0.3 → 2.1.0

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 (290) hide show
  1. package/README.md +8 -7
  2. package/dist/index.d.ts +7 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +161 -210
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/api/auth/controller/auth.d.ts +35 -0
  7. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -0
  8. package/dist/lib/api/auth/controller/auth.js +245 -333
  9. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  10. package/dist/lib/api/auth/routes.d.ts +90 -0
  11. package/dist/lib/api/auth/routes.d.ts.map +1 -0
  12. package/dist/lib/api/auth/routes.js +1 -2
  13. package/dist/lib/api/auth/routes.js.map +1 -1
  14. package/dist/lib/api/health/controller/health.d.ts +3 -0
  15. package/dist/lib/api/health/controller/health.d.ts.map +1 -0
  16. package/dist/lib/api/health/controller/health.js +1 -4
  17. package/dist/lib/api/health/controller/health.js.map +1 -1
  18. package/dist/lib/api/health/routes.d.ts +26 -0
  19. package/dist/lib/api/health/routes.d.ts.map +1 -0
  20. package/dist/lib/api/health/routes.js +1 -2
  21. package/dist/lib/api/health/routes.js.map +1 -1
  22. package/dist/lib/api/token/controller/token.d.ts +16 -0
  23. package/dist/lib/api/token/controller/token.d.ts.map +1 -0
  24. package/dist/lib/api/token/controller/token.js +69 -105
  25. package/dist/lib/api/token/controller/token.js.map +1 -1
  26. package/dist/lib/api/token/routes.d.ts +179 -0
  27. package/dist/lib/api/token/routes.d.ts.map +1 -0
  28. package/dist/lib/api/token/routes.js +1 -2
  29. package/dist/lib/api/token/routes.js.map +1 -1
  30. package/dist/lib/api/tool/controller/tool.d.ts +3 -0
  31. package/dist/lib/api/tool/controller/tool.d.ts.map +1 -0
  32. package/dist/lib/api/tool/controller/tool.js +8 -22
  33. package/dist/lib/api/tool/controller/tool.js.map +1 -1
  34. package/dist/lib/api/tool/routes.d.ts +26 -0
  35. package/dist/lib/api/tool/routes.d.ts.map +1 -0
  36. package/dist/lib/api/tool/routes.js +1 -2
  37. package/dist/lib/api/tool/routes.js.map +1 -1
  38. package/dist/lib/api/users/controller/user.d.ts +12 -0
  39. package/dist/lib/api/users/controller/user.d.ts.map +1 -0
  40. package/dist/lib/api/users/controller/user.js +59 -111
  41. package/dist/lib/api/users/controller/user.js.map +1 -1
  42. package/dist/lib/api/users/routes.d.ts +173 -0
  43. package/dist/lib/api/users/routes.d.ts.map +1 -0
  44. package/dist/lib/api/users/routes.js +1 -2
  45. package/dist/lib/api/users/routes.js.map +1 -1
  46. package/dist/lib/apollo/context.d.ts +6 -0
  47. package/dist/lib/apollo/context.d.ts.map +1 -0
  48. package/dist/lib/apollo/context.js +2 -16
  49. package/dist/lib/apollo/context.js.map +1 -1
  50. package/dist/lib/apollo/resolvers.d.ts +8 -0
  51. package/dist/lib/apollo/resolvers.d.ts.map +1 -0
  52. package/dist/lib/apollo/resolvers.js +1 -2
  53. package/dist/lib/apollo/resolvers.js.map +1 -1
  54. package/dist/lib/apollo/type-defs.d.ts +3 -0
  55. package/dist/lib/apollo/type-defs.d.ts.map +1 -0
  56. package/dist/lib/apollo/type-defs.js +1 -2
  57. package/dist/lib/apollo/type-defs.js.map +1 -1
  58. package/dist/lib/config/general.d.ts +12 -0
  59. package/dist/lib/config/general.d.ts.map +1 -0
  60. package/dist/lib/config/general.js +1 -2
  61. package/dist/lib/config/general.js.map +1 -1
  62. package/dist/lib/config/plugins.d.ts +25 -0
  63. package/dist/lib/config/plugins.d.ts.map +1 -0
  64. package/dist/lib/config/plugins.js +1 -2
  65. package/dist/lib/config/plugins.js.map +1 -1
  66. package/dist/lib/config/roles.d.ts +7 -0
  67. package/dist/lib/config/roles.d.ts.map +1 -0
  68. package/dist/lib/config/roles.js +1 -2
  69. package/dist/lib/config/roles.js.map +1 -1
  70. package/dist/lib/config/tracking.d.ts +10 -0
  71. package/dist/lib/config/tracking.d.ts.map +1 -0
  72. package/dist/lib/config/tracking.js +1 -2
  73. package/dist/lib/config/tracking.js.map +1 -1
  74. package/dist/lib/hooks/onError.d.ts +3 -0
  75. package/dist/lib/hooks/onError.d.ts.map +1 -0
  76. package/dist/lib/hooks/onError.js +2 -12
  77. package/dist/lib/hooks/onError.js.map +1 -1
  78. package/dist/lib/hooks/onRequest.d.ts +3 -0
  79. package/dist/lib/hooks/onRequest.d.ts.map +1 -0
  80. package/dist/lib/hooks/onRequest.js +24 -35
  81. package/dist/lib/hooks/onRequest.js.map +1 -1
  82. package/dist/lib/hooks/onResponse.d.ts +3 -0
  83. package/dist/lib/hooks/onResponse.d.ts.map +1 -0
  84. package/dist/lib/hooks/onResponse.js +2 -12
  85. package/dist/lib/hooks/onResponse.js.map +1 -1
  86. package/dist/lib/hooks/preHandler.d.ts +3 -0
  87. package/dist/lib/hooks/preHandler.d.ts.map +1 -0
  88. package/dist/lib/hooks/preHandler.js +3 -47
  89. package/dist/lib/hooks/preHandler.js.map +1 -1
  90. package/dist/lib/hooks/preSerialization.d.ts +3 -0
  91. package/dist/lib/hooks/preSerialization.d.ts.map +1 -0
  92. package/dist/lib/hooks/preSerialization.js +6 -53
  93. package/dist/lib/hooks/preSerialization.js.map +1 -1
  94. package/dist/lib/loader/general.d.ts +3 -0
  95. package/dist/lib/loader/general.d.ts.map +1 -0
  96. package/dist/lib/loader/general.js +15 -13
  97. package/dist/lib/loader/general.js.map +1 -1
  98. package/dist/lib/loader/hooks.d.ts +2 -0
  99. package/dist/lib/loader/hooks.d.ts.map +1 -0
  100. package/dist/lib/loader/hooks.js +11 -13
  101. package/dist/lib/loader/hooks.js.map +1 -1
  102. package/dist/lib/loader/plugins.d.ts +2 -0
  103. package/dist/lib/loader/plugins.d.ts.map +1 -0
  104. package/dist/lib/loader/plugins.js +11 -12
  105. package/dist/lib/loader/plugins.js.map +1 -1
  106. package/dist/lib/loader/roles.d.ts +3 -0
  107. package/dist/lib/loader/roles.d.ts.map +1 -0
  108. package/dist/lib/loader/roles.js +11 -12
  109. package/dist/lib/loader/roles.js.map +1 -1
  110. package/dist/lib/loader/router.d.ts +4 -0
  111. package/dist/lib/loader/router.d.ts.map +1 -0
  112. package/dist/lib/loader/router.js +68 -117
  113. package/dist/lib/loader/router.js.map +1 -1
  114. package/dist/lib/loader/schedules.d.ts +3 -0
  115. package/dist/lib/loader/schedules.d.ts.map +1 -0
  116. package/dist/lib/loader/schedules.js +18 -25
  117. package/dist/lib/loader/schedules.js.map +1 -1
  118. package/dist/lib/loader/schemas.d.ts +2 -0
  119. package/dist/lib/loader/schemas.d.ts.map +1 -0
  120. package/dist/lib/loader/schemas.js +10 -12
  121. package/dist/lib/loader/schemas.js.map +1 -1
  122. package/dist/lib/loader/tracking.d.ts +6 -0
  123. package/dist/lib/loader/tracking.d.ts.map +1 -0
  124. package/dist/lib/loader/tracking.js +17 -19
  125. package/dist/lib/loader/tracking.js.map +1 -1
  126. package/dist/lib/loader/translation.d.ts +2 -0
  127. package/dist/lib/loader/translation.d.ts.map +1 -0
  128. package/dist/lib/loader/translation.js +11 -10
  129. package/dist/lib/loader/translation.js.map +1 -1
  130. package/dist/lib/middleware/dispatchForgotPasswordLink.d.ts +3 -0
  131. package/dist/lib/middleware/dispatchForgotPasswordLink.d.ts.map +1 -0
  132. package/dist/lib/middleware/dispatchForgotPasswordLink.js +2 -16
  133. package/dist/lib/middleware/dispatchForgotPasswordLink.js.map +1 -1
  134. package/dist/lib/middleware/isAdmin.d.ts +3 -0
  135. package/dist/lib/middleware/isAdmin.d.ts.map +1 -0
  136. package/dist/lib/middleware/isAdmin.js +1 -4
  137. package/dist/lib/middleware/isAdmin.js.map +1 -1
  138. package/dist/lib/middleware/isAuthenticated.d.ts +3 -0
  139. package/dist/lib/middleware/isAuthenticated.d.ts.map +1 -0
  140. package/dist/lib/middleware/isAuthenticated.js +2 -6
  141. package/dist/lib/middleware/isAuthenticated.js.map +1 -1
  142. package/dist/lib/middleware/postAuth.d.ts +3 -0
  143. package/dist/lib/middleware/postAuth.d.ts.map +1 -0
  144. package/dist/lib/middleware/postAuth.js +2 -16
  145. package/dist/lib/middleware/postAuth.js.map +1 -1
  146. package/dist/lib/middleware/preAuth.d.ts +3 -0
  147. package/dist/lib/middleware/preAuth.d.ts.map +1 -0
  148. package/dist/lib/middleware/preAuth.js +1 -15
  149. package/dist/lib/middleware/preAuth.js.map +1 -1
  150. package/dist/lib/middleware/preForgotPasswordHandler.d.ts +3 -0
  151. package/dist/lib/middleware/preForgotPasswordHandler.d.ts.map +1 -0
  152. package/dist/lib/middleware/preForgotPasswordHandler.js +1 -15
  153. package/dist/lib/middleware/preForgotPasswordHandler.js.map +1 -1
  154. package/dist/lib/schedules/test.job.d.ts +4 -0
  155. package/dist/lib/schedules/test.job.d.ts.map +1 -0
  156. package/dist/lib/schedules/test.job.js +3 -18
  157. package/dist/lib/schedules/test.job.js.map +1 -1
  158. package/dist/lib/schemas/auth.d.ts +175 -0
  159. package/dist/lib/schemas/auth.d.ts.map +1 -0
  160. package/dist/lib/schemas/auth.js +9 -12
  161. package/dist/lib/schemas/auth.js.map +1 -1
  162. package/dist/lib/schemas/common.d.ts +81 -0
  163. package/dist/lib/schemas/common.d.ts.map +1 -0
  164. package/dist/lib/schemas/common.js +12 -12
  165. package/dist/lib/schemas/common.js.map +1 -1
  166. package/dist/lib/schemas/global.d.ts +29 -0
  167. package/dist/lib/schemas/global.d.ts.map +1 -0
  168. package/dist/lib/schemas/global.js +2 -5
  169. package/dist/lib/schemas/global.js.map +1 -1
  170. package/dist/lib/schemas/token.d.ts +68 -0
  171. package/dist/lib/schemas/token.d.ts.map +1 -0
  172. package/dist/lib/schemas/token.js +3 -6
  173. package/dist/lib/schemas/token.js.map +1 -1
  174. package/dist/lib/schemas/user.d.ts +120 -0
  175. package/dist/lib/schemas/user.d.ts.map +1 -0
  176. package/dist/lib/schemas/user.js +5 -8
  177. package/dist/lib/schemas/user.js.map +1 -1
  178. package/dist/lib/util/common.d.ts +5 -0
  179. package/dist/lib/util/common.d.ts.map +1 -0
  180. package/dist/lib/util/common.js +4 -8
  181. package/dist/lib/util/common.js.map +1 -1
  182. package/dist/lib/util/errors.d.ts +15 -0
  183. package/dist/lib/util/errors.d.ts.map +1 -0
  184. package/dist/lib/util/errors.js +7 -7
  185. package/dist/lib/util/errors.js.map +1 -1
  186. package/dist/lib/util/generate.d.ts +2 -0
  187. package/dist/lib/util/generate.d.ts.map +1 -0
  188. package/dist/lib/util/generate.js +2 -5
  189. package/dist/lib/util/generate.js.map +1 -1
  190. package/dist/lib/util/logger.d.ts +35 -0
  191. package/dist/lib/util/logger.d.ts.map +1 -0
  192. package/dist/lib/util/logger.js +8 -12
  193. package/dist/lib/util/logger.js.map +1 -1
  194. package/dist/lib/util/mark.d.ts +2 -0
  195. package/dist/lib/util/mark.d.ts.map +1 -0
  196. package/dist/lib/util/mark.js +2 -4
  197. package/dist/lib/util/mark.js.map +1 -1
  198. package/dist/lib/util/path.d.ts +2 -0
  199. package/dist/lib/util/path.d.ts.map +1 -0
  200. package/dist/lib/util/path.js +5 -5
  201. package/dist/lib/util/path.js.map +1 -1
  202. package/dist/lib/util/regexp.d.ts +12 -0
  203. package/dist/lib/util/regexp.d.ts.map +1 -0
  204. package/dist/lib/util/regexp.js +11 -14
  205. package/dist/lib/util/regexp.js.map +1 -1
  206. package/dist/lib/util/require.d.ts +3 -0
  207. package/dist/lib/util/require.d.ts.map +1 -0
  208. package/dist/lib/util/require.js +4 -0
  209. package/dist/lib/util/require.js.map +1 -0
  210. package/dist/lib/util/tracker.d.ts +4 -0
  211. package/dist/lib/util/tracker.d.ts.map +1 -0
  212. package/dist/lib/util/tracker.js +63 -86
  213. package/dist/lib/util/tracker.js.map +1 -1
  214. package/dist/lib/util/yn.d.ts +2 -0
  215. package/dist/lib/util/yn.d.ts.map +1 -0
  216. package/dist/lib/util/yn.js +1 -3
  217. package/dist/lib/util/yn.js.map +1 -1
  218. package/dist/server.d.ts +2 -0
  219. package/dist/server.d.ts.map +1 -0
  220. package/dist/server.js +1 -2
  221. package/dist/server.js.map +1 -1
  222. package/lib/api/auth/controller/auth.ts +1 -1
  223. package/lib/api/auth/routes.ts +1 -1
  224. package/lib/api/health/routes.ts +1 -1
  225. package/lib/api/token/routes.ts +1 -1
  226. package/lib/api/tool/routes.ts +1 -1
  227. package/lib/api/users/controller/user.ts +4 -3
  228. package/lib/api/users/routes.ts +1 -1
  229. package/lib/apollo/resolvers.ts +1 -1
  230. package/lib/config/general.ts +1 -3
  231. package/lib/config/plugins.ts +1 -3
  232. package/lib/config/roles.ts +1 -1
  233. package/lib/config/tracking.ts +1 -1
  234. package/lib/hooks/onError.ts +1 -1
  235. package/lib/hooks/onRequest.ts +8 -6
  236. package/lib/hooks/onResponse.ts +1 -1
  237. package/lib/hooks/preHandler.ts +2 -2
  238. package/lib/hooks/preSerialization.ts +2 -2
  239. package/lib/loader/general.ts +13 -9
  240. package/lib/loader/hooks.ts +5 -5
  241. package/lib/loader/plugins.ts +14 -10
  242. package/lib/loader/roles.ts +14 -9
  243. package/lib/loader/router.ts +7 -6
  244. package/lib/loader/schedules.ts +6 -6
  245. package/lib/loader/schemas.ts +6 -6
  246. package/lib/loader/tracking.ts +14 -9
  247. package/lib/loader/translation.ts +9 -14
  248. package/lib/schedules/test.job.ts +1 -1
  249. package/lib/schemas/common.ts +6 -3
  250. package/lib/util/common.ts +1 -1
  251. package/lib/util/generate.ts +1 -1
  252. package/lib/util/logger.ts +1 -1
  253. package/lib/util/mark.ts +1 -0
  254. package/lib/util/path.ts +6 -1
  255. package/lib/util/require.ts +3 -0
  256. package/lib/util/tracker.ts +1 -1
  257. package/package.json +24 -15
  258. package/.dockerignore +0 -6
  259. package/.mocharc.json +0 -3
  260. package/.nvmrc +0 -1
  261. package/.prettierignore +0 -5
  262. package/.prettierrc +0 -9
  263. package/DOCKER.md +0 -27
  264. package/Dockerfile +0 -24
  265. package/Dockerfile.prod +0 -33
  266. package/NPM.md +0 -24
  267. package/TODO.md +0 -14
  268. package/combine.js +0 -124
  269. package/dist/lib/locales/en.json +0 -12
  270. package/dist/lib/locales/it.json +0 -12
  271. package/dist/nodemon.json +0 -7
  272. package/dist/package-lock.json +0 -9787
  273. package/dist/package.json +0 -108
  274. package/dist/tsconfig.json +0 -32
  275. package/index.d.ts +0 -16
  276. package/index.ts +0 -410
  277. package/logo-dark.png +0 -0
  278. package/nodemon.json +0 -7
  279. package/server.ts +0 -5
  280. package/test/common/api.ts +0 -80
  281. package/test/common/bootstrap.ts +0 -33
  282. package/test/demo/demo.ts +0 -9
  283. package/test/demo/index.ts +0 -14
  284. package/test/e2e/index.ts +0 -14
  285. package/test/index.spec.ts +0 -20
  286. package/test/unit/index.ts +0 -14
  287. package/test/unit/semver.ts +0 -24
  288. package/test/unit/translation.ts +0 -77
  289. package/tsconfig.json +0 -40
  290. package/types/global.d.ts +0 -225
@@ -1,4 +1,4 @@
1
- module.exports = async (req, reply) => {
1
+ export default async (req, reply) => {
2
2
  let extraMessage: string = ''
3
3
  if (log.i && req.startedAt) {
4
4
  const elapsed: number = new Date().getTime() - req.startedAt.getTime()
@@ -1,5 +1,5 @@
1
- import * as tracking from '../util/tracker'
1
+ import * as tracking from '../util/tracker.js'
2
2
 
3
- module.exports = async (req, reply) => {
3
+ export default async (req, reply) => {
4
4
  tracking.initialize(req, reply)
5
5
  }
@@ -1,7 +1,7 @@
1
1
  import sizeof from 'object-sizeof'
2
- import * as tracking from '../util/tracker'
2
+ import * as tracking from '../util/tracker.js'
3
3
 
4
- module.exports = async (req, reply, payload) => {
4
+ export default async (req, reply, payload) => {
5
5
  if (log.t) {
6
6
  req.payloadSize = sizeof(req.body) + sizeof(req.params) + sizeof(req.query)
7
7
  reply.payloadSize = sizeof(payload)
@@ -1,8 +1,8 @@
1
- import { GeneralConfig } from '../../types/global'
2
- import { normalizePatterns } from '../util/path'
3
- const glob = require('glob')
1
+ import type { GeneralConfig } from '../../types/global.js'
2
+ import { normalizePatterns } from '../util/path.js'
3
+ import { globSync } from 'glob'
4
4
 
5
- export function load() {
5
+ export async function load() {
6
6
  const generalConfig: GeneralConfig = {
7
7
  name: 'general',
8
8
  enable: true,
@@ -15,10 +15,14 @@ export function load() {
15
15
  }
16
16
 
17
17
  const patterns = normalizePatterns(['..', 'config', 'general.{ts,js}'], ['src', 'config', 'general.{ts,js}'])
18
- patterns.forEach((pattern) => {
18
+
19
+ for (const pattern of patterns) {
19
20
  log.t && log.trace('Looking for ' + pattern)
20
- glob.sync(pattern).forEach((f: string) => {
21
- const config: GeneralConfig = require(f)
21
+ const files = globSync(pattern, { windowsPathsNoEscape: true })
22
+
23
+ for (const f of files) {
24
+ const module = await import(f)
25
+ const config: GeneralConfig = module.default || module
22
26
 
23
27
  if (config.name === generalConfig.name) {
24
28
  generalConfig.enable = config.enable
@@ -27,8 +31,8 @@ export function load() {
27
31
  ...(config.options || {})
28
32
  }
29
33
  }
30
- })
31
- })
34
+ }
35
+ }
32
36
 
33
37
  log.d && log.debug('General configuration loaded')
34
38
  return generalConfig
@@ -1,4 +1,7 @@
1
- import { normalizePatterns } from '../util/path'
1
+ import { normalizePatterns } from '../util/path.js'
2
+ import { globSync } from 'glob'
3
+ import path from 'path'
4
+ import require from '../util/require.js'
2
5
 
3
6
  const hooks = [
4
7
  'onRequest',
@@ -16,16 +19,13 @@ const hooks = [
16
19
  'preHandler'
17
20
  ]
18
21
 
19
- const glob = require('glob')
20
- const path = require('path')
21
-
22
22
  export function apply(server: any): void {
23
23
  const patterns = normalizePatterns(['..', 'hooks', '*.{ts,js}'], ['src', 'hooks', '*.{ts,js}'])
24
24
  const allHooks: any = hooks.reduce((acc, v) => ({ ...acc, [v]: [] as Function[] }), {})
25
25
 
26
26
  patterns.forEach((pattern) => {
27
27
  log.t && log.trace('Looking for ' + pattern)
28
- glob.sync(pattern).forEach((f: string) => {
28
+ globSync(pattern, { windowsPathsNoEscape: true }).forEach((f: string) => {
29
29
  const hookName = path.basename(f, path.extname(f))
30
30
  const fn = require(f)
31
31
 
@@ -1,22 +1,26 @@
1
- import { config } from 'dotenv'
2
- import { normalizePatterns } from '../util/path'
1
+ import { normalizePatterns } from '../util/path.js'
2
+ import { globSync } from 'glob'
3
3
 
4
- const glob = require('glob')
5
-
6
- export function load() {
4
+ export async function load() {
7
5
  const plugins: any = {}
8
6
 
9
7
  const patterns = normalizePatterns(['..', 'config', 'plugins.{ts,js}'], ['src', 'config', 'plugins.{ts,js}'])
10
- patterns.forEach((pattern) => {
8
+
9
+ for (const pattern of patterns) {
11
10
  log.t && log.trace('Looking for ' + pattern)
12
- glob.sync(pattern).forEach((f: string) => {
13
- const configPlugins = require(f)
11
+ const files = globSync(pattern, { windowsPathsNoEscape: true })
12
+
13
+ for (const f of files) {
14
+ const module = await import(f)
15
+ const configPlugins = module.default || module
16
+
14
17
  configPlugins.forEach((plugin) => {
15
18
  plugins[plugin.name] = plugin.enable ? plugin.options : false
16
19
  log.t && log.trace(`* Plugin ${plugin.name} ${plugin.enable ? 'enabled' : 'disabled'}`)
17
20
  })
18
- })
19
- })
21
+ }
22
+ }
23
+
20
24
  const enabledPulgins = Object.keys(plugins).filter((p) => !!plugins[p])
21
25
  log.d && log.debug(`Plugins loaded: ${enabledPulgins.length > 0 ? enabledPulgins.join(', ') : 0}`)
22
26
  return plugins
@@ -1,21 +1,26 @@
1
- import { Role, Roles } from '../../types/global'
2
- import { normalizePatterns } from '../util/path'
3
- const glob = require('glob')
1
+ import type { Role, Roles } from '../../types/global.js'
2
+ import { normalizePatterns } from '../util/path.js'
3
+ import { globSync } from 'glob'
4
4
 
5
- export function load() {
5
+ export async function load() {
6
6
  const roles: Roles = {}
7
7
 
8
8
  const patterns = normalizePatterns(['..', 'config', 'roles.{ts,js}'], ['src', 'config', 'roles.{ts,js}'])
9
- patterns.forEach((pattern) => {
9
+
10
+ for (const pattern of patterns) {
10
11
  log.t && log.trace('Looking for ' + pattern)
11
- glob.sync(pattern).forEach((f: string) => {
12
- const configRoles = require(f)
12
+ const files = globSync(pattern, { windowsPathsNoEscape: true })
13
+
14
+ for (const f of files) {
15
+ const module = await import(f)
16
+ const configRoles = module.default || module
13
17
 
14
18
  configRoles.forEach((role: Role) => {
15
19
  roles[role.code] = role
16
20
  })
17
- })
18
- })
21
+ }
22
+ }
23
+
19
24
  log.d && log.debug('Roles loaded: ' + Object.keys(roles).join(', '))
20
25
  return roles
21
26
  }
@@ -1,10 +1,11 @@
1
- import yn from '../util/yn'
2
- import { Role, Route, ConfiguredRoute, RouteConfig } from '../../types/global'
1
+ import yn from '../util/yn.js'
2
+ import type { Role, Route, ConfiguredRoute, RouteConfig } from '../../types/global.js'
3
3
  import { FastifyReply, FastifyRequest } from 'fastify'
4
- import { normalizePatterns } from '../util/path'
4
+ import { normalizePatterns } from '../util/path.js'
5
+ import { globSync } from 'glob'
6
+ import path from 'path'
7
+ import require from '../util/require.js'
5
8
 
6
- const glob = require('glob')
7
- const path = require('path')
8
9
  const methods = ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'PATCH', 'OPTIONS']
9
10
 
10
11
  export function load(): ConfiguredRoute[] {
@@ -14,7 +15,7 @@ export function load(): ConfiguredRoute[] {
14
15
 
15
16
  patterns.forEach((pattern) => {
16
17
  log.t && log.trace('Looking for ' + pattern)
17
- glob.sync(pattern).forEach((f: string, index: number, values: string[]) => {
18
+ globSync(pattern, { windowsPathsNoEscape: true }).forEach((f: string, index: number, values: string[]) => {
18
19
  const base = path.dirname(f)
19
20
  const dir = path.basename(base)
20
21
  const file = path.join(dir, path.basename(f))
@@ -1,10 +1,10 @@
1
1
  import _ from 'lodash'
2
- import { JobSchedule } from '../../types/global'
3
- import { normalizePatterns } from '../util/path'
2
+ import type { JobSchedule } from '../../types/global.js'
3
+ import { normalizePatterns } from '../util/path.js'
4
4
  import { CronJob, SimpleIntervalJob, Task, AsyncTask } from 'toad-scheduler'
5
-
6
- const glob = require('glob')
7
- const path = require('path')
5
+ import { globSync } from 'glob'
6
+ import path from 'path'
7
+ import require from '../util/require.js'
8
8
 
9
9
  export function load(): any[] {
10
10
  const patterns = normalizePatterns(['..', 'schedules', '*.job.{ts,js}'], ['src', 'schedules', '*.job.{ts,js}'])
@@ -33,7 +33,7 @@ export function load(): any[] {
33
33
 
34
34
  patterns.forEach((pattern) => {
35
35
  log.t && log.trace('Looking for ' + pattern)
36
- glob.sync(pattern).forEach((f: string) => {
36
+ globSync(pattern, { windowsPathsNoEscape: true }).forEach((f: string) => {
37
37
  log.t && log.trace(`* Add job schedule from ${f}`)
38
38
 
39
39
  const jobName = path.basename(f, path.extname(f))
@@ -1,7 +1,7 @@
1
- import { normalizePatterns } from '../util/path'
2
-
3
- const glob = require('glob')
4
- const path = require('path')
1
+ import { normalizePatterns } from '../util/path.js'
2
+ import { globSync } from 'glob'
3
+ import path from 'path'
4
+ import require from '../util/require.js'
5
5
 
6
6
  export function apply(server: any): void {
7
7
  const [baseSchemaPath, customSchemaPath] = normalizePatterns(
@@ -14,7 +14,7 @@ export function apply(server: any): void {
14
14
  let schemaCount = 0
15
15
 
16
16
  log.t && log.trace('Looking for custom schemas in ' + customSchemaPath)
17
- glob.sync(customSchemaPath).forEach((f: string) => {
17
+ globSync(customSchemaPath, { windowsPathsNoEscape: true }).forEach((f: string) => {
18
18
  try {
19
19
  const schemaClass = require(f)
20
20
  const schemaNames = Object.keys(schemaClass)
@@ -38,7 +38,7 @@ export function apply(server: any): void {
38
38
  })
39
39
 
40
40
  log.t && log.trace('Looking for base schemas in ' + baseSchemaPath)
41
- glob.sync(baseSchemaPath).forEach((f: string) => {
41
+ globSync(baseSchemaPath, { windowsPathsNoEscape: true }).forEach((f: string) => {
42
42
  try {
43
43
  const schemaFileName = path.basename(f)
44
44
  const schemaClass = require(f)
@@ -1,18 +1,23 @@
1
- import { TrackChanges, TrackChangesList, Data } from '../../types/global'
2
- import { normalizePatterns } from '../util/path'
3
- const glob = require('glob')
1
+ import type { TrackChanges, TrackChangesList, Data } from '../../types/global.js'
2
+ import { normalizePatterns } from '../util/path.js'
3
+ import { globSync } from 'glob'
4
4
 
5
5
  const METHODS = ['POST', 'PUT', 'DELETE']
6
6
 
7
- export function load() {
7
+ export async function load() {
8
8
  const trackChangesList: TrackChangesList = {}
9
9
  let trackConfig: Data = {}
10
10
 
11
11
  const patterns = normalizePatterns(['..', 'config', 'tracking.{ts,js}'], ['src', 'config', 'tracking.{ts,js}'])
12
- patterns.forEach((pattern) => {
12
+
13
+ for (const pattern of patterns) {
13
14
  log.t && log.trace('Looking for ' + pattern)
14
- glob.sync(pattern).forEach((f: string) => {
15
- const configTracking = require(f)
15
+ const files = globSync(pattern, { windowsPathsNoEscape: true })
16
+
17
+ for (const f of files) {
18
+ const module = await import(f)
19
+ const configTracking = module.default || module
20
+
16
21
  const { config, changes } = configTracking || {}
17
22
  const { enableAll = true, primaryKey = 'id', changeEntity = 'Change' } = config || {}
18
23
 
@@ -30,8 +35,8 @@ export function load() {
30
35
  trackChangesList[code] = tc
31
36
  }
32
37
  })
33
- })
34
- })
38
+ }
39
+ }
35
40
 
36
41
  const keys = Object.keys(trackChangesList) || []
37
42
  log.d && log.debug(`Tracking changes loaded: ${keys?.length || 0}`)
@@ -1,8 +1,11 @@
1
- const path = require('path')
2
- const glob = require('glob')
3
- const { I18n } = require('i18n')
1
+ import path from 'path'
2
+ import { globSync } from 'glob'
3
+ import { I18n } from 'i18n'
4
+ import { fileURLToPath } from 'url'
5
+ import require from '../util/require.js'
4
6
 
5
- // import { normalizePatterns } from '../util/path'
7
+ const __filename = fileURLToPath(import.meta.url)
8
+ const __dirname = path.dirname(__filename)
6
9
 
7
10
  export function load(): any {
8
11
  const i18n = new I18n({
@@ -25,7 +28,7 @@ export function load(): any {
25
28
 
26
29
  const basePath = path.join(__dirname, '..', 'locales', '*.json').replaceAll('\\', '/')
27
30
 
28
- glob.sync(basePath).forEach((f: string) => {
31
+ globSync(basePath, { windowsPathsNoEscape: true }).forEach((f: string) => {
29
32
  log.info('* Loading base dictionary %s', path.parse(f).base)
30
33
  try {
31
34
  const content = require(f)
@@ -37,7 +40,7 @@ export function load(): any {
37
40
 
38
41
  const addPath = path.join(process.cwd(), 'src', 'locales', '*.json').replaceAll('\\', '/')
39
42
 
40
- glob.sync(addPath).forEach((f: string) => {
43
+ globSync(addPath, { windowsPathsNoEscape: true }).forEach((f: string) => {
41
44
  log.info('* Loading additional dictionary %s', path.parse(f).base)
42
45
  try {
43
46
  const content = require(f)
@@ -48,14 +51,6 @@ export function load(): any {
48
51
  })
49
52
 
50
53
  i18n.setLocale(i18n.defaultLocale || 'en')
51
- // let test1 = i18n.__('greeting.formal')
52
- // let test2 = i18n.__('hello')
53
- // let test3 = i18n.__('greeting.placeholder.formal', 'UGO')
54
- // let test4 = i18n.__('greeting.placeholder.formalize:Buondì %s', 'UGO')
55
- // let test5 = i18n.__('greeting.formal')
56
- // let test6 = i18n.__({ phrase: 'greeting.formal', locale: 'it' })
57
- // let test7 = i18n.__({ phrase: 'greeting.placeholder.formal', locale: 'it' }, 'UGO')
58
- // i18n.setLocale(i18n.defaultLocale || 'en')
59
54
  return i18n
60
55
  }
61
56
 
@@ -1,4 +1,4 @@
1
- import { JobSchedule } from '../../types/global'
1
+ import type { JobSchedule } from '../../types/global.js'
2
2
 
3
3
  export const schedule: JobSchedule = {
4
4
  active: false,
@@ -27,7 +27,8 @@ export const onlyIdSchema = {
27
27
  nullable: true,
28
28
  properties: {
29
29
  id: { type: 'string', description: 'Entity id' }
30
- }
30
+ },
31
+ required: ['id']
31
32
  }
32
33
 
33
34
  export const onlyCodeSchema = {
@@ -36,7 +37,8 @@ export const onlyCodeSchema = {
36
37
  nullable: true,
37
38
  properties: {
38
39
  code: { type: 'string', description: 'Code' }
39
- }
40
+ },
41
+ required: ['code']
40
42
  }
41
43
 
42
44
  export const onlyPasswordSchema = {
@@ -45,7 +47,8 @@ export const onlyPasswordSchema = {
45
47
  nullable: true,
46
48
  properties: {
47
49
  password: { type: 'string', description: 'Password' }
48
- }
50
+ },
51
+ required: ['password']
49
52
  }
50
53
 
51
54
  export const blockBodySchema = {
@@ -1,5 +1,5 @@
1
1
  import { FastifyRequest } from 'fastify'
2
- import { Data } from '../../types/global'
2
+ import type { Data } from '../../types/global.js'
3
3
 
4
4
  export function getData(req: FastifyRequest): Data {
5
5
  if (!req) return {}
@@ -1,4 +1,4 @@
1
- const { customAlphabet } = require('nanoid')
1
+ import { customAlphabet } from 'nanoid'
2
2
  const nanoid = customAlphabet('AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789')
3
3
 
4
4
  export function newAuthCode() {
@@ -12,7 +12,7 @@
12
12
  // log.trace('test log test log test log')
13
13
 
14
14
  import pino from 'pino'
15
- import yn from './yn'
15
+ import yn from './yn.js'
16
16
 
17
17
  const logLevels = ['fatal', 'error', 'warn', 'info', 'debug', 'trace']
18
18
 
package/lib/util/mark.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import require from './require.js'
1
2
  const pkg = require('root-require')('package.json')
2
3
 
3
4
  /**
package/lib/util/path.ts CHANGED
@@ -1,4 +1,9 @@
1
- const path = require('path')
1
+ import path from 'path'
2
+ import { fileURLToPath } from 'url'
3
+
4
+ const __filename = fileURLToPath(import.meta.url)
5
+ const __dirname = path.dirname(__filename)
6
+
2
7
  export function normalizePatterns(path1: Array<string>, path2: Array<string>): Array<string> {
3
8
  // replaceAll is needed for windows
4
9
  return [
@@ -0,0 +1,3 @@
1
+ import { createRequire } from 'module'
2
+ const require = createRequire(import.meta.url)
3
+ export default require
@@ -1,5 +1,5 @@
1
1
  import dayjs from 'dayjs'
2
- import { FastifyRequest, FastifyReply } from '../../types/global'
2
+ import type { FastifyRequest, FastifyReply } from '../../types/global.js'
3
3
 
4
4
  export async function initialize(req: FastifyRequest, reply: FastifyReply) {
5
5
  if (req.server['dataBaseManager'].isImplemented()) {
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@volcanicminds/backend",
3
- "version": "2.0.3",
3
+ "version": "2.1.0",
4
+ "type": "module",
4
5
  "codename": "rome",
5
6
  "license": "MIT",
6
7
  "description": "The volcanic (minds) backend",
@@ -27,23 +28,32 @@
27
28
  "rate limit",
28
29
  "jest"
29
30
  ],
30
- "main": "dist/index",
31
- "typings": "dist/index",
31
+ "main": "dist/index.js",
32
+ "module": "dist/index.js",
33
+ "types": "dist/index.d.ts",
34
+ "sideEffects": false,
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "import": "./dist/index.js",
39
+ "require": "./dist/index.js"
40
+ }
41
+ },
42
+ "files": [
43
+ "dist",
44
+ "lib"
45
+ ],
32
46
  "scripts": {
33
- "clean": "rm -rf dist esm",
47
+ "clean": "rm -rf dist",
34
48
  "prebuild": "npm run clean",
35
- "build:esm": "tsc --target es2018 --outDir esm",
36
- "build:cjs": "tsc --target es2015 --module commonjs --outDir dist",
37
- "build": "npm run build:esm && npm run build:cjs",
38
- "compile": "npm run build",
49
+ "build": "tsc",
39
50
  "preprod": "npm run build",
40
51
  "prod": "cd dist && node server.js",
41
- "server": "cd dist && node server.js",
42
- "start": "ts-node server.ts",
43
- "dev": "nodemon --exec \"ts-node\" server.ts",
52
+ "start": "tsx server.ts",
53
+ "dev": "node --import tsx/esm --watch server.ts",
44
54
  "test": "npm run test:full",
45
- "test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha ./test/index.spec.ts -t 100000",
46
- "reset": "npm install && npm update && npm run compile",
55
+ "test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha --loader=tsx ./test/index.spec.ts -t 100000",
56
+ "reset": "npm install && npm update && npm run build",
47
57
  "upgrade-deps": "npx npm-check-updates -u",
48
58
  "combine": "node combine.js"
49
59
  },
@@ -81,9 +91,8 @@
81
91
  "cross-env": "^10.1.0",
82
92
  "expect": "^30.2.0",
83
93
  "mocha": "^11.7.5",
84
- "nodemon": "^3.1.10",
85
94
  "npm-upgrade": "^3.1.2",
86
- "ts-node": "^10.9.2",
95
+ "tsx": "^4.19.2",
87
96
  "typescript": "^5.9.3"
88
97
  },
89
98
  "repository": {
package/.dockerignore DELETED
@@ -1,6 +0,0 @@
1
- .git
2
- dist
3
- esm
4
- test
5
- node_modules
6
- **/node_modules
package/.mocharc.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "loader": "ts-node/esm"
3
- }
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- v24.11.0
package/.prettierignore DELETED
@@ -1,5 +0,0 @@
1
- node_modules
2
-
3
- # Ignore artifacts:
4
- build
5
- coverage
package/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "semi": false,
3
- "singleQuote": true,
4
- "useTabs": false,
5
- "bracketSpacing": true,
6
- "trailingComma": "none",
7
- "tabWidth": 2,
8
- "printWidth": 120
9
- }
package/DOCKER.md DELETED
@@ -1,27 +0,0 @@
1
- # Docker
2
-
3
- try to use these to run the app in a docker node:16-alpine image:
4
-
5
- ```js
6
-
7
- // easy
8
- docker build -t volcanic-backend .
9
- docker run -dp 2230:2230 -it volcanic-backend
10
-
11
- // prod
12
- docker build -f Dockerfile.prod -t volcanic-backend-prod .
13
- docker run -dp 2230:2230 -it volcanic-backend-prod
14
-
15
- // detached mode with autoremove when stopped
16
- docker run --rm -dp 2230:2230 -it volcanic-backend
17
-
18
- // attached mode with autoremove when stopped
19
- docker run --rm -p 2230:2230 -it volcanic-backend
20
-
21
- // remove
22
- docker image rm volcanic-backend
23
-
24
- // prune all
25
- docker system prune --all
26
-
27
- ```
package/Dockerfile DELETED
@@ -1,24 +0,0 @@
1
- FROM --platform=linux/amd64 node:18-alpine AS builder
2
-
3
- # Create app directory
4
- WORKDIR /usr/src/app
5
-
6
- # Install app dependencies
7
- COPY package*.json ./
8
- COPY lib lib/
9
-
10
- RUN npm install
11
-
12
- # Bundle app source
13
- COPY . .
14
-
15
- FROM --platform=linux/amd64 node:18-alpine
16
- LABEL version="0.1.0"
17
- LABEL description="Volcanic Backend"
18
- LABEL maintainer="Developers <developers@volcanicminds.com>"
19
-
20
- WORKDIR /usr/src/app
21
- COPY --from=builder /usr/src/app .
22
-
23
- EXPOSE 2230
24
- CMD [ "npm", "run start" ]
package/Dockerfile.prod DELETED
@@ -1,33 +0,0 @@
1
- FROM --platform=linux/amd64 node:18-alpine AS builder
2
-
3
- # Create app directory
4
- WORKDIR /usr/src/app
5
-
6
- # Install app dependencies
7
- COPY package*.json ./
8
- COPY lib lib/
9
-
10
- RUN npm install \
11
- --prefer-offline \
12
- --non-interactive
13
-
14
- # Bundle app source
15
- COPY . .
16
-
17
- RUN npm run compile && \
18
- rm -rf node_modules && \
19
- npm install \
20
- --prefer-offline \
21
- --non-interactive \
22
- --production
23
-
24
- FROM --platform=linux/amd64 node:18-alpine
25
- LABEL version="0.1.0"
26
- LABEL description="Volcanic Backend"
27
- LABEL maintainer="Developers <developers@volcanicminds.com>"
28
-
29
- WORKDIR /usr/src/app
30
- COPY --from=builder /usr/src/app .
31
-
32
- EXPOSE 2230
33
- CMD [ "npm", "run server" ]
package/NPM.md DELETED
@@ -1,24 +0,0 @@
1
- # NPM
2
-
3
- [more info](https://zellwk.com/blog/publish-to-npm/)
4
-
5
- ## how to publish
6
-
7
- ```ruby
8
- npm install npm@latest -g
9
- npm login
10
- npm init --scope=volcanicminds
11
- npm publish --access public
12
- ```
13
-
14
- ## local linking
15
-
16
- ```ruby
17
- npm link
18
- npm link "@volcanicminds/backend"
19
- ```
20
-
21
- ```ruby
22
- npm unlink
23
- npm unlink "@volcanicminds/backend"
24
- ```