@sonicjs-cms/core 2.11.0 → 2.12.1

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 (78) hide show
  1. package/dist/{app-Ozl9agJG.d.cts → app-COElO4Rm.d.cts} +6 -1
  2. package/dist/{app-Ozl9agJG.d.ts → app-COElO4Rm.d.ts} +6 -1
  3. package/dist/{chunk-JTQBNSZX.js → chunk-3V2CQFIR.js} +4176 -3805
  4. package/dist/chunk-3V2CQFIR.js.map +1 -0
  5. package/dist/{chunk-BUU2US2Z.js → chunk-673VROB3.js} +3 -3
  6. package/dist/{chunk-BUU2US2Z.js.map → chunk-673VROB3.js.map} +1 -1
  7. package/dist/{chunk-H55AYIRI.js → chunk-6C6W54QP.js} +17 -3
  8. package/dist/chunk-6C6W54QP.js.map +1 -0
  9. package/dist/{chunk-JJS7JZCH.js → chunk-76TX6XND.js} +4 -2
  10. package/dist/chunk-76TX6XND.js.map +1 -0
  11. package/dist/{chunk-74XCYEI7.js → chunk-BWZBKLOC.js} +3 -3
  12. package/dist/{chunk-74XCYEI7.js.map → chunk-BWZBKLOC.js.map} +1 -1
  13. package/dist/{chunk-ASAEJ4B7.cjs → chunk-DHTCZZUB.cjs} +4376 -4001
  14. package/dist/chunk-DHTCZZUB.cjs.map +1 -0
  15. package/dist/{chunk-NMLFKXWW.js → chunk-H3XXBAMO.js} +15 -2
  16. package/dist/chunk-H3XXBAMO.js.map +1 -0
  17. package/dist/{chunk-LTKV7AE5.cjs → chunk-H4NHRZ6Y.cjs} +4 -2
  18. package/dist/chunk-H4NHRZ6Y.cjs.map +1 -0
  19. package/dist/{chunk-B2ASV5RD.cjs → chunk-HBUFGLEX.cjs} +10 -10
  20. package/dist/{chunk-B2ASV5RD.cjs.map → chunk-HBUFGLEX.cjs.map} +1 -1
  21. package/dist/{chunk-6BVLPACH.cjs → chunk-I6FFGQIT.cjs} +15 -2
  22. package/dist/chunk-I6FFGQIT.cjs.map +1 -0
  23. package/dist/{chunk-QLPFENZ2.cjs → chunk-IKBAY2M2.cjs} +3 -3
  24. package/dist/{chunk-QLPFENZ2.cjs.map → chunk-IKBAY2M2.cjs.map} +1 -1
  25. package/dist/{chunk-LFAQUR7P.cjs → chunk-NZWFCUDA.cjs} +26 -2
  26. package/dist/chunk-NZWFCUDA.cjs.map +1 -0
  27. package/dist/{chunk-3G7XX4UI.cjs → chunk-RBXFXT7H.cjs} +9 -9
  28. package/dist/{chunk-3G7XX4UI.cjs.map → chunk-RBXFXT7H.cjs.map} +1 -1
  29. package/dist/{chunk-VJCLJH3X.js → chunk-TBJY2FF7.js} +26 -2
  30. package/dist/chunk-TBJY2FF7.js.map +1 -0
  31. package/dist/{chunk-GKRGDJGG.js → chunk-UFWE3MEJ.js} +6 -6
  32. package/dist/{chunk-GKRGDJGG.js.map → chunk-UFWE3MEJ.js.map} +1 -1
  33. package/dist/{chunk-DE5YTNCD.cjs → chunk-XK3TKOLQ.cjs} +17 -3
  34. package/dist/chunk-XK3TKOLQ.cjs.map +1 -0
  35. package/dist/index.cjs +1828 -170
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +53 -5
  38. package/dist/index.d.ts +53 -5
  39. package/dist/index.js +1656 -13
  40. package/dist/index.js.map +1 -1
  41. package/dist/middleware.cjs +29 -29
  42. package/dist/middleware.d.cts +1 -1
  43. package/dist/middleware.d.ts +1 -1
  44. package/dist/middleware.js +3 -3
  45. package/dist/migrations-AH2XIFSA.js +4 -0
  46. package/dist/{migrations-UFVJTPVT.js.map → migrations-AH2XIFSA.js.map} +1 -1
  47. package/dist/migrations-MIZFGFNS.cjs +13 -0
  48. package/dist/{migrations-VNYOSUNE.cjs.map → migrations-MIZFGFNS.cjs.map} +1 -1
  49. package/dist/{plugin-bootstrap-DXBAYaqM.d.ts → plugin-bootstrap-CZ1GDum7.d.ts} +802 -1
  50. package/dist/{plugin-bootstrap-DCXpeQVb.d.cts → plugin-bootstrap-DVGLQrcO.d.cts} +802 -1
  51. package/dist/routes.cjs +30 -30
  52. package/dist/routes.d.cts +1 -1
  53. package/dist/routes.d.ts +1 -1
  54. package/dist/routes.js +7 -7
  55. package/dist/services.cjs +39 -39
  56. package/dist/services.d.cts +1 -1
  57. package/dist/services.d.ts +1 -1
  58. package/dist/services.js +3 -3
  59. package/dist/templates.cjs +19 -19
  60. package/dist/templates.js +2 -2
  61. package/dist/utils.cjs +11 -11
  62. package/dist/utils.js +1 -1
  63. package/migrations/032_user_profiles.sql +1 -0
  64. package/migrations/034_security_audit_plugin.sql +27 -0
  65. package/migrations/035_user_profiles_data_column.sql +17 -0
  66. package/package.json +1 -1
  67. package/dist/chunk-6BVLPACH.cjs.map +0 -1
  68. package/dist/chunk-ASAEJ4B7.cjs.map +0 -1
  69. package/dist/chunk-DE5YTNCD.cjs.map +0 -1
  70. package/dist/chunk-H55AYIRI.js.map +0 -1
  71. package/dist/chunk-JJS7JZCH.js.map +0 -1
  72. package/dist/chunk-JTQBNSZX.js.map +0 -1
  73. package/dist/chunk-LFAQUR7P.cjs.map +0 -1
  74. package/dist/chunk-LTKV7AE5.cjs.map +0 -1
  75. package/dist/chunk-NMLFKXWW.js.map +0 -1
  76. package/dist/chunk-VJCLJH3X.js.map +0 -1
  77. package/dist/migrations-UFVJTPVT.js +0 -4
  78. package/dist/migrations-VNYOSUNE.cjs +0 -13
package/dist/routes.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkASAEJ4B7_cjs = require('./chunk-ASAEJ4B7.cjs');
4
- require('./chunk-LFAQUR7P.cjs');
5
- require('./chunk-B2ASV5RD.cjs');
6
- require('./chunk-6BVLPACH.cjs');
7
- require('./chunk-DE5YTNCD.cjs');
8
- require('./chunk-LTKV7AE5.cjs');
3
+ var chunkDHTCZZUB_cjs = require('./chunk-DHTCZZUB.cjs');
4
+ require('./chunk-NZWFCUDA.cjs');
5
+ require('./chunk-HBUFGLEX.cjs');
6
+ require('./chunk-I6FFGQIT.cjs');
7
+ require('./chunk-XK3TKOLQ.cjs');
8
+ require('./chunk-H4NHRZ6Y.cjs');
9
9
  require('./chunk-6FHNRRJ3.cjs');
10
- require('./chunk-QLPFENZ2.cjs');
10
+ require('./chunk-IKBAY2M2.cjs');
11
11
  require('./chunk-P3XDZL6Q.cjs');
12
12
  require('./chunk-RCQ2HIQD.cjs');
13
13
  require('./chunk-MNWKYY5E.cjs');
@@ -17,95 +17,95 @@ require('./chunk-IGJUBJBW.cjs');
17
17
 
18
18
  Object.defineProperty(exports, "ROUTES_INFO", {
19
19
  enumerable: true,
20
- get: function () { return chunkASAEJ4B7_cjs.ROUTES_INFO; }
20
+ get: function () { return chunkDHTCZZUB_cjs.ROUTES_INFO; }
21
21
  });
22
22
  Object.defineProperty(exports, "adminApiReferenceRoutes", {
23
23
  enumerable: true,
24
- get: function () { return chunkASAEJ4B7_cjs.router2; }
24
+ get: function () { return chunkDHTCZZUB_cjs.router2; }
25
25
  });
26
26
  Object.defineProperty(exports, "adminApiRoutes", {
27
27
  enumerable: true,
28
- get: function () { return chunkASAEJ4B7_cjs.admin_api_default; }
28
+ get: function () { return chunkDHTCZZUB_cjs.admin_api_default; }
29
29
  });
30
30
  Object.defineProperty(exports, "adminCheckboxRoutes", {
31
31
  enumerable: true,
32
- get: function () { return chunkASAEJ4B7_cjs.adminCheckboxRoutes; }
32
+ get: function () { return chunkDHTCZZUB_cjs.adminCheckboxRoutes; }
33
33
  });
34
34
  Object.defineProperty(exports, "adminCodeExamplesRoutes", {
35
35
  enumerable: true,
36
- get: function () { return chunkASAEJ4B7_cjs.admin_code_examples_default; }
36
+ get: function () { return chunkDHTCZZUB_cjs.admin_code_examples_default; }
37
37
  });
38
38
  Object.defineProperty(exports, "adminCollectionsRoutes", {
39
39
  enumerable: true,
40
- get: function () { return chunkASAEJ4B7_cjs.adminCollectionsRoutes; }
40
+ get: function () { return chunkDHTCZZUB_cjs.adminCollectionsRoutes; }
41
41
  });
42
42
  Object.defineProperty(exports, "adminContentRoutes", {
43
43
  enumerable: true,
44
- get: function () { return chunkASAEJ4B7_cjs.admin_content_default; }
44
+ get: function () { return chunkDHTCZZUB_cjs.admin_content_default; }
45
45
  });
46
46
  Object.defineProperty(exports, "adminDashboardRoutes", {
47
47
  enumerable: true,
48
- get: function () { return chunkASAEJ4B7_cjs.router; }
48
+ get: function () { return chunkDHTCZZUB_cjs.router; }
49
49
  });
50
50
  Object.defineProperty(exports, "adminDesignRoutes", {
51
51
  enumerable: true,
52
- get: function () { return chunkASAEJ4B7_cjs.adminDesignRoutes; }
52
+ get: function () { return chunkDHTCZZUB_cjs.adminDesignRoutes; }
53
53
  });
54
54
  Object.defineProperty(exports, "adminFormsRoutes", {
55
55
  enumerable: true,
56
- get: function () { return chunkASAEJ4B7_cjs.adminFormsRoutes; }
56
+ get: function () { return chunkDHTCZZUB_cjs.adminFormsRoutes; }
57
57
  });
58
58
  Object.defineProperty(exports, "adminLogsRoutes", {
59
59
  enumerable: true,
60
- get: function () { return chunkASAEJ4B7_cjs.adminLogsRoutes; }
60
+ get: function () { return chunkDHTCZZUB_cjs.adminLogsRoutes; }
61
61
  });
62
62
  Object.defineProperty(exports, "adminMediaRoutes", {
63
63
  enumerable: true,
64
- get: function () { return chunkASAEJ4B7_cjs.adminMediaRoutes; }
64
+ get: function () { return chunkDHTCZZUB_cjs.adminMediaRoutes; }
65
65
  });
66
66
  Object.defineProperty(exports, "adminPluginRoutes", {
67
67
  enumerable: true,
68
- get: function () { return chunkASAEJ4B7_cjs.adminPluginRoutes; }
68
+ get: function () { return chunkDHTCZZUB_cjs.adminPluginRoutes; }
69
69
  });
70
70
  Object.defineProperty(exports, "adminSettingsRoutes", {
71
71
  enumerable: true,
72
- get: function () { return chunkASAEJ4B7_cjs.adminSettingsRoutes; }
72
+ get: function () { return chunkDHTCZZUB_cjs.adminSettingsRoutes; }
73
73
  });
74
74
  Object.defineProperty(exports, "adminTestimonialsRoutes", {
75
75
  enumerable: true,
76
- get: function () { return chunkASAEJ4B7_cjs.admin_testimonials_default; }
76
+ get: function () { return chunkDHTCZZUB_cjs.admin_testimonials_default; }
77
77
  });
78
78
  Object.defineProperty(exports, "adminUsersRoutes", {
79
79
  enumerable: true,
80
- get: function () { return chunkASAEJ4B7_cjs.userRoutes; }
80
+ get: function () { return chunkDHTCZZUB_cjs.userRoutes; }
81
81
  });
82
82
  Object.defineProperty(exports, "apiContentCrudRoutes", {
83
83
  enumerable: true,
84
- get: function () { return chunkASAEJ4B7_cjs.api_content_crud_default; }
84
+ get: function () { return chunkDHTCZZUB_cjs.api_content_crud_default; }
85
85
  });
86
86
  Object.defineProperty(exports, "apiMediaRoutes", {
87
87
  enumerable: true,
88
- get: function () { return chunkASAEJ4B7_cjs.api_media_default; }
88
+ get: function () { return chunkDHTCZZUB_cjs.api_media_default; }
89
89
  });
90
90
  Object.defineProperty(exports, "apiRoutes", {
91
91
  enumerable: true,
92
- get: function () { return chunkASAEJ4B7_cjs.api_default; }
92
+ get: function () { return chunkDHTCZZUB_cjs.api_default; }
93
93
  });
94
94
  Object.defineProperty(exports, "apiSystemRoutes", {
95
95
  enumerable: true,
96
- get: function () { return chunkASAEJ4B7_cjs.api_system_default; }
96
+ get: function () { return chunkDHTCZZUB_cjs.api_system_default; }
97
97
  });
98
98
  Object.defineProperty(exports, "authRoutes", {
99
99
  enumerable: true,
100
- get: function () { return chunkASAEJ4B7_cjs.auth_default; }
100
+ get: function () { return chunkDHTCZZUB_cjs.auth_default; }
101
101
  });
102
102
  Object.defineProperty(exports, "publicFormsRoutes", {
103
103
  enumerable: true,
104
- get: function () { return chunkASAEJ4B7_cjs.public_forms_default; }
104
+ get: function () { return chunkDHTCZZUB_cjs.public_forms_default; }
105
105
  });
106
106
  Object.defineProperty(exports, "testCleanupRoutes", {
107
107
  enumerable: true,
108
- get: function () { return chunkASAEJ4B7_cjs.test_cleanup_default; }
108
+ get: function () { return chunkDHTCZZUB_cjs.test_cleanup_default; }
109
109
  });
110
110
  //# sourceMappingURL=routes.cjs.map
111
111
  //# sourceMappingURL=routes.cjs.map
package/dist/routes.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as hono_types from 'hono/types';
2
2
  import { Hono } from 'hono';
3
- import { B as Bindings$a, V as Variables$b } from './app-Ozl9agJG.cjs';
3
+ import { B as Bindings$a, V as Variables$b } from './app-COElO4Rm.cjs';
4
4
  import { D1Database as D1Database$1, KVNamespace as KVNamespace$1, R2Bucket as R2Bucket$1 } from '@cloudflare/workers-types';
5
5
 
6
6
  interface Variables$a extends Variables$b {
package/dist/routes.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as hono_types from 'hono/types';
2
2
  import { Hono } from 'hono';
3
- import { B as Bindings$a, V as Variables$b } from './app-Ozl9agJG.js';
3
+ import { B as Bindings$a, V as Variables$b } from './app-COElO4Rm.js';
4
4
  import { D1Database as D1Database$1, KVNamespace as KVNamespace$1, R2Bucket as R2Bucket$1 } from '@cloudflare/workers-types';
5
5
 
6
6
  interface Variables$a extends Variables$b {
package/dist/routes.js CHANGED
@@ -1,11 +1,11 @@
1
- export { ROUTES_INFO, router2 as adminApiReferenceRoutes, admin_api_default as adminApiRoutes, adminCheckboxRoutes, admin_code_examples_default as adminCodeExamplesRoutes, adminCollectionsRoutes, admin_content_default as adminContentRoutes, router as adminDashboardRoutes, adminDesignRoutes, adminFormsRoutes, 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, public_forms_default as publicFormsRoutes, test_cleanup_default as testCleanupRoutes } from './chunk-JTQBNSZX.js';
2
- import './chunk-VJCLJH3X.js';
3
- import './chunk-GKRGDJGG.js';
4
- import './chunk-NMLFKXWW.js';
5
- import './chunk-H55AYIRI.js';
6
- import './chunk-JJS7JZCH.js';
1
+ export { ROUTES_INFO, router2 as adminApiReferenceRoutes, admin_api_default as adminApiRoutes, adminCheckboxRoutes, admin_code_examples_default as adminCodeExamplesRoutes, adminCollectionsRoutes, admin_content_default as adminContentRoutes, router as adminDashboardRoutes, adminDesignRoutes, adminFormsRoutes, 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, public_forms_default as publicFormsRoutes, test_cleanup_default as testCleanupRoutes } from './chunk-3V2CQFIR.js';
2
+ import './chunk-TBJY2FF7.js';
3
+ import './chunk-UFWE3MEJ.js';
4
+ import './chunk-H3XXBAMO.js';
5
+ import './chunk-6C6W54QP.js';
6
+ import './chunk-76TX6XND.js';
7
7
  import './chunk-J5WGMRSU.js';
8
- import './chunk-BUU2US2Z.js';
8
+ import './chunk-673VROB3.js';
9
9
  import './chunk-X7ZAEI5S.js';
10
10
  import './chunk-FICTAGD4.js';
11
11
  import './chunk-TQABQWOP.js';
package/dist/services.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkLFAQUR7P_cjs = require('./chunk-LFAQUR7P.cjs');
4
- var chunk6BVLPACH_cjs = require('./chunk-6BVLPACH.cjs');
5
- var chunkDE5YTNCD_cjs = require('./chunk-DE5YTNCD.cjs');
3
+ var chunkNZWFCUDA_cjs = require('./chunk-NZWFCUDA.cjs');
4
+ var chunkI6FFGQIT_cjs = require('./chunk-I6FFGQIT.cjs');
5
+ var chunkXK3TKOLQ_cjs = require('./chunk-XK3TKOLQ.cjs');
6
6
  require('./chunk-P3XDZL6Q.cjs');
7
7
  require('./chunk-IGJUBJBW.cjs');
8
8
 
@@ -10,147 +10,147 @@ require('./chunk-IGJUBJBW.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "CACHE_CONFIGS", {
12
12
  enumerable: true,
13
- get: function () { return chunkLFAQUR7P_cjs.CACHE_CONFIGS; }
13
+ get: function () { return chunkNZWFCUDA_cjs.CACHE_CONFIGS; }
14
14
  });
15
15
  Object.defineProperty(exports, "CATEGORY_INFO", {
16
16
  enumerable: true,
17
- get: function () { return chunkLFAQUR7P_cjs.CATEGORY_INFO; }
17
+ get: function () { return chunkNZWFCUDA_cjs.CATEGORY_INFO; }
18
18
  });
19
19
  Object.defineProperty(exports, "CacheService", {
20
20
  enumerable: true,
21
- get: function () { return chunkLFAQUR7P_cjs.CacheService; }
21
+ get: function () { return chunkNZWFCUDA_cjs.CacheService; }
22
22
  });
23
23
  Object.defineProperty(exports, "Logger", {
24
24
  enumerable: true,
25
- get: function () { return chunkLFAQUR7P_cjs.Logger; }
25
+ get: function () { return chunkNZWFCUDA_cjs.Logger; }
26
26
  });
27
27
  Object.defineProperty(exports, "SettingsService", {
28
28
  enumerable: true,
29
- get: function () { return chunkLFAQUR7P_cjs.SettingsService; }
29
+ get: function () { return chunkNZWFCUDA_cjs.SettingsService; }
30
30
  });
31
31
  Object.defineProperty(exports, "TelemetryService", {
32
32
  enumerable: true,
33
- get: function () { return chunkLFAQUR7P_cjs.TelemetryService; }
33
+ get: function () { return chunkNZWFCUDA_cjs.TelemetryService; }
34
34
  });
35
35
  Object.defineProperty(exports, "buildRouteList", {
36
36
  enumerable: true,
37
- get: function () { return chunkLFAQUR7P_cjs.buildRouteList; }
37
+ get: function () { return chunkNZWFCUDA_cjs.buildRouteList; }
38
38
  });
39
39
  Object.defineProperty(exports, "createInstallationIdentity", {
40
40
  enumerable: true,
41
- get: function () { return chunkLFAQUR7P_cjs.createInstallationIdentity; }
41
+ get: function () { return chunkNZWFCUDA_cjs.createInstallationIdentity; }
42
42
  });
43
43
  Object.defineProperty(exports, "getAppInstance", {
44
44
  enumerable: true,
45
- get: function () { return chunkLFAQUR7P_cjs.getAppInstance; }
45
+ get: function () { return chunkNZWFCUDA_cjs.getAppInstance; }
46
46
  });
47
47
  Object.defineProperty(exports, "getCacheService", {
48
48
  enumerable: true,
49
- get: function () { return chunkLFAQUR7P_cjs.getCacheService; }
49
+ get: function () { return chunkNZWFCUDA_cjs.getCacheService; }
50
50
  });
51
51
  Object.defineProperty(exports, "getLogger", {
52
52
  enumerable: true,
53
- get: function () { return chunkLFAQUR7P_cjs.getLogger; }
53
+ get: function () { return chunkNZWFCUDA_cjs.getLogger; }
54
54
  });
55
55
  Object.defineProperty(exports, "getTelemetryService", {
56
56
  enumerable: true,
57
- get: function () { return chunkLFAQUR7P_cjs.getTelemetryService; }
57
+ get: function () { return chunkNZWFCUDA_cjs.getTelemetryService; }
58
58
  });
59
59
  Object.defineProperty(exports, "initLogger", {
60
60
  enumerable: true,
61
- get: function () { return chunkLFAQUR7P_cjs.initLogger; }
61
+ get: function () { return chunkNZWFCUDA_cjs.initLogger; }
62
62
  });
63
63
  Object.defineProperty(exports, "initTelemetry", {
64
64
  enumerable: true,
65
- get: function () { return chunkLFAQUR7P_cjs.initTelemetry; }
65
+ get: function () { return chunkNZWFCUDA_cjs.initTelemetry; }
66
66
  });
67
67
  Object.defineProperty(exports, "setAppInstance", {
68
68
  enumerable: true,
69
- get: function () { return chunkLFAQUR7P_cjs.setAppInstance; }
69
+ get: function () { return chunkNZWFCUDA_cjs.setAppInstance; }
70
70
  });
71
71
  Object.defineProperty(exports, "PluginBootstrapService", {
72
72
  enumerable: true,
73
- get: function () { return chunk6BVLPACH_cjs.PluginBootstrapService; }
73
+ get: function () { return chunkI6FFGQIT_cjs.PluginBootstrapService; }
74
74
  });
75
75
  Object.defineProperty(exports, "PluginService", {
76
76
  enumerable: true,
77
- get: function () { return chunk6BVLPACH_cjs.PluginService; }
77
+ get: function () { return chunkI6FFGQIT_cjs.PluginService; }
78
78
  });
79
79
  Object.defineProperty(exports, "backfillFormSubmissions", {
80
80
  enumerable: true,
81
- get: function () { return chunk6BVLPACH_cjs.backfillFormSubmissions; }
81
+ get: function () { return chunkI6FFGQIT_cjs.backfillFormSubmissions; }
82
82
  });
83
83
  Object.defineProperty(exports, "cleanupRemovedCollections", {
84
84
  enumerable: true,
85
- get: function () { return chunk6BVLPACH_cjs.cleanupRemovedCollections; }
85
+ get: function () { return chunkI6FFGQIT_cjs.cleanupRemovedCollections; }
86
86
  });
87
87
  Object.defineProperty(exports, "createContentFromSubmission", {
88
88
  enumerable: true,
89
- get: function () { return chunk6BVLPACH_cjs.createContentFromSubmission; }
89
+ get: function () { return chunkI6FFGQIT_cjs.createContentFromSubmission; }
90
90
  });
91
91
  Object.defineProperty(exports, "deriveCollectionSchemaFromFormio", {
92
92
  enumerable: true,
93
- get: function () { return chunk6BVLPACH_cjs.deriveCollectionSchemaFromFormio; }
93
+ get: function () { return chunkI6FFGQIT_cjs.deriveCollectionSchemaFromFormio; }
94
94
  });
95
95
  Object.defineProperty(exports, "deriveSubmissionTitle", {
96
96
  enumerable: true,
97
- get: function () { return chunk6BVLPACH_cjs.deriveSubmissionTitle; }
97
+ get: function () { return chunkI6FFGQIT_cjs.deriveSubmissionTitle; }
98
98
  });
99
99
  Object.defineProperty(exports, "fullCollectionSync", {
100
100
  enumerable: true,
101
- get: function () { return chunk6BVLPACH_cjs.fullCollectionSync; }
101
+ get: function () { return chunkI6FFGQIT_cjs.fullCollectionSync; }
102
102
  });
103
103
  Object.defineProperty(exports, "getAvailableCollectionNames", {
104
104
  enumerable: true,
105
- get: function () { return chunk6BVLPACH_cjs.getAvailableCollectionNames; }
105
+ get: function () { return chunkI6FFGQIT_cjs.getAvailableCollectionNames; }
106
106
  });
107
107
  Object.defineProperty(exports, "getManagedCollections", {
108
108
  enumerable: true,
109
- get: function () { return chunk6BVLPACH_cjs.getManagedCollections; }
109
+ get: function () { return chunkI6FFGQIT_cjs.getManagedCollections; }
110
110
  });
111
111
  Object.defineProperty(exports, "isCollectionManaged", {
112
112
  enumerable: true,
113
- get: function () { return chunk6BVLPACH_cjs.isCollectionManaged; }
113
+ get: function () { return chunkI6FFGQIT_cjs.isCollectionManaged; }
114
114
  });
115
115
  Object.defineProperty(exports, "loadCollectionConfig", {
116
116
  enumerable: true,
117
- get: function () { return chunk6BVLPACH_cjs.loadCollectionConfig; }
117
+ get: function () { return chunkI6FFGQIT_cjs.loadCollectionConfig; }
118
118
  });
119
119
  Object.defineProperty(exports, "loadCollectionConfigs", {
120
120
  enumerable: true,
121
- get: function () { return chunk6BVLPACH_cjs.loadCollectionConfigs; }
121
+ get: function () { return chunkI6FFGQIT_cjs.loadCollectionConfigs; }
122
122
  });
123
123
  Object.defineProperty(exports, "mapFormStatusToContentStatus", {
124
124
  enumerable: true,
125
- get: function () { return chunk6BVLPACH_cjs.mapFormStatusToContentStatus; }
125
+ get: function () { return chunkI6FFGQIT_cjs.mapFormStatusToContentStatus; }
126
126
  });
127
127
  Object.defineProperty(exports, "registerCollections", {
128
128
  enumerable: true,
129
- get: function () { return chunk6BVLPACH_cjs.registerCollections; }
129
+ get: function () { return chunkI6FFGQIT_cjs.registerCollections; }
130
130
  });
131
131
  Object.defineProperty(exports, "syncAllFormCollections", {
132
132
  enumerable: true,
133
- get: function () { return chunk6BVLPACH_cjs.syncAllFormCollections; }
133
+ get: function () { return chunkI6FFGQIT_cjs.syncAllFormCollections; }
134
134
  });
135
135
  Object.defineProperty(exports, "syncCollection", {
136
136
  enumerable: true,
137
- get: function () { return chunk6BVLPACH_cjs.syncCollection; }
137
+ get: function () { return chunkI6FFGQIT_cjs.syncCollection; }
138
138
  });
139
139
  Object.defineProperty(exports, "syncCollections", {
140
140
  enumerable: true,
141
- get: function () { return chunk6BVLPACH_cjs.syncCollections; }
141
+ get: function () { return chunkI6FFGQIT_cjs.syncCollections; }
142
142
  });
143
143
  Object.defineProperty(exports, "syncFormCollection", {
144
144
  enumerable: true,
145
- get: function () { return chunk6BVLPACH_cjs.syncFormCollection; }
145
+ get: function () { return chunkI6FFGQIT_cjs.syncFormCollection; }
146
146
  });
147
147
  Object.defineProperty(exports, "validateCollectionConfig", {
148
148
  enumerable: true,
149
- get: function () { return chunk6BVLPACH_cjs.validateCollectionConfig; }
149
+ get: function () { return chunkI6FFGQIT_cjs.validateCollectionConfig; }
150
150
  });
151
151
  Object.defineProperty(exports, "MigrationService", {
152
152
  enumerable: true,
153
- get: function () { return chunkDE5YTNCD_cjs.MigrationService; }
153
+ get: function () { return chunkXK3TKOLQ_cjs.MigrationService; }
154
154
  });
155
155
  //# sourceMappingURL=services.cjs.map
156
156
  //# sourceMappingURL=services.cjs.map
@@ -1,4 +1,4 @@
1
- export { C as CorePlugin, L as LogCategory, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, M as Migration, e as MigrationService, f as MigrationStatus, P as PluginBootstrapService, g as PluginService, h as backfillFormSubmissions, i as cleanupRemovedCollections, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, u as mapFormStatusToContentStatus, v as registerCollections, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, A as validateCollectionConfig } from './plugin-bootstrap-DCXpeQVb.cjs';
1
+ export { C as CorePlugin, L as LogCategory, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, M as Migration, e as MigrationService, f as MigrationStatus, P as PluginBootstrapService, g as PluginService, h as backfillFormSubmissions, i as cleanupRemovedCollections, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, u as mapFormStatusToContentStatus, v as registerCollections, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, A as validateCollectionConfig } from './plugin-bootstrap-DVGLQrcO.cjs';
2
2
  import { T as TelemetryConfig, b as TelemetryIdentity, a as TelemetryEvent, c as TelemetryProperties } from './telemetry-B9vIV4wh.cjs';
3
3
  import './collection-config-B4PG-AaF.cjs';
4
4
  import '@cloudflare/workers-types';
@@ -1,4 +1,4 @@
1
- export { C as CorePlugin, L as LogCategory, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, M as Migration, e as MigrationService, f as MigrationStatus, P as PluginBootstrapService, g as PluginService, h as backfillFormSubmissions, i as cleanupRemovedCollections, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, u as mapFormStatusToContentStatus, v as registerCollections, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, A as validateCollectionConfig } from './plugin-bootstrap-DXBAYaqM.js';
1
+ export { C as CorePlugin, L as LogCategory, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, M as Migration, e as MigrationService, f as MigrationStatus, P as PluginBootstrapService, g as PluginService, h as backfillFormSubmissions, i as cleanupRemovedCollections, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, u as mapFormStatusToContentStatus, v as registerCollections, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, A as validateCollectionConfig } from './plugin-bootstrap-CZ1GDum7.js';
2
2
  import { T as TelemetryConfig, b as TelemetryIdentity, a as TelemetryEvent, c as TelemetryProperties } from './telemetry-B9vIV4wh.js';
3
3
  import './collection-config-B4PG-AaF.js';
4
4
  import '@cloudflare/workers-types';
package/dist/services.js CHANGED
@@ -1,6 +1,6 @@
1
- export { CACHE_CONFIGS, CATEGORY_INFO, CacheService, Logger, SettingsService, TelemetryService, buildRouteList, createInstallationIdentity, getAppInstance, getCacheService, getLogger, getTelemetryService, initLogger, initTelemetry, setAppInstance } from './chunk-VJCLJH3X.js';
2
- export { PluginBootstrapService, PluginService, backfillFormSubmissions, cleanupRemovedCollections, createContentFromSubmission, deriveCollectionSchemaFromFormio, deriveSubmissionTitle, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, mapFormStatusToContentStatus, registerCollections, syncAllFormCollections, syncCollection, syncCollections, syncFormCollection, validateCollectionConfig } from './chunk-NMLFKXWW.js';
3
- export { MigrationService } from './chunk-H55AYIRI.js';
1
+ export { CACHE_CONFIGS, CATEGORY_INFO, CacheService, Logger, SettingsService, TelemetryService, buildRouteList, createInstallationIdentity, getAppInstance, getCacheService, getLogger, getTelemetryService, initLogger, initTelemetry, setAppInstance } from './chunk-TBJY2FF7.js';
2
+ export { PluginBootstrapService, PluginService, backfillFormSubmissions, cleanupRemovedCollections, createContentFromSubmission, deriveCollectionSchemaFromFormio, deriveSubmissionTitle, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, mapFormStatusToContentStatus, registerCollections, syncAllFormCollections, syncCollection, syncCollections, syncFormCollection, validateCollectionConfig } from './chunk-H3XXBAMO.js';
3
+ export { MigrationService } from './chunk-6C6W54QP.js';
4
4
  import './chunk-X7ZAEI5S.js';
5
5
  import './chunk-V4OQ3NZ2.js';
6
6
  //# sourceMappingURL=services.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk3G7XX4UI_cjs = require('./chunk-3G7XX4UI.cjs');
4
- var chunkLTKV7AE5_cjs = require('./chunk-LTKV7AE5.cjs');
3
+ var chunkRBXFXT7H_cjs = require('./chunk-RBXFXT7H.cjs');
4
+ var chunkH4NHRZ6Y_cjs = require('./chunk-H4NHRZ6Y.cjs');
5
5
  require('./chunk-MNWKYY5E.cjs');
6
6
  require('./chunk-IGJUBJBW.cjs');
7
7
 
@@ -9,71 +9,71 @@ require('./chunk-IGJUBJBW.cjs');
9
9
 
10
10
  Object.defineProperty(exports, "renderFilterBar", {
11
11
  enumerable: true,
12
- get: function () { return chunk3G7XX4UI_cjs.renderFilterBar; }
12
+ get: function () { return chunkRBXFXT7H_cjs.renderFilterBar; }
13
13
  });
14
14
  Object.defineProperty(exports, "renderFormsDocsPage", {
15
15
  enumerable: true,
16
- get: function () { return chunk3G7XX4UI_cjs.renderFormsDocsPage; }
16
+ get: function () { return chunkRBXFXT7H_cjs.renderFormsDocsPage; }
17
17
  });
18
18
  Object.defineProperty(exports, "renderFormsExamplesPage", {
19
19
  enumerable: true,
20
- get: function () { return chunk3G7XX4UI_cjs.renderFormsExamplesPage; }
20
+ get: function () { return chunkRBXFXT7H_cjs.renderFormsExamplesPage; }
21
21
  });
22
22
  Object.defineProperty(exports, "getConfirmationDialogScript", {
23
23
  enumerable: true,
24
- get: function () { return chunkLTKV7AE5_cjs.getConfirmationDialogScript; }
24
+ get: function () { return chunkH4NHRZ6Y_cjs.getConfirmationDialogScript; }
25
25
  });
26
26
  Object.defineProperty(exports, "renderAdminLayout", {
27
27
  enumerable: true,
28
- get: function () { return chunkLTKV7AE5_cjs.renderAdminLayout; }
28
+ get: function () { return chunkH4NHRZ6Y_cjs.renderAdminLayout; }
29
29
  });
30
30
  Object.defineProperty(exports, "renderAdminLayoutCatalyst", {
31
31
  enumerable: true,
32
- get: function () { return chunkLTKV7AE5_cjs.renderAdminLayoutCatalyst; }
32
+ get: function () { return chunkH4NHRZ6Y_cjs.renderAdminLayoutCatalyst; }
33
33
  });
34
34
  Object.defineProperty(exports, "renderAlert", {
35
35
  enumerable: true,
36
- get: function () { return chunkLTKV7AE5_cjs.renderAlert; }
36
+ get: function () { return chunkH4NHRZ6Y_cjs.renderAlert; }
37
37
  });
38
38
  Object.defineProperty(exports, "renderCheckboxPage", {
39
39
  enumerable: true,
40
- get: function () { return chunkLTKV7AE5_cjs.renderCheckboxPage; }
40
+ get: function () { return chunkH4NHRZ6Y_cjs.renderCheckboxPage; }
41
41
  });
42
42
  Object.defineProperty(exports, "renderCodeExamplesList", {
43
43
  enumerable: true,
44
- get: function () { return chunkLTKV7AE5_cjs.renderCodeExamplesList; }
44
+ get: function () { return chunkH4NHRZ6Y_cjs.renderCodeExamplesList; }
45
45
  });
46
46
  Object.defineProperty(exports, "renderConfirmationDialog", {
47
47
  enumerable: true,
48
- get: function () { return chunkLTKV7AE5_cjs.renderConfirmationDialog; }
48
+ get: function () { return chunkH4NHRZ6Y_cjs.renderConfirmationDialog; }
49
49
  });
50
50
  Object.defineProperty(exports, "renderDesignPage", {
51
51
  enumerable: true,
52
- get: function () { return chunkLTKV7AE5_cjs.renderDesignPage; }
52
+ get: function () { return chunkH4NHRZ6Y_cjs.renderDesignPage; }
53
53
  });
54
54
  Object.defineProperty(exports, "renderForm", {
55
55
  enumerable: true,
56
- get: function () { return chunkLTKV7AE5_cjs.renderForm; }
56
+ get: function () { return chunkH4NHRZ6Y_cjs.renderForm; }
57
57
  });
58
58
  Object.defineProperty(exports, "renderFormField", {
59
59
  enumerable: true,
60
- get: function () { return chunkLTKV7AE5_cjs.renderFormField; }
60
+ get: function () { return chunkH4NHRZ6Y_cjs.renderFormField; }
61
61
  });
62
62
  Object.defineProperty(exports, "renderLogo", {
63
63
  enumerable: true,
64
- get: function () { return chunkLTKV7AE5_cjs.renderLogo; }
64
+ get: function () { return chunkH4NHRZ6Y_cjs.renderLogo; }
65
65
  });
66
66
  Object.defineProperty(exports, "renderPagination", {
67
67
  enumerable: true,
68
- get: function () { return chunkLTKV7AE5_cjs.renderPagination; }
68
+ get: function () { return chunkH4NHRZ6Y_cjs.renderPagination; }
69
69
  });
70
70
  Object.defineProperty(exports, "renderTable", {
71
71
  enumerable: true,
72
- get: function () { return chunkLTKV7AE5_cjs.renderTable; }
72
+ get: function () { return chunkH4NHRZ6Y_cjs.renderTable; }
73
73
  });
74
74
  Object.defineProperty(exports, "renderTestimonialsList", {
75
75
  enumerable: true,
76
- get: function () { return chunkLTKV7AE5_cjs.renderTestimonialsList; }
76
+ get: function () { return chunkH4NHRZ6Y_cjs.renderTestimonialsList; }
77
77
  });
78
78
  //# sourceMappingURL=templates.cjs.map
79
79
  //# sourceMappingURL=templates.cjs.map
package/dist/templates.js CHANGED
@@ -1,5 +1,5 @@
1
- export { renderFilterBar, renderFormsDocsPage, renderFormsExamplesPage } from './chunk-74XCYEI7.js';
2
- export { getConfirmationDialogScript, renderAdminLayout, renderAdminLayoutCatalyst, renderAlert, renderCheckboxPage, renderCodeExamplesList, renderConfirmationDialog, renderDesignPage, renderForm, renderFormField, renderLogo, renderPagination, renderTable, renderTestimonialsList } from './chunk-JJS7JZCH.js';
1
+ export { renderFilterBar, renderFormsDocsPage, renderFormsExamplesPage } from './chunk-BWZBKLOC.js';
2
+ export { getConfirmationDialogScript, renderAdminLayout, renderAdminLayoutCatalyst, renderAlert, renderCheckboxPage, renderCodeExamplesList, renderConfirmationDialog, renderDesignPage, renderForm, renderFormField, renderLogo, renderPagination, renderTable, renderTestimonialsList } from './chunk-76TX6XND.js';
3
3
  import './chunk-TQABQWOP.js';
4
4
  import './chunk-V4OQ3NZ2.js';
5
5
  //# sourceMappingURL=templates.js.map
package/dist/utils.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkQLPFENZ2_cjs = require('./chunk-QLPFENZ2.cjs');
3
+ var chunkIKBAY2M2_cjs = require('./chunk-IKBAY2M2.cjs');
4
4
  var chunkP3XDZL6Q_cjs = require('./chunk-P3XDZL6Q.cjs');
5
5
  var chunkRCQ2HIQD_cjs = require('./chunk-RCQ2HIQD.cjs');
6
6
  var chunkMNWKYY5E_cjs = require('./chunk-MNWKYY5E.cjs');
@@ -10,43 +10,43 @@ require('./chunk-IGJUBJBW.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "QueryFilterBuilder", {
12
12
  enumerable: true,
13
- get: function () { return chunkQLPFENZ2_cjs.QueryFilterBuilder; }
13
+ get: function () { return chunkIKBAY2M2_cjs.QueryFilterBuilder; }
14
14
  });
15
15
  Object.defineProperty(exports, "SONICJS_VERSION", {
16
16
  enumerable: true,
17
- get: function () { return chunkQLPFENZ2_cjs.SONICJS_VERSION; }
17
+ get: function () { return chunkIKBAY2M2_cjs.SONICJS_VERSION; }
18
18
  });
19
19
  Object.defineProperty(exports, "TemplateRenderer", {
20
20
  enumerable: true,
21
- get: function () { return chunkQLPFENZ2_cjs.TemplateRenderer; }
21
+ get: function () { return chunkIKBAY2M2_cjs.TemplateRenderer; }
22
22
  });
23
23
  Object.defineProperty(exports, "buildQuery", {
24
24
  enumerable: true,
25
- get: function () { return chunkQLPFENZ2_cjs.buildQuery; }
25
+ get: function () { return chunkIKBAY2M2_cjs.buildQuery; }
26
26
  });
27
27
  Object.defineProperty(exports, "generateSlug", {
28
28
  enumerable: true,
29
- get: function () { return chunkQLPFENZ2_cjs.generateSlug; }
29
+ get: function () { return chunkIKBAY2M2_cjs.generateSlug; }
30
30
  });
31
31
  Object.defineProperty(exports, "getBlocksFieldConfig", {
32
32
  enumerable: true,
33
- get: function () { return chunkQLPFENZ2_cjs.getBlocksFieldConfig; }
33
+ get: function () { return chunkIKBAY2M2_cjs.getBlocksFieldConfig; }
34
34
  });
35
35
  Object.defineProperty(exports, "getCoreVersion", {
36
36
  enumerable: true,
37
- get: function () { return chunkQLPFENZ2_cjs.getCoreVersion; }
37
+ get: function () { return chunkIKBAY2M2_cjs.getCoreVersion; }
38
38
  });
39
39
  Object.defineProperty(exports, "parseBlocksValue", {
40
40
  enumerable: true,
41
- get: function () { return chunkQLPFENZ2_cjs.parseBlocksValue; }
41
+ get: function () { return chunkIKBAY2M2_cjs.parseBlocksValue; }
42
42
  });
43
43
  Object.defineProperty(exports, "renderTemplate", {
44
44
  enumerable: true,
45
- get: function () { return chunkQLPFENZ2_cjs.renderTemplate; }
45
+ get: function () { return chunkIKBAY2M2_cjs.renderTemplate; }
46
46
  });
47
47
  Object.defineProperty(exports, "templateRenderer", {
48
48
  enumerable: true,
49
- get: function () { return chunkQLPFENZ2_cjs.templateRenderer; }
49
+ get: function () { return chunkIKBAY2M2_cjs.templateRenderer; }
50
50
  });
51
51
  Object.defineProperty(exports, "generateInstallationId", {
52
52
  enumerable: true,
package/dist/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, generateSlug, getBlocksFieldConfig, getCoreVersion, parseBlocksValue, renderTemplate, templateRenderer } from './chunk-BUU2US2Z.js';
1
+ export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, generateSlug, getBlocksFieldConfig, getCoreVersion, parseBlocksValue, renderTemplate, templateRenderer } from './chunk-673VROB3.js';
2
2
  export { generateInstallationId, generateProjectId, getDefaultTelemetryConfig, getTelemetryConfig, isTelemetryEnabled, sanitizeErrorMessage, sanitizeRoute, shouldSkipEvent } from './chunk-X7ZAEI5S.js';
3
3
  export { metricsTracker } from './chunk-FICTAGD4.js';
4
4
  export { escapeHtml, sanitizeInput, sanitizeObject } from './chunk-TQABQWOP.js';
@@ -20,6 +20,7 @@ CREATE TABLE IF NOT EXISTS user_profiles (
20
20
  website TEXT,
21
21
  location TEXT,
22
22
  date_of_birth INTEGER,
23
+ data TEXT DEFAULT '{}',
23
24
 
24
25
  created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
25
26
  updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)
@@ -0,0 +1,27 @@
1
+ -- Security Audit Plugin
2
+ -- Tracks login attempts, registrations, and security events for monitoring and brute-force detection
3
+
4
+ CREATE TABLE IF NOT EXISTS security_events (
5
+ id TEXT PRIMARY KEY,
6
+ event_type TEXT NOT NULL,
7
+ severity TEXT NOT NULL DEFAULT 'info',
8
+ user_id TEXT,
9
+ email TEXT,
10
+ ip_address TEXT,
11
+ user_agent TEXT,
12
+ country_code TEXT,
13
+ request_path TEXT,
14
+ request_method TEXT,
15
+ details TEXT,
16
+ fingerprint TEXT,
17
+ blocked INTEGER NOT NULL DEFAULT 0,
18
+ created_at INTEGER NOT NULL
19
+ );
20
+
21
+ CREATE INDEX IF NOT EXISTS idx_security_events_type ON security_events(event_type);
22
+ CREATE INDEX IF NOT EXISTS idx_security_events_user ON security_events(user_id);
23
+ CREATE INDEX IF NOT EXISTS idx_security_events_email ON security_events(email);
24
+ CREATE INDEX IF NOT EXISTS idx_security_events_ip ON security_events(ip_address);
25
+ CREATE INDEX IF NOT EXISTS idx_security_events_severity ON security_events(severity);
26
+ CREATE INDEX IF NOT EXISTS idx_security_events_created ON security_events(created_at);
27
+ CREATE INDEX IF NOT EXISTS idx_security_events_fingerprint ON security_events(fingerprint);
@@ -0,0 +1,17 @@
1
+ -- Migration 035: Add data column to user_profiles
2
+ -- Stores custom profile fields as JSON (used by user-profiles plugin)
3
+ --
4
+ -- The data column was missing from migration 032 when the user-profiles plugin
5
+ -- was added in PR #747. The ALTER TABLE migration was placed in the wrong
6
+ -- directory (src/db/migrations/) so it was never bundled or executed.
7
+ -- This caused the user edit page to crash with a 500 error because the route
8
+ -- queries SELECT ... data FROM user_profiles.
9
+ --
10
+ -- Migration 032 has been updated to include the column for fresh installs.
11
+ -- This migration handles existing databases that already ran 032 without it.
12
+
13
+ -- SQLite does not support IF NOT EXISTS for ALTER TABLE ADD COLUMN,
14
+ -- but re-adding an existing column is a no-op error that we catch at the
15
+ -- application level. The migration runner skips already-applied migrations
16
+ -- by ID, so this only runs on databases missing the column.
17
+ ALTER TABLE user_profiles ADD COLUMN data TEXT DEFAULT '{}';