@sonicjs-cms/core 2.0.4 → 2.0.7

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 (57) hide show
  1. package/README.md +16 -0
  2. package/dist/{chunk-4BJGEGX5.cjs → chunk-3R7EQNGO.cjs} +19 -32
  3. package/dist/chunk-3R7EQNGO.cjs.map +1 -0
  4. package/dist/{chunk-CDBVZEWR.js → chunk-4MBTSUI6.js} +35 -3
  5. package/dist/chunk-4MBTSUI6.js.map +1 -0
  6. package/dist/{chunk-LH4Z7QID.js → chunk-6FR25MPC.js} +111 -3
  7. package/dist/chunk-6FR25MPC.js.map +1 -0
  8. package/dist/{chunk-3SPQ3J4N.cjs → chunk-7XEESVSX.cjs} +73 -2
  9. package/dist/chunk-7XEESVSX.cjs.map +1 -0
  10. package/dist/{chunk-3NVJ6W27.cjs → chunk-DOR2IU73.cjs} +111 -2
  11. package/dist/chunk-DOR2IU73.cjs.map +1 -0
  12. package/dist/{chunk-CQ2VMJQO.js → chunk-JB2NUJJ5.js} +253 -85
  13. package/dist/chunk-JB2NUJJ5.js.map +1 -0
  14. package/dist/{chunk-5APKEYFK.cjs → chunk-KHNSPJ6X.cjs} +5 -5
  15. package/dist/{chunk-5APKEYFK.cjs.map → chunk-KHNSPJ6X.cjs.map} +1 -1
  16. package/dist/{chunk-RYQCT2IV.js → chunk-LS5CMDNL.js} +3 -3
  17. package/dist/{chunk-RYQCT2IV.js.map → chunk-LS5CMDNL.js.map} +1 -1
  18. package/dist/{chunk-M6FPVS7E.js → chunk-O7LMFJMZ.js} +16 -29
  19. package/dist/chunk-O7LMFJMZ.js.map +1 -0
  20. package/dist/{chunk-RZW752PE.cjs → chunk-OOV64BK4.cjs} +429 -261
  21. package/dist/chunk-OOV64BK4.cjs.map +1 -0
  22. package/dist/{chunk-BRPONFW6.cjs → chunk-RSFXIU6A.cjs} +14 -14
  23. package/dist/{chunk-BRPONFW6.cjs.map → chunk-RSFXIU6A.cjs.map} +1 -1
  24. package/dist/{chunk-LEG4KNFP.cjs → chunk-YGVWY6KO.cjs} +35 -3
  25. package/dist/chunk-YGVWY6KO.cjs.map +1 -0
  26. package/dist/{chunk-3LZ6TLPC.js → chunk-YHLLVUJC.js} +73 -2
  27. package/dist/chunk-YHLLVUJC.js.map +1 -0
  28. package/dist/{chunk-WKGONLHK.js → chunk-YURRY22X.js} +14 -14
  29. package/dist/{chunk-WKGONLHK.js.map → chunk-YURRY22X.js.map} +1 -1
  30. package/dist/index.cjs +886 -137
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.js +761 -11
  33. package/dist/index.js.map +1 -1
  34. package/dist/middleware.cjs +23 -23
  35. package/dist/middleware.js +2 -2
  36. package/dist/routes.cjs +26 -26
  37. package/dist/routes.js +6 -6
  38. package/dist/services.cjs +25 -21
  39. package/dist/services.js +2 -2
  40. package/dist/templates.cjs +18 -18
  41. package/dist/templates.js +2 -2
  42. package/dist/utils.cjs +11 -11
  43. package/dist/utils.js +1 -1
  44. package/migrations/006_plugin_system.sql +2 -2
  45. package/migrations/011_config_managed_collections.sql +1 -0
  46. package/migrations/018_settings_table.sql +23 -0
  47. package/package.json +12 -12
  48. package/dist/chunk-3LZ6TLPC.js.map +0 -1
  49. package/dist/chunk-3NVJ6W27.cjs.map +0 -1
  50. package/dist/chunk-3SPQ3J4N.cjs.map +0 -1
  51. package/dist/chunk-4BJGEGX5.cjs.map +0 -1
  52. package/dist/chunk-CDBVZEWR.js.map +0 -1
  53. package/dist/chunk-CQ2VMJQO.js.map +0 -1
  54. package/dist/chunk-LEG4KNFP.cjs.map +0 -1
  55. package/dist/chunk-LH4Z7QID.js.map +0 -1
  56. package/dist/chunk-M6FPVS7E.js.map +0 -1
  57. package/dist/chunk-RZW752PE.cjs.map +0 -1
@@ -1,74 +1,74 @@
1
1
  'use strict';
2
2
 
3
- var chunk5APKEYFK_cjs = require('./chunk-5APKEYFK.cjs');
4
- var chunk3SPQ3J4N_cjs = require('./chunk-3SPQ3J4N.cjs');
3
+ var chunkKHNSPJ6X_cjs = require('./chunk-KHNSPJ6X.cjs');
4
+ var chunk7XEESVSX_cjs = require('./chunk-7XEESVSX.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 chunk5APKEYFK_cjs.renderFilterBar; }
11
+ get: function () { return chunkKHNSPJ6X_cjs.renderFilterBar; }
12
12
  });
13
13
  Object.defineProperty(exports, "getConfirmationDialogScript", {
14
14
  enumerable: true,
15
- get: function () { return chunk3SPQ3J4N_cjs.getConfirmationDialogScript; }
15
+ get: function () { return chunk7XEESVSX_cjs.getConfirmationDialogScript; }
16
16
  });
17
17
  Object.defineProperty(exports, "renderAdminLayout", {
18
18
  enumerable: true,
19
- get: function () { return chunk3SPQ3J4N_cjs.renderAdminLayout; }
19
+ get: function () { return chunk7XEESVSX_cjs.renderAdminLayout; }
20
20
  });
21
21
  Object.defineProperty(exports, "renderAdminLayoutCatalyst", {
22
22
  enumerable: true,
23
- get: function () { return chunk3SPQ3J4N_cjs.renderAdminLayoutCatalyst; }
23
+ get: function () { return chunk7XEESVSX_cjs.renderAdminLayoutCatalyst; }
24
24
  });
25
25
  Object.defineProperty(exports, "renderAlert", {
26
26
  enumerable: true,
27
- get: function () { return chunk3SPQ3J4N_cjs.renderAlert; }
27
+ get: function () { return chunk7XEESVSX_cjs.renderAlert; }
28
28
  });
29
29
  Object.defineProperty(exports, "renderCheckboxPage", {
30
30
  enumerable: true,
31
- get: function () { return chunk3SPQ3J4N_cjs.renderCheckboxPage; }
31
+ get: function () { return chunk7XEESVSX_cjs.renderCheckboxPage; }
32
32
  });
33
33
  Object.defineProperty(exports, "renderCodeExamplesList", {
34
34
  enumerable: true,
35
- get: function () { return chunk3SPQ3J4N_cjs.renderCodeExamplesList; }
35
+ get: function () { return chunk7XEESVSX_cjs.renderCodeExamplesList; }
36
36
  });
37
37
  Object.defineProperty(exports, "renderConfirmationDialog", {
38
38
  enumerable: true,
39
- get: function () { return chunk3SPQ3J4N_cjs.renderConfirmationDialog; }
39
+ get: function () { return chunk7XEESVSX_cjs.renderConfirmationDialog; }
40
40
  });
41
41
  Object.defineProperty(exports, "renderDesignPage", {
42
42
  enumerable: true,
43
- get: function () { return chunk3SPQ3J4N_cjs.renderDesignPage; }
43
+ get: function () { return chunk7XEESVSX_cjs.renderDesignPage; }
44
44
  });
45
45
  Object.defineProperty(exports, "renderFAQList", {
46
46
  enumerable: true,
47
- get: function () { return chunk3SPQ3J4N_cjs.renderFAQList; }
47
+ get: function () { return chunk7XEESVSX_cjs.renderFAQList; }
48
48
  });
49
49
  Object.defineProperty(exports, "renderForm", {
50
50
  enumerable: true,
51
- get: function () { return chunk3SPQ3J4N_cjs.renderForm; }
51
+ get: function () { return chunk7XEESVSX_cjs.renderForm; }
52
52
  });
53
53
  Object.defineProperty(exports, "renderFormField", {
54
54
  enumerable: true,
55
- get: function () { return chunk3SPQ3J4N_cjs.renderFormField; }
55
+ get: function () { return chunk7XEESVSX_cjs.renderFormField; }
56
56
  });
57
57
  Object.defineProperty(exports, "renderLogo", {
58
58
  enumerable: true,
59
- get: function () { return chunk3SPQ3J4N_cjs.renderLogo; }
59
+ get: function () { return chunk7XEESVSX_cjs.renderLogo; }
60
60
  });
61
61
  Object.defineProperty(exports, "renderPagination", {
62
62
  enumerable: true,
63
- get: function () { return chunk3SPQ3J4N_cjs.renderPagination; }
63
+ get: function () { return chunk7XEESVSX_cjs.renderPagination; }
64
64
  });
65
65
  Object.defineProperty(exports, "renderTable", {
66
66
  enumerable: true,
67
- get: function () { return chunk3SPQ3J4N_cjs.renderTable; }
67
+ get: function () { return chunk7XEESVSX_cjs.renderTable; }
68
68
  });
69
69
  Object.defineProperty(exports, "renderTestimonialsList", {
70
70
  enumerable: true,
71
- get: function () { return chunk3SPQ3J4N_cjs.renderTestimonialsList; }
71
+ get: function () { return chunk7XEESVSX_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-RYQCT2IV.js';
2
- export { getConfirmationDialogScript, renderAdminLayout, renderAdminLayoutCatalyst, renderAlert, renderCheckboxPage, renderCodeExamplesList, renderConfirmationDialog, renderDesignPage, renderFAQList, renderForm, renderFormField, renderLogo, renderPagination, renderTable, renderTestimonialsList } from './chunk-3LZ6TLPC.js';
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';
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 chunkBRPONFW6_cjs = require('./chunk-BRPONFW6.cjs');
3
+ var chunkRSFXIU6A_cjs = require('./chunk-RSFXIU6A.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 chunkBRPONFW6_cjs.QueryFilterBuilder; }
11
+ get: function () { return chunkRSFXIU6A_cjs.QueryFilterBuilder; }
12
12
  });
13
13
  Object.defineProperty(exports, "SONICJS_VERSION", {
14
14
  enumerable: true,
15
- get: function () { return chunkBRPONFW6_cjs.SONICJS_VERSION; }
15
+ get: function () { return chunkRSFXIU6A_cjs.SONICJS_VERSION; }
16
16
  });
17
17
  Object.defineProperty(exports, "TemplateRenderer", {
18
18
  enumerable: true,
19
- get: function () { return chunkBRPONFW6_cjs.TemplateRenderer; }
19
+ get: function () { return chunkRSFXIU6A_cjs.TemplateRenderer; }
20
20
  });
21
21
  Object.defineProperty(exports, "buildQuery", {
22
22
  enumerable: true,
23
- get: function () { return chunkBRPONFW6_cjs.buildQuery; }
23
+ get: function () { return chunkRSFXIU6A_cjs.buildQuery; }
24
24
  });
25
25
  Object.defineProperty(exports, "escapeHtml", {
26
26
  enumerable: true,
27
- get: function () { return chunkBRPONFW6_cjs.escapeHtml; }
27
+ get: function () { return chunkRSFXIU6A_cjs.escapeHtml; }
28
28
  });
29
29
  Object.defineProperty(exports, "getCoreVersion", {
30
30
  enumerable: true,
31
- get: function () { return chunkBRPONFW6_cjs.getCoreVersion; }
31
+ get: function () { return chunkRSFXIU6A_cjs.getCoreVersion; }
32
32
  });
33
33
  Object.defineProperty(exports, "renderTemplate", {
34
34
  enumerable: true,
35
- get: function () { return chunkBRPONFW6_cjs.renderTemplate; }
35
+ get: function () { return chunkRSFXIU6A_cjs.renderTemplate; }
36
36
  });
37
37
  Object.defineProperty(exports, "sanitizeInput", {
38
38
  enumerable: true,
39
- get: function () { return chunkBRPONFW6_cjs.sanitizeInput; }
39
+ get: function () { return chunkRSFXIU6A_cjs.sanitizeInput; }
40
40
  });
41
41
  Object.defineProperty(exports, "sanitizeObject", {
42
42
  enumerable: true,
43
- get: function () { return chunkBRPONFW6_cjs.sanitizeObject; }
43
+ get: function () { return chunkRSFXIU6A_cjs.sanitizeObject; }
44
44
  });
45
45
  Object.defineProperty(exports, "templateRenderer", {
46
46
  enumerable: true,
47
- get: function () { return chunkBRPONFW6_cjs.templateRenderer; }
47
+ get: function () { return chunkRSFXIU6A_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-WKGONLHK.js';
1
+ export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, escapeHtml, getCoreVersion, renderTemplate, sanitizeInput, sanitizeObject, templateRenderer } from './chunk-YURRY22X.js';
2
2
  export { metricsTracker } from './chunk-FICTAGD4.js';
3
3
  import './chunk-V4OQ3NZ2.js';
4
4
  //# sourceMappingURL=utils.js.map
@@ -88,8 +88,8 @@ CREATE INDEX IF NOT EXISTS idx_plugin_activity_plugin ON plugin_activity_log(plu
88
88
  CREATE INDEX IF NOT EXISTS idx_plugin_activity_timestamp ON plugin_activity_log(timestamp);
89
89
 
90
90
  -- Insert core plugins
91
- INSERT INTO plugins (
92
- id, name, display_name, description, version, author, category, icon,
91
+ INSERT OR IGNORE INTO plugins (
92
+ id, name, display_name, description, version, author, category, icon,
93
93
  status, is_core, permissions, installed_at, last_updated
94
94
  ) VALUES
95
95
  (
@@ -5,6 +5,7 @@
5
5
  -- Add 'managed' column to collections table
6
6
  -- This column indicates whether a collection is managed by configuration files (true) or user-created (false)
7
7
  -- Managed collections cannot be edited through the admin UI
8
+ -- Use a safe approach to add the column only if it doesn't exist
8
9
  ALTER TABLE collections ADD COLUMN managed INTEGER DEFAULT 0 NOT NULL;
9
10
 
10
11
  -- Create an index on the managed column for faster queries
@@ -0,0 +1,23 @@
1
+ -- Create settings table for storing application settings
2
+ CREATE TABLE IF NOT EXISTS settings (
3
+ id TEXT PRIMARY KEY,
4
+ category TEXT NOT NULL, -- 'general', 'appearance', 'security', etc.
5
+ key TEXT NOT NULL,
6
+ value TEXT NOT NULL, -- JSON value
7
+ created_at INTEGER NOT NULL,
8
+ updated_at INTEGER NOT NULL,
9
+ UNIQUE(category, key)
10
+ );
11
+
12
+ -- Insert default general settings
13
+ INSERT OR IGNORE INTO settings (id, category, key, value, created_at, updated_at)
14
+ VALUES
15
+ (lower(hex(randomblob(16))), 'general', 'siteName', '"SonicJS AI"', unixepoch() * 1000, unixepoch() * 1000),
16
+ (lower(hex(randomblob(16))), 'general', 'siteDescription', '"A modern headless CMS powered by AI"', unixepoch() * 1000, unixepoch() * 1000),
17
+ (lower(hex(randomblob(16))), 'general', 'timezone', '"UTC"', unixepoch() * 1000, unixepoch() * 1000),
18
+ (lower(hex(randomblob(16))), 'general', 'language', '"en"', unixepoch() * 1000, unixepoch() * 1000),
19
+ (lower(hex(randomblob(16))), 'general', 'maintenanceMode', 'false', unixepoch() * 1000, unixepoch() * 1000);
20
+
21
+ -- Create index for faster lookups
22
+ CREATE INDEX IF NOT EXISTS idx_settings_category ON settings(category);
23
+ CREATE INDEX IF NOT EXISTS idx_settings_category_key ON settings(category, key);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonicjs-cms/core",
3
- "version": "2.0.4",
3
+ "version": "2.0.7",
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",
@@ -92,20 +92,20 @@
92
92
  "zod": "^3.0.0"
93
93
  },
94
94
  "dependencies": {
95
- "drizzle-zod": "^0.8.2",
96
- "marked": "^15.0.12",
95
+ "drizzle-zod": "^0.8.3",
96
+ "marked": "^16.4.1",
97
97
  "highlight.js": "^11.11.1",
98
- "semver": "^7.7.2"
98
+ "semver": "^7.7.3"
99
99
  },
100
100
  "devDependencies": {
101
- "@cloudflare/workers-types": "^4.20250620.0",
102
- "@types/node": "^20.19.1",
103
- "drizzle-orm": "^0.44.2",
104
- "hono": "^4.10.1",
105
- "tsup": "^8.0.0",
106
- "typescript": "^5.8.3",
107
- "vitest": "^2.1.8",
108
- "zod": "^3.25.67"
101
+ "@cloudflare/workers-types": "^4.20251014.0",
102
+ "@types/node": "^24.9.2",
103
+ "drizzle-orm": "^0.44.7",
104
+ "hono": "^4.10.4",
105
+ "tsup": "^8.5.0",
106
+ "typescript": "^5.9.3",
107
+ "vitest": "^4.0.5",
108
+ "zod": "^4.1.12"
109
109
  },
110
110
  "engines": {
111
111
  "node": ">=18.0.0"