| 'use strict'; | 
| const {promisify} = require('util'); | 
| const fs = require('fs'); | 
| const path = require('path'); | 
| const parseJson = require('parse-json'); | 
|   | 
| const readFileAsync = promisify(fs.readFile); | 
|   | 
| module.exports = async options => { | 
|     options = { | 
|         cwd: process.cwd(), | 
|         normalize: true, | 
|         ...options | 
|     }; | 
|   | 
|     const filePath = path.resolve(options.cwd, 'package.json'); | 
|     const json = parseJson(await readFileAsync(filePath, 'utf8')); | 
|   | 
|     if (options.normalize) { | 
|         require('normalize-package-data')(json); | 
|     } | 
|   | 
|     return json; | 
| }; | 
|   | 
| module.exports.sync = options => { | 
|     options = { | 
|         cwd: process.cwd(), | 
|         normalize: true, | 
|         ...options | 
|     }; | 
|   | 
|     const filePath = path.resolve(options.cwd, 'package.json'); | 
|     const json = parseJson(fs.readFileSync(filePath, 'utf8')); | 
|   | 
|     if (options.normalize) { | 
|         require('normalize-package-data')(json); | 
|     } | 
|   | 
|     return json; | 
| }; |