@nextsparkjs/core 0.1.0-beta.14 → 0.1.0-beta.15

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.
@@ -1,4 +1,4 @@
1
- import type { SerializableEntityConfig } from '../../../lib/entities/serialization';
1
+ import { type SerializableEntityConfig } from '../../../lib/entities/serialization';
2
2
  interface DashboardShellProps {
3
3
  children: React.ReactNode;
4
4
  entities: SerializableEntityConfig[];
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardShell.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/layouts/DashboardShell.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAEnF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,EAAE,wBAAwB,EAAE,CAAA;CACrC;AAsCD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAQzE"}
1
+ {"version":3,"file":"DashboardShell.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/layouts/DashboardShell.tsx"],"names":[],"mappings":"AASA,OAAO,EAA2B,KAAK,wBAAwB,EAAE,MAAM,qCAAqC,CAAA;AAG5G,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,EAAE,wBAAwB,EAAE,CAAA;CACrC;AAgDD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAQzE"}
@@ -1,13 +1,24 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
3
4
  import { Sidebar } from "./Sidebar";
4
5
  import { TopNavbar } from "./TopNavbar";
5
6
  import { MobileTopBar } from "../mobile/MobileTopBar";
6
7
  import { MobileBottomNav } from "../mobile/MobileBottomNav";
7
8
  import { SidebarProvider, useSidebar } from "../../../contexts/sidebar-context";
8
9
  import { cn } from "../../../lib/utils";
10
+ import { deserializeEntityConfig } from "../../../lib/entities/serialization";
11
+ import { setServerEntities } from "../../../lib/entities/registry.client";
9
12
  function DashboardShellContent({ children, entities }) {
10
13
  const { isCollapsed } = useSidebar();
14
+ const hydratedRef = useRef(false);
15
+ useEffect(() => {
16
+ if (!hydratedRef.current && entities.length > 0) {
17
+ const deserializedEntities = entities.map(deserializeEntityConfig);
18
+ setServerEntities(deserializedEntities);
19
+ hydratedRef.current = true;
20
+ }
21
+ }, [entities]);
11
22
  return /* @__PURE__ */ jsxs("div", { className: "min-h-screen", children: [
12
23
  /* @__PURE__ */ jsx(Sidebar, { className: "hidden lg:flex", entities }),
13
24
  /* @__PURE__ */ jsx(TopNavbar, { className: "hidden lg:flex", entities }),
@@ -39,7 +39,7 @@ export declare const clientEntityRegistry: ClientEntityRegistry;
39
39
  export declare function setServerEntities(entities: EntityConfig[]): void;
40
40
  /**
41
41
  * Client-safe function to get all entity configurations
42
- * Uses build-time registry with serializable data only
42
+ * Returns entities from the client registry (populated by DashboardShell)
43
43
  */
44
44
  export declare function getAllEntityConfigs(): EntityConfig[];
45
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.client.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/registry.client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;GAEG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAuC;IAEvD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,MAAM,IAAI,YAAY,EAAE;IAIxB;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAKhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CA8BpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE"}
1
+ {"version":3,"file":"registry.client.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/registry.client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;GAEG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,QAAQ,CAAuC;IAEvD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C;;OAEG;IACH,MAAM,IAAI,YAAY,EAAE;IAIxB;;OAEG;IACH,UAAU,IAAI,YAAY,EAAE;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAKhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAUpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE"}
@@ -41,29 +41,10 @@ function setServerEntities(entities) {
41
41
  }
42
42
  function getAllEntityConfigs() {
43
43
  const clientEntities = clientEntityRegistry.getAll();
44
- if (clientEntities.length > 0) {
45
- return clientEntities;
46
- }
47
- try {
48
- const { ENTITY_REGISTRY } = require("@nextsparkjs/registries/entity-registry");
49
- const { Package } = require("lucide-react");
50
- return Object.values(ENTITY_REGISTRY).map((entry) => {
51
- const config = entry.config;
52
- return {
53
- ...config,
54
- icon: config.icon || Package,
55
- // Use fallback icon if original is missing
56
- i18n: config.i18n ? {
57
- ...config.i18n,
58
- loaders: {}
59
- // Remove loader functions (functions can't be serialized to client)
60
- } : void 0
61
- };
62
- }).filter((config) => config.slug);
63
- } catch (error) {
64
- console.error("[EntityRegistry] Failed to load from build-time registry:", error);
65
- return [];
44
+ if (clientEntities.length === 0) {
45
+ console.log("[EntityRegistry] Client registry empty - waiting for hydration from DashboardShell");
66
46
  }
47
+ return clientEntities;
67
48
  }
68
49
  function getEnabledEntities() {
69
50
  return clientEntityRegistry.getEnabled();
@@ -89,7 +89,7 @@ export declare class EntityRegistry {
89
89
  * Loads from build-time registries (ENTITY_REGISTRY with static imports)
90
90
  * PERFORMANCE: Zero runtime I/O, ~17,255x faster than old dynamic system
91
91
  *
92
- * Note: Uses static import (zero dynamic imports policy)
92
+ * Note: Uses require() for server-side loading (this file is server-only)
93
93
  */
94
94
  private loadFromRegistriesServer;
95
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/registry.ts"],"names":[],"mappings":"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"}
@@ -217,23 +217,40 @@ class EntityRegistry {
217
217
  * Loads from build-time registries (ENTITY_REGISTRY with static imports)
218
218
  * PERFORMANCE: Zero runtime I/O, ~17,255x faster than old dynamic system
219
219
  *
220
- * Note: Uses static import (zero dynamic imports policy)
220
+ * Note: Uses require() for server-side loading (this file is server-only)
221
221
  */
222
222
  loadFromRegistriesServer() {
223
- const entities = getRegisteredEntities();
224
- console.log("[EntityRegistry] Loading entities from build-time registry:", entities.length);
225
- entities.forEach((config, index) => {
226
- const name = "slug" in config ? config.slug : `entity-${index}`;
227
- console.log(`[EntityRegistry] Loading entity ${index + 1}/${entities.length}: ${name}`);
228
- try {
229
- this.register(config);
230
- console.log(`[EntityRegistry] \u2705 Successfully registered: ${name}`);
231
- } catch (error) {
232
- const errorMessage = error instanceof Error ? error.message : String(error);
233
- console.error(`[EntityRegistry] \u274C Failed to register ${name}:`, errorMessage);
223
+ try {
224
+ const { ENTITY_REGISTRY } = require("@nextsparkjs/registries/entity-registry");
225
+ const entities = Object.values(ENTITY_REGISTRY).map((entry) => entry.config);
226
+ console.log("[EntityRegistry] Loading entities from build-time registry:", entities.length);
227
+ entities.forEach((config, index) => {
228
+ const name = "slug" in config ? config.slug : `entity-${index}`;
229
+ console.log(`[EntityRegistry] Loading entity ${index + 1}/${entities.length}: ${name}`);
230
+ try {
231
+ this.register(config);
232
+ console.log(`[EntityRegistry] \u2705 Successfully registered: ${name}`);
233
+ } catch (error) {
234
+ const errorMessage = error instanceof Error ? error.message : String(error);
235
+ console.error(`[EntityRegistry] \u274C Failed to register ${name}:`, errorMessage);
236
+ }
237
+ });
238
+ console.log("[EntityRegistry] Finished loading entities. Total registered:", this.entities.size);
239
+ } catch (error) {
240
+ console.error("[EntityRegistry] Error loading entity registry:", error);
241
+ const entities = getRegisteredEntities();
242
+ if (entities.length > 0) {
243
+ console.log("[EntityRegistry] Using fallback cached entities:", entities.length);
244
+ entities.forEach((config, index) => {
245
+ const name = "slug" in config ? config.slug : `entity-${index}`;
246
+ try {
247
+ this.register(config);
248
+ } catch (regError) {
249
+ console.error(`[EntityRegistry] Failed to register ${name}:`, regError);
250
+ }
251
+ });
234
252
  }
235
- });
236
- console.log("[EntityRegistry] Finished loading entities. Total registered:", this.entities.size);
253
+ }
237
254
  }
238
255
  /**
239
256
  * Get registry statistics
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-01-07T02:18:53.028Z",
2
+ "generated": "2026-01-07T02:50:14.297Z",
3
3
  "totalClasses": 999,
4
4
  "classes": [
5
5
  "''",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextsparkjs/core",
3
- "version": "0.1.0-beta.14",
3
+ "version": "0.1.0-beta.15",
4
4
  "description": "NextSpark - The complete SaaS framework for Next.js",
5
5
  "license": "MIT",
6
6
  "author": "NextSpark <hello@nextspark.dev>",