@sonicjs-cms/core 1.0.0-alpha.4 → 2.0.0-alpha.10

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 (90) hide show
  1. package/README.md +268 -166
  2. package/dist/chunk-3MNMOLSA.js +133 -0
  3. package/dist/chunk-3MNMOLSA.js.map +1 -0
  4. package/dist/chunk-4USDL3UP.cjs +15565 -0
  5. package/dist/chunk-4USDL3UP.cjs.map +1 -0
  6. package/dist/{chunk-CXZDAR6S.js → chunk-7N3HK7ZK.js} +3 -3
  7. package/dist/{chunk-CXZDAR6S.js.map → chunk-7N3HK7ZK.js.map} +1 -1
  8. package/dist/chunk-AGOE25LF.cjs +137 -0
  9. package/dist/chunk-AGOE25LF.cjs.map +1 -0
  10. package/dist/{chunk-NRSL6BQI.js → chunk-BITQ4MFX.js} +3 -3
  11. package/dist/{chunk-NRSL6BQI.js.map → chunk-BITQ4MFX.js.map} +1 -1
  12. package/dist/{chunk-24PWAFUT.cjs → chunk-BUKT6HP5.cjs} +13 -13
  13. package/dist/{chunk-24PWAFUT.cjs.map → chunk-BUKT6HP5.cjs.map} +1 -1
  14. package/dist/{chunk-L3NXO7Y4.cjs → chunk-FVMV5DKA.cjs} +49 -49
  15. package/dist/{chunk-L3NXO7Y4.cjs.map → chunk-FVMV5DKA.cjs.map} +1 -1
  16. package/dist/chunk-GGBHOIDD.js +15552 -0
  17. package/dist/chunk-GGBHOIDD.js.map +1 -0
  18. package/dist/{chunk-EMMSS5I5.cjs → chunk-IGJUBJBW.cjs} +8 -2
  19. package/dist/{chunk-ALTMI5Y2.cjs.map → chunk-IGJUBJBW.cjs.map} +1 -1
  20. package/dist/{chunk-WJ7QYVR2.cjs → chunk-RNR4HA23.cjs} +4 -4
  21. package/dist/{chunk-WJ7QYVR2.cjs.map → chunk-RNR4HA23.cjs.map} +1 -1
  22. package/dist/{chunk-G3PMV62Z.js → chunk-V4OQ3NZ2.js} +7 -3
  23. package/dist/{chunk-G3PMV62Z.js.map → chunk-V4OQ3NZ2.js.map} +1 -1
  24. package/dist/{chunk-PTQZ5FEI.js → chunk-WESS2U3K.js} +3 -3
  25. package/dist/{chunk-PTQZ5FEI.js.map → chunk-WESS2U3K.js.map} +1 -1
  26. package/dist/index.cjs +105 -92
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.js +22 -8
  29. package/dist/index.js.map +1 -1
  30. package/dist/middleware.cjs +23 -23
  31. package/dist/middleware.js +3 -3
  32. package/dist/plugins.cjs +8 -8
  33. package/dist/plugins.js +2 -2
  34. package/dist/routes.cjs +51 -3
  35. package/dist/routes.js +6 -2
  36. package/dist/services.cjs +31 -19
  37. package/dist/services.js +3 -3
  38. package/dist/templates.cjs +1 -1
  39. package/dist/templates.js +1 -1
  40. package/dist/types.cjs +1 -1
  41. package/dist/types.js +1 -1
  42. package/dist/utils.cjs +1 -1
  43. package/dist/utils.js +1 -1
  44. package/migrations/001_initial_schema.sql +198 -0
  45. package/migrations/002_faq_plugin.sql +86 -0
  46. package/migrations/003_stage5_enhancements.sql +121 -0
  47. package/migrations/004_stage6_user_management.sql +183 -0
  48. package/migrations/005_stage7_workflow_automation.sql +294 -0
  49. package/migrations/006_plugin_system.sql +155 -0
  50. package/migrations/007_demo_login_plugin.sql +23 -0
  51. package/migrations/008_fix_slug_validation.sql +22 -0
  52. package/migrations/009_system_logging.sql +57 -0
  53. package/migrations/011_config_managed_collections.sql +14 -0
  54. package/migrations/012_testimonials_plugin.sql +80 -0
  55. package/migrations/013_code_examples_plugin.sql +177 -0
  56. package/migrations/014_fix_plugin_registry.sql +88 -0
  57. package/migrations/015_add_remaining_plugins.sql +89 -0
  58. package/migrations/016_remove_duplicate_cache_plugin.sql +17 -0
  59. package/migrations/017_auth_configurable_fields.sql +49 -0
  60. package/package.json +24 -24
  61. package/dist/chunk-4URGXJP7.js +0 -3
  62. package/dist/chunk-4URGXJP7.js.map +0 -1
  63. package/dist/chunk-ALTMI5Y2.cjs +0 -4
  64. package/dist/chunk-BOLQHE4J.cjs +0 -11
  65. package/dist/chunk-BOLQHE4J.cjs.map +0 -1
  66. package/dist/chunk-EMMSS5I5.cjs.map +0 -1
  67. package/dist/chunk-HD7R6T6I.js +0 -9
  68. package/dist/chunk-HD7R6T6I.js.map +0 -1
  69. package/dist/collection-config-FLlGtsh9.d.cts +0 -107
  70. package/dist/collection-config-FLlGtsh9.d.ts +0 -107
  71. package/dist/index-BlsY5XNH.d.ts +0 -8333
  72. package/dist/index-D45jaIlr.d.cts +0 -8333
  73. package/dist/index.d.cts +0 -136
  74. package/dist/index.d.ts +0 -136
  75. package/dist/middleware.d.cts +0 -206
  76. package/dist/middleware.d.ts +0 -206
  77. package/dist/plugin-UzmDImQc.d.cts +0 -357
  78. package/dist/plugin-UzmDImQc.d.ts +0 -357
  79. package/dist/plugins.d.cts +0 -330
  80. package/dist/plugins.d.ts +0 -330
  81. package/dist/routes.d.cts +0 -17
  82. package/dist/routes.d.ts +0 -17
  83. package/dist/services.d.cts +0 -5
  84. package/dist/services.d.ts +0 -5
  85. package/dist/templates.d.cts +0 -140
  86. package/dist/templates.d.ts +0 -140
  87. package/dist/types.d.cts +0 -41
  88. package/dist/types.d.ts +0 -41
  89. package/dist/utils.d.cts +0 -184
  90. package/dist/utils.d.ts +0 -184
@@ -0,0 +1,137 @@
1
+ 'use strict';
2
+
3
+ // src/services/cache.ts
4
+ var CacheService = class {
5
+ config;
6
+ memoryCache = /* @__PURE__ */ new Map();
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ /**
11
+ * Generate cache key with prefix
12
+ */
13
+ generateKey(type, identifier) {
14
+ const parts = [this.config.keyPrefix, type];
15
+ if (identifier) {
16
+ parts.push(identifier);
17
+ }
18
+ return parts.join(":");
19
+ }
20
+ /**
21
+ * Get value from cache
22
+ */
23
+ async get(key) {
24
+ const cached = this.memoryCache.get(key);
25
+ if (!cached) {
26
+ return null;
27
+ }
28
+ if (Date.now() > cached.expires) {
29
+ this.memoryCache.delete(key);
30
+ return null;
31
+ }
32
+ return cached.value;
33
+ }
34
+ /**
35
+ * Get value from cache with source information
36
+ */
37
+ async getWithSource(key) {
38
+ const cached = this.memoryCache.get(key);
39
+ if (!cached) {
40
+ return {
41
+ hit: false,
42
+ data: null,
43
+ source: "none"
44
+ };
45
+ }
46
+ if (Date.now() > cached.expires) {
47
+ this.memoryCache.delete(key);
48
+ return {
49
+ hit: false,
50
+ data: null,
51
+ source: "expired"
52
+ };
53
+ }
54
+ return {
55
+ hit: true,
56
+ data: cached.value,
57
+ source: "memory",
58
+ ttl: (cached.expires - Date.now()) / 1e3
59
+ // TTL in seconds
60
+ };
61
+ }
62
+ /**
63
+ * Set value in cache
64
+ */
65
+ async set(key, value, ttl) {
66
+ const expires = Date.now() + (ttl || this.config.ttl) * 1e3;
67
+ this.memoryCache.set(key, { value, expires });
68
+ }
69
+ /**
70
+ * Delete specific key from cache
71
+ */
72
+ async delete(key) {
73
+ this.memoryCache.delete(key);
74
+ }
75
+ /**
76
+ * Invalidate cache keys matching a pattern
77
+ * For memory cache, we do simple string matching
78
+ */
79
+ async invalidate(pattern) {
80
+ const regexPattern = pattern.replace(/\*/g, ".*").replace(/\?/g, ".");
81
+ const regex = new RegExp(`^${regexPattern}$`);
82
+ for (const key of this.memoryCache.keys()) {
83
+ if (regex.test(key)) {
84
+ this.memoryCache.delete(key);
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Clear all cache
90
+ */
91
+ async clear() {
92
+ this.memoryCache.clear();
93
+ }
94
+ /**
95
+ * Get value from cache or set it using a callback
96
+ */
97
+ async getOrSet(key, callback, ttl) {
98
+ const cached = await this.get(key);
99
+ if (cached !== null) {
100
+ return cached;
101
+ }
102
+ const value = await callback();
103
+ await this.set(key, value, ttl);
104
+ return value;
105
+ }
106
+ };
107
+ var CACHE_CONFIGS = {
108
+ api: {
109
+ ttl: 300,
110
+ // 5 minutes
111
+ keyPrefix: "api"
112
+ },
113
+ user: {
114
+ ttl: 600,
115
+ // 10 minutes
116
+ keyPrefix: "user"
117
+ },
118
+ content: {
119
+ ttl: 300,
120
+ // 5 minutes
121
+ keyPrefix: "content"
122
+ },
123
+ collection: {
124
+ ttl: 600,
125
+ // 10 minutes
126
+ keyPrefix: "collection"
127
+ }
128
+ };
129
+ function getCacheService(config) {
130
+ return new CacheService(config);
131
+ }
132
+
133
+ exports.CACHE_CONFIGS = CACHE_CONFIGS;
134
+ exports.CacheService = CacheService;
135
+ exports.getCacheService = getCacheService;
136
+ //# sourceMappingURL=chunk-AGOE25LF.cjs.map
137
+ //# sourceMappingURL=chunk-AGOE25LF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/cache.ts"],"names":[],"mappings":"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","file":"chunk-AGOE25LF.cjs","sourcesContent":["/**\n * Simple Cache Service\n *\n * Provides basic caching functionality for the core package\n * Can be extended with KV or other storage backends\n */\n\nexport interface CacheConfig {\n ttl: number // Time to live in seconds\n keyPrefix: string\n}\n\nexport class CacheService {\n private config: CacheConfig\n private memoryCache: Map<string, { value: any; expires: number }> = new Map()\n\n constructor(config: CacheConfig) {\n this.config = config\n }\n\n /**\n * Generate cache key with prefix\n */\n generateKey(type: string, identifier?: string): string {\n const parts = [this.config.keyPrefix, type]\n if (identifier) {\n parts.push(identifier)\n }\n return parts.join(':')\n }\n\n /**\n * Get value from cache\n */\n async get<T>(key: string): Promise<T | null> {\n const cached = this.memoryCache.get(key)\n\n if (!cached) {\n return null\n }\n\n // Check if expired\n if (Date.now() > cached.expires) {\n this.memoryCache.delete(key)\n return null\n }\n\n return cached.value as T\n }\n\n /**\n * Get value from cache with source information\n */\n async getWithSource<T>(key: string): Promise<{\n hit: boolean\n data: T | null\n source: string\n ttl?: number\n }> {\n const cached = this.memoryCache.get(key)\n\n if (!cached) {\n return {\n hit: false,\n data: null,\n source: 'none'\n }\n }\n\n // Check if expired\n if (Date.now() > cached.expires) {\n this.memoryCache.delete(key)\n return {\n hit: false,\n data: null,\n source: 'expired'\n }\n }\n\n return {\n hit: true,\n data: cached.value as T,\n source: 'memory',\n ttl: (cached.expires - Date.now()) / 1000 // TTL in seconds\n }\n }\n\n /**\n * Set value in cache\n */\n async set(key: string, value: any, ttl?: number): Promise<void> {\n const expires = Date.now() + ((ttl || this.config.ttl) * 1000)\n this.memoryCache.set(key, { value, expires })\n }\n\n /**\n * Delete specific key from cache\n */\n async delete(key: string): Promise<void> {\n this.memoryCache.delete(key)\n }\n\n /**\n * Invalidate cache keys matching a pattern\n * For memory cache, we do simple string matching\n */\n async invalidate(pattern: string): Promise<void> {\n // Convert glob pattern to regex\n const regexPattern = pattern\n .replace(/\\*/g, '.*')\n .replace(/\\?/g, '.')\n const regex = new RegExp(`^${regexPattern}$`)\n\n // Find and delete matching keys\n for (const key of this.memoryCache.keys()) {\n if (regex.test(key)) {\n this.memoryCache.delete(key)\n }\n }\n }\n\n /**\n * Clear all cache\n */\n async clear(): Promise<void> {\n this.memoryCache.clear()\n }\n\n /**\n * Get value from cache or set it using a callback\n */\n async getOrSet<T>(key: string, callback: () => Promise<T>, ttl?: number): Promise<T> {\n const cached = await this.get<T>(key)\n\n if (cached !== null) {\n return cached\n }\n\n const value = await callback()\n await this.set(key, value, ttl)\n return value\n }\n}\n\n/**\n * Cache configurations for different data types\n */\nexport const CACHE_CONFIGS = {\n api: {\n ttl: 300, // 5 minutes\n keyPrefix: 'api'\n },\n user: {\n ttl: 600, // 10 minutes\n keyPrefix: 'user'\n },\n content: {\n ttl: 300, // 5 minutes\n keyPrefix: 'content'\n },\n collection: {\n ttl: 600, // 10 minutes\n keyPrefix: 'collection'\n }\n}\n\n/**\n * Get cache service instance for a config\n */\nexport function getCacheService(config: CacheConfig): CacheService {\n return new CacheService(config)\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HOOKS } from './chunk-LOUJRBXV.js';
2
- import { __commonJS, __toESM } from './chunk-G3PMV62Z.js';
2
+ import { __commonJS, __toESM } from './chunk-V4OQ3NZ2.js';
3
3
  import { z } from 'zod';
4
4
  import { Hono } from 'hono';
5
5
 
@@ -3082,5 +3082,5 @@ var PluginManager = class {
3082
3082
  };
3083
3083
 
3084
3084
  export { HookSystemImpl, HookUtils, PluginManager, PluginRegistryImpl, PluginValidator, ScopedHookSystem };
3085
- //# sourceMappingURL=chunk-NRSL6BQI.js.map
3086
- //# sourceMappingURL=chunk-NRSL6BQI.js.map
3085
+ //# sourceMappingURL=chunk-BITQ4MFX.js.map
3086
+ //# sourceMappingURL=chunk-BITQ4MFX.js.map