Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/read-package-json/read-json.js')
-rw-r--r--node_modules/read-package-json/read-json.js51
1 files changed, 46 insertions, 5 deletions
diff --git a/node_modules/read-package-json/read-json.js b/node_modules/read-package-json/read-json.js
index 04d22e3af..468a33e39 100644
--- a/node_modules/read-package-json/read-json.js
+++ b/node_modules/read-package-json/read-json.js
@@ -21,6 +21,7 @@ readJson.extraSet = [
mans,
bins,
githead,
+ fillTypes,
]
var typoWarned = {}
@@ -339,16 +340,17 @@ function readme_ (file, data, rm, cb) {
}
function mans (file, data, cb) {
- var m = data.directories && data.directories.man
- if (data.man || !m) {
+ let cwd = data.directories && data.directories.man
+ if (data.man || !cwd) {
return cb(null, data)
}
- m = path.resolve(path.dirname(file), m)
- glob('**/*.[0-9]', { cwd: m }, function (er, mans) {
+ const dirname = path.dirname(file)
+ cwd = path.resolve(path.dirname(file), cwd)
+ glob('**/*.[0-9]', { cwd }, function (er, mans) {
if (er) {
return cb(er)
}
- data.man = mans
+ data.man = mans.map(man => path.relative(dirname, path.join(cwd, man)))
return cb(null, data)
})
}
@@ -517,6 +519,45 @@ function final (file, data, log, strict, cb) {
})
}
+function fillTypes (file, data, cb) {
+ var index = data.main ? data.main : 'index.js'
+
+ // TODO exports is much more complicated than this in verbose format
+ // We need to support for instance
+
+ // "exports": {
+ // ".": [
+ // {
+ // "default": "./lib/npm.js"
+ // },
+ // "./lib/npm.js"
+ // ],
+ // "./package.json": "./package.json"
+ // },
+ // as well as conditional exports
+
+ // if (data.exports && typeof data.exports === 'string') {
+ // index = data.exports
+ // }
+
+ // if (data.exports && data.exports['.']) {
+ // index = data.exports['.']
+ // if (typeof index !== 'string') {
+ // }
+ // }
+
+ var extless =
+ path.join(path.dirname(index), path.basename(index, path.extname(index)))
+ var dts = `./${extless}.d.ts`
+ var dtsPath = path.join(path.dirname(file), dts)
+ var hasDTSFields = 'types' in data || 'typings' in data
+ if (!hasDTSFields && fs.existsSync(dtsPath)) {
+ data.types = dts
+ }
+
+ cb(null, data)
+}
+
function makePackageId (data) {
var name = cleanString(data.name)
var ver = cleanString(data.version)