@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.
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +25 -15
- package/dist/lib/config/config-sync.d.ts.map +1 -1
- package/dist/lib/config/config-sync.js +37 -14
- package/dist/lib/entities/queries.d.ts +24 -7
- package/dist/lib/entities/queries.d.ts.map +1 -1
- package/dist/lib/services/plugin.service.d.ts +1 -0
- package/dist/lib/services/plugin.service.d.ts.map +1 -1
- package/dist/lib/services/plugin.service.js +37 -11
- package/dist/lib/translations/registry.d.ts +2 -0
- package/dist/lib/translations/registry.d.ts.map +1 -1
- package/dist/lib/translations/registry.js +30 -2
- package/dist/styles/classes.json +1 -1
- package/package.json +12 -12
- package/scripts/build/docs-registry.mjs +0 -0
- package/scripts/create-theme.mjs +0 -0
- package/scripts/deploy/release-version.mjs +0 -0
- package/scripts/deploy/vercel-deploy.mjs +0 -0
- package/scripts/dev/watch-plugins.mjs +0 -0
- package/scripts/maintenance/update-core.mjs +0 -0
- package/scripts/setup/npm-postinstall.mjs +0 -0
- package/scripts/setup/setup-claude.mjs +0 -0
- package/scripts/validation/check-imports.sh +0 -0
package/dist/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
18
|
+
if (DEBUG_I18N) {
|
|
19
|
+
console.log(`[i18n] Analyzing pathname: "${pathname}"`);
|
|
20
|
+
}
|
|
18
21
|
if (pathname.startsWith("/dashboard")) {
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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 (
|
|
16
|
+
if (DEBUG_CONFIG) {
|
|
15
17
|
console.log("[config-sync] Loading app config for theme:", activeTheme);
|
|
16
18
|
}
|
|
17
19
|
if (!activeTheme) {
|
|
18
|
-
if (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
52
|
+
if (DEBUG_CONFIG) {
|
|
51
53
|
console.log("[config-sync] App config merged successfully");
|
|
52
54
|
}
|
|
53
55
|
return mergedConfig;
|
|
54
56
|
}
|
|
55
|
-
function
|
|
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 (
|
|
66
|
+
if (DEBUG_CONFIG) {
|
|
58
67
|
console.log("[config-sync] activeTheme:", activeTheme);
|
|
59
68
|
}
|
|
60
69
|
if (!activeTheme) {
|
|
61
|
-
if (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
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 (
|
|
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
|
|
25
|
+
routePrefix?: string;
|
|
26
26
|
pluginContext?: {
|
|
27
27
|
pluginName: string;
|
|
28
|
-
pluginDir
|
|
29
|
-
};
|
|
28
|
+
pluginDir?: string;
|
|
29
|
+
} | null;
|
|
30
30
|
themeContext?: {
|
|
31
31
|
themeName: string;
|
|
32
|
-
themeDir
|
|
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
|
|
48
|
+
rootEntities?: number;
|
|
40
49
|
maxDepth: number;
|
|
41
50
|
generatedAt: string;
|
|
42
|
-
entityNames
|
|
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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAElE;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,YAAY,GAAG,qBAAqB,CAAA;IAC5C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,eAAe,EAEf,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
359
|
+
if (DEBUG_PLUGINS) {
|
|
360
|
+
console.log(`[Plugin Registry] Loading plugin: ${plugin.name}`);
|
|
361
|
+
}
|
|
347
362
|
await plugin.hooks.onLoad();
|
|
348
|
-
|
|
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]
|
|
368
|
+
console.error(`[Plugin Registry] Error loading plugin ${pluginEntry.name}:`, error);
|
|
352
369
|
}
|
|
353
370
|
}
|
|
354
|
-
|
|
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
|
-
|
|
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
|
-
|
|
427
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
package/dist/styles/classes.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextsparkjs/core",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
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
|
package/scripts/create-theme.mjs
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|