nextjs-cms 0.5.56 → 0.5.58
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/index.d.ts +82 -45
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/lib/serverActions.d.ts +68 -5
- package/dist/api/lib/serverActions.d.ts.map +1 -1
- package/dist/api/lib/serverActions.js +33 -8
- package/dist/api/root.d.ts +953 -44
- package/dist/api/root.d.ts.map +1 -1
- package/dist/api/root.js +2 -1
- package/dist/api/routers/accountSettings.d.ts +1 -3
- package/dist/api/routers/accountSettings.d.ts.map +1 -1
- package/dist/api/routers/admins.d.ts +1 -3
- package/dist/api/routers/admins.d.ts.map +1 -1
- package/dist/api/routers/admins.js +1 -1
- package/dist/api/routers/auth.d.ts +1 -3
- package/dist/api/routers/auth.d.ts.map +1 -1
- package/dist/api/routers/categorySection.d.ts +1 -3
- package/dist/api/routers/categorySection.d.ts.map +1 -1
- package/dist/api/routers/cmsSettings.d.ts +1 -3
- package/dist/api/routers/cmsSettings.d.ts.map +1 -1
- package/dist/api/routers/cpanel.d.ts +1 -3
- package/dist/api/routers/cpanel.d.ts.map +1 -1
- package/dist/api/routers/files.d.ts +1 -3
- package/dist/api/routers/files.d.ts.map +1 -1
- package/dist/api/routers/gallery.d.ts +1 -3
- package/dist/api/routers/gallery.d.ts.map +1 -1
- package/dist/api/routers/gallery.js +7 -6
- package/dist/api/routers/googleAnalytics.d.ts +1 -3
- package/dist/api/routers/googleAnalytics.d.ts.map +1 -1
- package/dist/api/routers/hasItemsSection.d.ts +49 -5
- package/dist/api/routers/hasItemsSection.d.ts.map +1 -1
- package/dist/api/routers/navigation.d.ts +1 -3
- package/dist/api/routers/navigation.d.ts.map +1 -1
- package/dist/api/routers/simpleSection.d.ts +21 -4
- package/dist/api/routers/simpleSection.d.ts.map +1 -1
- package/dist/api/trpc/query-client.d.ts +3 -0
- package/dist/api/trpc/query-client.d.ts.map +1 -0
- package/dist/api/trpc/query-client.js +23 -0
- package/dist/api/trpc/server.d.ts +8 -0
- package/dist/api/trpc/server.d.ts.map +1 -0
- package/dist/api/trpc/server.js +23 -0
- package/dist/api/trpc.d.ts +6 -17
- package/dist/api/trpc.d.ts.map +1 -1
- package/dist/api/trpc.js +6 -9
- package/dist/auth/react.js +1 -1
- package/dist/core/config/config-loader.d.ts +1 -1
- package/dist/core/config/config-loader.d.ts.map +1 -1
- package/dist/core/config/config-loader.js +9 -6
- package/dist/core/config/index.d.ts +1 -0
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/index.js +1 -0
- package/dist/core/config/loader-with-esbuild.d.ts +7 -0
- package/dist/core/config/loader-with-esbuild.d.ts.map +1 -0
- package/dist/core/config/loader-with-esbuild.js +98 -0
- package/dist/core/config/loader-with-jiti.d.ts +13 -0
- package/dist/core/config/loader-with-jiti.d.ts.map +1 -0
- package/dist/core/config/loader-with-jiti.js +162 -0
- package/dist/core/config/loader.d.ts +1 -1
- package/dist/core/config/loader.d.ts.map +1 -1
- package/dist/core/config/loader.js +1 -75
- package/dist/core/factories/SectionFactory.d.ts +1 -109
- package/dist/core/factories/SectionFactory.d.ts.map +1 -1
- package/dist/core/factories/SectionFactory.js +1 -452
- package/dist/core/factories/section-factory-with-esbuild.d.ts +110 -0
- package/dist/core/factories/section-factory-with-esbuild.d.ts.map +1 -0
- package/dist/core/factories/section-factory-with-esbuild.js +509 -0
- package/dist/core/factories/section-factory-with-jiti.d.ts +113 -0
- package/dist/core/factories/section-factory-with-jiti.d.ts.map +1 -0
- package/dist/core/factories/section-factory-with-jiti.js +556 -0
- package/dist/core/fields/document.d.ts +0 -1
- package/dist/core/fields/document.d.ts.map +1 -1
- package/dist/core/fields/document.js +5 -4
- package/dist/core/fields/photo.d.ts +10 -7
- package/dist/core/fields/photo.d.ts.map +1 -1
- package/dist/core/fields/photo.js +44 -17
- package/dist/core/fields/richText.d.ts +0 -1
- package/dist/core/fields/richText.d.ts.map +1 -1
- package/dist/core/fields/richText.js +5 -4
- package/dist/core/fields/video.d.ts +0 -1
- package/dist/core/fields/video.d.ts.map +1 -1
- package/dist/core/fields/video.js +5 -4
- package/dist/core/sections/section.d.ts +17 -15
- package/dist/core/sections/section.d.ts.map +1 -1
- package/dist/core/sections/section.js +28 -5
- package/dist/core/submit/submit.d.ts.map +1 -1
- package/dist/core/submit/submit.js +13 -12
- package/dist/translations/dictionaries/ar.json +1 -0
- package/dist/translations/dictionaries/en.json +1 -0
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/translations/index.js +1 -3
- package/package.json +18 -9
|
@@ -8,7 +8,6 @@ import { customAlphabet } from 'nanoid';
|
|
|
8
8
|
import { FileField } from './fileField.js';
|
|
9
9
|
import { humanReadableFileSize } from '../../utils/index.js';
|
|
10
10
|
import { getCMSConfig } from '../config/index.js';
|
|
11
|
-
const cmsConfig = getCMSConfig();
|
|
12
11
|
const sizeSchema = z.strictObject({
|
|
13
12
|
width: z.number().describe('Image width in pixels'),
|
|
14
13
|
height: z.number().describe('Image height in pixels'),
|
|
@@ -75,9 +74,10 @@ export class PhotoField extends FileField {
|
|
|
75
74
|
maxFileSize;
|
|
76
75
|
mimeType;
|
|
77
76
|
extensions;
|
|
78
|
-
|
|
77
|
+
_thumbnail = undefined;
|
|
78
|
+
/** Thumbnail config passed via field options (may be undefined if using CMS defaults) */
|
|
79
|
+
_thumbnailConfig = undefined;
|
|
79
80
|
removeExtension;
|
|
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,8 +95,8 @@ 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.media.images.thumbnail;
|
|
99
98
|
this.removeExtension = config.removeExtension ?? true;
|
|
99
|
+
this._thumbnailConfig = config.thumbnail;
|
|
100
100
|
this.extensions = config.fileType ?? ['jpeg'];
|
|
101
101
|
/**
|
|
102
102
|
* Replace 'jpg' with 'jpeg'
|
|
@@ -122,10 +122,36 @@ export class PhotoField extends FileField {
|
|
|
122
122
|
this._allowedExtensions.push('jpg');
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the thumbnail configuration.
|
|
127
|
+
* Uses user-provided config if available, otherwise fetches from CMS config.
|
|
128
|
+
* Note: getCMSConfig() handles caching with version checking internally.
|
|
129
|
+
*/
|
|
130
|
+
async getThumbnail() {
|
|
131
|
+
// If user provided config, use it (no need to fetch CMS config)
|
|
132
|
+
if (this._thumbnailConfig) {
|
|
133
|
+
this._thumbnail = this._thumbnailConfig;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Always fetch fresh CMS config (getCMSConfig() is already cached with version checking)
|
|
137
|
+
const cmsConfig = await getCMSConfig();
|
|
138
|
+
this._thumbnail = cmsConfig.media.images.thumbnail;
|
|
139
|
+
}
|
|
140
|
+
return this._thumbnail;
|
|
141
|
+
}
|
|
142
|
+
async build() {
|
|
143
|
+
/**
|
|
144
|
+
* Make sure to resolve and cache the thumbnail config
|
|
145
|
+
*/
|
|
146
|
+
await this.getThumbnail();
|
|
147
|
+
}
|
|
125
148
|
exportForClient() {
|
|
149
|
+
if (this._thumbnail === undefined) {
|
|
150
|
+
throw new Error('PhotoField.build() must be called before exportForClient()');
|
|
151
|
+
}
|
|
126
152
|
return {
|
|
127
153
|
...super.exportForClient(),
|
|
128
|
-
thumbnail: this.
|
|
154
|
+
thumbnail: this._thumbnail,
|
|
129
155
|
// watermark: this.watermark,
|
|
130
156
|
// blurPlaceholder: this.blurPlaceholder,
|
|
131
157
|
size: this.size,
|
|
@@ -148,8 +174,10 @@ export class PhotoField extends FileField {
|
|
|
148
174
|
/**
|
|
149
175
|
* If .photos, and 'sectionName' folders don't exist, create them
|
|
150
176
|
*/
|
|
151
|
-
const
|
|
152
|
-
const
|
|
177
|
+
const thumbnail = await this.getThumbnail();
|
|
178
|
+
const uploadsFolder = (await getCMSConfig()).media.upload.path;
|
|
179
|
+
const photosFolder = path.join(uploadsFolder, '.photos', this._folder);
|
|
180
|
+
const thumbsFolder = path.join(uploadsFolder, '.thumbs', this._folder);
|
|
153
181
|
if (!fs.existsSync(photosFolder)) {
|
|
154
182
|
fs.mkdirSync(photosFolder, { recursive: true });
|
|
155
183
|
}
|
|
@@ -168,12 +196,10 @@ export class PhotoField extends FileField {
|
|
|
168
196
|
fit: 'cover',
|
|
169
197
|
})
|
|
170
198
|
.webp()
|
|
171
|
-
.toFile(path.join(
|
|
199
|
+
.toFile(path.join(uploadsFolder, '.photos', this._folder, this.value));
|
|
172
200
|
}
|
|
173
201
|
else {
|
|
174
|
-
await this._sharpImage
|
|
175
|
-
.clone()
|
|
176
|
-
.toFile(path.join(this.uploadsFolder, '.photos', this._folder, this.value));
|
|
202
|
+
await this._sharpImage.clone().toFile(path.join(uploadsFolder, '.photos', this._folder, this.value));
|
|
177
203
|
}
|
|
178
204
|
/**
|
|
179
205
|
* Also, write a thumbnail
|
|
@@ -181,14 +207,14 @@ export class PhotoField extends FileField {
|
|
|
181
207
|
await this._sharpImage
|
|
182
208
|
.clone()
|
|
183
209
|
.resize({
|
|
184
|
-
width:
|
|
185
|
-
height:
|
|
186
|
-
fit:
|
|
210
|
+
width: thumbnail.width,
|
|
211
|
+
height: thumbnail.height,
|
|
212
|
+
fit: thumbnail.crop ? 'cover' : 'contain',
|
|
187
213
|
})
|
|
188
214
|
.webp({
|
|
189
|
-
quality:
|
|
215
|
+
quality: thumbnail.quality ?? 80,
|
|
190
216
|
})
|
|
191
|
-
.toFile(path.join(
|
|
217
|
+
.toFile(path.join(uploadsFolder, '.thumbs', this._folder, this.value));
|
|
192
218
|
}
|
|
193
219
|
catch (error) {
|
|
194
220
|
throw new Error(`${this.label}: Error writing file to disk ${error.message}`);
|
|
@@ -207,7 +233,8 @@ export class PhotoField extends FileField {
|
|
|
207
233
|
throw new Error(`${this.label}: Folder is not set. Make sure to set the folder before writing the file to disk`);
|
|
208
234
|
}
|
|
209
235
|
try {
|
|
210
|
-
const
|
|
236
|
+
const uploadsFolder = (await getCMSConfig()).media.upload.path;
|
|
237
|
+
const pathToFile = path.join(uploadsFolder, '.photos', this._folder, this.value);
|
|
211
238
|
await fs.promises.unlink(pathToFile);
|
|
212
239
|
}
|
|
213
240
|
catch (error) {
|
|
@@ -95,7 +95,6 @@ export declare class RichTextField extends Field<'rich_text', Config> {
|
|
|
95
95
|
readonly allowImageUploads: z.infer<typeof allowImageUploadsSchema> | false;
|
|
96
96
|
readonly sanitize: boolean;
|
|
97
97
|
private _inlinePhotos;
|
|
98
|
-
readonly uploadsFolder: string;
|
|
99
98
|
constructor(config: BaseFieldConfig<Config>);
|
|
100
99
|
/**
|
|
101
100
|
* Get the value of the field
|
|
@@ -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;
|
|
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;gBAEI,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;IA4C3D;;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;CA4D1C;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,6 @@ export class RichTextField extends Field {
|
|
|
82
82
|
allowImageUploads;
|
|
83
83
|
sanitize;
|
|
84
84
|
_inlinePhotos = [];
|
|
85
|
-
uploadsFolder = getCMSConfig().media.upload.path;
|
|
86
85
|
constructor(config) {
|
|
87
86
|
super(config, 'rich_text');
|
|
88
87
|
this.maxLength = config.maxLength;
|
|
@@ -178,7 +177,8 @@ export class RichTextField extends Field {
|
|
|
178
177
|
/**
|
|
179
178
|
* If .photos, and 'sectionName' folders don't exist, create them
|
|
180
179
|
*/
|
|
181
|
-
const
|
|
180
|
+
const uploadsFolder = (await getCMSConfig()).media.upload.path;
|
|
181
|
+
const photosFolder = path.join(uploadsFolder, '.photos', sectionName);
|
|
182
182
|
if (!fs.existsSync(photosFolder)) {
|
|
183
183
|
fs.mkdirSync(photosFolder, { recursive: true });
|
|
184
184
|
}
|
|
@@ -195,7 +195,7 @@ export class RichTextField extends Field {
|
|
|
195
195
|
const image = sharp(buffer);
|
|
196
196
|
await image
|
|
197
197
|
.toFormat(this.allowImageUploads.format ?? 'webp')
|
|
198
|
-
.toFile(path.join(
|
|
198
|
+
.toFile(path.join(uploadsFolder, '.photos', sectionName, photo.name));
|
|
199
199
|
/**
|
|
200
200
|
* Insert the image into the database
|
|
201
201
|
*/
|
|
@@ -285,7 +285,8 @@ export class RichTextField extends Field {
|
|
|
285
285
|
* Delete the photo from disk
|
|
286
286
|
*/
|
|
287
287
|
try {
|
|
288
|
-
|
|
288
|
+
const uploadsFolder = (await getCMSConfig()).media.upload.path;
|
|
289
|
+
await fs.promises.unlink(path.join(uploadsFolder, '.photos', sectionName, tablePhoto.name));
|
|
289
290
|
}
|
|
290
291
|
catch (error) {
|
|
291
292
|
console.log(`${this.label}: Error deleting file from disk`);
|
|
@@ -40,7 +40,6 @@ export declare class VideoField extends FileField<'video', Config> {
|
|
|
40
40
|
private _buffer;
|
|
41
41
|
private _folder;
|
|
42
42
|
private _allowedExtensions;
|
|
43
|
-
readonly uploadsFolder: string;
|
|
44
43
|
constructor(config: BaseFieldConfig<Config>, file?: File);
|
|
45
44
|
exportForClient(): {
|
|
46
45
|
maxFileSize: {
|
|
@@ -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;
|
|
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;gBACxB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI;IA6BxC,eAAe;;kBAzCD,MAAM;kBAAQ,IAAI,GAAG,IAAI;;;;;;;;;;;;;IAkDjD,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;IA+BK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,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;IAYb;;OAEG;IACG,oBAAoB;CAoD7B;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE9E,QAAA,MAAM,aAAa;IAtPf;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;kBA4OL,CAAA;AAEF,QAAA,MAAM,sBAAsB;;;IA3PxB;;OAEG;;;;;;;;IAQH;;;OAGG;;;;;;;;;;;;;kBAkPL,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,6 @@ export class VideoField extends FileField {
|
|
|
39
39
|
_buffer;
|
|
40
40
|
_folder;
|
|
41
41
|
_allowedExtensions;
|
|
42
|
-
uploadsFolder = getCMSConfig().media.upload.path;
|
|
43
42
|
constructor(config, file) {
|
|
44
43
|
super(config, 'video');
|
|
45
44
|
this._file = file;
|
|
@@ -104,14 +103,15 @@ export class VideoField extends FileField {
|
|
|
104
103
|
/**
|
|
105
104
|
* If .videos, and 'sectionName' folders don't exist, create them
|
|
106
105
|
*/
|
|
107
|
-
const
|
|
106
|
+
const uploadsFolder = (await getCMSConfig()).media.upload.path;
|
|
107
|
+
const vdieosFolder = path.join(uploadsFolder, '.videos', this._folder);
|
|
108
108
|
if (!fs.existsSync(vdieosFolder)) {
|
|
109
109
|
fs.mkdirSync(vdieosFolder, { recursive: true });
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* Write the file to disk
|
|
113
113
|
*/
|
|
114
|
-
await fs.promises.writeFile(path.join(
|
|
114
|
+
await fs.promises.writeFile(path.join(uploadsFolder, '.videos', this._folder, this.value), this._buffer);
|
|
115
115
|
}
|
|
116
116
|
catch (error) {
|
|
117
117
|
throw new Error(`${this.label}: Error writing file to disk ${error.message}`);
|
|
@@ -126,7 +126,8 @@ export class VideoField extends FileField {
|
|
|
126
126
|
throw new Error(`${this.label}: Folder is not set. Make sure to set the folder before writing the file to disk`);
|
|
127
127
|
}
|
|
128
128
|
try {
|
|
129
|
-
const
|
|
129
|
+
const uploadsFolder = (await getCMSConfig()).media.upload.path;
|
|
130
|
+
const pathToFile = path.join(uploadsFolder, '.videos', this._folder, this.value);
|
|
130
131
|
await fs.promises.unlink(pathToFile);
|
|
131
132
|
}
|
|
132
133
|
catch (error) {
|
|
@@ -123,21 +123,8 @@ export declare abstract class Section<TExtraSectionConfig extends object = objec
|
|
|
123
123
|
order: number;
|
|
124
124
|
icon: string | undefined;
|
|
125
125
|
readonly: boolean;
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
};
|
|
126
|
+
private _gallery?;
|
|
127
|
+
private readonly _galleryConfig?;
|
|
141
128
|
private _fields;
|
|
142
129
|
private readonly _fieldGroupConfigs;
|
|
143
130
|
private readonly _hasFieldGroups;
|
|
@@ -183,6 +170,21 @@ export declare abstract class Section<TExtraSectionConfig extends object = objec
|
|
|
183
170
|
* Value is cached during construction for optimal performance.
|
|
184
171
|
*/
|
|
185
172
|
private get hasFieldGroups();
|
|
173
|
+
getGallery(): Promise<{
|
|
174
|
+
db: {
|
|
175
|
+
tableName: string;
|
|
176
|
+
referenceIdentifierField: string;
|
|
177
|
+
photoNameField: string;
|
|
178
|
+
metaField: string;
|
|
179
|
+
};
|
|
180
|
+
watermark?: boolean;
|
|
181
|
+
thumbnail?: {
|
|
182
|
+
width: number;
|
|
183
|
+
height: number;
|
|
184
|
+
crop: boolean;
|
|
185
|
+
quality: number;
|
|
186
|
+
};
|
|
187
|
+
} | undefined>;
|
|
186
188
|
private buildFieldGroups;
|
|
187
189
|
buildFields(): void;
|
|
188
190
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/core/sections/section.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../../src/core/sections/section.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ import { numberField } from '../fields/index.js';
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import * as z from 'zod';
|
|
5
5
|
import { getCMSConfig } from '../config/config-loader.js';
|
|
6
|
-
const cmsConfig = getCMSConfig();
|
|
7
6
|
export const fieldConfigSchema = z.custom();
|
|
8
7
|
export const FieldGroupConfigSchema = z.custom();
|
|
9
8
|
const variantSchema = z.custom();
|
|
@@ -97,7 +96,8 @@ export class Section {
|
|
|
97
96
|
order;
|
|
98
97
|
icon;
|
|
99
98
|
readonly = false;
|
|
100
|
-
|
|
99
|
+
_gallery;
|
|
100
|
+
_galleryConfig;
|
|
101
101
|
_fields = undefined;
|
|
102
102
|
_fieldGroupConfigs = undefined;
|
|
103
103
|
_hasFieldGroups;
|
|
@@ -141,15 +141,15 @@ export class Section {
|
|
|
141
141
|
* Resolve gallery config
|
|
142
142
|
*/
|
|
143
143
|
if (config.gallery) {
|
|
144
|
-
this.
|
|
144
|
+
this._galleryConfig = {
|
|
145
145
|
db: {
|
|
146
146
|
tableName: config.gallery.db.tableName,
|
|
147
147
|
referenceIdentifierField: config.gallery.db.identifierField ?? 'reference_id',
|
|
148
148
|
photoNameField: config.gallery.db.photoNameField ?? 'photo',
|
|
149
149
|
metaField: config.gallery.db.metaField ?? 'meta',
|
|
150
150
|
},
|
|
151
|
-
watermark: config.gallery.watermark
|
|
152
|
-
thumbnail: config.gallery.thumbnail
|
|
151
|
+
watermark: config.gallery.watermark,
|
|
152
|
+
thumbnail: config.gallery.thumbnail,
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
155
|
/**
|
|
@@ -215,6 +215,29 @@ export class Section {
|
|
|
215
215
|
get hasFieldGroups() {
|
|
216
216
|
return this._hasFieldGroups;
|
|
217
217
|
}
|
|
218
|
+
async getGallery() {
|
|
219
|
+
if (!this._gallery) {
|
|
220
|
+
if (this._galleryConfig) {
|
|
221
|
+
const cmsConfig = await getCMSConfig();
|
|
222
|
+
this._gallery = {
|
|
223
|
+
db: {
|
|
224
|
+
tableName: this._galleryConfig.db.tableName,
|
|
225
|
+
referenceIdentifierField: this._galleryConfig.db.referenceIdentifierField,
|
|
226
|
+
photoNameField: this._galleryConfig.db.photoNameField,
|
|
227
|
+
metaField: this._galleryConfig.db.metaField,
|
|
228
|
+
},
|
|
229
|
+
watermark: this._galleryConfig.watermark ?? cmsConfig.media.images.watermark,
|
|
230
|
+
thumbnail: {
|
|
231
|
+
width: this._galleryConfig.thumbnail?.width ?? cmsConfig.media.images.thumbnail.width,
|
|
232
|
+
height: this._galleryConfig.thumbnail?.height ?? cmsConfig.media.images.thumbnail.height,
|
|
233
|
+
crop: this._galleryConfig.thumbnail?.crop ?? cmsConfig.media.images.thumbnail.crop,
|
|
234
|
+
quality: this._galleryConfig.thumbnail?.quality ?? cmsConfig.media.images.thumbnail.quality,
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return this._gallery;
|
|
240
|
+
}
|
|
218
241
|
buildFieldGroups() {
|
|
219
242
|
const configs = this._fieldGroupConfigs;
|
|
220
243
|
if (!configs?.length)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/core/submit/submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAM,MAAM,YAAY,CAAA;AAG3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtC,KAAK,eAAe,GAAG;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,8BAAsB,MAAM;IACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAW;IAC/C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAY;IAC1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAQ;IACjC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,OAAO,CAAC,QAAQ,CAAwB;IACxC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;IAC5B,SAAS,CAAC,YAAY,EAAG,OAAO,CAAA;IAChC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAQ;IACpC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;IACrD,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAK;IAE9B;;OAEG;gBACS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,eAAe;IAOvE;;;OAGG;cACa,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAanD;;OAEG;YACW,YAAY;IAM1B;;OAEG;IACU,UAAU,CAAC,YAAY,GAAE,GAAG,GAAG,GAAS;IAIrD;;;;;OAKG;YACW,qBAAqB;IA4BnC;;;;OAIG;YACW,UAAU;IAoDxB;;;;OAIG;cACa,kBAAkB;IAMlC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAElD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,GAAG,GAAG,SAAS;IAEnD;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK;IAIpC;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK;IAqBpC,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK;IAM9C,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK;IAUxC;;;;OAIG;cACa,WAAW,CAAC,KAAK,EAAE,KAAK;cAoDxB,YAAY;IAU5B;;;;OAIG;YACW,YAAY;IA6B1B;;OAEG;IACU,MAAM;YAsEL,aAAa;
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/core/submit/submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAM,MAAM,YAAY,CAAA;AAG3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtC,KAAK,eAAe,GAAG;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,8BAAsB,MAAM;IACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAW;IAC/C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAY;IAC1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAQ;IACjC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IACpC,OAAO,CAAC,QAAQ,CAAwB;IACxC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;IAC5B,SAAS,CAAC,YAAY,EAAG,OAAO,CAAA;IAChC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAQ;IACpC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;IACrD,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAK;IAE9B;;OAEG;gBACS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,eAAe;IAOvE;;;OAGG;cACa,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAanD;;OAEG;YACW,YAAY;IAM1B;;OAEG;IACU,UAAU,CAAC,YAAY,GAAE,GAAG,GAAG,GAAS;IAIrD;;;;;OAKG;YACW,qBAAqB;IA4BnC;;;;OAIG;YACW,UAAU;IAoDxB;;;;OAIG;cACa,kBAAkB;IAMlC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAElD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,GAAG,GAAG,SAAS;IAEnD;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK;IAIpC;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK;IAqBpC,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK;IAM9C,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK;IAUxC;;;;OAIG;cACa,WAAW,CAAC,KAAK,EAAE,KAAK;cAoDxB,YAAY;IAU5B;;;;OAIG;YACW,YAAY;IA6B1B;;OAEG;IACU,MAAM;YAsEL,aAAa;IAkF3B,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,GAAG,IAAI,CAE7B;IAED,OAAO,CAAC,SAAS;CAMpB"}
|
|
@@ -387,21 +387,22 @@ export class Submit {
|
|
|
387
387
|
return true;
|
|
388
388
|
}
|
|
389
389
|
async handleGallery() {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
!
|
|
393
|
-
!
|
|
394
|
-
!
|
|
390
|
+
const gallery = await this._sectionInfo.getGallery();
|
|
391
|
+
if (!gallery ||
|
|
392
|
+
!gallery.db ||
|
|
393
|
+
!gallery.db.tableName ||
|
|
394
|
+
!gallery.db.referenceIdentifierField ||
|
|
395
|
+
!gallery.db.metaField) {
|
|
395
396
|
/**
|
|
396
397
|
* The gallery table is not set up correctly, add it to the notices array
|
|
397
398
|
*/
|
|
398
399
|
this.addNotice('Gallery table is not set up correctly, gallery photos were not saved.');
|
|
399
400
|
return;
|
|
400
401
|
}
|
|
401
|
-
const columns = await MysqlTableChecker.getColumns(
|
|
402
|
-
if (!columns.includes(
|
|
403
|
-
!columns.includes(
|
|
404
|
-
!columns.includes(
|
|
402
|
+
const columns = await MysqlTableChecker.getColumns(gallery.db.tableName);
|
|
403
|
+
if (!columns.includes(gallery.db.referenceIdentifierField) ||
|
|
404
|
+
!columns.includes(gallery.db.metaField) ||
|
|
405
|
+
!columns.includes(gallery.db.photoNameField)) {
|
|
405
406
|
/**
|
|
406
407
|
* The gallery table is not set up correctly, add it to the notices array
|
|
407
408
|
*/
|
|
@@ -425,8 +426,8 @@ export class Submit {
|
|
|
425
426
|
required: false,
|
|
426
427
|
order: 0,
|
|
427
428
|
fileType: ['jpg', 'jpeg', 'png'],
|
|
428
|
-
watermark:
|
|
429
|
-
thumbnail:
|
|
429
|
+
watermark: gallery.watermark,
|
|
430
|
+
thumbnail: gallery.thumbnail,
|
|
430
431
|
});
|
|
431
432
|
/**
|
|
432
433
|
* Set the value of the photo field
|
|
@@ -445,7 +446,7 @@ export class Submit {
|
|
|
445
446
|
* Prepare the sql statement to insert the photo into the gallery table
|
|
446
447
|
*/
|
|
447
448
|
const sqlChunks = [];
|
|
448
|
-
sqlChunks.push(sql `INSERT INTO \`${sql.raw(
|
|
449
|
+
sqlChunks.push(sql `INSERT INTO \`${sql.raw(gallery.db.tableName)}\` (\`${sql.raw(gallery.db.referenceIdentifierField)}\`, \`${sql.raw(gallery.db.photoNameField)}\`, \`created_by\`) VALUES (${this._itemId}, ${photoField.getValue()}, ${this.user.name})`);
|
|
449
450
|
const sqlQuery = sql.join(sqlChunks);
|
|
450
451
|
/**
|
|
451
452
|
* Execute the sql query
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"AAGA,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/translations/index.ts"],"names":[],"mappings":"AAGA,iBAAS,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAO,GAAG,MAAM,CAWnD;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -3,13 +3,11 @@ import enStrings from './dictionaries/en.json';
|
|
|
3
3
|
function getString(key, lang = 'en') {
|
|
4
4
|
const dict = lang === 'en' ? enStrings : arStrings;
|
|
5
5
|
// @ts-expect-error key is string
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
7
6
|
const text = dict[key];
|
|
8
7
|
if (!text) {
|
|
9
|
-
console.warn(`
|
|
8
|
+
console.warn(`Translation key not found: ${key}`);
|
|
10
9
|
return key;
|
|
11
10
|
}
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
13
11
|
return text;
|
|
14
12
|
}
|
|
15
13
|
export default getString;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nextjs-cms",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.58",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
"types": "./dist/api/lib/serverActions.d.ts",
|
|
19
19
|
"default": "./dist/api/lib/serverActions.js"
|
|
20
20
|
},
|
|
21
|
+
"./api/trpc/server": {
|
|
22
|
+
"types": "./dist/api/trpc/server.d.ts",
|
|
23
|
+
"default": "./dist/api/trpc/server.js"
|
|
24
|
+
},
|
|
21
25
|
"./auth": {
|
|
22
26
|
"types": "./dist/auth/index.d.ts",
|
|
23
27
|
"default": "./dist/auth/index.js"
|
|
@@ -105,22 +109,27 @@
|
|
|
105
109
|
"LICENSE"
|
|
106
110
|
],
|
|
107
111
|
"dependencies": {
|
|
108
|
-
"@trpc/
|
|
109
|
-
"
|
|
112
|
+
"@trpc/client": "^11.8.1",
|
|
113
|
+
"@trpc/next": "^11.8.1",
|
|
114
|
+
"@trpc/react-query": "^11.8.1",
|
|
115
|
+
"@trpc/server": "^11.8.1",
|
|
116
|
+
"axios": "^1.13.2",
|
|
110
117
|
"bcrypt": "^6.0.0",
|
|
111
118
|
"chalk": "^5.4.1",
|
|
112
119
|
"chokidar": "3.6.0",
|
|
113
120
|
"dayjs": "^1.11.19",
|
|
114
121
|
"dotenv": "^17.2.3",
|
|
115
|
-
"drizzle-orm": "^0.
|
|
122
|
+
"drizzle-orm": "^0.45.1",
|
|
123
|
+
"esbuild": "0.27.2",
|
|
116
124
|
"esbuild-register": "^3.6.0",
|
|
117
|
-
"glob": "^
|
|
125
|
+
"glob": "^10.4.5",
|
|
118
126
|
"isomorphic-dompurify": "^2.21.0",
|
|
127
|
+
"jiti": "^2.6.1",
|
|
119
128
|
"jose": "^6.0.11",
|
|
120
129
|
"jsonwebtoken": "^9.0.2",
|
|
121
130
|
"lodash-es": "^4.17.21",
|
|
122
131
|
"mysql2": "^3.12.0",
|
|
123
|
-
"next": "^
|
|
132
|
+
"next": "^16.1.1",
|
|
124
133
|
"react": "19.0.0",
|
|
125
134
|
"react-dom": "19.0.0",
|
|
126
135
|
"superjson": "^2.2.2",
|
|
@@ -135,15 +144,15 @@
|
|
|
135
144
|
"@types/react-dom": "^19.0.0",
|
|
136
145
|
"@types/through2": "^2.0.41",
|
|
137
146
|
"dotenv-cli": "^7.4.4",
|
|
138
|
-
"drizzle-kit": "^0.31.
|
|
147
|
+
"drizzle-kit": "^0.31.8",
|
|
139
148
|
"eslint": "^9.12.0",
|
|
140
149
|
"nanoid": "^5.1.5",
|
|
141
150
|
"prettier": "^3.3.3",
|
|
142
151
|
"tsx": "^4.20.6",
|
|
143
152
|
"typescript": "^5.9.2",
|
|
144
153
|
"@lzcms/eslint-config": "0.3.0",
|
|
145
|
-
"@lzcms/
|
|
146
|
-
"@lzcms/
|
|
154
|
+
"@lzcms/prettier-config": "0.1.0",
|
|
155
|
+
"@lzcms/tsconfig": "0.1.0"
|
|
147
156
|
},
|
|
148
157
|
"license": "MIT",
|
|
149
158
|
"keywords": [
|