@soda-gql/config 0.0.1 → 0.0.2
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/index.cjs +59 -15
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -15
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,14 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (all) => {
|
|
9
|
+
let target = {};
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
return target;
|
|
15
|
+
};
|
|
8
16
|
var __copyProps = (to, from, except, desc) => {
|
|
9
17
|
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
18
|
key = keys[i];
|
|
@@ -39,8 +47,8 @@ let node_vm = require("node:vm");
|
|
|
39
47
|
node_vm = __toESM(node_vm);
|
|
40
48
|
let __swc_core = require("@swc/core");
|
|
41
49
|
__swc_core = __toESM(__swc_core);
|
|
42
|
-
let
|
|
43
|
-
|
|
50
|
+
let node_url = require("node:url");
|
|
51
|
+
node_url = __toESM(node_url);
|
|
44
52
|
|
|
45
53
|
//#region packages/config/src/errors.ts
|
|
46
54
|
const configError = ({ code, message, filePath, cause }) => ({
|
|
@@ -116,6 +124,9 @@ function executeConfigFile(configPath) {
|
|
|
116
124
|
const mod = { exports: {} };
|
|
117
125
|
const requireInner = (0, node_module.createRequire)(filePath);
|
|
118
126
|
const require$1 = (specifier) => {
|
|
127
|
+
if (specifier === "@soda-gql/config") {
|
|
128
|
+
return src_exports;
|
|
129
|
+
}
|
|
119
130
|
if (!specifier.startsWith(".")) {
|
|
120
131
|
return requireInner(specifier);
|
|
121
132
|
}
|
|
@@ -141,14 +152,14 @@ function executeConfigFile(configPath) {
|
|
|
141
152
|
if (!config) {
|
|
142
153
|
throw new Error("Invalid config module");
|
|
143
154
|
}
|
|
144
|
-
return config;
|
|
155
|
+
return (0, neverthrow.ok)(config);
|
|
145
156
|
} catch (error) {
|
|
146
|
-
|
|
157
|
+
return (0, neverthrow.err)(configError({
|
|
147
158
|
code: "CONFIG_LOAD_FAILED",
|
|
148
159
|
message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,
|
|
149
160
|
filePath,
|
|
150
161
|
cause: error
|
|
151
|
-
});
|
|
162
|
+
}));
|
|
152
163
|
}
|
|
153
164
|
}
|
|
154
165
|
|
|
@@ -156,21 +167,23 @@ function executeConfigFile(configPath) {
|
|
|
156
167
|
//#region packages/config/src/normalize.ts
|
|
157
168
|
/**
|
|
158
169
|
* Resolve and normalize config with defaults.
|
|
170
|
+
* Paths in the config are resolved relative to the config file's directory.
|
|
159
171
|
*/
|
|
160
|
-
function normalizeConfig(config) {
|
|
172
|
+
function normalizeConfig(config, configPath) {
|
|
173
|
+
const configDir = (0, node_path.dirname)(configPath);
|
|
161
174
|
const analyzer = config.analyzer ?? "ts";
|
|
162
175
|
const graphqlSystemAliases = config.graphqlSystemAliases ?? ["@/graphql-system"];
|
|
163
176
|
const exclude = config.exclude ?? [];
|
|
164
177
|
const resolved = {
|
|
165
178
|
analyzer,
|
|
166
|
-
outdir: (0, node_path.resolve)(config.outdir),
|
|
179
|
+
outdir: (0, node_path.resolve)(configDir, config.outdir),
|
|
167
180
|
graphqlSystemAliases,
|
|
168
|
-
include: config.include.map((pattern) => (0, node_path.resolve)(pattern)),
|
|
169
|
-
exclude: exclude.map((pattern) => (0, node_path.resolve)(pattern)),
|
|
181
|
+
include: config.include.map((pattern) => (0, node_path.resolve)(configDir, pattern)),
|
|
182
|
+
exclude: exclude.map((pattern) => (0, node_path.resolve)(configDir, pattern)),
|
|
170
183
|
schemas: Object.fromEntries(Object.entries(config.schemas).map(([name, schemaConfig]) => [name, {
|
|
171
|
-
schema: (0, node_path.resolve)(schemaConfig.schema),
|
|
172
|
-
runtimeAdapter: (0, node_path.resolve)(schemaConfig.runtimeAdapter),
|
|
173
|
-
scalars: (0, node_path.resolve)(schemaConfig.scalars)
|
|
184
|
+
schema: (0, node_path.resolve)(configDir, schemaConfig.schema),
|
|
185
|
+
runtimeAdapter: (0, node_path.resolve)(configDir, schemaConfig.runtimeAdapter),
|
|
186
|
+
scalars: (0, node_path.resolve)(configDir, schemaConfig.scalars)
|
|
174
187
|
}])),
|
|
175
188
|
plugins: config.plugins ?? {}
|
|
176
189
|
};
|
|
@@ -213,7 +226,11 @@ function loadConfig(configPath) {
|
|
|
213
226
|
}));
|
|
214
227
|
}
|
|
215
228
|
try {
|
|
216
|
-
|
|
229
|
+
const result = executeConfigFile(resolvedPath);
|
|
230
|
+
if (result.isErr()) {
|
|
231
|
+
return (0, neverthrow.err)(result.error);
|
|
232
|
+
}
|
|
233
|
+
return normalizeConfig(result.value, resolvedPath);
|
|
217
234
|
} catch (error) {
|
|
218
235
|
return (0, neverthrow.err)(configError({
|
|
219
236
|
code: "CONFIG_LOAD_FAILED",
|
|
@@ -234,11 +251,20 @@ function loadConfigFrom(dir) {
|
|
|
234
251
|
//#endregion
|
|
235
252
|
//#region packages/config/src/test-utils.ts
|
|
236
253
|
/**
|
|
254
|
+
* Get project root from this package location.
|
|
255
|
+
* packages/config/src/test-utils.ts -> project root
|
|
256
|
+
*/
|
|
257
|
+
const getProjectRoot = () => {
|
|
258
|
+
return (0, node_url.fileURLToPath)(new URL("../../../", require("url").pathToFileURL(__filename).href));
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
237
261
|
* Create temporary config file with proper formatting.
|
|
238
262
|
* Uses template literals to support functions, regex, etc.
|
|
239
263
|
*/
|
|
240
264
|
async function withTempConfig(config, fn) {
|
|
241
|
-
const
|
|
265
|
+
const projectRoot = getProjectRoot();
|
|
266
|
+
const tmpDir = (0, node_path.join)(projectRoot, "tests/.tmp/config-test", `${Date.now()}`);
|
|
267
|
+
(0, node_fs.mkdirSync)(tmpDir, { recursive: true });
|
|
242
268
|
const configPath = (0, node_path.join)(tmpDir, "soda-gql.config.ts");
|
|
243
269
|
const configContent = `
|
|
244
270
|
import { defineConfig } from "@soda-gql/config";
|
|
@@ -258,11 +284,29 @@ export default defineConfig(${JSON.stringify(config, null, 2)});
|
|
|
258
284
|
*/
|
|
259
285
|
function createTempConfigFile(dir, config) {
|
|
260
286
|
const configPath = (0, node_path.join)(dir, "soda-gql.config.ts");
|
|
261
|
-
const configContent = `
|
|
287
|
+
const configContent = `
|
|
288
|
+
import { defineConfig } from "@soda-gql/config";
|
|
289
|
+
|
|
290
|
+
export default defineConfig(${JSON.stringify(config, null, 2)});
|
|
291
|
+
`.trim();
|
|
262
292
|
(0, node_fs.writeFileSync)(configPath, configContent);
|
|
263
293
|
return configPath;
|
|
264
294
|
}
|
|
265
295
|
|
|
296
|
+
//#endregion
|
|
297
|
+
//#region packages/config/src/index.ts
|
|
298
|
+
var src_exports = /* @__PURE__ */ __export({
|
|
299
|
+
configError: () => configError,
|
|
300
|
+
createTempConfigFile: () => createTempConfigFile,
|
|
301
|
+
defineConfig: () => defineConfig,
|
|
302
|
+
findConfigFile: () => findConfigFile,
|
|
303
|
+
loadConfig: () => loadConfig,
|
|
304
|
+
loadConfigFrom: () => loadConfigFrom,
|
|
305
|
+
normalizeConfig: () => normalizeConfig,
|
|
306
|
+
validateConfig: () => validateConfig,
|
|
307
|
+
withTempConfig: () => withTempConfig
|
|
308
|
+
});
|
|
309
|
+
|
|
266
310
|
//#endregion
|
|
267
311
|
exports.configError = configError;
|
|
268
312
|
exports.createTempConfigFile = createTempConfigFile;
|
package/dist/index.d.cts
CHANGED
|
@@ -149,8 +149,9 @@ declare function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, Conf
|
|
|
149
149
|
//#region packages/config/src/normalize.d.ts
|
|
150
150
|
/**
|
|
151
151
|
* Resolve and normalize config with defaults.
|
|
152
|
+
* Paths in the config are resolved relative to the config file's directory.
|
|
152
153
|
*/
|
|
153
|
-
declare function normalizeConfig(config: SodaGqlConfig): Result<ResolvedSodaGqlConfig, ConfigError>;
|
|
154
|
+
declare function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError>;
|
|
154
155
|
//#endregion
|
|
155
156
|
//#region packages/config/src/test-utils.d.ts
|
|
156
157
|
/**
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts","../src/test-utils.ts"],"sourcesContent":[],"mappings":";;;KAAY,eAAA;KAEA,WAAA;iBACK;EAHL,SAAA,OAAA,EAAe,MAAA;EAEf,SAAA,QAAW,CAAA,EAAA,MACN;EAMJ,SAAA,KAeX,CAAA,EAAA,OAAA;CAAA;AAf0B,cAAf,WAAe,EAAA,CAAA;EAAA,IAAA;EAAA,OAAA;EAAA,QAAA;EAAA;CAAA,EAAA;MAAA,EAMpB,eANoB;SAAA,EAAA,MAAA;UAAA,CAAA,EAAA,MAAA;OAMpB,CAAA,EAAA,OAAA;MAIJ,WAAA;;;KClBQ,YAAA;;;EDDA,SAAA,OAAA,EAAe,MAAA;AAE3B,CAAA;AAOa,KCDD,YAAA,GAAe,MDgBzB,CAAA,MAAA,EAAA,OAAA,CAAA;AAAA,KCbU,aAAA,GDaV;;;;;WATM,QAAA,CAAA,EAAA,IAAA,GAAA,KAAA;;;;;;ACdR;EAOY,SAAA,MAAY,EAAA,MAAA;EAGZ;;;;;;EAyCqB,SAAA,oBAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EAIrB;;;;;;EAOoB,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;;;;ACpDhC;;;WAG+B,OAAA,CAAA,EAAA,SAAA,MAAA,EAAA;;;AAyC/B;EAA4B,SAAA,OAAA,EDPR,QCOQ,CDPC,MCOD,CAAA,MAAA,EDPgB,YCOhB,CAAA,CAAA;;;;EACZ,SAAA,OAAY,CAAA,EDJP,YCIO;CAAA;AAAe,KDA/B,qBAAA,GCA+B;WAAgB,QAAA,EAAA,IAAA,GAAA,KAAA;EAAsB,SAAA,MAAA,EAAA,MAAA;EAyBjE,SAAA,oBAAc,EAAA,SAAA,MAAA,EAAA;EAAA,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;WAA0B,OAAA,EAAA,SAAA,MAAA,EAAA;WAAe,OAAA,EDnBnD,QCmBmD,CDnB1C,MCmB0C,CAAA,MAAA,EDnB3B,YCmB2B,CAAA,CAAA;WAAtB,OAAA,EDlB7B,YCkB6B;CAAM;;;AFjFvD;AAEA;AAOA;;;AAA4B,cEEf,sBAAA,CFFe;WAAA,MAAA,EEGkB,aFHlB;UAAA,WAAA,CAAA;SAMpB,MAAA,CAAA,MAAA,EEDuB,aFCvB,CAAA,EEDuC,sBFCvC;;;;;;ACdR;AAOA;AAGA;;;;;;;AA6CA;;;;;;;;;;AC7CA;;;;;;AA4CA;;;;;AACA;;AAA2C,iBAD3B,YAAA,CAC2B,MAAA,EADN,aACM,CAAA,EADU,sBACV;AAAgB,iBAA3C,YAAA,CAA2C,MAAA,EAAA,GAAA,GAAhB,aAAgB,CAAA,EAAA,sBAAA;AAAsB,iBAyBjE,cAAA,CAzBiE,MAAA,EAAA,OAAA,CAAA,EAyBhC,MAzBgC,CAyBzB,aAzByB,EAyBV,WAzBU,CAAA;;;AFxDrE,cGUC,wBHVc,EAAA,SAAA,CAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA;AAE3B;AAOA;;AAA4B,iBGWZ,cAAA,CHXY,QAAA,CAAA,EAAA,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;;;AAMpB,iBGsBQ,UAAA,CHtBR,UAAA,EAAA,MAAA,GAAA,SAAA,CAAA,EGsBoD,MHtBpD,CGsB2D,qBHtB3D,EGsBkF,WHtBlF,CAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts","../src/test-utils.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -149,8 +149,9 @@ declare function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, Conf
|
|
|
149
149
|
//#region packages/config/src/normalize.d.ts
|
|
150
150
|
/**
|
|
151
151
|
* Resolve and normalize config with defaults.
|
|
152
|
+
* Paths in the config are resolved relative to the config file's directory.
|
|
152
153
|
*/
|
|
153
|
-
declare function normalizeConfig(config: SodaGqlConfig): Result<ResolvedSodaGqlConfig, ConfigError>;
|
|
154
|
+
declare function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError>;
|
|
154
155
|
//#endregion
|
|
155
156
|
//#region packages/config/src/test-utils.d.ts
|
|
156
157
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts","../src/test-utils.ts"],"sourcesContent":[],"mappings":";;;KAAY,eAAA;KAEA,WAAA;iBACK;EAHL,SAAA,OAAA,EAAe,MAAA;EAEf,SAAA,QAAW,CAAA,EAAA,MACN;EAMJ,SAAA,KAeX,CAAA,EAAA,OAAA;CAAA;AAf0B,cAAf,WAAe,EAAA,CAAA;EAAA,IAAA;EAAA,OAAA;EAAA,QAAA;EAAA;CAAA,EAAA;MAAA,EAMpB,eANoB;SAAA,EAAA,MAAA;UAAA,CAAA,EAAA,MAAA;OAMpB,CAAA,EAAA,OAAA;MAIJ,WAAA;;;KClBQ,YAAA;;;EDDA,SAAA,OAAA,EAAe,MAAA;AAE3B,CAAA;AAOa,KCDD,YAAA,GAAe,MDgBzB,CAAA,MAAA,EAAA,OAAA,CAAA;AAAA,KCbU,aAAA,GDaV;;;;;WATM,QAAA,CAAA,EAAA,IAAA,GAAA,KAAA;;;;;;ACdR;EAOY,SAAA,MAAY,EAAA,MAAA;EAGZ;;;;;;EAyCqB,SAAA,oBAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EAIrB;;;;;;EAOoB,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;;;;ACpDhC;;;WAG+B,OAAA,CAAA,EAAA,SAAA,MAAA,EAAA;;;AAyC/B;EAA4B,SAAA,OAAA,EDPR,QCOQ,CDPC,MCOD,CAAA,MAAA,EDPgB,YCOhB,CAAA,CAAA;;;;EACZ,SAAA,OAAY,CAAA,EDJP,YCIO;CAAA;AAAe,KDA/B,qBAAA,GCA+B;WAAgB,QAAA,EAAA,IAAA,GAAA,KAAA;EAAsB,SAAA,MAAA,EAAA,MAAA;EAyBjE,SAAA,oBAAc,EAAA,SAAA,MAAA,EAAA;EAAA,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;WAA0B,OAAA,EAAA,SAAA,MAAA,EAAA;WAAe,OAAA,EDnBnD,QCmBmD,CDnB1C,MCmB0C,CAAA,MAAA,EDnB3B,YCmB2B,CAAA,CAAA;WAAtB,OAAA,EDlB7B,YCkB6B;CAAM;;;AFjFvD;AAEA;AAOA;;;AAA4B,cEEf,sBAAA,CFFe;WAAA,MAAA,EEGkB,aFHlB;UAAA,WAAA,CAAA;SAMpB,MAAA,CAAA,MAAA,EEDuB,aFCvB,CAAA,EEDuC,sBFCvC;;;;;;ACdR;AAOA;AAGA;;;;;;;AA6CA;;;;;;;;;;AC7CA;;;;;;AA4CA;;;;;AACA;;AAA2C,iBAD3B,YAAA,CAC2B,MAAA,EADN,aACM,CAAA,EADU,sBACV;AAAgB,iBAA3C,YAAA,CAA2C,MAAA,EAAA,GAAA,GAAhB,aAAgB,CAAA,EAAA,sBAAA;AAAsB,iBAyBjE,cAAA,CAzBiE,MAAA,EAAA,OAAA,CAAA,EAyBhC,MAzBgC,CAyBzB,aAzByB,EAyBV,WAzBU,CAAA;;;AFxDrE,cGUC,wBHVc,EAAA,SAAA,CAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA;AAE3B;AAOA;;AAA4B,iBGWZ,cAAA,CHXY,QAAA,CAAA,EAAA,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;;;AAMpB,iBGsBQ,UAAA,CHtBR,UAAA,EAAA,MAAA,GAAA,SAAA,CAAA,EGsBoD,MHtBpD,CGsB2D,qBHtB3D,EGsBkF,WHtBlF,CAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts","../src/test-utils.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,13 +2,25 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
import { defineSchemaFor, resolveRelativeImportWithExistenceCheck } from "@soda-gql/common";
|
|
3
3
|
import { err, ok } from "neverthrow";
|
|
4
4
|
import z from "zod";
|
|
5
|
-
import { existsSync,
|
|
5
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
6
6
|
import { dirname, join, resolve } from "node:path";
|
|
7
7
|
import { dirname as dirname$1, resolve as resolve$1 } from "node:path/posix";
|
|
8
8
|
import { Script } from "node:vm";
|
|
9
9
|
import { transformSync } from "@swc/core";
|
|
10
|
-
import {
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
11
|
|
|
12
|
+
//#region rolldown:runtime
|
|
13
|
+
var __defProp = Object.defineProperty;
|
|
14
|
+
var __export = (all) => {
|
|
15
|
+
let target = {};
|
|
16
|
+
for (var name in all) __defProp(target, name, {
|
|
17
|
+
get: all[name],
|
|
18
|
+
enumerable: true
|
|
19
|
+
});
|
|
20
|
+
return target;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
12
24
|
//#region packages/config/src/errors.ts
|
|
13
25
|
const configError = ({ code, message, filePath, cause }) => ({
|
|
14
26
|
code,
|
|
@@ -83,6 +95,9 @@ function executeConfigFile(configPath) {
|
|
|
83
95
|
const mod = { exports: {} };
|
|
84
96
|
const requireInner = createRequire(filePath);
|
|
85
97
|
const require = (specifier) => {
|
|
98
|
+
if (specifier === "@soda-gql/config") {
|
|
99
|
+
return src_exports;
|
|
100
|
+
}
|
|
86
101
|
if (!specifier.startsWith(".")) {
|
|
87
102
|
return requireInner(specifier);
|
|
88
103
|
}
|
|
@@ -108,14 +123,14 @@ function executeConfigFile(configPath) {
|
|
|
108
123
|
if (!config) {
|
|
109
124
|
throw new Error("Invalid config module");
|
|
110
125
|
}
|
|
111
|
-
return config;
|
|
126
|
+
return ok(config);
|
|
112
127
|
} catch (error) {
|
|
113
|
-
|
|
128
|
+
return err(configError({
|
|
114
129
|
code: "CONFIG_LOAD_FAILED",
|
|
115
130
|
message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,
|
|
116
131
|
filePath,
|
|
117
132
|
cause: error
|
|
118
|
-
});
|
|
133
|
+
}));
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
136
|
|
|
@@ -123,21 +138,23 @@ function executeConfigFile(configPath) {
|
|
|
123
138
|
//#region packages/config/src/normalize.ts
|
|
124
139
|
/**
|
|
125
140
|
* Resolve and normalize config with defaults.
|
|
141
|
+
* Paths in the config are resolved relative to the config file's directory.
|
|
126
142
|
*/
|
|
127
|
-
function normalizeConfig(config) {
|
|
143
|
+
function normalizeConfig(config, configPath) {
|
|
144
|
+
const configDir = dirname(configPath);
|
|
128
145
|
const analyzer = config.analyzer ?? "ts";
|
|
129
146
|
const graphqlSystemAliases = config.graphqlSystemAliases ?? ["@/graphql-system"];
|
|
130
147
|
const exclude = config.exclude ?? [];
|
|
131
148
|
const resolved = {
|
|
132
149
|
analyzer,
|
|
133
|
-
outdir: resolve(config.outdir),
|
|
150
|
+
outdir: resolve(configDir, config.outdir),
|
|
134
151
|
graphqlSystemAliases,
|
|
135
|
-
include: config.include.map((pattern) => resolve(pattern)),
|
|
136
|
-
exclude: exclude.map((pattern) => resolve(pattern)),
|
|
152
|
+
include: config.include.map((pattern) => resolve(configDir, pattern)),
|
|
153
|
+
exclude: exclude.map((pattern) => resolve(configDir, pattern)),
|
|
137
154
|
schemas: Object.fromEntries(Object.entries(config.schemas).map(([name, schemaConfig]) => [name, {
|
|
138
|
-
schema: resolve(schemaConfig.schema),
|
|
139
|
-
runtimeAdapter: resolve(schemaConfig.runtimeAdapter),
|
|
140
|
-
scalars: resolve(schemaConfig.scalars)
|
|
155
|
+
schema: resolve(configDir, schemaConfig.schema),
|
|
156
|
+
runtimeAdapter: resolve(configDir, schemaConfig.runtimeAdapter),
|
|
157
|
+
scalars: resolve(configDir, schemaConfig.scalars)
|
|
141
158
|
}])),
|
|
142
159
|
plugins: config.plugins ?? {}
|
|
143
160
|
};
|
|
@@ -180,7 +197,11 @@ function loadConfig(configPath) {
|
|
|
180
197
|
}));
|
|
181
198
|
}
|
|
182
199
|
try {
|
|
183
|
-
|
|
200
|
+
const result = executeConfigFile(resolvedPath);
|
|
201
|
+
if (result.isErr()) {
|
|
202
|
+
return err(result.error);
|
|
203
|
+
}
|
|
204
|
+
return normalizeConfig(result.value, resolvedPath);
|
|
184
205
|
} catch (error) {
|
|
185
206
|
return err(configError({
|
|
186
207
|
code: "CONFIG_LOAD_FAILED",
|
|
@@ -201,11 +222,20 @@ function loadConfigFrom(dir) {
|
|
|
201
222
|
//#endregion
|
|
202
223
|
//#region packages/config/src/test-utils.ts
|
|
203
224
|
/**
|
|
225
|
+
* Get project root from this package location.
|
|
226
|
+
* packages/config/src/test-utils.ts -> project root
|
|
227
|
+
*/
|
|
228
|
+
const getProjectRoot = () => {
|
|
229
|
+
return fileURLToPath(new URL("../../../", import.meta.url));
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
204
232
|
* Create temporary config file with proper formatting.
|
|
205
233
|
* Uses template literals to support functions, regex, etc.
|
|
206
234
|
*/
|
|
207
235
|
async function withTempConfig(config, fn) {
|
|
208
|
-
const
|
|
236
|
+
const projectRoot = getProjectRoot();
|
|
237
|
+
const tmpDir = join(projectRoot, "tests/.tmp/config-test", `${Date.now()}`);
|
|
238
|
+
mkdirSync(tmpDir, { recursive: true });
|
|
209
239
|
const configPath = join(tmpDir, "soda-gql.config.ts");
|
|
210
240
|
const configContent = `
|
|
211
241
|
import { defineConfig } from "@soda-gql/config";
|
|
@@ -225,11 +255,29 @@ export default defineConfig(${JSON.stringify(config, null, 2)});
|
|
|
225
255
|
*/
|
|
226
256
|
function createTempConfigFile(dir, config) {
|
|
227
257
|
const configPath = join(dir, "soda-gql.config.ts");
|
|
228
|
-
const configContent = `
|
|
258
|
+
const configContent = `
|
|
259
|
+
import { defineConfig } from "@soda-gql/config";
|
|
260
|
+
|
|
261
|
+
export default defineConfig(${JSON.stringify(config, null, 2)});
|
|
262
|
+
`.trim();
|
|
229
263
|
writeFileSync(configPath, configContent);
|
|
230
264
|
return configPath;
|
|
231
265
|
}
|
|
232
266
|
|
|
267
|
+
//#endregion
|
|
268
|
+
//#region packages/config/src/index.ts
|
|
269
|
+
var src_exports = /* @__PURE__ */ __export({
|
|
270
|
+
configError: () => configError,
|
|
271
|
+
createTempConfigFile: () => createTempConfigFile,
|
|
272
|
+
defineConfig: () => defineConfig,
|
|
273
|
+
findConfigFile: () => findConfigFile,
|
|
274
|
+
loadConfig: () => loadConfig,
|
|
275
|
+
loadConfigFrom: () => loadConfigFrom,
|
|
276
|
+
normalizeConfig: () => normalizeConfig,
|
|
277
|
+
validateConfig: () => validateConfig,
|
|
278
|
+
withTempConfig: () => withTempConfig
|
|
279
|
+
});
|
|
280
|
+
|
|
233
281
|
//#endregion
|
|
234
282
|
export { configError, createTempConfigFile, defineConfig, findConfigFile, loadConfig, loadConfigFrom, normalizeConfig, validateConfig, withTempConfig };
|
|
235
283
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["config: SodaGqlConfig","resolve","mod: { exports: unknown }","dirname","resolved: ResolvedSodaGqlConfig"],"sources":["../src/errors.ts","../src/helper.ts","../src/evaluation.ts","../src/normalize.ts","../src/loader.ts","../src/test-utils.ts"],"sourcesContent":["export type ConfigErrorCode = \"CONFIG_NOT_FOUND\" | \"CONFIG_LOAD_FAILED\" | \"CONFIG_VALIDATION_FAILED\" | \"CONFIG_INVALID_PATH\";\n\nexport type ConfigError = {\n readonly code: ConfigErrorCode;\n readonly message: string;\n readonly filePath?: string;\n readonly cause?: unknown;\n};\n\nexport const configError = ({\n code,\n message,\n filePath,\n cause,\n}: {\n code: ConfigErrorCode;\n message: string;\n filePath?: string;\n cause?: unknown;\n}): ConfigError => ({\n code,\n message,\n filePath,\n cause,\n});\n","import { defineSchemaFor } from \"@soda-gql/common\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport z from \"zod\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type { SchemaConfig, SodaGqlConfig } from \"./types\";\n\n/**\n * Thin wrapper class to simplify the validation of exported value from config file.\n * As we use SWC + VM to execute the config file, the exported value is not typed.\n * This wrapper class ensures the exported value is a valid soda-gql config object.\n */\nexport class SodaGqlConfigContainer {\n private constructor(public readonly config: SodaGqlConfig) {}\n\n public static create(config: SodaGqlConfig): SodaGqlConfigContainer {\n return new SodaGqlConfigContainer(config);\n }\n}\n\n/**\n * Type-safe helper for defining soda-gql configuration.\n * Supports both static and dynamic (async) configs.\n *\n * @example Static config\n * ```ts\n * import { defineConfig } from \"@soda-gql/config\";\n *\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * runtimeAdapter: \"./runtime-adapter.ts\",\n * scalars: \"./scalars.ts\",\n * },\n * },\n * });\n * ```\n *\n * @example Async config\n * ```ts\n * export default defineConfig(async () => ({\n * outdir: await resolveOutputDir(),\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * runtimeAdapter: \"./runtime-adapter.ts\",\n * scalars: \"./scalars.ts\",\n * },\n * },\n * }));\n * ```\n */\nexport function defineConfig(config: SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: () => SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: SodaGqlConfig | (() => SodaGqlConfig)): SodaGqlConfigContainer {\n const validated = validateConfig(typeof config === \"function\" ? config() : config);\n if (validated.isErr()) {\n throw validated.error;\n }\n return SodaGqlConfigContainer.create(validated.value);\n}\n\nconst SchemaConfigSchema = defineSchemaFor<SchemaConfig>()({\n schema: z.string().min(1),\n runtimeAdapter: z.string().min(1),\n scalars: z.string().min(1),\n});\n\nconst SodaGqlConfigSchema = defineSchemaFor<SodaGqlConfig>()({\n analyzer: z.enum([\"ts\", \"swc\"]).optional(),\n outdir: z.string().min(1),\n graphqlSystemAliases: z.array(z.string()).optional(),\n include: z.array(z.string().min(1)),\n exclude: z.array(z.string().min(1)).optional(),\n schemas: z.record(z.string(), SchemaConfigSchema),\n plugins: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport function validateConfig(config: unknown): Result<SodaGqlConfig, ConfigError> {\n const result = SodaGqlConfigSchema.safeParse(config);\n\n if (!result.success) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: `Invalid config: ${result.error.message}`,\n }),\n );\n }\n\n return ok(result.data satisfies SodaGqlConfig);\n}\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path/posix\";\nimport { Script } from \"node:vm\";\nimport { resolveRelativeImportWithExistenceCheck } from \"@soda-gql/common\";\nimport { transformSync } from \"@swc/core\";\nimport { configError } from \"./errors\";\nimport { SodaGqlConfigContainer } from \"./helper\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Load and execute TypeScript config file synchronously using SWC + VM.\n */\nexport function executeConfigFile(configPath: string): SodaGqlConfig {\n const filePath = resolve(configPath);\n try {\n // Read the config file\n const source = readFileSync(filePath, \"utf-8\");\n\n // Transform TypeScript to CommonJS using SWC\n const result = transformSync(source, {\n filename: filePath,\n jsc: {\n parser: {\n syntax: \"typescript\",\n },\n },\n module: {\n type: \"commonjs\",\n },\n sourceMaps: false,\n minify: false,\n });\n\n // Create CommonJS context\n const mod: { exports: unknown } = { exports: {} };\n\n const requireInner = createRequire(filePath);\n const require = (specifier: string) => {\n // Handle external modules normally\n if (!specifier.startsWith(\".\")) {\n return requireInner(specifier);\n }\n\n // Resolve relative imports with existence check\n const resolvedPath = resolveRelativeImportWithExistenceCheck({ filePath, specifier });\n if (!resolvedPath) {\n throw new Error(`Module not found: ${specifier}`);\n }\n return requireInner(resolvedPath);\n };\n\n // Execute in VM context\n new Script(result.code, { filename: filePath }).runInNewContext({\n require,\n module: mod,\n exports: mod.exports,\n __dirname: dirname(filePath),\n __filename: filePath,\n console,\n process,\n });\n\n const config =\n mod.exports &&\n typeof mod.exports === \"object\" &&\n \"default\" in mod.exports &&\n mod.exports.default instanceof SodaGqlConfigContainer\n ? mod.exports.default.config\n : null;\n\n if (!config) {\n throw new Error(\"Invalid config module\");\n }\n\n return config;\n } catch (error) {\n throw configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: filePath,\n cause: error,\n });\n }\n}\n","import { resolve } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { ok } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport type { ResolvedSodaGqlConfig, SodaGqlConfig } from \"./types\";\n\n/**\n * Resolve and normalize config with defaults.\n */\nexport function normalizeConfig(config: SodaGqlConfig): Result<ResolvedSodaGqlConfig, ConfigError> {\n // Default analyzer to \"ts\"\n const analyzer = config.analyzer ?? \"ts\";\n\n // Default graphqlSystemAliases to [\"@/graphql-system\"]\n const graphqlSystemAliases = config.graphqlSystemAliases ?? [\"@/graphql-system\"];\n\n // Default exclude to empty array\n const exclude = config.exclude ?? [];\n\n const resolved: ResolvedSodaGqlConfig = {\n analyzer,\n outdir: resolve(config.outdir),\n graphqlSystemAliases,\n include: config.include.map((pattern) => resolve(pattern)),\n exclude: exclude.map((pattern) => resolve(pattern)),\n schemas: Object.fromEntries(\n Object.entries(config.schemas).map(([name, schemaConfig]) => [\n name,\n {\n schema: resolve(schemaConfig.schema),\n runtimeAdapter: resolve(schemaConfig.runtimeAdapter),\n scalars: resolve(schemaConfig.scalars),\n },\n ]),\n ),\n plugins: config.plugins ?? {},\n };\n\n return ok(resolved);\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { err } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport { configError } from \"./errors\";\nimport { executeConfigFile } from \"./evaluation\";\nimport { normalizeConfig } from \"./normalize\";\nimport type { ResolvedSodaGqlConfig } from \"./types\";\n\nexport const DEFAULT_CONFIG_FILENAMES = [\n \"soda-gql.config.ts\",\n \"soda-gql.config.mts\",\n \"soda-gql.config.js\",\n \"soda-gql.config.mjs\",\n] as const;\n\n/**\n * Find config file by walking up directory tree.\n */\nexport function findConfigFile(startDir: string = process.cwd()): string | null {\n let currentDir = startDir;\n while (currentDir !== dirname(currentDir)) {\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const configPath = join(currentDir, filename);\n if (existsSync(configPath)) {\n return configPath;\n }\n }\n currentDir = dirname(currentDir);\n }\n return null;\n}\n\n/**\n * Load config with Result type (for library use).\n */\nexport function loadConfig(configPath: string | undefined): Result<ResolvedSodaGqlConfig, ConfigError> {\n const resolvedPath = configPath ?? findConfigFile();\n\n if (!resolvedPath) {\n return err(configError({ code: \"CONFIG_NOT_FOUND\", message: \"Config file not found\" }));\n }\n\n try {\n return normalizeConfig(executeConfigFile(resolvedPath));\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error}`,\n filePath: resolvedPath,\n cause: error,\n }),\n );\n }\n}\n\n/**\n * Load config from specific directory.\n */\nexport function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configPath = findConfigFile(dir);\n return loadConfig(configPath ?? undefined);\n}\n","import { mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Create temporary config file with proper formatting.\n * Uses template literals to support functions, regex, etc.\n */\nexport async function withTempConfig<T>(config: Partial<SodaGqlConfig>, fn: (configPath: string) => Promise<T>): Promise<T> {\n const tmpDir = mkdtempSync(join(tmpdir(), \"soda-gql-test-\"));\n const configPath = join(tmpDir, \"soda-gql.config.ts\");\n\n // Generate config file using template\n const configContent = `\nimport { defineConfig } from \"@soda-gql/config\";\n\nexport default defineConfig(${JSON.stringify(config, null, 2)});\n`.trim();\n\n writeFileSync(configPath, configContent);\n\n return fn(configPath).finally(() => {\n rmSync(tmpDir, { recursive: true, force: true });\n });\n}\n\n/**\n * Simple temp config creation (without auto-cleanup).\n */\nexport function createTempConfigFile(dir: string, config: Partial<SodaGqlConfig>): string {\n const configPath = join(dir, \"soda-gql.config.ts\");\n\n // Write config as direct export (no imports needed for simple configs)\n const configContent = `export default ${JSON.stringify(config, null, 2)};`;\n\n writeFileSync(configPath, configContent);\n return configPath;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["config: SodaGqlConfig","resolve","mod: { exports: unknown }","configModule","dirname","resolved: ResolvedSodaGqlConfig"],"sources":["../src/errors.ts","../src/helper.ts","../src/evaluation.ts","../src/normalize.ts","../src/loader.ts","../src/test-utils.ts","../src/index.ts"],"sourcesContent":["export type ConfigErrorCode = \"CONFIG_NOT_FOUND\" | \"CONFIG_LOAD_FAILED\" | \"CONFIG_VALIDATION_FAILED\" | \"CONFIG_INVALID_PATH\";\n\nexport type ConfigError = {\n readonly code: ConfigErrorCode;\n readonly message: string;\n readonly filePath?: string;\n readonly cause?: unknown;\n};\n\nexport const configError = ({\n code,\n message,\n filePath,\n cause,\n}: {\n code: ConfigErrorCode;\n message: string;\n filePath?: string;\n cause?: unknown;\n}): ConfigError => ({\n code,\n message,\n filePath,\n cause,\n});\n","import { defineSchemaFor } from \"@soda-gql/common\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport z from \"zod\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type { SchemaConfig, SodaGqlConfig } from \"./types\";\n\n/**\n * Thin wrapper class to simplify the validation of exported value from config file.\n * As we use SWC + VM to execute the config file, the exported value is not typed.\n * This wrapper class ensures the exported value is a valid soda-gql config object.\n */\nexport class SodaGqlConfigContainer {\n private constructor(public readonly config: SodaGqlConfig) {}\n\n public static create(config: SodaGqlConfig): SodaGqlConfigContainer {\n return new SodaGqlConfigContainer(config);\n }\n}\n\n/**\n * Type-safe helper for defining soda-gql configuration.\n * Supports both static and dynamic (async) configs.\n *\n * @example Static config\n * ```ts\n * import { defineConfig } from \"@soda-gql/config\";\n *\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * runtimeAdapter: \"./runtime-adapter.ts\",\n * scalars: \"./scalars.ts\",\n * },\n * },\n * });\n * ```\n *\n * @example Async config\n * ```ts\n * export default defineConfig(async () => ({\n * outdir: await resolveOutputDir(),\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * runtimeAdapter: \"./runtime-adapter.ts\",\n * scalars: \"./scalars.ts\",\n * },\n * },\n * }));\n * ```\n */\nexport function defineConfig(config: SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: () => SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: SodaGqlConfig | (() => SodaGqlConfig)): SodaGqlConfigContainer {\n const validated = validateConfig(typeof config === \"function\" ? config() : config);\n if (validated.isErr()) {\n throw validated.error;\n }\n return SodaGqlConfigContainer.create(validated.value);\n}\n\nconst SchemaConfigSchema = defineSchemaFor<SchemaConfig>()({\n schema: z.string().min(1),\n runtimeAdapter: z.string().min(1),\n scalars: z.string().min(1),\n});\n\nconst SodaGqlConfigSchema = defineSchemaFor<SodaGqlConfig>()({\n analyzer: z.enum([\"ts\", \"swc\"]).optional(),\n outdir: z.string().min(1),\n graphqlSystemAliases: z.array(z.string()).optional(),\n include: z.array(z.string().min(1)),\n exclude: z.array(z.string().min(1)).optional(),\n schemas: z.record(z.string(), SchemaConfigSchema),\n plugins: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport function validateConfig(config: unknown): Result<SodaGqlConfig, ConfigError> {\n const result = SodaGqlConfigSchema.safeParse(config);\n\n if (!result.success) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: `Invalid config: ${result.error.message}`,\n }),\n );\n }\n\n return ok(result.data satisfies SodaGqlConfig);\n}\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path/posix\";\nimport { Script } from \"node:vm\";\nimport { resolveRelativeImportWithExistenceCheck } from \"@soda-gql/common\";\nimport { transformSync } from \"@swc/core\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport { SodaGqlConfigContainer } from \"./helper\";\n// TODO: split config package into definition and evaluation parts\nimport * as configModule from \"./index\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Load and execute TypeScript config file synchronously using SWC + VM.\n */\nexport function executeConfigFile(configPath: string): Result<SodaGqlConfig, ConfigError> {\n const filePath = resolve(configPath);\n try {\n // Read the config file\n const source = readFileSync(filePath, \"utf-8\");\n\n // Transform TypeScript to CommonJS using SWC\n const result = transformSync(source, {\n filename: filePath,\n jsc: {\n parser: {\n syntax: \"typescript\",\n },\n },\n module: {\n type: \"commonjs\",\n },\n sourceMaps: false,\n minify: false,\n });\n\n // Create CommonJS context\n const mod: { exports: unknown } = { exports: {} };\n\n const requireInner = createRequire(filePath);\n const require = (specifier: string) => {\n if (specifier === \"@soda-gql/config\") {\n return configModule;\n }\n\n // Handle external modules normally\n if (!specifier.startsWith(\".\")) {\n return requireInner(specifier);\n }\n\n // Resolve relative imports with existence check\n const resolvedPath = resolveRelativeImportWithExistenceCheck({ filePath, specifier });\n if (!resolvedPath) {\n throw new Error(`Module not found: ${specifier}`);\n }\n return requireInner(resolvedPath);\n };\n\n // Execute in VM context\n new Script(result.code, { filename: filePath }).runInNewContext({\n require,\n module: mod,\n exports: mod.exports,\n __dirname: dirname(filePath),\n __filename: filePath,\n console,\n process,\n });\n\n const config =\n mod.exports &&\n typeof mod.exports === \"object\" &&\n \"default\" in mod.exports &&\n mod.exports.default instanceof SodaGqlConfigContainer\n ? mod.exports.default.config\n : null;\n\n if (!config) {\n throw new Error(\"Invalid config module\");\n }\n\n return ok(config);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: filePath,\n cause: error,\n }),\n );\n }\n}\n","import { dirname, resolve } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { ok } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport type { ResolvedSodaGqlConfig, SodaGqlConfig } from \"./types\";\n\n/**\n * Resolve and normalize config with defaults.\n * Paths in the config are resolved relative to the config file's directory.\n */\nexport function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configDir = dirname(configPath);\n // Default analyzer to \"ts\"\n const analyzer = config.analyzer ?? \"ts\";\n\n // Default graphqlSystemAliases to [\"@/graphql-system\"]\n const graphqlSystemAliases = config.graphqlSystemAliases ?? [\"@/graphql-system\"];\n\n // Default exclude to empty array\n const exclude = config.exclude ?? [];\n\n const resolved: ResolvedSodaGqlConfig = {\n analyzer,\n outdir: resolve(configDir, config.outdir),\n graphqlSystemAliases,\n include: config.include.map((pattern) => resolve(configDir, pattern)),\n exclude: exclude.map((pattern) => resolve(configDir, pattern)),\n schemas: Object.fromEntries(\n Object.entries(config.schemas).map(([name, schemaConfig]) => [\n name,\n {\n schema: resolve(configDir, schemaConfig.schema),\n runtimeAdapter: resolve(configDir, schemaConfig.runtimeAdapter),\n scalars: resolve(configDir, schemaConfig.scalars),\n },\n ]),\n ),\n plugins: config.plugins ?? {},\n };\n\n return ok(resolved);\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { err } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport { configError } from \"./errors\";\nimport { executeConfigFile } from \"./evaluation\";\nimport { normalizeConfig } from \"./normalize\";\nimport type { ResolvedSodaGqlConfig } from \"./types\";\n\nexport const DEFAULT_CONFIG_FILENAMES = [\n \"soda-gql.config.ts\",\n \"soda-gql.config.mts\",\n \"soda-gql.config.js\",\n \"soda-gql.config.mjs\",\n] as const;\n\n/**\n * Find config file by walking up directory tree.\n */\nexport function findConfigFile(startDir: string = process.cwd()): string | null {\n let currentDir = startDir;\n while (currentDir !== dirname(currentDir)) {\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const configPath = join(currentDir, filename);\n if (existsSync(configPath)) {\n return configPath;\n }\n }\n currentDir = dirname(currentDir);\n }\n return null;\n}\n\n/**\n * Load config with Result type (for library use).\n */\nexport function loadConfig(configPath: string | undefined): Result<ResolvedSodaGqlConfig, ConfigError> {\n const resolvedPath = configPath ?? findConfigFile();\n\n if (!resolvedPath) {\n return err(configError({ code: \"CONFIG_NOT_FOUND\", message: \"Config file not found\" }));\n }\n\n try {\n const result = executeConfigFile(resolvedPath);\n if (result.isErr()) {\n return err(result.error);\n }\n return normalizeConfig(result.value, resolvedPath);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error}`,\n filePath: resolvedPath,\n cause: error,\n }),\n );\n }\n}\n\n/**\n * Load config from specific directory.\n */\nexport function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configPath = findConfigFile(dir);\n return loadConfig(configPath ?? undefined);\n}\n","import { mkdirSync, rmSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Get project root from this package location.\n * packages/config/src/test-utils.ts -> project root\n */\nconst getProjectRoot = (): string => {\n return fileURLToPath(new URL(\"../../../\", import.meta.url));\n};\n\n/**\n * Create temporary config file with proper formatting.\n * Uses template literals to support functions, regex, etc.\n */\nexport async function withTempConfig<T>(config: Partial<SodaGqlConfig>, fn: (configPath: string) => Promise<T>): Promise<T> {\n const projectRoot = getProjectRoot();\n const tmpDir = join(projectRoot, \"tests/.tmp/config-test\", `${Date.now()}`);\n mkdirSync(tmpDir, { recursive: true });\n const configPath = join(tmpDir, \"soda-gql.config.ts\");\n\n // Generate config file using template\n const configContent = `\nimport { defineConfig } from \"@soda-gql/config\";\n\nexport default defineConfig(${JSON.stringify(config, null, 2)});\n`.trim();\n\n writeFileSync(configPath, configContent);\n\n return fn(configPath).finally(() => {\n rmSync(tmpDir, { recursive: true, force: true });\n });\n}\n\n/**\n * Simple temp config creation (without auto-cleanup).\n */\nexport function createTempConfigFile(dir: string, config: Partial<SodaGqlConfig>): string {\n const configPath = join(dir, \"soda-gql.config.ts\");\n\n // Write config as TypeScript module\n const configContent = `\nimport { defineConfig } from \"@soda-gql/config\";\n\nexport default defineConfig(${JSON.stringify(config, null, 2)});\n`.trim();\n\n writeFileSync(configPath, configContent);\n return configPath;\n}\n","export type { ConfigError, ConfigErrorCode } from \"./errors\";\nexport { configError } from \"./errors\";\nexport { defineConfig, validateConfig } from \"./helper\";\nexport {\n findConfigFile,\n loadConfig,\n loadConfigFrom,\n} from \"./loader\";\nexport { normalizeConfig } from \"./normalize\";\nexport { createTempConfigFile, withTempConfig } from \"./test-utils\";\nexport type {\n PluginConfig,\n ResolvedSodaGqlConfig,\n SchemaConfig,\n SodaGqlConfig,\n} from \"./types\";\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soda-gql/config",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Centralized configuration loader and helpers for soda-gql tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"./package.json": "./package.json"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@soda-gql/common": "0.0.
|
|
30
|
+
"@soda-gql/common": "0.0.2",
|
|
31
31
|
"@swc/core": "^1.10.0",
|
|
32
32
|
"neverthrow": "^8.2.0",
|
|
33
33
|
"zod": "^4.1.11"
|