Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / package-json / index.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/package-json/index.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/package-json/index.js
new file mode 100644 (file)
index 0000000..1e588b2
--- /dev/null
@@ -0,0 +1,67 @@
+'use strict';
+const url = require('url');
+const got = require('got');
+const registryUrl = require('registry-url');
+const registryAuthToken = require('registry-auth-token');
+const semver = require('semver');
+
+module.exports = (name, opts) => {
+       const scope = name.split('/')[0];
+       const regUrl = registryUrl(scope);
+       const pkgUrl = url.resolve(regUrl, encodeURIComponent(name).replace(/^%40/, '@'));
+       const authInfo = registryAuthToken(regUrl, {recursive: true});
+
+       opts = Object.assign({
+               version: 'latest'
+       }, opts);
+
+       const headers = {
+               accept: 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*'
+       };
+
+       if (opts.fullMetadata) {
+               delete headers.accept;
+       }
+
+       if (authInfo) {
+               headers.authorization = `${authInfo.type} ${authInfo.token}`;
+       }
+
+       return got(pkgUrl, {json: true, headers})
+               .then(res => {
+                       let data = res.body;
+                       let version = opts.version;
+
+                       if (opts.allVersions) {
+                               return data;
+                       }
+
+                       if (data['dist-tags'][version]) {
+                               data = data.versions[data['dist-tags'][version]];
+                       } else if (version) {
+                               if (!data.versions[version]) {
+                                       const versions = Object.keys(data.versions);
+                                       version = semver.maxSatisfying(versions, version);
+
+                                       if (!version) {
+                                               throw new Error('Version doesn\'t exist');
+                                       }
+                               }
+
+                               data = data.versions[version];
+
+                               if (!data) {
+                                       throw new Error('Version doesn\'t exist');
+                               }
+                       }
+
+                       return data;
+               })
+               .catch(err => {
+                       if (err.statusCode === 404) {
+                               throw new Error(`Package \`${name}\` doesn't exist`);
+                       }
+
+                       throw err;
+               });
+};