bun_plugins 1.2.6 → 1.2.7

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 (178) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +127 -3
  3. package/dist/examples/action-registry-declarative.d.ts +14 -0
  4. package/dist/examples/action-registry-declarative.d.ts.map +1 -0
  5. package/dist/examples/action-registry-declarative.js +130 -0
  6. package/dist/examples/action-registry-declarative.js.map +1 -0
  7. package/dist/examples/action-registry-example.d.ts +31 -0
  8. package/dist/examples/action-registry-example.d.ts.map +1 -0
  9. package/dist/examples/action-registry-example.js +84 -0
  10. package/dist/examples/action-registry-example.js.map +1 -0
  11. package/dist/examples/index-declarative.d.ts +32 -0
  12. package/dist/examples/index-declarative.d.ts.map +1 -0
  13. package/dist/examples/index-declarative.js +206 -0
  14. package/dist/examples/index-declarative.js.map +1 -0
  15. package/dist/examples/logger-declarative.d.ts +109 -0
  16. package/dist/examples/logger-declarative.d.ts.map +1 -0
  17. package/dist/examples/logger-declarative.js +330 -0
  18. package/dist/examples/logger-declarative.js.map +1 -0
  19. package/dist/examples/logger-simple.d.ts +8 -0
  20. package/dist/examples/logger-simple.d.ts.map +1 -0
  21. package/dist/examples/logger-simple.js +165 -0
  22. package/dist/examples/logger-simple.js.map +1 -0
  23. package/dist/examples/server-declarative.d.ts +46 -0
  24. package/dist/examples/server-declarative.d.ts.map +1 -0
  25. package/dist/examples/server-declarative.js +205 -0
  26. package/dist/examples/server-declarative.js.map +1 -0
  27. package/dist/examples/shared/action-registry.d.ts +45 -0
  28. package/dist/examples/shared/action-registry.d.ts.map +1 -0
  29. package/dist/examples/shared/action-registry.js +65 -0
  30. package/dist/examples/shared/action-registry.js.map +1 -0
  31. package/dist/examples/shared/plugin-builder.d.ts +41 -0
  32. package/dist/examples/shared/plugin-builder.d.ts.map +1 -0
  33. package/dist/examples/shared/plugin-builder.js +85 -0
  34. package/dist/examples/shared/plugin-builder.js.map +1 -0
  35. package/dist/examples/storage-declarative.d.ts +13 -0
  36. package/dist/examples/storage-declarative.d.ts.map +1 -0
  37. package/dist/examples/storage-declarative.js +203 -0
  38. package/dist/examples/storage-declarative.js.map +1 -0
  39. package/dist/plugins/ActionRegistryPlugin.d.ts +14 -0
  40. package/dist/plugins/ActionRegistryPlugin.d.ts.map +1 -0
  41. package/dist/plugins/ActionRegistryPlugin.js +52 -0
  42. package/dist/plugins/ActionRegistryPlugin.js.map +1 -0
  43. package/dist/plugins/DynamicJSActionsPlugin.d.ts +21 -0
  44. package/dist/plugins/DynamicJSActionsPlugin.d.ts.map +1 -0
  45. package/dist/plugins/DynamicJSActionsPlugin.js +57 -0
  46. package/dist/plugins/DynamicJSActionsPlugin.js.map +1 -0
  47. package/dist/plugins/DynamicMathActionsPlugin.d.ts +22 -0
  48. package/dist/plugins/DynamicMathActionsPlugin.d.ts.map +1 -0
  49. package/dist/plugins/DynamicMathActionsPlugin.js +64 -0
  50. package/dist/plugins/DynamicMathActionsPlugin.js.map +1 -0
  51. package/dist/plugins/DynamicTextActionsPlugin.d.ts +22 -0
  52. package/dist/plugins/DynamicTextActionsPlugin.d.ts.map +1 -0
  53. package/dist/plugins/DynamicTextActionsPlugin.js +58 -0
  54. package/dist/plugins/DynamicTextActionsPlugin.js.map +1 -0
  55. package/dist/plugins/DynamicUtilityActionsPlugin.d.ts +22 -0
  56. package/dist/plugins/DynamicUtilityActionsPlugin.d.ts.map +1 -0
  57. package/dist/plugins/DynamicUtilityActionsPlugin.js +75 -0
  58. package/dist/plugins/DynamicUtilityActionsPlugin.js.map +1 -0
  59. package/dist/plugins/ExamplePlugin.d.ts +3 -0
  60. package/dist/plugins/ExamplePlugin.d.ts.map +1 -0
  61. package/dist/plugins/ExamplePlugin.js +24 -0
  62. package/dist/plugins/ExamplePlugin.js.map +1 -0
  63. package/dist/plugins/LifecycleDemoPlugin.d.ts +20 -0
  64. package/dist/plugins/LifecycleDemoPlugin.d.ts.map +1 -0
  65. package/dist/plugins/LifecycleDemoPlugin.js +34 -0
  66. package/dist/plugins/LifecycleDemoPlugin.js.map +1 -0
  67. package/dist/plugins/MathPlugin.d.ts +16 -0
  68. package/dist/plugins/MathPlugin.d.ts.map +1 -0
  69. package/dist/plugins/MathPlugin.js +30 -0
  70. package/dist/plugins/MathPlugin.js.map +1 -0
  71. package/dist/plugins/MyJSPlugin.d.ts +7 -0
  72. package/dist/plugins/MyJSPlugin.d.ts.map +1 -0
  73. package/dist/plugins/MyJSPlugin.js +12 -0
  74. package/dist/plugins/MyJSPlugin.js.map +1 -0
  75. package/dist/plugins/TypedExamplePlugin.d.ts +10 -0
  76. package/dist/plugins/TypedExamplePlugin.d.ts.map +1 -0
  77. package/dist/plugins/TypedExamplePlugin.js +61 -0
  78. package/dist/plugins/TypedExamplePlugin.js.map +1 -0
  79. package/dist/plugins/arktype/index.d.ts +8 -0
  80. package/dist/plugins/arktype/index.d.ts.map +1 -0
  81. package/dist/plugins/arktype/index.js +25 -0
  82. package/dist/plugins/arktype/index.js.map +1 -0
  83. package/dist/src/Plugin.d.ts +28 -0
  84. package/dist/src/Plugin.d.ts.map +1 -0
  85. package/dist/src/Plugin.js +36 -0
  86. package/dist/src/Plugin.js.map +1 -0
  87. package/dist/{PluginManager.d.ts → src/PluginManager.d.ts} +33 -10
  88. package/dist/src/PluginManager.d.ts.map +1 -0
  89. package/dist/{PluginManager.js → src/PluginManager.js} +245 -193
  90. package/dist/src/PluginManager.js.map +1 -0
  91. package/dist/{index.d.ts → src/index.d.ts} +2 -1
  92. package/dist/src/index.d.ts.map +1 -0
  93. package/dist/{index.js → src/index.js} +2 -0
  94. package/dist/src/index.js.map +1 -0
  95. package/dist/src/logger/LoggerAdapter.d.ts +77 -0
  96. package/dist/src/logger/LoggerAdapter.d.ts.map +1 -0
  97. package/dist/src/logger/LoggerAdapter.js +242 -0
  98. package/dist/src/logger/LoggerAdapter.js.map +1 -0
  99. package/dist/src/logger/LoggerFactory.d.ts +73 -0
  100. package/dist/src/logger/LoggerFactory.d.ts.map +1 -0
  101. package/dist/src/logger/LoggerFactory.js +99 -0
  102. package/dist/src/logger/LoggerFactory.js.map +1 -0
  103. package/dist/src/logger/index.d.ts +3 -0
  104. package/dist/src/logger/index.d.ts.map +1 -0
  105. package/dist/src/logger/index.js +3 -0
  106. package/dist/src/logger/index.js.map +1 -0
  107. package/dist/{managers → src/managers}/ContextFactory.d.ts +1 -1
  108. package/dist/src/managers/ContextFactory.d.ts.map +1 -0
  109. package/dist/{managers → src/managers}/ContextFactory.js +51 -26
  110. package/dist/src/managers/ContextFactory.js.map +1 -0
  111. package/dist/src/managers/DependencyManager.d.ts.map +1 -0
  112. package/dist/{managers → src/managers}/DependencyManager.js +7 -5
  113. package/dist/src/managers/DependencyManager.js.map +1 -0
  114. package/dist/{managers → src/managers}/HooksManager.d.ts +4 -1
  115. package/dist/src/managers/HooksManager.d.ts.map +1 -0
  116. package/dist/{managers → src/managers}/HooksManager.js +36 -8
  117. package/dist/src/managers/HooksManager.js.map +1 -0
  118. package/dist/src/managers/ResourceManager.d.ts.map +1 -0
  119. package/dist/{managers → src/managers}/ResourceManager.js +3 -3
  120. package/dist/src/managers/ResourceManager.js.map +1 -0
  121. package/dist/src/storage/JsonPluginStorage.d.ts +75 -0
  122. package/dist/src/storage/JsonPluginStorage.d.ts.map +1 -0
  123. package/dist/src/storage/JsonPluginStorage.js +240 -0
  124. package/dist/src/storage/JsonPluginStorage.js.map +1 -0
  125. package/dist/src/types/plugin-registry-base.d.ts +80 -0
  126. package/dist/src/types/plugin-registry-base.d.ts.map +1 -0
  127. package/dist/src/types/plugin-registry-base.js +6 -0
  128. package/dist/src/types/plugin-registry-base.js.map +1 -0
  129. package/dist/{types.d.ts → src/types.d.ts} +60 -19
  130. package/dist/src/types.d.ts.map +1 -0
  131. package/dist/{types.js → src/types.js} +6 -0
  132. package/dist/src/types.js.map +1 -0
  133. package/dist/src/utils/errorParser.d.ts.map +1 -0
  134. package/dist/{utils → src/utils}/errorParser.js +2 -5
  135. package/dist/src/utils/errorParser.js.map +1 -0
  136. package/dist/src/utils/pluginValidator.d.ts +17 -0
  137. package/dist/src/utils/pluginValidator.d.ts.map +1 -0
  138. package/dist/{utils → src/utils}/pluginValidator.js +11 -14
  139. package/dist/src/utils/pluginValidator.js.map +1 -0
  140. package/dist/src/utils/security.d.ts.map +1 -0
  141. package/dist/src/utils/security.js.map +1 -0
  142. package/dist/src/worker/WorkerRunner.d.ts.map +1 -0
  143. package/dist/{worker → src/worker}/WorkerRunner.js +38 -13
  144. package/dist/src/worker/WorkerRunner.js.map +1 -0
  145. package/package.json +9 -6
  146. package/dist/PluginManager.d.ts.map +0 -1
  147. package/dist/PluginManager.js.map +0 -1
  148. package/dist/index.d.ts.map +0 -1
  149. package/dist/index.js.map +0 -1
  150. package/dist/managers/ContextFactory.d.ts.map +0 -1
  151. package/dist/managers/ContextFactory.js.map +0 -1
  152. package/dist/managers/DependencyManager.d.ts.map +0 -1
  153. package/dist/managers/DependencyManager.js.map +0 -1
  154. package/dist/managers/HooksManager.d.ts.map +0 -1
  155. package/dist/managers/HooksManager.js.map +0 -1
  156. package/dist/managers/ResourceManager.d.ts.map +0 -1
  157. package/dist/managers/ResourceManager.js.map +0 -1
  158. package/dist/storage/JsonPluginStorage.d.ts +0 -14
  159. package/dist/storage/JsonPluginStorage.d.ts.map +0 -1
  160. package/dist/storage/JsonPluginStorage.js +0 -63
  161. package/dist/storage/JsonPluginStorage.js.map +0 -1
  162. package/dist/types.d.ts.map +0 -1
  163. package/dist/types.js.map +0 -1
  164. package/dist/utils/errorParser.d.ts.map +0 -1
  165. package/dist/utils/errorParser.js.map +0 -1
  166. package/dist/utils/pluginValidator.d.ts +0 -93
  167. package/dist/utils/pluginValidator.d.ts.map +0 -1
  168. package/dist/utils/pluginValidator.js.map +0 -1
  169. package/dist/utils/security.d.ts.map +0 -1
  170. package/dist/utils/security.js.map +0 -1
  171. package/dist/worker/WorkerRunner.d.ts.map +0 -1
  172. package/dist/worker/WorkerRunner.js.map +0 -1
  173. /package/dist/{managers → src/managers}/DependencyManager.d.ts +0 -0
  174. /package/dist/{managers → src/managers}/ResourceManager.d.ts +0 -0
  175. /package/dist/{utils → src/utils}/errorParser.d.ts +0 -0
  176. /package/dist/{utils → src/utils}/security.d.ts +0 -0
  177. /package/dist/{utils → src/utils}/security.js +0 -0
  178. /package/dist/{worker → src/worker}/WorkerRunner.d.ts +0 -0
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Declarative Plugin Builder
3
+ * Provides a functional approach to create plugins without boilerplate
4
+ */
5
+ import { ActionRegistry } from "./action-registry";
6
+ // Generic plugin builder
7
+ export const createPlugin = (def) => ({
8
+ name: def.name,
9
+ version: def.version,
10
+ description: def.description,
11
+ author: def.author,
12
+ defaultConfig: def.defaultConfig,
13
+ async onLoad(context) {
14
+ if (def.onLoad) {
15
+ await def.onLoad(context);
16
+ }
17
+ // Register shared API if provided
18
+ if (def.sharedApi) {
19
+ context.registerApi(def.sharedApi);
20
+ }
21
+ },
22
+ async onUnload() {
23
+ if (def.onUnload) {
24
+ await def.onUnload();
25
+ }
26
+ },
27
+ });
28
+ // Specialized builder for action registry plugins
29
+ export const createActionPlugin = (def) => {
30
+ const registry = new ActionRegistry();
31
+ return createPlugin({
32
+ ...def,
33
+ onLoad: async (context) => {
34
+ // Register with central registry
35
+ const centralRegistry = await context.getPlugin(def.registryName);
36
+ if (centralRegistry) {
37
+ // Register action categories
38
+ def.actionCategories?.forEach(category => category.register(centralRegistry));
39
+ // Register custom actions
40
+ def.customActions?.forEach(action => centralRegistry.register(action));
41
+ context.log.info(`Registered ${def.actionCategories?.length || 0} action categories`);
42
+ }
43
+ // Call custom onLoad if provided
44
+ if (def.onLoad) {
45
+ await def.onLoad(context);
46
+ }
47
+ // Register shared API
48
+ context.registerApi({
49
+ name: def.name,
50
+ version: def.version,
51
+ actions: [
52
+ ...(def.actionCategories?.flatMap(cat => cat.actions.map((a) => a.name)) || []),
53
+ ...(def.customActions?.map(a => a.name) || [])
54
+ ]
55
+ });
56
+ }
57
+ });
58
+ };
59
+ // Storage operation helpers
60
+ export const storageOps = {
61
+ get: (key, defaultValue) => ({
62
+ type: 'get', key, defaultValue, description: `Get ${key}`
63
+ }),
64
+ set: (key, value) => ({
65
+ type: 'set', key, value, description: `Set ${key}`
66
+ }),
67
+ delete: (key) => ({
68
+ type: 'delete', key, description: `Delete ${key}`
69
+ }),
70
+ clear: () => ({
71
+ type: 'clear', key: '*', description: 'Clear all storage'
72
+ })
73
+ };
74
+ // Demo runner utility
75
+ export const runDemo = async (name, demoFn) => {
76
+ console.log(`\n🚀 ${name}\n`);
77
+ try {
78
+ await demoFn();
79
+ console.log(`\n✅ ${name} completed\n`);
80
+ }
81
+ catch (error) {
82
+ console.error(`\n❌ ${name} failed:`, error);
83
+ }
84
+ };
85
+ //# sourceMappingURL=plugin-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-builder.js","sourceRoot":"","sources":["../../../examples/shared/plugin-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Declarative Storage Example
3
+ *
4
+ * This example demonstrates a clean, declarative approach to building
5
+ * plugins with storage using shared utilities.
6
+ */
7
+ declare const createCounterPlugin: () => import("bun_plugins").IPlugin;
8
+ declare const createUserPlugin: () => import("bun_plugins").IPlugin;
9
+ declare const createAnalyticsPlugin: () => import("bun_plugins").IPlugin;
10
+ declare const createCrudPlugin: () => import("bun_plugins").IPlugin;
11
+ declare const demonstrateDeclarativeStorage: () => Promise<void>;
12
+ export { createCounterPlugin, createUserPlugin, createAnalyticsPlugin, createCrudPlugin, demonstrateDeclarativeStorage };
13
+ //# sourceMappingURL=storage-declarative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-declarative.d.ts","sourceRoot":"","sources":["../../examples/storage-declarative.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqCH,QAAA,MAAM,mBAAmB,qCA0BvB,CAAC;AAGH,QAAA,MAAM,gBAAgB,qCAkCpB,CAAC;AAGH,QAAA,MAAM,qBAAqB,qCAsCzB,CAAC;AAGH,QAAA,MAAM,gBAAgB,qCA2EpB,CAAC;AAGH,QAAA,MAAM,6BAA6B,qBAelC,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,6BAA6B,EAC9B,CAAC"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Declarative Storage Example
3
+ *
4
+ * This example demonstrates a clean, declarative approach to building
5
+ * plugins with storage using shared utilities.
6
+ */
7
+ import { PluginManager } from "../src/PluginManager";
8
+ import { createPlugin, runDemo } from "./shared/plugin-builder";
9
+ // Storage operation definitions
10
+ const storageOperations = {
11
+ counter: {
12
+ get: { key: "counter", defaultValue: 0 },
13
+ increment: (current) => ({ key: "counter", value: current + 1 }),
14
+ log: (value) => `Counter: ${value}`
15
+ },
16
+ userData: {
17
+ template: {
18
+ name: "John Doe",
19
+ email: "john@example.com",
20
+ lastLogin: new Date().toISOString()
21
+ },
22
+ save: (data) => ({ key: "userData", value: data }),
23
+ log: (data) => `User: ${data.name} (${data.email})`
24
+ },
25
+ metadata: {
26
+ save: (version) => ({
27
+ key: "metadata",
28
+ value: {
29
+ version,
30
+ createdAt: new Date().toISOString(),
31
+ plugin: "declarative-storage"
32
+ }
33
+ }),
34
+ log: (meta) => `Metadata: v${meta.version} created at ${meta.createdAt}`
35
+ }
36
+ };
37
+ // Declarative counter plugin
38
+ const createCounterPlugin = () => createPlugin({
39
+ name: "declarative-counter",
40
+ version: "1.0.0",
41
+ description: "Counter plugin using declarative storage operations",
42
+ defaultConfig: { startValue: 0 },
43
+ onLoad: async (context) => {
44
+ const { storage, config, log } = context;
45
+ // Get current counter
46
+ const counter = await storage.get(storageOperations.counter.get.key, config.startValue) ?? config.startValue;
47
+ log.info(storageOperations.counter.log(counter));
48
+ // Increment and save
49
+ const { key, value } = storageOperations.counter.increment(counter);
50
+ await storage.set(key, value);
51
+ log.info(`Updated ${key} to ${value}`);
52
+ // Save metadata
53
+ const metaOp = storageOperations.metadata.save("1.0.0");
54
+ await storage.set(metaOp.key, metaOp.value);
55
+ log.info(storageOperations.metadata.log(metaOp.value));
56
+ }
57
+ });
58
+ // Declarative user management plugin
59
+ const createUserPlugin = () => createPlugin({
60
+ name: "declarative-user",
61
+ version: "1.0.0",
62
+ description: "User management with declarative storage",
63
+ onLoad: async (context) => {
64
+ const { storage, log } = context;
65
+ // Initialize user data
66
+ const userData = storageOperations.userData.template;
67
+ const saveOp = storageOperations.userData.save(userData);
68
+ await storage.set(saveOp.key, saveOp.value);
69
+ log.info(storageOperations.userData.log(userData));
70
+ // Store session info
71
+ await storage.set("session", {
72
+ sessionId: `sess_${Date.now()}`,
73
+ userId: "user_123",
74
+ createdAt: new Date().toISOString()
75
+ });
76
+ // Complex data structure
77
+ const preferences = {
78
+ theme: "dark",
79
+ language: "en",
80
+ notifications: {
81
+ email: true,
82
+ push: false,
83
+ frequency: "daily"
84
+ }
85
+ };
86
+ await storage.set("preferences", preferences);
87
+ log.info("User preferences saved");
88
+ }
89
+ });
90
+ // Declarative analytics plugin
91
+ const createAnalyticsPlugin = () => createPlugin({
92
+ name: "declarative-analytics",
93
+ version: "1.0.0",
94
+ description: "Analytics tracking with declarative storage",
95
+ onLoad: async (context) => {
96
+ const { storage, log } = context;
97
+ // Initialize analytics data
98
+ const analytics = {
99
+ pageViews: 0,
100
+ userSessions: 0,
101
+ events: [],
102
+ lastActivity: new Date().toISOString()
103
+ };
104
+ await storage.set("analytics", analytics);
105
+ log.info("Analytics initialized");
106
+ // Simulate some activity
107
+ analytics.pageViews += 1;
108
+ analytics.userSessions += 1;
109
+ analytics.events.push({
110
+ type: "page_view",
111
+ timestamp: new Date().toISOString(),
112
+ data: { page: "/home" }
113
+ });
114
+ await storage.set("analytics", analytics);
115
+ log.info("Analytics updated");
116
+ // Store configuration
117
+ await storage.set("config", {
118
+ trackingEnabled: true,
119
+ sampleRate: 1.0,
120
+ excludedPaths: ["/admin", "/health"]
121
+ });
122
+ }
123
+ });
124
+ // Declarative CRUD operations plugin
125
+ const createCrudPlugin = () => createPlugin({
126
+ name: "declarative-crud",
127
+ version: "1.0.0",
128
+ description: "CRUD operations demonstration",
129
+ onLoad: async (context) => {
130
+ const { storage, log } = context;
131
+ // Initialize data
132
+ const todos = [
133
+ { id: 1, text: "Learn declarative plugins", completed: false, createdAt: new Date().toISOString() }
134
+ ];
135
+ await storage.set("todos", todos);
136
+ log.info(`Created ${todos.length} todo items`);
137
+ // CRUD operations
138
+ const operations = {
139
+ create: async (text) => {
140
+ const current = await storage.get("todos", []);
141
+ const newTodo = {
142
+ id: Date.now(),
143
+ text,
144
+ completed: false,
145
+ createdAt: new Date().toISOString()
146
+ };
147
+ current?.push(newTodo);
148
+ await storage.set("todos", current);
149
+ return newTodo;
150
+ },
151
+ read: async () => {
152
+ return await storage.get("todos", []) ?? [];
153
+ },
154
+ update: async (id, updates) => {
155
+ const current = await storage.get("todos", []) ?? [];
156
+ const index = current.findIndex(t => t.id === id);
157
+ if (index !== -1) {
158
+ current[index] = { ...current[index], ...updates };
159
+ await storage.set("todos", current);
160
+ return current[index];
161
+ }
162
+ return null;
163
+ },
164
+ delete: async (id) => {
165
+ const current = await storage.get("todos", []) ?? [];
166
+ const filtered = current.filter(t => t.id !== id);
167
+ await storage.set("todos", filtered);
168
+ return filtered.length < current.length;
169
+ }
170
+ };
171
+ // Demonstrate CRUD
172
+ const newTodo = await operations.create("Test declarative CRUD");
173
+ log.info(`Created: ${newTodo.text}`);
174
+ const allTodos = await operations.read();
175
+ log.info(`Total todos: ${allTodos.length}`);
176
+ await operations.update(newTodo.id, { completed: true });
177
+ log.info(`Updated todo ${newTodo.id} to completed`);
178
+ const deleted = await operations.delete(newTodo.id);
179
+ log.info(`Deleted todo: ${deleted}`);
180
+ }
181
+ });
182
+ // Main demonstration
183
+ const demonstrateDeclarativeStorage = async () => {
184
+ const manager = new PluginManager();
185
+ // Register all plugins
186
+ await manager.register(createCounterPlugin());
187
+ await manager.register(createUserPlugin());
188
+ await manager.register(createAnalyticsPlugin());
189
+ await manager.register(createCrudPlugin());
190
+ console.log("\n📊 Storage Demo Complete");
191
+ console.log("Storage files created:");
192
+ console.log(" - storage/plugins/declarative-counter/storage.json");
193
+ console.log(" - storage/plugins/declarative-user/storage.json");
194
+ console.log(" - storage/plugins/declarative-analytics/storage.json");
195
+ console.log(" - storage/plugins/declarative-crud/storage.json");
196
+ };
197
+ // Export for use
198
+ export { createCounterPlugin, createUserPlugin, createAnalyticsPlugin, createCrudPlugin, demonstrateDeclarativeStorage };
199
+ // Run if called directly
200
+ if (import.meta.main) {
201
+ runDemo("Declarative Storage Demo", demonstrateDeclarativeStorage);
202
+ }
203
+ //# sourceMappingURL=storage-declarative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-declarative.js","sourceRoot":"","sources":["../../examples/storage-declarative.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Plugin principal ActionRegistry para carga dinámica
3
+ * Este plugin proporciona el registro de acciones compartido
4
+ */
5
+ import type { IPlugin, PluginContext } from "../src";
6
+ export declare class ActionRegistryPlugin implements IPlugin {
7
+ name: string;
8
+ version: string;
9
+ private actionRegistry;
10
+ constructor();
11
+ onLoad(context: PluginContext): void;
12
+ onUnload(): void;
13
+ }
14
+ //# sourceMappingURL=ActionRegistryPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionRegistryPlugin.d.ts","sourceRoot":"","sources":["../../plugins/ActionRegistryPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAmCrD,qBAAa,oBAAqB,YAAW,OAAO;IAClD,IAAI,SAAqB;IACzB,OAAO,SAAW;IAClB,OAAO,CAAC,cAAc,CAAiB;;IAMvC,MAAM,CAAC,OAAO,EAAE,aAAa;IAa7B,QAAQ;CAGT"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Plugin principal ActionRegistry para carga dinámica
3
+ * Este plugin proporciona el registro de acciones compartido
4
+ */
5
+ // Clase que maneja el registro de acciones
6
+ class ActionRegistry {
7
+ actionHandlers = new Map();
8
+ // Método para registrar acciones
9
+ registerAction(type, handler) {
10
+ this.actionHandlers.set(type, handler);
11
+ }
12
+ // Método para ejecutar acciones
13
+ executeAction(type, ...args) {
14
+ const handler = this.actionHandlers.get(type);
15
+ if (!handler) {
16
+ throw new Error(`Acción no encontrada: ${type}`);
17
+ }
18
+ return handler(...args);
19
+ }
20
+ // Método para listar acciones registradas
21
+ listActions() {
22
+ return Array.from(this.actionHandlers.keys());
23
+ }
24
+ // Método para verificar si una acción existe
25
+ hasAction(type) {
26
+ return this.actionHandlers.has(type);
27
+ }
28
+ }
29
+ // Plugin principal que proporciona el ActionRegistry
30
+ export class ActionRegistryPlugin {
31
+ name = "action-registry";
32
+ version = "1.0.0";
33
+ actionRegistry;
34
+ constructor() {
35
+ this.actionRegistry = new ActionRegistry();
36
+ }
37
+ onLoad(context) {
38
+ context.log.info("ActionRegistry initialized");
39
+ // Register the API manually using the new system
40
+ context.registerApi({
41
+ registerAction: this.actionRegistry.registerAction.bind(this.actionRegistry),
42
+ executeAction: this.actionRegistry.executeAction.bind(this.actionRegistry),
43
+ listActions: this.actionRegistry.listActions.bind(this.actionRegistry),
44
+ hasAction: this.actionRegistry.hasAction.bind(this.actionRegistry),
45
+ actions: this.actionRegistry.listActions()
46
+ });
47
+ }
48
+ onUnload() {
49
+ // Cleanup is handled by the plugin manager
50
+ }
51
+ }
52
+ //# sourceMappingURL=ActionRegistryPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionRegistryPlugin.js","sourceRoot":"","sources":["../../plugins/ActionRegistryPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,2CAA2C;AAC3C,MAAM,cAAc;IACR,cAAc,GAAqC,IAAI,GAAG,EAAE,CAAC;IAEvE,iCAAiC;IACjC,cAAc,CAAC,IAAY,EAAE,OAA4B;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,gCAAgC;IAChC,aAAa,CAAC,IAAY,EAAE,GAAG,IAAW;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,0CAA0C;IAC1C,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,6CAA6C;IAC7C,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAED,qDAAqD;AACrD,MAAM,OAAO,oBAAoB;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC;IACV,cAAc,CAAiB;IAEvC;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,OAAsB;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAE/C,iDAAiD;QACjD,OAAO,CAAC,WAAW,CAAC;YAClB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC5E,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1E,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACtE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAClE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,2CAA2C;IAC7C,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Plugin dinámico de JavaScript que registra acciones en ActionRegistry
3
+ * Se carga automáticamente y registra acciones usando loadPluginsFromDirectory
4
+ */
5
+ export class DynamicJSActionsPlugin {
6
+ name: string;
7
+ version: string;
8
+ dependencies: {
9
+ "action-registry": string;
10
+ };
11
+ onLoad(context: any): Promise<void>;
12
+ registerActions(context: any): Promise<void>;
13
+ onUnload(): void;
14
+ getApi(): {
15
+ name: string;
16
+ actions: string[];
17
+ type: string;
18
+ loaded: string;
19
+ };
20
+ }
21
+ //# sourceMappingURL=DynamicJSActionsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicJSActionsPlugin.d.ts","sourceRoot":"","sources":["../../plugins/DynamicJSActionsPlugin.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;IAEI,aAAgC;IAChC,gBAAsB;IACtB;;MAEC;IAGH,oCAEC;IAED,6CA8BC;IAED,iBAEC;IAGD;;;;;MAOC;CACF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Plugin dinámico de JavaScript que registra acciones en ActionRegistry
3
+ * Se carga automáticamente y registra acciones usando loadPluginsFromDirectory
4
+ */
5
+ export class DynamicJSActionsPlugin {
6
+ constructor() {
7
+ this.name = "dynamic-js-actions";
8
+ this.version = "1.0.0";
9
+ this.dependencies = {
10
+ "action-registry": "1.0.0"
11
+ };
12
+ }
13
+ async onLoad(context) {
14
+ await this.registerActions(context);
15
+ }
16
+ async registerActions(context) {
17
+ try {
18
+ // Obtener el ActionRegistry del contexto compartido
19
+ const actionRegistry = await context.getPlugin("action-registry");
20
+ if (actionRegistry) {
21
+ // Registrar acciones de JavaScript
22
+ actionRegistry.registerAction("js-greet", (name) => {
23
+ return `¡Hola ${name} desde JavaScript!`;
24
+ });
25
+ actionRegistry.registerAction("js-random-int", (min, max) => {
26
+ return Math.floor(Math.random() * (max - min + 1)) + min;
27
+ });
28
+ actionRegistry.registerAction("js-reverse-words", (text) => {
29
+ return text.split(' ').reverse().join(' ');
30
+ });
31
+ actionRegistry.registerAction("js-count-vowels", (text) => {
32
+ return (text.match(/[aeiouáéíóú]/gi) || []).length;
33
+ });
34
+ context.log.info("JavaScript actions registered");
35
+ }
36
+ else {
37
+ context.log.error("ActionRegistry not available, actions will not be registered");
38
+ }
39
+ }
40
+ catch (error) {
41
+ context.log.error("Error registering JavaScript actions:", error);
42
+ }
43
+ }
44
+ onUnload() {
45
+ // Cleanup is handled by the plugin manager
46
+ }
47
+ // Informar qué acciones proporciona este plugin
48
+ getApi() {
49
+ return {
50
+ name: this.name,
51
+ actions: ["js-greet", "js-random-int", "js-reverse-words", "js-count-vowels"],
52
+ type: "javascript-actions",
53
+ loaded: "dynamically"
54
+ };
55
+ }
56
+ }
57
+ //# sourceMappingURL=DynamicJSActionsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicJSActionsPlugin.js","sourceRoot":"","sources":["../../plugins/DynamicJSActionsPlugin.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,sBAAsB;IACjC;QACE,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG;YAClB,iBAAiB,EAAE,OAAO;SAC3B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAO;QAC3B,IAAI,CAAC;YACH,oDAAoD;YACpD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAElE,IAAI,cAAc,EAAE,CAAC;gBACnB,mCAAmC;gBACnC,cAAc,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;oBACjD,OAAO,SAAS,IAAI,oBAAoB,CAAC;gBAC3C,CAAC,CAAC,CAAC;gBAEH,cAAc,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,cAAc,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;oBACzD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;gBAEH,cAAc,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;oBACxD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACrD,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,QAAQ;QACN,2CAA2C;IAC7C,CAAC;IAED,gDAAgD;IAChD,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;YAC7E,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Plugin dinámico de acciones matemáticas
3
+ * Se carga automáticamente y registra acciones en ActionRegistry
4
+ */
5
+ import { Plugin, PluginContext } from "../src";
6
+ export declare class MathPlugin2 extends Plugin {
7
+ name: string;
8
+ version: string;
9
+ dependencies: {
10
+ "action-registry": string;
11
+ };
12
+ onLoad(context: PluginContext): Promise<void>;
13
+ private registerActions;
14
+ onUnload(): void;
15
+ getApi(): {
16
+ name: string;
17
+ actions: string[];
18
+ type: string;
19
+ loaded: string;
20
+ };
21
+ }
22
+ //# sourceMappingURL=DynamicMathActionsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicMathActionsPlugin.d.ts","sourceRoot":"","sources":["../../plugins/DynamicMathActionsPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE/C,qBAAa,WAAY,SAAQ,MAAM;IACrC,IAAI,SAA0B;IAC9B,OAAO,SAAW;IAET,YAAY;;MAEnB;IAEa,MAAM,CAAC,OAAO,EAAE,aAAa;YAI9B,eAAe;IAsCpB,QAAQ;IAKjB,MAAM;;;;;;CAQP"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Plugin dinámico de acciones matemáticas
3
+ * Se carga automáticamente y registra acciones en ActionRegistry
4
+ */
5
+ import { Plugin } from "../src";
6
+ export class MathPlugin2 extends Plugin {
7
+ name = "dynamic-math-actions";
8
+ version = "1.0.0";
9
+ dependencies = {
10
+ "action-registry": "1.0.0"
11
+ };
12
+ async onLoad(context) {
13
+ await this.registerActions(context);
14
+ }
15
+ async registerActions(context) {
16
+ try {
17
+ // Obtener el ActionRegistry del contexto compartido
18
+ const actionRegistry = await context.getPlugin("action-registry");
19
+ if (actionRegistry) {
20
+ // Registrar acciones matemáticas
21
+ actionRegistry.registerAction("sum", (a, b) => {
22
+ return a + b;
23
+ });
24
+ actionRegistry.registerAction("multiply", (a, b) => {
25
+ return a * b;
26
+ });
27
+ actionRegistry.registerAction("power", (base, exponent) => {
28
+ return Math.pow(base, exponent);
29
+ });
30
+ actionRegistry.registerAction("factorial", (n) => {
31
+ if (n < 0)
32
+ return NaN;
33
+ if (n === 0)
34
+ return 1;
35
+ let result = 1;
36
+ for (let i = 1; i <= n; i++) {
37
+ result *= i;
38
+ }
39
+ return result;
40
+ });
41
+ context.log.info("Math actions registered");
42
+ }
43
+ else {
44
+ context.log.error("ActionRegistry not available, actions will not be registered");
45
+ }
46
+ }
47
+ catch (error) {
48
+ context.log.error("Error registering math actions:", error);
49
+ }
50
+ }
51
+ onUnload() {
52
+ // Cleanup is handled by the plugin manager
53
+ }
54
+ // Informar qué acciones proporciona este plugin
55
+ getApi() {
56
+ return {
57
+ name: this.name,
58
+ actions: ["sum", "multiply", "power", "factorial"],
59
+ type: "math-actions",
60
+ loaded: "dynamically"
61
+ };
62
+ }
63
+ }
64
+ //# sourceMappingURL=DynamicMathActionsPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicMathActionsPlugin.js","sourceRoot":"","sources":["../../plugins/DynamicMathActionsPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AAE/C,MAAM,OAAO,WAAY,SAAQ,MAAM;IACrC,IAAI,GAAG,sBAAsB,CAAC;IAC9B,OAAO,GAAG,OAAO,CAAC;IAET,YAAY,GAAG;QACtB,iBAAiB,EAAE,OAAO;KAC3B,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,OAAsB;QAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,OAAsB;QAClD,IAAI,CAAC;YACH,oDAAoD;YACpD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAElE,IAAI,cAAc,EAAE,CAAC;gBACnB,iCAAiC;gBACjC,cAAc,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;oBAC5D,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,CAAC;gBAEH,cAAc,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;oBACjE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,CAAC;gBAEH,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;oBACxE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;gBAEH,cAAc,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE;oBACvD,IAAI,CAAC,GAAG,CAAC;wBAAE,OAAO,GAAG,CAAC;oBACtB,IAAI,CAAC,KAAK,CAAC;wBAAE,OAAO,CAAC,CAAC;oBACtB,IAAI,MAAM,GAAG,CAAC,CAAC;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC5B,MAAM,IAAI,CAAC,CAAC;oBACd,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,2CAA2C;IAC7C,CAAC;IAED,gDAAgD;IAChD,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;YAClD,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,aAAa;SACtB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Plugin dinámico de acciones de texto
3
+ * Se carga automáticamente y registra acciones en ActionRegistry
4
+ */
5
+ import type { IPlugin, PluginContext } from "../src";
6
+ export declare class DynamicTextActionsPlugin implements IPlugin {
7
+ name: string;
8
+ version: string;
9
+ dependencies: {
10
+ "action-registry": string;
11
+ };
12
+ onLoad(context: PluginContext): Promise<void>;
13
+ private registerActions;
14
+ onUnload(): void;
15
+ getApi(): {
16
+ name: string;
17
+ actions: string[];
18
+ type: string;
19
+ loaded: string;
20
+ };
21
+ }
22
+ //# sourceMappingURL=DynamicTextActionsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicTextActionsPlugin.d.ts","sourceRoot":"","sources":["../../plugins/DynamicTextActionsPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAErD,qBAAa,wBAAyB,YAAW,OAAO;IACtD,IAAI,SAA0B;IAC9B,OAAO,SAAW;IAElB,YAAY;;MAEV;IAEI,MAAM,CAAC,OAAO,EAAE,aAAa;YAIrB,eAAe;IAoC7B,QAAQ;IAKR,MAAM;;;;;;CAQP"}