@flowrensic/node 0.5.5 → 0.5.7
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/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +29 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/activity_metrics_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/activity_metrics_pb.js +117 -0
- package/dist/cjs/gen/flowrensic/v1/activity_metrics_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/catalog_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/catalog_pb.js +91 -0
- package/dist/cjs/gen/flowrensic/v1/catalog_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/cost_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/cost_pb.js +53 -0
- package/dist/cjs/gen/flowrensic/v1/cost_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/deploy_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/deploy_pb.js +53 -0
- package/dist/cjs/gen/flowrensic/v1/deploy_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/env_instance_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/env_instance_pb.js +83 -0
- package/dist/cjs/gen/flowrensic/v1/env_instance_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/finding_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/finding_pb.js +156 -0
- package/dist/cjs/gen/flowrensic/v1/finding_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/replay_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/replay_pb.js +108 -0
- package/dist/cjs/gen/flowrensic/v1/replay_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/services_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/services_pb.js +37 -0
- package/dist/cjs/gen/flowrensic/v1/services_pb.js.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/workflow_history_pb.d.ts.map +1 -0
- package/dist/cjs/gen/flowrensic/v1/workflow_history_pb.js +135 -0
- package/dist/cjs/gen/flowrensic/v1/workflow_history_pb.js.map +1 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interceptor.d.ts.map +1 -0
- package/dist/cjs/interceptor.js +92 -0
- package/dist/cjs/interceptor.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/replay.d.ts.map +1 -0
- package/dist/cjs/replay.js +132 -0
- package/dist/cjs/replay.js.map +1 -0
- package/dist/cjs/sink.d.ts.map +1 -0
- package/dist/cjs/sink.js +47 -0
- package/dist/cjs/sink.js.map +1 -0
- package/dist/cjs/telemetry.d.ts.map +1 -0
- package/dist/cjs/telemetry.js +168 -0
- package/dist/cjs/telemetry.js.map +1 -0
- package/dist/esm/client.d.ts +15 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/activity_metrics_pb.d.ts +587 -0
- package/dist/esm/gen/flowrensic/v1/activity_metrics_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/activity_metrics_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/catalog_pb.d.ts +254 -0
- package/dist/esm/gen/flowrensic/v1/catalog_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/catalog_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/cost_pb.d.ts +224 -0
- package/dist/esm/gen/flowrensic/v1/cost_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/cost_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/deploy_pb.d.ts +226 -0
- package/dist/esm/gen/flowrensic/v1/deploy_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/deploy_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/env_instance_pb.d.ts +338 -0
- package/dist/esm/gen/flowrensic/v1/env_instance_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/env_instance_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/finding_pb.d.ts +276 -0
- package/dist/esm/gen/flowrensic/v1/finding_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/finding_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/replay_pb.d.ts +310 -0
- package/dist/esm/gen/flowrensic/v1/replay_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/replay_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/services_pb.d.ts +251 -0
- package/dist/esm/gen/flowrensic/v1/services_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/services_pb.js.map +1 -0
- package/dist/esm/gen/flowrensic/v1/workflow_history_pb.d.ts +204 -0
- package/dist/esm/gen/flowrensic/v1/workflow_history_pb.d.ts.map +1 -0
- package/dist/esm/gen/flowrensic/v1/workflow_history_pb.js.map +1 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interceptor.d.ts +37 -0
- package/dist/esm/interceptor.d.ts.map +1 -0
- package/dist/esm/interceptor.js.map +1 -0
- package/dist/esm/replay.d.ts +80 -0
- package/dist/esm/replay.d.ts.map +1 -0
- package/dist/esm/replay.js.map +1 -0
- package/dist/esm/sink.d.ts +18 -0
- package/dist/esm/sink.d.ts.map +1 -0
- package/dist/esm/sink.js.map +1 -0
- package/dist/esm/telemetry.d.ts +61 -0
- package/dist/esm/telemetry.d.ts.map +1 -0
- package/dist/esm/telemetry.js.map +1 -0
- package/package.json +14 -7
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/gen/flowrensic/v1/activity_metrics_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/activity_metrics_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/catalog_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/catalog_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/cost_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/cost_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/deploy_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/deploy_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/env_instance_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/env_instance_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/finding_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/finding_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/replay_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/replay_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/services_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/services_pb.js.map +0 -1
- package/dist/gen/flowrensic/v1/workflow_history_pb.d.ts.map +0 -1
- package/dist/gen/flowrensic/v1/workflow_history_pb.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interceptor.d.ts.map +0 -1
- package/dist/interceptor.js.map +0 -1
- package/dist/replay.d.ts.map +0 -1
- package/dist/replay.js.map +0 -1
- package/dist/sink.d.ts.map +0 -1
- package/dist/sink.js.map +0 -1
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/telemetry.js.map +0 -1
- /package/dist/{client.d.ts → cjs/client.d.ts} +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/activity_metrics_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/catalog_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/cost_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/deploy_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/env_instance_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/finding_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/replay_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/services_pb.d.ts +0 -0
- /package/dist/{gen → cjs/gen}/flowrensic/v1/workflow_history_pb.d.ts +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{interceptor.d.ts → cjs/interceptor.d.ts} +0 -0
- /package/dist/{replay.d.ts → cjs/replay.d.ts} +0 -0
- /package/dist/{sink.d.ts → cjs/sink.d.ts} +0 -0
- /package/dist/{telemetry.d.ts → cjs/telemetry.d.ts} +0 -0
- /package/dist/{client.js → esm/client.js} +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/activity_metrics_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/catalog_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/cost_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/deploy_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/env_instance_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/finding_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/replay_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/services_pb.js +0 -0
- /package/dist/{gen → esm/gen}/flowrensic/v1/workflow_history_pb.js +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{interceptor.js → esm/interceptor.js} +0 -0
- /package/dist/{replay.js → esm/replay.js} +0 -0
- /package/dist/{sink.js → esm/sink.js} +0 -0
- /package/dist/{telemetry.js → esm/telemetry.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/replay.ts"],"names":[],"mappings":"AAQA,0EAA0E;AAC1E,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC;AAqBD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAsD9E;AAQD,yEAAyE;AACzE,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAOnE;AAED,gFAAgF;AAChF,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGrE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB5E"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INDEX_NAME = void 0;
|
|
4
|
+
exports.fetchReplaySet = fetchReplaySet;
|
|
5
|
+
exports.readReplaySet = readReplaySet;
|
|
6
|
+
exports.listHistoryFiles = listHistoryFiles;
|
|
7
|
+
exports.publishVerdicts = publishVerdicts;
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const wkt_1 = require("@bufbuild/protobuf/wkt");
|
|
11
|
+
const client_js_1 = require("./client.js");
|
|
12
|
+
const replay_pb_js_1 = require("./gen/flowrensic/v1/replay_pb.js");
|
|
13
|
+
/** Manifest written beside the histories, the same one the CLI writes. */
|
|
14
|
+
exports.INDEX_NAME = 'replay-set.json';
|
|
15
|
+
// A manifest reads `completed`, the same label the CLI writes. A table rather
|
|
16
|
+
// than a reverse enum lookup, so adding a status is a compile error here.
|
|
17
|
+
const STATUS_LABELS = {
|
|
18
|
+
[replay_pb_js_1.RunStatus.UNSPECIFIED]: 'unspecified',
|
|
19
|
+
[replay_pb_js_1.RunStatus.RUNNING]: 'running',
|
|
20
|
+
[replay_pb_js_1.RunStatus.COMPLETED]: 'completed',
|
|
21
|
+
[replay_pb_js_1.RunStatus.FAILED]: 'failed',
|
|
22
|
+
[replay_pb_js_1.RunStatus.CANCELED]: 'canceled',
|
|
23
|
+
[replay_pb_js_1.RunStatus.TERMINATED]: 'terminated',
|
|
24
|
+
[replay_pb_js_1.RunStatus.TIMED_OUT]: 'timed_out',
|
|
25
|
+
[replay_pb_js_1.RunStatus.CONTINUED_AS_NEW]: 'continued_as_new',
|
|
26
|
+
[replay_pb_js_1.RunStatus.PAUSED]: 'paused',
|
|
27
|
+
};
|
|
28
|
+
function historyUrl(baseUrl, path) {
|
|
29
|
+
const base = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
|
|
30
|
+
return new URL(path.replace(/^\//, ''), base);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Fetches the set the server picks for a workflow type in one environment and
|
|
34
|
+
* writes it to disk.
|
|
35
|
+
*
|
|
36
|
+
* Which histories are worth replaying is the server's call, not the caller's.
|
|
37
|
+
* What comes down is the engine's own history, verbatim, so a replayer reads
|
|
38
|
+
* it the way the engine wrote it.
|
|
39
|
+
*
|
|
40
|
+
* Nothing here runs a workflow. Replay belongs to the suite that owns the
|
|
41
|
+
* code, through its own SDK, and `publishVerdicts` takes the outcome back.
|
|
42
|
+
*/
|
|
43
|
+
async function fetchReplaySet(options) {
|
|
44
|
+
const { baseUrl, workflowType, dir, deployEnv, codeVersion } = options;
|
|
45
|
+
const client = (0, client_js_1.createFlowrensicClient)(baseUrl);
|
|
46
|
+
const found = await client.query.listReplayHistories({
|
|
47
|
+
workflowType,
|
|
48
|
+
deployEnv,
|
|
49
|
+
codeVersion: codeVersion ?? '',
|
|
50
|
+
});
|
|
51
|
+
// An empty set is not an error: a workflow type with no runs yet is a normal
|
|
52
|
+
// state on a new pipeline, and the caller decides what to do about it.
|
|
53
|
+
await (0, promises_1.mkdir)(dir, { recursive: true, mode: 0o750 });
|
|
54
|
+
const histories = [];
|
|
55
|
+
for (const history of found.histories) {
|
|
56
|
+
const file = `${history.runId}.json`;
|
|
57
|
+
const response = await fetch(historyUrl(baseUrl, history.url));
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
const body = (await response.text()).slice(0, 512).trim();
|
|
60
|
+
throw new Error(`history ${history.runId}: status ${String(response.status)}: ${body}`);
|
|
61
|
+
}
|
|
62
|
+
// Written and renamed, so a failed fetch never leaves a half history for a
|
|
63
|
+
// replayer to read as a non-determinism report.
|
|
64
|
+
const temp = (0, node_path_1.join)(dir, `.fetch-${history.runId}`);
|
|
65
|
+
await (0, promises_1.writeFile)(temp, Buffer.from(await response.arrayBuffer()), { mode: 0o600 });
|
|
66
|
+
await (0, promises_1.rename)(temp, (0, node_path_1.join)(dir, file));
|
|
67
|
+
histories.push({
|
|
68
|
+
run_id: history.runId,
|
|
69
|
+
file,
|
|
70
|
+
status: STATUS_LABELS[history.status],
|
|
71
|
+
...(history.deployEnv === '' ? {} : { deploy_env: history.deployEnv }),
|
|
72
|
+
code_versions: history.codeVersions,
|
|
73
|
+
events: history.events,
|
|
74
|
+
started_at: (history.startedAt ? (0, wkt_1.timestampDate)(history.startedAt) : new Date(0)).toISOString(),
|
|
75
|
+
...(history.closedAt ? { closed_at: (0, wkt_1.timestampDate)(history.closedAt).toISOString() } : {}),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const set = {
|
|
79
|
+
workflow_type: workflowType,
|
|
80
|
+
deploy_env: deployEnv,
|
|
81
|
+
...(codeVersion === undefined ? {} : { code_version: codeVersion }),
|
|
82
|
+
fetched_at: new Date().toISOString(),
|
|
83
|
+
server: baseUrl,
|
|
84
|
+
histories,
|
|
85
|
+
left_out: found.leftOut.map((entry) => ({ run_id: entry.runId, reason: entry.reason })),
|
|
86
|
+
};
|
|
87
|
+
await (0, promises_1.writeFile)((0, node_path_1.join)(dir, exports.INDEX_NAME), `${JSON.stringify(set, null, 2)}\n`, { mode: 0o600 });
|
|
88
|
+
return set;
|
|
89
|
+
}
|
|
90
|
+
function isReplaySet(value) {
|
|
91
|
+
if (typeof value !== 'object' || value === null)
|
|
92
|
+
return false;
|
|
93
|
+
if (!('workflow_type' in value) || typeof value.workflow_type !== 'string')
|
|
94
|
+
return false;
|
|
95
|
+
return 'histories' in value && Array.isArray(value.histories);
|
|
96
|
+
}
|
|
97
|
+
/** Reads a manifest a fetch left behind, the CLI's or this package's. */
|
|
98
|
+
async function readReplaySet(dir) {
|
|
99
|
+
const path = (0, node_path_1.join)(dir, exports.INDEX_NAME);
|
|
100
|
+
const parsed = JSON.parse(await (0, promises_1.readFile)(path, 'utf8'));
|
|
101
|
+
if (!isReplaySet(parsed)) {
|
|
102
|
+
throw new Error(`${path} is not a replay set manifest`);
|
|
103
|
+
}
|
|
104
|
+
return parsed;
|
|
105
|
+
}
|
|
106
|
+
/** Histories in a directory, for a caller that wants them without the index. */
|
|
107
|
+
async function listHistoryFiles(dir) {
|
|
108
|
+
const names = await (0, promises_1.readdir)(dir);
|
|
109
|
+
return names.filter((n) => n.endsWith('.json') && n !== exports.INDEX_NAME).sort();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Reports what a replay found, against the history and the version replayed,
|
|
113
|
+
* so a break is attributed to a code change rather than to a failing test.
|
|
114
|
+
*/
|
|
115
|
+
async function publishVerdicts(options) {
|
|
116
|
+
const { baseUrl, codeVersion, verdicts } = options;
|
|
117
|
+
if (verdicts.length === 0)
|
|
118
|
+
return;
|
|
119
|
+
const client = (0, client_js_1.createFlowrensicClient)(baseUrl);
|
|
120
|
+
const replayedAt = (0, wkt_1.timestampFromDate)(new Date());
|
|
121
|
+
await client.ingest.ingestReplayResults({
|
|
122
|
+
results: verdicts.map((v) => ({
|
|
123
|
+
runId: v.runId,
|
|
124
|
+
codeVersion,
|
|
125
|
+
workflowType: v.workflowType,
|
|
126
|
+
passed: v.passed,
|
|
127
|
+
error: v.error ?? '',
|
|
128
|
+
replayedAt,
|
|
129
|
+
})),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -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/cjs/sink.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAttemptSink = createAttemptSink;
|
|
4
|
+
const connect_1 = require("@connectrpc/connect");
|
|
5
|
+
const connect_node_1 = require("@connectrpc/connect-node");
|
|
6
|
+
const services_pb_js_1 = require("./gen/flowrensic/v1/services_pb.js");
|
|
7
|
+
function createAttemptSink(options) {
|
|
8
|
+
const { baseUrl, batchSize = 64, flushIntervalMs = 1000 } = options;
|
|
9
|
+
const ingest = (0, connect_1.createClient)(services_pb_js_1.IngestService, (0, connect_node_1.createConnectTransport)({ baseUrl, httpVersion: '1.1' }));
|
|
10
|
+
let buffer = [];
|
|
11
|
+
let inFlight = Promise.resolve();
|
|
12
|
+
const send = async () => {
|
|
13
|
+
const events = buffer;
|
|
14
|
+
buffer = [];
|
|
15
|
+
if (events.length === 0)
|
|
16
|
+
return;
|
|
17
|
+
await ingest.ingestActivityEvents({ events });
|
|
18
|
+
};
|
|
19
|
+
// Failures are swallowed on purpose. Telemetry must never fail the activity
|
|
20
|
+
// it is measuring.
|
|
21
|
+
const sendSafely = async () => {
|
|
22
|
+
inFlight = inFlight.then(send).catch(() => undefined);
|
|
23
|
+
await inFlight;
|
|
24
|
+
};
|
|
25
|
+
const timer = setInterval(() => {
|
|
26
|
+
void sendSafely();
|
|
27
|
+
}, flushIntervalMs);
|
|
28
|
+
timer.unref();
|
|
29
|
+
return {
|
|
30
|
+
record(attempt) {
|
|
31
|
+
buffer.push(attempt);
|
|
32
|
+
if (buffer.length >= batchSize) {
|
|
33
|
+
void sendSafely();
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
async flush() {
|
|
37
|
+
await sendSafely();
|
|
38
|
+
await inFlight;
|
|
39
|
+
},
|
|
40
|
+
async close() {
|
|
41
|
+
clearInterval(timer);
|
|
42
|
+
await sendSafely();
|
|
43
|
+
await inFlight;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sink.js","sourceRoot":"","sources":["../../src/sink.ts"],"names":[],"mappings":";;;AAAA,iDAAgE;AAChE,2DAAkE;AAGlE,uEAAmE;AAmBnE,2BAAkC,OAAoB;IACpD,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACpE,MAAM,MAAM,GAAiC,IAAA,sBAAY,EACvD,8BAAa,EACb,IAAA,qCAAsB,EAAC,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAK5C,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AA8BD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CA+H/B"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startEnvInstanceTelemetry = startEnvInstanceTelemetry;
|
|
4
|
+
const connect_1 = require("@connectrpc/connect");
|
|
5
|
+
const proto_utils_js_1 = require("@temporalio/common/lib/proto-utils.js");
|
|
6
|
+
const worker_1 = require("@temporalio/worker");
|
|
7
|
+
const client_js_1 = require("./client.js");
|
|
8
|
+
const sink_js_1 = require("./sink.js");
|
|
9
|
+
/** The interval a worker forwards on when no answer carried one, in seconds. */
|
|
10
|
+
const defaultIntervalSeconds = 5;
|
|
11
|
+
/** Runs the job and swallows what it throws. */
|
|
12
|
+
async function ignoringFailure(job) {
|
|
13
|
+
try {
|
|
14
|
+
await job();
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Whether the call never reached a Flowrensic that could answer it. */
|
|
21
|
+
function noAnswer(error) {
|
|
22
|
+
if (!(error instanceof connect_1.ConnectError))
|
|
23
|
+
return true;
|
|
24
|
+
if (error.code === connect_1.Code.Unavailable || error.code === connect_1.Code.DeadlineExceeded)
|
|
25
|
+
return true;
|
|
26
|
+
// A connection that broke before an answer came back, such as a reset or a
|
|
27
|
+
// broken pipe, reaches the caller as another code but is no answer either.
|
|
28
|
+
const cause = error.cause;
|
|
29
|
+
return typeof cause === 'object' && cause !== null && 'code' in cause && typeof cause.code === 'string' && /^E[A-Z]+$/.test(cause.code);
|
|
30
|
+
}
|
|
31
|
+
async function pause(ms) {
|
|
32
|
+
await new Promise((resolve) => {
|
|
33
|
+
setTimeout(resolve, ms);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Makes one handshake with the env name and the env-instance-id. When it goes
|
|
38
|
+
* unanswered it does what the strategy says. The answer says whether this
|
|
39
|
+
* worker scrapes the engine and how often.
|
|
40
|
+
*
|
|
41
|
+
* On that interval it forwards the raw exposition when it was told to, and the
|
|
42
|
+
* history of every run the interceptor reported, read over gRPC.
|
|
43
|
+
*/
|
|
44
|
+
async function startEnvInstanceTelemetry(options) {
|
|
45
|
+
const { baseUrl, deployEnv, temporalAddress, namespace } = options;
|
|
46
|
+
const envInstanceId = options.envInstanceId ?? '';
|
|
47
|
+
const metricsAddress = options.metricsAddress ?? '';
|
|
48
|
+
const client = (0, client_js_1.createFlowrensicClient)(baseUrl);
|
|
49
|
+
const strategy = options.noAnswer ?? { strategy: 'fail' };
|
|
50
|
+
const attempts = strategy.strategy === 'retry' ? Math.max(1, strategy.attempts) : 1;
|
|
51
|
+
const handshake = async () => {
|
|
52
|
+
for (let attempt = 1;; attempt += 1) {
|
|
53
|
+
try {
|
|
54
|
+
return await client.ingest.envInstanceHandshake({ deployEnv, envInstanceId, metricsAddress });
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (strategy.strategy !== 'retry' || attempt >= attempts || !noAnswer(error))
|
|
58
|
+
throw error;
|
|
59
|
+
await pause(strategy.delayMs);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
let forwarding;
|
|
64
|
+
let intervalSeconds;
|
|
65
|
+
try {
|
|
66
|
+
const answer = await handshake();
|
|
67
|
+
forwarding = answer.forward;
|
|
68
|
+
intervalSeconds = answer.intervalSeconds;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (strategy.strategy === 'give-up-quietly' && noAnswer(error)) {
|
|
72
|
+
forwarding = false;
|
|
73
|
+
intervalSeconds = 0;
|
|
74
|
+
}
|
|
75
|
+
else if (strategy.strategy === 'forward-anyway' && noAnswer(error)) {
|
|
76
|
+
forwarding = metricsAddress !== '' && envInstanceId !== '';
|
|
77
|
+
intervalSeconds = defaultIntervalSeconds;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const connection = await worker_1.NativeConnection.connect({ address: temporalAddress });
|
|
84
|
+
// The runs the interceptor saw, as run id to workflow id.
|
|
85
|
+
const seen = new Map();
|
|
86
|
+
const inner = (0, sink_js_1.createAttemptSink)({ baseUrl });
|
|
87
|
+
const sink = {
|
|
88
|
+
record(attempt) {
|
|
89
|
+
if (attempt.runKey !== '' && attempt.workflowExecutionId !== '') {
|
|
90
|
+
seen.set(attempt.runKey, attempt.workflowExecutionId);
|
|
91
|
+
}
|
|
92
|
+
inner.record(attempt);
|
|
93
|
+
},
|
|
94
|
+
async flush() {
|
|
95
|
+
await inner.flush();
|
|
96
|
+
},
|
|
97
|
+
async close() {
|
|
98
|
+
await inner.close();
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
const scrape = async () => {
|
|
102
|
+
const res = await fetch(`http://${metricsAddress}/metrics`);
|
|
103
|
+
if (!res.ok)
|
|
104
|
+
throw new Error(`metrics endpoint returned ${res.status}`);
|
|
105
|
+
const exposition = await res.text();
|
|
106
|
+
await client.ingest.ingestEnvInstanceMetrics({ deployEnv, envInstanceId, exposition });
|
|
107
|
+
};
|
|
108
|
+
const forwardHistory = async (runId, workflowId) => {
|
|
109
|
+
const events = [];
|
|
110
|
+
let nextPageToken;
|
|
111
|
+
for (;;) {
|
|
112
|
+
const page = await connection.workflowService.getWorkflowExecutionHistory({
|
|
113
|
+
namespace,
|
|
114
|
+
execution: { workflowId, runId },
|
|
115
|
+
...(nextPageToken === undefined ? {} : { nextPageToken }),
|
|
116
|
+
});
|
|
117
|
+
const got = page.history?.events;
|
|
118
|
+
if (got !== undefined && got !== null)
|
|
119
|
+
events.push(...got);
|
|
120
|
+
if (page.nextPageToken.length === 0)
|
|
121
|
+
break;
|
|
122
|
+
nextPageToken = page.nextPageToken;
|
|
123
|
+
}
|
|
124
|
+
await client.ingest.ingestEngineHistory({
|
|
125
|
+
deployEnv,
|
|
126
|
+
envInstanceId,
|
|
127
|
+
runId,
|
|
128
|
+
raw: new TextEncoder().encode((0, proto_utils_js_1.historyToJSON)({ events })),
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
const collect = async () => {
|
|
132
|
+
if (forwarding)
|
|
133
|
+
await ignoringFailure(scrape);
|
|
134
|
+
for (const [runId, workflowId] of [...seen]) {
|
|
135
|
+
await ignoringFailure(async () => {
|
|
136
|
+
await forwardHistory(runId, workflowId);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
// One tick at a time: a tick waits for the one before it to finish.
|
|
141
|
+
let working = Promise.resolve();
|
|
142
|
+
const queue = async (job) => {
|
|
143
|
+
working = working.then(job);
|
|
144
|
+
await working;
|
|
145
|
+
};
|
|
146
|
+
const timer = intervalSeconds > 0
|
|
147
|
+
? setInterval(() => {
|
|
148
|
+
void queue(collect);
|
|
149
|
+
}, intervalSeconds * 1000)
|
|
150
|
+
: undefined;
|
|
151
|
+
timer?.unref();
|
|
152
|
+
return {
|
|
153
|
+
forwarding,
|
|
154
|
+
intervalSeconds,
|
|
155
|
+
sink,
|
|
156
|
+
async shutdown() {
|
|
157
|
+
if (timer !== undefined)
|
|
158
|
+
clearInterval(timer);
|
|
159
|
+
await queue(collect);
|
|
160
|
+
await sink.close();
|
|
161
|
+
await ignoringFailure(async () => {
|
|
162
|
+
await client.ingest.envInstanceHandover({ deployEnv, envInstanceId });
|
|
163
|
+
});
|
|
164
|
+
await connection.close();
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Client } from '@connectrpc/connect';
|
|
2
|
+
import { CatalogService, IngestService, QueryService } from './gen/flowrensic/v1/services_pb.js';
|
|
3
|
+
export interface FlowrensicClient {
|
|
4
|
+
catalog: Client<typeof CatalogService>;
|
|
5
|
+
ingest: Client<typeof IngestService>;
|
|
6
|
+
query: Client<typeof QueryService>;
|
|
7
|
+
}
|
|
8
|
+
export interface FlowrensicClientOptions {
|
|
9
|
+
/** The access key of the env this client writes deploy states for. */
|
|
10
|
+
envKey?: string;
|
|
11
|
+
}
|
|
12
|
+
/** The header a deploy write carries the env's access key in. */
|
|
13
|
+
export declare const ENV_KEY_HEADER = "Flowrensic-Env-Key";
|
|
14
|
+
export declare function createFlowrensicClient(baseUrl: string, options?: FlowrensicClientOptions): FlowrensicClient;
|
|
15
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAoB,MAAM,qBAAqB,CAAC;AAGlF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEjG,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,iEAAiE;AACjE,eAAO,MAAM,cAAc,uBAAuB,CAAC;AASnD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CAWlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiC,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAajG,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAEnD,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,mBAAmB;YAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACpF,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,OAAO,GAA4B,EAAE;IAErC,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,OAAO;QACP,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KACtF,CAAC,CAAC;IACH,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC;QAChD,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC;QAC9C,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|