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