@flowcore/data-pump 0.11.0 → 0.12.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/CHANGELOG.md +13 -0
- package/esm/data-pump/data-pump.d.ts +1 -0
- package/esm/data-pump/data-pump.d.ts.map +1 -1
- package/esm/data-pump/data-pump.js +11 -0
- package/esm/data-pump/no-op-logger.d.ts +3 -0
- package/esm/data-pump/no-op-logger.d.ts.map +1 -0
- package/esm/data-pump/no-op-logger.js +6 -0
- package/esm/data-pump/notifier.js +1 -1
- package/esm/mod.d.ts +1 -2
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +1 -2
- package/package.json +1 -1
- package/script/data-pump/data-pump.d.ts +1 -0
- package/script/data-pump/data-pump.d.ts.map +1 -1
- package/script/data-pump/data-pump.js +11 -0
- package/script/data-pump/no-op-logger.d.ts +3 -0
- package/script/data-pump/no-op-logger.d.ts.map +1 -0
- package/script/data-pump/no-op-logger.js +9 -0
- package/script/data-pump/notifier.js +2 -2
- package/script/mod.d.ts +1 -2
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +1 -2
- package/esm/lib/data-pump-create.d.ts +0 -46
- package/esm/lib/data-pump-create.d.ts.map +0 -1
- package/esm/lib/data-pump-create.js +0 -64
- package/esm/lib/data-pump.d.ts +0 -80
- package/esm/lib/data-pump.d.ts.map +0 -1
- package/esm/lib/data-pump.js +0 -437
- package/esm/lib/nats-notifier.d.ts +0 -18
- package/esm/lib/nats-notifier.d.ts.map +0 -1
- package/esm/lib/nats-notifier.js +0 -88
- package/esm/lib/ws-notifier.d.ts +0 -37
- package/esm/lib/ws-notifier.d.ts.map +0 -1
- package/esm/lib/ws-notifier.js +0 -86
- package/script/lib/data-pump-create.d.ts +0 -46
- package/script/lib/data-pump-create.d.ts.map +0 -1
- package/script/lib/data-pump-create.js +0 -68
- package/script/lib/data-pump.d.ts +0 -80
- package/script/lib/data-pump.d.ts.map +0 -1
- package/script/lib/data-pump.js +0 -441
- package/script/lib/nats-notifier.d.ts +0 -18
- package/script/lib/nats-notifier.d.ts.map +0 -1
- package/script/lib/nats-notifier.js +0 -115
- package/script/lib/ws-notifier.d.ts +0 -37
- package/script/lib/ws-notifier.d.ts.map +0 -1
- package/script/lib/ws-notifier.js +0 -90
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.12.0](https://github.com/flowcore-io/data-pump/compare/v0.11.0...v0.12.0) (2025-04-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* remove old datapump code ([d940e25](https://github.com/flowcore-io/data-pump/commit/d940e25bf9e5c67a6609d33f741c23b3dad3ca23))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add 1 sec delay when rechecking for events in livemode ([024a9e0](https://github.com/flowcore-io/data-pump/commit/024a9e09dbd9998e36257f29c154d50ed82ff7a4))
|
|
14
|
+
* add no op logger ([fd83978](https://github.com/flowcore-io/data-pump/commit/fd83978275b1102b80c853dd53c00764b747a9c7))
|
|
15
|
+
|
|
3
16
|
## [0.11.0](https://github.com/flowcore-io/data-pump/compare/v0.10.0...v0.11.0) (2025-04-14)
|
|
4
17
|
|
|
5
18
|
|
|
@@ -43,6 +43,7 @@ export declare class FlowcoreDataPump {
|
|
|
43
43
|
private buffer;
|
|
44
44
|
private bufferState;
|
|
45
45
|
private stopAtState?;
|
|
46
|
+
private isLive;
|
|
46
47
|
private constructor();
|
|
47
48
|
get isRunning(): boolean;
|
|
48
49
|
static create(options: FlowcoreDataPumpOptions, dataSourceOverride?: FlowcoreDataSource): FlowcoreDataPump;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-pump.d.ts","sourceRoot":"","sources":["../../src/data-pump/data-pump.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAA;AAGnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,UAAU,mCAAmC;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,UAAU,wCAAwC;IAChD,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,UAAU,qCAAqC;IAC7C,IAAI,EAAE,QAAQ,CAAA;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,KAAK,+BAA+B,GAChC,mCAAmC,GACnC,wCAAwC,GACxC,qCAAqC,CAAA;AAEzC,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,0BAA0B,CAAA;IACtC,YAAY,EAAE,4BAA4B,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAkBD,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"data-pump.d.ts","sourceRoot":"","sources":["../../src/data-pump/data-pump.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAA;AAGnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,UAAU,mCAAmC;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,UAAU,wCAAwC;IAChD,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,UAAU,qCAAqC;IAC7C,IAAI,EAAE,QAAQ,CAAA;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,KAAK,+BAA+B,GAChC,mCAAmC,GACnC,wCAAwC,GACxC,qCAAqC,CAAA;AAEzC,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,0BAA0B,CAAA;IACtC,YAAY,EAAE,4BAA4B,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAkBD,qBAAa,gBAAgB;IAUzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAb1B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO;IAaP,IAAW,SAAS,IAAI,OAAO,CAE9B;WAEa,MAAM,CAAC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,gBAAgB;IAiCpG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C9D,OAAO,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAQjE,IAAI,CAAC,SAAS,UAAQ,GAAG,IAAI;IAWpC,OAAO,CAAC,WAAW;YAaL,IAAI;IAwEL,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoCjD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;IA0B9B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YA4BtB,MAAM;YAiDN,WAAW;IAiBzB,OAAO,CAAC,mBAAmB;IA4D3B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,YAAY,CAAC,CAAY;YACnB,aAAa;IAO3B,OAAO,CAAC,qBAAqB,CAAC,CAAY;YAC5B,sBAAsB;IAOpC,OAAO,CAAC,iBAAiB,CAAC,CAAY;YACxB,kBAAkB;CAWjC"}
|
|
@@ -72,6 +72,12 @@ export class FlowcoreDataPump {
|
|
|
72
72
|
writable: true,
|
|
73
73
|
value: void 0
|
|
74
74
|
});
|
|
75
|
+
Object.defineProperty(this, "isLive", {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
configurable: true,
|
|
78
|
+
writable: true,
|
|
79
|
+
value: false
|
|
80
|
+
});
|
|
75
81
|
// #endregion
|
|
76
82
|
// #region Waiters
|
|
77
83
|
Object.defineProperty(this, "waiterEvents", {
|
|
@@ -127,6 +133,7 @@ export class FlowcoreDataPump {
|
|
|
127
133
|
}, options.logger);
|
|
128
134
|
}
|
|
129
135
|
async start(callback) {
|
|
136
|
+
this.isLive = false;
|
|
130
137
|
if (this.running) {
|
|
131
138
|
throw new Error("Data pump already running");
|
|
132
139
|
}
|
|
@@ -224,10 +231,14 @@ export class FlowcoreDataPump {
|
|
|
224
231
|
const previousTimeBucket = this.bufferState.timeBucket;
|
|
225
232
|
this.bufferState.timeBucket = format(startOfHour(utc(new Date())), "yyyyMMddHH0000");
|
|
226
233
|
if (previousTimeBucket === this.bufferState.timeBucket && !events.length) {
|
|
234
|
+
this.isLive = true;
|
|
227
235
|
this.logger?.debug("Going live...");
|
|
228
236
|
this.abortController = new AbortController();
|
|
229
237
|
await this.notifier.wait(this.abortController.signal);
|
|
230
238
|
}
|
|
239
|
+
else if (this.isLive) {
|
|
240
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
241
|
+
}
|
|
231
242
|
}
|
|
232
243
|
}
|
|
233
244
|
} while (this.running);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-op-logger.d.ts","sourceRoot":"","sources":["../../src/data-pump/no-op-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,eAAO,MAAM,UAAU,EAAE,cAKxB,CAAA"}
|
|
@@ -2,7 +2,7 @@ import { NotificationClient } from "../deps/jsr.io/@flowcore/sdk/1.26.3/src/mod.
|
|
|
2
2
|
import * as Nats from "nats";
|
|
3
3
|
import { Subject } from "rxjs";
|
|
4
4
|
import { FlowcoreDataSource } from "./data-source.js";
|
|
5
|
-
import { noOpLogger } from "
|
|
5
|
+
import { noOpLogger } from "./no-op-logger.js";
|
|
6
6
|
const DEFAULT_TIMEOUT_MS = 20_000;
|
|
7
7
|
export class FlowcoreNotifier {
|
|
8
8
|
constructor(options) {
|
package/esm/mod.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import "./_dnt.polyfills.js";
|
|
2
|
-
export * from "./lib/data-pump.js";
|
|
3
|
-
export * from "./lib/data-pump-create.js";
|
|
4
2
|
export * from "./data-pump/data-pump.js";
|
|
5
3
|
export * from "./data-pump/data-source.js";
|
|
6
4
|
export * from "./data-pump/metrics.js";
|
|
7
5
|
export * from "./data-pump/types.js";
|
|
6
|
+
export * from "./data-pump/no-op-logger.js";
|
|
8
7
|
//# sourceMappingURL=mod.d.ts.map
|
package/esm/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA"}
|
package/esm/mod.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import "./_dnt.polyfills.js";
|
|
2
|
-
export * from "./lib/data-pump.js";
|
|
3
|
-
export * from "./lib/data-pump-create.js";
|
|
4
2
|
export * from "./data-pump/data-pump.js";
|
|
5
3
|
export * from "./data-pump/data-source.js";
|
|
6
4
|
export * from "./data-pump/metrics.js";
|
|
7
5
|
export * from "./data-pump/types.js";
|
|
6
|
+
export * from "./data-pump/no-op-logger.js";
|
package/package.json
CHANGED
|
@@ -43,6 +43,7 @@ export declare class FlowcoreDataPump {
|
|
|
43
43
|
private buffer;
|
|
44
44
|
private bufferState;
|
|
45
45
|
private stopAtState?;
|
|
46
|
+
private isLive;
|
|
46
47
|
private constructor();
|
|
47
48
|
get isRunning(): boolean;
|
|
48
49
|
static create(options: FlowcoreDataPumpOptions, dataSourceOverride?: FlowcoreDataSource): FlowcoreDataPump;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-pump.d.ts","sourceRoot":"","sources":["../../src/data-pump/data-pump.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAA;AAGnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,UAAU,mCAAmC;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,UAAU,wCAAwC;IAChD,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,UAAU,qCAAqC;IAC7C,IAAI,EAAE,QAAQ,CAAA;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,KAAK,+BAA+B,GAChC,mCAAmC,GACnC,wCAAwC,GACxC,qCAAqC,CAAA;AAEzC,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,0BAA0B,CAAA;IACtC,YAAY,EAAE,4BAA4B,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAkBD,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"data-pump.d.ts","sourceRoot":"","sources":["../../src/data-pump/data-pump.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAA;AAGnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,UAAU,mCAAmC;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,UAAU,wCAAwC;IAChD,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,UAAU,qCAAqC;IAC7C,IAAI,EAAE,QAAQ,CAAA;IACd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,KAAK,+BAA+B,GAChC,mCAAmC,GACnC,wCAAwC,GACxC,qCAAqC,CAAA;AAEzC,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,UAAU,EAAE,0BAA0B,CAAA;IACtC,YAAY,EAAE,4BAA4B,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,yBAAyB,CAAA;IACrC,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAkBD,qBAAa,gBAAgB;IAUzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAb1B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAC,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO;IAaP,IAAW,SAAS,IAAI,OAAO,CAE9B;WAEa,MAAM,CAAC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,gBAAgB;IAiCpG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C9D,OAAO,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAQjE,IAAI,CAAC,SAAS,UAAQ,GAAG,IAAI;IAWpC,OAAO,CAAC,WAAW;YAaL,IAAI;IAwEL,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoCjD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;IA0B9B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YA4BtB,MAAM;YAiDN,WAAW;IAiBzB,OAAO,CAAC,mBAAmB;IA4D3B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,YAAY,CAAC,CAAY;YACnB,aAAa;IAO3B,OAAO,CAAC,qBAAqB,CAAC,CAAY;YAC5B,sBAAsB;IAOpC,OAAO,CAAC,iBAAiB,CAAC,CAAY;YACxB,kBAAkB;CAWjC"}
|
|
@@ -75,6 +75,12 @@ class FlowcoreDataPump {
|
|
|
75
75
|
writable: true,
|
|
76
76
|
value: void 0
|
|
77
77
|
});
|
|
78
|
+
Object.defineProperty(this, "isLive", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true,
|
|
81
|
+
writable: true,
|
|
82
|
+
value: false
|
|
83
|
+
});
|
|
78
84
|
// #endregion
|
|
79
85
|
// #region Waiters
|
|
80
86
|
Object.defineProperty(this, "waiterEvents", {
|
|
@@ -130,6 +136,7 @@ class FlowcoreDataPump {
|
|
|
130
136
|
}, options.logger);
|
|
131
137
|
}
|
|
132
138
|
async start(callback) {
|
|
139
|
+
this.isLive = false;
|
|
133
140
|
if (this.running) {
|
|
134
141
|
throw new Error("Data pump already running");
|
|
135
142
|
}
|
|
@@ -227,10 +234,14 @@ class FlowcoreDataPump {
|
|
|
227
234
|
const previousTimeBucket = this.bufferState.timeBucket;
|
|
228
235
|
this.bufferState.timeBucket = (0, date_fns_1.format)((0, date_fns_1.startOfHour)((0, utc_1.utc)(new Date())), "yyyyMMddHH0000");
|
|
229
236
|
if (previousTimeBucket === this.bufferState.timeBucket && !events.length) {
|
|
237
|
+
this.isLive = true;
|
|
230
238
|
this.logger?.debug("Going live...");
|
|
231
239
|
this.abortController = new AbortController();
|
|
232
240
|
await this.notifier.wait(this.abortController.signal);
|
|
233
241
|
}
|
|
242
|
+
else if (this.isLive) {
|
|
243
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
244
|
+
}
|
|
234
245
|
}
|
|
235
246
|
}
|
|
236
247
|
} while (this.running);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-op-logger.d.ts","sourceRoot":"","sources":["../../src/data-pump/no-op-logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,eAAO,MAAM,UAAU,EAAE,cAKxB,CAAA"}
|
|
@@ -28,7 +28,7 @@ const mod_js_1 = require("../deps/jsr.io/@flowcore/sdk/1.26.3/src/mod.js");
|
|
|
28
28
|
const Nats = __importStar(require("nats"));
|
|
29
29
|
const rxjs_1 = require("rxjs");
|
|
30
30
|
const data_source_js_1 = require("./data-source.js");
|
|
31
|
-
const
|
|
31
|
+
const no_op_logger_js_1 = require("./no-op-logger.js");
|
|
32
32
|
const DEFAULT_TIMEOUT_MS = 20_000;
|
|
33
33
|
class FlowcoreNotifier {
|
|
34
34
|
constructor(options) {
|
|
@@ -147,7 +147,7 @@ class FlowcoreNotifier {
|
|
|
147
147
|
dataCore: this.dataSource.dataCore,
|
|
148
148
|
flowType: this.dataSource.flowType,
|
|
149
149
|
}, {
|
|
150
|
-
logger: this.options.logger ??
|
|
150
|
+
logger: this.options.logger ?? no_op_logger_js_1.noOpLogger,
|
|
151
151
|
reconnectInterval: 1000,
|
|
152
152
|
});
|
|
153
153
|
await this.notificationClient.connect();
|
package/script/mod.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import "./_dnt.polyfills.js";
|
|
2
|
-
export * from "./lib/data-pump.js";
|
|
3
|
-
export * from "./lib/data-pump-create.js";
|
|
4
2
|
export * from "./data-pump/data-pump.js";
|
|
5
3
|
export * from "./data-pump/data-source.js";
|
|
6
4
|
export * from "./data-pump/metrics.js";
|
|
7
5
|
export * from "./data-pump/types.js";
|
|
6
|
+
export * from "./data-pump/no-op-logger.js";
|
|
8
7
|
//# sourceMappingURL=mod.d.ts.map
|
package/script/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA"}
|
package/script/mod.js
CHANGED
|
@@ -15,9 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
require("./_dnt.polyfills.js");
|
|
18
|
-
__exportStar(require("./lib/data-pump.js"), exports);
|
|
19
|
-
__exportStar(require("./lib/data-pump-create.js"), exports);
|
|
20
18
|
__exportStar(require("./data-pump/data-pump.js"), exports);
|
|
21
19
|
__exportStar(require("./data-pump/data-source.js"), exports);
|
|
22
20
|
__exportStar(require("./data-pump/metrics.js"), exports);
|
|
23
21
|
__exportStar(require("./data-pump/types.js"), exports);
|
|
22
|
+
__exportStar(require("./data-pump/no-op-logger.js"), exports);
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { type FlowcoreEvent } from "../deps/jsr.io/@flowcore/sdk/1.26.3/src/mod.js";
|
|
2
|
-
import { DataPump, type DataPumpStateManager, type Logger } from "./data-pump.js";
|
|
3
|
-
export declare const noOpLogger: Logger;
|
|
4
|
-
interface DataPumpClientOptionsAuthOidcClient {
|
|
5
|
-
oidcClient: {
|
|
6
|
-
getToken: () => Promise<{
|
|
7
|
-
accessToken: string;
|
|
8
|
-
}>;
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
interface DataPumpClientOptionsAuthApiKey {
|
|
12
|
-
apiKey: string;
|
|
13
|
-
apiKeyId: string;
|
|
14
|
-
}
|
|
15
|
-
type DataPumpClientOptionsAuth = DataPumpClientOptionsAuthOidcClient | DataPumpClientOptionsAuthApiKey;
|
|
16
|
-
/**
|
|
17
|
-
* Create data pump client options
|
|
18
|
-
*/
|
|
19
|
-
export interface DataPumpClientOptions {
|
|
20
|
-
logger?: Logger;
|
|
21
|
-
auth: DataPumpClientOptionsAuth;
|
|
22
|
-
dataSource: {
|
|
23
|
-
tenant: string;
|
|
24
|
-
dataCore: string;
|
|
25
|
-
flowType: string;
|
|
26
|
-
eventTypes: string[];
|
|
27
|
-
};
|
|
28
|
-
buffer?: {
|
|
29
|
-
size?: number;
|
|
30
|
-
threshold?: number;
|
|
31
|
-
maxRedeliveryCount?: number;
|
|
32
|
-
achknowledgeTimeoutMs?: number;
|
|
33
|
-
};
|
|
34
|
-
stateManager?: DataPumpStateManager;
|
|
35
|
-
processor?: {
|
|
36
|
-
concurrency?: number;
|
|
37
|
-
onEvents: (events: FlowcoreEvent[]) => Promise<boolean> | boolean;
|
|
38
|
-
onFailedEvents?: (events: FlowcoreEvent[]) => Promise<void> | void;
|
|
39
|
-
onDone?: () => Promise<void> | void;
|
|
40
|
-
};
|
|
41
|
-
stopAt?: Date;
|
|
42
|
-
natsServers?: string[];
|
|
43
|
-
}
|
|
44
|
-
export declare function createDataPump(options: DataPumpClientOptions): DataPump;
|
|
45
|
-
export {};
|
|
46
|
-
//# sourceMappingURL=data-pump-create.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-pump-create.d.ts","sourceRoot":"","sources":["../../src/lib/data-pump-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,gDAAgD,CAAA;AACnG,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIjF,eAAO,MAAM,UAAU,EAAE,MAKxB,CAAA;AAED,UAAU,mCAAmC;IAC3C,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACjD,CAAA;CACF;AAED,UAAU,+BAA+B;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,KAAK,yBAAyB,GAAG,mCAAmC,GAAG,+BAA+B,CAAA;AAEtG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,yBAAyB,CAAA;IAC/B,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,EAAE,CAAA;KACrB,CAAA;IACD,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;KAC/B,CAAA;IACD,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,SAAS,CAAC,EAAE;QACV,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;QACjE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAClE,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;KACpC,CAAA;IACD,MAAM,CAAC,EAAE,IAAI,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,QAAQ,CA0DvE"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { FlowcoreClient } from "../deps/jsr.io/@flowcore/sdk/1.26.3/src/mod.js";
|
|
2
|
-
import { DataPump } from "./data-pump.js";
|
|
3
|
-
import { WebSocketNotifier } from "./ws-notifier.js";
|
|
4
|
-
import { NatsNotifier } from "./nats-notifier.js";
|
|
5
|
-
export const noOpLogger = {
|
|
6
|
-
debug: () => { },
|
|
7
|
-
info: () => { },
|
|
8
|
-
warn: () => { },
|
|
9
|
-
error: console.error,
|
|
10
|
-
};
|
|
11
|
-
export function createDataPump(options) {
|
|
12
|
-
let flowcoreClient;
|
|
13
|
-
if ("oidcClient" in options.auth) {
|
|
14
|
-
const authClient = options.auth.oidcClient;
|
|
15
|
-
flowcoreClient = new FlowcoreClient({
|
|
16
|
-
getBearerToken: async () => (await authClient.getToken()).accessToken ?? null,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
flowcoreClient = new FlowcoreClient({
|
|
21
|
-
apiKey: options.auth.apiKey,
|
|
22
|
-
apiKeyId: options.auth.apiKeyId,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
const stateManager = options.stateManager ?? {
|
|
26
|
-
getState: () => null,
|
|
27
|
-
setState: () => { },
|
|
28
|
-
};
|
|
29
|
-
const notifier = options.natsServers
|
|
30
|
-
? new NatsNotifier({
|
|
31
|
-
servers: options.natsServers,
|
|
32
|
-
})
|
|
33
|
-
: new WebSocketNotifier({
|
|
34
|
-
auth: options.auth,
|
|
35
|
-
dataSource: options.dataSource,
|
|
36
|
-
logger: options.logger,
|
|
37
|
-
});
|
|
38
|
-
const bufferSize = options.buffer?.size ?? 1000;
|
|
39
|
-
const buffer = {
|
|
40
|
-
size: bufferSize,
|
|
41
|
-
threshold: options.buffer?.threshold ?? Math.round(bufferSize * 0.1),
|
|
42
|
-
maxRedeliveryCount: options.buffer?.maxRedeliveryCount ?? 3,
|
|
43
|
-
achknowledgeTimeoutMs: options.buffer?.achknowledgeTimeoutMs ?? 10_000,
|
|
44
|
-
};
|
|
45
|
-
const processor = options.processor
|
|
46
|
-
? {
|
|
47
|
-
concurrency: options.processor.concurrency ?? 1,
|
|
48
|
-
onEvents: options.processor.onEvents,
|
|
49
|
-
onFailedEvents: options.processor.onFailedEvents,
|
|
50
|
-
onDone: options.processor.onDone,
|
|
51
|
-
}
|
|
52
|
-
: undefined;
|
|
53
|
-
const dataPump = new DataPump({
|
|
54
|
-
flowcoreClient,
|
|
55
|
-
stateManager,
|
|
56
|
-
dataSource: options.dataSource,
|
|
57
|
-
buffer,
|
|
58
|
-
processor,
|
|
59
|
-
notifier: notifier.getNotifier(),
|
|
60
|
-
logger: options.logger,
|
|
61
|
-
stopAt: options.stopAt,
|
|
62
|
-
});
|
|
63
|
-
return dataPump;
|
|
64
|
-
}
|
package/esm/lib/data-pump.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { type FlowcoreClient, type FlowcoreEvent } from "../deps/jsr.io/@flowcore/sdk/1.26.3/src/mod.js";
|
|
2
|
-
export interface Logger {
|
|
3
|
-
debug(message: string, ...meta: unknown[]): void;
|
|
4
|
-
info(message: string, ...meta: unknown[]): void;
|
|
5
|
-
warn(message: string, ...meta: unknown[]): void;
|
|
6
|
-
error(message: string | Error, ...meta: unknown[]): void;
|
|
7
|
-
}
|
|
8
|
-
interface DataPumpOptions {
|
|
9
|
-
flowcoreClient: FlowcoreClient;
|
|
10
|
-
stateManager: DataPumpStateManager;
|
|
11
|
-
logger?: Logger;
|
|
12
|
-
notifier: DataPumpNotifier;
|
|
13
|
-
dataSource: {
|
|
14
|
-
tenant: string;
|
|
15
|
-
dataCore: string;
|
|
16
|
-
flowType: string;
|
|
17
|
-
eventTypes: string[];
|
|
18
|
-
};
|
|
19
|
-
buffer: {
|
|
20
|
-
size: number;
|
|
21
|
-
threshold: number;
|
|
22
|
-
maxRedeliveryCount: number;
|
|
23
|
-
achknowledgeTimeoutMs: number;
|
|
24
|
-
};
|
|
25
|
-
processor?: {
|
|
26
|
-
concurrency: number;
|
|
27
|
-
onEvents: (events: FlowcoreEvent[]) => Promise<boolean> | boolean;
|
|
28
|
-
onFailedEvents?: (events: FlowcoreEvent[]) => Promise<void> | void;
|
|
29
|
-
onDone?: () => Promise<void> | void;
|
|
30
|
-
};
|
|
31
|
-
stopAt?: Date;
|
|
32
|
-
}
|
|
33
|
-
export interface DataPumpState {
|
|
34
|
-
timeBucket: string;
|
|
35
|
-
eventId?: string;
|
|
36
|
-
}
|
|
37
|
-
export interface DataPumpStateManager {
|
|
38
|
-
getState: () => Promise<DataPumpState | null> | DataPumpState | null;
|
|
39
|
-
setState?: (state: DataPumpState) => Promise<void> | void;
|
|
40
|
-
stopAt?: () => Date;
|
|
41
|
-
}
|
|
42
|
-
export interface DataPumpNotifier {
|
|
43
|
-
wait(dataSource: DataPumpOptions["dataSource"] & {
|
|
44
|
-
dataCoreId: string;
|
|
45
|
-
}, signal?: AbortSignal): Promise<void>;
|
|
46
|
-
}
|
|
47
|
-
export declare class DataPump {
|
|
48
|
-
private options;
|
|
49
|
-
private logger?;
|
|
50
|
-
private state;
|
|
51
|
-
private _timeBuckets;
|
|
52
|
-
private buffer;
|
|
53
|
-
private bufferWaiter;
|
|
54
|
-
private waiter;
|
|
55
|
-
private running;
|
|
56
|
-
private notifierAbortController?;
|
|
57
|
-
private dataCoreId?;
|
|
58
|
-
private stopAt?;
|
|
59
|
-
constructor(options: DataPumpOptions);
|
|
60
|
-
start(): Promise<void>;
|
|
61
|
-
stop(): void;
|
|
62
|
-
private proceccor;
|
|
63
|
-
private eventBufferLoop;
|
|
64
|
-
private reOpen;
|
|
65
|
-
private updateState;
|
|
66
|
-
private get timeBuckets();
|
|
67
|
-
private getClosestTimeBucket;
|
|
68
|
-
private updateTimeBuckets;
|
|
69
|
-
private pullInner;
|
|
70
|
-
private acknowledgeInner;
|
|
71
|
-
private waitForNotifier;
|
|
72
|
-
private waitForEvents;
|
|
73
|
-
private waitForBufferThreshold;
|
|
74
|
-
private getNowTimeBucket;
|
|
75
|
-
private getDataCoreId;
|
|
76
|
-
pull(amount: number): Promise<FlowcoreEvent[]>;
|
|
77
|
-
acknowledge(eventIds: string[]): Promise<void>;
|
|
78
|
-
}
|
|
79
|
-
export {};
|
|
80
|
-
//# sourceMappingURL=data-pump.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-pump.d.ts","sourceRoot":"","sources":["../../src/lib/data-pump.ts"],"names":[],"mappings":"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"}
|