Skip to content

Commit 41d3ec8

Browse files
committed
docs(changeset): Fix types - keep types in types.ts file and reuse to ensure type collisions.
1 parent 9b7eef9 commit 41d3ec8

File tree

4 files changed

+18
-27
lines changed

4 files changed

+18
-27
lines changed

.changeset/pretty-showers-do.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"git-json-resolver": patch
3+
---
4+
5+
Fix types - keep types in types.ts file and reuse to ensure type collisions.

lib/src/merger.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
MergeContext,
66
mergeObject,
77
BuiltInStrategies,
8-
StrategyStatus,
98
statusToString,
109
} from "./merger";
1110

@@ -14,6 +13,7 @@ vi.mock("./strategy-resolver", () => ({
1413
resolveStrategies: vi.fn(() => ["ours", "theirs", "merge"]),
1514
}));
1615
import { resolveStrategies } from "./strategy-resolver";
16+
import { StrategyStatus } from "./types";
1717

1818
const makeCtx = (): MergeContext => ({
1919
config: { debug: false, strictArrays: false } as any,

lib/src/merger.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NormalizedConfig } from "./normalizer";
22
import { resolveStrategies } from "./strategy-resolver";
3-
import { StrategyFn } from "./types";
3+
import { StrategyFn, StrategyResult, StrategyStatus } from "./types";
44

55
/** Sentinel used to explicitly drop a value. */
66
export const DROP = Symbol("MERGE_DROP");
@@ -22,14 +22,6 @@ export interface MergeResult {
2222
conflicts: Conflict[];
2323
}
2424

25-
/** Strategy status codes. */
26-
export enum StrategyStatus {
27-
OK = 0,
28-
CONTINUE = 1,
29-
FAIL = 2,
30-
SKIP = 3,
31-
}
32-
3325
/** Helper: stringify status for logs. */
3426
export const statusToString = (s: StrategyStatus): string => {
3527
switch (s) {
@@ -46,13 +38,6 @@ export const statusToString = (s: StrategyStatus): string => {
4638
}
4739
};
4840

49-
/** Strategy result contract. */
50-
export type StrategyResult =
51-
| { status: StrategyStatus.OK; value: unknown }
52-
| { status: StrategyStatus.CONTINUE; reason?: string }
53-
| { status: StrategyStatus.SKIP; reason: string }
54-
| { status: StrategyStatus.FAIL; reason: string };
55-
5641
/** Merge context (runtime state + config). */
5742
export interface MergeContext<TContext = unknown> {
5843
config: NormalizedConfig;

lib/src/types.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,20 @@ export type InbuiltMergeStrategies =
2525
| "non-empty"
2626
| "update";
2727

28+
/** Strategy status codes. */
2829
export enum StrategyStatus {
29-
OK = "ok", // resolved successfully
30-
CONTINUE = "continue", // couldn't resolve, try next strategy
31-
FAIL = "fail", // unrecoverable fail, log + stop
32-
SKIP = "skip", // explicitly skip -> adds conflict + return undefined
30+
OK = 0,
31+
CONTINUE = 1,
32+
FAIL = 2,
33+
SKIP = 3,
3334
}
3435

35-
/**
36-
* Result contract for a strategy function.
37-
* - `ok: true` → merge produced a value
38-
* - `ok: false` → merge failed (with optional reason)
39-
*/
40-
export type StrategyResult = { ok: true; value: unknown } | { ok: false; reason?: string };
36+
/** Strategy result contract. */
37+
export type StrategyResult =
38+
| { status: StrategyStatus.OK; value: unknown }
39+
| { status: StrategyStatus.CONTINUE; reason?: string }
40+
| { status: StrategyStatus.SKIP; reason: string }
41+
| { status: StrategyStatus.FAIL; reason: string };
4142

4243
/**
4344
* Strategy function signature.

0 commit comments

Comments
 (0)