@drzl/cli 0.1.0 → 0.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.
- package/README.md +4 -4
- package/dist/chunk-MEPFGJIF.js +164 -0
- package/dist/chunk-MEPFGJIF.js.map +1 -0
- package/dist/cli.cjs +305 -79
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +213 -35
- package/dist/cli.js.map +1 -1
- package/dist/config.cjs +100 -42
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +140 -0
- package/dist/config.d.ts +140 -0
- package/dist/config.js +11 -3
- package/package.json +16 -10
- package/dist/chunk-XVTVU3EC.js +0 -109
- package/dist/chunk-XVTVU3EC.js.map +0 -1
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const NamingSchema: z.ZodObject<{
|
|
4
|
+
routerSuffix: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
5
|
+
procedureCase: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
6
|
+
camel: "camel";
|
|
7
|
+
kebab: "kebab";
|
|
8
|
+
snake: "snake";
|
|
9
|
+
}>>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
declare const GeneratorSchema: z.ZodObject<{
|
|
12
|
+
kind: z.ZodEnum<{
|
|
13
|
+
orpc: "orpc";
|
|
14
|
+
service: "service";
|
|
15
|
+
zod: "zod";
|
|
16
|
+
valibot: "valibot";
|
|
17
|
+
arktype: "arktype";
|
|
18
|
+
}>;
|
|
19
|
+
template: z.ZodOptional<z.ZodString>;
|
|
20
|
+
includeRelations: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
+
naming: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
routerSuffix: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
23
|
+
procedureCase: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
24
|
+
camel: "camel";
|
|
25
|
+
kebab: "kebab";
|
|
26
|
+
snake: "snake";
|
|
27
|
+
}>>>;
|
|
28
|
+
}, z.core.$strip>>;
|
|
29
|
+
outputHeader: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
31
|
+
text: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
format: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
35
|
+
engine: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
36
|
+
auto: "auto";
|
|
37
|
+
prettier: "prettier";
|
|
38
|
+
biome: "biome";
|
|
39
|
+
}>>>;
|
|
40
|
+
configPath: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
path: z.ZodOptional<z.ZodString>;
|
|
43
|
+
dataAccess: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
44
|
+
stub: "stub";
|
|
45
|
+
drizzle: "drizzle";
|
|
46
|
+
}>>>;
|
|
47
|
+
dbImportPath: z.ZodOptional<z.ZodString>;
|
|
48
|
+
schemaImportPath: z.ZodOptional<z.ZodString>;
|
|
49
|
+
schemaSuffix: z.ZodOptional<z.ZodString>;
|
|
50
|
+
fileSuffix: z.ZodOptional<z.ZodString>;
|
|
51
|
+
validation: z.ZodOptional<z.ZodObject<{
|
|
52
|
+
useShared: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
53
|
+
library: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
54
|
+
zod: "zod";
|
|
55
|
+
valibot: "valibot";
|
|
56
|
+
arktype: "arktype";
|
|
57
|
+
}>>>;
|
|
58
|
+
importPath: z.ZodOptional<z.ZodString>;
|
|
59
|
+
schemaSuffix: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>>;
|
|
61
|
+
templateOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
declare const AnalyzerSchema: z.ZodObject<{
|
|
64
|
+
includeRelations: z.ZodDefault<z.ZodBoolean>;
|
|
65
|
+
validateConstraints: z.ZodDefault<z.ZodBoolean>;
|
|
66
|
+
includeHeuristicRelations: z.ZodDefault<z.ZodBoolean>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
declare const ConfigSchema: z.ZodObject<{
|
|
69
|
+
schema: z.ZodString;
|
|
70
|
+
outDir: z.ZodDefault<z.ZodString>;
|
|
71
|
+
analyzer: z.ZodDefault<z.ZodObject<{
|
|
72
|
+
includeRelations: z.ZodDefault<z.ZodBoolean>;
|
|
73
|
+
validateConstraints: z.ZodDefault<z.ZodBoolean>;
|
|
74
|
+
includeHeuristicRelations: z.ZodDefault<z.ZodBoolean>;
|
|
75
|
+
}, z.core.$strip>>;
|
|
76
|
+
generators: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
77
|
+
kind: z.ZodEnum<{
|
|
78
|
+
orpc: "orpc";
|
|
79
|
+
service: "service";
|
|
80
|
+
zod: "zod";
|
|
81
|
+
valibot: "valibot";
|
|
82
|
+
arktype: "arktype";
|
|
83
|
+
}>;
|
|
84
|
+
template: z.ZodOptional<z.ZodString>;
|
|
85
|
+
includeRelations: z.ZodOptional<z.ZodBoolean>;
|
|
86
|
+
naming: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
routerSuffix: z.ZodOptional<z.ZodDefault<z.ZodString>>;
|
|
88
|
+
procedureCase: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
89
|
+
camel: "camel";
|
|
90
|
+
kebab: "kebab";
|
|
91
|
+
snake: "snake";
|
|
92
|
+
}>>>;
|
|
93
|
+
}, z.core.$strip>>;
|
|
94
|
+
outputHeader: z.ZodOptional<z.ZodObject<{
|
|
95
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
96
|
+
text: z.ZodOptional<z.ZodString>;
|
|
97
|
+
}, z.core.$strip>>;
|
|
98
|
+
format: z.ZodOptional<z.ZodObject<{
|
|
99
|
+
enabled: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
100
|
+
engine: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
101
|
+
auto: "auto";
|
|
102
|
+
prettier: "prettier";
|
|
103
|
+
biome: "biome";
|
|
104
|
+
}>>>;
|
|
105
|
+
configPath: z.ZodOptional<z.ZodString>;
|
|
106
|
+
}, z.core.$strip>>;
|
|
107
|
+
path: z.ZodOptional<z.ZodString>;
|
|
108
|
+
dataAccess: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
109
|
+
stub: "stub";
|
|
110
|
+
drizzle: "drizzle";
|
|
111
|
+
}>>>;
|
|
112
|
+
dbImportPath: z.ZodOptional<z.ZodString>;
|
|
113
|
+
schemaImportPath: z.ZodOptional<z.ZodString>;
|
|
114
|
+
schemaSuffix: z.ZodOptional<z.ZodString>;
|
|
115
|
+
fileSuffix: z.ZodOptional<z.ZodString>;
|
|
116
|
+
validation: z.ZodOptional<z.ZodObject<{
|
|
117
|
+
useShared: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
118
|
+
library: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
119
|
+
zod: "zod";
|
|
120
|
+
valibot: "valibot";
|
|
121
|
+
arktype: "arktype";
|
|
122
|
+
}>>>;
|
|
123
|
+
importPath: z.ZodOptional<z.ZodString>;
|
|
124
|
+
schemaSuffix: z.ZodOptional<z.ZodString>;
|
|
125
|
+
}, z.core.$strip>>;
|
|
126
|
+
templateOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
127
|
+
}, z.core.$strip>>>;
|
|
128
|
+
}, z.core.$strip>;
|
|
129
|
+
type DrzlConfigInput = z.input<typeof ConfigSchema>;
|
|
130
|
+
type DrzlConfig = z.output<typeof ConfigSchema>;
|
|
131
|
+
declare function defineConfig<T extends DrzlConfigInput>(cfg: T): T;
|
|
132
|
+
declare function loadConfig(customPath?: string): Promise<DrzlConfig | null>;
|
|
133
|
+
/** Absolute output dirs for all generators (to ignore in watcher). */
|
|
134
|
+
declare function computeGeneratorOutputDirs(cfg: DrzlConfig, cwd?: string): string[];
|
|
135
|
+
/** Resolve custom template directories (local path or installed package). */
|
|
136
|
+
declare function resolveTemplateDirsSync(cfg: DrzlConfig, cwd?: string): string[];
|
|
137
|
+
/** Build watch targets (exclude output dirs; watcher will ignore those). */
|
|
138
|
+
declare function computeWatchTargets(cfg: DrzlConfig, cwd?: string): string[];
|
|
139
|
+
|
|
140
|
+
export { AnalyzerSchema, ConfigSchema, type DrzlConfig, type DrzlConfigInput, GeneratorSchema, NamingSchema, computeGeneratorOutputDirs, computeWatchTargets, defineConfig, loadConfig, resolveTemplateDirsSync };
|
package/dist/config.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AnalyzerSchema,
|
|
2
3
|
ConfigSchema,
|
|
3
4
|
GeneratorSchema,
|
|
4
5
|
NamingSchema,
|
|
6
|
+
computeGeneratorOutputDirs,
|
|
7
|
+
computeWatchTargets,
|
|
5
8
|
defineConfig,
|
|
6
|
-
loadConfig
|
|
7
|
-
|
|
9
|
+
loadConfig,
|
|
10
|
+
resolveTemplateDirsSync
|
|
11
|
+
} from "./chunk-MEPFGJIF.js";
|
|
8
12
|
export {
|
|
13
|
+
AnalyzerSchema,
|
|
9
14
|
ConfigSchema,
|
|
10
15
|
GeneratorSchema,
|
|
11
16
|
NamingSchema,
|
|
17
|
+
computeGeneratorOutputDirs,
|
|
18
|
+
computeWatchTargets,
|
|
12
19
|
defineConfig,
|
|
13
|
-
loadConfig
|
|
20
|
+
loadConfig,
|
|
21
|
+
resolveTemplateDirsSync
|
|
14
22
|
};
|
|
15
23
|
//# sourceMappingURL=config.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drzl/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -8,9 +8,15 @@
|
|
|
8
8
|
"drzl": "dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"main": "dist/cli.js",
|
|
11
|
+
"types": "dist/config.d.ts",
|
|
11
12
|
"exports": {
|
|
12
|
-
".":
|
|
13
|
-
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/cli.js"
|
|
15
|
+
},
|
|
16
|
+
"./config": {
|
|
17
|
+
"import": "./dist/config.js",
|
|
18
|
+
"types": "./dist/config.d.ts"
|
|
19
|
+
}
|
|
14
20
|
},
|
|
15
21
|
"files": [
|
|
16
22
|
"dist"
|
|
@@ -23,12 +29,12 @@
|
|
|
23
29
|
"cli-progress": "^3.12.0",
|
|
24
30
|
"zod": "^4.1.5",
|
|
25
31
|
"jiti": "^2.5.1",
|
|
26
|
-
"@drzl/analyzer": "^0.
|
|
27
|
-
"@drzl/generator-orpc": "^0.
|
|
28
|
-
"@drzl/generator-zod": "^0.
|
|
29
|
-
"@drzl/generator-service": "^0.
|
|
30
|
-
"@drzl/generator-valibot": "^0.
|
|
31
|
-
"@drzl/generator-arktype": "^0.
|
|
32
|
+
"@drzl/analyzer": "^0.3.0",
|
|
33
|
+
"@drzl/generator-orpc": "^0.3.0",
|
|
34
|
+
"@drzl/generator-zod": "^0.3.0",
|
|
35
|
+
"@drzl/generator-service": "^0.3.0",
|
|
36
|
+
"@drzl/generator-valibot": "^0.3.0",
|
|
37
|
+
"@drzl/generator-arktype": "^0.3.0"
|
|
32
38
|
},
|
|
33
39
|
"devDependencies": {
|
|
34
40
|
"tsup": "^8.5.0",
|
|
@@ -49,7 +55,7 @@
|
|
|
49
55
|
"directory": "packages/cli"
|
|
50
56
|
},
|
|
51
57
|
"scripts": {
|
|
52
|
-
"build": "tsup src/cli.ts src/config.ts --format esm,cjs --sourcemap",
|
|
58
|
+
"build": "tsup src/cli.ts src/config.ts --format esm,cjs --sourcemap --dts",
|
|
53
59
|
"dev": "node --loader ts-node/esm src/cli.ts --help",
|
|
54
60
|
"lint": "eslint . --ext .ts",
|
|
55
61
|
"test": "vitest run"
|
package/dist/chunk-XVTVU3EC.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
// src/config.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var NamingSchema = z.object({
|
|
4
|
-
routerSuffix: z.string().default("Router"),
|
|
5
|
-
procedureCase: z.enum(["camel", "kebab", "snake"]).default("camel")
|
|
6
|
-
}).partial();
|
|
7
|
-
var GeneratorSchema = z.object({
|
|
8
|
-
kind: z.enum(["orpc", "service", "zod", "valibot", "arktype"]),
|
|
9
|
-
template: z.string().optional(),
|
|
10
|
-
includeRelations: z.boolean().optional(),
|
|
11
|
-
naming: NamingSchema.optional(),
|
|
12
|
-
outputHeader: z.object({
|
|
13
|
-
enabled: z.boolean().default(true).optional(),
|
|
14
|
-
text: z.string().optional()
|
|
15
|
-
}).optional(),
|
|
16
|
-
format: z.object({
|
|
17
|
-
enabled: z.boolean().default(true).optional(),
|
|
18
|
-
engine: z.enum(["auto", "prettier", "biome"]).default("auto").optional(),
|
|
19
|
-
configPath: z.string().optional()
|
|
20
|
-
}).optional(),
|
|
21
|
-
// service generator specific options
|
|
22
|
-
path: z.string().optional(),
|
|
23
|
-
dataAccess: z.enum(["stub", "drizzle"]).default("stub").optional(),
|
|
24
|
-
dbImportPath: z.string().optional(),
|
|
25
|
-
schemaImportPath: z.string().optional(),
|
|
26
|
-
// zod generator specific options
|
|
27
|
-
schemaSuffix: z.string().optional(),
|
|
28
|
-
fileSuffix: z.string().optional(),
|
|
29
|
-
// orpc validation sharing
|
|
30
|
-
validation: z.object({
|
|
31
|
-
useShared: z.boolean().default(false).optional(),
|
|
32
|
-
library: z.enum(["zod", "valibot", "arktype"]).default("zod").optional(),
|
|
33
|
-
importPath: z.string().optional(),
|
|
34
|
-
schemaSuffix: z.string().optional()
|
|
35
|
-
}).optional(),
|
|
36
|
-
// template options
|
|
37
|
-
templateOptions: z.record(z.string(), z.any()).optional()
|
|
38
|
-
});
|
|
39
|
-
var ConfigSchema = z.object({
|
|
40
|
-
schema: z.string(),
|
|
41
|
-
outDir: z.string().default("src/api"),
|
|
42
|
-
analyzer: z.object({
|
|
43
|
-
includeRelations: z.boolean().default(true),
|
|
44
|
-
validateConstraints: z.boolean().default(true),
|
|
45
|
-
includeHeuristicRelations: z.boolean().default(false)
|
|
46
|
-
}).default({
|
|
47
|
-
includeRelations: true,
|
|
48
|
-
validateConstraints: true,
|
|
49
|
-
includeHeuristicRelations: false
|
|
50
|
-
}),
|
|
51
|
-
generators: z.array(GeneratorSchema).min(1).default([{ kind: "orpc" }])
|
|
52
|
-
});
|
|
53
|
-
function defineConfig(cfg) {
|
|
54
|
-
return cfg;
|
|
55
|
-
}
|
|
56
|
-
async function loadConfig(customPath) {
|
|
57
|
-
const path = await import("path");
|
|
58
|
-
const fs = await import("fs/promises");
|
|
59
|
-
const candidates = customPath ? [customPath] : ["drzl.config.ts", "drzl.config.mjs", "drzl.config.js"];
|
|
60
|
-
for (const c of candidates) {
|
|
61
|
-
const p = path.resolve(process.cwd(), c);
|
|
62
|
-
try {
|
|
63
|
-
await fs.access(p);
|
|
64
|
-
} catch {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
if (/\.json$/i.test(p)) {
|
|
68
|
-
try {
|
|
69
|
-
const content = await fs.readFile(p, "utf8");
|
|
70
|
-
const raw = JSON.parse(content);
|
|
71
|
-
const parsed = ConfigSchema.parse(raw);
|
|
72
|
-
return parsed;
|
|
73
|
-
} catch (e2) {
|
|
74
|
-
throw new Error(`Failed to load config from ${p}: ${String(e2)}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
const { createJiti } = await import("jiti");
|
|
79
|
-
const jit = createJiti(import.meta.url);
|
|
80
|
-
const mod = await jit.import(p);
|
|
81
|
-
const raw = mod && typeof mod === "object" && "default" in mod ? mod.default : mod;
|
|
82
|
-
const parsed = ConfigSchema.safeParse(raw);
|
|
83
|
-
if (!parsed.success) {
|
|
84
|
-
throw new Error(parsed.error.message);
|
|
85
|
-
}
|
|
86
|
-
return parsed.data;
|
|
87
|
-
} catch (e) {
|
|
88
|
-
console.error(`jiti failed to load ${p}:`, e);
|
|
89
|
-
try {
|
|
90
|
-
const content = await fs.readFile(p, "utf8");
|
|
91
|
-
const raw = JSON.parse(content);
|
|
92
|
-
const parsed = ConfigSchema.parse(raw);
|
|
93
|
-
return parsed;
|
|
94
|
-
} catch (e2) {
|
|
95
|
-
throw new Error(`Failed to load config from ${p}: ${String(e2)}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export {
|
|
103
|
-
NamingSchema,
|
|
104
|
-
GeneratorSchema,
|
|
105
|
-
ConfigSchema,
|
|
106
|
-
defineConfig,
|
|
107
|
-
loadConfig
|
|
108
|
-
};
|
|
109
|
-
//# sourceMappingURL=chunk-XVTVU3EC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const NamingSchema = z\n .object({\n routerSuffix: z.string().default('Router'),\n procedureCase: z.enum(['camel', 'kebab', 'snake']).default('camel'),\n })\n .partial();\n\nexport const GeneratorSchema = z.object({\n kind: z.enum(['orpc', 'service', 'zod', 'valibot', 'arktype']),\n template: z.string().optional(),\n includeRelations: z.boolean().optional(),\n naming: NamingSchema.optional(),\n outputHeader: z\n .object({\n enabled: z.boolean().default(true).optional(),\n text: z.string().optional(),\n })\n .optional(),\n format: z\n .object({\n enabled: z.boolean().default(true).optional(),\n engine: z.enum(['auto', 'prettier', 'biome']).default('auto').optional(),\n configPath: z.string().optional(),\n })\n .optional(),\n // service generator specific options\n path: z.string().optional(),\n dataAccess: z.enum(['stub', 'drizzle']).default('stub').optional(),\n dbImportPath: z.string().optional(),\n schemaImportPath: z.string().optional(),\n // zod generator specific options\n schemaSuffix: z.string().optional(),\n fileSuffix: z.string().optional(),\n // orpc validation sharing\n validation: z\n .object({\n useShared: z.boolean().default(false).optional(),\n library: z.enum(['zod', 'valibot', 'arktype']).default('zod').optional(),\n importPath: z.string().optional(),\n schemaSuffix: z.string().optional(),\n })\n .optional(),\n // template options\n templateOptions: z.record(z.string(), z.any()).optional(),\n});\n\nexport const ConfigSchema = z.object({\n schema: z.string(),\n outDir: z.string().default('src/api'),\n analyzer: z\n .object({\n includeRelations: z.boolean().default(true),\n validateConstraints: z.boolean().default(true),\n includeHeuristicRelations: z.boolean().default(false),\n })\n .default({\n includeRelations: true,\n validateConstraints: true,\n includeHeuristicRelations: false,\n }),\n generators: z\n .array(GeneratorSchema)\n .min(1)\n .default([{ kind: 'orpc' } as any]),\n});\n\nexport type DrzlConfig = z.infer<typeof ConfigSchema>;\n\nexport function defineConfig(cfg: DrzlConfig) {\n return cfg;\n}\n\nexport async function loadConfig(customPath?: string): Promise<DrzlConfig | null> {\n const path = await import('node:path');\n const fs = await import('node:fs/promises');\n\n const candidates = customPath\n ? [customPath]\n : ['drzl.config.ts', 'drzl.config.mjs', 'drzl.config.js'];\n\n for (const c of candidates) {\n const p = path.resolve(process.cwd(), c);\n try {\n await fs.access(p);\n } catch {\n continue;\n }\n // If JSON, parse directly and skip module loading\n if (/\\.json$/i.test(p)) {\n try {\n const content = await fs.readFile(p, 'utf8');\n const raw = JSON.parse(content);\n const parsed = ConfigSchema.parse(raw);\n return parsed;\n } catch (e2) {\n throw new Error(`Failed to load config from ${p}: ${String(e2)}`);\n }\n }\n // Try jiti to seamlessly load TS/ESM/CJS\n try {\n const { createJiti } = await import('jiti');\n const jit = createJiti(import.meta.url);\n const mod = await jit.import(p);\n const raw = mod && typeof mod === 'object' && 'default' in mod ? mod.default : mod;\n const parsed = ConfigSchema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(parsed.error.message);\n }\n return parsed.data;\n } catch (e) {\n console.error(`jiti failed to load ${p}:`, e);\n // Fallback: try JSON parse\n try {\n const content = await fs.readFile(p, 'utf8');\n const raw = JSON.parse(content);\n const parsed = ConfigSchema.parse(raw);\n return parsed;\n } catch (e2) {\n throw new Error(`Failed to load config from ${p}: ${String(e2)}`);\n }\n }\n }\n return null;\n}\n"],"mappings":"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","names":[]}
|