@sonicjs-cms/core 3.0.0-beta.12 → 3.0.0-beta.14

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 (86) hide show
  1. package/dist/{chunk-INKP2WNU.js → chunk-32SDMKZ7.js} +2 -2
  2. package/dist/{chunk-INKP2WNU.js.map → chunk-32SDMKZ7.js.map} +1 -1
  3. package/dist/{chunk-NYLWNR6T.cjs → chunk-4YRYGDCQ.cjs} +4 -4
  4. package/dist/{chunk-NYLWNR6T.cjs.map → chunk-4YRYGDCQ.cjs.map} +1 -1
  5. package/dist/{chunk-Q3P7Y5VO.js → chunk-5L6EMI7A.js} +4 -4
  6. package/dist/{chunk-Q3P7Y5VO.js.map → chunk-5L6EMI7A.js.map} +1 -1
  7. package/dist/{chunk-IVPRUGTY.js → chunk-75JKPNUZ.js} +3 -3
  8. package/dist/{chunk-IVPRUGTY.js.map → chunk-75JKPNUZ.js.map} +1 -1
  9. package/dist/{chunk-SY7CBACS.cjs → chunk-G5LC7MYH.cjs} +10 -10
  10. package/dist/{chunk-SY7CBACS.cjs.map → chunk-G5LC7MYH.cjs.map} +1 -1
  11. package/dist/{chunk-KI5KMJH2.cjs → chunk-H5FB6GKR.cjs} +2 -2
  12. package/dist/{chunk-KI5KMJH2.cjs.map → chunk-H5FB6GKR.cjs.map} +1 -1
  13. package/dist/{chunk-R2O6TTQS.js → chunk-HNUGMALL.js} +224 -18
  14. package/dist/chunk-HNUGMALL.js.map +1 -0
  15. package/dist/{chunk-SUHGXAII.js → chunk-INE5E3SL.js} +2 -2
  16. package/dist/{chunk-SUHGXAII.js.map → chunk-INE5E3SL.js.map} +1 -1
  17. package/dist/{chunk-BYLQOBO6.cjs → chunk-L3KHLEHL.cjs} +25 -41
  18. package/dist/chunk-L3KHLEHL.cjs.map +1 -0
  19. package/dist/{chunk-DMXDQ5YI.js → chunk-O32IZ6JS.js} +15 -31
  20. package/dist/chunk-O32IZ6JS.js.map +1 -0
  21. package/dist/{chunk-BLMTL57B.js → chunk-PDC7DLOV.js} +21 -3
  22. package/dist/chunk-PDC7DLOV.js.map +1 -0
  23. package/dist/{chunk-XHBEFQJ3.js → chunk-QNPT6BQP.js} +3 -3
  24. package/dist/{chunk-XHBEFQJ3.js.map → chunk-QNPT6BQP.js.map} +1 -1
  25. package/dist/{chunk-XGH2FVVR.cjs → chunk-SIPBHWMG.cjs} +4 -4
  26. package/dist/{chunk-XGH2FVVR.cjs.map → chunk-SIPBHWMG.cjs.map} +1 -1
  27. package/dist/{chunk-TV7LRFXH.cjs → chunk-SSOP7G4R.cjs} +441 -235
  28. package/dist/chunk-SSOP7G4R.cjs.map +1 -0
  29. package/dist/{chunk-ALNODOY4.js → chunk-U7T5EOHJ.js} +4 -4
  30. package/dist/{chunk-ALNODOY4.js.map → chunk-U7T5EOHJ.js.map} +1 -1
  31. package/dist/{chunk-2CB4KY7I.cjs → chunk-W36OZTJ5.cjs} +21 -3
  32. package/dist/chunk-W36OZTJ5.cjs.map +1 -0
  33. package/dist/{chunk-LLWLHFTD.cjs → chunk-WIV3R2MJ.cjs} +2 -2
  34. package/dist/{chunk-LLWLHFTD.cjs.map → chunk-WIV3R2MJ.cjs.map} +1 -1
  35. package/dist/{chunk-NUKJ54GA.cjs → chunk-ZTEJHSYS.cjs} +3 -3
  36. package/dist/{chunk-NUKJ54GA.cjs.map → chunk-ZTEJHSYS.cjs.map} +1 -1
  37. package/dist/{collection-config-JgHOpFCG.d.cts → collection-config-BTzAvKt2.d.cts} +25 -0
  38. package/dist/{collection-config-JgHOpFCG.d.ts → collection-config-BTzAvKt2.d.ts} +25 -0
  39. package/dist/{config-ON6FNMYX.cjs → config-FLOUCYHH.cjs} +5 -5
  40. package/dist/{config-ON6FNMYX.cjs.map → config-FLOUCYHH.cjs.map} +1 -1
  41. package/dist/config-PLJTDINX.js +6 -0
  42. package/dist/{config-HFXANXCC.js.map → config-PLJTDINX.js.map} +1 -1
  43. package/dist/index.cjs +275 -275
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.d.cts +4 -4
  46. package/dist/index.d.ts +4 -4
  47. package/dist/index.js +19 -19
  48. package/dist/index.js.map +1 -1
  49. package/dist/middleware.cjs +34 -33
  50. package/dist/middleware.js +5 -4
  51. package/dist/migrations-DOPZXFK3.js +4 -0
  52. package/dist/{migrations-MLBACCPF.js.map → migrations-DOPZXFK3.js.map} +1 -1
  53. package/dist/migrations-TYYC66P4.cjs +13 -0
  54. package/dist/{migrations-AFSCRO56.cjs.map → migrations-TYYC66P4.cjs.map} +1 -1
  55. package/dist/{plugin-bootstrap-B8ThJU21.d.cts → plugin-bootstrap-BHWQ2df8.d.cts} +1 -1
  56. package/dist/{plugin-bootstrap-qu8hJgUt.d.ts → plugin-bootstrap-Bj4fxX1q.d.ts} +1 -1
  57. package/dist/plugins.cjs +40 -40
  58. package/dist/plugins.js +3 -3
  59. package/dist/rbac-4QLDXIDF.js +5 -0
  60. package/dist/{rbac-O73MFKDA.js.map → rbac-4QLDXIDF.js.map} +1 -1
  61. package/dist/rbac-ESTOCVT2.cjs +14 -0
  62. package/dist/{rbac-VONLJJKB.cjs.map → rbac-ESTOCVT2.cjs.map} +1 -1
  63. package/dist/routes.cjs +27 -27
  64. package/dist/routes.js +7 -7
  65. package/dist/services.cjs +18 -18
  66. package/dist/services.d.cts +2 -2
  67. package/dist/services.d.ts +2 -2
  68. package/dist/services.js +2 -2
  69. package/dist/types.d.cts +1 -1
  70. package/dist/types.d.ts +1 -1
  71. package/dist/utils.cjs +3 -3
  72. package/dist/utils.d.cts +1 -1
  73. package/dist/utils.d.ts +1 -1
  74. package/dist/utils.js +1 -1
  75. package/package.json +2 -2
  76. package/dist/chunk-2CB4KY7I.cjs.map +0 -1
  77. package/dist/chunk-BLMTL57B.js.map +0 -1
  78. package/dist/chunk-BYLQOBO6.cjs.map +0 -1
  79. package/dist/chunk-DMXDQ5YI.js.map +0 -1
  80. package/dist/chunk-R2O6TTQS.js.map +0 -1
  81. package/dist/chunk-TV7LRFXH.cjs.map +0 -1
  82. package/dist/config-HFXANXCC.js +0 -6
  83. package/dist/migrations-AFSCRO56.cjs +0 -13
  84. package/dist/migrations-MLBACCPF.js +0 -4
  85. package/dist/rbac-O73MFKDA.js +0 -5
  86. package/dist/rbac-VONLJJKB.cjs +0 -14
package/dist/index.cjs CHANGED
@@ -1,27 +1,27 @@
1
1
  'use strict';
2
2
 
3
- var chunkNUKJ54GA_cjs = require('./chunk-NUKJ54GA.cjs');
4
- var chunkTV7LRFXH_cjs = require('./chunk-TV7LRFXH.cjs');
3
+ var chunkZTEJHSYS_cjs = require('./chunk-ZTEJHSYS.cjs');
4
+ var chunkSSOP7G4R_cjs = require('./chunk-SSOP7G4R.cjs');
5
5
  require('./chunk-HIKBY7MS.cjs');
6
6
  require('./chunk-N32OWET6.cjs');
7
7
  var chunk4BTBSXMR_cjs = require('./chunk-4BTBSXMR.cjs');
8
8
  var chunkYA3TJ65D_cjs = require('./chunk-YA3TJ65D.cjs');
9
9
  var chunkYP7GW2G5_cjs = require('./chunk-YP7GW2G5.cjs');
10
- var chunkBYLQOBO6_cjs = require('./chunk-BYLQOBO6.cjs');
11
- var chunk2CB4KY7I_cjs = require('./chunk-2CB4KY7I.cjs');
10
+ var chunkL3KHLEHL_cjs = require('./chunk-L3KHLEHL.cjs');
11
+ var chunkW36OZTJ5_cjs = require('./chunk-W36OZTJ5.cjs');
12
12
  var chunkJEQ7FLOD_cjs = require('./chunk-JEQ7FLOD.cjs');
13
- var chunkLLWLHFTD_cjs = require('./chunk-LLWLHFTD.cjs');
14
- var chunkKI5KMJH2_cjs = require('./chunk-KI5KMJH2.cjs');
13
+ var chunkWIV3R2MJ_cjs = require('./chunk-WIV3R2MJ.cjs');
14
+ var chunkH5FB6GKR_cjs = require('./chunk-H5FB6GKR.cjs');
15
15
  var chunkCRGUD4KC_cjs = require('./chunk-CRGUD4KC.cjs');
16
16
  var chunkPXNTCCPE_cjs = require('./chunk-PXNTCCPE.cjs');
17
17
  var chunkK623Q6WD_cjs = require('./chunk-K623Q6WD.cjs');
18
- var chunkSY7CBACS_cjs = require('./chunk-SY7CBACS.cjs');
19
- var chunkNYLWNR6T_cjs = require('./chunk-NYLWNR6T.cjs');
18
+ var chunkG5LC7MYH_cjs = require('./chunk-G5LC7MYH.cjs');
19
+ var chunk4YRYGDCQ_cjs = require('./chunk-4YRYGDCQ.cjs');
20
20
  var chunkJ6JTWD2A_cjs = require('./chunk-J6JTWD2A.cjs');
21
21
  var chunkIXUHXTHW_cjs = require('./chunk-IXUHXTHW.cjs');
22
22
  var chunkRCQ2HIQD_cjs = require('./chunk-RCQ2HIQD.cjs');
23
23
  require('./chunk-P3XDZL6Q.cjs');
24
- var chunkXGH2FVVR_cjs = require('./chunk-XGH2FVVR.cjs');
24
+ var chunkSIPBHWMG_cjs = require('./chunk-SIPBHWMG.cjs');
25
25
  var chunkMNWKYY5E_cjs = require('./chunk-MNWKYY5E.cjs');
26
26
  var chunkQTFKZBLC_cjs = require('./chunk-QTFKZBLC.cjs');
27
27
  require('./chunk-IGJUBJBW.cjs');
@@ -574,7 +574,7 @@ function formatCellValue(value) {
574
574
  // src/plugins/core-plugins/database-tools-plugin/admin-routes.ts
575
575
  function createDatabaseToolsAdminRoutes() {
576
576
  const router3 = new hono.Hono();
577
- router3.use("*", chunkBYLQOBO6_cjs.requireAuth());
577
+ router3.use("*", chunkL3KHLEHL_cjs.requireAuth());
578
578
  router3.get("/api/stats", async (c) => {
579
579
  try {
580
580
  const user = c.get("user");
@@ -977,7 +977,7 @@ var SiteConfigService = class {
977
977
 
978
978
  // src/plugins/core-plugins/email-plugin/routes/admin.ts
979
979
  var adminRoutes = new hono.Hono();
980
- adminRoutes.use("*", chunkBYLQOBO6_cjs.requireAuth());
980
+ adminRoutes.use("*", chunkL3KHLEHL_cjs.requireAuth());
981
981
  adminRoutes.post("/settings", async (c) => {
982
982
  if (c.get("user")?.role !== "admin") {
983
983
  return c.json({ error: "admin role required" }, 403);
@@ -1015,7 +1015,7 @@ adminRoutes.post("/test", async (c) => {
1015
1015
  const { subject, html: html4, text } = renderTestEmail({ siteName });
1016
1016
  try {
1017
1017
  const settingsLoaded = await settings.load();
1018
- const result = await chunkTV7LRFXH_cjs.getEmailService().send({
1018
+ const result = await chunkSSOP7G4R_cjs.getEmailService().send({
1019
1019
  to,
1020
1020
  subject,
1021
1021
  html: html4,
@@ -1097,7 +1097,7 @@ function makeOnRegistrationCompleted(env) {
1097
1097
  siteName,
1098
1098
  loginUrl: siteConfig.buildLoginUrl(siteUrl)
1099
1099
  });
1100
- const result = await chunkTV7LRFXH_cjs.getEmailService().send({
1100
+ const result = await chunkSSOP7G4R_cjs.getEmailService().send({
1101
1101
  to: user.email,
1102
1102
  subject,
1103
1103
  html: html4,
@@ -1171,7 +1171,7 @@ function makeOnPasswordResetRequested(env) {
1171
1171
  expiresAt: Date.now() + DEFAULT_EXPIRY_MS,
1172
1172
  siteName
1173
1173
  });
1174
- const result = await chunkTV7LRFXH_cjs.getEmailService().send({
1174
+ const result = await chunkSSOP7G4R_cjs.getEmailService().send({
1175
1175
  to: user.email,
1176
1176
  subject,
1177
1177
  html: html4,
@@ -1239,7 +1239,7 @@ function makeOnPasswordResetCompleted(env) {
1239
1239
  supportEmail,
1240
1240
  when: Date.now()
1241
1241
  });
1242
- const result = await chunkTV7LRFXH_cjs.getEmailService().send({
1242
+ const result = await chunkSSOP7G4R_cjs.getEmailService().send({
1243
1243
  to: user.email,
1244
1244
  subject,
1245
1245
  html: html4,
@@ -1971,7 +1971,7 @@ var CloudflareEmailProvider = class {
1971
1971
  }
1972
1972
  }
1973
1973
  };
1974
- var emailPluginV3 = chunkNYLWNR6T_cjs.definePlugin({
1974
+ var emailPluginV3 = chunk4YRYGDCQ_cjs.definePlugin({
1975
1975
  id: "email",
1976
1976
  version: "1.0.0",
1977
1977
  name: "Email",
@@ -1985,7 +1985,7 @@ var emailPluginV3 = chunkNYLWNR6T_cjs.definePlugin({
1985
1985
  const db = env.DB;
1986
1986
  if (db) {
1987
1987
  try {
1988
- const typeRegistry = new chunkBYLQOBO6_cjs.DocumentTypeRegistry(db);
1988
+ const typeRegistry = new chunkL3KHLEHL_cjs.DocumentTypeRegistry(db);
1989
1989
  await typeRegistry.register({
1990
1990
  id: "email_log",
1991
1991
  name: "email_log",
@@ -2000,7 +2000,7 @@ var emailPluginV3 = chunkNYLWNR6T_cjs.definePlugin({
2000
2000
  } catch {
2001
2001
  }
2002
2002
  }
2003
- if (!chunkTV7LRFXH_cjs.hasEmailService()) {
2003
+ if (!chunkSSOP7G4R_cjs.hasEmailService()) {
2004
2004
  const settings = db ? await new EmailSettingsService(db).load() : {};
2005
2005
  const envResendKey = typeof env.RESEND_API_KEY === "string" && env.RESEND_API_KEY ? env.RESEND_API_KEY : void 0;
2006
2006
  const cfEmailBinding = env.EMAIL;
@@ -2018,7 +2018,7 @@ var emailPluginV3 = chunkNYLWNR6T_cjs.definePlugin({
2018
2018
  } else {
2019
2019
  provider = resolveEmailProvider({ env });
2020
2020
  }
2021
- chunkTV7LRFXH_cjs.setEmailService(new EmailService({ ...serviceOpts, provider }));
2021
+ chunkSSOP7G4R_cjs.setEmailService(new EmailService({ ...serviceOpts, provider }));
2022
2022
  }
2023
2023
  ctx.hooks.on("auth:registration:completed", makeOnRegistrationCompleted(env));
2024
2024
  ctx.hooks.on("auth:password-reset:requested", makeOnPasswordResetRequested(env));
@@ -2029,7 +2029,7 @@ var emailPluginV3 = chunkNYLWNR6T_cjs.definePlugin({
2029
2029
  var BATCH_SIZE = 100;
2030
2030
  ({
2031
2031
  schema: zod.z.record(zod.z.string(), zod.z.unknown())});
2032
- var emailReconciliationPlugin = chunkNYLWNR6T_cjs.definePlugin({
2032
+ var emailReconciliationPlugin = chunk4YRYGDCQ_cjs.definePlugin({
2033
2033
  id: "email-reconciliation",
2034
2034
  version: "1.0.0",
2035
2035
  description: "Hourly cron that backfills email delivery state from provider status APIs. Only active for providers that implement EmailProvider.reconcile().",
@@ -2050,11 +2050,11 @@ var emailReconciliationPlugin = chunkNYLWNR6T_cjs.definePlugin({
2050
2050
  console.warn("[email-reconciliation] No DB binding in cron env \u2014 skipping.");
2051
2051
  return;
2052
2052
  }
2053
- if (!chunkTV7LRFXH_cjs.hasEmailService()) {
2053
+ if (!chunkSSOP7G4R_cjs.hasEmailService()) {
2054
2054
  console.warn("[email-reconciliation] EmailService not initialized \u2014 skipping.");
2055
2055
  return;
2056
2056
  }
2057
- const emailService = chunkTV7LRFXH_cjs.getEmailService();
2057
+ const emailService = chunkSSOP7G4R_cjs.getEmailService();
2058
2058
  let rows = [];
2059
2059
  try {
2060
2060
  const result = await db.prepare(
@@ -2540,8 +2540,8 @@ function buildOtpApi() {
2540
2540
  loginUrl: settings.loginUrl || "",
2541
2541
  loginButtonText: settings.loginButtonText || ""
2542
2542
  });
2543
- if (chunkTV7LRFXH_cjs.hasEmailService()) {
2544
- const sent = await chunkTV7LRFXH_cjs.getEmailService().send({
2543
+ if (chunkSSOP7G4R_cjs.hasEmailService()) {
2544
+ const sent = await chunkSSOP7G4R_cjs.getEmailService().send({
2545
2545
  to: normalizedEmail,
2546
2546
  subject: `Your login code for ${siteName}`,
2547
2547
  flow: "otp",
@@ -2643,21 +2643,21 @@ function buildOtpApi() {
2643
2643
  error: "Account is deactivated"
2644
2644
  }, 403);
2645
2645
  }
2646
- const tokenTtl = await chunkBYLQOBO6_cjs.getJwtExpirySecondsFromDb(db, c.env);
2647
- const token = await chunkBYLQOBO6_cjs.AuthManager.generateToken(user.id, user.email, user.role, c.env.JWT_SECRET, tokenTtl);
2646
+ const tokenTtl = await chunkL3KHLEHL_cjs.getJwtExpirySecondsFromDb(db, c.env);
2647
+ const token = await chunkL3KHLEHL_cjs.AuthManager.generateToken(user.id, user.email, user.role, c.env.JWT_SECRET, tokenTtl);
2648
2648
  cookie.setCookie(c, "auth_token", token, {
2649
2649
  httpOnly: true,
2650
2650
  secure: true,
2651
2651
  sameSite: "Strict",
2652
2652
  maxAge: tokenTtl
2653
2653
  });
2654
- chunkTV7LRFXH_cjs.dispatchHookEvent(
2654
+ chunkSSOP7G4R_cjs.dispatchHookEvent(
2655
2655
  c,
2656
2656
  "auth:otp:verified",
2657
2657
  { user: { id: user.id, email: user.email, role: user.role } },
2658
2658
  "fire-and-forget"
2659
2659
  );
2660
- const customData = await chunkTV7LRFXH_cjs.getCustomData(db, user.id);
2660
+ const customData = await chunkSSOP7G4R_cjs.getCustomData(db, user.id);
2661
2661
  const { is_active: _isActive, ...publicUser } = user;
2662
2662
  return c.json({
2663
2663
  success: true,
@@ -2702,7 +2702,7 @@ function buildOtpApi() {
2702
2702
  });
2703
2703
  return otpAPI;
2704
2704
  }
2705
- var otpLoginPlugin = chunkNYLWNR6T_cjs.definePlugin({
2705
+ var otpLoginPlugin = chunk4YRYGDCQ_cjs.definePlugin({
2706
2706
  id: "otp-login",
2707
2707
  version: "1.0.0",
2708
2708
  name: "OTP Login",
@@ -3099,15 +3099,15 @@ function buildOauthApi() {
3099
3099
  if (!user || !user.is_active) {
3100
3100
  return c.redirect("/auth/login?error=Account is deactivated");
3101
3101
  }
3102
- const tokenTtl2 = await chunkBYLQOBO6_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
3103
- const jwt2 = await chunkBYLQOBO6_cjs.AuthManager.generateToken(
3102
+ const tokenTtl2 = await chunkL3KHLEHL_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
3103
+ const jwt2 = await chunkL3KHLEHL_cjs.AuthManager.generateToken(
3104
3104
  user.id,
3105
3105
  user.email,
3106
3106
  user.role,
3107
3107
  c.env.JWT_SECRET,
3108
3108
  tokenTtl2
3109
3109
  );
3110
- chunkBYLQOBO6_cjs.AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax", maxAge: tokenTtl2 });
3110
+ chunkL3KHLEHL_cjs.AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax", maxAge: tokenTtl2 });
3111
3111
  return c.redirect("/admin");
3112
3112
  }
3113
3113
  const existingUser = await oauthService.findUserByEmail(profile.email);
@@ -3124,15 +3124,15 @@ function buildOauthApi() {
3124
3124
  tokenExpiresAt: tokenExpiresAt ?? void 0,
3125
3125
  profileData: JSON.stringify(profile)
3126
3126
  });
3127
- const tokenTtl2 = await chunkBYLQOBO6_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
3128
- const jwt2 = await chunkBYLQOBO6_cjs.AuthManager.generateToken(
3127
+ const tokenTtl2 = await chunkL3KHLEHL_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
3128
+ const jwt2 = await chunkL3KHLEHL_cjs.AuthManager.generateToken(
3129
3129
  existingUser.id,
3130
3130
  existingUser.email,
3131
3131
  existingUser.role,
3132
3132
  c.env.JWT_SECRET,
3133
3133
  tokenTtl2
3134
3134
  );
3135
- chunkBYLQOBO6_cjs.AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax", maxAge: tokenTtl2 });
3135
+ chunkL3KHLEHL_cjs.AuthManager.setAuthCookie(c, jwt2, { sameSite: "Lax", maxAge: tokenTtl2 });
3136
3136
  return c.redirect("/admin");
3137
3137
  }
3138
3138
  const newUserId = await oauthService.createUserFromOAuth(profile);
@@ -3145,15 +3145,15 @@ function buildOauthApi() {
3145
3145
  tokenExpiresAt: tokenExpiresAt ?? void 0,
3146
3146
  profileData: JSON.stringify(profile)
3147
3147
  });
3148
- const tokenTtl = await chunkBYLQOBO6_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
3149
- const jwt = await chunkBYLQOBO6_cjs.AuthManager.generateToken(
3148
+ const tokenTtl = await chunkL3KHLEHL_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
3149
+ const jwt = await chunkL3KHLEHL_cjs.AuthManager.generateToken(
3150
3150
  newUserId,
3151
3151
  profile.email.toLowerCase(),
3152
3152
  "viewer",
3153
3153
  c.env.JWT_SECRET,
3154
3154
  tokenTtl
3155
3155
  );
3156
- chunkBYLQOBO6_cjs.AuthManager.setAuthCookie(c, jwt, { sameSite: "Lax", maxAge: tokenTtl });
3156
+ chunkL3KHLEHL_cjs.AuthManager.setAuthCookie(c, jwt, { sameSite: "Lax", maxAge: tokenTtl });
3157
3157
  return c.redirect("/admin");
3158
3158
  } catch (error) {
3159
3159
  console.error("OAuth callback error:", error);
@@ -3248,7 +3248,7 @@ function buildOauthApi() {
3248
3248
  });
3249
3249
  return oauthAPI;
3250
3250
  }
3251
- var oauthProvidersPlugin = chunkNYLWNR6T_cjs.definePlugin({
3251
+ var oauthProvidersPlugin = chunk4YRYGDCQ_cjs.definePlugin({
3252
3252
  id: "oauth-providers",
3253
3253
  version: "1.0.0",
3254
3254
  name: "OAuth Providers",
@@ -3825,7 +3825,7 @@ var AISearchService = class {
3825
3825
  */
3826
3826
  async detectNewCollections() {
3827
3827
  try {
3828
- const allCollections = chunkLLWLHFTD_cjs.getCollectionRegistry().listActive().filter((r) => !r.internal).map((r) => ({
3828
+ const allCollections = chunkWIV3R2MJ_cjs.getCollectionRegistry().listActive().filter((r) => !r.internal).map((r) => ({
3829
3829
  id: r.id,
3830
3830
  name: r.name,
3831
3831
  display_name: r.displayName,
@@ -3877,7 +3877,7 @@ var AISearchService = class {
3877
3877
  */
3878
3878
  async getAllCollections() {
3879
3879
  try {
3880
- const allCollections = chunkLLWLHFTD_cjs.getCollectionRegistry().listActive().filter((r) => !r.internal).sort((a, b) => a.displayName.localeCompare(b.displayName)).map((r) => ({
3880
+ const allCollections = chunkWIV3R2MJ_cjs.getCollectionRegistry().listActive().filter((r) => !r.internal).sort((a, b) => a.displayName.localeCompare(b.displayName)).map((r) => ({
3881
3881
  id: r.id,
3882
3882
  name: r.name,
3883
3883
  display_name: r.displayName,
@@ -4213,7 +4213,7 @@ var IndexManager = class {
4213
4213
  */
4214
4214
  async indexCollection(collectionId) {
4215
4215
  try {
4216
- const registry = chunkLLWLHFTD_cjs.getCollectionRegistry();
4216
+ const registry = chunkWIV3R2MJ_cjs.getCollectionRegistry();
4217
4217
  const record = registry.getById(collectionId) ?? registry.getByName(collectionId);
4218
4218
  if (!record) {
4219
4219
  throw new Error(`Collection ${collectionId} not found`);
@@ -4840,7 +4840,7 @@ function renderSettingsPage(data) {
4840
4840
 
4841
4841
  // src/plugins/core-plugins/ai-search-plugin/routes/admin.ts
4842
4842
  var adminRoutes2 = new hono.Hono();
4843
- adminRoutes2.use("*", chunkBYLQOBO6_cjs.requireAuth());
4843
+ adminRoutes2.use("*", chunkL3KHLEHL_cjs.requireAuth());
4844
4844
  adminRoutes2.get("/", async (c) => {
4845
4845
  try {
4846
4846
  const user = c.get("user");
@@ -5081,7 +5081,7 @@ var manifest_default = {
5081
5081
  author: "SonicJS"};
5082
5082
 
5083
5083
  // src/plugins/core-plugins/ai-search-plugin/index.ts
5084
- var aiSearchPlugin = chunkNYLWNR6T_cjs.definePlugin({
5084
+ var aiSearchPlugin = chunk4YRYGDCQ_cjs.definePlugin({
5085
5085
  id: manifest_default.id,
5086
5086
  version: manifest_default.version,
5087
5087
  name: manifest_default.name,
@@ -5134,7 +5134,7 @@ var SecurityAuditService = class {
5134
5134
  constructor(db, settings = DEFAULT_SETTINGS2) {
5135
5135
  this.db = db;
5136
5136
  this.settings = settings;
5137
- this.docsService = new chunk2CB4KY7I_cjs.DocumentsService(db, {
5137
+ this.docsService = new chunkW36OZTJ5_cjs.DocumentsService(db, {
5138
5138
  queryableFields: QUERYABLE_FIELDS,
5139
5139
  maxVersionsPerRoot: 1,
5140
5140
  tenantId: TENANT
@@ -5952,7 +5952,7 @@ function renderSecuritySettingsPage(data) {
5952
5952
 
5953
5953
  // src/plugins/core-plugins/security-audit-plugin/routes/admin.ts
5954
5954
  var adminRoutes3 = new hono.Hono();
5955
- adminRoutes3.use("*", chunkBYLQOBO6_cjs.requireAuth());
5955
+ adminRoutes3.use("*", chunkL3KHLEHL_cjs.requireAuth());
5956
5956
  adminRoutes3.use("*", async (c, next) => {
5957
5957
  const user = c.get("user");
5958
5958
  if (user?.role !== "admin") {
@@ -5962,7 +5962,7 @@ adminRoutes3.use("*", async (c, next) => {
5962
5962
  });
5963
5963
  async function getSettings(db) {
5964
5964
  try {
5965
- const pluginService = new chunkLLWLHFTD_cjs.PluginService(db);
5965
+ const pluginService = new chunkWIV3R2MJ_cjs.PluginService(db);
5966
5966
  const plugin2 = await pluginService.getPlugin("security-audit");
5967
5967
  if (plugin2?.settings) {
5968
5968
  const settings = typeof plugin2.settings === "string" ? JSON.parse(plugin2.settings) : plugin2.settings;
@@ -6067,7 +6067,7 @@ adminRoutes3.post("/settings", async (c) => {
6067
6067
  autoPurge: body["retention.autoPurge"] === "true"
6068
6068
  }
6069
6069
  };
6070
- const pluginService = new chunkLLWLHFTD_cjs.PluginService(db);
6070
+ const pluginService = new chunkWIV3R2MJ_cjs.PluginService(db);
6071
6071
  await pluginService.updatePluginSettings("security-audit", settings);
6072
6072
  if (c.req.header("HX-Request")) {
6073
6073
  return c.json({ success: true });
@@ -6228,7 +6228,7 @@ var BruteForceDetector = class {
6228
6228
 
6229
6229
  // src/plugins/core-plugins/security-audit-plugin/routes/api.ts
6230
6230
  var apiRoutes2 = new hono.Hono();
6231
- apiRoutes2.use("*", chunkBYLQOBO6_cjs.requireAuth());
6231
+ apiRoutes2.use("*", chunkL3KHLEHL_cjs.requireAuth());
6232
6232
  apiRoutes2.use("*", async (c, next) => {
6233
6233
  const user = c.get("user");
6234
6234
  if (user?.role !== "admin") {
@@ -6238,7 +6238,7 @@ apiRoutes2.use("*", async (c, next) => {
6238
6238
  });
6239
6239
  async function getSettings2(db) {
6240
6240
  try {
6241
- const pluginService = new chunkLLWLHFTD_cjs.PluginService(db);
6241
+ const pluginService = new chunkWIV3R2MJ_cjs.PluginService(db);
6242
6242
  const plugin2 = await pluginService.getPlugin("security-audit");
6243
6243
  if (plugin2?.settings) {
6244
6244
  const settings = typeof plugin2.settings === "string" ? JSON.parse(plugin2.settings) : plugin2.settings;
@@ -6386,7 +6386,7 @@ function generateFingerprint(ip, userAgent) {
6386
6386
  }
6387
6387
  async function getPluginSettings(db) {
6388
6388
  try {
6389
- const pluginService = new chunkLLWLHFTD_cjs.PluginService(db);
6389
+ const pluginService = new chunkWIV3R2MJ_cjs.PluginService(db);
6390
6390
  const plugin2 = await pluginService.getPlugin("security-audit");
6391
6391
  if (plugin2?.settings) {
6392
6392
  const settings = typeof plugin2.settings === "string" ? JSON.parse(plugin2.settings) : plugin2.settings;
@@ -6617,7 +6617,7 @@ async function logAuthEvent(c, db, settings, ip, userAgent, countryCode, fingerp
6617
6617
 
6618
6618
  // src/plugins/core-plugins/security-audit-plugin/index.ts
6619
6619
  var SECURITY_ICON = `<svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/></svg>`;
6620
- var securityAuditPlugin = chunkNYLWNR6T_cjs.definePlugin({
6620
+ var securityAuditPlugin = chunk4YRYGDCQ_cjs.definePlugin({
6621
6621
  id: "security-audit",
6622
6622
  version: "1.0.0",
6623
6623
  name: "Security Audit",
@@ -7373,7 +7373,7 @@ var DEFAULT_SETTINGS3 = {
7373
7373
 
7374
7374
  // src/plugins/core-plugins/stripe-plugin/routes/admin.ts
7375
7375
  var adminRoutes4 = new hono.Hono();
7376
- adminRoutes4.use("*", chunkBYLQOBO6_cjs.requireAuth());
7376
+ adminRoutes4.use("*", chunkL3KHLEHL_cjs.requireAuth());
7377
7377
  adminRoutes4.use("*", async (c, next) => {
7378
7378
  const user = c.get("user");
7379
7379
  if (user?.role !== "admin") {
@@ -7383,7 +7383,7 @@ adminRoutes4.use("*", async (c, next) => {
7383
7383
  });
7384
7384
  async function getSettings3(db) {
7385
7385
  try {
7386
- const pluginService = new chunkLLWLHFTD_cjs.PluginService(db);
7386
+ const pluginService = new chunkWIV3R2MJ_cjs.PluginService(db);
7387
7387
  const plugin2 = await pluginService.getPlugin("stripe");
7388
7388
  if (plugin2?.settings) {
7389
7389
  const settings = typeof plugin2.settings === "string" ? JSON.parse(plugin2.settings) : plugin2.settings;
@@ -7705,7 +7705,7 @@ function timingSafeEqual(a, b) {
7705
7705
  var apiRoutes3 = new hono.Hono();
7706
7706
  async function getSettings4(db) {
7707
7707
  try {
7708
- const pluginService = new chunkLLWLHFTD_cjs.PluginService(db);
7708
+ const pluginService = new chunkWIV3R2MJ_cjs.PluginService(db);
7709
7709
  const plugin2 = await pluginService.getPlugin("stripe");
7710
7710
  if (plugin2?.settings) {
7711
7711
  const settings = typeof plugin2.settings === "string" ? JSON.parse(plugin2.settings) : plugin2.settings;
@@ -7856,7 +7856,7 @@ apiRoutes3.post("/webhook", async (c) => {
7856
7856
  }
7857
7857
  return c.json({ received: true });
7858
7858
  });
7859
- apiRoutes3.post("/create-checkout-session", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7859
+ apiRoutes3.post("/create-checkout-session", chunkL3KHLEHL_cjs.requireAuth(), async (c) => {
7860
7860
  const db = c.env.DB;
7861
7861
  const user = c.get("user");
7862
7862
  if (!user) return c.json({ error: "Unauthorized" }, 401);
@@ -7896,7 +7896,7 @@ apiRoutes3.post("/create-checkout-session", chunkBYLQOBO6_cjs.requireAuth(), asy
7896
7896
  });
7897
7897
  return c.json({ sessionId: session.id, url: session.url });
7898
7898
  });
7899
- apiRoutes3.get("/subscription", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7899
+ apiRoutes3.get("/subscription", chunkL3KHLEHL_cjs.requireAuth(), async (c) => {
7900
7900
  const user = c.get("user");
7901
7901
  if (!user) return c.json({ error: "Unauthorized" }, 401);
7902
7902
  const db = c.env.DB;
@@ -7908,7 +7908,7 @@ apiRoutes3.get("/subscription", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7908
7908
  }
7909
7909
  return c.json({ subscription });
7910
7910
  });
7911
- apiRoutes3.get("/subscriptions", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7911
+ apiRoutes3.get("/subscriptions", chunkL3KHLEHL_cjs.requireAuth(), async (c) => {
7912
7912
  const user = c.get("user");
7913
7913
  if (user?.role !== "admin") return c.json({ error: "Access denied" }, 403);
7914
7914
  const db = c.env.DB;
@@ -7924,7 +7924,7 @@ apiRoutes3.get("/subscriptions", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7924
7924
  const result = await subscriptionService.list(filters);
7925
7925
  return c.json(result);
7926
7926
  });
7927
- apiRoutes3.get("/stats", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7927
+ apiRoutes3.get("/stats", chunkL3KHLEHL_cjs.requireAuth(), async (c) => {
7928
7928
  const user = c.get("user");
7929
7929
  if (user?.role !== "admin") return c.json({ error: "Access denied" }, 403);
7930
7930
  const db = c.env.DB;
@@ -7933,7 +7933,7 @@ apiRoutes3.get("/stats", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7933
7933
  const stats = await subscriptionService.getStats();
7934
7934
  return c.json(stats);
7935
7935
  });
7936
- apiRoutes3.post("/sync-subscriptions", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7936
+ apiRoutes3.post("/sync-subscriptions", chunkL3KHLEHL_cjs.requireAuth(), async (c) => {
7937
7937
  const user = c.get("user");
7938
7938
  if (user?.role !== "admin") return c.json({ error: "Access denied" }, 403);
7939
7939
  const db = c.env.DB;
@@ -7981,7 +7981,7 @@ apiRoutes3.post("/sync-subscriptions", chunkBYLQOBO6_cjs.requireAuth(), async (c
7981
7981
  }, 500);
7982
7982
  }
7983
7983
  });
7984
- apiRoutes3.get("/events", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
7984
+ apiRoutes3.get("/events", chunkL3KHLEHL_cjs.requireAuth(), async (c) => {
7985
7985
  const user = c.get("user");
7986
7986
  if (user?.role !== "admin") return c.json({ error: "Access denied" }, 403);
7987
7987
  const db = c.env.DB;
@@ -8004,7 +8004,7 @@ apiRoutes3.get("/events", chunkBYLQOBO6_cjs.requireAuth(), async (c) => {
8004
8004
 
8005
8005
  // src/plugins/core-plugins/stripe-plugin/index.ts
8006
8006
  var STRIPE_ICON = `<svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z"/></svg>`;
8007
- var stripePlugin = chunkNYLWNR6T_cjs.definePlugin({
8007
+ var stripePlugin = chunk4YRYGDCQ_cjs.definePlugin({
8008
8008
  id: "stripe",
8009
8009
  version: "1.0.0",
8010
8010
  name: "Stripe",
@@ -8277,7 +8277,7 @@ function renderFormsListPage(data) {
8277
8277
 
8278
8278
  <!-- Forms Table -->
8279
8279
  <div class="bg-white dark:bg-zinc-900 rounded-lg border border-zinc-950/5 dark:border-white/10 overflow-hidden">
8280
- ${chunkTV7LRFXH_cjs.renderTable(tableData)}
8280
+ ${chunkSSOP7G4R_cjs.renderTable(tableData)}
8281
8281
  </div>
8282
8282
  </div>
8283
8283
  `;
@@ -9707,7 +9707,7 @@ function renderFormCreatePage(data) {
9707
9707
  // src/routes/admin-forms.ts
9708
9708
  var isTableMissing = (err) => String(err?.message ?? err?.cause?.message ?? "").includes("no such table: forms");
9709
9709
  var adminFormsRoutes = new hono.Hono();
9710
- adminFormsRoutes.use("*", chunkBYLQOBO6_cjs.requireAuth());
9710
+ adminFormsRoutes.use("*", chunkL3KHLEHL_cjs.requireAuth());
9711
9711
  adminFormsRoutes.get("/", async (c) => {
9712
9712
  try {
9713
9713
  const user = c.get("user");
@@ -9880,7 +9880,7 @@ adminFormsRoutes.get("/:id/builder", async (c) => {
9880
9880
  if (!form) {
9881
9881
  return c.html("<p>Form not found</p>", 404);
9882
9882
  }
9883
- const turnstileService = new chunkSY7CBACS_cjs.TurnstileService(db);
9883
+ const turnstileService = new chunkG5LC7MYH_cjs.TurnstileService(db);
9884
9884
  const turnstileSettings = await turnstileService.getSettings();
9885
9885
  const pageData = {
9886
9886
  id: form.id,
@@ -10049,7 +10049,7 @@ publicFormsRoutes.get("/:identifier/turnstile-config", async (c) => {
10049
10049
  if (!form) {
10050
10050
  return c.json({ error: "Form not found" }, 404);
10051
10051
  }
10052
- const turnstileService = new chunkSY7CBACS_cjs.TurnstileService(db);
10052
+ const turnstileService = new chunkG5LC7MYH_cjs.TurnstileService(db);
10053
10053
  const globalSettings = await turnstileService.getSettings();
10054
10054
  const formSettings = form.turnstile_settings ? JSON.parse(form.turnstile_settings) : { inherit: true };
10055
10055
  const enabled = form.turnstile_enabled === 1 || formSettings.inherit && globalSettings?.enabled;
@@ -10479,7 +10479,7 @@ publicFormsRoutes.post("/:identifier/submit", async (c) => {
10479
10479
  const turnstileEnabled = form.turnstile_enabled === 1;
10480
10480
  const turnstileSettings = form.turnstile_settings ? JSON.parse(form.turnstile_settings) : { inherit: true };
10481
10481
  if (turnstileEnabled || turnstileSettings.inherit) {
10482
- const turnstileService = new chunkSY7CBACS_cjs.TurnstileService(db);
10482
+ const turnstileService = new chunkG5LC7MYH_cjs.TurnstileService(db);
10483
10483
  const globalEnabled = await turnstileService.isEnabled();
10484
10484
  if (globalEnabled || turnstileEnabled) {
10485
10485
  const turnstileToken = body.data?.turnstile || body.turnstile;
@@ -10541,7 +10541,7 @@ publicFormsRoutes.post("/:identifier/submit", async (c) => {
10541
10541
  });
10542
10542
 
10543
10543
  // src/plugins/core-plugins/forms-plugin/index.ts
10544
- var formsPlugin = chunkNYLWNR6T_cjs.definePlugin({
10544
+ var formsPlugin = chunk4YRYGDCQ_cjs.definePlugin({
10545
10545
  id: "forms",
10546
10546
  version: "1.0.0",
10547
10547
  name: "Forms",
@@ -10561,7 +10561,7 @@ var formsPlugin = chunkNYLWNR6T_cjs.definePlugin({
10561
10561
  });
10562
10562
  chunkK623Q6WD_cjs.init_admin_layout_catalyst_template();
10563
10563
  var adminRbacRoutes = new hono.Hono();
10564
- adminRbacRoutes.use("*", chunkBYLQOBO6_cjs.requireRbac("rbac", "manage"));
10564
+ adminRbacRoutes.use("*", chunkL3KHLEHL_cjs.requireRbac("rbac", "manage"));
10565
10565
  var esc = (s) => String(s).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
10566
10566
  var TABS2 = `
10567
10567
  <div class="border-b border-zinc-950/10 dark:border-white/10 mb-6">
@@ -10571,7 +10571,7 @@ var TABS2 = `
10571
10571
  </nav>
10572
10572
  </div>`;
10573
10573
  adminRbacRoutes.get("/", async (c) => {
10574
- const rbac = new chunk2CB4KY7I_cjs.RbacService(c.env.DB);
10574
+ const rbac = new chunkW36OZTJ5_cjs.RbacService(c.env.DB);
10575
10575
  const [roles, verbs, resources, grants] = await Promise.all([
10576
10576
  rbac.getRoles(),
10577
10577
  rbac.getVerbs(),
@@ -10682,7 +10682,7 @@ adminRbacRoutes.get("/", async (c) => {
10682
10682
  ${r.is_system ? `<code class="text-xs text-zinc-500 dark:text-zinc-400">${esc(r.name)}</code><span class="rounded-full bg-zinc-100 dark:bg-white/10 px-2 py-0.5 text-[11px] text-zinc-500 dark:text-zinc-400">system</span>` : `<input form="roles-bulk-form" class="${inpSm} w-28" name="name_${esc(r.id)}" value="${esc(r.name)}" required>`}
10683
10683
  <label class="ml-auto inline-flex items-center gap-2 rounded-md bg-white/5 px-2.5 py-1 text-xs font-medium text-zinc-700 dark:text-zinc-300 ring-1 ring-inset ring-zinc-500/20">
10684
10684
  <input form="roles-bulk-form" type="checkbox" name="portal_${esc(r.id)}" value="1" ${portalChecked ? "checked" : ""} ${portalDisabled ? "disabled" : ""} class="h-3.5 w-3.5 rounded border-zinc-400 text-cyan-600 focus:ring-cyan-500">
10685
- Access portal
10685
+ Admin Panel
10686
10686
  </label>
10687
10687
  <a href="/admin/tenants/roles/${esc(r.name)}" data-role-tenants="${esc(r.name)}" class="text-xs text-cyan-600 dark:text-cyan-400 hover:underline" title="Per-tenant assignments of this role">tenants</a>
10688
10688
  ${r.is_system ? "" : `<button form="delete-role-${esc(r.id)}" type="submit" onclick="return confirm('Delete role ${esc(r.name)}?')" class="text-xs text-red-600 dark:text-red-400 hover:underline">delete</button>`}
@@ -10786,7 +10786,7 @@ adminRbacRoutes.get("/", async (c) => {
10786
10786
  <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
10787
10787
  <div class="${card}">
10788
10788
  <h3 class="text-base font-semibold text-zinc-950 dark:text-white mb-3">Roles</h3>
10789
- <p class="mb-3 text-xs text-zinc-500 dark:text-zinc-400">Use <strong>Access portal</strong> to allow a role into the admin backend. Resource permissions are configured in the <strong>Matrix</strong> tab.</p>
10789
+ <p class="mb-3 text-xs text-zinc-500 dark:text-zinc-400">Use <strong>Admin Panel</strong> to allow a role into the admin backend. Resource permissions are configured in the <strong>Matrix</strong> tab.</p>
10790
10790
  ${roleList}
10791
10791
  </div>
10792
10792
  <div class="${card}">
@@ -10869,7 +10869,7 @@ adminRbacRoutes.get("/", async (c) => {
10869
10869
  title: "Roles & Permissions",
10870
10870
  pageTitle: "Roles & Permissions",
10871
10871
  currentPath: "/admin/users",
10872
- version: chunkXGH2FVVR_cjs.getCoreVersion(),
10872
+ version: chunkSIPBHWMG_cjs.getCoreVersion(),
10873
10873
  user: u ? { name: u.email || "Admin", email: u.email || "", role: u.role || "admin" } : void 0,
10874
10874
  content: content2
10875
10875
  })
@@ -10893,7 +10893,7 @@ adminRbacRoutes.post("/grants", async (c) => {
10893
10893
  pairsByRole.get(roleId).push({ resource, verb, scope });
10894
10894
  }
10895
10895
  }
10896
- const rbac = new chunk2CB4KY7I_cjs.RbacService(c.env.DB);
10896
+ const rbac = new chunkW36OZTJ5_cjs.RbacService(c.env.DB);
10897
10897
  for (const id of saveRoleIds) {
10898
10898
  await rbac.setRoleGrants(id, pairsByRole.get(id) || []);
10899
10899
  }
@@ -10914,7 +10914,7 @@ adminRbacRoutes.post("/grants", async (c) => {
10914
10914
  adminRbacRoutes.post("/roles/bulk", async (c) => {
10915
10915
  const form = await c.req.formData();
10916
10916
  const roleIds = String(form.get("role_ids") || "").split(",").filter(Boolean);
10917
- const rbac = new chunk2CB4KY7I_cjs.RbacService(c.env.DB);
10917
+ const rbac = new chunkW36OZTJ5_cjs.RbacService(c.env.DB);
10918
10918
  for (const roleId of roleIds) {
10919
10919
  const displayName = String(form.get(`display_name_${roleId}`) || "").trim();
10920
10920
  const nameVal = form.get(`name_${roleId}`) ? String(form.get(`name_${roleId}`)).trim() : void 0;
@@ -10939,7 +10939,7 @@ adminRbacRoutes.post("/roles", async (c) => {
10939
10939
  const displayName = String(form.get("display_name") || "").trim();
10940
10940
  if (name && displayName) {
10941
10941
  try {
10942
- await new chunk2CB4KY7I_cjs.RbacService(c.env.DB).createRole(name, displayName);
10942
+ await new chunkW36OZTJ5_cjs.RbacService(c.env.DB).createRole(name, displayName);
10943
10943
  } catch {
10944
10944
  }
10945
10945
  }
@@ -10954,7 +10954,7 @@ adminRbacRoutes.post("/roles/:id", async (c) => {
10954
10954
  const portalAccess = form.get("portal_access") === "1";
10955
10955
  if (displayName) {
10956
10956
  try {
10957
- const rbac = new chunk2CB4KY7I_cjs.RbacService(c.env.DB);
10957
+ const rbac = new chunkW36OZTJ5_cjs.RbacService(c.env.DB);
10958
10958
  if (roleId !== "role-admin") {
10959
10959
  await rbac.updateRoleAndPortalAccess(roleId, displayName, name, portalAccess, description);
10960
10960
  } else {
@@ -10966,7 +10966,7 @@ adminRbacRoutes.post("/roles/:id", async (c) => {
10966
10966
  return c.redirect(`/admin/rbac#roles-verbs`);
10967
10967
  });
10968
10968
  adminRbacRoutes.post("/roles/:id/delete", async (c) => {
10969
- await new chunk2CB4KY7I_cjs.RbacService(c.env.DB).deleteRole(c.req.param("id"));
10969
+ await new chunkW36OZTJ5_cjs.RbacService(c.env.DB).deleteRole(c.req.param("id"));
10970
10970
  return c.redirect("/admin/rbac#roles-verbs");
10971
10971
  });
10972
10972
  adminRbacRoutes.post("/verbs", async (c) => {
@@ -10974,18 +10974,18 @@ adminRbacRoutes.post("/verbs", async (c) => {
10974
10974
  const name = String(form.get("name") || "").trim();
10975
10975
  if (name) {
10976
10976
  try {
10977
- await new chunk2CB4KY7I_cjs.RbacService(c.env.DB).createVerb(name);
10977
+ await new chunkW36OZTJ5_cjs.RbacService(c.env.DB).createVerb(name);
10978
10978
  } catch {
10979
10979
  }
10980
10980
  }
10981
10981
  return c.redirect("/admin/rbac#roles-verbs");
10982
10982
  });
10983
10983
  adminRbacRoutes.post("/verbs/:id/delete", async (c) => {
10984
- await new chunk2CB4KY7I_cjs.RbacService(c.env.DB).deleteVerb(c.req.param("id"));
10984
+ await new chunkW36OZTJ5_cjs.RbacService(c.env.DB).deleteVerb(c.req.param("id"));
10985
10985
  return c.redirect("/admin/rbac#roles-verbs");
10986
10986
  });
10987
10987
  adminRbacRoutes.get("/check", async (c) => {
10988
- const rbac = new chunk2CB4KY7I_cjs.RbacService(c.env.DB);
10988
+ const rbac = new chunkW36OZTJ5_cjs.RbacService(c.env.DB);
10989
10989
  const resource = c.req.query("resource") || "";
10990
10990
  const verb = c.req.query("verb") || "";
10991
10991
  const roleId = c.req.query("role");
@@ -11006,7 +11006,7 @@ adminRbacRoutes.get("/check", async (c) => {
11006
11006
  });
11007
11007
 
11008
11008
  // src/middleware/plugin-menu.ts
11009
- var REGISTRY_MENU_PLUGINS = Object.values(chunkLLWLHFTD_cjs.PLUGIN_REGISTRY).filter((p) => p.adminMenu !== null).map((p) => ({
11009
+ var REGISTRY_MENU_PLUGINS = Object.values(chunkWIV3R2MJ_cjs.PLUGIN_REGISTRY).filter((p) => p.adminMenu !== null).map((p) => ({
11010
11010
  id: p.id,
11011
11011
  label: p.adminMenu.label,
11012
11012
  path: p.adminMenu.path,
@@ -11103,7 +11103,7 @@ function pluginMenuMiddleware() {
11103
11103
  }
11104
11104
  chunkK623Q6WD_cjs.init_admin_layout_catalyst_template();
11105
11105
  var adminRoutes5 = new hono.Hono();
11106
- adminRoutes5.use("*", chunkBYLQOBO6_cjs.requireAuth());
11106
+ adminRoutes5.use("*", chunkL3KHLEHL_cjs.requireAuth());
11107
11107
  adminRoutes5.use("*", async (c, next) => {
11108
11108
  const user = c.get("user");
11109
11109
  if (user?.role !== "admin") {
@@ -11250,7 +11250,7 @@ var QUERYABLE_FIELDS2 = [
11250
11250
  var EventTrackingService = class {
11251
11251
  constructor(db) {
11252
11252
  this.db = db;
11253
- this.docsService = new chunk2CB4KY7I_cjs.DocumentsService(db, {
11253
+ this.docsService = new chunkW36OZTJ5_cjs.DocumentsService(db, {
11254
11254
  queryableFields: QUERYABLE_FIELDS2,
11255
11255
  maxVersionsPerRoot: 1,
11256
11256
  tenantId: TENANT2
@@ -11458,7 +11458,7 @@ apiRoutes4.get("/stats", async (c) => {
11458
11458
  });
11459
11459
 
11460
11460
  // src/plugins/core-plugins/analytics/index.ts
11461
- var analyticsPlugin = chunkNYLWNR6T_cjs.definePlugin({
11461
+ var analyticsPlugin = chunk4YRYGDCQ_cjs.definePlugin({
11462
11462
  id: "core-analytics",
11463
11463
  version: "1.0.0",
11464
11464
  name: "Analytics",
@@ -11605,7 +11605,7 @@ function esc2(s) {
11605
11605
  return (s || "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
11606
11606
  }
11607
11607
  async function getVariablesMap(db) {
11608
- let variables = chunkTV7LRFXH_cjs.getVariablesCached();
11608
+ let variables = chunkSSOP7G4R_cjs.getVariablesCached();
11609
11609
  if (variables) return variables;
11610
11610
  try {
11611
11611
  const { results } = await db.prepare(
@@ -11615,7 +11615,7 @@ async function getVariablesMap(db) {
11615
11615
  for (const row of results || []) {
11616
11616
  variables.set(row.key, row.value);
11617
11617
  }
11618
- chunkTV7LRFXH_cjs.setVariablesCache(variables);
11618
+ chunkSSOP7G4R_cjs.setVariablesCache(variables);
11619
11619
  return variables;
11620
11620
  } catch {
11621
11621
  return /* @__PURE__ */ new Map();
@@ -11684,7 +11684,7 @@ apiRoutes5.post("/", async (c) => {
11684
11684
  await db.prepare(
11685
11685
  "INSERT INTO global_variables (key, value, description, category, is_active) VALUES (?, ?, ?, ?, ?)"
11686
11686
  ).bind(key, value || "", description || "", category || "general", isActive !== false ? 1 : 0).run();
11687
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11687
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11688
11688
  const created = await db.prepare("SELECT * FROM global_variables WHERE key = ?").bind(key).first();
11689
11689
  return c.json({ success: true, data: formatVariable(created) }, 201);
11690
11690
  } catch {
@@ -11729,7 +11729,7 @@ apiRoutes5.put("/:id", async (c) => {
11729
11729
  updates.push("updated_at = strftime('%s', 'now')");
11730
11730
  params.push(id);
11731
11731
  await db.prepare(`UPDATE global_variables SET ${updates.join(", ")} WHERE id = ?`).bind(...params).run();
11732
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11732
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11733
11733
  const updated = await db.prepare("SELECT * FROM global_variables WHERE id = ?").bind(id).first();
11734
11734
  return c.json({ success: true, data: formatVariable(updated) });
11735
11735
  } catch {
@@ -11743,7 +11743,7 @@ apiRoutes5.delete("/:id", async (c) => {
11743
11743
  const existing = await db.prepare("SELECT id FROM global_variables WHERE id = ?").bind(id).first();
11744
11744
  if (!existing) return c.json({ error: "Variable not found" }, 404);
11745
11745
  await db.prepare("DELETE FROM global_variables WHERE id = ?").bind(id).run();
11746
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11746
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11747
11747
  return c.json({ success: true });
11748
11748
  } catch {
11749
11749
  return c.json({ success: false, error: "Failed to delete variable" }, 500);
@@ -11803,7 +11803,7 @@ adminRoutes6.put("/:id", async (c) => {
11803
11803
  const value = body.value;
11804
11804
  if (value !== void 0) {
11805
11805
  await db.prepare("UPDATE global_variables SET value = ?, updated_at = strftime('%s', 'now') WHERE id = ?").bind(value, id).run();
11806
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11806
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11807
11807
  }
11808
11808
  return c.html('<span class="text-green-400 text-xs">Saved</span>');
11809
11809
  });
@@ -11811,7 +11811,7 @@ adminRoutes6.post("/:id/toggle", async (c) => {
11811
11811
  const db = c.env.DB;
11812
11812
  const id = c.req.param("id");
11813
11813
  await db.prepare("UPDATE global_variables SET is_active = CASE WHEN is_active = 1 THEN 0 ELSE 1 END, updated_at = strftime('%s', 'now') WHERE id = ?").bind(id).run();
11814
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11814
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11815
11815
  c.header("HX-Redirect", "/admin/global-variables");
11816
11816
  return c.body(null, 204);
11817
11817
  });
@@ -11832,7 +11832,7 @@ adminRoutes6.post("/", async (c) => {
11832
11832
  await db.prepare(
11833
11833
  "INSERT INTO global_variables (key, value, description, category) VALUES (?, ?, ?, ?)"
11834
11834
  ).bind(key, value, description, category).run();
11835
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11835
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11836
11836
  c.header("HX-Redirect", "/admin/global-variables");
11837
11837
  return c.body(null, 204);
11838
11838
  });
@@ -11851,7 +11851,7 @@ adminRoutes6.post("/settings/editor-integration", async (c) => {
11851
11851
  adminRoutes6.delete("/:id", async (c) => {
11852
11852
  const db = c.env.DB;
11853
11853
  await db.prepare("DELETE FROM global_variables WHERE id = ?").bind(c.req.param("id")).run();
11854
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
11854
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
11855
11855
  return c.html("");
11856
11856
  });
11857
11857
  function renderAdminPage(variables, editorStatus = { editorActive: false, activeEditorName: "", enableEditorIntegration: true }) {
@@ -12169,7 +12169,7 @@ function renderAdminPage(variables, editorStatus = { editorActive: false, active
12169
12169
  </div>
12170
12170
  ` });
12171
12171
  }
12172
- var globalVariablesPlugin = chunkNYLWNR6T_cjs.definePlugin({
12172
+ var globalVariablesPlugin = chunk4YRYGDCQ_cjs.definePlugin({
12173
12173
  id: "global-variables",
12174
12174
  version: "1.1.0",
12175
12175
  name: "Global Variables",
@@ -12192,7 +12192,7 @@ var globalVariablesPlugin = chunkNYLWNR6T_cjs.definePlugin({
12192
12192
  if (!db || !data) return data;
12193
12193
  const variables = await getVariablesMap(db);
12194
12194
  if (variables.size === 0) return data;
12195
- return chunkTV7LRFXH_cjs.resolveVariablesInObject(data, variables);
12195
+ return chunkSSOP7G4R_cjs.resolveVariablesInObject(data, variables);
12196
12196
  } catch {
12197
12197
  return data;
12198
12198
  }
@@ -12210,7 +12210,7 @@ var globalVariablesPlugin = chunkNYLWNR6T_cjs.definePlugin({
12210
12210
  },
12211
12211
  activate: async () => console.info("[GlobalVariables] Plugin activated"),
12212
12212
  deactivate: async () => {
12213
- chunkTV7LRFXH_cjs.invalidateVariablesCache();
12213
+ chunkSSOP7G4R_cjs.invalidateVariablesCache();
12214
12214
  console.info("[GlobalVariables] Plugin deactivated, cache cleared");
12215
12215
  },
12216
12216
  uninstall: async (ctx) => {
@@ -12776,7 +12776,7 @@ function renderAdminPage2(shortcodes, editorStatus = { editorActive: false, acti
12776
12776
  </div>
12777
12777
  ` });
12778
12778
  }
12779
- var shortcodesPlugin = chunkNYLWNR6T_cjs.definePlugin({
12779
+ var shortcodesPlugin = chunk4YRYGDCQ_cjs.definePlugin({
12780
12780
  id: "shortcodes",
12781
12781
  version: "1.0.0",
12782
12782
  name: "Shortcodes",
@@ -12860,7 +12860,7 @@ helloWorldRoutes.get("/", async (c) => {
12860
12860
  </html>
12861
12861
  `);
12862
12862
  });
12863
- var helloWorldPlugin = chunkNYLWNR6T_cjs.definePlugin({
12863
+ var helloWorldPlugin = chunk4YRYGDCQ_cjs.definePlugin({
12864
12864
  id: "hello-world",
12865
12865
  version: "1.0.0",
12866
12866
  name: "Hello World",
@@ -13088,7 +13088,7 @@ function renderTenantForm(data) {
13088
13088
  // src/plugins/core-plugins/multi-tenant-plugin/templates/tenant-members.template.ts
13089
13089
  chunkK623Q6WD_cjs.init_admin_layout_catalyst_template();
13090
13090
  function roleOptions(selected) {
13091
- return chunkTV7LRFXH_cjs.VALID_MEMBER_ROLES.map(
13091
+ return chunkSSOP7G4R_cjs.VALID_MEMBER_ROLES.map(
13092
13092
  (r) => `<option value="${r}" ${r === selected ? "selected" : ""}>${r}</option>`
13093
13093
  ).join("");
13094
13094
  }
@@ -13150,7 +13150,7 @@ function renderInvitations(slug, invitations) {
13150
13150
  <div>
13151
13151
  <label for="invite-role" class="mb-1 block text-xs font-medium text-zinc-500 dark:text-zinc-400">Role</label>
13152
13152
  <select id="invite-role" name="role" class="rounded-lg border border-zinc-950/10 bg-white px-2 py-2 text-sm text-zinc-950 dark:border-white/10 dark:bg-zinc-800 dark:text-white">
13153
- ${chunkTV7LRFXH_cjs.VALID_MEMBER_ROLES.map((r) => `<option value="${r}" ${r === "viewer" ? "selected" : ""}>${r}</option>`).join("")}
13153
+ ${chunkSSOP7G4R_cjs.VALID_MEMBER_ROLES.map((r) => `<option value="${r}" ${r === "viewer" ? "selected" : ""}>${r}</option>`).join("")}
13154
13154
  </select>
13155
13155
  </div>
13156
13156
  <button type="submit" data-send-invite class="rounded-lg bg-zinc-950 px-3.5 py-2 text-sm font-semibold text-white hover:bg-zinc-800 dark:bg-white dark:text-zinc-950 dark:hover:bg-zinc-200">Invite</button>
@@ -13246,7 +13246,7 @@ function renderTenantMembers(data) {
13246
13246
  // src/plugins/core-plugins/multi-tenant-plugin/templates/user-memberships.template.ts
13247
13247
  chunkK623Q6WD_cjs.init_admin_layout_catalyst_template();
13248
13248
  function roleOptions2(selected) {
13249
- return chunkTV7LRFXH_cjs.VALID_MEMBER_ROLES.map(
13249
+ return chunkSSOP7G4R_cjs.VALID_MEMBER_ROLES.map(
13250
13250
  (r) => `<option value="${r}" ${r === selected ? "selected" : ""}>${r}</option>`
13251
13251
  ).join("");
13252
13252
  }
@@ -13408,7 +13408,7 @@ function zodToFieldErrors(error) {
13408
13408
  }
13409
13409
  async function isMultiTenantActive(db) {
13410
13410
  try {
13411
- const plugin2 = await new chunkLLWLHFTD_cjs.PluginService(db).getPlugin(chunkLLWLHFTD_cjs.MULTI_TENANT_PLUGIN_ID);
13411
+ const plugin2 = await new chunkWIV3R2MJ_cjs.PluginService(db).getPlugin(chunkWIV3R2MJ_cjs.MULTI_TENANT_PLUGIN_ID);
13412
13412
  return plugin2?.status === "active";
13413
13413
  } catch {
13414
13414
  return false;
@@ -13416,7 +13416,7 @@ async function isMultiTenantActive(db) {
13416
13416
  }
13417
13417
  function createTenantAdminRoutes() {
13418
13418
  const routes2 = new hono.Hono();
13419
- routes2.use("*", chunkBYLQOBO6_cjs.requireAuth());
13419
+ routes2.use("*", chunkL3KHLEHL_cjs.requireAuth());
13420
13420
  routes2.use("*", async (c, next) => {
13421
13421
  const user = c.get("user");
13422
13422
  if (user?.role !== "admin") {
@@ -13430,7 +13430,7 @@ function createTenantAdminRoutes() {
13430
13430
  const form = await c.req.formData();
13431
13431
  const slug = String(form.get("tenant") ?? "").trim().toLowerCase();
13432
13432
  const redirect = String(form.get("redirect") ?? "");
13433
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13433
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13434
13434
  const tenant = await svc.getTenantBySlug(slug);
13435
13435
  if (!tenant || tenant.status !== "active") {
13436
13436
  return c.json({ error: "Unknown or inactive tenant" }, 400);
@@ -13440,7 +13440,7 @@ function createTenantAdminRoutes() {
13440
13440
  if (!user.isSuperAdmin && !await svc.isMember(user.userId, slug)) {
13441
13441
  return c.json({ error: "You are not a member of this tenant" }, 403);
13442
13442
  }
13443
- cookie.setCookie(c, chunkLLWLHFTD_cjs.TENANT_COOKIE, slug, {
13443
+ cookie.setCookie(c, chunkWIV3R2MJ_cjs.TENANT_COOKIE, slug, {
13444
13444
  path: "/",
13445
13445
  httpOnly: true,
13446
13446
  sameSite: "Lax",
@@ -13457,7 +13457,7 @@ function createTenantAdminRoutes() {
13457
13457
  if (!user) return c.redirect("/auth/login");
13458
13458
  const token = c.req.query("token") ?? "";
13459
13459
  try {
13460
- const { slug } = await new chunkTV7LRFXH_cjs.TenantService(db).acceptInvitation(token, user.userId, user.email);
13460
+ const { slug } = await new chunkSSOP7G4R_cjs.TenantService(db).acceptInvitation(token, user.userId, user.email);
13461
13461
  return c.redirect(`/admin/tenants/${slug}/members?message=Invitation accepted`);
13462
13462
  } catch (error) {
13463
13463
  const message = error instanceof Error ? error.message : "Failed to accept invitation";
@@ -13485,7 +13485,7 @@ function createTenantAdminRoutes() {
13485
13485
  const userId = c.req.param("userId");
13486
13486
  const target = await db.prepare("SELECT id, email FROM auth_user WHERE id = ?").bind(userId).first();
13487
13487
  if (!target?.id) return c.redirect("/admin/users?message=User not found&type=error");
13488
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13488
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13489
13489
  const [memberships, allTenants] = await Promise.all([svc.listUserMemberships(userId), svc.listTenants()]);
13490
13490
  const memberSlugs = new Set(memberships.map((m) => m.slug));
13491
13491
  const availableTenants = allTenants.filter((t) => t.status === "active" && !memberSlugs.has(t.slug)).map((t) => ({ slug: t.slug, name: t.name }));
@@ -13510,10 +13510,10 @@ function createTenantAdminRoutes() {
13510
13510
  const slug = String(form.get("slug") ?? "").trim().toLowerCase();
13511
13511
  const role = String(form.get("role") ?? "viewer");
13512
13512
  const redirectTo = String(form.get("_redirect") ?? "") || `/admin/tenants/users/${userId}`;
13513
- if (!chunkTV7LRFXH_cjs.isValidMemberRole(role)) throw new Error(`Invalid role '${role}'`);
13513
+ if (!chunkSSOP7G4R_cjs.isValidMemberRole(role)) throw new Error(`Invalid role '${role}'`);
13514
13514
  const target = await db.prepare("SELECT email FROM auth_user WHERE id = ?").bind(userId).first();
13515
13515
  if (!target) throw new Error("User not found");
13516
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13516
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13517
13517
  if (!await svc.getTenantBySlug(slug)) throw new Error("Tenant not found");
13518
13518
  if (await svc.isMember(userId, slug)) throw new Error(`Already a member of '${slug}'`);
13519
13519
  await svc.addMember(slug, userId, role, target.email ?? null);
@@ -13532,7 +13532,7 @@ function createTenantAdminRoutes() {
13532
13532
  const form = await c.req.formData();
13533
13533
  const role = String(form.get("role") ?? "");
13534
13534
  const redirectTo = String(form.get("_redirect") ?? "") || `/admin/tenants/users/${userId}`;
13535
- await new chunkTV7LRFXH_cjs.TenantService(db).setMemberRole(slug, userId, role);
13535
+ await new chunkSSOP7G4R_cjs.TenantService(db).setMemberRole(slug, userId, role);
13536
13536
  return c.redirect(`${redirectTo}?message=Role updated`);
13537
13537
  } catch (error) {
13538
13538
  const message = error instanceof Error ? error.message : "Failed to update role";
@@ -13547,7 +13547,7 @@ function createTenantAdminRoutes() {
13547
13547
  try {
13548
13548
  const form = await c.req.formData();
13549
13549
  const redirectTo = String(form.get("_redirect") ?? "") || `/admin/tenants/users/${userId}`;
13550
- await new chunkTV7LRFXH_cjs.TenantService(db).removeMember(slug, userId);
13550
+ await new chunkSSOP7G4R_cjs.TenantService(db).removeMember(slug, userId);
13551
13551
  return c.redirect(`${redirectTo}?message=Removed from ${encodeURIComponent(slug)}`);
13552
13552
  } catch (error) {
13553
13553
  const message = error instanceof Error ? error.message : "Failed to remove membership";
@@ -13562,7 +13562,7 @@ function createTenantAdminRoutes() {
13562
13562
  return c.html(renderTenantsInactive({ user: userShape(cur), version }));
13563
13563
  }
13564
13564
  const roleName = c.req.param("roleName");
13565
- const assignments = await new chunkTV7LRFXH_cjs.TenantService(db).listAssignmentsByRole(roleName);
13565
+ const assignments = await new chunkSSOP7G4R_cjs.TenantService(db).listAssignmentsByRole(roleName);
13566
13566
  return c.html(renderRoleUsage({ roleName, assignments, user: userShape(cur), version }));
13567
13567
  });
13568
13568
  routes2.get("/", async (c) => {
@@ -13572,7 +13572,7 @@ function createTenantAdminRoutes() {
13572
13572
  if (!await isMultiTenantActive(db)) {
13573
13573
  return c.html(renderTenantsInactive({ user: userShape(user), version }));
13574
13574
  }
13575
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13575
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13576
13576
  await svc.ensureDefaultTenant();
13577
13577
  const tenants = await svc.listTenants();
13578
13578
  const [docRes, memberRes] = await db.batch([
@@ -13611,7 +13611,7 @@ function createTenantAdminRoutes() {
13611
13611
  formEntries = Object.fromEntries(form.entries());
13612
13612
  const validated = tenantFormSchema.parse(formEntries);
13613
13613
  if (!validated.slug) throw new zod.z.ZodError([{ code: "custom", message: "Slug is required", path: ["slug"] }]);
13614
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13614
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13615
13615
  await svc.createTenant({
13616
13616
  name: validated.name,
13617
13617
  slug: validated.slug,
@@ -13636,7 +13636,7 @@ function createTenantAdminRoutes() {
13636
13636
  if (!await isMultiTenantActive(db)) {
13637
13637
  return c.html(renderTenantsInactive({ user: userShape(user), version }));
13638
13638
  }
13639
- const tenant = await new chunkTV7LRFXH_cjs.TenantService(db).getTenantBySlug(c.req.param("slug"));
13639
+ const tenant = await new chunkSSOP7G4R_cjs.TenantService(db).getTenantBySlug(c.req.param("slug"));
13640
13640
  if (!tenant) return c.redirect("/admin/tenants?message=Tenant not found&type=error");
13641
13641
  return c.html(renderTenantForm({ tenant, isEdit: true, user: userShape(user), version }));
13642
13642
  });
@@ -13646,7 +13646,7 @@ function createTenantAdminRoutes() {
13646
13646
  const version = c.get("appVersion");
13647
13647
  const slug = c.req.param("slug");
13648
13648
  if (!await isMultiTenantActive(db)) return c.json({ error: "Multi-tenant plugin is not active" }, 403);
13649
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13649
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13650
13650
  try {
13651
13651
  const form = await c.req.formData();
13652
13652
  const validated = tenantFormSchema.parse(Object.fromEntries(form.entries()));
@@ -13671,7 +13671,7 @@ function createTenantAdminRoutes() {
13671
13671
  const slug = c.req.param("slug");
13672
13672
  if (!await isMultiTenantActive(db)) return c.json({ error: "Multi-tenant plugin is not active" }, 403);
13673
13673
  try {
13674
- await new chunkTV7LRFXH_cjs.TenantService(db).deleteTenant(slug);
13674
+ await new chunkSSOP7G4R_cjs.TenantService(db).deleteTenant(slug);
13675
13675
  return c.redirect("/admin/tenants?message=Tenant deleted successfully");
13676
13676
  } catch (error) {
13677
13677
  const message = error instanceof Error ? error.message : "Failed to delete tenant";
@@ -13686,7 +13686,7 @@ function createTenantAdminRoutes() {
13686
13686
  return c.html(renderTenantsInactive({ user: userShape(user), version }));
13687
13687
  }
13688
13688
  const slug = c.req.param("slug");
13689
- const svc = new chunkTV7LRFXH_cjs.TenantService(db);
13689
+ const svc = new chunkSSOP7G4R_cjs.TenantService(db);
13690
13690
  const tenant = await svc.getTenantBySlug(slug);
13691
13691
  if (!tenant) return c.redirect("/admin/tenants?message=Tenant not found&type=error");
13692
13692
  const [members, invitations] = await Promise.all([svc.listMembers(slug), svc.listInvitations(slug)]);
@@ -13712,7 +13712,7 @@ function createTenantAdminRoutes() {
13712
13712
  const form = await c.req.formData();
13713
13713
  const email = String(form.get("email") ?? "");
13714
13714
  const role = String(form.get("role") ?? "viewer");
13715
- await new chunkTV7LRFXH_cjs.TenantService(db).addMemberByEmail(slug, email, role);
13715
+ await new chunkSSOP7G4R_cjs.TenantService(db).addMemberByEmail(slug, email, role);
13716
13716
  return c.redirect(`/admin/tenants/${slug}/members?message=Member added`);
13717
13717
  } catch (error) {
13718
13718
  const message = error instanceof Error ? error.message : "Failed to add member";
@@ -13727,7 +13727,7 @@ function createTenantAdminRoutes() {
13727
13727
  try {
13728
13728
  const form = await c.req.formData();
13729
13729
  const role = String(form.get("role") ?? "");
13730
- await new chunkTV7LRFXH_cjs.TenantService(db).setMemberRole(slug, userId, role);
13730
+ await new chunkSSOP7G4R_cjs.TenantService(db).setMemberRole(slug, userId, role);
13731
13731
  return c.redirect(`/admin/tenants/${slug}/members?message=Role updated`);
13732
13732
  } catch (error) {
13733
13733
  const message = error instanceof Error ? error.message : "Failed to update role";
@@ -13740,7 +13740,7 @@ function createTenantAdminRoutes() {
13740
13740
  const userId = c.req.param("userId");
13741
13741
  if (!await isMultiTenantActive(db)) return c.json({ error: "Multi-tenant plugin is not active" }, 403);
13742
13742
  try {
13743
- await new chunkTV7LRFXH_cjs.TenantService(db).removeMember(slug, userId);
13743
+ await new chunkSSOP7G4R_cjs.TenantService(db).removeMember(slug, userId);
13744
13744
  return c.redirect(`/admin/tenants/${slug}/members?message=Member removed`);
13745
13745
  } catch (error) {
13746
13746
  const message = error instanceof Error ? error.message : "Failed to remove member";
@@ -13756,12 +13756,12 @@ function createTenantAdminRoutes() {
13756
13756
  const form = await c.req.formData();
13757
13757
  const email = String(form.get("email") ?? "");
13758
13758
  const role = String(form.get("role") ?? "viewer");
13759
- const token = await new chunkTV7LRFXH_cjs.TenantService(db).createInvitation(slug, email, role, user?.userId ?? null);
13759
+ const token = await new chunkSSOP7G4R_cjs.TenantService(db).createInvitation(slug, email, role, user?.userId ?? null);
13760
13760
  const origin = c.req.header("origin") || new URL(c.req.url).origin;
13761
13761
  const acceptUrl = `${origin}/join/invite?token=${encodeURIComponent(token)}`;
13762
13762
  let note;
13763
13763
  let noteType = "";
13764
- const svc2 = chunkTV7LRFXH_cjs.hasEmailService() ? chunkTV7LRFXH_cjs.getEmailService() : null;
13764
+ const svc2 = chunkSSOP7G4R_cjs.hasEmailService() ? chunkSSOP7G4R_cjs.getEmailService() : null;
13765
13765
  const hasRealProvider = !!svc2 && svc2.getProviderName() !== "console";
13766
13766
  if (hasRealProvider) {
13767
13767
  const result = await svc2.send({
@@ -13802,7 +13802,7 @@ function createTenantAdminRoutes() {
13802
13802
  WHERE i.id = ? AND t.slug = ? AND i.status = 'pending'`
13803
13803
  ).bind(id, slug).first();
13804
13804
  if (!inv) throw new Error("Invitation not found or already used");
13805
- const svc2 = chunkTV7LRFXH_cjs.hasEmailService() ? chunkTV7LRFXH_cjs.getEmailService() : null;
13805
+ const svc2 = chunkSSOP7G4R_cjs.hasEmailService() ? chunkSSOP7G4R_cjs.getEmailService() : null;
13806
13806
  const hasRealProvider = !!svc2 && svc2.getProviderName() !== "console";
13807
13807
  if (!hasRealProvider) throw new Error("No email plugin active");
13808
13808
  const origin = c.req.header("origin") || new URL(c.req.url).origin;
@@ -13827,7 +13827,7 @@ function createTenantAdminRoutes() {
13827
13827
  const id = c.req.param("id");
13828
13828
  if (!await isMultiTenantActive(db)) return c.json({ error: "Multi-tenant plugin is not active" }, 403);
13829
13829
  try {
13830
- await new chunkTV7LRFXH_cjs.TenantService(db).revokeInvitation(slug, id);
13830
+ await new chunkSSOP7G4R_cjs.TenantService(db).revokeInvitation(slug, id);
13831
13831
  return c.redirect(`/admin/tenants/${slug}/members?message=Invitation revoked`);
13832
13832
  } catch (error) {
13833
13833
  const message = error instanceof Error ? error.message : "Failed to revoke invitation";
@@ -14057,7 +14057,7 @@ function createJoinRoutes() {
14057
14057
  if (existing) return rerender("An account with this email already exists. Please sign in instead.");
14058
14058
  try {
14059
14059
  const userId = crypto.randomUUID();
14060
- const passwordHash = await chunkBYLQOBO6_cjs.AuthManager.hashPassword(password);
14060
+ const passwordHash = await chunkL3KHLEHL_cjs.AuthManager.hashPassword(password);
14061
14061
  const now = Date.now();
14062
14062
  const nowSec = Math.floor(now / 1e3);
14063
14063
  await db.batch([
@@ -14070,8 +14070,8 @@ function createJoinRoutes() {
14070
14070
  VALUES (?, ?, ?, 'credential', ?, ?, ?)`
14071
14071
  ).bind(`cred-${userId}`, userId, userId, passwordHash, nowSec, nowSec)
14072
14072
  ]);
14073
- await new chunkTV7LRFXH_cjs.TenantService(db).acceptInvitation(token, userId, inv.email);
14074
- const auth = chunkNUKJ54GA_cjs.createAuth(c.env);
14073
+ await new chunkSSOP7G4R_cjs.TenantService(db).acceptInvitation(token, userId, inv.email);
14074
+ const auth = chunkZTEJHSYS_cjs.createAuth(c.env);
14075
14075
  const origin = new URL(c.req.url).origin;
14076
14076
  const baReq = new Request(`${origin}/auth/sign-in/email`, {
14077
14077
  method: "POST",
@@ -14126,7 +14126,7 @@ function createJoinRoutes() {
14126
14126
  version
14127
14127
  }), 400);
14128
14128
  try {
14129
- const auth = chunkNUKJ54GA_cjs.createAuth(c.env);
14129
+ const auth = chunkZTEJHSYS_cjs.createAuth(c.env);
14130
14130
  const origin = new URL(c.req.url).origin;
14131
14131
  const baReq = new Request(`${origin}/auth/sign-in/email`, {
14132
14132
  method: "POST",
@@ -14138,7 +14138,7 @@ function createJoinRoutes() {
14138
14138
  const baBody = await baRes.json();
14139
14139
  const userId = baBody?.user?.id;
14140
14140
  if (!userId) return rerender("Sign-in succeeded but could not read user ID.");
14141
- await new chunkTV7LRFXH_cjs.TenantService(db).acceptInvitation(token, userId, inv.email);
14141
+ await new chunkSSOP7G4R_cjs.TenantService(db).acceptInvitation(token, userId, inv.email);
14142
14142
  const headers = new Headers({ Location: "/admin?message=Welcome! You have joined " + encodeURIComponent(inv.tenantName) });
14143
14143
  copyBaCookies(baRes, headers);
14144
14144
  return new Response(null, { status: 302, headers });
@@ -14152,7 +14152,7 @@ function createJoinRoutes() {
14152
14152
 
14153
14153
  // src/plugins/core-plugins/multi-tenant-plugin/index.ts
14154
14154
  var TENANT_ICON = `<svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21"/></svg>`;
14155
- var multiTenantPlugin = chunkNYLWNR6T_cjs.definePlugin({
14155
+ var multiTenantPlugin = chunk4YRYGDCQ_cjs.definePlugin({
14156
14156
  id: manifest_default2.id,
14157
14157
  version: "1.0.0",
14158
14158
  name: manifest_default2.name,
@@ -14167,30 +14167,30 @@ var multiTenantPlugin = chunkNYLWNR6T_cjs.definePlugin({
14167
14167
  { label: "Tenants", path: "/admin/tenants", icon: TENANT_ICON, order: 80 }
14168
14168
  ],
14169
14169
  activate: async () => {
14170
- chunkLLWLHFTD_cjs.invalidateTenantCache();
14170
+ chunkWIV3R2MJ_cjs.invalidateTenantCache();
14171
14171
  console.info("\u2705 Multi-Tenant plugin activated");
14172
14172
  },
14173
14173
  deactivate: async () => {
14174
- chunkLLWLHFTD_cjs.invalidateTenantCache();
14174
+ chunkWIV3R2MJ_cjs.invalidateTenantCache();
14175
14175
  console.info("\u274C Multi-Tenant plugin deactivated");
14176
14176
  }
14177
14177
  });
14178
14178
  var routes = new hono.Hono();
14179
- routes.use("*", chunkBYLQOBO6_cjs.requireAuth());
14180
- routes.use("*", chunkBYLQOBO6_cjs.requireRole(["admin", "editor"]));
14179
+ routes.use("*", chunkL3KHLEHL_cjs.requireAuth());
14180
+ routes.use("*", chunkL3KHLEHL_cjs.requireRole(["admin", "editor"]));
14181
14181
  routes.get("/:rootId", async (c) => {
14182
14182
  const { rootId } = c.req.param();
14183
14183
  const db = c.env.DB;
14184
- const scope = await chunkTV7LRFXH_cjs.resolveDocScope(c, db, { rootId });
14184
+ const scope = await chunkSSOP7G4R_cjs.resolveDocScope(c, db, { rootId });
14185
14185
  if (!scope) {
14186
14186
  return c.html('<p class="text-zinc-500 dark:text-zinc-400 p-4">Document not found.</p>', 404);
14187
14187
  }
14188
14188
  if (!scope.docType?.settings?.versioning) {
14189
14189
  return c.html('<p class="text-zinc-500 dark:text-zinc-400 p-4">Versioning not enabled for this type.</p>', 404);
14190
14190
  }
14191
- const denied = await chunkTV7LRFXH_cjs.denyIfNotAllowed(c, db, rootId, "read", scope.docType?.settings, scope.tenantId);
14191
+ const denied = await chunkSSOP7G4R_cjs.denyIfNotAllowed(c, db, rootId, "read", scope.docType?.settings, scope.tenantId);
14192
14192
  if (denied) return denied;
14193
- const repo = new chunkTV7LRFXH_cjs.DocumentRepository(db, scope.tenantId);
14193
+ const repo = new chunkSSOP7G4R_cjs.DocumentRepository(db, scope.tenantId);
14194
14194
  const versions = await repo.getVersionHistory(rootId);
14195
14195
  const safeRootIdAttr = chunkMNWKYY5E_cjs.escapeHtml(rootId);
14196
14196
  const rows = versions.map((v) => {
@@ -14283,14 +14283,14 @@ routes.post("/:rootId/restore/:versionNumber", async (c) => {
14283
14283
  const { rootId, versionNumber } = c.req.param();
14284
14284
  const db = c.env.DB;
14285
14285
  const user = c.get("user");
14286
- const scope = await chunkTV7LRFXH_cjs.resolveDocScope(c, db, { rootId });
14286
+ const scope = await chunkSSOP7G4R_cjs.resolveDocScope(c, db, { rootId });
14287
14287
  if (!scope) {
14288
14288
  return c.json({ error: "Document not found" }, 404);
14289
14289
  }
14290
14290
  if (!scope.docType?.settings?.versioning) {
14291
14291
  return c.json({ error: "Versioning not enabled for this type" }, 404);
14292
14292
  }
14293
- const denied = await chunkTV7LRFXH_cjs.denyIfNotAllowed(c, db, rootId, "update", scope.docType?.settings, scope.tenantId);
14293
+ const denied = await chunkSSOP7G4R_cjs.denyIfNotAllowed(c, db, rootId, "update", scope.docType?.settings, scope.tenantId);
14294
14294
  if (denied) return denied;
14295
14295
  const row = await db.prepare("SELECT * FROM documents WHERE root_id = ? AND tenant_id = ? AND version_number = ? LIMIT 1").bind(rootId, scope.tenantId, Number(versionNumber)).first();
14296
14296
  if (!row) {
@@ -14300,7 +14300,7 @@ routes.post("/:rootId/restore/:versionNumber", async (c) => {
14300
14300
  const title = row.title ?? null;
14301
14301
  const slug = row.slug ?? null;
14302
14302
  const docType = scope.docType;
14303
- const svc = new chunk2CB4KY7I_cjs.DocumentsService(db, {
14303
+ const svc = new chunkW36OZTJ5_cjs.DocumentsService(db, {
14304
14304
  queryableFields: docType?.queryableFields ?? [],
14305
14305
  typeSchemaVersion: docType?.schemaVersion ?? 1,
14306
14306
  maxVersionsPerRoot: docType?.settings?.maxVersionsPerRoot ?? 50,
@@ -14313,7 +14313,7 @@ routes.post("/:rootId/restore/:versionNumber", async (c) => {
14313
14313
  var routes_default = routes;
14314
14314
 
14315
14315
  // src/plugins/core-plugins/versioning-plugin/index.ts
14316
- var versioningPlugin = chunkNYLWNR6T_cjs.definePlugin({
14316
+ var versioningPlugin = chunk4YRYGDCQ_cjs.definePlugin({
14317
14317
  id: "versioning",
14318
14318
  version: "1.0.0",
14319
14319
  name: "Versioning",
@@ -14390,8 +14390,8 @@ function createMagicLinkAuthPlugin() {
14390
14390
  const baseUrl = new URL(c.req.url).origin;
14391
14391
  const magicLink = `${baseUrl}/auth/magic-link/verify?token=${token}`;
14392
14392
  try {
14393
- if (chunkTV7LRFXH_cjs.hasEmailService()) {
14394
- await chunkTV7LRFXH_cjs.getEmailService().send({
14393
+ if (chunkSSOP7G4R_cjs.hasEmailService()) {
14394
+ await chunkSSOP7G4R_cjs.getEmailService().send({
14395
14395
  to: normalizedEmail,
14396
14396
  subject: "Your Magic Link to Sign In",
14397
14397
  flow: "magic-link",
@@ -14468,19 +14468,19 @@ function createMagicLinkAuthPlugin() {
14468
14468
  SET used = 1, used_at = ?
14469
14469
  WHERE id = ?
14470
14470
  `).bind(Date.now(), magicLink.id).run();
14471
- const tokenTtl = await chunkBYLQOBO6_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
14472
- const jwtToken = await chunkBYLQOBO6_cjs.AuthManager.generateToken(
14471
+ const tokenTtl = await chunkL3KHLEHL_cjs.getJwtExpirySecondsFromDb(c.env.DB, c.env);
14472
+ const jwtToken = await chunkL3KHLEHL_cjs.AuthManager.generateToken(
14473
14473
  user.id,
14474
14474
  user.email,
14475
14475
  user.role,
14476
14476
  c.env.JWT_SECRET,
14477
14477
  tokenTtl
14478
14478
  );
14479
- chunkBYLQOBO6_cjs.AuthManager.setAuthCookie(c, jwtToken, { maxAge: tokenTtl });
14479
+ chunkL3KHLEHL_cjs.AuthManager.setAuthCookie(c, jwtToken, { maxAge: tokenTtl });
14480
14480
  await db.prepare(`
14481
14481
  UPDATE auth_user SET last_login_at = ? WHERE id = ?
14482
14482
  `).bind(Date.now(), user.id).run();
14483
- chunkTV7LRFXH_cjs.dispatchHookEvent(
14483
+ chunkSSOP7G4R_cjs.dispatchHookEvent(
14484
14484
  c,
14485
14485
  "auth:magic-link:consumed",
14486
14486
  { user: { id: user.id, email: user.email, role: user.role } },
@@ -14965,7 +14965,7 @@ async function warmCollections(db) {
14965
14965
  const collectionCache = chunkYA3TJ65D_cjs.getCacheService(config);
14966
14966
  let count = 0;
14967
14967
  try {
14968
- const results = chunkLLWLHFTD_cjs.getCollectionRegistry().listActive().map(chunkLLWLHFTD_cjs.collectionRecordToRow);
14968
+ const results = chunkWIV3R2MJ_cjs.getCollectionRegistry().listActive().map(chunkWIV3R2MJ_cjs.collectionRecordToRow);
14969
14969
  for (const collection of results) {
14970
14970
  const key = collectionCache.generateKey("item", collection.id);
14971
14971
  await collectionCache.set(key, collection);
@@ -15236,7 +15236,7 @@ function renderCacheDashboard(data) {
15236
15236
  </script>
15237
15237
 
15238
15238
  <!-- Confirmation Dialogs -->
15239
- ${chunkTV7LRFXH_cjs.renderConfirmationDialog({
15239
+ ${chunkSSOP7G4R_cjs.renderConfirmationDialog({
15240
15240
  id: "clear-all-cache-confirm",
15241
15241
  title: "Clear All Cache",
15242
15242
  message: "Are you sure you want to clear all cache entries? This cannot be undone.",
@@ -15247,7 +15247,7 @@ function renderCacheDashboard(data) {
15247
15247
  onConfirm: "performClearAllCaches()"
15248
15248
  })}
15249
15249
 
15250
- ${chunkTV7LRFXH_cjs.renderConfirmationDialog({
15250
+ ${chunkSSOP7G4R_cjs.renderConfirmationDialog({
15251
15251
  id: "clear-namespace-cache-confirm",
15252
15252
  title: "Clear Namespace Cache",
15253
15253
  message: "Clear cache for this namespace?",
@@ -15258,7 +15258,7 @@ function renderCacheDashboard(data) {
15258
15258
  onConfirm: "performClearNamespaceCache()"
15259
15259
  })}
15260
15260
 
15261
- ${chunkTV7LRFXH_cjs.getConfirmationDialogScript()}
15261
+ ${chunkSSOP7G4R_cjs.getConfirmationDialogScript()}
15262
15262
  `;
15263
15263
  const layoutData = {
15264
15264
  title: "Cache System",
@@ -15524,7 +15524,7 @@ app.get("/", async (c) => {
15524
15524
  const totalRequests = totalHits + totalMisses;
15525
15525
  const overallHitRate = totalRequests > 0 ? totalHits / totalRequests * 100 : 0;
15526
15526
  const DEFAULT_TTL = chunkYA3TJ65D_cjs.CACHE_CONFIGS.api?.ttl ?? 300;
15527
- const collections = chunkLLWLHFTD_cjs.getCollectionRegistry().listActive().filter((r) => !r.internal).map((r) => {
15527
+ const collections = chunkWIV3R2MJ_cjs.getCollectionRegistry().listActive().filter((r) => !r.internal).map((r) => {
15528
15528
  const cacheOverride = r.cache;
15529
15529
  const cacheEnabled = cacheOverride?.enabled !== false;
15530
15530
  const hasCustomTtl = typeof cacheOverride?.ttl === "number";
@@ -16061,16 +16061,16 @@ var faviconSvg = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
16061
16061
  // src/app.ts
16062
16062
  function createSonicJSApp(config = {}) {
16063
16063
  const app2 = new hono.Hono();
16064
- const appVersion = config.version || chunkXGH2FVVR_cjs.getCoreVersion();
16064
+ const appVersion = config.version || chunkSIPBHWMG_cjs.getCoreVersion();
16065
16065
  const appName = config.name || "SonicJS AI";
16066
- const hookSystem = new chunkSY7CBACS_cjs.HookSystemImpl();
16066
+ const hookSystem = new chunkG5LC7MYH_cjs.HookSystemImpl();
16067
16067
  chunkJ6JTWD2A_cjs.setHookSystem(hookSystem);
16068
16068
  const magicLinkPlugin = createMagicLinkAuthPlugin();
16069
16069
  const corePluginsBeforeCatchAll = [
16070
16070
  securityAuditPlugin,
16071
16071
  aiSearchPlugin,
16072
16072
  oauthProvidersPlugin,
16073
- chunkTV7LRFXH_cjs.userProfilesPlugin,
16073
+ chunkSSOP7G4R_cjs.userProfilesPlugin,
16074
16074
  otpLoginPlugin,
16075
16075
  analyticsPlugin,
16076
16076
  stripePlugin,
@@ -16080,23 +16080,23 @@ function createSonicJSApp(config = {}) {
16080
16080
  shortcodesPlugin,
16081
16081
  helloWorldPlugin,
16082
16082
  multiTenantPlugin,
16083
- chunkTV7LRFXH_cjs.lexicalEditorPlugin,
16083
+ chunkSSOP7G4R_cjs.lexicalEditorPlugin,
16084
16084
  versioningPlugin
16085
16085
  ];
16086
16086
  const corePluginsAfterCatchAll = [emailPluginV3, magicLinkPlugin, emailReconciliationPlugin];
16087
- const wirePlugins = chunkSY7CBACS_cjs.createPluginWirer(
16087
+ const wirePlugins = chunkG5LC7MYH_cjs.createPluginWirer(
16088
16088
  () => [...corePluginsBeforeCatchAll, ...corePluginsAfterCatchAll, ...config.plugins?.register ?? []],
16089
16089
  // The capability-gated `ctx.cap.email` resolves to the app EmailService, which
16090
16090
  // is initialized (below) just before wiring on the first request.
16091
16091
  () => ({
16092
16092
  hooks: hookSystem,
16093
16093
  env: firstRequestEnv,
16094
- providers: { email: () => chunkTV7LRFXH_cjs.getEmailService() }
16094
+ providers: { email: () => chunkSSOP7G4R_cjs.getEmailService() }
16095
16095
  })
16096
16096
  );
16097
16097
  let firstRequestEnv;
16098
16098
  const initEmailService = async (env = {}) => {
16099
- if (chunkTV7LRFXH_cjs.hasEmailService()) return;
16099
+ if (chunkSSOP7G4R_cjs.hasEmailService()) return;
16100
16100
  let provider;
16101
16101
  let defaultFrom = config.email?.from;
16102
16102
  let defaultReplyTo;
@@ -16131,14 +16131,14 @@ function createSonicJSApp(config = {}) {
16131
16131
  }
16132
16132
  }
16133
16133
  defaultFrom = defaultFrom || env.DEFAULT_FROM_EMAIL || "noreply@sonicjs.local";
16134
- chunkTV7LRFXH_cjs.setEmailService(new EmailService({ provider, defaultFrom, defaultReplyTo, db: env.DB }));
16134
+ chunkSSOP7G4R_cjs.setEmailService(new EmailService({ provider, defaultFrom, defaultReplyTo, db: env.DB }));
16135
16135
  };
16136
16136
  app2.use("*", async (c, next) => {
16137
16137
  c.set("appVersion", appVersion);
16138
16138
  await next();
16139
16139
  });
16140
- app2.use("*", chunkBYLQOBO6_cjs.metricsMiddleware());
16141
- app2.use("*", chunkBYLQOBO6_cjs.bootstrapMiddleware(config));
16140
+ app2.use("*", chunkL3KHLEHL_cjs.metricsMiddleware());
16141
+ app2.use("*", chunkL3KHLEHL_cjs.bootstrapMiddleware(config));
16142
16142
  const boot = async (env) => {
16143
16143
  if (config.plugins?.disableAll) return;
16144
16144
  firstRequestEnv = env;
@@ -16176,13 +16176,13 @@ function createSonicJSApp(config = {}) {
16176
16176
  allowHeaders: ["Content-Type", "Authorization", "X-API-Key"],
16177
16177
  credentials: true
16178
16178
  }));
16179
- app2.use("*", chunkBYLQOBO6_cjs.securityHeadersMiddleware());
16180
- app2.use("*", chunkBYLQOBO6_cjs.csrfProtection());
16179
+ app2.use("*", chunkL3KHLEHL_cjs.securityHeadersMiddleware());
16180
+ app2.use("*", chunkL3KHLEHL_cjs.csrfProtection());
16181
16181
  app2.use("*", async (c, next) => {
16182
16182
  try {
16183
16183
  const reqUrl = new URL(c.req.url);
16184
16184
  const requestBaseURL = `${reqUrl.protocol}//${reqUrl.host}`;
16185
- const auth = chunkNUKJ54GA_cjs.createAuth(c.env, config.auth?.extendBetterAuth, requestBaseURL);
16185
+ const auth = chunkZTEJHSYS_cjs.createAuth(c.env, config.auth?.extendBetterAuth, requestBaseURL);
16186
16186
  const session = await auth.api.getSession({ headers: c.req.raw.headers });
16187
16187
  if (session?.user) {
16188
16188
  const u = session.user;
@@ -16214,9 +16214,9 @@ function createSonicJSApp(config = {}) {
16214
16214
  app2.use("*", middleware);
16215
16215
  }
16216
16216
  }
16217
- app2.use("*", chunkLLWLHFTD_cjs.tenantMiddleware());
16218
- app2.use("/admin/*", chunkBYLQOBO6_cjs.requireAuth());
16219
- app2.use("/admin/*", chunkBYLQOBO6_cjs.requireRbac("portal", "access"));
16217
+ app2.use("*", chunkWIV3R2MJ_cjs.tenantMiddleware());
16218
+ app2.use("/admin/*", chunkL3KHLEHL_cjs.requireAuth());
16219
+ app2.use("/admin/*", chunkL3KHLEHL_cjs.requireRbac("portal", "access"));
16220
16220
  app2.use("/admin/*", pluginMenuMiddleware());
16221
16221
  const NAV_LANDING = [
16222
16222
  { path: "/admin/content", perm: "content:read" },
@@ -16233,7 +16233,7 @@ function createSonicJSApp(config = {}) {
16233
16233
  if (!user?.userId) return next();
16234
16234
  let perms = [];
16235
16235
  try {
16236
- const { RbacService: RbacService2 } = await import('./rbac-VONLJJKB.cjs');
16236
+ const { RbacService: RbacService2 } = await import('./rbac-ESTOCVT2.cjs');
16237
16237
  perms = await new RbacService2(c.env.DB, c.env.CACHE_KV).permissionsForUser(user.userId);
16238
16238
  } catch {
16239
16239
  return next();
@@ -16262,43 +16262,43 @@ function createSonicJSApp(config = {}) {
16262
16262
  });
16263
16263
  app2.route("/api/security-audit", apiRoutes2);
16264
16264
  app2.route("/admin/plugins/security-audit", adminRoutes3);
16265
- app2.route("/api/media", chunkTV7LRFXH_cjs.api_media_default);
16266
- app2.route("/api/system", chunkTV7LRFXH_cjs.api_system_default);
16267
- app2.route("/api/documents", chunkTV7LRFXH_cjs.apiDocumentsRoutes);
16268
- app2.route("/api", chunkTV7LRFXH_cjs.api_default);
16269
- app2.route("/admin/documents", chunkTV7LRFXH_cjs.adminDocumentsRoutes);
16270
- chunkSY7CBACS_cjs.registerPluginRoutes(app2, [formsPlugin], { source: "core" });
16271
- app2.route("/admin/api", chunkTV7LRFXH_cjs.admin_api_default);
16272
- app2.route("/admin/collections", chunkTV7LRFXH_cjs.adminCollectionsRoutes);
16273
- app2.route("/admin/settings", chunkTV7LRFXH_cjs.adminSettingsRoutes);
16274
- app2.route("/admin/api-reference", chunkTV7LRFXH_cjs.router2);
16265
+ app2.route("/api/media", chunkSSOP7G4R_cjs.api_media_default);
16266
+ app2.route("/api/system", chunkSSOP7G4R_cjs.api_system_default);
16267
+ app2.route("/api/documents", chunkSSOP7G4R_cjs.apiDocumentsRoutes);
16268
+ app2.route("/api", chunkSSOP7G4R_cjs.api_default);
16269
+ app2.route("/admin/documents", chunkSSOP7G4R_cjs.adminDocumentsRoutes);
16270
+ chunkG5LC7MYH_cjs.registerPluginRoutes(app2, [formsPlugin], { source: "core" });
16271
+ app2.route("/admin/api", chunkSSOP7G4R_cjs.admin_api_default);
16272
+ app2.route("/admin/collections", chunkSSOP7G4R_cjs.adminCollectionsRoutes);
16273
+ app2.route("/admin/settings", chunkSSOP7G4R_cjs.adminSettingsRoutes);
16274
+ app2.route("/admin/api-reference", chunkSSOP7G4R_cjs.router2);
16275
16275
  app2.route("/admin/database-tools", createDatabaseToolsAdminRoutes());
16276
- app2.route("/admin/content", chunkTV7LRFXH_cjs.admin_content_default);
16277
- app2.route("/admin/media", chunkTV7LRFXH_cjs.adminMediaRoutes);
16276
+ app2.route("/admin/content", chunkSSOP7G4R_cjs.admin_content_default);
16277
+ app2.route("/admin/media", chunkSSOP7G4R_cjs.adminMediaRoutes);
16278
16278
  app2.use("/auth/*", securityAuditMiddleware());
16279
16279
  if (!config.plugins?.disableAll) {
16280
- chunkSY7CBACS_cjs.registerPluginRoutes(app2, corePluginsBeforeCatchAll, { source: "core" });
16280
+ chunkG5LC7MYH_cjs.registerPluginRoutes(app2, corePluginsBeforeCatchAll, { source: "core" });
16281
16281
  app2.route("/admin/cache", cache_default.getRoutes());
16282
16282
  if (config.plugins?.register && config.plugins.register.length > 0) {
16283
- chunkSY7CBACS_cjs.registerPluginRoutes(app2, config.plugins.register, { source: "user" });
16283
+ chunkG5LC7MYH_cjs.registerPluginRoutes(app2, config.plugins.register, { source: "user" });
16284
16284
  }
16285
16285
  }
16286
16286
  app2.route("/api/events", apiRoutes4);
16287
- app2.route("/admin/dashboard", chunkTV7LRFXH_cjs.router);
16288
- app2.route("/admin/plugins", chunkTV7LRFXH_cjs.adminPluginRoutes);
16289
- app2.route("/admin/logs", chunkTV7LRFXH_cjs.adminLogsRoutes);
16287
+ app2.route("/admin/dashboard", chunkSSOP7G4R_cjs.router);
16288
+ app2.route("/admin/plugins", chunkSSOP7G4R_cjs.adminPluginRoutes);
16289
+ app2.route("/admin/logs", chunkSSOP7G4R_cjs.adminLogsRoutes);
16290
16290
  app2.route("/admin/rbac", adminRbacRoutes);
16291
- app2.route("/admin", chunkTV7LRFXH_cjs.userRoutes);
16292
- app2.route("/auth", chunkTV7LRFXH_cjs.auth_default);
16291
+ app2.route("/admin", chunkSSOP7G4R_cjs.userRoutes);
16292
+ app2.route("/auth", chunkSSOP7G4R_cjs.auth_default);
16293
16293
  app2.on(["GET", "POST"], "/auth/*", (c) => {
16294
16294
  const reqUrl = new URL(c.req.url);
16295
16295
  const requestBaseURL = `${reqUrl.protocol}//${reqUrl.host}`;
16296
- const auth = chunkNUKJ54GA_cjs.createAuth(c.env, config.auth?.extendBetterAuth, requestBaseURL);
16296
+ const auth = chunkZTEJHSYS_cjs.createAuth(c.env, config.auth?.extendBetterAuth, requestBaseURL);
16297
16297
  return auth.handler(c.req.raw);
16298
16298
  });
16299
- app2.route("/", chunkTV7LRFXH_cjs.test_cleanup_default);
16299
+ app2.route("/", chunkSSOP7G4R_cjs.test_cleanup_default);
16300
16300
  if (!config.plugins?.disableAll) {
16301
- chunkSY7CBACS_cjs.registerPluginRoutes(app2, corePluginsAfterCatchAll, { source: "core" });
16301
+ chunkG5LC7MYH_cjs.registerPluginRoutes(app2, corePluginsAfterCatchAll, { source: "core" });
16302
16302
  }
16303
16303
  if (!config.plugins?.disableAll) {
16304
16304
  const allMountedPlugins = [
@@ -16307,8 +16307,8 @@ function createSonicJSApp(config = {}) {
16307
16307
  ...corePluginsAfterCatchAll,
16308
16308
  ...config.plugins?.register ?? []
16309
16309
  ];
16310
- chunkSY7CBACS_cjs.setPluginMenu(allMountedPlugins.flatMap((p) => p.menu ?? []));
16311
- chunkNYLWNR6T_cjs.setPluginDefinitions(allMountedPlugins);
16310
+ chunkG5LC7MYH_cjs.setPluginMenu(allMountedPlugins.flatMap((p) => p.menu ?? []));
16311
+ chunk4YRYGDCQ_cjs.setPluginDefinitions(allMountedPlugins);
16312
16312
  }
16313
16313
  app2.get("/favicon.svg", (c) => {
16314
16314
  return new Response(faviconSvg, {
@@ -17174,7 +17174,7 @@ var RedirectService = class {
17174
17174
  }
17175
17175
  cloudflareService = null;
17176
17176
  getDocService() {
17177
- return new chunk2CB4KY7I_cjs.DocumentsService(this.db, {
17177
+ return new chunkW36OZTJ5_cjs.DocumentsService(this.db, {
17178
17178
  queryableFields: REDIRECT_QUERYABLE_FIELDS,
17179
17179
  maxVersionsPerRoot: 1,
17180
17180
  tenantId: TENANT3
@@ -19800,7 +19800,7 @@ function createRedirectApiRoutes() {
19800
19800
  });
19801
19801
  return api;
19802
19802
  }
19803
- var redirectPlugin = chunkNYLWNR6T_cjs.definePlugin({
19803
+ var redirectPlugin = chunk4YRYGDCQ_cjs.definePlugin({
19804
19804
  id: manifest_default3.id,
19805
19805
  version: manifest_default3.version,
19806
19806
  name: manifest_default3.name,
@@ -19818,7 +19818,7 @@ var redirectPlugin = chunkNYLWNR6T_cjs.definePlugin({
19818
19818
  async onBoot(ctx) {
19819
19819
  const db = ctx.env?.DB;
19820
19820
  if (!db) return;
19821
- const registry = new chunkBYLQOBO6_cjs.DocumentTypeRegistry(db);
19821
+ const registry = new chunkL3KHLEHL_cjs.DocumentTypeRegistry(db);
19822
19822
  await registry.register({
19823
19823
  id: "redirect",
19824
19824
  name: "redirect",
@@ -19934,87 +19934,87 @@ function createDb(d1$1) {
19934
19934
  }
19935
19935
 
19936
19936
  // src/index.ts
19937
- var VERSION = chunkXGH2FVVR_cjs.package_default.version;
19937
+ var VERSION = chunkSIPBHWMG_cjs.package_default.version;
19938
19938
 
19939
19939
  Object.defineProperty(exports, "ROUTES_INFO", {
19940
19940
  enumerable: true,
19941
- get: function () { return chunkTV7LRFXH_cjs.ROUTES_INFO; }
19941
+ get: function () { return chunkSSOP7G4R_cjs.ROUTES_INFO; }
19942
19942
  });
19943
19943
  Object.defineProperty(exports, "adminApiRoutes", {
19944
19944
  enumerable: true,
19945
- get: function () { return chunkTV7LRFXH_cjs.admin_api_default; }
19945
+ get: function () { return chunkSSOP7G4R_cjs.admin_api_default; }
19946
19946
  });
19947
19947
  Object.defineProperty(exports, "adminCheckboxRoutes", {
19948
19948
  enumerable: true,
19949
- get: function () { return chunkTV7LRFXH_cjs.adminCheckboxRoutes; }
19949
+ get: function () { return chunkSSOP7G4R_cjs.adminCheckboxRoutes; }
19950
19950
  });
19951
19951
  Object.defineProperty(exports, "adminCollectionsRoutes", {
19952
19952
  enumerable: true,
19953
- get: function () { return chunkTV7LRFXH_cjs.adminCollectionsRoutes; }
19953
+ get: function () { return chunkSSOP7G4R_cjs.adminCollectionsRoutes; }
19954
19954
  });
19955
19955
  Object.defineProperty(exports, "adminContentRoutes", {
19956
19956
  enumerable: true,
19957
- get: function () { return chunkTV7LRFXH_cjs.admin_content_default; }
19957
+ get: function () { return chunkSSOP7G4R_cjs.admin_content_default; }
19958
19958
  });
19959
19959
  Object.defineProperty(exports, "adminDashboardRoutes", {
19960
19960
  enumerable: true,
19961
- get: function () { return chunkTV7LRFXH_cjs.router; }
19961
+ get: function () { return chunkSSOP7G4R_cjs.router; }
19962
19962
  });
19963
19963
  Object.defineProperty(exports, "adminLogsRoutes", {
19964
19964
  enumerable: true,
19965
- get: function () { return chunkTV7LRFXH_cjs.adminLogsRoutes; }
19965
+ get: function () { return chunkSSOP7G4R_cjs.adminLogsRoutes; }
19966
19966
  });
19967
19967
  Object.defineProperty(exports, "adminMediaRoutes", {
19968
19968
  enumerable: true,
19969
- get: function () { return chunkTV7LRFXH_cjs.adminMediaRoutes; }
19969
+ get: function () { return chunkSSOP7G4R_cjs.adminMediaRoutes; }
19970
19970
  });
19971
19971
  Object.defineProperty(exports, "adminPluginRoutes", {
19972
19972
  enumerable: true,
19973
- get: function () { return chunkTV7LRFXH_cjs.adminPluginRoutes; }
19973
+ get: function () { return chunkSSOP7G4R_cjs.adminPluginRoutes; }
19974
19974
  });
19975
19975
  Object.defineProperty(exports, "adminSettingsRoutes", {
19976
19976
  enumerable: true,
19977
- get: function () { return chunkTV7LRFXH_cjs.adminSettingsRoutes; }
19977
+ get: function () { return chunkSSOP7G4R_cjs.adminSettingsRoutes; }
19978
19978
  });
19979
19979
  Object.defineProperty(exports, "adminUsersRoutes", {
19980
19980
  enumerable: true,
19981
- get: function () { return chunkTV7LRFXH_cjs.userRoutes; }
19981
+ get: function () { return chunkSSOP7G4R_cjs.userRoutes; }
19982
19982
  });
19983
19983
  Object.defineProperty(exports, "apiContentCrudRoutes", {
19984
19984
  enumerable: true,
19985
- get: function () { return chunkTV7LRFXH_cjs.api_content_crud_default; }
19985
+ get: function () { return chunkSSOP7G4R_cjs.api_content_crud_default; }
19986
19986
  });
19987
19987
  Object.defineProperty(exports, "apiMediaRoutes", {
19988
19988
  enumerable: true,
19989
- get: function () { return chunkTV7LRFXH_cjs.api_media_default; }
19989
+ get: function () { return chunkSSOP7G4R_cjs.api_media_default; }
19990
19990
  });
19991
19991
  Object.defineProperty(exports, "apiRoutes", {
19992
19992
  enumerable: true,
19993
- get: function () { return chunkTV7LRFXH_cjs.api_default; }
19993
+ get: function () { return chunkSSOP7G4R_cjs.api_default; }
19994
19994
  });
19995
19995
  Object.defineProperty(exports, "apiSystemRoutes", {
19996
19996
  enumerable: true,
19997
- get: function () { return chunkTV7LRFXH_cjs.api_system_default; }
19997
+ get: function () { return chunkSSOP7G4R_cjs.api_system_default; }
19998
19998
  });
19999
19999
  Object.defineProperty(exports, "authRoutes", {
20000
20000
  enumerable: true,
20001
- get: function () { return chunkTV7LRFXH_cjs.auth_default; }
20001
+ get: function () { return chunkSSOP7G4R_cjs.auth_default; }
20002
20002
  });
20003
20003
  Object.defineProperty(exports, "createUserProfilesPlugin", {
20004
20004
  enumerable: true,
20005
- get: function () { return chunkTV7LRFXH_cjs.createUserProfilesPlugin; }
20005
+ get: function () { return chunkSSOP7G4R_cjs.createUserProfilesPlugin; }
20006
20006
  });
20007
20007
  Object.defineProperty(exports, "defineUserProfile", {
20008
20008
  enumerable: true,
20009
- get: function () { return chunkTV7LRFXH_cjs.defineUserProfile; }
20009
+ get: function () { return chunkSSOP7G4R_cjs.defineUserProfile; }
20010
20010
  });
20011
20011
  Object.defineProperty(exports, "getUserProfileConfig", {
20012
20012
  enumerable: true,
20013
- get: function () { return chunkTV7LRFXH_cjs.getUserProfileConfig; }
20013
+ get: function () { return chunkSSOP7G4R_cjs.getUserProfileConfig; }
20014
20014
  });
20015
20015
  Object.defineProperty(exports, "userProfilesPlugin", {
20016
20016
  enumerable: true,
20017
- get: function () { return chunkTV7LRFXH_cjs.userProfilesPlugin; }
20017
+ get: function () { return chunkSSOP7G4R_cjs.userProfilesPlugin; }
20018
20018
  });
20019
20019
  Object.defineProperty(exports, "Logger", {
20020
20020
  enumerable: true,
@@ -20170,123 +20170,123 @@ Object.defineProperty(exports, "workflowHistory", {
20170
20170
  });
20171
20171
  Object.defineProperty(exports, "AuthManager", {
20172
20172
  enumerable: true,
20173
- get: function () { return chunkBYLQOBO6_cjs.AuthManager; }
20173
+ get: function () { return chunkL3KHLEHL_cjs.AuthManager; }
20174
20174
  });
20175
20175
  Object.defineProperty(exports, "PermissionManager", {
20176
20176
  enumerable: true,
20177
- get: function () { return chunkBYLQOBO6_cjs.PermissionManager; }
20177
+ get: function () { return chunkL3KHLEHL_cjs.PermissionManager; }
20178
20178
  });
20179
20179
  Object.defineProperty(exports, "bootstrapDocumentTypes", {
20180
20180
  enumerable: true,
20181
- get: function () { return chunkBYLQOBO6_cjs.bootstrapDocumentTypes; }
20181
+ get: function () { return chunkL3KHLEHL_cjs.bootstrapDocumentTypes; }
20182
20182
  });
20183
20183
  Object.defineProperty(exports, "bootstrapMiddleware", {
20184
20184
  enumerable: true,
20185
- get: function () { return chunkBYLQOBO6_cjs.bootstrapMiddleware; }
20185
+ get: function () { return chunkL3KHLEHL_cjs.bootstrapMiddleware; }
20186
20186
  });
20187
20187
  Object.defineProperty(exports, "cacheHeaders", {
20188
20188
  enumerable: true,
20189
- get: function () { return chunkBYLQOBO6_cjs.cacheHeaders; }
20189
+ get: function () { return chunkL3KHLEHL_cjs.cacheHeaders; }
20190
20190
  });
20191
20191
  Object.defineProperty(exports, "compressionMiddleware", {
20192
20192
  enumerable: true,
20193
- get: function () { return chunkBYLQOBO6_cjs.compressionMiddleware; }
20193
+ get: function () { return chunkL3KHLEHL_cjs.compressionMiddleware; }
20194
20194
  });
20195
20195
  Object.defineProperty(exports, "detailedLoggingMiddleware", {
20196
20196
  enumerable: true,
20197
- get: function () { return chunkBYLQOBO6_cjs.detailedLoggingMiddleware; }
20197
+ get: function () { return chunkL3KHLEHL_cjs.detailedLoggingMiddleware; }
20198
20198
  });
20199
20199
  Object.defineProperty(exports, "getActivePlugins", {
20200
20200
  enumerable: true,
20201
- get: function () { return chunkBYLQOBO6_cjs.getActivePlugins; }
20201
+ get: function () { return chunkL3KHLEHL_cjs.getActivePlugins; }
20202
20202
  });
20203
20203
  Object.defineProperty(exports, "isPluginActive", {
20204
20204
  enumerable: true,
20205
- get: function () { return chunkBYLQOBO6_cjs.isPluginActive; }
20205
+ get: function () { return chunkL3KHLEHL_cjs.isPluginActive; }
20206
20206
  });
20207
20207
  Object.defineProperty(exports, "logActivity", {
20208
20208
  enumerable: true,
20209
- get: function () { return chunkBYLQOBO6_cjs.logActivity; }
20209
+ get: function () { return chunkL3KHLEHL_cjs.logActivity; }
20210
20210
  });
20211
20211
  Object.defineProperty(exports, "loggingMiddleware", {
20212
20212
  enumerable: true,
20213
- get: function () { return chunkBYLQOBO6_cjs.loggingMiddleware; }
20213
+ get: function () { return chunkL3KHLEHL_cjs.loggingMiddleware; }
20214
20214
  });
20215
20215
  Object.defineProperty(exports, "optionalAuth", {
20216
20216
  enumerable: true,
20217
- get: function () { return chunkBYLQOBO6_cjs.optionalAuth; }
20217
+ get: function () { return chunkL3KHLEHL_cjs.optionalAuth; }
20218
20218
  });
20219
20219
  Object.defineProperty(exports, "performanceLoggingMiddleware", {
20220
20220
  enumerable: true,
20221
- get: function () { return chunkBYLQOBO6_cjs.performanceLoggingMiddleware; }
20221
+ get: function () { return chunkL3KHLEHL_cjs.performanceLoggingMiddleware; }
20222
20222
  });
20223
20223
  Object.defineProperty(exports, "requireActivePlugin", {
20224
20224
  enumerable: true,
20225
- get: function () { return chunkBYLQOBO6_cjs.requireActivePlugin; }
20225
+ get: function () { return chunkL3KHLEHL_cjs.requireActivePlugin; }
20226
20226
  });
20227
20227
  Object.defineProperty(exports, "requireActivePlugins", {
20228
20228
  enumerable: true,
20229
- get: function () { return chunkBYLQOBO6_cjs.requireActivePlugins; }
20229
+ get: function () { return chunkL3KHLEHL_cjs.requireActivePlugins; }
20230
20230
  });
20231
20231
  Object.defineProperty(exports, "requireAnyPermission", {
20232
20232
  enumerable: true,
20233
- get: function () { return chunkBYLQOBO6_cjs.requireAnyPermission; }
20233
+ get: function () { return chunkL3KHLEHL_cjs.requireAnyPermission; }
20234
20234
  });
20235
20235
  Object.defineProperty(exports, "requireAuth", {
20236
20236
  enumerable: true,
20237
- get: function () { return chunkBYLQOBO6_cjs.requireAuth; }
20237
+ get: function () { return chunkL3KHLEHL_cjs.requireAuth; }
20238
20238
  });
20239
20239
  Object.defineProperty(exports, "requirePermission", {
20240
20240
  enumerable: true,
20241
- get: function () { return chunkBYLQOBO6_cjs.requirePermission; }
20241
+ get: function () { return chunkL3KHLEHL_cjs.requirePermission; }
20242
20242
  });
20243
20243
  Object.defineProperty(exports, "requireRole", {
20244
20244
  enumerable: true,
20245
- get: function () { return chunkBYLQOBO6_cjs.requireRole; }
20245
+ get: function () { return chunkL3KHLEHL_cjs.requireRole; }
20246
20246
  });
20247
20247
  Object.defineProperty(exports, "securityHeaders", {
20248
20248
  enumerable: true,
20249
- get: function () { return chunkBYLQOBO6_cjs.securityHeadersMiddleware; }
20249
+ get: function () { return chunkL3KHLEHL_cjs.securityHeadersMiddleware; }
20250
20250
  });
20251
20251
  Object.defineProperty(exports, "securityLoggingMiddleware", {
20252
20252
  enumerable: true,
20253
- get: function () { return chunkBYLQOBO6_cjs.securityLoggingMiddleware; }
20253
+ get: function () { return chunkL3KHLEHL_cjs.securityLoggingMiddleware; }
20254
20254
  });
20255
20255
  Object.defineProperty(exports, "RbacService", {
20256
20256
  enumerable: true,
20257
- get: function () { return chunk2CB4KY7I_cjs.RbacService; }
20257
+ get: function () { return chunkW36OZTJ5_cjs.RbacService; }
20258
20258
  });
20259
20259
  Object.defineProperty(exports, "PluginBootstrapService", {
20260
20260
  enumerable: true,
20261
- get: function () { return chunkLLWLHFTD_cjs.PluginBootstrapService; }
20261
+ get: function () { return chunkWIV3R2MJ_cjs.PluginBootstrapService; }
20262
20262
  });
20263
20263
  Object.defineProperty(exports, "PluginServiceClass", {
20264
20264
  enumerable: true,
20265
- get: function () { return chunkLLWLHFTD_cjs.PluginService; }
20265
+ get: function () { return chunkWIV3R2MJ_cjs.PluginService; }
20266
20266
  });
20267
20267
  Object.defineProperty(exports, "getAvailableCollectionNames", {
20268
20268
  enumerable: true,
20269
- get: function () { return chunkLLWLHFTD_cjs.getAvailableCollectionNames; }
20269
+ get: function () { return chunkWIV3R2MJ_cjs.getAvailableCollectionNames; }
20270
20270
  });
20271
20271
  Object.defineProperty(exports, "loadCollectionConfig", {
20272
20272
  enumerable: true,
20273
- get: function () { return chunkLLWLHFTD_cjs.loadCollectionConfig; }
20273
+ get: function () { return chunkWIV3R2MJ_cjs.loadCollectionConfig; }
20274
20274
  });
20275
20275
  Object.defineProperty(exports, "loadCollectionConfigs", {
20276
20276
  enumerable: true,
20277
- get: function () { return chunkLLWLHFTD_cjs.loadCollectionConfigs; }
20277
+ get: function () { return chunkWIV3R2MJ_cjs.loadCollectionConfigs; }
20278
20278
  });
20279
20279
  Object.defineProperty(exports, "registerCollections", {
20280
20280
  enumerable: true,
20281
- get: function () { return chunkLLWLHFTD_cjs.registerCollections; }
20281
+ get: function () { return chunkWIV3R2MJ_cjs.registerCollections; }
20282
20282
  });
20283
20283
  Object.defineProperty(exports, "validateCollectionConfig", {
20284
20284
  enumerable: true,
20285
- get: function () { return chunkLLWLHFTD_cjs.validateCollectionConfig; }
20285
+ get: function () { return chunkWIV3R2MJ_cjs.validateCollectionConfig; }
20286
20286
  });
20287
20287
  Object.defineProperty(exports, "MigrationService", {
20288
20288
  enumerable: true,
20289
- get: function () { return chunkKI5KMJH2_cjs.MigrationService; }
20289
+ get: function () { return chunkH5FB6GKR_cjs.MigrationService; }
20290
20290
  });
20291
20291
  Object.defineProperty(exports, "renderFilterBar", {
20292
20292
  enumerable: true,
@@ -20326,99 +20326,99 @@ Object.defineProperty(exports, "renderAdminLayoutCatalyst", {
20326
20326
  });
20327
20327
  Object.defineProperty(exports, "HookSystemImpl", {
20328
20328
  enumerable: true,
20329
- get: function () { return chunkSY7CBACS_cjs.HookSystemImpl; }
20329
+ get: function () { return chunkG5LC7MYH_cjs.HookSystemImpl; }
20330
20330
  });
20331
20331
  Object.defineProperty(exports, "HookUtils", {
20332
20332
  enumerable: true,
20333
- get: function () { return chunkSY7CBACS_cjs.HookUtils; }
20333
+ get: function () { return chunkG5LC7MYH_cjs.HookUtils; }
20334
20334
  });
20335
20335
  Object.defineProperty(exports, "PluginDependencyCycleError", {
20336
20336
  enumerable: true,
20337
- get: function () { return chunkSY7CBACS_cjs.PluginDependencyCycleError; }
20337
+ get: function () { return chunkG5LC7MYH_cjs.PluginDependencyCycleError; }
20338
20338
  });
20339
20339
  Object.defineProperty(exports, "PluginManagerClass", {
20340
20340
  enumerable: true,
20341
- get: function () { return chunkSY7CBACS_cjs.PluginManager; }
20341
+ get: function () { return chunkG5LC7MYH_cjs.PluginManager; }
20342
20342
  });
20343
20343
  Object.defineProperty(exports, "PluginRegistryImpl", {
20344
20344
  enumerable: true,
20345
- get: function () { return chunkSY7CBACS_cjs.PluginRegistryImpl; }
20345
+ get: function () { return chunkG5LC7MYH_cjs.PluginRegistryImpl; }
20346
20346
  });
20347
20347
  Object.defineProperty(exports, "PluginValidatorClass", {
20348
20348
  enumerable: true,
20349
- get: function () { return chunkSY7CBACS_cjs.PluginValidator; }
20349
+ get: function () { return chunkG5LC7MYH_cjs.PluginValidator; }
20350
20350
  });
20351
20351
  Object.defineProperty(exports, "RegisterPluginsError", {
20352
20352
  enumerable: true,
20353
- get: function () { return chunkSY7CBACS_cjs.RegisterPluginsError; }
20353
+ get: function () { return chunkG5LC7MYH_cjs.RegisterPluginsError; }
20354
20354
  });
20355
20355
  Object.defineProperty(exports, "ScopedHookSystemClass", {
20356
20356
  enumerable: true,
20357
- get: function () { return chunkSY7CBACS_cjs.ScopedHookSystem; }
20357
+ get: function () { return chunkG5LC7MYH_cjs.ScopedHookSystem; }
20358
20358
  });
20359
20359
  Object.defineProperty(exports, "collectCronSchedules", {
20360
20360
  enumerable: true,
20361
- get: function () { return chunkSY7CBACS_cjs.collectCronSchedules; }
20361
+ get: function () { return chunkG5LC7MYH_cjs.collectCronSchedules; }
20362
20362
  });
20363
20363
  Object.defineProperty(exports, "collectCrons", {
20364
20364
  enumerable: true,
20365
- get: function () { return chunkSY7CBACS_cjs.collectCrons; }
20365
+ get: function () { return chunkG5LC7MYH_cjs.collectCrons; }
20366
20366
  });
20367
20367
  Object.defineProperty(exports, "createScheduledHandler", {
20368
20368
  enumerable: true,
20369
- get: function () { return chunkSY7CBACS_cjs.createScheduledHandler; }
20369
+ get: function () { return chunkG5LC7MYH_cjs.createScheduledHandler; }
20370
20370
  });
20371
20371
  Object.defineProperty(exports, "dispatchCronTick", {
20372
20372
  enumerable: true,
20373
- get: function () { return chunkSY7CBACS_cjs.dispatchCronTick; }
20373
+ get: function () { return chunkG5LC7MYH_cjs.dispatchCronTick; }
20374
20374
  });
20375
20375
  Object.defineProperty(exports, "getPluginMenu", {
20376
20376
  enumerable: true,
20377
- get: function () { return chunkSY7CBACS_cjs.getPluginMenu; }
20377
+ get: function () { return chunkG5LC7MYH_cjs.getPluginMenu; }
20378
20378
  });
20379
20379
  Object.defineProperty(exports, "registerPlugins", {
20380
20380
  enumerable: true,
20381
- get: function () { return chunkSY7CBACS_cjs.registerPlugins; }
20381
+ get: function () { return chunkG5LC7MYH_cjs.registerPlugins; }
20382
20382
  });
20383
20383
  Object.defineProperty(exports, "resetPluginMenu", {
20384
20384
  enumerable: true,
20385
- get: function () { return chunkSY7CBACS_cjs.resetPluginMenu; }
20385
+ get: function () { return chunkG5LC7MYH_cjs.resetPluginMenu; }
20386
20386
  });
20387
20387
  Object.defineProperty(exports, "resolvePluginMenuItems", {
20388
20388
  enumerable: true,
20389
- get: function () { return chunkSY7CBACS_cjs.resolvePluginMenuItems; }
20389
+ get: function () { return chunkG5LC7MYH_cjs.resolvePluginMenuItems; }
20390
20390
  });
20391
20391
  Object.defineProperty(exports, "setPluginMenu", {
20392
20392
  enumerable: true,
20393
- get: function () { return chunkSY7CBACS_cjs.setPluginMenu; }
20393
+ get: function () { return chunkG5LC7MYH_cjs.setPluginMenu; }
20394
20394
  });
20395
20395
  Object.defineProperty(exports, "topoSort", {
20396
20396
  enumerable: true,
20397
- get: function () { return chunkSY7CBACS_cjs.topoSort; }
20397
+ get: function () { return chunkG5LC7MYH_cjs.topoSort; }
20398
20398
  });
20399
20399
  Object.defineProperty(exports, "applySchemaDefaults", {
20400
20400
  enumerable: true,
20401
- get: function () { return chunkNYLWNR6T_cjs.applySchemaDefaults; }
20401
+ get: function () { return chunk4YRYGDCQ_cjs.applySchemaDefaults; }
20402
20402
  });
20403
20403
  Object.defineProperty(exports, "definePlugin", {
20404
20404
  enumerable: true,
20405
- get: function () { return chunkNYLWNR6T_cjs.definePlugin; }
20405
+ get: function () { return chunk4YRYGDCQ_cjs.definePlugin; }
20406
20406
  });
20407
20407
  Object.defineProperty(exports, "isDefinedPlugin", {
20408
20408
  enumerable: true,
20409
- get: function () { return chunkNYLWNR6T_cjs.isDefinedPlugin; }
20409
+ get: function () { return chunk4YRYGDCQ_cjs.isDefinedPlugin; }
20410
20410
  });
20411
20411
  Object.defineProperty(exports, "parseConfigSchema", {
20412
20412
  enumerable: true,
20413
- get: function () { return chunkNYLWNR6T_cjs.parseConfigSchema; }
20413
+ get: function () { return chunk4YRYGDCQ_cjs.parseConfigSchema; }
20414
20414
  });
20415
20415
  Object.defineProperty(exports, "parseFormDataToSettings", {
20416
20416
  enumerable: true,
20417
- get: function () { return chunkNYLWNR6T_cjs.parseFormDataToSettings; }
20417
+ get: function () { return chunk4YRYGDCQ_cjs.parseFormDataToSettings; }
20418
20418
  });
20419
20419
  Object.defineProperty(exports, "renderSchemaFields", {
20420
20420
  enumerable: true,
20421
- get: function () { return chunkNYLWNR6T_cjs.renderSchemaFields; }
20421
+ get: function () { return chunk4YRYGDCQ_cjs.renderSchemaFields; }
20422
20422
  });
20423
20423
  Object.defineProperty(exports, "getHookSystem", {
20424
20424
  enumerable: true,
@@ -20466,11 +20466,11 @@ Object.defineProperty(exports, "metricsTracker", {
20466
20466
  });
20467
20467
  Object.defineProperty(exports, "SONICJS_VERSION", {
20468
20468
  enumerable: true,
20469
- get: function () { return chunkXGH2FVVR_cjs.SONICJS_VERSION; }
20469
+ get: function () { return chunkSIPBHWMG_cjs.SONICJS_VERSION; }
20470
20470
  });
20471
20471
  Object.defineProperty(exports, "getCoreVersion", {
20472
20472
  enumerable: true,
20473
- get: function () { return chunkXGH2FVVR_cjs.getCoreVersion; }
20473
+ get: function () { return chunkSIPBHWMG_cjs.getCoreVersion; }
20474
20474
  });
20475
20475
  Object.defineProperty(exports, "escapeHtml", {
20476
20476
  enumerable: true,