@volcanicminds/backend 2.2.6 → 2.2.8
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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -51
- package/dist/index.js.map +1 -1
- package/dist/lib/api/auth/controller/auth.d.ts +10 -0
- package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
- package/dist/lib/api/auth/controller/auth.js +26 -4
- package/dist/lib/api/auth/controller/auth.js.map +1 -1
- package/dist/lib/api/token/controller/token.d.ts +1 -1
- package/dist/lib/api/token/controller/token.d.ts.map +1 -1
- package/dist/lib/api/token/controller/token.js +7 -5
- package/dist/lib/api/token/controller/token.js.map +1 -1
- package/dist/lib/api/users/controller/user.d.ts +2 -2
- package/dist/lib/api/users/controller/user.d.ts.map +1 -1
- package/dist/lib/api/users/controller/user.js +14 -4
- package/dist/lib/api/users/controller/user.js.map +1 -1
- package/dist/lib/apollo/resolvers.d.ts +1 -1
- package/dist/lib/apollo/resolvers.d.ts.map +1 -1
- package/dist/lib/apollo/resolvers.js +1 -1
- package/dist/lib/apollo/resolvers.js.map +1 -1
- package/dist/lib/hooks/onError.d.ts +1 -1
- package/dist/lib/hooks/onError.d.ts.map +1 -1
- package/dist/lib/hooks/onError.js +5 -3
- package/dist/lib/hooks/onError.js.map +1 -1
- package/dist/lib/hooks/onRequest.d.ts.map +1 -1
- package/dist/lib/hooks/onRequest.js +18 -2
- package/dist/lib/hooks/onRequest.js.map +1 -1
- package/dist/lib/hooks/onResponse.d.ts.map +1 -1
- package/dist/lib/hooks/onResponse.js +9 -1
- package/dist/lib/hooks/onResponse.js.map +1 -1
- package/dist/lib/loader/general.js +4 -2
- package/dist/lib/loader/general.js.map +1 -1
- package/dist/lib/loader/hooks.d.ts.map +1 -1
- package/dist/lib/loader/hooks.js +8 -4
- package/dist/lib/loader/hooks.js.map +1 -1
- package/dist/lib/loader/plugins.d.ts.map +1 -1
- package/dist/lib/loader/plugins.js +6 -3
- package/dist/lib/loader/plugins.js.map +1 -1
- package/dist/lib/loader/roles.js +4 -2
- package/dist/lib/loader/roles.js.map +1 -1
- package/dist/lib/loader/router.d.ts.map +1 -1
- package/dist/lib/loader/router.js +31 -16
- package/dist/lib/loader/router.js.map +1 -1
- package/dist/lib/loader/schedules.d.ts.map +1 -1
- package/dist/lib/loader/schedules.js +19 -10
- package/dist/lib/loader/schedules.js.map +1 -1
- package/dist/lib/loader/schemas.d.ts.map +1 -1
- package/dist/lib/loader/schemas.js +20 -10
- package/dist/lib/loader/schemas.js.map +1 -1
- package/dist/lib/loader/tracking.d.ts.map +1 -1
- package/dist/lib/loader/tracking.js +6 -3
- package/dist/lib/loader/tracking.js.map +1 -1
- package/dist/lib/loader/translation.d.ts.map +1 -1
- package/dist/lib/loader/translation.js.map +1 -1
- package/dist/lib/middleware/isAdmin.d.ts.map +1 -1
- package/dist/lib/middleware/isAdmin.js +2 -1
- package/dist/lib/middleware/isAdmin.js.map +1 -1
- package/dist/lib/middleware/isAuthenticated.d.ts.map +1 -1
- package/dist/lib/middleware/isAuthenticated.js +3 -2
- package/dist/lib/middleware/isAuthenticated.js.map +1 -1
- package/dist/lib/middleware/preAuth.d.ts +1 -1
- package/dist/lib/middleware/preAuth.d.ts.map +1 -1
- package/dist/lib/middleware/preAuth.js +1 -1
- package/dist/lib/middleware/preAuth.js.map +1 -1
- package/dist/lib/middleware/preForgotPasswordHandler.d.ts +1 -1
- package/dist/lib/middleware/preForgotPasswordHandler.d.ts.map +1 -1
- package/dist/lib/middleware/preForgotPasswordHandler.js +1 -1
- package/dist/lib/middleware/preForgotPasswordHandler.js.map +1 -1
- package/dist/lib/schemas/auth.d.ts +3 -0
- package/dist/lib/schemas/auth.d.ts.map +1 -1
- package/dist/lib/schemas/auth.js +1 -0
- package/dist/lib/schemas/auth.js.map +1 -1
- package/dist/lib/util/common.d.ts.map +1 -1
- package/dist/lib/util/common.js.map +1 -1
- package/dist/lib/util/errors.d.ts.map +1 -1
- package/dist/lib/util/errors.js.map +1 -1
- package/dist/lib/util/logger.js +1 -1
- package/dist/lib/util/logger.js.map +1 -1
- package/dist/lib/util/mark.d.ts.map +1 -1
- package/dist/lib/util/mark.js +34 -17
- package/dist/lib/util/mark.js.map +1 -1
- package/dist/lib/util/regexp.d.ts.map +1 -1
- package/dist/lib/util/regexp.js +3 -3
- package/dist/lib/util/regexp.js.map +1 -1
- package/dist/lib/util/tracker.d.ts +2 -2
- package/dist/lib/util/tracker.d.ts.map +1 -1
- package/dist/lib/util/tracker.js +6 -4
- package/dist/lib/util/tracker.js.map +1 -1
- package/dist/lib/util/yn.d.ts.map +1 -1
- package/dist/lib/util/yn.js.map +1 -1
- package/dist/server.js.map +1 -1
- package/lib/api/auth/controller/auth.ts +36 -4
- package/lib/api/token/controller/token.ts +7 -5
- package/lib/api/users/controller/user.ts +17 -4
- package/lib/apollo/resolvers.ts +2 -1
- package/lib/hooks/onError.ts +4 -3
- package/lib/hooks/onRequest.ts +21 -14
- package/lib/hooks/onResponse.ts +10 -4
- package/lib/loader/general.ts +2 -2
- package/lib/loader/hooks.ts +6 -4
- package/lib/loader/plugins.ts +4 -3
- package/lib/loader/roles.ts +2 -2
- package/lib/loader/router.ts +21 -24
- package/lib/loader/schedules.ts +23 -26
- package/lib/loader/schemas.ts +12 -10
- package/lib/loader/tracking.ts +4 -3
- package/lib/loader/translation.ts +2 -0
- package/lib/middleware/isAdmin.ts +2 -1
- package/lib/middleware/isAuthenticated.ts +3 -2
- package/lib/middleware/preAuth.ts +1 -1
- package/lib/middleware/preForgotPasswordHandler.ts +1 -1
- package/lib/schemas/auth.ts +1 -0
- package/lib/util/common.ts +1 -0
- package/lib/util/errors.ts +1 -0
- package/lib/util/logger.ts +1 -1
- package/lib/util/mark.ts +18 -17
- package/lib/util/regexp.ts +3 -3
- package/lib/util/tracker.ts +6 -4
- package/lib/util/yn.ts +1 -0
- package/package.json +11 -2
package/lib/loader/schedules.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import _ from 'lodash'
|
|
2
3
|
import type { JobSchedule } from '../../types/global.js'
|
|
3
4
|
import { normalizePatterns } from '../util/path.js'
|
|
@@ -11,55 +12,50 @@ export function load(): any[] {
|
|
|
11
12
|
const jobs: any = []
|
|
12
13
|
|
|
13
14
|
const jobScheduleDefaults: JobSchedule = {
|
|
14
|
-
active: false,
|
|
15
|
-
type: 'interval',
|
|
16
|
-
async: true,
|
|
17
|
-
preventOverrun: true,
|
|
15
|
+
active: false,
|
|
16
|
+
type: 'interval',
|
|
17
|
+
async: true,
|
|
18
|
+
preventOverrun: true,
|
|
18
19
|
|
|
19
|
-
cron: {
|
|
20
|
-
// expression: null // required if type = 'cron', use cron syntax (if not specified cron will be disabled)
|
|
21
|
-
// timezone: null // optional, like "Europe/Rome" (to test)
|
|
22
|
-
},
|
|
20
|
+
cron: {},
|
|
23
21
|
|
|
24
22
|
interval: {
|
|
25
|
-
days: 0,
|
|
26
|
-
hours: 0,
|
|
27
|
-
minutes: 0,
|
|
28
|
-
seconds: 0,
|
|
29
|
-
milliseconds: 0,
|
|
30
|
-
runImmediately: false
|
|
23
|
+
days: 0,
|
|
24
|
+
hours: 0,
|
|
25
|
+
minutes: 0,
|
|
26
|
+
seconds: 0,
|
|
27
|
+
milliseconds: 0,
|
|
28
|
+
runImmediately: false
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
|
|
34
32
|
patterns.forEach((pattern) => {
|
|
35
|
-
log.t
|
|
33
|
+
if (log.t) log.trace('Looking for ' + pattern)
|
|
36
34
|
globSync(pattern, { windowsPathsNoEscape: true }).forEach((f: string) => {
|
|
37
|
-
log.t
|
|
35
|
+
if (log.t) log.trace(`* Add job schedule from ${f}`)
|
|
38
36
|
|
|
39
37
|
const jobName = path.basename(f, path.extname(f))
|
|
40
|
-
|
|
38
|
+
const { job, schedule: s } = require(f)
|
|
41
39
|
|
|
42
40
|
let isLoadedAndEnabled = false
|
|
43
41
|
if (s && s.active) {
|
|
44
42
|
isLoadedAndEnabled = true
|
|
45
43
|
|
|
46
|
-
// apply defaults
|
|
47
|
-
|
|
48
44
|
let schedule = _.cloneDeep(jobScheduleDefaults)
|
|
49
45
|
schedule = _.merge(schedule, s)
|
|
50
46
|
|
|
51
47
|
if (!job || typeof job !== 'function') {
|
|
52
|
-
log.t
|
|
48
|
+
if (log.t) log.error(`* Job ${jobName} `)
|
|
53
49
|
isLoadedAndEnabled = false
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
if (!schedule.type || !['cron', 'interval'].includes(schedule.type)) {
|
|
57
|
-
log.t
|
|
53
|
+
if (log.t) log.error(`* Job ${jobName}: schedule.type must be cron or interval`)
|
|
58
54
|
isLoadedAndEnabled = false
|
|
59
55
|
}
|
|
60
56
|
|
|
61
57
|
if (schedule.type === 'cron' && !schedule.cron?.expression) {
|
|
62
|
-
log.t
|
|
58
|
+
if (log.t) log.error(`* Job ${jobName}: schedule.cron.expression not defined`)
|
|
63
59
|
isLoadedAndEnabled = false
|
|
64
60
|
}
|
|
65
61
|
|
|
@@ -68,24 +64,25 @@ export function load(): any[] {
|
|
|
68
64
|
const totalIntervalMs = milliseconds + 1000 * (seconds + 60 * (minutes + 60 * (hours + 24 * days)))
|
|
69
65
|
|
|
70
66
|
if (totalIntervalMs < 1000) {
|
|
71
|
-
log.t
|
|
67
|
+
if (log.t) log.error(`* Job ${jobName}: schedule.interval must have a total greater or equal to 1s`)
|
|
72
68
|
isLoadedAndEnabled = false
|
|
73
69
|
}
|
|
74
70
|
}
|
|
75
71
|
|
|
76
|
-
isLoadedAndEnabled
|
|
72
|
+
if (isLoadedAndEnabled) {
|
|
77
73
|
jobs.push({
|
|
78
74
|
jobName,
|
|
79
75
|
schedule,
|
|
80
76
|
job
|
|
81
77
|
})
|
|
78
|
+
}
|
|
82
79
|
}
|
|
83
80
|
|
|
84
|
-
log.t
|
|
81
|
+
if (log.t) log.trace(`* Job schedule ${jobName} ${isLoadedAndEnabled ? 'enabled' : 'disabled'}`)
|
|
85
82
|
})
|
|
86
83
|
})
|
|
87
84
|
|
|
88
|
-
log.d
|
|
85
|
+
if (log.d) log.debug(`Schedule Jobs loaded: ${jobs?.length || 0}`)
|
|
89
86
|
return jobs
|
|
90
87
|
}
|
|
91
88
|
|
package/lib/loader/schemas.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import _ from 'lodash'
|
|
2
3
|
import { normalizePatterns } from '../util/path.js'
|
|
3
4
|
import { globSync } from 'glob'
|
|
@@ -13,7 +14,7 @@ export async function apply(server: any): Promise<void> {
|
|
|
13
14
|
const customSchemaIds = new Set()
|
|
14
15
|
let schemaCount = 0
|
|
15
16
|
|
|
16
|
-
log.t
|
|
17
|
+
if (log.t) log.trace('Looking for custom schemas in ' + customSchemaPath)
|
|
17
18
|
const customFiles = globSync(customSchemaPath, { windowsPathsNoEscape: true })
|
|
18
19
|
|
|
19
20
|
for (const f of customFiles) {
|
|
@@ -31,11 +32,11 @@ export async function apply(server: any): Promise<void> {
|
|
|
31
32
|
}
|
|
32
33
|
})
|
|
33
34
|
} catch (e) {
|
|
34
|
-
log.w
|
|
35
|
+
if (log.w) log.warn(`Could not load custom schema file: ${f}`, e)
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
log.t
|
|
39
|
+
if (log.t) log.trace('Looking for base schemas in ' + baseSchemaPath)
|
|
39
40
|
const baseFiles = globSync(baseSchemaPath, { windowsPathsNoEscape: true })
|
|
40
41
|
|
|
41
42
|
for (const f of baseFiles) {
|
|
@@ -65,31 +66,32 @@ export async function apply(server: any): Promise<void> {
|
|
|
65
66
|
customSchema.required = mergedRequired
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
log.d
|
|
69
|
+
if (log.d) log.debug(`* Schema [${baseSchema.$id}] deeply merged with core definition`)
|
|
70
|
+
if (log.w) log.warn(`* Schema [${baseSchema.$id}] overrided with custom definition`)
|
|
69
71
|
}
|
|
70
72
|
} else {
|
|
71
|
-
log.trace(`*
|
|
73
|
+
log.trace(`* Schema [${baseSchema.$id}] from ${schemaFileName} registeerd`)
|
|
72
74
|
server.addSchema(baseSchema)
|
|
73
75
|
schemaCount++
|
|
74
76
|
}
|
|
75
77
|
} else if (name !== 'default') {
|
|
76
|
-
log.w
|
|
78
|
+
if (log.w) log.warn(`* Schema with no $id found in ${schemaFileName} (export ${name}), cannot be registered`)
|
|
77
79
|
}
|
|
78
80
|
})
|
|
79
81
|
} catch (e) {
|
|
80
|
-
log.w
|
|
82
|
+
if (log.w) log.warn(`Could not load base schema file: ${f}`, e)
|
|
81
83
|
}
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
customSchemas.forEach((schema) => {
|
|
85
|
-
log.trace(`*
|
|
87
|
+
log.trace(`* Custom schema [${schema.$id}] registered`)
|
|
86
88
|
try {
|
|
87
89
|
server.addSchema(schema)
|
|
88
90
|
schemaCount++
|
|
89
91
|
} catch (e: any) {
|
|
90
|
-
log.e
|
|
92
|
+
if (log.e) log.error(`Error registering schema ${schema.$id}: ${e.message}`)
|
|
91
93
|
}
|
|
92
94
|
})
|
|
93
95
|
|
|
94
|
-
log.d
|
|
96
|
+
if (log.d) log.debug(`Schemas loaded: ${schemaCount} referenceable by $ref`)
|
|
95
97
|
}
|
package/lib/loader/tracking.ts
CHANGED
|
@@ -11,7 +11,7 @@ export async function load() {
|
|
|
11
11
|
const patterns = normalizePatterns(['..', 'config', 'tracking.{ts,js}'], ['src', 'config', 'tracking.{ts,js}'])
|
|
12
12
|
|
|
13
13
|
for (const pattern of patterns) {
|
|
14
|
-
log.t
|
|
14
|
+
if (log.t) log.trace('Looking for ' + pattern)
|
|
15
15
|
const files = globSync(pattern, { windowsPathsNoEscape: true })
|
|
16
16
|
|
|
17
17
|
for (const f of files) {
|
|
@@ -23,7 +23,7 @@ export async function load() {
|
|
|
23
23
|
|
|
24
24
|
trackConfig = { ...trackConfig, ...config }
|
|
25
25
|
|
|
26
|
-
enableAll
|
|
26
|
+
if (enableAll) {
|
|
27
27
|
changes.forEach((change) => {
|
|
28
28
|
const tc: TrackChanges = { primaryKey: primaryKey, changeEntity: changeEntity, ...change } as TrackChanges
|
|
29
29
|
const code = getCodeBy(tc.method, tc.path)
|
|
@@ -35,11 +35,12 @@ export async function load() {
|
|
|
35
35
|
trackChangesList[code] = tc
|
|
36
36
|
}
|
|
37
37
|
})
|
|
38
|
+
}
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
const keys = Object.keys(trackChangesList) || []
|
|
42
|
-
log.d
|
|
43
|
+
if (log.d) log.debug(`Tracking changes loaded: ${keys?.length || 0}`)
|
|
43
44
|
return { tracking: trackChangesList, trackingConfig: trackConfig }
|
|
44
45
|
}
|
|
45
46
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import { FastifyReply, FastifyRequest } from 'fastify'
|
|
2
3
|
|
|
3
4
|
export function preHandler(req: FastifyRequest, res: FastifyReply, done: any) {
|
|
@@ -8,7 +9,7 @@ export function preHandler(req: FastifyRequest, res: FastifyReply, done: any) {
|
|
|
8
9
|
|
|
9
10
|
throw new Error('User without this privilege')
|
|
10
11
|
} catch (err) {
|
|
11
|
-
log.e
|
|
12
|
+
if (log.e) log.error(`Upps, something just happened ${err}`)
|
|
12
13
|
res.code(403).send(new Error('User without this privilege'))
|
|
13
14
|
}
|
|
14
15
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import { FastifyReply, FastifyRequest } from 'fastify'
|
|
2
3
|
|
|
3
4
|
export function preHandler(req: FastifyRequest, res: FastifyReply, done: any) {
|
|
4
5
|
try {
|
|
5
|
-
if (
|
|
6
|
+
if (req.user?.getId()) {
|
|
6
7
|
return done()
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
throw new Error('Unauthorized')
|
|
10
11
|
} catch (err) {
|
|
11
|
-
log.e
|
|
12
|
+
if (log.e) log.error(`Upps, something just happened ${err}`)
|
|
12
13
|
return res.code(401).send(new Error('Unauthorized')) // must be authorized first
|
|
13
14
|
}
|
|
14
15
|
}
|
package/lib/schemas/auth.ts
CHANGED
package/lib/util/common.ts
CHANGED
package/lib/util/errors.ts
CHANGED
package/lib/util/logger.ts
CHANGED
package/lib/util/mark.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import require from './require.js'
|
|
2
3
|
const pkg = require('root-require')('package.json')
|
|
3
4
|
|
|
@@ -6,21 +7,21 @@ const pkg = require('root-require')('package.json')
|
|
|
6
7
|
*/
|
|
7
8
|
|
|
8
9
|
export function print(logg: any = log): void {
|
|
9
|
-
logg.i
|
|
10
|
-
logg.i
|
|
11
|
-
logg.i
|
|
12
|
-
logg.i
|
|
13
|
-
logg.i
|
|
14
|
-
logg.i
|
|
15
|
-
logg.i
|
|
16
|
-
logg.t
|
|
17
|
-
logg.i
|
|
18
|
-
logg.i
|
|
19
|
-
logg.i
|
|
20
|
-
logg.i
|
|
21
|
-
logg.t
|
|
22
|
-
logg.t
|
|
23
|
-
logg.t
|
|
24
|
-
logg.t
|
|
25
|
-
logg.t
|
|
10
|
+
if (logg.i) logg.info('Ciao')
|
|
11
|
+
if (logg.i) logg.info(` ,--. ,--. `)
|
|
12
|
+
if (logg.i) logg.info(`.--. ,--,---.| |,---.,--,--,--,--\\\`--',---. `)
|
|
13
|
+
if (logg.i) logg.info(` \\ '' | .-. | / .--' ,-. | ,--/ .--' `)
|
|
14
|
+
if (logg.i) logg.info(` \\ /' '-' | \\ \`--\\ '-' | || | \\ \`--. `)
|
|
15
|
+
if (logg.i) logg.info(` \`--' \`---'\`--'\`---'\`--\`--\`--''--\`--'\`---' `)
|
|
16
|
+
if (logg.i) logg.info('')
|
|
17
|
+
if (logg.t) logg.trace(`Package ${pkg.name}`)
|
|
18
|
+
if (logg.i) logg.info(`License ${pkg.license}`)
|
|
19
|
+
if (logg.i) logg.info(`Version ${pkg.version}`)
|
|
20
|
+
if (logg.i) logg.info(`Codename ${pkg.codename}`)
|
|
21
|
+
if (logg.i) logg.info(`Environment ${process.env.NODE_ENV}`)
|
|
22
|
+
if (logg.t) logg.trace(`Platform ${process.platform} ${process.arch}`)
|
|
23
|
+
if (logg.t) logg.trace(`Root path ${process.cwd()}`)
|
|
24
|
+
if (logg.t) logg.trace(`Node ${process.version}`)
|
|
25
|
+
if (logg.t) logg.trace(`Release ${JSON.stringify(process.release)}`)
|
|
26
|
+
if (logg.t) logg.trace(`Versions ${JSON.stringify(process.versions)}`)
|
|
26
27
|
}
|
package/lib/util/regexp.ts
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export const username = /(?=^.{3,33}$)^[a-z][a-z0-9]*[._-]?[a-z0-9]+$/gi
|
|
6
6
|
export const emailAlt =
|
|
7
|
-
/^(([^<>()
|
|
7
|
+
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
8
8
|
|
|
9
9
|
/*
|
|
10
10
|
* email can have multiple words
|
|
11
11
|
* email can use . - or + for smart labeling
|
|
12
12
|
*/
|
|
13
|
-
export const email = /^\w+([
|
|
13
|
+
export const email = /^\w+([.+-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/
|
|
14
14
|
|
|
15
15
|
/*
|
|
16
16
|
* password must contain 1 number (0-9)
|
|
@@ -20,7 +20,7 @@ export const email = /^\w+([\.+-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
|
|
|
20
20
|
* password is 8-64 characters with no space
|
|
21
21
|
*/
|
|
22
22
|
export const password =
|
|
23
|
-
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%&*()-_
|
|
23
|
+
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%&*()-_=+[\]{}|;:'",.<>?^])[A-Za-z\d!@#$%&*()-_=+[\]{}|;:'",.<>?^]{8,}$/
|
|
24
24
|
export const zipCode = /(^\d{5}$)|(^\d{5}-\d{4}$)/
|
|
25
25
|
export const taxCodePersona =
|
|
26
26
|
/^[a-zA-Z]{6}[0-9]{2}[abcdehlmprstABCDEHLMPRST]{1}[0-9]{2}([a-zA-Z]{1}[0-9]{3})[a-zA-Z]{1}$/
|
package/lib/util/tracker.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import dayjs from 'dayjs'
|
|
2
3
|
import type { FastifyRequest, FastifyReply } from '../../types/global.js'
|
|
3
4
|
|
|
4
|
-
export async function initialize(req: FastifyRequest,
|
|
5
|
+
export async function initialize(req: FastifyRequest, _reply: FastifyReply) {
|
|
5
6
|
if (req.server['dataBaseManager'].isImplemented()) {
|
|
6
7
|
const tc = getTrackingConfigIfEnabled(req)
|
|
7
8
|
const allData = { ...req.parameters(), ...req.data() }
|
|
@@ -11,7 +12,8 @@ export async function initialize(req: FastifyRequest, reply: FastifyReply) {
|
|
|
11
12
|
if (allData && tc.entity && tc.primaryKey && tc.primaryKey in allData) {
|
|
12
13
|
const key = allData[tc.primaryKey]
|
|
13
14
|
req.trackingData = await req.server['dataBaseManager'].retrieveBy(tc.entity, key)
|
|
14
|
-
log.
|
|
15
|
+
if (log.t)
|
|
16
|
+
log.trace(`Tracking changes: found id ${req.trackingData ? req.trackingData[tc.primaryKey] : null}`)
|
|
15
17
|
}
|
|
16
18
|
} catch (error) {
|
|
17
19
|
log.error(`Tracking changes: error on ${tc.code}`)
|
|
@@ -21,7 +23,7 @@ export async function initialize(req: FastifyRequest, reply: FastifyReply) {
|
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
export async function track(req: FastifyRequest,
|
|
26
|
+
export async function track(req: FastifyRequest, _reply: FastifyReply, payload: any) {
|
|
25
27
|
if (req.server['dataBaseManager'].isImplemented()) {
|
|
26
28
|
const tc = getTrackingConfigIfEnabled(req)
|
|
27
29
|
if (tc) {
|
|
@@ -66,7 +68,7 @@ export async function track(req: FastifyRequest, reply: FastifyReply, payload: a
|
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
if (addChange) {
|
|
69
|
-
log.trace(`Tracking changes: add ${changeEntity} for ${entity}, ${id}, ${userId}, ${status}`)
|
|
71
|
+
if (log.t) log.trace(`Tracking changes: add ${changeEntity} for ${entity}, ${id}, ${userId}, ${status}`)
|
|
70
72
|
await req.server['dataBaseManager'].addChange(entity, id, status, userId, contents, changeEntity)
|
|
71
73
|
}
|
|
72
74
|
} catch (error) {
|
package/lib/util/yn.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volcanicminds/backend",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"codename": "rome",
|
|
6
6
|
"license": "MIT",
|
|
@@ -55,6 +55,10 @@
|
|
|
55
55
|
"test:full": "cross-env PORT=2231 NODE_ENV=memory BROWSER=false mocha --loader=tsx ./test/index.spec.ts -t 100000",
|
|
56
56
|
"reset": "npm install && npm update && npm run build",
|
|
57
57
|
"upgrade-deps": "npx npm-check-updates -u",
|
|
58
|
+
"lint": "eslint .",
|
|
59
|
+
"lint:fix": "eslint . --fix",
|
|
60
|
+
"type-check": "tsc --noEmit",
|
|
61
|
+
"check-all": "npm run lint && npm run type-check",
|
|
58
62
|
"combine": "node combine.js"
|
|
59
63
|
},
|
|
60
64
|
"dependencies": {
|
|
@@ -87,13 +91,18 @@
|
|
|
87
91
|
"toad-scheduler": "^3.1.0"
|
|
88
92
|
},
|
|
89
93
|
"devDependencies": {
|
|
94
|
+
"@eslint/js": "^9.39.1",
|
|
90
95
|
"@types/mocha": "^10.0.10",
|
|
96
|
+
"@types/semver": "^7.7.1",
|
|
91
97
|
"cross-env": "^10.1.0",
|
|
98
|
+
"eslint": "^9.39.1",
|
|
92
99
|
"expect": "^30.2.0",
|
|
100
|
+
"globals": "^16.5.0",
|
|
93
101
|
"mocha": "^11.7.5",
|
|
94
102
|
"npm-upgrade": "^3.1.2",
|
|
95
103
|
"tsx": "^4.19.2",
|
|
96
|
-
"typescript": "^5.9.3"
|
|
104
|
+
"typescript": "^5.9.3",
|
|
105
|
+
"typescript-eslint": "^8.48.0"
|
|
97
106
|
},
|
|
98
107
|
"repository": {
|
|
99
108
|
"type": "git",
|