@nxtedition/lib 19.0.8 → 19.0.10
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/app.js +1 -2
- package/deepstream.js +0 -118
- package/package.json +1 -1
package/app.js
CHANGED
|
@@ -127,8 +127,7 @@ export function makeApp(appConfig, onTerminate) {
|
|
|
127
127
|
logger = createLogger({
|
|
128
128
|
...loggerConfig,
|
|
129
129
|
name: serviceName,
|
|
130
|
-
module: serviceModule,
|
|
131
|
-
base: loggerConfig?.base ? { ...loggerConfig.base } : {},
|
|
130
|
+
base: loggerConfig?.base ? { module: serviceModule, ...loggerConfig.base } : {},
|
|
132
131
|
})
|
|
133
132
|
|
|
134
133
|
appDestroyers.push(
|
package/deepstream.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import qs from 'qs'
|
|
2
2
|
import cached from './util/cached.js'
|
|
3
|
-
import undici from 'undici'
|
|
4
|
-
import stream from 'node:stream'
|
|
5
|
-
import split2 from 'split2'
|
|
6
|
-
import { defaultDelay as delay } from './http.js'
|
|
7
3
|
|
|
8
4
|
function provide(ds, domain, callback, options) {
|
|
9
5
|
if (domain instanceof RegExp) {
|
|
@@ -131,132 +127,18 @@ export function makeDeepstream(ds) {
|
|
|
131
127
|
set: (...args) => ds.record.set(...args),
|
|
132
128
|
get: (...args) => get(ds, ...args),
|
|
133
129
|
update: (...args) => ds.record.update(...args),
|
|
134
|
-
changes: (...args) => changes(ds, ...args),
|
|
135
130
|
},
|
|
136
131
|
}
|
|
137
132
|
ds.nxt = nxt
|
|
138
133
|
return nxt
|
|
139
134
|
}
|
|
140
135
|
|
|
141
|
-
async function* changes(
|
|
142
|
-
ds,
|
|
143
|
-
{
|
|
144
|
-
origin,
|
|
145
|
-
since = 'now',
|
|
146
|
-
live = true,
|
|
147
|
-
batched = false,
|
|
148
|
-
includeDocs = false,
|
|
149
|
-
highWaterMark = 256 * 1024,
|
|
150
|
-
heartbeat = 60e3,
|
|
151
|
-
signal,
|
|
152
|
-
retry,
|
|
153
|
-
},
|
|
154
|
-
) {
|
|
155
|
-
const url = new URL('/_record/changes', origin)
|
|
156
|
-
|
|
157
|
-
url.searchParams.set('since', since || '0')
|
|
158
|
-
url.searchParams.set('live', String(live))
|
|
159
|
-
url.searchParams.set('include_docs', String(includeDocs))
|
|
160
|
-
|
|
161
|
-
let ac
|
|
162
|
-
|
|
163
|
-
const abort = () => {
|
|
164
|
-
ac?.abort(signal.reason)
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
signal?.addEventListener('abort', abort)
|
|
168
|
-
|
|
169
|
-
try {
|
|
170
|
-
for (let retryCount = 0; true; retryCount++) {
|
|
171
|
-
ac = new AbortController()
|
|
172
|
-
try {
|
|
173
|
-
// TODO (fix): Use nxt-undici
|
|
174
|
-
const res = await undici.request(url, {
|
|
175
|
-
idempotent: false,
|
|
176
|
-
blocking: true,
|
|
177
|
-
method: 'GET',
|
|
178
|
-
signal: ac.signal,
|
|
179
|
-
throwOnError: true,
|
|
180
|
-
highWaterMark,
|
|
181
|
-
bodyTimeout: 2 * heartbeat,
|
|
182
|
-
})
|
|
183
|
-
|
|
184
|
-
const src = stream.pipeline(res.body, split2(), () => {})
|
|
185
|
-
|
|
186
|
-
let error
|
|
187
|
-
let ended = false
|
|
188
|
-
let resume = () => {}
|
|
189
|
-
|
|
190
|
-
src
|
|
191
|
-
.on('error', (err) => {
|
|
192
|
-
error = err
|
|
193
|
-
resume()
|
|
194
|
-
})
|
|
195
|
-
.on('readable', () => {
|
|
196
|
-
resume()
|
|
197
|
-
})
|
|
198
|
-
.on('end', () => {
|
|
199
|
-
ended = true
|
|
200
|
-
resume()
|
|
201
|
-
})
|
|
202
|
-
|
|
203
|
-
const batch = batched ? [] : null
|
|
204
|
-
while (true) {
|
|
205
|
-
const line = src.read()
|
|
206
|
-
|
|
207
|
-
if (line === '') {
|
|
208
|
-
continue
|
|
209
|
-
} else if (line !== null) {
|
|
210
|
-
const change = JSON.parse(line)
|
|
211
|
-
|
|
212
|
-
retryCount = 0
|
|
213
|
-
|
|
214
|
-
if (change.seq) {
|
|
215
|
-
since = change.seq
|
|
216
|
-
}
|
|
217
|
-
if (batch) {
|
|
218
|
-
batch.push(change)
|
|
219
|
-
} else {
|
|
220
|
-
yield change
|
|
221
|
-
}
|
|
222
|
-
} else if (batch?.length) {
|
|
223
|
-
yield batch.splice(0)
|
|
224
|
-
} else if (error) {
|
|
225
|
-
throw error
|
|
226
|
-
} else if (ended) {
|
|
227
|
-
return
|
|
228
|
-
} else {
|
|
229
|
-
await new Promise((resolve) => {
|
|
230
|
-
resume = resolve
|
|
231
|
-
})
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
} catch (err) {
|
|
235
|
-
if (typeof retry === 'function') {
|
|
236
|
-
const retryState = { since }
|
|
237
|
-
await retry(err, retryCount, retryState, { signal: ac.signal })
|
|
238
|
-
url.searchParams.set('since', since || '0')
|
|
239
|
-
} else {
|
|
240
|
-
await delay(err, retryCount, { signal: ac.signal })
|
|
241
|
-
}
|
|
242
|
-
} finally {
|
|
243
|
-
ac.abort()
|
|
244
|
-
ac = null
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
} finally {
|
|
248
|
-
signal?.removeEventListener('abort', abort)
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
136
|
Object.assign(makeDeepstream, {
|
|
253
|
-
changes,
|
|
254
137
|
provide,
|
|
255
138
|
observe,
|
|
256
139
|
observe2,
|
|
257
140
|
get,
|
|
258
141
|
record: {
|
|
259
|
-
changes,
|
|
260
142
|
provide,
|
|
261
143
|
observe,
|
|
262
144
|
observe2,
|