bunderstack 0.17.0-beta.7 → 0.17.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.
@@ -20,46 +20,60 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
20
20
  readonly confirmUrl: v.StringSchema<undefined>;
21
21
  }, undefined>], undefined>, {
22
22
  readonly BAD_REQUEST: {
23
- readonly data: v.StrictObjectSchema<{
24
- readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
23
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
24
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
25
25
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
26
- }, undefined>;
26
+ }, undefined>, {
27
+ readonly code: "BAD_REQUEST";
28
+ }>;
27
29
  };
28
30
  readonly UNAUTHORIZED: {
29
- readonly data: v.StrictObjectSchema<{
30
- readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
31
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
32
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
31
33
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
32
- }, undefined>;
34
+ }, undefined>, {
35
+ readonly code: "UNAUTHORIZED";
36
+ }>;
33
37
  };
34
38
  readonly FORBIDDEN: {
35
- readonly data: v.StrictObjectSchema<{
36
- readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
39
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
40
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
37
41
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
38
- }, undefined>;
42
+ }, undefined>, {
43
+ readonly code: "FORBIDDEN";
44
+ }>;
39
45
  };
40
46
  readonly NOT_FOUND: {
41
- readonly data: v.StrictObjectSchema<{
42
- readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
47
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
48
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
43
49
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
44
- }, undefined>;
50
+ }, undefined>, {
51
+ readonly code: "NOT_FOUND";
52
+ }>;
45
53
  };
46
54
  readonly CONFLICT: {
47
- readonly data: v.StrictObjectSchema<{
48
- readonly code: v.LiteralSchema<"CONFLICT", undefined>;
55
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
56
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
49
57
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
50
- }, undefined>;
58
+ }, undefined>, {
59
+ readonly code: "CONFLICT";
60
+ }>;
51
61
  };
52
62
  readonly PAYLOAD_TOO_LARGE: {
53
- readonly data: v.StrictObjectSchema<{
54
- readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
63
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
64
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
55
65
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
56
- }, undefined>;
66
+ }, undefined>, {
67
+ readonly code: "PAYLOAD_TOO_LARGE";
68
+ }>;
57
69
  };
58
70
  readonly TOO_MANY_REQUESTS: {
59
- readonly data: v.StrictObjectSchema<{
60
- readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
71
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
72
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
61
73
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
62
- }, undefined>;
74
+ }, undefined>, {
75
+ readonly code: "TOO_MANY_REQUESTS";
76
+ }>;
63
77
  };
64
78
  }, never>;
65
79
  upload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
@@ -77,46 +91,60 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
77
91
  }, undefined>;
78
92
  }, undefined>, {
79
93
  readonly BAD_REQUEST: {
80
- readonly data: v.StrictObjectSchema<{
81
- readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
94
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
95
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
82
96
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
83
- }, undefined>;
97
+ }, undefined>, {
98
+ readonly code: "BAD_REQUEST";
99
+ }>;
84
100
  };
85
101
  readonly UNAUTHORIZED: {
86
- readonly data: v.StrictObjectSchema<{
87
- readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
102
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
103
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
88
104
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
89
- }, undefined>;
105
+ }, undefined>, {
106
+ readonly code: "UNAUTHORIZED";
107
+ }>;
90
108
  };
91
109
  readonly FORBIDDEN: {
92
- readonly data: v.StrictObjectSchema<{
93
- readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
110
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
111
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
94
112
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
95
- }, undefined>;
113
+ }, undefined>, {
114
+ readonly code: "FORBIDDEN";
115
+ }>;
96
116
  };
97
117
  readonly NOT_FOUND: {
98
- readonly data: v.StrictObjectSchema<{
99
- readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
118
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
119
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
100
120
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
101
- }, undefined>;
121
+ }, undefined>, {
122
+ readonly code: "NOT_FOUND";
123
+ }>;
102
124
  };
103
125
  readonly CONFLICT: {
104
- readonly data: v.StrictObjectSchema<{
105
- readonly code: v.LiteralSchema<"CONFLICT", undefined>;
126
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
127
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
106
128
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
107
- }, undefined>;
129
+ }, undefined>, {
130
+ readonly code: "CONFLICT";
131
+ }>;
108
132
  };
109
133
  readonly PAYLOAD_TOO_LARGE: {
110
- readonly data: v.StrictObjectSchema<{
111
- readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
134
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
135
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
112
136
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
113
- }, undefined>;
137
+ }, undefined>, {
138
+ readonly code: "PAYLOAD_TOO_LARGE";
139
+ }>;
114
140
  };
115
141
  readonly TOO_MANY_REQUESTS: {
116
- readonly data: v.StrictObjectSchema<{
117
- readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
142
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
143
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
118
144
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
119
- }, undefined>;
145
+ }, undefined>, {
146
+ readonly code: "TOO_MANY_REQUESTS";
147
+ }>;
120
148
  };
121
149
  }, never>;
122
150
  confirmUpload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
@@ -126,46 +154,60 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
126
154
  readonly url: v.StringSchema<undefined>;
127
155
  }, undefined>, {
128
156
  readonly BAD_REQUEST: {
129
- readonly data: v.StrictObjectSchema<{
130
- readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
157
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
158
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
131
159
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
132
- }, undefined>;
160
+ }, undefined>, {
161
+ readonly code: "BAD_REQUEST";
162
+ }>;
133
163
  };
134
164
  readonly UNAUTHORIZED: {
135
- readonly data: v.StrictObjectSchema<{
136
- readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
165
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
166
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
137
167
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
138
- }, undefined>;
168
+ }, undefined>, {
169
+ readonly code: "UNAUTHORIZED";
170
+ }>;
139
171
  };
140
172
  readonly FORBIDDEN: {
141
- readonly data: v.StrictObjectSchema<{
142
- readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
173
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
174
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
143
175
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
144
- }, undefined>;
176
+ }, undefined>, {
177
+ readonly code: "FORBIDDEN";
178
+ }>;
145
179
  };
146
180
  readonly NOT_FOUND: {
147
- readonly data: v.StrictObjectSchema<{
148
- readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
181
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
182
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
149
183
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
150
- }, undefined>;
184
+ }, undefined>, {
185
+ readonly code: "NOT_FOUND";
186
+ }>;
151
187
  };
152
188
  readonly CONFLICT: {
153
- readonly data: v.StrictObjectSchema<{
154
- readonly code: v.LiteralSchema<"CONFLICT", undefined>;
189
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
190
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
155
191
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
156
- }, undefined>;
192
+ }, undefined>, {
193
+ readonly code: "CONFLICT";
194
+ }>;
157
195
  };
158
196
  readonly PAYLOAD_TOO_LARGE: {
159
- readonly data: v.StrictObjectSchema<{
160
- readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
197
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
198
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
161
199
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
162
- }, undefined>;
200
+ }, undefined>, {
201
+ readonly code: "PAYLOAD_TOO_LARGE";
202
+ }>;
163
203
  };
164
204
  readonly TOO_MANY_REQUESTS: {
165
- readonly data: v.StrictObjectSchema<{
166
- readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
205
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
206
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
167
207
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
168
- }, undefined>;
208
+ }, undefined>, {
209
+ readonly code: "TOO_MANY_REQUESTS";
210
+ }>;
169
211
  };
170
212
  }, never>;
171
213
  download: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
@@ -185,92 +227,120 @@ export declare function buildStorageApiRouter(registry: BucketStorageRegistry, o
185
227
  readonly body: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
186
228
  }, undefined>], undefined>, {
187
229
  readonly BAD_REQUEST: {
188
- readonly data: v.StrictObjectSchema<{
189
- readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
230
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
231
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
190
232
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
191
- }, undefined>;
233
+ }, undefined>, {
234
+ readonly code: "BAD_REQUEST";
235
+ }>;
192
236
  };
193
237
  readonly UNAUTHORIZED: {
194
- readonly data: v.StrictObjectSchema<{
195
- readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
238
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
239
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
196
240
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
197
- }, undefined>;
241
+ }, undefined>, {
242
+ readonly code: "UNAUTHORIZED";
243
+ }>;
198
244
  };
199
245
  readonly FORBIDDEN: {
200
- readonly data: v.StrictObjectSchema<{
201
- readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
246
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
247
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
202
248
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
203
- }, undefined>;
249
+ }, undefined>, {
250
+ readonly code: "FORBIDDEN";
251
+ }>;
204
252
  };
205
253
  readonly NOT_FOUND: {
206
- readonly data: v.StrictObjectSchema<{
207
- readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
254
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
255
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
208
256
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
209
- }, undefined>;
257
+ }, undefined>, {
258
+ readonly code: "NOT_FOUND";
259
+ }>;
210
260
  };
211
261
  readonly CONFLICT: {
212
- readonly data: v.StrictObjectSchema<{
213
- readonly code: v.LiteralSchema<"CONFLICT", undefined>;
262
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
263
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
214
264
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
215
- }, undefined>;
265
+ }, undefined>, {
266
+ readonly code: "CONFLICT";
267
+ }>;
216
268
  };
217
269
  readonly PAYLOAD_TOO_LARGE: {
218
- readonly data: v.StrictObjectSchema<{
219
- readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
270
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
271
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
220
272
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
221
- }, undefined>;
273
+ }, undefined>, {
274
+ readonly code: "PAYLOAD_TOO_LARGE";
275
+ }>;
222
276
  };
223
277
  readonly TOO_MANY_REQUESTS: {
224
- readonly data: v.StrictObjectSchema<{
225
- readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
278
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
279
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
226
280
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
227
- }, undefined>;
281
+ }, undefined>, {
282
+ readonly code: "TOO_MANY_REQUESTS";
283
+ }>;
228
284
  };
229
285
  }, never>;
230
286
  delete: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>> & object, object, v.StrictObjectSchema<{
231
287
  readonly path: v.StringSchema<undefined>;
232
288
  }, undefined>, v.UndefinedSchema<undefined>, {
233
289
  readonly BAD_REQUEST: {
234
- readonly data: v.StrictObjectSchema<{
235
- readonly code: v.LiteralSchema<"BAD_REQUEST", undefined>;
290
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
291
+ readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
236
292
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
237
- }, undefined>;
293
+ }, undefined>, {
294
+ readonly code: "BAD_REQUEST";
295
+ }>;
238
296
  };
239
297
  readonly UNAUTHORIZED: {
240
- readonly data: v.StrictObjectSchema<{
241
- readonly code: v.LiteralSchema<"UNAUTHORIZED", undefined>;
298
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
299
+ readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
242
300
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
243
- }, undefined>;
301
+ }, undefined>, {
302
+ readonly code: "UNAUTHORIZED";
303
+ }>;
244
304
  };
245
305
  readonly FORBIDDEN: {
246
- readonly data: v.StrictObjectSchema<{
247
- readonly code: v.LiteralSchema<"FORBIDDEN", undefined>;
306
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
307
+ readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
248
308
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
249
- }, undefined>;
309
+ }, undefined>, {
310
+ readonly code: "FORBIDDEN";
311
+ }>;
250
312
  };
251
313
  readonly NOT_FOUND: {
252
- readonly data: v.StrictObjectSchema<{
253
- readonly code: v.LiteralSchema<"NOT_FOUND", undefined>;
314
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
315
+ readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
254
316
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
255
- }, undefined>;
317
+ }, undefined>, {
318
+ readonly code: "NOT_FOUND";
319
+ }>;
256
320
  };
257
321
  readonly CONFLICT: {
258
- readonly data: v.StrictObjectSchema<{
259
- readonly code: v.LiteralSchema<"CONFLICT", undefined>;
322
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
323
+ readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
260
324
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
261
- }, undefined>;
325
+ }, undefined>, {
326
+ readonly code: "CONFLICT";
327
+ }>;
262
328
  };
263
329
  readonly PAYLOAD_TOO_LARGE: {
264
- readonly data: v.StrictObjectSchema<{
265
- readonly code: v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>;
330
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
331
+ readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
266
332
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
267
- }, undefined>;
333
+ }, undefined>, {
334
+ readonly code: "PAYLOAD_TOO_LARGE";
335
+ }>;
268
336
  };
269
337
  readonly TOO_MANY_REQUESTS: {
270
- readonly data: v.StrictObjectSchema<{
271
- readonly code: v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>;
338
+ readonly data: v.OptionalSchema<v.StrictObjectSchema<{
339
+ readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
272
340
  readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
273
- }, undefined>;
341
+ }, undefined>, {
342
+ readonly code: "TOO_MANY_REQUESTS";
343
+ }>;
274
344
  };
275
345
  }, never>;
276
346
  };
@@ -1 +1 @@
1
- {"version":3,"file":"storage-router.d.ts","sourceRoot":"","sources":["../../src/api/storage-router.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAuM3C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B"}
1
+ {"version":3,"file":"storage-router.d.ts","sourceRoot":"","sources":["../../src/api/storage-router.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAuM3C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B"}
@@ -0,0 +1,16 @@
1
+ /** The skills this package ships, copied from `.agents/skills` at build time. */
2
+ export declare const SHIPPED_SKILLS: readonly ["creating-bunderstack-apps", "migrating-to-bunderstack"];
3
+ export type SkillsOptions = {
4
+ /** Project root the skills are installed into. */
5
+ cwd: string;
6
+ /** Destination, relative to `cwd`. */
7
+ directory?: string;
8
+ /** Report drift instead of writing. Exits non-zero when anything differs. */
9
+ check?: boolean;
10
+ };
11
+ export type SkillsIo = {
12
+ stdout(message: string): void;
13
+ stderr(message: string): void;
14
+ };
15
+ export declare function installSkills(options: SkillsOptions, io: SkillsIo): Promise<number>;
16
+ //# sourceMappingURL=cli-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills.d.ts","sourceRoot":"","sources":["../src/cli-skills.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,eAAO,MAAM,cAAc,oEAGjB,CAAA;AAwBV,MAAM,MAAM,aAAa,GAAG;IAC1B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAA;IACX,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAuDD,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,QAAQ,GACX,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
@@ -0,0 +1,116 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { cp, mkdir, readFile, readdir, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ /** The skills this package ships, copied from `.agents/skills` at build time. */
5
+ export const SHIPPED_SKILLS = [
6
+ 'creating-bunderstack-apps',
7
+ 'migrating-to-bunderstack',
8
+ ];
9
+ const MARKER_START = '<!-- bunderstack:skills -->';
10
+ const MARKER_END = '<!-- /bunderstack:skills -->';
11
+ /**
12
+ * Agents read AGENTS.md before they search for anything, so the pointer is
13
+ * what actually gets the skills into context. The markers let a later
14
+ * `bunderstack skills` run replace the block without touching the rest.
15
+ */
16
+ function agentsBlock(directory) {
17
+ return `${MARKER_START}
18
+ ## Bunderstack
19
+
20
+ This project uses Bunderstack. Before changing the server API, access rules,
21
+ jobs, storage, or realtime, read \`${directory}/creating-bunderstack-apps/SKILL.md\`.
22
+ When replacing existing infrastructure, read
23
+ \`${directory}/migrating-to-bunderstack/SKILL.md\` instead.
24
+
25
+ \`node_modules/bunderstack/llms.txt\` is a dense plain-text reference for the
26
+ whole framework.
27
+ ${MARKER_END}`;
28
+ }
29
+ /** Where this build keeps its copy of the skills. */
30
+ function packagedSkillsDir() {
31
+ return join(new URL('..', import.meta.url).pathname, 'skills');
32
+ }
33
+ async function filesUnder(dir) {
34
+ const entries = await readdir(dir, { withFileTypes: true, recursive: true });
35
+ return entries
36
+ .filter((entry) => entry.isFile())
37
+ .map((entry) => join(entry.parentPath, entry.name));
38
+ }
39
+ async function differs(from, to) {
40
+ if (!existsSync(to))
41
+ return true;
42
+ const sources = await filesUnder(from);
43
+ for (const source of sources) {
44
+ const target = join(to, source.slice(from.length + 1));
45
+ if (!existsSync(target))
46
+ return true;
47
+ if ((await readFile(source, 'utf8')) !== (await readFile(target, 'utf8'))) {
48
+ return true;
49
+ }
50
+ }
51
+ return false;
52
+ }
53
+ async function writeAgentsPointer(cwd, directory) {
54
+ const path = join(cwd, 'AGENTS.md');
55
+ const block = agentsBlock(directory);
56
+ if (!existsSync(path)) {
57
+ await writeFile(path, `# Agent guide\n\n${block}\n`);
58
+ return 'created';
59
+ }
60
+ const current = await readFile(path, 'utf8');
61
+ const start = current.indexOf(MARKER_START);
62
+ const end = current.indexOf(MARKER_END);
63
+ if (start !== -1 && end !== -1) {
64
+ const replaced = current.slice(0, start) + block + current.slice(end + MARKER_END.length);
65
+ if (replaced === current)
66
+ return 'current';
67
+ await writeFile(path, replaced);
68
+ return 'updated';
69
+ }
70
+ await writeFile(path, `${current.trimEnd()}\n\n${block}\n`);
71
+ return 'updated';
72
+ }
73
+ export async function installSkills(options, io) {
74
+ const source = packagedSkillsDir();
75
+ if (!existsSync(source)) {
76
+ io.stderr('[bunderstack] this build ships no skills; reinstall the package or run bun run build');
77
+ return 1;
78
+ }
79
+ const directory = options.directory ?? '.agents/skills';
80
+ const destination = join(options.cwd, directory);
81
+ const stale = [];
82
+ for (const skill of SHIPPED_SKILLS) {
83
+ const from = join(source, skill);
84
+ const to = join(destination, skill);
85
+ if (!(await differs(from, to)))
86
+ continue;
87
+ stale.push(skill);
88
+ if (options.check)
89
+ continue;
90
+ await mkdir(destination, { recursive: true });
91
+ await cp(from, to, { recursive: true });
92
+ }
93
+ if (options.check) {
94
+ const pointer = await readFile(join(options.cwd, 'AGENTS.md'), 'utf8').catch(() => '');
95
+ const pointerStale = !pointer.includes(MARKER_START);
96
+ if (stale.length === 0 && !pointerStale) {
97
+ io.stdout(`${directory} is current`);
98
+ return 0;
99
+ }
100
+ for (const skill of stale) {
101
+ io.stderr(`[bunderstack] ${directory}/${skill} is missing or outdated`);
102
+ }
103
+ if (pointerStale)
104
+ io.stderr('[bunderstack] AGENTS.md has no Bunderstack block');
105
+ io.stderr('[bunderstack] run: bunx bunderstack skills');
106
+ return 1;
107
+ }
108
+ const pointer = await writeAgentsPointer(options.cwd, directory);
109
+ io.stdout(stale.length === 0
110
+ ? `${directory} is current`
111
+ : `Installed ${stale.length} skill(s) into ${directory}: ${stale.join(', ')}`);
112
+ if (pointer !== 'current')
113
+ io.stdout(`AGENTS.md ${pointer}`);
114
+ return 0;
115
+ }
116
+ //# sourceMappingURL=cli-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-skills.js","sourceRoot":"","sources":["../src/cli-skills.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAEL,iBAAiB,EAElB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAOD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,KAAK,EACT,QAAQ,GAAE,OAAO,iBAAqC,GACrD,OAAO,CAAC,MAAM,CAAC,CA4DjB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAEL,iBAAiB,EAElB,MAAM,uBAAuB,CAAA;AAG9B,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAcD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,KAAK,EACT,QAAQ,GAAE,OAAO,iBAAqC,GACrD,OAAO,CAAC,MAAM,CAAC,CAmFjB"}
package/dist/cli.js CHANGED
@@ -1,9 +1,17 @@
1
1
  #!/usr/bin/env bun
2
2
  import { BlueprintCheckError, generateBlueprint, } from './blueprint-generator.js';
3
- const help = `Usage: bunderstack blueprint [directory] [--entry <path>] [--output <path>] [--check]
3
+ import { installSkills } from './cli-skills.js';
4
+ const help = `Usage:
5
+ bunderstack blueprint [directory] [--entry <path>] [--output <path>] [--check]
6
+ bunderstack skills [--dir <path>] [--check]
4
7
 
5
- Generate a committed deployment declaration for a TanStack Start application.
6
- Entry precedence: --entry, package.json#bunderstack.entry, src/bunderstack.ts.`;
8
+ blueprint Generate a committed deployment declaration for a TanStack Start
9
+ application. Entry precedence: --entry,
10
+ package.json#bunderstack.entry, src/bunderstack.ts.
11
+
12
+ skills Install the Bunderstack agent skills that match this version into
13
+ .agents/skills, and point AGENTS.md at them so an agent loads them
14
+ before touching the API. --check reports drift without writing.`;
7
15
  export async function runCli(args, io, generate = generateBlueprint) {
8
16
  if (args[0] === '--help' || args[0] === '-h') {
9
17
  io.stdout(help);
@@ -13,8 +21,32 @@ export async function runCli(args, io, generate = generateBlueprint) {
13
21
  io.stdout((await Bun.file(new URL('../package.json', import.meta.url)).json()).version);
14
22
  return 0;
15
23
  }
24
+ if (args[0] === 'skills') {
25
+ const options = {
26
+ cwd: process.cwd(),
27
+ };
28
+ for (let index = 1; index < args.length; index++) {
29
+ const argument = args[index];
30
+ if (argument === '--check') {
31
+ options.check = true;
32
+ continue;
33
+ }
34
+ if (argument === '--dir') {
35
+ const value = args[++index];
36
+ if (!value || value.startsWith('--')) {
37
+ io.stderr('[bunderstack] missing value for --dir');
38
+ return 2;
39
+ }
40
+ options.directory = value;
41
+ continue;
42
+ }
43
+ io.stderr(`[bunderstack] unknown option: ${argument}`);
44
+ return 2;
45
+ }
46
+ return installSkills(options, io);
47
+ }
16
48
  if (args[0] !== 'blueprint') {
17
- io.stderr('Usage: bunderstack blueprint [directory] [--entry <path>] [--output <path>] [--check]');
49
+ io.stderr(help);
18
50
  return 2;
19
51
  }
20
52
  const options = { directory: process.cwd() };