@relkit/contracts 0.3.0 → 0.4.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/id.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzE,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC,sEAAsE;AACtE,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,GAAG,YAAY,IAAI,QAAQ,GAAG;IACtE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAE5D,mEAAmE;AACnE,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,UAAU,GACV,SAAS,GACT,OAAO,GACP,YAAY,GACZ,KAAK,GACL,OAAO,GACP,eAAe,GACf,QAAQ,GACR,OAAO,GACP,MAAM,GACN,OAAO,GACP,WAAW,GACX,QAAQ,CAAC;AAEb,6EAA6E;AAC7E,MAAM,WAAW,GAAG,CAAC,IAAI,SAAS,cAAc,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM;IAC1E,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;CACjB;AAED,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,MAAM,EAAE,MAAM;CAI3B;AAED,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,CAAC;AAExE,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAapD;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAG5D;AAED,eAAO,MAAM,SAAS,mBAAa,CAAC;AAEpC,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAIxE;AAED,eAAO,MAAM,aAAa,uBAAiB,CAAC;AAE5C,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAE9D;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,SACO,CAAC;AACrD,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,YACO,CAAC;AACxD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,SACO,CAAC;AACrD,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,OACO,CAAC;AACnD,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,YACO,CAAC;AACxD,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,eACO,CAAC"}
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAIA,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzE,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC,sEAAsE;AACtE,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,GAAG,YAAY,IAAI,QAAQ,GAAG;IACtE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAE5D,mEAAmE;AACnE,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,UAAU,GACV,SAAS,GACT,OAAO,GACP,YAAY,GACZ,KAAK,GACL,OAAO,GACP,eAAe,GACf,QAAQ,GACR,OAAO,GACP,MAAM,GACN,OAAO,GACP,WAAW,GACX,QAAQ,CAAC;AAEb,6EAA6E;AAC7E,MAAM,WAAW,GAAG,CAAC,IAAI,SAAS,cAAc,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM;IAC1E,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;CACjB;AAED,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,MAAM,EAAE,MAAM;CAI3B;AAED,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,CAAC;AAExE,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAapD;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAG5D;AAED,eAAO,MAAM,SAAS,mBAAa,CAAC;AAEpC,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAIxE;AAED,eAAO,MAAM,aAAa,uBAAiB,CAAC;AAE5C,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAE9D;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,SACO,CAAC;AACrD,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,YACO,CAAC;AACxD,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,SACO,CAAC;AACrD,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,OAG1C,CAAC;AACF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,YACO,CAAC;AACxD,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,eACO,CAAC"}
package/dist/id.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { isTraceId } from "./trace-context.js";
1
2
  const STABLE_ID_PATTERN = /^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$/;
2
3
  /** Raised when an identifier is missing or cannot be normalized safely. */
3
4
  export class StableIdError extends TypeError {
@@ -46,7 +47,11 @@ export function isProtocolId(value) {
46
47
  export const toGraphHash = (value) => normalizeProtocolId(value);
47
48
  export const toGenerationId = (value) => normalizeProtocolId(value);
48
49
  export const toRequestId = (value) => normalizeProtocolId(value);
49
- export const toTraceId = (value) => normalizeProtocolId(value);
50
+ export const toTraceId = (value) => {
51
+ if (!isTraceId(value))
52
+ throw new TypeError("Invalid W3C trace ID");
53
+ return value;
54
+ };
50
55
  export const toInvocationId = (value) => normalizeProtocolId(value);
51
56
  export const toEventInstanceId = (value) => normalizeProtocolId(value);
52
57
  //# sourceMappingURL=id.js.map
package/dist/id.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AA8CjE,2EAA2E;AAC3E,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,YAAY,MAAc;QACxB,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,CAAC;AAExE,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,aAAa,CAAC,4BAA4B,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,aAAa,CAAC,qEAAqE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,UAAsB,CAAC;AAChC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,WAAW,CAAC,KAAK,CAAe,CAAC;AAC1C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAa,EAAE,CACvD,mBAAmB,CAAC,KAAK,CAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAgB,EAAE,CAC7D,mBAAmB,CAAC,KAAK,CAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAa,EAAE,CACvD,mBAAmB,CAAC,KAAK,CAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE,CACnD,mBAAmB,CAAC,KAAK,CAAuB,CAAC;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAgB,EAAE,CAC7D,mBAAmB,CAAC,KAAK,CAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAmB,EAAE,CACnE,mBAAmB,CAAC,KAAK,CAA+B,CAAC"}
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,iBAAiB,GAAG,sCAAsC,CAAC;AA8CjE,2EAA2E;AAC3E,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,YAAY,MAAc;QACxB,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,CAAC;AAExE,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,aAAa,CAAC,4BAA4B,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,aAAa,CAAC,qEAAqE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,UAAsB,CAAC;AAChC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,WAAW,CAAC,KAAK,CAAe,CAAC;AAC1C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAa,EAAE,CACvD,mBAAmB,CAAC,KAAK,CAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAgB,EAAE,CAC7D,mBAAmB,CAAC,KAAK,CAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAa,EAAE,CACvD,mBAAmB,CAAC,KAAK,CAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;IACnD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAgB,EAAE,CAC7D,mBAAmB,CAAC,KAAK,CAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAmB,EAAE,CACnE,mBAAmB,CAAC,KAAK,CAA+B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,4 +5,6 @@ export * from "./source-location.js";
5
5
  export * from "./version.js";
6
6
  export * from "./runtime-integration.js";
7
7
  export * from "./activation.js";
8
+ export * from "./trace-context.js";
9
+ export * from "./trace-propagation.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -5,4 +5,6 @@ export * from "./source-location.js";
5
5
  export * from "./version.js";
6
6
  export * from "./runtime-integration.js";
7
7
  export * from "./activation.js";
8
+ export * from "./trace-context.js";
9
+ export * from "./trace-propagation.js";
8
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { ProtocolId, TraceId } from "./id.js";
2
+ export type SpanId = ProtocolId<"SpanId">;
3
+ export type SpanKind = "internal" | "server" | "client" | "producer" | "consumer";
4
+ export type TraceAttributes = Readonly<Record<string, string | number | boolean>>;
5
+ export interface SpanContext {
6
+ readonly traceId: TraceId;
7
+ readonly spanId: SpanId;
8
+ readonly traceFlags: number;
9
+ readonly traceState?: string;
10
+ readonly remote?: boolean;
11
+ }
12
+ /** Serializable causation only: never a payload, signal or deadline. */
13
+ export interface TracePropagation {
14
+ readonly version: 2;
15
+ readonly producer: SpanContext;
16
+ readonly requestId?: string;
17
+ readonly originRequestId?: string;
18
+ readonly correlationId?: string;
19
+ readonly invocationId?: string;
20
+ }
21
+ export declare function isTraceId(value: unknown): value is TraceId;
22
+ export declare function isSpanId(value: unknown): value is SpanId;
23
+ export declare function toSpanId(value: unknown): SpanId;
24
+ export declare function createTraceId(): TraceId;
25
+ export declare function createSpanId(): SpanId;
26
+ //# sourceMappingURL=trace-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-context.d.ts","sourceRoot":"","sources":["../src/trace-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAClF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG/C;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,25 @@
1
+ export function isTraceId(value) {
2
+ return typeof value === "string" && /^[0-9a-f]{32}$/.test(value) && !/^0+$/.test(value);
3
+ }
4
+ export function isSpanId(value) {
5
+ return typeof value === "string" && /^[0-9a-f]{16}$/.test(value) && !/^0+$/.test(value);
6
+ }
7
+ export function toSpanId(value) {
8
+ if (!isSpanId(value))
9
+ throw new TypeError("Invalid W3C span ID");
10
+ return value;
11
+ }
12
+ export function createTraceId() {
13
+ return randomHex(16);
14
+ }
15
+ export function createSpanId() {
16
+ return randomHex(8);
17
+ }
18
+ function randomHex(bytes) {
19
+ const data = new Uint8Array(bytes);
20
+ do
21
+ crypto.getRandomValues(data);
22
+ while (data.every((byte) => byte === 0));
23
+ return Array.from(data, (byte) => byte.toString(16).padStart(2, "0")).join("");
24
+ }
25
+ //# sourceMappingURL=trace-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-context.js","sourceRoot":"","sources":["../src/trace-context.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,SAAS,CAAC,EAAE,CAAY,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC,CAAC,CAAW,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC;QAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;WACzB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type SpanContext, type TracePropagation } from "./trace-context.js";
2
+ /** Invalid remote metadata is ignored rather than failing application work. */
3
+ export declare function parseTraceParent(value: unknown, traceState?: unknown): SpanContext | undefined;
4
+ export declare function parseTraceState(value: unknown): string | undefined;
5
+ /** Writes only valid W3C context; never injects local request identifiers. */
6
+ export declare function injectTraceContext(headers: Headers, context: SpanContext): void;
7
+ export declare function parseTracePropagation(value: unknown): TracePropagation | undefined;
8
+ //# sourceMappingURL=trace-propagation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-propagation.d.ts","sourceRoot":"","sources":["../src/trace-propagation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAElG,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAgB9F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAclE;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAS/E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAkClF"}
@@ -0,0 +1,86 @@
1
+ import { isSpanId, isTraceId } from "./trace-context.js";
2
+ /** Invalid remote metadata is ignored rather than failing application work. */
3
+ export function parseTraceParent(value, traceState) {
4
+ if (typeof value !== "string" || value.length < 55)
5
+ return undefined;
6
+ const match = /^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(.*)$/.exec(value);
7
+ if (!match || match[0] !== value)
8
+ return undefined;
9
+ const [, version, traceId, spanId, flags, suffix] = match;
10
+ if (version === "ff" || !isTraceId(traceId) || !isSpanId(spanId))
11
+ return undefined;
12
+ if (version === "00" ? suffix !== "" : suffix !== "" && !suffix?.startsWith("-"))
13
+ return undefined;
14
+ const state = parseTraceState(traceState);
15
+ return Object.freeze({
16
+ traceId,
17
+ spanId,
18
+ traceFlags: Number.parseInt(flags, 16) & 1,
19
+ remote: true,
20
+ ...(state === undefined ? {} : { traceState: state }),
21
+ });
22
+ }
23
+ export function parseTraceState(value) {
24
+ if (typeof value !== "string" || value.length > 512)
25
+ return undefined;
26
+ const entries = value.split(",");
27
+ if (entries.length > 32)
28
+ return undefined;
29
+ const keys = new Set();
30
+ for (const entry of entries) {
31
+ const match = /^[ \t]*([a-z][a-z0-9_*/-]{0,255}|[a-z0-9][a-z0-9_*/-]{0,240}@[a-z][a-z0-9_*/-]{0,13})=([\x20-\x2b\x2d-\x3c\x3e-\x7e]{0,255}[\x21-\x2b\x2d-\x3c\x3e-\x7e])[ \t]*$/.exec(entry);
32
+ if (!match || keys.has(match[1]))
33
+ return undefined;
34
+ keys.add(match[1]);
35
+ }
36
+ return value.trim();
37
+ }
38
+ /** Writes only valid W3C context; never injects local request identifiers. */
39
+ export function injectTraceContext(headers, context) {
40
+ if (!isTraceId(context.traceId) || !isSpanId(context.spanId))
41
+ return;
42
+ headers.set("traceparent", `00-${context.traceId}-${context.spanId}-${(context.traceFlags & 1).toString(16).padStart(2, "0")}`);
43
+ headers.delete("tracestate");
44
+ const state = parseTraceState(context.traceState);
45
+ if (state !== undefined)
46
+ headers.set("tracestate", state);
47
+ }
48
+ export function parseTracePropagation(value) {
49
+ try {
50
+ if (typeof value !== "object" || value === null)
51
+ return undefined;
52
+ const input = value;
53
+ if (input.version !== 2 || !input.producer)
54
+ return undefined;
55
+ const { traceId, spanId, traceFlags, traceState } = input.producer;
56
+ if (!isTraceId(traceId) || !isSpanId(spanId) || !Number.isInteger(traceFlags))
57
+ return undefined;
58
+ if (traceFlags < 0 || traceFlags > 255)
59
+ return undefined;
60
+ const state = parseTraceState(traceState);
61
+ const identities = {};
62
+ for (const key of ["requestId", "originRequestId", "correlationId", "invocationId"]) {
63
+ const id = input[key];
64
+ if (typeof id === "string" &&
65
+ id.length > 0 &&
66
+ id.length <= 256 &&
67
+ !/[\x00-\x1f\x7f]/.test(id))
68
+ identities[key] = id;
69
+ }
70
+ return Object.freeze({
71
+ version: 2,
72
+ ...identities,
73
+ producer: Object.freeze({
74
+ traceId,
75
+ spanId,
76
+ traceFlags: traceFlags & 1,
77
+ remote: true,
78
+ ...(state === undefined ? {} : { traceState: state }),
79
+ }),
80
+ });
81
+ }
82
+ catch {
83
+ return undefined;
84
+ }
85
+ }
86
+ //# sourceMappingURL=trace-propagation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-propagation.js","sourceRoot":"","sources":["../src/trace-propagation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@relkit/contracts",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Unsupported internal RELKIT contracts; use @relkit/app.",
5
5
  "license": "MIT",
6
6
  "repository": {