nextjs-cms 0.5.20 → 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.
- package/README.md +12 -10
- package/dist/api/lib/serverActions.js +1 -1
- package/dist/api/routers/admins.js +1 -1
- package/dist/api/routers/gallery.js +1 -1
- package/dist/core/config/config-loader.d.ts +58 -48
- package/dist/core/config/config-loader.d.ts.map +1 -1
- package/dist/core/config/config-loader.js +137 -85
- package/dist/core/config/index.d.ts +1 -1
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/loader.d.ts.map +1 -1
- package/dist/core/config/loader.js +36 -1
- package/dist/core/factories/FieldFactory.d.ts +2 -1
- package/dist/core/factories/FieldFactory.d.ts.map +1 -1
- package/dist/core/factories/FieldFactory.js +4 -3
- package/dist/core/factories/SectionFactory.d.ts.map +1 -1
- package/dist/core/factories/SectionFactory.js +45 -7
- package/dist/core/fields/document.d.ts.map +1 -1
- package/dist/core/fields/document.js +1 -1
- package/dist/core/fields/photo.d.ts.map +1 -1
- package/dist/core/fields/photo.js +2 -2
- package/dist/core/fields/richText.d.ts.map +1 -1
- package/dist/core/fields/richText.js +1 -1
- package/dist/core/fields/select.d.ts +3 -3
- package/dist/core/fields/select.d.ts.map +1 -1
- package/dist/core/fields/select.js +19 -8
- package/dist/core/fields/selectMultiple.d.ts +2 -2
- package/dist/core/fields/selectMultiple.d.ts.map +1 -1
- package/dist/core/fields/selectMultiple.js +13 -6
- package/dist/core/fields/video.d.ts.map +1 -1
- package/dist/core/fields/video.js +1 -1
- package/dist/core/sections/category.d.ts +6 -6
- package/dist/core/sections/hasItems.d.ts +6 -6
- package/dist/core/sections/section.d.ts +3 -3
- package/dist/core/sections/section.js +2 -2
- package/dist/core/sections/simple.d.ts +2 -2
- package/dist/utils/constants.d.ts.map +1 -1
- package/package.json +2 -2
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
ui: {
|
|
41
|
+
title: 'My CMS Site',
|
|
42
|
+
defaultTheme: 'dark',
|
|
43
|
+
logo: '/logo.svg'
|
|
44
44
|
},
|
|
45
|
-
|
|
45
|
+
sections: {
|
|
46
|
+
path: './sections',
|
|
47
|
+
strict: false,
|
|
48
|
+
category: { allowRecursiveDelete: false }
|
|
49
|
+
},
|
|
50
|
+
media: {
|
|
46
51
|
upload: {
|
|
47
|
-
|
|
48
|
-
|
|
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().
|
|
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().
|
|
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().
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
53
|
-
theme: string;
|
|
54
|
-
files: {
|
|
66
|
+
media: {
|
|
55
67
|
upload: {
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
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
|
-
*
|
|
11
|
+
* UI configuration for the admin panel
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
api: z
|
|
13
|
+
ui: z
|
|
15
14
|
.object({
|
|
16
15
|
/**
|
|
17
|
-
* The
|
|
16
|
+
* The title displayed in the admin UI
|
|
18
17
|
*/
|
|
19
|
-
|
|
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
|
-
*
|
|
30
|
+
* Enable debug logging
|
|
31
|
+
*/
|
|
32
|
+
debug: z.boolean().optional(),
|
|
33
|
+
/**
|
|
34
|
+
* Sections configuration
|
|
24
35
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
*
|
|
62
|
+
* Media configuration (uploads, images)
|
|
29
63
|
*/
|
|
30
|
-
|
|
64
|
+
media: z
|
|
31
65
|
.object({
|
|
32
66
|
/**
|
|
33
67
|
* Upload configuration
|
|
34
68
|
*/
|
|
35
|
-
upload: z
|
|
69
|
+
upload: z
|
|
70
|
+
.object({
|
|
36
71
|
/**
|
|
37
|
-
* The path where
|
|
72
|
+
* The path where files are uploaded
|
|
38
73
|
*/
|
|
39
|
-
|
|
74
|
+
path: z.string(),
|
|
40
75
|
/**
|
|
41
|
-
* Whether to
|
|
76
|
+
* Whether to preserve the file extension
|
|
42
77
|
*/
|
|
43
|
-
|
|
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
|
-
*
|
|
106
|
+
* Schema generation configuration
|
|
81
107
|
*/
|
|
82
|
-
|
|
108
|
+
schemaGeneration: z
|
|
83
109
|
.object({
|
|
84
|
-
|
|
110
|
+
/**
|
|
111
|
+
* Drizzle schema generation configuration
|
|
112
|
+
*/
|
|
113
|
+
drizzle: z
|
|
85
114
|
.object({
|
|
86
115
|
/**
|
|
87
|
-
*
|
|
116
|
+
* Whether schema generation is enabled
|
|
88
117
|
*/
|
|
89
|
-
|
|
118
|
+
enabled: z.boolean().optional(),
|
|
90
119
|
/**
|
|
91
|
-
*
|
|
120
|
+
* Output directory for generated schemas
|
|
92
121
|
*/
|
|
93
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
118
|
-
|
|
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.
|
|
123
|
-
height: userConfig.
|
|
124
|
-
crop: userConfig.
|
|
125
|
-
quality: userConfig.
|
|
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.
|
|
176
|
+
watermark: userConfig.media?.images?.watermark ?? defaults.media.images.watermark,
|
|
128
177
|
},
|
|
129
178
|
},
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
155
|
-
files: {
|
|
209
|
+
media: {
|
|
156
210
|
upload: {
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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 +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":"
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
-
//
|
|
185
|
-
|
|
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;
|
|
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 =
|
|
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.
|
|
311
|
+
cwd: cmsConfig.sections.path,
|
|
274
312
|
});
|
|
275
313
|
for (const file of sectionFiles) {
|
|
276
314
|
try {
|
|
277
|
-
const absPath = resolve(cmsConfig.
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
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().
|
|
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":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAKxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAqC1C,QAAA,MAAM,YAAY;IACd,yCAAyC;;;;;;QA7BzC;;;;;;;;;;;;WAYG;;;;;;;;;IAsBH;;;;;;;OAOG;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;OAGG;;kBAEL,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,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAA;IAC3E,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;IAC7B,QAAQ,CAAC,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,
|
|
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.
|
|
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.
|
|
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,
|
|
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().
|
|
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
|
|
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":"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;AAMhD,OAAO,KAAK,EAAE,eAAe,EAAyB,eAAe,EAAyB,MAAM,aAAa,CAAA;AAEjH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,eAAO,MAAM,kBAAkB;;;kBAG7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,8BAA8B;;IAEvC;;OAEG;;IAEH;;OAEG;;kBAEL,CAAA;AAEF,KAAK,mBAAmB,GAAG;IACvB,IAAI,EAAE,WAAW,GAAG,UAAU,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,IAAI,eAAe,GAAG,eAAe,CAAA;CAC7C,CAAA;AAoCD,eAAO,MAAM,+BAA+B;;;QAnDxC;;WAEG;;QAEH;;WAEG;;;;;;;;;;;;;;;QANH;;WAEG;;QAEH;;WAEG;;;;;;;;;;;;;QANH;;WAEG;;QAEH;;WAEG;;;;;;;;;;oBAiDL,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE/E,qBAAa,WAAY,SAAQ,KAAK,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC/D,gBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAgB;IAC7D,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;IACD,SAAkB,aAAa,CAAC,EAC1B;QACI,KAAK,EAAE,MAAM,CAAA;QACb,cAAc,EAAE,MAAM,CAAA;QACtB,gBAAgB,EAAE,MAAM,CAAA;KAC3B,GACD,SAAS,CAAY;IAClB,KAAK,EAAE,YAAY,EAAE,GAAG,SAAS,CAAY;IAEtD,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAA;IACjD,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;IACnC,OAAO,CAAC,WAAW,CAA4B;gBACnC,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC;
|
|
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
|
|
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
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"selectMultiple.d.ts","sourceRoot":"","sources":["../../../src/core/fields/selectMultiple.ts"],"names":[],"mappings":"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"}
|
|
@@ -245,7 +245,7 @@ export class SelectMultipleField extends Field {
|
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
/**
|
|
248
|
-
* Build the field to be
|
|
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,
|
|
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().
|
|
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.
|
|
152
|
-
thumbnail: config.gallery.thumbnail ?? cmsConfig.
|
|
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.
|
|
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.
|
|
3
|
+
"version": "0.5.21",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
"scripts": {
|
|
172
172
|
"build": "tsc",
|
|
173
173
|
"dev": "tsc",
|
|
174
|
-
"clean": "
|
|
174
|
+
"clean": "git clean -xdf .cache .turbo dist node_modules",
|
|
175
175
|
"typecheck": "tsc --noEmit"
|
|
176
176
|
}
|
|
177
177
|
}
|