nextjs-cms 0.5.19 → 0.5.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +12 -10
  2. package/dist/api/lib/serverActions.js +1 -1
  3. package/dist/api/routers/admins.js +1 -1
  4. package/dist/api/routers/gallery.js +1 -1
  5. package/dist/core/config/config-loader.d.ts +58 -48
  6. package/dist/core/config/config-loader.d.ts.map +1 -1
  7. package/dist/core/config/config-loader.js +137 -85
  8. package/dist/core/config/index.d.ts +1 -1
  9. package/dist/core/config/index.d.ts.map +1 -1
  10. package/dist/core/config/loader.d.ts.map +1 -1
  11. package/dist/core/config/loader.js +36 -1
  12. package/dist/core/factories/FieldFactory.d.ts +2 -1
  13. package/dist/core/factories/FieldFactory.d.ts.map +1 -1
  14. package/dist/core/factories/FieldFactory.js +4 -3
  15. package/dist/core/factories/SectionFactory.d.ts.map +1 -1
  16. package/dist/core/factories/SectionFactory.js +45 -7
  17. package/dist/core/fields/document.d.ts.map +1 -1
  18. package/dist/core/fields/document.js +1 -1
  19. package/dist/core/fields/photo.d.ts.map +1 -1
  20. package/dist/core/fields/photo.js +2 -2
  21. package/dist/core/fields/richText.d.ts.map +1 -1
  22. package/dist/core/fields/richText.js +1 -1
  23. package/dist/core/fields/select.d.ts +3 -3
  24. package/dist/core/fields/select.d.ts.map +1 -1
  25. package/dist/core/fields/select.js +19 -8
  26. package/dist/core/fields/selectMultiple.d.ts +2 -2
  27. package/dist/core/fields/selectMultiple.d.ts.map +1 -1
  28. package/dist/core/fields/selectMultiple.js +13 -6
  29. package/dist/core/fields/video.d.ts.map +1 -1
  30. package/dist/core/fields/video.js +1 -1
  31. package/dist/core/sections/category.d.ts +6 -6
  32. package/dist/core/sections/hasItems.d.ts +6 -6
  33. package/dist/core/sections/section.d.ts +3 -3
  34. package/dist/core/sections/section.js +2 -2
  35. package/dist/core/sections/simple.d.ts +2 -2
  36. package/dist/utils/constants.d.ts.map +1 -1
  37. package/package.json +4 -4
package/README.md CHANGED
@@ -37,19 +37,21 @@ Create a `cms.config.ts` file in your project root:
37
37
  import { CMSConfig } from 'nextjs-cms/core/config'
38
38
 
39
39
  export default {
40
- siteName: 'My CMS Site',
41
- sectionsFolder: './sections',
42
- api: {
43
- baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3000'
40
+ ui: {
41
+ title: 'My CMS Site',
42
+ defaultTheme: 'dark',
43
+ logo: '/logo.svg'
44
44
  },
45
- files: {
45
+ sections: {
46
+ path: './sections',
47
+ strict: false,
48
+ category: { allowRecursiveDelete: false }
49
+ },
50
+ media: {
46
51
  upload: {
47
- uploadPath: './public/uploads',
48
- keepFileExtension: true
52
+ path: './public/uploads',
53
+ preserveExtension: true
49
54
  }
50
- },
51
- database: {
52
- url: process.env.DATABASE_URL
53
55
  }
54
56
  } satisfies CMSConfig
55
57
  ```
@@ -14,7 +14,7 @@ import { readChunk } from 'read-chunk';
14
14
  import { fileTypeFromBuffer } from 'file-type';
15
15
  import { getCMSConfig } from '../../core/config/index.js';
16
16
  import through2 from 'through2';
17
- const uploadsFolder = getCMSConfig().files.upload.uploadPath;
17
+ const uploadsFolder = getCMSConfig().media.upload.path;
18
18
  export const getDocument = async (session, input) => {
19
19
  const { name, sectionName, fieldName } = input;
20
20
  // Sanitize the inputs
@@ -179,7 +179,7 @@ export const adminsRouter = router({
179
179
  id: z.string(),
180
180
  }))
181
181
  .mutation(async ({ input }) => {
182
- const uploadsFolder = getCMSConfig().files.upload.uploadPath;
182
+ const uploadsFolder = getCMSConfig().media.upload.path;
183
183
  /**
184
184
  * Check if the admin is not the master admin
185
185
  */
@@ -17,7 +17,7 @@ export const galleryRouter = router({
17
17
  referenceId: z.string(),
18
18
  }))
19
19
  .mutation(async ({ ctx, input }) => {
20
- const uploadsFolder = getCMSConfig().files.upload.uploadPath;
20
+ const uploadsFolder = getCMSConfig().media.upload.path;
21
21
  /**
22
22
  * Get the section information
23
23
  */
@@ -1,16 +1,23 @@
1
1
  import * as z from 'zod';
2
2
  declare const cmsConfigSchema: z.ZodObject<{
3
- sectionsFolder: z.ZodOptional<z.ZodString>;
4
- api: z.ZodOptional<z.ZodObject<{
5
- baseUrl: z.ZodString;
3
+ ui: z.ZodOptional<z.ZodObject<{
4
+ title: z.ZodOptional<z.ZodString>;
5
+ defaultTheme: z.ZodOptional<z.ZodString>;
6
+ logo: z.ZodOptional<z.ZodString>;
6
7
  }, z.core.$strip>>;
7
- siteName: z.ZodOptional<z.ZodString>;
8
- theme: z.ZodOptional<z.ZodString>;
9
- files: z.ZodOptional<z.ZodObject<{
10
- upload: z.ZodObject<{
11
- uploadPath: z.ZodString;
12
- keepFileExtension: z.ZodBoolean;
13
- }, z.core.$strip>;
8
+ debug: z.ZodOptional<z.ZodBoolean>;
9
+ sections: z.ZodOptional<z.ZodObject<{
10
+ path: z.ZodOptional<z.ZodString>;
11
+ strict: z.ZodOptional<z.ZodBoolean>;
12
+ category: z.ZodOptional<z.ZodObject<{
13
+ allowRecursiveDelete: z.ZodBoolean;
14
+ }, z.core.$strip>>;
15
+ }, z.core.$strip>>;
16
+ media: z.ZodOptional<z.ZodObject<{
17
+ upload: z.ZodOptional<z.ZodObject<{
18
+ path: z.ZodString;
19
+ preserveExtension: z.ZodBoolean;
20
+ }, z.core.$strip>>;
14
21
  images: z.ZodOptional<z.ZodObject<{
15
22
  thumbnail: z.ZodOptional<z.ZodObject<{
16
23
  width: z.ZodNumber;
@@ -21,40 +28,45 @@ declare const cmsConfigSchema: z.ZodObject<{
21
28
  watermark: z.ZodOptional<z.ZodBoolean>;
22
29
  }, z.core.$strip>>;
23
30
  }, z.core.$strip>>;
24
- sections: z.ZodOptional<z.ZodObject<{
25
- category: z.ZodObject<{
26
- allowRecursiveDelete: z.ZodBoolean;
27
- }, z.core.$strip>;
28
- }, z.core.$strip>>;
29
- db: z.ZodOptional<z.ZodObject<{
30
- schemaNamingConvention: z.ZodOptional<z.ZodObject<{
31
- tableCaseStyle: z.ZodOptional<z.ZodEnum<{
32
- camelCase: "camelCase";
33
- snakeCase: "snakeCase";
34
- pascalCase: "pascalCase";
35
- }>>;
36
- columnCaseStyle: z.ZodOptional<z.ZodEnum<{
37
- camelCase: "camelCase";
38
- snakeCase: "snakeCase";
39
- pascalCase: "pascalCase";
40
- }>>;
31
+ schemaGeneration: z.ZodOptional<z.ZodObject<{
32
+ drizzle: z.ZodOptional<z.ZodObject<{
33
+ enabled: z.ZodOptional<z.ZodBoolean>;
34
+ outDir: z.ZodOptional<z.ZodString>;
35
+ fileName: z.ZodOptional<z.ZodString>;
36
+ naming: z.ZodOptional<z.ZodObject<{
37
+ tables: z.ZodOptional<z.ZodEnum<{
38
+ camelCase: "camelCase";
39
+ snakeCase: "snakeCase";
40
+ pascalCase: "pascalCase";
41
+ }>>;
42
+ columns: z.ZodOptional<z.ZodEnum<{
43
+ camelCase: "camelCase";
44
+ snakeCase: "snakeCase";
45
+ pascalCase: "pascalCase";
46
+ }>>;
47
+ }, z.core.$strip>>;
41
48
  }, z.core.$strip>>;
42
49
  }, z.core.$strip>>;
43
- debug: z.ZodOptional<z.ZodBoolean>;
44
- strict: z.ZodOptional<z.ZodBoolean>;
45
50
  }, z.core.$strip>;
46
51
  export type CMSConfig = z.infer<typeof cmsConfigSchema>;
47
52
  export interface ComputedCMSConfig {
48
- sectionsFolder: string;
49
- api: {
50
- baseUrl: string;
53
+ ui: {
54
+ title: string;
55
+ defaultTheme: string;
56
+ logo: string;
57
+ };
58
+ debug: boolean;
59
+ sections: {
60
+ path: string;
61
+ strict: boolean;
62
+ category: {
63
+ allowRecursiveDelete: boolean;
64
+ };
51
65
  };
52
- siteName: string;
53
- theme: string;
54
- files: {
66
+ media: {
55
67
  upload: {
56
- uploadPath: string;
57
- keepFileExtension: boolean;
68
+ path: string;
69
+ preserveExtension: boolean;
58
70
  };
59
71
  images: {
60
72
  thumbnail: {
@@ -66,19 +78,17 @@ export interface ComputedCMSConfig {
66
78
  watermark: boolean;
67
79
  };
68
80
  };
69
- sections: {
70
- category: {
71
- allowRecursiveDelete: boolean;
72
- };
73
- };
74
- db: {
75
- schemaNamingConvention: {
76
- tableCaseStyle: 'camelCase' | 'snakeCase' | 'pascalCase';
77
- columnCaseStyle: 'camelCase' | 'snakeCase' | 'pascalCase';
81
+ schemaGeneration: {
82
+ drizzle: {
83
+ enabled: boolean;
84
+ outDir: string;
85
+ fileName: string;
86
+ naming: {
87
+ tables: 'camelCase' | 'snakeCase' | 'pascalCase';
88
+ columns: 'camelCase' | 'snakeCase' | 'pascalCase';
89
+ };
78
90
  };
79
91
  };
80
- debug: boolean;
81
- strict: boolean;
82
92
  }
83
93
  /**
84
94
  * Gets the CMS configuration, loading it lazily on first access.
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmGnB,CAAA;AAGF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAGvD,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE;QACH,MAAM,EAAE;YACJ,UAAU,EAAE,MAAM,CAAA;YAClB,iBAAiB,EAAE,OAAO,CAAA;SAC7B,CAAA;QACD,MAAM,EAAE;YACJ,SAAS,EAAE;gBACP,KAAK,EAAE,MAAM,CAAA;gBACb,MAAM,EAAE,MAAM,CAAA;gBACd,IAAI,EAAE,OAAO,CAAA;gBACb,OAAO,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,SAAS,EAAE,OAAO,CAAA;SACrB,CAAA;KACJ,CAAA;IACD,QAAQ,EAAE;QACN,QAAQ,EAAE;YACN,oBAAoB,EAAE,OAAO,CAAA;SAChC,CAAA;KACJ,CAAA;IACD,EAAE,EAAE;QACA,sBAAsB,EAAE;YACpB,cAAc,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;YACxD,eAAe,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;SAC5D,CAAA;KACJ,CAAA;IACD,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;CAClB;AAyHD;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAW1D"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+InB,CAAA;AAGF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAGvD,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE;QACA,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;KACf,CAAA;IACD,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE;YACN,oBAAoB,EAAE,OAAO,CAAA;SAChC,CAAA;KACJ,CAAA;IACD,KAAK,EAAE;QACH,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,iBAAiB,EAAE,OAAO,CAAA;SAC7B,CAAA;QACD,MAAM,EAAE;YACJ,SAAS,EAAE;gBACP,KAAK,EAAE,MAAM,CAAA;gBACb,MAAM,EAAE,MAAM,CAAA;gBACd,IAAI,EAAE,OAAO,CAAA;gBACb,OAAO,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,SAAS,EAAE,OAAO,CAAA;SACrB,CAAA;KACJ,CAAA;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE;YACL,OAAO,EAAE,OAAO,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE;gBACJ,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;gBAChD,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;aACpD,CAAA;SACJ,CAAA;KACJ,CAAA;CACJ;AAmID;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAW1D"}
@@ -8,40 +8,76 @@ import { loadConfigModule } from './loader.js';
8
8
  // 1. Define config schema
9
9
  const cmsConfigSchema = z.object({
10
10
  /**
11
- * The folder where the sections are located
11
+ * UI configuration for the admin panel
12
12
  */
13
- sectionsFolder: z.string().optional(),
14
- api: z
13
+ ui: z
15
14
  .object({
16
15
  /**
17
- * The base URL of the cms
16
+ * The title displayed in the admin UI
18
17
  */
19
- baseUrl: z.string(),
18
+ title: z.string().optional(),
19
+ /**
20
+ * The default theme for the admin UI
21
+ */
22
+ defaultTheme: z.string().optional(),
23
+ /**
24
+ * Path to the logo image (relative to public folder)
25
+ */
26
+ logo: z.string().optional(),
20
27
  })
21
28
  .optional(),
22
29
  /**
23
- * The name of the site
30
+ * Enable debug logging
31
+ */
32
+ debug: z.boolean().optional(),
33
+ /**
34
+ * Sections configuration
24
35
  */
25
- siteName: z.string().optional(),
26
- theme: z.string().optional(),
36
+ sections: z
37
+ .object({
38
+ /**
39
+ * The folder path where sections are located
40
+ */
41
+ path: z.string().optional(),
42
+ /**
43
+ * Whether to enable strict mode for section loading.
44
+ * When true, any section loading error will prevent all sections from loading.
45
+ * @default false
46
+ */
47
+ strict: z.boolean().optional(),
48
+ /**
49
+ * Category section configuration
50
+ */
51
+ category: z
52
+ .object({
53
+ /**
54
+ * Whether to allow recursive deletion
55
+ */
56
+ allowRecursiveDelete: z.boolean(),
57
+ })
58
+ .optional(),
59
+ })
60
+ .optional(),
27
61
  /**
28
- * Files configuration
62
+ * Media configuration (uploads, images)
29
63
  */
30
- files: z
64
+ media: z
31
65
  .object({
32
66
  /**
33
67
  * Upload configuration
34
68
  */
35
- upload: z.object({
69
+ upload: z
70
+ .object({
36
71
  /**
37
- * The path where the files are uploaded
72
+ * The path where files are uploaded
38
73
  */
39
- uploadPath: z.string(),
74
+ path: z.string(),
40
75
  /**
41
- * Whether to keep the file extension
76
+ * Whether to preserve the file extension
42
77
  */
43
- keepFileExtension: z.boolean(),
44
- }),
78
+ preserveExtension: z.boolean(),
79
+ })
80
+ .optional(),
45
81
  /**
46
82
  * Images configuration
47
83
  */
@@ -66,96 +102,114 @@ const cmsConfigSchema = z.object({
66
102
  .optional(),
67
103
  })
68
104
  .optional(),
69
- sections: z
70
- .object({
71
- category: z.object({
72
- /**
73
- * Whether to allow recursive deletion
74
- */
75
- allowRecursiveDelete: z.boolean(),
76
- }),
77
- })
78
- .optional(),
79
105
  /**
80
- * Database configuration
106
+ * Schema generation configuration
81
107
  */
82
- db: z
108
+ schemaGeneration: z
83
109
  .object({
84
- schemaNamingConvention: z
110
+ /**
111
+ * Drizzle schema generation configuration
112
+ */
113
+ drizzle: z
85
114
  .object({
86
115
  /**
87
- * The case style of the table name
116
+ * Whether schema generation is enabled
88
117
  */
89
- tableCaseStyle: z.enum(['camelCase', 'snakeCase', 'pascalCase']).optional(),
118
+ enabled: z.boolean().optional(),
90
119
  /**
91
- * The case style of the column name
120
+ * Output directory for generated schemas
92
121
  */
93
- columnCaseStyle: z.enum(['camelCase', 'snakeCase', 'pascalCase']).optional(),
122
+ outDir: z.string().optional(),
123
+ /**
124
+ * Output file name
125
+ */
126
+ fileName: z.string().optional(),
127
+ /**
128
+ * Naming conventions for generated schemas
129
+ */
130
+ naming: z
131
+ .object({
132
+ /**
133
+ * The case style of the table name
134
+ */
135
+ tables: z.enum(['camelCase', 'snakeCase', 'pascalCase']).optional(),
136
+ /**
137
+ * The case style of the column name
138
+ */
139
+ columns: z.enum(['camelCase', 'snakeCase', 'pascalCase']).optional(),
140
+ })
141
+ .optional(),
94
142
  })
95
143
  .optional(),
96
144
  })
97
145
  .optional(),
98
- debug: z.boolean().optional(),
99
- /**
100
- * Whether to enable strict mode.
101
- * @default false
102
- */
103
- strict: z.boolean().optional(),
104
146
  });
105
147
  // Merge utility function
106
148
  function mergeConfig(defaults, userConfig) {
107
149
  return {
108
- sectionsFolder: userConfig.sectionsFolder ?? defaults.sectionsFolder,
109
- siteName: userConfig.siteName ?? defaults.siteName,
110
- strict: userConfig.strict ?? defaults.strict,
111
- api: {
112
- baseUrl: userConfig.api?.baseUrl ?? defaults.api.baseUrl,
150
+ ui: {
151
+ title: userConfig.ui?.title ?? defaults.ui.title,
152
+ defaultTheme: userConfig.ui?.defaultTheme ?? defaults.ui.defaultTheme,
153
+ logo: userConfig.ui?.logo ?? defaults.ui.logo,
113
154
  },
114
- theme: userConfig.theme ?? defaults.theme,
115
- files: {
155
+ debug: userConfig.debug ?? defaults.debug,
156
+ sections: {
157
+ path: userConfig.sections?.path ?? defaults.sections.path,
158
+ strict: userConfig.sections?.strict ?? defaults.sections.strict,
159
+ category: {
160
+ allowRecursiveDelete: userConfig.sections?.category?.allowRecursiveDelete ??
161
+ defaults.sections.category.allowRecursiveDelete,
162
+ },
163
+ },
164
+ media: {
116
165
  upload: {
117
- uploadPath: userConfig.files?.upload?.uploadPath ?? defaults.files.upload.uploadPath,
118
- keepFileExtension: userConfig.files?.upload?.keepFileExtension ?? defaults.files.upload.keepFileExtension,
166
+ path: userConfig.media?.upload?.path ?? defaults.media.upload.path,
167
+ preserveExtension: userConfig.media?.upload?.preserveExtension ?? defaults.media.upload.preserveExtension,
119
168
  },
120
169
  images: {
121
170
  thumbnail: {
122
- width: userConfig.files?.images?.thumbnail?.width ?? defaults.files.images.thumbnail.width,
123
- height: userConfig.files?.images?.thumbnail?.height ?? defaults.files.images.thumbnail.height,
124
- crop: userConfig.files?.images?.thumbnail?.crop ?? defaults.files.images.thumbnail.crop,
125
- quality: userConfig.files?.images?.thumbnail?.quality ?? defaults.files.images.thumbnail.quality,
171
+ width: userConfig.media?.images?.thumbnail?.width ?? defaults.media.images.thumbnail.width,
172
+ height: userConfig.media?.images?.thumbnail?.height ?? defaults.media.images.thumbnail.height,
173
+ crop: userConfig.media?.images?.thumbnail?.crop ?? defaults.media.images.thumbnail.crop,
174
+ quality: userConfig.media?.images?.thumbnail?.quality ?? defaults.media.images.thumbnail.quality,
126
175
  },
127
- watermark: userConfig.files?.images?.watermark ?? defaults.files.images.watermark,
176
+ watermark: userConfig.media?.images?.watermark ?? defaults.media.images.watermark,
128
177
  },
129
178
  },
130
- sections: {
131
- category: {
132
- allowRecursiveDelete: userConfig.sections?.category?.allowRecursiveDelete ??
133
- defaults.sections.category.allowRecursiveDelete,
134
- },
135
- },
136
- db: {
137
- schemaNamingConvention: {
138
- tableCaseStyle: userConfig.db?.schemaNamingConvention?.tableCaseStyle ??
139
- defaults.db.schemaNamingConvention.tableCaseStyle,
140
- columnCaseStyle: userConfig.db?.schemaNamingConvention?.columnCaseStyle ??
141
- defaults.db.schemaNamingConvention.columnCaseStyle,
179
+ schemaGeneration: {
180
+ drizzle: {
181
+ enabled: userConfig.schemaGeneration?.drizzle?.enabled ?? defaults.schemaGeneration.drizzle.enabled,
182
+ outDir: userConfig.schemaGeneration?.drizzle?.outDir ?? defaults.schemaGeneration.drizzle.outDir,
183
+ fileName: userConfig.schemaGeneration?.drizzle?.fileName ?? defaults.schemaGeneration.drizzle.fileName,
184
+ naming: {
185
+ tables: userConfig.schemaGeneration?.drizzle?.naming?.tables ??
186
+ defaults.schemaGeneration.drizzle.naming.tables,
187
+ columns: userConfig.schemaGeneration?.drizzle?.naming?.columns ??
188
+ defaults.schemaGeneration.drizzle.naming.columns,
189
+ },
142
190
  },
143
191
  },
144
- debug: userConfig.debug ?? defaults.debug,
145
192
  };
146
193
  }
147
194
  // Default configuration values
148
195
  const defaultConfig = {
149
- sectionsFolder: 'sections',
150
- siteName: 'nextjs-cms',
151
- api: {
152
- baseUrl: '/api',
196
+ ui: {
197
+ title: 'nextjs-cms',
198
+ defaultTheme: 'dark',
199
+ logo: '/logo.svg',
200
+ },
201
+ debug: false,
202
+ sections: {
203
+ path: 'sections',
204
+ strict: false,
205
+ category: {
206
+ allowRecursiveDelete: false,
207
+ },
153
208
  },
154
- theme: 'dark',
155
- files: {
209
+ media: {
156
210
  upload: {
157
- uploadPath: './public/content',
158
- keepFileExtension: true,
211
+ path: './public/content',
212
+ preserveExtension: true,
159
213
  },
160
214
  images: {
161
215
  thumbnail: {
@@ -167,19 +221,17 @@ const defaultConfig = {
167
221
  watermark: false,
168
222
  },
169
223
  },
170
- sections: {
171
- category: {
172
- allowRecursiveDelete: false,
173
- },
174
- },
175
- db: {
176
- schemaNamingConvention: {
177
- tableCaseStyle: 'pascalCase',
178
- columnCaseStyle: 'camelCase',
224
+ schemaGeneration: {
225
+ drizzle: {
226
+ enabled: true,
227
+ outDir: './dynamic-schemas',
228
+ fileName: 'schema.ts',
229
+ naming: {
230
+ tables: 'pascalCase',
231
+ columns: 'camelCase',
232
+ },
179
233
  },
180
234
  },
181
- debug: false,
182
- strict: false,
183
235
  };
184
236
  /*const error = (error: string, greyMsg = ''): string => {
185
237
  return `${chalk.bgRed.bold(' Error ')} ${error} ${greyMsg ? chalk.grey(greyMsg) : ''}`.trim()
@@ -1,3 +1,3 @@
1
1
  export { getCMSConfig } from './config-loader.js';
2
- export type { CMSConfig } from './config-loader.js';
2
+ export type { CMSConfig, ComputedCMSConfig } from './config-loader.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,QAAO,OAwCnC,CAAA"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,gBAAgB,QAAO,OA6CnC,CAAA"}
@@ -3,6 +3,37 @@ import { resolve, join } from 'path';
3
3
  import { createRequire } from 'module';
4
4
  // Create a require function that works in ES modules
5
5
  const safeRequire = createRequire(import.meta.url);
6
+ /**
7
+ * See SectionFactory.ts: during dev/tests we may runtime-load TS that contains NodeNext-style `./x.js` specifiers
8
+ * pointing at `./x.ts` in the source tree. Patch CJS resolution to fall back to `.ts` for relative imports.
9
+ */
10
+ const withPatchedCjsResolveJsToTs = (fn) => {
11
+ const NodeModule = safeRequire('module');
12
+ const originalResolve = NodeModule._resolveFilename;
13
+ NodeModule._resolveFilename = function (request, parent, isMain, options) {
14
+ try {
15
+ return originalResolve.call(this, request, parent, isMain, options);
16
+ }
17
+ catch (err) {
18
+ if (typeof request === 'string' && /^(\.{1,2}\/.*)\.js$/.test(request)) {
19
+ const tsRequest = request.replace(/\.js$/, '.ts');
20
+ try {
21
+ return originalResolve.call(this, tsRequest, parent, isMain, options);
22
+ }
23
+ catch {
24
+ // fall through to rethrow original error
25
+ }
26
+ }
27
+ throw err;
28
+ }
29
+ };
30
+ try {
31
+ return fn();
32
+ }
33
+ finally {
34
+ NodeModule._resolveFilename = originalResolve;
35
+ }
36
+ };
6
37
  export const loadConfigModule = () => {
7
38
  const cwd = process.cwd();
8
39
  const candidates = [
@@ -30,7 +61,11 @@ export const loadConfigModule = () => {
30
61
  throw new Error(`Unable to load TypeScript config '${found}'. Install 'esbuild-register', or provide lz.config.js/json.`);
31
62
  }
32
63
  }
33
- const mod = safeRequire(found);
64
+ const mod = process.env.NODE_ENV === 'test'
65
+ ? isTs
66
+ ? withPatchedCjsResolveJsToTs(() => safeRequire(found))
67
+ : safeRequire(found)
68
+ : safeRequire(found);
34
69
  unregister?.();
35
70
  return mod.default ?? mod;
36
71
  }
@@ -50,7 +50,8 @@ export declare class FieldFactory {
50
50
  private getSectionInfo;
51
51
  /**
52
52
  * Prepare a field for use
53
- * Fields are already instances (resolved in Section constructor), so we just need to set values
53
+ * Fields are instances (resolved from configs), but they need to be built to initialize
54
+ * (e.g., fetch select options from database for db/section types)
54
55
  * @param field
55
56
  */
56
57
  private prepareField;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldFactory.d.ts","sourceRoot":"","sources":["../../../src/core/factories/FieldFactory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,KAAK,eAAe,GACd;IACI,IAAI,EAAE,KAAK,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,KAAK,CAAA;CACjB,GACD;IACI,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAA;AAEP,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,YAAY,CAA4B;IAGhD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAY;IAEjD;;OAEG;gBACS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,eAAe;IASnE;;OAEG;IACU,UAAU;YAUT,aAAa;YASb,qBAAqB;IAkEnC;;;;OAIG;YACW,qBAAqB;IAuCnC;;;;OAIG;YACW,cAAc;IAuB5B;;;;OAIG;YACW,YAAY;IAgB1B,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACU,cAAc;IAqB3B;;;OAGG;IACH,OAAO,CAAC,UAAU;IA4ElB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACI,gBAAgB;;;;;;;;;;;;;;;IAmEvB,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAErC;IACD,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,IAAI,KAAK,IAAI,OAAO,CAEnB;CACJ"}
1
+ {"version":3,"file":"FieldFactory.d.ts","sourceRoot":"","sources":["../../../src/core/factories/FieldFactory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,KAAK,eAAe,GACd;IACI,IAAI,EAAE,KAAK,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,KAAK,CAAA;CACjB,GACD;IACI,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAC1B,CAAA;AAEP,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,YAAY,CAA4B;IAGhD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAY;IAEjD;;OAEG;gBACS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,eAAe;IASnE;;OAEG;IACU,UAAU;YAUT,aAAa;YASb,qBAAqB;IAkEnC;;;;OAIG;YACW,qBAAqB;IAuCnC;;;;OAIG;YACW,cAAc;IAuB5B;;;;;OAKG;YACW,YAAY;IAiB1B,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACU,cAAc;IAqB3B;;;OAGG;IACH,OAAO,CAAC,UAAU;IA4ElB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACI,gBAAgB;;;;;;;;;;;;;;;IAmEvB,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAErC;IACD,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,IAAI,KAAK,IAAI,OAAO,CAEnB;CACJ"}
@@ -177,12 +177,13 @@ export class FieldFactory {
177
177
  }
178
178
  /**
179
179
  * Prepare a field for use
180
- * Fields are already instances (resolved in Section constructor), so we just need to set values
180
+ * Fields are instances (resolved from configs), but they need to be built to initialize
181
+ * (e.g., fetch select options from database for db/section types)
181
182
  * @param field
182
183
  */
183
184
  async prepareField(field) {
184
- // Fields are already instances - no need to build them
185
- // They were resolved from configs in the Section constructor
185
+ // Build the field to initialize it (e.g., fetch select options from DB)
186
+ await field.build();
186
187
  if (this.type === 'edit') {
187
188
  /**
188
189
  * If it's an edit operation, get the value from the database and set it
@@ -1 +1 @@
1
- {"version":3,"file":"SectionFactory.d.ts","sourceRoot":"","sources":["../../../src/core/factories/SectionFactory.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6CrD,KAAK,gBAAgB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAA;AAY3F,qBAAa,cAAc;IACvB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,WAAiD;IAE9E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAwC;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAc;IAE5C,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAA+B;IACrE,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA+B;IACnE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAI;IAE7B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA2C;IAC5E,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAQ;IACxC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAQ;IAErC,MAAM,CAAC,aAAa,IAAI,IAAI;IAwB5B;;;;OAIG;WACU,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI3F;;;;;OAKG;WACU,mBAAmB,CAAC,EAC7B,IAAI,EACJ,KAAK,GACR,EAAE;QACC,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;QACpC,KAAK,EAAE;YACH,EAAE,EAAE,MAAM,CAAA;YACV,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;SACjC,CAAA;KACJ,GAAG,OAAO,CAAC;QACR,MAAM,EAAE,mBAAmB,EAAE,CAAA;QAC7B,SAAS,EAAE,qBAAqB,EAAE,CAAA;QAClC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;QACjC,KAAK,EAAE,MAAM,EAAE,CAAA;KAClB,CAAC;IA+BF;;;;;OAKG;WACU,UAAU,CAAC,EACpB,IAAI,EACJ,IAAI,GACP,EAAE;QACC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;KACvC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKpC;;;;;;OAMG;WACU,kBAAkB,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,KAAK,GACR,EAAE;QACC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;QACpC,KAAK,EAAE;YACH,EAAE,EAAE,MAAM,CAAA;YACV,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;SACjC,CAAA;KACJ,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKpC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,MAAM,eAAe,GAAG,aAAa,GAAG,eAAe,CAAA;QAC9D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACrB,GAAG,eAAe,GAAG,aAAa,GAAG,eAAe;IAYrD;;;;;;;;;OASG;mBACkB,GAAG;IA6FxB;;;;OAIG;mBACkB,eAAe;IAuHpC,OAAO,CAAC,MAAM,CAAC,YAAY;IA+D3B,OAAO,CAAC,MAAM,CAAC,IAAI;CAatB"}
1
+ {"version":3,"file":"SectionFactory.d.ts","sourceRoot":"","sources":["../../../src/core/factories/SectionFactory.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAoFrD,KAAK,gBAAgB,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAA;AAY3F,qBAAa,cAAc;IACvB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,WAAiD;IAE9E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAwC;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAc;IAE5C,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAA+B;IACrE,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA+B;IACnE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAI;IAE7B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA2C;IAC5E,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAQ;IACxC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAQ;IAErC,MAAM,CAAC,aAAa,IAAI,IAAI;IAwB5B;;;;OAIG;WACU,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI3F;;;;;OAKG;WACU,mBAAmB,CAAC,EAC7B,IAAI,EACJ,KAAK,GACR,EAAE;QACC,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;QACpC,KAAK,EAAE;YACH,EAAE,EAAE,MAAM,CAAA;YACV,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;SACjC,CAAA;KACJ,GAAG,OAAO,CAAC;QACR,MAAM,EAAE,mBAAmB,EAAE,CAAA;QAC7B,SAAS,EAAE,qBAAqB,EAAE,CAAA;QAClC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;QACjC,KAAK,EAAE,MAAM,EAAE,CAAA;KAClB,CAAC;IA+BF;;;;;OAKG;WACU,UAAU,CAAC,EACpB,IAAI,EACJ,IAAI,GACP,EAAE;QACC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;KACvC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKpC;;;;;;OAMG;WACU,kBAAkB,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,KAAK,GACR,EAAE;QACC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;QACpC,KAAK,EAAE;YACH,EAAE,EAAE,MAAM,CAAA;YACV,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;SACjC,CAAA;KACJ,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKpC;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,MAAM,eAAe,GAAG,aAAa,GAAG,eAAe,CAAA;QAC9D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACrB,GAAG,eAAe,GAAG,aAAa,GAAG,eAAe;IAYrD;;;;;;;;;OASG;mBACkB,GAAG;IA6FxB;;;;OAIG;mBACkB,eAAe;IAuHpC,OAAO,CAAC,MAAM,CAAC,YAAY;IA+D3B,OAAO,CAAC,MAAM,CAAC,IAAI;CAatB"}
@@ -18,6 +18,40 @@ const safeRequire = createRequire(import.meta.url);
18
18
  * Node's require cache ensures each TS module is evaluated once.
19
19
  */
20
20
  let tsLoaderRegistered = false;
21
+ /**
22
+ * When we runtime-load TS (via esbuild-register) using CommonJS `require`, our TS sources may contain NodeNext-style
23
+ * specifiers like `./foo.js` that point at `./foo.ts` in the source tree. Node's CJS resolver won't find `foo.js`.
24
+ *
25
+ * In normal builds this is fine because `dist/foo.js` exists, but in dev/tests we load from `src/`.
26
+ * This helper patches Node's CJS resolver to fall back from `*.js` → `*.ts` for relative imports.
27
+ */
28
+ const withPatchedCjsResolveJsToTs = (fn) => {
29
+ const NodeModule = safeRequire('module');
30
+ const originalResolve = NodeModule._resolveFilename;
31
+ NodeModule._resolveFilename = function (request, parent, isMain, options) {
32
+ try {
33
+ return originalResolve.call(this, request, parent, isMain, options);
34
+ }
35
+ catch (err) {
36
+ if (typeof request === 'string' && /^(\.{1,2}\/.*)\.js$/.test(request)) {
37
+ const tsRequest = request.replace(/\.js$/, '.ts');
38
+ try {
39
+ return originalResolve.call(this, tsRequest, parent, isMain, options);
40
+ }
41
+ catch {
42
+ // fall through to rethrow original error
43
+ }
44
+ }
45
+ throw err;
46
+ }
47
+ };
48
+ try {
49
+ return fn();
50
+ }
51
+ finally {
52
+ NodeModule._resolveFilename = originalResolve;
53
+ }
54
+ };
21
55
  /**
22
56
  * Require a TypeScript module at runtime.
23
57
  * @param absPath - The absolute path to the section file.
@@ -35,7 +69,11 @@ const requireModuleRuntime = (absPath) => {
35
69
  throw new Error(`Cannot load section file '${absPath}' (TypeScript). Install 'esbuild-register' in nextjs-cms/cms or provide JS files.`);
36
70
  }
37
71
  }
38
- const mod = safeRequire(absPath);
72
+ const mod = process.env.NODE_ENV === 'test'
73
+ ? isTs
74
+ ? withPatchedCjsResolveJsToTs(() => safeRequire(absPath))
75
+ : safeRequire(absPath)
76
+ : safeRequire(absPath);
39
77
  // Only return the default export, ignore named exports
40
78
  return mod?.default;
41
79
  };
@@ -270,11 +308,11 @@ export class SectionFactory {
270
308
  const sections = [];
271
309
  try {
272
310
  const sectionFiles = await glob('**/*.section.ts', {
273
- cwd: cmsConfig.sectionsFolder,
311
+ cwd: cmsConfig.sections.path,
274
312
  });
275
313
  for (const file of sectionFiles) {
276
314
  try {
277
- const absPath = resolve(cmsConfig.sectionsFolder, file);
315
+ const absPath = resolve(cmsConfig.sections.path, file);
278
316
  const defaultExport = requireModuleRuntime(absPath);
279
317
  if (!defaultExport) {
280
318
  if (!this.sectionFetchingErrors[file]) {
@@ -323,7 +361,7 @@ export class SectionFactory {
323
361
  /**
324
362
  * Remove the section from the cache so it will be reloaded next time.
325
363
  */
326
- delete require.cache[resolve(cmsConfig.sectionsFolder, file)];
364
+ delete require.cache[resolve(cmsConfig.sections.path, file)];
327
365
  }
328
366
  }
329
367
  }
@@ -335,7 +373,7 @@ export class SectionFactory {
335
373
  * If `strict` mode is enabled,
336
374
  * don't return sections if there are errors.
337
375
  */
338
- if (cmsConfig.strict && this.errorCount > 0) {
376
+ if (cmsConfig.sections.strict && this.errorCount > 0) {
339
377
  return [];
340
378
  }
341
379
  log(`Loaded ${sections.length} section(s)`);
@@ -349,7 +387,7 @@ export class SectionFactory {
349
387
  return;
350
388
  this.watcherStarted = true;
351
389
  const watcher = chokidar.watch('**/*.section.ts', {
352
- cwd: cmsConfig.sectionsFolder,
390
+ cwd: cmsConfig.sections.path,
353
391
  ignoreInitial: true,
354
392
  });
355
393
  log('Starting section watcher in dev mode...');
@@ -360,7 +398,7 @@ export class SectionFactory {
360
398
  * @param relPath
361
399
  */
362
400
  const invalidateForRelPath = (relPath) => {
363
- const absPath = resolve(cmsConfig.sectionsFolder, relPath);
401
+ const absPath = resolve(cmsConfig.sections.path, relPath);
364
402
  const req = eval('require');
365
403
  try {
366
404
  const resolved = req.resolve(absPath);
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/core/fields/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAQ1C,QAAA,MAAM,YAAY;IACd;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;kBAEL,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,aAAc,SAAQ,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5D,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAkB;IAC/D,QAAQ,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAA;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA;IAE7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAqE;IAE1G;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAU;IAEpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAyC;gBAE3D,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IAqDxC,eAAe;;kBAtED,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;IA+EjD,iBAAiB,CAAC,EACpB,WAAW,EACX,MAAM,EACN,aAAiB,GACpB,EAAE;QACC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;QACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAClC,GAAG,OAAO,CAAC,UAAU,CAAC;IAevB;;OAEG;IACG,WAAW;IAiCK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAezD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIX,WAAW,CAAC,KAAK,EAAE,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,GAAG;IAQnB,OAAO,CAAC,IAAI,EAAE,IAAI;IAK3B,aAAa;IAab;;OAEG;IACG,oBAAoB;CAoD7B;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEpF,QAAA,MAAM,aAAa;IArRf;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;kBA0QL,CAAA;AAEF,QAAA,MAAM,yBAAyB;;;IA1R3B;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;kBAgRL,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,mBAAmB,CAmBvF"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/core/fields/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAIxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAQ1C,QAAA,MAAM,YAAY;IACd;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;kBAEL,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,aAAc,SAAQ,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5D,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAkB;IAC/D,QAAQ,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAA;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA;IAE7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAqE;IAE1G;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAU;IAEpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAmC;gBAErD,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IAqDxC,eAAe;;kBAtED,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;IA+EjD,iBAAiB,CAAC,EACpB,WAAW,EACX,MAAM,EACN,aAAiB,GACpB,EAAE;QACC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;QACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAClC,GAAG,OAAO,CAAC,UAAU,CAAC;IAevB;;OAEG;IACG,WAAW;IAiCK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAezD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIX,WAAW,CAAC,KAAK,EAAE,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,GAAG;IAQnB,OAAO,CAAC,IAAI,EAAE,IAAI;IAK3B,aAAa;IAab;;OAEG;IACG,oBAAoB;CAoD7B;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEpF,QAAA,MAAM,aAAa;IArRf;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;kBA0QL,CAAA;AAEF,QAAA,MAAM,yBAAyB;;;IA1R3B;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;kBAgRL,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,mBAAmB,CAmBvF"}
@@ -42,7 +42,7 @@ export class DocumentField extends FileField {
42
42
  _buffer;
43
43
  _folder;
44
44
  _allowedExtensions;
45
- uploadsFolder = getCMSConfig().files.upload.uploadPath;
45
+ uploadsFolder = getCMSConfig().media.upload.path;
46
46
  constructor(config, file) {
47
47
  super(config, 'document');
48
48
  if (file) {
@@ -1 +1 @@
1
- {"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"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"}
@@ -77,7 +77,7 @@ export class PhotoField extends FileField {
77
77
  extensions;
78
78
  thumbnail;
79
79
  removeExtension;
80
- uploadsFolder = cmsConfig.files.upload.uploadPath;
80
+ uploadsFolder = cmsConfig.media.upload.path;
81
81
  /**
82
82
  * _file is the file object if it's present
83
83
  * Whereas the value is the path to the file
@@ -95,7 +95,7 @@ export class PhotoField extends FileField {
95
95
  this.blurPlaceholder = config.blurPlaceholder;
96
96
  this.size = config.size;
97
97
  this.maxFileSize = config.maxFileSize ?? { size: 2, unit: 'mb' };
98
- this.thumbnail = config.thumbnail ?? cmsConfig.files.images.thumbnail;
98
+ this.thumbnail = config.thumbnail ?? cmsConfig.media.images.thumbnail;
99
99
  this.removeExtension = config.removeExtension ?? true;
100
100
  this.extensions = config.fileType ?? ['jpeg'];
101
101
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"richText.d.ts","sourceRoot":"","sources":["../../../src/core/fields/richText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,KAAK,EAAyB,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,QAAA,MAAM,uBAAuB;IACzB;;;;;OAKG;;;;;;;;;;;;;;;;;;IAgBH;;OAEG;;;;;;;;kBAGL,CAAA;AAkCF,QAAA,MAAM,YAAY;;;;;;;QA5Dd;;;;;WAKG;;;;;;;;;;;;;;;;;;QAgBH;;WAEG;;;;;;;;;;;;;;;kCAwCL,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,aAAc,SAAQ,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;IACzD,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAkB;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAAG,KAAK,CAAA;IAC3E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAE1B,OAAO,CAAC,aAAa,CAIb;IAER,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAyC;gBAE3D,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;IAsB3C;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIF,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAY/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,aAAa;IAWb;;OAEG;IACH,mBAAmB;IAuBb,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA2C3D;;OAEG;IACG,oBAAoB;IA0BJ,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAYnG,yBAAyB;CA2D1C;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAWpF,QAAA,MAAM,aAAa;;;;;;;QA7Uf;;;;;WAKG;;;;;;;;;;;;;;;;;;QAgBH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAyTL,CAAA;AAEF,QAAA,MAAM,yBAAyB;;;;;;;QAlV3B;;;;;WAKG;;;;;;;;;;;;;;;;;;QAgBH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAoUN,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,mBAAmB,CAmBvF"}
1
+ {"version":3,"file":"richText.d.ts","sourceRoot":"","sources":["../../../src/core/fields/richText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,KAAK,EAAyB,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAcxB,QAAA,MAAM,uBAAuB;IACzB;;;;;OAKG;;;;;;;;;;;;;;;;;;IAgBH;;OAEG;;;;;;;;kBAGL,CAAA;AAkCF,QAAA,MAAM,YAAY;;;;;;;QA5Dd;;;;;WAKG;;;;;;;;;;;;;;;;;;QAgBH;;WAEG;;;;;;;;;;;;;;;kCAwCL,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,aAAc,SAAQ,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;IACzD,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAkB;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAAG,KAAK,CAAA;IAC3E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAE1B,OAAO,CAAC,aAAa,CAIb;IAER,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAmC;gBAErD,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;IAsB3C;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIF,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAY/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB,aAAa;IAWb;;OAEG;IACH,mBAAmB;IAuBb,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA2C3D;;OAEG;IACG,oBAAoB;IA0BJ,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAYnG,yBAAyB;CA2D1C;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAWpF,QAAA,MAAM,aAAa;;;;;;;QA7Uf;;;;;WAKG;;;;;;;;;;;;;;;;;;QAgBH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAyTL,CAAA;AAEF,QAAA,MAAM,yBAAyB;;;;;;;QAlV3B;;;;;WAKG;;;;;;;;;;;;;;;;;;QAgBH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAoUN,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,mBAAmB,CAmBvF"}
@@ -82,7 +82,7 @@ export class RichTextField extends Field {
82
82
  allowImageUploads;
83
83
  sanitize;
84
84
  _inlinePhotos = [];
85
- uploadsFolder = getCMSConfig().files.upload.uploadPath;
85
+ uploadsFolder = getCMSConfig().media.upload.path;
86
86
  constructor(config) {
87
87
  super(config, 'rich_text');
88
88
  this.maxLength = config.maxLength;
@@ -161,7 +161,7 @@ export declare class SelectField extends Field<'select', SelectFieldConfig> {
161
161
  */
162
162
  private checkDestinationDBTableAndColumns;
163
163
  /**
164
- * Build the field to be used in a form
164
+ * Build the field to be rendered in a form
165
165
  */
166
166
  build(): Promise<void>;
167
167
  private fetchOptions;
@@ -177,7 +177,7 @@ export declare class SelectField extends Field<'select', SelectFieldConfig> {
177
177
  private checkDBConfig;
178
178
  checkRequired(): void;
179
179
  /**
180
- * Prepare the field for submission
180
+ * Prepare and build the field for submission
181
181
  */
182
182
  prepareForSubmission(): Promise<void>;
183
183
  }
@@ -346,8 +346,8 @@ declare const selectFieldConfigSchema: z.ZodIntersection<z.ZodUnion<readonly [z.
346
346
  }, z.core.$strict>]>, z.ZodObject<{
347
347
  type: z.ZodLiteral<"select">;
348
348
  optionsType: z.ZodEnum<{
349
- section: "section";
350
349
  db: "db";
350
+ section: "section";
351
351
  static: "static";
352
352
  }>;
353
353
  build: z.ZodFunction<z.core.$ZodFunctionArgs, z.ZodCustom<SelectField, SelectField>>;
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/core/fields/select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/core/fields/select.ts"],"names":[],"mappings":"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"}
@@ -70,8 +70,9 @@ export class SelectField extends Field {
70
70
  constructor(config) {
71
71
  super(config, 'select');
72
72
  this.checkValueExists = config.checkValueExists ?? false;
73
+ // destinationDb is allowed in all modes (static, db, section)
74
+ this.destinationDb = config.destinationDb;
73
75
  if (config.section) {
74
- this.destinationDb = config.destinationDb;
75
76
  this.section = config.section;
76
77
  }
77
78
  /**
@@ -306,7 +307,7 @@ export class SelectField extends Field {
306
307
  }
307
308
  }
308
309
  /**
309
- * Build the field to be used in a form
310
+ * Build the field to be rendered in a form
310
311
  */
311
312
  async build() {
312
313
  if (this.destinationDb) {
@@ -316,8 +317,10 @@ export class SelectField extends Field {
316
317
  /**
317
318
  * If options are already set, return
318
319
  */
319
- if (this.options && this.optionsType === 'static')
320
+ if (this.options && this.optionsType === 'static') {
321
+ this._allOptions = this.options;
320
322
  return;
323
+ }
321
324
  /**
322
325
  * Initialize the select db and options
323
326
  */
@@ -408,16 +411,12 @@ export class SelectField extends Field {
408
411
  }
409
412
  }
410
413
  /**
411
- * Prepare the field for submission
414
+ * Prepare and build the field for submission
412
415
  */
413
416
  async prepareForSubmission() {
414
417
  if (this.optionsType !== 'static') {
415
418
  this.checkDBConfig();
416
419
  await this.checkDBTableAndColumns();
417
- /**
418
- * Fetch the options
419
- */
420
- await this.fetchOptions();
421
420
  }
422
421
  if (this.destinationDb) {
423
422
  this.checkDestinationDBConfig();
@@ -429,6 +428,18 @@ export class SelectField extends Field {
429
428
  * Default is false.
430
429
  */
431
430
  if (this.checkValueExists && this.value && this.value.length > 0) {
431
+ if (this.optionsType === 'static') {
432
+ /**
433
+ * Set the options to the all options
434
+ */
435
+ this._allOptions = this.options;
436
+ }
437
+ else {
438
+ /**
439
+ * Fetch the options
440
+ */
441
+ await this.fetchOptions();
442
+ }
432
443
  /**
433
444
  * Check if the values exist in the table
434
445
  * This is now safe because we have verified the table and columns exist in the database
@@ -115,7 +115,7 @@ export declare class SelectMultipleField extends Field<'select_multiple', Select
115
115
  postSubmit(itemId: string): Promise<void>;
116
116
  postSubmitRollback(): Promise<void>;
117
117
  /**
118
- * Build the field to be used in a form
118
+ * Build the field to be rendered in a form
119
119
  */
120
120
  build(): Promise<void>;
121
121
  private fetchOptions;
@@ -141,7 +141,7 @@ export declare class SelectMultipleField extends Field<'select_multiple', Select
141
141
  private checkDestinationDBConfig;
142
142
  checkRequired(): void;
143
143
  /**
144
- * Prepare the field for submission
144
+ * Prepare and build the field for submission
145
145
  */
146
146
  prepareForSubmission(): Promise<void>;
147
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"selectMultiple.d.ts","sourceRoot":"","sources":["../../../src/core/fields/selectMultiple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selectMultiple.d.ts","sourceRoot":"","sources":["../../../src/core/fields/selectMultiple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,KAAK,EAAyB,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAO/C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE5E,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAgDxB,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAdnB,WAAW,GAAG,UAAU;cACxB,MAAM;gBACJ,MAAM;iBACL,eAAe,GAAG,eAAe;;cAHpC,WAAW,GAAG,UAAU;cACxB,MAAM;gBACJ,MAAM;iBACL,eAAe,GAAG,eAAe;;;;;;;;;;;;;;;oBAepD,CAAA;AAEF,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAEhF,qBAAa,mBAAoB,SAAQ,KAAK,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IACxF,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAwB;IACrE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAA;IACjD,QAAQ,CAAC,EAAE,EAAE;QACT,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACa,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;IACjD,SAAkB,aAAa,CAAC,EAAE;QAC9B,KAAK,EAAE,MAAM,CAAA;QACb,cAAc,EAAE,MAAM,CAAA;QACtB,gBAAgB,EAAE,MAAM,CAAA;KAC3B,CAAA;IACQ,KAAK,EAAE,YAAY,EAAE,GAAG,SAAS,CAAY;IAEtD,OAAO,CAAC,eAAe,CAAoB;gBAC/B,MAAM,EAAE,eAAe,CAAC,yBAAyB,CAAC;IAwD9D,MAAM,CAAC,aAAa,IAAI,MAAM;IAId,kBAAkB,IAAI,OAAO;IAI7C;;OAEG;IACH,QAAQ;;;;IAIR;;OAEG;IACM,cAAc,IAAI,MAAM,GAAG,YAAY,EAAE,GAAG,SAAS;IAQ9D;;;;OAIG;IACM,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IA0ChC,eAAe;;;;;;;;;;;;;;;;;IAQT,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBzD;;OAEG;IACY,KAAK;YAsBN,YAAY;IAuB1B;;;OAGG;YACW,sBAAsB;IASpC;;;OAGG;YACW,iCAAiC;IAiB/C;;;OAGG;IACH,OAAO,CAAC,aAAa;IAUrB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAYhC,aAAa;IAWb;;OAEG;IACG,oBAAoB;CAkC7B;AAED,MAAM,MAAM,+BAA+B,GAAG,UAAU,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAqBhG,QAAA,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA3azB,WAAW,GAAG,UAAU;cACxB,MAAM;gBACJ,MAAM;iBACL,eAAe,GAAG,eAAe;;cAHpC,WAAW,GAAG,UAAU;cACxB,MAAM;gBACJ,MAAM;iBACL,eAAe,GAAG,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAibrD,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAA;AAEjG;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,yBAAyB,CAAC,GAAG,6BAA6B,CAiBpH"}
@@ -245,7 +245,7 @@ export class SelectMultipleField extends Field {
245
245
  }
246
246
  }
247
247
  /**
248
- * Build the field to be used in a form
248
+ * Build the field to be rendered in a form
249
249
  */
250
250
  async build() {
251
251
  if (this.destinationDb) {
@@ -344,22 +344,29 @@ export class SelectMultipleField extends Field {
344
344
  }
345
345
  }
346
346
  /**
347
- * Prepare the field for submission
347
+ * Prepare and build the field for submission
348
348
  */
349
349
  async prepareForSubmission() {
350
350
  if (this.optionsType !== 'static') {
351
351
  this.checkDBConfig();
352
352
  await this.checkDBTableAndColumns();
353
- /**
354
- * Fetch the options
355
- */
356
- await this.fetchOptions();
357
353
  }
358
354
  if (this.destinationDb) {
359
355
  this.checkDestinationDBConfig();
360
356
  await this.checkDestinationDBTableAndColumns();
361
357
  }
358
+ /**
359
+ * If checkValueExists is set to true, check if the value exists in the options.
360
+ * This is important to prevent submitting a value that does not exist in the table. (e.g. tampering with the form)
361
+ * Default is false.
362
+ */
362
363
  if (this.checkValuesExist && this.value && this.value.length > 0) {
364
+ if (this.optionsType !== 'static') {
365
+ /**
366
+ * Fetch the options
367
+ */
368
+ await this.fetchOptions();
369
+ }
363
370
  /**
364
371
  * Check if the values exist in the table
365
372
  * This is now safe because we have verified the table and columns exist in the database
@@ -1 +1 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/core/fields/video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAIhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,QAAA,MAAM,YAAY;IACd;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;kBAKL,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,UAAW,SAAQ,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IACtD,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAe;IAC5D,QAAQ,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAA;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA;IAE7B;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAU;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAyC;gBAC3D,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IA6BxC,eAAe;;kBA1CD,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;IAmDjD,iBAAiB,CAAC,EACpB,WAAW,EACX,MAAM,EACN,aAAiB,GACpB,EAAE;QACC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;QACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAClC,GAAG,OAAO,CAAC,UAAU,CAAC;IAevB;;OAEG;IACG,WAAW;IAiCK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAczD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIX,WAAW,CAAC,KAAK,EAAE,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,GAAG;IAQnB,OAAO,CAAC,IAAI,EAAE,IAAI;IAK3B,aAAa;IAYb;;OAEG;IACG,oBAAoB;CAoD7B;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE9E,QAAA,MAAM,aAAa;IAxPf;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;kBA8OL,CAAA;AAEF,QAAA,MAAM,sBAAsB;;;IA7PxB;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;kBAoPL,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,gBAAgB,CAmBjF"}
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/core/fields/video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAIhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,QAAA,MAAM,YAAY;IACd;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;kBAKL,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,UAAW,SAAQ,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IACtD,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAe;IAC5D,QAAQ,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAA;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA;IAE7B;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAU;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAmC;gBACrD,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IA6BxC,eAAe;;kBA1CD,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;IAmDjD,iBAAiB,CAAC,EACpB,WAAW,EACX,MAAM,EACN,aAAiB,GACpB,EAAE;QACC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;QACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAClC,GAAG,OAAO,CAAC,UAAU,CAAC;IAevB;;OAEG;IACG,WAAW;IAiCK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAczD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIX,WAAW,CAAC,KAAK,EAAE,MAAM;IAIvB,QAAQ,CAAC,KAAK,EAAE,GAAG;IAQnB,OAAO,CAAC,IAAI,EAAE,IAAI;IAK3B,aAAa;IAYb;;OAEG;IACG,oBAAoB;CAoD7B;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE9E,QAAA,MAAM,aAAa;IAxPf;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;kBA8OL,CAAA;AAEF,QAAA,MAAM,sBAAsB;;;IA7PxB;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;kBAoPL,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAErE;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GAAG,gBAAgB,CAmBjF"}
@@ -39,7 +39,7 @@ export class VideoField extends FileField {
39
39
  _buffer;
40
40
  _folder;
41
41
  _allowedExtensions;
42
- uploadsFolder = getCMSConfig().files.upload.uploadPath;
42
+ uploadsFolder = getCMSConfig().media.upload.path;
43
43
  constructor(config, file) {
44
44
  super(config, 'video');
45
45
  this._file = file;
@@ -117,7 +117,10 @@ declare const optionsSchema: z.ZodObject<{
117
117
  */
118
118
  allowRecursiveDelete: z.ZodOptional<z.ZodBoolean>;
119
119
  fields: z.ZodUnion<[z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>, z.ZodArray<z.ZodCustom<FieldGroupConfig, FieldGroupConfig>>]>;
120
+ variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
120
121
  name: z.ZodString;
122
+ order: z.ZodNumber;
123
+ readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
121
124
  db: z.ZodObject<{
122
125
  table: z.ZodString;
123
126
  identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
@@ -141,9 +144,6 @@ declare const optionsSchema: z.ZodObject<{
141
144
  name: z.ZodOptional<z.ZodString>;
142
145
  }, z.core.$strict>>>;
143
146
  }, z.core.$strict>;
144
- variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
145
- order: z.ZodNumber;
146
- readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
147
147
  icon: z.ZodOptional<z.ZodString>;
148
148
  gallery: z.ZodOptional<z.ZodObject<{
149
149
  db: z.ZodObject<{
@@ -214,7 +214,10 @@ export declare const categorySectionConfigSchema: z.ZodObject<{
214
214
  * @default false
215
215
  */
216
216
  allowRecursiveDelete: z.ZodOptional<z.ZodBoolean>;
217
+ variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
217
218
  name: z.ZodString;
219
+ order: z.ZodNumber;
220
+ readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
218
221
  db: z.ZodObject<{
219
222
  table: z.ZodString;
220
223
  identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
@@ -238,9 +241,6 @@ export declare const categorySectionConfigSchema: z.ZodObject<{
238
241
  name: z.ZodOptional<z.ZodString>;
239
242
  }, z.core.$strict>>>;
240
243
  }, z.core.$strict>;
241
- variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
242
- order: z.ZodNumber;
243
- readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
244
244
  icon: z.ZodOptional<z.ZodString>;
245
245
  gallery: z.ZodOptional<z.ZodObject<{
246
246
  db: z.ZodObject<{
@@ -355,7 +355,10 @@ declare const optionsSchema: z.ZodObject<{
355
355
  }>>;
356
356
  generateQR: z.ZodOptional<z.ZodBoolean>;
357
357
  fields: z.ZodUnion<[z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>, z.ZodArray<z.ZodCustom<FieldGroupConfig, FieldGroupConfig>>]>;
358
+ variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
358
359
  name: z.ZodString;
360
+ order: z.ZodNumber;
361
+ readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
359
362
  db: z.ZodObject<{
360
363
  table: z.ZodString;
361
364
  identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
@@ -379,9 +382,6 @@ declare const optionsSchema: z.ZodObject<{
379
382
  name: z.ZodOptional<z.ZodString>;
380
383
  }, z.core.$strict>>>;
381
384
  }, z.core.$strict>;
382
- variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
383
- order: z.ZodNumber;
384
- readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
385
385
  icon: z.ZodOptional<z.ZodString>;
386
386
  gallery: z.ZodOptional<z.ZodObject<{
387
387
  db: z.ZodObject<{
@@ -569,7 +569,10 @@ declare const hasItemsSectionConfigSchema: z.ZodObject<{
569
569
  adminGenerated?: boolean | "readonly" | undefined;
570
570
  }>>;
571
571
  generateQR: z.ZodOptional<z.ZodBoolean>;
572
+ variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
572
573
  name: z.ZodString;
574
+ order: z.ZodNumber;
575
+ readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
573
576
  db: z.ZodObject<{
574
577
  table: z.ZodString;
575
578
  identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
@@ -593,9 +596,6 @@ declare const hasItemsSectionConfigSchema: z.ZodObject<{
593
596
  name: z.ZodOptional<z.ZodString>;
594
597
  }, z.core.$strict>>>;
595
598
  }, z.core.$strict>;
596
- variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
597
- order: z.ZodNumber;
598
- readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
599
599
  icon: z.ZodOptional<z.ZodString>;
600
600
  gallery: z.ZodOptional<z.ZodObject<{
601
601
  db: z.ZodObject<{
@@ -62,7 +62,10 @@ export declare const baseSectionOptionsSchema: z.ZodObject<{
62
62
  */
63
63
  export declare const baseHelperFunctionOptionsSchema: z.ZodObject<{
64
64
  fields: z.ZodUnion<[z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>, z.ZodArray<z.ZodCustom<FieldGroupConfig, FieldGroupConfig>>]>;
65
+ variants: z.ZodOptional<z.ZodArray<z.ZodCustom<Variant, Variant>>>;
65
66
  name: z.ZodString;
67
+ order: z.ZodNumber;
68
+ readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
66
69
  db: z.ZodObject<{
67
70
  table: z.ZodString;
68
71
  identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
@@ -86,9 +89,6 @@ export declare const baseHelperFunctionOptionsSchema: z.ZodObject<{
86
89
  name: z.ZodOptional<z.ZodString>;
87
90
  }, z.core.$strict>>>;
88
91
  }, z.core.$strict>;
89
- variants: z.ZodOptional<z.ZodArray<z.ZodCustom<Variant, Variant>>>;
90
- order: z.ZodNumber;
91
- readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
92
92
  icon: z.ZodOptional<z.ZodString>;
93
93
  gallery: z.ZodOptional<z.ZodObject<{
94
94
  db: z.ZodObject<{
@@ -148,8 +148,8 @@ export class Section {
148
148
  photoNameField: config.gallery.db.photoNameField ?? 'photo',
149
149
  metaField: config.gallery.db.metaField ?? 'meta',
150
150
  },
151
- watermark: config.gallery.watermark ?? cmsConfig.files.images.watermark,
152
- thumbnail: config.gallery.thumbnail ?? cmsConfig.files.images.thumbnail,
151
+ watermark: config.gallery.watermark ?? cmsConfig.media.images.watermark,
152
+ thumbnail: config.gallery.thumbnail ?? cmsConfig.media.images.thumbnail,
153
153
  };
154
154
  }
155
155
  /**
@@ -22,8 +22,8 @@ declare const optionsSchema: z.ZodObject<{
22
22
  table: z.ZodString;
23
23
  }, z.core.$strict>;
24
24
  fields: z.ZodUnion<[z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>, z.ZodArray<z.ZodCustom<FieldGroupConfig, FieldGroupConfig>>]>;
25
- name: z.ZodString;
26
25
  variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
26
+ name: z.ZodString;
27
27
  order: z.ZodNumber;
28
28
  readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
29
29
  icon: z.ZodOptional<z.ZodString>;
@@ -53,8 +53,8 @@ declare const simpleSectionConfigSchema: z.ZodObject<{
53
53
  db: z.ZodObject<{
54
54
  table: z.ZodString;
55
55
  }, z.core.$strict>;
56
- name: z.ZodString;
57
56
  variants: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").Variant, import("../types/index.js").Variant>>>;
57
+ name: z.ZodString;
58
58
  order: z.ZodNumber;
59
59
  readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
60
60
  icon: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;CAM3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQjD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAa/C,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAanD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAapD,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;CAM3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQjD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAa/C,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAanD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAapD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextjs-cms",
3
- "version": "0.5.19",
3
+ "version": "0.5.21",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",
@@ -153,8 +153,8 @@
153
153
  "tsx": "^4.20.6",
154
154
  "typescript": "^5.9.2",
155
155
  "@lzcms/eslint-config": "0.3.0",
156
- "@lzcms/prettier-config": "0.1.0",
157
- "@lzcms/tsconfig": "0.1.0"
156
+ "@lzcms/tsconfig": "0.1.0",
157
+ "@lzcms/prettier-config": "0.1.0"
158
158
  },
159
159
  "license": "MIT",
160
160
  "keywords": [
@@ -171,7 +171,7 @@
171
171
  "scripts": {
172
172
  "build": "tsc",
173
173
  "dev": "tsc",
174
- "clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
174
+ "clean": "git clean -xdf .cache .turbo dist node_modules",
175
175
  "typecheck": "tsc --noEmit"
176
176
  }
177
177
  }