@convex-dev/persistent-text-streaming 0.2.1 → 0.2.3-alpha.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.
@@ -19,5 +19,8 @@ import { FunctionReference } from "convex/server";
19
19
  */
20
20
  export declare function useStream(getPersistentBody: FunctionReference<"query", "public", {
21
21
  streamId: string;
22
- }, StreamBody>, streamUrl: URL, driven: boolean, streamId?: StreamId): StreamBody;
22
+ }, StreamBody>, streamUrl: URL, driven: boolean, streamId: StreamId | undefined, opts?: {
23
+ authToken?: string | null;
24
+ headers?: Record<string, string>;
25
+ }): StreamBody;
23
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,iBAAiB,EAAE,iBAAiB,CAClC,OAAO,EACP,QAAQ,EACR;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EACpB,UAAU,CACX,EACD,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,QAAQ,cAgEpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,iBAAiB,EAAE,iBAAiB,CAClC,OAAO,EACP,QAAQ,EACR;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EACpB,UAAU,CACX,EACD,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,IAAI,CAAC,EAAE;IAEL,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,cA0EF"}
@@ -21,7 +21,7 @@ if (typeof window === "undefined") {
21
21
  * `pending`.
22
22
  * @returns The body and status of the stream.
23
23
  */
24
- export function useStream(getPersistentBody, streamUrl, driven, streamId) {
24
+ export function useStream(getPersistentBody, streamUrl, driven, streamId, opts) {
25
25
  const [streamEnded, setStreamEnded] = useState(null);
26
26
  // Used to prevent strict mode from causing multiple streams to be started.
27
27
  const streamStarted = useRef(false);
@@ -38,7 +38,7 @@ export function useStream(getPersistentBody, streamUrl, driven, streamId) {
38
38
  return false;
39
39
  }, [driven, streamId, streamEnded]);
40
40
  // console.log("usePersistence", usePersistence);
41
- const persistentBody = useQuery(getPersistentBody, usePersistence && streamId ? { streamId: streamId } : "skip");
41
+ const persistentBody = useQuery(getPersistentBody, usePersistence && streamId ? { streamId } : "skip");
42
42
  const [streamBody, setStreamBody] = useState("");
43
43
  useEffect(() => {
44
44
  if (driven && streamId && !streamStarted.current) {
@@ -46,6 +46,11 @@ export function useStream(getPersistentBody, streamUrl, driven, streamId) {
46
46
  void (async () => {
47
47
  const success = await startStreaming(streamUrl, streamId, (text) => {
48
48
  setStreamBody((prev) => prev + text);
49
+ }, {
50
+ ...opts?.headers,
51
+ ...(opts?.authToken
52
+ ? { Authorization: `Bearer ${opts.authToken}` }
53
+ : {}),
49
54
  });
50
55
  setStreamEnded(success);
51
56
  })();
@@ -91,13 +96,13 @@ export function useStream(getPersistentBody, streamUrl, driven, streamId) {
91
96
  * CORS fails, or an exception is raised, or the stream is already running
92
97
  * or finished, etc.
93
98
  */
94
- async function startStreaming(url, streamId, onUpdate) {
99
+ async function startStreaming(url, streamId, onUpdate, headers) {
95
100
  const response = await fetch(url, {
96
101
  method: "POST",
97
102
  body: JSON.stringify({
98
103
  streamId: streamId,
99
104
  }),
100
- headers: { "Content-Type": "application/json" },
105
+ headers: { "Content-Type": "application/json", ...headers },
101
106
  });
102
107
  // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams
103
108
  if (response.status === 205) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"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"}
@@ -19,5 +19,8 @@ import { FunctionReference } from "convex/server";
19
19
  */
20
20
  export declare function useStream(getPersistentBody: FunctionReference<"query", "public", {
21
21
  streamId: string;
22
- }, StreamBody>, streamUrl: URL, driven: boolean, streamId?: StreamId): StreamBody;
22
+ }, StreamBody>, streamUrl: URL, driven: boolean, streamId: StreamId | undefined, opts?: {
23
+ authToken?: string | null;
24
+ headers?: Record<string, string>;
25
+ }): StreamBody;
23
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,iBAAiB,EAAE,iBAAiB,CAClC,OAAO,EACP,QAAQ,EACR;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EACpB,UAAU,CACX,EACD,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,QAAQ,cAgEpB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,iBAAiB,EAAE,iBAAiB,CAClC,OAAO,EACP,QAAQ,EACR;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EACpB,UAAU,CACX,EACD,SAAS,EAAE,GAAG,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,IAAI,CAAC,EAAE;IAEL,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,cA0EF"}
@@ -21,7 +21,7 @@ if (typeof window === "undefined") {
21
21
  * `pending`.
22
22
  * @returns The body and status of the stream.
23
23
  */
24
- export function useStream(getPersistentBody, streamUrl, driven, streamId) {
24
+ export function useStream(getPersistentBody, streamUrl, driven, streamId, opts) {
25
25
  const [streamEnded, setStreamEnded] = useState(null);
26
26
  // Used to prevent strict mode from causing multiple streams to be started.
27
27
  const streamStarted = useRef(false);
@@ -38,7 +38,7 @@ export function useStream(getPersistentBody, streamUrl, driven, streamId) {
38
38
  return false;
39
39
  }, [driven, streamId, streamEnded]);
40
40
  // console.log("usePersistence", usePersistence);
41
- const persistentBody = useQuery(getPersistentBody, usePersistence && streamId ? { streamId: streamId } : "skip");
41
+ const persistentBody = useQuery(getPersistentBody, usePersistence && streamId ? { streamId } : "skip");
42
42
  const [streamBody, setStreamBody] = useState("");
43
43
  useEffect(() => {
44
44
  if (driven && streamId && !streamStarted.current) {
@@ -46,6 +46,11 @@ export function useStream(getPersistentBody, streamUrl, driven, streamId) {
46
46
  void (async () => {
47
47
  const success = await startStreaming(streamUrl, streamId, (text) => {
48
48
  setStreamBody((prev) => prev + text);
49
+ }, {
50
+ ...opts?.headers,
51
+ ...(opts?.authToken
52
+ ? { Authorization: `Bearer ${opts.authToken}` }
53
+ : {}),
49
54
  });
50
55
  setStreamEnded(success);
51
56
  })();
@@ -91,13 +96,13 @@ export function useStream(getPersistentBody, streamUrl, driven, streamId) {
91
96
  * CORS fails, or an exception is raised, or the stream is already running
92
97
  * or finished, etc.
93
98
  */
94
- async function startStreaming(url, streamId, onUpdate) {
99
+ async function startStreaming(url, streamId, onUpdate, headers) {
95
100
  const response = await fetch(url, {
96
101
  method: "POST",
97
102
  body: JSON.stringify({
98
103
  streamId: streamId,
99
104
  }),
100
- headers: { "Content-Type": "application/json" },
105
+ headers: { "Content-Type": "application/json", ...headers },
101
106
  });
102
107
  // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams
103
108
  if (response.status === 205) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "email": "support@convex.dev",
8
8
  "url": "https://github.com/get-convex/persistent-text-streaming/issues"
9
9
  },
10
- "version": "0.2.1",
10
+ "version": "0.2.3-alpha.0",
11
11
  "license": "Apache-2.0",
12
12
  "keywords": [
13
13
  "convex",
@@ -70,8 +70,8 @@
70
70
  },
71
71
  "peerDependencies": {
72
72
  "convex": ">=1.23.0 <1.35.0",
73
- "react": "~18.3.1 || ~19.0.0",
74
- "react-dom": "~18.3.1 || ~19.0.0"
73
+ "react": "~18.3.1 || ^19.0.0",
74
+ "react-dom": "~18.3.1 || ^19.0.0"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@eslint/js": "^9.9.1",
@@ -37,7 +37,13 @@ export function useStream(
37
37
  >,
38
38
  streamUrl: URL,
39
39
  driven: boolean,
40
- streamId?: StreamId
40
+ streamId: StreamId | undefined,
41
+ opts?: {
42
+ // If provided, this will be passed as the Authorization header.
43
+ authToken?: string | null;
44
+ // If provided, these will be passed as additional headers.
45
+ headers?: Record<string, string>;
46
+ }
41
47
  ) {
42
48
  const [streamEnded, setStreamEnded] = useState(null as boolean | null);
43
49
 
@@ -56,10 +62,10 @@ export function useStream(
56
62
  // Otherwise, we'll try to drive the stream and use the HTTP response.
57
63
  return false;
58
64
  }, [driven, streamId, streamEnded]);
59
- // console.log("usePersistence", usePersistence);
65
+ // console.log("usePersistence", usePersistence);
60
66
  const persistentBody = useQuery(
61
67
  getPersistentBody,
62
- usePersistence && streamId ? { streamId: streamId! } : "skip"
68
+ usePersistence && streamId ? { streamId } : "skip"
63
69
  );
64
70
  const [streamBody, setStreamBody] = useState<string>("");
65
71
 
@@ -67,9 +73,19 @@ export function useStream(
67
73
  if (driven && streamId && !streamStarted.current) {
68
74
  // Kick off HTTP action.
69
75
  void (async () => {
70
- const success = await startStreaming(streamUrl, streamId, (text) => {
71
- setStreamBody((prev) => prev + text);
72
- });
76
+ const success = await startStreaming(
77
+ streamUrl,
78
+ streamId,
79
+ (text) => {
80
+ setStreamBody((prev) => prev + text);
81
+ },
82
+ {
83
+ ...opts?.headers,
84
+ ...(opts?.authToken
85
+ ? { Authorization: `Bearer ${opts.authToken}` }
86
+ : {}),
87
+ }
88
+ );
73
89
  setStreamEnded(success);
74
90
  })();
75
91
  // If we get remounted, we don't want to start a new stream.
@@ -119,14 +135,15 @@ export function useStream(
119
135
  async function startStreaming(
120
136
  url: URL,
121
137
  streamId: StreamId,
122
- onUpdate: (text: string) => void
138
+ onUpdate: (text: string) => void,
139
+ headers: Record<string, string>
123
140
  ) {
124
141
  const response = await fetch(url, {
125
142
  method: "POST",
126
143
  body: JSON.stringify({
127
144
  streamId: streamId,
128
145
  }),
129
- headers: { "Content-Type": "application/json" },
146
+ headers: { "Content-Type": "application/json", ...headers },
130
147
  });
131
148
  // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams
132
149
  if (response.status === 205) {