@nxtedition/lib 13.2.2 → 14.0.0-alpha.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.
- package/package.json +1 -1
- package/serializers.js +2 -0
- package/util/template/index.js +77 -27
- package/weakCache.js +4 -2
package/package.json
CHANGED
package/serializers.js
CHANGED
|
@@ -218,6 +218,7 @@ module.exports = {
|
|
|
218
218
|
id: ures.id || getHeader(ures, 'request-id') || getHeader(ures.req, 'request-id'),
|
|
219
219
|
statusCode: ures.statusCode ?? ures.status,
|
|
220
220
|
bytesRead: ures.bytesRead,
|
|
221
|
+
body: typeof ures.body === 'string' ? ures.body : null,
|
|
221
222
|
headers: getHeaders(ures),
|
|
222
223
|
},
|
|
223
224
|
ureq: (ureq) => {
|
|
@@ -241,6 +242,7 @@ module.exports = {
|
|
|
241
242
|
id: ureq.id || getHeader(ureq, 'request-id'),
|
|
242
243
|
method: ureq.method,
|
|
243
244
|
url,
|
|
245
|
+
body: typeof ureq.body === 'string' ? ureq.body : null,
|
|
244
246
|
bytesWritten: ureq.bytesWritten,
|
|
245
247
|
headers: getHeaders(ureq),
|
|
246
248
|
query: ureq.query,
|
package/util/template/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const rx = require('rxjs/operators')
|
|
2
|
-
const
|
|
2
|
+
const rxjs = require('rxjs')
|
|
3
3
|
const fp = require('lodash/fp')
|
|
4
4
|
const getNxtpressionsCompiler = require('./nextpressions')
|
|
5
5
|
const getJavascriptCompiler = require('./javascript')
|
|
@@ -22,52 +22,86 @@ module.exports = (options) => {
|
|
|
22
22
|
try {
|
|
23
23
|
return compileObjectTemplate(obj)(...args)
|
|
24
24
|
} catch (err) {
|
|
25
|
-
return
|
|
25
|
+
return rxjs.throwError(err)
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
const compileArrayTemplate = weakCache(function compileArrayTemplate(arr) {
|
|
29
|
+
const compileArrayTemplateLazy = (arr) => {
|
|
31
30
|
if (!fp.isArray(arr)) {
|
|
32
31
|
throw new Error('invalid argument')
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
let resolvers
|
|
35
|
+
let indices
|
|
36
|
+
|
|
37
|
+
for (let i = 0; i < arr.length; i++) {
|
|
38
|
+
const resolver = compileTemplateLazy(arr[i])
|
|
39
|
+
if (resolver) {
|
|
40
|
+
resolvers ??= []
|
|
41
|
+
resolvers.push(resolver)
|
|
42
|
+
indices ??= []
|
|
43
|
+
indices.push(i)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!resolvers) {
|
|
48
|
+
return null
|
|
37
49
|
}
|
|
38
50
|
|
|
39
|
-
|
|
51
|
+
return (...args) =>
|
|
52
|
+
rxjs.combineLatest(resolvers.map((resolver) => resolver(...args))).pipe(
|
|
53
|
+
rx.map((values) => {
|
|
54
|
+
const ret = [...arr]
|
|
55
|
+
for (let n = 0; n < values.length; n++) {
|
|
56
|
+
ret[indices[n]] = values[n]
|
|
57
|
+
}
|
|
58
|
+
return ret
|
|
59
|
+
})
|
|
60
|
+
)
|
|
61
|
+
}
|
|
40
62
|
|
|
41
|
-
|
|
63
|
+
const compileArrayTemplate = weakCache(function compileArrayTemplate(arr) {
|
|
64
|
+
return compileArrayTemplateLazy(arr) ?? (() => rxjs.of(arr))
|
|
42
65
|
})
|
|
43
66
|
|
|
44
|
-
|
|
45
|
-
const compileObjectTemplate = weakCache(function compileObjectTemplate(obj) {
|
|
67
|
+
const compileObjectTemplateLazy = (obj) => {
|
|
46
68
|
if (!fp.isPlainObject(obj)) {
|
|
47
69
|
throw new Error('invalid argument')
|
|
48
70
|
}
|
|
49
71
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
xs.push(key, obj[key])
|
|
53
|
-
}
|
|
72
|
+
let resolvers
|
|
73
|
+
let indices
|
|
54
74
|
|
|
55
|
-
|
|
56
|
-
|
|
75
|
+
const keys = Object.keys(obj)
|
|
76
|
+
|
|
77
|
+
for (let i = 0; i < keys.length; i++) {
|
|
78
|
+
const resolver = compileTemplateLazy(obj[keys[i]])
|
|
79
|
+
if (resolver) {
|
|
80
|
+
resolvers ??= []
|
|
81
|
+
resolvers.push(resolver)
|
|
82
|
+
indices ??= []
|
|
83
|
+
indices.push(keys[i])
|
|
84
|
+
}
|
|
57
85
|
}
|
|
58
86
|
|
|
59
|
-
|
|
87
|
+
if (!resolvers) {
|
|
88
|
+
return null
|
|
89
|
+
}
|
|
60
90
|
|
|
61
91
|
return (...args) =>
|
|
62
|
-
|
|
63
|
-
rx.map((
|
|
64
|
-
const ret = {}
|
|
65
|
-
for (let n = 0; n <
|
|
66
|
-
ret[
|
|
92
|
+
rxjs.combineLatest(resolvers.map((resolver) => resolver(...args))).pipe(
|
|
93
|
+
rx.map((values) => {
|
|
94
|
+
const ret = { ...obj }
|
|
95
|
+
for (let n = 0; n < values.length; n++) {
|
|
96
|
+
ret[indices[n]] = values[n]
|
|
67
97
|
}
|
|
68
98
|
return ret
|
|
69
99
|
})
|
|
70
100
|
)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const compileObjectTemplate = weakCache(function compileObjectTemplate(obj) {
|
|
104
|
+
return compileObjectTemplateLazy(obj) ?? (() => rxjs.of(obj))
|
|
71
105
|
})
|
|
72
106
|
|
|
73
107
|
function inner(str) {
|
|
@@ -98,7 +132,7 @@ module.exports = (options) => {
|
|
|
98
132
|
}
|
|
99
133
|
}
|
|
100
134
|
|
|
101
|
-
const
|
|
135
|
+
const compileStringTemplateLazy = weakCache(function compileStringTemplatLazy(str) {
|
|
102
136
|
if (!fp.isString(str)) {
|
|
103
137
|
throw new Error('invalid argument')
|
|
104
138
|
}
|
|
@@ -106,7 +140,7 @@ module.exports = (options) => {
|
|
|
106
140
|
const match = inner(str)
|
|
107
141
|
|
|
108
142
|
if (!match) {
|
|
109
|
-
return
|
|
143
|
+
return null
|
|
110
144
|
}
|
|
111
145
|
|
|
112
146
|
const { pre, type, body, post } = match
|
|
@@ -130,6 +164,10 @@ module.exports = (options) => {
|
|
|
130
164
|
)
|
|
131
165
|
})
|
|
132
166
|
|
|
167
|
+
const compileStringTemplate = function compileStringTemplate(str) {
|
|
168
|
+
return compileStringTemplateLazy(str) ?? (() => rxjs.of(str))
|
|
169
|
+
}
|
|
170
|
+
|
|
133
171
|
function stringify(value, escape) {
|
|
134
172
|
if (value == null) {
|
|
135
173
|
return ''
|
|
@@ -145,6 +183,18 @@ module.exports = (options) => {
|
|
|
145
183
|
return typeof val === 'string' && val.indexOf('{{') !== -1
|
|
146
184
|
}
|
|
147
185
|
|
|
186
|
+
function compileTemplateLazy(template) {
|
|
187
|
+
if (fp.isPlainObject(template)) {
|
|
188
|
+
return compileObjectTemplateLazy(template)
|
|
189
|
+
} else if (fp.isArray(template)) {
|
|
190
|
+
return compileArrayTemplateLazy(template)
|
|
191
|
+
} else if (fp.isString(template)) {
|
|
192
|
+
return compileStringTemplateLazy(template)
|
|
193
|
+
} else {
|
|
194
|
+
return null
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
148
198
|
function compileTemplate(template) {
|
|
149
199
|
if (fp.isPlainObject(template)) {
|
|
150
200
|
return compileObjectTemplate(template)
|
|
@@ -153,7 +203,7 @@ module.exports = (options) => {
|
|
|
153
203
|
} else if (fp.isString(template)) {
|
|
154
204
|
return compileStringTemplate(template)
|
|
155
205
|
} else {
|
|
156
|
-
return () =>
|
|
206
|
+
return () => rxjs.of(template)
|
|
157
207
|
}
|
|
158
208
|
}
|
|
159
209
|
|
|
@@ -165,13 +215,13 @@ module.exports = (options) => {
|
|
|
165
215
|
|
|
166
216
|
function onResolveTemplate(str, ...args) {
|
|
167
217
|
if (fp.isString(str) && str.lastIndexOf('{{') === -1) {
|
|
168
|
-
return
|
|
218
|
+
return rxjs.of(str)
|
|
169
219
|
}
|
|
170
220
|
|
|
171
221
|
try {
|
|
172
222
|
return compileTemplate(str)(...args)
|
|
173
223
|
} catch (err) {
|
|
174
|
-
return
|
|
224
|
+
return rxjs.throwError(err)
|
|
175
225
|
}
|
|
176
226
|
}
|
|
177
227
|
|
package/weakCache.js
CHANGED
|
@@ -18,8 +18,10 @@ module.exports = function weakCache(valueSelector, keySelector) {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
const value = valueSelector(...args)
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
if (value != null) {
|
|
22
|
+
cache.set(key, new WeakRef(value))
|
|
23
|
+
finalizationRegistry.register(value, key)
|
|
24
|
+
}
|
|
23
25
|
return value
|
|
24
26
|
}
|
|
25
27
|
}
|