History

Merge remote-tracking branch 'origin/codex/batch10-config-load-error' into codex/effect-lint-integration

Rhys Sullivan committed 6 months ago

Commit d2961792 parents 45f0734 10308ec1 file · +15 −9Browse files

Unified · Split

packages/core/config/src/load.ts+15−9
@@ -4,13 +4,13 @@ import type { PlatformError } from "effect/PlatformError"; · 3 unmodified lines
44 import * as jsonc from "jsonc-parser";
55 import { ExecutorFileConfig } from "./schema";
66
7−export class ConfigParseError {
8− readonly _tag = "ConfigParseError";
9− constructor(
10− readonly path: string,
11− readonly message: string,
12− ) {}
13−}
7+export class ConfigParseError extends Schema.TaggedErrorClass<ConfigParseError>()(
8+ "ConfigParseError",
9+ {
10+ path: Schema.String,
11+ message: Schema.String,
12+ },
13+) {}
1414
1515 /**
1616 * Load and validate an executor config file.
@@ -38,11 +38,17 @@ export const loadConfig = ( · 21 unmodified lines
3838 const msg = errors
3939 .map((e) => `offset ${e.offset}: ${jsonc.printParseErrorCode(e.error)}`)
4040 .join("; ");
41− return yield* Effect.fail(new ConfigParseError(path, msg));
41+ return yield* new ConfigParseError({ path, message: msg });
4242 }
4343
4444 const decoded = yield* Schema.decodeUnknownEffect(ExecutorFileConfig)(parsed).pipe(
45− Effect.mapError((e) => new ConfigParseError(path, String(e))),
45+ Effect.mapError(
46+ (error) =>
47+ new ConfigParseError({
48+ path,
49+ message: error.issue.toString(),
50+ }),
51+ ),
4652 );
4753
4854 return decoded;