@sonicjs-cms/core 2.3.14 → 2.3.16

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 (41) hide show
  1. package/dist/{chunk-CAJOP354.js → chunk-33Q6ETMQ.js} +2 -2
  2. package/dist/{chunk-CAJOP354.js.map → chunk-33Q6ETMQ.js.map} +1 -1
  3. package/dist/{chunk-ETS5XSAG.cjs → chunk-4CLJPURJ.cjs} +2 -2
  4. package/dist/{chunk-ETS5XSAG.cjs.map → chunk-4CLJPURJ.cjs.map} +1 -1
  5. package/dist/{chunk-XWPGIFS7.cjs → chunk-AE27GPMY.cjs} +4 -4
  6. package/dist/{chunk-XWPGIFS7.cjs.map → chunk-AE27GPMY.cjs.map} +1 -1
  7. package/dist/{chunk-H34L445M.js → chunk-ATNWDVAD.js} +3 -3
  8. package/dist/{chunk-H34L445M.js.map → chunk-ATNWDVAD.js.map} +1 -1
  9. package/dist/{chunk-SZE3XVET.cjs → chunk-EUQDJQHJ.cjs} +3 -3
  10. package/dist/{chunk-SZE3XVET.cjs.map → chunk-EUQDJQHJ.cjs.map} +1 -1
  11. package/dist/{chunk-D4PJFFOV.cjs → chunk-ICDJ7KPP.cjs} +90 -90
  12. package/dist/{chunk-D4PJFFOV.cjs.map → chunk-ICDJ7KPP.cjs.map} +1 -1
  13. package/dist/{chunk-SKPETEM5.js → chunk-LRFDZHLM.js} +3 -3
  14. package/dist/{chunk-SKPETEM5.js.map → chunk-LRFDZHLM.js.map} +1 -1
  15. package/dist/{chunk-T4XRPNX2.js → chunk-QUBMTYRI.js} +8 -8
  16. package/dist/{chunk-T4XRPNX2.js.map → chunk-QUBMTYRI.js.map} +1 -1
  17. package/dist/index.cjs +118 -77
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +48 -7
  22. package/dist/index.js.map +1 -1
  23. package/dist/middleware.cjs +23 -23
  24. package/dist/middleware.js +2 -2
  25. package/dist/migrations-7TWFJVNT.js +4 -0
  26. package/dist/{migrations-WF6VIVU2.js.map → migrations-7TWFJVNT.js.map} +1 -1
  27. package/dist/migrations-QCBN4TLD.cjs +13 -0
  28. package/dist/{migrations-3A53GREK.cjs.map → migrations-QCBN4TLD.cjs.map} +1 -1
  29. package/dist/{plugin-manifest-BCMx9CAq.d.cts → plugin-manifest-Dpy8wxIB.d.cts} +2 -2
  30. package/dist/{plugin-manifest-BCMx9CAq.d.ts → plugin-manifest-Dpy8wxIB.d.ts} +2 -2
  31. package/dist/routes.cjs +24 -24
  32. package/dist/routes.js +4 -4
  33. package/dist/services.cjs +2 -2
  34. package/dist/services.js +1 -1
  35. package/dist/types.d.cts +1 -1
  36. package/dist/types.d.ts +1 -1
  37. package/dist/utils.cjs +11 -11
  38. package/dist/utils.js +1 -1
  39. package/package.json +1 -1
  40. package/dist/migrations-3A53GREK.cjs +0 -13
  41. package/dist/migrations-WF6VIVU2.js +0 -4
package/dist/index.d.cts CHANGED
@@ -7,7 +7,7 @@ export { ROUTES_INFO, adminApiRoutes, adminCheckboxRoutes, adminCodeExamplesRout
7
7
  export { A as AlertData, C as ConfirmationDialogOptions, k as Filter, j as FilterBarData, l as FilterOption, h as FormData, F as FormField, P as PaginationData, T as TableColumn, i as TableData, g as getConfirmationDialogScript, d as renderAlert, e as renderConfirmationDialog, f as renderFilterBar, r as renderForm, a as renderFormField, c as renderPagination, b as renderTable } from './filter-bar.template-By4jeiw_.cjs';
8
8
  export { b as CollectionConfig, c as CollectionConfigModule, C as CollectionSchema, d as CollectionSyncResult, a as FieldConfig, F as FieldType } from './collection-config-FLlGtsh9.cjs';
9
9
  export { A as AuthService, C as ContentService, v as HOOKS, k as HookContext, H as HookHandler, u as HookName, l as HookSystem, p as MediaService, P as Plugin, g as PluginAdminPage, r as PluginBuilderOptions, h as PluginComponent, b as PluginConfig, a as PluginContext, j as PluginHook, q as PluginLogger, n as PluginManager, i as PluginMenuItem, d as PluginMiddleware, e as PluginModel, m as PluginRegistry, c as PluginRoutes, f as PluginService, o as PluginStatus, t as PluginValidationResult, s as PluginValidator, S as ScopedHookSystem } from './plugin-zvZpaiP5.cjs';
10
- export { P as PluginManifest } from './plugin-manifest-BCMx9CAq.cjs';
10
+ export { P as PluginManifest } from './plugin-manifest-Dpy8wxIB.cjs';
11
11
  export { c as FilterCondition, d as FilterGroup, F as FilterOperator, f as QueryFilter, Q as QueryFilterBuilder, h as QueryResult, S as SONICJS_VERSION, T as TemplateRenderer, b as buildQuery, e as escapeHtml, g as getCoreVersion, m as metricsTracker, r as renderTemplate, s as sanitizeInput, a as sanitizeObject, t as templateRenderer } from './version-vktVAxhe.cjs';
12
12
  import * as drizzle_orm_d1 from 'drizzle-orm/d1';
13
13
  import 'hono';
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export { ROUTES_INFO, adminApiRoutes, adminCheckboxRoutes, adminCodeExamplesRout
7
7
  export { A as AlertData, C as ConfirmationDialogOptions, k as Filter, j as FilterBarData, l as FilterOption, h as FormData, F as FormField, P as PaginationData, T as TableColumn, i as TableData, g as getConfirmationDialogScript, d as renderAlert, e as renderConfirmationDialog, f as renderFilterBar, r as renderForm, a as renderFormField, c as renderPagination, b as renderTable } from './filter-bar.template-By4jeiw_.js';
8
8
  export { b as CollectionConfig, c as CollectionConfigModule, C as CollectionSchema, d as CollectionSyncResult, a as FieldConfig, F as FieldType } from './collection-config-FLlGtsh9.js';
9
9
  export { A as AuthService, C as ContentService, v as HOOKS, k as HookContext, H as HookHandler, u as HookName, l as HookSystem, p as MediaService, P as Plugin, g as PluginAdminPage, r as PluginBuilderOptions, h as PluginComponent, b as PluginConfig, a as PluginContext, j as PluginHook, q as PluginLogger, n as PluginManager, i as PluginMenuItem, d as PluginMiddleware, e as PluginModel, m as PluginRegistry, c as PluginRoutes, f as PluginService, o as PluginStatus, t as PluginValidationResult, s as PluginValidator, S as ScopedHookSystem } from './plugin-zvZpaiP5.js';
10
- export { P as PluginManifest } from './plugin-manifest-BCMx9CAq.js';
10
+ export { P as PluginManifest } from './plugin-manifest-Dpy8wxIB.js';
11
11
  export { c as FilterCondition, d as FilterGroup, F as FilterOperator, f as QueryFilter, Q as QueryFilterBuilder, h as QueryResult, S as SONICJS_VERSION, T as TemplateRenderer, b as buildQuery, e as escapeHtml, g as getCoreVersion, m as metricsTracker, r as renderTemplate, s as sanitizeInput, a as sanitizeObject, t as templateRenderer } from './version-vktVAxhe.js';
12
12
  import * as drizzle_orm_d1 from 'drizzle-orm/d1';
13
13
  import 'hono';
package/dist/index.js CHANGED
@@ -1,23 +1,24 @@
1
- import { PluginBuilder, api_default, api_media_default, api_system_default, admin_api_default, router, adminCollectionsRoutes, adminSettingsRoutes, admin_content_default, adminMediaRoutes, adminPluginRoutes, adminLogsRoutes, userRoutes, auth_default, test_cleanup_default } from './chunk-T4XRPNX2.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 } from './chunk-T4XRPNX2.js';
1
+ import { PluginBuilder, api_default, api_media_default, api_system_default, admin_api_default, router, adminCollectionsRoutes, adminSettingsRoutes, admin_content_default, adminMediaRoutes, adminPluginRoutes, adminLogsRoutes, userRoutes, auth_default, test_cleanup_default } from './chunk-QUBMTYRI.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 } from './chunk-QUBMTYRI.js';
3
3
  import { schema_exports } from './chunk-3YNNVSMC.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-3YNNVSMC.js';
5
- import { AuthManager, metricsMiddleware, bootstrapMiddleware, requireAuth } from './chunk-H34L445M.js';
6
- export { AuthManager, PermissionManager, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeaders, securityLoggingMiddleware } from './chunk-H34L445M.js';
5
+ import { AuthManager, metricsMiddleware, bootstrapMiddleware, requireAuth } from './chunk-ATNWDVAD.js';
6
+ export { AuthManager, PermissionManager, bootstrapMiddleware, cacheHeaders, compressionMiddleware, detailedLoggingMiddleware, getActivePlugins, isPluginActive, logActivity, loggingMiddleware, optionalAuth, performanceLoggingMiddleware, requireActivePlugin, requireActivePlugins, requireAnyPermission, requireAuth, requirePermission, requireRole, securityHeaders, securityLoggingMiddleware } from './chunk-ATNWDVAD.js';
7
7
  export { PluginBootstrapService, PluginService as PluginServiceClass, cleanupRemovedCollections, fullCollectionSync, getAvailableCollectionNames, getManagedCollections, isCollectionManaged, loadCollectionConfig, loadCollectionConfigs, registerCollections, syncCollection, syncCollections, validateCollectionConfig } from './chunk-SGAG6FD3.js';
8
- export { MigrationService } from './chunk-CAJOP354.js';
8
+ export { MigrationService } from './chunk-33Q6ETMQ.js';
9
9
  export { renderFilterBar } from './chunk-AVPUX57O.js';
10
10
  import { init_admin_layout_catalyst_template, renderAdminLayout, adminLayoutV2, renderAdminLayoutCatalyst } from './chunk-V5LBQN3I.js';
11
11
  export { getConfirmationDialogScript, renderAlert, renderConfirmationDialog, renderForm, renderFormField, renderPagination, renderTable } from './chunk-V5LBQN3I.js';
12
12
  export { HookSystemImpl, HookUtils, PluginManager as PluginManagerClass, PluginRegistryImpl, PluginValidator as PluginValidatorClass, ScopedHookSystem as ScopedHookSystemClass } from './chunk-CPXAVWCU.js';
13
- import { package_default, getCoreVersion } from './chunk-SKPETEM5.js';
14
- export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, escapeHtml, getCoreVersion, renderTemplate, sanitizeInput, sanitizeObject, templateRenderer } from './chunk-SKPETEM5.js';
13
+ import { package_default, getCoreVersion } from './chunk-LRFDZHLM.js';
14
+ export { QueryFilterBuilder, SONICJS_VERSION, TemplateRenderer, buildQuery, escapeHtml, getCoreVersion, renderTemplate, sanitizeInput, sanitizeObject, templateRenderer } from './chunk-LRFDZHLM.js';
15
15
  import './chunk-X7ZAEI5S.js';
16
16
  export { metricsTracker } from './chunk-FICTAGD4.js';
17
17
  export { HOOKS } from './chunk-LOUJRBXV.js';
18
18
  import './chunk-V4OQ3NZ2.js';
19
19
  import { Hono } from 'hono';
20
20
  import { html } from 'hono/html';
21
+ import { setCookie } from 'hono/cookie';
21
22
  import { z } from 'zod';
22
23
  import { drizzle } from 'drizzle-orm/d1';
23
24
 
@@ -1492,6 +1493,37 @@ function createOTPLoginPlugin() {
1492
1493
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
1493
1494
  appName: settings.appName
1494
1495
  });
1496
+ const emailPlugin2 = await db.prepare(`
1497
+ SELECT settings FROM plugins WHERE id = 'email'
1498
+ `).first();
1499
+ if (emailPlugin2?.settings) {
1500
+ const emailSettings = JSON.parse(emailPlugin2.settings);
1501
+ if (emailSettings.apiKey && emailSettings.fromEmail && emailSettings.fromName) {
1502
+ const emailResponse = await fetch("https://api.resend.com/emails", {
1503
+ method: "POST",
1504
+ headers: {
1505
+ "Authorization": `Bearer ${emailSettings.apiKey}`,
1506
+ "Content-Type": "application/json"
1507
+ },
1508
+ body: JSON.stringify({
1509
+ from: `${emailSettings.fromName} <${emailSettings.fromEmail}>`,
1510
+ to: [normalizedEmail],
1511
+ subject: `Your login code for ${settings.appName}`,
1512
+ html: emailContent.html,
1513
+ text: emailContent.text,
1514
+ reply_to: emailSettings.replyTo || emailSettings.fromEmail
1515
+ })
1516
+ });
1517
+ if (!emailResponse.ok) {
1518
+ const errorData = await emailResponse.json();
1519
+ console.error("Failed to send OTP email via Resend:", errorData);
1520
+ }
1521
+ } else {
1522
+ console.warn("Email plugin is not fully configured (missing apiKey, fromEmail, or fromName)");
1523
+ }
1524
+ } else {
1525
+ console.warn("Email plugin is not active or has no settings configured");
1526
+ }
1495
1527
  const response = {
1496
1528
  message: "If an account exists for this email, you will receive a verification code shortly.",
1497
1529
  expiresIn: settings.codeExpiryMinutes * 60
@@ -1551,6 +1583,14 @@ function createOTPLoginPlugin() {
1551
1583
  error: "Account is deactivated"
1552
1584
  }, 403);
1553
1585
  }
1586
+ const token = await AuthManager.generateToken(user.id, user.email, user.role);
1587
+ setCookie(c, "auth_token", token, {
1588
+ httpOnly: true,
1589
+ secure: true,
1590
+ sameSite: "Strict",
1591
+ maxAge: 60 * 60 * 24
1592
+ // 24 hours
1593
+ });
1554
1594
  return c.json({
1555
1595
  success: true,
1556
1596
  user: {
@@ -1558,6 +1598,7 @@ function createOTPLoginPlugin() {
1558
1598
  email: user.email,
1559
1599
  role: user.role
1560
1600
  },
1601
+ token,
1561
1602
  message: "Authentication successful"
1562
1603
  });
1563
1604
  } catch (error) {