@azure/core-sse 2.3.1-alpha.20260311.2 → 2.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.
Files changed (57) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/index.d.ts +1 -1
  3. package/dist/browser/index.js.map +1 -1
  4. package/dist/browser/models.d.ts +1 -12
  5. package/dist/browser/models.js.map +1 -1
  6. package/dist/browser/sse.d.ts +2 -2
  7. package/dist/browser/sse.js.map +1 -1
  8. package/dist/browser/types-browser.d.mts +14 -0
  9. package/dist/browser/types-browser.mjs +9 -0
  10. package/dist/browser/types-browser.mjs.map +1 -0
  11. package/dist/browser/utils.d.ts +2 -2
  12. package/dist/browser/utils.js +2 -9
  13. package/dist/browser/utils.js.map +1 -1
  14. package/dist/commonjs/index.d.ts +1 -1
  15. package/dist/commonjs/index.js +1 -0
  16. package/dist/commonjs/index.js.map +2 -2
  17. package/dist/commonjs/models.d.ts +1 -12
  18. package/dist/commonjs/models.js +1 -0
  19. package/dist/commonjs/models.js.map +2 -2
  20. package/dist/commonjs/sse.d.ts +2 -2
  21. package/dist/commonjs/sse.js +1 -0
  22. package/dist/commonjs/sse.js.map +3 -3
  23. package/dist/commonjs/tsdoc-metadata.json +1 -1
  24. package/dist/commonjs/types.d.ts +22 -0
  25. package/dist/commonjs/types.js +34 -0
  26. package/dist/commonjs/types.js.map +7 -0
  27. package/dist/commonjs/utils.d.ts +2 -2
  28. package/dist/commonjs/utils.js +3 -7
  29. package/dist/commonjs/utils.js.map +3 -3
  30. package/dist/esm/index.d.ts +1 -1
  31. package/dist/esm/index.js +4 -4
  32. package/dist/esm/index.js.map +1 -7
  33. package/dist/esm/models.d.ts +1 -12
  34. package/dist/esm/models.js +4 -0
  35. package/dist/esm/models.js.map +1 -7
  36. package/dist/esm/sse.d.ts +2 -2
  37. package/dist/esm/sse.js +112 -100
  38. package/dist/esm/sse.js.map +1 -7
  39. package/dist/esm/types.d.ts +22 -0
  40. package/dist/esm/types.js +14 -0
  41. package/dist/esm/types.js.map +1 -0
  42. package/dist/esm/utils.d.ts +2 -2
  43. package/dist/esm/utils.js +64 -66
  44. package/dist/esm/utils.js.map +1 -7
  45. package/dist/react-native/index.d.ts +1 -1
  46. package/dist/react-native/index.js.map +1 -1
  47. package/dist/react-native/models.d.ts +1 -12
  48. package/dist/react-native/models.js.map +1 -1
  49. package/dist/react-native/sse.d.ts +2 -2
  50. package/dist/react-native/sse.js.map +1 -1
  51. package/dist/react-native/types-react-native.d.mts +49 -0
  52. package/dist/react-native/types-react-native.mjs +9 -0
  53. package/dist/react-native/types-react-native.mjs.map +1 -0
  54. package/dist/react-native/utils.d.ts +2 -2
  55. package/dist/react-native/utils.js +2 -9
  56. package/dist/react-native/utils.js.map +1 -1
  57. package/package.json +32 -19
@@ -0,0 +1,49 @@
1
+ declare global {
2
+ interface ReadableStream<R = any> {
3
+ cancel(reason?: any): Promise<void>;
4
+ getReader(): ReadableStreamDefaultReader<R>;
5
+ tee(): [ReadableStream<R>, ReadableStream<R>];
6
+ }
7
+ var ReadableStream: {
8
+ prototype: ReadableStream;
9
+ new <R = any>(underlyingSource?: any, strategy?: any): ReadableStream<R>;
10
+ };
11
+ interface ReadableStreamDefaultReader<R = any> {
12
+ read(): Promise<ReadableStreamReadValueResult<R> | ReadableStreamReadDoneResult<R>>;
13
+ cancel(reason?: any): Promise<void>;
14
+ releaseLock(): void;
15
+ }
16
+ interface ReadableStreamReadValueResult<T> {
17
+ done: false;
18
+ value: T;
19
+ }
20
+ interface ReadableStreamReadDoneResult<T> {
21
+ done: true;
22
+ value: T | undefined;
23
+ }
24
+ interface ReadableStreamDefaultController<R = any> {
25
+ enqueue(chunk: R): void;
26
+ close(): void;
27
+ }
28
+ interface TextDecoder {
29
+ decode(input?: ArrayBufferView | ArrayBuffer, options?: any): string;
30
+ }
31
+ var TextDecoder: {
32
+ prototype: TextDecoder;
33
+ new (label?: string, options?: any): TextDecoder;
34
+ };
35
+ }
36
+ /**
37
+ * An alias for Node.js's `http.IncomingMessage` type. Defined as `never` on
38
+ * browser and React Native platforms where Node.js HTTP is not available.
39
+ */
40
+ export type NodeIncomingMessage = never;
41
+ /**
42
+ * `NodeJSReadableStream` is not available in the browser or React Native.
43
+ */
44
+ export type NodeJSReadableStream = never;
45
+ /**
46
+ * No-op in browser/React Native — Node streams are not available.
47
+ */
48
+ export declare function cancelNodeStream(_stream: never): void;
49
+ //# sourceMappingURL=types-react-native.d.mts.map
@@ -0,0 +1,9 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * No-op in browser/React Native — Node streams are not available.
5
+ */
6
+ export function cancelNodeStream(_stream) {
7
+ // unreachable
8
+ }
9
+ //# sourceMappingURL=types-react-native.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-react-native.mjs","sourceRoot":"","sources":["../../src/types-react-native.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAqDlC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAc;IAC7C,cAAc;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// Stubs for web APIs that are available at runtime in React Native\n// but not provided by TypeScript's type system without DOM lib.\ndeclare global {\n interface ReadableStream<R = any> {\n cancel(reason?: any): Promise<void>;\n getReader(): ReadableStreamDefaultReader<R>;\n tee(): [ReadableStream<R>, ReadableStream<R>];\n }\n // eslint-disable-next-line no-var\n var ReadableStream: {\n prototype: ReadableStream;\n new <R = any>(underlyingSource?: any, strategy?: any): ReadableStream<R>;\n };\n interface ReadableStreamDefaultReader<R = any> {\n read(): Promise<ReadableStreamReadValueResult<R> | ReadableStreamReadDoneResult<R>>;\n cancel(reason?: any): Promise<void>;\n releaseLock(): void;\n }\n interface ReadableStreamReadValueResult<T> {\n done: false;\n value: T;\n }\n interface ReadableStreamReadDoneResult<T> {\n done: true;\n value: T | undefined;\n }\n interface ReadableStreamDefaultController<R = any> {\n enqueue(chunk: R): void;\n close(): void;\n }\n interface TextDecoder {\n decode(input?: ArrayBufferView | ArrayBuffer, options?: any): string;\n }\n // eslint-disable-next-line no-var\n var TextDecoder: {\n prototype: TextDecoder;\n new (label?: string, options?: any): TextDecoder;\n };\n}\n\n/**\n * An alias for Node.js's `http.IncomingMessage` type. Defined as `never` on\n * browser and React Native platforms where Node.js HTTP is not available.\n */\nexport type NodeIncomingMessage = never;\n\n/**\n * `NodeJSReadableStream` is not available in the browser or React Native.\n */\nexport type NodeJSReadableStream = never;\n\n/**\n * No-op in browser/React Native — Node streams are not available.\n */\nexport function cancelNodeStream(_stream: never): void {\n // unreachable\n}\n"]}
@@ -1,7 +1,7 @@
1
- import type { IncomingMessage } from "node:http";
1
+ import type { NodeIncomingMessage } from "./types-react-native.mjs";
2
2
  import type { NodeJSReadableStream } from "./models.js";
3
3
  export declare function createStream<T>(asyncIter: AsyncIterableIterator<T>, cancel: () => PromiseLike<void>): ReadableStream<T> & AsyncDisposable & AsyncIterable<T>;
4
- export declare function ensureAsyncIterable(stream: IncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>): {
4
+ export declare function ensureAsyncIterable(stream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>): {
5
5
  cancel(): Promise<void>;
6
6
  iterable: AsyncIterable<Uint8Array>;
7
7
  };
@@ -1,5 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
+ import { cancelNodeStream } from "./types-react-native.mjs";
3
4
  export function createStream(asyncIter, cancel) {
4
5
  const stream = iteratorToStream(asyncIter, cancel);
5
6
  /** TODO: remove these polyfills once all supported runtimes support them */
@@ -48,15 +49,7 @@ export function ensureAsyncIterable(stream) {
48
49
  }
49
50
  else {
50
51
  return {
51
- cancel: async () => {
52
- // socket could be null if the connection is already closed
53
- if ("socket" in stream && stream.socket) {
54
- stream.socket.end();
55
- }
56
- else {
57
- stream.destroy();
58
- }
59
- },
52
+ cancel: async () => cancelNodeStream(stream),
60
53
  iterable: stream,
61
54
  };
62
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAKlC,MAAM,UAAU,YAAY,CAC1B,SAAmC,EACnC,MAA+B;IAE/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,4EAA4E;IAC5E,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CACrB,MAAyB,EACzB,OAAgC;IAEhC,iBAAiB,CAAI,MAAM,CAAC,CAAC;IAC7B,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAc,EACd,OAAgC;IAE/B,MAAM,CAAC,YAAoB,KAAK,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACpC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,SAAc;IAEd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAkC,EAClC,MAA+B;IAE/B,OAAO,IAAI,cAAc,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,UAAU;YACnB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAA2E;IAK3E,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,iBAAiB,CAAa,MAAM,CAAC,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YAC7B,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,2DAA2D;gBAC3D,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACxC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,QAAQ,EAAE,MAAmC;SAC9C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,OAAO,OAAO,CACZ,IAAI;QACJ,OAAQ,IAAuB,CAAC,SAAS,KAAK,UAAU;QACxD,OAAQ,IAAuB,CAAC,GAAG,KAAK,UAAU,CACnD,CAAC;AACJ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,eAAe,CAAI,MAAyB;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,aAAa,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { IncomingMessage } from \"node:http\";\nimport type { NodeJSReadableStream } from \"./models.js\";\n\nexport function createStream<T>(\n asyncIter: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncDisposable & AsyncIterable<T> {\n const stream = iteratorToStream(asyncIter, cancel);\n /** TODO: remove these polyfills once all supported runtimes support them */\n return polyfillStream(stream, cancel);\n}\n\nfunction polyfillStream<T>(\n stream: ReadableStream<T>,\n dispose: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncIterable<T> & AsyncDisposable {\n makeAsyncIterable<T>(stream);\n makeAsyncDisposable(stream, dispose);\n return stream;\n}\n\nfunction makeAsyncDisposable<T>(\n webStream: any,\n dispose: () => PromiseLike<void>,\n): asserts webStream is ReadableStream<T> & AsyncDisposable {\n (Symbol.asyncDispose as any) ??= Symbol(\"Symbol.asyncDispose\");\n if (!webStream[Symbol.asyncDispose]) {\n webStream[Symbol.asyncDispose] = () => dispose();\n }\n}\n\nfunction makeAsyncIterable<T>(\n webStream: any,\n): asserts webStream is ReadableStream<T> & AsyncIterable<T> {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = () => toAsyncIterable(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = () => toAsyncIterable(webStream);\n }\n}\n\nfunction iteratorToStream<T>(\n iterator: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> {\n return new ReadableStream({\n async pull(controller) {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n },\n cancel,\n });\n}\n\nexport function ensureAsyncIterable(\n stream: IncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>,\n): {\n cancel(): Promise<void>;\n iterable: AsyncIterable<Uint8Array>;\n} {\n if (isReadableStream(stream)) {\n makeAsyncIterable<Uint8Array>(stream);\n return {\n cancel: () => stream.cancel(),\n iterable: stream,\n };\n } else {\n return {\n cancel: async () => {\n // socket could be null if the connection is already closed\n if (\"socket\" in stream && stream.socket) {\n stream.socket.end();\n } else {\n stream.destroy();\n }\n },\n iterable: stream as AsyncIterable<Uint8Array>,\n };\n }\n}\n\nfunction isReadableStream(body: unknown): body is ReadableStream {\n return Boolean(\n body &&\n typeof (body as ReadableStream).getReader === \"function\" &&\n typeof (body as ReadableStream).tee === \"function\",\n );\n}\n\nasync function* toAsyncIterable<T>(stream: ReadableStream<T>): AsyncIterableIterator<T> {\n const reader = stream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n } finally {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n }\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { NodeIncomingMessage } from \"#platform/types\";\nimport { cancelNodeStream } from \"#platform/types\";\nimport type { NodeJSReadableStream } from \"./models.js\";\n\nexport function createStream<T>(\n asyncIter: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncDisposable & AsyncIterable<T> {\n const stream = iteratorToStream(asyncIter, cancel);\n /** TODO: remove these polyfills once all supported runtimes support them */\n return polyfillStream(stream, cancel);\n}\n\nfunction polyfillStream<T>(\n stream: ReadableStream<T>,\n dispose: () => PromiseLike<void>,\n): ReadableStream<T> & AsyncIterable<T> & AsyncDisposable {\n makeAsyncIterable<T>(stream);\n makeAsyncDisposable(stream, dispose);\n return stream;\n}\n\nfunction makeAsyncDisposable<T>(\n webStream: any,\n dispose: () => PromiseLike<void>,\n): asserts webStream is ReadableStream<T> & AsyncDisposable {\n (Symbol.asyncDispose as any) ??= Symbol(\"Symbol.asyncDispose\");\n if (!webStream[Symbol.asyncDispose]) {\n webStream[Symbol.asyncDispose] = () => dispose();\n }\n}\n\nfunction makeAsyncIterable<T>(\n webStream: any,\n): asserts webStream is ReadableStream<T> & AsyncIterable<T> {\n if (!webStream[Symbol.asyncIterator]) {\n webStream[Symbol.asyncIterator] = () => toAsyncIterable(webStream);\n }\n\n if (!webStream.values) {\n webStream.values = () => toAsyncIterable(webStream);\n }\n}\n\nfunction iteratorToStream<T>(\n iterator: AsyncIterableIterator<T>,\n cancel: () => PromiseLike<void>,\n): ReadableStream<T> {\n return new ReadableStream({\n async pull(controller: ReadableStreamDefaultController<T>) {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n },\n cancel,\n });\n}\n\nexport function ensureAsyncIterable(\n stream: NodeIncomingMessage | NodeJSReadableStream | ReadableStream<Uint8Array>,\n): {\n cancel(): Promise<void>;\n iterable: AsyncIterable<Uint8Array>;\n} {\n if (isReadableStream(stream)) {\n makeAsyncIterable<Uint8Array>(stream);\n return {\n cancel: () => stream.cancel(),\n iterable: stream,\n };\n } else {\n return {\n cancel: async () => cancelNodeStream(stream),\n iterable: stream as AsyncIterable<Uint8Array>,\n };\n }\n}\n\nfunction isReadableStream(body: unknown): body is ReadableStream {\n return Boolean(\n body &&\n typeof (body as ReadableStream).getReader === \"function\" &&\n typeof (body as ReadableStream).tee === \"function\",\n );\n}\n\nasync function* toAsyncIterable<T>(stream: ReadableStream<T>): AsyncIterableIterator<T> {\n const reader = stream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value;\n }\n } finally {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure/core-sse",
3
- "version": "2.3.1-alpha.20260311.2",
3
+ "version": "2.4.0",
4
4
  "description": "Implementation of the Server-sent events protocol for Node.js and browsers.",
5
5
  "sdk-type": "client",
6
6
  "type": "module",
@@ -8,6 +8,13 @@
8
8
  "types": "./dist/commonjs/index.d.ts",
9
9
  "browser": "./dist/browser/index.js",
10
10
  "react-native": "./dist/react-native/index.js",
11
+ "imports": {
12
+ "#platform/types": {
13
+ "browser": "./src/types-browser.mts",
14
+ "react-native": "./src/types-react-native.mts",
15
+ "default": "./src/types.ts"
16
+ }
17
+ },
11
18
  "exports": {
12
19
  "./package.json": "./package.json",
13
20
  ".": {
@@ -35,9 +42,13 @@
35
42
  "README.md",
36
43
  "LICENSE"
37
44
  ],
38
- "repository": "github:Azure/azure-sdk-for-js",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/Azure/azure-sdk-for-js",
48
+ "directory": "sdk/core/core-sse"
49
+ },
39
50
  "engines": {
40
- "node": ">=20.0.0"
51
+ "node": ">=22.0.0"
41
52
  },
42
53
  "keywords": [
43
54
  "node",
@@ -56,28 +67,30 @@
56
67
  "sideEffects": false,
57
68
  "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
58
69
  "devDependencies": {
59
- "@azure-rest/core-client": ">=2.5.2-alpha <2.5.2-alphb",
60
- "@azure/logger": ">=1.3.1-alpha <1.3.1-alphb",
70
+ "@azure-rest/core-client": "^2.2.0",
71
+ "@azure/logger": "^1.1.4",
61
72
  "@types/express": "^5.0.3",
62
- "@types/node": "^20.19.25",
63
- "@vitest/browser-playwright": "^4.0.8",
64
- "@vitest/coverage-istanbul": "^4.0.8",
73
+ "@types/node": "^22.0.0",
74
+ "@types/react": "^19.2.14",
75
+ "@vitest/browser-playwright": "^4.1.2",
76
+ "@vitest/coverage-istanbul": "^4.1.2",
65
77
  "cross-env": "^10.1.0",
66
78
  "dotenv": "^16.6.1",
67
79
  "eslint": "^9.39.1",
68
80
  "express": "^5.2.1",
69
- "playwright": "^1.56.1",
70
- "prettier": "^3.6.2",
81
+ "playwright": "^1.60.0",
82
+ "prettier": "^3.9.1",
83
+ "react-native": "^0.84.1",
71
84
  "rimraf": "^6.1.0",
72
85
  "tsx": "^4.20.4",
73
- "typescript": "~5.9.3",
74
- "vitest": "^4.0.8",
86
+ "typescript": "~6.0.2",
87
+ "vitest": "^4.1.2",
88
+ "@azure-tools/test-utils-vitest": "^2.0.1",
75
89
  "@azure-tools/vite-plugin-browser-test-map": "^1.0.0",
90
+ "@azure/core-rest-pipeline": "^1.25.0",
76
91
  "@azure/dev-tool": "^1.0.0",
77
92
  "@azure/eslint-plugin-azure-sdk": "^3.0.0",
78
- "@azure-tools/test-utils-vitest": "^2.0.1",
79
- "@azure/core-rest-pipeline": "^1.23.1-alpha.20260311.2",
80
- "@azure/core-util": "^1.13.2-alpha.20260311.2"
93
+ "@azure/core-util": "^1.14.0"
81
94
  },
82
95
  "dependencies": {
83
96
  "tslib": "^2.6.2"
@@ -94,7 +107,7 @@
94
107
  "module": "./dist/esm/index.js",
95
108
  "scripts": {
96
109
  "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api",
97
- "build:samples": "tsc -p tsconfig.samples.json",
110
+ "build:samples": "tsc -p config/tsconfig.samples.json",
98
111
  "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs,json}\"",
99
112
  "clean": "rimraf --glob dist dist-* temp types *.tgz *.log",
100
113
  "execute:samples": "dev-tool samples run samples-dev",
@@ -104,9 +117,9 @@
104
117
  "lint:fix": "eslint package.json src test --fix --fix-type [problem,suggestion]",
105
118
  "pack": "pnpm pack 2>&1",
106
119
  "start-server": "tsx test/server/start.mts",
107
- "test": "npm run test:node && npm run test:browser",
108
- "test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --no-test-proxy --browser",
109
- "test:node": "dev-tool run build-test --no-browser-test && dev-tool run test:vitest --no-test-proxy",
120
+ "test": "tsc -b --noEmit && npm run test:node && npm run test:browser",
121
+ "test:browser": "dev-tool run test:vitest --no-test-proxy --browser",
122
+ "test:node": "dev-tool run test:vitest --no-test-proxy",
110
123
  "update-snippets": "dev-tool run update-snippets"
111
124
  }
112
125
  }