@sonicjs-cms/core 2.16.0 → 2.16.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 (50) hide show
  1. package/dist/{app-COElO4Rm.d.cts → app-D9L3mrC-.d.cts} +1 -0
  2. package/dist/{app-COElO4Rm.d.ts → app-D9L3mrC-.d.ts} +1 -0
  3. package/dist/{chunk-CZ6BVQZX.cjs → chunk-7HHIZQNE.cjs} +8 -8
  4. package/dist/{chunk-CZ6BVQZX.cjs.map → chunk-7HHIZQNE.cjs.map} +1 -1
  5. package/dist/{chunk-WLSIUKNM.js → chunk-BAMJVG33.js} +9 -9
  6. package/dist/{chunk-WLSIUKNM.js.map → chunk-BAMJVG33.js.map} +1 -1
  7. package/dist/{chunk-OCLUXJ7E.cjs → chunk-HU4MN74Q.cjs} +48 -5
  8. package/dist/chunk-HU4MN74Q.cjs.map +1 -0
  9. package/dist/{chunk-MVSCB4E3.js → chunk-JF5RQXPN.js} +3 -3
  10. package/dist/{chunk-MVSCB4E3.js.map → chunk-JF5RQXPN.js.map} +1 -1
  11. package/dist/{chunk-Y5EH32F5.js → chunk-KYAF33AF.js} +4 -4
  12. package/dist/{chunk-Y5EH32F5.js.map → chunk-KYAF33AF.js.map} +1 -1
  13. package/dist/{chunk-6ENX7QSA.cjs → chunk-MZS33LLH.cjs} +114 -114
  14. package/dist/{chunk-6ENX7QSA.cjs.map → chunk-MZS33LLH.cjs.map} +1 -1
  15. package/dist/{chunk-VFQUULAV.js → chunk-PUZMLXOJ.js} +48 -5
  16. package/dist/chunk-PUZMLXOJ.js.map +1 -0
  17. package/dist/{chunk-Q5VFZUXV.cjs → chunk-U6FOL6EO.cjs} +2 -2
  18. package/dist/{chunk-Q5VFZUXV.cjs.map → chunk-U6FOL6EO.cjs.map} +1 -1
  19. package/dist/{chunk-YQW2GCJ3.cjs → chunk-V76ERLX6.cjs} +3 -3
  20. package/dist/{chunk-YQW2GCJ3.cjs.map → chunk-V76ERLX6.cjs.map} +1 -1
  21. package/dist/{chunk-INSDRCG3.js → chunk-W33MHOPA.js} +2 -2
  22. package/dist/{chunk-INSDRCG3.js.map → chunk-W33MHOPA.js.map} +1 -1
  23. package/dist/index.cjs +150 -134
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +26 -10
  28. package/dist/index.js.map +1 -1
  29. package/dist/middleware.cjs +29 -29
  30. package/dist/middleware.d.cts +1 -1
  31. package/dist/middleware.d.ts +1 -1
  32. package/dist/middleware.js +3 -3
  33. package/dist/migrations-MYQI2KAJ.cjs +13 -0
  34. package/dist/{migrations-SVQTT7NV.cjs.map → migrations-MYQI2KAJ.cjs.map} +1 -1
  35. package/dist/migrations-WCEBO5QQ.js +4 -0
  36. package/dist/{migrations-7HQ7LYAL.js.map → migrations-WCEBO5QQ.js.map} +1 -1
  37. package/dist/routes.cjs +28 -28
  38. package/dist/routes.d.cts +1 -1
  39. package/dist/routes.d.ts +1 -1
  40. package/dist/routes.js +5 -5
  41. package/dist/services.cjs +23 -23
  42. package/dist/services.js +2 -2
  43. package/dist/utils.cjs +11 -11
  44. package/dist/utils.js +1 -1
  45. package/migrations/035_user_profiles_data_column.sql +14 -15
  46. package/package.json +1 -1
  47. package/dist/chunk-OCLUXJ7E.cjs.map +0 -1
  48. package/dist/chunk-VFQUULAV.js.map +0 -1
  49. package/dist/migrations-7HQ7LYAL.js +0 -4
  50. package/dist/migrations-SVQTT7NV.cjs +0 -13
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-COElO4Rm.cjs';
1
+ export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-D9L3mrC-.cjs';
2
2
  import { B as schema } from './plugin-bootstrap-DfVerYV4.cjs';
3
3
  export { D as Collection, E as Content, C as CorePlugin, F as DbPlugin, G as DbPluginHook, L as LogCategory, H as LogConfig, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, I as Media, M as Migration, e as MigrationService, f as MigrationStatus, N as NewCollection, J as NewContent, K as NewLogConfig, O as NewMedia, Q as NewPlugin, R as NewPluginActivityLog, S as NewPluginAsset, T as NewPluginHook, U as NewPluginRoute, V as NewSystemLog, W as NewUser, X as NewWorkflowHistory, Y as PluginActivityLog, Z as PluginAsset, P as PluginBootstrapService, _ as PluginRoute, g as PluginServiceClass, $ as SystemLog, a0 as User, a1 as WorkflowHistory, a2 as apiTokens, h as backfillFormSubmissions, i as cleanupRemovedCollections, a3 as collections, a4 as content, a5 as contentVersions, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, a6 as insertCollectionSchema, a7 as insertContentSchema, a8 as insertLogConfigSchema, a9 as insertMediaSchema, aa as insertPluginActivityLogSchema, ab as insertPluginAssetSchema, ac as insertPluginHookSchema, ad as insertPluginRouteSchema, ae as insertPluginSchema, af as insertSystemLogSchema, ag as insertUserSchema, ah as insertWorkflowHistorySchema, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, ai as logConfig, u as mapFormStatusToContentStatus, aj as media, ak as pluginActivityLog, al as pluginAssets, am as pluginHooks, an as pluginRoutes, ao as plugins, v as registerCollections, ap as selectCollectionSchema, aq as selectContentSchema, ar as selectLogConfigSchema, as as selectMediaSchema, at as selectPluginActivityLogSchema, au as selectPluginAssetSchema, av as selectPluginHookSchema, aw as selectPluginRouteSchema, ax as selectPluginSchema, ay as selectSystemLogSchema, az as selectUserSchema, aA as selectWorkflowHistorySchema, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, aB as systemLogs, aC as users, A as validateCollectionConfig, aD as workflowHistory } from './plugin-bootstrap-DfVerYV4.cjs';
4
4
  export { AuthManager, Permission, PermissionManager, UserPermissions, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeaders, securityLoggingMiddleware } from './middleware.cjs';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-COElO4Rm.js';
1
+ export { B as Bindings, a as SonicJSApp, S as SonicJSConfig, V as Variables, c as createSonicJSApp, s as setupCoreMiddleware, b as setupCoreRoutes } from './app-D9L3mrC-.js';
2
2
  import { B as schema } from './plugin-bootstrap-P_ciLp_C.js';
3
3
  export { D as Collection, E as Content, C as CorePlugin, F as DbPlugin, G as DbPluginHook, L as LogCategory, H as LogConfig, a as LogEntry, b as LogFilter, c as LogLevel, d as Logger, I as Media, M as Migration, e as MigrationService, f as MigrationStatus, N as NewCollection, J as NewContent, K as NewLogConfig, O as NewMedia, Q as NewPlugin, R as NewPluginActivityLog, S as NewPluginAsset, T as NewPluginHook, U as NewPluginRoute, V as NewSystemLog, W as NewUser, X as NewWorkflowHistory, Y as PluginActivityLog, Z as PluginAsset, P as PluginBootstrapService, _ as PluginRoute, g as PluginServiceClass, $ as SystemLog, a0 as User, a1 as WorkflowHistory, a2 as apiTokens, h as backfillFormSubmissions, i as cleanupRemovedCollections, a3 as collections, a4 as content, a5 as contentVersions, j as createContentFromSubmission, k as deriveCollectionSchemaFromFormio, l as deriveSubmissionTitle, m as fullCollectionSync, n as getAvailableCollectionNames, o as getLogger, p as getManagedCollections, q as initLogger, a6 as insertCollectionSchema, a7 as insertContentSchema, a8 as insertLogConfigSchema, a9 as insertMediaSchema, aa as insertPluginActivityLogSchema, ab as insertPluginAssetSchema, ac as insertPluginHookSchema, ad as insertPluginRouteSchema, ae as insertPluginSchema, af as insertSystemLogSchema, ag as insertUserSchema, ah as insertWorkflowHistorySchema, r as isCollectionManaged, s as loadCollectionConfig, t as loadCollectionConfigs, ai as logConfig, u as mapFormStatusToContentStatus, aj as media, ak as pluginActivityLog, al as pluginAssets, am as pluginHooks, an as pluginRoutes, ao as plugins, v as registerCollections, ap as selectCollectionSchema, aq as selectContentSchema, ar as selectLogConfigSchema, as as selectMediaSchema, at as selectPluginActivityLogSchema, au as selectPluginAssetSchema, av as selectPluginHookSchema, aw as selectPluginRouteSchema, ax as selectPluginSchema, ay as selectSystemLogSchema, az as selectUserSchema, aA as selectWorkflowHistorySchema, w as syncAllFormCollections, x as syncCollection, y as syncCollections, z as syncFormCollection, aB as systemLogs, aC as users, A as validateCollectionConfig, aD as workflowHistory } from './plugin-bootstrap-P_ciLp_C.js';
4
4
  export { AuthManager, Permission, PermissionManager, UserPermissions, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeaders, securityLoggingMiddleware } from './middleware.js';
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { renderConfirmationDialog, getConfirmationDialogScript, api_default, api_media_default, api_system_default, admin_api_default, router, adminCollectionsRoutes, adminFormsRoutes, adminSettingsRoutes, public_forms_default, router2, admin_content_default, adminMediaRoutes, userProfilesPlugin, adminPluginRoutes, adminLogsRoutes, userRoutes, auth_default, test_cleanup_default } from './chunk-WLSIUKNM.js';
2
- 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, 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, createUserProfilesPlugin, defineUserProfile, getUserProfileConfig, userProfilesPlugin } from './chunk-WLSIUKNM.js';
1
+ import { renderConfirmationDialog, getConfirmationDialogScript, api_default, api_media_default, api_system_default, admin_api_default, router, adminCollectionsRoutes, adminFormsRoutes, adminSettingsRoutes, public_forms_default, router2, admin_content_default, adminMediaRoutes, userProfilesPlugin, adminPluginRoutes, adminLogsRoutes, userRoutes, auth_default, test_cleanup_default } from './chunk-BAMJVG33.js';
2
+ 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, 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, createUserProfilesPlugin, defineUserProfile, getUserProfileConfig, userProfilesPlugin } from './chunk-BAMJVG33.js';
3
3
  import { SettingsService, setAppInstance, schema_exports } from './chunk-TBJY2FF7.js';
4
4
  export { Logger, apiTokens, collections, content, contentVersions, getLogger, initLogger, insertCollectionSchema, insertContentSchema, insertLogConfigSchema, insertMediaSchema, insertPluginActivityLogSchema, insertPluginAssetSchema, insertPluginHookSchema, insertPluginRouteSchema, insertPluginSchema, insertSystemLogSchema, insertUserSchema, insertWorkflowHistorySchema, logConfig, media, pluginActivityLog, pluginAssets, pluginHooks, pluginRoutes, plugins, selectCollectionSchema, selectContentSchema, selectLogConfigSchema, selectMediaSchema, selectPluginActivityLogSchema, selectPluginAssetSchema, selectPluginHookSchema, selectPluginRouteSchema, selectPluginSchema, selectSystemLogSchema, selectUserSchema, selectWorkflowHistorySchema, systemLogs, users, workflowHistory } from './chunk-TBJY2FF7.js';
5
- import { requireAuth, AuthManager, metricsMiddleware, bootstrapMiddleware, securityHeadersMiddleware, csrfProtection } from './chunk-Y5EH32F5.js';
6
- export { AuthManager, PermissionManager, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeadersMiddleware as securityHeaders, securityLoggingMiddleware } from './chunk-Y5EH32F5.js';
7
- import { PluginService, PLUGIN_REGISTRY } from './chunk-INSDRCG3.js';
8
- export { PluginBootstrapService, PluginService as PluginServiceClass, backfillFormSubmissions, cleanupRemovedCollections, createContentFromSubmission, deriveCollectionSchemaFromFormio, deriveSubmissionTitle, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, mapFormStatusToContentStatus, registerCollections, syncAllFormCollections, syncCollection, syncCollections, syncFormCollection, validateCollectionConfig } from './chunk-INSDRCG3.js';
9
- export { MigrationService } from './chunk-VFQUULAV.js';
5
+ import { requireAuth, AuthManager, metricsMiddleware, bootstrapMiddleware, securityHeadersMiddleware, csrfProtection, requireRole } from './chunk-KYAF33AF.js';
6
+ export { AuthManager, PermissionManager, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeadersMiddleware as securityHeaders, securityLoggingMiddleware } from './chunk-KYAF33AF.js';
7
+ import { PluginService, PLUGIN_REGISTRY } from './chunk-W33MHOPA.js';
8
+ export { PluginBootstrapService, PluginService as PluginServiceClass, backfillFormSubmissions, cleanupRemovedCollections, createContentFromSubmission, deriveCollectionSchemaFromFormio, deriveSubmissionTitle, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, mapFormStatusToContentStatus, registerCollections, syncAllFormCollections, syncCollection, syncCollections, syncFormCollection, validateCollectionConfig } from './chunk-W33MHOPA.js';
9
+ export { MigrationService } from './chunk-PUZMLXOJ.js';
10
10
  export { renderFilterBar } from './chunk-ON5ZMSU4.js';
11
11
  import { renderAdminLayout } from './chunk-XWIA3HVX.js';
12
12
  export { getConfirmationDialogScript, renderAlert, renderConfirmationDialog, renderForm, renderFormField, renderPagination, renderTable } from './chunk-XWIA3HVX.js';
@@ -14,8 +14,8 @@ import { init_admin_layout_catalyst_template, renderAdminLayoutCatalyst } from '
14
14
  export { HookSystemImpl, HookUtils, PluginManager as PluginManagerClass, PluginRegistryImpl, PluginValidator as PluginValidatorClass, ScopedHookSystem as ScopedHookSystemClass } from './chunk-TFNTM3OA.js';
15
15
  import { PluginBuilder, PluginHelpers } from './chunk-EXNEW5US.js';
16
16
  export { PluginBuilder, PluginHelpers } from './chunk-EXNEW5US.js';
17
- import { package_default, getCoreVersion } from './chunk-MVSCB4E3.js';
18
- export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, getCoreVersion, renderTemplate, templateRenderer } from './chunk-MVSCB4E3.js';
17
+ import { package_default, getCoreVersion } from './chunk-JF5RQXPN.js';
18
+ export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, getCoreVersion, renderTemplate, templateRenderer } from './chunk-JF5RQXPN.js';
19
19
  import './chunk-X7ZAEI5S.js';
20
20
  export { metricsTracker } from './chunk-FICTAGD4.js';
21
21
  export { escapeHtml, sanitizeInput, sanitizeObject } from './chunk-TQABQWOP.js';
@@ -6894,7 +6894,7 @@ function renderEventsPage(data) {
6894
6894
  <tr>
6895
6895
  <th class="px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider">Time</th>
6896
6896
  <th class="px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider">Type</th>
6897
- <th class="px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider">Object</th>
6897
+ <th class="px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider">Object / User</th>
6898
6898
  <th class="px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider">Status</th>
6899
6899
  <th class="px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider">Event ID</th>
6900
6900
  </tr>
@@ -6953,8 +6953,20 @@ function formatTimestamp3(timestamp) {
6953
6953
  second: "2-digit"
6954
6954
  });
6955
6955
  }
6956
+ function extractUserInfo(event) {
6957
+ try {
6958
+ const data = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
6959
+ const userId = data?.metadata?.sonicjs_user_id || data?.sonicjs_user_id;
6960
+ const email = data?.customer_email || data?.customerEmail || data?.receipt_email;
6961
+ return { userId: userId || void 0, email: email || void 0 };
6962
+ } catch {
6963
+ return {};
6964
+ }
6965
+ }
6956
6966
  function renderEventRow(event) {
6957
6967
  const errorTooltip = event.error ? ` title="${event.error.replace(/"/g, "&quot;")}"` : "";
6968
+ const userInfo = extractUserInfo(event);
6969
+ const userLink = userInfo.userId ? `<a href="/admin/users/${userInfo.userId}" class="text-sm text-blue-600 dark:text-blue-400 hover:underline">${userInfo.email || userInfo.userId}</a>` : userInfo.email ? `<span class="text-sm text-zinc-500 dark:text-zinc-400">${userInfo.email}</span>` : "";
6958
6970
  return `
6959
6971
  <tr class="hover:bg-zinc-950/[0.025] dark:hover:bg-white/[0.025]"${errorTooltip}>
6960
6972
  <td class="px-6 py-4 whitespace-nowrap text-sm text-zinc-500 dark:text-zinc-400">
@@ -6966,6 +6978,7 @@ function renderEventRow(event) {
6966
6978
  <td class="px-6 py-4 whitespace-nowrap">
6967
6979
  <div class="text-sm font-mono text-zinc-500 dark:text-zinc-400">${event.objectId || "-"}</div>
6968
6980
  <div class="text-xs text-zinc-400 dark:text-zinc-500">${event.objectType}</div>
6981
+ ${userLink ? `<div class="mt-1">${userLink}</div>` : ""}
6969
6982
  </td>
6970
6983
  <td class="px-6 py-4 whitespace-nowrap">${eventStatusBadge(event.status)}</td>
6971
6984
  <td class="px-6 py-4 whitespace-nowrap text-xs font-mono text-zinc-400 dark:text-zinc-500">${event.stripeEventId}</td>
@@ -10306,6 +10319,9 @@ function createSonicJSApp(config = {}) {
10306
10319
  app2.use("*", middleware);
10307
10320
  }
10308
10321
  }
10322
+ const adminRoles = config.adminAccessRoles || ["admin"];
10323
+ app2.use("/admin/*", requireAuth());
10324
+ app2.use("/admin/*", requireRole(adminRoles));
10309
10325
  app2.use("/admin/*", pluginMenuMiddleware());
10310
10326
  app2.route("/api", api_default);
10311
10327
  app2.route("/api/media", api_media_default);