@geekron/strapi 0.1.2 → 0.1.4

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.
@@ -33,55 +33,858 @@ __export(exports_src, {
33
33
  default: () => src_default
34
34
  });
35
35
  module.exports = __toCommonJS(exports_src);
36
+ // server/src/api/common/content-types/common/schema.json
37
+ var schema_default = {
38
+ kind: "singleType",
39
+ collectionName: "commons",
40
+ info: {
41
+ singularName: "common",
42
+ pluralName: "commons",
43
+ displayName: "Common",
44
+ description: "Define common settings"
45
+ },
46
+ options: {
47
+ draftAndPublish: true
48
+ },
49
+ pluginOptions: {
50
+ i18n: {
51
+ localized: true
52
+ }
53
+ },
54
+ attributes: {
55
+ favicon: {
56
+ type: "media",
57
+ pluginOptions: {
58
+ i18n: {
59
+ localized: true
60
+ }
61
+ },
62
+ multiple: false,
63
+ required: false,
64
+ allowedTypes: [
65
+ "images",
66
+ "files",
67
+ "videos"
68
+ ]
69
+ },
70
+ title: {
71
+ type: "string",
72
+ pluginOptions: {
73
+ i18n: {
74
+ localized: true
75
+ }
76
+ },
77
+ required: true
78
+ },
79
+ description: {
80
+ type: "text",
81
+ pluginOptions: {
82
+ i18n: {
83
+ localized: true
84
+ }
85
+ },
86
+ required: false
87
+ },
88
+ copyright: {
89
+ type: "string",
90
+ pluginOptions: {
91
+ i18n: {
92
+ localized: true
93
+ }
94
+ },
95
+ default: "Copyright"
96
+ },
97
+ icp: {
98
+ type: "string",
99
+ pluginOptions: {
100
+ i18n: {
101
+ localized: true
102
+ }
103
+ }
104
+ }
105
+ }
106
+ };
107
+
108
+ // server/src/api/common/controllers/common.ts
109
+ var import_strapi = require("@strapi/strapi");
110
+ var common_default = import_strapi.factories.createCoreController("plugin::website.common");
111
+
112
+ // server/src/api/common/routes/common.ts
113
+ var import_strapi2 = require("@strapi/strapi");
114
+ var common_default2 = import_strapi2.factories.createCoreRouter("plugin::website.common");
115
+
116
+ // server/src/api/common/services/common.ts
117
+ var import_strapi3 = require("@strapi/strapi");
118
+ var common_default3 = import_strapi3.factories.createCoreService("plugin::website.common");
119
+
120
+ // server/src/api/common/index.ts
121
+ var common_default4 = {
122
+ schema: schema_default,
123
+ controllers: common_default,
124
+ services: common_default3,
125
+ routes: common_default2
126
+ };
127
+ // server/src/api/menu/content-types/menu/schema.json
128
+ var schema_default2 = {
129
+ kind: "singleType",
130
+ collectionName: "menus",
131
+ info: {
132
+ singularName: "menu",
133
+ pluralName: "menus",
134
+ displayName: "Menu"
135
+ },
136
+ options: {
137
+ draftAndPublish: true
138
+ },
139
+ pluginOptions: {
140
+ i18n: {
141
+ localized: true
142
+ }
143
+ },
144
+ attributes: {
145
+ title: {
146
+ type: "string",
147
+ pluginOptions: {
148
+ i18n: {
149
+ localized: true
150
+ }
151
+ },
152
+ required: true
153
+ }
154
+ }
155
+ };
156
+
157
+ // server/src/api/menu/controllers/menu.ts
158
+ var import_strapi4 = require("@strapi/strapi");
159
+ var menu_default = import_strapi4.factories.createCoreController("plugin::website.menu");
160
+
161
+ // server/src/api/menu/routes/menu.ts
162
+ var import_strapi5 = require("@strapi/strapi");
163
+ var menu_default2 = import_strapi5.factories.createCoreRouter("plugin::website.menu");
164
+
165
+ // server/src/api/menu/services/menu.ts
166
+ var import_strapi6 = require("@strapi/strapi");
167
+ var menu_default3 = import_strapi6.factories.createCoreService("plugin::website.menu");
168
+
169
+ // server/src/api/menu/index.ts
170
+ var menu_default4 = {
171
+ schema: schema_default2,
172
+ controllers: menu_default,
173
+ services: menu_default3,
174
+ routes: menu_default2
175
+ };
176
+ // server/src/api/site/content-types/site/schema.json
177
+ var schema_default3 = {
178
+ kind: "singleType",
179
+ collectionName: "sites",
180
+ info: {
181
+ singularName: "site",
182
+ pluralName: "sites",
183
+ displayName: "Site"
184
+ },
185
+ options: {
186
+ draftAndPublish: true
187
+ },
188
+ pluginOptions: {
189
+ i18n: {
190
+ localized: true
191
+ }
192
+ },
193
+ attributes: {
194
+ enabled: {
195
+ type: "boolean",
196
+ pluginOptions: {
197
+ i18n: {
198
+ localized: true
199
+ }
200
+ },
201
+ required: true,
202
+ default: true
203
+ },
204
+ title: {
205
+ type: "string",
206
+ pluginOptions: {
207
+ i18n: {
208
+ localized: true
209
+ }
210
+ }
211
+ },
212
+ logo: {
213
+ type: "media",
214
+ pluginOptions: {
215
+ i18n: {
216
+ localized: true
217
+ }
218
+ },
219
+ multiple: false,
220
+ allowedTypes: [
221
+ "images"
222
+ ]
223
+ },
224
+ icon: {
225
+ type: "media",
226
+ pluginOptions: {
227
+ i18n: {
228
+ localized: true
229
+ }
230
+ },
231
+ multiple: false,
232
+ allowedTypes: [
233
+ "images"
234
+ ]
235
+ },
236
+ url: {
237
+ type: "string",
238
+ pluginOptions: {
239
+ i18n: {
240
+ localized: true
241
+ }
242
+ }
243
+ },
244
+ robots: {
245
+ type: "text",
246
+ pluginOptions: {
247
+ i18n: {
248
+ localized: true
249
+ }
250
+ }
251
+ },
252
+ head: {
253
+ type: "text",
254
+ pluginOptions: {
255
+ i18n: {
256
+ localized: true
257
+ }
258
+ }
259
+ },
260
+ foot: {
261
+ type: "text",
262
+ pluginOptions: {
263
+ i18n: {
264
+ localized: true
265
+ }
266
+ }
267
+ },
268
+ inquiryEmail: {
269
+ type: "email",
270
+ pluginOptions: {
271
+ i18n: {
272
+ localized: true
273
+ }
274
+ }
275
+ },
276
+ index: {
277
+ type: "boolean",
278
+ pluginOptions: {
279
+ i18n: {
280
+ localized: true
281
+ }
282
+ },
283
+ default: false
284
+ }
285
+ }
286
+ };
287
+
288
+ // server/src/api/site/controllers/site.ts
289
+ var import_strapi7 = require("@strapi/strapi");
290
+ var site_default = import_strapi7.factories.createCoreController("plugin::website.site");
291
+
292
+ // server/src/api/site/routes/site.ts
293
+ var import_strapi8 = require("@strapi/strapi");
294
+ var site_default2 = import_strapi8.factories.createCoreRouter("plugin::website.site");
295
+
296
+ // server/src/api/site/services/site.ts
297
+ var import_strapi9 = require("@strapi/strapi");
298
+ var site_default3 = import_strapi9.factories.createCoreService("plugin::website.site");
299
+
300
+ // server/src/api/site/index.ts
301
+ var site_default4 = {
302
+ schema: schema_default3,
303
+ controllers: site_default,
304
+ services: site_default3,
305
+ routes: site_default2
306
+ };
307
+ // server/src/api/translation/content-types/translation/schema.json
308
+ var schema_default4 = {
309
+ kind: "collectionType",
310
+ collectionName: "translations",
311
+ info: {
312
+ singularName: "translation",
313
+ pluralName: "translations",
314
+ displayName: "Translation"
315
+ },
316
+ options: {
317
+ draftAndPublish: true
318
+ },
319
+ pluginOptions: {
320
+ i18n: {
321
+ localized: true
322
+ }
323
+ },
324
+ attributes: {
325
+ key: {
326
+ type: "string",
327
+ pluginOptions: {
328
+ i18n: {
329
+ localized: false
330
+ }
331
+ },
332
+ required: true,
333
+ unique: true
334
+ },
335
+ value: {
336
+ type: "text",
337
+ pluginOptions: {
338
+ i18n: {
339
+ localized: true
340
+ }
341
+ },
342
+ required: true
343
+ }
344
+ }
345
+ };
346
+
347
+ // server/src/api/translation/controllers/translation.ts
348
+ var import_strapi10 = require("@strapi/strapi");
349
+ var translation_default = import_strapi10.factories.createCoreController("plugin::website.translation");
350
+
351
+ // server/src/api/translation/routes/translation.ts
352
+ var import_strapi11 = require("@strapi/strapi");
353
+ var translation_default2 = import_strapi11.factories.createCoreRouter("plugin::website.translation");
354
+
355
+ // server/src/api/translation/services/translation.ts
356
+ var import_strapi12 = require("@strapi/strapi");
357
+ var translation_default3 = import_strapi12.factories.createCoreService("plugin::website.translation");
358
+
359
+ // server/src/api/translation/index.ts
360
+ var translation_default4 = {
361
+ schema: schema_default4,
362
+ controllers: translation_default,
363
+ services: translation_default3,
364
+ routes: translation_default2
365
+ };
366
+
367
+ // server/src/api/index.ts
368
+ var contentTypes = {};
369
+ var controllers = {};
370
+ var routes = {};
371
+ var services = {};
372
+ contentTypes.common = {
373
+ schema: common_default4.schema
374
+ };
375
+ contentTypes.menu = {
376
+ schema: menu_default4.schema
377
+ };
378
+ contentTypes.site = {
379
+ schema: site_default4.schema
380
+ };
381
+ contentTypes.translation = {
382
+ schema: translation_default4.schema
383
+ };
384
+ routes.common = common_default4.routes;
385
+ routes.menu = menu_default4.routes;
386
+ routes.site = site_default4.routes;
387
+ routes.translation = translation_default4.routes;
388
+ services.common = common_default4.services;
389
+ services.menu = menu_default4.services;
390
+ services.site = site_default4.services;
391
+ services.translation = translation_default4.services;
392
+ controllers.common = common_default4.controllers;
393
+ controllers.menu = menu_default4.controllers;
394
+ controllers.site = site_default4.controllers;
395
+ controllers.translation = translation_default4.controllers;
396
+ var api_default = {
397
+ contentTypes,
398
+ controllers,
399
+ routes,
400
+ services
401
+ };
36
402
 
37
403
  // server/src/bootstrap.ts
38
- var bootstrap = ({ strapi }) => {
39
- strapi.log.info("dashboard server plugin: bootstrap");
404
+ var bootstrap = ({ strapi: strapi2 }) => {
405
+ strapi2.log.info("website server plugin: bootstrap");
40
406
  };
41
407
  var bootstrap_default = bootstrap;
42
408
 
409
+ // server/src/config/index.ts
410
+ var config = {
411
+ default: {},
412
+ validator: (config2) => config2
413
+ };
414
+ var config_default = config;
415
+
43
416
  // server/src/contentTypes/index.ts
44
- var contentTypes = {};
45
- var contentTypes_default = contentTypes;
417
+ var contentTypes2 = {};
418
+ var contentTypes_default = contentTypes2;
419
+
420
+ // server/src/controllers/fields.ts
421
+ var checkAvailable = async (context) => {
422
+ const body = context.request.body;
423
+ if (body.kind === "collectionType") {
424
+ const entities = await strapi.entityService.findMany(body.uid, {
425
+ filters: {
426
+ [body.field]: {
427
+ $eq: body.value
428
+ }
429
+ }
430
+ });
431
+ return { isAvailable: !entities?.length };
432
+ }
433
+ return { isAvailable: true };
434
+ };
435
+ var fields = {
436
+ checkAvailable
437
+ };
438
+ var fields_default = fields;
439
+
440
+ // server/src/controllers/utils/request.ts
441
+ var getWebsiteConfig = async () => {
442
+ const locale = await strapi.plugin("i18n").service("locales").getDefaultLocale();
443
+ const [site, [token]] = await Promise.all([
444
+ strapi.db.query("plugin::website.site").findOne({ where: { locale } }),
445
+ strapi.db.query("admin::api-token").findMany({ where: { type: "full-access" } })
446
+ ]);
447
+ if (!site || !token) {
448
+ throw new Error("You need to configure Site url and a full-access API token first.");
449
+ }
450
+ const accessKey = strapi.service("admin::encryption").decrypt(token.encryptedKey);
451
+ return {
452
+ url: site?.url,
453
+ token: accessKey
454
+ };
455
+ };
456
+ var buildHeaders = (token, extraHeaders = {}) => {
457
+ const headers = { ...extraHeaders };
458
+ if (token) {
459
+ headers.Authorization = `Bearer ${token}`;
460
+ }
461
+ return headers;
462
+ };
463
+ var fetchWebsite = async (endpoint, options = {}) => {
464
+ const { url, token } = await getWebsiteConfig();
465
+ const fullUrl = `${url}${endpoint}`;
466
+ console.debug("Fetch Website Server Url:", fullUrl);
467
+ const headers = buildHeaders(token, options.headers);
468
+ const response = await fetch(fullUrl, { ...options, headers });
469
+ if (!response.ok) {
470
+ throw new Error(`HTTP error! status: ${response.status}`);
471
+ }
472
+ const result = await response.json();
473
+ return result;
474
+ };
475
+ var handleError = (ctx, error, defaultMessage) => {
476
+ const timestamp = new Date().toISOString();
477
+ let code = 500;
478
+ let message = error.message || defaultMessage;
479
+ if (error.status === 404 || error.message?.includes("404")) {
480
+ code = 404;
481
+ message = error.message || "Resource not found";
482
+ } else if (error.status === 400 || error.message?.includes("400")) {
483
+ code = 400;
484
+ message = error.message || "Bad request";
485
+ } else if (error.status === 401 || error.message?.includes("401")) {
486
+ code = 401;
487
+ message = error.message || "Unauthorized";
488
+ } else if (error.status === 403 || error.message?.includes("403")) {
489
+ code = 403;
490
+ message = error.message || "Forbidden";
491
+ }
492
+ const errorResponse = {
493
+ code,
494
+ message: `${defaultMessage}: ${message}`,
495
+ timestamp
496
+ };
497
+ ctx.status = code;
498
+ return errorResponse;
499
+ };
500
+ var buildQueryParams = (params) => {
501
+ const queryParams = new URLSearchParams;
502
+ Object.entries(params).forEach(([key, value]) => {
503
+ if (value !== undefined && value !== null && value !== "") {
504
+ queryParams.append(key, String(value));
505
+ }
506
+ });
507
+ return queryParams.toString();
508
+ };
509
+ var paginateData = (data, limit, offset) => {
510
+ const total = data.length;
511
+ const startIndex = offset;
512
+ const endIndex = startIndex + limit;
513
+ const items = data.slice(startIndex, endIndex);
514
+ return {
515
+ code: 200,
516
+ message: "success",
517
+ data: {
518
+ items,
519
+ pagination: {
520
+ page: Math.floor(offset / limit) + 1,
521
+ pageSize: limit,
522
+ total
523
+ }
524
+ },
525
+ timestamp: new Date().toISOString()
526
+ };
527
+ };
528
+
529
+ // server/src/controllers/inquiries.ts
530
+ var list = async (ctx) => {
531
+ const {
532
+ page = 1,
533
+ pageSize = 10,
534
+ keyword = "",
535
+ start = "",
536
+ end = "",
537
+ sortBy = "createdAt",
538
+ order = "desc"
539
+ } = ctx.query;
540
+ const queryString = buildQueryParams({
541
+ page,
542
+ pageSize,
543
+ keyword,
544
+ start,
545
+ end,
546
+ sortBy,
547
+ order
548
+ });
549
+ try {
550
+ return await fetchWebsite(`/api/inquiries?${queryString}`);
551
+ } catch (error) {
552
+ return handleError(ctx, error, "Failed to fetch inquiries");
553
+ }
554
+ };
555
+ var detail = async (ctx) => {
556
+ const { id } = ctx.params;
557
+ try {
558
+ return await fetchWebsite(`/api/inquiries/${id}`);
559
+ } catch (error) {
560
+ return handleError(ctx, error, "Failed to fetch inquiry detail");
561
+ }
562
+ };
563
+ var read = async (ctx) => {
564
+ const { id } = ctx.params;
565
+ const operatorId = ctx.state?.user?.id;
566
+ if (!operatorId) {
567
+ ctx.throw(400, "operatorId is required");
568
+ }
569
+ try {
570
+ return await fetchWebsite(`/api/inquiries/${id}/read`, {
571
+ method: "PUT",
572
+ headers: { "Content-Type": "application/json" },
573
+ body: JSON.stringify({ operatorId })
574
+ });
575
+ } catch (error) {
576
+ return handleError(ctx, error, "Failed to mark inquiry as read");
577
+ }
578
+ };
579
+ var inquiries = {
580
+ list,
581
+ detail,
582
+ read
583
+ };
584
+ var inquiries_default = inquiries;
585
+
586
+ // server/src/controllers/visitors.ts
587
+ var pageViews = async (ctx) => {
588
+ const { limit = 10, offset = 0, start, end, ip } = ctx.query;
589
+ const queryString = buildQueryParams({ start, end, ip });
590
+ try {
591
+ const allData = await fetchWebsite(`/api/visitor/page-views?${queryString}`);
592
+ return paginateData(allData, Number(limit), Number(offset));
593
+ } catch (error) {
594
+ return handleError(ctx, error, "Failed to fetch page views");
595
+ }
596
+ };
597
+ var sessions = async (ctx) => {
598
+ const { limit = 10, offset = 0, start, end, ip } = ctx.query;
599
+ const queryString = buildQueryParams({ start, end, ip });
600
+ try {
601
+ const allData = await fetchWebsite(`/api/visitor/sessions?${queryString}`);
602
+ return paginateData(allData, Number(limit), Number(offset));
603
+ } catch (error) {
604
+ return handleError(ctx, error, "Failed to fetch visitor sessions");
605
+ }
606
+ };
607
+ var dailyPageStats = async (ctx) => {
608
+ const { start, end, page, limit = 10, offset = 0 } = ctx.query;
609
+ const queryString = buildQueryParams({ start, end, page });
610
+ try {
611
+ const allData = await fetchWebsite(`/api/visitor/stats/daily-page?${queryString}`);
612
+ return paginateData(allData, Number(limit), Number(offset));
613
+ } catch (error) {
614
+ return handleError(ctx, error, "Failed to fetch daily page stats");
615
+ }
616
+ };
617
+ var visitors = {
618
+ pageViews,
619
+ sessions,
620
+ dailyPageStats
621
+ };
622
+ var visitors_default = visitors;
623
+
624
+ // server/src/controllers/website.ts
625
+ var hello = async () => {
626
+ return { message: "hello world" };
627
+ };
628
+ var refresh = async (ctx) => {
629
+ try {
630
+ return await fetchWebsite("/api/site/refresh");
631
+ } catch (error) {
632
+ return handleError(ctx, error, "Failed to refresh website cache");
633
+ }
634
+ };
635
+ var dashboard = async (ctx) => {
636
+ try {
637
+ return await fetchWebsite("/api/common/dashboard");
638
+ } catch (error) {
639
+ return handleError(ctx, error, "Failed to fetch dashboard stats");
640
+ }
641
+ };
642
+ var website = {
643
+ hello,
644
+ refresh,
645
+ dashboard
646
+ };
647
+ var website_default = website;
46
648
 
47
649
  // server/src/controllers/index.ts
48
- var controllers = {};
49
- var controllers_default = controllers;
650
+ var controllers2 = {
651
+ website: website_default,
652
+ visitors: visitors_default,
653
+ inquiries: inquiries_default,
654
+ fields: fields_default
655
+ };
656
+ var controllers_default = controllers2;
50
657
 
51
658
  // server/src/destroy.ts
52
- var destroy = ({ strapi }) => {
53
- strapi.log.info("dashboard server plugin: bootstrap");
659
+ var destroy = ({ strapi: strapi2 }) => {
660
+ strapi2.log.info("dashboard server plugin: bootstrap");
54
661
  };
55
662
  var destroy_default = destroy;
56
663
 
664
+ // server/src/components/index.ts
665
+ var createComponent = (strapi2, { name, displayName, icon, attributes }) => {
666
+ const category = "website";
667
+ if (strapi2.components[`${category}.${name}`])
668
+ return;
669
+ const builder = strapi2.plugin("content-type-builder");
670
+ builder.services.components.createComponent({
671
+ component: {
672
+ icon,
673
+ category,
674
+ displayName,
675
+ attributes
676
+ }
677
+ }).then((r) => {
678
+ console.log(`create ${name} component`, r);
679
+ });
680
+ };
681
+ var registerComponents = (strapi2, components) => {
682
+ components.forEach((component) => {
683
+ createComponent(strapi2, component);
684
+ });
685
+ };
686
+
687
+ // server/src/components/banner.ts
688
+ var component = {
689
+ name: "banner",
690
+ icon: "landscape",
691
+ displayName: "Banner",
692
+ attributes: {
693
+ title: {
694
+ type: "string"
695
+ },
696
+ subtitle: {
697
+ type: "string"
698
+ },
699
+ description: {
700
+ type: "string"
701
+ },
702
+ image: {
703
+ type: "media",
704
+ multiple: false,
705
+ required: true,
706
+ allowedTypes: ["images"]
707
+ },
708
+ mImage: {
709
+ type: "media",
710
+ multiple: false,
711
+ allowedTypes: ["images"]
712
+ }
713
+ }
714
+ };
715
+ var banner_default = component;
716
+
717
+ // server/src/components/logo.ts
718
+ var component2 = {
719
+ name: "logo",
720
+ icon: "picture",
721
+ displayName: "Logo",
722
+ attributes: {
723
+ main: {
724
+ type: "media",
725
+ multiple: false,
726
+ allowedTypes: ["images"]
727
+ },
728
+ sub: {
729
+ type: "media",
730
+ multiple: false,
731
+ allowedTypes: ["images"]
732
+ }
733
+ }
734
+ };
735
+ var logo_default = component2;
736
+
737
+ // server/src/components/social.ts
738
+ var component3 = {
739
+ name: "social",
740
+ icon: "paperPlane",
741
+ displayName: "Social",
742
+ attributes: {
743
+ type: {
744
+ type: "enumeration",
745
+ enum: ["url", "qrcode"]
746
+ },
747
+ url: {
748
+ type: "string",
749
+ conditions: {
750
+ visible: {
751
+ "==": [
752
+ {
753
+ var: "type"
754
+ },
755
+ "url"
756
+ ]
757
+ }
758
+ }
759
+ },
760
+ qrcode: {
761
+ type: "media",
762
+ conditions: {
763
+ visible: {
764
+ "==": [
765
+ {
766
+ var: "type"
767
+ },
768
+ "qrcode"
769
+ ]
770
+ }
771
+ },
772
+ multiple: false,
773
+ allowedTypes: ["images"]
774
+ }
775
+ }
776
+ };
777
+ var social_default = component3;
778
+
779
+ // server/src/components/video.ts
780
+ var component4 = {
781
+ name: "video",
782
+ icon: "play",
783
+ displayName: "Video",
784
+ attributes: {
785
+ url: {
786
+ type: "string",
787
+ required: true
788
+ },
789
+ title: {
790
+ type: "string"
791
+ },
792
+ image: {
793
+ type: "media",
794
+ multiple: false,
795
+ allowedTypes: ["images"]
796
+ }
797
+ }
798
+ };
799
+ var video_default = component4;
800
+
57
801
  // server/src/register.ts
58
- var register = ({ strapi }) => {
59
- strapi.log.info("dashboard server plugin: bootstrap");
802
+ var register = ({ strapi: strapi2 }) => {
803
+ strapi2.log.info("website server plugin: register");
804
+ registerComponents(strapi2, [
805
+ banner_default,
806
+ social_default,
807
+ logo_default,
808
+ video_default
809
+ ]);
810
+ strapi2.customFields.register([
811
+ {
812
+ name: "slugInput",
813
+ plugin: "website",
814
+ type: "string",
815
+ inputSize: {
816
+ default: 6,
817
+ isResizable: true
818
+ }
819
+ },
820
+ {
821
+ name: "dataNested",
822
+ plugin: "website",
823
+ type: "json",
824
+ inputSize: {
825
+ default: 12,
826
+ isResizable: false
827
+ }
828
+ },
829
+ {
830
+ name: "dataSelect",
831
+ plugin: "website",
832
+ type: "json",
833
+ inputSize: {
834
+ default: 12,
835
+ isResizable: false
836
+ }
837
+ },
838
+ {
839
+ name: "iconPicker",
840
+ plugin: "website",
841
+ type: "json",
842
+ inputSize: {
843
+ default: 4,
844
+ isResizable: true
845
+ }
846
+ },
847
+ {
848
+ name: "colorPicker",
849
+ plugin: "website",
850
+ type: "string",
851
+ inputSize: {
852
+ default: 4,
853
+ isResizable: true
854
+ }
855
+ }
856
+ ]);
60
857
  };
61
858
  var register_default = register;
62
859
 
63
860
  // server/src/routes/index.ts
64
- var routes = {
861
+ var routes2 = {
65
862
  admin: {
66
863
  type: "admin",
67
864
  routes: [
865
+ {
866
+ method: "POST",
867
+ path: "/fields/check-available",
868
+ handler: "fields.checkAvailable",
869
+ info: {}
870
+ },
68
871
  {
69
872
  method: "GET",
70
- path: "/website/hello",
873
+ path: "/hello",
71
874
  handler: "website.hello",
72
875
  config: { auth: false },
73
876
  info: {}
74
877
  },
75
878
  {
76
879
  method: "GET",
77
- path: "/website/refresh",
880
+ path: "/refresh",
78
881
  handler: "website.refresh",
79
882
  config: {},
80
883
  info: {}
81
884
  },
82
885
  {
83
886
  method: "GET",
84
- path: "/website/dashboard",
887
+ path: "/dashboard",
85
888
  handler: "website.dashboard",
86
889
  config: {},
87
890
  info: {}
@@ -89,68 +892,77 @@ var routes = {
89
892
  {
90
893
  method: "GET",
91
894
  path: "/inquiries",
92
- handler: "inquiry.list",
895
+ handler: "inquiries.list",
93
896
  config: {},
94
897
  info: {}
95
898
  },
96
899
  {
97
900
  method: "GET",
98
901
  path: "/inquiries/:id",
99
- handler: "inquiry.detail",
902
+ handler: "inquiries.detail",
100
903
  config: {},
101
904
  info: {}
102
905
  },
103
906
  {
104
907
  method: "PUT",
105
908
  path: "/inquiries/:id/read",
106
- handler: "inquiry.markAsRead",
909
+ handler: "inquiries.read",
107
910
  config: {},
108
911
  info: {}
109
912
  },
110
913
  {
111
914
  method: "GET",
112
915
  path: "/visitors/page-views",
113
- handler: "visitor.pageViews",
916
+ handler: "visitors.pageViews",
114
917
  config: {},
115
918
  info: {}
116
919
  },
117
920
  {
118
921
  method: "GET",
119
922
  path: "/visitors/sessions",
120
- handler: "visitor.sessions",
923
+ handler: "visitors.sessions",
121
924
  config: {},
122
925
  info: {}
123
926
  },
124
927
  {
125
928
  method: "GET",
126
929
  path: "/visitors/stats/daily-page",
127
- handler: "visitor.dailyPageStats",
930
+ handler: "visitors.dailyPageStats",
128
931
  config: {},
129
932
  info: {}
130
933
  }
131
934
  ]
132
935
  }
133
936
  };
134
- var routes_default = routes;
937
+ var routes_default = routes2;
135
938
 
136
939
  // server/src/services/index.ts
137
- var services = {};
138
- var services_default = services;
940
+ var services2 = {};
941
+ var services_default = services2;
139
942
 
140
943
  // server/src/index.ts
141
944
  var plugin = {
142
945
  register: register_default,
143
946
  bootstrap: bootstrap_default,
144
947
  destroy: destroy_default,
145
- controllers: controllers_default,
146
- routes: routes_default,
147
- services: services_default,
148
- contentTypes: contentTypes_default,
948
+ config: config_default,
949
+ contentTypes: {
950
+ ...contentTypes_default,
951
+ ...api_default.contentTypes
952
+ },
953
+ controllers: {
954
+ ...controllers_default,
955
+ ...api_default.controllers
956
+ },
957
+ routes: {
958
+ ...routes_default,
959
+ ...api_default.routes
960
+ },
961
+ services: {
962
+ ...services_default,
963
+ ...api_default.services
964
+ },
149
965
  policies: {},
150
- middlewares: {},
151
- config: {
152
- default: {},
153
- validator: () => {}
154
- }
966
+ middlewares: {}
155
967
  };
156
968
  var src_default = plugin;