@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsreport/jsreport-core",
3
- "version": "3.6.1",
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.3.3",
68
- "winston-transport": "4.4.0"
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,9 @@
1
+ module.exports = {
2
+ name: 'listeners',
3
+ main: 'main.js',
4
+ worker: 'worker.js',
5
+ dependencies: ['a', 'b', 'c', 'd', 'e', 'f'],
6
+ requires: {},
7
+ hasPublicPart: false,
8
+ directory: __dirname
9
+ }
@@ -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
+ }
@@ -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: 'none', recipe: 'a' })
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
  })