nextjs-cms 0.0.1 → 0.5.1
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/LICENSE +21 -0
- package/README.md +289 -0
- package/dist/api/axios/axiosInstance.d.ts +2 -0
- package/dist/api/axios/axiosInstance.d.ts.map +1 -0
- package/dist/api/axios/axiosInstance.js +8 -0
- package/dist/api/index.d.ts +856 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +12 -0
- package/dist/api/lib/serverActions.d.ts +240 -0
- package/dist/api/lib/serverActions.d.ts.map +1 -0
- package/dist/api/lib/serverActions.js +834 -0
- package/dist/api/root.d.ts +829 -0
- package/dist/api/root.d.ts.map +1 -0
- package/dist/api/root.js +30 -0
- package/dist/api/routers/accountSettings.d.ts +61 -0
- package/dist/api/routers/accountSettings.d.ts.map +1 -0
- package/dist/api/routers/accountSettings.js +108 -0
- package/dist/api/routers/admins.d.ts +106 -0
- package/dist/api/routers/admins.d.ts.map +1 -0
- package/dist/api/routers/admins.js +219 -0
- package/dist/api/routers/auth.d.ts +48 -0
- package/dist/api/routers/auth.d.ts.map +1 -0
- package/dist/api/routers/auth.js +25 -0
- package/dist/api/routers/categorySection.d.ts +104 -0
- package/dist/api/routers/categorySection.d.ts.map +1 -0
- package/dist/api/routers/categorySection.js +38 -0
- package/dist/api/routers/cmsSettings.d.ts +49 -0
- package/dist/api/routers/cmsSettings.d.ts.map +1 -0
- package/dist/api/routers/cmsSettings.js +51 -0
- package/dist/api/routers/cpanel.d.ts +84 -0
- package/dist/api/routers/cpanel.d.ts.map +1 -0
- package/dist/api/routers/cpanel.js +216 -0
- package/dist/api/routers/files.d.ts +48 -0
- package/dist/api/routers/files.d.ts.map +1 -0
- package/dist/api/routers/files.js +23 -0
- package/dist/api/routers/gallery.d.ts +36 -0
- package/dist/api/routers/gallery.d.ts.map +1 -0
- package/dist/api/routers/gallery.js +62 -0
- package/dist/api/routers/googleAnalytics.d.ts +31 -0
- package/dist/api/routers/googleAnalytics.d.ts.map +1 -0
- package/dist/api/routers/googleAnalytics.js +7 -0
- package/dist/api/routers/hasItemsSection.d.ts +140 -0
- package/dist/api/routers/hasItemsSection.d.ts.map +1 -0
- package/dist/api/routers/hasItemsSection.js +34 -0
- package/dist/api/routers/navigation.d.ts +52 -0
- package/dist/api/routers/navigation.d.ts.map +1 -0
- package/dist/api/routers/navigation.js +11 -0
- package/dist/api/routers/simpleSection.d.ts +58 -0
- package/dist/api/routers/simpleSection.d.ts.map +1 -0
- package/dist/api/routers/simpleSection.js +12 -0
- package/dist/api/trpc.d.ts +107 -0
- package/dist/api/trpc.d.ts.map +1 -0
- package/dist/api/trpc.js +72 -0
- package/dist/auth/axios/axiosInstance.d.ts +2 -0
- package/dist/auth/axios/axiosInstance.d.ts.map +1 -0
- package/dist/auth/axios/axiosInstance.js +8 -0
- package/dist/auth/csrf.d.ts +30 -0
- package/dist/auth/csrf.d.ts.map +1 -0
- package/dist/auth/csrf.js +76 -0
- package/dist/auth/hooks/index.d.ts +4 -0
- package/dist/auth/hooks/index.d.ts.map +1 -0
- package/dist/auth/hooks/index.js +3 -0
- package/dist/auth/hooks/useAxiosPrivate.d.ts +5 -0
- package/dist/auth/hooks/useAxiosPrivate.d.ts.map +1 -0
- package/dist/auth/hooks/useAxiosPrivate.js +74 -0
- package/dist/auth/hooks/useRefreshToken.d.ts +7 -0
- package/dist/auth/hooks/useRefreshToken.d.ts.map +1 -0
- package/dist/auth/hooks/useRefreshToken.js +79 -0
- package/dist/auth/index.d.ts +23 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +44 -0
- package/dist/auth/jwt.d.ts +6 -0
- package/dist/auth/jwt.d.ts.map +1 -0
- package/dist/auth/jwt.js +25 -0
- package/dist/auth/lib/actions.d.ts +33 -0
- package/dist/auth/lib/actions.d.ts.map +1 -0
- package/dist/auth/lib/actions.js +209 -0
- package/dist/auth/lib/client.d.ts +4 -0
- package/dist/auth/lib/client.d.ts.map +1 -0
- package/dist/auth/lib/client.js +46 -0
- package/dist/auth/lib/index.d.ts +3 -0
- package/dist/auth/lib/index.d.ts.map +1 -0
- package/dist/auth/lib/index.js +2 -0
- package/dist/auth/react.d.ts +106 -0
- package/dist/auth/react.d.ts.map +1 -0
- package/dist/auth/react.js +347 -0
- package/dist/auth/trpc.d.ts +6 -0
- package/dist/auth/trpc.d.ts.map +1 -0
- package/dist/auth/trpc.js +81 -0
- package/dist/core/config/config-loader.d.ts +92 -0
- package/dist/core/config/config-loader.d.ts.map +1 -0
- package/dist/core/config/config-loader.js +230 -0
- package/dist/core/config/index.d.ts +3 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +1 -0
- package/dist/core/config/loader.d.ts +2 -0
- package/dist/core/config/loader.d.ts.map +1 -0
- package/dist/core/config/loader.js +42 -0
- package/dist/core/db/index.d.ts +2 -0
- package/dist/core/db/index.d.ts.map +1 -0
- package/dist/core/db/index.js +1 -0
- package/dist/core/db/table-checker/DbTable.d.ts +6 -0
- package/dist/core/db/table-checker/DbTable.d.ts.map +1 -0
- package/dist/core/db/table-checker/DbTable.js +5 -0
- package/dist/core/db/table-checker/MysqlTable.d.ts +34 -0
- package/dist/core/db/table-checker/MysqlTable.d.ts.map +1 -0
- package/dist/core/db/table-checker/MysqlTable.js +102 -0
- package/dist/core/db/table-checker/index.d.ts +2 -0
- package/dist/core/db/table-checker/index.d.ts.map +1 -0
- package/dist/core/db/table-checker/index.js +1 -0
- package/dist/core/factories/FieldFactory.d.ts +124 -0
- package/dist/core/factories/FieldFactory.d.ts.map +1 -0
- package/dist/core/factories/FieldFactory.js +411 -0
- package/dist/core/factories/SectionFactory.d.ts +110 -0
- package/dist/core/factories/SectionFactory.d.ts.map +1 -0
- package/dist/core/factories/SectionFactory.js +415 -0
- package/dist/core/factories/index.d.ts +3 -0
- package/dist/core/factories/index.d.ts.map +1 -0
- package/dist/core/factories/index.js +2 -0
- package/dist/core/fields/checkbox.d.ts +63 -0
- package/dist/core/fields/checkbox.d.ts.map +1 -0
- package/dist/core/fields/checkbox.js +62 -0
- package/dist/core/fields/color.d.ts +84 -0
- package/dist/core/fields/color.d.ts.map +1 -0
- package/dist/core/fields/color.js +91 -0
- package/dist/core/fields/date.d.ts +100 -0
- package/dist/core/fields/date.d.ts.map +1 -0
- package/dist/core/fields/date.js +108 -0
- package/dist/core/fields/document.d.ts +180 -0
- package/dist/core/fields/document.d.ts.map +1 -0
- package/dist/core/fields/document.js +277 -0
- package/dist/core/fields/field-group.d.ts +18 -0
- package/dist/core/fields/field-group.d.ts.map +1 -0
- package/dist/core/fields/field-group.js +6 -0
- package/dist/core/fields/field.d.ts +126 -0
- package/dist/core/fields/field.d.ts.map +1 -0
- package/dist/core/fields/field.js +148 -0
- package/dist/core/fields/fileField.d.ts +15 -0
- package/dist/core/fields/fileField.d.ts.map +1 -0
- package/dist/core/fields/fileField.js +5 -0
- package/dist/core/fields/index.d.ts +65 -0
- package/dist/core/fields/index.d.ts.map +1 -0
- package/dist/core/fields/index.js +18 -0
- package/dist/core/fields/map.d.ts +167 -0
- package/dist/core/fields/map.d.ts.map +1 -0
- package/dist/core/fields/map.js +152 -0
- package/dist/core/fields/number.d.ts +186 -0
- package/dist/core/fields/number.d.ts.map +1 -0
- package/dist/core/fields/number.js +241 -0
- package/dist/core/fields/password.d.ts +109 -0
- package/dist/core/fields/password.d.ts.map +1 -0
- package/dist/core/fields/password.js +133 -0
- package/dist/core/fields/photo.d.ts +289 -0
- package/dist/core/fields/photo.d.ts.map +1 -0
- package/dist/core/fields/photo.js +410 -0
- package/dist/core/fields/richText.d.ts +295 -0
- package/dist/core/fields/richText.d.ts.map +1 -0
- package/dist/core/fields/richText.js +338 -0
- package/dist/core/fields/select.d.ts +366 -0
- package/dist/core/fields/select.d.ts.map +1 -0
- package/dist/core/fields/select.js +499 -0
- package/dist/core/fields/selectMultiple.d.ts +236 -0
- package/dist/core/fields/selectMultiple.d.ts.map +1 -0
- package/dist/core/fields/selectMultiple.js +417 -0
- package/dist/core/fields/tags.d.ts +131 -0
- package/dist/core/fields/tags.d.ts.map +1 -0
- package/dist/core/fields/tags.js +105 -0
- package/dist/core/fields/text.d.ts +136 -0
- package/dist/core/fields/text.d.ts.map +1 -0
- package/dist/core/fields/text.js +157 -0
- package/dist/core/fields/textArea.d.ts +107 -0
- package/dist/core/fields/textArea.d.ts.map +1 -0
- package/dist/core/fields/textArea.js +126 -0
- package/dist/core/fields/video.d.ts +148 -0
- package/dist/core/fields/video.d.ts.map +1 -0
- package/dist/core/fields/video.js +248 -0
- package/dist/core/helpers/entity.d.ts +8 -0
- package/dist/core/helpers/entity.d.ts.map +1 -0
- package/dist/core/helpers/entity.js +27 -0
- package/dist/core/helpers/index.d.ts +5 -0
- package/dist/core/helpers/index.d.ts.map +1 -0
- package/dist/core/helpers/index.js +3 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/sections/category.d.ts +283 -0
- package/dist/core/sections/category.d.ts.map +1 -0
- package/dist/core/sections/category.js +147 -0
- package/dist/core/sections/hasItems.d.ts +632 -0
- package/dist/core/sections/hasItems.d.ts.map +1 -0
- package/dist/core/sections/hasItems.js +144 -0
- package/dist/core/sections/index.d.ts +5 -0
- package/dist/core/sections/index.d.ts.map +1 -0
- package/dist/core/sections/index.js +4 -0
- package/dist/core/sections/section.d.ts +226 -0
- package/dist/core/sections/section.d.ts.map +1 -0
- package/dist/core/sections/section.js +341 -0
- package/dist/core/sections/simple.d.ts +99 -0
- package/dist/core/sections/simple.d.ts.map +1 -0
- package/dist/core/sections/simple.js +95 -0
- package/dist/core/security/dom.d.ts +11 -0
- package/dist/core/security/dom.d.ts.map +1 -0
- package/dist/core/security/dom.js +92 -0
- package/dist/core/submit/ItemEditSubmit.d.ts +76 -0
- package/dist/core/submit/ItemEditSubmit.d.ts.map +1 -0
- package/dist/core/submit/ItemEditSubmit.js +186 -0
- package/dist/core/submit/NewItemSubmit.d.ts +14 -0
- package/dist/core/submit/NewItemSubmit.d.ts.map +1 -0
- package/dist/core/submit/NewItemSubmit.js +93 -0
- package/dist/core/submit/SimpleSectionSubmit.d.ts +13 -0
- package/dist/core/submit/SimpleSectionSubmit.d.ts.map +1 -0
- package/dist/core/submit/SimpleSectionSubmit.js +93 -0
- package/dist/core/submit/index.d.ts +5 -0
- package/dist/core/submit/index.d.ts.map +1 -0
- package/dist/core/submit/index.js +4 -0
- package/dist/core/submit/submit.d.ts +116 -0
- package/dist/core/submit/submit.d.ts.map +1 -0
- package/dist/core/submit/submit.js +479 -0
- package/dist/core/types/index.d.ts +280 -0
- package/dist/core/types/index.d.ts.map +1 -0
- package/dist/core/types/index.js +1 -0
- package/dist/db/client.d.ts +9 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +19 -0
- package/dist/db/config.d.ts +6 -0
- package/dist/db/config.d.ts.map +1 -0
- package/dist/db/config.js +22 -0
- package/dist/db/drizzle.config.d.ts +6 -0
- package/dist/db/drizzle.config.d.ts.map +1 -0
- package/dist/db/drizzle.config.js +18 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +3 -0
- package/dist/db/schema.d.ts +639 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +73 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/translations/dictionaries/ar.json +279 -0
- package/dist/translations/dictionaries/en.json +279 -0
- package/dist/translations/index.d.ts +3 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +15 -0
- package/dist/utils/CpanelApi.d.ts +25 -0
- package/dist/utils/CpanelApi.d.ts.map +1 -0
- package/dist/utils/CpanelApi.js +64 -0
- package/dist/utils/constants.d.ts +14 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +61 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/utils.d.ts +60 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +132 -0
- package/dist/validators/checkbox.d.ts +4 -0
- package/dist/validators/checkbox.d.ts.map +1 -0
- package/dist/validators/checkbox.js +12 -0
- package/dist/validators/color.d.ts +4 -0
- package/dist/validators/color.d.ts.map +1 -0
- package/dist/validators/color.js +7 -0
- package/dist/validators/date.d.ts +4 -0
- package/dist/validators/date.d.ts.map +1 -0
- package/dist/validators/date.js +5 -0
- package/dist/validators/document.d.ts +4 -0
- package/dist/validators/document.d.ts.map +1 -0
- package/dist/validators/document.js +57 -0
- package/dist/validators/index.d.ts +15 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +14 -0
- package/dist/validators/map.d.ts +4 -0
- package/dist/validators/map.d.ts.map +1 -0
- package/dist/validators/map.js +5 -0
- package/dist/validators/number.d.ts +4 -0
- package/dist/validators/number.d.ts.map +1 -0
- package/dist/validators/number.js +20 -0
- package/dist/validators/password.d.ts +4 -0
- package/dist/validators/password.d.ts.map +1 -0
- package/dist/validators/password.js +11 -0
- package/dist/validators/photo.d.ts +4 -0
- package/dist/validators/photo.d.ts.map +1 -0
- package/dist/validators/photo.js +100 -0
- package/dist/validators/richText.d.ts +4 -0
- package/dist/validators/richText.d.ts.map +1 -0
- package/dist/validators/richText.js +8 -0
- package/dist/validators/select-multiple.d.ts +10 -0
- package/dist/validators/select-multiple.d.ts.map +1 -0
- package/dist/validators/select-multiple.js +20 -0
- package/dist/validators/select.d.ts +4 -0
- package/dist/validators/select.d.ts.map +1 -0
- package/dist/validators/select.js +5 -0
- package/dist/validators/text.d.ts +4 -0
- package/dist/validators/text.d.ts.map +1 -0
- package/dist/validators/text.js +7 -0
- package/dist/validators/textarea.d.ts +4 -0
- package/dist/validators/textarea.d.ts.map +1 -0
- package/dist/validators/textarea.js +7 -0
- package/dist/validators/video.d.ts +4 -0
- package/dist/validators/video.d.ts.map +1 -0
- package/dist/validators/video.js +57 -0
- package/package.json +150 -6
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// import { Variant } from '@/lz/types'
|
|
2
|
+
import { entityKind } from '../helpers';
|
|
3
|
+
import { Section, baseHelperFunctionOptionsSchema, FieldGroupConfigSchema, fieldConfigSchema } from './section';
|
|
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
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/sections/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { Field } from '../fields';
|
|
2
|
+
import { entityKind } from '../helpers';
|
|
3
|
+
import type { NumberFieldConfigType, TextFieldConfig } from '../fields';
|
|
4
|
+
import type { Variant } from '../types';
|
|
5
|
+
import type { FieldConfig } from '../fields';
|
|
6
|
+
import type { FieldGroup, FieldGroupConfig } from '../fields/field-group';
|
|
7
|
+
import * as z from 'zod';
|
|
8
|
+
export declare const fieldConfigSchema: z.ZodCustom<FieldConfig, FieldConfig>;
|
|
9
|
+
export declare const FieldGroupConfigSchema: z.ZodCustom<FieldGroupConfig, FieldGroupConfig>;
|
|
10
|
+
export declare const baseSectionOptionsSchema: z.ZodObject<{
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
order: z.ZodNumber;
|
|
13
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
14
|
+
readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
15
|
+
gallery: z.ZodOptional<z.ZodObject<{
|
|
16
|
+
db: z.ZodObject<{
|
|
17
|
+
tableName: z.ZodString;
|
|
18
|
+
identifierField: z.ZodOptional<z.ZodString>;
|
|
19
|
+
photoNameField: z.ZodOptional<z.ZodString>;
|
|
20
|
+
metaField: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
watermark: z.ZodOptional<z.ZodBoolean>;
|
|
23
|
+
thumbnail: z.ZodOptional<z.ZodObject<{
|
|
24
|
+
width: z.ZodNumber;
|
|
25
|
+
height: z.ZodNumber;
|
|
26
|
+
crop: z.ZodBoolean;
|
|
27
|
+
quality: z.ZodNumber;
|
|
28
|
+
}, z.core.$strict>>;
|
|
29
|
+
}, z.core.$strict>>;
|
|
30
|
+
db: z.ZodObject<{
|
|
31
|
+
table: z.ZodString;
|
|
32
|
+
identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
33
|
+
orderByField: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
34
|
+
primaryKey: z.ZodOptional<z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>>;
|
|
35
|
+
foreignKeys: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
36
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
37
|
+
foreignColumns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
38
|
+
name: z.ZodString;
|
|
39
|
+
}, z.core.$strict>>>;
|
|
40
|
+
index: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
41
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
42
|
+
name: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strict>>>;
|
|
44
|
+
unique: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
45
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
46
|
+
name: z.ZodOptional<z.ZodString>;
|
|
47
|
+
}, z.core.$strict>>>;
|
|
48
|
+
fulltext: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
49
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
50
|
+
name: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strict>>>;
|
|
52
|
+
}, z.core.$strict>;
|
|
53
|
+
fields: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
54
|
+
fieldGroups: z.ZodOptional<z.ZodArray<z.ZodCustom<FieldGroupConfig, FieldGroupConfig>>>;
|
|
55
|
+
variants: z.ZodOptional<z.ZodArray<z.ZodCustom<Variant, Variant>>>;
|
|
56
|
+
hooks: z.ZodOptional<z.ZodCustom<Hooks, Hooks>>;
|
|
57
|
+
}, z.core.$strict>;
|
|
58
|
+
/**
|
|
59
|
+
* This is the options schema for the helper functions that create section configs
|
|
60
|
+
* We omit the fields and fieldGroups properties from the baseSectionOptionsSchema
|
|
61
|
+
* and change the fields to be an array of field configs or field group configs
|
|
62
|
+
*/
|
|
63
|
+
export declare const baseHelperFunctionOptionsSchema: z.ZodObject<{
|
|
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>>>;
|
|
66
|
+
name: z.ZodString;
|
|
67
|
+
order: z.ZodNumber;
|
|
68
|
+
readonly: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
69
|
+
db: z.ZodObject<{
|
|
70
|
+
table: z.ZodString;
|
|
71
|
+
identifier: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
72
|
+
orderByField: z.ZodOptional<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
73
|
+
primaryKey: z.ZodOptional<z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>>;
|
|
74
|
+
foreignKeys: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
75
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
76
|
+
foreignColumns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
77
|
+
name: z.ZodString;
|
|
78
|
+
}, z.core.$strict>>>;
|
|
79
|
+
index: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
80
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
81
|
+
name: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$strict>>>;
|
|
83
|
+
unique: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
84
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
85
|
+
name: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, z.core.$strict>>>;
|
|
87
|
+
fulltext: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
88
|
+
columns: z.ZodArray<z.ZodCustom<FieldConfig, FieldConfig>>;
|
|
89
|
+
name: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$strict>>>;
|
|
91
|
+
}, z.core.$strict>;
|
|
92
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
93
|
+
gallery: z.ZodOptional<z.ZodObject<{
|
|
94
|
+
db: z.ZodObject<{
|
|
95
|
+
tableName: z.ZodString;
|
|
96
|
+
identifierField: z.ZodOptional<z.ZodString>;
|
|
97
|
+
photoNameField: z.ZodOptional<z.ZodString>;
|
|
98
|
+
metaField: z.ZodOptional<z.ZodString>;
|
|
99
|
+
}, z.core.$strict>;
|
|
100
|
+
watermark: z.ZodOptional<z.ZodBoolean>;
|
|
101
|
+
thumbnail: z.ZodOptional<z.ZodObject<{
|
|
102
|
+
width: z.ZodNumber;
|
|
103
|
+
height: z.ZodNumber;
|
|
104
|
+
crop: z.ZodBoolean;
|
|
105
|
+
quality: z.ZodNumber;
|
|
106
|
+
}, z.core.$strict>>;
|
|
107
|
+
}, z.core.$strict>>;
|
|
108
|
+
hooks: z.ZodOptional<z.ZodCustom<Hooks, Hooks>>;
|
|
109
|
+
}, z.core.$strict>;
|
|
110
|
+
export declare function validateSectionConfig(config: BaseSectionOptions): void;
|
|
111
|
+
export type AfterUpdateContext = {
|
|
112
|
+
itemId?: string | number;
|
|
113
|
+
values: Record<string, unknown>;
|
|
114
|
+
section: Section;
|
|
115
|
+
};
|
|
116
|
+
export type Hooks = {
|
|
117
|
+
afterUpdate?: (ctx: AfterUpdateContext) => Promise<void> | void;
|
|
118
|
+
};
|
|
119
|
+
export declare abstract class Section<TExtraSectionConfig extends object = object> {
|
|
120
|
+
static readonly [entityKind]: string;
|
|
121
|
+
abstract readonly type: 'has_items' | 'simple' | 'category';
|
|
122
|
+
name: string;
|
|
123
|
+
order: number;
|
|
124
|
+
icon: string | undefined;
|
|
125
|
+
readonly: boolean;
|
|
126
|
+
gallery?: {
|
|
127
|
+
db: {
|
|
128
|
+
tableName: string;
|
|
129
|
+
referenceIdentifierField: string;
|
|
130
|
+
photoNameField: string;
|
|
131
|
+
metaField: string;
|
|
132
|
+
};
|
|
133
|
+
watermark?: boolean;
|
|
134
|
+
thumbnail?: {
|
|
135
|
+
width: number;
|
|
136
|
+
height: number;
|
|
137
|
+
crop: boolean;
|
|
138
|
+
quality: number;
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
private _fields;
|
|
142
|
+
private readonly _fieldGroupConfigs;
|
|
143
|
+
private readonly _hasFieldGroups;
|
|
144
|
+
private _fieldGroups;
|
|
145
|
+
protected _fieldConfigs: FieldConfig[] | undefined;
|
|
146
|
+
/**
|
|
147
|
+
* A helper property to access the field configs.
|
|
148
|
+
* Sometimes it's handy to access the field configs without building the actual fields array.
|
|
149
|
+
*/
|
|
150
|
+
get fieldConfigs(): FieldConfig[];
|
|
151
|
+
get fieldGroups(): FieldGroup[];
|
|
152
|
+
get fields(): Field[];
|
|
153
|
+
set fields(value: Field[]);
|
|
154
|
+
readonly db: {
|
|
155
|
+
table: string;
|
|
156
|
+
identifier: NumberFieldConfigType | TextFieldConfig;
|
|
157
|
+
orderByField?: FieldConfig;
|
|
158
|
+
primaryKey: FieldConfig[];
|
|
159
|
+
foreignKeys?: {
|
|
160
|
+
columns: FieldConfig[];
|
|
161
|
+
foreignColumns: FieldConfig[];
|
|
162
|
+
name: string;
|
|
163
|
+
}[];
|
|
164
|
+
fulltext?: {
|
|
165
|
+
columns: FieldConfig[];
|
|
166
|
+
name?: string;
|
|
167
|
+
}[];
|
|
168
|
+
index?: {
|
|
169
|
+
columns: FieldConfig[];
|
|
170
|
+
name?: string;
|
|
171
|
+
}[];
|
|
172
|
+
unique: {
|
|
173
|
+
columns: FieldConfig[];
|
|
174
|
+
name?: string;
|
|
175
|
+
}[];
|
|
176
|
+
};
|
|
177
|
+
abstract title: any;
|
|
178
|
+
variants?: Variant[] | undefined;
|
|
179
|
+
hooks?: Hooks;
|
|
180
|
+
constructor(config: BaseSectionOptions<TExtraSectionConfig>);
|
|
181
|
+
/**
|
|
182
|
+
* Returns whether this section has field groups.
|
|
183
|
+
* Value is cached during construction for optimal performance.
|
|
184
|
+
*/
|
|
185
|
+
private get hasFieldGroups();
|
|
186
|
+
private buildFieldGroups;
|
|
187
|
+
buildFields(): void;
|
|
188
|
+
/**
|
|
189
|
+
* Helper function to resolve a field config to an instance
|
|
190
|
+
* by calling the build() method on the config
|
|
191
|
+
* @param config - The field config to resolve
|
|
192
|
+
* @returns The field instance
|
|
193
|
+
* @throws An error if the field config does not have a build() method
|
|
194
|
+
*/
|
|
195
|
+
private resolveField;
|
|
196
|
+
}
|
|
197
|
+
export type BaseSectionOptions<TExtraSectionConfig extends object = object> = z.infer<typeof baseSectionOptionsSchema> & TExtraSectionConfig;
|
|
198
|
+
/**
|
|
199
|
+
* Helper function to ensure a section config has a db identifier field
|
|
200
|
+
* If db.identifier is missing, creates a default 'id' number field config
|
|
201
|
+
* and prepends it to fields and sets it as db.identifier
|
|
202
|
+
*
|
|
203
|
+
* @param section - Section config that may or may not have db.identifier
|
|
204
|
+
* @returns Section config with db.identifier guaranteed to exist
|
|
205
|
+
*/
|
|
206
|
+
export declare function ensureSectionDbIdentifier<T extends BaseSectionOptions>(section: T): T & {
|
|
207
|
+
db: T['db'] & {
|
|
208
|
+
identifier: FieldConfig;
|
|
209
|
+
};
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Helper function to normalize gallery config with default values
|
|
213
|
+
* Sets defaults for identifierField, photoNameField, and metaField if not provided
|
|
214
|
+
*
|
|
215
|
+
* @param section - Section config that may or may not have gallery config
|
|
216
|
+
* @returns Section config with normalized gallery config
|
|
217
|
+
*/
|
|
218
|
+
export declare function ensureSectionGallery<T extends BaseSectionOptions>(section: T): T;
|
|
219
|
+
export declare function resolveFieldsAndFieldGroups(config: {
|
|
220
|
+
fields: FieldConfig[];
|
|
221
|
+
fieldGroups: FieldGroupConfig[];
|
|
222
|
+
}): {
|
|
223
|
+
fields: FieldConfig[];
|
|
224
|
+
fieldGroups: FieldGroupConfig[];
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/core/sections/section.ts"],"names":[],"mappings":"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"}
|