@sonicjs-cms/core 2.0.7 → 2.0.9

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.
Files changed (63) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-OOV64BK4.cjs → chunk-4I25AGUR.cjs} +349 -267
  3. package/dist/chunk-4I25AGUR.cjs.map +1 -0
  4. package/dist/chunk-6FR25MPC.js.map +1 -1
  5. package/dist/{chunk-JB2NUJJ5.js → chunk-ABYMIXRN.js} +193 -111
  6. package/dist/chunk-ABYMIXRN.js.map +1 -0
  7. package/dist/{chunk-4MBTSUI6.js → chunk-COBUPOMD.js} +22 -6
  8. package/dist/chunk-COBUPOMD.js.map +1 -0
  9. package/dist/chunk-DOR2IU73.cjs.map +1 -1
  10. package/dist/{chunk-3R7EQNGO.cjs → chunk-DYYAXDXI.cjs} +6 -6
  11. package/dist/chunk-DYYAXDXI.cjs.map +1 -0
  12. package/dist/{chunk-7XEESVSX.cjs → chunk-EYMHWJTW.cjs} +2 -2
  13. package/dist/chunk-EYMHWJTW.cjs.map +1 -0
  14. package/dist/{chunk-HJZOA2O5.cjs → chunk-F5ESJXI2.cjs} +25 -3
  15. package/dist/chunk-F5ESJXI2.cjs.map +1 -0
  16. package/dist/chunk-FICTAGD4.js.map +1 -1
  17. package/dist/{chunk-EAELJXRV.js → chunk-HKEK7UNV.js} +25 -3
  18. package/dist/chunk-HKEK7UNV.js.map +1 -0
  19. package/dist/{chunk-KHNSPJ6X.cjs → chunk-MABBKINE.cjs} +5 -5
  20. package/dist/{chunk-KHNSPJ6X.cjs.map → chunk-MABBKINE.cjs.map} +1 -1
  21. package/dist/{chunk-YGVWY6KO.cjs → chunk-NBDPIRQS.cjs} +22 -5
  22. package/dist/chunk-NBDPIRQS.cjs.map +1 -0
  23. package/dist/{chunk-O7LMFJMZ.js → chunk-OKPDQO2Y.js} +3 -3
  24. package/dist/chunk-OKPDQO2Y.js.map +1 -0
  25. package/dist/{chunk-LS5CMDNL.js → chunk-OPGDMS7L.js} +3 -3
  26. package/dist/{chunk-LS5CMDNL.js.map → chunk-OPGDMS7L.js.map} +1 -1
  27. package/dist/chunk-RCQ2HIQD.cjs.map +1 -1
  28. package/dist/{chunk-RSFXIU6A.cjs → chunk-TMIRVVQ7.cjs} +4 -4
  29. package/dist/chunk-TMIRVVQ7.cjs.map +1 -0
  30. package/dist/{chunk-YHLLVUJC.js → chunk-VEC5MLT3.js} +2 -2
  31. package/dist/chunk-VEC5MLT3.js.map +1 -0
  32. package/dist/{chunk-YURRY22X.js → chunk-WRRLB6KG.js} +4 -4
  33. package/dist/chunk-WRRLB6KG.js.map +1 -0
  34. package/dist/index.cjs +108 -104
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.js +11 -11
  37. package/dist/index.js.map +1 -1
  38. package/dist/middleware.cjs +23 -23
  39. package/dist/middleware.js +2 -2
  40. package/dist/plugins.cjs +7 -7
  41. package/dist/plugins.js +1 -1
  42. package/dist/routes.cjs +25 -25
  43. package/dist/routes.js +5 -5
  44. package/dist/services.cjs +18 -14
  45. package/dist/services.js +1 -1
  46. package/dist/templates.cjs +18 -18
  47. package/dist/templates.js +2 -2
  48. package/dist/utils.cjs +11 -11
  49. package/dist/utils.js +1 -1
  50. package/migrations/019_remove_blog_posts_collection.sql +15 -0
  51. package/package.json +2 -2
  52. package/dist/chunk-3R7EQNGO.cjs.map +0 -1
  53. package/dist/chunk-4MBTSUI6.js.map +0 -1
  54. package/dist/chunk-7XEESVSX.cjs.map +0 -1
  55. package/dist/chunk-EAELJXRV.js.map +0 -1
  56. package/dist/chunk-HJZOA2O5.cjs.map +0 -1
  57. package/dist/chunk-JB2NUJJ5.js.map +0 -1
  58. package/dist/chunk-O7LMFJMZ.js.map +0 -1
  59. package/dist/chunk-OOV64BK4.cjs.map +0 -1
  60. package/dist/chunk-RSFXIU6A.cjs.map +0 -1
  61. package/dist/chunk-YGVWY6KO.cjs.map +0 -1
  62. package/dist/chunk-YHLLVUJC.js.map +0 -1
  63. package/dist/chunk-YURRY22X.js.map +0 -1
package/dist/routes.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkOOV64BK4_cjs = require('./chunk-OOV64BK4.cjs');
3
+ var chunk4I25AGUR_cjs = require('./chunk-4I25AGUR.cjs');
4
4
  require('./chunk-DOR2IU73.cjs');
5
- require('./chunk-3R7EQNGO.cjs');
6
- require('./chunk-YGVWY6KO.cjs');
7
- require('./chunk-7XEESVSX.cjs');
8
- require('./chunk-RSFXIU6A.cjs');
5
+ require('./chunk-DYYAXDXI.cjs');
6
+ require('./chunk-NBDPIRQS.cjs');
7
+ require('./chunk-EYMHWJTW.cjs');
8
+ require('./chunk-TMIRVVQ7.cjs');
9
9
  require('./chunk-RCQ2HIQD.cjs');
10
10
  require('./chunk-IGJUBJBW.cjs');
11
11
 
@@ -13,83 +13,83 @@ require('./chunk-IGJUBJBW.cjs');
13
13
 
14
14
  Object.defineProperty(exports, "ROUTES_INFO", {
15
15
  enumerable: true,
16
- get: function () { return chunkOOV64BK4_cjs.ROUTES_INFO; }
16
+ get: function () { return chunk4I25AGUR_cjs.ROUTES_INFO; }
17
17
  });
18
18
  Object.defineProperty(exports, "adminApiRoutes", {
19
19
  enumerable: true,
20
- get: function () { return chunkOOV64BK4_cjs.admin_api_default; }
20
+ get: function () { return chunk4I25AGUR_cjs.admin_api_default; }
21
21
  });
22
22
  Object.defineProperty(exports, "adminCheckboxRoutes", {
23
23
  enumerable: true,
24
- get: function () { return chunkOOV64BK4_cjs.adminCheckboxRoutes; }
24
+ get: function () { return chunk4I25AGUR_cjs.adminCheckboxRoutes; }
25
25
  });
26
26
  Object.defineProperty(exports, "adminCodeExamplesRoutes", {
27
27
  enumerable: true,
28
- get: function () { return chunkOOV64BK4_cjs.admin_code_examples_default; }
28
+ get: function () { return chunk4I25AGUR_cjs.admin_code_examples_default; }
29
29
  });
30
30
  Object.defineProperty(exports, "adminCollectionsRoutes", {
31
31
  enumerable: true,
32
- get: function () { return chunkOOV64BK4_cjs.adminCollectionsRoutes; }
32
+ get: function () { return chunk4I25AGUR_cjs.adminCollectionsRoutes; }
33
33
  });
34
34
  Object.defineProperty(exports, "adminContentRoutes", {
35
35
  enumerable: true,
36
- get: function () { return chunkOOV64BK4_cjs.admin_content_default; }
36
+ get: function () { return chunk4I25AGUR_cjs.admin_content_default; }
37
37
  });
38
38
  Object.defineProperty(exports, "adminDashboardRoutes", {
39
39
  enumerable: true,
40
- get: function () { return chunkOOV64BK4_cjs.router; }
40
+ get: function () { return chunk4I25AGUR_cjs.router; }
41
41
  });
42
42
  Object.defineProperty(exports, "adminDesignRoutes", {
43
43
  enumerable: true,
44
- get: function () { return chunkOOV64BK4_cjs.adminDesignRoutes; }
44
+ get: function () { return chunk4I25AGUR_cjs.adminDesignRoutes; }
45
45
  });
46
46
  Object.defineProperty(exports, "adminFAQRoutes", {
47
47
  enumerable: true,
48
- get: function () { return chunkOOV64BK4_cjs.admin_faq_default; }
48
+ get: function () { return chunk4I25AGUR_cjs.admin_faq_default; }
49
49
  });
50
50
  Object.defineProperty(exports, "adminLogsRoutes", {
51
51
  enumerable: true,
52
- get: function () { return chunkOOV64BK4_cjs.adminLogsRoutes; }
52
+ get: function () { return chunk4I25AGUR_cjs.adminLogsRoutes; }
53
53
  });
54
54
  Object.defineProperty(exports, "adminMediaRoutes", {
55
55
  enumerable: true,
56
- get: function () { return chunkOOV64BK4_cjs.adminMediaRoutes; }
56
+ get: function () { return chunk4I25AGUR_cjs.adminMediaRoutes; }
57
57
  });
58
58
  Object.defineProperty(exports, "adminPluginRoutes", {
59
59
  enumerable: true,
60
- get: function () { return chunkOOV64BK4_cjs.adminPluginRoutes; }
60
+ get: function () { return chunk4I25AGUR_cjs.adminPluginRoutes; }
61
61
  });
62
62
  Object.defineProperty(exports, "adminSettingsRoutes", {
63
63
  enumerable: true,
64
- get: function () { return chunkOOV64BK4_cjs.adminSettingsRoutes; }
64
+ get: function () { return chunk4I25AGUR_cjs.adminSettingsRoutes; }
65
65
  });
66
66
  Object.defineProperty(exports, "adminTestimonialsRoutes", {
67
67
  enumerable: true,
68
- get: function () { return chunkOOV64BK4_cjs.admin_testimonials_default; }
68
+ get: function () { return chunk4I25AGUR_cjs.admin_testimonials_default; }
69
69
  });
70
70
  Object.defineProperty(exports, "adminUsersRoutes", {
71
71
  enumerable: true,
72
- get: function () { return chunkOOV64BK4_cjs.userRoutes; }
72
+ get: function () { return chunk4I25AGUR_cjs.userRoutes; }
73
73
  });
74
74
  Object.defineProperty(exports, "apiContentCrudRoutes", {
75
75
  enumerable: true,
76
- get: function () { return chunkOOV64BK4_cjs.api_content_crud_default; }
76
+ get: function () { return chunk4I25AGUR_cjs.api_content_crud_default; }
77
77
  });
78
78
  Object.defineProperty(exports, "apiMediaRoutes", {
79
79
  enumerable: true,
80
- get: function () { return chunkOOV64BK4_cjs.api_media_default; }
80
+ get: function () { return chunk4I25AGUR_cjs.api_media_default; }
81
81
  });
82
82
  Object.defineProperty(exports, "apiRoutes", {
83
83
  enumerable: true,
84
- get: function () { return chunkOOV64BK4_cjs.api_default; }
84
+ get: function () { return chunk4I25AGUR_cjs.api_default; }
85
85
  });
86
86
  Object.defineProperty(exports, "apiSystemRoutes", {
87
87
  enumerable: true,
88
- get: function () { return chunkOOV64BK4_cjs.api_system_default; }
88
+ get: function () { return chunk4I25AGUR_cjs.api_system_default; }
89
89
  });
90
90
  Object.defineProperty(exports, "authRoutes", {
91
91
  enumerable: true,
92
- get: function () { return chunkOOV64BK4_cjs.auth_default; }
92
+ get: function () { return chunk4I25AGUR_cjs.auth_default; }
93
93
  });
94
94
  //# sourceMappingURL=routes.cjs.map
95
95
  //# sourceMappingURL=routes.cjs.map
package/dist/routes.js CHANGED
@@ -1,9 +1,9 @@
1
- export { ROUTES_INFO, admin_api_default as adminApiRoutes, adminCheckboxRoutes, admin_code_examples_default as adminCodeExamplesRoutes, adminCollectionsRoutes, admin_content_default as adminContentRoutes, router as adminDashboardRoutes, adminDesignRoutes, admin_faq_default as adminFAQRoutes, adminLogsRoutes, adminMediaRoutes, adminPluginRoutes, adminSettingsRoutes, admin_testimonials_default as adminTestimonialsRoutes, userRoutes as adminUsersRoutes, api_content_crud_default as apiContentCrudRoutes, api_media_default as apiMediaRoutes, api_default as apiRoutes, api_system_default as apiSystemRoutes, auth_default as authRoutes } from './chunk-JB2NUJJ5.js';
1
+ export { ROUTES_INFO, admin_api_default as adminApiRoutes, adminCheckboxRoutes, admin_code_examples_default as adminCodeExamplesRoutes, adminCollectionsRoutes, admin_content_default as adminContentRoutes, router as adminDashboardRoutes, adminDesignRoutes, admin_faq_default as adminFAQRoutes, adminLogsRoutes, adminMediaRoutes, adminPluginRoutes, adminSettingsRoutes, admin_testimonials_default as adminTestimonialsRoutes, userRoutes as adminUsersRoutes, api_content_crud_default as apiContentCrudRoutes, api_media_default as apiMediaRoutes, api_default as apiRoutes, api_system_default as apiSystemRoutes, auth_default as authRoutes } from './chunk-ABYMIXRN.js';
2
2
  import './chunk-6FR25MPC.js';
3
- import './chunk-O7LMFJMZ.js';
4
- import './chunk-4MBTSUI6.js';
5
- import './chunk-YHLLVUJC.js';
6
- import './chunk-YURRY22X.js';
3
+ import './chunk-OKPDQO2Y.js';
4
+ import './chunk-COBUPOMD.js';
5
+ import './chunk-VEC5MLT3.js';
6
+ import './chunk-WRRLB6KG.js';
7
7
  import './chunk-FICTAGD4.js';
8
8
  import './chunk-V4OQ3NZ2.js';
9
9
  //# sourceMappingURL=routes.js.map
package/dist/services.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkDOR2IU73_cjs = require('./chunk-DOR2IU73.cjs');
4
- var chunkYGVWY6KO_cjs = require('./chunk-YGVWY6KO.cjs');
4
+ var chunkNBDPIRQS_cjs = require('./chunk-NBDPIRQS.cjs');
5
5
  require('./chunk-IGJUBJBW.cjs');
6
6
 
7
7
 
@@ -36,55 +36,59 @@ Object.defineProperty(exports, "initLogger", {
36
36
  });
37
37
  Object.defineProperty(exports, "MigrationService", {
38
38
  enumerable: true,
39
- get: function () { return chunkYGVWY6KO_cjs.MigrationService; }
39
+ get: function () { return chunkNBDPIRQS_cjs.MigrationService; }
40
40
  });
41
41
  Object.defineProperty(exports, "PluginBootstrapService", {
42
42
  enumerable: true,
43
- get: function () { return chunkYGVWY6KO_cjs.PluginBootstrapService; }
43
+ get: function () { return chunkNBDPIRQS_cjs.PluginBootstrapService; }
44
44
  });
45
45
  Object.defineProperty(exports, "PluginService", {
46
46
  enumerable: true,
47
- get: function () { return chunkYGVWY6KO_cjs.PluginService; }
47
+ get: function () { return chunkNBDPIRQS_cjs.PluginService; }
48
48
  });
49
49
  Object.defineProperty(exports, "cleanupRemovedCollections", {
50
50
  enumerable: true,
51
- get: function () { return chunkYGVWY6KO_cjs.cleanupRemovedCollections; }
51
+ get: function () { return chunkNBDPIRQS_cjs.cleanupRemovedCollections; }
52
52
  });
53
53
  Object.defineProperty(exports, "fullCollectionSync", {
54
54
  enumerable: true,
55
- get: function () { return chunkYGVWY6KO_cjs.fullCollectionSync; }
55
+ get: function () { return chunkNBDPIRQS_cjs.fullCollectionSync; }
56
56
  });
57
57
  Object.defineProperty(exports, "getAvailableCollectionNames", {
58
58
  enumerable: true,
59
- get: function () { return chunkYGVWY6KO_cjs.getAvailableCollectionNames; }
59
+ get: function () { return chunkNBDPIRQS_cjs.getAvailableCollectionNames; }
60
60
  });
61
61
  Object.defineProperty(exports, "getManagedCollections", {
62
62
  enumerable: true,
63
- get: function () { return chunkYGVWY6KO_cjs.getManagedCollections; }
63
+ get: function () { return chunkNBDPIRQS_cjs.getManagedCollections; }
64
64
  });
65
65
  Object.defineProperty(exports, "isCollectionManaged", {
66
66
  enumerable: true,
67
- get: function () { return chunkYGVWY6KO_cjs.isCollectionManaged; }
67
+ get: function () { return chunkNBDPIRQS_cjs.isCollectionManaged; }
68
68
  });
69
69
  Object.defineProperty(exports, "loadCollectionConfig", {
70
70
  enumerable: true,
71
- get: function () { return chunkYGVWY6KO_cjs.loadCollectionConfig; }
71
+ get: function () { return chunkNBDPIRQS_cjs.loadCollectionConfig; }
72
72
  });
73
73
  Object.defineProperty(exports, "loadCollectionConfigs", {
74
74
  enumerable: true,
75
- get: function () { return chunkYGVWY6KO_cjs.loadCollectionConfigs; }
75
+ get: function () { return chunkNBDPIRQS_cjs.loadCollectionConfigs; }
76
+ });
77
+ Object.defineProperty(exports, "registerCollections", {
78
+ enumerable: true,
79
+ get: function () { return chunkNBDPIRQS_cjs.registerCollections; }
76
80
  });
77
81
  Object.defineProperty(exports, "syncCollection", {
78
82
  enumerable: true,
79
- get: function () { return chunkYGVWY6KO_cjs.syncCollection; }
83
+ get: function () { return chunkNBDPIRQS_cjs.syncCollection; }
80
84
  });
81
85
  Object.defineProperty(exports, "syncCollections", {
82
86
  enumerable: true,
83
- get: function () { return chunkYGVWY6KO_cjs.syncCollections; }
87
+ get: function () { return chunkNBDPIRQS_cjs.syncCollections; }
84
88
  });
85
89
  Object.defineProperty(exports, "validateCollectionConfig", {
86
90
  enumerable: true,
87
- get: function () { return chunkYGVWY6KO_cjs.validateCollectionConfig; }
91
+ get: function () { return chunkNBDPIRQS_cjs.validateCollectionConfig; }
88
92
  });
89
93
  //# sourceMappingURL=services.cjs.map
90
94
  //# sourceMappingURL=services.cjs.map
package/dist/services.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { CACHE_CONFIGS, CacheService, Logger, SettingsService, getCacheService, getLogger, initLogger } from './chunk-6FR25MPC.js';
2
- export { MigrationService, PluginBootstrapService, PluginService, cleanupRemovedCollections, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, syncCollection, syncCollections, validateCollectionConfig } from './chunk-4MBTSUI6.js';
2
+ export { MigrationService, PluginBootstrapService, PluginService, cleanupRemovedCollections, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, registerCollections, syncCollection, syncCollections, validateCollectionConfig } from './chunk-COBUPOMD.js';
3
3
  import './chunk-V4OQ3NZ2.js';
4
4
  //# sourceMappingURL=services.js.map
5
5
  //# sourceMappingURL=services.js.map
@@ -1,74 +1,74 @@
1
1
  'use strict';
2
2
 
3
- var chunkKHNSPJ6X_cjs = require('./chunk-KHNSPJ6X.cjs');
4
- var chunk7XEESVSX_cjs = require('./chunk-7XEESVSX.cjs');
3
+ var chunkMABBKINE_cjs = require('./chunk-MABBKINE.cjs');
4
+ var chunkEYMHWJTW_cjs = require('./chunk-EYMHWJTW.cjs');
5
5
  require('./chunk-IGJUBJBW.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "renderFilterBar", {
10
10
  enumerable: true,
11
- get: function () { return chunkKHNSPJ6X_cjs.renderFilterBar; }
11
+ get: function () { return chunkMABBKINE_cjs.renderFilterBar; }
12
12
  });
13
13
  Object.defineProperty(exports, "getConfirmationDialogScript", {
14
14
  enumerable: true,
15
- get: function () { return chunk7XEESVSX_cjs.getConfirmationDialogScript; }
15
+ get: function () { return chunkEYMHWJTW_cjs.getConfirmationDialogScript; }
16
16
  });
17
17
  Object.defineProperty(exports, "renderAdminLayout", {
18
18
  enumerable: true,
19
- get: function () { return chunk7XEESVSX_cjs.renderAdminLayout; }
19
+ get: function () { return chunkEYMHWJTW_cjs.renderAdminLayout; }
20
20
  });
21
21
  Object.defineProperty(exports, "renderAdminLayoutCatalyst", {
22
22
  enumerable: true,
23
- get: function () { return chunk7XEESVSX_cjs.renderAdminLayoutCatalyst; }
23
+ get: function () { return chunkEYMHWJTW_cjs.renderAdminLayoutCatalyst; }
24
24
  });
25
25
  Object.defineProperty(exports, "renderAlert", {
26
26
  enumerable: true,
27
- get: function () { return chunk7XEESVSX_cjs.renderAlert; }
27
+ get: function () { return chunkEYMHWJTW_cjs.renderAlert; }
28
28
  });
29
29
  Object.defineProperty(exports, "renderCheckboxPage", {
30
30
  enumerable: true,
31
- get: function () { return chunk7XEESVSX_cjs.renderCheckboxPage; }
31
+ get: function () { return chunkEYMHWJTW_cjs.renderCheckboxPage; }
32
32
  });
33
33
  Object.defineProperty(exports, "renderCodeExamplesList", {
34
34
  enumerable: true,
35
- get: function () { return chunk7XEESVSX_cjs.renderCodeExamplesList; }
35
+ get: function () { return chunkEYMHWJTW_cjs.renderCodeExamplesList; }
36
36
  });
37
37
  Object.defineProperty(exports, "renderConfirmationDialog", {
38
38
  enumerable: true,
39
- get: function () { return chunk7XEESVSX_cjs.renderConfirmationDialog; }
39
+ get: function () { return chunkEYMHWJTW_cjs.renderConfirmationDialog; }
40
40
  });
41
41
  Object.defineProperty(exports, "renderDesignPage", {
42
42
  enumerable: true,
43
- get: function () { return chunk7XEESVSX_cjs.renderDesignPage; }
43
+ get: function () { return chunkEYMHWJTW_cjs.renderDesignPage; }
44
44
  });
45
45
  Object.defineProperty(exports, "renderFAQList", {
46
46
  enumerable: true,
47
- get: function () { return chunk7XEESVSX_cjs.renderFAQList; }
47
+ get: function () { return chunkEYMHWJTW_cjs.renderFAQList; }
48
48
  });
49
49
  Object.defineProperty(exports, "renderForm", {
50
50
  enumerable: true,
51
- get: function () { return chunk7XEESVSX_cjs.renderForm; }
51
+ get: function () { return chunkEYMHWJTW_cjs.renderForm; }
52
52
  });
53
53
  Object.defineProperty(exports, "renderFormField", {
54
54
  enumerable: true,
55
- get: function () { return chunk7XEESVSX_cjs.renderFormField; }
55
+ get: function () { return chunkEYMHWJTW_cjs.renderFormField; }
56
56
  });
57
57
  Object.defineProperty(exports, "renderLogo", {
58
58
  enumerable: true,
59
- get: function () { return chunk7XEESVSX_cjs.renderLogo; }
59
+ get: function () { return chunkEYMHWJTW_cjs.renderLogo; }
60
60
  });
61
61
  Object.defineProperty(exports, "renderPagination", {
62
62
  enumerable: true,
63
- get: function () { return chunk7XEESVSX_cjs.renderPagination; }
63
+ get: function () { return chunkEYMHWJTW_cjs.renderPagination; }
64
64
  });
65
65
  Object.defineProperty(exports, "renderTable", {
66
66
  enumerable: true,
67
- get: function () { return chunk7XEESVSX_cjs.renderTable; }
67
+ get: function () { return chunkEYMHWJTW_cjs.renderTable; }
68
68
  });
69
69
  Object.defineProperty(exports, "renderTestimonialsList", {
70
70
  enumerable: true,
71
- get: function () { return chunk7XEESVSX_cjs.renderTestimonialsList; }
71
+ get: function () { return chunkEYMHWJTW_cjs.renderTestimonialsList; }
72
72
  });
73
73
  //# sourceMappingURL=templates.cjs.map
74
74
  //# sourceMappingURL=templates.cjs.map
package/dist/templates.js CHANGED
@@ -1,5 +1,5 @@
1
- export { renderFilterBar } from './chunk-LS5CMDNL.js';
2
- export { getConfirmationDialogScript, renderAdminLayout, renderAdminLayoutCatalyst, renderAlert, renderCheckboxPage, renderCodeExamplesList, renderConfirmationDialog, renderDesignPage, renderFAQList, renderForm, renderFormField, renderLogo, renderPagination, renderTable, renderTestimonialsList } from './chunk-YHLLVUJC.js';
1
+ export { renderFilterBar } from './chunk-OPGDMS7L.js';
2
+ export { getConfirmationDialogScript, renderAdminLayout, renderAdminLayoutCatalyst, renderAlert, renderCheckboxPage, renderCodeExamplesList, renderConfirmationDialog, renderDesignPage, renderFAQList, renderForm, renderFormField, renderLogo, renderPagination, renderTable, renderTestimonialsList } from './chunk-VEC5MLT3.js';
3
3
  import './chunk-V4OQ3NZ2.js';
4
4
  //# sourceMappingURL=templates.js.map
5
5
  //# sourceMappingURL=templates.js.map
package/dist/utils.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkRSFXIU6A_cjs = require('./chunk-RSFXIU6A.cjs');
3
+ var chunkTMIRVVQ7_cjs = require('./chunk-TMIRVVQ7.cjs');
4
4
  var chunkRCQ2HIQD_cjs = require('./chunk-RCQ2HIQD.cjs');
5
5
  require('./chunk-IGJUBJBW.cjs');
6
6
 
@@ -8,43 +8,43 @@ require('./chunk-IGJUBJBW.cjs');
8
8
 
9
9
  Object.defineProperty(exports, "QueryFilterBuilder", {
10
10
  enumerable: true,
11
- get: function () { return chunkRSFXIU6A_cjs.QueryFilterBuilder; }
11
+ get: function () { return chunkTMIRVVQ7_cjs.QueryFilterBuilder; }
12
12
  });
13
13
  Object.defineProperty(exports, "SONICJS_VERSION", {
14
14
  enumerable: true,
15
- get: function () { return chunkRSFXIU6A_cjs.SONICJS_VERSION; }
15
+ get: function () { return chunkTMIRVVQ7_cjs.SONICJS_VERSION; }
16
16
  });
17
17
  Object.defineProperty(exports, "TemplateRenderer", {
18
18
  enumerable: true,
19
- get: function () { return chunkRSFXIU6A_cjs.TemplateRenderer; }
19
+ get: function () { return chunkTMIRVVQ7_cjs.TemplateRenderer; }
20
20
  });
21
21
  Object.defineProperty(exports, "buildQuery", {
22
22
  enumerable: true,
23
- get: function () { return chunkRSFXIU6A_cjs.buildQuery; }
23
+ get: function () { return chunkTMIRVVQ7_cjs.buildQuery; }
24
24
  });
25
25
  Object.defineProperty(exports, "escapeHtml", {
26
26
  enumerable: true,
27
- get: function () { return chunkRSFXIU6A_cjs.escapeHtml; }
27
+ get: function () { return chunkTMIRVVQ7_cjs.escapeHtml; }
28
28
  });
29
29
  Object.defineProperty(exports, "getCoreVersion", {
30
30
  enumerable: true,
31
- get: function () { return chunkRSFXIU6A_cjs.getCoreVersion; }
31
+ get: function () { return chunkTMIRVVQ7_cjs.getCoreVersion; }
32
32
  });
33
33
  Object.defineProperty(exports, "renderTemplate", {
34
34
  enumerable: true,
35
- get: function () { return chunkRSFXIU6A_cjs.renderTemplate; }
35
+ get: function () { return chunkTMIRVVQ7_cjs.renderTemplate; }
36
36
  });
37
37
  Object.defineProperty(exports, "sanitizeInput", {
38
38
  enumerable: true,
39
- get: function () { return chunkRSFXIU6A_cjs.sanitizeInput; }
39
+ get: function () { return chunkTMIRVVQ7_cjs.sanitizeInput; }
40
40
  });
41
41
  Object.defineProperty(exports, "sanitizeObject", {
42
42
  enumerable: true,
43
- get: function () { return chunkRSFXIU6A_cjs.sanitizeObject; }
43
+ get: function () { return chunkTMIRVVQ7_cjs.sanitizeObject; }
44
44
  });
45
45
  Object.defineProperty(exports, "templateRenderer", {
46
46
  enumerable: true,
47
- get: function () { return chunkRSFXIU6A_cjs.templateRenderer; }
47
+ get: function () { return chunkTMIRVVQ7_cjs.templateRenderer; }
48
48
  });
49
49
  Object.defineProperty(exports, "metricsTracker", {
50
50
  enumerable: true,
package/dist/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, escapeHtml, getCoreVersion, renderTemplate, sanitizeInput, sanitizeObject, templateRenderer } from './chunk-YURRY22X.js';
1
+ export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, escapeHtml, getCoreVersion, renderTemplate, sanitizeInput, sanitizeObject, templateRenderer } from './chunk-WRRLB6KG.js';
2
2
  export { metricsTracker } from './chunk-FICTAGD4.js';
3
3
  import './chunk-V4OQ3NZ2.js';
4
4
  //# sourceMappingURL=utils.js.map
@@ -0,0 +1,15 @@
1
+ -- Migration: Remove blog_posts from database-managed collections
2
+ -- Description: Remove blog-posts-collection from the database so it can be managed by code-based collection
3
+ -- Created: 2025-11-04
4
+
5
+ -- Delete content associated with blog-posts-collection
6
+ DELETE FROM content WHERE collection_id = 'blog-posts-collection';
7
+
8
+ -- Delete content fields for blog-posts-collection
9
+ DELETE FROM content_fields WHERE collection_id = 'blog-posts-collection';
10
+
11
+ -- Delete the blog-posts collection itself
12
+ DELETE FROM collections WHERE id = 'blog-posts-collection';
13
+
14
+ -- The blog-posts collection will now be managed by the code-based collection
15
+ -- in src/collections/blog-posts.collection.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonicjs-cms/core",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Core framework for SonicJS headless CMS - Edge-first, TypeScript-native CMS built for Cloudflare Workers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -89,7 +89,7 @@
89
89
  "@cloudflare/workers-types": "^4.0.0",
90
90
  "hono": "^4.0.0",
91
91
  "drizzle-orm": "^0.44.0",
92
- "zod": "^3.0.0"
92
+ "zod": "^3.0.0 || ^4.0.0"
93
93
  },
94
94
  "dependencies": {
95
95
  "drizzle-zod": "^0.8.3",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/middleware/bootstrap.ts","../src/middleware/auth.ts","../src/middleware/metrics.ts","../src/middleware/index.ts"],"names":["MigrationService","syncCollections","PluginBootstrapService","sign","verify","getCookie","metricsTracker"],"mappings":"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","file":"chunk-3R7EQNGO.cjs","sourcesContent":["import { Context, Next } from \"hono\";\nimport { syncCollections } from \"../services/collection-sync\";\nimport { MigrationService } from \"../services/migrations\";\nimport { PluginBootstrapService } from \"../services/plugin-bootstrap\";\n\ntype Bindings = {\n DB: D1Database;\n KV: KVNamespace;\n};\n\n// Track if bootstrap has been run in this worker instance\nlet bootstrapComplete = false;\n\n/**\n * Bootstrap middleware that ensures system initialization\n * Runs once per worker instance\n */\nexport function bootstrapMiddleware() {\n return async (c: Context<{ Bindings: Bindings }>, next: Next) => {\n // Skip if already bootstrapped in this worker instance\n if (bootstrapComplete) {\n return next();\n }\n\n // Skip bootstrap for static assets and health checks\n const path = c.req.path;\n if (\n path.startsWith(\"/images/\") ||\n path.startsWith(\"/assets/\") ||\n path === \"/health\" ||\n path.endsWith(\".js\") ||\n path.endsWith(\".css\") ||\n path.endsWith(\".png\") ||\n path.endsWith(\".jpg\") ||\n path.endsWith(\".ico\")\n ) {\n return next();\n }\n\n try {\n console.log(\"[Bootstrap] Starting system initialization...\");\n\n // 1. Run database migrations first\n console.log(\"[Bootstrap] Running database migrations...\");\n const migrationService = new MigrationService(c.env.DB);\n await migrationService.runPendingMigrations();\n\n // 2. Sync collection configurations\n console.log(\"[Bootstrap] Syncing collection configurations...\");\n try {\n await syncCollections(c.env.DB);\n } catch (error) {\n console.error(\"[Bootstrap] Error syncing collections:\", error);\n // Continue bootstrap even if collection sync fails\n }\n\n // 3. Bootstrap core plugins\n console.log(\"[Bootstrap] Bootstrapping core plugins...\");\n const bootstrapService = new PluginBootstrapService(c.env.DB);\n\n // Check if bootstrap is needed\n const needsBootstrap = await bootstrapService.isBootstrapNeeded();\n if (needsBootstrap) {\n await bootstrapService.bootstrapCorePlugins();\n }\n\n // Mark bootstrap as complete for this worker instance\n bootstrapComplete = true;\n console.log(\"[Bootstrap] System initialization completed\");\n } catch (error) {\n console.error(\"[Bootstrap] Error during system initialization:\", error);\n // Don't prevent the app from starting, but log the error\n }\n\n return next();\n };\n}\n\n/**\n * Reset bootstrap flag (useful for testing)\n */\nexport function resetBootstrap() {\n bootstrapComplete = false;\n}\n","import { sign, verify } from 'hono/jwt'\nimport { Context, Next } from 'hono'\nimport { getCookie } from 'hono/cookie'\n\ntype JWTPayload = {\n userId: string\n email: string\n role: string\n exp: number\n iat: number\n}\n\n// JWT secret - in production this should come from environment variables\nconst JWT_SECRET = 'your-super-secret-jwt-key-change-in-production'\n\nexport class AuthManager {\n static async generateToken(userId: string, email: string, role: string): Promise<string> {\n const payload: JWTPayload = {\n userId,\n email,\n role,\n exp: Math.floor(Date.now() / 1000) + (60 * 60 * 24), // 24 hours\n iat: Math.floor(Date.now() / 1000)\n }\n \n return await sign(payload, JWT_SECRET)\n }\n\n static async verifyToken(token: string): Promise<JWTPayload | null> {\n try {\n const payload = await verify(token, JWT_SECRET) as JWTPayload\n \n // Check if token is expired\n if (payload.exp < Math.floor(Date.now() / 1000)) {\n return null\n }\n \n return payload\n } catch (error) {\n console.error('Token verification failed:', error)\n return null\n }\n }\n\n static async hashPassword(password: string): Promise<string> {\n // In Cloudflare Workers, we'll use Web Crypto API\n const encoder = new TextEncoder()\n const data = encoder.encode(password + 'salt-change-in-production')\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')\n }\n\n static async verifyPassword(password: string, hash: string): Promise<boolean> {\n const passwordHash = await this.hashPassword(password)\n return passwordHash === hash\n }\n}\n\n// Middleware to require authentication\nexport const requireAuth = () => {\n return async (c: Context, next: Next) => {\n try {\n // Try to get token from Authorization header\n let token = c.req.header('Authorization')?.replace('Bearer ', '')\n\n // If no header token, try cookie\n if (!token) {\n token = getCookie(c, 'auth_token')\n }\n\n if (!token) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Please login to access the admin area')\n }\n return c.json({ error: 'Authentication required' }, 401)\n }\n\n // Try to get cached token verification from KV\n const kv = c.env?.KV\n let payload: JWTPayload | null = null\n\n if (kv) {\n const cacheKey = `auth:${token.substring(0, 20)}` // Use token prefix as key\n const cached = await kv.get(cacheKey, 'json')\n if (cached) {\n payload = cached as JWTPayload\n }\n }\n\n // If not cached, verify token\n if (!payload) {\n payload = await AuthManager.verifyToken(token)\n\n // Cache the verified payload for 5 minutes\n if (payload && kv) {\n const cacheKey = `auth:${token.substring(0, 20)}`\n await kv.put(cacheKey, JSON.stringify(payload), { expirationTtl: 300 })\n }\n }\n\n if (!payload) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Your session has expired, please login again')\n }\n return c.json({ error: 'Invalid or expired token' }, 401)\n }\n\n // Add user info to context\n c.set('user', payload)\n\n return await next()\n } catch (error) {\n console.error('Auth middleware error:', error)\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Authentication failed, please login again')\n }\n return c.json({ error: 'Authentication failed' }, 401)\n }\n }\n}\n\n// Middleware to require specific role\nexport const requireRole = (requiredRole: string | string[]) => {\n return async (c: Context, next: Next) => {\n const user = c.get('user') as JWTPayload\n \n if (!user) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Please login to access the admin area')\n }\n return c.json({ error: 'Authentication required' }, 401)\n }\n \n const roles = Array.isArray(requiredRole) ? requiredRole : [requiredRole]\n \n if (!roles.includes(user.role)) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=You do not have permission to access this area')\n }\n return c.json({ error: 'Insufficient permissions' }, 403)\n }\n \n return await next()\n }\n}\n\n// Optional auth middleware (doesn't block if no token)\nexport const optionalAuth = () => {\n return async (c: Context, next: Next) => {\n try {\n let token = c.req.header('Authorization')?.replace('Bearer ', '')\n \n if (!token) {\n token = getCookie(c, 'auth_token')\n }\n \n if (token) {\n const payload = await AuthManager.verifyToken(token)\n if (payload) {\n c.set('user', payload)\n }\n }\n \n return await next()\n } catch (error) {\n // Don't block on auth errors in optional auth\n console.error('Optional auth error:', error)\n return await next()\n }\n }\n}","import { MiddlewareHandler } from 'hono'\nimport { metricsTracker } from '../utils/metrics'\n\n/**\n * Middleware to track all HTTP requests for real-time analytics\n * Excludes the metrics endpoint itself to avoid inflating the count\n */\nexport const metricsMiddleware = (): MiddlewareHandler => {\n return async (c, next) => {\n const path = new URL(c.req.url).pathname\n\n // Don't track the metrics endpoint itself to avoid self-inflating counts\n if (path !== '/admin/dashboard/api/metrics') {\n metricsTracker.recordRequest()\n }\n\n // Continue with the request\n await next()\n }\n}\n","/**\n * Middleware Module Exports\n *\n * Request processing middleware for SonicJS\n *\n * Note: Most middleware is currently in the monolith and will be migrated later.\n * For now, we only export the bootstrap middleware which is used for system initialization.\n */\n\n// Bootstrap middleware\nexport { bootstrapMiddleware } from './bootstrap'\n\n// Auth middleware\nexport { AuthManager, requireAuth, requireRole, optionalAuth } from './auth'\n\n// Metrics middleware\nexport { metricsMiddleware } from './metrics'\n\n// Re-export types and functions that are referenced but implemented in monolith\n// These are placeholder exports to maintain API compatibility\nexport type Permission = string\nexport type UserPermissions = {\n userId: string\n permissions: Permission[]\n}\n\n// Middleware stubs - these return pass-through middleware that call next()\nexport const loggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const detailedLoggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const securityLoggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const performanceLoggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const cacheHeaders: any = () => async (_c: any, next: any) => await next()\nexport const compressionMiddleware: any = async (_c: any, next: any) => await next()\nexport const securityHeaders: any = () => async (_c: any, next: any) => await next()\n\n// Other stubs\nexport const PermissionManager: any = {}\nexport const requirePermission: any = () => async (_c: any, next: any) => await next()\nexport const requireAnyPermission: any = () => async (_c: any, next: any) => await next()\nexport const logActivity: any = () => {}\nexport const requireActivePlugin: any = () => async (_c: any, next: any) => await next()\nexport const requireActivePlugins: any = () => async (_c: any, next: any) => await next()\nexport const getActivePlugins: any = () => []\nexport const isPluginActive: any = () => false\n"]}