@ue-shed/config-explorer 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,cAAc,uDAA6D,CAAC;AACzF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAExD,eAAO,MAAM,YAAY,qDAA2D,CAAC;AACrF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,eAAO,MAAM,aAAa,sDAA4D,CAAC;AACvF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD,eAAO,MAAM,SAAS,kDAAwD,CAAC;AAC/E,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C,eAAO,MAAM,YAAY;;;EAGvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,eAAO,MAAM,oBAAoB;;;EAG/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAEpE,eAAO,MAAM,eAAe,kGAO1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;;;;;;;;IAK3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;IAenC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAC;AAE5E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;EAY3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;;;;EAM9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAElE,eAAO,MAAM,uBAAuB;;;;EAalC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAC;AAE1E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;AAE9D,eAAO,MAAM,oBAAoB;;;;;;;EAO/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAEpE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;;;;;;EAQ/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAEpE,eAAO,MAAM,yBAAyB;;;;;;EAapC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC,IAAI,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;6BAAmD,CAAC;AAC3F,eAAO,MAAM,0BAA0B;;;;;;;;6BAAmD,CAAC;AAC3F,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAAgD,CAAC;AACrF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAA+C,CAAC"}
package/dist/schema.js ADDED
@@ -0,0 +1,145 @@
1
+ import { Schema } from "effect";
2
+ export const ConfigPlatform = Schema.NonEmptyString.pipe(Schema.brand("ConfigPlatform"));
3
+ export const ConfigFamily = Schema.NonEmptyString.pipe(Schema.brand("ConfigFamily"));
4
+ export const ConfigSection = Schema.NonEmptyString.pipe(Schema.brand("ConfigSection"));
5
+ export const ConfigKey = Schema.NonEmptyString.pipe(Schema.brand("ConfigKey"));
6
+ export const ConfigSource = Schema.Struct({
7
+ scope: Schema.Literals(["engine", "project"]),
8
+ path: Schema.NonEmptyString
9
+ });
10
+ export const ConfigSourceLocation = Schema.Struct({
11
+ line: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),
12
+ column: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1))
13
+ });
14
+ export const ConfigOperation = Schema.Literals([
15
+ "set",
16
+ "add_unique",
17
+ "append",
18
+ "remove",
19
+ "clear",
20
+ "initialize_empty"
21
+ ]);
22
+ export const ConfigValueState = Schema.Union([
23
+ Schema.Struct({ kind: Schema.Literal("missing") }),
24
+ Schema.Struct({ kind: Schema.Literal("scalar"), value: Schema.String }),
25
+ Schema.Struct({ kind: Schema.Literal("array"), values: Schema.Array(Schema.String) }),
26
+ Schema.Struct({ kind: Schema.Literal("empty_array") })
27
+ ]);
28
+ export const ConfigContributionEffect = Schema.Union([
29
+ Schema.Struct({ kind: Schema.Literal("added"), index: Schema.Int }),
30
+ Schema.Struct({
31
+ kind: Schema.Literal("replaced"),
32
+ index: Schema.Int,
33
+ previousValue: Schema.String
34
+ }),
35
+ Schema.Struct({ kind: Schema.Literal("removed"), index: Schema.Int }),
36
+ Schema.Struct({ kind: Schema.Literal("cleared"), removedValues: Schema.Array(Schema.String) }),
37
+ Schema.Struct({
38
+ kind: Schema.Literal("initialized_empty"),
39
+ removedValues: Schema.Array(Schema.String)
40
+ }),
41
+ Schema.Struct({ kind: Schema.Literal("duplicate") }),
42
+ Schema.Struct({ kind: Schema.Literal("no_match") })
43
+ ]);
44
+ export const ConfigContribution = Schema.Struct({
45
+ sequence: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
46
+ source: ConfigSource,
47
+ location: ConfigSourceLocation,
48
+ operation: ConfigOperation,
49
+ inputValue: Schema.optionalKey(Schema.String),
50
+ priorValue: ConfigValueState,
51
+ effect: ConfigContributionEffect,
52
+ remainsEffective: Schema.Boolean
53
+ });
54
+ export const ConfigDiagnostic = Schema.Struct({
55
+ code: Schema.Literals([
56
+ "unsupported_operator",
57
+ "unsupported_multiline",
58
+ "unsupported_config_redirect",
59
+ "malformed_entry",
60
+ "invalid_platform_parent",
61
+ "path_redacted"
62
+ ]),
63
+ message: Schema.String,
64
+ source: Schema.optionalKey(ConfigSource),
65
+ location: Schema.optionalKey(ConfigSourceLocation)
66
+ });
67
+ export const ConfigLayerCoverage = Schema.Struct({
68
+ order: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
69
+ layer: Schema.NonEmptyString,
70
+ source: ConfigSource,
71
+ status: Schema.Literals(["read", "missing", "unreadable", "unsupported", "excluded"]),
72
+ detail: Schema.optionalKey(Schema.String)
73
+ });
74
+ export const ConfigAuthorityCoverage = Schema.Struct({
75
+ authority: Schema.Literals([
76
+ "saved_generated",
77
+ "user_private",
78
+ "live_cvars",
79
+ "device_profiles",
80
+ "command_line",
81
+ "cooked_staged",
82
+ "dynamic_plugins",
83
+ "runtime_mutation"
84
+ ]),
85
+ status: Schema.Literals(["excluded", "unsupported"]),
86
+ detail: Schema.String
87
+ });
88
+ export const ConfigExplanation = Schema.Struct({
89
+ schemaVersion: Schema.Literal(1),
90
+ status: Schema.Literals(["complete", "partial"]),
91
+ project: Schema.Struct({ descriptor: Schema.NonEmptyString }),
92
+ platform: ConfigPlatform,
93
+ family: ConfigFamily,
94
+ section: ConfigSection,
95
+ key: ConfigKey,
96
+ effectiveValue: ConfigValueState,
97
+ contributions: Schema.Array(ConfigContribution),
98
+ layers: Schema.Array(ConfigLayerCoverage),
99
+ authorities: Schema.Array(ConfigAuthorityCoverage),
100
+ diagnostics: Schema.Array(ConfigDiagnostic)
101
+ });
102
+ export const ConfigExplainRequest = Schema.Struct({
103
+ project: Schema.NonEmptyString,
104
+ platform: ConfigPlatform,
105
+ section: ConfigSection,
106
+ key: ConfigKey,
107
+ engineRoot: Schema.optionalKey(Schema.NonEmptyString),
108
+ family: Schema.optionalKey(ConfigFamily)
109
+ });
110
+ export const ConfigComparison = Schema.Struct({
111
+ schemaVersion: Schema.Literal(1),
112
+ status: Schema.Literals(["same", "different", "partial"]),
113
+ left: ConfigExplanation,
114
+ right: ConfigExplanation,
115
+ valueChanged: Schema.Boolean,
116
+ coverageChanged: Schema.Boolean
117
+ });
118
+ export const ConfigCompareRequest = Schema.Struct({
119
+ project: ConfigExplainRequest.fields.project,
120
+ leftPlatform: ConfigPlatform,
121
+ rightPlatform: ConfigPlatform,
122
+ section: ConfigSection,
123
+ key: ConfigKey,
124
+ engineRoot: Schema.optionalKey(Schema.NonEmptyString),
125
+ family: Schema.optionalKey(ConfigFamily)
126
+ });
127
+ export const ConfigExplorerPublicError = Schema.Struct({
128
+ code: Schema.Literals([
129
+ "invalid_request",
130
+ "invalid_project",
131
+ "engine_discovery_incomplete",
132
+ "ambiguous_config_family",
133
+ "invalid_platform",
134
+ "resolution_failed"
135
+ ]),
136
+ message: Schema.String,
137
+ recovery: Schema.String,
138
+ retrySafe: Schema.Boolean,
139
+ candidates: Schema.optionalKey(Schema.Array(Schema.String))
140
+ });
141
+ export const decodeConfigExplainRequest = Schema.decodeUnknownEffect(ConfigExplainRequest);
142
+ export const decodeConfigCompareRequest = Schema.decodeUnknownEffect(ConfigCompareRequest);
143
+ export const decodeConfigExplanation = Schema.decodeUnknownEffect(ConfigExplanation);
144
+ export const decodeConfigComparison = Schema.decodeUnknownEffect(ConfigComparison);
145
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { EngineInstallationDiscovery } from "@ue-shed/engine";
2
+ import { Context, Effect, Layer, Schema } from "effect";
3
+ import { ConfigFileAccess } from "./file-access.js";
4
+ import { ConfigCompareRequest, ConfigExplainRequest, type ConfigComparison, type ConfigExplanation } from "./schema.js";
5
+ declare const ConfigExplorerError_base: Schema.Class<ConfigExplorerError, Schema.TaggedStruct<"ConfigExplorerError", {
6
+ readonly code: Schema.Literals<readonly ["invalid_request", "invalid_project", "engine_discovery_incomplete", "ambiguous_config_family", "invalid_platform", "resolution_failed"]>;
7
+ readonly message: Schema.String;
8
+ readonly recovery: Schema.String;
9
+ readonly retrySafe: Schema.Boolean;
10
+ readonly candidates: Schema.optionalKey<Schema.$Array<Schema.String>>;
11
+ }>, import("effect/Cause").YieldableError>;
12
+ export declare class ConfigExplorerError extends ConfigExplorerError_base {
13
+ }
14
+ export interface ConfigExplorerApi {
15
+ readonly explain: (request: ConfigExplainRequest) => Effect.Effect<ConfigExplanation, ConfigExplorerError>;
16
+ readonly compare: (request: ConfigCompareRequest) => Effect.Effect<ConfigComparison, ConfigExplorerError>;
17
+ }
18
+ declare const ConfigExplorer_base: Context.ServiceClass<ConfigExplorer, "@ue-shed/config-explorer/ConfigExplorer", ConfigExplorerApi>;
19
+ export declare class ConfigExplorer extends ConfigExplorer_base {
20
+ }
21
+ export declare const ConfigExplorerLive: Layer.Layer<ConfigExplorer, never, ConfigFileAccess | EngineInstallationDiscovery>;
22
+ export declare const ConfigExplorerNodeLive: Layer.Layer<ConfigExplorer, import("effect/Config").ConfigError, never>;
23
+ export declare function makeConfigExplorerTestLayer(service: ConfigExplorerApi): Layer.Layer<ConfigExplorer>;
24
+ export {};
25
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,EACN,2BAA2B,EAG3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EACN,gBAAgB,EAGhB,MAAM,kBAAkB,CAAC;AAc1B,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EAIpB,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EAEtB,MAAM,aAAa,CAAC;;;;;;;;AAErB,qBAAa,mBAAoB,SAAQ,wBAGxC;CAAG;AAEJ,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,CACjB,OAAO,EAAE,oBAAoB,KACzB,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,CACjB,OAAO,EAAE,oBAAoB,KACzB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;CAC1D;;AAED,qBAAa,cAAe,SAAQ,mBAEnC;CAAG;AAkSJ,eAAO,MAAM,kBAAkB,oFA+H9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,yEAGlC,CAAC;AAEF,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,iBAAiB,GACxB,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAE7B"}
@@ -0,0 +1,325 @@
1
+ import { basename, extname, join } from "node:path";
2
+ import { EngineInstallationDiscovery, EngineInstallationDiscoveryLive } from "@ue-shed/engine";
3
+ import { Context, Effect, Layer, Result, Schema } from "effect";
4
+ import { ConfigFileAccess, ConfigFileAccessLive } from "./file-access.js";
5
+ import { buildConfigHierarchy, resolveConfigProject, resolvePlatformChain } from "./hierarchy.js";
6
+ import { compareConfigExplanations, foldConfigCommands } from "./merge.js";
7
+ import { configRedirectAffects, parseConfigFile } from "./parser.js";
8
+ import { ConfigCompareRequest, ConfigExplainRequest, ConfigExplorerPublicError, ConfigFamily } from "./schema.js";
9
+ export class ConfigExplorerError extends Schema.TaggedErrorClass()("ConfigExplorerError", ConfigExplorerPublicError.fields) {
10
+ }
11
+ export class ConfigExplorer extends Context.Service()("@ue-shed/config-explorer/ConfigExplorer") {
12
+ }
13
+ const authorities = [
14
+ {
15
+ authority: "saved_generated",
16
+ status: "excluded",
17
+ detail: "Project Saved/Config generated destination files are not read."
18
+ },
19
+ {
20
+ authority: "user_private",
21
+ status: "excluded",
22
+ detail: "Application, user, and project User*.ini layers are not probed."
23
+ },
24
+ {
25
+ authority: "live_cvars",
26
+ status: "excluded",
27
+ detail: "Live console variables require separate running-process authority."
28
+ },
29
+ {
30
+ authority: "device_profiles",
31
+ status: "excluded",
32
+ detail: "Device Profile selection and CVar application are a separate resolver."
33
+ },
34
+ {
35
+ authority: "command_line",
36
+ status: "excluded",
37
+ detail: "Command-line config and CVar overrides are invocation-specific."
38
+ },
39
+ {
40
+ authority: "cooked_staged",
41
+ status: "excluded",
42
+ detail: "Cooked, staged, and binary config are outside source evidence."
43
+ },
44
+ {
45
+ authority: "dynamic_plugins",
46
+ status: "unsupported",
47
+ detail: "Plugin, Game Feature, hotfix, and dynamic layers are not resolved."
48
+ },
49
+ {
50
+ authority: "runtime_mutation",
51
+ status: "excluded",
52
+ detail: "Code defaults, environment changes, and runtime writes are not saved-source evidence."
53
+ }
54
+ ];
55
+ function error(code, message, recovery, retrySafe = true, candidates) {
56
+ return new ConfigExplorerError({
57
+ code,
58
+ message,
59
+ recovery,
60
+ retrySafe,
61
+ ...(candidates === undefined ? undefined : { candidates: [...candidates] })
62
+ });
63
+ }
64
+ function engineError(cause) {
65
+ return error("engine_discovery_incomplete", cause.message, cause.recovery, cause.retrySafe, cause.candidates);
66
+ }
67
+ function projectError(_cause) {
68
+ return error("invalid_project", "The selected project could not be resolved to exactly one readable .uproject descriptor.", "Pass a .uproject path or a project root containing exactly one descriptor.", false);
69
+ }
70
+ function platformError(_cause) {
71
+ return error("invalid_platform", "The selected platform metadata is missing, unreadable, or has an invalid parent chain.", "Choose a platform with readable DataDrivenPlatformInfo.ini evidence.", false);
72
+ }
73
+ function familyFromFilename(filename) {
74
+ const match = /^(?:Base|Default)(.+)\.ini$/iu.exec(filename);
75
+ return match?.[1];
76
+ }
77
+ function discoverFamilies(options) {
78
+ return Effect.gen(function* () {
79
+ const files = yield* ConfigFileAccess;
80
+ const directories = [
81
+ join(options.engineRoot, "Engine", "Config"),
82
+ join(options.project.root, "Config")
83
+ ];
84
+ const names = yield* Effect.forEach(directories, (directory) => files.list(directory).pipe(Effect.map((entries) => entries.filter((entry) => entry.kind === "file").map((entry) => entry.name)), Effect.catch(() => Effect.succeed([]))));
85
+ return [
86
+ ...new Map(names
87
+ .flatMap((entries) => entries)
88
+ .flatMap((name) => {
89
+ const family = familyFromFilename(name);
90
+ return family === undefined
91
+ ? []
92
+ : [[family.toLocaleLowerCase(), family]];
93
+ })).values()
94
+ ].sort((left, right) => left.localeCompare(right));
95
+ });
96
+ }
97
+ function loadConfigRedirectCoverage(options) {
98
+ return Effect.gen(function* () {
99
+ const files = yield* ConfigFileAccess;
100
+ const candidates = [
101
+ {
102
+ path: join(options.engineRoot, "Engine", "Config", "ConfigRedirects.ini"),
103
+ source: { scope: "engine", path: "Engine/Config/ConfigRedirects.ini" }
104
+ },
105
+ {
106
+ path: join(options.project.root, "Config", "ConfigRedirects.ini"),
107
+ source: { scope: "project", path: "Config/ConfigRedirects.ini" }
108
+ }
109
+ ];
110
+ const coverage = [];
111
+ const diagnostics = [];
112
+ for (let order = 0; order < candidates.length; order++) {
113
+ const candidate = candidates[order];
114
+ if (!(yield* files.exists(candidate.path))) {
115
+ coverage.push({
116
+ order,
117
+ layer: "ConfigRedirects",
118
+ source: candidate.source,
119
+ status: "missing"
120
+ });
121
+ continue;
122
+ }
123
+ const loaded = yield* Effect.result(files.readText(candidate.path));
124
+ if (Result.isFailure(loaded)) {
125
+ coverage.push({
126
+ order,
127
+ layer: "ConfigRedirects",
128
+ source: candidate.source,
129
+ status: "unreadable",
130
+ detail: "The redirect file exists but could not be read."
131
+ });
132
+ continue;
133
+ }
134
+ const relevant = configRedirectAffects({
135
+ text: loaded.success,
136
+ section: options.section,
137
+ key: options.key
138
+ });
139
+ coverage.push({
140
+ order,
141
+ layer: "ConfigRedirects",
142
+ source: candidate.source,
143
+ status: relevant ? "unsupported" : "read",
144
+ ...(relevant
145
+ ? { detail: "A section or key redirect can affect the selected identity." }
146
+ : undefined)
147
+ });
148
+ if (relevant) {
149
+ diagnostics.push({
150
+ code: "unsupported_config_redirect",
151
+ message: "Config redirects can rename the selected section or key and are not applied in this slice.",
152
+ source: candidate.source
153
+ });
154
+ }
155
+ }
156
+ return { commands: [], coverage, diagnostics };
157
+ });
158
+ }
159
+ function loadHierarchy(options) {
160
+ return Effect.gen(function* () {
161
+ const files = yield* ConfigFileAccess;
162
+ const commands = [];
163
+ const diagnostics = [];
164
+ const coverage = [];
165
+ for (let order = 0; order < options.layers.length; order++) {
166
+ const candidate = options.layers[order];
167
+ if (!(yield* files.exists(candidate.path))) {
168
+ coverage.push({
169
+ order,
170
+ layer: candidate.name,
171
+ source: candidate.source,
172
+ status: "missing"
173
+ });
174
+ continue;
175
+ }
176
+ const loaded = yield* Effect.result(files.readText(candidate.path));
177
+ if (Result.isFailure(loaded)) {
178
+ coverage.push({
179
+ order,
180
+ layer: candidate.name,
181
+ source: candidate.source,
182
+ status: "unreadable",
183
+ detail: "The file exists but could not be read."
184
+ });
185
+ continue;
186
+ }
187
+ const parsed = parseConfigFile({
188
+ text: loaded.success,
189
+ source: candidate.source,
190
+ section: options.section,
191
+ key: options.key
192
+ });
193
+ commands.push(...parsed.commands);
194
+ diagnostics.push(...parsed.diagnostics);
195
+ coverage.push({
196
+ order,
197
+ layer: candidate.name,
198
+ source: candidate.source,
199
+ status: parsed.diagnostics.length === 0 ? "read" : "unsupported",
200
+ ...(parsed.diagnostics.length === 0
201
+ ? undefined
202
+ : { detail: "Selected-key syntax is not fully supported in this layer." })
203
+ });
204
+ }
205
+ return { commands, diagnostics, coverage };
206
+ });
207
+ }
208
+ function chooseFamily(options) {
209
+ if (options.requested !== undefined)
210
+ return Effect.succeed(options.requested);
211
+ return Effect.gen(function* () {
212
+ const matched = [];
213
+ for (const family of options.families) {
214
+ const loaded = yield* loadHierarchy({
215
+ // Base.ini contributes to every family and therefore cannot identify one.
216
+ layers: options
217
+ .hierarchyFor(family)
218
+ .filter((layer) => layer.name !== "AbsoluteBase"),
219
+ section: options.section,
220
+ key: options.key
221
+ });
222
+ if (loaded.commands.length > 0 || loaded.diagnostics.length > 0)
223
+ matched.push(family);
224
+ }
225
+ if (matched.length === 1)
226
+ return matched[0];
227
+ return yield* error("ambiguous_config_family", matched.length === 0
228
+ ? "The selected section/key does not identify a config family."
229
+ : "The selected section/key occurs in more than one config family.", "Pass an explicit --family value.", false, matched.length === 0 ? options.families : matched);
230
+ });
231
+ }
232
+ export const ConfigExplorerLive = Layer.effect(ConfigExplorer, Effect.gen(function* () {
233
+ const files = yield* ConfigFileAccess;
234
+ const engines = yield* EngineInstallationDiscovery;
235
+ const explain = Effect.fn("ConfigExplorer.explain")(function* (input) {
236
+ const request = yield* Schema.decodeUnknownEffect(ConfigExplainRequest)(input).pipe(Effect.mapError(() => error("invalid_request", "The config explanation request is invalid.", "Provide non-empty project, platform, section, and key values.", false)));
237
+ const project = yield* resolveConfigProject(request.project).pipe(Effect.provideService(ConfigFileAccess, files), Effect.mapError(projectError));
238
+ const engine = yield* engines
239
+ .resolve({
240
+ projectDescriptor: project.descriptor,
241
+ ...(request.engineRoot === undefined
242
+ ? undefined
243
+ : { explicitRoot: request.engineRoot })
244
+ })
245
+ .pipe(Effect.mapError(engineError));
246
+ const platforms = yield* resolvePlatformChain({
247
+ engineRoot: engine.root,
248
+ projectRoot: project.root,
249
+ platform: request.platform
250
+ }).pipe(Effect.provideService(ConfigFileAccess, files), Effect.mapError(platformError));
251
+ const families = yield* discoverFamilies({ engineRoot: engine.root, project }).pipe(Effect.provideService(ConfigFileAccess, files));
252
+ const hierarchyFor = (family) => buildConfigHierarchy({
253
+ engineRoot: engine.root,
254
+ projectRoot: project.root,
255
+ family,
256
+ platforms
257
+ });
258
+ const family = yield* chooseFamily({
259
+ ...(request.family === undefined ? undefined : { requested: request.family }),
260
+ families,
261
+ hierarchyFor,
262
+ section: request.section,
263
+ key: request.key
264
+ }).pipe(Effect.provideService(ConfigFileAccess, files));
265
+ const redirects = yield* loadConfigRedirectCoverage({
266
+ engineRoot: engine.root,
267
+ project,
268
+ section: request.section,
269
+ key: request.key
270
+ }).pipe(Effect.provideService(ConfigFileAccess, files));
271
+ const loaded = yield* loadHierarchy({
272
+ layers: hierarchyFor(family),
273
+ section: request.section,
274
+ key: request.key
275
+ }).pipe(Effect.provideService(ConfigFileAccess, files));
276
+ const folded = foldConfigCommands(loaded.commands);
277
+ const coverage = [
278
+ ...redirects.coverage,
279
+ ...loaded.coverage.map((layer) => ({
280
+ ...layer,
281
+ order: layer.order + redirects.coverage.length
282
+ }))
283
+ ];
284
+ const diagnostics = [...redirects.diagnostics, ...loaded.diagnostics];
285
+ const partial = coverage.some((layer) => layer.status === "unreadable" || layer.status === "unsupported");
286
+ const explanation = {
287
+ schemaVersion: 1,
288
+ status: partial ? "partial" : "complete",
289
+ project: { descriptor: basename(project.descriptor, extname(project.descriptor)) },
290
+ platform: request.platform,
291
+ family: ConfigFamily.make(family),
292
+ section: request.section,
293
+ key: request.key,
294
+ effectiveValue: folded.effectiveValue,
295
+ contributions: folded.contributions,
296
+ layers: coverage,
297
+ authorities,
298
+ diagnostics
299
+ };
300
+ return explanation;
301
+ });
302
+ const compare = Effect.fn("ConfigExplorer.compare")(function* (input) {
303
+ const request = yield* Schema.decodeUnknownEffect(ConfigCompareRequest)(input).pipe(Effect.mapError(() => error("invalid_request", "The config comparison request is invalid.", "Provide explicit left and right platforms.", false)));
304
+ const common = {
305
+ project: request.project,
306
+ section: request.section,
307
+ key: request.key,
308
+ ...(request.engineRoot === undefined
309
+ ? undefined
310
+ : { engineRoot: request.engineRoot }),
311
+ ...(request.family === undefined ? undefined : { family: request.family })
312
+ };
313
+ const [left, right] = yield* Effect.all([
314
+ explain({ ...common, platform: request.leftPlatform }),
315
+ explain({ ...common, platform: request.rightPlatform })
316
+ ], { concurrency: 2 });
317
+ return compareConfigExplanations({ left, right });
318
+ });
319
+ return ConfigExplorer.of({ explain, compare });
320
+ }));
321
+ export const ConfigExplorerNodeLive = ConfigExplorerLive.pipe(Layer.provide(ConfigFileAccessLive), Layer.provide(EngineInstallationDiscoveryLive));
322
+ export function makeConfigExplorerTestLayer(service) {
323
+ return Layer.succeed(ConfigExplorer, ConfigExplorer.of(service));
324
+ }
325
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@ue-shed/config-explorer",
3
+ "version": "0.2.0",
4
+ "description": "Explain saved Unreal config provenance and platform differences.",
5
+ "homepage": "https://github.com/ue-shed/ue-shed#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/ue-shed/ue-shed/issues"
8
+ },
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/ue-shed/ue-shed.git",
13
+ "directory": "packages/config-explorer"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "type": "module",
21
+ "sideEffects": false,
22
+ "main": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ },
29
+ "./browser": {
30
+ "types": "./dist/browser.d.ts",
31
+ "import": "./dist/browser.js"
32
+ }
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "dependencies": {
38
+ "@ue-shed/engine": "0.2.0",
39
+ "effect": "4.0.0-beta.98"
40
+ },
41
+ "devDependencies": {
42
+ "@effect/vitest": "4.0.0-beta.98"
43
+ },
44
+ "engines": {
45
+ "node": ">=22.14.0"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc -p tsconfig.build.json",
49
+ "typecheck": "tsc --noEmit"
50
+ }
51
+ }