( root: string, raw: ServerOptions | undefined, logger: Logger, )
| 1205 | const RESERVED_ALLOWED_HOSTS_CHARACTERS_RE = /[\\"']/ |
| 1206 | |
| 1207 | export async function resolveServerOptions( |
| 1208 | root: string, |
| 1209 | raw: ServerOptions | undefined, |
| 1210 | logger: Logger, |
| 1211 | ): Promise<ResolvedServerOptions> { |
| 1212 | const _server = mergeWithDefaults( |
| 1213 | { |
| 1214 | ..._serverConfigDefaults, |
| 1215 | host: undefined, // do not set here to detect whether host is set or not |
| 1216 | sourcemapIgnoreList: isInNodeModules, |
| 1217 | }, |
| 1218 | raw ?? {}, |
| 1219 | ) |
| 1220 | |
| 1221 | setupHmrWsOptionCompat(_server) |
| 1222 | |
| 1223 | const workspaceRoot = searchForWorkspaceRoot(root) |
| 1224 | const server: ResolvedServerOptions = { |
| 1225 | ..._server, |
| 1226 | fs: { |
| 1227 | ..._server.fs, |
| 1228 | // run searchForWorkspaceRoot only if needed |
| 1229 | allow: raw?.fs?.allow ?? [workspaceRoot], |
| 1230 | }, |
| 1231 | sourcemapIgnoreList: |
| 1232 | _server.sourcemapIgnoreList === false |
| 1233 | ? () => false |
| 1234 | : _server.sourcemapIgnoreList, |
| 1235 | forwardConsole: await resolveForwardConsoleOptions(_server.forwardConsole), |
| 1236 | } |
| 1237 | |
| 1238 | let allowDirs = server.fs.allow |
| 1239 | |
| 1240 | const cwd = searchForPackageRoot(root) |
| 1241 | if (process.versions.pnp) { |
| 1242 | // running a command fails if cwd doesn't exist and root may not exist |
| 1243 | // search for package root to find a path that exists |
| 1244 | try { |
| 1245 | const enableGlobalCache = |
| 1246 | execSync('yarn config get enableGlobalCache', { cwd }) |
| 1247 | .toString() |
| 1248 | .trim() === 'true' |
| 1249 | const yarnCacheDir = execSync( |
| 1250 | `yarn config get ${enableGlobalCache ? 'globalFolder' : 'cacheFolder'}`, |
| 1251 | { cwd }, |
| 1252 | ) |
| 1253 | .toString() |
| 1254 | .trim() |
| 1255 | allowDirs.push(yarnCacheDir) |
| 1256 | } catch (e) { |
| 1257 | logger.warn(`Get yarn cache dir error: ${e.message}`, { |
| 1258 | timestamp: true, |
| 1259 | }) |
| 1260 | } |
| 1261 | } |
| 1262 | |
| 1263 | // pnpm's global virtual store (GVS) may place package files outside workspace root. |
| 1264 | // Read node_modules/.modules.yaml which pnpm always writes on install — this works |
no test coverage detected