@sonicjs-cms/core 2.0.9 → 2.0.11
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-VEC5MLT3.js → chunk-5RKQB2JG.js} +10 -228
- package/dist/chunk-5RKQB2JG.js.map +1 -0
- package/dist/chunk-AMSTLQFI.cjs +801 -0
- package/dist/chunk-AMSTLQFI.cjs.map +1 -0
- package/dist/{chunk-ABYMIXRN.js → chunk-CLLJFZ5U.js} +2018 -1054
- package/dist/chunk-CLLJFZ5U.js.map +1 -0
- package/dist/{chunk-WRRLB6KG.js → chunk-DU7JJZN7.js} +5 -4
- package/dist/chunk-DU7JJZN7.js.map +1 -0
- package/dist/{chunk-OKPDQO2Y.js → chunk-FYWJMETG.js} +30 -10
- package/dist/chunk-FYWJMETG.js.map +1 -0
- package/dist/chunk-I5ZPYKNX.js +787 -0
- package/dist/chunk-I5ZPYKNX.js.map +1 -0
- package/dist/{chunk-4I25AGUR.cjs → chunk-IM2LGCYD.cjs} +2166 -1202
- package/dist/chunk-IM2LGCYD.cjs.map +1 -0
- package/dist/{chunk-TMIRVVQ7.cjs → chunk-NNXPAPUD.cjs} +5 -4
- package/dist/chunk-NNXPAPUD.cjs.map +1 -0
- package/dist/{chunk-OPGDMS7L.js → chunk-QNWYQZ55.js} +3 -3
- package/dist/{chunk-OPGDMS7L.js.map → chunk-QNWYQZ55.js.map} +1 -1
- package/dist/{chunk-COBUPOMD.js → chunk-T7IYBGGO.cjs} +5 -770
- package/dist/chunk-T7IYBGGO.cjs.map +1 -0
- package/dist/{chunk-DYYAXDXI.cjs → chunk-X2VADBA4.cjs} +31 -11
- package/dist/chunk-X2VADBA4.cjs.map +1 -0
- package/dist/{chunk-EYMHWJTW.cjs → chunk-YU6QFFI4.cjs} +9 -228
- package/dist/chunk-YU6QFFI4.cjs.map +1 -0
- package/dist/{chunk-MABBKINE.cjs → chunk-ZMSYKV62.cjs} +5 -5
- package/dist/{chunk-MABBKINE.cjs.map → chunk-ZMSYKV62.cjs.map} +1 -1
- package/dist/{chunk-NBDPIRQS.cjs → chunk-ZPMFT2JW.js} +4 -786
- package/dist/chunk-ZPMFT2JW.js.map +1 -0
- package/dist/index.cjs +475 -104
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +386 -11
- package/dist/index.js.map +1 -1
- package/dist/middleware.cjs +24 -23
- package/dist/middleware.js +3 -2
- package/dist/migrations-IHERIQVD.js +4 -0
- package/dist/migrations-IHERIQVD.js.map +1 -0
- package/dist/migrations-POFD5KNG.cjs +13 -0
- package/dist/migrations-POFD5KNG.cjs.map +1 -0
- package/dist/routes.cjs +25 -28
- package/dist/routes.js +6 -5
- package/dist/services.cjs +19 -18
- package/dist/services.js +2 -1
- package/dist/templates.cjs +17 -21
- package/dist/templates.js +2 -2
- package/dist/utils.cjs +11 -11
- package/dist/utils.js +1 -1
- package/migrations/001_initial_schema.sql +2 -2
- package/migrations/007_demo_login_plugin.sql +1 -1
- package/migrations/020_add_email_plugin.sql +22 -0
- package/migrations/021_add_magic_link_auth_plugin.sql +42 -0
- package/migrations/021_add_otp_login.sql +42 -0
- package/migrations/022_add_tinymce_plugin.sql +25 -0
- package/migrations/023_add_mdxeditor_plugin.sql +25 -0
- package/migrations/024_add_quill_editor_plugin.sql +25 -0
- package/migrations/025_add_easymde_plugin.sql +25 -0
- package/package.json +3 -2
- package/dist/chunk-4I25AGUR.cjs.map +0 -1
- package/dist/chunk-ABYMIXRN.js.map +0 -1
- package/dist/chunk-COBUPOMD.js.map +0 -1
- package/dist/chunk-DYYAXDXI.cjs.map +0 -1
- package/dist/chunk-EYMHWJTW.cjs.map +0 -1
- package/dist/chunk-NBDPIRQS.cjs.map +0 -1
- package/dist/chunk-OKPDQO2Y.js.map +0 -1
- package/dist/chunk-TMIRVVQ7.cjs.map +0 -1
- package/dist/chunk-VEC5MLT3.js.map +0 -1
- package/dist/chunk-WRRLB6KG.js.map +0 -1
- package/migrations/002_faq_plugin.sql +0 -86
package/dist/index.cjs
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkIM2LGCYD_cjs = require('./chunk-IM2LGCYD.cjs');
|
|
4
4
|
var chunkDOR2IU73_cjs = require('./chunk-DOR2IU73.cjs');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
5
|
+
var chunkX2VADBA4_cjs = require('./chunk-X2VADBA4.cjs');
|
|
6
|
+
var chunkAMSTLQFI_cjs = require('./chunk-AMSTLQFI.cjs');
|
|
7
|
+
var chunkT7IYBGGO_cjs = require('./chunk-T7IYBGGO.cjs');
|
|
8
|
+
var chunkZMSYKV62_cjs = require('./chunk-ZMSYKV62.cjs');
|
|
9
|
+
var chunkYU6QFFI4_cjs = require('./chunk-YU6QFFI4.cjs');
|
|
9
10
|
var chunkF5ESJXI2_cjs = require('./chunk-F5ESJXI2.cjs');
|
|
10
|
-
var
|
|
11
|
+
var chunkNNXPAPUD_cjs = require('./chunk-NNXPAPUD.cjs');
|
|
11
12
|
var chunkRCQ2HIQD_cjs = require('./chunk-RCQ2HIQD.cjs');
|
|
12
13
|
var chunkKYGRJCZM_cjs = require('./chunk-KYGRJCZM.cjs');
|
|
13
14
|
require('./chunk-IGJUBJBW.cjs');
|
|
14
15
|
var hono = require('hono');
|
|
16
|
+
var html = require('hono/html');
|
|
15
17
|
var d1 = require('drizzle-orm/d1');
|
|
16
18
|
|
|
17
19
|
// src/plugins/core-plugins/database-tools-plugin/services/database-service.ts
|
|
@@ -229,7 +231,7 @@ var DatabaseToolsService = class {
|
|
|
229
231
|
};
|
|
230
232
|
|
|
231
233
|
// src/templates/pages/admin-database-table.template.ts
|
|
232
|
-
|
|
234
|
+
chunkYU6QFFI4_cjs.init_admin_layout_catalyst_template();
|
|
233
235
|
function renderDatabaseTablePage(data) {
|
|
234
236
|
const totalPages = Math.ceil(data.totalRows / data.pageSize);
|
|
235
237
|
const startRow = (data.currentPage - 1) * data.pageSize + 1;
|
|
@@ -478,7 +480,7 @@ function renderDatabaseTablePage(data) {
|
|
|
478
480
|
user: data.user,
|
|
479
481
|
content: pageContent
|
|
480
482
|
};
|
|
481
|
-
return
|
|
483
|
+
return chunkYU6QFFI4_cjs.renderAdminLayoutCatalyst(layoutData);
|
|
482
484
|
}
|
|
483
485
|
function generatePageNumbers(currentPage, totalPages) {
|
|
484
486
|
const pages = [];
|
|
@@ -553,7 +555,7 @@ function formatCellValue(value) {
|
|
|
553
555
|
// src/plugins/core-plugins/database-tools-plugin/admin-routes.ts
|
|
554
556
|
function createDatabaseToolsAdminRoutes() {
|
|
555
557
|
const router2 = new hono.Hono();
|
|
556
|
-
router2.use("*",
|
|
558
|
+
router2.use("*", chunkX2VADBA4_cjs.requireAuth());
|
|
557
559
|
router2.get("/api/stats", async (c) => {
|
|
558
560
|
try {
|
|
559
561
|
const user = c.get("user");
|
|
@@ -733,18 +735,386 @@ function createDatabaseToolsAdminRoutes() {
|
|
|
733
735
|
});
|
|
734
736
|
return router2;
|
|
735
737
|
}
|
|
738
|
+
function createEmailPlugin() {
|
|
739
|
+
const builder = chunkIM2LGCYD_cjs.PluginBuilder.create({
|
|
740
|
+
name: "email",
|
|
741
|
+
version: "1.0.0-beta.1",
|
|
742
|
+
description: "Send transactional emails using Resend"
|
|
743
|
+
});
|
|
744
|
+
builder.metadata({
|
|
745
|
+
author: {
|
|
746
|
+
name: "SonicJS Team",
|
|
747
|
+
email: "team@sonicjs.com"
|
|
748
|
+
},
|
|
749
|
+
license: "MIT",
|
|
750
|
+
compatibility: "^2.0.0"
|
|
751
|
+
});
|
|
752
|
+
const emailRoutes = new hono.Hono();
|
|
753
|
+
emailRoutes.get("/settings", async (c) => {
|
|
754
|
+
const user = c.get("user");
|
|
755
|
+
const db = c.env.DB;
|
|
756
|
+
const plugin = await db.prepare(`
|
|
757
|
+
SELECT settings FROM plugins WHERE id = 'email'
|
|
758
|
+
`).first();
|
|
759
|
+
const settings = plugin?.settings ? JSON.parse(plugin.settings) : {};
|
|
760
|
+
const contentHTML = html.html`
|
|
761
|
+
<div class="p-8">
|
|
762
|
+
<!-- Header -->
|
|
763
|
+
<div class="mb-8">
|
|
764
|
+
<h1 class="text-3xl font-bold text-zinc-950 dark:text-white mb-2">Email Settings</h1>
|
|
765
|
+
<p class="text-zinc-600 dark:text-zinc-400">Configure Resend API for sending transactional emails</p>
|
|
766
|
+
</div>
|
|
767
|
+
|
|
768
|
+
<!-- Settings Form -->
|
|
769
|
+
<div class="max-w-3xl">
|
|
770
|
+
<!-- Main Settings Card -->
|
|
771
|
+
<div class="rounded-xl bg-white dark:bg-zinc-900 shadow-sm ring-1 ring-zinc-950/5 dark:ring-white/10 p-6 mb-6">
|
|
772
|
+
<h2 class="text-xl font-semibold text-zinc-950 dark:text-white mb-4">Resend Configuration</h2>
|
|
773
|
+
|
|
774
|
+
<form id="emailSettingsForm" class="space-y-6">
|
|
775
|
+
<!-- API Key -->
|
|
776
|
+
<div>
|
|
777
|
+
<label for="apiKey" class="block text-sm font-medium text-zinc-950 dark:text-white mb-2">
|
|
778
|
+
Resend API Key <span class="text-red-500">*</span>
|
|
779
|
+
</label>
|
|
780
|
+
<input
|
|
781
|
+
type="password"
|
|
782
|
+
id="apiKey"
|
|
783
|
+
name="apiKey"
|
|
784
|
+
value="${settings.apiKey || ""}"
|
|
785
|
+
class="w-full rounded-lg bg-white dark:bg-white/5 px-3 py-2 text-sm text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 placeholder:text-zinc-500 dark:placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-indigo-500 dark:focus:ring-indigo-400"
|
|
786
|
+
placeholder="re_..."
|
|
787
|
+
required
|
|
788
|
+
/>
|
|
789
|
+
<p class="text-xs text-zinc-500 dark:text-zinc-400 mt-1">
|
|
790
|
+
Get your API key from <a href="https://resend.com/api-keys" target="_blank" class="text-indigo-600 dark:text-indigo-400 hover:underline">resend.com/api-keys</a>
|
|
791
|
+
</p>
|
|
792
|
+
</div>
|
|
793
|
+
|
|
794
|
+
<!-- From Email -->
|
|
795
|
+
<div>
|
|
796
|
+
<label for="fromEmail" class="block text-sm font-medium text-zinc-950 dark:text-white mb-2">
|
|
797
|
+
From Email <span class="text-red-500">*</span>
|
|
798
|
+
</label>
|
|
799
|
+
<input
|
|
800
|
+
type="email"
|
|
801
|
+
id="fromEmail"
|
|
802
|
+
name="fromEmail"
|
|
803
|
+
value="${settings.fromEmail || ""}"
|
|
804
|
+
class="w-full rounded-lg bg-white dark:bg-white/5 px-3 py-2 text-sm text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 placeholder:text-zinc-500 dark:placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-indigo-500 dark:focus:ring-indigo-400"
|
|
805
|
+
placeholder="noreply@yourdomain.com"
|
|
806
|
+
required
|
|
807
|
+
/>
|
|
808
|
+
<p class="text-xs text-zinc-500 dark:text-zinc-400 mt-1">
|
|
809
|
+
Must be a verified domain in Resend
|
|
810
|
+
</p>
|
|
811
|
+
</div>
|
|
812
|
+
|
|
813
|
+
<!-- From Name -->
|
|
814
|
+
<div>
|
|
815
|
+
<label for="fromName" class="block text-sm font-medium text-zinc-950 dark:text-white mb-2">
|
|
816
|
+
From Name <span class="text-red-500">*</span>
|
|
817
|
+
</label>
|
|
818
|
+
<input
|
|
819
|
+
type="text"
|
|
820
|
+
id="fromName"
|
|
821
|
+
name="fromName"
|
|
822
|
+
value="${settings.fromName || ""}"
|
|
823
|
+
class="w-full rounded-lg bg-white dark:bg-white/5 px-3 py-2 text-sm text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 placeholder:text-zinc-500 dark:placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-indigo-500 dark:focus:ring-indigo-400"
|
|
824
|
+
placeholder="Your App Name"
|
|
825
|
+
required
|
|
826
|
+
/>
|
|
827
|
+
</div>
|
|
828
|
+
|
|
829
|
+
<!-- Reply To -->
|
|
830
|
+
<div>
|
|
831
|
+
<label for="replyTo" class="block text-sm font-medium text-zinc-950 dark:text-white mb-2">
|
|
832
|
+
Reply-To Email
|
|
833
|
+
</label>
|
|
834
|
+
<input
|
|
835
|
+
type="email"
|
|
836
|
+
id="replyTo"
|
|
837
|
+
name="replyTo"
|
|
838
|
+
value="${settings.replyTo || ""}"
|
|
839
|
+
class="w-full rounded-lg bg-white dark:bg-white/5 px-3 py-2 text-sm text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 placeholder:text-zinc-500 dark:placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-indigo-500 dark:focus:ring-indigo-400"
|
|
840
|
+
placeholder="support@yourdomain.com"
|
|
841
|
+
/>
|
|
842
|
+
</div>
|
|
843
|
+
|
|
844
|
+
<!-- Logo URL -->
|
|
845
|
+
<div>
|
|
846
|
+
<label for="logoUrl" class="block text-sm font-medium text-zinc-950 dark:text-white mb-2">
|
|
847
|
+
Logo URL
|
|
848
|
+
</label>
|
|
849
|
+
<input
|
|
850
|
+
type="url"
|
|
851
|
+
id="logoUrl"
|
|
852
|
+
name="logoUrl"
|
|
853
|
+
value="${settings.logoUrl || ""}"
|
|
854
|
+
class="w-full rounded-lg bg-white dark:bg-white/5 px-3 py-2 text-sm text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 placeholder:text-zinc-500 dark:placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-indigo-500 dark:focus:ring-indigo-400"
|
|
855
|
+
placeholder="https://yourdomain.com/logo.png"
|
|
856
|
+
/>
|
|
857
|
+
<p class="text-xs text-zinc-500 dark:text-zinc-400 mt-1">
|
|
858
|
+
Logo to display in email templates
|
|
859
|
+
</p>
|
|
860
|
+
</div>
|
|
861
|
+
|
|
862
|
+
<!-- Action Buttons -->
|
|
863
|
+
<div class="flex gap-3 pt-4">
|
|
864
|
+
<button
|
|
865
|
+
type="submit"
|
|
866
|
+
class="inline-flex items-center justify-center rounded-lg bg-zinc-950 dark:bg-white px-3.5 py-2.5 text-sm font-semibold text-white dark:text-zinc-950 hover:bg-zinc-800 dark:hover:bg-zinc-100 transition-colors shadow-sm"
|
|
867
|
+
>
|
|
868
|
+
Save Settings
|
|
869
|
+
</button>
|
|
870
|
+
<button
|
|
871
|
+
type="button"
|
|
872
|
+
id="testEmailBtn"
|
|
873
|
+
class="inline-flex items-center justify-center rounded-lg bg-white dark:bg-zinc-800 px-3.5 py-2.5 text-sm font-semibold text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 hover:bg-zinc-50 dark:hover:bg-zinc-700 transition-colors shadow-sm"
|
|
874
|
+
>
|
|
875
|
+
Send Test Email
|
|
876
|
+
</button>
|
|
877
|
+
<button
|
|
878
|
+
type="button"
|
|
879
|
+
id="resetBtn"
|
|
880
|
+
class="inline-flex items-center justify-center rounded-lg bg-white dark:bg-zinc-800 px-3.5 py-2.5 text-sm font-semibold text-zinc-950 dark:text-white ring-1 ring-inset ring-zinc-950/10 dark:ring-white/10 hover:bg-zinc-50 dark:hover:bg-zinc-700 transition-colors shadow-sm"
|
|
881
|
+
>
|
|
882
|
+
Reset
|
|
883
|
+
</button>
|
|
884
|
+
</div>
|
|
885
|
+
</form>
|
|
886
|
+
</div>
|
|
887
|
+
|
|
888
|
+
<!-- Status Message -->
|
|
889
|
+
<div id="statusMessage" class="hidden rounded-xl p-4 mb-6"></div>
|
|
890
|
+
|
|
891
|
+
<!-- Info Card -->
|
|
892
|
+
<div class="rounded-xl bg-indigo-50 dark:bg-indigo-950/30 ring-1 ring-indigo-100 dark:ring-indigo-900/50 p-6">
|
|
893
|
+
<h3 class="font-semibold text-indigo-900 dark:text-indigo-300 mb-3">
|
|
894
|
+
📧 Email Templates Included
|
|
895
|
+
</h3>
|
|
896
|
+
<ul class="text-sm text-indigo-800 dark:text-indigo-200 space-y-2">
|
|
897
|
+
<li>✓ Registration confirmation</li>
|
|
898
|
+
<li>✓ Email verification</li>
|
|
899
|
+
<li>✓ Password reset</li>
|
|
900
|
+
<li>✓ One-time code (2FA)</li>
|
|
901
|
+
</ul>
|
|
902
|
+
<p class="text-xs text-indigo-700 dark:text-indigo-300 mt-4">
|
|
903
|
+
Templates are code-based and can be customized by editing the plugin files.
|
|
904
|
+
</p>
|
|
905
|
+
</div>
|
|
906
|
+
</div>
|
|
907
|
+
</div>
|
|
908
|
+
|
|
909
|
+
<script>
|
|
910
|
+
// Form submission handler
|
|
911
|
+
document.getElementById('emailSettingsForm').addEventListener('submit', async (e) => {
|
|
912
|
+
e.preventDefault()
|
|
913
|
+
const formData = new FormData(e.target)
|
|
914
|
+
const data = Object.fromEntries(formData.entries())
|
|
915
|
+
|
|
916
|
+
const statusEl = document.getElementById('statusMessage')
|
|
917
|
+
|
|
918
|
+
try {
|
|
919
|
+
const response = await fetch('/admin/plugins/email/settings', {
|
|
920
|
+
method: 'POST',
|
|
921
|
+
headers: { 'Content-Type': 'application/json' },
|
|
922
|
+
body: JSON.stringify(data)
|
|
923
|
+
})
|
|
924
|
+
|
|
925
|
+
if (response.ok) {
|
|
926
|
+
statusEl.className = 'rounded-xl bg-green-50 dark:bg-green-950/30 ring-1 ring-green-100 dark:ring-green-900/50 p-4 mb-6 text-green-900 dark:text-green-200'
|
|
927
|
+
statusEl.innerHTML = '✅ Settings saved successfully!'
|
|
928
|
+
statusEl.classList.remove('hidden')
|
|
929
|
+
setTimeout(() => statusEl.classList.add('hidden'), 3000)
|
|
930
|
+
} else {
|
|
931
|
+
throw new Error('Failed to save settings')
|
|
932
|
+
}
|
|
933
|
+
} catch (error) {
|
|
934
|
+
statusEl.className = 'rounded-xl bg-red-50 dark:bg-red-950/30 ring-1 ring-red-100 dark:ring-red-900/50 p-4 mb-6 text-red-900 dark:text-red-200'
|
|
935
|
+
statusEl.innerHTML = '❌ Failed to save settings. Please try again.'
|
|
936
|
+
statusEl.classList.remove('hidden')
|
|
937
|
+
}
|
|
938
|
+
})
|
|
939
|
+
|
|
940
|
+
// Test email handler
|
|
941
|
+
document.getElementById('testEmailBtn').addEventListener('click', async () => {
|
|
942
|
+
// Prompt for destination email
|
|
943
|
+
const toEmail = prompt('Enter destination email address for test:')
|
|
944
|
+
if (!toEmail) return
|
|
945
|
+
|
|
946
|
+
// Basic email validation
|
|
947
|
+
if (!toEmail.match(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/)) {
|
|
948
|
+
alert('Please enter a valid email address')
|
|
949
|
+
return
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
const statusEl = document.getElementById('statusMessage')
|
|
953
|
+
|
|
954
|
+
statusEl.className = 'rounded-xl bg-indigo-50 dark:bg-indigo-950/30 ring-1 ring-indigo-100 dark:ring-indigo-900/50 p-4 mb-6 text-indigo-900 dark:text-indigo-200'
|
|
955
|
+
statusEl.innerHTML = \`📧 Sending test email to \${toEmail}...\`
|
|
956
|
+
statusEl.classList.remove('hidden')
|
|
957
|
+
|
|
958
|
+
try {
|
|
959
|
+
const response = await fetch('/admin/plugins/email/test', {
|
|
960
|
+
method: 'POST',
|
|
961
|
+
headers: { 'Content-Type': 'application/json' },
|
|
962
|
+
body: JSON.stringify({ toEmail })
|
|
963
|
+
})
|
|
964
|
+
|
|
965
|
+
const data = await response.json()
|
|
966
|
+
|
|
967
|
+
if (response.ok) {
|
|
968
|
+
statusEl.className = 'rounded-xl bg-green-50 dark:bg-green-950/30 ring-1 ring-green-100 dark:ring-green-900/50 p-4 mb-6 text-green-900 dark:text-green-200'
|
|
969
|
+
statusEl.innerHTML = \`✅ \${data.message || 'Test email sent! Check your inbox.'}\`
|
|
970
|
+
} else {
|
|
971
|
+
statusEl.className = 'rounded-xl bg-red-50 dark:bg-red-950/30 ring-1 ring-red-100 dark:ring-red-900/50 p-4 mb-6 text-red-900 dark:text-red-200'
|
|
972
|
+
statusEl.innerHTML = \`❌ \${data.error || 'Failed to send test email. Check your settings.'}\`
|
|
973
|
+
}
|
|
974
|
+
} catch (error) {
|
|
975
|
+
statusEl.className = 'rounded-xl bg-red-50 dark:bg-red-950/30 ring-1 ring-red-100 dark:ring-red-900/50 p-4 mb-6 text-red-900 dark:text-red-200'
|
|
976
|
+
statusEl.innerHTML = '❌ Network error. Please try again.'
|
|
977
|
+
}
|
|
978
|
+
})
|
|
979
|
+
|
|
980
|
+
// Reset button handler
|
|
981
|
+
document.getElementById('resetBtn').addEventListener('click', () => {
|
|
982
|
+
document.getElementById('emailSettingsForm').reset()
|
|
983
|
+
})
|
|
984
|
+
</script>
|
|
985
|
+
`;
|
|
986
|
+
return c.html(
|
|
987
|
+
chunkYU6QFFI4_cjs.renderAdminLayout({
|
|
988
|
+
title: "Email Settings",
|
|
989
|
+
content: contentHTML,
|
|
990
|
+
user,
|
|
991
|
+
currentPath: "/admin/plugins/email/settings"
|
|
992
|
+
})
|
|
993
|
+
);
|
|
994
|
+
});
|
|
995
|
+
emailRoutes.post("/settings", async (c) => {
|
|
996
|
+
try {
|
|
997
|
+
const body = await c.req.json();
|
|
998
|
+
const db = c.env.DB;
|
|
999
|
+
await db.prepare(`
|
|
1000
|
+
UPDATE plugins
|
|
1001
|
+
SET settings = ?,
|
|
1002
|
+
updated_at = unixepoch()
|
|
1003
|
+
WHERE id = 'email'
|
|
1004
|
+
`).bind(JSON.stringify(body)).run();
|
|
1005
|
+
return c.json({ success: true });
|
|
1006
|
+
} catch (error) {
|
|
1007
|
+
console.error("Error saving email settings:", error);
|
|
1008
|
+
return c.json({ success: false, error: "Failed to save settings" }, 500);
|
|
1009
|
+
}
|
|
1010
|
+
});
|
|
1011
|
+
emailRoutes.post("/test", async (c) => {
|
|
1012
|
+
try {
|
|
1013
|
+
const db = c.env.DB;
|
|
1014
|
+
const body = await c.req.json();
|
|
1015
|
+
const plugin = await db.prepare(`
|
|
1016
|
+
SELECT settings FROM plugins WHERE id = 'email'
|
|
1017
|
+
`).first();
|
|
1018
|
+
if (!plugin?.settings) {
|
|
1019
|
+
return c.json({
|
|
1020
|
+
success: false,
|
|
1021
|
+
error: "Email settings not configured. Please save your settings first."
|
|
1022
|
+
}, 400);
|
|
1023
|
+
}
|
|
1024
|
+
const settings = JSON.parse(plugin.settings);
|
|
1025
|
+
if (!settings.apiKey || !settings.fromEmail || !settings.fromName) {
|
|
1026
|
+
return c.json({
|
|
1027
|
+
success: false,
|
|
1028
|
+
error: "Missing required settings. Please configure API Key, From Email, and From Name."
|
|
1029
|
+
}, 400);
|
|
1030
|
+
}
|
|
1031
|
+
const toEmail = body.toEmail || settings.fromEmail;
|
|
1032
|
+
if (!toEmail.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {
|
|
1033
|
+
return c.json({
|
|
1034
|
+
success: false,
|
|
1035
|
+
error: "Invalid email address format"
|
|
1036
|
+
}, 400);
|
|
1037
|
+
}
|
|
1038
|
+
const response = await fetch("https://api.resend.com/emails", {
|
|
1039
|
+
method: "POST",
|
|
1040
|
+
headers: {
|
|
1041
|
+
"Authorization": `Bearer ${settings.apiKey}`,
|
|
1042
|
+
"Content-Type": "application/json"
|
|
1043
|
+
},
|
|
1044
|
+
body: JSON.stringify({
|
|
1045
|
+
from: `${settings.fromName} <${settings.fromEmail}>`,
|
|
1046
|
+
to: [toEmail],
|
|
1047
|
+
subject: "Test Email from SonicJS",
|
|
1048
|
+
html: `
|
|
1049
|
+
<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
|
|
1050
|
+
<h1 style="color: #667eea;">Test Email Successful! \u{1F389}</h1>
|
|
1051
|
+
<p>This is a test email from your SonicJS Email plugin.</p>
|
|
1052
|
+
<p><strong>Configuration:</strong></p>
|
|
1053
|
+
<ul>
|
|
1054
|
+
<li>From: ${settings.fromName} <${settings.fromEmail}></li>
|
|
1055
|
+
<li>Reply-To: ${settings.replyTo || "Not set"}</li>
|
|
1056
|
+
<li>Sent at: ${(/* @__PURE__ */ new Date()).toISOString()}</li>
|
|
1057
|
+
</ul>
|
|
1058
|
+
<p>Your email settings are working correctly!</p>
|
|
1059
|
+
</div>
|
|
1060
|
+
`,
|
|
1061
|
+
reply_to: settings.replyTo || settings.fromEmail
|
|
1062
|
+
})
|
|
1063
|
+
});
|
|
1064
|
+
const data = await response.json();
|
|
1065
|
+
if (!response.ok) {
|
|
1066
|
+
console.error("Resend API error:", data);
|
|
1067
|
+
return c.json({
|
|
1068
|
+
success: false,
|
|
1069
|
+
error: data.message || "Failed to send test email. Check your API key and domain verification."
|
|
1070
|
+
}, response.status);
|
|
1071
|
+
}
|
|
1072
|
+
return c.json({
|
|
1073
|
+
success: true,
|
|
1074
|
+
message: `Test email sent successfully to ${toEmail}`,
|
|
1075
|
+
emailId: data.id
|
|
1076
|
+
});
|
|
1077
|
+
} catch (error) {
|
|
1078
|
+
console.error("Test email error:", error);
|
|
1079
|
+
return c.json({
|
|
1080
|
+
success: false,
|
|
1081
|
+
error: error.message || "An error occurred while sending test email"
|
|
1082
|
+
}, 500);
|
|
1083
|
+
}
|
|
1084
|
+
});
|
|
1085
|
+
builder.addRoute("/admin/plugins/email", emailRoutes, {
|
|
1086
|
+
description: "Email plugin settings",
|
|
1087
|
+
requiresAuth: true,
|
|
1088
|
+
priority: 80
|
|
1089
|
+
});
|
|
1090
|
+
builder.addMenuItem("Email", "/admin/plugins/email/settings", {
|
|
1091
|
+
icon: "envelope",
|
|
1092
|
+
order: 80,
|
|
1093
|
+
permissions: ["email:manage"]
|
|
1094
|
+
});
|
|
1095
|
+
builder.lifecycle({
|
|
1096
|
+
activate: async () => {
|
|
1097
|
+
console.info("\u2705 Email plugin activated");
|
|
1098
|
+
},
|
|
1099
|
+
deactivate: async () => {
|
|
1100
|
+
console.info("\u274C Email plugin deactivated");
|
|
1101
|
+
}
|
|
1102
|
+
});
|
|
1103
|
+
return builder.build();
|
|
1104
|
+
}
|
|
1105
|
+
var emailPlugin = createEmailPlugin();
|
|
736
1106
|
|
|
737
1107
|
// src/app.ts
|
|
738
1108
|
function createSonicJSApp(config = {}) {
|
|
739
1109
|
const app = new hono.Hono();
|
|
740
|
-
const appVersion = config.version ||
|
|
1110
|
+
const appVersion = config.version || chunkNNXPAPUD_cjs.getCoreVersion();
|
|
741
1111
|
const appName = config.name || "SonicJS AI";
|
|
742
1112
|
app.use("*", async (c, next) => {
|
|
743
1113
|
c.set("appVersion", appVersion);
|
|
744
1114
|
await next();
|
|
745
1115
|
});
|
|
746
|
-
app.use("*",
|
|
747
|
-
app.use("*",
|
|
1116
|
+
app.use("*", chunkX2VADBA4_cjs.metricsMiddleware());
|
|
1117
|
+
app.use("*", chunkX2VADBA4_cjs.bootstrapMiddleware(config));
|
|
748
1118
|
if (config.middleware?.beforeAuth) {
|
|
749
1119
|
for (const middleware of config.middleware.beforeAuth) {
|
|
750
1120
|
app.use("*", middleware);
|
|
@@ -761,20 +1131,25 @@ function createSonicJSApp(config = {}) {
|
|
|
761
1131
|
app.use("*", middleware);
|
|
762
1132
|
}
|
|
763
1133
|
}
|
|
764
|
-
app.route("/api",
|
|
765
|
-
app.route("/api/media",
|
|
766
|
-
app.route("/api/system",
|
|
767
|
-
app.route("/admin/api",
|
|
768
|
-
app.route("/admin/dashboard",
|
|
769
|
-
app.route("/admin/collections",
|
|
770
|
-
app.route("/admin/settings",
|
|
1134
|
+
app.route("/api", chunkIM2LGCYD_cjs.api_default);
|
|
1135
|
+
app.route("/api/media", chunkIM2LGCYD_cjs.api_media_default);
|
|
1136
|
+
app.route("/api/system", chunkIM2LGCYD_cjs.api_system_default);
|
|
1137
|
+
app.route("/admin/api", chunkIM2LGCYD_cjs.admin_api_default);
|
|
1138
|
+
app.route("/admin/dashboard", chunkIM2LGCYD_cjs.router);
|
|
1139
|
+
app.route("/admin/collections", chunkIM2LGCYD_cjs.adminCollectionsRoutes);
|
|
1140
|
+
app.route("/admin/settings", chunkIM2LGCYD_cjs.adminSettingsRoutes);
|
|
771
1141
|
app.route("/admin/database-tools", createDatabaseToolsAdminRoutes());
|
|
772
|
-
app.route("/admin/content",
|
|
773
|
-
app.route("/admin/media",
|
|
774
|
-
app.route("/admin/plugins",
|
|
775
|
-
app.route("/admin/logs",
|
|
776
|
-
app.route("/admin",
|
|
777
|
-
app.route("/auth",
|
|
1142
|
+
app.route("/admin/content", chunkIM2LGCYD_cjs.admin_content_default);
|
|
1143
|
+
app.route("/admin/media", chunkIM2LGCYD_cjs.adminMediaRoutes);
|
|
1144
|
+
app.route("/admin/plugins", chunkIM2LGCYD_cjs.adminPluginRoutes);
|
|
1145
|
+
app.route("/admin/logs", chunkIM2LGCYD_cjs.adminLogsRoutes);
|
|
1146
|
+
app.route("/admin", chunkIM2LGCYD_cjs.userRoutes);
|
|
1147
|
+
app.route("/auth", chunkIM2LGCYD_cjs.auth_default);
|
|
1148
|
+
if (emailPlugin.routes && emailPlugin.routes.length > 0) {
|
|
1149
|
+
for (const route of emailPlugin.routes) {
|
|
1150
|
+
app.route(route.path, route.handler);
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
778
1153
|
app.get("/files/*", async (c) => {
|
|
779
1154
|
try {
|
|
780
1155
|
const url = new URL(c.req.url);
|
|
@@ -838,87 +1213,83 @@ function createDb(d1$1) {
|
|
|
838
1213
|
}
|
|
839
1214
|
|
|
840
1215
|
// src/index.ts
|
|
841
|
-
var VERSION =
|
|
1216
|
+
var VERSION = chunkNNXPAPUD_cjs.package_default.version;
|
|
842
1217
|
|
|
843
1218
|
Object.defineProperty(exports, "ROUTES_INFO", {
|
|
844
1219
|
enumerable: true,
|
|
845
|
-
get: function () { return
|
|
1220
|
+
get: function () { return chunkIM2LGCYD_cjs.ROUTES_INFO; }
|
|
846
1221
|
});
|
|
847
1222
|
Object.defineProperty(exports, "adminApiRoutes", {
|
|
848
1223
|
enumerable: true,
|
|
849
|
-
get: function () { return
|
|
1224
|
+
get: function () { return chunkIM2LGCYD_cjs.admin_api_default; }
|
|
850
1225
|
});
|
|
851
1226
|
Object.defineProperty(exports, "adminCheckboxRoutes", {
|
|
852
1227
|
enumerable: true,
|
|
853
|
-
get: function () { return
|
|
1228
|
+
get: function () { return chunkIM2LGCYD_cjs.adminCheckboxRoutes; }
|
|
854
1229
|
});
|
|
855
1230
|
Object.defineProperty(exports, "adminCodeExamplesRoutes", {
|
|
856
1231
|
enumerable: true,
|
|
857
|
-
get: function () { return
|
|
1232
|
+
get: function () { return chunkIM2LGCYD_cjs.admin_code_examples_default; }
|
|
858
1233
|
});
|
|
859
1234
|
Object.defineProperty(exports, "adminCollectionsRoutes", {
|
|
860
1235
|
enumerable: true,
|
|
861
|
-
get: function () { return
|
|
1236
|
+
get: function () { return chunkIM2LGCYD_cjs.adminCollectionsRoutes; }
|
|
862
1237
|
});
|
|
863
1238
|
Object.defineProperty(exports, "adminContentRoutes", {
|
|
864
1239
|
enumerable: true,
|
|
865
|
-
get: function () { return
|
|
1240
|
+
get: function () { return chunkIM2LGCYD_cjs.admin_content_default; }
|
|
866
1241
|
});
|
|
867
1242
|
Object.defineProperty(exports, "adminDashboardRoutes", {
|
|
868
1243
|
enumerable: true,
|
|
869
|
-
get: function () { return
|
|
1244
|
+
get: function () { return chunkIM2LGCYD_cjs.router; }
|
|
870
1245
|
});
|
|
871
1246
|
Object.defineProperty(exports, "adminDesignRoutes", {
|
|
872
1247
|
enumerable: true,
|
|
873
|
-
get: function () { return
|
|
874
|
-
});
|
|
875
|
-
Object.defineProperty(exports, "adminFAQRoutes", {
|
|
876
|
-
enumerable: true,
|
|
877
|
-
get: function () { return chunk4I25AGUR_cjs.admin_faq_default; }
|
|
1248
|
+
get: function () { return chunkIM2LGCYD_cjs.adminDesignRoutes; }
|
|
878
1249
|
});
|
|
879
1250
|
Object.defineProperty(exports, "adminLogsRoutes", {
|
|
880
1251
|
enumerable: true,
|
|
881
|
-
get: function () { return
|
|
1252
|
+
get: function () { return chunkIM2LGCYD_cjs.adminLogsRoutes; }
|
|
882
1253
|
});
|
|
883
1254
|
Object.defineProperty(exports, "adminMediaRoutes", {
|
|
884
1255
|
enumerable: true,
|
|
885
|
-
get: function () { return
|
|
1256
|
+
get: function () { return chunkIM2LGCYD_cjs.adminMediaRoutes; }
|
|
886
1257
|
});
|
|
887
1258
|
Object.defineProperty(exports, "adminPluginRoutes", {
|
|
888
1259
|
enumerable: true,
|
|
889
|
-
get: function () { return
|
|
1260
|
+
get: function () { return chunkIM2LGCYD_cjs.adminPluginRoutes; }
|
|
890
1261
|
});
|
|
891
1262
|
Object.defineProperty(exports, "adminSettingsRoutes", {
|
|
892
1263
|
enumerable: true,
|
|
893
|
-
get: function () { return
|
|
1264
|
+
get: function () { return chunkIM2LGCYD_cjs.adminSettingsRoutes; }
|
|
894
1265
|
});
|
|
895
1266
|
Object.defineProperty(exports, "adminTestimonialsRoutes", {
|
|
896
1267
|
enumerable: true,
|
|
897
|
-
get: function () { return
|
|
1268
|
+
get: function () { return chunkIM2LGCYD_cjs.admin_testimonials_default; }
|
|
898
1269
|
});
|
|
899
1270
|
Object.defineProperty(exports, "adminUsersRoutes", {
|
|
900
1271
|
enumerable: true,
|
|
901
|
-
get: function () { return
|
|
1272
|
+
get: function () { return chunkIM2LGCYD_cjs.userRoutes; }
|
|
902
1273
|
});
|
|
903
1274
|
Object.defineProperty(exports, "apiContentCrudRoutes", {
|
|
904
1275
|
enumerable: true,
|
|
905
|
-
get: function () { return
|
|
1276
|
+
get: function () { return chunkIM2LGCYD_cjs.api_content_crud_default; }
|
|
906
1277
|
});
|
|
907
1278
|
Object.defineProperty(exports, "apiMediaRoutes", {
|
|
908
1279
|
enumerable: true,
|
|
909
|
-
get: function () { return
|
|
1280
|
+
get: function () { return chunkIM2LGCYD_cjs.api_media_default; }
|
|
910
1281
|
});
|
|
911
1282
|
Object.defineProperty(exports, "apiRoutes", {
|
|
912
1283
|
enumerable: true,
|
|
913
|
-
get: function () { return
|
|
1284
|
+
get: function () { return chunkIM2LGCYD_cjs.api_default; }
|
|
914
1285
|
});
|
|
915
1286
|
Object.defineProperty(exports, "apiSystemRoutes", {
|
|
916
1287
|
enumerable: true,
|
|
917
|
-
get: function () { return
|
|
1288
|
+
get: function () { return chunkIM2LGCYD_cjs.api_system_default; }
|
|
918
1289
|
});
|
|
919
1290
|
Object.defineProperty(exports, "authRoutes", {
|
|
920
1291
|
enumerable: true,
|
|
921
|
-
get: function () { return
|
|
1292
|
+
get: function () { return chunkIM2LGCYD_cjs.auth_default; }
|
|
922
1293
|
});
|
|
923
1294
|
Object.defineProperty(exports, "Logger", {
|
|
924
1295
|
enumerable: true,
|
|
@@ -1086,171 +1457,171 @@ Object.defineProperty(exports, "workflowHistory", {
|
|
|
1086
1457
|
});
|
|
1087
1458
|
Object.defineProperty(exports, "AuthManager", {
|
|
1088
1459
|
enumerable: true,
|
|
1089
|
-
get: function () { return
|
|
1460
|
+
get: function () { return chunkX2VADBA4_cjs.AuthManager; }
|
|
1090
1461
|
});
|
|
1091
1462
|
Object.defineProperty(exports, "PermissionManager", {
|
|
1092
1463
|
enumerable: true,
|
|
1093
|
-
get: function () { return
|
|
1464
|
+
get: function () { return chunkX2VADBA4_cjs.PermissionManager; }
|
|
1094
1465
|
});
|
|
1095
1466
|
Object.defineProperty(exports, "bootstrapMiddleware", {
|
|
1096
1467
|
enumerable: true,
|
|
1097
|
-
get: function () { return
|
|
1468
|
+
get: function () { return chunkX2VADBA4_cjs.bootstrapMiddleware; }
|
|
1098
1469
|
});
|
|
1099
1470
|
Object.defineProperty(exports, "cacheHeaders", {
|
|
1100
1471
|
enumerable: true,
|
|
1101
|
-
get: function () { return
|
|
1472
|
+
get: function () { return chunkX2VADBA4_cjs.cacheHeaders; }
|
|
1102
1473
|
});
|
|
1103
1474
|
Object.defineProperty(exports, "compressionMiddleware", {
|
|
1104
1475
|
enumerable: true,
|
|
1105
|
-
get: function () { return
|
|
1476
|
+
get: function () { return chunkX2VADBA4_cjs.compressionMiddleware; }
|
|
1106
1477
|
});
|
|
1107
1478
|
Object.defineProperty(exports, "detailedLoggingMiddleware", {
|
|
1108
1479
|
enumerable: true,
|
|
1109
|
-
get: function () { return
|
|
1480
|
+
get: function () { return chunkX2VADBA4_cjs.detailedLoggingMiddleware; }
|
|
1110
1481
|
});
|
|
1111
1482
|
Object.defineProperty(exports, "getActivePlugins", {
|
|
1112
1483
|
enumerable: true,
|
|
1113
|
-
get: function () { return
|
|
1484
|
+
get: function () { return chunkX2VADBA4_cjs.getActivePlugins; }
|
|
1114
1485
|
});
|
|
1115
1486
|
Object.defineProperty(exports, "isPluginActive", {
|
|
1116
1487
|
enumerable: true,
|
|
1117
|
-
get: function () { return
|
|
1488
|
+
get: function () { return chunkX2VADBA4_cjs.isPluginActive; }
|
|
1118
1489
|
});
|
|
1119
1490
|
Object.defineProperty(exports, "logActivity", {
|
|
1120
1491
|
enumerable: true,
|
|
1121
|
-
get: function () { return
|
|
1492
|
+
get: function () { return chunkX2VADBA4_cjs.logActivity; }
|
|
1122
1493
|
});
|
|
1123
1494
|
Object.defineProperty(exports, "loggingMiddleware", {
|
|
1124
1495
|
enumerable: true,
|
|
1125
|
-
get: function () { return
|
|
1496
|
+
get: function () { return chunkX2VADBA4_cjs.loggingMiddleware; }
|
|
1126
1497
|
});
|
|
1127
1498
|
Object.defineProperty(exports, "optionalAuth", {
|
|
1128
1499
|
enumerable: true,
|
|
1129
|
-
get: function () { return
|
|
1500
|
+
get: function () { return chunkX2VADBA4_cjs.optionalAuth; }
|
|
1130
1501
|
});
|
|
1131
1502
|
Object.defineProperty(exports, "performanceLoggingMiddleware", {
|
|
1132
1503
|
enumerable: true,
|
|
1133
|
-
get: function () { return
|
|
1504
|
+
get: function () { return chunkX2VADBA4_cjs.performanceLoggingMiddleware; }
|
|
1134
1505
|
});
|
|
1135
1506
|
Object.defineProperty(exports, "requireActivePlugin", {
|
|
1136
1507
|
enumerable: true,
|
|
1137
|
-
get: function () { return
|
|
1508
|
+
get: function () { return chunkX2VADBA4_cjs.requireActivePlugin; }
|
|
1138
1509
|
});
|
|
1139
1510
|
Object.defineProperty(exports, "requireActivePlugins", {
|
|
1140
1511
|
enumerable: true,
|
|
1141
|
-
get: function () { return
|
|
1512
|
+
get: function () { return chunkX2VADBA4_cjs.requireActivePlugins; }
|
|
1142
1513
|
});
|
|
1143
1514
|
Object.defineProperty(exports, "requireAnyPermission", {
|
|
1144
1515
|
enumerable: true,
|
|
1145
|
-
get: function () { return
|
|
1516
|
+
get: function () { return chunkX2VADBA4_cjs.requireAnyPermission; }
|
|
1146
1517
|
});
|
|
1147
1518
|
Object.defineProperty(exports, "requireAuth", {
|
|
1148
1519
|
enumerable: true,
|
|
1149
|
-
get: function () { return
|
|
1520
|
+
get: function () { return chunkX2VADBA4_cjs.requireAuth; }
|
|
1150
1521
|
});
|
|
1151
1522
|
Object.defineProperty(exports, "requirePermission", {
|
|
1152
1523
|
enumerable: true,
|
|
1153
|
-
get: function () { return
|
|
1524
|
+
get: function () { return chunkX2VADBA4_cjs.requirePermission; }
|
|
1154
1525
|
});
|
|
1155
1526
|
Object.defineProperty(exports, "requireRole", {
|
|
1156
1527
|
enumerable: true,
|
|
1157
|
-
get: function () { return
|
|
1528
|
+
get: function () { return chunkX2VADBA4_cjs.requireRole; }
|
|
1158
1529
|
});
|
|
1159
1530
|
Object.defineProperty(exports, "securityHeaders", {
|
|
1160
1531
|
enumerable: true,
|
|
1161
|
-
get: function () { return
|
|
1532
|
+
get: function () { return chunkX2VADBA4_cjs.securityHeaders; }
|
|
1162
1533
|
});
|
|
1163
1534
|
Object.defineProperty(exports, "securityLoggingMiddleware", {
|
|
1164
1535
|
enumerable: true,
|
|
1165
|
-
get: function () { return
|
|
1166
|
-
});
|
|
1167
|
-
Object.defineProperty(exports, "MigrationService", {
|
|
1168
|
-
enumerable: true,
|
|
1169
|
-
get: function () { return chunkNBDPIRQS_cjs.MigrationService; }
|
|
1536
|
+
get: function () { return chunkX2VADBA4_cjs.securityLoggingMiddleware; }
|
|
1170
1537
|
});
|
|
1171
1538
|
Object.defineProperty(exports, "PluginBootstrapService", {
|
|
1172
1539
|
enumerable: true,
|
|
1173
|
-
get: function () { return
|
|
1540
|
+
get: function () { return chunkAMSTLQFI_cjs.PluginBootstrapService; }
|
|
1174
1541
|
});
|
|
1175
1542
|
Object.defineProperty(exports, "PluginServiceClass", {
|
|
1176
1543
|
enumerable: true,
|
|
1177
|
-
get: function () { return
|
|
1544
|
+
get: function () { return chunkAMSTLQFI_cjs.PluginService; }
|
|
1178
1545
|
});
|
|
1179
1546
|
Object.defineProperty(exports, "cleanupRemovedCollections", {
|
|
1180
1547
|
enumerable: true,
|
|
1181
|
-
get: function () { return
|
|
1548
|
+
get: function () { return chunkAMSTLQFI_cjs.cleanupRemovedCollections; }
|
|
1182
1549
|
});
|
|
1183
1550
|
Object.defineProperty(exports, "fullCollectionSync", {
|
|
1184
1551
|
enumerable: true,
|
|
1185
|
-
get: function () { return
|
|
1552
|
+
get: function () { return chunkAMSTLQFI_cjs.fullCollectionSync; }
|
|
1186
1553
|
});
|
|
1187
1554
|
Object.defineProperty(exports, "getAvailableCollectionNames", {
|
|
1188
1555
|
enumerable: true,
|
|
1189
|
-
get: function () { return
|
|
1556
|
+
get: function () { return chunkAMSTLQFI_cjs.getAvailableCollectionNames; }
|
|
1190
1557
|
});
|
|
1191
1558
|
Object.defineProperty(exports, "getManagedCollections", {
|
|
1192
1559
|
enumerable: true,
|
|
1193
|
-
get: function () { return
|
|
1560
|
+
get: function () { return chunkAMSTLQFI_cjs.getManagedCollections; }
|
|
1194
1561
|
});
|
|
1195
1562
|
Object.defineProperty(exports, "isCollectionManaged", {
|
|
1196
1563
|
enumerable: true,
|
|
1197
|
-
get: function () { return
|
|
1564
|
+
get: function () { return chunkAMSTLQFI_cjs.isCollectionManaged; }
|
|
1198
1565
|
});
|
|
1199
1566
|
Object.defineProperty(exports, "loadCollectionConfig", {
|
|
1200
1567
|
enumerable: true,
|
|
1201
|
-
get: function () { return
|
|
1568
|
+
get: function () { return chunkAMSTLQFI_cjs.loadCollectionConfig; }
|
|
1202
1569
|
});
|
|
1203
1570
|
Object.defineProperty(exports, "loadCollectionConfigs", {
|
|
1204
1571
|
enumerable: true,
|
|
1205
|
-
get: function () { return
|
|
1572
|
+
get: function () { return chunkAMSTLQFI_cjs.loadCollectionConfigs; }
|
|
1206
1573
|
});
|
|
1207
1574
|
Object.defineProperty(exports, "registerCollections", {
|
|
1208
1575
|
enumerable: true,
|
|
1209
|
-
get: function () { return
|
|
1576
|
+
get: function () { return chunkAMSTLQFI_cjs.registerCollections; }
|
|
1210
1577
|
});
|
|
1211
1578
|
Object.defineProperty(exports, "syncCollection", {
|
|
1212
1579
|
enumerable: true,
|
|
1213
|
-
get: function () { return
|
|
1580
|
+
get: function () { return chunkAMSTLQFI_cjs.syncCollection; }
|
|
1214
1581
|
});
|
|
1215
1582
|
Object.defineProperty(exports, "syncCollections", {
|
|
1216
1583
|
enumerable: true,
|
|
1217
|
-
get: function () { return
|
|
1584
|
+
get: function () { return chunkAMSTLQFI_cjs.syncCollections; }
|
|
1218
1585
|
});
|
|
1219
1586
|
Object.defineProperty(exports, "validateCollectionConfig", {
|
|
1220
1587
|
enumerable: true,
|
|
1221
|
-
get: function () { return
|
|
1588
|
+
get: function () { return chunkAMSTLQFI_cjs.validateCollectionConfig; }
|
|
1589
|
+
});
|
|
1590
|
+
Object.defineProperty(exports, "MigrationService", {
|
|
1591
|
+
enumerable: true,
|
|
1592
|
+
get: function () { return chunkT7IYBGGO_cjs.MigrationService; }
|
|
1222
1593
|
});
|
|
1223
1594
|
Object.defineProperty(exports, "renderFilterBar", {
|
|
1224
1595
|
enumerable: true,
|
|
1225
|
-
get: function () { return
|
|
1596
|
+
get: function () { return chunkZMSYKV62_cjs.renderFilterBar; }
|
|
1226
1597
|
});
|
|
1227
1598
|
Object.defineProperty(exports, "getConfirmationDialogScript", {
|
|
1228
1599
|
enumerable: true,
|
|
1229
|
-
get: function () { return
|
|
1600
|
+
get: function () { return chunkYU6QFFI4_cjs.getConfirmationDialogScript; }
|
|
1230
1601
|
});
|
|
1231
1602
|
Object.defineProperty(exports, "renderAlert", {
|
|
1232
1603
|
enumerable: true,
|
|
1233
|
-
get: function () { return
|
|
1604
|
+
get: function () { return chunkYU6QFFI4_cjs.renderAlert; }
|
|
1234
1605
|
});
|
|
1235
1606
|
Object.defineProperty(exports, "renderConfirmationDialog", {
|
|
1236
1607
|
enumerable: true,
|
|
1237
|
-
get: function () { return
|
|
1608
|
+
get: function () { return chunkYU6QFFI4_cjs.renderConfirmationDialog; }
|
|
1238
1609
|
});
|
|
1239
1610
|
Object.defineProperty(exports, "renderForm", {
|
|
1240
1611
|
enumerable: true,
|
|
1241
|
-
get: function () { return
|
|
1612
|
+
get: function () { return chunkYU6QFFI4_cjs.renderForm; }
|
|
1242
1613
|
});
|
|
1243
1614
|
Object.defineProperty(exports, "renderFormField", {
|
|
1244
1615
|
enumerable: true,
|
|
1245
|
-
get: function () { return
|
|
1616
|
+
get: function () { return chunkYU6QFFI4_cjs.renderFormField; }
|
|
1246
1617
|
});
|
|
1247
1618
|
Object.defineProperty(exports, "renderPagination", {
|
|
1248
1619
|
enumerable: true,
|
|
1249
|
-
get: function () { return
|
|
1620
|
+
get: function () { return chunkYU6QFFI4_cjs.renderPagination; }
|
|
1250
1621
|
});
|
|
1251
1622
|
Object.defineProperty(exports, "renderTable", {
|
|
1252
1623
|
enumerable: true,
|
|
1253
|
-
get: function () { return
|
|
1624
|
+
get: function () { return chunkYU6QFFI4_cjs.renderTable; }
|
|
1254
1625
|
});
|
|
1255
1626
|
Object.defineProperty(exports, "HookSystemImpl", {
|
|
1256
1627
|
enumerable: true,
|
|
@@ -1278,43 +1649,43 @@ Object.defineProperty(exports, "ScopedHookSystemClass", {
|
|
|
1278
1649
|
});
|
|
1279
1650
|
Object.defineProperty(exports, "QueryFilterBuilder", {
|
|
1280
1651
|
enumerable: true,
|
|
1281
|
-
get: function () { return
|
|
1652
|
+
get: function () { return chunkNNXPAPUD_cjs.QueryFilterBuilder; }
|
|
1282
1653
|
});
|
|
1283
1654
|
Object.defineProperty(exports, "SONICJS_VERSION", {
|
|
1284
1655
|
enumerable: true,
|
|
1285
|
-
get: function () { return
|
|
1656
|
+
get: function () { return chunkNNXPAPUD_cjs.SONICJS_VERSION; }
|
|
1286
1657
|
});
|
|
1287
1658
|
Object.defineProperty(exports, "TemplateRenderer", {
|
|
1288
1659
|
enumerable: true,
|
|
1289
|
-
get: function () { return
|
|
1660
|
+
get: function () { return chunkNNXPAPUD_cjs.TemplateRenderer; }
|
|
1290
1661
|
});
|
|
1291
1662
|
Object.defineProperty(exports, "buildQuery", {
|
|
1292
1663
|
enumerable: true,
|
|
1293
|
-
get: function () { return
|
|
1664
|
+
get: function () { return chunkNNXPAPUD_cjs.buildQuery; }
|
|
1294
1665
|
});
|
|
1295
1666
|
Object.defineProperty(exports, "escapeHtml", {
|
|
1296
1667
|
enumerable: true,
|
|
1297
|
-
get: function () { return
|
|
1668
|
+
get: function () { return chunkNNXPAPUD_cjs.escapeHtml; }
|
|
1298
1669
|
});
|
|
1299
1670
|
Object.defineProperty(exports, "getCoreVersion", {
|
|
1300
1671
|
enumerable: true,
|
|
1301
|
-
get: function () { return
|
|
1672
|
+
get: function () { return chunkNNXPAPUD_cjs.getCoreVersion; }
|
|
1302
1673
|
});
|
|
1303
1674
|
Object.defineProperty(exports, "renderTemplate", {
|
|
1304
1675
|
enumerable: true,
|
|
1305
|
-
get: function () { return
|
|
1676
|
+
get: function () { return chunkNNXPAPUD_cjs.renderTemplate; }
|
|
1306
1677
|
});
|
|
1307
1678
|
Object.defineProperty(exports, "sanitizeInput", {
|
|
1308
1679
|
enumerable: true,
|
|
1309
|
-
get: function () { return
|
|
1680
|
+
get: function () { return chunkNNXPAPUD_cjs.sanitizeInput; }
|
|
1310
1681
|
});
|
|
1311
1682
|
Object.defineProperty(exports, "sanitizeObject", {
|
|
1312
1683
|
enumerable: true,
|
|
1313
|
-
get: function () { return
|
|
1684
|
+
get: function () { return chunkNNXPAPUD_cjs.sanitizeObject; }
|
|
1314
1685
|
});
|
|
1315
1686
|
Object.defineProperty(exports, "templateRenderer", {
|
|
1316
1687
|
enumerable: true,
|
|
1317
|
-
get: function () { return
|
|
1688
|
+
get: function () { return chunkNNXPAPUD_cjs.templateRenderer; }
|
|
1318
1689
|
});
|
|
1319
1690
|
Object.defineProperty(exports, "metricsTracker", {
|
|
1320
1691
|
enumerable: true,
|