@jr200-labs/xstate-nats 0.9.25 → 0.10.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/README.md CHANGED
@@ -332,17 +332,17 @@ error messages and credential contents are deliberately excluded from logs and t
332
332
  ### Enabling tracing
333
333
 
334
334
  `@opentelemetry/api` is a peer dependency — the consumer controls the installed
335
- version and registers the SDK. If no provider is registered all telemetry calls
336
- become no-ops. Minimal setup:
335
+ version (1.10+) and registers the SDK. If no provider is registered all telemetry calls
336
+ become no-ops. Minimal setup with OpenTelemetry 3 (Node.js 22.15+):
337
337
 
338
338
  ```ts
339
339
  import { trace, propagation, context } from '@opentelemetry/api'
340
340
  import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'
341
341
  import { W3CTraceContextPropagator } from '@opentelemetry/core'
342
- import { BasicTracerProvider, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
342
+ import { TracerProvider, SimpleSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace'
343
343
 
344
- const provider = new BasicTracerProvider({
345
- spanProcessors: [/* your exporter */],
344
+ const provider = new TracerProvider({
345
+ spanProcessors: [new SimpleSpanProcessor({ exporter: new ConsoleSpanExporter() })],
346
346
  })
347
347
  trace.setGlobalTracerProvider(provider)
348
348
  propagation.setGlobalPropagator(new W3CTraceContextPropagator())
@@ -375,7 +375,7 @@ quarto preview docs # documentation and embedded demo
375
375
 
376
376
  ### Prerequisites
377
377
 
378
- - Node.js 22+
378
+ - Node.js 22.15+ (OpenTelemetry 3 development/test tooling)
379
379
  - pnpm
380
380
 
381
381
  ### Setup
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,GAAG,EACH,cAAc,EACd,MAAM,EAIP,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAA;AAkCzE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D,eAAO,MAAM,aAAa;UAKd,iBAAiB;WAChB,UAAU;sBACC,eAAe;eACtB,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI;gCA6FrD,CAAA;AAED,eAAO,MAAM,cAAc;gBACgB,cAAc,GAAG,IAAI;gCAM/D,CAAA;AAED,eAAO,MAAM,eAAe,QAAS,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,YAiBhE,CAAA"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAEjB,GAAG,EACH,cAAc,EACd,MAAM,EAIP,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAkB,MAAM,yBAAyB,CAAA;AAkCzE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,8BAA8B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D,eAAO,MAAM,aAAa;UAKd,iBAAiB;WAChB,UAAU;sBACC,eAAe;eACtB,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI;gCA6FrD,CAAA;AAED,eAAO,MAAM,cAAc;gBACgB,cAAc,GAAG,IAAI;gCAM/D,CAAA;AAED,eAAO,MAAM,eAAe,QAAS,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,YA0BhE,CAAA"}
@@ -113,6 +113,12 @@ export const parseNatsResult = (msg) => {
113
113
  if (msg instanceof Error) {
114
114
  return msg;
115
115
  }
116
+ // A binary response must bypass both JSON and lossy UTF-8 fallback decoding.
117
+ if ('data' in msg &&
118
+ msg.headers?.get('Content-Type')?.split(';', 1)[0].trim().toLowerCase() ===
119
+ 'application/octet-stream') {
120
+ return msg.data;
121
+ }
116
122
  let data;
117
123
  try {
118
124
  data = msg.json();
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/actions/connection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jr200-labs/xstate-nats",
3
- "version": "0.9.25",
3
+ "version": "0.10.0",
4
4
  "description": "XState machine for NATS",
5
5
  "license": "MIT",
6
6
  "author": "Jayshan Raghunandan",
@@ -35,27 +35,27 @@
35
35
  "@nats-io/kv": "^3.4.0",
36
36
  "@nats-io/nats-core": "^3.4.0",
37
37
  "@nats-io/obj": "^3.4.0",
38
- "xstate": "^5.33.2"
38
+ "xstate": "^5.33.3"
39
39
  },
40
40
  "peerDependencies": {
41
- "@opentelemetry/api": "^1.9.1"
41
+ "@opentelemetry/api": "^1.10.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@eslint/js": "^10.0.1",
45
- "@opentelemetry/api": "^1.9.1",
46
- "@opentelemetry/context-async-hooks": "^2.11.0",
47
- "@opentelemetry/core": "^2.11.0",
48
- "@opentelemetry/sdk-trace-base": "^2.11.0",
49
- "@types/node": "^22.20.5",
50
- "@vitest/coverage-v8": "^5.0.3",
51
- "eslint": "^10.12.0",
52
- "globals": "^17.13.0",
53
- "prettier": "^3.9.9",
45
+ "@opentelemetry/api": "^1.10.0",
46
+ "@opentelemetry/context-async-hooks": "^3.0.0",
47
+ "@opentelemetry/core": "^3.0.0",
48
+ "@opentelemetry/sdk-trace": "^3.0.0",
49
+ "@types/node": "^26.6.6",
50
+ "@vitest/coverage-v8": "^5.1.0",
51
+ "eslint": "^10.14.0",
52
+ "globals": "^17.14.0",
53
+ "prettier": "^3.9.10",
54
54
  "syncpack": "^15.3.3",
55
55
  "typescript": "^7.0.2",
56
- "typescript-eslint": "^8.71.0",
57
- "vite": "^8.3.2",
58
- "vitest": "^5.0.3"
56
+ "typescript-eslint": "^8.72.1",
57
+ "vite": "^8.3.5",
58
+ "vitest": "^5.1.0"
59
59
  },
60
60
  "scripts": {
61
61
  "build": "tsc",
@@ -24,6 +24,24 @@ describe('parseNatsResult', () => {
24
24
  expect(parseNatsResult(error)).toBe(error)
25
25
  })
26
26
 
27
+ it('preserves octet-stream reply bytes without JSON or UTF-8 decoding', () => {
28
+ const data = new Uint8Array([0, 255, 128, 17, 0])
29
+ const msg = {
30
+ data,
31
+ headers: {
32
+ get: (name: string) =>
33
+ name.toLowerCase() === 'content-type' ? 'application/octet-stream' : '',
34
+ },
35
+ json: vi.fn(() => {
36
+ throw new Error('not JSON')
37
+ }),
38
+ string: vi.fn(() => 'corrupted'),
39
+ } as any
40
+ expect(parseNatsResult(msg)).toBe(data)
41
+ expect(msg.json).not.toHaveBeenCalled()
42
+ expect(msg.string).not.toHaveBeenCalled()
43
+ })
44
+
27
45
  it('should parse JSON message', () => {
28
46
  const data = { foo: 'bar', num: 42 }
29
47
  const msg = {
@@ -174,6 +174,15 @@ export const parseNatsResult = (msg: Msg | KvEntry | null | Error) => {
174
174
  return msg
175
175
  }
176
176
 
177
+ // A binary response must bypass both JSON and lossy UTF-8 fallback decoding.
178
+ if (
179
+ 'data' in msg &&
180
+ msg.headers?.get('Content-Type')?.split(';', 1)[0].trim().toLowerCase() ===
181
+ 'application/octet-stream'
182
+ ) {
183
+ return msg.data
184
+ }
185
+
177
186
  let data
178
187
  try {
179
188
  data = msg.json()