@ghentcdh/crouton-api 0.0.1-alpha.75 → 0.0.1-alpha.77

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.cjs CHANGED
@@ -70,7 +70,7 @@ __export(index_exports, {
70
70
  });
71
71
  module.exports = __toCommonJS(index_exports);
72
72
 
73
- // ../../node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.58.8_@types+node@26.4.0__@swc+core@1.16.1_@swc+he_9a17c50ee76d0369ad0c28a18d209a0d/node_modules/tsup/assets/cjs_shims.js
73
+ // ../../node_modules/.pnpm/tsup@8.5.1_@swc+core@1.16.13_@swc+helpers@0.5.23__jiti@2.7.0_postcss@8.5.28_tsx@4.23.15_typescript@6.0.3_yaml@2.9.0/node_modules/tsup/assets/cjs_shims.js
74
74
  var getImportMetaUrl = /* @__PURE__ */ __name(() => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href, "getImportMetaUrl");
75
75
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
76
76
 
@@ -702,64 +702,307 @@ var LayoutSchema = import_zod8.z.object({
702
702
  });
703
703
 
704
704
  // ../crouton-core/src/lib/resource/ResourceJson.schema.ts
705
- var import_zod20 = require("zod");
705
+ var import_zod30 = require("zod");
706
706
 
707
707
  // ../crouton-core/src/lib/resource/CalculatedColumn.schema.ts
708
- var import_zod10 = require("zod");
708
+ var import_zod20 = require("zod");
709
709
 
710
710
  // ../crouton-core/src/lib/resource/FieldInput.schema.ts
711
+ var import_zod19 = require("zod");
712
+
713
+ // ../crouton-core/src/lib/resource/field-input/types/array.options.ts
714
+ var import_zod10 = require("zod");
715
+
716
+ // ../crouton-core/src/lib/resource/field-input/base.options.ts
711
717
  var import_zod9 = require("zod");
712
- var RelationType = import_zod9.z.enum([
718
+ var BaseOptionsSchema = import_zod9.z.object({
719
+ label: import_zod9.z.string().optional().describe("Override the field label"),
720
+ hideLabel: import_zod9.z.boolean().optional().describe("Hide the label"),
721
+ placeholder: import_zod9.z.string().optional(),
722
+ readonly: import_zod9.z.boolean().optional(),
723
+ colspan: import_zod9.z.number().optional(),
724
+ width: import_zod9.z.string().optional(),
725
+ styles: import_zod9.z.record(import_zod9.z.string(), import_zod9.z.unknown()).optional(),
726
+ customRender: import_zod9.z.string().optional()
727
+ }).catchall(import_zod9.z.unknown());
728
+
729
+ // ../crouton-core/src/lib/resource/field-input/types/array.options.ts
730
+ var ArrayOptionsSchema = BaseOptionsSchema.extend({
731
+ layout: import_zod10.z.enum([
732
+ "row",
733
+ "column"
734
+ ]).optional(),
735
+ elementLabelProp: import_zod10.z.string().optional(),
736
+ hideActions: import_zod10.z.boolean().optional()
737
+ });
738
+
739
+ // ../crouton-core/src/lib/resource/field-input/types/autocomplete.options.ts
740
+ var import_zod11 = require("zod");
741
+ var AutocompleteBaseSchema = BaseOptionsSchema.extend({
742
+ labelKey: import_zod11.z.string().optional(),
743
+ valueKey: import_zod11.z.string().optional(),
744
+ freeText: import_zod11.z.boolean().optional(),
745
+ enableCreate: import_zod11.z.boolean().optional(),
746
+ storeValue: import_zod11.z.boolean().optional()
747
+ });
748
+ var AutocompleteInlineOptionsSchema = AutocompleteBaseSchema.extend({
749
+ options: import_zod11.z.array(import_zod11.z.unknown()),
750
+ values: import_zod11.z.array(import_zod11.z.unknown()).optional()
751
+ });
752
+ var AutocompleteRemoteOptionsSchema = AutocompleteBaseSchema.extend({
753
+ uri: import_zod11.z.string().describe("Remote endpoint URL"),
754
+ dataField: import_zod11.z.string().optional().describe("Field in response containing the data array"),
755
+ skipAuth: import_zod11.z.boolean().optional()
756
+ });
757
+ var AutocompleteResourceOptionsSchema = AutocompleteBaseSchema.extend({
758
+ resource: import_zod11.z.string().describe("Relative path to a resource.json"),
759
+ skipAuth: import_zod11.z.boolean().optional(),
760
+ dataField: import_zod11.z.string().optional()
761
+ });
762
+ var AutocompleteOptionsSchema = import_zod11.z.union([
763
+ AutocompleteInlineOptionsSchema,
764
+ AutocompleteRemoteOptionsSchema,
765
+ AutocompleteResourceOptionsSchema,
766
+ AutocompleteBaseSchema
767
+ ]).describe("Autocomplete options: inline array, remote URI, or resource reference");
768
+
769
+ // ../crouton-core/src/lib/resource/field-input/types/boolean.options.ts
770
+ var BooleanOptionsSchema = BaseOptionsSchema.extend({});
771
+
772
+ // ../crouton-core/src/lib/resource/field-input/types/custom.options.ts
773
+ var import_zod12 = require("zod");
774
+ var CustomOptionsSchema = BaseOptionsSchema.extend({
775
+ customRender: import_zod12.z.string().optional()
776
+ }).catchall(import_zod12.z.unknown());
777
+
778
+ // ../crouton-core/src/lib/resource/field-input/types/date-range.options.ts
779
+ var import_zod13 = require("zod");
780
+ var DateRangeOptionsSchema = BaseOptionsSchema.extend({
781
+ fromLabel: import_zod13.z.string().optional().describe('Label above the start date input. Defaults to "From"'),
782
+ toLabel: import_zod13.z.string().optional().describe('Label above the end date input. Defaults to "To"'),
783
+ fromField: import_zod13.z.string().optional().describe('JSON object key for the start date. Defaults to "from"'),
784
+ toField: import_zod13.z.string().optional().describe('JSON object key for the end date. Defaults to "to"')
785
+ });
786
+
787
+ // ../crouton-core/src/lib/resource/field-input/types/date.options.ts
788
+ var import_zod14 = require("zod");
789
+ var DateOptionsSchema = BaseOptionsSchema.extend({
790
+ withTime: import_zod14.z.boolean().optional().describe("Force time input on/off, overrides format"),
791
+ min: import_zod14.z.string().optional().describe("Earliest selectable date, ISO or yyyy-MM-dd"),
792
+ max: import_zod14.z.string().optional().describe("Latest selectable date, ISO or yyyy-MM-dd"),
793
+ locale: import_zod14.z.string().optional().describe("BCP-47 locale for month heading and weekday labels").default("en-GB"),
794
+ firstDayOfWeek: import_zod14.z.number().optional().describe("0 = Sunday, 1 = Monday").default(1)
795
+ });
796
+
797
+ // ../crouton-core/src/lib/resource/field-input/types/markdown.options.ts
798
+ var import_zod15 = require("zod");
799
+ var MarkdownOptionsSchema = BaseOptionsSchema.extend({
800
+ minHeight: import_zod15.z.string().optional().describe('Minimum editor height, e.g. "200px"')
801
+ });
802
+
803
+ // ../crouton-core/src/lib/resource/field-input/types/number.options.ts
804
+ var NumberOptionsSchema = BaseOptionsSchema.extend({});
805
+
806
+ // ../crouton-core/src/lib/resource/field-input/types/relation.options.ts
807
+ var import_zod16 = require("zod");
808
+ var RelationOptionsSchema = BaseOptionsSchema.extend({
809
+ colspan: import_zod16.z.number().optional().default(12),
810
+ sort: import_zod16.z.string().optional().describe("Field to sort related records by"),
811
+ sortDir: import_zod16.z.enum([
812
+ "asc",
813
+ "desc"
814
+ ]).optional().describe("Sort direction, defaults to asc"),
815
+ direction: import_zod16.z.string().optional().describe("CSS flex direction for the button layout"),
816
+ displayKey: import_zod16.z.string().optional().describe("Key used as display label"),
817
+ resource: import_zod16.z.string().optional().describe("Path to the related resource")
818
+ }).catchall(import_zod16.z.unknown());
819
+
820
+ // ../crouton-core/src/lib/resource/field-input/types/select.options.ts
821
+ var import_zod17 = require("zod");
822
+ var SelectOptionsSchema = BaseOptionsSchema.extend({
823
+ options: import_zod17.z.array(import_zod17.z.unknown()).optional(),
824
+ values: import_zod17.z.array(import_zod17.z.unknown()).optional(),
825
+ resource: import_zod17.z.string().optional(),
826
+ labelKey: import_zod17.z.string().optional(),
827
+ valueKey: import_zod17.z.string().optional(),
828
+ uri: import_zod17.z.string().optional().describe("Remote endpoint URL for fetching options"),
829
+ dataField: import_zod17.z.string().optional().describe("Field in response containing the data array"),
830
+ clearable: import_zod17.z.boolean().optional().describe("Allow clearing the selected value"),
831
+ storeValue: import_zod17.z.boolean().optional().describe("Store option[valueKey] instead of the whole object")
832
+ });
833
+
834
+ // ../crouton-core/src/lib/resource/field-input/types/string.options.ts
835
+ var StringOptionsSchema = BaseOptionsSchema.extend({});
836
+
837
+ // ../crouton-core/src/lib/resource/field-input/types/textarea.options.ts
838
+ var TextareaOptionsSchema = BaseOptionsSchema.extend({});
839
+
840
+ // ../crouton-core/src/lib/resource/field-input/types/toggle.options.ts
841
+ var import_zod18 = require("zod");
842
+ var ToggleOptionsSchema = BaseOptionsSchema.extend({
843
+ options: import_zod18.z.array(import_zod18.z.unknown()).optional(),
844
+ values: import_zod18.z.array(import_zod18.z.unknown()).optional(),
845
+ labelKey: import_zod18.z.string().optional(),
846
+ valueKey: import_zod18.z.string().optional(),
847
+ storeValue: import_zod18.z.boolean().optional().describe("Store option[valueKey] instead of the whole object"),
848
+ clearable: import_zod18.z.boolean().optional().describe("Clicking active button clears the value").default(true),
849
+ color: import_zod18.z.string().optional().describe("Btn color for the active button").default("primary"),
850
+ size: import_zod18.z.string().optional().describe("Btn size").default("sm")
851
+ });
852
+
853
+ // ../crouton-core/src/lib/resource/field-input/registry.ts
854
+ var fieldInputRegistry = /* @__PURE__ */ new Map([
855
+ [
856
+ "string",
857
+ {
858
+ options: StringOptionsSchema,
859
+ schemaFile: "string"
860
+ }
861
+ ],
862
+ [
863
+ "number",
864
+ {
865
+ options: NumberOptionsSchema,
866
+ schemaFile: "number"
867
+ }
868
+ ],
869
+ [
870
+ "Integer",
871
+ {
872
+ options: NumberOptionsSchema,
873
+ schemaFile: "number"
874
+ }
875
+ ],
876
+ [
877
+ "textarea",
878
+ {
879
+ options: TextareaOptionsSchema,
880
+ schemaFile: "textarea"
881
+ }
882
+ ],
883
+ [
884
+ "markdown",
885
+ {
886
+ options: MarkdownOptionsSchema,
887
+ schemaFile: "markdown"
888
+ }
889
+ ],
890
+ [
891
+ "boolean",
892
+ {
893
+ options: BooleanOptionsSchema,
894
+ schemaFile: "boolean"
895
+ }
896
+ ],
897
+ [
898
+ "toggle",
899
+ {
900
+ options: ToggleOptionsSchema,
901
+ schemaFile: "toggle"
902
+ }
903
+ ],
904
+ [
905
+ "select",
906
+ {
907
+ options: SelectOptionsSchema,
908
+ schemaFile: "select"
909
+ }
910
+ ],
911
+ [
912
+ "mutliSelect",
913
+ {
914
+ options: SelectOptionsSchema,
915
+ schemaFile: "select"
916
+ }
917
+ ],
918
+ [
919
+ "autocomplete",
920
+ {
921
+ options: AutocompleteOptionsSchema,
922
+ schemaFile: "autocomplete"
923
+ }
924
+ ],
925
+ [
926
+ "date",
927
+ {
928
+ options: DateOptionsSchema,
929
+ schemaFile: "date"
930
+ }
931
+ ],
932
+ [
933
+ "dateTime",
934
+ {
935
+ options: DateOptionsSchema,
936
+ schemaFile: "date"
937
+ }
938
+ ],
939
+ [
940
+ "date-range",
941
+ {
942
+ options: DateRangeOptionsSchema,
943
+ schemaFile: "date-range"
944
+ }
945
+ ],
946
+ [
947
+ "relation",
948
+ {
949
+ options: RelationOptionsSchema,
950
+ schemaFile: "relation"
951
+ }
952
+ ],
953
+ [
954
+ "array",
955
+ {
956
+ options: ArrayOptionsSchema,
957
+ schemaFile: "array"
958
+ }
959
+ ],
960
+ [
961
+ "custom",
962
+ {
963
+ options: CustomOptionsSchema,
964
+ schemaFile: "custom"
965
+ }
966
+ ]
967
+ ]);
968
+
969
+ // ../crouton-core/src/lib/resource/FieldInput.schema.ts
970
+ var RelationType = import_zod19.z.enum([
713
971
  "oneToOne",
714
972
  "manyToOne",
715
973
  "oneToMany",
716
974
  "manyToMany"
717
975
  ]);
718
- var DetailControlSchema = import_zod9.z.object({
719
- property: import_zod9.z.string(),
720
- type: import_zod9.z.string().optional(),
721
- options: import_zod9.z.record(import_zod9.z.string(), import_zod9.z.unknown()).optional(),
722
- hideLabel: import_zod9.z.boolean().optional(),
723
- width: import_zod9.z.string().optional()
976
+ var DetailControlSchema = import_zod19.z.object({
977
+ property: import_zod19.z.string(),
978
+ type: import_zod19.z.string().optional(),
979
+ options: import_zod19.z.record(import_zod19.z.string(), import_zod19.z.unknown()).optional(),
980
+ hideLabel: import_zod19.z.boolean().optional(),
981
+ width: import_zod19.z.string().optional()
724
982
  });
725
- var DetailConfigSchema = import_zod9.z.object({
726
- layout: import_zod9.z.enum([
983
+ var DetailConfigSchema = import_zod19.z.object({
984
+ layout: import_zod19.z.enum([
727
985
  "collapse",
728
986
  "row"
729
987
  ]),
730
- titleKey: import_zod9.z.string().optional(),
731
- controls: import_zod9.z.array(DetailControlSchema)
988
+ titleKey: import_zod19.z.string().optional(),
989
+ controls: import_zod19.z.array(DetailControlSchema)
732
990
  });
733
- var RelationFieldInputOptionsSchema = import_zod9.z.object({
734
- colspan: import_zod9.z.number().optional().default(12),
735
- /** Field to sort related records by, e.g. `"title"` or `"author.name"`. */
736
- sort: import_zod9.z.string().optional(),
737
- /** Sort direction. Defaults to `"asc"` when omitted. */
738
- sortDir: import_zod9.z.enum([
739
- "asc",
740
- "desc"
741
- ]).optional(),
742
- /** CSS flex direction for the relation control button layout. */
743
- direction: import_zod9.z.string().optional(),
744
- /** Key used as the display label in the relation control. */
745
- displayKey: import_zod9.z.string().optional(),
746
- /** Path to the related resource (resolved to a URI at load time). */
747
- resource: import_zod9.z.string().optional()
748
- }).catchall(import_zod9.z.unknown());
749
- var FieldInputSchema = import_zod9.z.object({
750
- type: import_zod9.z.string().optional(),
751
- customRender: import_zod9.z.string().optional(),
991
+ var FieldInputSchema = import_zod19.z.object({
992
+ $schema: import_zod19.z.string().optional(),
993
+ type: import_zod19.z.string().optional(),
994
+ customRender: import_zod19.z.string().optional(),
752
995
  /**
753
996
  * Render format hint for the frontend (e.g. `"relation"` for sub-resource
754
997
  * relations). When `format` is `"relation"`, `resource` must also be set.
755
998
  */
756
- format: import_zod9.z.string().optional(),
999
+ format: import_zod19.z.string().optional(),
757
1000
  /**
758
1001
  * Relative path to the child resource definition, e.g. `"./author.resource"`.
759
1002
  * Only used when `format` is `"relation"`. Resolved at load time to inject
760
1003
  * sub-resource URIs into `options`.
761
1004
  */
762
- resource: import_zod9.z.string().optional(),
1005
+ resource: import_zod19.z.string().optional(),
763
1006
  /**
764
1007
  * Cardinality of the relation. Used by the frontend to determine the correct
765
1008
  * renderer and behaviour (e.g. single-select vs multi-select).
@@ -768,11 +1011,11 @@ var FieldInputSchema = import_zod9.z.object({
768
1011
  */
769
1012
  relationType: RelationType.optional(),
770
1013
  /** FK field on the child model pointing back to the parent, e.g. `"workId"`. Defaults to `${parentModel}Id`. */
771
- foreignKey: import_zod9.z.string().optional(),
1014
+ foreignKey: import_zod19.z.string().optional(),
772
1015
  /** Override the Prisma relation field name when it differs from the column id. */
773
- relation: import_zod9.z.string().optional(),
1016
+ relation: import_zod19.z.string().optional(),
774
1017
  /** Override the display order in form views. Lower values come first. */
775
- position: import_zod9.z.number().optional(),
1018
+ position: import_zod19.z.number().optional(),
776
1019
  /**
777
1020
  * Value to pre-fill this field with on the create form. Injected into the
778
1021
  * generated form view's JSON Schema as `properties[id].default`, which
@@ -785,14 +1028,24 @@ var FieldInputSchema = import_zod9.z.object({
785
1028
  * - `"$today"` — current date ISO string (date only, e.g. `"2025-03-14"`)
786
1029
  * - `"$user"` — current user object (requires `defaults: { '$user': ... }` on `CroutonPlugin` config, or `useCrouton().setDefault('$user', ...)`)
787
1030
  */
788
- defaultValue: import_zod9.z.unknown().optional(),
789
- options: import_zod9.z.union([
790
- RelationFieldInputOptionsSchema,
791
- import_zod9.z.unknown()
1031
+ defaultValue: import_zod19.z.unknown().optional(),
1032
+ options: import_zod19.z.union([
1033
+ RelationOptionsSchema,
1034
+ import_zod19.z.unknown()
792
1035
  ]).optional(),
793
1036
  /** Nested array detail layout (renders via `detailFixed`). */
794
1037
  detail: DetailConfigSchema.optional()
795
1038
  });
1039
+ var parseFieldInputOptions = /* @__PURE__ */ __name((fi) => {
1040
+ if (!fi.type || fi.options == null) return fi;
1041
+ const def2 = fieldInputRegistry.get(fi.type);
1042
+ if (!def2) return fi;
1043
+ const result = def2.options.safeParse(fi.options);
1044
+ return result.success ? {
1045
+ ...fi,
1046
+ options: result.data
1047
+ } : fi;
1048
+ }, "parseFieldInputOptions");
796
1049
  var FieldVariantSchema = FieldInputSchema;
797
1050
  var stripNull = /* @__PURE__ */ __name((obj) => {
798
1051
  const out = {};
@@ -829,16 +1082,16 @@ var normalizeLabel = /* @__PURE__ */ __name((obj) => {
829
1082
  }, "normalizeLabel");
830
1083
 
831
1084
  // ../crouton-core/src/lib/resource/CalculatedColumn.schema.ts
832
- var CalculatedColumnSchema = import_zod10.z.object({
1085
+ var CalculatedColumnSchema = import_zod20.z.object({
833
1086
  /** Column identifier used in the response payload and UI schema. */
834
- id: import_zod10.z.string(),
1087
+ id: import_zod20.z.string(),
835
1088
  /** SQL alias — must match `id`. */
836
- alias: import_zod10.z.string(),
1089
+ alias: import_zod20.z.string(),
837
1090
  /** Human-readable label shown in the table header. */
838
- label: import_zod10.z.string().optional(),
839
- sqlExpression: import_zod10.z.string(),
1091
+ label: import_zod20.z.string().optional(),
1092
+ sqlExpression: import_zod20.z.string(),
840
1093
  /** JSON schema / cast type for the computed value. Defaults to `"number"`. `"string"` skips CAST. */
841
- type: import_zod10.z.enum([
1094
+ type: import_zod20.z.enum([
842
1095
  "number",
843
1096
  "boolean",
844
1097
  "string"
@@ -849,9 +1102,9 @@ var CalculatedColumnSchema = import_zod10.z.object({
849
1102
  * `position: N` places this column before the element currently at index N.
850
1103
  * Can also be set via `fieldInput.position` (takes precedence).
851
1104
  */
852
- position: import_zod10.z.number().optional(),
853
- hiddenInTable: import_zod10.z.boolean().optional(),
854
- hiddenInView: import_zod10.z.boolean().optional(),
1105
+ position: import_zod20.z.number().optional(),
1106
+ hiddenInTable: import_zod20.z.boolean().optional(),
1107
+ hiddenInView: import_zod20.z.boolean().optional(),
855
1108
  /**
856
1109
  * Field input options for rendering in form / view schemas.
857
1110
  * Supports `colspan`, `format`, and any other options passed to the Control renderer.
@@ -861,11 +1114,11 @@ var CalculatedColumnSchema = import_zod10.z.object({
861
1114
  }).transform(normalizeLabel);
862
1115
 
863
1116
  // ../crouton-core/src/lib/resource/Column.ts
864
- var import_zod12 = require("zod");
1117
+ var import_zod22 = require("zod");
865
1118
 
866
1119
  // ../crouton-core/src/lib/resource/ColumnType.schema.ts
867
- var import_zod11 = require("zod");
868
- var ColumnTypeShorthandSchema = import_zod11.z.enum([
1120
+ var import_zod21 = require("zod");
1121
+ var ColumnTypeShorthandSchema = import_zod21.z.enum([
869
1122
  "string",
870
1123
  "number",
871
1124
  "integer",
@@ -875,36 +1128,36 @@ var ColumnTypeShorthandSchema = import_zod11.z.enum([
875
1128
  "object",
876
1129
  "array"
877
1130
  ]);
878
- var JsonSchemaFragmentSchema = import_zod11.z.lazy(() => import_zod11.z.object({
879
- type: import_zod11.z.union([
880
- import_zod11.z.string(),
881
- import_zod11.z.array(import_zod11.z.string()),
882
- import_zod11.z.lazy(() => JsonSchemaFragmentSchema)
1131
+ var JsonSchemaFragmentSchema = import_zod21.z.lazy(() => import_zod21.z.object({
1132
+ type: import_zod21.z.union([
1133
+ import_zod21.z.string(),
1134
+ import_zod21.z.array(import_zod21.z.string()),
1135
+ import_zod21.z.lazy(() => JsonSchemaFragmentSchema)
883
1136
  ]).optional(),
884
- format: import_zod11.z.string().optional(),
885
- enum: import_zod11.z.array(import_zod11.z.unknown()).optional(),
886
- const: import_zod11.z.unknown().optional(),
887
- nullable: import_zod11.z.boolean().optional(),
888
- properties: import_zod11.z.record(import_zod11.z.string(), JsonSchemaFragmentSchema).optional(),
889
- required: import_zod11.z.union([
890
- import_zod11.z.array(import_zod11.z.string()),
891
- import_zod11.z.boolean()
1137
+ format: import_zod21.z.string().optional(),
1138
+ enum: import_zod21.z.array(import_zod21.z.unknown()).optional(),
1139
+ const: import_zod21.z.unknown().optional(),
1140
+ nullable: import_zod21.z.boolean().optional(),
1141
+ properties: import_zod21.z.record(import_zod21.z.string(), JsonSchemaFragmentSchema).optional(),
1142
+ required: import_zod21.z.union([
1143
+ import_zod21.z.array(import_zod21.z.string()),
1144
+ import_zod21.z.boolean()
892
1145
  ]).optional(),
893
1146
  items: JsonSchemaFragmentSchema.optional(),
894
- additionalProperties: import_zod11.z.union([
895
- import_zod11.z.boolean(),
1147
+ additionalProperties: import_zod21.z.union([
1148
+ import_zod21.z.boolean(),
896
1149
  JsonSchemaFragmentSchema
897
1150
  ]).optional(),
898
- title: import_zod11.z.string().optional(),
899
- description: import_zod11.z.string().optional(),
900
- default: import_zod11.z.unknown().optional(),
901
- minimum: import_zod11.z.number().optional(),
902
- maximum: import_zod11.z.number().optional(),
903
- minLength: import_zod11.z.number().optional(),
904
- maxLength: import_zod11.z.number().optional(),
905
- pattern: import_zod11.z.string().optional()
906
- }).catchall(import_zod11.z.unknown()));
907
- var ColumnTypeSchema = import_zod11.z.union([
1151
+ title: import_zod21.z.string().optional(),
1152
+ description: import_zod21.z.string().optional(),
1153
+ default: import_zod21.z.unknown().optional(),
1154
+ minimum: import_zod21.z.number().optional(),
1155
+ maximum: import_zod21.z.number().optional(),
1156
+ minLength: import_zod21.z.number().optional(),
1157
+ maxLength: import_zod21.z.number().optional(),
1158
+ pattern: import_zod21.z.string().optional()
1159
+ }).catchall(import_zod21.z.unknown()));
1160
+ var ColumnTypeSchema = import_zod21.z.union([
908
1161
  ColumnTypeShorthandSchema,
909
1162
  JsonSchemaFragmentSchema
910
1163
  ]);
@@ -1008,40 +1261,40 @@ var isObjectColumnType = /* @__PURE__ */ __name((type) => columnTypeName(type) =
1008
1261
  var isArrayColumnType = /* @__PURE__ */ __name((type) => columnTypeName(type) === "array", "isArrayColumnType");
1009
1262
 
1010
1263
  // ../crouton-core/src/lib/resource/Column.ts
1011
- var WhenConditionSchema = import_zod12.z.object({
1012
- field: import_zod12.z.string(),
1013
- eq: import_zod12.z.unknown().optional(),
1014
- neq: import_zod12.z.unknown().optional(),
1015
- exists: import_zod12.z.boolean().optional(),
1016
- notExists: import_zod12.z.boolean().optional()
1264
+ var WhenConditionSchema = import_zod22.z.object({
1265
+ field: import_zod22.z.string(),
1266
+ eq: import_zod22.z.unknown().optional(),
1267
+ neq: import_zod22.z.unknown().optional(),
1268
+ exists: import_zod22.z.boolean().optional(),
1269
+ notExists: import_zod22.z.boolean().optional()
1017
1270
  });
1018
- var JsonColumnSchema = import_zod12.z.object({
1019
- id: import_zod12.z.string(),
1020
- column: import_zod12.z.string().optional(),
1021
- label: import_zod12.z.string().optional(),
1022
- hiddenInTable: import_zod12.z.boolean().default(false),
1023
- hiddenInForm: import_zod12.z.boolean().default(false),
1024
- hiddenInView: import_zod12.z.boolean().default(false),
1025
- sortable: import_zod12.z.boolean().default(false),
1026
- defaultSort: import_zod12.z.boolean().default(false),
1027
- searchable: import_zod12.z.boolean().default(false),
1028
- filterable: import_zod12.z.boolean().default(false),
1029
- createable: import_zod12.z.boolean().default(true),
1030
- updateable: import_zod12.z.boolean().default(true),
1031
- hideLabel: import_zod12.z.boolean().default(false),
1271
+ var JsonColumnSchema = import_zod22.z.object({
1272
+ id: import_zod22.z.string(),
1273
+ column: import_zod22.z.string().optional(),
1274
+ label: import_zod22.z.string().optional(),
1275
+ hiddenInTable: import_zod22.z.boolean().default(false),
1276
+ hiddenInForm: import_zod22.z.boolean().default(false),
1277
+ hiddenInView: import_zod22.z.boolean().default(false),
1278
+ sortable: import_zod22.z.boolean().default(false),
1279
+ defaultSort: import_zod22.z.boolean().default(false),
1280
+ searchable: import_zod22.z.boolean().default(false),
1281
+ filterable: import_zod22.z.boolean().default(false),
1282
+ createable: import_zod22.z.boolean().default(true),
1283
+ updateable: import_zod22.z.boolean().default(true),
1284
+ hideLabel: import_zod22.z.boolean().default(false),
1032
1285
  showWhen: WhenConditionSchema.optional(),
1033
1286
  hideWhen: WhenConditionSchema.optional(),
1034
1287
  disabledWhen: WhenConditionSchema.optional(),
1035
- displayKey: import_zod12.z.string().optional(),
1036
- sortId: import_zod12.z.string().optional(),
1288
+ displayKey: import_zod22.z.string().optional(),
1289
+ sortId: import_zod22.z.string().optional(),
1037
1290
  /**
1038
1291
  * Name of a shared enum in the project enum registry (`crouton.enums.json`).
1039
1292
  * At load time the loader injects that enum's `{ value, label }[]` into
1040
1293
  * `fieldInput.options.values`, so columns don't duplicate the option list.
1041
1294
  */
1042
- enum: import_zod12.z.string().optional(),
1043
- idField: import_zod12.z.boolean().default(false),
1044
- showInLookup: import_zod12.z.boolean().default(false),
1295
+ enum: import_zod22.z.string().optional(),
1296
+ idField: import_zod22.z.boolean().default(false),
1297
+ showInLookup: import_zod22.z.boolean().default(false),
1045
1298
  /**
1046
1299
  * Data type of the column, as a shorthand name (`"string"`, `"integer"`, …)
1047
1300
  * or a full JSON Schema fragment:
@@ -1072,12 +1325,12 @@ var JsonColumnSchema = import_zod12.z.object({
1072
1325
  * Ignored on the id column and on columns that are neither createable nor
1073
1326
  * updateable, since the form cannot supply a value for those.
1074
1327
  */
1075
- required: import_zod12.z.boolean().optional(),
1328
+ required: import_zod22.z.boolean().optional(),
1076
1329
  /**
1077
1330
  * @deprecated Use `type` instead. Retained because it is still consumed by
1078
1331
  * the boolean predicate and the schema-less sub-resource view builder.
1079
1332
  */
1080
- columnType: import_zod12.z.string().default("string"),
1333
+ columnType: import_zod22.z.string().default("string"),
1081
1334
  fieldInput: FieldInputSchema.optional(),
1082
1335
  /**
1083
1336
  * Optional per-context override for the read-only VIEW ui. Same shape as
@@ -1101,27 +1354,27 @@ var JsonColumnSchema = import_zod12.z.object({
1101
1354
  * Visibility (`hiddenInTable/Form/View`) on this column is inherited by all sub-columns as a
1102
1355
  * default; the referenced resource's own column visibility further restricts it.
1103
1356
  */
1104
- extend: import_zod12.z.string().optional(),
1357
+ extend: import_zod22.z.string().optional(),
1105
1358
  /**
1106
1359
  * Per-sub-column overrides when using `extend`.
1107
1360
  * Key: the virtual column id (`"{extendId}_{refColId}"`) or just the referenced column id.
1108
1361
  * Value: any `JsonColumn` fields to merge over the generated virtual column.
1109
1362
  */
1110
- columns: import_zod12.z.record(import_zod12.z.string(), import_zod12.z.record(import_zod12.z.string(), import_zod12.z.unknown())).optional()
1363
+ columns: import_zod22.z.record(import_zod22.z.string(), import_zod22.z.record(import_zod22.z.string(), import_zod22.z.unknown())).optional()
1111
1364
  });
1112
1365
 
1113
1366
  // ../crouton-core/src/lib/resource/ParentRef.schema.ts
1114
- var import_zod13 = require("zod");
1115
- var ParentRefSchema = import_zod13.z.object({
1367
+ var import_zod23 = require("zod");
1368
+ var ParentRefSchema = import_zod23.z.object({
1116
1369
  /** Route segment of the parent, e.g. `"group"`. */
1117
- route: import_zod13.z.string(),
1370
+ route: import_zod23.z.string(),
1118
1371
  /**
1119
1372
  * Name of the path parameter carrying the parent id, e.g. `"groupId"`.
1120
1373
  * Avoid `"id"` — that is the child's own id in `/:id` routes.
1121
1374
  */
1122
- param: import_zod13.z.string().default("parentId"),
1375
+ param: import_zod23.z.string().default("parentId"),
1123
1376
  /** Type of the parent id, used to coerce the path param. Defaults to `'string'`. */
1124
- idType: import_zod13.z.enum([
1377
+ idType: import_zod23.z.enum([
1125
1378
  "string",
1126
1379
  "number"
1127
1380
  ]).optional()
@@ -1129,37 +1382,37 @@ var ParentRefSchema = import_zod13.z.object({
1129
1382
  var resourceControllerPath = /* @__PURE__ */ __name((route, parent) => parent ? `${parent.route}/:${parent.param}/${route}` : route, "resourceControllerPath");
1130
1383
 
1131
1384
  // ../crouton-core/src/lib/resource/ResourceKind.ts
1132
- var import_zod14 = require("zod");
1133
- var ResourceKindSchema = import_zod14.z.enum([
1385
+ var import_zod24 = require("zod");
1386
+ var ResourceKindSchema = import_zod24.z.enum([
1134
1387
  "prisma",
1135
1388
  "custom"
1136
1389
  ]).default("prisma");
1137
1390
 
1138
1391
  // ../crouton-core/src/lib/resource/Sidebar.schema.ts
1139
- var import_zod15 = __toESM(require("zod"), 1);
1140
- var SidebarGroupSchema = import_zod15.default.object({
1392
+ var import_zod25 = __toESM(require("zod"), 1);
1393
+ var SidebarGroupSchema = import_zod25.default.object({
1141
1394
  /** Human-readable heading shown in the sidebar. Defaults to a title-cased version of the slug. */
1142
- label: import_zod15.default.string().optional(),
1395
+ label: import_zod25.default.string().optional(),
1143
1396
  /** Controls the order of this group among top-level sidebar items. */
1144
- position: import_zod15.default.number().optional()
1397
+ position: import_zod25.default.number().optional()
1145
1398
  });
1146
- var SidebarSchema = import_zod15.default.object({
1147
- hide: import_zod15.default.boolean().default(false),
1148
- position: import_zod15.default.number().optional(),
1149
- label: import_zod15.default.string().optional(),
1399
+ var SidebarSchema = import_zod25.default.object({
1400
+ hide: import_zod25.default.boolean().default(false),
1401
+ position: import_zod25.default.number().optional(),
1402
+ label: import_zod25.default.string().optional(),
1150
1403
  /**
1151
1404
  * Slug of the group this resource belongs to.
1152
1405
  * Must match a key in `sidebarGroups` in `crouton.json`.
1153
1406
  * Resources with the same `group` are nested under a shared collapsible section.
1154
1407
  */
1155
- group: import_zod15.default.string().optional()
1408
+ group: import_zod25.default.string().optional()
1156
1409
  });
1157
1410
 
1158
1411
  // ../crouton-core/src/lib/resource/TableAction.schema.ts
1159
- var import_zod16 = require("zod");
1160
- var ActionConditionSchema = import_zod16.z.object({
1412
+ var import_zod26 = require("zod");
1413
+ var ActionConditionSchema = import_zod26.z.object({
1161
1414
  /** Row field to evaluate. */
1162
- field: import_zod16.z.string(),
1415
+ field: import_zod26.z.string(),
1163
1416
  /**
1164
1417
  * Comparison operator. Defaults to `"eq"`.
1165
1418
  * - `eq` / `neq` — strict equality
@@ -1167,7 +1420,7 @@ var ActionConditionSchema = import_zod16.z.object({
1167
1420
  * - `exists` — field is not null / undefined / empty string
1168
1421
  * - `notExists` — field is null / undefined / empty string
1169
1422
  */
1170
- op: import_zod16.z.enum([
1423
+ op: import_zod26.z.enum([
1171
1424
  "eq",
1172
1425
  "neq",
1173
1426
  "gt",
@@ -1178,38 +1431,38 @@ var ActionConditionSchema = import_zod16.z.object({
1178
1431
  "notExists"
1179
1432
  ]).default("eq"),
1180
1433
  /** Comparison value. Not required for `exists` / `notExists`. */
1181
- value: import_zod16.z.unknown().optional()
1434
+ value: import_zod26.z.unknown().optional()
1182
1435
  });
1183
- var ActionSchema = import_zod16.z.object({
1184
- type: import_zod16.z.string(),
1436
+ var ActionSchema = import_zod26.z.object({
1437
+ type: import_zod26.z.string(),
1185
1438
  /** Unique identifier for the action. */
1186
- id: import_zod16.z.string(),
1439
+ id: import_zod26.z.string(),
1187
1440
  /** Human-readable button label. */
1188
- label: import_zod16.z.string(),
1441
+ label: import_zod26.z.string(),
1189
1442
  /** MDI icon name, e.g. `"mdi:open-in-new"`. */
1190
- icon: import_zod16.z.string().optional(),
1443
+ icon: import_zod26.z.string().optional(),
1191
1444
  /** Tooltip text. Falls back to `label` when omitted. */
1192
- tooltip: import_zod16.z.string().optional(),
1445
+ tooltip: import_zod26.z.string().optional(),
1193
1446
  condition: ActionConditionSchema.optional()
1194
1447
  });
1195
1448
  var JsonProcedureActionSchema = ActionSchema.extend({
1196
- type: import_zod16.z.literal("procedure").default("procedure"),
1449
+ type: import_zod26.z.literal("procedure").default("procedure"),
1197
1450
  /**
1198
1451
  * Filename (without extension) inside the resource's `actions/` directory
1199
1452
  * that exports the table-action procedure, e.g. `"syncZotero"`.
1200
1453
  */
1201
- procedure: import_zod16.z.string(),
1454
+ procedure: import_zod26.z.string(),
1202
1455
  /** HTTP method for the frontend. Defaults to `"post"`. */
1203
- method: import_zod16.z.string().optional().default("post"),
1456
+ method: import_zod26.z.string().optional().default("post"),
1204
1457
  /** Static query / body params passed to the endpoint. */
1205
- data: import_zod16.z.record(import_zod16.z.string(), import_zod16.z.unknown()).optional()
1458
+ data: import_zod26.z.record(import_zod26.z.string(), import_zod26.z.unknown()).optional()
1206
1459
  });
1207
1460
  var JsonLinkActionSchema = ActionSchema.extend({
1208
1461
  /** Optional condition evaluated per row. Button is hidden when the condition is false. */
1209
- type: import_zod16.z.literal("link").default("link"),
1462
+ type: import_zod26.z.literal("link").default("link"),
1210
1463
  /** URL to open. May contain `{env.VAR}` placeholders. */
1211
- href: import_zod16.z.string(),
1212
- blank: import_zod16.z.boolean().optional().default(true)
1464
+ href: import_zod26.z.string(),
1465
+ blank: import_zod26.z.boolean().optional().default(true)
1213
1466
  });
1214
1467
  var transformAction = /* @__PURE__ */ __name((action) => {
1215
1468
  const label = action.label;
@@ -1218,7 +1471,7 @@ var transformAction = /* @__PURE__ */ __name((action) => {
1218
1471
  ...action
1219
1472
  };
1220
1473
  }, "transformAction");
1221
- var JsonActionSchema = import_zod16.z.union([
1474
+ var JsonActionSchema = import_zod26.z.union([
1222
1475
  JsonProcedureActionSchema,
1223
1476
  JsonLinkActionSchema
1224
1477
  ]).transform(transformAction);
@@ -1260,14 +1513,14 @@ var registerResourceExtensions = /* @__PURE__ */ __name((map = {}) => Object.ent
1260
1513
  var getResourceExtensions = /* @__PURE__ */ __name(() => registry, "getResourceExtensions");
1261
1514
 
1262
1515
  // ../crouton-core/src/lib/resource/include.schema.ts
1263
- var import_zod17 = require("zod");
1264
- var JsonIncludeEntrySchema = import_zod17.z.lazy(() => import_zod17.z.union([
1265
- import_zod17.z.string(),
1266
- import_zod17.z.object({
1267
- relation: import_zod17.z.string(),
1268
- include: import_zod17.z.array(JsonIncludeEntrySchema).optional(),
1516
+ var import_zod27 = require("zod");
1517
+ var JsonIncludeEntrySchema = import_zod27.z.lazy(() => import_zod27.z.union([
1518
+ import_zod27.z.string(),
1519
+ import_zod27.z.object({
1520
+ relation: import_zod27.z.string(),
1521
+ include: import_zod27.z.array(JsonIncludeEntrySchema).optional(),
1269
1522
  /** Prisma-format orderBy clause applied to the included records. */
1270
- orderBy: import_zod17.z.record(import_zod17.z.string(), import_zod17.z.unknown()).optional()
1523
+ orderBy: import_zod27.z.record(import_zod27.z.string(), import_zod27.z.unknown()).optional()
1271
1524
  })
1272
1525
  ]));
1273
1526
 
@@ -1276,36 +1529,36 @@ var BASELINE_RESOURCE_VERSION = 1;
1276
1529
  var CURRENT_RESOURCE_VERSION = 1;
1277
1530
 
1278
1531
  // ../crouton-core/src/lib/data-source/Operations.schema.ts
1279
- var import_zod19 = require("zod");
1532
+ var import_zod29 = require("zod");
1280
1533
 
1281
1534
  // ../crouton-core/src/lib/data-source/Security.schema.ts
1282
- var import_zod18 = require("zod");
1283
- var SecuritySchema = import_zod18.z.union([
1284
- import_zod18.z.object({
1285
- public: import_zod18.z.literal(true)
1535
+ var import_zod28 = require("zod");
1536
+ var SecuritySchema = import_zod28.z.union([
1537
+ import_zod28.z.object({
1538
+ public: import_zod28.z.literal(true)
1286
1539
  }),
1287
- import_zod18.z.object({
1288
- guard: import_zod18.z.union([
1289
- import_zod18.z.string(),
1290
- import_zod18.z.array(import_zod18.z.string()).min(1)
1540
+ import_zod28.z.object({
1541
+ guard: import_zod28.z.union([
1542
+ import_zod28.z.string(),
1543
+ import_zod28.z.array(import_zod28.z.string()).min(1)
1291
1544
  ])
1292
1545
  })
1293
1546
  ]);
1294
1547
 
1295
1548
  // ../crouton-core/src/lib/data-source/Operations.schema.ts
1296
- var ExternalOpEntry = import_zod19.z.object({
1297
- uri: import_zod19.z.string(),
1298
- method: import_zod19.z.string().optional(),
1549
+ var ExternalOpEntry = import_zod29.z.object({
1550
+ uri: import_zod29.z.string(),
1551
+ method: import_zod29.z.string().optional(),
1299
1552
  security: SecuritySchema.optional()
1300
1553
  });
1301
- var OpEntry = import_zod19.z.union([
1302
- import_zod19.z.boolean(),
1554
+ var OpEntry = import_zod29.z.union([
1555
+ import_zod29.z.boolean(),
1303
1556
  ExternalOpEntry,
1304
- import_zod19.z.object({
1557
+ import_zod29.z.object({
1305
1558
  security: SecuritySchema.optional()
1306
1559
  })
1307
1560
  ]);
1308
- var JsonOperationsSchema = import_zod19.z.object({
1561
+ var JsonOperationsSchema = import_zod29.z.object({
1309
1562
  findAll: OpEntry.default(true),
1310
1563
  findOne: OpEntry.default(true),
1311
1564
  create: OpEntry.default(true),
@@ -1357,16 +1610,16 @@ var buildSubResourceOperations = /* @__PURE__ */ __name((ops, baseUri, idField =
1357
1610
  }, "buildSubResourceOperations");
1358
1611
 
1359
1612
  // ../crouton-core/src/lib/resource/ResourceJson.schema.ts
1360
- var JsonColumnsMapSchema = import_zod20.z.record(import_zod20.z.string(), JsonColumnSchema.omit({
1613
+ var JsonColumnsMapSchema = import_zod30.z.record(import_zod30.z.string(), JsonColumnSchema.omit({
1361
1614
  id: true
1362
- }).catchall(import_zod20.z.unknown()));
1615
+ }).catchall(import_zod30.z.unknown()));
1363
1616
  var ColumnsSchema = JsonColumnsMapSchema;
1364
- var JsonDisplaySchema = import_zod20.z.object({
1365
- mode: import_zod20.z.enum([
1617
+ var JsonDisplaySchema = import_zod30.z.object({
1618
+ mode: import_zod30.z.enum([
1366
1619
  "page",
1367
1620
  "modal"
1368
1621
  ]).default("modal"),
1369
- customComponent: import_zod20.z.string().nullable().optional().default(null)
1622
+ customComponent: import_zod30.z.string().nullable().optional().default(null)
1370
1623
  });
1371
1624
  var normalizeColumns = /* @__PURE__ */ __name((columns) => {
1372
1625
  if (!columns) return void 0;
@@ -1379,47 +1632,47 @@ var normalizeColumns = /* @__PURE__ */ __name((columns) => {
1379
1632
  label: col.label ?? labelFromId(col.id)
1380
1633
  }));
1381
1634
  }, "normalizeColumns");
1382
- var ResourceJsonShape = import_zod20.z.object({
1635
+ var ResourceJsonShape = import_zod30.z.object({
1383
1636
  /**
1384
1637
  * URL of the generated JSON Schema, for editor autocomplete/validation. Declared so the
1385
1638
  * key is *allowed* (not stripped, and not flagged by the very schema it points at).
1386
1639
  * Ignored at runtime.
1387
1640
  */
1388
- $schema: import_zod20.z.string().optional(),
1641
+ $schema: import_zod30.z.string().optional(),
1389
1642
  /**
1390
1643
  * resource.json shape version. Missing ⇒ baseline (see `./version`). Auto-migrated
1391
1644
  * toward `CURRENT_RESOURCE_VERSION` on load in the dev environment.
1392
1645
  */
1393
- schemaVersion: import_zod20.z.number().int().positive().optional(),
1646
+ schemaVersion: import_zod30.z.number().int().positive().optional(),
1394
1647
  /** When `true`, the resource lives in the repo but is NOT loaded/served (work in progress). */
1395
- draft: import_zod20.z.boolean().optional().default(false),
1648
+ draft: import_zod30.z.boolean().optional().default(false),
1396
1649
  /**
1397
1650
  * Where the data comes from. `prisma` (the default) is backed by a Prisma
1398
1651
  * model plus a `schema.ts`; `custom` is configuration only and the developer
1399
1652
  * supplies a `repository.ts`. See `./ResourceKind`.
1400
1653
  */
1401
1654
  kind: ResourceKindSchema,
1402
- name: import_zod20.z.string(),
1403
- route: import_zod20.z.string().optional(),
1404
- id: import_zod20.z.string().optional(),
1655
+ name: import_zod30.z.string(),
1656
+ route: import_zod30.z.string().optional(),
1657
+ id: import_zod30.z.string().optional(),
1405
1658
  /**
1406
1659
  * Prisma model name. Required when `kind` is `prisma` (enforced by the
1407
1660
  * refinement on `ResourceJsonSchema`), and must be absent when `kind` is
1408
1661
  * `custom` — there is no Prisma delegate to address.
1409
1662
  */
1410
- model: import_zod20.z.string().optional(),
1411
- tag: import_zod20.z.string().optional().default("Crouton"),
1412
- title: import_zod20.z.string().optional(),
1413
- table: import_zod20.z.string().optional(),
1663
+ model: import_zod30.z.string().optional(),
1664
+ tag: import_zod30.z.string().optional().default("Crouton"),
1665
+ title: import_zod30.z.string().optional(),
1666
+ table: import_zod30.z.string().optional(),
1414
1667
  /**
1415
1668
  * Type of the resource's primary key, used to coerce `:id` route params.
1416
1669
  * Written by codegen from the Prisma model; defaults to `'string'`.
1417
1670
  */
1418
- idType: import_zod20.z.enum([
1671
+ idType: import_zod30.z.enum([
1419
1672
  "string",
1420
1673
  "number"
1421
1674
  ]).optional(),
1422
- database: import_zod20.z.string().optional(),
1675
+ database: import_zod30.z.string().optional(),
1423
1676
  /**
1424
1677
  * Mount this resource under a parent route instead of at the top level —
1425
1678
  * see `./ParentRef.schema`. Only valid on a `kind: "custom"` resource.
@@ -1431,12 +1684,12 @@ var ResourceJsonShape = import_zod20.z.object({
1431
1684
  security: SecuritySchema.optional(),
1432
1685
  operations: JsonOperationsSchema.optional(),
1433
1686
  columns: ColumnsSchema.optional().default(ColumnsSchema.parse({})),
1434
- calculatedColumns: import_zod20.z.array(CalculatedColumnSchema).default([]),
1435
- actions: import_zod20.z.array(JsonActionSchema).default([]),
1687
+ calculatedColumns: import_zod30.z.array(CalculatedColumnSchema).default([]),
1688
+ actions: import_zod30.z.array(JsonActionSchema).default([]),
1436
1689
  /** Global table-level actions (no record id). Shown as toolbar buttons. */
1437
- tableActions: import_zod20.z.array(JsonActionSchema).default([]),
1690
+ tableActions: import_zod30.z.array(JsonActionSchema).default([]),
1438
1691
  /** Modal width when opening a form for this resource. */
1439
- modalSize: import_zod20.z.enum([
1692
+ modalSize: import_zod30.z.enum([
1440
1693
  "xs",
1441
1694
  "sm",
1442
1695
  "lg",
@@ -1449,7 +1702,7 @@ var ResourceJsonShape = import_zod20.z.object({
1449
1702
  * `{ "relation": "text_author", "include": ["author"] }` →
1450
1703
  * `include: { text_author: { include: { author: true } } }`
1451
1704
  */
1452
- include: import_zod20.z.array(JsonIncludeEntrySchema).default([]),
1705
+ include: import_zod30.z.array(JsonIncludeEntrySchema).default([]),
1453
1706
  /** Explicit layout for generated views (`form`, `view`, `table`). When absent, source-order grid is used. */
1454
1707
  layout: LayoutSchema.optional()
1455
1708
  });
@@ -1518,7 +1771,7 @@ var buildResourceJsonSchema = /* @__PURE__ */ __name(() => {
1518
1771
  schema.optional()
1519
1772
  ]));
1520
1773
  const shape = ext.size ? ResourceJsonShape.extend(extShape) : ResourceJsonShape;
1521
- return import_zod20.z.preprocess((raw) => {
1774
+ return import_zod30.z.preprocess((raw) => {
1522
1775
  if (raw && typeof raw === "object" && !Array.isArray(raw)) {
1523
1776
  const obj = raw;
1524
1777
  if (obj["kind"] === void 0 && obj["model"] !== void 0) {
@@ -1546,7 +1799,15 @@ var buildResourceJsonSchema = /* @__PURE__ */ __name(() => {
1546
1799
  id: obj.id ?? obj.name,
1547
1800
  route: obj.route ?? obj.id ?? obj.name ?? "",
1548
1801
  schemaVersion,
1549
- columns: normalizeColumns(obj.columns),
1802
+ columns: normalizeColumns(obj.columns)?.map((col) => {
1803
+ const out = {
1804
+ ...col
1805
+ };
1806
+ if (out.fieldInput) out.fieldInput = parseFieldInputOptions(out.fieldInput);
1807
+ if (out.fieldView) out.fieldView = parseFieldInputOptions(out.fieldView);
1808
+ if (out.fieldTable) out.fieldTable = parseFieldInputOptions(out.fieldTable);
1809
+ return out;
1810
+ }),
1550
1811
  operations: obj.operations ?? defaultOps
1551
1812
  };
1552
1813
  }));
@@ -1997,7 +2258,7 @@ var injectCalculatedColumns = /* @__PURE__ */ __name((tableView, calculated) =>
1997
2258
  var injectCalculatedColumnsToView = /* @__PURE__ */ __name((viewConfig, calculated) => injectCalculatedColumnsIntoView(viewConfig, calculated, "view"), "injectCalculatedColumnsToView");
1998
2259
 
1999
2260
  // ../crouton-core/src/lib/view/view.builder.ts
2000
- var import_zod22 = require("zod");
2261
+ var import_zod32 = require("zod");
2001
2262
 
2002
2263
  // ../crouton-core/src/lib/view/column-type-schema.source.ts
2003
2264
  var optionValues = /* @__PURE__ */ __name((col) => {
@@ -2033,20 +2294,20 @@ var columnTypeSchemaSource = /* @__PURE__ */ __name((schemaCols) => {
2033
2294
  }, "columnTypeSchemaSource");
2034
2295
 
2035
2296
  // ../crouton-core/src/lib/view/json-schema.opts.ts
2036
- var import_zod21 = require("zod");
2297
+ var import_zod31 = require("zod");
2037
2298
  var isInstanceOf = /* @__PURE__ */ __name((zodSchema, className) => {
2038
- if (!(zodSchema instanceof import_zod21.z.ZodCustom)) return false;
2299
+ if (!(zodSchema instanceof import_zod31.z.ZodCustom)) return false;
2039
2300
  const result = zodSchema.safeParse(null);
2040
2301
  if (result.success) return false;
2041
2302
  const issue = result.error.issues[0];
2042
2303
  return issue?.expected === className || (issue?.message?.includes(className) ?? false);
2043
2304
  }, "isInstanceOf");
2044
2305
  var jsonSchemaOverride = /* @__PURE__ */ __name(({ zodSchema, jsonSchema }) => {
2045
- if (zodSchema instanceof import_zod21.z.ZodDate) {
2306
+ if (zodSchema instanceof import_zod31.z.ZodDate) {
2046
2307
  jsonSchema.type = "string";
2047
2308
  jsonSchema.format = "date-time";
2048
2309
  }
2049
- if (zodSchema instanceof import_zod21.z.ZodBigInt) {
2310
+ if (zodSchema instanceof import_zod31.z.ZodBigInt) {
2050
2311
  jsonSchema.type = "integer";
2051
2312
  }
2052
2313
  if (isInstanceOf(zodSchema, "Decimal") || isInstanceOf(zodSchema, "Decimal2")) {
@@ -2289,7 +2550,7 @@ var zodSchemaSource = /* @__PURE__ */ __name((schema) => (schemaCols) => {
2289
2550
  ]));
2290
2551
  const picked = schema.pick(mask);
2291
2552
  try {
2292
- return (0, import_zod22.toJSONSchema)(picked, {
2553
+ return (0, import_zod32.toJSONSchema)(picked, {
2293
2554
  target: "draft-07",
2294
2555
  ...jsonSchemaOpts
2295
2556
  });
@@ -2383,7 +2644,7 @@ var buildViewsWithSource = /* @__PURE__ */ __name((source, columns, layout) => {
2383
2644
  views.table = emptyTableView();
2384
2645
  }
2385
2646
  const formUiBuilder = layout?.form ? (cols) => buildFormUiSchemaFromLayout(layout.form, cols) : buildFormUiSchema;
2386
- const form = buildView(source, columns, (c) => !c.hiddenInForm, formUiBuilder, true, (c) => !c.idField && (c.createable === true || c.updateable === true));
2647
+ const form = buildView(source, columns, (c) => !c.hiddenInForm, formUiBuilder, true, (c) => !c.idField && !c.hiddenInForm && (c.createable === true || c.updateable === true));
2387
2648
  if (form) {
2388
2649
  applyRequiredColumns(form.json_schema, columns);
2389
2650
  views.form = form;
@@ -2503,81 +2764,81 @@ var buildViewsFromColumns = /* @__PURE__ */ __name((columns) => {
2503
2764
  }, "buildViewsFromColumns");
2504
2765
 
2505
2766
  // ../crouton-core/src/lib/view/view.schema.ts
2506
- var import_zod23 = require("zod");
2507
- var ViewColumnConfigSchema = import_zod23.z.object({
2508
- id: import_zod23.z.string(),
2509
- label: import_zod23.z.string().optional(),
2510
- sortable: import_zod23.z.boolean().optional(),
2511
- searchable: import_zod23.z.boolean().optional(),
2767
+ var import_zod33 = require("zod");
2768
+ var ViewColumnConfigSchema = import_zod33.z.object({
2769
+ id: import_zod33.z.string(),
2770
+ label: import_zod33.z.string().optional(),
2771
+ sortable: import_zod33.z.boolean().optional(),
2772
+ searchable: import_zod33.z.boolean().optional(),
2512
2773
  fieldInput: FieldInputSchema.optional()
2513
2774
  });
2514
- var ViewConfigSchema = import_zod23.z.object({
2775
+ var ViewConfigSchema = import_zod33.z.object({
2515
2776
  // TODO why we have both?
2516
- json_schema: import_zod23.z.record(import_zod23.z.string(), import_zod23.z.unknown()).optional(),
2517
- ui_schema: import_zod23.z.record(import_zod23.z.string(), import_zod23.z.unknown()).optional(),
2777
+ json_schema: import_zod33.z.record(import_zod33.z.string(), import_zod33.z.unknown()).optional(),
2778
+ ui_schema: import_zod33.z.record(import_zod33.z.string(), import_zod33.z.unknown()).optional(),
2518
2779
  // TODO why we have both?
2519
- ui: import_zod23.z.record(import_zod23.z.string(), import_zod23.z.unknown()).optional(),
2520
- data: import_zod23.z.record(import_zod23.z.string(), import_zod23.z.unknown()).optional(),
2521
- columns: import_zod23.z.array(ViewColumnConfigSchema),
2522
- defaultSort: import_zod23.z.string().optional()
2780
+ ui: import_zod33.z.record(import_zod33.z.string(), import_zod33.z.unknown()).optional(),
2781
+ data: import_zod33.z.record(import_zod33.z.string(), import_zod33.z.unknown()).optional(),
2782
+ columns: import_zod33.z.array(ViewColumnConfigSchema),
2783
+ defaultSort: import_zod33.z.string().optional()
2523
2784
  });
2524
2785
  var viewDefList = [
2525
2786
  "table",
2526
2787
  "view",
2527
2788
  "form"
2528
2789
  ];
2529
- var ViewDefEnum = import_zod23.z.enum(viewDefList);
2790
+ var ViewDefEnum = import_zod33.z.enum(viewDefList);
2530
2791
 
2531
2792
  // ../crouton-core/src/lib/compile/enum-registry.ts
2532
- var import_zod24 = require("zod");
2533
- var EnumEntrySchema = import_zod24.z.object({
2534
- value: import_zod24.z.unknown(),
2535
- label: import_zod24.z.string()
2793
+ var import_zod34 = require("zod");
2794
+ var EnumEntrySchema = import_zod34.z.object({
2795
+ value: import_zod34.z.unknown(),
2796
+ label: import_zod34.z.string()
2536
2797
  });
2537
- var EnumRegistrySchema = import_zod24.z.record(import_zod24.z.string(), import_zod24.z.array(EnumEntrySchema)).default({});
2798
+ var EnumRegistrySchema = import_zod34.z.record(import_zod34.z.string(), import_zod34.z.array(EnumEntrySchema)).default({});
2538
2799
 
2539
2800
  // ../crouton-core/src/lib/compile/relation-type.ts
2540
- var import_zod25 = require("zod");
2801
+ var import_zod35 = require("zod");
2541
2802
 
2542
2803
  // ../crouton-core/src/lib/compile/compiled-resource.schema.ts
2543
- var import_zod32 = require("zod");
2804
+ var import_zod42 = require("zod");
2544
2805
 
2545
2806
  // ../crouton-core/src/lib/compile/compiled-sub-resource.schema.ts
2546
- var import_zod28 = require("zod");
2807
+ var import_zod38 = require("zod");
2547
2808
 
2548
2809
  // ../crouton-core/src/lib/data-source/DataSourceSchema.ts
2549
- var import_zod26 = __toESM(require("zod"), 1);
2550
- var DataSourceShape = import_zod26.default.object({
2810
+ var import_zod36 = __toESM(require("zod"), 1);
2811
+ var DataSourceShape = import_zod36.default.object({
2551
2812
  /** Datasource name (folder + `name` in data-source.json). */
2552
- name: import_zod26.default.string(),
2813
+ name: import_zod36.default.string(),
2553
2814
  /**
2554
2815
  * Env var holding the connection URL. Required for Prisma adapters; optional
2555
2816
  * for custom adapters whose connection config may differ (secrets file, SDK
2556
2817
  * key, etc.).
2557
2818
  */
2558
- urlEnv: import_zod26.default.string().optional(),
2819
+ urlEnv: import_zod36.default.string().optional(),
2559
2820
  /** Import path for this datasource's generated Zod types (for resource `schema.ts`). */
2560
- generatedTypesImport: import_zod26.default.string().optional(),
2821
+ generatedTypesImport: import_zod36.default.string().optional(),
2561
2822
  /** Datasource type tag. Default `postgres`. */
2562
- type: import_zod26.default.string().default("postgres"),
2823
+ type: import_zod36.default.string().default("postgres"),
2563
2824
  /** Mark this as the default datasource. Default `false`. */
2564
- default: import_zod26.default.boolean().default(false),
2825
+ default: import_zod36.default.boolean().default(false),
2565
2826
  /**
2566
2827
  * Adapter kind. `"prisma"` (default) expects `index.ts` to default-export a
2567
2828
  * `PrismaClient`; `"custom"` expects it to default-export a `DataSourceAdapter`.
2568
2829
  */
2569
- adapter: import_zod26.default.enum([
2830
+ adapter: import_zod36.default.enum([
2570
2831
  "prisma",
2571
2832
  "custom"
2572
2833
  ]).default("prisma"),
2573
2834
  /** Prisma schema path, relative to project root. Default `prisma/<name>/schema.prisma`. */
2574
- prismaSchema: import_zod26.default.string().optional(),
2835
+ prismaSchema: import_zod36.default.string().optional(),
2575
2836
  /** Prisma config path, relative to project root. Default `prisma/<name>/prisma.config.ts`. */
2576
- prismaConfig: import_zod26.default.string().optional(),
2837
+ prismaConfig: import_zod36.default.string().optional(),
2577
2838
  /** zod-prisma-types output dir, relative to project root. Default `generated/<name>/src`. */
2578
- zodOutput: import_zod26.default.string().optional(),
2839
+ zodOutput: import_zod36.default.string().optional(),
2579
2840
  /** Prisma client output dir, relative to project root. Default `generated/<name>/client`. */
2580
- clientOutput: import_zod26.default.string().optional()
2841
+ clientOutput: import_zod36.default.string().optional()
2581
2842
  });
2582
2843
  var transformDataSource = /* @__PURE__ */ __name((data) => {
2583
2844
  const name = data.name ?? "name";
@@ -2593,88 +2854,88 @@ var transformDataSource = /* @__PURE__ */ __name((data) => {
2593
2854
  var DataSourceSchema = DataSourceShape.transform(transformDataSource);
2594
2855
 
2595
2856
  // ../crouton-core/src/lib/compile/value-label-column.ts
2596
- var import_zod27 = require("zod");
2597
- var ValueSchema = import_zod27.z.object({
2598
- value: import_zod27.z.unknown(),
2599
- label: import_zod27.z.string()
2857
+ var import_zod37 = require("zod");
2858
+ var ValueSchema = import_zod37.z.object({
2859
+ value: import_zod37.z.unknown(),
2860
+ label: import_zod37.z.string()
2600
2861
  });
2601
- var ValueLabelColumnSchema = import_zod27.z.object({
2602
- field: import_zod27.z.string(),
2603
- values: import_zod27.z.array(ValueSchema).default([]),
2604
- enumName: import_zod27.z.string().optional()
2862
+ var ValueLabelColumnSchema = import_zod37.z.object({
2863
+ field: import_zod37.z.string(),
2864
+ values: import_zod37.z.array(ValueSchema).default([]),
2865
+ enumName: import_zod37.z.string().optional()
2605
2866
  });
2606
2867
 
2607
2868
  // ../crouton-core/src/lib/compile/compiled-sub-resource.schema.ts
2608
- var CompiledSubResourceConfigSchema = import_zod28.z.object({
2609
- column: import_zod28.z.string(),
2610
- relation: import_zod28.z.string(),
2611
- childRoute: import_zod28.z.string(),
2612
- childKind: import_zod28.z.enum([
2869
+ var CompiledSubResourceConfigSchema = import_zod38.z.object({
2870
+ column: import_zod38.z.string(),
2871
+ relation: import_zod38.z.string(),
2872
+ childRoute: import_zod38.z.string(),
2873
+ childKind: import_zod38.z.enum([
2613
2874
  "prisma",
2614
2875
  "custom"
2615
2876
  ]).default("prisma"),
2616
- childDir: import_zod28.z.string().optional(),
2617
- childModel: import_zod28.z.string(),
2618
- foreignKey: import_zod28.z.string(),
2619
- name: import_zod28.z.string().optional(),
2620
- title: import_zod28.z.string().optional(),
2621
- idField: import_zod28.z.string().optional(),
2622
- idType: import_zod28.z.enum([
2877
+ childDir: import_zod38.z.string().optional(),
2878
+ childModel: import_zod38.z.string(),
2879
+ foreignKey: import_zod38.z.string(),
2880
+ name: import_zod38.z.string().optional(),
2881
+ title: import_zod38.z.string().optional(),
2882
+ idField: import_zod38.z.string().optional(),
2883
+ idType: import_zod38.z.enum([
2623
2884
  "string",
2624
2885
  "number"
2625
2886
  ]).optional(),
2626
- views: import_zod28.z.record(import_zod28.z.string(), ViewConfigSchema).optional(),
2887
+ views: import_zod38.z.record(import_zod38.z.string(), ViewConfigSchema).optional(),
2627
2888
  operations: JsonOperationsSchema,
2628
- actions: import_zod28.z.array(JsonActionSchema).optional(),
2629
- modalSize: import_zod28.z.enum([
2889
+ actions: import_zod38.z.array(JsonActionSchema).optional(),
2890
+ modalSize: import_zod38.z.enum([
2630
2891
  "xs",
2631
2892
  "sm",
2632
2893
  "lg",
2633
2894
  "xl"
2634
2895
  ]).optional(),
2635
2896
  display: JsonDisplaySchema.optional(),
2636
- include: import_zod28.z.array(JsonIncludeEntrySchema).optional(),
2637
- calculatedColumns: import_zod28.z.array(CalculatedColumnSchema).optional(),
2638
- includeInFindOne: import_zod28.z.boolean().optional(),
2639
- hiddenInTable: import_zod28.z.boolean().optional(),
2640
- findOneOrderBy: import_zod28.z.record(import_zod28.z.string(), import_zod28.z.unknown()).optional(),
2641
- valueLabelColumns: import_zod28.z.array(ValueLabelColumnSchema).optional(),
2642
- relationType: import_zod28.z.enum([
2897
+ include: import_zod38.z.array(JsonIncludeEntrySchema).optional(),
2898
+ calculatedColumns: import_zod38.z.array(CalculatedColumnSchema).optional(),
2899
+ includeInFindOne: import_zod38.z.boolean().optional(),
2900
+ hiddenInTable: import_zod38.z.boolean().optional(),
2901
+ findOneOrderBy: import_zod38.z.record(import_zod38.z.string(), import_zod38.z.unknown()).optional(),
2902
+ valueLabelColumns: import_zod38.z.array(ValueLabelColumnSchema).optional(),
2903
+ relationType: import_zod38.z.enum([
2643
2904
  "oneToMany",
2644
2905
  "manyToOne"
2645
2906
  ]).optional()
2646
2907
  });
2647
2908
 
2648
2909
  // ../crouton-core/src/lib/compile/definition.schema.ts
2649
- var import_zod30 = require("zod");
2910
+ var import_zod40 = require("zod");
2650
2911
 
2651
2912
  // ../crouton-core/src/lib/compile/schema-input.ts
2652
- var import_zod29 = require("zod");
2653
- var JsonSchemaInputSchema = import_zod29.z.object({
2654
- type: import_zod29.z.literal("object"),
2655
- properties: import_zod29.z.record(import_zod29.z.string(), import_zod29.z.unknown()),
2656
- required: import_zod29.z.array(import_zod29.z.string()).optional(),
2657
- additionalProperties: import_zod29.z.boolean().optional()
2913
+ var import_zod39 = require("zod");
2914
+ var JsonSchemaInputSchema = import_zod39.z.object({
2915
+ type: import_zod39.z.literal("object"),
2916
+ properties: import_zod39.z.record(import_zod39.z.string(), import_zod39.z.unknown()),
2917
+ required: import_zod39.z.array(import_zod39.z.string()).optional(),
2918
+ additionalProperties: import_zod39.z.boolean().optional()
2658
2919
  });
2659
- var SchemaInputSchema = import_zod29.z.union([
2660
- import_zod29.z.custom((val) => val instanceof import_zod29.ZodObject),
2920
+ var SchemaInputSchema = import_zod39.z.union([
2921
+ import_zod39.z.custom((val) => val instanceof import_zod39.ZodObject),
2661
2922
  JsonSchemaInputSchema
2662
2923
  ]);
2663
2924
 
2664
2925
  // ../crouton-core/src/lib/compile/definition.schema.ts
2665
- var ExternalOperationDefSchema = import_zod30.z.object({
2666
- uri: import_zod30.z.string(),
2667
- method: import_zod30.z.string().optional()
2926
+ var ExternalOperationDefSchema = import_zod40.z.object({
2927
+ uri: import_zod40.z.string(),
2928
+ method: import_zod40.z.string().optional()
2668
2929
  });
2669
- var OperationDefSchema = import_zod30.z.union([
2670
- import_zod30.z.literal(true),
2930
+ var OperationDefSchema = import_zod40.z.union([
2931
+ import_zod40.z.literal(true),
2671
2932
  ExternalOperationDefSchema,
2672
- import_zod30.z.object({
2933
+ import_zod40.z.object({
2673
2934
  schema: SchemaInputSchema.optional(),
2674
2935
  security: SecuritySchema.optional()
2675
2936
  })
2676
2937
  ]);
2677
- var ResourceDefinitionSchema = import_zod30.z.object({
2938
+ var ResourceDefinitionSchema = import_zod40.z.object({
2678
2939
  findAll: OperationDefSchema.optional(),
2679
2940
  findOne: OperationDefSchema.optional(),
2680
2941
  create: OperationDefSchema.optional(),
@@ -2682,93 +2943,93 @@ var ResourceDefinitionSchema = import_zod30.z.object({
2682
2943
  patch: OperationDefSchema.optional(),
2683
2944
  delete: OperationDefSchema.optional()
2684
2945
  });
2685
- var DefinitionCallbackSchema = import_zod30.z.function({
2946
+ var DefinitionCallbackSchema = import_zod40.z.function({
2686
2947
  input: [],
2687
2948
  output: ResourceDefinitionSchema
2688
2949
  });
2689
- var DefinitionSchema = import_zod30.z.union([
2950
+ var DefinitionSchema = import_zod40.z.union([
2690
2951
  ResourceDefinitionSchema,
2691
2952
  DefinitionCallbackSchema
2692
2953
  ]);
2693
2954
 
2694
2955
  // ../crouton-core/src/lib/compile/lookup.schema.ts
2695
- var import_zod31 = require("zod");
2696
- var LookupSchema = import_zod31.z.object({
2697
- key: import_zod31.z.string(),
2698
- label: import_zod31.z.string().optional()
2956
+ var import_zod41 = require("zod");
2957
+ var LookupSchema = import_zod41.z.object({
2958
+ key: import_zod41.z.string(),
2959
+ label: import_zod41.z.string().optional()
2699
2960
  });
2700
2961
 
2701
2962
  // ../crouton-core/src/lib/compile/compiled-resource.schema.ts
2702
2963
  var CompiledResourceSchema = ResourceJsonShape.extend({
2703
- route: import_zod32.z.string(),
2704
- valueLabelColumns: import_zod32.z.array(ValueLabelColumnSchema).default([]),
2705
- subResources: import_zod32.z.lazy(() => import_zod32.z.array(CompiledSubResourceConfigSchema)).default([]),
2964
+ route: import_zod42.z.string(),
2965
+ valueLabelColumns: import_zod42.z.array(ValueLabelColumnSchema).default([]),
2966
+ subResources: import_zod42.z.lazy(() => import_zod42.z.array(CompiledSubResourceConfigSchema)).default([]),
2706
2967
  lookup: LookupSchema.optional(),
2707
- views: import_zod32.z.record(import_zod32.z.string(), ViewConfigSchema),
2968
+ views: import_zod42.z.record(import_zod42.z.string(), ViewConfigSchema),
2708
2969
  definition: DefinitionSchema,
2709
- idField: import_zod32.z.string(),
2710
- idType: import_zod32.z.enum([
2970
+ idField: import_zod42.z.string(),
2971
+ idType: import_zod42.z.enum([
2711
2972
  "string",
2712
2973
  "number"
2713
2974
  ]).default("string")
2714
2975
  });
2715
2976
 
2716
2977
  // ../crouton-core/src/lib/compile/to-json-schema.ts
2717
- var import_zod33 = require("zod");
2978
+ var import_zod43 = require("zod");
2718
2979
 
2719
2980
  // ../crouton-core/src/lib/config/CroutonConfig.schema.ts
2720
- var import_zod34 = require("zod");
2721
- var RulesetSchema = import_zod34.z.object({
2722
- hideIdInTable: import_zod34.z.boolean().default(true),
2723
- hideIdInForm: import_zod34.z.boolean().default(true),
2724
- hideIdInView: import_zod34.z.boolean().default(true),
2725
- hideTimestamps: import_zod34.z.boolean().default(true),
2726
- hideForeignKeys: import_zod34.z.boolean().default(true),
2727
- includeRelations: import_zod34.z.boolean().default(true),
2728
- hideRelationsInTable: import_zod34.z.boolean().default(true),
2729
- showRelationsInForm: import_zod34.z.boolean().default(true),
2730
- enumValueLabel: import_zod34.z.boolean().default(true),
2731
- sharedEnums: import_zod34.z.boolean().default(true),
2981
+ var import_zod44 = require("zod");
2982
+ var RulesetSchema = import_zod44.z.object({
2983
+ hideIdInTable: import_zod44.z.boolean().default(true),
2984
+ hideIdInForm: import_zod44.z.boolean().default(true),
2985
+ hideIdInView: import_zod44.z.boolean().default(true),
2986
+ hideTimestamps: import_zod44.z.boolean().default(true),
2987
+ hideForeignKeys: import_zod44.z.boolean().default(true),
2988
+ includeRelations: import_zod44.z.boolean().default(true),
2989
+ hideRelationsInTable: import_zod44.z.boolean().default(true),
2990
+ showRelationsInForm: import_zod44.z.boolean().default(true),
2991
+ enumValueLabel: import_zod44.z.boolean().default(true),
2992
+ sharedEnums: import_zod44.z.boolean().default(true),
2732
2993
  defaultOperations: JsonOperationsSchema.default(JsonOperationsSchema.parse({}))
2733
2994
  });
2734
- var I18nConfigSchema = import_zod34.z.object({
2995
+ var I18nConfigSchema = import_zod44.z.object({
2735
2996
  /** Default / fallback language. */
2736
- defaultLanguage: import_zod34.z.string().default("en"),
2997
+ defaultLanguage: import_zod44.z.string().default("en"),
2737
2998
  /** All supported language codes. */
2738
- languages: import_zod34.z.array(import_zod34.z.string()).min(1),
2999
+ languages: import_zod44.z.array(import_zod44.z.string()).min(1),
2739
3000
  /** Directory containing `<lang>.json` bundles, relative to project root. */
2740
- translationsDir: import_zod34.z.string().default("translations")
3001
+ translationsDir: import_zod44.z.string().default("translations")
2741
3002
  });
2742
- var CroutonConfigSchema = import_zod34.z.object({
3003
+ var CroutonConfigSchema = import_zod44.z.object({
2743
3004
  /**
2744
3005
  * Application title served to the frontend via `GET /_app/layout`.
2745
3006
  * Displayed in the admin sidebar header.
2746
3007
  */
2747
- title: import_zod34.z.string(),
3008
+ title: import_zod44.z.string(),
2748
3009
  /** Where resource directories live, relative to the project root. */
2749
- resourcesDir: import_zod34.z.string(),
3010
+ resourcesDir: import_zod44.z.string(),
2750
3011
  /** Where datasource folders live (each with a `data-source.json`). */
2751
- dataSourcesDir: import_zod34.z.string(),
3012
+ dataSourcesDir: import_zod44.z.string(),
2752
3013
  /**
2753
3014
  * Template for a model's Zod export name. `{Model}` → Prisma model name.
2754
3015
  * Defaults to `{Model}WithRelationsSchema` (the relations-aware schema
2755
3016
  * emitted by zod-prisma-types when `createRelationValuesTypes` is on).
2756
3017
  */
2757
- schemaExportName: import_zod34.z.string().default("{Model}WithRelationsSchema"),
3018
+ schemaExportName: import_zod44.z.string().default("{Model}WithRelationsSchema"),
2758
3019
  /** Path to the shared enum registry, relative to project root. Default `crouton.enums.json`. */
2759
- enumsFile: import_zod34.z.string().default("crouton.enums.json"),
3020
+ enumsFile: import_zod44.z.string().default("crouton.enums.json"),
2760
3021
  /** Optional overrides of the default visibility ruleset. */
2761
3022
  rules: RulesetSchema.default(RulesetSchema.parse({})),
2762
3023
  /**
2763
3024
  * Sidebar group definitions, keyed by group slug (e.g. `"metadata"`).
2764
3025
  * Resources reference a group via `sidebar.group` in their `resource.json`.
2765
3026
  */
2766
- sidebarGroups: import_zod34.z.record(import_zod34.z.string(), SidebarGroupSchema).default({}),
3027
+ sidebarGroups: import_zod44.z.record(import_zod44.z.string(), SidebarGroupSchema).default({}),
2767
3028
  /**
2768
3029
  * Whether form fields are saved automatically as the user edits them.
2769
3030
  * @default true
2770
3031
  */
2771
- autoSave: import_zod34.z.boolean().default(true),
3032
+ autoSave: import_zod44.z.boolean().default(true),
2772
3033
  /** Optional i18n / translation configuration. */
2773
3034
  i18n: I18nConfigSchema.optional()
2774
3035
  });
@@ -2781,29 +3042,29 @@ var CONFIG_FILES = [
2781
3042
  ];
2782
3043
 
2783
3044
  // ../crouton-core/src/lib/i18n/Translations.schema.ts
2784
- var import_zod35 = require("zod");
2785
- var NestedStringRecord = import_zod35.z.lazy(() => import_zod35.z.record(import_zod35.z.string(), import_zod35.z.union([
2786
- import_zod35.z.string(),
3045
+ var import_zod45 = require("zod");
3046
+ var NestedStringRecord = import_zod45.z.lazy(() => import_zod45.z.record(import_zod45.z.string(), import_zod45.z.union([
3047
+ import_zod45.z.string(),
2787
3048
  NestedStringRecord
2788
3049
  ])));
2789
- var TranslationBundleSchema = import_zod35.z.object({
2790
- app: import_zod35.z.object({
2791
- title: import_zod35.z.string().optional()
3050
+ var TranslationBundleSchema = import_zod45.z.object({
3051
+ app: import_zod45.z.object({
3052
+ title: import_zod45.z.string().optional()
2792
3053
  }).optional(),
2793
- sidebarGroups: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.string()).optional(),
2794
- resources: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.object({
2795
- title: import_zod35.z.string().optional(),
2796
- sidebar: import_zod35.z.string().optional(),
2797
- columns: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.string()).optional(),
2798
- actions: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.string()).optional(),
2799
- subResources: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.object({
2800
- title: import_zod35.z.string().optional(),
2801
- columns: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.string()).optional()
3054
+ sidebarGroups: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.string()).optional(),
3055
+ resources: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.object({
3056
+ title: import_zod45.z.string().optional(),
3057
+ sidebar: import_zod45.z.string().optional(),
3058
+ columns: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.string()).optional(),
3059
+ actions: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.string()).optional(),
3060
+ subResources: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.object({
3061
+ title: import_zod45.z.string().optional(),
3062
+ columns: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.string()).optional()
2802
3063
  }).optional()).optional()
2803
3064
  }).optional()).optional(),
2804
- enums: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.record(import_zod35.z.string(), import_zod35.z.string())).optional(),
3065
+ enums: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.record(import_zod45.z.string(), import_zod45.z.string())).optional(),
2805
3066
  ui: NestedStringRecord.optional(),
2806
- validation: import_zod35.z.record(import_zod35.z.string(), import_zod35.z.string()).optional()
3067
+ validation: import_zod45.z.record(import_zod45.z.string(), import_zod45.z.string()).optional()
2807
3068
  }).passthrough();
2808
3069
 
2809
3070
  // ../crouton-core/src/lib/i18n/translation-keys.ts
@@ -2887,21 +3148,21 @@ var import_common27 = require("@nestjs/common");
2887
3148
  var import_core2 = require("@nestjs/core");
2888
3149
 
2889
3150
  // src/lib/crud/app-layout/app-layout.types.ts
2890
- var import_zod36 = require("zod");
2891
- var SidebarLeafSchema = import_zod36.z.object({
2892
- kind: import_zod36.z.literal("item").default("item"),
2893
- id: import_zod36.z.string(),
2894
- label: import_zod36.z.string(),
2895
- position: import_zod36.z.number().optional()
3151
+ var import_zod46 = require("zod");
3152
+ var SidebarLeafSchema = import_zod46.z.object({
3153
+ kind: import_zod46.z.literal("item").default("item"),
3154
+ id: import_zod46.z.string(),
3155
+ label: import_zod46.z.string(),
3156
+ position: import_zod46.z.number().optional()
2896
3157
  });
2897
- var SidebarGroupSchema2 = import_zod36.z.object({
2898
- kind: import_zod36.z.literal("group").default("group"),
2899
- id: import_zod36.z.string(),
2900
- label: import_zod36.z.string(),
2901
- position: import_zod36.z.number().optional(),
2902
- children: import_zod36.z.array(SidebarLeafSchema).default([])
3158
+ var SidebarGroupSchema2 = import_zod46.z.object({
3159
+ kind: import_zod46.z.literal("group").default("group"),
3160
+ id: import_zod46.z.string(),
3161
+ label: import_zod46.z.string(),
3162
+ position: import_zod46.z.number().optional(),
3163
+ children: import_zod46.z.array(SidebarLeafSchema).default([])
2903
3164
  });
2904
- var SidebarNodeSchema = import_zod36.z.discriminatedUnion("kind", [
3165
+ var SidebarNodeSchema = import_zod46.z.discriminatedUnion("kind", [
2905
3166
  SidebarLeafSchema,
2906
3167
  SidebarGroupSchema2
2907
3168
  ]);
@@ -3740,47 +4001,47 @@ var import_swagger11 = require("@nestjs/swagger");
3740
4001
  var import_common10 = require("@nestjs/common");
3741
4002
 
3742
4003
  // src/lib/crud/action/action.types.ts
3743
- var import_zod37 = require("zod");
3744
- var ActionMetadataSchema2 = import_zod37.z.object({
4004
+ var import_zod47 = require("zod");
4005
+ var ActionMetadataSchema2 = import_zod47.z.object({
3745
4006
  /** URL segment used in the endpoint. */
3746
- id: import_zod37.z.string(),
4007
+ id: import_zod47.z.string(),
3747
4008
  /** Human-readable label shown as a button. */
3748
- label: import_zod37.z.string().optional(),
4009
+ label: import_zod47.z.string().optional(),
3749
4010
  /** MDI icon name, e.g. `"mdi:open-in-new"`. */
3750
- icon: import_zod37.z.string().optional(),
4011
+ icon: import_zod47.z.string().optional(),
3751
4012
  /** Tooltip text. Falls back to `label` when omitted. */
3752
- tooltip: import_zod37.z.string().optional(),
4013
+ tooltip: import_zod47.z.string().optional(),
3753
4014
  /** Per-row condition — button is hidden when false. */
3754
- condition: import_zod37.z.custom().optional()
4015
+ condition: import_zod47.z.custom().optional()
3755
4016
  });
3756
4017
  var ResourceLinkActionSchema2 = ActionMetadataSchema2.extend({
3757
- type: import_zod37.z.literal("link"),
4018
+ type: import_zod47.z.literal("link"),
3758
4019
  /** URL to open. May contain `{id}` or `{env.VAR}` placeholders. */
3759
- href: import_zod37.z.string()
4020
+ href: import_zod47.z.string()
3760
4021
  });
3761
4022
  var ResourceRowProcedureActionSchema2 = ActionMetadataSchema2.extend({
3762
- type: import_zod37.z.literal("procedure").optional(),
4023
+ type: import_zod47.z.literal("procedure").optional(),
3763
4024
  /** HTTP method for the endpoint. Defaults to `"post"`. */
3764
- method: import_zod37.z.string().optional(),
4025
+ method: import_zod47.z.string().optional(),
3765
4026
  /** Static data payload merged into the request body by the frontend. */
3766
- data: import_zod37.z.record(import_zod37.z.string(), import_zod37.z.unknown()).optional(),
4027
+ data: import_zod47.z.record(import_zod47.z.string(), import_zod47.z.unknown()).optional(),
3767
4028
  /** Procedure called with `(prisma, recordId)`. */
3768
- procedure: import_zod37.z.custom((v) => typeof v === "function")
4029
+ procedure: import_zod47.z.custom((v) => typeof v === "function")
3769
4030
  });
3770
4031
  var ResourceTableProcedureActionSchema2 = ActionMetadataSchema2.extend({
3771
- type: import_zod37.z.literal("procedure").optional(),
4032
+ type: import_zod47.z.literal("procedure").optional(),
3772
4033
  /** HTTP method for the endpoint. Defaults to `"post"`. */
3773
- method: import_zod37.z.string().optional(),
4034
+ method: import_zod47.z.string().optional(),
3774
4035
  /** Static data payload merged into the request body by the frontend. */
3775
- data: import_zod37.z.record(import_zod37.z.string(), import_zod37.z.unknown()).optional(),
4036
+ data: import_zod47.z.record(import_zod47.z.string(), import_zod47.z.unknown()).optional(),
3776
4037
  /** Procedure called with `(prisma)` — no record id. */
3777
- procedure: import_zod37.z.custom((v) => typeof v === "function")
4038
+ procedure: import_zod47.z.custom((v) => typeof v === "function")
3778
4039
  });
3779
- var ResourceRowActionSchema2 = import_zod37.z.union([
4040
+ var ResourceRowActionSchema2 = import_zod47.z.union([
3780
4041
  ResourceRowProcedureActionSchema2,
3781
4042
  ResourceLinkActionSchema2
3782
4043
  ]);
3783
- var ResourceTableActionSchema2 = import_zod37.z.union([
4044
+ var ResourceTableActionSchema2 = import_zod47.z.union([
3784
4045
  ResourceTableProcedureActionSchema2,
3785
4046
  ResourceLinkActionSchema2
3786
4047
  ]);
@@ -3887,7 +4148,7 @@ var securityForSub = /* @__PURE__ */ __name((config, sub, op, moduleDefault) =>
3887
4148
  }, "securityForSub");
3888
4149
 
3889
4150
  // src/lib/crud/custom-repository/custom-repository.types.ts
3890
- var import_zod38 = require("zod");
4151
+ var import_zod48 = require("zod");
3891
4152
  var CUSTOM_OPS = [
3892
4153
  "findAll",
3893
4154
  "findOne",
@@ -3904,7 +4165,7 @@ var PARENT_METHOD = {
3904
4165
  patch: "patchByParent",
3905
4166
  delete: "deleteByParent"
3906
4167
  };
3907
- var CustomRepositorySchema = import_zod38.z.custom((value) => typeof value === "object" && value !== null);
4168
+ var CustomRepositorySchema = import_zod48.z.custom((value) => typeof value === "object" && value !== null);
3908
4169
 
3909
4170
  // src/lib/crud/resource/resource-load-errors.registry.ts
3910
4171
  var ResourceLoadErrorsRegistry = class ResourceLoadErrorsRegistry2 {
@@ -5097,23 +5358,23 @@ var PrismaDataSourceAdapter = class {
5097
5358
  };
5098
5359
 
5099
5360
  // src/lib/crud/hooks/hooks.types.ts
5100
- var import_zod39 = require("zod");
5101
- var WriteOpSchema = import_zod39.z.enum([
5361
+ var import_zod49 = require("zod");
5362
+ var WriteOpSchema = import_zod49.z.enum([
5102
5363
  "create",
5103
5364
  "update",
5104
5365
  "patch",
5105
5366
  "delete"
5106
5367
  ]);
5107
- var ReadOpSchema = import_zod39.z.enum([
5368
+ var ReadOpSchema = import_zod49.z.enum([
5108
5369
  "findAll",
5109
5370
  "findOne"
5110
5371
  ]);
5111
- var ResourceHooksSchema = import_zod39.z.object({
5112
- beforeWrite: import_zod39.z.custom().optional(),
5113
- afterWrite: import_zod39.z.custom().optional(),
5114
- afterRead: import_zod39.z.custom().optional(),
5115
- beforeFindAll: import_zod39.z.custom().optional(),
5116
- afterFindAll: import_zod39.z.custom().optional()
5372
+ var ResourceHooksSchema = import_zod49.z.object({
5373
+ beforeWrite: import_zod49.z.custom().optional(),
5374
+ afterWrite: import_zod49.z.custom().optional(),
5375
+ afterRead: import_zod49.z.custom().optional(),
5376
+ beforeFindAll: import_zod49.z.custom().optional(),
5377
+ afterFindAll: import_zod49.z.custom().optional()
5117
5378
  });
5118
5379
 
5119
5380
  // src/lib/crud/hooks/hooks.loader.ts
@@ -5363,9 +5624,9 @@ var validateCustomRepository = /* @__PURE__ */ __name((config, repository, adapt
5363
5624
  }, "validateCustomRepository");
5364
5625
 
5365
5626
  // src/lib/crud/schema.utils.ts
5366
- var import_zod40 = require("zod");
5627
+ var import_zod50 = require("zod");
5367
5628
  function isZodSchema(schema) {
5368
- return schema instanceof import_zod40.ZodObject;
5629
+ return schema instanceof import_zod50.ZodObject;
5369
5630
  }
5370
5631
  __name(isZodSchema, "isZodSchema");
5371
5632
  var dropNullableFromRequired2 = /* @__PURE__ */ __name((jsonSchema) => {
@@ -5377,7 +5638,7 @@ function toJsonSchema2(schema) {
5377
5638
  if (isZodSchema(schema)) {
5378
5639
  let jsonSchema;
5379
5640
  try {
5380
- jsonSchema = (0, import_zod40.toJSONSchema)(schema, {
5641
+ jsonSchema = (0, import_zod50.toJSONSchema)(schema, {
5381
5642
  target: "openApi3",
5382
5643
  ...jsonSchemaOpts
5383
5644
  });
@@ -6506,26 +6767,26 @@ var import_common20 = require("@nestjs/common");
6506
6767
  var import_swagger8 = require("@nestjs/swagger");
6507
6768
 
6508
6769
  // src/lib/crud/resource/PatchResourceJson.schema.ts
6509
- var import_zod41 = require("zod");
6510
- var FieldVariantPatchSchema = import_zod41.z.object({
6511
- type: import_zod41.z.string().nullable().optional(),
6512
- format: import_zod41.z.string().nullable().optional(),
6513
- resource: import_zod41.z.string().nullable().optional(),
6514
- position: import_zod41.z.number().nullable().optional(),
6515
- options: import_zod41.z.record(import_zod41.z.string(), import_zod41.z.unknown().nullable()).optional()
6770
+ var import_zod51 = require("zod");
6771
+ var FieldVariantPatchSchema = import_zod51.z.object({
6772
+ type: import_zod51.z.string().nullable().optional(),
6773
+ format: import_zod51.z.string().nullable().optional(),
6774
+ resource: import_zod51.z.string().nullable().optional(),
6775
+ position: import_zod51.z.number().nullable().optional(),
6776
+ options: import_zod51.z.record(import_zod51.z.string(), import_zod51.z.unknown().nullable()).optional()
6516
6777
  }).partial();
6517
- var PatchColumnSchema = import_zod41.z.object({
6518
- label: import_zod41.z.string().optional(),
6519
- column: import_zod41.z.string().optional(),
6520
- hiddenInTable: import_zod41.z.boolean().optional(),
6521
- hiddenInForm: import_zod41.z.boolean().optional(),
6522
- hiddenInView: import_zod41.z.boolean().optional(),
6778
+ var PatchColumnSchema = import_zod51.z.object({
6779
+ label: import_zod51.z.string().optional(),
6780
+ column: import_zod51.z.string().optional(),
6781
+ hiddenInTable: import_zod51.z.boolean().optional(),
6782
+ hiddenInForm: import_zod51.z.boolean().optional(),
6783
+ hiddenInView: import_zod51.z.boolean().optional(),
6523
6784
  fieldInput: FieldVariantPatchSchema.optional(),
6524
6785
  fieldView: FieldVariantPatchSchema.optional(),
6525
6786
  fieldTable: FieldVariantPatchSchema.optional()
6526
6787
  }).partial();
6527
- var PatchResourceJsonSchema = import_zod41.z.object({
6528
- columns: import_zod41.z.record(import_zod41.z.string(), PatchColumnSchema)
6788
+ var PatchResourceJsonSchema = import_zod51.z.object({
6789
+ columns: import_zod51.z.record(import_zod51.z.string(), PatchColumnSchema)
6529
6790
  });
6530
6791
 
6531
6792
  // src/lib/crud/resource/WriteResourceJson.ts
@@ -7720,9 +7981,32 @@ var resolve4 = /* @__PURE__ */ __name(async (diff2, resolver = recommendedResolv
7720
7981
 
7721
7982
  // ../crouton-codegen/src/serialize.ts
7722
7983
  var RESOURCE_SCHEMA_URL = `https://ghentcdh.github.io/crouton/schema/v${CURRENT_RESOURCE_VERSION}/resource.schema.json`;
7984
+ var FIELD_INPUT_SCHEMA_BASE = `https://ghentcdh.github.io/crouton/schema/v${CURRENT_RESOURCE_VERSION}`;
7985
+ var stampFieldInputSchema = /* @__PURE__ */ __name((fi) => {
7986
+ const type = fi.type;
7987
+ if (!type) return fi;
7988
+ const def2 = fieldInputRegistry.get(type);
7989
+ if (!def2) return fi;
7990
+ const { $schema: _old, ...rest } = fi;
7991
+ return {
7992
+ $schema: `${FIELD_INPUT_SCHEMA_BASE}/${def2.schemaFile}.field-input.schema.json`,
7993
+ ...rest
7994
+ };
7995
+ }, "stampFieldInputSchema");
7723
7996
  var withResourceHeader = /* @__PURE__ */ __name((config, opts = {}) => {
7724
7997
  const { $schema: _schema, schemaVersion: _version, draft: existingDraft, kind: existingKind, ...rest } = config;
7725
7998
  const draft = opts.draft !== void 0 ? opts.draft : existingDraft;
7999
+ if (Array.isArray(rest.columns)) {
8000
+ rest.columns = rest.columns.map((col) => {
8001
+ const out = {
8002
+ ...col
8003
+ };
8004
+ if (out["fieldInput"] && typeof out["fieldInput"] === "object") out["fieldInput"] = stampFieldInputSchema(out["fieldInput"]);
8005
+ if (out["fieldView"] && typeof out["fieldView"] === "object") out["fieldView"] = stampFieldInputSchema(out["fieldView"]);
8006
+ if (out["fieldTable"] && typeof out["fieldTable"] === "object") out["fieldTable"] = stampFieldInputSchema(out["fieldTable"]);
8007
+ return out;
8008
+ });
8009
+ }
7726
8010
  return {
7727
8011
  $schema: RESOURCE_SCHEMA_URL,
7728
8012
  schemaVersion: CURRENT_RESOURCE_VERSION,
@@ -7952,12 +8236,12 @@ var makeSchemaExportName = /* @__PURE__ */ __name((config) => {
7952
8236
  var resolveFromRoot = /* @__PURE__ */ __name((root, p) => (0, import_node_path11.isAbsolute)(p) ? p : (0, import_node_path11.join)(root, p), "resolveFromRoot");
7953
8237
 
7954
8238
  // ../crouton-codegen/src/scaffold.ts
7955
- var import_zod42 = require("zod");
8239
+ var import_zod52 = require("zod");
7956
8240
  var import_promises5 = require("fs/promises");
7957
8241
  var import_node_path12 = require("path");
7958
8242
  var ScallfoldDatasourceSchema = DataSourceShape.extend({
7959
8243
  /** Folder name under `dataSourcesDir`. */
7960
- folder: import_zod42.z.string().default("default")
8244
+ folder: import_zod52.z.string().default("default")
7961
8245
  }).transform(transformDataSource);
7962
8246
 
7963
8247
  // ../crouton-codegen/src/datasource-scaffold.ts
@@ -8170,7 +8454,7 @@ ${stderr}`.trim()
8170
8454
  }, "prismaGenerate");
8171
8455
  var pullAndGenerate = /* @__PURE__ */ __name(async (input) => {
8172
8456
  const { root, prismaConfigPath, schemaPath } = input;
8173
- loadDotenv(root);
8457
+ loadDotenv((0, import_node_path15.dirname)(schemaPath));
8174
8458
  const backupPath = await backupSchema(schemaPath);
8175
8459
  const dbPull = await prismaDbPull(root, prismaConfigPath);
8176
8460
  if (!dbPull.ok) return {
@@ -8845,12 +9129,12 @@ DevResourcesController = _ts_decorate8([
8845
9129
  ], DevResourcesController);
8846
9130
 
8847
9131
  // src/lib/crud/enum-registry/enum-registry.types.ts
8848
- var import_zod43 = require("zod");
8849
- var EnumEntrySchema2 = import_zod43.z.object({
8850
- value: import_zod43.z.unknown(),
8851
- label: import_zod43.z.string()
9132
+ var import_zod53 = require("zod");
9133
+ var EnumEntrySchema2 = import_zod53.z.object({
9134
+ value: import_zod53.z.unknown(),
9135
+ label: import_zod53.z.string()
8852
9136
  });
8853
- var EnumRegistrySchema2 = import_zod43.z.record(import_zod43.z.string(), import_zod43.z.array(EnumEntrySchema2)).default({});
9137
+ var EnumRegistrySchema2 = import_zod53.z.record(import_zod53.z.string(), import_zod53.z.array(EnumEntrySchema2)).default({});
8854
9138
 
8855
9139
  // src/lib/crud/enum-registry/enum-registry.loader.ts
8856
9140
  var import_node_fs8 = require("fs");
@@ -8985,9 +9269,9 @@ var buildResourceDefinitions2 = /* @__PURE__ */ __name((schema, operations, enri
8985
9269
  }, "buildResourceDefinitions");
8986
9270
 
8987
9271
  // src/lib/crud/adapter/relation-type.ts
8988
- var import_zod44 = require("zod");
9272
+ var import_zod54 = require("zod");
8989
9273
  var unwrapZodType = /* @__PURE__ */ __name((type) => {
8990
- if (type instanceof import_zod44.ZodOptional || type instanceof import_zod44.ZodNullable) {
9274
+ if (type instanceof import_zod54.ZodOptional || type instanceof import_zod54.ZodNullable) {
8991
9275
  return unwrapZodType(type.unwrap());
8992
9276
  }
8993
9277
  return type;
@@ -8997,7 +9281,7 @@ var deriveRelationType = /* @__PURE__ */ __name((schema, columnId) => {
8997
9281
  const field = schema.shape[columnId];
8998
9282
  if (!field) return void 0;
8999
9283
  const inner = unwrapZodType(field);
9000
- return inner instanceof import_zod44.ZodArray ? "oneToMany" : "manyToOne";
9284
+ return inner instanceof import_zod54.ZodArray ? "oneToMany" : "manyToOne";
9001
9285
  }, "deriveRelationType");
9002
9286
  var deriveRelationTypeFromColumns = /* @__PURE__ */ __name((col, cols) => {
9003
9287
  const base = col.column ?? col.id;