@geekron/strapi 0.1.3 → 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,26 +33,548 @@ __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
+ };
46
528
 
47
529
  // server/src/controllers/inquiries.ts
48
530
  var list = async (ctx) => {
49
- ctx.body = "Hello World!";
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
+ }
50
554
  };
51
555
  var detail = async (ctx) => {
52
- ctx.body = "refresh";
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
+ }
53
562
  };
54
563
  var read = async (ctx) => {
55
- ctx.body = "dashboard";
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
+ }
56
578
  };
57
579
  var inquiries = {
58
580
  list,
@@ -63,13 +585,34 @@ var inquiries_default = inquiries;
63
585
 
64
586
  // server/src/controllers/visitors.ts
65
587
  var pageViews = async (ctx) => {
66
- ctx.body = "Hello World!";
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
+ }
67
596
  };
68
597
  var sessions = async (ctx) => {
69
- ctx.body = "refresh";
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
+ }
70
606
  };
71
607
  var dailyPageStats = async (ctx) => {
72
- ctx.body = "dashboard";
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
+ }
73
616
  };
74
617
  var visitors = {
75
618
  pageViews,
@@ -79,14 +622,22 @@ var visitors = {
79
622
  var visitors_default = visitors;
80
623
 
81
624
  // server/src/controllers/website.ts
82
- var hello = async (ctx) => {
83
- ctx.body = "Hello World!";
625
+ var hello = async () => {
626
+ return { message: "hello world" };
84
627
  };
85
628
  var refresh = async (ctx) => {
86
- ctx.body = "refresh";
629
+ try {
630
+ return await fetchWebsite("/api/site/refresh");
631
+ } catch (error) {
632
+ return handleError(ctx, error, "Failed to refresh website cache");
633
+ }
87
634
  };
88
635
  var dashboard = async (ctx) => {
89
- ctx.body = "dashboard";
636
+ try {
637
+ return await fetchWebsite("/api/common/dashboard");
638
+ } catch (error) {
639
+ return handleError(ctx, error, "Failed to fetch dashboard stats");
640
+ }
90
641
  };
91
642
  var website = {
92
643
  hello,
@@ -96,47 +647,244 @@ var website = {
96
647
  var website_default = website;
97
648
 
98
649
  // server/src/controllers/index.ts
99
- var controllers = {
650
+ var controllers2 = {
100
651
  website: website_default,
101
652
  visitors: visitors_default,
102
- inquiries: inquiries_default
653
+ inquiries: inquiries_default,
654
+ fields: fields_default
103
655
  };
104
- var controllers_default = controllers;
656
+ var controllers_default = controllers2;
105
657
 
106
658
  // server/src/destroy.ts
107
- var destroy = ({ strapi }) => {
108
- strapi.log.info("dashboard server plugin: bootstrap");
659
+ var destroy = ({ strapi: strapi2 }) => {
660
+ strapi2.log.info("dashboard server plugin: bootstrap");
109
661
  };
110
662
  var destroy_default = destroy;
111
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
+
112
801
  // server/src/register.ts
113
- var register = ({ strapi }) => {
114
- 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
+ ]);
115
857
  };
116
858
  var register_default = register;
117
859
 
118
860
  // server/src/routes/index.ts
119
- var routes = {
861
+ var routes2 = {
120
862
  admin: {
121
863
  type: "admin",
122
864
  routes: [
865
+ {
866
+ method: "POST",
867
+ path: "/fields/check-available",
868
+ handler: "fields.checkAvailable",
869
+ info: {}
870
+ },
123
871
  {
124
872
  method: "GET",
125
- path: "/website/hello",
873
+ path: "/hello",
126
874
  handler: "website.hello",
127
875
  config: { auth: false },
128
876
  info: {}
129
877
  },
130
878
  {
131
879
  method: "GET",
132
- path: "/website/refresh",
880
+ path: "/refresh",
133
881
  handler: "website.refresh",
134
882
  config: {},
135
883
  info: {}
136
884
  },
137
885
  {
138
886
  method: "GET",
139
- path: "/website/dashboard",
887
+ path: "/dashboard",
140
888
  handler: "website.dashboard",
141
889
  config: {},
142
890
  info: {}
@@ -186,26 +934,35 @@ var routes = {
186
934
  ]
187
935
  }
188
936
  };
189
- var routes_default = routes;
937
+ var routes_default = routes2;
190
938
 
191
939
  // server/src/services/index.ts
192
- var services = {};
193
- var services_default = services;
940
+ var services2 = {};
941
+ var services_default = services2;
194
942
 
195
943
  // server/src/index.ts
196
944
  var plugin = {
197
945
  register: register_default,
198
946
  bootstrap: bootstrap_default,
199
947
  destroy: destroy_default,
200
- controllers: controllers_default,
201
- routes: routes_default,
202
- services: services_default,
203
- 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
+ },
204
965
  policies: {},
205
- middlewares: {},
206
- config: {
207
- default: {},
208
- validator: () => {}
209
- }
966
+ middlewares: {}
210
967
  };
211
968
  var src_default = plugin;