@loadstrike/loadstrike-sdk 1.0.26901 → 1.0.27101

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/esm/local.js CHANGED
@@ -40,7 +40,9 @@ const TRACKING_FEATURE_BY_KIND = {
40
40
  delegatestream: "endpoint.delegate_stream",
41
41
  nats: "endpoint.nats",
42
42
  redisstreams: "endpoint.redis_streams",
43
- sqs: "endpoint.sqs"
43
+ sqs: "endpoint.sqs",
44
+ grpc: "endpoint.grpc",
45
+ websocket: "endpoint.websocket"
44
46
  };
45
47
  const CI_ENVIRONMENT_VARIABLES = [
46
48
  "GITHUB_ACTIONS",
@@ -1604,6 +1604,112 @@ export class LoadStrikeContext {
1604
1604
  return this.assignState(this.values, scenarios, this.runArgs);
1605
1605
  }
1606
1606
  }
1607
+ const ACCESSIBILITY_TESTING_FEATURE = "testing.accessibility";
1608
+ const BROWSER_WEB_VITALS_FEATURE = "testing.browser_web_vitals";
1609
+ export class LoadStrikeAccessibility {
1610
+ static createScenario(name, options, check) {
1611
+ if (typeof name !== "string" || !name.trim()) {
1612
+ throw new Error("Scenario name must be provided.");
1613
+ }
1614
+ validateAbsoluteUrl(options?.url, "Accessibility check URL");
1615
+ if (typeof check !== "function") {
1616
+ throw new TypeError("Accessibility check callback must be provided.");
1617
+ }
1618
+ return LoadStrikeScenario
1619
+ .create(name, async (scenarioContext) => {
1620
+ const result = await check({ options, scenarioContext });
1621
+ const failure = evaluateAccessibilityResult(options, result);
1622
+ return failure
1623
+ ? LoadStrikeResponse.fail("accessibility", failure)
1624
+ : LoadStrikeResponse.ok("200", 0, `Accessibility check passed with ${(result.violations ?? []).length} violation(s).`);
1625
+ })
1626
+ .withoutWarmUp()
1627
+ .__loadStrikeWithInternalLicenseFeatures(ACCESSIBILITY_TESTING_FEATURE);
1628
+ }
1629
+ static CreateScenario(name, options, check) {
1630
+ return LoadStrikeAccessibility.createScenario(name, options, check);
1631
+ }
1632
+ }
1633
+ export class LoadStrikeBrowserWebVitals {
1634
+ static createScenario(name, options, measure) {
1635
+ if (typeof name !== "string" || !name.trim()) {
1636
+ throw new Error("Scenario name must be provided.");
1637
+ }
1638
+ validateAbsoluteUrl(options?.url, "Browser Web Vitals URL");
1639
+ if (typeof measure !== "function") {
1640
+ throw new TypeError("Browser Web Vitals measurement callback must be provided.");
1641
+ }
1642
+ return LoadStrikeScenario
1643
+ .create(name, async (scenarioContext) => {
1644
+ const result = await measure({ options, scenarioContext });
1645
+ const failure = evaluateWebVitalsResult(options, result);
1646
+ return failure
1647
+ ? LoadStrikeResponse.fail("web_vitals", failure)
1648
+ : LoadStrikeResponse.ok("200", 0, "Browser Web Vitals check passed.");
1649
+ })
1650
+ .withoutWarmUp()
1651
+ .__loadStrikeWithInternalLicenseFeatures(BROWSER_WEB_VITALS_FEATURE);
1652
+ }
1653
+ static CreateScenario(name, options, measure) {
1654
+ return LoadStrikeBrowserWebVitals.createScenario(name, options, measure);
1655
+ }
1656
+ }
1657
+ function validateAbsoluteUrl(value, label) {
1658
+ if (typeof value !== "string" || !value.trim()) {
1659
+ throw new Error(`${label} must be provided.`);
1660
+ }
1661
+ try {
1662
+ const parsed = new URL(value);
1663
+ if (!parsed.protocol || !parsed.host) {
1664
+ throw new Error("invalid");
1665
+ }
1666
+ }
1667
+ catch {
1668
+ throw new Error(`${label} must be an absolute URL.`);
1669
+ }
1670
+ }
1671
+ function evaluateAccessibilityResult(options, result) {
1672
+ if (!result) {
1673
+ return "Accessibility check did not return a result.";
1674
+ }
1675
+ const violations = Array.isArray(result.violations) ? result.violations : [];
1676
+ const maxViolations = Math.max(0, Number(options.maxViolations ?? 0));
1677
+ const critical = countAccessibilityImpact(violations, "critical");
1678
+ const serious = countAccessibilityImpact(violations, "serious");
1679
+ const maxCritical = Math.max(0, Number(options.maxCriticalViolations ?? 0));
1680
+ const maxSerious = Math.max(0, Number(options.maxSeriousViolations ?? 0));
1681
+ if (violations.length > maxViolations) {
1682
+ return `Accessibility violations ${violations.length} exceeded limit ${maxViolations}.`;
1683
+ }
1684
+ if (critical > maxCritical) {
1685
+ return `Critical accessibility violations ${critical} exceeded limit ${maxCritical}.`;
1686
+ }
1687
+ if (serious > maxSerious) {
1688
+ return `Serious accessibility violations ${serious} exceeded limit ${maxSerious}.`;
1689
+ }
1690
+ return "";
1691
+ }
1692
+ function countAccessibilityImpact(violations, impact) {
1693
+ return violations.filter((violation) => String(violation.impact ?? "").toLowerCase() === impact).length;
1694
+ }
1695
+ function evaluateWebVitalsResult(options, result) {
1696
+ if (!result) {
1697
+ return "Browser Web Vitals check did not return a result.";
1698
+ }
1699
+ return firstWebVitalViolation(["LCP", result.largestContentfulPaintMs, options.maxLargestContentfulPaintMs, "ms"], ["INP", result.interactionToNextPaintMs, options.maxInteractionToNextPaintMs, "ms"], ["CLS", result.cumulativeLayoutShift, options.maxCumulativeLayoutShift, ""], ["FCP", result.firstContentfulPaintMs, options.maxFirstContentfulPaintMs, "ms"], ["TTFB", result.timeToFirstByteMs, options.maxTimeToFirstByteMs, "ms"]);
1700
+ }
1701
+ function firstWebVitalViolation(...values) {
1702
+ for (const [name, actualRaw, limitRaw, unit] of values) {
1703
+ const actual = Number(actualRaw);
1704
+ const limit = Number(limitRaw);
1705
+ if (!Number.isFinite(actual) || !Number.isFinite(limit) || actual <= limit) {
1706
+ continue;
1707
+ }
1708
+ const suffix = unit ? ` ${unit}` : "";
1709
+ return `${name} ${actual}${suffix} exceeded limit ${limit}${suffix}.`;
1710
+ }
1711
+ return "";
1712
+ }
1607
1713
  export class LoadStrikeScenario {
1608
1714
  constructor(name, runHandler, initHandler, cleanHandler, loadSimulations, thresholds, trackingConfiguration, maxFailCount, withoutWarmUpValue, warmUpDurationSeconds, weight, restartIterationOnFail, internalLicenseFeatures = []) {
1609
1715
  this.name = name;
@@ -285,6 +285,74 @@ class PushDiffusionEndpointDefinitionModel extends TrafficEndpointDefinitionMode
285
285
  }
286
286
  }
287
287
  }
288
+ class GrpcEndpointDefinitionModel extends TrafficEndpointDefinitionModel {
289
+ constructor(initial) {
290
+ super(initial);
291
+ this.Kind = "Grpc";
292
+ this.Target = "";
293
+ this.ServiceName = "";
294
+ this.MethodName = "";
295
+ this.MethodType = "Unary";
296
+ this.DeadlineSeconds = 30;
297
+ this.ConnectionMetadata = {};
298
+ this.Metadata = {};
299
+ initializeGrpcEndpointDefinitionModel(this, initial);
300
+ }
301
+ Validate() {
302
+ super.Validate();
303
+ requireNonEmptyString(this.Target, "Target must be provided for gRPC endpoint definitions.");
304
+ requireNonEmptyString(this.ServiceName, "ServiceName must be provided for gRPC endpoint definitions.");
305
+ requireNonEmptyString(this.MethodName, "MethodName must be provided for gRPC endpoint definitions.");
306
+ requireNonEmptyString(this.MethodType, "MethodType must be provided for gRPC endpoint definitions.");
307
+ if (this.DeadlineSeconds <= 0) {
308
+ throw new RangeError("Deadline must be greater than zero.");
309
+ }
310
+ if (this.Mode === "Produce" && typeof this.ProduceAsync !== "function") {
311
+ throw new Error("ProduceAsync delegate must be provided when endpoint mode is Produce.");
312
+ }
313
+ if (this.Mode === "Consume" && typeof this.ConsumeAsync !== "function") {
314
+ throw new Error("ConsumeAsync delegate must be provided when endpoint mode is Consume.");
315
+ }
316
+ }
317
+ }
318
+ class WebSocketEndpointDefinitionModel extends TrafficEndpointDefinitionModel {
319
+ constructor(initial) {
320
+ super(initial);
321
+ this.Kind = "WebSocket";
322
+ this.Url = "";
323
+ this.Subprotocols = [];
324
+ this.ConnectTimeoutSeconds = 30;
325
+ this.CloseTimeoutSeconds = 5;
326
+ this.ConnectionMetadata = {};
327
+ initializeWebSocketEndpointDefinitionModel(this, initial);
328
+ }
329
+ Validate() {
330
+ super.Validate();
331
+ const url = requireNonEmptyString(this.Url, "Url must be provided for WebSocket endpoint definitions.");
332
+ let parsed;
333
+ try {
334
+ parsed = new URL(url);
335
+ }
336
+ catch {
337
+ throw new Error("Url must be an absolute ws:// or wss:// URI.");
338
+ }
339
+ if (parsed.protocol !== "ws:" && parsed.protocol !== "wss:") {
340
+ throw new Error("Url must be an absolute ws:// or wss:// URI.");
341
+ }
342
+ if (this.ConnectTimeoutSeconds <= 0) {
343
+ throw new RangeError("ConnectTimeout must be greater than zero.");
344
+ }
345
+ if (this.CloseTimeoutSeconds <= 0) {
346
+ throw new RangeError("CloseTimeout must be greater than zero.");
347
+ }
348
+ if (this.Mode === "Produce" && typeof this.ProduceAsync !== "function") {
349
+ throw new Error("ProduceAsync delegate must be provided when endpoint mode is Produce.");
350
+ }
351
+ if (this.Mode === "Consume" && typeof this.ConsumeAsync !== "function") {
352
+ throw new Error("ConsumeAsync delegate must be provided when endpoint mode is Consume.");
353
+ }
354
+ }
355
+ }
288
356
  export const TrafficEndpointDefinition = TrafficEndpointDefinitionModel;
289
357
  export const HttpEndpointDefinition = HttpEndpointDefinitionModel;
290
358
  export const KafkaEndpointDefinition = KafkaEndpointDefinitionModel;
@@ -295,6 +363,8 @@ export const AzureEventHubsEndpointDefinition = AzureEventHubsEndpointDefinition
295
363
  export const SqsEndpointDefinition = SqsEndpointDefinitionModel;
296
364
  export const DelegateStreamEndpointDefinition = DelegateStreamEndpointDefinitionModel;
297
365
  export const PushDiffusionEndpointDefinition = PushDiffusionEndpointDefinitionModel;
366
+ export const GrpcEndpointDefinition = GrpcEndpointDefinitionModel;
367
+ export const WebSocketEndpointDefinition = WebSocketEndpointDefinitionModel;
298
368
  export const HttpOAuth2ClientCredentialsOptions = HttpOAuth2ClientCredentialsOptionsModel;
299
369
  export const HttpAuthOptions = HttpAuthOptionsModel;
300
370
  export const KafkaSaslOptions = KafkaSaslOptionsModel;
@@ -744,6 +814,101 @@ function initializePushDiffusionEndpointDefinitionModel(target, initial) {
744
814
  target.SubscribeAsync = subscribeAsync;
745
815
  }
746
816
  }
817
+ function initializeGrpcEndpointDefinitionModel(target, initial) {
818
+ const raw = asRecordOrEmpty(initial);
819
+ const targetUrl = pickOptionalEndpointString(raw, "Target", "target");
820
+ if (targetUrl) {
821
+ target.Target = targetUrl;
822
+ }
823
+ const serviceName = pickOptionalEndpointString(raw, "ServiceName", "serviceName");
824
+ if (serviceName) {
825
+ target.ServiceName = serviceName;
826
+ }
827
+ const methodName = pickOptionalEndpointString(raw, "MethodName", "methodName");
828
+ if (methodName) {
829
+ target.MethodName = methodName;
830
+ }
831
+ const methodType = pickOptionalEndpointString(raw, "MethodType", "methodType");
832
+ if (methodType) {
833
+ target.MethodType = methodType;
834
+ }
835
+ const deadlineMs = pickOptionalEndpointNumber(raw, "DeadlineMs", "deadlineMs");
836
+ const deadlineSeconds = pickOptionalEndpointNumber(raw, "DeadlineSeconds", "deadlineSeconds", "Deadline", "deadline");
837
+ if (deadlineMs != null) {
838
+ target.DeadlineSeconds = deadlineMs / 1000;
839
+ }
840
+ else if (deadlineSeconds != null) {
841
+ target.DeadlineSeconds = deadlineSeconds;
842
+ }
843
+ const produce = pickEndpointFunction(raw, "Produce", "produce");
844
+ if (produce) {
845
+ target.Produce = produce;
846
+ }
847
+ const consume = pickEndpointFunction(raw, "Consume", "consume");
848
+ if (consume) {
849
+ target.Consume = consume;
850
+ }
851
+ const produceAsync = pickEndpointFunction(raw, "ProduceAsync", "produceAsync");
852
+ if (produceAsync) {
853
+ target.ProduceAsync = produceAsync;
854
+ }
855
+ const consumeAsync = pickEndpointFunction(raw, "ConsumeAsync", "consumeAsync");
856
+ if (consumeAsync) {
857
+ target.ConsumeAsync = consumeAsync;
858
+ }
859
+ if (hasAnyEndpointField(raw, ["ConnectionMetadata", "connectionMetadata"])) {
860
+ target.ConnectionMetadata = pickEndpointStringRecord(raw, "ConnectionMetadata", "connectionMetadata");
861
+ }
862
+ if (hasAnyEndpointField(raw, ["Metadata", "metadata"])) {
863
+ target.Metadata = pickEndpointStringRecord(raw, "Metadata", "metadata");
864
+ }
865
+ }
866
+ function initializeWebSocketEndpointDefinitionModel(target, initial) {
867
+ const raw = asRecordOrEmpty(initial);
868
+ const url = pickOptionalEndpointString(raw, "Url", "url");
869
+ if (url) {
870
+ target.Url = url;
871
+ }
872
+ const subprotocols = pickEndpointStringArray(raw, "Subprotocols", "subprotocols");
873
+ if (subprotocols) {
874
+ target.Subprotocols = subprotocols;
875
+ }
876
+ const connectMs = pickOptionalEndpointNumber(raw, "ConnectTimeoutMs", "connectTimeoutMs");
877
+ const connectSeconds = pickOptionalEndpointNumber(raw, "ConnectTimeoutSeconds", "connectTimeoutSeconds", "ConnectTimeout", "connectTimeout");
878
+ if (connectMs != null) {
879
+ target.ConnectTimeoutSeconds = connectMs / 1000;
880
+ }
881
+ else if (connectSeconds != null) {
882
+ target.ConnectTimeoutSeconds = connectSeconds;
883
+ }
884
+ const closeMs = pickOptionalEndpointNumber(raw, "CloseTimeoutMs", "closeTimeoutMs");
885
+ const closeSeconds = pickOptionalEndpointNumber(raw, "CloseTimeoutSeconds", "closeTimeoutSeconds", "CloseTimeout", "closeTimeout");
886
+ if (closeMs != null) {
887
+ target.CloseTimeoutSeconds = closeMs / 1000;
888
+ }
889
+ else if (closeSeconds != null) {
890
+ target.CloseTimeoutSeconds = closeSeconds;
891
+ }
892
+ const produce = pickEndpointFunction(raw, "Produce", "produce");
893
+ if (produce) {
894
+ target.Produce = produce;
895
+ }
896
+ const consume = pickEndpointFunction(raw, "Consume", "consume");
897
+ if (consume) {
898
+ target.Consume = consume;
899
+ }
900
+ const produceAsync = pickEndpointFunction(raw, "ProduceAsync", "produceAsync");
901
+ if (produceAsync) {
902
+ target.ProduceAsync = produceAsync;
903
+ }
904
+ const consumeAsync = pickEndpointFunction(raw, "ConsumeAsync", "consumeAsync");
905
+ if (consumeAsync) {
906
+ target.ConsumeAsync = consumeAsync;
907
+ }
908
+ if (hasAnyEndpointField(raw, ["ConnectionMetadata", "connectionMetadata"])) {
909
+ target.ConnectionMetadata = pickEndpointStringRecord(raw, "ConnectionMetadata", "connectionMetadata");
910
+ }
911
+ }
747
912
  function validateTrafficEndpointDefinitionModel(target) {
748
913
  requireNonEmptyString(target.Name, "Endpoint name must be provided.");
749
914
  if (target.Mode !== "Produce" && target.Mode !== "Consume") {
@@ -1878,6 +2043,10 @@ class PushDiffusionEndpointAdapter extends CallbackAdapter {
1878
2043
  }
1879
2044
  class DelegateStreamEndpointAdapter extends CallbackAdapter {
1880
2045
  }
2046
+ class GrpcEndpointAdapter extends CallbackAdapter {
2047
+ }
2048
+ class WebSocketEndpointAdapter extends CallbackAdapter {
2049
+ }
1881
2050
  export class EndpointAdapterFactory {
1882
2051
  static create(endpoint) {
1883
2052
  if (endpoint instanceof TrafficEndpointDefinitionModel) {
@@ -1904,6 +2073,10 @@ export class EndpointAdapterFactory {
1904
2073
  return new PushDiffusionEndpointAdapter(normalized);
1905
2074
  case "DelegateStream":
1906
2075
  return new DelegateStreamEndpointAdapter(normalized);
2076
+ case "Grpc":
2077
+ return new GrpcEndpointAdapter(normalized);
2078
+ case "WebSocket":
2079
+ return new WebSocketEndpointAdapter(normalized);
1907
2080
  default:
1908
2081
  throw new Error(`Unsupported endpoint kind: ${String(normalized?.kind ?? "")}.`);
1909
2082
  }
@@ -2077,6 +2250,62 @@ const DELEGATE_STREAM_ENDPOINT_FLAT_KEYS = [
2077
2250
  "ConnectionMetadata",
2078
2251
  "connectionMetadata"
2079
2252
  ];
2253
+ const GRPC_ENDPOINT_FLAT_KEYS = [
2254
+ "Target",
2255
+ "target",
2256
+ "ServiceName",
2257
+ "serviceName",
2258
+ "MethodName",
2259
+ "methodName",
2260
+ "MethodType",
2261
+ "methodType",
2262
+ "Deadline",
2263
+ "deadline",
2264
+ "DeadlineSeconds",
2265
+ "deadlineSeconds",
2266
+ "DeadlineMs",
2267
+ "deadlineMs",
2268
+ "Metadata",
2269
+ "metadata",
2270
+ "Produce",
2271
+ "produce",
2272
+ "Consume",
2273
+ "consume",
2274
+ "ProduceAsync",
2275
+ "produceAsync",
2276
+ "ConsumeAsync",
2277
+ "consumeAsync",
2278
+ "ConnectionMetadata",
2279
+ "connectionMetadata"
2280
+ ];
2281
+ const WEB_SOCKET_ENDPOINT_FLAT_KEYS = [
2282
+ "Url",
2283
+ "url",
2284
+ "Subprotocols",
2285
+ "subprotocols",
2286
+ "ConnectTimeout",
2287
+ "connectTimeout",
2288
+ "ConnectTimeoutSeconds",
2289
+ "connectTimeoutSeconds",
2290
+ "ConnectTimeoutMs",
2291
+ "connectTimeoutMs",
2292
+ "CloseTimeout",
2293
+ "closeTimeout",
2294
+ "CloseTimeoutSeconds",
2295
+ "closeTimeoutSeconds",
2296
+ "CloseTimeoutMs",
2297
+ "closeTimeoutMs",
2298
+ "Produce",
2299
+ "produce",
2300
+ "Consume",
2301
+ "consume",
2302
+ "ProduceAsync",
2303
+ "produceAsync",
2304
+ "ConsumeAsync",
2305
+ "consumeAsync",
2306
+ "ConnectionMetadata",
2307
+ "connectionMetadata"
2308
+ ];
2080
2309
  function normalizeEndpointDefinition(endpoint) {
2081
2310
  if (!endpoint || typeof endpoint !== "object") {
2082
2311
  return endpoint;
@@ -2111,7 +2340,9 @@ function normalizeEndpointDefinition(endpoint) {
2111
2340
  azureEventHubs: normalizeProtocolOptions(pickEndpointTransportRecord(raw, kind, "AzureEventHubs", ["azureEventHubs", "AzureEventHubs"], AZURE_EVENT_HUBS_ENDPOINT_FLAT_KEYS)),
2112
2341
  sqs: normalizeProtocolOptions(pickEndpointTransportRecord(raw, kind, "Sqs", ["sqs", "Sqs"], SQS_ENDPOINT_FLAT_KEYS)),
2113
2342
  pushDiffusion: normalizeProtocolOptions(pickEndpointTransportRecord(raw, kind, "PushDiffusion", ["pushDiffusion", "PushDiffusion"], PUSH_DIFFUSION_ENDPOINT_FLAT_KEYS)),
2114
- delegate: normalizeDelegateEndpointOptions(pickEndpointTransportRecord(raw, kind, "DelegateStream", ["delegate", "Delegate", "DelegateStream"], DELEGATE_STREAM_ENDPOINT_FLAT_KEYS))
2343
+ delegate: normalizeDelegateEndpointOptions(pickEndpointTransportRecord(raw, kind, "DelegateStream", ["delegate", "Delegate", "DelegateStream"], DELEGATE_STREAM_ENDPOINT_FLAT_KEYS)),
2344
+ grpc: normalizeProtocolOptions(pickEndpointTransportRecord(raw, kind, "Grpc", ["grpc", "Grpc"], GRPC_ENDPOINT_FLAT_KEYS)),
2345
+ webSocket: normalizeProtocolOptions(pickEndpointTransportRecord(raw, kind, "WebSocket", ["webSocket", "WebSocket"], WEB_SOCKET_ENDPOINT_FLAT_KEYS))
2115
2346
  };
2116
2347
  }
2117
2348
  function resolveEndpointKind(raw) {
@@ -2197,6 +2428,28 @@ function resolveEndpointKind(raw) {
2197
2428
  ])) {
2198
2429
  return "PushDiffusion";
2199
2430
  }
2431
+ if (Object.keys(pickEndpointRecord(raw, "grpc", "Grpc")).length || hasAnyEndpointField(raw, [
2432
+ "Target",
2433
+ "target",
2434
+ "ServiceName",
2435
+ "serviceName",
2436
+ "MethodName",
2437
+ "methodName",
2438
+ "MethodType",
2439
+ "methodType"
2440
+ ])) {
2441
+ return "Grpc";
2442
+ }
2443
+ if (Object.keys(pickEndpointRecord(raw, "webSocket", "WebSocket")).length || hasAnyEndpointField(raw, [
2444
+ "Subprotocols",
2445
+ "subprotocols",
2446
+ "ConnectTimeoutSeconds",
2447
+ "connectTimeoutSeconds",
2448
+ "CloseTimeoutSeconds",
2449
+ "closeTimeoutSeconds"
2450
+ ])) {
2451
+ return "WebSocket";
2452
+ }
2200
2453
  if (Object.keys(pickEndpointRecord(raw, "delegate", "Delegate", "DelegateStream")).length || hasAnyEndpointField(raw, [
2201
2454
  "Produce",
2202
2455
  "produce",
@@ -2440,10 +2693,8 @@ function validateEndpointDefinition(endpoint) {
2440
2693
  if (mode !== "Produce" && mode !== "Consume") {
2441
2694
  throw new Error(`Unsupported endpoint mode: ${mode}.`);
2442
2695
  }
2443
- const hasProduceDelegate = typeof endpoint.delegate?.produce === "function"
2444
- || typeof endpoint.delegate?.produceAsync === "function";
2445
- const hasConsumeDelegate = typeof endpoint.delegate?.consume === "function"
2446
- || typeof endpoint.delegate?.consumeAsync === "function";
2696
+ const hasProduceDelegate = Boolean(resolveProduceDelegate(endpoint) || resolveStructuredProduceDelegate(endpoint));
2697
+ const hasConsumeDelegate = Boolean(resolveConsumeDelegate(endpoint) || resolveStructuredConsumeDelegate(endpoint) || resolveStructuredConsumeStreamDelegate(endpoint));
2447
2698
  const hasModeDelegate = mode === "Produce" ? hasProduceDelegate : hasConsumeDelegate;
2448
2699
  switch (kind) {
2449
2700
  case "Http":
@@ -2473,6 +2724,12 @@ function validateEndpointDefinition(endpoint) {
2473
2724
  case "DelegateStream":
2474
2725
  validateDelegateStreamEndpoint(endpoint, mode);
2475
2726
  return;
2727
+ case "Grpc":
2728
+ validateGrpcEndpoint(endpoint, mode);
2729
+ return;
2730
+ case "WebSocket":
2731
+ validateWebSocketEndpoint(endpoint, mode);
2732
+ return;
2476
2733
  default:
2477
2734
  throw new Error(`Unsupported endpoint kind: ${kind}.`);
2478
2735
  }
@@ -2548,6 +2805,57 @@ function validateDelegateStreamEndpoint(endpoint, mode) {
2548
2805
  throw new Error("ConsumeAsync delegate must be provided when endpoint mode is Consume.");
2549
2806
  }
2550
2807
  }
2808
+ function validateGrpcEndpoint(endpoint, mode) {
2809
+ const options = asRecordOrEmpty(endpoint.grpc);
2810
+ requireNonEmptyString(optionString(options, "Target", "target"), "Target must be provided for gRPC endpoint definitions.");
2811
+ requireNonEmptyString(optionString(options, "ServiceName", "serviceName"), "ServiceName must be provided for gRPC endpoint definitions.");
2812
+ requireNonEmptyString(optionString(options, "MethodName", "methodName"), "MethodName must be provided for gRPC endpoint definitions.");
2813
+ requireNonEmptyString(optionString(options, "MethodType", "methodType") || "Unary", "MethodType must be provided for gRPC endpoint definitions.");
2814
+ const deadlineMs = optionNumber(options, "DeadlineMs", "deadlineMs");
2815
+ const deadlineSeconds = optionNumber(options, "DeadlineSeconds", "deadlineSeconds", "Deadline", "deadline");
2816
+ if ((hasOptionValue(options, "DeadlineMs", "deadlineMs") && deadlineMs <= 0)
2817
+ || (hasOptionValue(options, "DeadlineSeconds", "deadlineSeconds", "Deadline", "deadline") && deadlineSeconds <= 0)) {
2818
+ throw new RangeError("Deadline must be greater than zero.");
2819
+ }
2820
+ if (mode === "Produce" && !resolveStructuredProduceDelegate(endpoint) && !resolveProduceDelegate(endpoint)) {
2821
+ throw new Error("ProduceAsync delegate must be provided when endpoint mode is Produce.");
2822
+ }
2823
+ if (mode === "Consume" && !resolveStructuredConsumeDelegate(endpoint) && !resolveStructuredConsumeStreamDelegate(endpoint) && !resolveConsumeDelegate(endpoint)) {
2824
+ throw new Error("ConsumeAsync delegate must be provided when endpoint mode is Consume.");
2825
+ }
2826
+ }
2827
+ function validateWebSocketEndpoint(endpoint, mode) {
2828
+ const options = asRecordOrEmpty(endpoint.webSocket);
2829
+ const url = requireNonEmptyString(optionString(options, "Url", "url"), "Url must be provided for WebSocket endpoint definitions.");
2830
+ let parsed;
2831
+ try {
2832
+ parsed = new URL(url);
2833
+ }
2834
+ catch {
2835
+ throw new Error("Url must be an absolute ws:// or wss:// URI.");
2836
+ }
2837
+ if (parsed.protocol !== "ws:" && parsed.protocol !== "wss:") {
2838
+ throw new Error("Url must be an absolute ws:// or wss:// URI.");
2839
+ }
2840
+ const connectMs = optionNumber(options, "ConnectTimeoutMs", "connectTimeoutMs");
2841
+ const connectSeconds = optionNumber(options, "ConnectTimeoutSeconds", "connectTimeoutSeconds", "ConnectTimeout", "connectTimeout");
2842
+ const closeMs = optionNumber(options, "CloseTimeoutMs", "closeTimeoutMs");
2843
+ const closeSeconds = optionNumber(options, "CloseTimeoutSeconds", "closeTimeoutSeconds", "CloseTimeout", "closeTimeout");
2844
+ if ((hasOptionValue(options, "ConnectTimeoutMs", "connectTimeoutMs") && connectMs <= 0)
2845
+ || (hasOptionValue(options, "ConnectTimeoutSeconds", "connectTimeoutSeconds", "ConnectTimeout", "connectTimeout") && connectSeconds <= 0)) {
2846
+ throw new RangeError("ConnectTimeout must be greater than zero.");
2847
+ }
2848
+ if ((hasOptionValue(options, "CloseTimeoutMs", "closeTimeoutMs") && closeMs <= 0)
2849
+ || (hasOptionValue(options, "CloseTimeoutSeconds", "closeTimeoutSeconds", "CloseTimeout", "closeTimeout") && closeSeconds <= 0)) {
2850
+ throw new RangeError("CloseTimeout must be greater than zero.");
2851
+ }
2852
+ if (mode === "Produce" && !resolveStructuredProduceDelegate(endpoint) && !resolveProduceDelegate(endpoint)) {
2853
+ throw new Error("ProduceAsync delegate must be provided when endpoint mode is Produce.");
2854
+ }
2855
+ if (mode === "Consume" && !resolveStructuredConsumeDelegate(endpoint) && !resolveStructuredConsumeStreamDelegate(endpoint) && !resolveConsumeDelegate(endpoint)) {
2856
+ throw new Error("ConsumeAsync delegate must be provided when endpoint mode is Consume.");
2857
+ }
2858
+ }
2551
2859
  function validateHttpAuthOptions(options) {
2552
2860
  const auth = options.auth;
2553
2861
  if (!auth) {
@@ -3190,6 +3498,10 @@ function createDelegateRequestEndpointView(endpoint) {
3190
3498
  return new AzureEventHubsEndpointDefinition(endpoint);
3191
3499
  case "PushDiffusion":
3192
3500
  return new PushDiffusionEndpointDefinition(endpoint);
3501
+ case "Grpc":
3502
+ return new GrpcEndpointDefinition(endpoint);
3503
+ case "WebSocket":
3504
+ return new WebSocketEndpointDefinition(endpoint);
3193
3505
  default:
3194
3506
  return new DelegateStreamEndpointDefinition(endpoint);
3195
3507
  }
@@ -3408,12 +3720,20 @@ function parseBodyObject(body) {
3408
3720
  function resolveStructuredProduceDelegate(endpoint) {
3409
3721
  return endpoint.delegate?.produceAsync
3410
3722
  ?? endpoint.pushDiffusion?.PublishAsync
3411
- ?? endpoint.pushDiffusion?.publishAsync;
3723
+ ?? endpoint.pushDiffusion?.publishAsync
3724
+ ?? endpoint.grpc?.ProduceAsync
3725
+ ?? endpoint.grpc?.produceAsync
3726
+ ?? endpoint.webSocket?.ProduceAsync
3727
+ ?? endpoint.webSocket?.produceAsync;
3412
3728
  }
3413
3729
  function resolveStructuredConsumeDelegate(endpoint) {
3414
3730
  const delegate = endpoint.delegate?.consumeAsync
3415
3731
  ?? endpoint.pushDiffusion?.SubscribeAsync
3416
- ?? endpoint.pushDiffusion?.subscribeAsync;
3732
+ ?? endpoint.pushDiffusion?.subscribeAsync
3733
+ ?? endpoint.grpc?.ConsumeAsync
3734
+ ?? endpoint.grpc?.consumeAsync
3735
+ ?? endpoint.webSocket?.ConsumeAsync
3736
+ ?? endpoint.webSocket?.consumeAsync;
3417
3737
  return typeof delegate === "function" && delegate.length === 0
3418
3738
  ? delegate
3419
3739
  : undefined;
@@ -3421,22 +3741,36 @@ function resolveStructuredConsumeDelegate(endpoint) {
3421
3741
  function resolveStructuredConsumeStreamDelegate(endpoint) {
3422
3742
  const delegate = endpoint.delegate?.consumeAsync
3423
3743
  ?? endpoint.pushDiffusion?.SubscribeAsync
3424
- ?? endpoint.pushDiffusion?.subscribeAsync;
3744
+ ?? endpoint.pushDiffusion?.subscribeAsync
3745
+ ?? endpoint.grpc?.ConsumeAsync
3746
+ ?? endpoint.grpc?.consumeAsync
3747
+ ?? endpoint.webSocket?.ConsumeAsync
3748
+ ?? endpoint.webSocket?.consumeAsync;
3425
3749
  return typeof delegate === "function" && delegate.length > 0
3426
3750
  ? delegate
3427
3751
  : undefined;
3428
3752
  }
3429
3753
  function resolveProduceDelegate(endpoint) {
3430
- return endpoint.delegate?.produce;
3754
+ return endpoint.delegate?.produce
3755
+ ?? endpoint.grpc?.Produce
3756
+ ?? endpoint.grpc?.produce
3757
+ ?? endpoint.webSocket?.Produce
3758
+ ?? endpoint.webSocket?.produce;
3431
3759
  }
3432
3760
  function resolveConsumeDelegate(endpoint) {
3433
- return endpoint.delegate?.consume;
3761
+ return endpoint.delegate?.consume
3762
+ ?? endpoint.grpc?.Consume
3763
+ ?? endpoint.grpc?.consume
3764
+ ?? endpoint.webSocket?.Consume
3765
+ ?? endpoint.webSocket?.consume;
3434
3766
  }
3435
3767
  function resolveConnectionMetadata(endpoint) {
3436
3768
  return {
3437
3769
  ...(endpoint.connectionMetadata ?? {}),
3438
3770
  ...(endpoint.delegate?.connectionMetadata ?? {}),
3439
- ...toStringRecord(endpoint.pushDiffusion?.ConnectionProperties ?? endpoint.pushDiffusion?.connectionProperties)
3771
+ ...toStringRecord(endpoint.pushDiffusion?.ConnectionProperties ?? endpoint.pushDiffusion?.connectionProperties),
3772
+ ...toStringRecord(endpoint.grpc?.ConnectionMetadata ?? endpoint.grpc?.connectionMetadata),
3773
+ ...toStringRecord(endpoint.webSocket?.ConnectionMetadata ?? endpoint.webSocket?.connectionMetadata)
3440
3774
  };
3441
3775
  }
3442
3776
  function isStructuredProduceResult(value) {
@@ -111,6 +111,8 @@ export interface LoadStrikeEndpointSpec {
111
111
  Sqs?: LoadStrikeSqsEndpointOptions;
112
112
  DelegateStream?: LoadStrikeDelegateEndpointOptions;
113
113
  PushDiffusion?: LoadStrikePushDiffusionEndpointOptions;
114
+ Grpc?: LoadStrikeGrpcEndpointOptions;
115
+ WebSocket?: LoadStrikeWebSocketEndpointOptions;
114
116
  }
115
117
  export interface LoadStrikeHttpEndpointOptions {
116
118
  Url?: string;
@@ -230,6 +232,22 @@ export interface LoadStrikePushDiffusionEndpointOptions {
230
232
  PublishCallbackUrl?: string;
231
233
  SubscribeCallbackUrl?: string;
232
234
  }
235
+ export interface LoadStrikeGrpcEndpointOptions {
236
+ Target?: string;
237
+ ServiceName?: string;
238
+ MethodName?: string;
239
+ MethodType?: string;
240
+ DeadlineSeconds?: number;
241
+ Metadata?: Record<string, string>;
242
+ ConnectionMetadata?: Record<string, string>;
243
+ }
244
+ export interface LoadStrikeWebSocketEndpointOptions {
245
+ Url?: string;
246
+ Subprotocols?: string[];
247
+ ConnectTimeoutSeconds?: number;
248
+ CloseTimeoutSeconds?: number;
249
+ ConnectionMetadata?: Record<string, string>;
250
+ }
233
251
  export interface LoadStrikeReportingSinkSpec {
234
252
  Kind: string;
235
253
  InfluxDb?: LoadStrikeInfluxDbSinkOptions;
@@ -1,12 +1,12 @@
1
- export type { LoadStrikeDateValue, LoadStrikeObject, LoadStrikeRunContext as LoadStrikeContractRunContext, LoadStrikeScenarioSpec, LoadStrikeLoadSimulationSpec, LoadStrikeThresholdSpec, LoadStrikeTrackingConfigurationSpec, LoadStrikeCorrelationStoreSpec, LoadStrikeRedisCorrelationStoreSpec, LoadStrikeEndpointSpec, LoadStrikeHttpEndpointOptions, LoadStrikeHttpAuthOptions, LoadStrikeHttpOAuth2ClientCredentialsOptions, LoadStrikeKafkaEndpointOptions, LoadStrikeKafkaSaslOptions, LoadStrikeRabbitMqEndpointOptions, LoadStrikeNatsEndpointOptions, LoadStrikeRedisStreamsEndpointOptions, LoadStrikeAzureEventHubsEndpointOptions, LoadStrikeSqsEndpointOptions, LoadStrikeDelegateEndpointOptions, LoadStrikePushDiffusionEndpointOptions, LoadStrikeReportingSinkSpec, LoadStrikeInfluxDbSinkOptions, LoadStrikeTimescaleDbSinkOptions, LoadStrikeGrafanaLokiSinkOptions, LoadStrikeDatadogSinkOptions, LoadStrikeSplunkSinkOptions, LoadStrikeOtelCollectorSinkOptions, LoadStrikeWorkerPluginSpec, LoadStrikeRunRequest, LoadStrikeRunResponse, LoadStrikeNodeStatsDto, LoadStrikeNodeInfoDto, LoadStrikeTestInfoDto, LoadStrikeScenarioStatsDto, LoadStrikeStepStatsDto, LoadStrikeMeasurementStatsDto, LoadStrikeRequestStatsDto, LoadStrikeLatencyStatsDto, LoadStrikeDataTransferStatsDto, LoadStrikeStatusCodeStatsDto, LoadStrikeMetricStatsDto, LoadStrikeCounterStatsDto, LoadStrikeGaugeStatsDto, LoadStrikeThresholdResultDto, LoadStrikePluginDataDto, LoadStrikePluginDataTableDto, LoadStrikePayloadDto, LoadStrikeProducedMessageRequestDto, LoadStrikeProducedMessageResultDto, LoadStrikeConsumedMessageDto } from "./contracts.js";
1
+ export type { LoadStrikeDateValue, LoadStrikeObject, LoadStrikeRunContext as LoadStrikeContractRunContext, LoadStrikeScenarioSpec, LoadStrikeLoadSimulationSpec, LoadStrikeThresholdSpec, LoadStrikeTrackingConfigurationSpec, LoadStrikeCorrelationStoreSpec, LoadStrikeRedisCorrelationStoreSpec, LoadStrikeEndpointSpec, LoadStrikeHttpEndpointOptions, LoadStrikeHttpAuthOptions, LoadStrikeHttpOAuth2ClientCredentialsOptions, LoadStrikeKafkaEndpointOptions, LoadStrikeKafkaSaslOptions, LoadStrikeRabbitMqEndpointOptions, LoadStrikeNatsEndpointOptions, LoadStrikeRedisStreamsEndpointOptions, LoadStrikeAzureEventHubsEndpointOptions, LoadStrikeSqsEndpointOptions, LoadStrikeDelegateEndpointOptions, LoadStrikePushDiffusionEndpointOptions, LoadStrikeGrpcEndpointOptions, LoadStrikeWebSocketEndpointOptions, LoadStrikeReportingSinkSpec, LoadStrikeInfluxDbSinkOptions, LoadStrikeTimescaleDbSinkOptions, LoadStrikeGrafanaLokiSinkOptions, LoadStrikeDatadogSinkOptions, LoadStrikeSplunkSinkOptions, LoadStrikeOtelCollectorSinkOptions, LoadStrikeWorkerPluginSpec, LoadStrikeRunRequest, LoadStrikeRunResponse, LoadStrikeNodeStatsDto, LoadStrikeNodeInfoDto, LoadStrikeTestInfoDto, LoadStrikeScenarioStatsDto, LoadStrikeStepStatsDto, LoadStrikeMeasurementStatsDto, LoadStrikeRequestStatsDto, LoadStrikeLatencyStatsDto, LoadStrikeDataTransferStatsDto, LoadStrikeStatusCodeStatsDto, LoadStrikeMetricStatsDto, LoadStrikeCounterStatsDto, LoadStrikeGaugeStatsDto, LoadStrikeThresholdResultDto, LoadStrikePluginDataDto, LoadStrikePluginDataTableDto, LoadStrikePayloadDto, LoadStrikeProducedMessageRequestDto, LoadStrikeProducedMessageResultDto, LoadStrikeConsumedMessageDto } from "./contracts.js";
2
2
  export { LoadStrikeAutopilot, LoadStrikeAutopilotResult } from "./autopilot.js";
3
3
  export type { LoadStrikeAutopilotEndpoint, LoadStrikeAutopilotEndpointBinding, LoadStrikeAutopilotLoadSimulationSuggestion, LoadStrikeAutopilotMessageSample, LoadStrikeAutopilotOptions, LoadStrikeAutopilotPlan, LoadStrikeAutopilotPreviewReport, LoadStrikeAutopilotReadinessFailure, LoadStrikeAutopilotRedaction, LoadStrikeAutopilotRequest, LoadStrikeAutopilotResultShape, LoadStrikeAutopilotScenarioPlan, LoadStrikeAutopilotSecretBinding, LoadStrikeAutopilotThresholdSuggestion, LoadStrikeAutopilotTrackingSelectorSuggestion } from "./autopilot-contracts.js";
4
4
  export { LoadStrikeAutopilotReadiness } from "./autopilot-contracts.js";
5
- export { CrossPlatformScenarioConfigurator, ScenarioTrackingExtensions, LoadStrikeContext, LoadStrikePluginData, LoadStrikePluginDataTable, LoadStrikeNodeType, LoadStrikeReportFormat, LoadStrikeResponse, LoadStrikeLogLevel, LoadStrikeScenarioOperation, LoadStrikeOperationType, LoadStrikeRunner, LoadStrikeScenario, LoadStrikeScenarioShare, LoadStrikeSimulation, LoadStrikeTrafficMix, CrossPlatformTrackingConfiguration, LoadStrikeMetric, LoadStrikeCounter, LoadStrikeGauge, LoadStrikeStep, LoadStrikeThreshold } from "./runtime.js";
6
- export type { ILoadStrikeReportingSink, ILoadStrikeWorkerPlugin, LoadStrikeRunResult, LoadStrikeReportingSink, LoadStrikeRuntimePolicy, LoadStrikeRunnerOptions, LoadStrikeRunContext as LoadStrikeRuntimeContext, LoadStrikeRunContext, LoadStrikeBaseContext, LoadStrikeCounterStats, LoadStrikeDataTransferStats, LoadStrikeGaugeStats, LoadStrikeLogger, LoadStrikeLoadSimulationStats, LoadStrikeMeasurementStats, LoadStrikeMetricStats, LoadStrikeNodeInfo, LoadStrikeMetricValue, LoadStrikeRandom, LoadStrikeReply, LoadStrikeLatencyCount, LoadStrikeLatencyStats, LoadStrikeLoadSimulation, LoadStrikeScenarioInfo, LoadStrikeScenarioInitContext, LoadStrikeScenarioPartition, LoadStrikeScenarioStartInfo, LoadStrikeScenarioContext, LoadStrikeScenarioStats, LoadStrikeTestInfo, LoadStrikeScenarioRuntime, LoadStrikeSessionStartInfo, LoadStrikeSinkSession, LoadStrikeSinkError, LoadStrikeStatusCodeStats, LoadStrikeThresholdResult, LoadStrikeThresholdPredicateContext, LoadStrikeStepReply, LoadStrikeStepStats, LoadStrikeStepRuntime, LoadStrikeThresholdOptions, LoadStrikeRequestStats, LoadStrikeWorkerPlugin } from "./runtime.js";
5
+ export { CrossPlatformScenarioConfigurator, ScenarioTrackingExtensions, LoadStrikeContext, LoadStrikeAccessibility, LoadStrikeBrowserWebVitals, LoadStrikePluginData, LoadStrikePluginDataTable, LoadStrikeNodeType, LoadStrikeReportFormat, LoadStrikeResponse, LoadStrikeLogLevel, LoadStrikeScenarioOperation, LoadStrikeOperationType, LoadStrikeRunner, LoadStrikeScenario, LoadStrikeScenarioShare, LoadStrikeSimulation, LoadStrikeTrafficMix, CrossPlatformTrackingConfiguration, LoadStrikeMetric, LoadStrikeCounter, LoadStrikeGauge, LoadStrikeStep, LoadStrikeThreshold } from "./runtime.js";
6
+ export type { ILoadStrikeReportingSink, ILoadStrikeWorkerPlugin, LoadStrikeRunResult, LoadStrikeReportingSink, LoadStrikeRuntimePolicy, LoadStrikeRunnerOptions, LoadStrikeRunContext as LoadStrikeRuntimeContext, LoadStrikeRunContext, LoadStrikeAccessibilityOptions, LoadStrikeAccessibilityViolation, LoadStrikeAccessibilityResult, LoadStrikeAccessibilityCheckContext, LoadStrikeBrowserWebVitalsOptions, LoadStrikeBrowserWebVitalsResult, LoadStrikeBrowserWebVitalsContext, LoadStrikeBaseContext, LoadStrikeCounterStats, LoadStrikeDataTransferStats, LoadStrikeGaugeStats, LoadStrikeLogger, LoadStrikeLoadSimulationStats, LoadStrikeMeasurementStats, LoadStrikeMetricStats, LoadStrikeNodeInfo, LoadStrikeMetricValue, LoadStrikeRandom, LoadStrikeReply, LoadStrikeLatencyCount, LoadStrikeLatencyStats, LoadStrikeLoadSimulation, LoadStrikeScenarioInfo, LoadStrikeScenarioInitContext, LoadStrikeScenarioPartition, LoadStrikeScenarioStartInfo, LoadStrikeScenarioContext, LoadStrikeScenarioStats, LoadStrikeTestInfo, LoadStrikeScenarioRuntime, LoadStrikeSessionStartInfo, LoadStrikeSinkSession, LoadStrikeSinkError, LoadStrikeStatusCodeStats, LoadStrikeThresholdResult, LoadStrikeThresholdPredicateContext, LoadStrikeStepReply, LoadStrikeStepStats, LoadStrikeStepRuntime, LoadStrikeThresholdOptions, LoadStrikeRequestStats, LoadStrikeWorkerPlugin } from "./runtime.js";
7
7
  export { CorrelationStoreConfiguration, CrossPlatformTrackingRuntime, InMemoryCorrelationStore, RedisCorrelationStoreOptions, RedisCorrelationStore, TrackingPayloadBuilder, TrackingFieldSelector } from "./correlation.js";
8
8
  export type { CorrelationEntry, DestinationConsumeResult, GatheredRow, CorrelationStoreKind, CorrelationRuntimeOptions, CorrelationRuntimePlugin, CorrelationRuntimeStats, CorrelationStore, SourceProduceResult, TrackingFieldLocation, TrackingPayload } from "./correlation.js";
9
- export { LOADSTRIKE_TRACE_ID_HEADER, LOADSTRIKE_TRACE_ID_TRACKING_FIELD, TrafficEndpointDefinition, HttpEndpointDefinition, KafkaEndpointDefinition, KafkaSaslOptions, RabbitMqEndpointDefinition, NatsEndpointDefinition, RedisStreamsEndpointDefinition, AzureEventHubsEndpointDefinition, SqsEndpointDefinition, DelegateStreamEndpointDefinition, PushDiffusionEndpointDefinition, HttpOAuth2ClientCredentialsOptions, HttpAuthOptions } from "./transports.js";
10
- export type { EndpointAdapter, EndpointDefinition, EndpointDefinitionInput, EndpointKind, EndpointMode, DotNetDelegateEndpointOptions, DotNetEndpointDefinition, DotNetHttpAuthOptions, DotNetHttpEndpointOptions, DotNetHttpOAuth2ClientCredentialsOptions, HttpAuthMode, HttpAuthType, HttpRequestBodyType, HttpResponseSource, HttpTrackingPayloadSource, KafkaSaslMechanismType, KafkaSecurityProtocolType, HttpEndpointOptions, KafkaEndpointOptions, RabbitMqEndpointOptions, NatsEndpointOptions, RedisStreamsEndpointOptions, AzureEventHubsEndpointOptions, SqsEndpointOptions, PushDiffusionEndpointOptions, TrackingFieldSelectorInput, TrackingRunMode, TrafficEndpointKind, TrafficEndpointMode, ProducedMessageRequest, ProducedMessageResult, ConsumedMessage, DelegateConsumeAsync, DelegateConsumeStreamHandler, DelegateEndpointOptions } from "./transports.js";
9
+ export { LOADSTRIKE_TRACE_ID_HEADER, LOADSTRIKE_TRACE_ID_TRACKING_FIELD, TrafficEndpointDefinition, HttpEndpointDefinition, KafkaEndpointDefinition, KafkaSaslOptions, RabbitMqEndpointDefinition, NatsEndpointDefinition, RedisStreamsEndpointDefinition, AzureEventHubsEndpointDefinition, SqsEndpointDefinition, DelegateStreamEndpointDefinition, PushDiffusionEndpointDefinition, GrpcEndpointDefinition, WebSocketEndpointDefinition, HttpOAuth2ClientCredentialsOptions, HttpAuthOptions } from "./transports.js";
10
+ export type { EndpointAdapter, EndpointDefinition, EndpointDefinitionInput, EndpointKind, EndpointMode, DotNetDelegateEndpointOptions, DotNetEndpointDefinition, DotNetHttpAuthOptions, DotNetHttpEndpointOptions, DotNetHttpOAuth2ClientCredentialsOptions, HttpAuthMode, HttpAuthType, HttpRequestBodyType, HttpResponseSource, HttpTrackingPayloadSource, KafkaSaslMechanismType, KafkaSecurityProtocolType, HttpEndpointOptions, KafkaEndpointOptions, RabbitMqEndpointOptions, NatsEndpointOptions, RedisStreamsEndpointOptions, AzureEventHubsEndpointOptions, SqsEndpointOptions, PushDiffusionEndpointOptions, GrpcEndpointOptions, WebSocketEndpointOptions, GrpcEndpointDefinition as GrpcEndpointDefinitionShape, WebSocketEndpointDefinition as WebSocketEndpointDefinitionShape, TrackingFieldSelectorInput, TrackingRunMode, TrafficEndpointKind, TrafficEndpointMode, ProducedMessageRequest, ProducedMessageResult, ConsumedMessage, DelegateConsumeAsync, DelegateConsumeStreamHandler, DelegateEndpointOptions } from "./transports.js";
11
11
  export { DatadogReportingSink, DatadogReportingSinkOptions, GrafanaLokiReportingSink, GrafanaLokiReportingSinkOptions, InfluxDbReportingSink, InfluxDbReportingSinkOptions, OtelCollectorReportingSink, OtelCollectorReportingSinkOptions, PortalReportingSink, SplunkReportingSink, SplunkReportingSinkOptions, TimescaleDbReportingSink, TimescaleDbReportingSinkOptions } from "./sinks.js";
12
12
  export type { DatadogSinkOptions, GrafanaLokiSinkOptions, InfluxDbSinkOptions, OtelCollectorSinkOptions, PortalReportingSinkOptionsInput, SplunkSinkOptions, TimescaleDbSinkOptions } from "./sinks.js";