@sonicjs-cms/core 2.3.16 → 2.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{chunk-EUQDJQHJ.cjs → chunk-2XCJ3HT5.cjs} +3 -3
  2. package/dist/{chunk-EUQDJQHJ.cjs.map → chunk-2XCJ3HT5.cjs.map} +1 -1
  3. package/dist/{chunk-ICDJ7KPP.cjs → chunk-74DP754U.cjs} +90 -90
  4. package/dist/{chunk-ICDJ7KPP.cjs.map → chunk-74DP754U.cjs.map} +1 -1
  5. package/dist/{chunk-33Q6ETMQ.js → chunk-B6YJRVFQ.js} +2 -2
  6. package/dist/{chunk-33Q6ETMQ.js.map → chunk-B6YJRVFQ.js.map} +1 -1
  7. package/dist/{chunk-4CLJPURJ.cjs → chunk-IEWLOVP3.cjs} +2 -2
  8. package/dist/{chunk-4CLJPURJ.cjs.map → chunk-IEWLOVP3.cjs.map} +1 -1
  9. package/dist/{chunk-QUBMTYRI.js → chunk-QBWD6FKH.js} +8 -8
  10. package/dist/{chunk-QUBMTYRI.js.map → chunk-QBWD6FKH.js.map} +1 -1
  11. package/dist/{chunk-LRFDZHLM.js → chunk-TMQOLXLY.js} +3 -3
  12. package/dist/{chunk-LRFDZHLM.js.map → chunk-TMQOLXLY.js.map} +1 -1
  13. package/dist/{chunk-ATNWDVAD.js → chunk-VYL6RIV6.js} +3 -3
  14. package/dist/{chunk-ATNWDVAD.js.map → chunk-VYL6RIV6.js.map} +1 -1
  15. package/dist/{chunk-AE27GPMY.cjs → chunk-YHJB26RJ.cjs} +4 -4
  16. package/dist/{chunk-AE27GPMY.cjs.map → chunk-YHJB26RJ.cjs.map} +1 -1
  17. package/dist/index.cjs +646 -78
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.js +575 -7
  20. package/dist/index.js.map +1 -1
  21. package/dist/middleware.cjs +23 -23
  22. package/dist/middleware.js +2 -2
  23. package/dist/migrations-6HKPNPTK.js +4 -0
  24. package/dist/{migrations-7TWFJVNT.js.map → migrations-6HKPNPTK.js.map} +1 -1
  25. package/dist/migrations-EOV7NJZ7.cjs +13 -0
  26. package/dist/{migrations-QCBN4TLD.cjs.map → migrations-EOV7NJZ7.cjs.map} +1 -1
  27. package/dist/routes.cjs +24 -24
  28. package/dist/routes.js +4 -4
  29. package/dist/services.cjs +2 -2
  30. package/dist/services.js +1 -1
  31. package/dist/utils.cjs +11 -11
  32. package/dist/utils.js +1 -1
  33. package/package.json +1 -1
  34. package/dist/migrations-7TWFJVNT.js +0 -4
  35. package/dist/migrations-QCBN4TLD.cjs +0 -13
package/dist/index.cjs CHANGED
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkICDJ7KPP_cjs = require('./chunk-ICDJ7KPP.cjs');
3
+ var chunk74DP754U_cjs = require('./chunk-74DP754U.cjs');
4
4
  var chunk7FOAMNTI_cjs = require('./chunk-7FOAMNTI.cjs');
5
- var chunkAE27GPMY_cjs = require('./chunk-AE27GPMY.cjs');
5
+ var chunkYHJB26RJ_cjs = require('./chunk-YHJB26RJ.cjs');
6
6
  var chunkILZ3DP4I_cjs = require('./chunk-ILZ3DP4I.cjs');
7
- var chunk4CLJPURJ_cjs = require('./chunk-4CLJPURJ.cjs');
7
+ var chunkIEWLOVP3_cjs = require('./chunk-IEWLOVP3.cjs');
8
8
  var chunkYIXSSJWD_cjs = require('./chunk-YIXSSJWD.cjs');
9
9
  var chunkAZLU3ROK_cjs = require('./chunk-AZLU3ROK.cjs');
10
10
  var chunkDTLB6UIH_cjs = require('./chunk-DTLB6UIH.cjs');
11
- var chunkEUQDJQHJ_cjs = require('./chunk-EUQDJQHJ.cjs');
11
+ var chunk2XCJ3HT5_cjs = require('./chunk-2XCJ3HT5.cjs');
12
12
  require('./chunk-P3XDZL6Q.cjs');
13
13
  var chunkRCQ2HIQD_cjs = require('./chunk-RCQ2HIQD.cjs');
14
14
  var chunkKYGRJCZM_cjs = require('./chunk-KYGRJCZM.cjs');
@@ -558,7 +558,7 @@ function formatCellValue(value) {
558
558
  // src/plugins/core-plugins/database-tools-plugin/admin-routes.ts
559
559
  function createDatabaseToolsAdminRoutes() {
560
560
  const router2 = new hono.Hono();
561
- router2.use("*", chunkAE27GPMY_cjs.requireAuth());
561
+ router2.use("*", chunkYHJB26RJ_cjs.requireAuth());
562
562
  router2.get("/api/stats", async (c) => {
563
563
  try {
564
564
  const user = c.get("user");
@@ -738,8 +738,575 @@ function createDatabaseToolsAdminRoutes() {
738
738
  });
739
739
  return router2;
740
740
  }
741
+
742
+ // src/plugins/core-plugins/seed-data-plugin/services/seed-data-service.ts
743
+ var SeedDataService = class {
744
+ constructor(db) {
745
+ this.db = db;
746
+ }
747
+ // First names for generating realistic users
748
+ firstNames = [
749
+ "Emma",
750
+ "Liam",
751
+ "Olivia",
752
+ "Noah",
753
+ "Ava",
754
+ "Ethan",
755
+ "Sophia",
756
+ "Mason",
757
+ "Isabella",
758
+ "William",
759
+ "Mia",
760
+ "James",
761
+ "Charlotte",
762
+ "Benjamin",
763
+ "Amelia",
764
+ "Lucas",
765
+ "Harper",
766
+ "Henry",
767
+ "Evelyn",
768
+ "Alexander"
769
+ ];
770
+ // Last names for generating realistic users
771
+ lastNames = [
772
+ "Smith",
773
+ "Johnson",
774
+ "Williams",
775
+ "Brown",
776
+ "Jones",
777
+ "Garcia",
778
+ "Miller",
779
+ "Davis",
780
+ "Rodriguez",
781
+ "Martinez",
782
+ "Hernandez",
783
+ "Lopez",
784
+ "Gonzalez",
785
+ "Wilson",
786
+ "Anderson",
787
+ "Thomas",
788
+ "Taylor",
789
+ "Moore",
790
+ "Jackson",
791
+ "Martin"
792
+ ];
793
+ // Content titles for blog posts
794
+ blogTitles = [
795
+ "Getting Started with Modern Web Development",
796
+ "The Future of JavaScript Frameworks",
797
+ "Building Scalable Applications with Microservices",
798
+ "Understanding TypeScript: A Complete Guide",
799
+ "Best Practices for API Design",
800
+ "Introduction to Cloud Computing",
801
+ "Mastering Git and Version Control",
802
+ "The Art of Code Review",
803
+ "Performance Optimization Techniques",
804
+ "Security Best Practices for Web Apps",
805
+ "Exploring Serverless Architecture",
806
+ "Database Design Fundamentals",
807
+ "Testing Strategies for Modern Apps",
808
+ "CI/CD Pipeline Implementation",
809
+ "Mobile-First Development Approach"
810
+ ];
811
+ // Content titles for pages
812
+ pageTitles = [
813
+ "About Us",
814
+ "Contact",
815
+ "Privacy Policy",
816
+ "Terms of Service",
817
+ "FAQ",
818
+ "Our Team",
819
+ "Careers",
820
+ "Press Kit",
821
+ "Support",
822
+ "Documentation",
823
+ "Pricing",
824
+ "Features"
825
+ ];
826
+ // Content titles for products
827
+ productTitles = [
828
+ "Premium Wireless Headphones",
829
+ "Smart Watch Pro",
830
+ "Laptop Stand Adjustable",
831
+ "Mechanical Keyboard RGB",
832
+ "HD Webcam 4K",
833
+ "USB-C Hub 7-in-1",
834
+ "Portable SSD 1TB",
835
+ "Wireless Mouse Ergonomic",
836
+ 'Monitor 27" 4K',
837
+ "Desk Lamp LED",
838
+ "Phone Case Premium",
839
+ "Tablet Stand Aluminum",
840
+ "Cable Management Kit",
841
+ "Power Bank 20000mAh",
842
+ "Bluetooth Speaker Portable"
843
+ ];
844
+ // Content for generating blog posts
845
+ blogContent = [
846
+ "This comprehensive guide covers everything you need to know about modern development practices and tools.",
847
+ "Learn the fundamentals and advanced concepts that will help you build better applications.",
848
+ "Discover the latest trends and best practices used by industry professionals.",
849
+ "A deep dive into the technologies and methodologies shaping the future of software development.",
850
+ "Practical tips and real-world examples to improve your development workflow.",
851
+ "Explore cutting-edge techniques and proven strategies for building robust applications.",
852
+ "Master the essential skills needed to excel in modern software development.",
853
+ "An in-depth look at the tools and frameworks that power today's web applications.",
854
+ "Step-by-step instructions and expert insights for developers of all levels.",
855
+ "Understanding the core principles that drive successful software projects."
856
+ ];
857
+ // Generate a random ID
858
+ generateId() {
859
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
860
+ }
861
+ // Generate a slug from a title
862
+ generateSlug(title) {
863
+ return title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "");
864
+ }
865
+ // Generate random date within the last year
866
+ randomDate() {
867
+ const now = /* @__PURE__ */ new Date();
868
+ const yearAgo = new Date(now.getFullYear() - 1, now.getMonth(), now.getDate());
869
+ const randomTime = yearAgo.getTime() + Math.random() * (now.getTime() - yearAgo.getTime());
870
+ return new Date(randomTime);
871
+ }
872
+ // Create 20 example users
873
+ async createUsers() {
874
+ const roles = ["admin", "editor", "author", "viewer"];
875
+ const hashedPassword = "password123";
876
+ let count = 0;
877
+ for (let i = 0; i < 20; i++) {
878
+ const firstName = this.firstNames[Math.floor(Math.random() * this.firstNames.length)] || "John";
879
+ const lastName = this.lastNames[Math.floor(Math.random() * this.lastNames.length)] || "Doe";
880
+ const username = `${firstName.toLowerCase()}${lastName.toLowerCase()}${i}`;
881
+ const email = `${username}@example.com`;
882
+ const createdAt = this.randomDate();
883
+ const createdAtTimestamp = Math.floor(createdAt.getTime() / 1e3);
884
+ const stmt = this.db.prepare(`
885
+ INSERT INTO users (id, email, username, first_name, last_name, password_hash, role, is_active, last_login_at, created_at, updated_at)
886
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
887
+ `);
888
+ await stmt.bind(
889
+ this.generateId(),
890
+ email,
891
+ username,
892
+ firstName,
893
+ lastName,
894
+ hashedPassword,
895
+ roles[Math.floor(Math.random() * roles.length)],
896
+ Math.random() > 0.1 ? 1 : 0,
897
+ // 90% active
898
+ Math.random() > 0.3 ? createdAtTimestamp : null,
899
+ createdAtTimestamp,
900
+ createdAtTimestamp
901
+ ).run();
902
+ count++;
903
+ }
904
+ return count;
905
+ }
906
+ // Create 200 content items across different types
907
+ async createContent() {
908
+ const usersStmt = this.db.prepare("SELECT * FROM users");
909
+ const { results: allUsers } = await usersStmt.all();
910
+ const collectionsStmt = this.db.prepare("SELECT * FROM collections");
911
+ const { results: allCollections } = await collectionsStmt.all();
912
+ if (!allUsers || allUsers.length === 0) {
913
+ throw new Error("No users found. Please create users first.");
914
+ }
915
+ if (!allCollections || allCollections.length === 0) {
916
+ throw new Error("No collections found. Please create collections first.");
917
+ }
918
+ const statuses = ["draft", "published", "archived"];
919
+ let count = 0;
920
+ for (let i = 0; i < 200; i++) {
921
+ const collection = allCollections[Math.floor(Math.random() * allCollections.length)];
922
+ const author = allUsers[Math.floor(Math.random() * allUsers.length)];
923
+ const status = statuses[Math.floor(Math.random() * statuses.length)];
924
+ let title;
925
+ let contentData;
926
+ if (collection.name === "blog_posts" || collection.name.includes("blog")) {
927
+ title = this.blogTitles[Math.floor(Math.random() * this.blogTitles.length)] || "Untitled Blog Post";
928
+ contentData = {
929
+ body: this.blogContent[Math.floor(Math.random() * this.blogContent.length)] || "Blog content here",
930
+ excerpt: "A brief introduction to this article that provides an overview of the main topics covered.",
931
+ tags: this.generateTags(),
932
+ featured: Math.random() > 0.7
933
+ };
934
+ } else if (collection.name === "pages" || collection.name.includes("page")) {
935
+ title = this.pageTitles[Math.floor(Math.random() * this.pageTitles.length)] || "Untitled Page";
936
+ contentData = {
937
+ body: "This is a standard page with important information about our services and policies.",
938
+ template: "default",
939
+ showInMenu: Math.random() > 0.5
940
+ };
941
+ } else if (collection.name === "products" || collection.name.includes("product")) {
942
+ title = this.productTitles[Math.floor(Math.random() * this.productTitles.length)] || "Untitled Product";
943
+ contentData = {
944
+ description: "High-quality product with excellent features and great value for money.",
945
+ price: (Math.random() * 500 + 10).toFixed(2),
946
+ sku: `SKU-${Math.random().toString(36).substr(2, 9).toUpperCase()}`,
947
+ inStock: Math.random() > 0.2,
948
+ rating: (Math.random() * 2 + 3).toFixed(1)
949
+ // 3.0 - 5.0
950
+ };
951
+ } else {
952
+ title = `${collection.display_name || collection.name} Item ${i + 1}`;
953
+ contentData = {
954
+ description: "This is a sample content item with generic data.",
955
+ value: Math.floor(Math.random() * 1e3)
956
+ };
957
+ }
958
+ const slug = `${this.generateSlug(title)}-${i}`;
959
+ const createdAt = this.randomDate();
960
+ const createdAtTimestamp = Math.floor(createdAt.getTime() / 1e3);
961
+ const publishedAtTimestamp = status === "published" ? createdAtTimestamp : null;
962
+ const stmt = this.db.prepare(`
963
+ INSERT INTO content (id, collection_id, slug, title, data, status, published_at, author_id, created_at, updated_at)
964
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
965
+ `);
966
+ await stmt.bind(
967
+ this.generateId(),
968
+ collection.id,
969
+ slug,
970
+ `${title} ${i}`,
971
+ JSON.stringify(contentData),
972
+ status,
973
+ publishedAtTimestamp,
974
+ author.id,
975
+ createdAtTimestamp,
976
+ createdAtTimestamp
977
+ ).run();
978
+ count++;
979
+ }
980
+ return count;
981
+ }
982
+ // Generate random tags for blog posts
983
+ generateTags() {
984
+ const allTags = [
985
+ "tutorial",
986
+ "guide",
987
+ "javascript",
988
+ "typescript",
989
+ "web-dev",
990
+ "backend",
991
+ "frontend",
992
+ "best-practices",
993
+ "security",
994
+ "performance",
995
+ "testing",
996
+ "deployment",
997
+ "cloud",
998
+ "database",
999
+ "api"
1000
+ ];
1001
+ const numTags = Math.floor(Math.random() * 4) + 1;
1002
+ const shuffled = allTags.sort(() => 0.5 - Math.random());
1003
+ return shuffled.slice(0, numTags);
1004
+ }
1005
+ // Seed all data
1006
+ async seedAll() {
1007
+ const userCount = await this.createUsers();
1008
+ const contentCount = await this.createContent();
1009
+ return {
1010
+ users: userCount,
1011
+ content: contentCount
1012
+ };
1013
+ }
1014
+ // Clear all seed data (optional cleanup method)
1015
+ async clearSeedData() {
1016
+ const deleteContentStmt = this.db.prepare("DELETE FROM content");
1017
+ await deleteContentStmt.run();
1018
+ const deleteUsersStmt = this.db.prepare(
1019
+ "DELETE FROM users WHERE role != 'admin'"
1020
+ );
1021
+ await deleteUsersStmt.run();
1022
+ }
1023
+ };
1024
+
1025
+ // src/plugins/core-plugins/seed-data-plugin/admin-routes.ts
1026
+ function createSeedDataAdminRoutes() {
1027
+ const routes = new hono.Hono();
1028
+ routes.get("/", async (c) => {
1029
+ const html3 = `
1030
+ <!DOCTYPE html>
1031
+ <html>
1032
+ <head>
1033
+ <title>Seed Data - SonicJS Admin</title>
1034
+ <meta charset="utf-8">
1035
+ <meta name="viewport" content="width=device-width, initial-scale=1">
1036
+ <style>
1037
+ * { margin: 0; padding: 0; box-sizing: border-box; }
1038
+ body {
1039
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
1040
+ background: #f5f5f5;
1041
+ padding: 2rem;
1042
+ }
1043
+ .container {
1044
+ max-width: 800px;
1045
+ margin: 0 auto;
1046
+ background: white;
1047
+ border-radius: 8px;
1048
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
1049
+ padding: 2rem;
1050
+ }
1051
+ h1 {
1052
+ color: #333;
1053
+ margin-bottom: 1rem;
1054
+ font-size: 2rem;
1055
+ }
1056
+ .description {
1057
+ color: #666;
1058
+ margin-bottom: 2rem;
1059
+ line-height: 1.6;
1060
+ }
1061
+ .card {
1062
+ background: #f9f9f9;
1063
+ border-radius: 6px;
1064
+ padding: 1.5rem;
1065
+ margin-bottom: 1.5rem;
1066
+ }
1067
+ .card h2 {
1068
+ color: #333;
1069
+ font-size: 1.25rem;
1070
+ margin-bottom: 0.75rem;
1071
+ }
1072
+ .card p {
1073
+ color: #666;
1074
+ line-height: 1.6;
1075
+ margin-bottom: 1rem;
1076
+ }
1077
+ .card ul {
1078
+ color: #666;
1079
+ margin-left: 1.5rem;
1080
+ margin-bottom: 1rem;
1081
+ }
1082
+ .card li {
1083
+ margin-bottom: 0.5rem;
1084
+ }
1085
+ button {
1086
+ background: #3b82f6;
1087
+ color: white;
1088
+ border: none;
1089
+ padding: 0.75rem 1.5rem;
1090
+ border-radius: 6px;
1091
+ font-size: 1rem;
1092
+ cursor: pointer;
1093
+ transition: background 0.2s;
1094
+ }
1095
+ button:hover {
1096
+ background: #2563eb;
1097
+ }
1098
+ button:disabled {
1099
+ background: #94a3b8;
1100
+ cursor: not-allowed;
1101
+ }
1102
+ .danger {
1103
+ background: #ef4444;
1104
+ }
1105
+ .danger:hover {
1106
+ background: #dc2626;
1107
+ }
1108
+ .warning {
1109
+ background: #f59e0b;
1110
+ color: #fff;
1111
+ padding: 1rem;
1112
+ border-radius: 6px;
1113
+ margin-bottom: 1.5rem;
1114
+ }
1115
+ .success {
1116
+ background: #10b981;
1117
+ color: #fff;
1118
+ padding: 1rem;
1119
+ border-radius: 6px;
1120
+ margin-bottom: 1.5rem;
1121
+ display: none;
1122
+ }
1123
+ .error {
1124
+ background: #ef4444;
1125
+ color: #fff;
1126
+ padding: 1rem;
1127
+ border-radius: 6px;
1128
+ margin-bottom: 1.5rem;
1129
+ display: none;
1130
+ }
1131
+ .loading {
1132
+ display: none;
1133
+ margin-left: 1rem;
1134
+ }
1135
+ .back-link {
1136
+ display: inline-block;
1137
+ margin-bottom: 1rem;
1138
+ color: #3b82f6;
1139
+ text-decoration: none;
1140
+ font-size: 0.9rem;
1141
+ }
1142
+ .back-link:hover {
1143
+ text-decoration: underline;
1144
+ }
1145
+ </style>
1146
+ </head>
1147
+ <body>
1148
+ <div class="container">
1149
+ <a href="/admin/plugins/seed-data" class="back-link">\u2190 Back to Plugin Settings</a>
1150
+ <h1>\u{1F331} Seed Data Generator</h1>
1151
+ <p class="description">
1152
+ Generate realistic example data for testing and development. This will create 20 users and 200 content items with realistic data.
1153
+ </p>
1154
+
1155
+ <div class="warning">
1156
+ <strong>\u26A0\uFE0F Warning:</strong> This will create new data in your database. Make sure you're not running this in production!
1157
+ </div>
1158
+
1159
+ <div class="success" id="successMessage"></div>
1160
+ <div class="error" id="errorMessage"></div>
1161
+
1162
+ <div class="card">
1163
+ <h2>What will be created?</h2>
1164
+ <ul>
1165
+ <li><strong>20 Users:</strong> With realistic names, emails, and various roles (admin, editor, author, viewer)</li>
1166
+ <li><strong>200 Content Items:</strong> Including blog posts, pages, and products with realistic titles and data</li>
1167
+ <li><strong>All passwords:</strong> Set to "password123" for testing</li>
1168
+ <li><strong>Random dates:</strong> Created within the last year</li>
1169
+ <li><strong>Various statuses:</strong> Draft, published, and archived content</li>
1170
+ </ul>
1171
+ </div>
1172
+
1173
+ <div class="card">
1174
+ <h2>Generate Seed Data</h2>
1175
+ <p>Click the button below to generate example data. This may take a few moments.</p>
1176
+ <button id="seedButton" onclick="generateSeedData()">
1177
+ Generate Data
1178
+ <span class="loading" id="loading">...</span>
1179
+ </button>
1180
+ </div>
1181
+
1182
+ <div class="card">
1183
+ <h2>Clear Seed Data</h2>
1184
+ <p>Remove all users and content from the database (except admin users).</p>
1185
+ <button class="danger" id="clearButton" onclick="clearSeedData()">
1186
+ Clear All Data
1187
+ <span class="loading" id="clearLoading">...</span>
1188
+ </button>
1189
+ </div>
1190
+ </div>
1191
+
1192
+ <script>
1193
+ async function generateSeedData() {
1194
+ const button = document.getElementById('seedButton');
1195
+ const loading = document.getElementById('loading');
1196
+ const success = document.getElementById('successMessage');
1197
+ const error = document.getElementById('errorMessage');
1198
+
1199
+ button.disabled = true;
1200
+ loading.style.display = 'inline';
1201
+ success.style.display = 'none';
1202
+ error.style.display = 'none';
1203
+
1204
+ try {
1205
+ const response = await fetch('/admin/seed-data/generate', {
1206
+ method: 'POST',
1207
+ headers: {
1208
+ 'Content-Type': 'application/json'
1209
+ }
1210
+ });
1211
+
1212
+ const data = await response.json();
1213
+
1214
+ if (response.ok) {
1215
+ success.textContent = \`\u2705 Successfully created \${data.users} users and \${data.content} content items!\`;
1216
+ success.style.display = 'block';
1217
+ } else {
1218
+ throw new Error(data.error || 'Failed to generate seed data');
1219
+ }
1220
+ } catch (err) {
1221
+ error.textContent = \`\u274C Error: \${err.message}\`;
1222
+ error.style.display = 'block';
1223
+ } finally {
1224
+ button.disabled = false;
1225
+ loading.style.display = 'none';
1226
+ }
1227
+ }
1228
+
1229
+ async function clearSeedData() {
1230
+ if (!confirm('Are you sure you want to clear all data? This cannot be undone!')) {
1231
+ return;
1232
+ }
1233
+
1234
+ const button = document.getElementById('clearButton');
1235
+ const loading = document.getElementById('clearLoading');
1236
+ const success = document.getElementById('successMessage');
1237
+ const error = document.getElementById('errorMessage');
1238
+
1239
+ button.disabled = true;
1240
+ loading.style.display = 'inline';
1241
+ success.style.display = 'none';
1242
+ error.style.display = 'none';
1243
+
1244
+ try {
1245
+ const response = await fetch('/admin/seed-data/clear', {
1246
+ method: 'POST',
1247
+ headers: {
1248
+ 'Content-Type': 'application/json'
1249
+ }
1250
+ });
1251
+
1252
+ const data = await response.json();
1253
+
1254
+ if (response.ok) {
1255
+ success.textContent = '\u2705 Successfully cleared all seed data!';
1256
+ success.style.display = 'block';
1257
+ } else {
1258
+ throw new Error(data.error || 'Failed to clear seed data');
1259
+ }
1260
+ } catch (err) {
1261
+ error.textContent = \`\u274C Error: \${err.message}\`;
1262
+ error.style.display = 'block';
1263
+ } finally {
1264
+ button.disabled = false;
1265
+ loading.style.display = 'none';
1266
+ }
1267
+ }
1268
+ </script>
1269
+ </body>
1270
+ </html>
1271
+ `;
1272
+ return c.html(html3);
1273
+ });
1274
+ routes.post("/generate", async (c) => {
1275
+ try {
1276
+ const db = c.env.DB;
1277
+ const seedService = new SeedDataService(db);
1278
+ const result = await seedService.seedAll();
1279
+ return c.json({
1280
+ success: true,
1281
+ users: result.users,
1282
+ content: result.content
1283
+ });
1284
+ } catch (error) {
1285
+ return c.json({
1286
+ success: false,
1287
+ error: error.message
1288
+ }, 500);
1289
+ }
1290
+ });
1291
+ routes.post("/clear", async (c) => {
1292
+ try {
1293
+ const db = c.env.DB;
1294
+ const seedService = new SeedDataService(db);
1295
+ await seedService.clearSeedData();
1296
+ return c.json({
1297
+ success: true
1298
+ });
1299
+ } catch (error) {
1300
+ return c.json({
1301
+ success: false,
1302
+ error: error.message
1303
+ }, 500);
1304
+ }
1305
+ });
1306
+ return routes;
1307
+ }
741
1308
  function createEmailPlugin() {
742
- const builder = chunkICDJ7KPP_cjs.PluginBuilder.create({
1309
+ const builder = chunk74DP754U_cjs.PluginBuilder.create({
743
1310
  name: "email",
744
1311
  version: "1.0.0-beta.1",
745
1312
  description: "Send transactional emails using Resend"
@@ -1416,7 +1983,7 @@ var DEFAULT_SETTINGS = {
1416
1983
  appName: "SonicJS"
1417
1984
  };
1418
1985
  function createOTPLoginPlugin() {
1419
- const builder = chunkICDJ7KPP_cjs.PluginBuilder.create({
1986
+ const builder = chunk74DP754U_cjs.PluginBuilder.create({
1420
1987
  name: "otp-login",
1421
1988
  version: "1.0.0-beta.1",
1422
1989
  description: "Passwordless authentication via email one-time codes"
@@ -1580,7 +2147,7 @@ function createOTPLoginPlugin() {
1580
2147
  error: "Account is deactivated"
1581
2148
  }, 403);
1582
2149
  }
1583
- const token = await chunkAE27GPMY_cjs.AuthManager.generateToken(user.id, user.email, user.role);
2150
+ const token = await chunkYHJB26RJ_cjs.AuthManager.generateToken(user.id, user.email, user.role);
1584
2151
  cookie.setCookie(c, "auth_token", token, {
1585
2152
  httpOnly: true,
1586
2153
  secure: true,
@@ -1983,12 +2550,12 @@ function createMagicLinkAuthPlugin() {
1983
2550
  SET used = 1, used_at = ?
1984
2551
  WHERE id = ?
1985
2552
  `).bind(Date.now(), magicLink.id).run();
1986
- const jwtToken = await chunkAE27GPMY_cjs.AuthManager.generateToken(
2553
+ const jwtToken = await chunkYHJB26RJ_cjs.AuthManager.generateToken(
1987
2554
  user.id,
1988
2555
  user.email,
1989
2556
  user.role
1990
2557
  );
1991
- chunkAE27GPMY_cjs.AuthManager.setAuthCookie(c, jwtToken);
2558
+ chunkYHJB26RJ_cjs.AuthManager.setAuthCookie(c, jwtToken);
1992
2559
  await db.prepare(`
1993
2560
  UPDATE users SET last_login_at = ? WHERE id = ?
1994
2561
  `).bind(Date.now(), user.id).run();
@@ -2136,14 +2703,14 @@ createMagicLinkAuthPlugin();
2136
2703
  // src/app.ts
2137
2704
  function createSonicJSApp(config = {}) {
2138
2705
  const app = new hono.Hono();
2139
- const appVersion = config.version || chunkEUQDJQHJ_cjs.getCoreVersion();
2706
+ const appVersion = config.version || chunk2XCJ3HT5_cjs.getCoreVersion();
2140
2707
  const appName = config.name || "SonicJS AI";
2141
2708
  app.use("*", async (c, next) => {
2142
2709
  c.set("appVersion", appVersion);
2143
2710
  await next();
2144
2711
  });
2145
- app.use("*", chunkAE27GPMY_cjs.metricsMiddleware());
2146
- app.use("*", chunkAE27GPMY_cjs.bootstrapMiddleware(config));
2712
+ app.use("*", chunkYHJB26RJ_cjs.metricsMiddleware());
2713
+ app.use("*", chunkYHJB26RJ_cjs.bootstrapMiddleware(config));
2147
2714
  if (config.middleware?.beforeAuth) {
2148
2715
  for (const middleware of config.middleware.beforeAuth) {
2149
2716
  app.use("*", middleware);
@@ -2160,21 +2727,22 @@ function createSonicJSApp(config = {}) {
2160
2727
  app.use("*", middleware);
2161
2728
  }
2162
2729
  }
2163
- app.route("/api", chunkICDJ7KPP_cjs.api_default);
2164
- app.route("/api/media", chunkICDJ7KPP_cjs.api_media_default);
2165
- app.route("/api/system", chunkICDJ7KPP_cjs.api_system_default);
2166
- app.route("/admin/api", chunkICDJ7KPP_cjs.admin_api_default);
2167
- app.route("/admin/dashboard", chunkICDJ7KPP_cjs.router);
2168
- app.route("/admin/collections", chunkICDJ7KPP_cjs.adminCollectionsRoutes);
2169
- app.route("/admin/settings", chunkICDJ7KPP_cjs.adminSettingsRoutes);
2730
+ app.route("/api", chunk74DP754U_cjs.api_default);
2731
+ app.route("/api/media", chunk74DP754U_cjs.api_media_default);
2732
+ app.route("/api/system", chunk74DP754U_cjs.api_system_default);
2733
+ app.route("/admin/api", chunk74DP754U_cjs.admin_api_default);
2734
+ app.route("/admin/dashboard", chunk74DP754U_cjs.router);
2735
+ app.route("/admin/collections", chunk74DP754U_cjs.adminCollectionsRoutes);
2736
+ app.route("/admin/settings", chunk74DP754U_cjs.adminSettingsRoutes);
2170
2737
  app.route("/admin/database-tools", createDatabaseToolsAdminRoutes());
2171
- app.route("/admin/content", chunkICDJ7KPP_cjs.admin_content_default);
2172
- app.route("/admin/media", chunkICDJ7KPP_cjs.adminMediaRoutes);
2173
- app.route("/admin/plugins", chunkICDJ7KPP_cjs.adminPluginRoutes);
2174
- app.route("/admin/logs", chunkICDJ7KPP_cjs.adminLogsRoutes);
2175
- app.route("/admin", chunkICDJ7KPP_cjs.userRoutes);
2176
- app.route("/auth", chunkICDJ7KPP_cjs.auth_default);
2177
- app.route("/", chunkICDJ7KPP_cjs.test_cleanup_default);
2738
+ app.route("/admin/seed-data", createSeedDataAdminRoutes());
2739
+ app.route("/admin/content", chunk74DP754U_cjs.admin_content_default);
2740
+ app.route("/admin/media", chunk74DP754U_cjs.adminMediaRoutes);
2741
+ app.route("/admin/plugins", chunk74DP754U_cjs.adminPluginRoutes);
2742
+ app.route("/admin/logs", chunk74DP754U_cjs.adminLogsRoutes);
2743
+ app.route("/admin", chunk74DP754U_cjs.userRoutes);
2744
+ app.route("/auth", chunk74DP754U_cjs.auth_default);
2745
+ app.route("/", chunk74DP754U_cjs.test_cleanup_default);
2178
2746
  if (emailPlugin.routes && emailPlugin.routes.length > 0) {
2179
2747
  for (const route of emailPlugin.routes) {
2180
2748
  app.route(route.path, route.handler);
@@ -2254,83 +2822,83 @@ function createDb(d1$1) {
2254
2822
  }
2255
2823
 
2256
2824
  // src/index.ts
2257
- var VERSION = chunkEUQDJQHJ_cjs.package_default.version;
2825
+ var VERSION = chunk2XCJ3HT5_cjs.package_default.version;
2258
2826
 
2259
2827
  Object.defineProperty(exports, "ROUTES_INFO", {
2260
2828
  enumerable: true,
2261
- get: function () { return chunkICDJ7KPP_cjs.ROUTES_INFO; }
2829
+ get: function () { return chunk74DP754U_cjs.ROUTES_INFO; }
2262
2830
  });
2263
2831
  Object.defineProperty(exports, "adminApiRoutes", {
2264
2832
  enumerable: true,
2265
- get: function () { return chunkICDJ7KPP_cjs.admin_api_default; }
2833
+ get: function () { return chunk74DP754U_cjs.admin_api_default; }
2266
2834
  });
2267
2835
  Object.defineProperty(exports, "adminCheckboxRoutes", {
2268
2836
  enumerable: true,
2269
- get: function () { return chunkICDJ7KPP_cjs.adminCheckboxRoutes; }
2837
+ get: function () { return chunk74DP754U_cjs.adminCheckboxRoutes; }
2270
2838
  });
2271
2839
  Object.defineProperty(exports, "adminCodeExamplesRoutes", {
2272
2840
  enumerable: true,
2273
- get: function () { return chunkICDJ7KPP_cjs.admin_code_examples_default; }
2841
+ get: function () { return chunk74DP754U_cjs.admin_code_examples_default; }
2274
2842
  });
2275
2843
  Object.defineProperty(exports, "adminCollectionsRoutes", {
2276
2844
  enumerable: true,
2277
- get: function () { return chunkICDJ7KPP_cjs.adminCollectionsRoutes; }
2845
+ get: function () { return chunk74DP754U_cjs.adminCollectionsRoutes; }
2278
2846
  });
2279
2847
  Object.defineProperty(exports, "adminContentRoutes", {
2280
2848
  enumerable: true,
2281
- get: function () { return chunkICDJ7KPP_cjs.admin_content_default; }
2849
+ get: function () { return chunk74DP754U_cjs.admin_content_default; }
2282
2850
  });
2283
2851
  Object.defineProperty(exports, "adminDashboardRoutes", {
2284
2852
  enumerable: true,
2285
- get: function () { return chunkICDJ7KPP_cjs.router; }
2853
+ get: function () { return chunk74DP754U_cjs.router; }
2286
2854
  });
2287
2855
  Object.defineProperty(exports, "adminDesignRoutes", {
2288
2856
  enumerable: true,
2289
- get: function () { return chunkICDJ7KPP_cjs.adminDesignRoutes; }
2857
+ get: function () { return chunk74DP754U_cjs.adminDesignRoutes; }
2290
2858
  });
2291
2859
  Object.defineProperty(exports, "adminLogsRoutes", {
2292
2860
  enumerable: true,
2293
- get: function () { return chunkICDJ7KPP_cjs.adminLogsRoutes; }
2861
+ get: function () { return chunk74DP754U_cjs.adminLogsRoutes; }
2294
2862
  });
2295
2863
  Object.defineProperty(exports, "adminMediaRoutes", {
2296
2864
  enumerable: true,
2297
- get: function () { return chunkICDJ7KPP_cjs.adminMediaRoutes; }
2865
+ get: function () { return chunk74DP754U_cjs.adminMediaRoutes; }
2298
2866
  });
2299
2867
  Object.defineProperty(exports, "adminPluginRoutes", {
2300
2868
  enumerable: true,
2301
- get: function () { return chunkICDJ7KPP_cjs.adminPluginRoutes; }
2869
+ get: function () { return chunk74DP754U_cjs.adminPluginRoutes; }
2302
2870
  });
2303
2871
  Object.defineProperty(exports, "adminSettingsRoutes", {
2304
2872
  enumerable: true,
2305
- get: function () { return chunkICDJ7KPP_cjs.adminSettingsRoutes; }
2873
+ get: function () { return chunk74DP754U_cjs.adminSettingsRoutes; }
2306
2874
  });
2307
2875
  Object.defineProperty(exports, "adminTestimonialsRoutes", {
2308
2876
  enumerable: true,
2309
- get: function () { return chunkICDJ7KPP_cjs.admin_testimonials_default; }
2877
+ get: function () { return chunk74DP754U_cjs.admin_testimonials_default; }
2310
2878
  });
2311
2879
  Object.defineProperty(exports, "adminUsersRoutes", {
2312
2880
  enumerable: true,
2313
- get: function () { return chunkICDJ7KPP_cjs.userRoutes; }
2881
+ get: function () { return chunk74DP754U_cjs.userRoutes; }
2314
2882
  });
2315
2883
  Object.defineProperty(exports, "apiContentCrudRoutes", {
2316
2884
  enumerable: true,
2317
- get: function () { return chunkICDJ7KPP_cjs.api_content_crud_default; }
2885
+ get: function () { return chunk74DP754U_cjs.api_content_crud_default; }
2318
2886
  });
2319
2887
  Object.defineProperty(exports, "apiMediaRoutes", {
2320
2888
  enumerable: true,
2321
- get: function () { return chunkICDJ7KPP_cjs.api_media_default; }
2889
+ get: function () { return chunk74DP754U_cjs.api_media_default; }
2322
2890
  });
2323
2891
  Object.defineProperty(exports, "apiRoutes", {
2324
2892
  enumerable: true,
2325
- get: function () { return chunkICDJ7KPP_cjs.api_default; }
2893
+ get: function () { return chunk74DP754U_cjs.api_default; }
2326
2894
  });
2327
2895
  Object.defineProperty(exports, "apiSystemRoutes", {
2328
2896
  enumerable: true,
2329
- get: function () { return chunkICDJ7KPP_cjs.api_system_default; }
2897
+ get: function () { return chunk74DP754U_cjs.api_system_default; }
2330
2898
  });
2331
2899
  Object.defineProperty(exports, "authRoutes", {
2332
2900
  enumerable: true,
2333
- get: function () { return chunkICDJ7KPP_cjs.auth_default; }
2901
+ get: function () { return chunk74DP754U_cjs.auth_default; }
2334
2902
  });
2335
2903
  Object.defineProperty(exports, "Logger", {
2336
2904
  enumerable: true,
@@ -2498,83 +3066,83 @@ Object.defineProperty(exports, "workflowHistory", {
2498
3066
  });
2499
3067
  Object.defineProperty(exports, "AuthManager", {
2500
3068
  enumerable: true,
2501
- get: function () { return chunkAE27GPMY_cjs.AuthManager; }
3069
+ get: function () { return chunkYHJB26RJ_cjs.AuthManager; }
2502
3070
  });
2503
3071
  Object.defineProperty(exports, "PermissionManager", {
2504
3072
  enumerable: true,
2505
- get: function () { return chunkAE27GPMY_cjs.PermissionManager; }
3073
+ get: function () { return chunkYHJB26RJ_cjs.PermissionManager; }
2506
3074
  });
2507
3075
  Object.defineProperty(exports, "bootstrapMiddleware", {
2508
3076
  enumerable: true,
2509
- get: function () { return chunkAE27GPMY_cjs.bootstrapMiddleware; }
3077
+ get: function () { return chunkYHJB26RJ_cjs.bootstrapMiddleware; }
2510
3078
  });
2511
3079
  Object.defineProperty(exports, "cacheHeaders", {
2512
3080
  enumerable: true,
2513
- get: function () { return chunkAE27GPMY_cjs.cacheHeaders; }
3081
+ get: function () { return chunkYHJB26RJ_cjs.cacheHeaders; }
2514
3082
  });
2515
3083
  Object.defineProperty(exports, "compressionMiddleware", {
2516
3084
  enumerable: true,
2517
- get: function () { return chunkAE27GPMY_cjs.compressionMiddleware; }
3085
+ get: function () { return chunkYHJB26RJ_cjs.compressionMiddleware; }
2518
3086
  });
2519
3087
  Object.defineProperty(exports, "detailedLoggingMiddleware", {
2520
3088
  enumerable: true,
2521
- get: function () { return chunkAE27GPMY_cjs.detailedLoggingMiddleware; }
3089
+ get: function () { return chunkYHJB26RJ_cjs.detailedLoggingMiddleware; }
2522
3090
  });
2523
3091
  Object.defineProperty(exports, "getActivePlugins", {
2524
3092
  enumerable: true,
2525
- get: function () { return chunkAE27GPMY_cjs.getActivePlugins; }
3093
+ get: function () { return chunkYHJB26RJ_cjs.getActivePlugins; }
2526
3094
  });
2527
3095
  Object.defineProperty(exports, "isPluginActive", {
2528
3096
  enumerable: true,
2529
- get: function () { return chunkAE27GPMY_cjs.isPluginActive; }
3097
+ get: function () { return chunkYHJB26RJ_cjs.isPluginActive; }
2530
3098
  });
2531
3099
  Object.defineProperty(exports, "logActivity", {
2532
3100
  enumerable: true,
2533
- get: function () { return chunkAE27GPMY_cjs.logActivity; }
3101
+ get: function () { return chunkYHJB26RJ_cjs.logActivity; }
2534
3102
  });
2535
3103
  Object.defineProperty(exports, "loggingMiddleware", {
2536
3104
  enumerable: true,
2537
- get: function () { return chunkAE27GPMY_cjs.loggingMiddleware; }
3105
+ get: function () { return chunkYHJB26RJ_cjs.loggingMiddleware; }
2538
3106
  });
2539
3107
  Object.defineProperty(exports, "optionalAuth", {
2540
3108
  enumerable: true,
2541
- get: function () { return chunkAE27GPMY_cjs.optionalAuth; }
3109
+ get: function () { return chunkYHJB26RJ_cjs.optionalAuth; }
2542
3110
  });
2543
3111
  Object.defineProperty(exports, "performanceLoggingMiddleware", {
2544
3112
  enumerable: true,
2545
- get: function () { return chunkAE27GPMY_cjs.performanceLoggingMiddleware; }
3113
+ get: function () { return chunkYHJB26RJ_cjs.performanceLoggingMiddleware; }
2546
3114
  });
2547
3115
  Object.defineProperty(exports, "requireActivePlugin", {
2548
3116
  enumerable: true,
2549
- get: function () { return chunkAE27GPMY_cjs.requireActivePlugin; }
3117
+ get: function () { return chunkYHJB26RJ_cjs.requireActivePlugin; }
2550
3118
  });
2551
3119
  Object.defineProperty(exports, "requireActivePlugins", {
2552
3120
  enumerable: true,
2553
- get: function () { return chunkAE27GPMY_cjs.requireActivePlugins; }
3121
+ get: function () { return chunkYHJB26RJ_cjs.requireActivePlugins; }
2554
3122
  });
2555
3123
  Object.defineProperty(exports, "requireAnyPermission", {
2556
3124
  enumerable: true,
2557
- get: function () { return chunkAE27GPMY_cjs.requireAnyPermission; }
3125
+ get: function () { return chunkYHJB26RJ_cjs.requireAnyPermission; }
2558
3126
  });
2559
3127
  Object.defineProperty(exports, "requireAuth", {
2560
3128
  enumerable: true,
2561
- get: function () { return chunkAE27GPMY_cjs.requireAuth; }
3129
+ get: function () { return chunkYHJB26RJ_cjs.requireAuth; }
2562
3130
  });
2563
3131
  Object.defineProperty(exports, "requirePermission", {
2564
3132
  enumerable: true,
2565
- get: function () { return chunkAE27GPMY_cjs.requirePermission; }
3133
+ get: function () { return chunkYHJB26RJ_cjs.requirePermission; }
2566
3134
  });
2567
3135
  Object.defineProperty(exports, "requireRole", {
2568
3136
  enumerable: true,
2569
- get: function () { return chunkAE27GPMY_cjs.requireRole; }
3137
+ get: function () { return chunkYHJB26RJ_cjs.requireRole; }
2570
3138
  });
2571
3139
  Object.defineProperty(exports, "securityHeaders", {
2572
3140
  enumerable: true,
2573
- get: function () { return chunkAE27GPMY_cjs.securityHeaders; }
3141
+ get: function () { return chunkYHJB26RJ_cjs.securityHeaders; }
2574
3142
  });
2575
3143
  Object.defineProperty(exports, "securityLoggingMiddleware", {
2576
3144
  enumerable: true,
2577
- get: function () { return chunkAE27GPMY_cjs.securityLoggingMiddleware; }
3145
+ get: function () { return chunkYHJB26RJ_cjs.securityLoggingMiddleware; }
2578
3146
  });
2579
3147
  Object.defineProperty(exports, "PluginBootstrapService", {
2580
3148
  enumerable: true,
@@ -2630,7 +3198,7 @@ Object.defineProperty(exports, "validateCollectionConfig", {
2630
3198
  });
2631
3199
  Object.defineProperty(exports, "MigrationService", {
2632
3200
  enumerable: true,
2633
- get: function () { return chunk4CLJPURJ_cjs.MigrationService; }
3201
+ get: function () { return chunkIEWLOVP3_cjs.MigrationService; }
2634
3202
  });
2635
3203
  Object.defineProperty(exports, "renderFilterBar", {
2636
3204
  enumerable: true,
@@ -2690,43 +3258,43 @@ Object.defineProperty(exports, "ScopedHookSystemClass", {
2690
3258
  });
2691
3259
  Object.defineProperty(exports, "QueryFilterBuilder", {
2692
3260
  enumerable: true,
2693
- get: function () { return chunkEUQDJQHJ_cjs.QueryFilterBuilder; }
3261
+ get: function () { return chunk2XCJ3HT5_cjs.QueryFilterBuilder; }
2694
3262
  });
2695
3263
  Object.defineProperty(exports, "SONICJS_VERSION", {
2696
3264
  enumerable: true,
2697
- get: function () { return chunkEUQDJQHJ_cjs.SONICJS_VERSION; }
3265
+ get: function () { return chunk2XCJ3HT5_cjs.SONICJS_VERSION; }
2698
3266
  });
2699
3267
  Object.defineProperty(exports, "TemplateRenderer", {
2700
3268
  enumerable: true,
2701
- get: function () { return chunkEUQDJQHJ_cjs.TemplateRenderer; }
3269
+ get: function () { return chunk2XCJ3HT5_cjs.TemplateRenderer; }
2702
3270
  });
2703
3271
  Object.defineProperty(exports, "buildQuery", {
2704
3272
  enumerable: true,
2705
- get: function () { return chunkEUQDJQHJ_cjs.buildQuery; }
3273
+ get: function () { return chunk2XCJ3HT5_cjs.buildQuery; }
2706
3274
  });
2707
3275
  Object.defineProperty(exports, "escapeHtml", {
2708
3276
  enumerable: true,
2709
- get: function () { return chunkEUQDJQHJ_cjs.escapeHtml; }
3277
+ get: function () { return chunk2XCJ3HT5_cjs.escapeHtml; }
2710
3278
  });
2711
3279
  Object.defineProperty(exports, "getCoreVersion", {
2712
3280
  enumerable: true,
2713
- get: function () { return chunkEUQDJQHJ_cjs.getCoreVersion; }
3281
+ get: function () { return chunk2XCJ3HT5_cjs.getCoreVersion; }
2714
3282
  });
2715
3283
  Object.defineProperty(exports, "renderTemplate", {
2716
3284
  enumerable: true,
2717
- get: function () { return chunkEUQDJQHJ_cjs.renderTemplate; }
3285
+ get: function () { return chunk2XCJ3HT5_cjs.renderTemplate; }
2718
3286
  });
2719
3287
  Object.defineProperty(exports, "sanitizeInput", {
2720
3288
  enumerable: true,
2721
- get: function () { return chunkEUQDJQHJ_cjs.sanitizeInput; }
3289
+ get: function () { return chunk2XCJ3HT5_cjs.sanitizeInput; }
2722
3290
  });
2723
3291
  Object.defineProperty(exports, "sanitizeObject", {
2724
3292
  enumerable: true,
2725
- get: function () { return chunkEUQDJQHJ_cjs.sanitizeObject; }
3293
+ get: function () { return chunk2XCJ3HT5_cjs.sanitizeObject; }
2726
3294
  });
2727
3295
  Object.defineProperty(exports, "templateRenderer", {
2728
3296
  enumerable: true,
2729
- get: function () { return chunkEUQDJQHJ_cjs.templateRenderer; }
3297
+ get: function () { return chunk2XCJ3HT5_cjs.templateRenderer; }
2730
3298
  });
2731
3299
  Object.defineProperty(exports, "metricsTracker", {
2732
3300
  enumerable: true,