@camox/api-contract 0.24.1 → 0.26.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.
package/dist/index.d.ts CHANGED
@@ -505,6 +505,40 @@ declare function createDb(d1: D1Database): import("drizzle-orm/d1").DrizzleD1Dat
505
505
  }, {}, {
506
506
  length: number | undefined;
507
507
  }>;
508
+ livePublishedCheckpointId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
509
+ name: "live_published_checkpoint_id";
510
+ tableName: "pages";
511
+ dataType: "number";
512
+ columnType: "SQLiteInteger";
513
+ data: number;
514
+ driverParam: number;
515
+ notNull: false;
516
+ hasDefault: false;
517
+ isPrimaryKey: false;
518
+ isAutoincrement: false;
519
+ hasRuntimeDefault: false;
520
+ enumValues: undefined;
521
+ baseColumn: never;
522
+ identity: undefined;
523
+ generated: undefined;
524
+ }, {}, {}>;
525
+ contentUpdatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
526
+ name: "content_updated_at";
527
+ tableName: "pages";
528
+ dataType: "number";
529
+ columnType: "SQLiteInteger";
530
+ data: number;
531
+ driverParam: number;
532
+ notNull: true;
533
+ hasDefault: false;
534
+ isPrimaryKey: false;
535
+ isAutoincrement: false;
536
+ hasRuntimeDefault: false;
537
+ enumValues: undefined;
538
+ baseColumn: never;
539
+ identity: undefined;
540
+ generated: undefined;
541
+ }, {}, {}>;
508
542
  createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
509
543
  name: "created_at";
510
544
  tableName: "pages";
@@ -542,6 +576,170 @@ declare function createDb(d1: D1Database): import("drizzle-orm/d1").DrizzleD1Dat
542
576
  };
543
577
  dialect: "sqlite";
544
578
  }>;
579
+ pageCheckpoints: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
580
+ name: "page_checkpoints";
581
+ schema: undefined;
582
+ columns: {
583
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
584
+ name: "id";
585
+ tableName: "page_checkpoints";
586
+ dataType: "number";
587
+ columnType: "SQLiteInteger";
588
+ data: number;
589
+ driverParam: number;
590
+ notNull: true;
591
+ hasDefault: true;
592
+ isPrimaryKey: true;
593
+ isAutoincrement: false;
594
+ hasRuntimeDefault: false;
595
+ enumValues: undefined;
596
+ baseColumn: never;
597
+ identity: undefined;
598
+ generated: undefined;
599
+ }, {}, {}>;
600
+ pageId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
601
+ name: "page_id";
602
+ tableName: "page_checkpoints";
603
+ dataType: "number";
604
+ columnType: "SQLiteInteger";
605
+ data: number;
606
+ driverParam: number;
607
+ notNull: true;
608
+ hasDefault: false;
609
+ isPrimaryKey: false;
610
+ isAutoincrement: false;
611
+ hasRuntimeDefault: false;
612
+ enumValues: undefined;
613
+ baseColumn: never;
614
+ identity: undefined;
615
+ generated: undefined;
616
+ }, {}, {}>;
617
+ kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
618
+ name: "kind";
619
+ tableName: "page_checkpoints";
620
+ dataType: "string";
621
+ columnType: "SQLiteText";
622
+ data: "auto-publish" | "manual" | "auto-draft";
623
+ driverParam: string;
624
+ notNull: true;
625
+ hasDefault: false;
626
+ isPrimaryKey: false;
627
+ isAutoincrement: false;
628
+ hasRuntimeDefault: false;
629
+ enumValues: [
630
+ string,
631
+ ...string[]
632
+ ];
633
+ baseColumn: never;
634
+ identity: undefined;
635
+ generated: undefined;
636
+ }, {}, {
637
+ length: undefined;
638
+ $type: "auto-publish" | "manual" | "auto-draft";
639
+ }>;
640
+ label: import("drizzle-orm/sqlite-core").SQLiteColumn<{
641
+ name: "label";
642
+ tableName: "page_checkpoints";
643
+ dataType: "string";
644
+ columnType: "SQLiteText";
645
+ data: string;
646
+ driverParam: string;
647
+ notNull: false;
648
+ hasDefault: false;
649
+ isPrimaryKey: false;
650
+ isAutoincrement: false;
651
+ hasRuntimeDefault: false;
652
+ enumValues: [
653
+ string,
654
+ ...string[]
655
+ ];
656
+ baseColumn: never;
657
+ identity: undefined;
658
+ generated: undefined;
659
+ }, {}, {
660
+ length: undefined;
661
+ }>;
662
+ snapshot: import("drizzle-orm/sqlite-core").SQLiteColumn<{
663
+ name: "snapshot";
664
+ tableName: "page_checkpoints";
665
+ dataType: "string";
666
+ columnType: "SQLiteText";
667
+ data: string;
668
+ driverParam: string;
669
+ notNull: true;
670
+ hasDefault: false;
671
+ isPrimaryKey: false;
672
+ isAutoincrement: false;
673
+ hasRuntimeDefault: false;
674
+ enumValues: [
675
+ string,
676
+ ...string[]
677
+ ];
678
+ baseColumn: never;
679
+ identity: undefined;
680
+ generated: undefined;
681
+ }, {}, {
682
+ length: undefined;
683
+ }>;
684
+ schemaVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
685
+ name: "schema_version";
686
+ tableName: "page_checkpoints";
687
+ dataType: "number";
688
+ columnType: "SQLiteInteger";
689
+ data: number;
690
+ driverParam: number;
691
+ notNull: true;
692
+ hasDefault: false;
693
+ isPrimaryKey: false;
694
+ isAutoincrement: false;
695
+ hasRuntimeDefault: false;
696
+ enumValues: undefined;
697
+ baseColumn: never;
698
+ identity: undefined;
699
+ generated: undefined;
700
+ }, {}, {}>;
701
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
702
+ name: "created_at";
703
+ tableName: "page_checkpoints";
704
+ dataType: "number";
705
+ columnType: "SQLiteInteger";
706
+ data: number;
707
+ driverParam: number;
708
+ notNull: true;
709
+ hasDefault: false;
710
+ isPrimaryKey: false;
711
+ isAutoincrement: false;
712
+ hasRuntimeDefault: false;
713
+ enumValues: undefined;
714
+ baseColumn: never;
715
+ identity: undefined;
716
+ generated: undefined;
717
+ }, {}, {}>;
718
+ createdBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
719
+ name: "created_by";
720
+ tableName: "page_checkpoints";
721
+ dataType: "string";
722
+ columnType: "SQLiteText";
723
+ data: string;
724
+ driverParam: string;
725
+ notNull: false;
726
+ hasDefault: false;
727
+ isPrimaryKey: false;
728
+ isAutoincrement: false;
729
+ hasRuntimeDefault: false;
730
+ enumValues: [
731
+ string,
732
+ ...string[]
733
+ ];
734
+ baseColumn: never;
735
+ identity: undefined;
736
+ generated: undefined;
737
+ }, {}, {
738
+ length: number | undefined;
739
+ }>;
740
+ };
741
+ dialect: "sqlite";
742
+ }>;
545
743
  layouts: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
546
744
  name: "layouts";
547
745
  schema: undefined;
@@ -641,6 +839,40 @@ declare function createDb(d1: D1Database): import("drizzle-orm/d1").DrizzleD1Dat
641
839
  }, {}, {
642
840
  length: undefined;
643
841
  }>;
842
+ livePublishedCheckpointId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
843
+ name: "live_published_checkpoint_id";
844
+ tableName: "layouts";
845
+ dataType: "number";
846
+ columnType: "SQLiteInteger";
847
+ data: number;
848
+ driverParam: number;
849
+ notNull: false;
850
+ hasDefault: false;
851
+ isPrimaryKey: false;
852
+ isAutoincrement: false;
853
+ hasRuntimeDefault: false;
854
+ enumValues: undefined;
855
+ baseColumn: never;
856
+ identity: undefined;
857
+ generated: undefined;
858
+ }, {}, {}>;
859
+ contentUpdatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
860
+ name: "content_updated_at";
861
+ tableName: "layouts";
862
+ dataType: "number";
863
+ columnType: "SQLiteInteger";
864
+ data: number;
865
+ driverParam: number;
866
+ notNull: true;
867
+ hasDefault: false;
868
+ isPrimaryKey: false;
869
+ isAutoincrement: false;
870
+ hasRuntimeDefault: false;
871
+ enumValues: undefined;
872
+ baseColumn: never;
873
+ identity: undefined;
874
+ generated: undefined;
875
+ }, {}, {}>;
644
876
  createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
645
877
  name: "created_at";
646
878
  tableName: "layouts";
@@ -678,6 +910,170 @@ declare function createDb(d1: D1Database): import("drizzle-orm/d1").DrizzleD1Dat
678
910
  };
679
911
  dialect: "sqlite";
680
912
  }>;
913
+ layoutCheckpoints: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
914
+ name: "layout_checkpoints";
915
+ schema: undefined;
916
+ columns: {
917
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
918
+ name: "id";
919
+ tableName: "layout_checkpoints";
920
+ dataType: "number";
921
+ columnType: "SQLiteInteger";
922
+ data: number;
923
+ driverParam: number;
924
+ notNull: true;
925
+ hasDefault: true;
926
+ isPrimaryKey: true;
927
+ isAutoincrement: false;
928
+ hasRuntimeDefault: false;
929
+ enumValues: undefined;
930
+ baseColumn: never;
931
+ identity: undefined;
932
+ generated: undefined;
933
+ }, {}, {}>;
934
+ layoutId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
935
+ name: "layout_id";
936
+ tableName: "layout_checkpoints";
937
+ dataType: "number";
938
+ columnType: "SQLiteInteger";
939
+ data: number;
940
+ driverParam: number;
941
+ notNull: true;
942
+ hasDefault: false;
943
+ isPrimaryKey: false;
944
+ isAutoincrement: false;
945
+ hasRuntimeDefault: false;
946
+ enumValues: undefined;
947
+ baseColumn: never;
948
+ identity: undefined;
949
+ generated: undefined;
950
+ }, {}, {}>;
951
+ kind: import("drizzle-orm/sqlite-core").SQLiteColumn<{
952
+ name: "kind";
953
+ tableName: "layout_checkpoints";
954
+ dataType: "string";
955
+ columnType: "SQLiteText";
956
+ data: "auto-publish" | "manual" | "auto-draft";
957
+ driverParam: string;
958
+ notNull: true;
959
+ hasDefault: false;
960
+ isPrimaryKey: false;
961
+ isAutoincrement: false;
962
+ hasRuntimeDefault: false;
963
+ enumValues: [
964
+ string,
965
+ ...string[]
966
+ ];
967
+ baseColumn: never;
968
+ identity: undefined;
969
+ generated: undefined;
970
+ }, {}, {
971
+ length: undefined;
972
+ $type: "auto-publish" | "manual" | "auto-draft";
973
+ }>;
974
+ label: import("drizzle-orm/sqlite-core").SQLiteColumn<{
975
+ name: "label";
976
+ tableName: "layout_checkpoints";
977
+ dataType: "string";
978
+ columnType: "SQLiteText";
979
+ data: string;
980
+ driverParam: string;
981
+ notNull: false;
982
+ hasDefault: false;
983
+ isPrimaryKey: false;
984
+ isAutoincrement: false;
985
+ hasRuntimeDefault: false;
986
+ enumValues: [
987
+ string,
988
+ ...string[]
989
+ ];
990
+ baseColumn: never;
991
+ identity: undefined;
992
+ generated: undefined;
993
+ }, {}, {
994
+ length: undefined;
995
+ }>;
996
+ snapshot: import("drizzle-orm/sqlite-core").SQLiteColumn<{
997
+ name: "snapshot";
998
+ tableName: "layout_checkpoints";
999
+ dataType: "string";
1000
+ columnType: "SQLiteText";
1001
+ data: string;
1002
+ driverParam: string;
1003
+ notNull: true;
1004
+ hasDefault: false;
1005
+ isPrimaryKey: false;
1006
+ isAutoincrement: false;
1007
+ hasRuntimeDefault: false;
1008
+ enumValues: [
1009
+ string,
1010
+ ...string[]
1011
+ ];
1012
+ baseColumn: never;
1013
+ identity: undefined;
1014
+ generated: undefined;
1015
+ }, {}, {
1016
+ length: undefined;
1017
+ }>;
1018
+ schemaVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1019
+ name: "schema_version";
1020
+ tableName: "layout_checkpoints";
1021
+ dataType: "number";
1022
+ columnType: "SQLiteInteger";
1023
+ data: number;
1024
+ driverParam: number;
1025
+ notNull: true;
1026
+ hasDefault: false;
1027
+ isPrimaryKey: false;
1028
+ isAutoincrement: false;
1029
+ hasRuntimeDefault: false;
1030
+ enumValues: undefined;
1031
+ baseColumn: never;
1032
+ identity: undefined;
1033
+ generated: undefined;
1034
+ }, {}, {}>;
1035
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1036
+ name: "created_at";
1037
+ tableName: "layout_checkpoints";
1038
+ dataType: "number";
1039
+ columnType: "SQLiteInteger";
1040
+ data: number;
1041
+ driverParam: number;
1042
+ notNull: true;
1043
+ hasDefault: false;
1044
+ isPrimaryKey: false;
1045
+ isAutoincrement: false;
1046
+ hasRuntimeDefault: false;
1047
+ enumValues: undefined;
1048
+ baseColumn: never;
1049
+ identity: undefined;
1050
+ generated: undefined;
1051
+ }, {}, {}>;
1052
+ createdBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1053
+ name: "created_by";
1054
+ tableName: "layout_checkpoints";
1055
+ dataType: "string";
1056
+ columnType: "SQLiteText";
1057
+ data: string;
1058
+ driverParam: string;
1059
+ notNull: false;
1060
+ hasDefault: false;
1061
+ isPrimaryKey: false;
1062
+ isAutoincrement: false;
1063
+ hasRuntimeDefault: false;
1064
+ enumValues: [
1065
+ string,
1066
+ ...string[]
1067
+ ];
1068
+ baseColumn: never;
1069
+ identity: undefined;
1070
+ generated: undefined;
1071
+ }, {}, {
1072
+ length: number | undefined;
1073
+ }>;
1074
+ };
1075
+ dialect: "sqlite";
1076
+ }>;
681
1077
  blocks: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
682
1078
  name: "blocks";
683
1079
  schema: undefined;
@@ -3350,6 +3746,21 @@ export type BaseContext = {
3350
3746
  telemetryDisabled: boolean;
3351
3747
  waitUntil: (promise: Promise<unknown>) => void;
3352
3748
  };
3749
+ export type PageStatus = "draft" | "published" | "modified";
3750
+ export type ModifiedReason = {
3751
+ reason: "self";
3752
+ } | {
3753
+ reason: "layout";
3754
+ layoutId: number;
3755
+ layoutHandle: string;
3756
+ affectedPagesCount: number;
3757
+ } | {
3758
+ reason: "both";
3759
+ layoutId: number;
3760
+ layoutHandle: string;
3761
+ affectedPagesCount: number;
3762
+ };
3763
+ export type LayoutStatus = "draft" | "published" | "modified";
3353
3764
  export type CompatibilityReason = {
3354
3765
  kind: "block-definition-missing-in-source";
3355
3766
  blockId: string;
@@ -3796,23 +4207,34 @@ declare const router: {
3796
4207
  getByPath: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
3797
4208
  projectSlug: import("zod").ZodString;
3798
4209
  path: import("zod").ZodString;
4210
+ source: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodUnion<readonly [
4211
+ import("zod").ZodLiteral<"live">,
4212
+ import("zod").ZodLiteral<"draft">,
4213
+ import("zod").ZodObject<{
4214
+ checkpointId: import("zod").ZodNumber;
4215
+ }, import("better-auth").$strip>
4216
+ ]>>>;
3799
4217
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
3800
4218
  page: {
4219
+ status: PageStatus;
4220
+ modifiedReason: ModifiedReason | null;
3801
4221
  blockIds: number[];
3802
4222
  id: number;
4223
+ createdAt: number;
4224
+ updatedAt: number;
3803
4225
  projectId: number;
3804
4226
  environmentId: number;
4227
+ layoutId: number;
4228
+ livePublishedCheckpointId: number | null;
4229
+ contentUpdatedAt: number;
3805
4230
  pathSegment: string;
3806
4231
  fullPath: string;
3807
4232
  parentPageId: number | null;
3808
- layoutId: number;
3809
4233
  metaTitle: string | null;
3810
4234
  metaDescription: string | null;
3811
4235
  aiSeoEnabled: boolean | null;
3812
4236
  customOgImageBlobId: string | null;
3813
4237
  customOgImageUrl: string | null;
3814
- createdAt: number;
3815
- updatedAt: number;
3816
4238
  };
3817
4239
  projectName: string;
3818
4240
  project: {
@@ -3854,24 +4276,42 @@ declare const router: {
3854
4276
  parentItemId: number | null;
3855
4277
  fieldName: string;
3856
4278
  }[];
3857
- files: any[];
4279
+ files: {
4280
+ id: number;
4281
+ createdAt: number;
4282
+ updatedAt: number;
4283
+ projectId: number | null;
4284
+ environmentId: number;
4285
+ url: string;
4286
+ alt: string;
4287
+ filename: string;
4288
+ mimeType: string;
4289
+ size: number;
4290
+ blobId: string;
4291
+ path: string;
4292
+ aiMetadataEnabled: boolean | null;
4293
+ }[];
3858
4294
  }, {
3859
4295
  page: {
4296
+ status: PageStatus;
4297
+ modifiedReason: ModifiedReason | null;
3860
4298
  blockIds: number[];
3861
4299
  id: number;
4300
+ createdAt: number;
4301
+ updatedAt: number;
3862
4302
  projectId: number;
3863
4303
  environmentId: number;
4304
+ layoutId: number;
4305
+ livePublishedCheckpointId: number | null;
4306
+ contentUpdatedAt: number;
3864
4307
  pathSegment: string;
3865
4308
  fullPath: string;
3866
4309
  parentPageId: number | null;
3867
- layoutId: number;
3868
4310
  metaTitle: string | null;
3869
4311
  metaDescription: string | null;
3870
4312
  aiSeoEnabled: boolean | null;
3871
4313
  customOgImageBlobId: string | null;
3872
4314
  customOgImageUrl: string | null;
3873
- createdAt: number;
3874
- updatedAt: number;
3875
4315
  };
3876
4316
  projectName: string;
3877
4317
  project: {
@@ -3913,13 +4353,36 @@ declare const router: {
3913
4353
  parentItemId: number | null;
3914
4354
  fieldName: string;
3915
4355
  }[];
3916
- files: any[];
4356
+ files: {
4357
+ id: number;
4358
+ createdAt: number;
4359
+ updatedAt: number;
4360
+ projectId: number | null;
4361
+ environmentId: number;
4362
+ url: string;
4363
+ alt: string;
4364
+ filename: string;
4365
+ mimeType: string;
4366
+ size: number;
4367
+ blobId: string;
4368
+ path: string;
4369
+ aiMetadataEnabled: boolean | null;
4370
+ }[];
3917
4371
  }>, Record<never, never>, Record<never, never>>;
3918
4372
  getStructure: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
3919
4373
  projectSlug: import("zod").ZodString;
3920
4374
  path: import("zod").ZodString;
4375
+ source: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodUnion<readonly [
4376
+ import("zod").ZodLiteral<"live">,
4377
+ import("zod").ZodLiteral<"draft">,
4378
+ import("zod").ZodObject<{
4379
+ checkpointId: import("zod").ZodNumber;
4380
+ }, import("better-auth").$strip>
4381
+ ]>>>;
3921
4382
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
3922
4383
  page: {
4384
+ status: PageStatus;
4385
+ modifiedReason: ModifiedReason | null;
3923
4386
  blockIds: number[];
3924
4387
  id: number;
3925
4388
  projectId: number;
@@ -3933,6 +4396,8 @@ declare const router: {
3933
4396
  aiSeoEnabled: boolean | null;
3934
4397
  customOgImageBlobId: string | null;
3935
4398
  customOgImageUrl: string | null;
4399
+ livePublishedCheckpointId: number | null;
4400
+ contentUpdatedAt: number;
3936
4401
  createdAt: number;
3937
4402
  updatedAt: number;
3938
4403
  };
@@ -3949,6 +4414,8 @@ declare const router: {
3949
4414
  } | null;
3950
4415
  }, {
3951
4416
  page: {
4417
+ status: PageStatus;
4418
+ modifiedReason: ModifiedReason | null;
3952
4419
  blockIds: number[];
3953
4420
  id: number;
3954
4421
  projectId: number;
@@ -3962,6 +4429,8 @@ declare const router: {
3962
4429
  aiSeoEnabled: boolean | null;
3963
4430
  customOgImageBlobId: string | null;
3964
4431
  customOgImageUrl: string | null;
4432
+ livePublishedCheckpointId: number | null;
4433
+ contentUpdatedAt: number;
3965
4434
  createdAt: number;
3966
4435
  updatedAt: number;
3967
4436
  };
@@ -3980,6 +4449,8 @@ declare const router: {
3980
4449
  list: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
3981
4450
  projectId: import("zod").ZodNumber;
3982
4451
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
4452
+ status: PageStatus;
4453
+ modifiedReason: ModifiedReason | null;
3983
4454
  id: number;
3984
4455
  projectId: number;
3985
4456
  environmentId: number;
@@ -3992,9 +4463,13 @@ declare const router: {
3992
4463
  aiSeoEnabled: boolean | null;
3993
4464
  customOgImageBlobId: string | null;
3994
4465
  customOgImageUrl: string | null;
4466
+ livePublishedCheckpointId: number | null;
4467
+ contentUpdatedAt: number;
3995
4468
  createdAt: number;
3996
4469
  updatedAt: number;
3997
4470
  }[], {
4471
+ status: PageStatus;
4472
+ modifiedReason: ModifiedReason | null;
3998
4473
  id: number;
3999
4474
  projectId: number;
4000
4475
  environmentId: number;
@@ -4007,12 +4482,16 @@ declare const router: {
4007
4482
  aiSeoEnabled: boolean | null;
4008
4483
  customOgImageBlobId: string | null;
4009
4484
  customOgImageUrl: string | null;
4485
+ livePublishedCheckpointId: number | null;
4486
+ contentUpdatedAt: number;
4010
4487
  createdAt: number;
4011
4488
  updatedAt: number;
4012
4489
  }[]>, Record<never, never>, Record<never, never>>;
4013
4490
  listBySlug: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
4014
4491
  projectSlug: import("zod").ZodString;
4015
4492
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
4493
+ status: PageStatus;
4494
+ modifiedReason: ModifiedReason | null;
4016
4495
  id: number;
4017
4496
  projectId: number;
4018
4497
  environmentId: number;
@@ -4025,9 +4504,13 @@ declare const router: {
4025
4504
  aiSeoEnabled: boolean | null;
4026
4505
  customOgImageBlobId: string | null;
4027
4506
  customOgImageUrl: string | null;
4507
+ livePublishedCheckpointId: number | null;
4508
+ contentUpdatedAt: number;
4028
4509
  createdAt: number;
4029
4510
  updatedAt: number;
4030
4511
  }[], {
4512
+ status: PageStatus;
4513
+ modifiedReason: ModifiedReason | null;
4031
4514
  id: number;
4032
4515
  projectId: number;
4033
4516
  environmentId: number;
@@ -4040,47 +4523,67 @@ declare const router: {
4040
4523
  aiSeoEnabled: boolean | null;
4041
4524
  customOgImageBlobId: string | null;
4042
4525
  customOgImageUrl: string | null;
4526
+ livePublishedCheckpointId: number | null;
4527
+ contentUpdatedAt: number;
4043
4528
  createdAt: number;
4044
4529
  updatedAt: number;
4045
4530
  }[]>, Record<never, never>, Record<never, never>>;
4046
4531
  get: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodUnion<readonly [
4047
4532
  import("zod").ZodObject<{
4048
4533
  id: import("zod").ZodNumber;
4534
+ source: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodUnion<readonly [
4535
+ import("zod").ZodLiteral<"live">,
4536
+ import("zod").ZodLiteral<"draft">,
4537
+ import("zod").ZodObject<{
4538
+ checkpointId: import("zod").ZodNumber;
4539
+ }, import("better-auth").$strip>
4540
+ ]>>>;
4049
4541
  }, import("better-auth").$strip>,
4050
4542
  import("zod").ZodObject<{
4051
4543
  projectId: import("zod").ZodNumber;
4052
4544
  path: import("zod").ZodString;
4545
+ source: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodUnion<readonly [
4546
+ import("zod").ZodLiteral<"live">,
4547
+ import("zod").ZodLiteral<"draft">,
4548
+ import("zod").ZodObject<{
4549
+ checkpointId: import("zod").ZodNumber;
4550
+ }, import("better-auth").$strip>
4551
+ ]>>>;
4053
4552
  }, import("better-auth").$strip>
4054
4553
  ]>, import("@orpc/server").Schema<{
4055
4554
  id: number;
4555
+ createdAt: number;
4556
+ updatedAt: number;
4056
4557
  projectId: number;
4057
4558
  environmentId: number;
4559
+ layoutId: number;
4560
+ livePublishedCheckpointId: number | null;
4561
+ contentUpdatedAt: number;
4058
4562
  pathSegment: string;
4059
4563
  fullPath: string;
4060
4564
  parentPageId: number | null;
4061
- layoutId: number;
4062
4565
  metaTitle: string | null;
4063
4566
  metaDescription: string | null;
4064
4567
  aiSeoEnabled: boolean | null;
4065
4568
  customOgImageBlobId: string | null;
4066
4569
  customOgImageUrl: string | null;
4067
- createdAt: number;
4068
- updatedAt: number;
4069
4570
  }, {
4070
4571
  id: number;
4572
+ createdAt: number;
4573
+ updatedAt: number;
4071
4574
  projectId: number;
4072
4575
  environmentId: number;
4576
+ layoutId: number;
4577
+ livePublishedCheckpointId: number | null;
4578
+ contentUpdatedAt: number;
4073
4579
  pathSegment: string;
4074
4580
  fullPath: string;
4075
4581
  parentPageId: number | null;
4076
- layoutId: number;
4077
4582
  metaTitle: string | null;
4078
4583
  metaDescription: string | null;
4079
4584
  aiSeoEnabled: boolean | null;
4080
4585
  customOgImageBlobId: string | null;
4081
4586
  customOgImageUrl: string | null;
4082
- createdAt: number;
4083
- updatedAt: number;
4084
4587
  }>, Record<never, never>, Record<never, never>>;
4085
4588
  create: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>>, import("@orpc/server").MergedCurrentContext<import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, {
4086
4589
  user: {
@@ -4125,6 +4628,8 @@ declare const router: {
4125
4628
  projectId: number;
4126
4629
  environmentId: number;
4127
4630
  layoutId: number;
4631
+ livePublishedCheckpointId: number | null;
4632
+ contentUpdatedAt: number;
4128
4633
  pathSegment: string;
4129
4634
  fullPath: string;
4130
4635
  parentPageId: number | null;
@@ -4143,6 +4648,8 @@ declare const router: {
4143
4648
  projectId: number;
4144
4649
  environmentId: number;
4145
4650
  layoutId: number;
4651
+ livePublishedCheckpointId: number | null;
4652
+ contentUpdatedAt: number;
4146
4653
  pathSegment: string;
4147
4654
  fullPath: string;
4148
4655
  parentPageId: number | null;
@@ -4194,6 +4701,8 @@ declare const router: {
4194
4701
  projectId: number;
4195
4702
  environmentId: number;
4196
4703
  layoutId: number;
4704
+ livePublishedCheckpointId: number | null;
4705
+ contentUpdatedAt: number;
4197
4706
  pathSegment: string;
4198
4707
  fullPath: string;
4199
4708
  parentPageId: number | null;
@@ -4209,6 +4718,8 @@ declare const router: {
4209
4718
  projectId: number;
4210
4719
  environmentId: number;
4211
4720
  layoutId: number;
4721
+ livePublishedCheckpointId: number | null;
4722
+ contentUpdatedAt: number;
4212
4723
  pathSegment: string;
4213
4724
  fullPath: string;
4214
4725
  parentPageId: number | null;
@@ -4256,6 +4767,8 @@ declare const router: {
4256
4767
  projectId: number;
4257
4768
  environmentId: number;
4258
4769
  layoutId: number;
4770
+ livePublishedCheckpointId: number | null;
4771
+ contentUpdatedAt: number;
4259
4772
  pathSegment: string;
4260
4773
  fullPath: string;
4261
4774
  parentPageId: number | null;
@@ -4271,6 +4784,8 @@ declare const router: {
4271
4784
  projectId: number;
4272
4785
  environmentId: number;
4273
4786
  layoutId: number;
4787
+ livePublishedCheckpointId: number | null;
4788
+ contentUpdatedAt: number;
4274
4789
  pathSegment: string;
4275
4790
  fullPath: string;
4276
4791
  parentPageId: number | null;
@@ -4319,6 +4834,8 @@ declare const router: {
4319
4834
  projectId: number;
4320
4835
  environmentId: number;
4321
4836
  layoutId: number;
4837
+ livePublishedCheckpointId: number | null;
4838
+ contentUpdatedAt: number;
4322
4839
  pathSegment: string;
4323
4840
  fullPath: string;
4324
4841
  parentPageId: number | null;
@@ -4334,6 +4851,8 @@ declare const router: {
4334
4851
  projectId: number;
4335
4852
  environmentId: number;
4336
4853
  layoutId: number;
4854
+ livePublishedCheckpointId: number | null;
4855
+ contentUpdatedAt: number;
4337
4856
  pathSegment: string;
4338
4857
  fullPath: string;
4339
4858
  parentPageId: number | null;
@@ -4382,6 +4901,8 @@ declare const router: {
4382
4901
  projectId: number;
4383
4902
  environmentId: number;
4384
4903
  layoutId: number;
4904
+ livePublishedCheckpointId: number | null;
4905
+ contentUpdatedAt: number;
4385
4906
  pathSegment: string;
4386
4907
  fullPath: string;
4387
4908
  parentPageId: number | null;
@@ -4397,6 +4918,8 @@ declare const router: {
4397
4918
  projectId: number;
4398
4919
  environmentId: number;
4399
4920
  layoutId: number;
4921
+ livePublishedCheckpointId: number | null;
4922
+ contentUpdatedAt: number;
4400
4923
  pathSegment: string;
4401
4924
  fullPath: string;
4402
4925
  parentPageId: number | null;
@@ -4445,6 +4968,8 @@ declare const router: {
4445
4968
  projectId: number;
4446
4969
  environmentId: number;
4447
4970
  layoutId: number;
4971
+ livePublishedCheckpointId: number | null;
4972
+ contentUpdatedAt: number;
4448
4973
  pathSegment: string;
4449
4974
  fullPath: string;
4450
4975
  parentPageId: number | null;
@@ -4460,6 +4985,8 @@ declare const router: {
4460
4985
  projectId: number;
4461
4986
  environmentId: number;
4462
4987
  layoutId: number;
4988
+ livePublishedCheckpointId: number | null;
4989
+ contentUpdatedAt: number;
4463
4990
  pathSegment: string;
4464
4991
  fullPath: string;
4465
4992
  parentPageId: number | null;
@@ -4508,6 +5035,8 @@ declare const router: {
4508
5035
  projectId: number;
4509
5036
  environmentId: number;
4510
5037
  layoutId: number;
5038
+ livePublishedCheckpointId: number | null;
5039
+ contentUpdatedAt: number;
4511
5040
  pathSegment: string;
4512
5041
  fullPath: string;
4513
5042
  parentPageId: number | null;
@@ -4523,6 +5052,8 @@ declare const router: {
4523
5052
  projectId: number;
4524
5053
  environmentId: number;
4525
5054
  layoutId: number;
5055
+ livePublishedCheckpointId: number | null;
5056
+ contentUpdatedAt: number;
4526
5057
  pathSegment: string;
4527
5058
  fullPath: string;
4528
5059
  parentPageId: number | null;
@@ -4576,6 +5107,8 @@ declare const router: {
4576
5107
  aiSeoEnabled: boolean | null;
4577
5108
  customOgImageBlobId: string | null;
4578
5109
  customOgImageUrl: string | null;
5110
+ livePublishedCheckpointId: number | null;
5111
+ contentUpdatedAt: number;
4579
5112
  createdAt: number;
4580
5113
  updatedAt: number;
4581
5114
  } | undefined, {
@@ -4591,13 +5124,155 @@ declare const router: {
4591
5124
  aiSeoEnabled: boolean | null;
4592
5125
  customOgImageBlobId: string | null;
4593
5126
  customOgImageUrl: string | null;
5127
+ livePublishedCheckpointId: number | null;
5128
+ contentUpdatedAt: number;
4594
5129
  createdAt: number;
4595
5130
  updatedAt: number;
4596
5131
  } | undefined>, Record<never, never>, Record<never, never>>;
5132
+ publish: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>>, import("@orpc/server").MergedCurrentContext<import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, {
5133
+ user: {
5134
+ id: string;
5135
+ createdAt: Date;
5136
+ updatedAt: Date;
5137
+ email: string;
5138
+ emailVerified: boolean;
5139
+ name: string;
5140
+ image?: string | null | undefined;
5141
+ };
5142
+ session: {
5143
+ id: string;
5144
+ createdAt: Date;
5145
+ updatedAt: Date;
5146
+ userId: string;
5147
+ expiresAt: Date;
5148
+ token: string;
5149
+ ipAddress?: string | null | undefined;
5150
+ userAgent?: string | null | undefined;
5151
+ activeOrganizationId?: string | null | undefined;
5152
+ activeTeamId?: string | null | undefined;
5153
+ };
5154
+ env: Bindings;
5155
+ headers: Headers;
5156
+ db: Database;
5157
+ environmentName: string;
5158
+ client: string;
5159
+ telemetryDisabled: boolean;
5160
+ waitUntil: (promise: Promise<unknown>) => void;
5161
+ }>, import("zod").ZodObject<{
5162
+ id: import("zod").ZodNumber;
5163
+ alsoPublishLayout: import("zod").ZodOptional<import("zod").ZodBoolean>;
5164
+ }, import("better-auth").$strip>, import("@orpc/server").Schema<{
5165
+ id: number;
5166
+ createdAt: number;
5167
+ updatedAt: number;
5168
+ projectId: number;
5169
+ environmentId: number;
5170
+ layoutId: number;
5171
+ livePublishedCheckpointId: number | null;
5172
+ contentUpdatedAt: number;
5173
+ pathSegment: string;
5174
+ fullPath: string;
5175
+ parentPageId: number | null;
5176
+ metaTitle: string | null;
5177
+ metaDescription: string | null;
5178
+ aiSeoEnabled: boolean | null;
5179
+ customOgImageBlobId: string | null;
5180
+ customOgImageUrl: string | null;
5181
+ }, {
5182
+ id: number;
5183
+ createdAt: number;
5184
+ updatedAt: number;
5185
+ projectId: number;
5186
+ environmentId: number;
5187
+ layoutId: number;
5188
+ livePublishedCheckpointId: number | null;
5189
+ contentUpdatedAt: number;
5190
+ pathSegment: string;
5191
+ fullPath: string;
5192
+ parentPageId: number | null;
5193
+ metaTitle: string | null;
5194
+ metaDescription: string | null;
5195
+ aiSeoEnabled: boolean | null;
5196
+ customOgImageBlobId: string | null;
5197
+ customOgImageUrl: string | null;
5198
+ }>, Record<never, never>, Record<never, never>>;
5199
+ unpublish: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>>, import("@orpc/server").MergedCurrentContext<import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, {
5200
+ user: {
5201
+ id: string;
5202
+ createdAt: Date;
5203
+ updatedAt: Date;
5204
+ email: string;
5205
+ emailVerified: boolean;
5206
+ name: string;
5207
+ image?: string | null | undefined;
5208
+ };
5209
+ session: {
5210
+ id: string;
5211
+ createdAt: Date;
5212
+ updatedAt: Date;
5213
+ userId: string;
5214
+ expiresAt: Date;
5215
+ token: string;
5216
+ ipAddress?: string | null | undefined;
5217
+ userAgent?: string | null | undefined;
5218
+ activeOrganizationId?: string | null | undefined;
5219
+ activeTeamId?: string | null | undefined;
5220
+ };
5221
+ env: Bindings;
5222
+ headers: Headers;
5223
+ db: Database;
5224
+ environmentName: string;
5225
+ client: string;
5226
+ telemetryDisabled: boolean;
5227
+ waitUntil: (promise: Promise<unknown>) => void;
5228
+ }>, import("zod").ZodObject<{
5229
+ id: import("zod").ZodNumber;
5230
+ }, import("better-auth").$strip>, import("@orpc/server").Schema<{
5231
+ id: number;
5232
+ createdAt: number;
5233
+ updatedAt: number;
5234
+ projectId: number;
5235
+ environmentId: number;
5236
+ layoutId: number;
5237
+ livePublishedCheckpointId: number | null;
5238
+ contentUpdatedAt: number;
5239
+ pathSegment: string;
5240
+ fullPath: string;
5241
+ parentPageId: number | null;
5242
+ metaTitle: string | null;
5243
+ metaDescription: string | null;
5244
+ aiSeoEnabled: boolean | null;
5245
+ customOgImageBlobId: string | null;
5246
+ customOgImageUrl: string | null;
5247
+ }, {
5248
+ id: number;
5249
+ createdAt: number;
5250
+ updatedAt: number;
5251
+ projectId: number;
5252
+ environmentId: number;
5253
+ layoutId: number;
5254
+ livePublishedCheckpointId: number | null;
5255
+ contentUpdatedAt: number;
5256
+ pathSegment: string;
5257
+ fullPath: string;
5258
+ parentPageId: number | null;
5259
+ metaTitle: string | null;
5260
+ metaDescription: string | null;
5261
+ aiSeoEnabled: boolean | null;
5262
+ customOgImageBlobId: string | null;
5263
+ customOgImageUrl: string | null;
5264
+ }>, Record<never, never>, Record<never, never>>;
4597
5265
  };
4598
5266
  blocks: {
4599
5267
  get: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
4600
5268
  id: import("zod").ZodNumber;
5269
+ source: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodUnion<readonly [
5270
+ import("zod").ZodLiteral<"live">,
5271
+ import("zod").ZodLiteral<"draft">,
5272
+ import("zod").ZodObject<{
5273
+ checkpointId: import("zod").ZodNumber;
5274
+ }, import("better-auth").$strip>
5275
+ ]>>>;
4601
5276
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
4602
5277
  block: {
4603
5278
  content: {
@@ -4687,6 +5362,13 @@ declare const router: {
4687
5362
  }>, Record<never, never>, Record<never, never>>;
4688
5363
  getPageMarkdown: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
4689
5364
  pageId: import("zod").ZodNumber;
5365
+ source: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodUnion<readonly [
5366
+ import("zod").ZodLiteral<"live">,
5367
+ import("zod").ZodLiteral<"draft">,
5368
+ import("zod").ZodObject<{
5369
+ checkpointId: import("zod").ZodNumber;
5370
+ }, import("better-auth").$strip>
5371
+ ]>>>;
4690
5372
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
4691
5373
  markdown: string;
4692
5374
  blocks: {
@@ -5180,19 +5862,27 @@ declare const router: {
5180
5862
  list: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
5181
5863
  projectId: import("zod").ZodNumber;
5182
5864
  }, import("better-auth").$strip>, import("@orpc/server").Schema<{
5865
+ status: LayoutStatus;
5866
+ affectedPagesCount: number;
5183
5867
  id: number;
5184
5868
  projectId: number;
5185
5869
  environmentId: number;
5186
5870
  layoutId: string;
5187
5871
  description: string | null;
5872
+ livePublishedCheckpointId: number | null;
5873
+ contentUpdatedAt: number;
5188
5874
  createdAt: number;
5189
5875
  updatedAt: number;
5190
5876
  }[], {
5877
+ status: LayoutStatus;
5878
+ affectedPagesCount: number;
5191
5879
  id: number;
5192
5880
  projectId: number;
5193
5881
  environmentId: number;
5194
5882
  layoutId: string;
5195
5883
  description: string | null;
5884
+ livePublishedCheckpointId: number | null;
5885
+ contentUpdatedAt: number;
5196
5886
  createdAt: number;
5197
5887
  updatedAt: number;
5198
5888
  }[]>, Record<never, never>, Record<never, never>>;
@@ -5230,6 +5920,8 @@ declare const router: {
5230
5920
  environmentId: number;
5231
5921
  layoutId: string;
5232
5922
  description: string | null;
5923
+ livePublishedCheckpointId: number | null;
5924
+ contentUpdatedAt: number;
5233
5925
  };
5234
5926
  wasExisting: boolean;
5235
5927
  createdBlockTypes: string[];
@@ -5252,6 +5944,8 @@ declare const router: {
5252
5944
  environmentId: number;
5253
5945
  layoutId: string;
5254
5946
  description: string | null;
5947
+ livePublishedCheckpointId: number | null;
5948
+ contentUpdatedAt: number;
5255
5949
  };
5256
5950
  wasExisting: boolean;
5257
5951
  createdBlockTypes: string[];
@@ -5265,6 +5959,110 @@ declare const router: {
5265
5959
  }[];
5266
5960
  deletedDefinitionTypes: string[];
5267
5961
  }>, Record<never, never>, Record<never, never>>;
5962
+ publish: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>>, import("@orpc/server").MergedCurrentContext<import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, {
5963
+ user: {
5964
+ id: string;
5965
+ createdAt: Date;
5966
+ updatedAt: Date;
5967
+ email: string;
5968
+ emailVerified: boolean;
5969
+ name: string;
5970
+ image?: string | null | undefined;
5971
+ };
5972
+ session: {
5973
+ id: string;
5974
+ createdAt: Date;
5975
+ updatedAt: Date;
5976
+ userId: string;
5977
+ expiresAt: Date;
5978
+ token: string;
5979
+ ipAddress?: string | null | undefined;
5980
+ userAgent?: string | null | undefined;
5981
+ activeOrganizationId?: string | null | undefined;
5982
+ activeTeamId?: string | null | undefined;
5983
+ };
5984
+ env: Bindings;
5985
+ headers: Headers;
5986
+ db: Database;
5987
+ environmentName: string;
5988
+ client: string;
5989
+ telemetryDisabled: boolean;
5990
+ waitUntil: (promise: Promise<unknown>) => void;
5991
+ }>, import("zod").ZodObject<{
5992
+ id: import("zod").ZodNumber;
5993
+ }, import("better-auth").$strip>, import("@orpc/server").Schema<{
5994
+ id: number;
5995
+ projectId: number;
5996
+ environmentId: number;
5997
+ layoutId: string;
5998
+ description: string | null;
5999
+ livePublishedCheckpointId: number | null;
6000
+ contentUpdatedAt: number;
6001
+ createdAt: number;
6002
+ updatedAt: number;
6003
+ } | undefined, {
6004
+ id: number;
6005
+ projectId: number;
6006
+ environmentId: number;
6007
+ layoutId: string;
6008
+ description: string | null;
6009
+ livePublishedCheckpointId: number | null;
6010
+ contentUpdatedAt: number;
6011
+ createdAt: number;
6012
+ updatedAt: number;
6013
+ } | undefined>, Record<never, never>, Record<never, never>>;
6014
+ unpublish: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>>, import("@orpc/server").MergedCurrentContext<import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, {
6015
+ user: {
6016
+ id: string;
6017
+ createdAt: Date;
6018
+ updatedAt: Date;
6019
+ email: string;
6020
+ emailVerified: boolean;
6021
+ name: string;
6022
+ image?: string | null | undefined;
6023
+ };
6024
+ session: {
6025
+ id: string;
6026
+ createdAt: Date;
6027
+ updatedAt: Date;
6028
+ userId: string;
6029
+ expiresAt: Date;
6030
+ token: string;
6031
+ ipAddress?: string | null | undefined;
6032
+ userAgent?: string | null | undefined;
6033
+ activeOrganizationId?: string | null | undefined;
6034
+ activeTeamId?: string | null | undefined;
6035
+ };
6036
+ env: Bindings;
6037
+ headers: Headers;
6038
+ db: Database;
6039
+ environmentName: string;
6040
+ client: string;
6041
+ telemetryDisabled: boolean;
6042
+ waitUntil: (promise: Promise<unknown>) => void;
6043
+ }>, import("zod").ZodObject<{
6044
+ id: import("zod").ZodNumber;
6045
+ }, import("better-auth").$strip>, import("@orpc/server").Schema<{
6046
+ id: number;
6047
+ createdAt: number;
6048
+ updatedAt: number;
6049
+ projectId: number;
6050
+ environmentId: number;
6051
+ layoutId: string;
6052
+ description: string | null;
6053
+ livePublishedCheckpointId: number | null;
6054
+ contentUpdatedAt: number;
6055
+ }, {
6056
+ id: number;
6057
+ createdAt: number;
6058
+ updatedAt: number;
6059
+ projectId: number;
6060
+ environmentId: number;
6061
+ layoutId: string;
6062
+ description: string | null;
6063
+ livePublishedCheckpointId: number | null;
6064
+ contentUpdatedAt: number;
6065
+ }>, Record<never, never>, Record<never, never>>;
5268
6066
  };
5269
6067
  files: {
5270
6068
  list: import("@orpc/server").DecoratedProcedure<import("@orpc/server").MergedInitialContext<BaseContext & Record<never, never>, BaseContext, BaseContext>, import("@orpc/server").MergedCurrentContext<BaseContext, Record<never, never>>, import("zod").ZodObject<{
@@ -4,10 +4,23 @@
4
4
  * so we ensure there won't be any key collisions.
5
5
  */
6
6
  export type QueryKey = [first: "camox", ...rest: Array<string | number>];
7
+ /**
8
+ * Source axis on read query keys. `'live'` reads the page's live published
9
+ * checkpoint snapshot; `'draft'` reads the live editor rows. The two render
10
+ * through the same component — only the cache slot differs, so toggling the
11
+ * source select is instant once both have been seeded.
12
+ *
13
+ * Block / page-read query keys include the source as the trailing key segment.
14
+ * Omitting it on `invalidateQueries` is a prefix invalidation that hits every
15
+ * source — used for navigation events and other source-agnostic invalidations.
16
+ * Edit-time invalidations (which only touch draft data) pass `'draft'`
17
+ * explicitly so the `'live'` cache stays untouched.
18
+ */
19
+ export type ReadSource = "draft" | "live";
7
20
  export declare const queryKeys: {
8
21
  pages: {
9
22
  list: ["camox", string, string];
10
- getByPath: (path: string) => ["camox", string, string, string];
23
+ getByPath: (path: string, source?: ReadSource) => ["camox", string, string, string, ReadSource] | ["camox", string, string, string];
11
24
  getByPathAll: ["camox", string, string];
12
25
  getById: (id: number) => ["camox", string, string, number];
13
26
  };
@@ -16,7 +29,7 @@ export declare const queryKeys: {
16
29
  get: (id: number) => ["camox", string, string, number];
17
30
  };
18
31
  blocks: {
19
- get: (id: number) => ["camox", string, string, number];
32
+ get: (id: number, source?: ReadSource) => ["camox", string, string, number] | ["camox", string, string, number, ReadSource];
20
33
  getUsageCounts: ["camox", string, string];
21
34
  getPageMarkdown: (pageId: number) => ["camox", string, string, number];
22
35
  };
@@ -1,7 +1,9 @@
1
1
  export const queryKeys = {
2
2
  pages: {
3
3
  list: ["camox", "pages", "list"],
4
- getByPath: (path) => ["camox", "pages", "getByPath", path],
4
+ getByPath: (path, source) => source
5
+ ? ["camox", "pages", "getByPath", path, source]
6
+ : ["camox", "pages", "getByPath", path],
5
7
  getByPathAll: ["camox", "pages", "getByPath"],
6
8
  getById: (id) => ["camox", "pages", "getById", id],
7
9
  },
@@ -10,7 +12,7 @@ export const queryKeys = {
10
12
  get: (id) => ["camox", "files", "get", id],
11
13
  },
12
14
  blocks: {
13
- get: (id) => ["camox", "blocks", "get", id],
15
+ get: (id, source) => source ? ["camox", "blocks", "get", id, source] : ["camox", "blocks", "get", id],
14
16
  getUsageCounts: ["camox", "blocks", "getUsageCounts"],
15
17
  getPageMarkdown: (pageId) => ["camox", "blocks", "getPageMarkdown", pageId],
16
18
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camox/api-contract",
3
- "version": "0.24.1",
3
+ "version": "0.26.0",
4
4
  "files": [
5
5
  "src",
6
6
  "dist"
package/src/query-keys.ts CHANGED
@@ -6,10 +6,27 @@
6
6
  export type QueryKey = [first: "camox", ...rest: Array<string | number>];
7
7
  type QueryKeyGroup = Record<string, QueryKey | ((...args: any[]) => QueryKey)>;
8
8
 
9
+ /**
10
+ * Source axis on read query keys. `'live'` reads the page's live published
11
+ * checkpoint snapshot; `'draft'` reads the live editor rows. The two render
12
+ * through the same component — only the cache slot differs, so toggling the
13
+ * source select is instant once both have been seeded.
14
+ *
15
+ * Block / page-read query keys include the source as the trailing key segment.
16
+ * Omitting it on `invalidateQueries` is a prefix invalidation that hits every
17
+ * source — used for navigation events and other source-agnostic invalidations.
18
+ * Edit-time invalidations (which only touch draft data) pass `'draft'`
19
+ * explicitly so the `'live'` cache stays untouched.
20
+ */
21
+ export type ReadSource = "draft" | "live";
22
+
9
23
  export const queryKeys = {
10
24
  pages: {
11
25
  list: ["camox", "pages", "list"],
12
- getByPath: (path: string) => ["camox", "pages", "getByPath", path],
26
+ getByPath: (path: string, source?: ReadSource) =>
27
+ source
28
+ ? ["camox", "pages", "getByPath", path, source]
29
+ : ["camox", "pages", "getByPath", path],
13
30
  getByPathAll: ["camox", "pages", "getByPath"],
14
31
  getById: (id: number) => ["camox", "pages", "getById", id],
15
32
  },
@@ -18,7 +35,8 @@ export const queryKeys = {
18
35
  get: (id: number) => ["camox", "files", "get", id],
19
36
  },
20
37
  blocks: {
21
- get: (id: number) => ["camox", "blocks", "get", id],
38
+ get: (id: number, source?: ReadSource) =>
39
+ source ? ["camox", "blocks", "get", id, source] : ["camox", "blocks", "get", id],
22
40
  getUsageCounts: ["camox", "blocks", "getUsageCounts"],
23
41
  getPageMarkdown: (pageId: number) => ["camox", "blocks", "getPageMarkdown", pageId],
24
42
  },