Parse one oh-package.json5's dependencies → [name, file-target] pairs.
(manifestAbs: string)
| 177 | |
| 178 | /** Parse one oh-package.json5's dependencies → [name, file-target] pairs. */ |
| 179 | function readOhpmFileDeps(manifestAbs: string): Array<[string, string]> { |
| 180 | const out: Array<[string, string]> = []; |
| 181 | let parsed: unknown; |
| 182 | try { |
| 183 | // JSON5 tolerates comments and trailing commas; jsonc-parser (already a |
| 184 | // dependency, used by the opencode installer target) handles both. |
| 185 | // eslint-disable-next-line @typescript-eslint/no-require-imports |
| 186 | parsed = require('jsonc-parser').parse(fs.readFileSync(manifestAbs, 'utf-8')); |
| 187 | } catch { |
| 188 | return out; |
| 189 | } |
| 190 | const deps = (parsed as { dependencies?: Record<string, unknown> } | null)?.dependencies; |
| 191 | if (!deps || typeof deps !== 'object') return out; |
| 192 | for (const [name, value] of Object.entries(deps)) { |
| 193 | if (typeof value !== 'string' || !value.startsWith('file:')) continue; |
| 194 | const target = value.slice('file:'.length).trim(); |
| 195 | if (target) out.push([name, target]); |
| 196 | } |
| 197 | return out; |
| 198 | } |
| 199 | |
| 200 | /** |
| 201 | * Rewrite a bare workspace import to a path relative to projectRoot, |
no outgoing calls
no test coverage detected