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

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 (81) hide show
  1. package/LICENSE +166 -166
  2. package/README.md +310 -298
  3. package/index.js +29 -29
  4. package/lib/main/blobStorage/blobStorage.js +53 -52
  5. package/lib/main/blobStorage/inMemoryProvider.js +27 -27
  6. package/lib/main/blobStorage/mainActions.js +24 -24
  7. package/lib/main/createDefaultLoggerFormat.js +17 -17
  8. package/lib/main/defaults.js +14 -14
  9. package/lib/main/extensions/discover.js +20 -20
  10. package/lib/main/extensions/extensionsManager.js +264 -264
  11. package/lib/main/extensions/fileUtils.js +56 -56
  12. package/lib/main/extensions/findVersion.js +49 -49
  13. package/lib/main/extensions/locationCache.js +103 -103
  14. package/lib/main/extensions/sorter.js +10 -10
  15. package/lib/main/extensions/validateMinimalVersion.js +50 -50
  16. package/lib/main/folders/cascadeFolderRemove.js +25 -25
  17. package/lib/main/folders/getEntitiesInFolder.js +53 -53
  18. package/lib/main/folders/index.js +42 -42
  19. package/lib/main/folders/moveBetweenFolders.js +354 -354
  20. package/lib/main/folders/validateDuplicatedName.js +107 -107
  21. package/lib/main/folders/validateReservedName.js +53 -53
  22. package/lib/main/logger.js +254 -244
  23. package/lib/main/migration/resourcesToAssets.js +230 -230
  24. package/lib/main/migration/xlsxTemplatesToAssets.js +128 -128
  25. package/lib/main/monitoring.js +92 -91
  26. package/lib/main/optionsLoad.js +231 -237
  27. package/lib/main/optionsSchema.js +237 -237
  28. package/lib/main/profiler.js +13 -1
  29. package/lib/main/reporter.js +589 -579
  30. package/lib/main/request.js +21 -0
  31. package/lib/main/schemaValidator.js +252 -252
  32. package/lib/main/settings.js +154 -154
  33. package/lib/main/store/checkDuplicatedId.js +27 -27
  34. package/lib/main/store/collection.js +329 -329
  35. package/lib/main/store/documentStore.js +469 -469
  36. package/lib/main/store/mainActions.js +28 -28
  37. package/lib/main/store/memoryStoreProvider.js +99 -99
  38. package/lib/main/store/queue.js +48 -48
  39. package/lib/main/store/referenceUtils.js +251 -251
  40. package/lib/main/store/setupValidateId.js +43 -43
  41. package/lib/main/store/setupValidateShortid.js +71 -71
  42. package/lib/main/store/transaction.js +69 -69
  43. package/lib/main/store/typeUtils.js +180 -180
  44. package/lib/main/templates.js +34 -34
  45. package/lib/main/validateEntityName.js +62 -62
  46. package/lib/shared/createError.js +36 -36
  47. package/lib/shared/encryption.js +114 -114
  48. package/lib/shared/folders/index.js +11 -11
  49. package/lib/shared/folders/normalizeEntityPath.js +15 -15
  50. package/lib/shared/folders/resolveEntityFromPath.js +88 -88
  51. package/lib/shared/folders/resolveEntityPath.js +46 -46
  52. package/lib/shared/folders/resolveFolderFromPath.js +38 -38
  53. package/lib/shared/generateRequestId.js +4 -4
  54. package/lib/shared/listenerCollection.js +169 -169
  55. package/lib/shared/normalizeMetaFromLogs.js +30 -30
  56. package/lib/shared/reporter.js +128 -123
  57. package/lib/shared/request.js +64 -64
  58. package/lib/shared/tempFilesHandler.js +81 -81
  59. package/lib/shared/templates.js +82 -82
  60. package/lib/static/helpers.js +33 -33
  61. package/lib/worker/blobStorage.js +34 -34
  62. package/lib/worker/defaultProxyExtend.js +46 -46
  63. package/lib/worker/documentStore.js +49 -49
  64. package/lib/worker/extensionsManager.js +17 -17
  65. package/lib/worker/logger.js +48 -48
  66. package/lib/worker/render/diff.js +138 -138
  67. package/lib/worker/render/executeEngine.js +232 -207
  68. package/lib/worker/render/htmlRecipe.js +10 -10
  69. package/lib/worker/render/moduleHelper.js +45 -43
  70. package/lib/worker/render/noneEngine.js +12 -12
  71. package/lib/worker/render/profiler.js +162 -158
  72. package/lib/worker/render/render.js +202 -205
  73. package/lib/worker/render/resolveReferences.js +60 -60
  74. package/lib/worker/reporter.js +197 -191
  75. package/lib/worker/sandbox/runInSandbox.js +64 -12
  76. package/lib/worker/sandbox/safeSandbox.js +829 -828
  77. package/lib/worker/templates.js +80 -78
  78. package/lib/worker/workerHandler.js +55 -54
  79. package/package.json +91 -92
  80. package/test/blobStorage/common.js +25 -21
  81. package/test/store/common.js +1449 -1449
package/index.js CHANGED
@@ -1,29 +1,29 @@
1
- const path = require('path')
2
- const winston = require('winston')
3
- const MainReporter = require('./lib/main/reporter')
4
- const createDefaultLoggerFormat = require('./lib/main/createDefaultLoggerFormat')
5
- const createListenerCollection = require('./lib/shared/listenerCollection')
6
- const Request = require('./lib/shared/request')
7
-
8
- module.exports = function (options, defaults) {
9
- options = options || {}
10
-
11
- // when jsreport-core is loaded from ESM, module.parent does not exists
12
- if (options.parentModuleDirectory == null && module.parent) {
13
- options.parentModuleDirectory = path.dirname(module.parent.filename)
14
- }
15
-
16
- return new MainReporter(options, defaults)
17
- }
18
-
19
- module.exports.Reporter = MainReporter
20
- module.exports.Request = Request
21
- module.exports.createListenerCollection = createListenerCollection
22
- module.exports.loggerFormat = winston.format
23
- module.exports.createDefaultLoggerFormat = createDefaultLoggerFormat
24
-
25
- module.exports.tests = {
26
- documentStore: () => require('./test/store/common.js'),
27
- blobStorage: () => require('./test/blobStorage/common.js'),
28
- listeners: () => require('./test/extensions/validExtensions/listeners/jsreport.config')
29
- }
1
+ const path = require('path')
2
+ const winston = require('winston')
3
+ const MainReporter = require('./lib/main/reporter')
4
+ const createDefaultLoggerFormat = require('./lib/main/createDefaultLoggerFormat')
5
+ const createListenerCollection = require('./lib/shared/listenerCollection')
6
+ const Request = require('./lib/shared/request')
7
+
8
+ module.exports = function (options, defaults) {
9
+ options = options || {}
10
+
11
+ // when jsreport-core is loaded from ESM, module.parent does not exists
12
+ if (options.parentModuleDirectory == null && module.parent) {
13
+ options.parentModuleDirectory = path.dirname(module.parent.filename)
14
+ }
15
+
16
+ return new MainReporter(options, defaults)
17
+ }
18
+
19
+ module.exports.Reporter = MainReporter
20
+ module.exports.Request = Request
21
+ module.exports.createListenerCollection = createListenerCollection
22
+ module.exports.loggerFormat = winston.format
23
+ module.exports.createDefaultLoggerFormat = createDefaultLoggerFormat
24
+
25
+ module.exports.tests = {
26
+ documentStore: () => require('./test/store/common.js'),
27
+ blobStorage: () => require('./test/blobStorage/common.js'),
28
+ listeners: () => require('./test/extensions/validExtensions/listeners/jsreport.config')
29
+ }
@@ -1,52 +1,53 @@
1
- module.exports = (reporter, options) => {
2
- let provider
3
-
4
- return {
5
- async read (blobName, req) {
6
- const r = await provider.read(blobName, req)
7
- if (r == null) {
8
- throw reporter.createError(`Blob ${blobName} wasn't found`, {
9
- statusCode: 404
10
- })
11
- }
12
- return r
13
- },
14
-
15
- write (blobName, buffer, req) {
16
- return provider.write(blobName, buffer, req)
17
- },
18
-
19
- async remove (blobName, req) {
20
- return provider.remove(blobName)
21
- },
22
-
23
- async append (blobName, buffer, req) {
24
- if (!provider.append) {
25
- let existingBuf = Buffer.from([])
26
- try {
27
- existingBuf = await provider.read(blobName, req)
28
- } catch (e) {
29
- // so far blob storage throws when blob doesnt exit
30
- }
31
- return provider.write(blobName, existingBuf ? Buffer.concat([existingBuf, buffer]) : buffer, req)
32
- }
33
- return provider.append(blobName, buffer, req)
34
- },
35
-
36
- async init () {
37
- if (provider.init) {
38
- return provider.init()
39
- }
40
- },
41
-
42
- drop () {
43
- if (provider.drop) {
44
- return provider.drop()
45
- }
46
- },
47
-
48
- registerProvider (p) {
49
- provider = p
50
- }
51
- }
52
- }
1
+ module.exports = (reporter, options) => {
2
+ let provider
3
+
4
+ return {
5
+ async read (blobName, req) {
6
+ const r = await provider.read(blobName, req)
7
+ if (r == null) {
8
+ throw reporter.createError(`Blob ${blobName} wasn't found`, {
9
+ statusCode: 404
10
+ })
11
+ }
12
+ return r
13
+ },
14
+
15
+ write (blobName, buffer, req) {
16
+ return provider.write(blobName, buffer, req)
17
+ },
18
+
19
+ async remove (blobName, req) {
20
+ return provider.remove(blobName)
21
+ },
22
+
23
+ async append (blobName, buffer, req) {
24
+ if (!provider.append) {
25
+ let existingBuf = Buffer.from([])
26
+ try {
27
+ existingBuf = await provider.read(blobName, req)
28
+ await provider.remove(blobName, req)
29
+ } catch (e) {
30
+ // so far blob storage throws when blob doesnt exit
31
+ }
32
+ return provider.write(blobName, existingBuf ? Buffer.concat([existingBuf, buffer]) : buffer, req)
33
+ }
34
+ return provider.append(blobName, buffer, req)
35
+ },
36
+
37
+ async init () {
38
+ if (provider.init) {
39
+ return provider.init()
40
+ }
41
+ },
42
+
43
+ drop () {
44
+ if (provider.drop) {
45
+ return provider.drop()
46
+ }
47
+ },
48
+
49
+ registerProvider (p) {
50
+ provider = p
51
+ }
52
+ }
53
+ }
@@ -1,27 +1,27 @@
1
- module.exports = (options) => {
2
- const storage = {}
3
-
4
- return {
5
- write (blobName, buffer) {
6
- storage[blobName] = buffer
7
- return blobName
8
- },
9
-
10
- read (blobName) {
11
- return storage[blobName]
12
- },
13
-
14
- remove (blobName) {
15
- delete storage[blobName]
16
- },
17
-
18
- append (blobName, buffer) {
19
- storage[blobName] = storage[blobName] || Buffer.from('')
20
- storage[blobName] = Buffer.concat([storage[blobName], buffer])
21
- },
22
-
23
- init () {
24
-
25
- }
26
- }
27
- }
1
+ module.exports = (options) => {
2
+ const storage = {}
3
+
4
+ return {
5
+ write (blobName, buffer) {
6
+ storage[blobName] = buffer
7
+ return blobName
8
+ },
9
+
10
+ read (blobName) {
11
+ return storage[blobName]
12
+ },
13
+
14
+ remove (blobName) {
15
+ delete storage[blobName]
16
+ },
17
+
18
+ append (blobName, buffer) {
19
+ storage[blobName] = storage[blobName] || Buffer.from('')
20
+ storage[blobName] = Buffer.concat([storage[blobName], buffer])
21
+ },
22
+
23
+ init () {
24
+
25
+ }
26
+ }
27
+ }
@@ -1,24 +1,24 @@
1
- module.exports = (reporter) => {
2
- reporter.registerMainAction('blobStorage.read', async (spec, originalReq) => {
3
- const localReq = reporter.Request(originalReq)
4
- const res = await reporter.blobStorage.read(spec.blobName, localReq)
5
-
6
- return res.toString('base64')
7
- })
8
-
9
- reporter.registerMainAction('blobStorage.write', async (spec, originalReq) => {
10
- const localReq = reporter.Request(originalReq)
11
-
12
- return await reporter.blobStorage.write(spec.blobName, Buffer.from(spec.content, 'base64'), localReq)
13
- })
14
-
15
- reporter.registerMainAction('blobStorage.remove', async (spec, originalReq) => {
16
- const localReq = reporter.Request(originalReq)
17
- return reporter.blobStorage.remove(spec.blobName, localReq)
18
- })
19
-
20
- reporter.registerMainAction('blobStorage.append', async (spec, originalReq) => {
21
- const localReq = reporter.Request(originalReq)
22
- return reporter.blobStorage.append(spec.blobName, Buffer.from(spec.content, 'base64'), localReq)
23
- })
24
- }
1
+ module.exports = (reporter) => {
2
+ reporter.registerMainAction('blobStorage.read', async (spec, originalReq) => {
3
+ const localReq = reporter.Request(originalReq)
4
+ const res = await reporter.blobStorage.read(spec.blobName, localReq)
5
+
6
+ return res.toString('base64')
7
+ })
8
+
9
+ reporter.registerMainAction('blobStorage.write', async (spec, originalReq) => {
10
+ const localReq = reporter.Request(originalReq)
11
+
12
+ return await reporter.blobStorage.write(spec.blobName, Buffer.from(spec.content, 'base64'), localReq)
13
+ })
14
+
15
+ reporter.registerMainAction('blobStorage.remove', async (spec, originalReq) => {
16
+ const localReq = reporter.Request(originalReq)
17
+ return reporter.blobStorage.remove(spec.blobName, localReq)
18
+ })
19
+
20
+ reporter.registerMainAction('blobStorage.append', async (spec, originalReq) => {
21
+ const localReq = reporter.Request(originalReq)
22
+ return reporter.blobStorage.append(spec.blobName, Buffer.from(spec.content, 'base64'), localReq)
23
+ })
24
+ }
@@ -1,17 +1,17 @@
1
- const { MESSAGE } = require('triple-beam')
2
- const winston = require('winston')
3
-
4
- module.exports = (options = {}) => {
5
- return winston.format((info) => {
6
- const { level, message, ...meta } = info
7
- info[MESSAGE] = `${options.timestamp === true ? `${new Date().toISOString()} - ` : ''}${level}: ${message}`
8
-
9
- const metaKeys = Object.keys(meta)
10
-
11
- if (metaKeys.length > 0) {
12
- info[MESSAGE] += ` ${metaKeys.map((k) => `${k}=${meta[k]}`).join(', ')}`
13
- }
14
-
15
- return info
16
- })
17
- }
1
+ const { MESSAGE } = require('triple-beam')
2
+ const winston = require('winston')
3
+
4
+ module.exports = (options = {}) => {
5
+ return winston.format((info) => {
6
+ const { level, message, ...meta } = info
7
+ info[MESSAGE] = `${options.timestamp === true ? `${new Date().toISOString()} - ` : ''}${level}: ${message}`
8
+
9
+ const metaKeys = Object.keys(meta)
10
+
11
+ if (metaKeys.length > 0) {
12
+ info[MESSAGE] += ` ${metaKeys.map((k) => `${k}=${meta[k]}`).join(', ')}`
13
+ }
14
+
15
+ return info
16
+ })
17
+ }
@@ -1,14 +1,14 @@
1
- const os = require('os')
2
- const path = require('path')
3
-
4
- exports.getDefaultTempDirectory = () => {
5
- return path.join(os.tmpdir(), 'jsreport')
6
- }
7
-
8
- exports.getDefaultRootDirectory = () => {
9
- return path.join(__dirname, '../../../../')
10
- }
11
-
12
- exports.getDefaultLoadConfig = () => {
13
- return false
14
- }
1
+ const os = require('os')
2
+ const path = require('path')
3
+
4
+ exports.getDefaultTempDirectory = () => {
5
+ return path.join(os.tmpdir(), 'jsreport')
6
+ }
7
+
8
+ exports.getDefaultRootDirectory = () => {
9
+ return path.join(__dirname, '../../../../../')
10
+ }
11
+
12
+ exports.getDefaultLoadConfig = () => {
13
+ return false
14
+ }
@@ -1,20 +1,20 @@
1
- const path = require('path')
2
- const locationCache = require('./locationCache')
3
-
4
- module.exports = async (config) => {
5
- const cache = locationCache(config)
6
-
7
- config.logger.info(`Searching for available extensions in ${config.rootDirectory}`)
8
-
9
- const results = await cache.get()
10
- config.logger.info(`Found ${results.length} extension(s)`)
11
-
12
- const availableExtensions = results.map((configFile) => (
13
- Object.assign({
14
- directory: path.dirname(configFile)
15
- }, require(configFile))
16
- ))
17
-
18
- await cache.save(availableExtensions)
19
- return availableExtensions
20
- }
1
+ const path = require('path')
2
+ const locationCache = require('./locationCache')
3
+
4
+ module.exports = async (config) => {
5
+ const cache = locationCache(config)
6
+
7
+ config.logger.info(`Searching for available extensions in ${config.rootDirectory}`)
8
+
9
+ const results = await cache.get()
10
+ config.logger.info(`Found ${results.length} extension(s)`)
11
+
12
+ const availableExtensions = results.map((configFile) => (
13
+ Object.assign({
14
+ directory: path.dirname(configFile)
15
+ }, require(configFile))
16
+ ))
17
+
18
+ await cache.save(availableExtensions)
19
+ return availableExtensions
20
+ }