( metadata: PackageJsonMetadata, rootPackageJson: JsonObject )
| 240 | } |
| 241 | |
| 242 | export function generatePackageJson( |
| 243 | metadata: PackageJsonMetadata, |
| 244 | rootPackageJson: JsonObject |
| 245 | ): JsonObject { |
| 246 | if (metadata.fields.gitHead !== undefined) { |
| 247 | throw new Error( |
| 248 | 'gitHead must not be set in generated package.json metadata' |
| 249 | ) |
| 250 | } |
| 251 | |
| 252 | for (const field of ROOT_VERSION_FIELDS) { |
| 253 | if (metadata.fields[field] !== undefined) { |
| 254 | throw new Error( |
| 255 | `${field} must be generated from Bazel labels, not static fields` |
| 256 | ) |
| 257 | } |
| 258 | } |
| 259 | |
| 260 | const rootVersions = rootVersionMap(rootPackageJson) |
| 261 | const workspaceDependencies = new Set(metadata.workspaceDependencies ?? []) |
| 262 | validateNoDevDependencies(metadata) |
| 263 | validateDependencyVersionOverrides(metadata, workspaceDependencies) |
| 264 | const result: JsonObject = {...metadata.fields} |
| 265 | |
| 266 | for (const field of DEPENDENCY_FIELDS) { |
| 267 | const deps = dependencyObject( |
| 268 | metadata[field], |
| 269 | metadata, |
| 270 | rootVersions, |
| 271 | workspaceDependencies |
| 272 | ) |
| 273 | if (deps) { |
| 274 | result[field] = deps |
| 275 | } |
| 276 | } |
| 277 | |
| 278 | if (metadata.sortExports && result.exports) { |
| 279 | result.exports = orderExports(result.exports, metadata.sortExports) |
| 280 | } |
| 281 | |
| 282 | if (result.keywords) { |
| 283 | result.keywords = orderedStringArray(result.keywords) |
| 284 | } |
| 285 | |
| 286 | if ( |
| 287 | result.repository && |
| 288 | typeof result.repository === 'object' && |
| 289 | !Array.isArray(result.repository) |
| 290 | ) { |
| 291 | result.repository = orderObjectByKeys( |
| 292 | result.repository as JsonObject, |
| 293 | REPOSITORY_SORT_FIRST |
| 294 | ) |
| 295 | } |
| 296 | |
| 297 | return orderObjectByKeys(result, metadata.sortFirst ?? []) |
| 298 | } |
| 299 |
no test coverage detected