@btst/stack 2.11.1 → 2.11.3

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 (28) hide show
  1. package/dist/packages/stack/src/plugins/blog/api/mutations.cjs +170 -0
  2. package/dist/packages/stack/src/plugins/blog/api/mutations.mjs +166 -0
  3. package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +34 -157
  4. package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +40 -163
  5. package/dist/plugins/blog/api/index.cjs +4 -0
  6. package/dist/plugins/blog/api/index.d.cts +1 -1
  7. package/dist/plugins/blog/api/index.d.mts +1 -1
  8. package/dist/plugins/blog/api/index.d.ts +1 -1
  9. package/dist/plugins/blog/api/index.mjs +1 -0
  10. package/dist/plugins/blog/query-keys.d.cts +1 -1
  11. package/dist/plugins/blog/query-keys.d.mts +1 -1
  12. package/dist/plugins/blog/query-keys.d.ts +1 -1
  13. package/dist/plugins/kanban/api/index.d.cts +1 -1
  14. package/dist/plugins/kanban/api/index.d.mts +1 -1
  15. package/dist/plugins/kanban/api/index.d.ts +1 -1
  16. package/dist/plugins/kanban/query-keys.d.cts +1 -1
  17. package/dist/plugins/kanban/query-keys.d.mts +1 -1
  18. package/dist/plugins/kanban/query-keys.d.ts +1 -1
  19. package/dist/shared/{stack.qta0-CPq.d.ts → stack.BQSy-NDc.d.ts} +85 -2
  20. package/dist/shared/{stack.DvMUCTTl.d.mts → stack.CLrGRIj0.d.mts} +85 -2
  21. package/dist/shared/{stack.DEW8EtFu.d.cts → stack.CntKf20s.d.cts} +85 -2
  22. package/package.json +4 -4
  23. package/src/plugins/blog/api/index.ts +7 -0
  24. package/src/plugins/blog/api/mutations.ts +287 -0
  25. package/src/plugins/blog/api/plugin.ts +43 -184
  26. package/dist/shared/{stack.BvCR4-9H.d.ts → stack.CMbX8Q5C.d.ts} +13 -13
  27. package/dist/shared/{stack.CWxAl9K3.d.mts → stack.Dj04W2c3.d.mts} +13 -13
  28. package/dist/shared/{stack.BOokfhZD.d.cts → stack.eq5eg1yt.d.cts} +13 -13
@@ -7,6 +7,13 @@ import type { Post, PostWithPostTag, Tag } from "../types";
7
7
  import { slugify } from "../utils";
8
8
  import { createPostSchema, updatePostSchema } from "../schemas";
9
9
  import { getAllPosts, getPostBySlug, getAllTags } from "./getters";
10
+ import {
11
+ createPost as createPostMutation,
12
+ updatePost as updatePostMutation,
13
+ deletePost as deletePostMutation,
14
+ type CreatePostInput,
15
+ type UpdatePostInput,
16
+ } from "./mutations";
10
17
  import { BLOG_QUERY_KEYS } from "./query-key-defs";
11
18
  import { serializePost, serializeTag } from "./serializers";
12
19
  import type { QueryClient } from "@tanstack/react-query";
@@ -260,85 +267,15 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
260
267
  getPostBySlug: (slug: string) => getPostBySlug(adapter, slug),
261
268
  getAllTags: () => getAllTags(adapter),
262
269
  prefetchForRoute: createBlogPrefetchForRoute(adapter),
270
+ // Mutations
271
+ createPost: (input: CreatePostInput) =>
272
+ createPostMutation(adapter, input),
273
+ updatePost: (id: string, input: UpdatePostInput) =>
274
+ updatePostMutation(adapter, id, input),
275
+ deletePost: (id: string) => deletePostMutation(adapter, id),
263
276
  }),
264
277
 
265
278
  routes: (adapter: Adapter) => {
266
- const findOrCreateTags = async (
267
- tagInputs: Array<
268
- { name: string } | { id: string; name: string; slug: string }
269
- >,
270
- ): Promise<Tag[]> => {
271
- if (tagInputs.length === 0) return [];
272
-
273
- const normalizeTagName = (name: string): string => {
274
- return name.trim();
275
- };
276
-
277
- const tagsWithIds: Tag[] = [];
278
- const tagsToFindOrCreate: Array<{ name: string }> = [];
279
-
280
- for (const tagInput of tagInputs) {
281
- if ("id" in tagInput && tagInput.id) {
282
- tagsWithIds.push({
283
- id: tagInput.id,
284
- name: normalizeTagName(tagInput.name),
285
- slug: tagInput.slug,
286
- createdAt: new Date(),
287
- updatedAt: new Date(),
288
- } as Tag);
289
- } else {
290
- tagsToFindOrCreate.push({ name: normalizeTagName(tagInput.name) });
291
- }
292
- }
293
-
294
- if (tagsToFindOrCreate.length === 0) {
295
- return tagsWithIds;
296
- }
297
-
298
- const allTags = await adapter.findMany<Tag>({
299
- model: "tag",
300
- });
301
- const tagMapBySlug = new Map<string, Tag>();
302
- for (const tag of allTags) {
303
- tagMapBySlug.set(tag.slug, tag);
304
- }
305
-
306
- const tagSlugs = tagsToFindOrCreate.map((tag) => slugify(tag.name));
307
- const foundTags: Tag[] = [];
308
-
309
- for (const slug of tagSlugs) {
310
- const tag = tagMapBySlug.get(slug);
311
- if (tag) {
312
- foundTags.push(tag);
313
- }
314
- }
315
-
316
- const existingSlugs = new Set([
317
- ...tagsWithIds.map((tag) => tag.slug),
318
- ...foundTags.map((tag) => tag.slug),
319
- ]);
320
- const tagsToCreate = tagsToFindOrCreate.filter(
321
- (tag) => !existingSlugs.has(slugify(tag.name)),
322
- );
323
-
324
- const createdTags: Tag[] = [];
325
- for (const tag of tagsToCreate) {
326
- const normalizedName = normalizeTagName(tag.name);
327
- const newTag = await adapter.create<Tag>({
328
- model: "tag",
329
- data: {
330
- name: normalizedName,
331
- slug: slugify(normalizedName),
332
- createdAt: new Date(),
333
- updatedAt: new Date(),
334
- },
335
- });
336
- createdTags.push(newTag);
337
- }
338
-
339
- return [...tagsWithIds, ...foundTags, ...createdTags];
340
- };
341
-
342
279
  const listPosts = createEndpoint(
343
280
  "/posts",
344
281
  {
@@ -394,11 +331,17 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
394
331
  );
395
332
  }
396
333
 
397
- const { tags, ...postData } = ctx.body;
398
- const tagNames = tags || [];
334
+ // Destructure and discard createdAt/updatedAt timestamps are always server-generated
335
+ const {
336
+ tags,
337
+ slug: rawSlug,
338
+ createdAt: _ca,
339
+ updatedAt: _ua,
340
+ ...postData
341
+ } = ctx.body;
399
342
 
400
343
  // Always slugify to ensure URL-safe slug, whether provided or generated from title
401
- const slug = slugify(postData.slug || postData.title);
344
+ const slug = slugify(rawSlug || postData.title);
402
345
 
403
346
  // Validate that slugification produced a non-empty result
404
347
  if (!slug) {
@@ -408,37 +351,14 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
408
351
  });
409
352
  }
410
353
 
411
- const newPost = await adapter.create<Post>({
412
- model: "post",
413
- data: {
414
- ...postData,
415
- slug,
416
- tags: [],
417
- createdAt: new Date(),
418
- updatedAt: new Date(),
419
- },
354
+ const newPost = await createPostMutation(adapter, {
355
+ ...postData,
356
+ slug,
357
+ tags: tags ?? [],
358
+ createdAt: new Date(),
359
+ updatedAt: new Date(),
420
360
  });
421
361
 
422
- if (tagNames.length > 0) {
423
- const createdTags = await findOrCreateTags(tagNames);
424
-
425
- await adapter.transaction(async (tx) => {
426
- for (const tag of createdTags) {
427
- await tx.create<{ postId: string; tagId: string }>({
428
- model: "postTag",
429
- data: {
430
- postId: newPost.id,
431
- tagId: tag.id,
432
- },
433
- });
434
- }
435
- });
436
-
437
- newPost.tags = createdTags.map((tag) => ({ ...tag }));
438
- } else {
439
- newPost.tags = [];
440
- }
441
-
442
362
  if (hooks?.onPostCreated) {
443
363
  await hooks.onPostCreated(newPost, context);
444
364
  }
@@ -475,8 +395,14 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
475
395
  );
476
396
  }
477
397
 
478
- const { tags, slug: rawSlug, ...restPostData } = ctx.body;
479
- const tagNames = tags || [];
398
+ // Destructure and discard createdAt/updatedAt timestamps are always server-generated
399
+ const {
400
+ tags,
401
+ slug: rawSlug,
402
+ createdAt: _ca,
403
+ updatedAt: _ua,
404
+ ...restPostData
405
+ } = ctx.body;
480
406
 
481
407
  // Sanitize slug if provided to ensure it's URL-safe
482
408
  const slugified = rawSlug ? slugify(rawSlug) : undefined;
@@ -489,80 +415,16 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
489
415
  });
490
416
  }
491
417
 
492
- const postData = {
418
+ const updated = await updatePostMutation(adapter, ctx.params.id, {
493
419
  ...restPostData,
494
420
  ...(slugified ? { slug: slugified } : {}),
495
- };
496
-
497
- const updated = await adapter.transaction(async (tx) => {
498
- const existingPostTags = await tx.findMany<{
499
- postId: string;
500
- tagId: string;
501
- }>({
502
- model: "postTag",
503
- where: [
504
- {
505
- field: "postId",
506
- value: ctx.params.id,
507
- operator: "eq" as const,
508
- },
509
- ],
510
- });
511
-
512
- const updatedPost = await tx.update<Post>({
513
- model: "post",
514
- where: [{ field: "id", value: ctx.params.id }],
515
- update: {
516
- ...postData,
517
- updatedAt: new Date(),
518
- },
519
- });
520
-
521
- if (!updatedPost) {
522
- throw ctx.error(404, {
523
- message: "Post not found",
524
- });
525
- }
526
-
527
- for (const postTag of existingPostTags) {
528
- await tx.delete<{ postId: string; tagId: string }>({
529
- model: "postTag",
530
- where: [
531
- {
532
- field: "postId",
533
- value: postTag.postId,
534
- operator: "eq" as const,
535
- },
536
- {
537
- field: "tagId",
538
- value: postTag.tagId,
539
- operator: "eq" as const,
540
- },
541
- ],
542
- });
543
- }
544
-
545
- if (tagNames.length > 0) {
546
- const createdTags = await findOrCreateTags(tagNames);
547
-
548
- for (const tag of createdTags) {
549
- await tx.create<{ postId: string; tagId: string }>({
550
- model: "postTag",
551
- data: {
552
- postId: ctx.params.id,
553
- tagId: tag.id,
554
- },
555
- });
556
- }
557
-
558
- updatedPost.tags = createdTags.map((tag) => ({ ...tag }));
559
- } else {
560
- updatedPost.tags = [];
561
- }
562
-
563
- return updatedPost;
421
+ tags: tags ?? [],
564
422
  });
565
423
 
424
+ if (!updated) {
425
+ throw ctx.error(404, { message: "Post not found" });
426
+ }
427
+
566
428
  if (hooks?.onPostUpdated) {
567
429
  await hooks.onPostUpdated(updated, context);
568
430
  }
@@ -597,10 +459,7 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
597
459
  );
598
460
  }
599
461
 
600
- await adapter.delete<Post>({
601
- model: "post",
602
- where: [{ field: "id", value: ctx.params.id }],
603
- });
462
+ await deletePostMutation(adapter, ctx.params.id);
604
463
 
605
464
  // Lifecycle hook
606
465
  if (hooks?.onPostDeleted) {
@@ -8,11 +8,11 @@ import { QueryClient } from '@tanstack/react-query';
8
8
  declare const createBoardSchema: z.ZodObject<{
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  name: z.ZodString;
11
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
12
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
13
11
  slug: z.ZodOptional<z.ZodString>;
14
12
  ownerId: z.ZodOptional<z.ZodString>;
15
13
  organizationId: z.ZodOptional<z.ZodString>;
14
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
15
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
16
16
  }, z.core.$strip>;
17
17
  declare const updateBoardSchema: z.ZodObject<{
18
18
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
@@ -26,9 +26,9 @@ declare const updateBoardSchema: z.ZodObject<{
26
26
  }, z.core.$strip>;
27
27
  declare const createColumnSchema: z.ZodObject<{
28
28
  title: z.ZodString;
29
+ boardId: z.ZodString;
29
30
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
30
31
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
31
- boardId: z.ZodString;
32
32
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
33
33
  }, z.core.$strip>;
34
34
  declare const updateColumnSchema: z.ZodObject<{
@@ -331,19 +331,19 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
331
331
  body: better_call.StandardSchemaV1<{
332
332
  name: string;
333
333
  description?: string | undefined;
334
- createdAt?: unknown;
335
- updatedAt?: unknown;
336
334
  slug?: string | undefined;
337
335
  ownerId?: string | undefined;
338
336
  organizationId?: string | undefined;
337
+ createdAt?: unknown;
338
+ updatedAt?: unknown;
339
339
  }, {
340
340
  name: string;
341
341
  description?: string | undefined;
342
- createdAt?: unknown;
343
- updatedAt?: unknown;
344
342
  slug?: string | undefined;
345
343
  ownerId?: string | undefined;
346
344
  organizationId?: string | undefined;
345
+ createdAt?: unknown;
346
+ updatedAt?: unknown;
347
347
  }>;
348
348
  }, {
349
349
  columns: ColumnWithTasks[];
@@ -361,19 +361,19 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
361
361
  body: better_call.StandardSchemaV1<{
362
362
  description?: string | undefined;
363
363
  name?: string | undefined;
364
- createdAt?: unknown;
365
- updatedAt?: unknown;
366
364
  slug?: string | undefined;
367
365
  ownerId?: string | undefined;
368
366
  organizationId?: string | undefined;
367
+ createdAt?: unknown;
368
+ updatedAt?: unknown;
369
369
  }, {
370
370
  description?: string | undefined;
371
371
  name?: string | undefined;
372
- createdAt?: unknown;
373
- updatedAt?: unknown;
374
372
  slug?: string | undefined;
375
373
  ownerId?: string | undefined;
376
374
  organizationId?: string | undefined;
375
+ createdAt?: unknown;
376
+ updatedAt?: unknown;
377
377
  }>;
378
378
  }, Board>;
379
379
  readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {} & {
@@ -402,15 +402,15 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
402
402
  method: "PUT";
403
403
  body: better_call.StandardSchemaV1<{
404
404
  title?: string | undefined;
405
+ boardId?: string | undefined;
405
406
  createdAt?: unknown;
406
407
  updatedAt?: unknown;
407
- boardId?: string | undefined;
408
408
  order?: number | undefined;
409
409
  }, {
410
410
  title?: string | undefined;
411
+ boardId?: string | undefined;
411
412
  createdAt?: unknown;
412
413
  updatedAt?: unknown;
413
- boardId?: string | undefined;
414
414
  order?: number | undefined;
415
415
  }>;
416
416
  }, Column>;
@@ -8,11 +8,11 @@ import { QueryClient } from '@tanstack/react-query';
8
8
  declare const createBoardSchema: z.ZodObject<{
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  name: z.ZodString;
11
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
12
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
13
11
  slug: z.ZodOptional<z.ZodString>;
14
12
  ownerId: z.ZodOptional<z.ZodString>;
15
13
  organizationId: z.ZodOptional<z.ZodString>;
14
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
15
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
16
16
  }, z.core.$strip>;
17
17
  declare const updateBoardSchema: z.ZodObject<{
18
18
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
@@ -26,9 +26,9 @@ declare const updateBoardSchema: z.ZodObject<{
26
26
  }, z.core.$strip>;
27
27
  declare const createColumnSchema: z.ZodObject<{
28
28
  title: z.ZodString;
29
+ boardId: z.ZodString;
29
30
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
30
31
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
31
- boardId: z.ZodString;
32
32
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
33
33
  }, z.core.$strip>;
34
34
  declare const updateColumnSchema: z.ZodObject<{
@@ -331,19 +331,19 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
331
331
  body: better_call.StandardSchemaV1<{
332
332
  name: string;
333
333
  description?: string | undefined;
334
- createdAt?: unknown;
335
- updatedAt?: unknown;
336
334
  slug?: string | undefined;
337
335
  ownerId?: string | undefined;
338
336
  organizationId?: string | undefined;
337
+ createdAt?: unknown;
338
+ updatedAt?: unknown;
339
339
  }, {
340
340
  name: string;
341
341
  description?: string | undefined;
342
- createdAt?: unknown;
343
- updatedAt?: unknown;
344
342
  slug?: string | undefined;
345
343
  ownerId?: string | undefined;
346
344
  organizationId?: string | undefined;
345
+ createdAt?: unknown;
346
+ updatedAt?: unknown;
347
347
  }>;
348
348
  }, {
349
349
  columns: ColumnWithTasks[];
@@ -361,19 +361,19 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
361
361
  body: better_call.StandardSchemaV1<{
362
362
  description?: string | undefined;
363
363
  name?: string | undefined;
364
- createdAt?: unknown;
365
- updatedAt?: unknown;
366
364
  slug?: string | undefined;
367
365
  ownerId?: string | undefined;
368
366
  organizationId?: string | undefined;
367
+ createdAt?: unknown;
368
+ updatedAt?: unknown;
369
369
  }, {
370
370
  description?: string | undefined;
371
371
  name?: string | undefined;
372
- createdAt?: unknown;
373
- updatedAt?: unknown;
374
372
  slug?: string | undefined;
375
373
  ownerId?: string | undefined;
376
374
  organizationId?: string | undefined;
375
+ createdAt?: unknown;
376
+ updatedAt?: unknown;
377
377
  }>;
378
378
  }, Board>;
379
379
  readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {} & {
@@ -402,15 +402,15 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
402
402
  method: "PUT";
403
403
  body: better_call.StandardSchemaV1<{
404
404
  title?: string | undefined;
405
+ boardId?: string | undefined;
405
406
  createdAt?: unknown;
406
407
  updatedAt?: unknown;
407
- boardId?: string | undefined;
408
408
  order?: number | undefined;
409
409
  }, {
410
410
  title?: string | undefined;
411
+ boardId?: string | undefined;
411
412
  createdAt?: unknown;
412
413
  updatedAt?: unknown;
413
- boardId?: string | undefined;
414
414
  order?: number | undefined;
415
415
  }>;
416
416
  }, Column>;
@@ -8,11 +8,11 @@ import { QueryClient } from '@tanstack/react-query';
8
8
  declare const createBoardSchema: z.ZodObject<{
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  name: z.ZodString;
11
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
12
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
13
11
  slug: z.ZodOptional<z.ZodString>;
14
12
  ownerId: z.ZodOptional<z.ZodString>;
15
13
  organizationId: z.ZodOptional<z.ZodString>;
14
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
15
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
16
16
  }, z.core.$strip>;
17
17
  declare const updateBoardSchema: z.ZodObject<{
18
18
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
@@ -26,9 +26,9 @@ declare const updateBoardSchema: z.ZodObject<{
26
26
  }, z.core.$strip>;
27
27
  declare const createColumnSchema: z.ZodObject<{
28
28
  title: z.ZodString;
29
+ boardId: z.ZodString;
29
30
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
30
31
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
31
- boardId: z.ZodString;
32
32
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
33
33
  }, z.core.$strip>;
34
34
  declare const updateColumnSchema: z.ZodObject<{
@@ -331,19 +331,19 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
331
331
  body: better_call.StandardSchemaV1<{
332
332
  name: string;
333
333
  description?: string | undefined;
334
- createdAt?: unknown;
335
- updatedAt?: unknown;
336
334
  slug?: string | undefined;
337
335
  ownerId?: string | undefined;
338
336
  organizationId?: string | undefined;
337
+ createdAt?: unknown;
338
+ updatedAt?: unknown;
339
339
  }, {
340
340
  name: string;
341
341
  description?: string | undefined;
342
- createdAt?: unknown;
343
- updatedAt?: unknown;
344
342
  slug?: string | undefined;
345
343
  ownerId?: string | undefined;
346
344
  organizationId?: string | undefined;
345
+ createdAt?: unknown;
346
+ updatedAt?: unknown;
347
347
  }>;
348
348
  }, {
349
349
  columns: ColumnWithTasks[];
@@ -361,19 +361,19 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
361
361
  body: better_call.StandardSchemaV1<{
362
362
  description?: string | undefined;
363
363
  name?: string | undefined;
364
- createdAt?: unknown;
365
- updatedAt?: unknown;
366
364
  slug?: string | undefined;
367
365
  ownerId?: string | undefined;
368
366
  organizationId?: string | undefined;
367
+ createdAt?: unknown;
368
+ updatedAt?: unknown;
369
369
  }, {
370
370
  description?: string | undefined;
371
371
  name?: string | undefined;
372
- createdAt?: unknown;
373
- updatedAt?: unknown;
374
372
  slug?: string | undefined;
375
373
  ownerId?: string | undefined;
376
374
  organizationId?: string | undefined;
375
+ createdAt?: unknown;
376
+ updatedAt?: unknown;
377
377
  }>;
378
378
  }, Board>;
379
379
  readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {} & {
@@ -402,15 +402,15 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
402
402
  method: "PUT";
403
403
  body: better_call.StandardSchemaV1<{
404
404
  title?: string | undefined;
405
+ boardId?: string | undefined;
405
406
  createdAt?: unknown;
406
407
  updatedAt?: unknown;
407
- boardId?: string | undefined;
408
408
  order?: number | undefined;
409
409
  }, {
410
410
  title?: string | undefined;
411
+ boardId?: string | undefined;
411
412
  createdAt?: unknown;
412
413
  updatedAt?: unknown;
413
- boardId?: string | undefined;
414
414
  order?: number | undefined;
415
415
  }>;
416
416
  }, Column>;