@nextsparkjs/core 0.1.0-beta.19 → 0.1.0-beta.20

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 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,gBAAgB;;;;;CAYrB,CAAC;AAGF,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA+DrD;;AAYD,wBAyDG;AAGH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,gBAAgB;;;;;CAYrB,CAAC;AAGF,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAsErD;;AAYD,wBA4DG;AAGH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC"}
package/dist/i18n.js CHANGED
@@ -3,6 +3,7 @@ import { I18N_CONFIG } from "./lib/config";
3
3
  import { headers } from "next/headers";
4
4
  import { loadMergedTranslations } from "./lib/translations/registry";
5
5
  import { getUserLocale } from "./lib/locale";
6
+ const DEBUG_I18N = process.env.NEXTSPARK_DEBUG_I18N === "true";
6
7
  const NAMESPACE_GROUPS = {
7
8
  // Páginas públicas iniciales: incluye auth para login/signup
8
9
  PUBLIC_INITIAL: ["common", "public", "auth"],
@@ -14,42 +15,49 @@ const NAMESPACE_GROUPS = {
14
15
  ALL: ["common", "dashboard", "settings", "auth", "public", "validation", "teams"]
15
16
  };
16
17
  function getPageNamespaces(pathname) {
17
- console.log(`[i18n] \u{1F50D} Analyzing pathname: "${pathname}"`);
18
+ if (DEBUG_I18N) {
19
+ console.log(`[i18n] Analyzing pathname: "${pathname}"`);
20
+ }
18
21
  if (pathname.startsWith("/dashboard")) {
19
- console.log(`[i18n] \u{1F4F1} Dashboard detected \u2192 Loading authenticated user namespaces`);
22
+ if (DEBUG_I18N) {
23
+ console.log(`[i18n] Dashboard detected \u2192 Loading authenticated user namespaces`);
24
+ }
20
25
  return NAMESPACE_GROUPS.DASHBOARD_AUTHENTICATED;
21
26
  }
22
27
  const isAuthPage = pathname.startsWith("/auth") || pathname === "/login" || pathname === "/signup" || pathname === "/forgot-password" || pathname === "/reset-password" || pathname === "/verify-email" || pathname.includes("login") || pathname.includes("signup") || pathname.includes("auth");
23
28
  if (isAuthPage) {
24
- console.log(`[i18n] \u{1F510} Auth page detected \u2192 Loading auth-only namespaces`);
29
+ if (DEBUG_I18N) {
30
+ console.log(`[i18n] Auth page detected \u2192 Loading auth-only namespaces`);
31
+ }
25
32
  return NAMESPACE_GROUPS.AUTH_ONLY;
26
33
  }
27
34
  if (pathname === "/" || pathname.startsWith("/pricing") || pathname.startsWith("/docs") || pathname.startsWith("/support") || pathname.startsWith("/features")) {
28
- console.log(`[i18n] \u{1F310} Public page detected \u2192 Loading public + auth namespaces`);
35
+ if (DEBUG_I18N) {
36
+ console.log(`[i18n] Public page detected \u2192 Loading public + auth namespaces`);
37
+ }
29
38
  return NAMESPACE_GROUPS.PUBLIC_INITIAL;
30
39
  }
31
40
  if (!pathname || pathname === "") {
32
- console.log(`[i18n] \u2753 Empty pathname \u2192 Using context-aware fallback`);
41
+ if (DEBUG_I18N) {
42
+ console.log(`[i18n] Empty pathname \u2192 Using context-aware fallback`);
43
+ }
33
44
  if (typeof window !== "undefined") {
34
45
  const currentPath = window.location.pathname;
35
- console.log(`[i18n] \u{1F310} Client-side pathname detected: "${currentPath}"`);
46
+ if (DEBUG_I18N) {
47
+ console.log(`[i18n] Client-side pathname detected: "${currentPath}"`);
48
+ }
36
49
  if (currentPath.startsWith("/dashboard")) {
37
- console.log(`[i18n] \u{1F4F1} Client-side dashboard detected`);
38
50
  return NAMESPACE_GROUPS.DASHBOARD_AUTHENTICATED;
39
51
  }
40
52
  if (currentPath.includes("login") || currentPath.includes("signup") || currentPath.includes("auth")) {
41
- console.log(`[i18n] \u{1F510} Client-side auth detected`);
42
53
  return NAMESPACE_GROUPS.AUTH_ONLY;
43
54
  }
44
55
  if (currentPath === "/" || currentPath.startsWith("/pricing") || currentPath.startsWith("/features")) {
45
- console.log(`[i18n] \u{1F310} Client-side public detected`);
46
56
  return NAMESPACE_GROUPS.PUBLIC_INITIAL;
47
57
  }
48
58
  }
49
- console.log(`[i18n] \u{1F504} Server-side empty pathname \u2192 Loading public as default`);
50
59
  return NAMESPACE_GROUPS.PUBLIC_INITIAL;
51
60
  }
52
- console.log(`[i18n] \u{1F504} Unknown route \u2192 Loading public as fallback`);
53
61
  return NAMESPACE_GROUPS.PUBLIC_INITIAL;
54
62
  }
55
63
  async function getServerLocale() {
@@ -64,7 +72,6 @@ var i18n_default = getRequestConfig(async () => {
64
72
  try {
65
73
  locale = await getServerLocale();
66
74
  } catch {
67
- console.debug("[i18n] Using fallback locale (client context)");
68
75
  locale = I18N_CONFIG.defaultLocale;
69
76
  }
70
77
  try {
@@ -78,16 +85,19 @@ var i18n_default = getRequestConfig(async () => {
78
85
  try {
79
86
  const url = new URL(referer);
80
87
  pathname = url.pathname;
81
- console.log(`[i18n] \u{1F504} Extracted pathname from referer: "${pathname}"`);
88
+ if (DEBUG_I18N) {
89
+ console.log(`[i18n] Extracted pathname from referer: "${pathname}"`);
90
+ }
82
91
  } catch {
83
92
  }
84
93
  }
85
94
  }
86
95
  } catch {
87
- console.debug("[i18n] Headers not available, using fallback namespace strategy");
88
96
  }
89
97
  const messages = await loadMergedTranslations(locale);
90
- console.log(`[i18n] Loaded merged translations for ${locale} with ${Object.keys(messages).length} namespaces`);
98
+ if (DEBUG_I18N) {
99
+ console.log(`[i18n] Loaded merged translations for ${locale} with ${Object.keys(messages).length} namespaces`);
100
+ }
91
101
  return {
92
102
  locale,
93
103
  messages
@@ -1 +1 @@
1
- {"version":3,"file":"config-sync.d.ts","sourceRoot":"","sources":["../../../src/lib/config/config-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgLH,eAAO,MAAM,iBAAiB,KAAkB,CAAA;AAChD,eAAO,MAAM,gBAAgB,KAAwB,CAAA;AACrD,eAAO,MAAM,UAAU,6BAAkB,CAAA;AAGzC,eAAO,MAAM,iBAAiB,KAA0C,CAAA;AACxE,eAAO,MAAM,cAAc,KAAuC,CAAA;AAClE,eAAO,MAAM,eAAe,KAA6C,CAAA;AACzE,eAAO,MAAM,YAAY,KAA0C,CAAA;AACnE,eAAO,MAAM,QAAQ,KAA6B,CAAA;AAClD,eAAO,MAAM,WAAW,KAAgC,CAAA;AAGxD,eAAO,MAAM,WAAW,KAAyB,CAAA;AACjD,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,KAA8B,CAAA;AAC5D,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,KAA8B,CAAA;AAC5D,eAAO,MAAM,YAAY,KAA0B,CAAA;AAInD,eAAO,MAAM,aAAa,KAA0B,CAAA;AACpD,eAAO,MAAM,cAAc,KAA2B,CAAA;AACtD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,kBAAkB,KAA+B,CAAA;AAC9D,eAAO,MAAM,oBAAoB,KAAiC,CAAA;AAIlE,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,OAExD,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,uBAAuB,QAAO,mBAAmB,EAE7D,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,OAExD,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,KAAG,CAAC,GAAG,SAGzF,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACpF,MAAM,MAAM,oBAAoB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AACnF,MAAM,MAAM,QAAQ,GAAG,OAAO,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"config-sync.d.ts","sourceRoot":"","sources":["../../../src/lib/config/config-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAyNH,eAAO,MAAM,iBAAiB,KAAkB,CAAA;AAChD,eAAO,MAAM,gBAAgB,KAAwB,CAAA;AACrD,eAAO,MAAM,UAAU,6BAAkB,CAAA;AAGzC,eAAO,MAAM,iBAAiB,KAA0C,CAAA;AACxE,eAAO,MAAM,cAAc,KAAuC,CAAA;AAClE,eAAO,MAAM,eAAe,KAA6C,CAAA;AACzE,eAAO,MAAM,YAAY,KAA0C,CAAA;AACnE,eAAO,MAAM,QAAQ,KAA6B,CAAA;AAClD,eAAO,MAAM,WAAW,KAAgC,CAAA;AAGxD,eAAO,MAAM,WAAW,KAAyB,CAAA;AACjD,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,KAA8B,CAAA;AAC5D,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,KAA8B,CAAA;AAC5D,eAAO,MAAM,YAAY,KAA0B,CAAA;AAInD,eAAO,MAAM,aAAa,KAA0B,CAAA;AACpD,eAAO,MAAM,cAAc,KAA2B,CAAA;AACtD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,kBAAkB,KAA+B,CAAA;AAC9D,eAAO,MAAM,oBAAoB,KAAiC,CAAA;AAIlE,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,OAExD,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,uBAAuB,QAAO,mBAAmB,EAE7D,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,OAExD,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,KAAG,CAAC,GAAG,SAGzF,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACpF,MAAM,MAAM,oBAAoB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AACnF,MAAM,MAAM,QAAQ,GAAG,OAAO,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA"}
@@ -9,25 +9,27 @@ import {
9
9
  ROLE_DISPLAY_NAMES as REGISTRY_ROLE_DISPLAY_NAMES,
10
10
  ROLE_DESCRIPTIONS as REGISTRY_ROLE_DESCRIPTIONS
11
11
  } from "@nextsparkjs/registries/permissions-registry";
12
- function loadAppConfig() {
12
+ const DEBUG_CONFIG = process.env.NEXTSPARK_DEBUG_CONFIG === "true";
13
+ const globalCache = globalThis;
14
+ function loadAppConfigInternal() {
13
15
  const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME;
14
- if (process.env.NODE_ENV === "development") {
16
+ if (DEBUG_CONFIG) {
15
17
  console.log("[config-sync] Loading app config for theme:", activeTheme);
16
18
  }
17
19
  if (!activeTheme) {
18
- if (process.env.NODE_ENV === "development") {
20
+ if (DEBUG_CONFIG) {
19
21
  console.log("[config-sync] No active theme, using default app config");
20
22
  }
21
23
  return DEFAULT_APP_CONFIG;
22
24
  }
23
25
  const themeConfigOverrides = ThemeService.getAppConfig(activeTheme);
24
26
  if (!themeConfigOverrides) {
25
- if (process.env.NODE_ENV === "development") {
27
+ if (DEBUG_CONFIG) {
26
28
  console.log("[config-sync] Theme has no app config overrides, using default");
27
29
  }
28
30
  return DEFAULT_APP_CONFIG;
29
31
  }
30
- if (process.env.NODE_ENV === "development") {
32
+ if (DEBUG_CONFIG) {
31
33
  console.log("[config-sync] Theme app config overrides loaded from registry");
32
34
  }
33
35
  const mergedConfig = mergeConfigs(DEFAULT_APP_CONFIG, themeConfigOverrides);
@@ -47,34 +49,41 @@ function loadAppConfig() {
47
49
  descriptions: REGISTRY_ROLE_DESCRIPTIONS
48
50
  };
49
51
  }
50
- if (process.env.NODE_ENV === "development") {
52
+ if (DEBUG_CONFIG) {
51
53
  console.log("[config-sync] App config merged successfully");
52
54
  }
53
55
  return mergedConfig;
54
56
  }
55
- function loadDashboardConfig() {
57
+ function loadAppConfig() {
58
+ if (globalCache.__nextspark_app_config) {
59
+ return globalCache.__nextspark_app_config;
60
+ }
61
+ globalCache.__nextspark_app_config = loadAppConfigInternal();
62
+ return globalCache.__nextspark_app_config;
63
+ }
64
+ function loadDashboardConfigInternal() {
56
65
  const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME;
57
- if (process.env.NODE_ENV === "development") {
66
+ if (DEBUG_CONFIG) {
58
67
  console.log("[config-sync] activeTheme:", activeTheme);
59
68
  }
60
69
  if (!activeTheme) {
61
- if (process.env.NODE_ENV === "development") {
70
+ if (DEBUG_CONFIG) {
62
71
  console.log("[config-sync] No active theme, using default config");
63
72
  }
64
73
  return DEFAULT_DASHBOARD_CONFIG;
65
74
  }
66
75
  const themeConfig = ThemeService.getDashboardConfig(activeTheme);
67
76
  if (!themeConfig) {
68
- if (process.env.NODE_ENV === "development") {
77
+ if (DEBUG_CONFIG) {
69
78
  console.log("[config-sync] Theme has no dashboard config, using default");
70
79
  }
71
80
  return DEFAULT_DASHBOARD_CONFIG;
72
81
  }
73
- if (process.env.NODE_ENV === "development") {
82
+ if (DEBUG_CONFIG) {
74
83
  console.log("[config-sync] Theme config loaded (validation skipped)");
75
84
  }
76
85
  const mergedConfig = mergeConfigs(DEFAULT_DASHBOARD_CONFIG, themeConfig);
77
- if (process.env.NODE_ENV === "development") {
86
+ if (DEBUG_CONFIG) {
78
87
  console.log("[config-sync] Config merged successfully");
79
88
  console.log("[config-sync] Merged config has helper functions:", {
80
89
  isSettingsPageEnabled: typeof mergedConfig.isSettingsPageEnabled === "function",
@@ -84,17 +93,31 @@ function loadDashboardConfig() {
84
93
  }
85
94
  return mergedConfig;
86
95
  }
87
- function loadDevConfig() {
96
+ function loadDashboardConfig() {
97
+ if (globalCache.__nextspark_dashboard_config) {
98
+ return globalCache.__nextspark_dashboard_config;
99
+ }
100
+ globalCache.__nextspark_dashboard_config = loadDashboardConfigInternal();
101
+ return globalCache.__nextspark_dashboard_config;
102
+ }
103
+ function loadDevConfigInternal() {
88
104
  const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME;
89
105
  if (!activeTheme) {
90
106
  return null;
91
107
  }
92
108
  const devConfig = ThemeService.getDevConfig(activeTheme);
93
- if (process.env.NODE_ENV === "development" && devConfig) {
109
+ if (DEBUG_CONFIG && devConfig) {
94
110
  console.log("[config-sync] Dev config loaded for theme:", activeTheme);
95
111
  }
96
112
  return devConfig;
97
113
  }
114
+ function loadDevConfig() {
115
+ if (globalCache.__nextspark_dev_config !== void 0) {
116
+ return globalCache.__nextspark_dev_config;
117
+ }
118
+ globalCache.__nextspark_dev_config = loadDevConfigInternal();
119
+ return globalCache.__nextspark_dev_config;
120
+ }
98
121
  const APP_CONFIG_MERGED = loadAppConfig();
99
122
  const DASHBOARD_CONFIG = loadDashboardConfig();
100
123
  const DEV_CONFIG = loadDevConfig();
@@ -22,24 +22,41 @@ export interface EntityRegistryEntry {
22
22
  children: string[];
23
23
  depth: number;
24
24
  tableName: string;
25
- routePrefix: string;
25
+ routePrefix?: string;
26
26
  pluginContext?: {
27
27
  pluginName: string;
28
- pluginDir: string;
29
- };
28
+ pluginDir?: string;
29
+ } | null;
30
30
  themeContext?: {
31
31
  themeName: string;
32
- themeDir: string;
33
- };
32
+ themeDir?: string;
33
+ } | null;
34
34
  schema?: any;
35
35
  relations?: any;
36
+ relativePath?: string;
37
+ hasComponents?: boolean;
38
+ hasHooks?: boolean;
39
+ hasMigrations?: boolean;
40
+ hasMessages?: boolean;
41
+ hasAssets?: boolean;
42
+ messagesPath?: string;
43
+ isCore?: boolean;
44
+ source?: 'core' | 'theme' | 'plugin';
36
45
  }
37
46
  export interface EntityRegistryMetadata {
38
47
  totalEntities: number;
39
- rootEntities: number;
48
+ rootEntities?: number;
40
49
  maxDepth: number;
41
50
  generatedAt: string;
42
- entityNames: string[];
51
+ entityNames?: string[];
52
+ entities?: string[];
53
+ pluginEntities?: number;
54
+ themeEntities?: number;
55
+ entitiesWithComponents?: number;
56
+ entitiesWithHooks?: number;
57
+ entitiesWithMigrations?: number;
58
+ entitiesWithMessages?: number;
59
+ entitiesWithAssets?: number;
43
60
  }
44
61
  export interface EntityOwner {
45
62
  type: 'plugin' | 'theme';
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/lib/entities/queries.ts"],"names":[],"mappings":"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"}
@@ -279,6 +279,7 @@ export declare class PluginService {
279
279
  *
280
280
  * Server-side only. Executes async onLoad hooks for all plugins.
281
281
  * Continues with other plugins if one fails.
282
+ * Uses globalThis cache to prevent re-initialization.
282
283
  *
283
284
  * @returns Promise that resolves when all plugins are initialized
284
285
  *
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/plugin.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/plugin.service.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ import {
3
3
  ROUTE_METADATA,
4
4
  PLUGIN_METADATA
5
5
  } from "@nextsparkjs/registries/plugin-registry";
6
+ const DEBUG_PLUGINS = process.env.NEXTSPARK_DEBUG_PLUGINS === "true";
7
+ const globalCache = globalThis;
6
8
  class PluginService {
7
9
  // ============================================================================
8
10
  // Core Query Methods (14)
@@ -322,6 +324,7 @@ class PluginService {
322
324
  *
323
325
  * Server-side only. Executes async onLoad hooks for all plugins.
324
326
  * Continues with other plugins if one fails.
327
+ * Uses globalThis cache to prevent re-initialization.
325
328
  *
326
329
  * @returns Promise that resolves when all plugins are initialized
327
330
  *
@@ -336,22 +339,39 @@ class PluginService {
336
339
  if (typeof window !== "undefined") {
337
340
  return;
338
341
  }
339
- console.log("[Plugin Registry] Initializing plugin system...");
342
+ if (globalCache.__nextspark_plugins_initialized) {
343
+ if (DEBUG_PLUGINS) {
344
+ console.log("[Plugin Registry] Already initialized, skipping");
345
+ }
346
+ return;
347
+ }
348
+ if (DEBUG_PLUGINS) {
349
+ console.log("[Plugin Registry] Initializing plugin system...");
350
+ }
340
351
  const pluginEntries = Object.values(PLUGIN_REGISTRY);
341
- console.log(`[Plugin Registry] Found ${pluginEntries.length} plugins to initialize`);
352
+ if (DEBUG_PLUGINS) {
353
+ console.log(`[Plugin Registry] Found ${pluginEntries.length} plugins to initialize`);
354
+ }
342
355
  for (const pluginEntry of pluginEntries) {
343
356
  try {
344
357
  const plugin = pluginEntry.config;
345
358
  if ((_a = plugin.hooks) == null ? void 0 : _a.onLoad) {
346
- console.log(`[Plugin Registry] Loading plugin: ${plugin.name}`);
359
+ if (DEBUG_PLUGINS) {
360
+ console.log(`[Plugin Registry] Loading plugin: ${plugin.name}`);
361
+ }
347
362
  await plugin.hooks.onLoad();
348
- console.log(`[Plugin Registry] \u2705 Plugin ${plugin.name} loaded successfully`);
363
+ if (DEBUG_PLUGINS) {
364
+ console.log(`[Plugin Registry] Plugin ${plugin.name} loaded successfully`);
365
+ }
349
366
  }
350
367
  } catch (error) {
351
- console.error(`[Plugin Registry] \u274C Error loading plugin ${pluginEntry.name}:`, error);
368
+ console.error(`[Plugin Registry] Error loading plugin ${pluginEntry.name}:`, error);
352
369
  }
353
370
  }
354
- console.log("[Plugin Registry] \u2705 Plugin system initialized successfully");
371
+ globalCache.__nextspark_plugins_initialized = true;
372
+ if (DEBUG_PLUGINS) {
373
+ console.log("[Plugin Registry] Plugin system initialized successfully");
374
+ }
355
375
  }
356
376
  // ============================================================================
357
377
  // Metadata & Helpers (3)
@@ -419,13 +439,17 @@ function usePlugin(pluginName) {
419
439
  var _a;
420
440
  const plugin = PLUGIN_REGISTRY[pluginName];
421
441
  if (!plugin) {
422
- console.warn(`[Plugin Registry] Plugin '${pluginName}' not found`);
442
+ if (DEBUG_PLUGINS) {
443
+ console.warn(`[Plugin Registry] Plugin '${pluginName}' not found`);
444
+ }
423
445
  return createPluginStubs(pluginName, "NOT_FOUND");
424
446
  }
425
447
  if (!((_a = plugin.config) == null ? void 0 : _a.api)) {
426
- console.debug(
427
- `[Plugin Registry] Plugin '${pluginName}' has no API (normal for config/style/component plugins)`
428
- );
448
+ if (DEBUG_PLUGINS) {
449
+ console.debug(
450
+ `[Plugin Registry] Plugin '${pluginName}' has no API (normal for config/style/component plugins)`
451
+ );
452
+ }
429
453
  return {
430
454
  isAvailable: () => true,
431
455
  // Plugin exists, just has no API
@@ -480,7 +504,9 @@ function createPluginStubs(pluginName, reason) {
480
504
  const stubs = {};
481
505
  commonFunctions.forEach((funcName) => {
482
506
  stubs[funcName] = async (...args) => {
483
- console.warn(`[Plugin '${pluginName}'] ${message}`);
507
+ if (DEBUG_PLUGINS) {
508
+ console.warn(`[Plugin '${pluginName}'] ${message}`);
509
+ }
484
510
  return {
485
511
  error: true,
486
512
  message,
@@ -24,6 +24,8 @@ export declare function registerThemeMessages(locale: string, messages: Record<s
24
24
  * 1. Core translations provide the base
25
25
  * 2. Theme translations can override/extend core
26
26
  * 3. Entity translations can override/extend both (highest priority)
27
+ *
28
+ * Uses globalThis cache to prevent re-loading on each request
27
29
  */
28
30
  export declare function loadMergedTranslations(locale: SupportedLocale): Promise<Record<string, unknown>>;
29
31
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/translations/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA2ExD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7F;AAiDD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkClC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/translations/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA+FxD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE7F;AAmDD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4DlC"}
@@ -1,4 +1,12 @@
1
1
  import { TranslationService } from "../services/translation.service";
2
+ const DEBUG_I18N = process.env.NEXTSPARK_DEBUG_I18N === "true";
3
+ const globalCache = globalThis;
4
+ function getTranslationCache() {
5
+ if (!globalCache.__nextspark_translations_cache) {
6
+ globalCache.__nextspark_translations_cache = /* @__PURE__ */ new Map();
7
+ }
8
+ return globalCache.__nextspark_translations_cache;
9
+ }
2
10
  function deepMergeMessages(target, source) {
3
11
  const result = { ...target };
4
12
  for (const key of Object.keys(source)) {
@@ -56,11 +64,25 @@ async function loadEntityTranslationsFromRegistry(locale) {
56
64
  const entityTranslations = await TranslationService.loadAllEntities(activeTheme, locale);
57
65
  return entityTranslations;
58
66
  } catch (error) {
59
- console.warn(`[translations] Failed to load entity translations for ${locale}:`, error);
67
+ if (DEBUG_I18N) {
68
+ console.warn(`[translations] Failed to load entity translations for ${locale}:`, error);
69
+ }
60
70
  return {};
61
71
  }
62
72
  }
63
73
  async function loadMergedTranslations(locale) {
74
+ const activeTheme = process.env.NEXT_PUBLIC_ACTIVE_THEME || "default";
75
+ const cacheKey = `${locale}-${activeTheme}`;
76
+ const cache = getTranslationCache();
77
+ if (cache.has(cacheKey)) {
78
+ if (DEBUG_I18N) {
79
+ console.log(`[i18n] Cache hit for ${cacheKey}`);
80
+ }
81
+ return cache.get(cacheKey);
82
+ }
83
+ if (DEBUG_I18N) {
84
+ console.log(`[i18n] Loading translations for ${cacheKey}`);
85
+ }
64
86
  const fallbackChain = getLocaleFallbackChain(locale);
65
87
  let mergedMessages = {};
66
88
  for (const fallbackLocale of [...fallbackChain].reverse()) {
@@ -74,7 +96,9 @@ async function loadMergedTranslations(locale) {
74
96
  const themeMessages = await loadThemeTranslations(locale);
75
97
  mergedMessages = deepMergeMessages(mergedMessages, themeMessages);
76
98
  } catch {
77
- console.warn(`[translations] No theme messages for ${locale}`);
99
+ if (DEBUG_I18N) {
100
+ console.warn(`[translations] No theme messages for ${locale}`);
101
+ }
78
102
  }
79
103
  try {
80
104
  const entityMessages = await loadEntityTranslationsFromRegistry(locale);
@@ -83,6 +107,10 @@ async function loadMergedTranslations(locale) {
83
107
  }
84
108
  } catch {
85
109
  }
110
+ cache.set(cacheKey, mergedMessages);
111
+ if (DEBUG_I18N) {
112
+ console.log(`[i18n] Cached translations for ${cacheKey} with ${Object.keys(mergedMessages).length} namespaces`);
113
+ }
86
114
  return mergedMessages;
87
115
  }
88
116
  export {
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-01-07T14:44:19.220Z",
2
+ "generated": "2026-01-07T18:41:28.152Z",
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.19",
3
+ "version": "0.1.0-beta.20",
4
4
  "description": "NextSpark - The complete SaaS framework for Next.js",
5
5
  "license": "MIT",
6
6
  "author": "NextSpark <hello@nextspark.dev>",
@@ -223,6 +223,16 @@
223
223
  "README.md",
224
224
  "scripts"
225
225
  ],
226
+ "scripts": {
227
+ "build": "tsup && pnpm build:dts && pnpm build:ui-css",
228
+ "build:js": "tsup",
229
+ "build:dts": "tsc -p tsconfig.dts.json || echo '⚠️ DTS generation completed with some type errors (partial coverage)'",
230
+ "build:ui-css": "node scripts/build/build-ui-css.mjs",
231
+ "dev": "tsup --watch",
232
+ "test": "jest",
233
+ "test:watch": "jest --watch",
234
+ "test:coverage": "jest --coverage"
235
+ },
226
236
  "peerDependencies": {
227
237
  "next": ">=14.0.0",
228
238
  "react": ">=18.0.0",
@@ -307,15 +317,5 @@
307
317
  "tailwind-merge": "^3.3.1",
308
318
  "uuid": "^13.0.0",
309
319
  "zod": "^4.1.5"
310
- },
311
- "scripts": {
312
- "build": "tsup && pnpm build:dts && pnpm build:ui-css",
313
- "build:js": "tsup",
314
- "build:dts": "tsc -p tsconfig.dts.json || echo '⚠️ DTS generation completed with some type errors (partial coverage)'",
315
- "build:ui-css": "node scripts/build/build-ui-css.mjs",
316
- "dev": "tsup --watch",
317
- "test": "jest",
318
- "test:watch": "jest --watch",
319
- "test:coverage": "jest --coverage"
320
320
  }
321
- }
321
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes