blink 0.1.65 → 0.1.66
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/dist/browser/api/index.browser.cjs +1 -0
- package/dist/browser/api/index.browser.d.cts +2 -0
- package/dist/browser/api/index.browser.d.ts +2 -0
- package/dist/browser/api/index.browser.js +1 -0
- package/dist/browser/client-C9uh5T54.cjs +21 -0
- package/dist/{index-y1u5VC2_.d.ts → browser/client-Co98ZOqj.d.cts} +3 -22
- package/dist/browser/client-DsiYP47H.js +21 -0
- package/dist/{index-DXNEroA1.d.cts → browser/client-J5gD4j_a.d.ts} +3 -22
- package/dist/browser/http/index.cjs +1 -0
- package/dist/browser/http/index.d.cts +60 -0
- package/dist/browser/http/index.d.ts +60 -0
- package/dist/browser/http/index.js +1 -0
- package/dist/browser/index.browser-CFap1r_Y.cjs +1 -0
- package/dist/{index-BdS2C_9A.d.cts → browser/index.browser-CHLe3dau.d.cts} +15 -91
- package/dist/browser/index.browser-CeE1x4lk.js +1 -0
- package/dist/{index-E064W90j.d.ts → browser/index.browser-Db4eudpn.d.ts} +15 -91
- package/dist/browser/react/index.cjs +1 -0
- package/dist/browser/react/index.d.cts +31 -0
- package/dist/browser/react/index.d.ts +31 -0
- package/dist/browser/react/index.js +1 -0
- package/dist/cli/{auth-BUNIOupD.js → auth-Dw-wJ1IM.js} +1 -1
- package/dist/cli/{chat-L0VBV1Zr.js → chat-CvTLq5E0.js} +1 -1
- package/dist/cli/{dev-knS68Vac.js → dev-Cp22zef8.js} +63 -63
- package/dist/cli/index.js +3 -3
- package/dist/cli/{init-BEvNUWUD.js → init-LfebhEg-.js} +1 -1
- package/dist/cli/login-KHDcJ0iZ.js +1 -0
- package/dist/node/api/index.node.cjs +30 -0
- package/dist/node/api/index.node.d.cts +82 -0
- package/dist/node/api/index.node.d.ts +82 -0
- package/dist/node/api/index.node.js +30 -0
- package/dist/node/index.browser-D1y2mwdW.d.ts +281 -0
- package/dist/node/index.browser-wBJ4jcnM.d.cts +281 -0
- package/dist/node/test.d.cts +88 -0
- package/dist/node/test.d.ts +88 -0
- package/package.json +35 -17
- package/dist/api/index.cjs +0 -24
- package/dist/api/index.d.cts +0 -2
- package/dist/api/index.d.ts +0 -2
- package/dist/api/index.js +0 -24
- package/dist/cli/login-DKW_KVCA.js +0 -1
- package/dist/http/api.cjs +0 -1
- package/dist/http/api.d.cts +0 -204
- package/dist/http/api.d.ts +0 -204
- package/dist/http/api.js +0 -1
- package/dist/http/index.cjs +0 -1
- package/dist/http/index.d.cts +0 -3
- package/dist/http/index.d.ts +0 -3
- package/dist/http/index.js +0 -1
- package/dist/http-CU96NOdn.js +0 -21
- package/dist/http-DXLJkJIR.cjs +0 -21
- package/dist/test.d.cts +0 -12
- package/dist/test.d.ts +0 -12
- /package/dist/cli/{dist-NqrnQGst.js → dist-CN69Y-yA.js} +0 -0
- /package/dist/cli/{open-CSMQaj0E.js → open-Cr8lEmcs.js} +0 -0
- /package/dist/{build → node/build}/index.cjs +0 -0
- /package/dist/{build → node/build}/index.d.cts +0 -0
- /package/dist/{build → node/build}/index.d.ts +0 -0
- /package/dist/{build → node/build}/index.js +0 -0
- /package/dist/{chunk-___ucjiX.js → node/chunk-___ucjiX.js} +0 -0
- /package/dist/{chunk-hhQzssFb.cjs → node/chunk-hhQzssFb.cjs} +0 -0
- /package/dist/{test.cjs → node/test.cjs} +0 -0
- /package/dist/{test.js → node/test.js} +0 -0
package/dist/http/api.d.cts
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import * as hono_types0 from "hono/types";
|
|
2
|
-
import * as hono_hono_base0 from "hono/hono-base";
|
|
3
|
-
import { UIDataTypes, UIMessage, UIMessagePart, UITools } from "ai";
|
|
4
|
-
|
|
5
|
-
//#region src/api/chat.d.ts
|
|
6
|
-
interface Chat {
|
|
7
|
-
readonly id: string;
|
|
8
|
-
}
|
|
9
|
-
type ChatBehavior = "enqueue" | "interrupt" | "append";
|
|
10
|
-
interface Message<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools> {
|
|
11
|
-
readonly role: UIMessage["role"];
|
|
12
|
-
readonly parts: UIMessagePart<DATA_TYPES, TOOLS>[];
|
|
13
|
-
readonly metadata?: METADATA;
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region src/api/internal/client.d.ts
|
|
17
|
-
/**
|
|
18
|
-
* APIServerURLEnvironmentVariable is the environment variable that
|
|
19
|
-
* the Blink agent uses for executions to the `blink.*` API.
|
|
20
|
-
* (e.g. blink.chat.upsert).
|
|
21
|
-
*/
|
|
22
|
-
declare const APIServerURLEnvironmentVariable = "BLINK_API_SERVER_URL";
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/http/api.d.ts
|
|
25
|
-
/**
|
|
26
|
-
* APIBindings are functions that will be invoked by the agent.
|
|
27
|
-
*/
|
|
28
|
-
type APIBindings = {
|
|
29
|
-
storage: {
|
|
30
|
-
kv: {
|
|
31
|
-
get: (key: string) => Promise<string | undefined>;
|
|
32
|
-
set: (key: string, value: string) => Promise<void>;
|
|
33
|
-
del: (key: string) => Promise<void>;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
chat: {
|
|
37
|
-
upsert: (id: string) => Promise<Chat>;
|
|
38
|
-
sendMessages: (id: string, options: {
|
|
39
|
-
messages: Message[];
|
|
40
|
-
behavior: ChatBehavior;
|
|
41
|
-
}) => Promise<void>;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* To implement your own API bindings, you can use Hono's
|
|
46
|
-
* `createServerAdapter` to create a server that will
|
|
47
|
-
* handle requests to the API.
|
|
48
|
-
*
|
|
49
|
-
* ```ts
|
|
50
|
-
* const server = createHTTPServer(
|
|
51
|
-
* createServerAdapter((req) => {
|
|
52
|
-
* return api.fetch(req, <your-bindings>);
|
|
53
|
-
* })
|
|
54
|
-
* );
|
|
55
|
-
* server.listen(options.port);
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
declare const api: hono_hono_base0.HonoBase<{
|
|
59
|
-
Bindings: APIBindings;
|
|
60
|
-
}, hono_types0.BlankSchema | hono_types0.MergeSchemaPath<{
|
|
61
|
-
"/kv/:key": {
|
|
62
|
-
$get: {
|
|
63
|
-
input: {
|
|
64
|
-
param: {
|
|
65
|
-
key: string;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
output: {
|
|
69
|
-
error: string;
|
|
70
|
-
};
|
|
71
|
-
outputFormat: "json";
|
|
72
|
-
status: 400;
|
|
73
|
-
} | {
|
|
74
|
-
input: {
|
|
75
|
-
param: {
|
|
76
|
-
key: string;
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
output: {
|
|
80
|
-
value: string | undefined;
|
|
81
|
-
};
|
|
82
|
-
outputFormat: "json";
|
|
83
|
-
status: 200;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
} & {
|
|
87
|
-
"/kv/:key": {
|
|
88
|
-
$post: {
|
|
89
|
-
input: {
|
|
90
|
-
json: {
|
|
91
|
-
value: string;
|
|
92
|
-
};
|
|
93
|
-
} & {
|
|
94
|
-
param: {
|
|
95
|
-
key: string;
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
output: {
|
|
99
|
-
error: string;
|
|
100
|
-
};
|
|
101
|
-
outputFormat: "json";
|
|
102
|
-
status: 400;
|
|
103
|
-
} | {
|
|
104
|
-
input: {
|
|
105
|
-
json: {
|
|
106
|
-
value: string;
|
|
107
|
-
};
|
|
108
|
-
} & {
|
|
109
|
-
param: {
|
|
110
|
-
key: string;
|
|
111
|
-
};
|
|
112
|
-
};
|
|
113
|
-
output: null;
|
|
114
|
-
outputFormat: "body";
|
|
115
|
-
status: 204;
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
} & {
|
|
119
|
-
"/kv/:key": {
|
|
120
|
-
$delete: {
|
|
121
|
-
input: {
|
|
122
|
-
param: {
|
|
123
|
-
key: string;
|
|
124
|
-
};
|
|
125
|
-
};
|
|
126
|
-
output: {
|
|
127
|
-
error: string;
|
|
128
|
-
};
|
|
129
|
-
outputFormat: "json";
|
|
130
|
-
status: 400;
|
|
131
|
-
} | {
|
|
132
|
-
input: {
|
|
133
|
-
param: {
|
|
134
|
-
key: string;
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
output: null;
|
|
138
|
-
outputFormat: "body";
|
|
139
|
-
status: 204;
|
|
140
|
-
};
|
|
141
|
-
};
|
|
142
|
-
}, "/storage"> | hono_types0.MergeSchemaPath<{
|
|
143
|
-
"/:id": {
|
|
144
|
-
$post: {
|
|
145
|
-
input: {
|
|
146
|
-
param: {
|
|
147
|
-
id: string;
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
output: {
|
|
151
|
-
error: string;
|
|
152
|
-
};
|
|
153
|
-
outputFormat: "json";
|
|
154
|
-
status: 400;
|
|
155
|
-
} | {
|
|
156
|
-
input: {
|
|
157
|
-
param: {
|
|
158
|
-
id: string;
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
|
-
output: {
|
|
162
|
-
id: string;
|
|
163
|
-
};
|
|
164
|
-
outputFormat: "json";
|
|
165
|
-
status: 200;
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
} & {
|
|
169
|
-
"/:id/sendMessages": {
|
|
170
|
-
$post: {
|
|
171
|
-
input: {
|
|
172
|
-
json: {
|
|
173
|
-
messages: Message[];
|
|
174
|
-
behavior: ChatBehavior;
|
|
175
|
-
};
|
|
176
|
-
} & {
|
|
177
|
-
param: {
|
|
178
|
-
id: string;
|
|
179
|
-
};
|
|
180
|
-
};
|
|
181
|
-
output: {
|
|
182
|
-
error: string;
|
|
183
|
-
};
|
|
184
|
-
outputFormat: "json";
|
|
185
|
-
status: 400;
|
|
186
|
-
} | {
|
|
187
|
-
input: {
|
|
188
|
-
json: {
|
|
189
|
-
messages: Message[];
|
|
190
|
-
behavior: ChatBehavior;
|
|
191
|
-
};
|
|
192
|
-
} & {
|
|
193
|
-
param: {
|
|
194
|
-
id: string;
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
output: null;
|
|
198
|
-
outputFormat: "body";
|
|
199
|
-
status: 204;
|
|
200
|
-
};
|
|
201
|
-
};
|
|
202
|
-
}, "/chat">, "/">;
|
|
203
|
-
//#endregion
|
|
204
|
-
export { APIBindings, APIServerURLEnvironmentVariable, api as default };
|
package/dist/http/api.d.ts
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import * as hono_types0 from "hono/types";
|
|
2
|
-
import * as hono_hono_base0 from "hono/hono-base";
|
|
3
|
-
import { UIDataTypes, UIMessage, UIMessagePart, UITools } from "ai";
|
|
4
|
-
|
|
5
|
-
//#region src/api/chat.d.ts
|
|
6
|
-
interface Chat {
|
|
7
|
-
readonly id: string;
|
|
8
|
-
}
|
|
9
|
-
type ChatBehavior = "enqueue" | "interrupt" | "append";
|
|
10
|
-
interface Message<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools> {
|
|
11
|
-
readonly role: UIMessage["role"];
|
|
12
|
-
readonly parts: UIMessagePart<DATA_TYPES, TOOLS>[];
|
|
13
|
-
readonly metadata?: METADATA;
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region src/api/internal/client.d.ts
|
|
17
|
-
/**
|
|
18
|
-
* APIServerURLEnvironmentVariable is the environment variable that
|
|
19
|
-
* the Blink agent uses for executions to the `blink.*` API.
|
|
20
|
-
* (e.g. blink.chat.upsert).
|
|
21
|
-
*/
|
|
22
|
-
declare const APIServerURLEnvironmentVariable = "BLINK_API_SERVER_URL";
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/http/api.d.ts
|
|
25
|
-
/**
|
|
26
|
-
* APIBindings are functions that will be invoked by the agent.
|
|
27
|
-
*/
|
|
28
|
-
type APIBindings = {
|
|
29
|
-
storage: {
|
|
30
|
-
kv: {
|
|
31
|
-
get: (key: string) => Promise<string | undefined>;
|
|
32
|
-
set: (key: string, value: string) => Promise<void>;
|
|
33
|
-
del: (key: string) => Promise<void>;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
chat: {
|
|
37
|
-
upsert: (id: string) => Promise<Chat>;
|
|
38
|
-
sendMessages: (id: string, options: {
|
|
39
|
-
messages: Message[];
|
|
40
|
-
behavior: ChatBehavior;
|
|
41
|
-
}) => Promise<void>;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* To implement your own API bindings, you can use Hono's
|
|
46
|
-
* `createServerAdapter` to create a server that will
|
|
47
|
-
* handle requests to the API.
|
|
48
|
-
*
|
|
49
|
-
* ```ts
|
|
50
|
-
* const server = createHTTPServer(
|
|
51
|
-
* createServerAdapter((req) => {
|
|
52
|
-
* return api.fetch(req, <your-bindings>);
|
|
53
|
-
* })
|
|
54
|
-
* );
|
|
55
|
-
* server.listen(options.port);
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
declare const api: hono_hono_base0.HonoBase<{
|
|
59
|
-
Bindings: APIBindings;
|
|
60
|
-
}, hono_types0.BlankSchema | hono_types0.MergeSchemaPath<{
|
|
61
|
-
"/kv/:key": {
|
|
62
|
-
$get: {
|
|
63
|
-
input: {
|
|
64
|
-
param: {
|
|
65
|
-
key: string;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
output: {
|
|
69
|
-
error: string;
|
|
70
|
-
};
|
|
71
|
-
outputFormat: "json";
|
|
72
|
-
status: 400;
|
|
73
|
-
} | {
|
|
74
|
-
input: {
|
|
75
|
-
param: {
|
|
76
|
-
key: string;
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
output: {
|
|
80
|
-
value: string | undefined;
|
|
81
|
-
};
|
|
82
|
-
outputFormat: "json";
|
|
83
|
-
status: 200;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
} & {
|
|
87
|
-
"/kv/:key": {
|
|
88
|
-
$post: {
|
|
89
|
-
input: {
|
|
90
|
-
json: {
|
|
91
|
-
value: string;
|
|
92
|
-
};
|
|
93
|
-
} & {
|
|
94
|
-
param: {
|
|
95
|
-
key: string;
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
output: {
|
|
99
|
-
error: string;
|
|
100
|
-
};
|
|
101
|
-
outputFormat: "json";
|
|
102
|
-
status: 400;
|
|
103
|
-
} | {
|
|
104
|
-
input: {
|
|
105
|
-
json: {
|
|
106
|
-
value: string;
|
|
107
|
-
};
|
|
108
|
-
} & {
|
|
109
|
-
param: {
|
|
110
|
-
key: string;
|
|
111
|
-
};
|
|
112
|
-
};
|
|
113
|
-
output: null;
|
|
114
|
-
outputFormat: "body";
|
|
115
|
-
status: 204;
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
} & {
|
|
119
|
-
"/kv/:key": {
|
|
120
|
-
$delete: {
|
|
121
|
-
input: {
|
|
122
|
-
param: {
|
|
123
|
-
key: string;
|
|
124
|
-
};
|
|
125
|
-
};
|
|
126
|
-
output: {
|
|
127
|
-
error: string;
|
|
128
|
-
};
|
|
129
|
-
outputFormat: "json";
|
|
130
|
-
status: 400;
|
|
131
|
-
} | {
|
|
132
|
-
input: {
|
|
133
|
-
param: {
|
|
134
|
-
key: string;
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
output: null;
|
|
138
|
-
outputFormat: "body";
|
|
139
|
-
status: 204;
|
|
140
|
-
};
|
|
141
|
-
};
|
|
142
|
-
}, "/storage"> | hono_types0.MergeSchemaPath<{
|
|
143
|
-
"/:id": {
|
|
144
|
-
$post: {
|
|
145
|
-
input: {
|
|
146
|
-
param: {
|
|
147
|
-
id: string;
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
output: {
|
|
151
|
-
error: string;
|
|
152
|
-
};
|
|
153
|
-
outputFormat: "json";
|
|
154
|
-
status: 400;
|
|
155
|
-
} | {
|
|
156
|
-
input: {
|
|
157
|
-
param: {
|
|
158
|
-
id: string;
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
|
-
output: {
|
|
162
|
-
id: string;
|
|
163
|
-
};
|
|
164
|
-
outputFormat: "json";
|
|
165
|
-
status: 200;
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
} & {
|
|
169
|
-
"/:id/sendMessages": {
|
|
170
|
-
$post: {
|
|
171
|
-
input: {
|
|
172
|
-
json: {
|
|
173
|
-
messages: Message[];
|
|
174
|
-
behavior: ChatBehavior;
|
|
175
|
-
};
|
|
176
|
-
} & {
|
|
177
|
-
param: {
|
|
178
|
-
id: string;
|
|
179
|
-
};
|
|
180
|
-
};
|
|
181
|
-
output: {
|
|
182
|
-
error: string;
|
|
183
|
-
};
|
|
184
|
-
outputFormat: "json";
|
|
185
|
-
status: 400;
|
|
186
|
-
} | {
|
|
187
|
-
input: {
|
|
188
|
-
json: {
|
|
189
|
-
messages: Message[];
|
|
190
|
-
behavior: ChatBehavior;
|
|
191
|
-
};
|
|
192
|
-
} & {
|
|
193
|
-
param: {
|
|
194
|
-
id: string;
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
output: null;
|
|
198
|
-
outputFormat: "body";
|
|
199
|
-
status: 204;
|
|
200
|
-
};
|
|
201
|
-
};
|
|
202
|
-
}, "/chat">, "/">;
|
|
203
|
-
//#endregion
|
|
204
|
-
export { APIBindings, APIServerURLEnvironmentVariable, api as default };
|
package/dist/http/api.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=(e,t,n)=>(r,i)=>{let a=-1;return o(0);async function o(s){if(s<=a)throw Error(`next() called multiple times`);a=s;let c,l=!1,u;if(e[s]?(u=e[s][0][0],r.req.routeIndex=s):u=s===e.length&&i||void 0,u)try{c=await u(r,()=>o(s+1))}catch(e){if(e instanceof Error&&t)r.error=e,c=await t(e,r),l=!0;else throw e}else r.finalized===!1&&n&&(c=await n(r));return c&&(r.finalized===!1||l)&&(r.res=c),r}},t=Symbol(),n=async(e,t=Object.create(null))=>{let{all:n=!1,dot:i=!1}=t,a=e instanceof S?e.raw.headers:e.headers,o=a.get(`Content-Type`);return o?.startsWith(`multipart/form-data`)||o?.startsWith(`application/x-www-form-urlencoded`)?r(e,{all:n,dot:i}):{}};async function r(e,t){let n=await e.formData();return n?i(n,t):{}}function i(e,t){let n=Object.create(null);return e.forEach((e,r)=>{let i=t.all||r.endsWith(`[]`);i?a(n,r,e):n[r]=e}),t.dot&&Object.entries(n).forEach(([e,t])=>{let r=e.includes(`.`);r&&(o(n,e,t),delete n[e])}),n}var a=(e,t,n)=>{e[t]===void 0?t.endsWith(`[]`)?e[t]=[n]:e[t]=n:Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]},o=(e,t,n)=>{let r=e,i=t.split(`.`);i.forEach((e,t)=>{t===i.length-1?r[e]=n:((!r[e]||typeof r[e]!=`object`||Array.isArray(r[e])||r[e]instanceof File)&&(r[e]=Object.create(null)),r=r[e])})},s=e=>{let t=e.split(`/`);return t[0]===``&&t.shift(),t},c=e=>{let{groups:t,path:n}=l(e),r=s(n);return u(r,t)},l=e=>{let t=[];return e=e.replace(/\{[^}]+\}/g,(e,n)=>{let r=`@${n}`;return t.push([r,e]),r}),{groups:t,path:e}},u=(e,t)=>{for(let n=t.length-1;n>=0;n--){let[r]=t[n];for(let i=e.length-1;i>=0;i--)if(e[i].includes(r)){e[i]=e[i].replace(r,t[n][1]);break}}return e},d={},f=(e,t)=>{if(e===`*`)return`*`;let n=e.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(n){let r=`${e}#${t}`;return d[r]||(n[2]?d[r]=t&&t[0]!==`:`&&t[0]!==`*`?[r,n[1],RegExp(`^${n[2]}(?=/${t})`)]:[e,n[1],RegExp(`^${n[2]}$`)]:d[r]=[e,n[1],!0]),d[r]}return null},p=(e,t)=>{try{return t(e)}catch{return e.replace(/(?:%[0-9A-Fa-f]{2})+/g,e=>{try{return t(e)}catch{return e}})}},m=e=>p(e,decodeURI),h=e=>{let t=e.url,n=t.indexOf(`/`,t.indexOf(`:`)+4),r=n;for(;r<t.length;r++){let e=t.charCodeAt(r);if(e===37){let e=t.indexOf(`?`,r),i=t.slice(n,e===-1?void 0:e);return m(i.includes(`%25`)?i.replace(/%25/g,`%2525`):i)}else if(e===63)break}return t.slice(n,r)},g=e=>{let t=h(e);return t.length>1&&t.at(-1)===`/`?t.slice(0,-1):t},_=(e,t,...n)=>(n.length&&(t=_(t,...n)),`${e?.[0]===`/`?``:`/`}${e}${t===`/`?``:`${e?.at(-1)===`/`?``:`/`}${t?.[0]===`/`?t.slice(1):t}`}`),ee=e=>{if(e.charCodeAt(e.length-1)!==63||!e.includes(`:`))return null;let t=e.split(`/`),n=[],r=``;return t.forEach(e=>{if(e!==``&&!/\:/.test(e))r+=`/`+e;else if(/\:/.test(e))if(/\?/.test(e)){n.length===0&&r===``?n.push(`/`):n.push(r);let t=e.replace(`?`,``);r+=`/`+t,n.push(r)}else r+=`/`+e}),n.filter((e,t,n)=>n.indexOf(e)===t)},v=e=>/[%+]/.test(e)?(e.indexOf(`+`)!==-1&&(e=e.replace(/\+/g,` `)),e.indexOf(`%`)===-1?e:p(e,b)):e,y=(e,t,n)=>{let r;if(!n&&t&&!/[%+]/.test(t)){let n=e.indexOf(`?${t}`,8);for(n===-1&&(n=e.indexOf(`&${t}`,8));n!==-1;){let r=e.charCodeAt(n+t.length+1);if(r===61){let r=n+t.length+2,i=e.indexOf(`&`,r);return v(e.slice(r,i===-1?void 0:i))}else if(r==38||isNaN(r))return``;n=e.indexOf(`&${t}`,n+1)}if(r=/[%+]/.test(e),!r)return}let i={};r??=/[%+]/.test(e);let a=e.indexOf(`?`,8);for(;a!==-1;){let t=e.indexOf(`&`,a+1),o=e.indexOf(`=`,a);o>t&&t!==-1&&(o=-1);let s=e.slice(a+1,o===-1?t===-1?void 0:t:o);if(r&&(s=v(s)),a=t,s===``)continue;let c;o===-1?c=``:(c=e.slice(o+1,t===-1?void 0:t),r&&(c=v(c))),n?(i[s]&&Array.isArray(i[s])||(i[s]=[]),i[s].push(c)):i[s]??=c}return t?i[t]:i},te=y,ne=(e,t)=>y(e,t,!0),b=decodeURIComponent,x=e=>p(e,b),S=class{raw;#validatedData;#matchResult;routeIndex=0;path;bodyCache={};constructor(e,t=`/`,n=[[]]){this.raw=e,this.path=t,this.#matchResult=n,this.#validatedData={}}param(e){return e?this.#getDecodedParam(e):this.#getAllDecodedParams()}#getDecodedParam(e){let t=this.#matchResult[0][this.routeIndex][1][e],n=this.#getParamValue(t);return n&&/\%/.test(n)?x(n):n}#getAllDecodedParams(){let e={},t=Object.keys(this.#matchResult[0][this.routeIndex][1]);for(let n of t){let t=this.#getParamValue(this.#matchResult[0][this.routeIndex][1][n]);t!==void 0&&(e[n]=/\%/.test(t)?x(t):t)}return e}#getParamValue(e){return this.#matchResult[1]?this.#matchResult[1][e]:e}query(e){return te(this.url,e)}queries(e){return ne(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t={};return this.raw.headers.forEach((e,n)=>{t[n]=e}),t}async parseBody(e){return this.bodyCache.parsedBody??=await n(this,e)}#cachedBody=e=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;let i=Object.keys(t)[0];return i?t[i].then(t=>(i===`json`&&(t=JSON.stringify(t)),new Response(t)[e]())):t[e]=n[e]()};json(){return this.#cachedBody(`text`).then(e=>JSON.parse(e))}text(){return this.#cachedBody(`text`)}arrayBuffer(){return this.#cachedBody(`arrayBuffer`)}blob(){return this.#cachedBody(`blob`)}formData(){return this.#cachedBody(`formData`)}addValidatedData(e,t){this.#validatedData[e]=t}valid(e){return this.#validatedData[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[t](){return this.#matchResult}get matchedRoutes(){return this.#matchResult[0].map(([[,e]])=>e)}get routePath(){return this.#matchResult[0].map(([[,e]])=>e)[this.routeIndex].path}},re={Stringify:1,BeforeStream:2,Stream:3},ie=(e,t)=>{let n=new String(e);return n.isEscaped=!0,n.callbacks=t,n},C=async(e,t,n,r,i)=>{typeof e==`object`&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let a=e.callbacks;if(!a?.length)return Promise.resolve(e);i?i[0]+=e:i=[e];let o=Promise.all(a.map(e=>e({phase:t,buffer:i,context:r}))).then(e=>Promise.all(e.filter(Boolean).map(e=>C(e,t,!1,r,i))).then(()=>i[0]));return n?ie(await o,a):o},ae=`text/plain; charset=UTF-8`,w=(e,t)=>({"Content-Type":e,...t}),oe=class{#rawRequest;#req;env={};#var;finalized=!1;error;#status;#executionCtx;#res;#layout;#renderer;#notFoundHandler;#preparedHeaders;#matchResult;#path;constructor(e,t){this.#rawRequest=e,t&&(this.#executionCtx=t.executionCtx,this.env=t.env,this.#notFoundHandler=t.notFoundHandler,this.#path=t.path,this.#matchResult=t.matchResult)}get req(){return this.#req??=new S(this.#rawRequest,this.#path,this.#matchResult),this.#req}get event(){if(this.#executionCtx&&`respondWith`in this.#executionCtx)return this.#executionCtx;throw Error(`This context has no FetchEvent`)}get executionCtx(){if(this.#executionCtx)return this.#executionCtx;throw Error(`This context has no ExecutionContext`)}get res(){return this.#res||=new Response(null,{headers:this.#preparedHeaders??=new Headers})}set res(e){if(this.#res&&e){e=new Response(e.body,e);for(let[t,n]of this.#res.headers.entries()){if(t===`content-type`)continue;if(t===`set-cookie`){let t=this.#res.headers.getSetCookie();e.headers.delete(`set-cookie`);for(let n of t)e.headers.append(`set-cookie`,n)}else e.headers.set(t,n)}}this.#res=e,this.finalized=!0}render=(...e)=>(this.#renderer??=e=>this.html(e),this.#renderer(...e));setLayout=e=>this.#layout=e;getLayout=()=>this.#layout;setRenderer=e=>{this.#renderer=e};header=(e,t,n)=>{this.finalized&&(this.#res=new Response(this.#res.body,this.#res));let r=this.#res?this.#res.headers:this.#preparedHeaders??=new Headers;t===void 0?r.delete(e):n?.append?r.append(e,t):r.set(e,t)};status=e=>{this.#status=e};set=(e,t)=>{this.#var??=new Map,this.#var.set(e,t)};get=e=>this.#var?this.#var.get(e):void 0;get var(){return this.#var?Object.fromEntries(this.#var):{}}#newResponse(e,t,n){let r=this.#res?new Headers(this.#res.headers):this.#preparedHeaders??new Headers;if(typeof t==`object`&&`headers`in t){let e=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[t,n]of e)t.toLowerCase()===`set-cookie`?r.append(t,n):r.set(t,n)}if(n)for(let[e,t]of Object.entries(n))if(typeof t==`string`)r.set(e,t);else{r.delete(e);for(let n of t)r.append(e,n)}let i=typeof t==`number`?t:t?.status??this.#status;return new Response(e,{status:i,headers:r})}newResponse=(...e)=>this.#newResponse(...e);body=(e,t,n)=>this.#newResponse(e,t,n);text=(e,t,n)=>!this.#preparedHeaders&&!this.#status&&!t&&!n&&!this.finalized?new Response(e):this.#newResponse(e,t,w(ae,n));json=(e,t,n)=>this.#newResponse(JSON.stringify(e),t,w(`application/json`,n));html=(e,t,n)=>{let r=e=>this.#newResponse(e,t,w(`text/html; charset=UTF-8`,n));return typeof e==`object`?C(e,re.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header(`Location`,/[^\x00-\xFF]/.test(n)?encodeURI(n):n),this.newResponse(null,t??302)};notFound=()=>(this.#notFoundHandler??=()=>new Response,this.#notFoundHandler(this))},T=`ALL`,se=`all`,ce=[`get`,`post`,`put`,`delete`,`options`,`patch`],E=`Can not add a route since the matcher is already built.`,D=class extends Error{},le=`__COMPOSED_HANDLER`,ue=e=>e.text(`404 Not Found`,404),O=(e,t)=>{if(`getResponse`in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text(`Internal Server Error`,500)},k=class{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath=`/`;#path=`/`;routes=[];constructor(e={}){let t=[...ce,se];t.forEach(e=>{this[e]=(t,...n)=>(typeof t==`string`?this.#path=t:this.#addRoute(e,this.#path,t),n.forEach(t=>{this.#addRoute(e,this.#path,t)}),this)}),this.on=(e,t,...n)=>{for(let r of[t].flat()){this.#path=r;for(let t of[e].flat())n.map(e=>{this.#addRoute(t.toUpperCase(),this.#path,e)})}return this},this.use=(e,...t)=>(typeof e==`string`?this.#path=e:(this.#path=`*`,t.unshift(e)),t.forEach(e=>{this.#addRoute(T,this.#path,e)}),this);let{strict:n,...r}=e;Object.assign(this,r),this.getPath=n??!0?e.getPath??h:g}#clone(){let e=new k({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#notFoundHandler=this.#notFoundHandler,e.routes=this.routes,e}#notFoundHandler=ue;errorHandler=O;route(t,n){let r=this.basePath(t);return n.routes.map(t=>{let i;n.errorHandler===O?i=t.handler:(i=async(r,i)=>(await e([],n.errorHandler)(r,()=>t.handler(r,i))).res,i[le]=t.handler),r.#addRoute(t.method,t.path,i)}),this}basePath(e){let t=this.#clone();return t._basePath=_(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#notFoundHandler=e,this);mount(e,t,n){let r,i;n&&(typeof n==`function`?i=n:(i=n.optionHandler,r=n.replaceRequest===!1?e=>e:n.replaceRequest));let a=i?e=>{let t=i(e);return Array.isArray(t)?t:[t]}:e=>{let t;try{t=e.executionCtx}catch{}return[e.env,t]};r||=(()=>{let t=_(this._basePath,e),n=t===`/`?0:t.length;return e=>{let t=new URL(e.url);return t.pathname=t.pathname.slice(n)||`/`,new Request(t,e)}})();let o=async(e,n)=>{let i=await t(r(e.req.raw),...a(e));if(i)return i;await n()};return this.#addRoute(T,_(e,`*`),o),this}#addRoute(e,t,n){e=e.toUpperCase(),t=_(this._basePath,t);let r={basePath:this._basePath,path:t,method:e,handler:n};this.router.add(e,t,[n,r]),this.routes.push(r)}#handleError(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#dispatch(t,n,r,i){if(i===`HEAD`)return(async()=>new Response(null,await this.#dispatch(t,n,r,`GET`)))();let a=this.getPath(t,{env:r}),o=this.router.match(i,a),s=new oe(t,{path:a,matchResult:o,env:r,executionCtx:n,notFoundHandler:this.#notFoundHandler});if(o[0].length===1){let e;try{e=o[0][0][0][0](s,async()=>{s.res=await this.#notFoundHandler(s)})}catch(e){return this.#handleError(e,s)}return e instanceof Promise?e.then(e=>e||(s.finalized?s.res:this.#notFoundHandler(s))).catch(e=>this.#handleError(e,s)):e??this.#notFoundHandler(s)}let c=e(o[0],this.errorHandler,this.#notFoundHandler);return(async()=>{try{let e=await c(s);if(!e.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return e.res}catch(e){return this.#handleError(e,s)}})()}fetch=(e,...t)=>this.#dispatch(e,t[1],t[0],e.method);request=(e,t,n,r)=>e instanceof Request?this.fetch(t?new Request(e,t):e,n,r):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${_(`/`,e)}`,t),n,r));fire=()=>{addEventListener(`fetch`,e=>{e.respondWith(this.#dispatch(e.request,e,void 0,e.request.method))})}},A=`[^/]+`,j=`.*`,M=`(?:|/.*)`,N=Symbol(),de=new Set(`.\\+*[^]$()`);function fe(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===j||e===M?1:t===j||t===M?-1:e===A?1:t===A?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var P=class{#index;#varIndex;#children=Object.create(null);insert(e,t,n,r,i){if(e.length===0){if(this.#index!==void 0)throw N;if(i)return;this.#index=t;return}let[a,...o]=e,s=a===`*`?o.length===0?[``,``,j]:[``,``,A]:a===`/*`?[``,``,M]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),c;if(s){let e=s[1],t=s[2]||A;if(e&&s[2]&&(t===`.*`||(t=t.replace(/^\((?!\?:)(?=[^)]+\)$)/,`(?:`),/\((?!\?:)/.test(t))))throw N;if(c=this.#children[t],!c){if(Object.keys(this.#children).some(e=>e!==j&&e!==M))throw N;if(i)return;c=this.#children[t]=new P,e!==``&&(c.#varIndex=r.varIndex++)}!i&&e!==``&&n.push([e,c.#varIndex])}else if(c=this.#children[a],!c){if(Object.keys(this.#children).some(e=>e.length>1&&e!==j&&e!==M))throw N;if(i)return;c=this.#children[a]=new P}c.insert(o,t,n,r,i)}buildRegExpStr(){let e=Object.keys(this.#children).sort(fe),t=e.map(e=>{let t=this.#children[e];return(typeof t.#varIndex==`number`?`(${e})@${t.#varIndex}`:de.has(e)?`\\${e}`:e)+t.buildRegExpStr()});return typeof this.#index==`number`&&t.unshift(`#${this.#index}`),t.length===0?``:t.length===1?t[0]:`(?:`+t.join(`|`)+`)`}},pe=class{#context={varIndex:0};#root=new P;insert(e,t,n){let r=[],i=[];for(let t=0;;){let n=!1;if(e=e.replace(/\{[^}]+\}/g,e=>{let r=`@\\${t}`;return i[t]=[r,e],t++,n=!0,r}),!n)break}let a=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let e=i.length-1;e>=0;e--){let[t]=i[e];for(let n=a.length-1;n>=0;n--)if(a[n].indexOf(t)!==-1){a[n]=a[n].replace(t,i[e][1]);break}}return this.#root.insert(a,t,r,this.#context,n),r}buildRegExp(){let e=this.#root.buildRegExpStr();if(e===``)return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(e,i,a)=>i===void 0?(a===void 0||(r[Number(a)]=++t),``):(n[++t]=Number(i),`$()`)),[RegExp(`^${e}`),n,r]}},F=[],me=[/^$/,[],Object.create(null)],I=Object.create(null);function L(e){return I[e]??=RegExp(e===`*`?``:`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:`(?:|/.*)`)}$`)}function he(){I=Object.create(null)}function ge(e){let t=new pe,n=[];if(e.length===0)return me;let r=e.map(e=>[!/\*|\/:/.test(e[0]),...e]).sort(([e,t],[n,r])=>e?1:n?-1:t.length-r.length),i=Object.create(null);for(let e=0,a=-1,o=r.length;e<o;e++){let[o,s,c]=r[e];o?i[s]=[c.map(([e])=>[e,Object.create(null)]),F]:a++;let l;try{l=t.insert(s,a,o)}catch(e){throw e===N?new D(s):e}o||(n[a]=c.map(([e,t])=>{let n=Object.create(null);for(--t;t>=0;t--){let[e,r]=l[t];n[e]=r}return[e,n]}))}let[a,o,s]=t.buildRegExp();for(let e=0,t=n.length;e<t;e++)for(let t=0,r=n[e].length;t<r;t++){let r=n[e][t]?.[1];if(!r)continue;let i=Object.keys(r);for(let e=0,t=i.length;e<t;e++)r[i[e]]=s[r[i[e]]]}let c=[];for(let e in o)c[e]=n[o[e]];return[a,c,i]}function R(e,t){if(e){for(let n of Object.keys(e).sort((e,t)=>t.length-e.length))if(L(n).test(t))return[...e[n]]}}var _e=class{name=`RegExpRouter`;#middleware;#routes;constructor(){this.#middleware={[T]:Object.create(null)},this.#routes={[T]:Object.create(null)}}add(e,t,n){let r=this.#middleware,i=this.#routes;if(!r||!i)throw Error(E);r[e]||[r,i].forEach(t=>{t[e]=Object.create(null),Object.keys(t[T]).forEach(n=>{t[e][n]=[...t[T][n]]})}),t===`/*`&&(t=`*`);let a=(t.match(/\/:/g)||[]).length;if(/\*$/.test(t)){let o=L(t);e===T?Object.keys(r).forEach(e=>{r[e][t]||=R(r[e],t)||R(r[T],t)||[]}):r[e][t]||=R(r[e],t)||R(r[T],t)||[],Object.keys(r).forEach(t=>{(e===T||e===t)&&Object.keys(r[t]).forEach(e=>{o.test(e)&&r[t][e].push([n,a])})}),Object.keys(i).forEach(t=>{(e===T||e===t)&&Object.keys(i[t]).forEach(e=>o.test(e)&&i[t][e].push([n,a]))});return}let o=ee(t)||[t];for(let t=0,s=o.length;t<s;t++){let c=o[t];Object.keys(i).forEach(o=>{(e===T||e===o)&&(i[o][c]||=[...R(r[o],c)||R(r[T],c)||[]],i[o][c].push([n,a-s+t+1]))})}}match(e,t){he();let n=this.#buildAllMatchers();return this.match=(e,t)=>{let r=n[e]||n[T],i=r[2][t];if(i)return i;let a=t.match(r[0]);if(!a)return[[],F];let o=a.indexOf(``,1);return[r[1][o],a]},this.match(e,t)}#buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach(t=>{e[t]||=this.#buildMatcher(t)}),this.#middleware=this.#routes=void 0,e}#buildMatcher(e){let t=[],n=e===T;return[this.#middleware,this.#routes].forEach(r=>{let i=r[e]?Object.keys(r[e]).map(t=>[t,r[e][t]]):[];i.length===0?e!==T&&t.push(...Object.keys(r[T]).map(e=>[e,r[T][e]])):(n||=!0,t.push(...i))}),n?ge(t):null}},ve=class{name=`SmartRouter`;#routers=[];#routes=[];constructor(e){this.#routers=e.routers}add(e,t,n){if(!this.#routes)throw Error(E);this.#routes.push([e,t,n])}match(e,t){if(!this.#routes)throw Error(`Fatal error`);let n=this.#routers,r=this.#routes,i=n.length,a=0,o;for(;a<i;a++){let i=n[a];try{for(let e=0,t=r.length;e<t;e++)i.add(...r[e]);o=i.match(e,t)}catch(e){if(e instanceof D)continue;throw e}this.match=i.match.bind(i),this.#routers=[i],this.#routes=void 0;break}if(a===i)throw Error(`Fatal error`);return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#routes||this.#routers.length!==1)throw Error(`No active router has been determined yet.`);return this.#routers[0]}},z=Object.create(null),B=class{#methods;#children;#patterns;#order=0;#params=z;constructor(e,t,n){if(this.#children=n||Object.create(null),this.#methods=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#methods=[n]}this.#patterns=[]}insert(e,t,n){this.#order=++this.#order;let r=this,i=c(t),a=[];for(let e=0,t=i.length;e<t;e++){let t=i[e],n=i[e+1],o=f(t,n),s=Array.isArray(o)?o[0]:t;if(s in r.#children){r=r.#children[s],o&&a.push(o[1]);continue}r.#children[s]=new B,o&&(r.#patterns.push(o),a.push(o[1])),r=r.#children[s]}return r.#methods.push({[e]:{handler:n,possibleKeys:a.filter((e,t,n)=>n.indexOf(e)===t),score:this.#order}}),r}#getHandlerSets(e,t,n,r){let i=[];for(let a=0,o=e.#methods.length;a<o;a++){let o=e.#methods[a],s=o[t]||o[T],c={};if(s!==void 0&&(s.params=Object.create(null),i.push(s),n!==z||r&&r!==z))for(let e=0,t=s.possibleKeys.length;e<t;e++){let t=s.possibleKeys[e],i=c[s.score];s.params[t]=r?.[t]&&!i?r[t]:n[t]??r?.[t],c[s.score]=!0}}return i}search(e,t){let n=[];this.#params=z;let r=this,i=[r],a=s(t),o=[];for(let t=0,r=a.length;t<r;t++){let s=a[t],c=t===r-1,l=[];for(let r=0,u=i.length;r<u;r++){let u=i[r],d=u.#children[s];d&&(d.#params=u.#params,c?(d.#children[`*`]&&n.push(...this.#getHandlerSets(d.#children[`*`],e,u.#params)),n.push(...this.#getHandlerSets(d,e,u.#params))):l.push(d));for(let r=0,i=u.#patterns.length;r<i;r++){let i=u.#patterns[r],d=u.#params===z?{}:{...u.#params};if(i===`*`){let t=u.#children[`*`];t&&(n.push(...this.#getHandlerSets(t,e,u.#params)),t.#params=d,l.push(t));continue}let[f,p,m]=i;if(!s&&!(m instanceof RegExp))continue;let h=u.#children[f],g=a.slice(t).join(`/`);if(m instanceof RegExp){let t=m.exec(g);if(t){if(d[p]=t[0],n.push(...this.#getHandlerSets(h,e,u.#params,d)),Object.keys(h.#children).length){h.#params=d;let e=t[0].match(/\//)?.length??0,n=o[e]||=[];n.push(h)}continue}}(m===!0||m.test(s))&&(d[p]=s,c?(n.push(...this.#getHandlerSets(h,e,d,u.#params)),h.#children[`*`]&&n.push(...this.#getHandlerSets(h.#children[`*`],e,d,u.#params))):(h.#params=d,l.push(h)))}}i=l.concat(o.shift()??[])}return n.length>1&&n.sort((e,t)=>e.score-t.score),[n.map(({handler:e,params:t})=>[e,t])]}},ye=class{name=`TrieRouter`;#node;constructor(){this.#node=new B}add(e,t,n){let r=ee(t);if(r){for(let t=0,i=r.length;t<i;t++)this.#node.insert(e,r[t],n);return}this.#node.insert(e,t,n)}match(e,t){return this.#node.search(e,t)}},V=class extends k{constructor(e={}){super(e),this.router=e.router??new ve({routers:[new _e,new ye]})}},be=/^[\w!#$%&'*.^`|~+-]+$/,xe=/^[ !#-:<-[\]-~]*$/,H=(e,t)=>{if(t&&e.indexOf(t)===-1)return{};let n=e.trim().split(`;`),r={};for(let e of n){e=e.trim();let n=e.indexOf(`=`);if(n===-1)continue;let i=e.substring(0,n).trim();if(t&&t!==i||!be.test(i))continue;let a=e.substring(n+1).trim();if(a.startsWith(`"`)&&a.endsWith(`"`)&&(a=a.slice(1,-1)),xe.test(a)&&(r[i]=a.indexOf(`%`)===-1?a:p(a,b),t))break}return r},Se=(e,t,n={})=>{let r=`${e}=${t}`;if(e.startsWith(`__Secure-`)&&!n.secure)throw Error(`__Secure- Cookie must have Secure attributes`);if(e.startsWith(`__Host-`)){if(!n.secure)throw Error(`__Host- Cookie must have Secure attributes`);if(n.path!==`/`)throw Error(`__Host- Cookie must have Path attributes with "/"`);if(n.domain)throw Error(`__Host- Cookie must not have Domain attributes`)}if(n&&typeof n.maxAge==`number`&&n.maxAge>=0){if(n.maxAge>3456e4)throw Error(`Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.`);r+=`; Max-Age=${n.maxAge|0}`}if(n.domain&&n.prefix!==`host`&&(r+=`; Domain=${n.domain}`),n.path&&(r+=`; Path=${n.path}`),n.expires){if(n.expires.getTime()-Date.now()>3456e7)throw Error(`Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite&&(r+=`; SameSite=${n.sameSite.charAt(0).toUpperCase()+n.sameSite.slice(1)}`),n.priority&&(r+=`; Priority=${n.priority.charAt(0).toUpperCase()+n.priority.slice(1)}`),n.partitioned){if(!n.secure)throw Error(`Partitioned Cookie must have Secure attributes`);r+=`; Partitioned`}return r},Ce=(e,t,n)=>(t=encodeURIComponent(t),Se(e,t,n)),we=(e,t,n)=>{let r=e.req.raw.headers.get(`Cookie`);if(typeof t==`string`){if(!r)return;let e=t;n===`secure`?e=`__Secure-`+t:n===`host`&&(e=`__Host-`+t);let i=H(r,e);return i[e]}if(!r)return{};let i=H(r);return i},U=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){if(this.res){let e=new Response(this.res.body,{status:this.status,headers:this.res.headers});return e}return new Response(this.message,{status:this.status})}},Te=(e,t)=>{let n=new Response(e,{headers:{"Content-Type":t}});return n.formData()},Ee=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,De=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,Oe=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,W=(e,t)=>async(n,r)=>{let i={},a=n.req.header(`Content-Type`);switch(e){case`json`:if(!a||!Ee.test(a))break;try{i=await n.req.json()}catch{throw new U(400,{message:`Malformed JSON in request body`})}break;case`form`:{if(!a||!(De.test(a)||Oe.test(a)))break;let e;if(n.req.bodyCache.formData)e=await n.req.bodyCache.formData;else try{let t=await n.req.arrayBuffer();e=await Te(t,a),n.req.bodyCache.formData=e}catch(e){let t=`Malformed FormData request.`;throw t+=e instanceof Error?` ${e.message}`:` ${String(e)}`,new U(400,{message:t})}let t={};e.forEach((e,n)=>{n.endsWith(`[]`)?(t[n]??=[]).push(e):Array.isArray(t[n])?t[n].push(e):n in t?t[n]=[t[n],e]:t[n]=e}),i=t;break}case`query`:i=Object.fromEntries(Object.entries(n.req.queries()).map(([e,t])=>t.length===1?[e,t[0]]:[e,t]));break;case`param`:i=n.req.param();break;case`header`:i=n.req.header();break;case`cookie`:i=we(n);break}let o=await t(i,n);if(o instanceof Response)return o;n.req.addValidatedData(e,o),await r()},ke=(e,t)=>(e=e.replace(/\/+$/,``),e+=`/`,t=t.replace(/^\/+/,``),e+t),G=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`/:`+n+`(?:{[^/]+})?\\??`);e=e.replace(t,r?`/${r}`:``)}return e},K=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){if(r===void 0)continue;if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r)}return t},Ae=(e,t)=>{switch(t){case`ws`:return e.replace(/^http/,`ws`);case`http`:return e.replace(/^ws/,`http`)}},q=e=>/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(e)?e.replace(/\/index(?=\?|$)/,`/`):e.replace(/\/index(?=\?|$)/,``);function J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Y(e,t){if(!J(e)&&!J(t))return t;let n={...e};for(let e in t){let r=t[e];J(n[e])&&J(r)?n[e]=Y(n[e],r):n[e]=r}return n}var X=(e,t)=>{let n=new Proxy(()=>{},{get(n,r){if(!(typeof r!=`string`||r===`then`))return X(e,[...t,r])},apply(n,r,i){return e({path:t,args:i})}});return n},je=class{url;method;queryParams=void 0;pathParams={};rBody;cType=void 0;constructor(e,t){this.url=e,this.method=t}fetch=async(e,t)=>{if(e){if(e.query&&(this.queryParams=K(e.query)),e.form){let t=new FormData;for(let[n,r]of Object.entries(e.form))if(Array.isArray(r))for(let e of r)t.append(n,e);else t.append(n,r);this.rBody=t}e.json&&(this.rBody=JSON.stringify(e.json),this.cType=`application/json`),e.param&&(this.pathParams=e.param)}let n=this.method.toUpperCase(),r={...e?.header,...typeof t?.headers==`function`?await t.headers():t?.headers};if(e?.cookie){let t=[];for(let[n,r]of Object.entries(e.cookie))t.push(Ce(n,r,{path:`/`}));r.Cookie=t.join(`,`)}this.cType&&(r[`Content-Type`]=this.cType);let i=new Headers(r??void 0),a=this.url;a=q(a),a=G(a,this.pathParams),this.queryParams&&(a=a+`?`+this.queryParams.toString()),n=this.method.toUpperCase();let o=!(n===`GET`||n===`HEAD`);return(t?.fetch||fetch)(a,{body:o?this.rBody:void 0,method:n,headers:i,...t?.init})}},Me=(e,t)=>X(function n(r){let i=[...r.path],a=i.slice(-3).reverse();if(a[0]===`toString`)return a[1]===`name`?a[2]||``:n.toString();if(a[0]===`valueOf`)return a[1]===`name`?a[2]||``:n;let o=``;if(/^\$/.test(a[0])){let e=i.pop();e&&(o=e.replace(/^\$/,``))}let s=i.join(`/`),c=ke(e,s);if(o===`url`){let e=c;return r.args[0]&&(r.args[0].param&&(e=G(c,r.args[0].param)),r.args[0].query&&(e=e+`?`+K(r.args[0].query).toString())),e=q(e),new URL(e)}if(o===`ws`){let e=Ae(r.args[0]&&r.args[0].param?G(c,r.args[0].param):c,`ws`),n=new URL(e),i=r.args[0]?.query;i&&Object.entries(i).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.searchParams.append(e,t)):n.searchParams.set(e,t)});let a=(...e)=>t?.webSocket!==void 0&&typeof t.webSocket==`function`?t.webSocket(...e):new WebSocket(...e);return a(n.toString())}let l=new je(c,o);if(o){t??={};let e=Y(t,{...r.args[1]});return l.fetch(r.args[0],e)}return l},[]);const Ne=`BLINK_API_SERVER_URL`,Pe=process.env[Ne];Me(Pe??``,{fetch:Pe?void 0:async()=>{throw console.warn(`Your code is attempting to use the Blink API server, but no API server is configured for this Blink agent.`),Error(`No API server is configured for this Blink agent. External APIs are not available.`)}});const Z=(e,t)=>e.json({error:t},400),Q=e=>{let t=e.req.param(`key`);return!t||t===``?{key:t,err:`Key is required`}:t.length>128?{key:t,err:`Key is too long. Max length is 128 characters.`}:{key:t}},Fe=()=>new V,Ie=Fe().get(`/kv/:key`,async e=>{let{key:t,err:n}=Q(e);if(n)return Z(e,n);let r=await e.env.storage.kv.get(t);return e.json({value:r},200)}).post(`/kv/:key`,W(`json`,(e,t)=>{let n=e.value;return n?typeof n==`string`?n.length>1024?Z(t,`Value is too long. Max length is 1024 characters.`):{value:n}:Z(t,`Value must be a string`):Z(t,`Value is required`)}),async e=>{let{key:t,err:n}=Q(e);if(n)return Z(e,n);let{value:r}=e.req.valid(`json`);return await e.env.storage.kv.set(t,r),e.body(null,204)}).delete(`/kv/:key`,async e=>{let{key:t,err:n}=Q(e);return n?Z(e,n):(await e.env.storage.kv.del(t),e.body(null,204))}),$=e=>{let t=e.req.param(`id`);return t?t.length>128?{id:t,err:`ID is too long. Max length is 128 characters.`}:{id:t}:{id:t,err:`ID is required`}},Le=Fe().basePath(`/:id`).post(`/`,async e=>{let{id:t,err:n}=$(e);if(n)return Z(e,n);let r=await e.env.chat.upsert(t);return e.json({id:r.id},200)}).post(`/sendMessages`,W(`json`,(e,t)=>{let n=e.messages;if(!n)return Z(t,`Messages are required`);if(!Array.isArray(n))return Z(t,`Messages must be an array`);if(n.length===0)return Z(t,`Messages must not be empty`);let r=e.behavior;return r!==`enqueue`&&r!==`interrupt`&&r!==`append`?Z(t,`Invalid behavior`):{messages:n,behavior:r}}),async e=>{let{id:t,err:n}=$(e);if(n)return Z(e,n);let{messages:r,behavior:i}=e.req.valid(`json`);try{await e.env.chat.sendMessages(t,{messages:r,behavior:i})}catch(t){return Z(e,t instanceof Error?t.message:`Unknown error`)}return e.body(null,204)}),Re=new V().route(`/storage`,Ie).route(`/chat`,Le);var ze=Re;export{Ne as APIServerURLEnvironmentVariable,ze as default};
|
package/dist/http/index.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`../chunk-hhQzssFb.cjs`),t=require(`../http-DXLJkJIR.cjs`);exports.APIServerURLEnvironmentVariable=t.APIServerURLEnvironmentVariable,exports.Client=t.Client,exports.StreamResponseFormatHeader=t.StreamResponseFormatHeader,exports.convertResponseToUIMessageStream=t.convertResponseToUIMessageStream,exports.createAsyncIterableStream=t.createAsyncIterableStream,exports.streamSSE=t.streamSSE;
|
package/dist/http/index.d.cts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import "../index-BdS2C_9A.cjs";
|
|
2
|
-
import { APIServerURLEnvironmentVariable, AsyncIterableStream, CapabilitiesResponse, Client, ClientOptions, ExperimentalProvideCompletionsRequest, SendMessagesRequest, StreamResponseFormat, StreamResponseFormatHeader, convertResponseToUIMessageStream, createAsyncIterableStream, streamSSE } from "../index-DXNEroA1.cjs";
|
|
3
|
-
export { APIServerURLEnvironmentVariable, AsyncIterableStream, CapabilitiesResponse, Client, ClientOptions, ExperimentalProvideCompletionsRequest, SendMessagesRequest, StreamResponseFormat, StreamResponseFormatHeader, convertResponseToUIMessageStream, createAsyncIterableStream, streamSSE };
|
package/dist/http/index.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import "../index-E064W90j.js";
|
|
2
|
-
import { APIServerURLEnvironmentVariable, AsyncIterableStream, CapabilitiesResponse, Client, ClientOptions, ExperimentalProvideCompletionsRequest, SendMessagesRequest, StreamResponseFormat, StreamResponseFormatHeader, convertResponseToUIMessageStream, createAsyncIterableStream, streamSSE } from "../index-y1u5VC2_.js";
|
|
3
|
-
export { APIServerURLEnvironmentVariable, AsyncIterableStream, CapabilitiesResponse, Client, ClientOptions, ExperimentalProvideCompletionsRequest, SendMessagesRequest, StreamResponseFormat, StreamResponseFormatHeader, convertResponseToUIMessageStream, createAsyncIterableStream, streamSSE };
|
package/dist/http/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{APIServerURLEnvironmentVariable as e,Client as t,StreamResponseFormatHeader as n,convertResponseToUIMessageStream as r,createAsyncIterableStream as i,streamSSE as a}from"../http-CU96NOdn.js";export{e as APIServerURLEnvironmentVariable,t as Client,n as StreamResponseFormatHeader,r as convertResponseToUIMessageStream,i as createAsyncIterableStream,a as streamSSE};
|