Skip to content

Commit bed3c81

Browse files
Cover empty-after-trim unicode wrapper baseURL validation
Co-authored-by: Eric Allam <eric@trigger.dev>
1 parent 195f5f3 commit bed3c81

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

docs/tasks/streams.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,8 @@ Examples:
682682
-`https://user:pass@api.trigger.dev`
683683
-`ftp://api.trigger.dev`
684684
-`ws://api.trigger.dev` / `wss://api.trigger.dev`
685+
-`\u1680///\u1680` (empty after trimming wrapper whitespace)
686+
-`\u3000///\u3000` (empty after trimming wrapper whitespace)
685687
-`https://api.trigger.dev/\ninternal`
686688
-`https://api.trigger.dev/in valid`
687689
-`https://api.trigger.dev/\tinternal`

packages/ai/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ Examples:
189189
-`https://user:pass@api.trigger.dev` (credentials)
190190
-`ftp://api.trigger.dev` (non-http protocol)
191191
-`ws://api.trigger.dev` / `wss://api.trigger.dev` (websocket protocols are rejected)
192+
-`\u1680///\u1680` (empty after trimming wrapper whitespace)
193+
-`\u3000///\u3000` (empty after trimming wrapper whitespace)
192194
-`https://api.trigger.dev/\ninternal` (internal whitespace characters)
193195
-`https://api.trigger.dev/in valid` (internal space characters)
194196
-`https://api.trigger.dev/\tinternal` (internal tab characters)

packages/ai/src/chatTransport.test.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,28 @@ describe("TriggerChatTransport", function () {
699699
}).toThrowError("baseURL must not be empty");
700700
});
701701

702+
it("throws when baseURL is empty after trimming ogham-space-mark wrappers", function () {
703+
expect(function () {
704+
new TriggerChatTransport({
705+
task: "chat-task",
706+
accessToken: "pk_trigger",
707+
baseURL: "\u1680///\u1680",
708+
stream: "chat-stream",
709+
});
710+
}).toThrowError("baseURL must not be empty");
711+
});
712+
713+
it("throws when baseURL is empty after trimming ideographic-space wrappers", function () {
714+
expect(function () {
715+
new TriggerChatTransport({
716+
task: "chat-task",
717+
accessToken: "pk_trigger",
718+
baseURL: "\u3000///\u3000",
719+
stream: "chat-stream",
720+
});
721+
}).toThrowError("baseURL must not be empty");
722+
});
723+
702724
it("uses default baseURL when omitted", function () {
703725
expect(function () {
704726
new TriggerChatTransport({
@@ -3581,6 +3603,28 @@ describe("TriggerChatTransport", function () {
35813603
}).toThrowError("baseURL must not be empty");
35823604
});
35833605

3606+
it("throws from factory when baseURL is empty after trimming ogham-space-mark wrappers", function () {
3607+
expect(function () {
3608+
createTriggerChatTransport({
3609+
task: "chat-task",
3610+
accessToken: "pk_trigger",
3611+
baseURL: "\u1680///\u1680",
3612+
stream: "chat-stream",
3613+
});
3614+
}).toThrowError("baseURL must not be empty");
3615+
});
3616+
3617+
it("throws from factory when baseURL is empty after trimming ideographic-space wrappers", function () {
3618+
expect(function () {
3619+
createTriggerChatTransport({
3620+
task: "chat-task",
3621+
accessToken: "pk_trigger",
3622+
baseURL: "\u3000///\u3000",
3623+
stream: "chat-stream",
3624+
});
3625+
}).toThrowError("baseURL must not be empty");
3626+
});
3627+
35843628
it("uses default baseURL in factory when omitted", function () {
35853629
expect(function () {
35863630
createTriggerChatTransport({

0 commit comments

Comments
 (0)