@flexireact/core 4.0.0 → 4.1.1
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/README.md +147 -770
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.js +441 -701
- package/dist/cli/index.js.map +1 -1
- package/dist/core/build/index.d.ts +99 -0
- package/dist/core/build/index.js +2 -2
- package/dist/core/build/index.js.map +1 -1
- package/dist/core/client/index.d.ts +164 -0
- package/dist/core/client/index.js.map +1 -1
- package/dist/core/config.d.ts +165 -0
- package/dist/core/config.js +62 -32
- package/dist/core/config.js.map +1 -1
- package/dist/core/index.d.ts +1978 -0
- package/dist/core/index.js +309 -202
- package/dist/core/index.js.map +1 -1
- package/dist/core/server/index.d.ts +16 -0
- package/dist/core/server/index.js +305 -198
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/start-dev.d.ts +2 -0
- package/dist/core/start-dev.js +305 -198
- package/dist/core/start-dev.js.map +1 -1
- package/dist/core/start-prod.d.ts +2 -0
- package/dist/core/start-prod.js +305 -198
- package/dist/core/start-prod.js.map +1 -1
- package/package.json +23 -11
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* FlexiReact Configuration System
|
|
5
|
+
* Handles loading, validation, and merging of configuration
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare const FlexiReactConfigSchema: z.ZodObject<{
|
|
9
|
+
pagesDir: z.ZodDefault<z.ZodString>;
|
|
10
|
+
layoutsDir: z.ZodDefault<z.ZodString>;
|
|
11
|
+
publicDir: z.ZodDefault<z.ZodString>;
|
|
12
|
+
outDir: z.ZodDefault<z.ZodString>;
|
|
13
|
+
build: z.ZodDefault<z.ZodObject<{
|
|
14
|
+
target: z.ZodDefault<z.ZodString>;
|
|
15
|
+
minify: z.ZodDefault<z.ZodBoolean>;
|
|
16
|
+
sourcemap: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
splitting: z.ZodDefault<z.ZodBoolean>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
target: string;
|
|
20
|
+
minify: boolean;
|
|
21
|
+
sourcemap: boolean;
|
|
22
|
+
splitting: boolean;
|
|
23
|
+
}, {
|
|
24
|
+
target?: string | undefined;
|
|
25
|
+
minify?: boolean | undefined;
|
|
26
|
+
sourcemap?: boolean | undefined;
|
|
27
|
+
splitting?: boolean | undefined;
|
|
28
|
+
}>>;
|
|
29
|
+
server: z.ZodDefault<z.ZodObject<{
|
|
30
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
31
|
+
host: z.ZodDefault<z.ZodString>;
|
|
32
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
|
+
port: number;
|
|
34
|
+
host: string;
|
|
35
|
+
}, {
|
|
36
|
+
port?: number | undefined;
|
|
37
|
+
host?: string | undefined;
|
|
38
|
+
}>>;
|
|
39
|
+
ssg: z.ZodDefault<z.ZodObject<{
|
|
40
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
41
|
+
paths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
42
|
+
}, "strip", z.ZodTypeAny, {
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
paths: string[];
|
|
45
|
+
}, {
|
|
46
|
+
enabled?: boolean | undefined;
|
|
47
|
+
paths?: string[] | undefined;
|
|
48
|
+
}>>;
|
|
49
|
+
islands: z.ZodDefault<z.ZodObject<{
|
|
50
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
51
|
+
directive: z.ZodDefault<z.ZodString>;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
directive: string;
|
|
55
|
+
}, {
|
|
56
|
+
enabled?: boolean | undefined;
|
|
57
|
+
directive?: string | undefined;
|
|
58
|
+
}>>;
|
|
59
|
+
rsc: z.ZodDefault<z.ZodObject<{
|
|
60
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
enabled: boolean;
|
|
63
|
+
}, {
|
|
64
|
+
enabled?: boolean | undefined;
|
|
65
|
+
}>>;
|
|
66
|
+
plugins: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
67
|
+
name: z.ZodString;
|
|
68
|
+
setup: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
|
|
69
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
70
|
+
name: z.ZodString;
|
|
71
|
+
setup: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
|
|
72
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
73
|
+
name: z.ZodString;
|
|
74
|
+
setup: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
|
|
75
|
+
}, z.ZodTypeAny, "passthrough">>, "many">>;
|
|
76
|
+
styles: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
77
|
+
scripts: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
78
|
+
favicon: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
pagesDir: string;
|
|
81
|
+
layoutsDir: string;
|
|
82
|
+
publicDir: string;
|
|
83
|
+
outDir: string;
|
|
84
|
+
build: {
|
|
85
|
+
target: string;
|
|
86
|
+
minify: boolean;
|
|
87
|
+
sourcemap: boolean;
|
|
88
|
+
splitting: boolean;
|
|
89
|
+
};
|
|
90
|
+
server: {
|
|
91
|
+
port: number;
|
|
92
|
+
host: string;
|
|
93
|
+
};
|
|
94
|
+
ssg: {
|
|
95
|
+
enabled: boolean;
|
|
96
|
+
paths: string[];
|
|
97
|
+
};
|
|
98
|
+
islands: {
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
directive: string;
|
|
101
|
+
};
|
|
102
|
+
rsc: {
|
|
103
|
+
enabled: boolean;
|
|
104
|
+
};
|
|
105
|
+
plugins: z.objectOutputType<{
|
|
106
|
+
name: z.ZodString;
|
|
107
|
+
setup: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
|
|
108
|
+
}, z.ZodTypeAny, "passthrough">[];
|
|
109
|
+
styles: string[];
|
|
110
|
+
scripts: string[];
|
|
111
|
+
favicon: string | null;
|
|
112
|
+
}, {
|
|
113
|
+
pagesDir?: string | undefined;
|
|
114
|
+
layoutsDir?: string | undefined;
|
|
115
|
+
publicDir?: string | undefined;
|
|
116
|
+
outDir?: string | undefined;
|
|
117
|
+
build?: {
|
|
118
|
+
target?: string | undefined;
|
|
119
|
+
minify?: boolean | undefined;
|
|
120
|
+
sourcemap?: boolean | undefined;
|
|
121
|
+
splitting?: boolean | undefined;
|
|
122
|
+
} | undefined;
|
|
123
|
+
server?: {
|
|
124
|
+
port?: number | undefined;
|
|
125
|
+
host?: string | undefined;
|
|
126
|
+
} | undefined;
|
|
127
|
+
ssg?: {
|
|
128
|
+
enabled?: boolean | undefined;
|
|
129
|
+
paths?: string[] | undefined;
|
|
130
|
+
} | undefined;
|
|
131
|
+
islands?: {
|
|
132
|
+
enabled?: boolean | undefined;
|
|
133
|
+
directive?: string | undefined;
|
|
134
|
+
} | undefined;
|
|
135
|
+
rsc?: {
|
|
136
|
+
enabled?: boolean | undefined;
|
|
137
|
+
} | undefined;
|
|
138
|
+
plugins?: z.objectInputType<{
|
|
139
|
+
name: z.ZodString;
|
|
140
|
+
setup: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
|
|
141
|
+
}, z.ZodTypeAny, "passthrough">[] | undefined;
|
|
142
|
+
styles?: string[] | undefined;
|
|
143
|
+
scripts?: string[] | undefined;
|
|
144
|
+
favicon?: string | null | undefined;
|
|
145
|
+
}>;
|
|
146
|
+
type FlexiReactConfig = z.infer<typeof FlexiReactConfigSchema>;
|
|
147
|
+
/**
|
|
148
|
+
* Default configuration
|
|
149
|
+
*/
|
|
150
|
+
declare const defaultConfig: FlexiReactConfig;
|
|
151
|
+
/**
|
|
152
|
+
* Helper function to define configuration with full type support
|
|
153
|
+
* Use this in your flexireact.config.ts file
|
|
154
|
+
*/
|
|
155
|
+
declare function defineConfig(config: Partial<FlexiReactConfig>): Partial<FlexiReactConfig>;
|
|
156
|
+
/**
|
|
157
|
+
* Loads and validates configuration from the project root
|
|
158
|
+
*/
|
|
159
|
+
declare function loadConfig(projectRoot: string): Promise<FlexiReactConfig>;
|
|
160
|
+
/**
|
|
161
|
+
* Resolves all paths in config relative to project root
|
|
162
|
+
*/
|
|
163
|
+
declare function resolvePaths(config: any, projectRoot: string): any;
|
|
164
|
+
|
|
165
|
+
export { type FlexiReactConfig, FlexiReactConfigSchema, defaultConfig, defineConfig, loadConfig, resolvePaths };
|
package/dist/core/config.js
CHANGED
|
@@ -2,46 +2,62 @@
|
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { pathToFileURL } from "url";
|
|
5
|
-
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import pc from "picocolors";
|
|
7
|
+
var BuildConfigSchema = z.object({
|
|
8
|
+
target: z.string().default("es2022"),
|
|
9
|
+
minify: z.boolean().default(true),
|
|
10
|
+
sourcemap: z.boolean().default(true),
|
|
11
|
+
splitting: z.boolean().default(true)
|
|
12
|
+
}).default({});
|
|
13
|
+
var ServerConfigSchema = z.object({
|
|
14
|
+
port: z.number().min(1).max(65535).default(3e3),
|
|
15
|
+
host: z.string().default("localhost")
|
|
16
|
+
}).default({});
|
|
17
|
+
var SSGConfigSchema = z.object({
|
|
18
|
+
enabled: z.boolean().default(false),
|
|
19
|
+
paths: z.array(z.string()).default([])
|
|
20
|
+
}).default({});
|
|
21
|
+
var IslandsConfigSchema = z.object({
|
|
22
|
+
enabled: z.boolean().default(true),
|
|
23
|
+
directive: z.string().default("use island")
|
|
24
|
+
}).default({});
|
|
25
|
+
var RSCConfigSchema = z.object({
|
|
26
|
+
enabled: z.boolean().default(true)
|
|
27
|
+
}).default({});
|
|
28
|
+
var PluginSchema = z.object({
|
|
29
|
+
name: z.string(),
|
|
30
|
+
setup: z.function().optional()
|
|
31
|
+
}).passthrough();
|
|
32
|
+
var FlexiReactConfigSchema = z.object({
|
|
6
33
|
// Directories
|
|
7
|
-
pagesDir: "pages",
|
|
8
|
-
layoutsDir: "layouts",
|
|
9
|
-
publicDir: "public",
|
|
10
|
-
outDir: ".flexi",
|
|
34
|
+
pagesDir: z.string().default("pages"),
|
|
35
|
+
layoutsDir: z.string().default("layouts"),
|
|
36
|
+
publicDir: z.string().default("public"),
|
|
37
|
+
outDir: z.string().default(".flexi"),
|
|
11
38
|
// Build options
|
|
12
|
-
build:
|
|
13
|
-
target: "es2022",
|
|
14
|
-
minify: true,
|
|
15
|
-
sourcemap: true,
|
|
16
|
-
splitting: true
|
|
17
|
-
},
|
|
39
|
+
build: BuildConfigSchema,
|
|
18
40
|
// Server options
|
|
19
|
-
server:
|
|
20
|
-
port: 3e3,
|
|
21
|
-
host: "localhost"
|
|
22
|
-
},
|
|
41
|
+
server: ServerConfigSchema,
|
|
23
42
|
// SSG options
|
|
24
|
-
ssg:
|
|
25
|
-
enabled: false,
|
|
26
|
-
paths: []
|
|
27
|
-
},
|
|
43
|
+
ssg: SSGConfigSchema,
|
|
28
44
|
// Islands (partial hydration)
|
|
29
|
-
islands:
|
|
30
|
-
enabled: true
|
|
31
|
-
},
|
|
45
|
+
islands: IslandsConfigSchema,
|
|
32
46
|
// RSC options
|
|
33
|
-
rsc:
|
|
34
|
-
enabled: true
|
|
35
|
-
},
|
|
47
|
+
rsc: RSCConfigSchema,
|
|
36
48
|
// Plugins
|
|
37
|
-
plugins: [],
|
|
49
|
+
plugins: z.array(PluginSchema).default([]),
|
|
38
50
|
// Styles (CSS files to include)
|
|
39
|
-
styles: [],
|
|
51
|
+
styles: z.array(z.string()).default([]),
|
|
40
52
|
// Scripts (JS files to include)
|
|
41
|
-
scripts: [],
|
|
53
|
+
scripts: z.array(z.string()).default([]),
|
|
42
54
|
// Favicon path
|
|
43
|
-
favicon: null
|
|
44
|
-
};
|
|
55
|
+
favicon: z.string().nullable().default(null)
|
|
56
|
+
});
|
|
57
|
+
var defaultConfig = FlexiReactConfigSchema.parse({});
|
|
58
|
+
function defineConfig(config) {
|
|
59
|
+
return config;
|
|
60
|
+
}
|
|
45
61
|
async function loadConfig(projectRoot) {
|
|
46
62
|
const configPathTs = path.join(projectRoot, "flexireact.config.ts");
|
|
47
63
|
const configPathJs = path.join(projectRoot, "flexireact.config.js");
|
|
@@ -53,10 +69,22 @@ async function loadConfig(projectRoot) {
|
|
|
53
69
|
const module = await import(`${configUrl}?t=${Date.now()}`);
|
|
54
70
|
userConfig = module.default || module;
|
|
55
71
|
} catch (error) {
|
|
56
|
-
console.warn(
|
|
72
|
+
console.warn(pc.yellow(`\u26A0 Failed to load config: ${error.message}`));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const merged = deepMerge(defaultConfig, userConfig);
|
|
76
|
+
try {
|
|
77
|
+
return FlexiReactConfigSchema.parse(merged);
|
|
78
|
+
} catch (err) {
|
|
79
|
+
if (err instanceof z.ZodError) {
|
|
80
|
+
console.error(pc.red("\u2716 Configuration validation failed:"));
|
|
81
|
+
for (const issue of err.issues) {
|
|
82
|
+
console.error(pc.dim(` - ${issue.path.join(".")}: ${issue.message}`));
|
|
83
|
+
}
|
|
84
|
+
process.exit(1);
|
|
57
85
|
}
|
|
86
|
+
throw err;
|
|
58
87
|
}
|
|
59
|
-
return deepMerge(defaultConfig, userConfig);
|
|
60
88
|
}
|
|
61
89
|
function deepMerge(target, source) {
|
|
62
90
|
const result = { ...target };
|
|
@@ -79,7 +107,9 @@ function resolvePaths(config, projectRoot) {
|
|
|
79
107
|
};
|
|
80
108
|
}
|
|
81
109
|
export {
|
|
110
|
+
FlexiReactConfigSchema,
|
|
82
111
|
defaultConfig,
|
|
112
|
+
defineConfig,
|
|
83
113
|
loadConfig,
|
|
84
114
|
resolvePaths
|
|
85
115
|
};
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../core/config.ts"],"sourcesContent":["/**\r\n * FlexiReact Configuration System\r\n * Handles loading and merging of configuration
|
|
1
|
+
{"version":3,"sources":["../../core/config.ts"],"sourcesContent":["/**\r\n * FlexiReact Configuration System\r\n * Handles loading, validation, and merging of configuration\r\n */\r\n\r\nimport fs from 'fs';\r\nimport path from 'path';\r\nimport { pathToFileURL } from 'url';\r\nimport { z } from 'zod';\r\nimport pc from 'picocolors';\r\n\r\n/**\r\n * Configuration Schema (Zod validation)\r\n */\r\nconst BuildConfigSchema = z.object({\r\n target: z.string().default('es2022'),\r\n minify: z.boolean().default(true),\r\n sourcemap: z.boolean().default(true),\r\n splitting: z.boolean().default(true)\r\n}).default({});\r\n\r\nconst ServerConfigSchema = z.object({\r\n port: z.number().min(1).max(65535).default(3000),\r\n host: z.string().default('localhost')\r\n}).default({});\r\n\r\nconst SSGConfigSchema = z.object({\r\n enabled: z.boolean().default(false),\r\n paths: z.array(z.string()).default([])\r\n}).default({});\r\n\r\nconst IslandsConfigSchema = z.object({\r\n enabled: z.boolean().default(true),\r\n directive: z.string().default('use island')\r\n}).default({});\r\n\r\nconst RSCConfigSchema = z.object({\r\n enabled: z.boolean().default(true)\r\n}).default({});\r\n\r\nconst PluginSchema = z.object({\r\n name: z.string(),\r\n setup: z.function().optional()\r\n}).passthrough();\r\n\r\nexport const FlexiReactConfigSchema = z.object({\r\n // Directories\r\n pagesDir: z.string().default('pages'),\r\n layoutsDir: z.string().default('layouts'),\r\n publicDir: z.string().default('public'),\r\n outDir: z.string().default('.flexi'),\r\n \r\n // Build options\r\n build: BuildConfigSchema,\r\n \r\n // Server options\r\n server: ServerConfigSchema,\r\n \r\n // SSG options\r\n ssg: SSGConfigSchema,\r\n \r\n // Islands (partial hydration)\r\n islands: IslandsConfigSchema,\r\n \r\n // RSC options\r\n rsc: RSCConfigSchema,\r\n \r\n // Plugins\r\n plugins: z.array(PluginSchema).default([]),\r\n \r\n // Styles (CSS files to include)\r\n styles: z.array(z.string()).default([]),\r\n \r\n // Scripts (JS files to include)\r\n scripts: z.array(z.string()).default([]),\r\n \r\n // Favicon path\r\n favicon: z.string().nullable().default(null)\r\n});\r\n\r\nexport type FlexiReactConfig = z.infer<typeof FlexiReactConfigSchema>;\r\n\r\n/**\r\n * Default configuration\r\n */\r\nexport const defaultConfig: FlexiReactConfig = FlexiReactConfigSchema.parse({});\r\n\r\n/**\r\n * Helper function to define configuration with full type support\r\n * Use this in your flexireact.config.ts file\r\n */\r\nexport function defineConfig(config: Partial<FlexiReactConfig>): Partial<FlexiReactConfig> {\r\n return config;\r\n}\r\n\r\n/**\r\n * Loads and validates configuration from the project root\r\n */\r\nexport async function loadConfig(projectRoot: string): Promise<FlexiReactConfig> {\r\n const configPathTs = path.join(projectRoot, 'flexireact.config.ts');\r\n const configPathJs = path.join(projectRoot, 'flexireact.config.js');\r\n const configPath = fs.existsSync(configPathTs) ? configPathTs : configPathJs;\r\n \r\n let userConfig: Partial<FlexiReactConfig> = {};\r\n \r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const configUrl = pathToFileURL(configPath).href;\r\n const module = await import(`${configUrl}?t=${Date.now()}`);\r\n userConfig = module.default || module;\r\n } catch (error: any) {\r\n console.warn(pc.yellow(`⚠ Failed to load config: ${error.message}`));\r\n }\r\n }\r\n \r\n // Merge and validate with Zod\r\n const merged = deepMerge(defaultConfig, userConfig);\r\n \r\n try {\r\n return FlexiReactConfigSchema.parse(merged);\r\n } catch (err: unknown) {\r\n if (err instanceof z.ZodError) {\r\n console.error(pc.red('✖ Configuration validation failed:'));\r\n for (const issue of err.issues) {\r\n console.error(pc.dim(` - ${issue.path.join('.')}: ${issue.message}`));\r\n }\r\n process.exit(1);\r\n }\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * Deep merge two objects\r\n */\r\nfunction deepMerge(target: Record<string, any>, source: Record<string, any>): Record<string, any> {\r\n const result = { ...target };\r\n \r\n for (const key in source) {\r\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\r\n result[key] = deepMerge(target[key] || {}, source[key]);\r\n } else {\r\n result[key] = source[key];\r\n }\r\n }\r\n \r\n return result;\r\n}\r\n\r\n/**\r\n * Resolves all paths in config relative to project root\r\n */\r\nexport function resolvePaths(config: any, projectRoot: string): any {\r\n return {\r\n ...config,\r\n pagesDir: path.resolve(projectRoot, config.pagesDir),\r\n layoutsDir: path.resolve(projectRoot, config.layoutsDir),\r\n publicDir: path.resolve(projectRoot, config.publicDir),\r\n outDir: path.resolve(projectRoot, config.outDir)\r\n };\r\n}\r\n"],"mappings":"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","names":[]}
|