[Snow Team] Merge config-fixer's work with conflict resolution

This commit is contained in:
yml
2026-05-21 23:20:40 +08:00
2 changed files with 93 additions and 48 deletions
+42 -12
View File
@@ -5,11 +5,21 @@ import type {
AdminDefaultUser,
RuntimeConfig,
} from "../types/runtime-config.js";
import { parseBoolean, parseInteger, parseJsonArray } from "./runtime-env.js";
import {
parseBoolean,
parseInteger,
parseJsonArray,
parseCommaSeparatedStrings,
} from "./runtime-env.js";
import { deepMerge } from "./runtime-merge.js";
type RuntimeConfigPath = readonly [string, ...string[]];
type RuntimeConfigValue = string | number | boolean | AdminDefaultUser[];
type RuntimeConfigValue =
| string
| number
| boolean
| AdminDefaultUser[]
| string[];
type RuntimeEnv = Record<string, string | undefined>;
type EnvOverride = {
@@ -347,31 +357,51 @@ function booleanEnv(env: string, configPath: RuntimeConfigPath): EnvOverride {
};
}
function adminUsersJsonEnv(env: string, configPath: RuntimeConfigPath): EnvOverride {
function adminUsersJsonEnv(
env: string,
configPath: RuntimeConfigPath
): EnvOverride {
return {
env,
path: configPath,
read(rawValue) {
return parseJsonArray<AdminDefaultUser>(rawValue)
return parseJsonArray<AdminDefaultUser>(rawValue);
},
}
};
}
function corsOriginsEnv(env: string, configPath: RuntimeConfigPath): EnvOverride {
function stringArrayEnv(
env: string,
configPath: RuntimeConfigPath
): EnvOverride {
return {
env,
path: configPath,
read: parseCommaSeparatedStrings,
};
}
function corsOriginsEnv(
env: string,
configPath: RuntimeConfigPath
): EnvOverride {
return {
env,
path: configPath,
read(rawValue) {
const value = parseString(rawValue)
const value = parseString(rawValue);
if (value === null) {
return null
return null;
}
if (value.trim() === '*') {
return ['*']
if (value.trim() === "*") {
return ["*"];
}
return value.split(',').map((s) => s.trim()).filter(Boolean)
return value
.split(",")
.map((s) => s.trim())
.filter(Boolean);
},
}
};
}
function parseString(rawValue: unknown): string | null {