@glubean/sdk 0.8.4 → 0.9.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/dist/contract-http/adapter.d.ts +7 -1
- package/dist/contract-http/adapter.d.ts.map +1 -1
- package/dist/contract-http/adapter.js +41 -6
- package/dist/contract-http/adapter.js.map +1 -1
- package/dist/contract-types.d.ts +5 -0
- package/dist/contract-types.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/load/artifact.d.ts +40 -2
- package/dist/load/artifact.d.ts.map +1 -1
- package/dist/load/artifact.js +0 -12
- package/dist/load/artifact.js.map +1 -1
- package/dist/load/context.d.ts +5 -1
- package/dist/load/context.d.ts.map +1 -1
- package/dist/load/events.d.ts +11 -0
- package/dist/load/events.d.ts.map +1 -1
- package/dist/load/index.d.ts +3 -1
- package/dist/load/index.d.ts.map +1 -1
- package/dist/load/index.js +1 -0
- package/dist/load/index.js.map +1 -1
- package/dist/load/metrics.d.ts +71 -0
- package/dist/load/metrics.d.ts.map +1 -0
- package/dist/load/metrics.js +42 -0
- package/dist/load/metrics.js.map +1 -0
- package/dist/load/runner.d.ts +19 -1
- package/dist/load/runner.d.ts.map +1 -1
- package/dist/load/runner.js.map +1 -1
- package/dist/test/each-builder.d.ts.map +1 -1
- package/dist/test/each-builder.js +3 -1
- package/dist/test/each-builder.js.map +1 -1
- package/dist/test/extend.d.ts.map +1 -1
- package/dist/test/extend.js +4 -1
- package/dist/test/extend.js.map +1 -1
- package/dist/test/utils.d.ts +33 -1
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +100 -5
- package/dist/test/utils.js.map +1 -1
- package/dist/types.d.ts +104 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/load/index.d.ts
CHANGED
|
@@ -20,7 +20,9 @@ export { loadScenario, LoadBuilder } from "./builder.js";
|
|
|
20
20
|
export { isLoadBranchStep, isLoadPollStep } from "./scenario.js";
|
|
21
21
|
export type { LoadScenario, LoadScenarioMeta, LoadStepMeta, LoadStepDefinition, LoadBranchData, LoadPollData, LoadConditionSpec, LoadPollOpts, LoadFragmentBuilder, } from "./scenario.js";
|
|
22
22
|
export { loadRunner, loadMixEntry } from "./runner.js";
|
|
23
|
-
export type { LoadPlan, LoadRunnerConfig, LoadMixConfig, LoadMixEntry, AnyLoadRunnerConfig, LoadInputOption, LoadInputArgs, LoadDuration, LoadContinuationConfig, LoadPacingConfig, LoadThresholds, LoadThresholdScope, LoadReportConfig, LoadScenarioRef, LoadProducerSlotInfo, LoadIterationInfo, } from "./runner.js";
|
|
23
|
+
export type { LoadPlan, LoadRunnerConfig, LoadMixConfig, LoadMixEntry, AnyLoadRunnerConfig, LoadInputOption, LoadInputArgs, LoadDuration, LoadContinuationConfig, LoadPacingConfig, LoadThresholds, LoadThresholdScope, LoadCustomMetricThresholdScope, LoadReportConfig, LoadScenarioRef, LoadProducerSlotInfo, LoadIterationInfo, } from "./runner.js";
|
|
24
|
+
export { rate, trend, counter } from "./metrics.js";
|
|
25
|
+
export type { LoadMetricKind, LoadMetricDescriptor, LoadMetricDeclarations, LoadMetricTags, LoadMetricHandle, LoadMetricHandles, } from "./metrics.js";
|
|
24
26
|
export { projectLoadPlan } from "./projection.js";
|
|
25
27
|
export type { LoadProjection, LoadScenarioRefProjection } from "./projection.js";
|
|
26
28
|
export { parseDurationMs } from "./duration.js";
|
package/dist/load/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/load/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvD,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,mBAAmB,eAAe,CAAC;AAEnC,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,YAAY,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,GACX,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/load/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvD,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,8BAA8B,EAC9B,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEpD,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,mBAAmB,eAAe,CAAC;AAEnC,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,YAAY,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,UAAU,GACX,MAAM,aAAa,CAAC"}
|
package/dist/load/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { loadScenario, LoadBuilder } from "./builder.js";
|
|
2
2
|
export { isLoadBranchStep, isLoadPollStep } from "./scenario.js";
|
|
3
3
|
export { loadRunner, loadMixEntry } from "./runner.js";
|
|
4
|
+
export { rate, trend, counter } from "./metrics.js";
|
|
4
5
|
export { projectLoadPlan } from "./projection.js";
|
|
5
6
|
export { parseDurationMs } from "./duration.js";
|
|
6
7
|
export { feeder } from "./feeder.js";
|
package/dist/load/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/load/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAcjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/load/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAcjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsBvD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAmBhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load custom metrics — declared-up-front, folded aggregate dimensions.
|
|
3
|
+
*
|
|
4
|
+
* A custom metric is a user-defined aggregate (poll-success ratio per class,
|
|
5
|
+
* user-measured duration distribution, a summed counter) that the load reducer
|
|
6
|
+
* folds in O(1) alongside latency/statusCounts, and that thresholds can gate CI
|
|
7
|
+
* on. It is the load-mode replacement for the per-point `ctx.metric` removed in
|
|
8
|
+
* load mode (`LoadOmittedContextKeys`): an aggregate primitive instead of a
|
|
9
|
+
* per-event record, so it is safe under concurrency.
|
|
10
|
+
*
|
|
11
|
+
* Authoring: declare on the runner (`loadRunner({ metrics: { pollOk: rate() } })`)
|
|
12
|
+
* and fold inline in a step (`ctx.metrics.pollOk.add(ok, { class })`). Handles are
|
|
13
|
+
* permissively typed: a `loadScenario()` is authored independently of the
|
|
14
|
+
* `loadRunner()` that declares `metrics` and references it, so the declared set is
|
|
15
|
+
* not in scope at the step — `ctx.metrics.<id>` resolves to a generic handle, not
|
|
16
|
+
* a per-kind one. (Per-key typing can't be threaded to an already-built scenario
|
|
17
|
+
* closure, so it isn't offered rather than offered-but-unreachable.)
|
|
18
|
+
*
|
|
19
|
+
* The fold (reducer), `maxSeries` enforcement, and threshold evaluation live in
|
|
20
|
+
* @glubean/runner.
|
|
21
|
+
*
|
|
22
|
+
* Analogous to k6's Counter / Rate / Trend, so an external-engine adapter (M9)
|
|
23
|
+
* can map its native custom metrics onto the same artifact shape.
|
|
24
|
+
*/
|
|
25
|
+
/** The three folded custom-metric kinds. */
|
|
26
|
+
export type LoadMetricKind = "rate" | "trend" | "counter";
|
|
27
|
+
/**
|
|
28
|
+
* A declared custom metric, produced by `rate()` / `trend()` / `counter()` and
|
|
29
|
+
* passed to `loadRunner({ metrics })`. Static data (kind + optional unit), so
|
|
30
|
+
* cardinality/shape is known at build and projectable.
|
|
31
|
+
*/
|
|
32
|
+
export interface LoadMetricDescriptor<K extends LoadMetricKind = LoadMetricKind> {
|
|
33
|
+
readonly kind: K;
|
|
34
|
+
/** Display unit for a `trend` distribution (e.g. `"ms"`). */
|
|
35
|
+
readonly unit?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Low-cardinality tag set attached to a fold. Tags fan a metric into series
|
|
39
|
+
* (`class=extreme`); they MUST stay low-cardinality — a high-cardinality tag
|
|
40
|
+
* (`itemId`) is an author error the reducer surfaces via `maxSeries` truncation
|
|
41
|
+
* + an advisory, not a silent memory leak.
|
|
42
|
+
*/
|
|
43
|
+
export type LoadMetricTags = Record<string, string>;
|
|
44
|
+
/**
|
|
45
|
+
* A folding handle for one declared metric. The value's meaning is set by the
|
|
46
|
+
* metric's kind:
|
|
47
|
+
* - `rate`: pass a boolean outcome (a number folds as `!== 0`);
|
|
48
|
+
* - `counter`: an optional increment (default `+1`);
|
|
49
|
+
* - `trend`: a numeric sample.
|
|
50
|
+
* A value that doesn't fit the kind (or a non-finite number) is dropped, never
|
|
51
|
+
* folded — a bad `add(...)` must not fell an iteration under load.
|
|
52
|
+
*/
|
|
53
|
+
export interface LoadMetricHandle {
|
|
54
|
+
add(value?: boolean | number, tags?: LoadMetricTags): void;
|
|
55
|
+
}
|
|
56
|
+
/** `ctx.metrics` — declared metric ids resolve to a handle; an undeclared id is a no-op. */
|
|
57
|
+
export type LoadMetricHandles = Record<string, LoadMetricHandle>;
|
|
58
|
+
/** A declared set of custom metrics, as passed to `loadRunner({ metrics })`. */
|
|
59
|
+
export type LoadMetricDeclarations = Record<string, LoadMetricDescriptor>;
|
|
60
|
+
/** Declare a boolean-ratio metric (k6 Rate). */
|
|
61
|
+
export declare function rate(): LoadMetricDescriptor<"rate">;
|
|
62
|
+
/** Declare a numeric-distribution metric (k6 Trend). Optional display `unit`.
|
|
63
|
+
* Thresholds (`p50`..`p99`) are ms-shaped (`"<800ms"`, `"<2s"`) when the unit is
|
|
64
|
+
* `"ms"` or unset; any OTHER unit (`"bytes"`, `"items"`) is gated with bare
|
|
65
|
+
* numbers in that unit (`"<4096"`) — an `ms`/`s` suffix is rejected there. */
|
|
66
|
+
export declare function trend(options?: {
|
|
67
|
+
unit?: string;
|
|
68
|
+
}): LoadMetricDescriptor<"trend">;
|
|
69
|
+
/** Declare a summed counter metric (k6 Counter). */
|
|
70
|
+
export declare function counter(): LoadMetricDescriptor<"counter">;
|
|
71
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/load/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IAC7E,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC5D;AAED,4FAA4F;AAC5F,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAE1E,gDAAgD;AAChD,wBAAgB,IAAI,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAEnD;AAED;;;+EAG+E;AAC/E,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAIhF;AAED,oDAAoD;AACpD,wBAAgB,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAEzD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load custom metrics — declared-up-front, folded aggregate dimensions.
|
|
3
|
+
*
|
|
4
|
+
* A custom metric is a user-defined aggregate (poll-success ratio per class,
|
|
5
|
+
* user-measured duration distribution, a summed counter) that the load reducer
|
|
6
|
+
* folds in O(1) alongside latency/statusCounts, and that thresholds can gate CI
|
|
7
|
+
* on. It is the load-mode replacement for the per-point `ctx.metric` removed in
|
|
8
|
+
* load mode (`LoadOmittedContextKeys`): an aggregate primitive instead of a
|
|
9
|
+
* per-event record, so it is safe under concurrency.
|
|
10
|
+
*
|
|
11
|
+
* Authoring: declare on the runner (`loadRunner({ metrics: { pollOk: rate() } })`)
|
|
12
|
+
* and fold inline in a step (`ctx.metrics.pollOk.add(ok, { class })`). Handles are
|
|
13
|
+
* permissively typed: a `loadScenario()` is authored independently of the
|
|
14
|
+
* `loadRunner()` that declares `metrics` and references it, so the declared set is
|
|
15
|
+
* not in scope at the step — `ctx.metrics.<id>` resolves to a generic handle, not
|
|
16
|
+
* a per-kind one. (Per-key typing can't be threaded to an already-built scenario
|
|
17
|
+
* closure, so it isn't offered rather than offered-but-unreachable.)
|
|
18
|
+
*
|
|
19
|
+
* The fold (reducer), `maxSeries` enforcement, and threshold evaluation live in
|
|
20
|
+
* @glubean/runner.
|
|
21
|
+
*
|
|
22
|
+
* Analogous to k6's Counter / Rate / Trend, so an external-engine adapter (M9)
|
|
23
|
+
* can map its native custom metrics onto the same artifact shape.
|
|
24
|
+
*/
|
|
25
|
+
/** Declare a boolean-ratio metric (k6 Rate). */
|
|
26
|
+
export function rate() {
|
|
27
|
+
return { kind: "rate" };
|
|
28
|
+
}
|
|
29
|
+
/** Declare a numeric-distribution metric (k6 Trend). Optional display `unit`.
|
|
30
|
+
* Thresholds (`p50`..`p99`) are ms-shaped (`"<800ms"`, `"<2s"`) when the unit is
|
|
31
|
+
* `"ms"` or unset; any OTHER unit (`"bytes"`, `"items"`) is gated with bare
|
|
32
|
+
* numbers in that unit (`"<4096"`) — an `ms`/`s` suffix is rejected there. */
|
|
33
|
+
export function trend(options) {
|
|
34
|
+
return options?.unit !== undefined
|
|
35
|
+
? { kind: "trend", unit: options.unit }
|
|
36
|
+
: { kind: "trend" };
|
|
37
|
+
}
|
|
38
|
+
/** Declare a summed counter metric (k6 Counter). */
|
|
39
|
+
export function counter() {
|
|
40
|
+
return { kind: "counter" };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/load/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA2CH,gDAAgD;AAChD,MAAM,UAAU,IAAI;IAClB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;;+EAG+E;AAC/E,MAAM,UAAU,KAAK,CAAC,OAA2B;IAC/C,OAAO,OAAO,EAAE,IAAI,KAAK,SAAS;QAChC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QACvC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxB,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}
|
package/dist/load/runner.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { LoadBuilder } from "./builder.js";
|
|
13
13
|
import type { FeederBinding } from "./feeder.js";
|
|
14
14
|
import type { LoadProjection } from "./projection.js";
|
|
15
|
+
import type { LoadMetricDeclarations } from "./metrics.js";
|
|
15
16
|
import type { LoadScenario } from "./scenario.js";
|
|
16
17
|
import type { LoadAssertionFailureMode } from "./step.js";
|
|
17
18
|
/** A duration as milliseconds (number) or a human string like `"60s"` / `"2m"`. */
|
|
@@ -68,7 +69,19 @@ export interface LoadThresholdScope {
|
|
|
68
69
|
backlog?: string;
|
|
69
70
|
backpressureMs?: string;
|
|
70
71
|
}
|
|
71
|
-
/**
|
|
72
|
+
/** Threshold expressions for a custom metric. `rate`/`sum`/`count` apply to the
|
|
73
|
+
* matching kind; `p50`..`p99` gate a `trend` distribution. */
|
|
74
|
+
export interface LoadCustomMetricThresholdScope {
|
|
75
|
+
rate?: string;
|
|
76
|
+
sum?: string;
|
|
77
|
+
count?: string;
|
|
78
|
+
p50?: string;
|
|
79
|
+
p90?: string;
|
|
80
|
+
p95?: string;
|
|
81
|
+
p99?: string;
|
|
82
|
+
}
|
|
83
|
+
/** Structured thresholds. `endpoints` / `steps` are keyed by routeKey / stepId;
|
|
84
|
+
* `customMetric` is keyed by `metricId` or `metricId:tagKey=tagVal` (per series). */
|
|
72
85
|
export interface LoadThresholds {
|
|
73
86
|
transaction?: LoadThresholdScope;
|
|
74
87
|
primary?: LoadThresholdScope;
|
|
@@ -76,6 +89,7 @@ export interface LoadThresholds {
|
|
|
76
89
|
continuation?: LoadThresholdScope;
|
|
77
90
|
endpoints?: Record<string, LoadThresholdScope>;
|
|
78
91
|
steps?: Record<string, LoadThresholdScope>;
|
|
92
|
+
customMetric?: Record<string, LoadCustomMetricThresholdScope>;
|
|
79
93
|
}
|
|
80
94
|
/** Bounded report sampling caps. */
|
|
81
95
|
export interface LoadReportConfig {
|
|
@@ -97,6 +111,10 @@ interface LoadRunnerCommon {
|
|
|
97
111
|
};
|
|
98
112
|
thresholds?: LoadThresholds;
|
|
99
113
|
report?: LoadReportConfig;
|
|
114
|
+
/** Custom metrics to fold + gate, declared up front via `rate()`/`trend()`/
|
|
115
|
+
* `counter()`. Surfaced to steps as `ctx.metrics.<id>.add(...)` and folded
|
|
116
|
+
* into `summary.customMetrics`. */
|
|
117
|
+
metrics?: LoadMetricDeclarations;
|
|
100
118
|
/** How a run-level abort (stop / duration deadline / SIGINT) reaches in-flight
|
|
101
119
|
* requests.
|
|
102
120
|
* - `"precise"` (default): cancel in-flight HTTP at once. Uses a leak-free
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/load/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAE1D,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAAC,IAAI,GAAG,SAAS;IAC7C,GAAG,EAAE,IAAI,CAAC;IACV,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,YAAY,EAAE,oBAAoB,CAAC;IACnC,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,IAChD,MAAM,GACN,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;AAE5C,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;CACrD;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,GAAG,EAAE,YAAY,CAAA;KAAE,CAAC;CACrE;AAED,sFAAsF;AACtF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/load/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/load/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/load/runner.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/load/runner.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAsLlD,kFAAkF;AAClF,SAAS,aAAa,CACpB,QAAgB,EAChB,GAA4B,EAC5B,KAAa;IAEb,6EAA6E;IAC7E,0EAA0E;IAC1E,sEAAsE;IACtE,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC1D,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,OAAO,KAAK,CAAC,CAAC,kEAAkE;IAClF,CAAC,CAAC,CAAC;AACL,CAAC;AAwBD;;;;GAIG;AACH,SAAS,YAAY,CACnB,EAAU,EACV,MAA2B,EAC3B,GAA6B;IAE7B,MAAM,IAAI,GAAG;QACX,cAAc,EAAE,aAAsB;QACtC,EAAE;QACF,MAAM;QACN,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;QACxC,GAAG,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAChC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,OAAO,IAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,MAA2B,EAAY,EAAE,CAC3E,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAE3B,cAAc,CAAC,IAAI,GAAG,CAAsB,KAAsB,EAAE,EAAE;IACpE,OAAO,CACL,UAAkB,EAClB,OAGwD,EAC5C,EAAE,CACd,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAA8B,CAAC;QACjD,OAAO,YAAY,CACjB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAC3C,OAAO,CAAC,GAAG,EAAE,KAAK,CAAwB,EAC1C,SAAS,CACV,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,cAA8B,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAgC;IAEhC,OAAO,KAAgC,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"each-builder.d.ts","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,WAAW,EAGX,QAAQ,EAER,IAAI,EACJ,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAKrB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,WAAW,GAAG,WAAW,IAAI,CAC1E,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,CAAC,KACH,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAEvB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,WAAW,GAAG,WAAW,IAAI,CAC3E,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,CAAC,KACH,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,EACD,CAAC,EACD,GAAG,SAAS,WAAW,GAAG,WAAW,IACnC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,WAAW,CACtB,CAAC,GAAG,OAAO,EACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,SAAS,WAAW,GAAG,WAAW;IAErC,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAC,CAA+B;IAC9C,OAAO,CAAC,SAAS,CAAC,CAAkC;IAEpD,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAU;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAG,cAAc,CAAU;gBAGhD,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAC3C,QAAQ,UAAQ;IAUlB;;;;;;;;;OASG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAKxD;;;OAGG;IACH,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAK9B;;;OAGG;IACH,IAAI,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAK9B;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,EACR,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACtC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAK5B;;;;;;;;;;;;OAYG;IACH,QAAQ,CACN,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAKzB;;;;;;;;;;;OAWG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,IAAI,EACP,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAC5B;;OAEG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,IAAI,EACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC/B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAmB5B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,CAAC,IAAI,EACN,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GACjE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAI5B;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,IAAI,EACR,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GACjE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IAS5B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAMtB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAYnB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"each-builder.d.ts","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { registerTest } from "../internal.js";
|
|
2
2
|
import { toArray } from "../data.js";
|
|
3
|
-
import { interpolateTemplate } from "./utils.js";
|
|
3
|
+
import { buildEachRowMeta, interpolateTemplate } from "./utils.js";
|
|
4
4
|
/**
|
|
5
5
|
* Builder for data-driven tests with multi-step workflow support.
|
|
6
6
|
*
|
|
@@ -225,6 +225,7 @@ export class EachBuilder {
|
|
|
225
225
|
hasSetup: !!this._setup,
|
|
226
226
|
hasTeardown: !!this._teardown,
|
|
227
227
|
rowIndex: i,
|
|
228
|
+
each: buildEachRowMeta(this._baseMeta.id, row, i),
|
|
228
229
|
...(hasGroup ? { groupId: this._baseMeta.id } : {}),
|
|
229
230
|
...(this._parallel ? { parallel: true } : {}),
|
|
230
231
|
});
|
|
@@ -262,6 +263,7 @@ export class EachBuilder {
|
|
|
262
263
|
meta: s.meta,
|
|
263
264
|
fn: ((ctx, state) => s.fn(ctx, state, row)),
|
|
264
265
|
})),
|
|
266
|
+
each: buildEachRowMeta(this._baseMeta.id, row, index),
|
|
265
267
|
...(this._fixtures ? { fixtures: this._fixtures } : {}),
|
|
266
268
|
};
|
|
267
269
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"each-builder.js","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"each-builder.js","sourceRoot":"","sources":["../../src/test/each-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAEjB,IAAI,EACJ,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,aAAuC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,GAAG,SAAS,WAAW;IACnD,+DAA+D;IAC/D,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,4DAA4D;IAC5D,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhE;;;OAGG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EACnD,UAAU,EAAE,CAAC,GACZ,YAAY,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gDAAgD;IAChD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACvC,IAAI,EAAE,CAAC;QACV,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3D,IAAI,EAAE,CAAC;QACV,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAC1B,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,GAAG,CAAC,CAAC;KACrD,CAAC;CACH;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,EACxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAC5C,YAAY,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAEjB,IAAI,EACJ,WAAW,EACX,QAAQ,EACT,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,aAAuC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY,CAAC,GAAG,SAAS,WAAW;IACnD,+DAA+D;IAC/D,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,4DAA4D;IAC5D,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhE;;;OAGG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EACnD,UAAU,EAAE,CAAC,GACZ,YAAY,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gDAAgD;IAChD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACvC,IAAI,EAAE,CAAC;QACV,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7D,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb;QACD,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAC3B,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3D,IAAI,EAAE,CAAC;QACV,CACE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAC1B,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,GAAG,CAAC,CAAC;KACrD,CAAC;CACH;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,EACxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAC5C,YAAY,CAAC,GAAG,CAAC,CAoInB"}
|
package/dist/test/extend.js
CHANGED
|
@@ -2,7 +2,7 @@ import { registerTest } from "../internal.js";
|
|
|
2
2
|
import { toArray } from "../data.js";
|
|
3
3
|
import { TestBuilder } from "./builder.js";
|
|
4
4
|
import { EachBuilder } from "./each-builder.js";
|
|
5
|
-
import { normalizeEachTable, resolveBaseMeta, interpolateTemplate, selectPickExamples } from "./utils.js";
|
|
5
|
+
import { normalizeEachTable, resolveBaseMeta, interpolateTemplate, buildEachRowMeta, selectPickExamples } from "./utils.js";
|
|
6
6
|
/** Keys that cannot be used as extension names (they shadow core TestContext). */
|
|
7
7
|
export const EXTEND_RESERVED_KEYS = new Set(["vars", "secrets", "http"]);
|
|
8
8
|
/**
|
|
@@ -84,11 +84,13 @@ export function createExtendedTest(allFixtures) {
|
|
|
84
84
|
tags: allTags.length > 0 ? allTags : undefined,
|
|
85
85
|
rowIndex: index,
|
|
86
86
|
};
|
|
87
|
+
const eachMeta = buildEachRowMeta(baseMeta.id, row, index);
|
|
87
88
|
const testDef = {
|
|
88
89
|
meta,
|
|
89
90
|
type: "simple",
|
|
90
91
|
fn: (async (ctx) => await fn(ctx, row)),
|
|
91
92
|
fixtures: allFixtures,
|
|
93
|
+
each: eachMeta,
|
|
92
94
|
};
|
|
93
95
|
registerTest({
|
|
94
96
|
id: meta.id,
|
|
@@ -97,6 +99,7 @@ export function createExtendedTest(allFixtures) {
|
|
|
97
99
|
tags: allTags.length > 0 ? allTags : undefined,
|
|
98
100
|
description: meta.description,
|
|
99
101
|
rowIndex: index,
|
|
102
|
+
each: eachMeta,
|
|
100
103
|
...(hasGroup ? { groupId: baseMeta.id } : {}),
|
|
101
104
|
...(parallel ? { parallel: true } : {}),
|
|
102
105
|
});
|
package/dist/test/extend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../../src/test/extend.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5H,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAyDzE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAA6C;IAE7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,iDAAiD,GAAG,KAAK;gBACvD,kBAAkB,CAAC,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,OAAO,CACd,QAA2B,EAC3B,EAAgC;QAEhC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,IAAI,GAAa,OAAO,QAAQ,KAAK,QAAQ;gBACjD,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,OAAO,GAAS;gBACpB,IAAI;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,EAAmC;gBACvC,QAAQ,EAAE,WAAW;aACtB,CAAC;YAEF,YAAY,CAAC;gBACX,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;gBAC1B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAe,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,MAAM,GAAG,CACf,UAAa,EAC6B,EAAE;QAC5C,OAAO,kBAAkB,CAA6B;YACpD,GAAG,WAAW;YACd,GAAG,UAAU;SACd,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,GAAG,CAAoC,KAAuC,EAAE,OAAqB,EAAE,EAAE;QACnH,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAClD,OAAO,CAAC,CACN,QAA2B,EAC3B,EAAyC,EACF,EAAE;YACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,cAAc,CAAC;YAErD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,IAAI,WAAW,CAAkB,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM;gBACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAO,CAAC,GAA8B,EAAE,CAAC,CAAC,CAAC;gBAC9E,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,QAAQ,CAAC;YAEpC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBACtC,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,MAAM,WAAW,GAAG,aAAa;qBAC9B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,KAAK,GAAI,GAA+B,CAAC,KAAK,CAAC,CAAC;oBACtD,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpD,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,WAAW,CAAC,CAAC;gBAEhD,MAAM,IAAI,GAAa;oBACrB,GAAG,QAAQ;oBACX,EAAE;oBACF,IAAI;oBACJ,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;oBAC9C,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBAEF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE3D,MAAM,OAAO,GAAS;oBACpB,IAAI;oBACJ,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAqB,EAAE,GAAG,CAAC,CAAuB;oBAC/E,QAAQ,EAAE,WAAW;oBACrB,IAAI,EAAE,QAAQ;iBACf,CAAC;gBAEF,YAAY,CAAC;oBACX,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;oBAC1B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;oBAC9C,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,QAAQ;oBACd,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAA0C,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,GAAG,CACb,QAA2B,EAC3B,KAAK,GAAG,CAAC,EACT,EAAE;QACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO,OAAuC,CAAC;AACjD,CAAC"}
|
package/dist/test/utils.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - `selectPickExamples` — picks examples from a named map (respects `GLUBEAN_PICK` env)
|
|
10
10
|
* - `globToRegExp` — converts `*` glob patterns to RegExp (used by selectPickExamples)
|
|
11
11
|
*/
|
|
12
|
-
import type { TestMeta } from "../types.js";
|
|
12
|
+
import type { EachRowMeta, TestMeta } from "../types.js";
|
|
13
13
|
/**
|
|
14
14
|
* Interpolate `$key` placeholders in a template string with data values.
|
|
15
15
|
* Supports `$index` for the row index and `$key` for any key in the data object.
|
|
@@ -17,6 +17,38 @@ import type { TestMeta } from "../types.js";
|
|
|
17
17
|
* @internal
|
|
18
18
|
*/
|
|
19
19
|
export declare function interpolateTemplate(template: string, data: Record<string, unknown>, index: number): string;
|
|
20
|
+
/**
|
|
21
|
+
* True when an id/name template references the positional `$index` placeholder.
|
|
22
|
+
* `$index` makes the interpolated id reorder-unstable; this is the SDK's
|
|
23
|
+
* authoritative check (it owns interpolation, where the reserved `$index`
|
|
24
|
+
* shadows a data field literally named `index`). Word-boundary checked so
|
|
25
|
+
* `$indexed` (a data placeholder) does NOT count — mirrors the tokenizer.
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export declare function templateUsesIndex(template: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Build the reorder-stable per-row key: `interpolateTemplate` with the data
|
|
32
|
+
* fields ONLY, leaving the positional `$index` placeholder literal so an
|
|
33
|
+
* `$index`-based template stays detectable downstream. Same tokenizer as
|
|
34
|
+
* `interpolateTemplate` (a data field named `index` is shadowed by the
|
|
35
|
+
* reserved `$index` placeholder), minus the index substitution — so for a
|
|
36
|
+
* template that never references `$index`, `rowKey === id` exactly.
|
|
37
|
+
*
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export declare function interpolateRowKey(template: string, data: Record<string, unknown>): string;
|
|
41
|
+
/**
|
|
42
|
+
* Build the data-driven row provenance (`EachRowMeta`) for one generated
|
|
43
|
+
* per-row test — `idTemplate` + a reorder-stable `rowKey` + the `$index`
|
|
44
|
+
* stability flag — so Cloud derive can resolve a stable cross-run identity
|
|
45
|
+
* instead of only the final interpolated id. Shared by `test.each`,
|
|
46
|
+
* `test.pick`, and `EachBuilder`. `index` MUST be the same row index passed to
|
|
47
|
+
* `interpolateTemplate` for this row (i.e. the index into the filtered table).
|
|
48
|
+
*
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildEachRowMeta(idTemplate: string, data: Record<string, unknown>, index: number): EachRowMeta;
|
|
20
52
|
/**
|
|
21
53
|
* Resolve baseMeta from string or TestMeta input.
|
|
22
54
|
* @internal
|
package/dist/test/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+DzD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACZ,WAAW,CAOb;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAErE;AAQD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GACtC,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAM5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAalF;AAaD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAC3B,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAuB3B"}
|
package/dist/test/utils.js
CHANGED
|
@@ -1,3 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-pass `$placeholder` tokenizer shared by `interpolateTemplate` and
|
|
3
|
+
* `interpolateRowKey` so the interpolated id and the row key NEVER disagree on
|
|
4
|
+
* how a data field is substituted (the `rowKey === id` contract for stable
|
|
5
|
+
* templates depends on this).
|
|
6
|
+
*
|
|
7
|
+
* Semantics (matching the documented template contract, but collision-safe):
|
|
8
|
+
* - The reserved positional `$index` placeholder wins at every `$` position
|
|
9
|
+
* where the placeholder word is EXACTLY `index` (word-boundary checked, so
|
|
10
|
+
* `$indexed` is a normal data placeholder). It shadows a data field
|
|
11
|
+
* literally named `index`. `index === undefined` leaves it literal (the
|
|
12
|
+
* row-key mode).
|
|
13
|
+
* - Data keys match LONGEST-FIRST, so a key that is a prefix of another
|
|
14
|
+
* (`$id` vs `$id2`) or of a later placeholder can never corrupt it.
|
|
15
|
+
* - Substituted values are emitted verbatim in one pass — a value containing
|
|
16
|
+
* `$something` is never re-scanned (no value injection).
|
|
17
|
+
* - A `$` matching nothing stays literal.
|
|
18
|
+
*/
|
|
19
|
+
/** Placeholder-name character class — used only to word-boundary the reserved
|
|
20
|
+
* `$index` token (data keys themselves may contain any characters). */
|
|
21
|
+
const PLACEHOLDER_WORD = /[A-Za-z0-9_]/;
|
|
22
|
+
function interpolatePlaceholders(template, data, index) {
|
|
23
|
+
// Longest-first so a key that prefixes another key never wins the match.
|
|
24
|
+
const keys = Object.keys(data)
|
|
25
|
+
.filter((k) => k.length > 0 && k !== "index")
|
|
26
|
+
.sort((a, b) => b.length - a.length);
|
|
27
|
+
let out = "";
|
|
28
|
+
let i = 0;
|
|
29
|
+
while (i < template.length) {
|
|
30
|
+
const ch = template[i];
|
|
31
|
+
if (ch !== "$") {
|
|
32
|
+
out += ch;
|
|
33
|
+
i++;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const rest = template.slice(i + 1);
|
|
37
|
+
// Reserved positional placeholder — wins over data keys (documented
|
|
38
|
+
// shadowing), but only when the placeholder word is exactly `index`
|
|
39
|
+
// (word-boundary: `$indexed` is a data placeholder, not `$index` + "ed").
|
|
40
|
+
if (rest.startsWith("index") && !PLACEHOLDER_WORD.test(rest.charAt("index".length))) {
|
|
41
|
+
out += index === undefined ? "$index" : String(index);
|
|
42
|
+
i += "$index".length;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const key = keys.find((k) => rest.startsWith(k));
|
|
46
|
+
if (key !== undefined) {
|
|
47
|
+
out += String(data[key]);
|
|
48
|
+
i += 1 + key.length;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
out += "$";
|
|
52
|
+
i++;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
1
57
|
/**
|
|
2
58
|
* Interpolate `$key` placeholders in a template string with data values.
|
|
3
59
|
* Supports `$index` for the row index and `$key` for any key in the data object.
|
|
@@ -5,11 +61,50 @@
|
|
|
5
61
|
* @internal
|
|
6
62
|
*/
|
|
7
63
|
export function interpolateTemplate(template, data, index) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
64
|
+
return interpolatePlaceholders(template, data, index);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* True when an id/name template references the positional `$index` placeholder.
|
|
68
|
+
* `$index` makes the interpolated id reorder-unstable; this is the SDK's
|
|
69
|
+
* authoritative check (it owns interpolation, where the reserved `$index`
|
|
70
|
+
* shadows a data field literally named `index`). Word-boundary checked so
|
|
71
|
+
* `$indexed` (a data placeholder) does NOT count — mirrors the tokenizer.
|
|
72
|
+
*
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
export function templateUsesIndex(template) {
|
|
76
|
+
return /\$index(?![A-Za-z0-9_])/.test(template);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Build the reorder-stable per-row key: `interpolateTemplate` with the data
|
|
80
|
+
* fields ONLY, leaving the positional `$index` placeholder literal so an
|
|
81
|
+
* `$index`-based template stays detectable downstream. Same tokenizer as
|
|
82
|
+
* `interpolateTemplate` (a data field named `index` is shadowed by the
|
|
83
|
+
* reserved `$index` placeholder), minus the index substitution — so for a
|
|
84
|
+
* template that never references `$index`, `rowKey === id` exactly.
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
export function interpolateRowKey(template, data) {
|
|
89
|
+
return interpolatePlaceholders(template, data, undefined);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build the data-driven row provenance (`EachRowMeta`) for one generated
|
|
93
|
+
* per-row test — `idTemplate` + a reorder-stable `rowKey` + the `$index`
|
|
94
|
+
* stability flag — so Cloud derive can resolve a stable cross-run identity
|
|
95
|
+
* instead of only the final interpolated id. Shared by `test.each`,
|
|
96
|
+
* `test.pick`, and `EachBuilder`. `index` MUST be the same row index passed to
|
|
97
|
+
* `interpolateTemplate` for this row (i.e. the index into the filtered table).
|
|
98
|
+
*
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
export function buildEachRowMeta(idTemplate, data, index) {
|
|
102
|
+
return {
|
|
103
|
+
idTemplate,
|
|
104
|
+
index,
|
|
105
|
+
rowKey: interpolateRowKey(idTemplate, data),
|
|
106
|
+
stable: !templateUsesIndex(idTemplate),
|
|
107
|
+
};
|
|
13
108
|
}
|
|
14
109
|
/**
|
|
15
110
|
* Resolve baseMeta from string or TestMeta input.
|
package/dist/test/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"AAaA
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test/utils.ts"],"names":[],"mappings":"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"}
|