plug-code 2.0.4 → 2.3.0

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 (83) hide show
  1. package/LICENSE +11 -5
  2. package/README.md +203 -70
  3. package/dist/core/helpers/core.d.ts +1 -0
  4. package/dist/core/helpers/core.d.ts.map +1 -0
  5. package/dist/core/helpers/core.js +1 -0
  6. package/dist/core/helpers/core.js.map +1 -0
  7. package/dist/core/hooks/plcHooks.d.ts +1 -0
  8. package/dist/core/hooks/plcHooks.d.ts.map +1 -0
  9. package/dist/core/hooks/plcHooks.js +1 -0
  10. package/dist/core/hooks/plcHooks.js.map +1 -0
  11. package/dist/core/plcAPI.d.ts +3 -1
  12. package/dist/core/plcAPI.d.ts.map +1 -0
  13. package/dist/core/plcAPI.js +36 -13
  14. package/dist/core/plcAPI.js.map +1 -0
  15. package/dist/core/plcPipeline.d.ts +1 -0
  16. package/dist/core/plcPipeline.d.ts.map +1 -0
  17. package/dist/core/plcPipeline.js +1 -0
  18. package/dist/core/plcPipeline.js.map +1 -0
  19. package/dist/core/plcScheduler.d.ts +1 -0
  20. package/dist/core/plcScheduler.d.ts.map +1 -0
  21. package/dist/core/plcScheduler.js +1 -0
  22. package/dist/core/plcScheduler.js.map +1 -0
  23. package/dist/core/plcStore.d.ts +1 -0
  24. package/dist/core/plcStore.d.ts.map +1 -0
  25. package/dist/core/plcStore.js +1 -0
  26. package/dist/core/plcStore.js.map +1 -0
  27. package/dist/core/ui/plcCore.d.ts +1 -0
  28. package/dist/core/ui/plcCore.d.ts.map +1 -0
  29. package/dist/core/ui/plcCore.js +1 -0
  30. package/dist/core/ui/plcCore.js.map +1 -0
  31. package/dist/core/ui/plcErrorBoundary.d.ts +1 -0
  32. package/dist/core/ui/plcErrorBoundary.d.ts.map +1 -0
  33. package/dist/core/ui/plcErrorBoundary.js +1 -0
  34. package/dist/core/ui/plcErrorBoundary.js.map +1 -0
  35. package/dist/core/ui/plcInspector.d.ts +1 -0
  36. package/dist/core/ui/plcInspector.d.ts.map +1 -0
  37. package/dist/core/ui/plcInspector.js +1 -0
  38. package/dist/core/ui/plcInspector.js.map +1 -0
  39. package/dist/core/ui/plcLayout.d.ts +1 -0
  40. package/dist/core/ui/plcLayout.d.ts.map +1 -0
  41. package/dist/core/ui/plcLayout.js +3 -1
  42. package/dist/core/ui/plcLayout.js.map +1 -0
  43. package/dist/core/ui/plcSlotRenderer.d.ts +7 -0
  44. package/dist/core/ui/plcSlotRenderer.d.ts.map +1 -0
  45. package/dist/core/ui/plcSlotRenderer.js +11 -0
  46. package/dist/core/ui/plcSlotRenderer.js.map +1 -0
  47. package/dist/core.d.ts +5 -24
  48. package/dist/core.d.ts.map +1 -0
  49. package/dist/core.js +10 -1
  50. package/dist/core.js.map +1 -0
  51. package/dist/index.d.ts +1 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +1 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/simple.d.ts +42 -0
  56. package/dist/simple.d.ts.map +1 -0
  57. package/dist/simple.js +88 -0
  58. package/dist/simple.js.map +1 -0
  59. package/dist/types/core/api.d.ts +1 -0
  60. package/dist/types/core/api.d.ts.map +1 -0
  61. package/dist/types/core/api.js +1 -0
  62. package/dist/types/core/api.js.map +1 -0
  63. package/dist/types/core/general.d.ts +2 -2
  64. package/dist/types/core/general.d.ts.map +1 -0
  65. package/dist/types/core/general.js +1 -0
  66. package/dist/types/core/general.js.map +1 -0
  67. package/dist/types/core/index.d.ts +1 -0
  68. package/dist/types/core/index.d.ts.map +1 -0
  69. package/dist/types/core/index.js +1 -0
  70. package/dist/types/core/index.js.map +1 -0
  71. package/dist/types/core/ui.d.ts +1 -0
  72. package/dist/types/core/ui.d.ts.map +1 -0
  73. package/dist/types/core/ui.js +1 -0
  74. package/dist/types/core/ui.js.map +1 -0
  75. package/dist/types/core.d.ts +45 -0
  76. package/dist/types/core.d.ts.map +1 -0
  77. package/dist/types/core.js +2 -0
  78. package/dist/types/core.js.map +1 -0
  79. package/dist/types/registry.d.ts +1 -0
  80. package/dist/types/registry.d.ts.map +1 -0
  81. package/dist/types/registry.js +1 -0
  82. package/dist/types/registry.js.map +1 -0
  83. package/package.json +27 -3
package/LICENSE CHANGED
@@ -4,14 +4,20 @@ Copyright (c) 2026 AlaunS
4
4
 
5
5
  All rights reserved.
6
6
 
7
- Permission is hereby granted to use this software for personal and commercial projects.
8
- You may modify the software for your own internal use.
7
+ 1. GRANT OF LICENSE
8
+ Permission is hereby granted to use this software for personal and commercial projects.
9
+ You may modify the software for your own internal use and include compiled versions
10
+ of this software within your own applications.
9
11
 
12
+ 2. RESTRICTIONS
10
13
  You may NOT:
11
- - Redistribute this software or any modified version of it.
12
- - Sell, sublicense, publish, or share this software.
13
- - Use this software as the basis for another framework, library, or competing product.
14
+ - Redistribute, sell, sublicense, or share this software in its source code form
15
+ or as a standalone library/package.
16
+ - Use this software, in whole or in part, as the basis for creating another framework,
17
+ library, SDK, or competing development tool.
18
+ - Reverse engineer, decompile, or disassemble the software to create a derivative product.
14
19
 
20
+ 3. DISCLAIMER
15
21
  This software is provided "as is", without warranty of any kind, express or implied,
16
22
  including but not limited to the warranties of merchantability, fitness for a
17
23
  particular purpose and noninfringement. In no event shall the author be liable
package/README.md CHANGED
@@ -1,19 +1,23 @@
1
- # 🔌 Plug&Code (v2)
1
+ # 🔌 Plug&Code (v2.1.2)
2
2
 
3
- **Plug&Code** is a **high-performance**, strongly-typed, **modular React framework**.
4
- It’s designed for complex enterprise apps (Dashboards, CRMs, ERPs), decoupling **logic**, **UI**, and **data** via a **Feature-based architecture**.
3
+ **Plug&Code** is a **high-performance**, strongly-typed, **modular React framework**. It decouples **logic**, **UI**, and **data** via a **Feature-based architecture**.
5
4
 
6
- > **v2 Highlights:** Zero-config TypeScript (Schema-based Factory), native virtualization, immutable state management with Immer, and lazy-loaded modules.
5
+ > **New in v2.1.2:** Choose your path! Start instantly with **Simple Mode** (Zero Config) or scale massively with **Enterprise Mode** (Schema-Based).
7
6
 
8
7
  ---
9
8
 
10
9
  ## 🚀 Key Features
11
10
 
12
- * 🛡️ **Schema-Based Typing:** Define your app structure in a simple TS type and get **autocompletion instantly** in hooks and API methods.
13
- * 🧩 **Feature-First Architecture:** Organize code in portable `ModuleManifests` that encapsulate **state**, **logic**, and **UI**.
14
- * **Native Performance:** Built-in virtual rendering (`markVirtual`) and priority management via **Scheduler**.
15
- * 🧠 **Reactive State Machine:** Global & module-level state with **Immer** and granular subscriptions.
16
- * 🎨 **UI Composition Pipeline:** Slots system with **multiple injections**, **priorities**, and **keepAlive** support.
11
+ * **🛡️ Dual Mode:**
12
+ * **Simple:** Zero-boilerplate, inferred types, ideal for MVPs.
13
+ * **Enterprise:** Schema-first, strict contracts, Registry Pattern for large teams.
14
+
15
+
16
+ * **🧩 Feature-First Architecture:** Organize code in portable `ModuleManifests` that encapsulate state, logic, and UI.
17
+ * **⚡ Native Performance:** Built-in virtual rendering (`markVirtual`) and priority management via **Scheduler**.
18
+ * **🧠 Reactive State Machine:** Global & module-level state with **Immer** and granular subscriptions.
19
+ * **🎨 UI Composition Pipeline:** Slots system with **multiple injections**, **priorities**, and **keepAlive** support.
20
+ * **🛡️ Crash-Proof Slots:** Built-in **Error Boundaries** isolate every injected component. If one module crashes, the rest of the application stays alive.
17
21
 
18
22
  ---
19
23
 
@@ -28,13 +32,106 @@ yarn add plug-code immer
28
32
 
29
33
  ---
30
34
 
31
- ## 🛡️ The Type Schema
35
+ ## Mode A: Simple Mode (Zero Config)
36
+
37
+ Perfect for prototypes, small apps, or when you just need clean state management without complex architecture. Import from `plug-code/simple`.
38
+
39
+ ### 1️⃣ Setup Store & Actions
40
+
41
+ Use `createSimplePlugC` to define your state. Types are inferred automatically from your initial state.
42
+
43
+ ```tsx
44
+ // store.ts
45
+ import { createSimplePlugC } from 'plug-code/simple';
46
+
47
+ export const { Provider, useStore, useAction, createModule } = createSimplePlugC({
48
+ initialState: {
49
+ count: 0,
50
+ user: { name: "Guest", loggedIn: false }
51
+ },
52
+ actions: {
53
+ // Direct mutable updates with Immer draft
54
+ increment: (draft) => { draft.count++ },
55
+ login: (draft, name: string) => {
56
+ draft.user.name = name;
57
+ draft.user.loggedIn = true;
58
+ },
59
+ // Async actions supported
60
+ fetchData: async (draft) => {
61
+ // ... logic
62
+ }
63
+ },
64
+ options: { debug: true }
65
+ });
66
+
67
+ ```
68
+
69
+ ### 2️⃣ Use in Components
70
+
71
+ ```tsx
72
+ // App.tsx
73
+ import { Provider, useStore, useAction } from './store';
74
+
75
+ const Counter = () => {
76
+ const count = useStore(s => s.count); // Auto-typed as number
77
+ const increment = useAction("increment");
78
+
79
+ return <button onClick={() => increment()}>Count: {count}</button>;
80
+ }
81
+
82
+ export default () => (
83
+ <Provider>
84
+ <Counter />
85
+ </Provider>
86
+ );
87
+
88
+ ```
89
+
90
+ ### 3️⃣ Modular Modules (The "Plug" Concept)
91
+
92
+ Need to encapsulate a module? Use `createModule` (returned from your store setup) to bundle State, View, and Logic into a portable unit.
93
+
94
+ ```tsx
95
+ // modules/ChatFeature.tsx
96
+ import { createModule } from '../store'; // Import from YOUR store
97
+
98
+ export const ChatFeature = createModule({
99
+ name: 'chat',
100
+ state: { messages: [] as string[] },
101
+ actions: {
102
+ // Arguments: (draft, payload, rootActions)
103
+ send: (draft, msg: string, root) => {
104
+ draft.messages.push(msg);
105
+ // You can even call root actions here:
106
+ // root.increment();
107
+ }
108
+ },
109
+ // Optional: Define a default View
110
+ view: ({ state, actions }) => (
111
+ <div>
112
+ {state.messages.map(m => <div key={m}>{m}</div>)}
113
+ <button onClick={() => actions.send("Hello!")}>Send</button>
114
+ </div>
115
+ )
116
+ });
117
+
118
+ // Usage inside App.tsx:
119
+ // <ChatFeature.View />
120
+
121
+ ```
122
+
123
+ ---
124
+
125
+ ## 🛡️ Mode B: Enterprise Mode (Schema-Based)
126
+
127
+ For complex Dashboards, ERPs, or large teams. Define a strict **Schema Contract** to enforce architecture across the entire application.
128
+
129
+ ### 1️⃣ The Type Schema
32
130
 
33
- Forget about complex `declare module` augmentations. In v2, you simply define the shape of your application in a TypeScript object type.
131
+ Define the shape of your application in a TypeScript object type.
34
132
 
35
133
  ```ts
36
134
  // types/AppSchema.ts
37
-
38
135
  export type AppSchema = {
39
136
  // 1. App State
40
137
  store: {
@@ -57,41 +154,37 @@ export type AppSchema = {
57
154
 
58
155
  ```
59
156
 
60
- ---
157
+ ### 2️⃣ Initialize the System
61
158
 
62
- ## 🚀 Quick Start
159
+ Pass your Schema to the factory. This returns **strongly-typed hooks** bound to your specific definitions.
63
160
 
64
- ### 1️⃣ Initialize the System
65
-
66
- Use the `createPlugC` factory passing your Schema. This returns **strongly-typed hooks** bound to your specific application definitions.
67
-
68
- ```tsx
161
+ ```ts
69
162
  // system.ts
70
163
  import { createPlugC } from 'plug-code';
71
164
  import type { AppSchema } from './types/AppSchema';
72
165
 
73
166
  // ✨ MAGIC HAPPENS HERE: We pass the Schema to the factory
74
167
  export const {
75
- api,
76
- SystemPlcRoot,
77
- useStore,
78
- useCommand,
79
- useSlot
168
+ api,
169
+ SystemPlcRoot,
170
+ useStore,
171
+ useCommand,
172
+ useSlot
80
173
  } = createPlugC<AppSchema>();
81
174
 
82
175
  ```
83
176
 
84
- ### 2️⃣ Create a Feature Module
177
+ ### 3️⃣ Create a Feature Module
85
178
 
86
- Features use the typed hooks generated in the previous step.
179
+ Modules use the typed hooks generated in the previous step.
87
180
 
88
181
  ```tsx
89
- // features/UsersFeature.tsx
182
+ // modules/UsersFeature.tsx
90
183
  import { ModuleManifest } from 'plug-code';
91
- import { useStore, useCommand } from '../system';
184
+ import { useStore, useCommand } from '../system'; // Import YOUR typed hooks
92
185
 
93
186
  const UserList = () => {
94
- // TS knows "users:list" returns an array of users automatically
187
+ // TS knows "users:list" returns User[] automatically
95
188
  const users = useStore("users:list");
96
189
  const deleteCmd = useCommand("users:delete");
97
190
 
@@ -100,7 +193,7 @@ const UserList = () => {
100
193
  {users.map(u => (
101
194
  <li key={u.id}>
102
195
  {u.name}
103
- {/* TS enforces the correct payload { id: string } */}
196
+ {/* TS enforces payload { id: string } */}
104
197
  <button onClick={() => deleteCmd({ id: u.id })}>x</button>
105
198
  </li>
106
199
  ))}
@@ -112,51 +205,58 @@ export const UsersFeature: ModuleManifest = {
112
205
  name: "users",
113
206
  state: { "users:list": [] },
114
207
  commands: {
115
- "users:delete": ({ id }) => {
116
- console.log("Deleting", id);
117
- return true;
118
- }
208
+ "users:delete": ({ id }) => { console.log("Deleting", id); return true; }
119
209
  },
120
210
  slots: {
121
211
  "main-layout": [{ id: "user-list-view", component: UserList, priority: 10 }]
122
212
  },
123
- onLoad: (api) => {
124
- // Enable virtualization for large lists
213
+ onLoad: () => {
214
+ // Enable virtualization for large lists (10k+ items)
125
215
  api.markVirtual("main-layout", { itemHeight: 50 });
126
216
  }
127
217
  };
128
218
 
129
219
  ```
130
220
 
131
- ### 3️⃣ Render the App
221
+ ### 4️⃣ Register & Render
222
+
223
+ Connect your modules to the main application using `api.registerModule`.
132
224
 
133
225
  ```tsx
134
226
  // App.tsx
135
- import { api, SystemPlcRoot } from './system';
136
- import { UsersFeature } from './features/UsersFeature';
227
+ import React from 'react';
228
+ import { api, SystemPlcRoot } from './system'; // Singleton created in Step 2
229
+ import { UsersFeature } from './modules/UsersFeature';
137
230
 
138
- // Load features
231
+ // 🔌 Load the Feature into the runtime
232
+ // This initializes state, registers commands, and injects the UI into 'main-layout'
139
233
  api.registerModule(UsersFeature);
140
234
 
141
- const App = () => (
142
- <SystemPlcRoot>
143
- <div className="app">
144
- {/* Type-safe rendering */}
145
- {api.render("main-layout")}
146
- </div>
147
- </SystemPlcRoot>
148
- );
235
+ export const App = () => {
236
+ return (
237
+ <SystemPlcRoot>
238
+ <div className="layout-container">
239
+ <h1>My Dashboard</h1>
240
+
241
+ {/* Render the slot where UsersFeature injected its component */}
242
+ <div className="content">
243
+ {api.render("main-layout")}
244
+ </div>
245
+ </div>
246
+ </SystemPlcRoot>
247
+ );
248
+ };
149
249
 
150
250
  ```
151
251
 
252
+ ---
253
+
152
254
  ## 📚 API Reference
153
255
 
154
- The `api` object exposes the full power of the Plug&Code runtime.
256
+ Regardless of the mode, the `api` object exposes the full power of the Plug&Code runtime.
155
257
 
156
258
  ### 🧬 Root State Management
157
259
 
158
- Methods to interact with the global registry keys.
159
-
160
260
  * **`createStore<K>(key, initial)`**
161
261
  Initializes a key in the root store.
162
262
  * **`getStore<K>(key)`**
@@ -165,33 +265,29 @@ Returns the current snapshot of a value in the root store.
165
265
  Updates the state.
166
266
  * `updater`: Can be a raw value or a callback `(draft) => void` (using **Immer**).
167
267
  * `priority`: Execution priority (`HIGH`, `MED`, `LOW`).
168
- * `useTransition`: Wraps the update in a React transition.
268
+ * `useTransition`: Wraps the update in a React transition for concurrent mode.
269
+
169
270
 
170
271
 
171
272
  ### 📦 Feature State (Substores)
172
273
 
173
- Methods to manage isolated state within features (e.g., `"users:list"`).
274
+ Methods to manage isolated state within modules (e.g., `"users:list"`).
174
275
 
175
276
  * **`createSubstore<F, K>(substore, key, initial)`**
176
- Initializes a specific key within a feature namespace.
277
+ Initializes a specific key within a module namespace.
177
278
  * **`getSubstore<F, K>(substore, key)`**
178
- Gets a value from a feature substore.
279
+ Gets a value from a module substore.
179
280
  * **`setSubstore<F, K>(substore, key, updater, ...)`**
180
- Updates a value in a feature substore using Immer drafts.
281
+ Updates a value in a module substore using Immer drafts.
181
282
 
182
283
  ### 🧠 Reactivity & Computed Values
183
284
 
184
285
  * **`deriveStore(outputKey, outputSlot, dependencies, calculator)`**
185
286
  Creates a **computed value** that automatically updates when dependencies change.
186
- * `outputKey`: The key where the result will be stored.
187
- * `dependencies`: Array of store keys to listen to.
188
- * `calculator`: Pure function `(...inputs) => result`.
189
-
190
-
191
287
  * **`deriveSubstore(substore, outputKey, outputSlot, dependencies, calculator)`**
192
- Same as `deriveStore` but scoped to a specific feature substore.
288
+ Same as `deriveStore` but scoped to a specific module substore.
193
289
  * **`watch(key, selector, callback)`**
194
- Subscribes to changes in any store/substore key. useful for side effects (logging, analytics, etc).
290
+ Subscribes to changes in any store/substore key. Useful for side effects (logging, analytics).
195
291
  * **`watchAllStores(definitions, callback)`**
196
292
  Watches multiple keys across different stores/substores and triggers a callback when the combined state changes.
197
293
 
@@ -215,7 +311,18 @@ Injects a React component into a UI Slot.
215
311
  * **`render(slot, props)`**
216
312
  Renders the content of a slot.
217
313
  * **`wrap(slot, wrapper)`**
218
- Wraps a slot with a container component (e.g., adding a `div` or `ContextProvider` around all slot items).
314
+ Applies a "Middleware Component" to an entire slot. Useful for injecting **Theme Providers**, **Suspense Boundaries**, or **Security Contexts** around a group of plugins.
315
+ ```tsx
316
+ // Example: Wrap the entire dashboard sidebar in a ThemeProvider
317
+ api.wrap("sidebar", (children) => (
318
+ <ThemeProvider theme={darkTheme}>
319
+ {children}
320
+ </ThemeProvider>
321
+ ));
322
+
323
+ ```
324
+
325
+
219
326
  * **`after(slot, targetId, newId, component)`**
220
327
  Injects a component immediately after a specific target ID within a slot.
221
328
  * **`markVirtual(slot, config)`**
@@ -242,16 +349,42 @@ Runs a synchronous pipeline. Throws if the pipeline contains async steps.
242
349
  * **`registerModule(manifest)`**
243
350
  Loads a `ModuleManifest` (State, UI, Commands) into the runtime.
244
351
  * **`loadFeature(importer)`**
245
- Helper for lazy-loading features (e.g., `() => import('./features/MyFeature')`).
352
+ Helper for lazy-loading modules (e.g., `() => import('./modules/MyFeature')`).
246
353
  * **`createSelector(extractor, calculator)`**
247
354
  Creates a memoized selector for use with hooks or watchers.
355
+
248
356
  ---
249
357
 
250
- ## 🌟 Best Practices
358
+ ## 🛡️ Safety & Reliability
251
359
 
252
- * **Schema First:** Define your data shape in `AppSchema` before coding.
253
- * **Atomic Features:** A feature should contain all it needs (Store, UI, Commands).
254
- * **Data-Driven UI:** Change the store, let watchers/hooks update the view.
255
- * **Use Virtualization:** For large or growing lists, simply call `api.markVirtual` in `onLoad`.
360
+ Plug&Code is built for stability. In large modular applications, a single buggy plugin shouldn't take down the entire dashboard.
361
+
362
+ ### 🛑 Automatic Error Boundaries
363
+
364
+ Every component injected into a Slot is automatically wrapped in a `SlotErrorBoundary`.
365
+
366
+ * **Isolation:** If a module throws an error during render, only that specific slot item is replaced with a fallback error UI.
367
+ * **Logging:** Errors are caught and logged automatically, making debugging modular systems easier.
368
+
369
+ ### 🚦 Concurrent Mode & Scheduler
370
+
371
+ The framework manages updates using an internal **Priority Scheduler** fully compatible with **React 18**.
372
+
373
+ * **Updates:** `setStore` supports `useTransition: true` to keep the UI responsive during heavy state updates.
374
+ * **Priorities:** You can schedule updates as `HIGH` (immediate interaction), `MED` (default), or `LOW` (background sync) to prevent frame drops.
375
+
376
+ ---
377
+
378
+ ## ⚡ Performance Internals
379
+
380
+ * **Virtualization:** `api.markVirtual` isn't just a helper; it swaps the rendering engine for that slot to a windowing system capable of handling **10,000+ items** with consistent frame rates.
381
+ * **Smart caching:** The `deriveStore` and pipeline `transform` systems use **Dependency Tracking** to only re-calculate when specific used keys change, avoiding zombie-child re-renders.
256
382
 
257
383
  ---
384
+
385
+ ## 🌟 Best Practices (Enterprise Mode)
386
+
387
+ * **Schema First:** Define your data shape in `AppSchema` before coding.
388
+ * **Atomic Modules:** A module should contain all it needs (Store, UI, Commands).
389
+ * **Data-Driven UI:** Change the store, let watchers/hooks update the view.
390
+ * **Use Virtualization:** For large or growing lists, simply call `api.markVirtual` in `onLoad`.
@@ -1,2 +1,3 @@
1
1
  export declare function isEqual(a: any, b: any): boolean;
2
2
  export declare function shallowCompare(obj1: any, obj2: any): boolean;
3
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/helpers/core.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAW/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAU5D"}
@@ -30,3 +30,4 @@ export function shallowCompare(obj1, obj2) {
30
30
  }
31
31
  return true;
32
32
  }
33
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/core/helpers/core.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,CAAM,EAAE,CAAM;IAClC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAS,EAAE,IAAS;IAC/C,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -13,3 +13,4 @@ export declare function useSlot<K extends SlotKey>(slotName: K): (props?: SlotPr
13
13
  export declare function useTransientStore<K extends StoreKey, T>(key: K, selector: (state: StoreValue<K>) => T, effect: (value: T) => void, deps?: any[]): void;
14
14
  export declare function useTransientStore<F extends FeatureKey, K extends keyof SafeFeatureValue<F, K> & string, T>(key: `${F}:${K}`, selector: (state: SafeFeatureValue<F, K>) => T, effect: (value: T) => void, deps?: any[]): void;
15
15
  export {};
16
+ //# sourceMappingURL=plcHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plcHooks.d.ts","sourceRoot":"","sources":["../../../src/core/hooks/plcHooks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkE,MAAM,OAAO,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EACH,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,SAAS,EACT,eAAe,EACf,UAAU,EACb,MAAM,sBAAsB,CAAC;AAE9B,KAAK,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,eAAe,GACvD,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAClE,GAAG,CAAC;AAIV,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE5E,CAAC;AASF,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAC1D,GAAG,EAAE,CAAC,EACN,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GACtC,CAAC,CAAC;AAEL,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EACtH,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAC/C,CAAC,CAAC;AAsBL,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,SAAS,EAAE,CAAC,cAGnC,UAAU,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAG9D;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,IAE1C,QAAQ,SAAS,CAAC,CAAC,CAAC,qBAC/B;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EACnD,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EACrC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,GACb,IAAI,CAAC;AAER,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EACtG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC1B,IAAI,CAAC,EAAE,GAAG,EAAE,GACb,IAAI,CAAC"}
@@ -45,3 +45,4 @@ export function useTransientStore(key, selector, effect, deps = []) {
45
45
  return unsubscribe;
46
46
  }, [api, key, ...deps]);
47
47
  }
48
+ //# sourceMappingURL=plcHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plcHooks.js","sourceRoot":"","sources":["../../../src/core/hooks/plcHooks.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAmBvF,MAAM,UAAU,GAAG,aAAa,CAAgB,IAAI,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAyD,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnG,OAAO,KAAC,UAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YAAG,QAAQ,GAAuB,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG;QACJ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,OAAO,GAAG,CAAC;AACf,CAAC,CAAA;AAYD,MAAM,UAAU,QAAQ,CAAI,GAAW,EAAE,WAA6B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9B,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;YAC1D,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAU,CAAC,CAAC;QAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAuB,SAAY;IACzD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,OAAuB,EAAyB,EAAE,CACtD,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,OAAO,CAAoB,QAAW;IAClD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,CAAC,KAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AAgBD,MAAM,UAAU,iBAAiB,CAC7B,GAAW,EACX,QAA2B,EAC3B,MAA0B,EAC1B,OAAc,EAAE;IAEhB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtD,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC"}
@@ -19,10 +19,11 @@ export declare class PlcAPI {
19
19
  private scheduler;
20
20
  layout: PlcLayout;
21
21
  private compiledPipelines;
22
+ private moduleAssets;
22
23
  private receiveCache;
23
24
  private commands;
24
25
  private activeDependencyTracker;
25
- private loadedFeatures;
26
+ private loadedModules;
26
27
  constructor();
27
28
  createStore<K extends StoreKey>(key: K, initial: StoreValue<K>): void;
28
29
  getStore<K extends StoreKey>(key: K): StoreValue<K>;
@@ -80,3 +81,4 @@ export declare class PlcAPI {
80
81
  createSelector<S, R>(extractor: (state: S) => any[], calculator: (...args: any[]) => R): (state: S) => R;
81
82
  }
82
83
  export {};
84
+ //# sourceMappingURL=plcAPI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plcAPI.d.ts","sourceRoot":"","sources":["../../src/core/plcAPI.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,13 @@ export class PlcAPI {
10
10
  scheduler;
11
11
  layout;
12
12
  compiledPipelines = new Map();
13
+ moduleAssets = new Map();
13
14
  receiveCache = new LRUCache(300);
14
15
  // Comandos registry
15
16
  commands = new Map();
16
17
  activeDependencyTracker = null;
17
- // Loaded features manager
18
- loadedFeatures = new Set();
18
+ // Loaded modules manager
19
+ loadedModules = new Set();
19
20
  constructor() {
20
21
  this.store = new PlcStore();
21
22
  this.pipeline = new PlcPipeline();
@@ -285,8 +286,8 @@ export class PlcAPI {
285
286
  }
286
287
  watch(key, selector, callback) {
287
288
  if (key.includes(":")) {
288
- const [feature, subKey] = key.split(":");
289
- return this.watchSubstore(feature, subKey, selector, callback);
289
+ const [module, subKey] = key.split(":");
290
+ return this.watchSubstore(module, subKey, selector, callback);
290
291
  }
291
292
  return this.watchStore(key, selector, callback);
292
293
  }
@@ -416,16 +417,22 @@ export class PlcAPI {
416
417
  // Modules
417
418
  // ----------------------
418
419
  registerModule(manifest) {
419
- if (this.loadedFeatures.has(manifest.name))
420
- return;
421
- if (manifest.state) {
420
+ const moduleName = manifest.name;
421
+ const isUpdate = this.loadedModules.has(moduleName);
422
+ const previousAssets = this.moduleAssets.get(moduleName) || [];
423
+ const currentAssets = [];
424
+ this.moduleAssets.set(moduleName, currentAssets);
425
+ const track = (slot, id) => {
426
+ currentAssets.push({ slot, id });
427
+ };
428
+ if (manifest.state && !isUpdate) {
422
429
  Object.entries(manifest.state).forEach(([key, val]) => {
423
- this.createSubstore(manifest.name, key, val);
430
+ this.createSubstore(moduleName, key, val);
424
431
  });
425
432
  }
426
433
  if (manifest.commands) {
427
434
  Object.entries(manifest.commands).forEach(([cmdId, fn]) => {
428
- const fullId = cmdId.includes(":") ? cmdId : `${manifest.name}:${cmdId}`;
435
+ const fullId = cmdId.includes(":") ? cmdId : `${moduleName}:${cmdId}`;
429
436
  this.commands.set(fullId, fn);
430
437
  });
431
438
  }
@@ -433,14 +440,29 @@ export class PlcAPI {
433
440
  Object.entries(manifest.slots).forEach(([slotName, components]) => {
434
441
  components.forEach(comp => {
435
442
  this.register(slotName, comp.id, comp.component, comp.priority, comp.keepAlive);
443
+ track(slotName, comp.id);
436
444
  });
437
445
  });
438
446
  }
439
447
  if (manifest.onLoad) {
440
- manifest.onLoad(this);
448
+ manifest.onLoad();
449
+ }
450
+ if (isUpdate) {
451
+ previousAssets.forEach(prev => {
452
+ const stillExists = currentAssets.some(curr => curr.slot === prev.slot && curr.id === prev.id);
453
+ if (!stillExists) {
454
+ console.debug(`[PlcAPI] Cleaning up removed slot item: ${prev.slot} / ${prev.id}`);
455
+ this.layout.unregister(prev.slot, prev.id);
456
+ }
457
+ });
458
+ }
459
+ this.loadedModules.add(moduleName);
460
+ if (!isUpdate) {
461
+ console.debug(`[PlcAPI] Module loaded: ${moduleName}`);
462
+ }
463
+ else {
464
+ console.debug(`[PlcAPI] Module updated (HMR): ${moduleName}`);
441
465
  }
442
- this.loadedFeatures.add(manifest.name);
443
- console.debug(`[PlcAPI] Feature loaded: ${manifest.name}`);
444
466
  }
445
467
  async loadFeature(importer) {
446
468
  try {
@@ -448,7 +470,7 @@ export class PlcAPI {
448
470
  this.registerModule(module.default);
449
471
  }
450
472
  catch (err) {
451
- console.error(`[PlcAPI] Failed to load feature`, err);
473
+ console.error(`[PlcAPI] Failed to load module`, err);
452
474
  throw err;
453
475
  }
454
476
  }
@@ -470,3 +492,4 @@ export class PlcAPI {
470
492
  };
471
493
  }
472
494
  }
495
+ //# sourceMappingURL=plcAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plcAPI.js","sourceRoot":"","sources":["../../src/core/plcAPI.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ export declare class PlcPipeline {
6
6
  getTransforms(channel: string): transformerType[];
7
7
  compilePipeline(channel: string): (input: any, ctx: any) => Promise<any>;
8
8
  }
9
+ //# sourceMappingURL=plcPipeline.d.ts.map