@flowrensic/node 0.0.0-stage → 0.1.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.
Files changed (46) hide show
  1. package/README.md +25 -2
  2. package/dist/client.d.ts +9 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +12 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/gen/flowrensic/v1/activity_metrics_pb.d.ts +442 -0
  7. package/dist/gen/flowrensic/v1/activity_metrics_pb.d.ts.map +1 -0
  8. package/dist/gen/flowrensic/v1/activity_metrics_pb.js +104 -0
  9. package/dist/gen/flowrensic/v1/activity_metrics_pb.js.map +1 -0
  10. package/dist/gen/flowrensic/v1/catalog_pb.d.ts +254 -0
  11. package/dist/gen/flowrensic/v1/catalog_pb.d.ts.map +1 -0
  12. package/dist/gen/flowrensic/v1/catalog_pb.js +88 -0
  13. package/dist/gen/flowrensic/v1/catalog_pb.js.map +1 -0
  14. package/dist/gen/flowrensic/v1/finding_pb.d.ts +180 -0
  15. package/dist/gen/flowrensic/v1/finding_pb.d.ts.map +1 -0
  16. package/dist/gen/flowrensic/v1/finding_pb.js +109 -0
  17. package/dist/gen/flowrensic/v1/finding_pb.js.map +1 -0
  18. package/dist/gen/flowrensic/v1/replay_pb.d.ts +273 -0
  19. package/dist/gen/flowrensic/v1/replay_pb.d.ts.map +1 -0
  20. package/dist/gen/flowrensic/v1/replay_pb.js +100 -0
  21. package/dist/gen/flowrensic/v1/replay_pb.js.map +1 -0
  22. package/dist/gen/flowrensic/v1/services_pb.d.ts +145 -0
  23. package/dist/gen/flowrensic/v1/services_pb.d.ts.map +1 -0
  24. package/dist/gen/flowrensic/v1/services_pb.js +31 -0
  25. package/dist/gen/flowrensic/v1/services_pb.js.map +1 -0
  26. package/dist/gen/flowrensic/v1/workflow_history_pb.d.ts +204 -0
  27. package/dist/gen/flowrensic/v1/workflow_history_pb.d.ts.map +1 -0
  28. package/dist/gen/flowrensic/v1/workflow_history_pb.js +132 -0
  29. package/dist/gen/flowrensic/v1/workflow_history_pb.js.map +1 -0
  30. package/dist/index.d.ts +11 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +6 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/interceptor.d.ts +25 -0
  35. package/dist/interceptor.d.ts.map +1 -0
  36. package/dist/interceptor.js +77 -0
  37. package/dist/interceptor.js.map +1 -0
  38. package/dist/replay.d.ts +63 -0
  39. package/dist/replay.d.ts.map +1 -0
  40. package/dist/replay.js +93 -0
  41. package/dist/replay.js.map +1 -0
  42. package/dist/sink.d.ts +18 -0
  43. package/dist/sink.d.ts.map +1 -0
  44. package/dist/sink.js +44 -0
  45. package/dist/sink.js.map +1 -0
  46. package/package.json +42 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../src/replay.ts"],"names":[],"mappings":"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"}
package/dist/sink.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import type { ActivityAttempt } from './gen/flowrensic/v1/activity_metrics_pb.js';
2
+ /** Buffers attempts and publishes them to a Flowrensic server in batches. */
3
+ export interface AttemptSink {
4
+ record(attempt: ActivityAttempt): void;
5
+ /** Send what is buffered and wait for it to land. Tests need this. */
6
+ flush(): Promise<void>;
7
+ close(): Promise<void>;
8
+ }
9
+ export interface SinkOptions {
10
+ /** Flowrensic server to publish to. */
11
+ baseUrl: string;
12
+ /** Send once this many attempts are buffered. */
13
+ batchSize?: number;
14
+ /** Send at least this often, in milliseconds. */
15
+ flushIntervalMs?: number;
16
+ }
17
+ export declare function createAttemptSink(options: SinkOptions): AttemptSink;
18
+ //# sourceMappingURL=sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAGlF,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,sEAAsE;IACtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CA8CnE"}
package/dist/sink.js ADDED
@@ -0,0 +1,44 @@
1
+ import { createClient } from '@connectrpc/connect';
2
+ import { createConnectTransport } from '@connectrpc/connect-node';
3
+ import { IngestService } from './gen/flowrensic/v1/services_pb.js';
4
+ export function createAttemptSink(options) {
5
+ const { baseUrl, batchSize = 64, flushIntervalMs = 1000 } = options;
6
+ const ingest = createClient(IngestService, createConnectTransport({ baseUrl, httpVersion: '1.1' }));
7
+ let buffer = [];
8
+ let inFlight = Promise.resolve();
9
+ const send = async () => {
10
+ const events = buffer;
11
+ buffer = [];
12
+ if (events.length === 0)
13
+ return;
14
+ await ingest.ingestActivityEvents({ events });
15
+ };
16
+ // Failures are swallowed on purpose. Telemetry must never fail the activity
17
+ // it is measuring.
18
+ const sendSafely = async () => {
19
+ inFlight = inFlight.then(send).catch(() => undefined);
20
+ await inFlight;
21
+ };
22
+ const timer = setInterval(() => {
23
+ void sendSafely();
24
+ }, flushIntervalMs);
25
+ timer.unref();
26
+ return {
27
+ record(attempt) {
28
+ buffer.push(attempt);
29
+ if (buffer.length >= batchSize) {
30
+ void sendSafely();
31
+ }
32
+ },
33
+ async flush() {
34
+ await sendSafely();
35
+ await inFlight;
36
+ },
37
+ async close() {
38
+ clearInterval(timer);
39
+ await sendSafely();
40
+ await inFlight;
41
+ },
42
+ };
43
+ }
44
+ //# sourceMappingURL=sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sink.js","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAmBnE,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACpE,MAAM,MAAM,GAAiC,YAAY,CACvD,aAAa,EACb,sBAAsB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CACxD,CAAC;IAEF,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,IAAI,QAAQ,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEhD,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC;QACtB,MAAM,GAAG,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,4EAA4E;IAC5E,mBAAmB;IACnB,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,KAAK,UAAU,EAAE,CAAC;IACpB,CAAC,EAAE,eAAe,CAAC,CAAC;IACpB,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,OAAO;QACL,MAAM,CAAC,OAAO;YACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC/B,KAAK,UAAU,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,UAAU,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,MAAM,UAAU,EAAE,CAAC;YACnB,MAAM,QAAQ,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,44 @@
1
1
  {
2
2
  "name": "@flowrensic/node",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Replay runner and activity interceptor for Temporal workers, for use with Flowrensic.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -p tsconfig.build.json",
15
+ "typecheck": "tsc --noEmit"
16
+ },
17
+ "dependencies": {
18
+ "@bufbuild/protobuf": "^2.16.0",
19
+ "@connectrpc/connect": "^2.2.0",
20
+ "@connectrpc/connect-node": "^2.2.0"
21
+ },
22
+ "peerDependencies": {
23
+ "@temporalio/activity": ">=1.24",
24
+ "@temporalio/common": ">=1.24",
25
+ "@temporalio/worker": ">=1.24"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^26.6.4",
29
+ "typescript": "^7.0.2"
30
+ },
31
+ "license": "Apache-2.0",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/flowrensic/flowrensic.git",
35
+ "directory": "sdk/node"
36
+ },
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "types": "./dist/index.d.ts"
44
+ }