nextjs-cms 0.9.31 → 0.9.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/actions/pages.d.ts +3 -3
- package/dist/api/trpc/root.d.ts +3 -3
- package/dist/api/trpc/routers/navigation.d.ts +3 -3
- package/dist/api/trpc/server.d.ts +9 -9
- package/dist/cli/lib/update-sections.d.ts.map +1 -1
- package/dist/cli/lib/update-sections.js +217 -59
- package/dist/cli/utils/schema-generator.d.ts.map +1 -1
- package/dist/cli/utils/schema-generator.js +4 -1
- package/dist/core/config/config-loader.d.ts +2 -2
- package/dist/core/fields/date-range.d.ts +4 -4
- package/dist/core/fields/document.d.ts.map +1 -1
- package/dist/core/fields/document.js +13 -1
- package/dist/core/fields/photo.d.ts +6 -6
- package/dist/core/fields/photo.d.ts.map +1 -1
- package/dist/core/fields/photo.js +30 -9
- package/dist/core/fields/richText.d.ts +8 -8
- package/dist/core/fields/select.d.ts +13 -0
- package/dist/core/fields/select.d.ts.map +1 -1
- package/dist/core/fields/select.js +1 -0
- package/dist/core/fields/selectMultiple.d.ts +9 -0
- package/dist/core/fields/selectMultiple.d.ts.map +1 -1
- package/dist/core/fields/selectMultiple.js +1 -0
- package/dist/core/fields/video.d.ts +1 -0
- package/dist/core/fields/video.d.ts.map +1 -1
- package/dist/core/fields/video.js +18 -2
- package/dist/core/sections/category.d.ts +6 -6
- package/dist/core/sections/hasItems.d.ts +12 -12
- package/dist/core/sections/section.d.ts +4 -4
- package/dist/core/sections/simple.d.ts +6 -6
- package/dist/db/schema.d.ts +17 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +1 -0
- package/dist/translations/base/en.d.ts +6 -0
- package/dist/translations/base/en.d.ts.map +1 -1
- package/dist/translations/base/en.js +6 -0
- package/dist/translations/client.d.ts +76 -4
- package/dist/translations/client.d.ts.map +1 -1
- package/dist/translations/server.d.ts +76 -4
- package/dist/translations/server.d.ts.map +1 -1
- package/dist/validators/document.d.ts.map +1 -1
- package/dist/validators/document.js +2 -1
- package/dist/validators/file-extension.d.ts +3 -0
- package/dist/validators/file-extension.d.ts.map +1 -0
- package/dist/validators/file-extension.js +9 -0
- package/dist/validators/photo.d.ts.map +1 -1
- package/dist/validators/photo.js +2 -1
- package/dist/validators/video.d.ts.map +1 -1
- package/dist/validators/video.js +2 -1
- package/package.json +3 -3
|
@@ -70,13 +70,13 @@ declare const optionsSchema: z.ZodObject<{
|
|
|
70
70
|
maxDate: z.ZodOptional<z.ZodUnion<readonly [z.ZodDate, z.ZodLiteral<"now">]>>;
|
|
71
71
|
defaultStartValue: z.ZodOptional<z.ZodDate>;
|
|
72
72
|
defaultEndValue: z.ZodOptional<z.ZodDate>;
|
|
73
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
localized: z.ZodOptional<z.ZodBoolean>;
|
|
73
75
|
label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
|
|
74
76
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
75
77
|
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
76
|
-
order: z.ZodOptional<z.ZodNumber>;
|
|
77
78
|
conditionalRules: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").ConditionalRule, import("../types/index.js").ConditionalRule>>>;
|
|
78
79
|
adminGenerated: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodLiteral<false>, z.ZodLiteral<"readonly">]>>;
|
|
79
|
-
localized: z.ZodOptional<z.ZodBoolean>;
|
|
80
80
|
}, z.core.$strict>;
|
|
81
81
|
declare const dateRangeFieldConfigSchema: z.ZodObject<{
|
|
82
82
|
/**
|
|
@@ -97,13 +97,13 @@ declare const dateRangeFieldConfigSchema: z.ZodObject<{
|
|
|
97
97
|
maxDate: z.ZodOptional<z.ZodUnion<readonly [z.ZodDate, z.ZodLiteral<"now">]>>;
|
|
98
98
|
defaultStartValue: z.ZodOptional<z.ZodDate>;
|
|
99
99
|
defaultEndValue: z.ZodOptional<z.ZodDate>;
|
|
100
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
localized: z.ZodOptional<z.ZodBoolean>;
|
|
100
102
|
label: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
|
|
101
103
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
102
104
|
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
103
|
-
order: z.ZodOptional<z.ZodNumber>;
|
|
104
105
|
conditionalRules: z.ZodOptional<z.ZodArray<z.ZodCustom<import("../types/index.js").ConditionalRule, import("../types/index.js").ConditionalRule>>>;
|
|
105
106
|
adminGenerated: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<true>, z.ZodLiteral<false>, z.ZodLiteral<"readonly">]>>;
|
|
106
|
-
localized: z.ZodOptional<z.ZodBoolean>;
|
|
107
107
|
}, z.core.$strict>;
|
|
108
108
|
export type DateRangeFieldConfig = z.infer<typeof dateRangeFieldConfigSchema>;
|
|
109
109
|
/**
|
|
@@ -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;
|
|
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;AAU1C,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;gBAExB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IAqDxC,eAAe;;kBApED,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;;IA6EjD,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;IAgBvB;;OAEG;IACG,WAAW;IA8BK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpG;;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;CA2E7B;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEpF,QAAA,MAAM,aAAa;IA7Sf;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;kBAkSL,CAAA;AAEF,QAAA,MAAM,yBAAyB;;;IAlT3B;;;;;;;OAOG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;kBAwSL,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"}
|
|
@@ -7,6 +7,7 @@ import path from 'path';
|
|
|
7
7
|
import { FileField } from './fileField.js';
|
|
8
8
|
import { getCMSConfig } from '../config/index.js';
|
|
9
9
|
import getString from '../../translations/index.js';
|
|
10
|
+
import { humanReadableFileSize } from '../../utils/index.js';
|
|
10
11
|
const maxFileSizeSchema = z.strictObject({
|
|
11
12
|
size: z.number().describe('Maximum file size'),
|
|
12
13
|
unit: z.enum(['kb', 'mb']).describe('Size unit'),
|
|
@@ -213,10 +214,21 @@ export class DocumentField extends FileField {
|
|
|
213
214
|
if (!this._buffer.length) {
|
|
214
215
|
throw new Error(getString('fieldIsRequired', this.language, { field: this.getLocalizedLabel() }));
|
|
215
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Check the file size
|
|
219
|
+
*/
|
|
220
|
+
const fileSize = this._buffer.length;
|
|
221
|
+
if (fileSize > this.maxFileSize.size * (this.maxFileSize.unit === 'kb' ? 1024 : 1024 * 1024)) {
|
|
222
|
+
throw new Error(getString('fileSizeExceedsMax', this.language, {
|
|
223
|
+
field: this.getLocalizedLabel(),
|
|
224
|
+
actual: humanReadableFileSize(fileSize),
|
|
225
|
+
max: `${this.maxFileSize.size} ${this.maxFileSize.unit}`,
|
|
226
|
+
}));
|
|
227
|
+
}
|
|
216
228
|
/**
|
|
217
229
|
* Check extension
|
|
218
230
|
*/
|
|
219
|
-
const ext = this._file.name.split('.').pop();
|
|
231
|
+
const ext = this._file.name.split('.').pop()?.toLowerCase();
|
|
220
232
|
if (!ext || !this.extensions.includes(ext)) {
|
|
221
233
|
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
222
234
|
field: this.getLocalizedLabel(),
|
|
@@ -104,10 +104,10 @@ declare const configSchema: z.ZodObject<{
|
|
|
104
104
|
* @hint 'jpg' is an alias for 'jpeg'
|
|
105
105
|
*/
|
|
106
106
|
fileType: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
107
|
-
webp: "webp";
|
|
108
|
-
jpg: "jpg";
|
|
109
107
|
jpeg: "jpeg";
|
|
108
|
+
jpg: "jpg";
|
|
110
109
|
png: "png";
|
|
110
|
+
webp: "webp";
|
|
111
111
|
}>>>;
|
|
112
112
|
/**
|
|
113
113
|
* Remove the extension from the file name
|
|
@@ -299,10 +299,10 @@ declare const optionsSchema: z.ZodObject<{
|
|
|
299
299
|
* @hint 'jpg' is an alias for 'jpeg'
|
|
300
300
|
*/
|
|
301
301
|
fileType: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
302
|
-
webp: "webp";
|
|
303
|
-
jpg: "jpg";
|
|
304
302
|
jpeg: "jpeg";
|
|
303
|
+
jpg: "jpg";
|
|
305
304
|
png: "png";
|
|
305
|
+
webp: "webp";
|
|
306
306
|
}>>>;
|
|
307
307
|
/**
|
|
308
308
|
* Remove the extension from the file name
|
|
@@ -395,10 +395,10 @@ declare const photoFieldConfigSchema: z.ZodObject<{
|
|
|
395
395
|
* @hint 'jpg' is an alias for 'jpeg'
|
|
396
396
|
*/
|
|
397
397
|
fileType: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
398
|
-
webp: "webp";
|
|
399
|
-
jpg: "jpg";
|
|
400
398
|
jpeg: "jpeg";
|
|
399
|
+
jpg: "jpg";
|
|
401
400
|
png: "png";
|
|
401
|
+
webp: "webp";
|
|
402
402
|
}>>>;
|
|
403
403
|
/**
|
|
404
404
|
* Remove the extension from the file name
|
|
@@ -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;AA8C1C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;IAPZ;;;OAGG;;;;;;;6BAI0G,CAAA;AAEjH,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAkC5C,QAAA,MAAM,YAAY;IACd,yCAAyC;;;;;;;;;;;;;;;;;;QA5CzC;;;WAGG;;;;;;;;;;;;;;;;;;QAyBC;;;WAGG;;;;;;;;IAkBP;;;;;;;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,UAAU,GAAG,SAAS,CAAA;IACrC,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,OAAO,CAAC,UAAU,CAAyC;IAC3D,yFAAyF;IACzF,OAAO,CAAC,gBAAgB,CAAyC;IACjE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IAEjC;;;OAGG;IACH,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAU;gBAExB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IAoCxD;;;;OAIG;YACW,YAAY;
|
|
1
|
+
{"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,9 +176,10 @@ export class PhotoField extends FileField {
|
|
|
176
176
|
const cmsConfig = await getCMSConfig();
|
|
177
177
|
const t = cmsConfig.media.images.thumbnail;
|
|
178
178
|
const fit = t.size.fit ?? 'contain';
|
|
179
|
-
this._thumbnail =
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
this._thumbnail =
|
|
180
|
+
fit === 'contain'
|
|
181
|
+
? { width: t.size.width, height: t.size.height, fit: 'contain', quality: t.quality }
|
|
182
|
+
: { width: t.size.width, height: t.size.height, fit: 'cover', quality: t.quality };
|
|
182
183
|
}
|
|
183
184
|
return this._thumbnail;
|
|
184
185
|
}
|
|
@@ -362,7 +363,10 @@ export class PhotoField extends FileField {
|
|
|
362
363
|
if (ext === 'jpg')
|
|
363
364
|
ext = 'jpeg';
|
|
364
365
|
if (!ext || !this.extensions.includes(ext)) {
|
|
365
|
-
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
366
|
+
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
367
|
+
field: this.getLocalizedLabel(),
|
|
368
|
+
extensions: this.extensions.join(', '),
|
|
369
|
+
}));
|
|
366
370
|
}
|
|
367
371
|
/**
|
|
368
372
|
* Construct the image
|
|
@@ -373,7 +377,10 @@ export class PhotoField extends FileField {
|
|
|
373
377
|
* Check mime type
|
|
374
378
|
*/
|
|
375
379
|
if (!this.mimeType.includes(this._file.type)) {
|
|
376
|
-
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
380
|
+
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
381
|
+
field: this.getLocalizedLabel(),
|
|
382
|
+
extensions: this.extensions.join(', '),
|
|
383
|
+
}));
|
|
377
384
|
}
|
|
378
385
|
/**
|
|
379
386
|
* Check actual mime type
|
|
@@ -383,7 +390,10 @@ export class PhotoField extends FileField {
|
|
|
383
390
|
if (!actualMimeType ||
|
|
384
391
|
!this.extensions.includes(actualMimeType.ext) ||
|
|
385
392
|
!this.mimeType.includes(actualMimeType.mime)) {
|
|
386
|
-
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
393
|
+
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
394
|
+
field: this.getLocalizedLabel(),
|
|
395
|
+
extensions: this.extensions.join(', '),
|
|
396
|
+
}));
|
|
387
397
|
}
|
|
388
398
|
/**
|
|
389
399
|
* Disable caching for the image to avoid unlink issues
|
|
@@ -410,14 +420,21 @@ export class PhotoField extends FileField {
|
|
|
410
420
|
* Check the file size
|
|
411
421
|
*/
|
|
412
422
|
if (fileSize > this.maxFileSize.size * (this.maxFileSize.unit === 'kb' ? 1024 : 1024 * 1024)) {
|
|
413
|
-
throw new Error(getString('fileSizeExceedsMax', this.language, {
|
|
423
|
+
throw new Error(getString('fileSizeExceedsMax', this.language, {
|
|
424
|
+
field: this.getLocalizedLabel(),
|
|
425
|
+
actual: humanReadableFileSize(fileSize),
|
|
426
|
+
max: `${this.maxFileSize.size} ${this.maxFileSize.unit}`,
|
|
427
|
+
}));
|
|
414
428
|
}
|
|
415
429
|
/**
|
|
416
430
|
* Don't just trust the file extension
|
|
417
431
|
* Check the format
|
|
418
432
|
*/
|
|
419
433
|
if (!metadata.format || !this.extensions.includes(metadata.format)) {
|
|
420
|
-
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
434
|
+
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
435
|
+
field: this.getLocalizedLabel(),
|
|
436
|
+
extensions: this.extensions.join(', '),
|
|
437
|
+
}));
|
|
421
438
|
}
|
|
422
439
|
/**
|
|
423
440
|
* Check stat
|
|
@@ -442,7 +459,11 @@ export class PhotoField extends FileField {
|
|
|
442
459
|
*/
|
|
443
460
|
if (this.size && 'strict' in this.size) {
|
|
444
461
|
if (metadata.width !== this.size.width || metadata.height !== this.size.height) {
|
|
445
|
-
throw new Error(getString('imageDimensionMismatchDetailed', this.language, {
|
|
462
|
+
throw new Error(getString('imageDimensionMismatchDetailed', this.language, {
|
|
463
|
+
field: this.getLocalizedLabel(),
|
|
464
|
+
actual: `${metadata.width}x${metadata.height}`,
|
|
465
|
+
required: `${this.size.width}x${this.size.height}`,
|
|
466
|
+
}));
|
|
446
467
|
}
|
|
447
468
|
}
|
|
448
469
|
/**
|
|
@@ -31,10 +31,10 @@ declare const allowImageUploadsSchema: z.ZodObject<{
|
|
|
31
31
|
*/
|
|
32
32
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
33
33
|
format: z.ZodOptional<z.ZodEnum<{
|
|
34
|
-
webp: "webp";
|
|
35
|
-
jpg: "jpg";
|
|
36
34
|
jpeg: "jpeg";
|
|
35
|
+
jpg: "jpg";
|
|
37
36
|
png: "png";
|
|
37
|
+
webp: "webp";
|
|
38
38
|
}>>;
|
|
39
39
|
}, z.core.$strict>;
|
|
40
40
|
declare const configSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -73,10 +73,10 @@ declare const configSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
73
73
|
*/
|
|
74
74
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
75
75
|
format: z.ZodOptional<z.ZodEnum<{
|
|
76
|
-
webp: "webp";
|
|
77
|
-
jpg: "jpg";
|
|
78
76
|
jpeg: "jpeg";
|
|
77
|
+
jpg: "jpg";
|
|
79
78
|
png: "png";
|
|
79
|
+
webp: "webp";
|
|
80
80
|
}>>;
|
|
81
81
|
}, z.core.$strict>>;
|
|
82
82
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -171,10 +171,10 @@ declare const optionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
171
171
|
*/
|
|
172
172
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
173
173
|
format: z.ZodOptional<z.ZodEnum<{
|
|
174
|
-
webp: "webp";
|
|
175
|
-
jpg: "jpg";
|
|
176
174
|
jpeg: "jpeg";
|
|
175
|
+
jpg: "jpg";
|
|
177
176
|
png: "png";
|
|
177
|
+
webp: "webp";
|
|
178
178
|
}>>;
|
|
179
179
|
}, z.core.$strict>>;
|
|
180
180
|
name: z.ZodString;
|
|
@@ -237,10 +237,10 @@ declare const richTextFieldConfigSchema: z.ZodIntersection<z.ZodDiscriminatedUni
|
|
|
237
237
|
*/
|
|
238
238
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
239
239
|
format: z.ZodOptional<z.ZodEnum<{
|
|
240
|
-
webp: "webp";
|
|
241
|
-
jpg: "jpg";
|
|
242
240
|
jpeg: "jpeg";
|
|
241
|
+
jpg: "jpg";
|
|
243
242
|
png: "png";
|
|
243
|
+
webp: "webp";
|
|
244
244
|
}>>;
|
|
245
245
|
}, z.core.$strict>>;
|
|
246
246
|
name: z.ZodString;
|
|
@@ -47,6 +47,10 @@ export declare const selectFieldSpecificConfigSchema: z.ZodUnion<readonly [z.Zod
|
|
|
47
47
|
text: "text";
|
|
48
48
|
}>>;
|
|
49
49
|
label: z.ZodString;
|
|
50
|
+
labelType: z.ZodOptional<z.ZodEnum<{
|
|
51
|
+
number: "number";
|
|
52
|
+
text: "text";
|
|
53
|
+
}>>;
|
|
50
54
|
orderBy: z.ZodOptional<z.ZodString>;
|
|
51
55
|
}, z.core.$strict>;
|
|
52
56
|
section: z.ZodOptional<z.ZodNever>;
|
|
@@ -99,6 +103,7 @@ export declare class SelectField extends Field<'select', SelectFieldConfig> {
|
|
|
99
103
|
identifier: string;
|
|
100
104
|
identifierType?: 'text' | 'number';
|
|
101
105
|
label: string;
|
|
106
|
+
labelType?: 'text' | 'number';
|
|
102
107
|
orderBy?: string;
|
|
103
108
|
};
|
|
104
109
|
readonly destinationDb?: {
|
|
@@ -210,6 +215,10 @@ export declare const selectFieldOptionsSchema: z.ZodUnion<readonly [z.ZodObject<
|
|
|
210
215
|
text: "text";
|
|
211
216
|
}>>;
|
|
212
217
|
label: z.ZodString;
|
|
218
|
+
labelType: z.ZodOptional<z.ZodEnum<{
|
|
219
|
+
number: "number";
|
|
220
|
+
text: "text";
|
|
221
|
+
}>>;
|
|
213
222
|
orderBy: z.ZodOptional<z.ZodString>;
|
|
214
223
|
}, z.core.$strict>;
|
|
215
224
|
section: z.ZodOptional<z.ZodNever>;
|
|
@@ -298,6 +307,10 @@ declare const selectFieldConfigSchema: z.ZodIntersection<z.ZodUnion<readonly [z.
|
|
|
298
307
|
text: "text";
|
|
299
308
|
}>>;
|
|
300
309
|
label: z.ZodString;
|
|
310
|
+
labelType: z.ZodOptional<z.ZodEnum<{
|
|
311
|
+
number: "number";
|
|
312
|
+
text: "text";
|
|
313
|
+
}>>;
|
|
301
314
|
orderBy: z.ZodOptional<z.ZodString>;
|
|
302
315
|
}, z.core.$strict>;
|
|
303
316
|
section: z.ZodOptional<z.ZodNever>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/core/fields/select.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,eAAe,EAAyB,eAAe,EAAyB,MAAM,aAAa,CAAA;AACjH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAyB,KAAK,EAAE,MAAM,YAAY,CAAA;AAEzD,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;
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/core/fields/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ const selectFieldDbConfigSchema = selectFieldSharedExtrasSchema.extend({
|
|
|
39
39
|
.optional()
|
|
40
40
|
.describe('Identifier column type for generated lookup tables'),
|
|
41
41
|
label: z.string().min(1).describe('Label column for the option'),
|
|
42
|
+
labelType: z.enum(['text', 'number']).optional().describe('Label column type for generated lookup tables'),
|
|
42
43
|
orderBy: z.string().optional().describe('Optional order by column'),
|
|
43
44
|
})
|
|
44
45
|
.describe('Database configuration for select options'),
|
|
@@ -20,6 +20,10 @@ declare const selectMultipleFieldConfigSchema: z.ZodUnion<readonly [z.ZodObject<
|
|
|
20
20
|
text: "text";
|
|
21
21
|
}>>;
|
|
22
22
|
label: z.ZodString;
|
|
23
|
+
labelType: z.ZodOptional<z.ZodEnum<{
|
|
24
|
+
number: "number";
|
|
25
|
+
text: "text";
|
|
26
|
+
}>>;
|
|
23
27
|
orderBy: z.ZodOptional<z.ZodString>;
|
|
24
28
|
}, z.core.$strict>;
|
|
25
29
|
section: z.ZodOptional<z.ZodNever>;
|
|
@@ -70,6 +74,7 @@ export declare class SelectMultipleField extends Field<'select_multiple', Select
|
|
|
70
74
|
identifier: string;
|
|
71
75
|
identifierType?: 'text' | 'number';
|
|
72
76
|
label: string;
|
|
77
|
+
labelType?: 'text' | 'number';
|
|
73
78
|
orderBy?: string;
|
|
74
79
|
};
|
|
75
80
|
options: SelectOption[] | undefined;
|
|
@@ -168,6 +173,10 @@ declare const selectMultipleFieldHelperConfigSchema: z.ZodIntersection<z.ZodUnio
|
|
|
168
173
|
text: "text";
|
|
169
174
|
}>>;
|
|
170
175
|
label: z.ZodString;
|
|
176
|
+
labelType: z.ZodOptional<z.ZodEnum<{
|
|
177
|
+
number: "number";
|
|
178
|
+
text: "text";
|
|
179
|
+
}>>;
|
|
171
180
|
orderBy: z.ZodOptional<z.ZodString>;
|
|
172
181
|
}, z.core.$strict>;
|
|
173
182
|
section: z.ZodOptional<z.ZodNever>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectMultiple.d.ts","sourceRoot":"","sources":["../../../src/core/fields/selectMultiple.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAyB,KAAK,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"selectMultiple.d.ts","sourceRoot":"","sources":["../../../src/core/fields/selectMultiple.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ const selectMultipleFieldDbConfigSchema = selectMultipleSharedExtrasSchema.exten
|
|
|
29
29
|
.optional()
|
|
30
30
|
.describe('Identifier column type for generated lookup tables'),
|
|
31
31
|
label: z.string().min(1).describe('Label column for the option'),
|
|
32
|
+
labelType: z.enum(['text', 'number']).optional().describe('Label column type for generated lookup tables'),
|
|
32
33
|
orderBy: z.string().optional().describe('Optional order by column'),
|
|
33
34
|
})
|
|
34
35
|
.describe('Database configuration for select options'),
|
|
@@ -32,6 +32,7 @@ export declare class VideoField extends FileField<'video', Config> {
|
|
|
32
32
|
};
|
|
33
33
|
readonly mimeType: string[];
|
|
34
34
|
readonly extensions: string[];
|
|
35
|
+
readonly possibleExtensions: string[];
|
|
35
36
|
/**
|
|
36
37
|
* _file is the file object if it's present
|
|
37
38
|
* Whereas the value is the path to the file
|
|
@@ -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;
|
|
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;AAIxB,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;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAyB;IAE9D;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAU;gBACxB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IAgCxC,eAAe;;kBA7CD,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;;IAsDjD,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;IAgBvB;;OAEG;IACG,WAAW;IA6BK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpG;;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;CAwE7B;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE9E,QAAA,MAAM,aAAa;IAnRf;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;;kBAyQL,CAAA;AAEF,QAAA,MAAM,sBAAsB;;;IAxRxB;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;;kBA+QL,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"}
|
|
@@ -7,6 +7,7 @@ import { FileField } from './fileField.js';
|
|
|
7
7
|
import { getCMSConfig } from '../config/index.js';
|
|
8
8
|
import * as z from 'zod';
|
|
9
9
|
import getString from '../../translations/index.js';
|
|
10
|
+
import { humanReadableFileSize } from '../../utils/index.js';
|
|
10
11
|
const configSchema = z.strictObject({
|
|
11
12
|
/**
|
|
12
13
|
* Maximum file size
|
|
@@ -32,6 +33,7 @@ export class VideoField extends FileField {
|
|
|
32
33
|
maxFileSize;
|
|
33
34
|
mimeType;
|
|
34
35
|
extensions;
|
|
36
|
+
possibleExtensions = ['mp4', 'webm', 'ogg'];
|
|
35
37
|
/**
|
|
36
38
|
* _file is the file object if it's present
|
|
37
39
|
* Whereas the value is the path to the file
|
|
@@ -43,6 +45,9 @@ export class VideoField extends FileField {
|
|
|
43
45
|
constructor(config, file) {
|
|
44
46
|
super(config, 'video');
|
|
45
47
|
this._file = file;
|
|
48
|
+
if (config.fileType && config.fileType.some((type) => !this.possibleExtensions.includes(type))) {
|
|
49
|
+
throw new Error(getString('invalidFileExtension', this.language, { extensions: config.fileType.join(', ') }));
|
|
50
|
+
}
|
|
46
51
|
this.extensions = config.fileType ?? ['mp4'];
|
|
47
52
|
this.maxFileSize = config.maxFileSize ?? { size: 2, unit: 'mb' };
|
|
48
53
|
/**
|
|
@@ -58,7 +63,7 @@ export class VideoField extends FileField {
|
|
|
58
63
|
case 'ogg':
|
|
59
64
|
return 'video/ogg';
|
|
60
65
|
default:
|
|
61
|
-
|
|
66
|
+
throw new Error(getString('invalidFileExtension', this.language, { extensions: e }));
|
|
62
67
|
}
|
|
63
68
|
});
|
|
64
69
|
/**
|
|
@@ -187,10 +192,21 @@ export class VideoField extends FileField {
|
|
|
187
192
|
if (!this._buffer.length) {
|
|
188
193
|
throw new Error(getString('fieldIsRequired', this.language, { field: this.getLocalizedLabel() }));
|
|
189
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Check the file size
|
|
197
|
+
*/
|
|
198
|
+
const fileSize = this._buffer.length;
|
|
199
|
+
if (fileSize > this.maxFileSize.size * (this.maxFileSize.unit === 'kb' ? 1024 : 1024 * 1024)) {
|
|
200
|
+
throw new Error(getString('fileSizeExceedsMax', this.language, {
|
|
201
|
+
field: this.getLocalizedLabel(),
|
|
202
|
+
actual: humanReadableFileSize(fileSize),
|
|
203
|
+
max: `${this.maxFileSize.size} ${this.maxFileSize.unit}`,
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
190
206
|
/**
|
|
191
207
|
* Check extension
|
|
192
208
|
*/
|
|
193
|
-
const ext = this._file.name.split('.').pop();
|
|
209
|
+
const ext = this._file.name.split('.').pop()?.toLowerCase();
|
|
194
210
|
if (!ext || !this.extensions.includes(ext)) {
|
|
195
211
|
throw new Error(getString('invalidFileTypeOrExtension', this.language, {
|
|
196
212
|
field: this.getLocalizedLabel(),
|