@jsreport/jsreport-core 3.1.2-test.1 → 3.1.2-test.2

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.
@@ -6,7 +6,7 @@ exports.getDefaultTempDirectory = () => {
6
6
  }
7
7
 
8
8
  exports.getDefaultRootDirectory = () => {
9
- return path.join(__dirname, '../../../../../')
9
+ return path.join(__dirname, '../../../../')
10
10
  }
11
11
 
12
12
  exports.getDefaultLoadConfig = () => {
@@ -435,6 +435,10 @@ class MainReporter extends Reporter {
435
435
  }
436
436
  }
437
437
 
438
+ generateRequestId () {
439
+ return generateRequestId()
440
+ }
441
+
438
442
  registerWorkersManagerFactory (workersManagerFactory) {
439
443
  this._workersManagerFactory = workersManagerFactory
440
444
  }
@@ -455,12 +459,12 @@ class MainReporter extends Reporter {
455
459
  clearInterval(this._reaperTimerRef)
456
460
  }
457
461
 
458
- await this.closeListeners.fire()
459
-
460
462
  if (this._workersManager) {
461
463
  await this._workersManager.close()
462
464
  }
463
465
 
466
+ await this.closeListeners.fire()
467
+
464
468
  if (this.documentStore) {
465
469
  await this.documentStore.close()
466
470
  }
@@ -6,7 +6,6 @@ const Folders = require('./folders')
6
6
  const createOrExtendError = require('./createError')
7
7
  const tempFilesHandler = require('./tempFilesHandler')
8
8
  const encryption = require('./encryption')
9
- const generateRequestId = require('../shared/generateRequestId')
10
9
 
11
10
  class Reporter extends EventEmitter {
12
11
  constructor (options) {
@@ -47,10 +46,6 @@ class Reporter extends EventEmitter {
47
46
  return createOrExtendError(message, options)
48
47
  }
49
48
 
50
- generateRequestId () {
51
- return generateRequestId()
52
- }
53
-
54
49
  /**
55
50
  * Ensures that the jsreport auto-cleanup temp directory (options.tempAutoCleanupDirectory) exists by doing a mkdir call
56
51
  *
@@ -10,51 +10,32 @@ const { nanoid } = require('nanoid')
10
10
 
11
11
  module.exports = (reporter) => {
12
12
  const cache = LRU(reporter.options.sandbox.cache || { max: 100 })
13
-
14
13
  reporter.templatingEngines = { cache }
15
-
16
14
  const executionFnParsedParamsMap = new Map()
17
15
 
18
- const templatingEnginesEvaluate = async (mainCall, { engine, content, helpers, data }, { entity, entitySet }, req) => {
19
- const engineImpl = reporter.extensionsManager.engines.find((e) => e.name === engine)
20
-
21
- if (!engine) {
22
- throw reporter.createError(`Engine '${engine}' not found. If this is a custom engine make sure it's properly installed from npm`, {
23
- statusCode: 400
24
- })
25
- }
26
-
27
- if (mainCall) {
28
- executionFnParsedParamsMap.set(req.context.id, new Map())
29
- }
30
-
31
- try {
32
- const res = await executeEngine({
33
- engine: engineImpl,
34
- content,
35
- helpers,
36
- systemHelpers: req.context.systemHelpers,
37
- data
38
- }, { handleErrors: false, entity, entitySet }, req)
39
-
40
- return res.content
41
- } finally {
42
- if (mainCall) {
43
- executionFnParsedParamsMap.delete(req.context.id)
44
- }
45
- }
46
- }
47
-
48
- reporter.templatingEngines.evaluate = (executionInfo, entityInfo, req) => templatingEnginesEvaluate(true, executionInfo, entityInfo, req)
49
-
50
16
  reporter.extendProxy((proxy, req, {
51
17
  runInSandbox,
52
18
  context,
53
19
  getTopLevelFunctions
54
20
  }) => {
55
21
  proxy.templatingEngines = {
56
- evaluate: async (executionInfo, entityInfo) => {
57
- return templatingEnginesEvaluate(false, executionInfo, entityInfo, req)
22
+ evaluate: async ({ engine, content, helpers, data }, { entity, entitySet }) => {
23
+ const engineImpl = reporter.extensionsManager.engines.find((e) => e.name === engine)
24
+
25
+ if (!engine) {
26
+ throw reporter.createError(`Engine '${engine}' not found. If this is a custom engine make sure it's properly installed from npm`, {
27
+ statusCode: 400
28
+ })
29
+ }
30
+
31
+ const res = await executeEngine({
32
+ engine: engineImpl,
33
+ content,
34
+ helpers,
35
+ systemHelpers: req.context.systemHelpers,
36
+ data
37
+ }, { handleErrors: false, entity, entitySet }, req)
38
+ return res.content
58
39
  }
59
40
  }
60
41
  })
@@ -84,13 +65,12 @@ module.exports = (reporter) => {
84
65
 
85
66
  async function executeEngine ({ engine, content, helpers, systemHelpers, data }, { handleErrors, entity, entitySet }, req) {
86
67
  let entityPath
87
-
88
68
  if (entity._id) {
89
69
  entityPath = await reporter.folders.resolveEntityPath(entity, entitySet, req)
90
70
  entityPath = entityPath.substring(0, entityPath.lastIndexOf('/'))
91
71
  }
92
72
 
93
- const joinedHelpers = systemHelpers + '\n' + (helpers || '')
73
+ const joinedHelpers = systemHelpers + '\n' + helpers
94
74
  const executionFnParsedParamsKey = `entity:${entity.shortid || 'anonymous'}:helpers:${joinedHelpers}`
95
75
 
96
76
  const executionFn = async ({ require, console, topLevelFunctions }) => {
@@ -3,13 +3,11 @@ const path = require('path')
3
3
 
4
4
  module.exports = (reporter) => {
5
5
  let helpersScript
6
-
7
- reporter.registerHelpersListeners.add('core-helpers', (req) => {
8
- return helpersScript
9
- })
10
-
11
- reporter.initializeListeners.add('core-helpers', async () => {
12
- helpersScript = await fs.readFile(path.join(__dirname, '../../static/helpers.js'), 'utf8')
6
+ reporter.beforeRenderListeners.add('core-helpers', async (req) => {
7
+ if (!helpersScript) {
8
+ helpersScript = await fs.readFile(path.join(__dirname, '../../static/helpers.js'), 'utf8')
9
+ }
10
+ req.context.systemHelpers += helpersScript + '\n'
13
11
  })
14
12
 
15
13
  reporter.extendProxy((proxy, req, { safeRequire }) => {
@@ -54,14 +54,6 @@ module.exports = (reporter) => {
54
54
  })
55
55
  }
56
56
 
57
- let helpersResults = await reporter.registerHelpersListeners.fire(request)
58
-
59
- helpersResults = helpersResults.filter((result) => {
60
- return result != null
61
- })
62
-
63
- request.context.systemHelpers = helpersResults.join('\n')
64
-
65
57
  const engineProfilerEvent = reporter.profiler.emit({
66
58
  type: 'operationStart',
67
59
  subtype: 'engine',
@@ -121,6 +113,7 @@ module.exports = (reporter) => {
121
113
 
122
114
  return async (req, parentReq) => {
123
115
  const request = Request(req, parentReq)
116
+ request.context.systemHelpers = ''
124
117
  const response = { meta: {} }
125
118
  let renderStartProfilerEvent
126
119
  try {
@@ -139,7 +132,6 @@ module.exports = (reporter) => {
139
132
 
140
133
  request.context.reportCounter = ++reportCounter
141
134
  request.context.startTimestamp = new Date().getTime()
142
- request.context.systemHelpers = ''
143
135
 
144
136
  if (parentReq == null) {
145
137
  reporter.requestModulesCache.set(request.context.rootId, Object.create(null))
@@ -26,7 +26,6 @@ class WorkerReporter extends Reporter {
26
26
  this._workerActions = new Map()
27
27
  this._registerRenderAction()
28
28
 
29
- this.registerHelpersListeners = this.createListenerCollection('registerHelpers')
30
29
  this.afterTemplatingEnginesExecutedListeners = this.createListenerCollection('afterTemplatingEnginesExecuted')
31
30
  this.validateRenderListeners = this.createListenerCollection('validateRender')
32
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsreport/jsreport-core",
3
- "version": "3.1.2-test.1",
3
+ "version": "3.1.2-test.2",
4
4
  "description": "javascript based business reporting",
5
5
  "keywords": [
6
6
  "report",