nextjs-cms 0.5.9 → 0.5.10
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/axios/axiosInstance.d.ts +1 -1
- package/dist/api/axios/axiosInstance.js +8 -8
- package/dist/api/index.d.ts +855 -855
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +12 -12
- package/dist/api/lib/serverActions.d.ts +239 -239
- package/dist/api/lib/serverActions.d.ts.map +1 -1
- package/dist/api/lib/serverActions.js +834 -834
- package/dist/api/root.d.ts +828 -828
- package/dist/api/root.js +30 -30
- package/dist/api/routers/accountSettings.d.ts +60 -60
- package/dist/api/routers/accountSettings.js +108 -108
- package/dist/api/routers/admins.d.ts +105 -105
- package/dist/api/routers/admins.js +219 -219
- package/dist/api/routers/auth.d.ts +47 -47
- package/dist/api/routers/auth.js +25 -25
- package/dist/api/routers/categorySection.d.ts +103 -103
- package/dist/api/routers/categorySection.js +38 -38
- package/dist/api/routers/cmsSettings.d.ts +48 -48
- package/dist/api/routers/cmsSettings.js +51 -51
- package/dist/api/routers/cpanel.d.ts +83 -83
- package/dist/api/routers/cpanel.js +216 -216
- package/dist/api/routers/files.d.ts +47 -47
- package/dist/api/routers/files.js +23 -23
- package/dist/api/routers/gallery.d.ts +35 -35
- package/dist/api/routers/gallery.js +62 -62
- package/dist/api/routers/googleAnalytics.d.ts +30 -30
- package/dist/api/routers/googleAnalytics.js +7 -7
- package/dist/api/routers/hasItemsSection.d.ts +139 -139
- package/dist/api/routers/hasItemsSection.js +34 -34
- package/dist/api/routers/navigation.d.ts +51 -51
- package/dist/api/routers/navigation.js +11 -11
- package/dist/api/routers/simpleSection.d.ts +57 -57
- package/dist/api/routers/simpleSection.js +12 -12
- package/dist/api/trpc.d.ts +106 -106
- package/dist/api/trpc.js +72 -72
- package/dist/auth/axios/axiosInstance.d.ts +1 -1
- package/dist/auth/axios/axiosInstance.js +8 -8
- package/dist/auth/csrf.d.ts +29 -29
- package/dist/auth/csrf.js +76 -76
- package/dist/auth/hooks/index.d.ts +3 -3
- package/dist/auth/hooks/index.d.ts.map +1 -1
- package/dist/auth/hooks/index.js +3 -3
- package/dist/auth/hooks/useAxiosPrivate.d.ts +4 -4
- package/dist/auth/hooks/useAxiosPrivate.js +74 -74
- package/dist/auth/hooks/useRefreshToken.d.ts +6 -6
- package/dist/auth/hooks/useRefreshToken.js +79 -79
- package/dist/auth/index.d.ts +22 -22
- package/dist/auth/index.js +44 -44
- package/dist/auth/jwt.d.ts +5 -5
- package/dist/auth/jwt.js +25 -25
- package/dist/auth/lib/actions.d.ts +32 -32
- package/dist/auth/lib/actions.d.ts.map +1 -1
- package/dist/auth/lib/actions.js +209 -209
- package/dist/auth/lib/client.d.ts +3 -3
- package/dist/auth/lib/client.js +46 -46
- package/dist/auth/lib/index.d.ts +2 -2
- package/dist/auth/lib/index.d.ts.map +1 -1
- package/dist/auth/lib/index.js +2 -2
- package/dist/auth/react.d.ts +105 -105
- package/dist/auth/react.d.ts.map +1 -1
- package/dist/auth/react.js +347 -347
- package/dist/auth/trpc.d.ts +5 -5
- package/dist/auth/trpc.d.ts.map +1 -1
- package/dist/auth/trpc.js +81 -81
- package/dist/core/config/config-loader.d.ts +91 -91
- package/dist/core/config/config-loader.js +230 -230
- package/dist/core/config/index.d.ts +2 -2
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/index.js +1 -1
- package/dist/core/config/loader.d.ts +1 -1
- package/dist/core/config/loader.js +42 -42
- package/dist/core/db/index.d.ts +1 -1
- package/dist/core/db/index.d.ts.map +1 -1
- package/dist/core/db/index.js +1 -1
- package/dist/core/db/table-checker/DbTable.d.ts +5 -5
- package/dist/core/db/table-checker/DbTable.js +5 -5
- package/dist/core/db/table-checker/MysqlTable.d.ts +33 -33
- package/dist/core/db/table-checker/MysqlTable.d.ts.map +1 -1
- package/dist/core/db/table-checker/MysqlTable.js +94 -94
- package/dist/core/db/table-checker/index.d.ts +1 -1
- package/dist/core/db/table-checker/index.d.ts.map +1 -1
- package/dist/core/db/table-checker/index.js +1 -1
- package/dist/core/factories/FieldFactory.d.ts +123 -123
- package/dist/core/factories/FieldFactory.d.ts.map +1 -1
- package/dist/core/factories/FieldFactory.js +411 -411
- package/dist/core/factories/SectionFactory.d.ts +109 -109
- package/dist/core/factories/SectionFactory.d.ts.map +1 -1
- package/dist/core/factories/SectionFactory.js +415 -415
- package/dist/core/factories/index.d.ts +2 -2
- package/dist/core/factories/index.d.ts.map +1 -1
- package/dist/core/factories/index.js +2 -2
- package/dist/core/fields/checkbox.d.ts +62 -62
- package/dist/core/fields/checkbox.d.ts.map +1 -1
- package/dist/core/fields/checkbox.js +62 -62
- package/dist/core/fields/color.d.ts +83 -83
- package/dist/core/fields/color.d.ts.map +1 -1
- package/dist/core/fields/color.js +91 -91
- package/dist/core/fields/date.d.ts +99 -99
- package/dist/core/fields/date.d.ts.map +1 -1
- package/dist/core/fields/date.js +108 -108
- package/dist/core/fields/document.d.ts +179 -179
- package/dist/core/fields/document.d.ts.map +1 -1
- package/dist/core/fields/document.js +277 -277
- package/dist/core/fields/field-group.d.ts +17 -17
- package/dist/core/fields/field-group.d.ts.map +1 -1
- package/dist/core/fields/field-group.js +6 -6
- package/dist/core/fields/field.d.ts +125 -125
- package/dist/core/fields/field.d.ts.map +1 -1
- package/dist/core/fields/field.js +148 -148
- package/dist/core/fields/fileField.d.ts +14 -14
- package/dist/core/fields/fileField.d.ts.map +1 -1
- package/dist/core/fields/fileField.js +5 -5
- package/dist/core/fields/index.d.ts +64 -64
- package/dist/core/fields/index.d.ts.map +1 -1
- package/dist/core/fields/index.js +18 -18
- package/dist/core/fields/map.d.ts +166 -166
- package/dist/core/fields/map.d.ts.map +1 -1
- package/dist/core/fields/map.js +152 -152
- package/dist/core/fields/number.d.ts +185 -185
- package/dist/core/fields/number.d.ts.map +1 -1
- package/dist/core/fields/number.js +241 -241
- package/dist/core/fields/password.d.ts +108 -108
- package/dist/core/fields/password.d.ts.map +1 -1
- package/dist/core/fields/password.js +133 -133
- package/dist/core/fields/photo.d.ts +288 -288
- package/dist/core/fields/photo.d.ts.map +1 -1
- package/dist/core/fields/photo.js +410 -410
- package/dist/core/fields/richText.d.ts +294 -294
- package/dist/core/fields/richText.d.ts.map +1 -1
- package/dist/core/fields/richText.js +338 -338
- package/dist/core/fields/select.d.ts +365 -365
- package/dist/core/fields/select.d.ts.map +1 -1
- package/dist/core/fields/select.js +499 -499
- package/dist/core/fields/selectMultiple.d.ts +235 -235
- package/dist/core/fields/selectMultiple.d.ts.map +1 -1
- package/dist/core/fields/selectMultiple.js +417 -417
- package/dist/core/fields/tags.d.ts +130 -130
- package/dist/core/fields/tags.d.ts.map +1 -1
- package/dist/core/fields/tags.js +105 -105
- package/dist/core/fields/text.d.ts +135 -135
- package/dist/core/fields/text.d.ts.map +1 -1
- package/dist/core/fields/text.js +157 -157
- package/dist/core/fields/textArea.d.ts +106 -106
- package/dist/core/fields/textArea.d.ts.map +1 -1
- package/dist/core/fields/textArea.js +126 -126
- package/dist/core/fields/video.d.ts +147 -147
- package/dist/core/fields/video.d.ts.map +1 -1
- package/dist/core/fields/video.js +248 -248
- package/dist/core/helpers/entity.d.ts +7 -7
- package/dist/core/helpers/entity.js +27 -27
- package/dist/core/helpers/index.d.ts +4 -4
- package/dist/core/helpers/index.d.ts.map +1 -1
- package/dist/core/helpers/index.js +3 -3
- package/dist/core/index.d.ts +7 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -7
- package/dist/core/sections/category.d.ts +282 -282
- package/dist/core/sections/category.d.ts.map +1 -1
- package/dist/core/sections/category.js +147 -147
- package/dist/core/sections/hasItems.d.ts +631 -631
- package/dist/core/sections/hasItems.d.ts.map +1 -1
- package/dist/core/sections/hasItems.js +144 -144
- package/dist/core/sections/index.d.ts +4 -4
- package/dist/core/sections/index.d.ts.map +1 -1
- package/dist/core/sections/index.js +4 -4
- package/dist/core/sections/section.d.ts +225 -225
- package/dist/core/sections/section.d.ts.map +1 -1
- package/dist/core/sections/section.js +341 -341
- package/dist/core/sections/simple.d.ts +98 -98
- package/dist/core/sections/simple.d.ts.map +1 -1
- package/dist/core/sections/simple.js +95 -95
- package/dist/core/security/dom.d.ts +10 -10
- package/dist/core/security/dom.js +92 -92
- package/dist/core/submit/ItemEditSubmit.d.ts +75 -75
- package/dist/core/submit/ItemEditSubmit.js +186 -186
- package/dist/core/submit/NewItemSubmit.d.ts +13 -13
- package/dist/core/submit/NewItemSubmit.js +93 -93
- package/dist/core/submit/SimpleSectionSubmit.d.ts +12 -12
- package/dist/core/submit/SimpleSectionSubmit.js +93 -93
- package/dist/core/submit/index.d.ts +4 -4
- package/dist/core/submit/index.js +4 -4
- package/dist/core/submit/submit.d.ts +115 -115
- package/dist/core/submit/submit.js +479 -479
- package/dist/core/types/index.d.ts +279 -279
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +1 -1
- package/dist/db/client.d.ts +8 -8
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +19 -19
- package/dist/db/config.d.ts +5 -5
- package/dist/db/config.js +22 -22
- package/dist/db/drizzle.config.d.ts +5 -5
- package/dist/db/drizzle.config.js +18 -18
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.js +3 -3
- package/dist/db/schema.d.ts +638 -638
- package/dist/db/schema.js +73 -73
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/translations/index.d.ts +2 -2
- package/dist/translations/index.js +15 -15
- package/dist/utils/CpanelApi.d.ts +24 -24
- package/dist/utils/CpanelApi.js +64 -64
- package/dist/utils/constants.d.ts +13 -13
- package/dist/utils/constants.js +61 -61
- package/dist/utils/index.d.ts +4 -4
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -4
- package/dist/utils/utils.d.ts +59 -59
- package/dist/utils/utils.js +132 -132
- package/dist/validators/checkbox.d.ts +3 -3
- package/dist/validators/checkbox.d.ts.map +1 -1
- package/dist/validators/checkbox.js +12 -12
- package/dist/validators/color.d.ts +3 -3
- package/dist/validators/color.d.ts.map +1 -1
- package/dist/validators/color.js +7 -7
- package/dist/validators/date.d.ts +3 -3
- package/dist/validators/date.d.ts.map +1 -1
- package/dist/validators/date.js +5 -5
- package/dist/validators/document.d.ts +3 -3
- package/dist/validators/document.d.ts.map +1 -1
- package/dist/validators/document.js +57 -57
- package/dist/validators/index.d.ts +14 -14
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +14 -14
- package/dist/validators/map.d.ts +3 -3
- package/dist/validators/map.d.ts.map +1 -1
- package/dist/validators/map.js +5 -5
- package/dist/validators/number.d.ts +3 -3
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/number.js +20 -20
- package/dist/validators/password.d.ts +3 -3
- package/dist/validators/password.d.ts.map +1 -1
- package/dist/validators/password.js +11 -11
- package/dist/validators/photo.d.ts +3 -3
- package/dist/validators/photo.d.ts.map +1 -1
- package/dist/validators/photo.js +100 -100
- package/dist/validators/richText.d.ts +3 -3
- package/dist/validators/richText.d.ts.map +1 -1
- package/dist/validators/richText.js +8 -8
- package/dist/validators/select-multiple.d.ts +9 -9
- package/dist/validators/select-multiple.d.ts.map +1 -1
- package/dist/validators/select-multiple.js +20 -20
- package/dist/validators/select.d.ts +3 -3
- package/dist/validators/select.d.ts.map +1 -1
- package/dist/validators/select.js +5 -5
- package/dist/validators/text.d.ts +3 -3
- package/dist/validators/text.d.ts.map +1 -1
- package/dist/validators/text.js +7 -7
- package/dist/validators/textarea.d.ts +3 -3
- package/dist/validators/textarea.d.ts.map +1 -1
- package/dist/validators/textarea.js +7 -7
- package/dist/validators/video.d.ts +3 -3
- package/dist/validators/video.d.ts.map +1 -1
- package/dist/validators/video.js +57 -57
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasItems.d.ts","sourceRoot":"","sources":["../../../src/core/sections/hasItems.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"hasItems.d.ts","sourceRoot":"","sources":["../../../src/core/sections/hasItems.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACtG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,OAAO,EAA8E,MAAM,cAAc,CAAA;AAClH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0BhB,CAAA;AAEF,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAE1C,qBAAa,eAAgB,SAAQ,OAAO,CAAC,MAAM,CAAC;IAChD,gBAAyB,CAAC,UAAU,CAAC,qBAAoB;IACzD,SAAkB,IAAI,eAAc;IACpC,YAAY,EAAE,eAAe,GAAG,qBAAqB,CAAA;IAC5C,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE,wBAAwB,EAAE,OAAO,CAAA;IACjC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;IACtE,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;gBAGpB,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;CAUjD;AAED,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAGjB,CAAA;AAOF,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQ/B,CAAA;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAElE;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAE/E;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAmEtF"}
|
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
// import { Variant } from '@/lz/types'
|
|
2
|
-
import { entityKind } from
|
|
3
|
-
import { Section, baseHelperFunctionOptionsSchema, FieldGroupConfigSchema, fieldConfigSchema } from
|
|
4
|
-
import chalk from 'chalk';
|
|
5
|
-
import * as z from 'zod';
|
|
6
|
-
const configSchema = z.strictObject({
|
|
7
|
-
headingField: z
|
|
8
|
-
.custom()
|
|
9
|
-
.describe('Heading field must be a config - will be resolved during instantiation'),
|
|
10
|
-
title: z
|
|
11
|
-
.strictObject({
|
|
12
|
-
section: z.string().describe('The section title'),
|
|
13
|
-
singular: z.string().describe('The singular form of the title'),
|
|
14
|
-
plural: z.string().describe('The plural form of the title'),
|
|
15
|
-
})
|
|
16
|
-
.describe('The title configuration for the has items section'),
|
|
17
|
-
requirePublishPermission: z.boolean().optional().describe('Require publish permission'),
|
|
18
|
-
search: z
|
|
19
|
-
.strictObject({
|
|
20
|
-
searchFields: z
|
|
21
|
-
.array(z.custom())
|
|
22
|
-
.readonly()
|
|
23
|
-
.describe('Search fields must be configs - will be resolved during instantiation'),
|
|
24
|
-
})
|
|
25
|
-
.optional()
|
|
26
|
-
.describe('Search configuration'),
|
|
27
|
-
coverPhotoField: z
|
|
28
|
-
.custom()
|
|
29
|
-
.optional()
|
|
30
|
-
.describe('Cover photo field must be a config - will be resolved during instantiation'),
|
|
31
|
-
generateQR: z.boolean().optional().describe('Generate QR code'),
|
|
32
|
-
});
|
|
33
|
-
export class HasItemsSection extends Section {
|
|
34
|
-
static [entityKind] = 'HasItemsSection';
|
|
35
|
-
type = 'has_items';
|
|
36
|
-
headingField;
|
|
37
|
-
title;
|
|
38
|
-
requirePublishPermission;
|
|
39
|
-
search;
|
|
40
|
-
coverPhotoField;
|
|
41
|
-
generateQR;
|
|
42
|
-
// override variants?: Variant[] | undefined
|
|
43
|
-
constructor(config) {
|
|
44
|
-
super(config);
|
|
45
|
-
this.headingField = config.headingField;
|
|
46
|
-
this.title = config.title;
|
|
47
|
-
this.requirePublishPermission = config.requirePublishPermission ?? false;
|
|
48
|
-
this.search = config.search;
|
|
49
|
-
this.coverPhotoField = config.coverPhotoField;
|
|
50
|
-
this.generateQR = config.generateQR;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
const optionsSchema = z.strictObject({
|
|
54
|
-
...baseHelperFunctionOptionsSchema.shape,
|
|
55
|
-
...configSchema.shape,
|
|
56
|
-
});
|
|
57
|
-
const compiledOptionsSchema = z.strictObject({
|
|
58
|
-
...optionsSchema.shape,
|
|
59
|
-
fieldGroups: z.array(FieldGroupConfigSchema).optional().describe('The field groups of the section if provided'),
|
|
60
|
-
});
|
|
61
|
-
const hasItemsSectionConfigSchema = z.strictObject({
|
|
62
|
-
...compiledOptionsSchema.shape,
|
|
63
|
-
type: z.literal('has_items').describe('The type of the section'),
|
|
64
|
-
fields: z.array(fieldConfigSchema).describe('The fields of the section'),
|
|
65
|
-
build: z
|
|
66
|
-
.function()
|
|
67
|
-
.output(z.instanceof(HasItemsSection))
|
|
68
|
-
.describe('Build a HasItemsSection instance from this config'),
|
|
69
|
-
});
|
|
70
|
-
/**
|
|
71
|
-
* Helper function to create a hasItems section configuration
|
|
72
|
-
* Returns a config object with a build() method that can be serialized and used anywhere
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const sectionConfig = hasItemsSection({ name: 'posts', ... })
|
|
77
|
-
* const sectionInstance = sectionConfig.build()
|
|
78
|
-
* ```
|
|
79
|
-
*
|
|
80
|
-
* @param section
|
|
81
|
-
*/
|
|
82
|
-
export function hasItemsSection(section) {
|
|
83
|
-
/**
|
|
84
|
-
* Validate the section config
|
|
85
|
-
*/
|
|
86
|
-
const result = optionsSchema.safeParse(section);
|
|
87
|
-
if (!result.success) {
|
|
88
|
-
throw new Error(`[Section: ${section.name}]: ${z.prettifyError(result.error)}`);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Resolve fields and fieldGroups
|
|
92
|
-
*/
|
|
93
|
-
let fields = [];
|
|
94
|
-
let fieldGroups = [];
|
|
95
|
-
if (section.fields.length > 0) {
|
|
96
|
-
const firstInput = section.fields[0];
|
|
97
|
-
/**
|
|
98
|
-
* Check if the first item is a field group.
|
|
99
|
-
* We don't need to check every item,
|
|
100
|
-
* because zod already validated the fields array.
|
|
101
|
-
*/
|
|
102
|
-
if (firstInput && 'fields' in firstInput) {
|
|
103
|
-
fieldGroups = section.fields;
|
|
104
|
-
fields = fieldGroups.flatMap((group) => group.fields);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
fields = section.fields;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
const message = `[Section: ${section.name}]: No fields or field groups provided.`;
|
|
112
|
-
console.log(chalk.red('--------------------------------'));
|
|
113
|
-
console.error(chalk.red.bold(message));
|
|
114
|
-
console.log('\n');
|
|
115
|
-
console.log(chalk.yellow('Please make sure to provide at least one input or field group in the section config.'));
|
|
116
|
-
console.log('\n');
|
|
117
|
-
console.log(chalk.red('--------------------------------'));
|
|
118
|
-
throw new Error(message);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Check for duplicate field names
|
|
122
|
-
*/
|
|
123
|
-
const fieldNames = fields.map((field) => field.name);
|
|
124
|
-
const duplicates = fieldNames.filter((name, index) => fieldNames.indexOf(name) !== index);
|
|
125
|
-
if (duplicates.length > 0) {
|
|
126
|
-
const uniqueDuplicates = [...new Set(duplicates)];
|
|
127
|
-
const message = `${chalk.red.bold(` - ${chalk.underline(`[Section: ${section.name}]:`)} Duplicate field names detected: ${uniqueDuplicates.join(', ')}.`)}\n${chalk.yellow(' Field names must be unique. Please make sure every field name is unique in each section.')}`;
|
|
128
|
-
throw new Error(message);
|
|
129
|
-
}
|
|
130
|
-
const config = {
|
|
131
|
-
...section,
|
|
132
|
-
fields,
|
|
133
|
-
fieldGroups: fieldGroups.length > 0 ? fieldGroups : undefined,
|
|
134
|
-
type: 'has_items',
|
|
135
|
-
build() {
|
|
136
|
-
return new HasItemsSection({
|
|
137
|
-
...section,
|
|
138
|
-
fields,
|
|
139
|
-
fieldGroups: fieldGroups.length > 0 ? fieldGroups : undefined,
|
|
140
|
-
});
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
return config;
|
|
144
|
-
}
|
|
1
|
+
// import { Variant } from '@/lz/types'
|
|
2
|
+
import { entityKind } from '../helpers/index.js';
|
|
3
|
+
import { Section, baseHelperFunctionOptionsSchema, FieldGroupConfigSchema, fieldConfigSchema } from './section.js';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import * as z from 'zod';
|
|
6
|
+
const configSchema = z.strictObject({
|
|
7
|
+
headingField: z
|
|
8
|
+
.custom()
|
|
9
|
+
.describe('Heading field must be a config - will be resolved during instantiation'),
|
|
10
|
+
title: z
|
|
11
|
+
.strictObject({
|
|
12
|
+
section: z.string().describe('The section title'),
|
|
13
|
+
singular: z.string().describe('The singular form of the title'),
|
|
14
|
+
plural: z.string().describe('The plural form of the title'),
|
|
15
|
+
})
|
|
16
|
+
.describe('The title configuration for the has items section'),
|
|
17
|
+
requirePublishPermission: z.boolean().optional().describe('Require publish permission'),
|
|
18
|
+
search: z
|
|
19
|
+
.strictObject({
|
|
20
|
+
searchFields: z
|
|
21
|
+
.array(z.custom())
|
|
22
|
+
.readonly()
|
|
23
|
+
.describe('Search fields must be configs - will be resolved during instantiation'),
|
|
24
|
+
})
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Search configuration'),
|
|
27
|
+
coverPhotoField: z
|
|
28
|
+
.custom()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('Cover photo field must be a config - will be resolved during instantiation'),
|
|
31
|
+
generateQR: z.boolean().optional().describe('Generate QR code'),
|
|
32
|
+
});
|
|
33
|
+
export class HasItemsSection extends Section {
|
|
34
|
+
static [entityKind] = 'HasItemsSection';
|
|
35
|
+
type = 'has_items';
|
|
36
|
+
headingField;
|
|
37
|
+
title;
|
|
38
|
+
requirePublishPermission;
|
|
39
|
+
search;
|
|
40
|
+
coverPhotoField;
|
|
41
|
+
generateQR;
|
|
42
|
+
// override variants?: Variant[] | undefined
|
|
43
|
+
constructor(config) {
|
|
44
|
+
super(config);
|
|
45
|
+
this.headingField = config.headingField;
|
|
46
|
+
this.title = config.title;
|
|
47
|
+
this.requirePublishPermission = config.requirePublishPermission ?? false;
|
|
48
|
+
this.search = config.search;
|
|
49
|
+
this.coverPhotoField = config.coverPhotoField;
|
|
50
|
+
this.generateQR = config.generateQR;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const optionsSchema = z.strictObject({
|
|
54
|
+
...baseHelperFunctionOptionsSchema.shape,
|
|
55
|
+
...configSchema.shape,
|
|
56
|
+
});
|
|
57
|
+
const compiledOptionsSchema = z.strictObject({
|
|
58
|
+
...optionsSchema.shape,
|
|
59
|
+
fieldGroups: z.array(FieldGroupConfigSchema).optional().describe('The field groups of the section if provided'),
|
|
60
|
+
});
|
|
61
|
+
const hasItemsSectionConfigSchema = z.strictObject({
|
|
62
|
+
...compiledOptionsSchema.shape,
|
|
63
|
+
type: z.literal('has_items').describe('The type of the section'),
|
|
64
|
+
fields: z.array(fieldConfigSchema).describe('The fields of the section'),
|
|
65
|
+
build: z
|
|
66
|
+
.function()
|
|
67
|
+
.output(z.instanceof(HasItemsSection))
|
|
68
|
+
.describe('Build a HasItemsSection instance from this config'),
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Helper function to create a hasItems section configuration
|
|
72
|
+
* Returns a config object with a build() method that can be serialized and used anywhere
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const sectionConfig = hasItemsSection({ name: 'posts', ... })
|
|
77
|
+
* const sectionInstance = sectionConfig.build()
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @param section
|
|
81
|
+
*/
|
|
82
|
+
export function hasItemsSection(section) {
|
|
83
|
+
/**
|
|
84
|
+
* Validate the section config
|
|
85
|
+
*/
|
|
86
|
+
const result = optionsSchema.safeParse(section);
|
|
87
|
+
if (!result.success) {
|
|
88
|
+
throw new Error(`[Section: ${section.name}]: ${z.prettifyError(result.error)}`);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolve fields and fieldGroups
|
|
92
|
+
*/
|
|
93
|
+
let fields = [];
|
|
94
|
+
let fieldGroups = [];
|
|
95
|
+
if (section.fields.length > 0) {
|
|
96
|
+
const firstInput = section.fields[0];
|
|
97
|
+
/**
|
|
98
|
+
* Check if the first item is a field group.
|
|
99
|
+
* We don't need to check every item,
|
|
100
|
+
* because zod already validated the fields array.
|
|
101
|
+
*/
|
|
102
|
+
if (firstInput && 'fields' in firstInput) {
|
|
103
|
+
fieldGroups = section.fields;
|
|
104
|
+
fields = fieldGroups.flatMap((group) => group.fields);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
fields = section.fields;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const message = `[Section: ${section.name}]: No fields or field groups provided.`;
|
|
112
|
+
console.log(chalk.red('--------------------------------'));
|
|
113
|
+
console.error(chalk.red.bold(message));
|
|
114
|
+
console.log('\n');
|
|
115
|
+
console.log(chalk.yellow('Please make sure to provide at least one input or field group in the section config.'));
|
|
116
|
+
console.log('\n');
|
|
117
|
+
console.log(chalk.red('--------------------------------'));
|
|
118
|
+
throw new Error(message);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check for duplicate field names
|
|
122
|
+
*/
|
|
123
|
+
const fieldNames = fields.map((field) => field.name);
|
|
124
|
+
const duplicates = fieldNames.filter((name, index) => fieldNames.indexOf(name) !== index);
|
|
125
|
+
if (duplicates.length > 0) {
|
|
126
|
+
const uniqueDuplicates = [...new Set(duplicates)];
|
|
127
|
+
const message = `${chalk.red.bold(` - ${chalk.underline(`[Section: ${section.name}]:`)} Duplicate field names detected: ${uniqueDuplicates.join(', ')}.`)}\n${chalk.yellow(' Field names must be unique. Please make sure every field name is unique in each section.')}`;
|
|
128
|
+
throw new Error(message);
|
|
129
|
+
}
|
|
130
|
+
const config = {
|
|
131
|
+
...section,
|
|
132
|
+
fields,
|
|
133
|
+
fieldGroups: fieldGroups.length > 0 ? fieldGroups : undefined,
|
|
134
|
+
type: 'has_items',
|
|
135
|
+
build() {
|
|
136
|
+
return new HasItemsSection({
|
|
137
|
+
...section,
|
|
138
|
+
fields,
|
|
139
|
+
fieldGroups: fieldGroups.length > 0 ? fieldGroups : undefined,
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
return config;
|
|
144
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from './simple.js';
|
|
2
|
+
export * from './hasItems.js';
|
|
3
|
+
export * from './category.js';
|
|
4
|
+
export * from './section.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/sections/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/sections/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from './simple.js';
|
|
2
|
+
export * from './hasItems.js';
|
|
3
|
+
export * from './category.js';
|
|
4
|
+
export * from './section.js';
|