@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.
- package/dist/{chunk-INKP2WNU.js → chunk-32SDMKZ7.js} +2 -2
- package/dist/{chunk-INKP2WNU.js.map → chunk-32SDMKZ7.js.map} +1 -1
- package/dist/{chunk-NYLWNR6T.cjs → chunk-4YRYGDCQ.cjs} +4 -4
- package/dist/{chunk-NYLWNR6T.cjs.map → chunk-4YRYGDCQ.cjs.map} +1 -1
- package/dist/{chunk-Q3P7Y5VO.js → chunk-5L6EMI7A.js} +4 -4
- package/dist/{chunk-Q3P7Y5VO.js.map → chunk-5L6EMI7A.js.map} +1 -1
- package/dist/{chunk-IVPRUGTY.js → chunk-75JKPNUZ.js} +3 -3
- package/dist/{chunk-IVPRUGTY.js.map → chunk-75JKPNUZ.js.map} +1 -1
- package/dist/{chunk-SY7CBACS.cjs → chunk-G5LC7MYH.cjs} +10 -10
- package/dist/{chunk-SY7CBACS.cjs.map → chunk-G5LC7MYH.cjs.map} +1 -1
- package/dist/{chunk-KI5KMJH2.cjs → chunk-H5FB6GKR.cjs} +2 -2
- package/dist/{chunk-KI5KMJH2.cjs.map → chunk-H5FB6GKR.cjs.map} +1 -1
- package/dist/{chunk-R2O6TTQS.js → chunk-HNUGMALL.js} +224 -18
- package/dist/chunk-HNUGMALL.js.map +1 -0
- package/dist/{chunk-SUHGXAII.js → chunk-INE5E3SL.js} +2 -2
- package/dist/{chunk-SUHGXAII.js.map → chunk-INE5E3SL.js.map} +1 -1
- package/dist/{chunk-BYLQOBO6.cjs → chunk-L3KHLEHL.cjs} +25 -41
- package/dist/chunk-L3KHLEHL.cjs.map +1 -0
- package/dist/{chunk-DMXDQ5YI.js → chunk-O32IZ6JS.js} +15 -31
- package/dist/chunk-O32IZ6JS.js.map +1 -0
- package/dist/{chunk-BLMTL57B.js → chunk-PDC7DLOV.js} +21 -3
- package/dist/chunk-PDC7DLOV.js.map +1 -0
- package/dist/{chunk-XHBEFQJ3.js → chunk-QNPT6BQP.js} +3 -3
- package/dist/{chunk-XHBEFQJ3.js.map → chunk-QNPT6BQP.js.map} +1 -1
- package/dist/{chunk-XGH2FVVR.cjs → chunk-SIPBHWMG.cjs} +4 -4
- package/dist/{chunk-XGH2FVVR.cjs.map → chunk-SIPBHWMG.cjs.map} +1 -1
- package/dist/{chunk-TV7LRFXH.cjs → chunk-SSOP7G4R.cjs} +441 -235
- package/dist/chunk-SSOP7G4R.cjs.map +1 -0
- package/dist/{chunk-ALNODOY4.js → chunk-U7T5EOHJ.js} +4 -4
- package/dist/{chunk-ALNODOY4.js.map → chunk-U7T5EOHJ.js.map} +1 -1
- package/dist/{chunk-2CB4KY7I.cjs → chunk-W36OZTJ5.cjs} +21 -3
- package/dist/chunk-W36OZTJ5.cjs.map +1 -0
- package/dist/{chunk-LLWLHFTD.cjs → chunk-WIV3R2MJ.cjs} +2 -2
- package/dist/{chunk-LLWLHFTD.cjs.map → chunk-WIV3R2MJ.cjs.map} +1 -1
- package/dist/{chunk-NUKJ54GA.cjs → chunk-ZTEJHSYS.cjs} +3 -3
- package/dist/{chunk-NUKJ54GA.cjs.map → chunk-ZTEJHSYS.cjs.map} +1 -1
- package/dist/{collection-config-JgHOpFCG.d.cts → collection-config-BTzAvKt2.d.cts} +25 -0
- package/dist/{collection-config-JgHOpFCG.d.ts → collection-config-BTzAvKt2.d.ts} +25 -0
- package/dist/{config-ON6FNMYX.cjs → config-FLOUCYHH.cjs} +5 -5
- package/dist/{config-ON6FNMYX.cjs.map → config-FLOUCYHH.cjs.map} +1 -1
- package/dist/config-PLJTDINX.js +6 -0
- package/dist/{config-HFXANXCC.js.map → config-PLJTDINX.js.map} +1 -1
- package/dist/index.cjs +275 -275
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/middleware.cjs +34 -33
- package/dist/middleware.js +5 -4
- package/dist/migrations-DOPZXFK3.js +4 -0
- package/dist/{migrations-MLBACCPF.js.map → migrations-DOPZXFK3.js.map} +1 -1
- package/dist/migrations-TYYC66P4.cjs +13 -0
- package/dist/{migrations-AFSCRO56.cjs.map → migrations-TYYC66P4.cjs.map} +1 -1
- package/dist/{plugin-bootstrap-B8ThJU21.d.cts → plugin-bootstrap-BHWQ2df8.d.cts} +1 -1
- package/dist/{plugin-bootstrap-qu8hJgUt.d.ts → plugin-bootstrap-Bj4fxX1q.d.ts} +1 -1
- package/dist/plugins.cjs +40 -40
- package/dist/plugins.js +3 -3
- package/dist/rbac-4QLDXIDF.js +5 -0
- package/dist/{rbac-O73MFKDA.js.map → rbac-4QLDXIDF.js.map} +1 -1
- package/dist/rbac-ESTOCVT2.cjs +14 -0
- package/dist/{rbac-VONLJJKB.cjs.map → rbac-ESTOCVT2.cjs.map} +1 -1
- package/dist/routes.cjs +27 -27
- package/dist/routes.js +7 -7
- package/dist/services.cjs +18 -18
- package/dist/services.d.cts +2 -2
- package/dist/services.d.ts +2 -2
- package/dist/services.js +2 -2
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/utils.cjs +3 -3
- package/dist/utils.d.cts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-2CB4KY7I.cjs.map +0 -1
- package/dist/chunk-BLMTL57B.js.map +0 -1
- package/dist/chunk-BYLQOBO6.cjs.map +0 -1
- package/dist/chunk-DMXDQ5YI.js.map +0 -1
- package/dist/chunk-R2O6TTQS.js.map +0 -1
- package/dist/chunk-TV7LRFXH.cjs.map +0 -1
- package/dist/config-HFXANXCC.js +0 -6
- package/dist/migrations-AFSCRO56.cjs +0 -13
- package/dist/migrations-MLBACCPF.js +0 -4
- package/dist/rbac-O73MFKDA.js +0 -5
- package/dist/rbac-VONLJJKB.cjs +0 -14
package/dist/index.cjs
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
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
|
|
11
|
-
var
|
|
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
|
|
14
|
-
var
|
|
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
|
|
19
|
-
var
|
|
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
|
|
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("*",
|
|
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("*",
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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 (!
|
|
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
|
-
|
|
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 =
|
|
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 (!
|
|
2053
|
+
if (!chunkSSOP7G4R_cjs.hasEmailService()) {
|
|
2054
2054
|
console.warn("[email-reconciliation] EmailService not initialized \u2014 skipping.");
|
|
2055
2055
|
return;
|
|
2056
2056
|
}
|
|
2057
|
-
const emailService =
|
|
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 (
|
|
2544
|
-
const sent = await
|
|
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
|
|
2647
|
-
const token = await
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
|
3103
|
-
const jwt2 = await
|
|
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
|
-
|
|
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
|
|
3128
|
-
const jwt2 = await
|
|
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
|
-
|
|
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
|
|
3149
|
-
const jwt = await
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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("*",
|
|
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 =
|
|
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
|
|
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("*",
|
|
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
|
|
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
|
|
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("*",
|
|
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
|
|
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
|
|
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 =
|
|
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("*",
|
|
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
|
|
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
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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 =
|
|
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
|
-
${
|
|
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("*",
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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("*",
|
|
10564
|
+
adminRbacRoutes.use("*", chunkL3KHLEHL_cjs.requireRbac("rbac", "manage"));
|
|
10565
10565
|
var esc = (s) => String(s).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
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
|
|
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
|
-
|
|
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>
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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("*",
|
|
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
|
|
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 =
|
|
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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
11606
11606
|
}
|
|
11607
11607
|
async function getVariablesMap(db) {
|
|
11608
|
-
let variables =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
${
|
|
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
|
|
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
|
|
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("*",
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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 (!
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
14074
|
-
const auth =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
-
|
|
14170
|
+
chunkWIV3R2MJ_cjs.invalidateTenantCache();
|
|
14171
14171
|
console.info("\u2705 Multi-Tenant plugin activated");
|
|
14172
14172
|
},
|
|
14173
14173
|
deactivate: async () => {
|
|
14174
|
-
|
|
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("*",
|
|
14180
|
-
routes.use("*",
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 (
|
|
14394
|
-
await
|
|
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
|
|
14472
|
-
const jwtToken = await
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
${
|
|
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
|
-
${
|
|
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
|
-
${
|
|
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 =
|
|
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 ||
|
|
16064
|
+
const appVersion = config.version || chunkSIPBHWMG_cjs.getCoreVersion();
|
|
16065
16065
|
const appName = config.name || "SonicJS AI";
|
|
16066
|
-
const hookSystem = new
|
|
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
|
-
|
|
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
|
-
|
|
16083
|
+
chunkSSOP7G4R_cjs.lexicalEditorPlugin,
|
|
16084
16084
|
versioningPlugin
|
|
16085
16085
|
];
|
|
16086
16086
|
const corePluginsAfterCatchAll = [emailPluginV3, magicLinkPlugin, emailReconciliationPlugin];
|
|
16087
|
-
const wirePlugins =
|
|
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: () =>
|
|
16094
|
+
providers: { email: () => chunkSSOP7G4R_cjs.getEmailService() }
|
|
16095
16095
|
})
|
|
16096
16096
|
);
|
|
16097
16097
|
let firstRequestEnv;
|
|
16098
16098
|
const initEmailService = async (env = {}) => {
|
|
16099
|
-
if (
|
|
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
|
-
|
|
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("*",
|
|
16141
|
-
app2.use("*",
|
|
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("*",
|
|
16180
|
-
app2.use("*",
|
|
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 =
|
|
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("*",
|
|
16218
|
-
app2.use("/admin/*",
|
|
16219
|
-
app2.use("/admin/*",
|
|
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-
|
|
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",
|
|
16266
|
-
app2.route("/api/system",
|
|
16267
|
-
app2.route("/api/documents",
|
|
16268
|
-
app2.route("/api",
|
|
16269
|
-
app2.route("/admin/documents",
|
|
16270
|
-
|
|
16271
|
-
app2.route("/admin/api",
|
|
16272
|
-
app2.route("/admin/collections",
|
|
16273
|
-
app2.route("/admin/settings",
|
|
16274
|
-
app2.route("/admin/api-reference",
|
|
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",
|
|
16277
|
-
app2.route("/admin/media",
|
|
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
|
-
|
|
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
|
-
|
|
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",
|
|
16288
|
-
app2.route("/admin/plugins",
|
|
16289
|
-
app2.route("/admin/logs",
|
|
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",
|
|
16292
|
-
app2.route("/auth",
|
|
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 =
|
|
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("/",
|
|
16299
|
+
app2.route("/", chunkSSOP7G4R_cjs.test_cleanup_default);
|
|
16300
16300
|
if (!config.plugins?.disableAll) {
|
|
16301
|
-
|
|
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
|
-
|
|
16311
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
19941
|
+
get: function () { return chunkSSOP7G4R_cjs.ROUTES_INFO; }
|
|
19942
19942
|
});
|
|
19943
19943
|
Object.defineProperty(exports, "adminApiRoutes", {
|
|
19944
19944
|
enumerable: true,
|
|
19945
|
-
get: function () { return
|
|
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
|
|
19949
|
+
get: function () { return chunkSSOP7G4R_cjs.adminCheckboxRoutes; }
|
|
19950
19950
|
});
|
|
19951
19951
|
Object.defineProperty(exports, "adminCollectionsRoutes", {
|
|
19952
19952
|
enumerable: true,
|
|
19953
|
-
get: function () { return
|
|
19953
|
+
get: function () { return chunkSSOP7G4R_cjs.adminCollectionsRoutes; }
|
|
19954
19954
|
});
|
|
19955
19955
|
Object.defineProperty(exports, "adminContentRoutes", {
|
|
19956
19956
|
enumerable: true,
|
|
19957
|
-
get: function () { return
|
|
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
|
|
19961
|
+
get: function () { return chunkSSOP7G4R_cjs.router; }
|
|
19962
19962
|
});
|
|
19963
19963
|
Object.defineProperty(exports, "adminLogsRoutes", {
|
|
19964
19964
|
enumerable: true,
|
|
19965
|
-
get: function () { return
|
|
19965
|
+
get: function () { return chunkSSOP7G4R_cjs.adminLogsRoutes; }
|
|
19966
19966
|
});
|
|
19967
19967
|
Object.defineProperty(exports, "adminMediaRoutes", {
|
|
19968
19968
|
enumerable: true,
|
|
19969
|
-
get: function () { return
|
|
19969
|
+
get: function () { return chunkSSOP7G4R_cjs.adminMediaRoutes; }
|
|
19970
19970
|
});
|
|
19971
19971
|
Object.defineProperty(exports, "adminPluginRoutes", {
|
|
19972
19972
|
enumerable: true,
|
|
19973
|
-
get: function () { return
|
|
19973
|
+
get: function () { return chunkSSOP7G4R_cjs.adminPluginRoutes; }
|
|
19974
19974
|
});
|
|
19975
19975
|
Object.defineProperty(exports, "adminSettingsRoutes", {
|
|
19976
19976
|
enumerable: true,
|
|
19977
|
-
get: function () { return
|
|
19977
|
+
get: function () { return chunkSSOP7G4R_cjs.adminSettingsRoutes; }
|
|
19978
19978
|
});
|
|
19979
19979
|
Object.defineProperty(exports, "adminUsersRoutes", {
|
|
19980
19980
|
enumerable: true,
|
|
19981
|
-
get: function () { return
|
|
19981
|
+
get: function () { return chunkSSOP7G4R_cjs.userRoutes; }
|
|
19982
19982
|
});
|
|
19983
19983
|
Object.defineProperty(exports, "apiContentCrudRoutes", {
|
|
19984
19984
|
enumerable: true,
|
|
19985
|
-
get: function () { return
|
|
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
|
|
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
|
|
19993
|
+
get: function () { return chunkSSOP7G4R_cjs.api_default; }
|
|
19994
19994
|
});
|
|
19995
19995
|
Object.defineProperty(exports, "apiSystemRoutes", {
|
|
19996
19996
|
enumerable: true,
|
|
19997
|
-
get: function () { return
|
|
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
|
|
20001
|
+
get: function () { return chunkSSOP7G4R_cjs.auth_default; }
|
|
20002
20002
|
});
|
|
20003
20003
|
Object.defineProperty(exports, "createUserProfilesPlugin", {
|
|
20004
20004
|
enumerable: true,
|
|
20005
|
-
get: function () { return
|
|
20005
|
+
get: function () { return chunkSSOP7G4R_cjs.createUserProfilesPlugin; }
|
|
20006
20006
|
});
|
|
20007
20007
|
Object.defineProperty(exports, "defineUserProfile", {
|
|
20008
20008
|
enumerable: true,
|
|
20009
|
-
get: function () { return
|
|
20009
|
+
get: function () { return chunkSSOP7G4R_cjs.defineUserProfile; }
|
|
20010
20010
|
});
|
|
20011
20011
|
Object.defineProperty(exports, "getUserProfileConfig", {
|
|
20012
20012
|
enumerable: true,
|
|
20013
|
-
get: function () { return
|
|
20013
|
+
get: function () { return chunkSSOP7G4R_cjs.getUserProfileConfig; }
|
|
20014
20014
|
});
|
|
20015
20015
|
Object.defineProperty(exports, "userProfilesPlugin", {
|
|
20016
20016
|
enumerable: true,
|
|
20017
|
-
get: function () { return
|
|
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
|
|
20173
|
+
get: function () { return chunkL3KHLEHL_cjs.AuthManager; }
|
|
20174
20174
|
});
|
|
20175
20175
|
Object.defineProperty(exports, "PermissionManager", {
|
|
20176
20176
|
enumerable: true,
|
|
20177
|
-
get: function () { return
|
|
20177
|
+
get: function () { return chunkL3KHLEHL_cjs.PermissionManager; }
|
|
20178
20178
|
});
|
|
20179
20179
|
Object.defineProperty(exports, "bootstrapDocumentTypes", {
|
|
20180
20180
|
enumerable: true,
|
|
20181
|
-
get: function () { return
|
|
20181
|
+
get: function () { return chunkL3KHLEHL_cjs.bootstrapDocumentTypes; }
|
|
20182
20182
|
});
|
|
20183
20183
|
Object.defineProperty(exports, "bootstrapMiddleware", {
|
|
20184
20184
|
enumerable: true,
|
|
20185
|
-
get: function () { return
|
|
20185
|
+
get: function () { return chunkL3KHLEHL_cjs.bootstrapMiddleware; }
|
|
20186
20186
|
});
|
|
20187
20187
|
Object.defineProperty(exports, "cacheHeaders", {
|
|
20188
20188
|
enumerable: true,
|
|
20189
|
-
get: function () { return
|
|
20189
|
+
get: function () { return chunkL3KHLEHL_cjs.cacheHeaders; }
|
|
20190
20190
|
});
|
|
20191
20191
|
Object.defineProperty(exports, "compressionMiddleware", {
|
|
20192
20192
|
enumerable: true,
|
|
20193
|
-
get: function () { return
|
|
20193
|
+
get: function () { return chunkL3KHLEHL_cjs.compressionMiddleware; }
|
|
20194
20194
|
});
|
|
20195
20195
|
Object.defineProperty(exports, "detailedLoggingMiddleware", {
|
|
20196
20196
|
enumerable: true,
|
|
20197
|
-
get: function () { return
|
|
20197
|
+
get: function () { return chunkL3KHLEHL_cjs.detailedLoggingMiddleware; }
|
|
20198
20198
|
});
|
|
20199
20199
|
Object.defineProperty(exports, "getActivePlugins", {
|
|
20200
20200
|
enumerable: true,
|
|
20201
|
-
get: function () { return
|
|
20201
|
+
get: function () { return chunkL3KHLEHL_cjs.getActivePlugins; }
|
|
20202
20202
|
});
|
|
20203
20203
|
Object.defineProperty(exports, "isPluginActive", {
|
|
20204
20204
|
enumerable: true,
|
|
20205
|
-
get: function () { return
|
|
20205
|
+
get: function () { return chunkL3KHLEHL_cjs.isPluginActive; }
|
|
20206
20206
|
});
|
|
20207
20207
|
Object.defineProperty(exports, "logActivity", {
|
|
20208
20208
|
enumerable: true,
|
|
20209
|
-
get: function () { return
|
|
20209
|
+
get: function () { return chunkL3KHLEHL_cjs.logActivity; }
|
|
20210
20210
|
});
|
|
20211
20211
|
Object.defineProperty(exports, "loggingMiddleware", {
|
|
20212
20212
|
enumerable: true,
|
|
20213
|
-
get: function () { return
|
|
20213
|
+
get: function () { return chunkL3KHLEHL_cjs.loggingMiddleware; }
|
|
20214
20214
|
});
|
|
20215
20215
|
Object.defineProperty(exports, "optionalAuth", {
|
|
20216
20216
|
enumerable: true,
|
|
20217
|
-
get: function () { return
|
|
20217
|
+
get: function () { return chunkL3KHLEHL_cjs.optionalAuth; }
|
|
20218
20218
|
});
|
|
20219
20219
|
Object.defineProperty(exports, "performanceLoggingMiddleware", {
|
|
20220
20220
|
enumerable: true,
|
|
20221
|
-
get: function () { return
|
|
20221
|
+
get: function () { return chunkL3KHLEHL_cjs.performanceLoggingMiddleware; }
|
|
20222
20222
|
});
|
|
20223
20223
|
Object.defineProperty(exports, "requireActivePlugin", {
|
|
20224
20224
|
enumerable: true,
|
|
20225
|
-
get: function () { return
|
|
20225
|
+
get: function () { return chunkL3KHLEHL_cjs.requireActivePlugin; }
|
|
20226
20226
|
});
|
|
20227
20227
|
Object.defineProperty(exports, "requireActivePlugins", {
|
|
20228
20228
|
enumerable: true,
|
|
20229
|
-
get: function () { return
|
|
20229
|
+
get: function () { return chunkL3KHLEHL_cjs.requireActivePlugins; }
|
|
20230
20230
|
});
|
|
20231
20231
|
Object.defineProperty(exports, "requireAnyPermission", {
|
|
20232
20232
|
enumerable: true,
|
|
20233
|
-
get: function () { return
|
|
20233
|
+
get: function () { return chunkL3KHLEHL_cjs.requireAnyPermission; }
|
|
20234
20234
|
});
|
|
20235
20235
|
Object.defineProperty(exports, "requireAuth", {
|
|
20236
20236
|
enumerable: true,
|
|
20237
|
-
get: function () { return
|
|
20237
|
+
get: function () { return chunkL3KHLEHL_cjs.requireAuth; }
|
|
20238
20238
|
});
|
|
20239
20239
|
Object.defineProperty(exports, "requirePermission", {
|
|
20240
20240
|
enumerable: true,
|
|
20241
|
-
get: function () { return
|
|
20241
|
+
get: function () { return chunkL3KHLEHL_cjs.requirePermission; }
|
|
20242
20242
|
});
|
|
20243
20243
|
Object.defineProperty(exports, "requireRole", {
|
|
20244
20244
|
enumerable: true,
|
|
20245
|
-
get: function () { return
|
|
20245
|
+
get: function () { return chunkL3KHLEHL_cjs.requireRole; }
|
|
20246
20246
|
});
|
|
20247
20247
|
Object.defineProperty(exports, "securityHeaders", {
|
|
20248
20248
|
enumerable: true,
|
|
20249
|
-
get: function () { return
|
|
20249
|
+
get: function () { return chunkL3KHLEHL_cjs.securityHeadersMiddleware; }
|
|
20250
20250
|
});
|
|
20251
20251
|
Object.defineProperty(exports, "securityLoggingMiddleware", {
|
|
20252
20252
|
enumerable: true,
|
|
20253
|
-
get: function () { return
|
|
20253
|
+
get: function () { return chunkL3KHLEHL_cjs.securityLoggingMiddleware; }
|
|
20254
20254
|
});
|
|
20255
20255
|
Object.defineProperty(exports, "RbacService", {
|
|
20256
20256
|
enumerable: true,
|
|
20257
|
-
get: function () { return
|
|
20257
|
+
get: function () { return chunkW36OZTJ5_cjs.RbacService; }
|
|
20258
20258
|
});
|
|
20259
20259
|
Object.defineProperty(exports, "PluginBootstrapService", {
|
|
20260
20260
|
enumerable: true,
|
|
20261
|
-
get: function () { return
|
|
20261
|
+
get: function () { return chunkWIV3R2MJ_cjs.PluginBootstrapService; }
|
|
20262
20262
|
});
|
|
20263
20263
|
Object.defineProperty(exports, "PluginServiceClass", {
|
|
20264
20264
|
enumerable: true,
|
|
20265
|
-
get: function () { return
|
|
20265
|
+
get: function () { return chunkWIV3R2MJ_cjs.PluginService; }
|
|
20266
20266
|
});
|
|
20267
20267
|
Object.defineProperty(exports, "getAvailableCollectionNames", {
|
|
20268
20268
|
enumerable: true,
|
|
20269
|
-
get: function () { return
|
|
20269
|
+
get: function () { return chunkWIV3R2MJ_cjs.getAvailableCollectionNames; }
|
|
20270
20270
|
});
|
|
20271
20271
|
Object.defineProperty(exports, "loadCollectionConfig", {
|
|
20272
20272
|
enumerable: true,
|
|
20273
|
-
get: function () { return
|
|
20273
|
+
get: function () { return chunkWIV3R2MJ_cjs.loadCollectionConfig; }
|
|
20274
20274
|
});
|
|
20275
20275
|
Object.defineProperty(exports, "loadCollectionConfigs", {
|
|
20276
20276
|
enumerable: true,
|
|
20277
|
-
get: function () { return
|
|
20277
|
+
get: function () { return chunkWIV3R2MJ_cjs.loadCollectionConfigs; }
|
|
20278
20278
|
});
|
|
20279
20279
|
Object.defineProperty(exports, "registerCollections", {
|
|
20280
20280
|
enumerable: true,
|
|
20281
|
-
get: function () { return
|
|
20281
|
+
get: function () { return chunkWIV3R2MJ_cjs.registerCollections; }
|
|
20282
20282
|
});
|
|
20283
20283
|
Object.defineProperty(exports, "validateCollectionConfig", {
|
|
20284
20284
|
enumerable: true,
|
|
20285
|
-
get: function () { return
|
|
20285
|
+
get: function () { return chunkWIV3R2MJ_cjs.validateCollectionConfig; }
|
|
20286
20286
|
});
|
|
20287
20287
|
Object.defineProperty(exports, "MigrationService", {
|
|
20288
20288
|
enumerable: true,
|
|
20289
|
-
get: function () { return
|
|
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
|
|
20329
|
+
get: function () { return chunkG5LC7MYH_cjs.HookSystemImpl; }
|
|
20330
20330
|
});
|
|
20331
20331
|
Object.defineProperty(exports, "HookUtils", {
|
|
20332
20332
|
enumerable: true,
|
|
20333
|
-
get: function () { return
|
|
20333
|
+
get: function () { return chunkG5LC7MYH_cjs.HookUtils; }
|
|
20334
20334
|
});
|
|
20335
20335
|
Object.defineProperty(exports, "PluginDependencyCycleError", {
|
|
20336
20336
|
enumerable: true,
|
|
20337
|
-
get: function () { return
|
|
20337
|
+
get: function () { return chunkG5LC7MYH_cjs.PluginDependencyCycleError; }
|
|
20338
20338
|
});
|
|
20339
20339
|
Object.defineProperty(exports, "PluginManagerClass", {
|
|
20340
20340
|
enumerable: true,
|
|
20341
|
-
get: function () { return
|
|
20341
|
+
get: function () { return chunkG5LC7MYH_cjs.PluginManager; }
|
|
20342
20342
|
});
|
|
20343
20343
|
Object.defineProperty(exports, "PluginRegistryImpl", {
|
|
20344
20344
|
enumerable: true,
|
|
20345
|
-
get: function () { return
|
|
20345
|
+
get: function () { return chunkG5LC7MYH_cjs.PluginRegistryImpl; }
|
|
20346
20346
|
});
|
|
20347
20347
|
Object.defineProperty(exports, "PluginValidatorClass", {
|
|
20348
20348
|
enumerable: true,
|
|
20349
|
-
get: function () { return
|
|
20349
|
+
get: function () { return chunkG5LC7MYH_cjs.PluginValidator; }
|
|
20350
20350
|
});
|
|
20351
20351
|
Object.defineProperty(exports, "RegisterPluginsError", {
|
|
20352
20352
|
enumerable: true,
|
|
20353
|
-
get: function () { return
|
|
20353
|
+
get: function () { return chunkG5LC7MYH_cjs.RegisterPluginsError; }
|
|
20354
20354
|
});
|
|
20355
20355
|
Object.defineProperty(exports, "ScopedHookSystemClass", {
|
|
20356
20356
|
enumerable: true,
|
|
20357
|
-
get: function () { return
|
|
20357
|
+
get: function () { return chunkG5LC7MYH_cjs.ScopedHookSystem; }
|
|
20358
20358
|
});
|
|
20359
20359
|
Object.defineProperty(exports, "collectCronSchedules", {
|
|
20360
20360
|
enumerable: true,
|
|
20361
|
-
get: function () { return
|
|
20361
|
+
get: function () { return chunkG5LC7MYH_cjs.collectCronSchedules; }
|
|
20362
20362
|
});
|
|
20363
20363
|
Object.defineProperty(exports, "collectCrons", {
|
|
20364
20364
|
enumerable: true,
|
|
20365
|
-
get: function () { return
|
|
20365
|
+
get: function () { return chunkG5LC7MYH_cjs.collectCrons; }
|
|
20366
20366
|
});
|
|
20367
20367
|
Object.defineProperty(exports, "createScheduledHandler", {
|
|
20368
20368
|
enumerable: true,
|
|
20369
|
-
get: function () { return
|
|
20369
|
+
get: function () { return chunkG5LC7MYH_cjs.createScheduledHandler; }
|
|
20370
20370
|
});
|
|
20371
20371
|
Object.defineProperty(exports, "dispatchCronTick", {
|
|
20372
20372
|
enumerable: true,
|
|
20373
|
-
get: function () { return
|
|
20373
|
+
get: function () { return chunkG5LC7MYH_cjs.dispatchCronTick; }
|
|
20374
20374
|
});
|
|
20375
20375
|
Object.defineProperty(exports, "getPluginMenu", {
|
|
20376
20376
|
enumerable: true,
|
|
20377
|
-
get: function () { return
|
|
20377
|
+
get: function () { return chunkG5LC7MYH_cjs.getPluginMenu; }
|
|
20378
20378
|
});
|
|
20379
20379
|
Object.defineProperty(exports, "registerPlugins", {
|
|
20380
20380
|
enumerable: true,
|
|
20381
|
-
get: function () { return
|
|
20381
|
+
get: function () { return chunkG5LC7MYH_cjs.registerPlugins; }
|
|
20382
20382
|
});
|
|
20383
20383
|
Object.defineProperty(exports, "resetPluginMenu", {
|
|
20384
20384
|
enumerable: true,
|
|
20385
|
-
get: function () { return
|
|
20385
|
+
get: function () { return chunkG5LC7MYH_cjs.resetPluginMenu; }
|
|
20386
20386
|
});
|
|
20387
20387
|
Object.defineProperty(exports, "resolvePluginMenuItems", {
|
|
20388
20388
|
enumerable: true,
|
|
20389
|
-
get: function () { return
|
|
20389
|
+
get: function () { return chunkG5LC7MYH_cjs.resolvePluginMenuItems; }
|
|
20390
20390
|
});
|
|
20391
20391
|
Object.defineProperty(exports, "setPluginMenu", {
|
|
20392
20392
|
enumerable: true,
|
|
20393
|
-
get: function () { return
|
|
20393
|
+
get: function () { return chunkG5LC7MYH_cjs.setPluginMenu; }
|
|
20394
20394
|
});
|
|
20395
20395
|
Object.defineProperty(exports, "topoSort", {
|
|
20396
20396
|
enumerable: true,
|
|
20397
|
-
get: function () { return
|
|
20397
|
+
get: function () { return chunkG5LC7MYH_cjs.topoSort; }
|
|
20398
20398
|
});
|
|
20399
20399
|
Object.defineProperty(exports, "applySchemaDefaults", {
|
|
20400
20400
|
enumerable: true,
|
|
20401
|
-
get: function () { return
|
|
20401
|
+
get: function () { return chunk4YRYGDCQ_cjs.applySchemaDefaults; }
|
|
20402
20402
|
});
|
|
20403
20403
|
Object.defineProperty(exports, "definePlugin", {
|
|
20404
20404
|
enumerable: true,
|
|
20405
|
-
get: function () { return
|
|
20405
|
+
get: function () { return chunk4YRYGDCQ_cjs.definePlugin; }
|
|
20406
20406
|
});
|
|
20407
20407
|
Object.defineProperty(exports, "isDefinedPlugin", {
|
|
20408
20408
|
enumerable: true,
|
|
20409
|
-
get: function () { return
|
|
20409
|
+
get: function () { return chunk4YRYGDCQ_cjs.isDefinedPlugin; }
|
|
20410
20410
|
});
|
|
20411
20411
|
Object.defineProperty(exports, "parseConfigSchema", {
|
|
20412
20412
|
enumerable: true,
|
|
20413
|
-
get: function () { return
|
|
20413
|
+
get: function () { return chunk4YRYGDCQ_cjs.parseConfigSchema; }
|
|
20414
20414
|
});
|
|
20415
20415
|
Object.defineProperty(exports, "parseFormDataToSettings", {
|
|
20416
20416
|
enumerable: true,
|
|
20417
|
-
get: function () { return
|
|
20417
|
+
get: function () { return chunk4YRYGDCQ_cjs.parseFormDataToSettings; }
|
|
20418
20418
|
});
|
|
20419
20419
|
Object.defineProperty(exports, "renderSchemaFields", {
|
|
20420
20420
|
enumerable: true,
|
|
20421
|
-
get: function () { return
|
|
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
|
|
20469
|
+
get: function () { return chunkSIPBHWMG_cjs.SONICJS_VERSION; }
|
|
20470
20470
|
});
|
|
20471
20471
|
Object.defineProperty(exports, "getCoreVersion", {
|
|
20472
20472
|
enumerable: true,
|
|
20473
|
-
get: function () { return
|
|
20473
|
+
get: function () { return chunkSIPBHWMG_cjs.getCoreVersion; }
|
|
20474
20474
|
});
|
|
20475
20475
|
Object.defineProperty(exports, "escapeHtml", {
|
|
20476
20476
|
enumerable: true,
|