@jsreport/jsreport-core 3.6.1 → 3.8.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.
- package/README.md +18 -0
- package/index.js +1 -1
- package/lib/main/createDefaultLoggerFormat.js +6 -1
- package/lib/main/createNormalizeMetaLoggerFormat.js +19 -0
- package/lib/main/folders/moveBetweenFolders.js +244 -215
- package/lib/main/logger.js +25 -17
- package/lib/main/profiler.js +230 -86
- package/lib/main/reporter.js +8 -1
- package/lib/main/validateEntityName.js +6 -0
- package/lib/worker/render/executeEngine.js +12 -2
- package/lib/worker/render/profiler.js +8 -2
- package/lib/worker/render/render.js +1 -1
- package/lib/worker/sandbox/runInSandbox.js +3 -1
- package/package.json +13 -11
- package/test/extensions/validExtensions/listeners/jsreport.dontdiscover.config.js +9 -0
- package/test/extensions/validExtensions/listeners/main.js +51 -0
- package/test/extensions/validExtensions/listeners/worker.js +68 -0
- package/test/store/common.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsreport/jsreport-core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"description": "javascript based business reporting",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"report",
|
|
@@ -17,12 +17,19 @@
|
|
|
17
17
|
"name": "Jan Blaha",
|
|
18
18
|
"email": "jan.blaha@hotmail.com"
|
|
19
19
|
},
|
|
20
|
+
"maintainers": [
|
|
21
|
+
{
|
|
22
|
+
"name": "pofider",
|
|
23
|
+
"email": "jan.blaha@hotmail.com"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
20
26
|
"main": "index.js",
|
|
21
27
|
"files": [
|
|
22
28
|
"lib",
|
|
23
29
|
"index.js",
|
|
24
30
|
"test/store/common.js",
|
|
25
|
-
"test/blobStorage/common.js"
|
|
31
|
+
"test/blobStorage/common.js",
|
|
32
|
+
"test/extensions/validExtensions/listeners"
|
|
26
33
|
],
|
|
27
34
|
"scripts": {
|
|
28
35
|
"test": "mocha --timeout 5000 --recursive test --exit && standard",
|
|
@@ -32,8 +39,10 @@
|
|
|
32
39
|
"@babel/code-frame": "7.12.13",
|
|
33
40
|
"@babel/parser": "7.14.4",
|
|
34
41
|
"@babel/traverse": "7.12.9",
|
|
42
|
+
"@colors/colors": "1.5.0",
|
|
35
43
|
"@jsreport/advanced-workers": "1.2.3",
|
|
36
44
|
"@jsreport/mingo": "2.4.1",
|
|
45
|
+
"@jsreport/reap": "0.1.0",
|
|
37
46
|
"ajv": "6.12.6",
|
|
38
47
|
"app-root-path": "3.0.0",
|
|
39
48
|
"bytes": "3.1.2",
|
|
@@ -56,7 +65,6 @@
|
|
|
56
65
|
"nanoid": "3.2.0",
|
|
57
66
|
"nconf": "0.12.0",
|
|
58
67
|
"node.extend.without.arrays": "1.1.6",
|
|
59
|
-
"@jsreport/reap": "0.1.0",
|
|
60
68
|
"semver": "7.3.5",
|
|
61
69
|
"serializator": "1.0.2",
|
|
62
70
|
"stack-trace": "0.0.10",
|
|
@@ -64,8 +72,8 @@
|
|
|
64
72
|
"unset-value": "1.0.0",
|
|
65
73
|
"uuid": "8.3.2",
|
|
66
74
|
"vm2": "3.9.9",
|
|
67
|
-
"winston": "3.
|
|
68
|
-
"winston-transport": "4.
|
|
75
|
+
"winston": "3.8.1",
|
|
76
|
+
"winston-transport": "4.5.0"
|
|
69
77
|
},
|
|
70
78
|
"devDependencies": {
|
|
71
79
|
"mocha": "9.2.2",
|
|
@@ -77,12 +85,6 @@
|
|
|
77
85
|
"engines": {
|
|
78
86
|
"node": ">=16.11"
|
|
79
87
|
},
|
|
80
|
-
"maintainers": [
|
|
81
|
-
{
|
|
82
|
-
"name": "pofider",
|
|
83
|
-
"email": "jan.blaha@hotmail.com"
|
|
84
|
-
}
|
|
85
|
-
],
|
|
86
88
|
"standard": {
|
|
87
89
|
"env": {
|
|
88
90
|
"mocha": true
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
module.exports = (reporter, definition) => {
|
|
3
|
+
reporter.tests = reporter.tests || {}
|
|
4
|
+
reporter.tests.beforeRenderListeners = reporter.createListenerCollection()
|
|
5
|
+
reporter.tests.afterRenderListeners = reporter.createListenerCollection()
|
|
6
|
+
reporter.tests.validateRenderListeners = reporter.createListenerCollection()
|
|
7
|
+
reporter.tests.afterTemplatingEnginesExecutedListeners = reporter.createListenerCollection()
|
|
8
|
+
|
|
9
|
+
reporter.registerMainAction('test-beforeRender-listeners', async (data, req) => {
|
|
10
|
+
data.req = reporter.Request(data.req)
|
|
11
|
+
await reporter.tests.beforeRenderListeners.fire(data.req, data.res)
|
|
12
|
+
return { req: data.req, res: data.res }
|
|
13
|
+
})
|
|
14
|
+
reporter.registerMainAction('test-afterRender-listeners', async (data, req) => {
|
|
15
|
+
data.req = reporter.Request(data.req)
|
|
16
|
+
await reporter.tests.afterRenderListeners.fire(data.req, data.res)
|
|
17
|
+
return { req: data.req, res: data.res }
|
|
18
|
+
})
|
|
19
|
+
reporter.registerMainAction('test-validateRender-listeners', async (data, req) => {
|
|
20
|
+
data.req = reporter.Request(data.req)
|
|
21
|
+
await reporter.tests.validateRenderListeners.fire(data.req, data.res)
|
|
22
|
+
return { req: data.req, res: data.res }
|
|
23
|
+
})
|
|
24
|
+
reporter.registerMainAction('test-afterTemplatingEnginesExecuted-listeners', async (data, req) => {
|
|
25
|
+
data.req = reporter.Request(data.req)
|
|
26
|
+
await reporter.tests.afterTemplatingEnginesExecutedListeners.fire(data.req, data.res)
|
|
27
|
+
return { req: data.req, res: data.res }
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
let beforeRenderEval
|
|
31
|
+
reporter.tests.beforeRenderEval = (fn) => {
|
|
32
|
+
beforeRenderEval = fn
|
|
33
|
+
}
|
|
34
|
+
reporter.registerMainAction('test-beforeRenderEval', async (data, req) => {
|
|
35
|
+
if (beforeRenderEval == null) {
|
|
36
|
+
return
|
|
37
|
+
}
|
|
38
|
+
return beforeRenderEval.toString()
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
let afterRenderEval
|
|
42
|
+
reporter.tests.afterRenderEval = (fn) => {
|
|
43
|
+
afterRenderEval = fn
|
|
44
|
+
}
|
|
45
|
+
reporter.registerMainAction('test-afterRenderEval', async (data, req) => {
|
|
46
|
+
if (afterRenderEval == null) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
return afterRenderEval.toString()
|
|
50
|
+
})
|
|
51
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const extend = require('node.extend.without.arrays')
|
|
2
|
+
const vm = require('vm')
|
|
3
|
+
const path = require('path')
|
|
4
|
+
const process = require('process')
|
|
5
|
+
|
|
6
|
+
module.exports = (reporter, definition) => {
|
|
7
|
+
reporter.initializeListeners.add('test-listeners', () => {
|
|
8
|
+
reporter.beforeRenderListeners.add('listeners', async (req, res) => {
|
|
9
|
+
const result = await reporter.executeMainAction('test-beforeRender-listeners', { req, res }, req)
|
|
10
|
+
extend(true, req, result.req)
|
|
11
|
+
extend(true, res, result.res)
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
reporter.afterRenderListeners.add('listeners', async (req, res) => {
|
|
15
|
+
const result = await reporter.executeMainAction('test-afterRender-listeners', { req, res }, req)
|
|
16
|
+
extend(true, req, result.req)
|
|
17
|
+
extend(true, res, result.res)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
reporter.validateRenderListeners.add('listeners', async (req, res) => {
|
|
21
|
+
const result = await reporter.executeMainAction('test-validateRender-listeners', { req, res }, req)
|
|
22
|
+
extend(true, req, result.req)
|
|
23
|
+
extend(true, res, result.res)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
reporter.afterTemplatingEnginesExecutedListeners.add('listeners', async (req, res) => {
|
|
27
|
+
const result = await reporter.executeMainAction('test-afterTemplatingEnginesExecuted-listeners', { req, res }, req)
|
|
28
|
+
extend(true, req, result.req)
|
|
29
|
+
extend(true, res, result.res)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
const evalInWorker = (code, req, res) => {
|
|
33
|
+
const script = new vm.Script(`
|
|
34
|
+
;(function () {
|
|
35
|
+
return ${code}
|
|
36
|
+
})()
|
|
37
|
+
`)
|
|
38
|
+
|
|
39
|
+
return script.runInThisContext({
|
|
40
|
+
displayErrors: true
|
|
41
|
+
})(req, res, {
|
|
42
|
+
require: (m) => {
|
|
43
|
+
try {
|
|
44
|
+
return require(path.join(process.cwd(), 'node_modules', m))
|
|
45
|
+
} catch (e) {
|
|
46
|
+
// hack, make it working in monorepo as well as normal extension
|
|
47
|
+
return require(path.join(process.cwd(), '../../node_modules', m))
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
reporter
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
reporter.afterRenderListeners.add('eval-listeners', async (req, res) => {
|
|
55
|
+
const code = await reporter.executeMainAction('test-afterRenderEval', {}, req)
|
|
56
|
+
if (code) {
|
|
57
|
+
return evalInWorker(code, req, res)
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
reporter.beforeRenderListeners.insert(0, 'eval-listeners', async (req, res) => {
|
|
62
|
+
const code = await reporter.executeMainAction('test-beforeRenderEval', {}, req)
|
|
63
|
+
if (code) {
|
|
64
|
+
return evalInWorker(code, req, res)
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
}
|
package/test/store/common.js
CHANGED
|
@@ -228,7 +228,7 @@ function collectionTests (store, isInternal, runTransactions) {
|
|
|
228
228
|
const colName = !isInternal ? 'templates' : 'internalTemplates'
|
|
229
229
|
|
|
230
230
|
await getCollection(colName).insert({ name: '1', engine: 'none', recipe: 'a' })
|
|
231
|
-
await getCollection(colName).insert({ name: '2', engine: '
|
|
231
|
+
await getCollection(colName).insert({ name: '2', engine: 'test2', recipe: 'a' })
|
|
232
232
|
const res = await getCollection(colName).update({ recipe: 'a' }, { $set: { engine: 'test2' } })
|
|
233
233
|
res.should.be.eql(2)
|
|
234
234
|
})
|