UNPKG

packagecloud

Version:
2 lines (1 loc) 4.82 kB
"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var request=_interopDefault(require("superagent")),validateOptions=(e,t)=>{let s=e||{};if("object"!=typeof s)throw new Error("The packagecloud client expects an object with a token field: {token: api_token}");t.forEach(function(e){if(!(e in s))throw"token"===e?new Error("packagecloud API token is required: {token: packagecloud_api_token}"):new Error(`missing field: ${e}`);if(!s[e])throw new Error(`${e} cannot be null or undefined`);switch(e){case"repo":if(s.repo.split("/").length<2)throw new Error("The repo field must be in the format: username/reponame")}})},searchPackages=(e,t)=>{validateOptions(t,["repo"]);let s={q:t.filename||"",filter:t.type,dist:t.dist,perPage:t.perPage};return e.get([t.baseUrl+"repos",t.repo,"search.json"].join("/")).query(s)},createRepository=(e,t)=>{validateOptions(t,["name"]);let[s,r]=[!!t.privacy,t.name],a={repository:{name:r,private:s}};return e.post(t.baseUrl+"repos.json").send(a)},showRepository=(e,t)=>(validateOptions(t,["repo"]),e.get([t.baseUrl+"repos",t.repo+".json"].join("/"))),getRepositories=(e,t)=>e.get(t.baseUrl+"repos.json"),getDistributions=(e,t)=>e.get(t.baseUrl+"distributions.json"),listPackages=(e,t)=>(validateOptions(t,["repo"]),e.get([t.baseUrl+"repos",t.repo,"packages.json"].join("/"))),deletePackage=(e,t)=>{let s=[t.baseUrl+"repos",t.repository,t.distroFqname,t.group,t.filename].filter(Boolean).join("/");return e.delete(s).send({scope:t.scope})},uploadPackage=(e,t)=>{if(!t||!t.repo||t.repo.split("/").length<2)throw new Error("Repository path must be in the fully-qualified format - user/repo");if(!t.file)throw new Error("Expects an object with string file path (node) or File (browser) as a value");if(!t.filename)throw new Error("Expects a filename");let s=[t.baseUrl+"repos",t.repo,"packages.json"].join("/");return privateMethods.upload(s,e,t)};const privateMethods={upload(e,t,s){let r={filename:s.filename};return s.dist&&(r["package[distro_version_id]"]=s.dist),t.post(e).field(r).attach("package[package_file]",s.file)}};var promotePackage=(e,t)=>{let s=[t.baseUrl+"repos",t.sourceRepo,t.distroFqname,t.group,t.filename,"promote.json"].filter(Boolean).join("/");return e.post(s).send({destination:t.destination,group:t.group,scope:t.scope})},showPackage=(e,t)=>{validateOptions(t,["repo","type","distro","distroVersion","packageName","arch","version"]);let[s,r]=[t.version,t.release];return t.release?r=t.release+".json":s=t.version+".json",e.get([t.baseUrl+"repos",t.repo,"package",t.type,t.distro,t.distroVersion,t.packageName,t.arch,s,r].join("/").replace(/\/+$/,""))},showVersionedPackage=(e,t)=>{validateOptions(t,["repo","type","packageName","version"]);let s=t.repo,r=t.packageName,a=t.version,o=privateMethods$1.versionedPackageString(t.type);return e.get([t.baseUrl+"repos",s,"package",o,r,a+".json"].join("/"))};const privateMethods$1={versionedPackageString(e){switch(e){case"java":return"java/maven2";case"gem":case"python":return e}}};var version="0.2.2";const API_VERSION="api/v1";class packagecloud{constructor(e){validateOptions(e,["token"]),this.token=e.token,this.baseUrl=(e.baseUrl||"https://packagecloud.io").replace(/\/+$/,""),this.requestOptions={baseUrl:`${this.baseUrl}/api/v1/`}}_setHeaders(e){return e.auth(this.token,"").set({"X-packagecloud-JS-Client":version})}createRepository(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(createRepository(request,t))}showRepository(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(showRepository(request,t))}getRepositories(){return this._setHeaders(getRepositories(request,this.requestOptions))}getDistributions(){return this._setHeaders(getDistributions(request,this.requestOptions))}listPackages(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(listPackages(request,t))}searchPackages(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(searchPackages(request,t))}deletePackage(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(deletePackage(request,t))}uploadPackage(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(uploadPackage(request,t))}promotePackage(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(promotePackage(request,t))}showPackage(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(showPackage(request,t))}showVersionedPackage(e){let t=Object.assign({},this.requestOptions,e);return this._setHeaders(showVersionedPackage(request,t))}showGemPackage(e){return e.type="gem",this.showVersionedPackage(e)}showPythonPackage(e){return e.type="python",this.showVersionedPackage(e)}showJavaPackage(e){return e.type="java",this.showVersionedPackage(e)}}module.exports=packagecloud;