@fractaal/pi-telemetry 0.86.9 → 1.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../src/testing/conformance.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAW1F,SAAS,UAAU,CAClB,OAAuC,EACvC,KAAa,EACb,IAAY,EACZ,IAAqB;IAErB,OAAO;QACN,KAAK;QACL,IAAI;QACJ,KAAK,CAAC,GAAG;;;gBACR,MAAY,OAAO,kCAAG,MAAM,OAAO,EAAE,OAAA,CAAC;gBACtC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;;;;;;;;;;;QACrB,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAuC,EAAE,IAAY;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAChE,EAAE,CAAC,IAAI,EAAE,0BAA0B,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,SAA2B,EAAE,QAAiB;IACjF,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC;QAChB,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAmB,KAAQ;IAC7C,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;QACvB,GAAG,EAAE,GAAG,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,wBAAwB,EAAE,GAAG,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iCAAiC,CAChD,OAAuC;IAEvC,OAAO;QACN,UAAU,CACT,OAAO,EACP,oBAAoB,EACpB,oDAAoD,EACpD,KAAK,EAAE,OAAO,EAAE,EAAE;YACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;gBAClE,QAAQ,GAAG,IAAI,CAAC;gBAChB,KAAK,EAAE,CAAC;gBACR,OAAO,QAAQ,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtB,WAAW,CAAC,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACxF,WAAW,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC,CACD;QAED,UAAU,CACT,OAAO,EACP,oBAAoB,EACpB,yDAAyD,EACzD,KAAK,EAAE,OAAO,EAAE,EAAE;YACjB,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;gBACtD,MAAM,SAAS,CAAC;YACjB,CAAC,CAAC,EACF,SAAS,CACT,CAAC;YAEF,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACrC,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,EAAE;gBAC7D,MAAM,UAAU,CAAC;YAClB,CAAC,CAAC,EACF,UAAU,CACV,CAAC;YAEF,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EACvF,SAAS,CACT,CAAC;YAEF,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAC3D,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,GAAG,EAAE;gBAC5D,MAAM,eAAe,CAAC;YACvB,CAAC,CAAC,EACF,eAAe,CACf,CAAC;YAEF,MAAM,oBAAoB,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACtE,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAClE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CACpC,EACD,oBAAoB,CACpB,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI;gBAClB,YAAY;gBACZ,aAAa;gBACb,iBAAiB;gBACjB,kBAAkB;gBAClB,wBAAwB;aACxB,EAAE,CAAC;gBACH,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC,CACD;QAED,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,uDAAuD,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBACnF,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAClD,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjC,MAAM,MAAM,CAAC;YACd,CAAC,CAAC,EACF,MAAM,CACN,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1D,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;gBAC3F,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC,CAAC,EACF,QAAQ,CACR,CAAC;YAEF,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBAC9F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACnF,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC,MAAM,EAAE;gBACpE,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE;aACrD,CAAC,CAAC;YACH,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,MAAM,EAAE;gBAC3D,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE;aACxD,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,8CAA8C,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAClG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAC9B;gBACC,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;aACtE,EACD,CAAC,IAAI,EAAE,EAAE;gBACR,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACtD,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC,CACD,CAAC;YAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC;YAC7D,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACjF,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC5B,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;aAC5C,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,2CAA2C,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/F,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC1G,MAAM,UAAU,GAAmB;oBAClC,OAAO,EAAE,kBAAkB;oBAC3B,UAAU,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;iBACjC,CAAC;gBACF,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,eAAe,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC,UAAU,EAAE;gBACnF,QAAQ,EAAE,OAAO;aACjB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,oCAAoC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxF,IAAI,WAAsC,CAAC;YAC3C,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/F,WAAW,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,WAAW,CAAC;YACjC,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAE7D,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAClE,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACnE,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;gBACvE,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjC,WAAW,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC;YAElC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7B,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5D,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACtC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,mDAAmD,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACvG,IAAI,YAAsC,CAAC;YAC3C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC/C,YAAY,GAAG,OAAO,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,EAAE;oBAClE,MAAM,SAAS,CAAC;gBACjB,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;gBACxE,WAAW,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC;gBAClC,YAAY,EAAE,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC;YACb,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YAC/C,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACnC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACvC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACxC,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;YAC5G,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YAC3C,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,kDAAkD,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtG,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,UAAU,CAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACzG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtD,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,CAAC;YACV,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtB,WAAW,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7B,eAAe,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAE9C,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC1E,MAAM,UAAU,GAAG,UAAU,CAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,UAAU,CAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBACnD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClE,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAChC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7C,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,wCAAwC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5F,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAChE,MAAM,oBAAoB,CACzB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACjE,MAAM,MAAM,GAAG,UAAU,CAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC,CAAC,EACF,SAAS,CACT,CAAC;YAEF,WAAW,CAAC,QAAQ,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7F,CAAC,CAAC;KACF,CAAC;AACH,CAAC","sourcesContent":["import { deepStrictEqual, doesNotThrow, fail, ok, strictEqual } from \"node:assert/strict\";\nimport type { SpanAttributes, SpanOptions, SpanStatus, TelemetrySpan } from \"../index.ts\";\nimport type { RecordedTelemetrySpan } from \"../memory.ts\";\nimport type {\n\tTelemetryAdapterConformanceCase,\n\tTelemetryAdapterFixture,\n\tTelemetryAdapterFixtureFactory,\n} from \"./types.ts\";\n\ntype ConformanceTest = (fixture: TelemetryAdapterFixture) => Promise<void>;\n\nfunction createCase(\n\tfactory: TelemetryAdapterFixtureFactory,\n\tgroup: string,\n\tname: string,\n\ttest: ConformanceTest,\n): TelemetryAdapterConformanceCase {\n\treturn {\n\t\tgroup,\n\t\tname,\n\t\tasync run() {\n\t\t\tawait using fixture = await factory();\n\t\t\tawait test(fixture);\n\t\t},\n\t};\n}\n\nfunction findSpan(spans: readonly RecordedTelemetrySpan[], name: string): RecordedTelemetrySpan {\n\tconst span = spans.find((candidate) => candidate.name === name);\n\tok(span, `Expected recorded span ${name}`);\n\treturn span;\n}\n\nasync function rejectsWithSameValue(operation: Promise<unknown>, expected: unknown): Promise<void> {\n\ttry {\n\t\tawait operation;\n\t\tfail(\"Expected operation to reject\");\n\t} catch (error) {\n\t\tstrictEqual(error, expected);\n\t}\n}\n\nfunction unreadable<T extends object>(value: T): T {\n\treturn new Proxy(value, {\n\t\tget: () => {\n\t\t\tthrow new Error(\"read\");\n\t\t},\n\t\tgetOwnPropertyDescriptor: () => {\n\t\t\tthrow new Error(\"inspect\");\n\t\t},\n\t\tgetPrototypeOf: () => {\n\t\t\tthrow new Error(\"prototype\");\n\t\t},\n\t\townKeys: () => {\n\t\t\tthrow new Error(\"enumerate\");\n\t\t},\n\t});\n}\n\n/** Creates runner-independent cases for the callback telemetry adapter contract. */\nexport function createTelemetryAdapterConformance(\n\tfactory: TelemetryAdapterFixtureFactory,\n): readonly TelemetryAdapterConformanceCase[] {\n\treturn [\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"callback lifecycle\",\n\t\t\t\"admits once synchronously and preserves the result\",\n\t\t\tasync (fixture) => {\n\t\t\t\tlet admitted = false;\n\t\t\t\tlet calls = 0;\n\t\t\t\tconst expected = { value: 42 };\n\t\t\t\tconst result = fixture.context.startSpan({ name: \"success\" }, () => {\n\t\t\t\t\tadmitted = true;\n\t\t\t\t\tcalls++;\n\t\t\t\t\treturn expected;\n\t\t\t\t});\n\n\t\t\t\tstrictEqual(admitted, true);\n\t\t\t\tstrictEqual(calls, 1);\n\t\t\t\tstrictEqual(await result, expected);\n\t\t\t\tdeepStrictEqual(findSpan(await fixture.getSpans(), \"success\").status, { status: \"ok\" });\n\t\t\t\tstrictEqual(findSpan(await fixture.getSpans(), \"success\").settled, true);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"callback lifecycle\",\n\t\t\t\"preserves synchronous and asynchronous rejection values\",\n\t\t\tasync (fixture) => {\n\t\t\t\tconst syncError = new Error(\"sync\");\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"sync-error\" }, () => {\n\t\t\t\t\t\tthrow syncError;\n\t\t\t\t\t}),\n\t\t\t\t\tsyncError,\n\t\t\t\t);\n\n\t\t\t\tconst asyncError = { kind: \"async\" };\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"async-error\" }, async () => {\n\t\t\t\t\t\tthrow asyncError;\n\t\t\t\t\t}),\n\t\t\t\t\tasyncError,\n\t\t\t\t);\n\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"undefined-error\" }, () => Promise.reject(undefined)),\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\n\t\t\t\tconst unreadableError = unreadable({ kind: \"unreadable\" });\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"unreadable-error\" }, () => {\n\t\t\t\t\t\tthrow unreadableError;\n\t\t\t\t\t}),\n\t\t\t\t\tunreadableError,\n\t\t\t\t);\n\n\t\t\t\tconst asyncUnreadableError = unreadable({ kind: \"async-unreadable\" });\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"async-unreadable-error\" }, () =>\n\t\t\t\t\t\tPromise.reject(asyncUnreadableError),\n\t\t\t\t\t),\n\t\t\t\t\tasyncUnreadableError,\n\t\t\t\t);\n\n\t\t\t\tconst spans = await fixture.getSpans();\n\t\t\t\tfor (const name of [\n\t\t\t\t\t\"sync-error\",\n\t\t\t\t\t\"async-error\",\n\t\t\t\t\t\"undefined-error\",\n\t\t\t\t\t\"unreadable-error\",\n\t\t\t\t\t\"async-unreadable-error\",\n\t\t\t\t]) {\n\t\t\t\t\tstrictEqual(findSpan(spans, name).status.status, \"error\");\n\t\t\t\t}\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"status\", \"uses last explicit status without automatic overwrite\", async (fixture) => {\n\t\t\tawait fixture.context.startSpan({ name: \"last-status\" }, (span) => {\n\t\t\t\tspan.setStatus({ status: \"error\", error: { name: \"Expected\", message: \"first\" } });\n\t\t\t\tspan.setStatus({ status: \"ok\" });\n\t\t\t});\n\n\t\t\tconst thrown = new Error(\"after explicit status\");\n\t\t\tawait rejectsWithSameValue(\n\t\t\t\tfixture.context.startSpan({ name: \"explicit-before-throw\" }, (span) => {\n\t\t\t\t\tspan.setStatus({ status: \"ok\" });\n\t\t\t\t\tthrow thrown;\n\t\t\t\t}),\n\t\t\t\tthrown,\n\t\t\t);\n\n\t\t\tconst rejected = new Error(\"after async explicit status\");\n\t\t\tawait rejectsWithSameValue(\n\t\t\t\tfixture.context.startSpan({ name: \"explicit-before-rejection\" }, (span) => {\n\t\t\t\t\tspan.setStatus({ status: \"error\", error: { name: \"Expected\", message: \"async failure\" } });\n\t\t\t\t\treturn Promise.reject(rejected);\n\t\t\t\t}),\n\t\t\t\trejected,\n\t\t\t);\n\n\t\t\tawait fixture.context.startSpan({ name: \"expected-failure\" }, (span) => {\n\t\t\t\tspan.setStatus({ status: \"error\", error: { name: \"Expected\", message: \"returned failure\" } });\n\t\t\t\treturn { ok: false };\n\t\t\t});\n\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tdeepStrictEqual(findSpan(spans, \"last-status\").status, { status: \"ok\" });\n\t\t\tdeepStrictEqual(findSpan(spans, \"explicit-before-throw\").status, { status: \"ok\" });\n\t\t\tdeepStrictEqual(findSpan(spans, \"explicit-before-rejection\").status, {\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror: { name: \"Expected\", message: \"async failure\" },\n\t\t\t});\n\t\t\tdeepStrictEqual(findSpan(spans, \"expected-failure\").status, {\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror: { name: \"Expected\", message: \"returned failure\" },\n\t\t\t});\n\t\t}),\n\n\t\tcreateCase(factory, \"recording\", \"merges attributes and records ordered events\", async (fixture) => {\n\t\t\tawait fixture.context.startSpan(\n\t\t\t\t{\n\t\t\t\t\tname: \"recording\",\n\t\t\t\t\tattributes: { start: \"value\", overwrite: \"start\", ignored: undefined },\n\t\t\t\t},\n\t\t\t\t(span) => {\n\t\t\t\t\tspan.setAttributes({ count: 1, overwrite: \"middle\" });\n\t\t\t\t\tspan.setAttributes({ count: undefined, overwrite: \"end\" });\n\t\t\t\t\tspan.addEvent(\"first\", { index: 1, ignored: undefined });\n\t\t\t\t\tspan.addEvent(\"second\", { index: 2 });\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst span = findSpan(await fixture.getSpans(), \"recording\");\n\t\t\tdeepStrictEqual(span.attributes, { start: \"value\", overwrite: \"end\", count: 1 });\n\t\t\tdeepStrictEqual(span.events, [\n\t\t\t\t{ name: \"first\", attributes: { index: 1 } },\n\t\t\t\t{ name: \"second\", attributes: { index: 2 } },\n\t\t\t]);\n\t\t}),\n\n\t\tcreateCase(factory, \"recording\", \"ignores failed attribute calls atomically\", async (fixture) => {\n\t\t\tawait fixture.context.startSpan({ name: \"atomic-attributes\", attributes: { retained: \"value\" } }, (span) => {\n\t\t\t\tconst attributes: SpanAttributes = {\n\t\t\t\t\tpartial: \"must not survive\",\n\t\t\t\t\tunreadable: unreadable([\"value\"]),\n\t\t\t\t};\n\t\t\t\tdoesNotThrow(() => span.setAttributes(attributes));\n\t\t\t});\n\n\t\t\tdeepStrictEqual(findSpan(await fixture.getSpans(), \"atomic-attributes\").attributes, {\n\t\t\t\tretained: \"value\",\n\t\t\t});\n\t\t}),\n\n\t\tcreateCase(factory, \"recording\", \"makes calls after settlement inert\", async (fixture) => {\n\t\t\tlet settledSpan: TelemetrySpan | undefined;\n\t\t\tawait fixture.context.startSpan({ name: \"settled\", attributes: { value: \"initial\" } }, (span) => {\n\t\t\t\tsettledSpan = span;\n\t\t\t});\n\t\t\tconst capturedSpan = settledSpan;\n\t\t\tif (!capturedSpan) throw new Error(\"Expected callback span\");\n\n\t\t\tdoesNotThrow(() => capturedSpan.setAttributes({ value: \"late\" }));\n\t\t\tdoesNotThrow(() => capturedSpan.addEvent(\"late\", { value: true }));\n\t\t\tdoesNotThrow(() => capturedSpan.setStatus({ status: \"error\" }));\n\t\t\tlet childAdmitted = false;\n\t\t\tconst childResult = capturedSpan.startSpan({ name: \"late-child\" }, () => {\n\t\t\t\tchildAdmitted = true;\n\t\t\t\treturn 7;\n\t\t\t});\n\t\t\tstrictEqual(childAdmitted, true);\n\t\t\tstrictEqual(await childResult, 7);\n\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tstrictEqual(spans.length, 1);\n\t\t\tdeepStrictEqual(spans[0]?.attributes, { value: \"initial\" });\n\t\t\tdeepStrictEqual(spans[0]?.events, []);\n\t\t\tdeepStrictEqual(spans[0]?.status, { status: \"ok\" });\n\t\t}),\n\n\t\tcreateCase(factory, \"parentage\", \"records nested and concurrent child relationships\", async (fixture) => {\n\t\t\tlet releaseFirst: (() => void) | undefined;\n\t\t\tconst firstGate = new Promise<void>((resolve) => {\n\t\t\t\treleaseFirst = resolve;\n\t\t\t});\n\n\t\t\tawait fixture.context.startSpan({ name: \"parent\" }, async (parent) => {\n\t\t\t\tconst first = parent.startSpan({ name: \"first-child\" }, async () => {\n\t\t\t\t\tawait firstGate;\n\t\t\t\t});\n\t\t\t\tconst second = parent.startSpan({ name: \"second-child\" }, () => \"done\");\n\t\t\t\tstrictEqual(await second, \"done\");\n\t\t\t\treleaseFirst?.();\n\t\t\t\tawait first;\n\t\t\t});\n\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tconst parent = findSpan(spans, \"parent\");\n\t\t\tconst first = findSpan(spans, \"first-child\");\n\t\t\tconst second = findSpan(spans, \"second-child\");\n\t\t\tstrictEqual(parent.parentId, null);\n\t\t\tstrictEqual(first.parentId, parent.id);\n\t\t\tstrictEqual(second.parentId, parent.id);\n\t\t\tok(second.endSequence !== undefined && first.endSequence !== undefined && parent.endSequence !== undefined);\n\t\t\tok(second.endSequence < first.endSequence);\n\t\t\tok(first.endSequence < parent.endSequence);\n\t\t}),\n\n\t\tcreateCase(factory, \"passivity\", \"suppresses unreadable telemetry payload failures\", async (fixture) => {\n\t\t\tlet calls = 0;\n\t\t\tconst options = unreadable<SpanOptions>({ name: \"unreadable-options\", attributes: { secret: \"value\" } });\n\t\t\tconst result = fixture.context.startSpan(options, () => {\n\t\t\t\tcalls++;\n\t\t\t\treturn 9;\n\t\t\t});\n\n\t\t\tstrictEqual(calls, 1);\n\t\t\tstrictEqual(await result, 9);\n\t\t\tdeepStrictEqual(await fixture.getSpans(), []);\n\n\t\t\tawait fixture.context.startSpan({ name: \"unreadable-recording\" }, (span) => {\n\t\t\t\tconst attributes = unreadable<SpanAttributes>({ secret: \"value\" });\n\t\t\t\tconst status = unreadable<SpanStatus>({ status: \"ok\" });\n\t\t\t\tdoesNotThrow(() => span.setAttributes(attributes));\n\t\t\t\tdoesNotThrow(() => span.addEvent(\"unreadable-event\", attributes));\n\t\t\t\tdoesNotThrow(() => span.setStatus(status));\n\t\t\t});\n\n\t\t\tconst recorded = await fixture.getSpans();\n\t\t\tstrictEqual(recorded.length, 1);\n\t\t\tdeepStrictEqual(recorded[0]?.attributes, {});\n\t\t\tdeepStrictEqual(recorded[0]?.events, []);\n\t\t\tdeepStrictEqual(recorded[0]?.status, { status: \"ok\" });\n\t\t}),\n\n\t\tcreateCase(factory, \"passivity\", \"ignores failed status calls atomically\", async (fixture) => {\n\t\t\tconst rejection = new Error(\"rejected after unreadable status\");\n\t\t\tawait rejectsWithSameValue(\n\t\t\t\tfixture.context.startSpan({ name: \"unreadable-status\" }, (span) => {\n\t\t\t\t\tconst status = unreadable<SpanStatus>({ status: \"ok\" });\n\t\t\t\t\tdoesNotThrow(() => span.setStatus(status));\n\t\t\t\t\treturn Promise.reject(rejection);\n\t\t\t\t}),\n\t\t\t\trejection,\n\t\t\t);\n\n\t\t\tstrictEqual(findSpan(await fixture.getSpans(), \"unreadable-status\").status.status, \"error\");\n\t\t}),\n\t];\n}\n"]}
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../src/testing/conformance.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepStrictEqual, fail, ok, strictEqual } from \"node:assert/strict\";\nimport { NOOP_TELEMETRY_CONTEXT, type TelemetryCarrier, type TelemetryContext, type TelemetrySpan } from \"../index.ts\";\nimport type { RecordedTelemetrySpan } from \"../memory.ts\";\nimport type {\n\tTelemetryAdapterConformanceCase,\n\tTelemetryAdapterFixture,\n\tTelemetryAdapterFixtureFactory,\n} from \"./types.ts\";\n\ntype ConformanceTest = (fixture: TelemetryAdapterFixture) => Promise<void>;\n\nfunction createCase(\n\tfactory: TelemetryAdapterFixtureFactory,\n\tgroup: string,\n\tname: string,\n\ttest: ConformanceTest,\n): TelemetryAdapterConformanceCase {\n\treturn {\n\t\tgroup,\n\t\tname,\n\t\tasync run() {\n\t\t\tawait using fixture = await factory();\n\t\t\tawait test(fixture);\n\t\t},\n\t};\n}\n\nfunction findSpan(spans: readonly RecordedTelemetrySpan[], name: string): RecordedTelemetrySpan {\n\tconst span = spans.find((candidate) => candidate.name === name);\n\tok(span, `Expected recorded span ${name}`);\n\treturn span;\n}\n\nasync function rejectsWithSameValue(operation: Promise<unknown>, expected: unknown): Promise<void> {\n\ttry {\n\t\tawait operation;\n\t\tfail(\"Expected operation to reject\");\n\t} catch (error) {\n\t\tstrictEqual(error, expected);\n\t}\n}\n\n/** Creates runner-independent cases for the callback telemetry adapter contract. */\nexport function createTelemetryAdapterConformance(\n\tfactory: TelemetryAdapterFixtureFactory,\n): readonly TelemetryAdapterConformanceCase[] {\n\treturn [\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"capabilities\",\n\t\t\t\"carries adapter capabilities through contexts and spans\",\n\t\t\tasync (fixture) => {\n\t\t\t\tconst metrics = fixture.metrics ?? fixture.context.metrics;\n\t\t\t\tconst propagation = fixture.propagation ?? fixture.context.propagation;\n\t\t\t\tconst assertCapabilities = (context: TelemetryContext): void => {\n\t\t\t\t\tstrictEqual(context.metrics, metrics);\n\t\t\t\t\tstrictEqual(context.propagation, propagation);\n\t\t\t\t};\n\t\t\t\tassertCapabilities(fixture.context);\n\t\t\t\tlet settled: TelemetrySpan | undefined;\n\t\t\t\tawait fixture.context.startSpan({ name: \"capabilities\" }, async (span) => {\n\t\t\t\t\tsettled = span;\n\t\t\t\t\tassertCapabilities(span);\n\t\t\t\t\tawait span.startSpan({ name: \"capabilities.child\" }, assertCapabilities);\n\t\t\t\t\tif (propagation) {\n\t\t\t\t\t\tconst parent = propagation.extract(propagation.inject(span));\n\t\t\t\t\t\tassertCapabilities(parent);\n\t\t\t\t\t\tawait parent.startSpan({ name: \"capabilities.extracted\" }, assertCapabilities);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tok(settled);\n\t\t\t\tawait settled.startSpan({ name: \"capabilities.inert\" }, assertCapabilities);\n\t\t\t},\n\t\t),\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"metrics\",\n\t\t\t\"records ordered measurements and optional histogram exemplars\",\n\t\t\tasync (fixture) => {\n\t\t\t\tif (!fixture.metrics) return;\n\t\t\t\tok(fixture.getMetrics, \"Metrics fixtures require a normalized measurement reader\");\n\t\t\t\tfixture.metrics\n\t\t\t\t\t.counter(\"bytes\", { description: \"Encoded bytes\", unit: \"By\" })\n\t\t\t\t\t.add(12, { direction: \"out\" });\n\t\t\t\tconst active = fixture.metrics.upDownCounter(\"active\");\n\t\t\t\tactive.add(1);\n\t\t\t\tactive.add(-1);\n\t\t\t\tconst histogram = fixture.metrics.histogram(\"duration\", { unit: \"ms\", boundaries: [1, 10] });\n\t\t\t\tawait fixture.context.startSpan({ name: \"measured\" }, (span) =>\n\t\t\t\t\thistogram.record(5, { method: \"read\" }, span),\n\t\t\t\t);\n\t\t\t\tconst measurements = await fixture.getMetrics();\n\t\t\t\tdeepStrictEqual(\n\t\t\t\t\tmeasurements.map((measurement) => [measurement.kind, measurement.name, measurement.value]),\n\t\t\t\t\t[\n\t\t\t\t\t\t[\"counter\", \"bytes\", 12],\n\t\t\t\t\t\t[\"upDownCounter\", \"active\", 1],\n\t\t\t\t\t\t[\"upDownCounter\", \"active\", -1],\n\t\t\t\t\t\t[\"histogram\", \"duration\", 5],\n\t\t\t\t\t],\n\t\t\t\t);\n\t\t\t\tdeepStrictEqual(measurements[0]?.attributes, { direction: \"out\" });\n\t\t\t\tstrictEqual(measurements[0]?.description, \"Encoded bytes\");\n\t\t\t\tstrictEqual(measurements[0]?.unit, \"By\");\n\t\t\t\tdeepStrictEqual(measurements[3]?.boundaries, [1, 10]);\n\t\t\t\tdeepStrictEqual(measurements[3]?.context, findSpan(await fixture.getSpans(), \"measured\").context);\n\t\t\t},\n\t\t),\n\t\tcreateCase(factory, \"metrics\", \"copies instrument metadata and measurement attributes\", async (fixture) => {\n\t\t\tif (!fixture.metrics) return;\n\t\t\tok(fixture.getMetrics, \"Metrics fixtures require a normalized measurement reader\");\n\t\t\tconst boundaries = [1, 10];\n\t\t\tconst options = { description: \"Original\", boundaries };\n\t\t\tconst histogram = fixture.metrics.histogram(\"snapshot\", options);\n\t\t\tboundaries.push(100);\n\t\t\toptions.description = \"Changed\";\n\t\t\tconst attributes = { tags: [\"original\"] };\n\t\t\thistogram.record(-1, attributes);\n\t\t\tattributes.tags.push(\"changed\");\n\t\t\tconst measurements = await fixture.getMetrics();\n\t\t\tstrictEqual(measurements.length, 1);\n\t\t\tdeepStrictEqual(measurements[0]?.attributes, { tags: [\"original\"] });\n\t\t\tdeepStrictEqual(measurements[0]?.boundaries, [1, 10]);\n\t\t\tstrictEqual(measurements[0]?.description, \"Original\");\n\t\t\tstrictEqual(measurements[0]?.context, null);\n\t\t}),\n\t\tcreateCase(factory, \"links\", \"records initial and late links without changing parents\", async (fixture) => {\n\t\t\tlet target: TelemetrySpan | undefined;\n\t\t\tawait fixture.context.startSpan({ name: \"target\" }, (span) => {\n\t\t\t\ttarget = span;\n\t\t\t});\n\t\t\tif (!target) throw new Error(\"Expected target span\");\n\t\t\tconst targetSpan = target;\n\t\t\tconst attributes = { reason: [\"initial\"] };\n\t\t\tawait fixture.context.startSpan({ name: \"linked\", links: [{ context: target, attributes }] }, (span) => {\n\t\t\t\tattributes.reason.push(\"mutated\");\n\t\t\t\tspan.addLink({ context: targetSpan, attributes: { reason: \"late\" } });\n\t\t\t\tspan.addLink({ context: NOOP_TELEMETRY_CONTEXT });\n\t\t\t});\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tconst linked = findSpan(spans, \"linked\");\n\t\t\tstrictEqual(linked.parentId, null);\n\t\t\tstrictEqual(linked.parentContext, null);\n\t\t\tdeepStrictEqual(linked.links, [\n\t\t\t\t{ context: findSpan(spans, \"target\").context, attributes: { reason: [\"initial\"] } },\n\t\t\t\t{ context: findSpan(spans, \"target\").context, attributes: { reason: \"late\" } },\n\t\t\t]);\n\t\t}),\n\t\tcreateCase(factory, \"links\", \"ignores links added after source settlement\", async (fixture) => {\n\t\t\tlet source: TelemetrySpan | undefined;\n\t\t\tawait fixture.context.startSpan({ name: \"link-source\" }, (span) => {\n\t\t\t\tsource = span;\n\t\t\t});\n\t\t\tif (!source) throw new Error(\"Expected source span\");\n\t\t\tsource.addLink({ context: source });\n\t\t\tdeepStrictEqual(findSpan(await fixture.getSpans(), \"link-source\").links, []);\n\t\t}),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"propagation\",\n\t\t\t\"roundtrips parent identity through JSON without retaining the carrier\",\n\t\t\tasync (fixture) => {\n\t\t\t\tif (!fixture.propagation) return;\n\t\t\t\tconst propagation = fixture.propagation;\n\t\t\t\tawait fixture.context.startSpan({ name: \"sender\" }, async (span) => {\n\t\t\t\t\tconst carrier = propagation.inject(span);\n\t\t\t\t\tok(carrier);\n\t\t\t\t\tconst wire = JSON.parse(JSON.stringify(carrier)) as TelemetryCarrier;\n\t\t\t\t\tconst parent = propagation.extract(wire);\n\t\t\t\t\tfor (const key of Object.keys(wire)) wire[key] = \"mutated\";\n\t\t\t\t\tawait parent.startSpan({ name: \"receiver\" }, () => 42);\n\t\t\t\t\tdeepStrictEqual(propagation.inject(span), carrier);\n\t\t\t\t});\n\t\t\t\tconst spans = await fixture.getSpans();\n\t\t\t\tdeepStrictEqual(findSpan(spans, \"receiver\").parentContext, findSpan(spans, \"sender\").context);\n\t\t\t},\n\t\t),\n\t\tcreateCase(factory, \"propagation\", \"absent and unknown carriers produce recorded roots\", async (fixture) => {\n\t\t\tif (!fixture.propagation) return;\n\t\t\tstrictEqual(fixture.propagation.inject(NOOP_TELEMETRY_CONTEXT), undefined);\n\t\t\tconst carriers: readonly (TelemetryCarrier | undefined)[] = [undefined, {}, { unknown: \"format\" }];\n\t\t\tfor (const [index, carrier] of carriers.entries()) {\n\t\t\t\tconst context = fixture.propagation.extract(carrier);\n\t\t\t\tstrictEqual(await context.startSpan({ name: `fallback-${index}` }, () => 42), 42);\n\t\t\t}\n\t\t\tfor (const span of await fixture.getSpans()) strictEqual(span.parentContext, null);\n\t\t}),\n\n\t\tcreateCase(factory, \"propagation\", \"propagates across fresh adapters and multiple hops\", async (fixture) => {\n\t\t\tif (!fixture.propagation) return;\n\t\t\tawait using receiver = await factory();\n\t\t\tawait using worker = await factory();\n\t\t\tif (!receiver.propagation || !worker.propagation) throw new Error(\"Expected propagation on each fixture\");\n\t\t\tlet senderCarrier: TelemetryCarrier | undefined;\n\t\t\tawait fixture.context.startSpan({ name: \"sender\" }, (span) => {\n\t\t\t\tsenderCarrier = fixture.propagation?.inject(span);\n\t\t\t});\n\t\t\tok(senderCarrier);\n\t\t\tlet receiverCarrier: TelemetryCarrier | undefined;\n\t\t\tawait receiver.propagation\n\t\t\t\t.extract(JSON.parse(JSON.stringify(senderCarrier)) as TelemetryCarrier)\n\t\t\t\t.startSpan({ name: \"receiver\" }, (span) => {\n\t\t\t\t\treceiverCarrier = receiver.propagation?.inject(span);\n\t\t\t\t});\n\t\t\tok(receiverCarrier);\n\t\t\tawait worker.propagation\n\t\t\t\t.extract(JSON.parse(JSON.stringify(receiverCarrier)) as TelemetryCarrier)\n\t\t\t\t.startSpan({ name: \"worker\" }, () => {});\n\t\t\tdeepStrictEqual(findSpan(await receiver.getSpans(), \"receiver\").parentContext, senderCarrier);\n\t\t\tdeepStrictEqual(findSpan(await worker.getSpans(), \"worker\").parentContext, receiverCarrier);\n\t\t}),\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"callback lifecycle\",\n\t\t\t\"admits once synchronously and preserves the result\",\n\t\t\tasync (fixture) => {\n\t\t\t\tlet admitted = false;\n\t\t\t\tlet calls = 0;\n\t\t\t\tconst expected = { value: 42 };\n\t\t\t\tconst result = fixture.context.startSpan({ name: \"success\" }, () => {\n\t\t\t\t\tadmitted = true;\n\t\t\t\t\tcalls++;\n\t\t\t\t\treturn expected;\n\t\t\t\t});\n\n\t\t\t\tstrictEqual(admitted, true);\n\t\t\t\tstrictEqual(calls, 1);\n\t\t\t\tstrictEqual(await result, expected);\n\t\t\t\tdeepStrictEqual(findSpan(await fixture.getSpans(), \"success\").status, { status: \"ok\" });\n\t\t\t\tstrictEqual(findSpan(await fixture.getSpans(), \"success\").settled, true);\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(\n\t\t\tfactory,\n\t\t\t\"callback lifecycle\",\n\t\t\t\"preserves synchronous and asynchronous rejection values\",\n\t\t\tasync (fixture) => {\n\t\t\t\tconst syncError = new Error(\"sync\");\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"sync-error\" }, () => {\n\t\t\t\t\t\tthrow syncError;\n\t\t\t\t\t}),\n\t\t\t\t\tsyncError,\n\t\t\t\t);\n\n\t\t\t\tconst asyncError = { kind: \"async\" };\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"async-error\" }, async () => {\n\t\t\t\t\t\tthrow asyncError;\n\t\t\t\t\t}),\n\t\t\t\t\tasyncError,\n\t\t\t\t);\n\n\t\t\t\tawait rejectsWithSameValue(\n\t\t\t\t\tfixture.context.startSpan({ name: \"undefined-error\" }, () => Promise.reject(undefined)),\n\t\t\t\t\tundefined,\n\t\t\t\t);\n\n\t\t\t\tconst spans = await fixture.getSpans();\n\t\t\t\tfor (const name of [\"sync-error\", \"async-error\", \"undefined-error\"]) {\n\t\t\t\t\tstrictEqual(findSpan(spans, name).status.status, \"error\");\n\t\t\t\t}\n\t\t\t},\n\t\t),\n\n\t\tcreateCase(factory, \"status\", \"uses last explicit status without automatic overwrite\", async (fixture) => {\n\t\t\tawait fixture.context.startSpan({ name: \"last-status\" }, (span) => {\n\t\t\t\tspan.setStatus({ status: \"error\", error: { name: \"Expected\", message: \"first\" } });\n\t\t\t\tspan.setStatus({ status: \"ok\" });\n\t\t\t});\n\n\t\t\tconst thrown = new Error(\"after explicit status\");\n\t\t\tawait rejectsWithSameValue(\n\t\t\t\tfixture.context.startSpan({ name: \"explicit-before-throw\" }, (span) => {\n\t\t\t\t\tspan.setStatus({ status: \"ok\" });\n\t\t\t\t\tthrow thrown;\n\t\t\t\t}),\n\t\t\t\tthrown,\n\t\t\t);\n\n\t\t\tconst rejected = new Error(\"after async explicit status\");\n\t\t\tawait rejectsWithSameValue(\n\t\t\t\tfixture.context.startSpan({ name: \"explicit-before-rejection\" }, (span) => {\n\t\t\t\t\tspan.setStatus({ status: \"error\", error: { name: \"Expected\", message: \"async failure\" } });\n\t\t\t\t\treturn Promise.reject(rejected);\n\t\t\t\t}),\n\t\t\t\trejected,\n\t\t\t);\n\n\t\t\tawait fixture.context.startSpan({ name: \"expected-failure\" }, (span) => {\n\t\t\t\tspan.setStatus({ status: \"error\", error: { name: \"Expected\", message: \"returned failure\" } });\n\t\t\t\treturn { ok: false };\n\t\t\t});\n\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tdeepStrictEqual(findSpan(spans, \"last-status\").status, { status: \"ok\" });\n\t\t\tdeepStrictEqual(findSpan(spans, \"explicit-before-throw\").status, { status: \"ok\" });\n\t\t\tdeepStrictEqual(findSpan(spans, \"explicit-before-rejection\").status, {\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror: { name: \"Expected\", message: \"async failure\" },\n\t\t\t});\n\t\t\tdeepStrictEqual(findSpan(spans, \"expected-failure\").status, {\n\t\t\t\tstatus: \"error\",\n\t\t\t\terror: { name: \"Expected\", message: \"returned failure\" },\n\t\t\t});\n\t\t}),\n\n\t\tcreateCase(factory, \"recording\", \"merges attributes and records ordered events\", async (fixture) => {\n\t\t\tawait fixture.context.startSpan(\n\t\t\t\t{\n\t\t\t\t\tname: \"recording\",\n\t\t\t\t\tattributes: { start: \"value\", overwrite: \"start\", ignored: undefined },\n\t\t\t\t},\n\t\t\t\t(span) => {\n\t\t\t\t\tspan.setAttributes({ count: 1, overwrite: \"middle\" });\n\t\t\t\t\tspan.setAttributes({ count: undefined, overwrite: \"end\" });\n\t\t\t\t\tspan.addEvent(\"first\", { index: 1, ignored: undefined });\n\t\t\t\t\tspan.addEvent(\"second\", { index: 2 });\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst span = findSpan(await fixture.getSpans(), \"recording\");\n\t\t\tdeepStrictEqual(span.attributes, { start: \"value\", overwrite: \"end\", count: 1 });\n\t\t\tdeepStrictEqual(span.events, [\n\t\t\t\t{ name: \"first\", attributes: { index: 1 } },\n\t\t\t\t{ name: \"second\", attributes: { index: 2 } },\n\t\t\t]);\n\t\t}),\n\n\t\tcreateCase(factory, \"recording\", \"makes calls after settlement inert\", async (fixture) => {\n\t\t\tlet settledSpan: TelemetrySpan | undefined;\n\t\t\tawait fixture.context.startSpan({ name: \"settled\", attributes: { value: \"initial\" } }, (span) => {\n\t\t\t\tsettledSpan = span;\n\t\t\t});\n\t\t\tconst capturedSpan = settledSpan;\n\t\t\tif (!capturedSpan) throw new Error(\"Expected callback span\");\n\n\t\t\tcapturedSpan.setAttributes({ value: \"late\" });\n\t\t\tcapturedSpan.addEvent(\"late\", { value: true });\n\t\t\tcapturedSpan.setStatus({ status: \"error\" });\n\t\t\tlet childAdmitted = false;\n\t\t\tconst childResult = capturedSpan.startSpan({ name: \"late-child\" }, () => {\n\t\t\t\tchildAdmitted = true;\n\t\t\t\treturn 7;\n\t\t\t});\n\t\t\tstrictEqual(childAdmitted, true);\n\t\t\tstrictEqual(await childResult, 7);\n\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tstrictEqual(spans.length, 1);\n\t\t\tdeepStrictEqual(spans[0]?.attributes, { value: \"initial\" });\n\t\t\tdeepStrictEqual(spans[0]?.events, []);\n\t\t\tdeepStrictEqual(spans[0]?.status, { status: \"ok\" });\n\t\t}),\n\n\t\tcreateCase(factory, \"parentage\", \"records nested and concurrent child relationships\", async (fixture) => {\n\t\t\tlet releaseFirst: (() => void) | undefined;\n\t\t\tconst firstGate = new Promise<void>((resolve) => {\n\t\t\t\treleaseFirst = resolve;\n\t\t\t});\n\n\t\t\tawait fixture.context.startSpan({ name: \"parent\" }, async (parent) => {\n\t\t\t\tconst first = parent.startSpan({ name: \"first-child\" }, async () => {\n\t\t\t\t\tawait firstGate;\n\t\t\t\t});\n\t\t\t\tconst second = parent.startSpan({ name: \"second-child\" }, () => \"done\");\n\t\t\t\tstrictEqual(await second, \"done\");\n\t\t\t\treleaseFirst?.();\n\t\t\t\tawait first;\n\t\t\t});\n\n\t\t\tconst spans = await fixture.getSpans();\n\t\t\tconst parent = findSpan(spans, \"parent\");\n\t\t\tconst first = findSpan(spans, \"first-child\");\n\t\t\tconst second = findSpan(spans, \"second-child\");\n\t\t\tstrictEqual(parent.parentId, null);\n\t\t\tstrictEqual(first.parentId, parent.id);\n\t\t\tstrictEqual(second.parentId, parent.id);\n\t\t\tok(second.endSequence !== undefined && first.endSequence !== undefined && parent.endSequence !== undefined);\n\t\t\tok(second.endSequence < first.endSequence);\n\t\t\tok(first.endSequence < parent.endSequence);\n\t\t}),\n\t];\n}\n"]}
@@ -1,8 +1,11 @@
1
- import type { TelemetryContext } from "../index.ts";
2
- import type { RecordedTelemetrySpan } from "../memory.ts";
1
+ import type { TelemetryContext, TelemetryMetrics, TelemetryPropagation } from "../index.ts";
2
+ import type { RecordedTelemetryMeasurement, RecordedTelemetrySpan } from "../memory.ts";
3
3
  /** A fresh adapter instance and normalized snapshot reader owned by one conformance case. */
4
4
  export interface TelemetryAdapterFixture extends AsyncDisposable {
5
5
  readonly context: TelemetryContext;
6
+ readonly propagation?: TelemetryPropagation;
7
+ readonly metrics?: TelemetryMetrics;
8
+ getMetrics?(): Promise<readonly RecordedTelemetryMeasurement[]>;
6
9
  getSpans(): Promise<readonly RecordedTelemetrySpan[]>;
7
10
  }
8
11
  /** Creates an isolated adapter fixture for one conformance case. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,6FAA6F;AAC7F,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC/D,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,IAAI,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAAC;CACtD;AAED,oEAAoE;AACpE,MAAM,MAAM,8BAA8B,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEpF,4FAA4F;AAC5F,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAExF,6FAA6F;AAC7F,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC/D,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC,CAAC;IAChE,QAAQ,IAAI,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAAC;CACtD;AAED,oEAAoE;AACpE,MAAM,MAAM,8BAA8B,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEpF,4FAA4F;AAC5F,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TelemetryContext } from \"../index.ts\";\nimport type { RecordedTelemetrySpan } from \"../memory.ts\";\n\n/** A fresh adapter instance and normalized snapshot reader owned by one conformance case. */\nexport interface TelemetryAdapterFixture extends AsyncDisposable {\n\treadonly context: TelemetryContext;\n\tgetSpans(): Promise<readonly RecordedTelemetrySpan[]>;\n}\n\n/** Creates an isolated adapter fixture for one conformance case. */\nexport type TelemetryAdapterFixtureFactory = () => Promise<TelemetryAdapterFixture>;\n\n/** A runner-independent conformance case that can be registered with any test framework. */\nexport interface TelemetryAdapterConformanceCase {\n\treadonly group: string;\n\treadonly name: string;\n\trun(): Promise<void>;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TelemetryContext, TelemetryMetrics, TelemetryPropagation } from \"../index.ts\";\nimport type { RecordedTelemetryMeasurement, RecordedTelemetrySpan } from \"../memory.ts\";\n\n/** A fresh adapter instance and normalized snapshot reader owned by one conformance case. */\nexport interface TelemetryAdapterFixture extends AsyncDisposable {\n\treadonly context: TelemetryContext;\n\treadonly propagation?: TelemetryPropagation;\n\treadonly metrics?: TelemetryMetrics;\n\tgetMetrics?(): Promise<readonly RecordedTelemetryMeasurement[]>;\n\tgetSpans(): Promise<readonly RecordedTelemetrySpan[]>;\n}\n\n/** Creates an isolated adapter fixture for one conformance case. */\nexport type TelemetryAdapterFixtureFactory = () => Promise<TelemetryAdapterFixture>;\n\n/** A runner-independent conformance case that can be registered with any test framework. */\nexport interface TelemetryAdapterConformanceCase {\n\treadonly group: string;\n\treadonly name: string;\n\trun(): Promise<void>;\n}\n"]}
package/package.json CHANGED
@@ -1,16 +1,23 @@
1
1
  {
2
2
  "name": "@fractaal/pi-telemetry",
3
- "version": "0.86.9",
3
+ "version": "1.6.0",
4
4
  "description": "Vendor-neutral telemetry contracts and typed schema utilities for pi",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
+ "source": "./src/index.ts",
10
11
  "types": "./dist/index.d.ts",
11
12
  "import": "./dist/index.js"
12
13
  },
14
+ "./render": {
15
+ "source": "./src/render.ts",
16
+ "types": "./dist/render.d.ts",
17
+ "import": "./dist/render.js"
18
+ },
13
19
  "./testing": {
20
+ "source": "./src/testing/index.ts",
14
21
  "types": "./dist/testing/index.d.ts",
15
22
  "import": "./dist/testing/index.js"
16
23
  }
@@ -20,7 +27,7 @@
20
27
  "README.md"
21
28
  ],
22
29
  "scripts": {
23
- "clean": "shx rm -rf dist",
30
+ "clean": "node ../../scripts/package-files.mjs clean dist",
24
31
  "build": "tsc -p tsconfig.build.json",
25
32
  "test": "vitest --run",
26
33
  "prepublishOnly": "npm run clean && npm run build"
@@ -42,7 +49,7 @@
42
49
  },
43
50
  "devDependencies": {
44
51
  "@types/node": "22.19.19",
45
- "vitest": "4.1.11"
52
+ "vitest": "4.1.12"
46
53
  },
47
54
  "homepage": "https://github.com/fractaal/pi",
48
55
  "bugs": {