@cosmicjs/sdk
Version:
The official client module for Cosmic. This module helps you easily add dynamic content to your website or application using the Cosmic headless CMS.
7 lines (5 loc) • 11.5 kB
JavaScript
;var ee=Object.create;var k=Object.defineProperty,te=Object.defineProperties,re=Object.getOwnPropertyDescriptor,ne=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertyNames,G=Object.getOwnPropertySymbols,se=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var _=(r,t,e)=>t in r?k(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,h=(r,t)=>{for(var e in t||(t={}))I.call(t,e)&&_(r,e,t[e]);if(G)for(var e of G(t))oe.call(t,e)&&_(r,e,t[e]);return r},M=(r,t)=>te(r,ne(t));var ae=(r,t)=>{for(var e in t)k(r,e,{get:t[e],enumerable:!0})},U=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ie(t))!I.call(r,i)&&i!==e&&k(r,i,{get:()=>t[i],enumerable:!(n=re(t,i))||n.enumerable});return r};var B=(r,t,e)=>(e=r!=null?ee(se(r)):{},U(t||!r||!r.__esModule?k(e,"default",{value:r,enumerable:!0}):e,r)),pe=r=>U(k({},"__esModule",{value:!0}),r);var he={};ae(he,{TextStreamingResponse:()=>w,createBucketClient:()=>X});module.exports=pe(he);var me={production:{v3:{apiUrl:"https://api.cosmicjs.com/v3",uploadUrl:"https://workers.cosmicjs.com/v3"}},staging:{v3:{apiUrl:"https://api.cosmic-staging.com/v3",uploadUrl:"https://workers.cosmic-staging.com/v3"}}},H=me;function K(r){if(r.custom){if(!r.custom.apiUrl||!r.custom.uploadUrl)throw new Error("apiUrl or uploadUrl is missing from 'custom' option");return{apiUrl:r.custom.apiUrl,uploadUrl:r.custom.uploadUrl}}if(!r.apiVersion||!["v3"].includes(r.apiVersion))throw new Error("apiVersion value can only be from 'v1', 'v2' & 'v3'");if(!r.apiEnvironment||!["production","staging"].includes(r.apiEnvironment))throw new Error("apiEnvironment value can only be from 'production' & 'staging'");return H[r.apiEnvironment][r.apiVersion]}var W=B(require("form-data"));var ce={POST:"post",GET:"get",FETCH:"fetch",PUT:"put",PATCH:"patch",DELETE:"delete"},c=ce;var A=B(require("axios"));var m=(r,t,e,n,i)=>{let o={method:r,url:t,data:e,headers:n,responseType:i?"stream":"json"};return i?(0,A.default)(o).then(s=>s.data).catch(s=>{throw s.response?s.response.data:s.response}):(0,A.default)(o).then(s=>s.data).catch(s=>{throw s.response?s.response.data:s.response})};function d(r){if(r&&r.trim())return{Authorization:`Bearer ${r}`};throw new Error("'writeKey' should be a valid string")}var D=B(require("axios")),F=(r,t,e,n)=>(0,D.default)({method:r,url:t,data:e,headers:n});var de=r=>new Promise((t,e)=>{F(c.GET,r).then(n=>t(n.data)).catch(n=>e(n.response?n.response.data:n.response))}),u=async(r,t,e)=>{try{let n=await de(r);e(n)}catch(n){if(t&&typeof t=="function")t(n);else throw n}};var l=class{constructor(t){this.endpoint="";this.endpoint=t}props(t){let e;if(typeof t=="string")e=t.startsWith("{")&&t.endsWith("}")?this.parseGraphQLProps(t.slice(1,-1)):t;else if(Array.isArray(t))e=t.filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean).join(",");else throw new Error("Invalid props type");return this.endpoint+=`&props=${encodeURIComponent(e)}`,this}parseGraphQLProps(t){let e=t.split(`
`).map(o=>o.trim()).filter(Boolean),n=[],i=[];for(let o of e)if(o.includes("{")){let[s]=o.split("{");s!==void 0&&i.push(s.trim())}else o==="}"?i.pop():n.push([...i,o].join("."));return n.join(",")}sort(t){return this.endpoint+=`&sort=${t}`,this}skip(t){return this.endpoint+=`&skip=${t}`,this}useCache(){return this.endpoint+="&use_cache=true",this}};var O=class extends l{limit(t){return this.endpoint+=`&limit=${t}`,this}async then(t,e){await u(this.endpoint,e,n=>t==null?void 0:t(n))}};var P=class extends l{async then(t,e){await u(this.endpoint,e,n=>{let i=n.media&&n.media.length?n.media[0]:null;t==null||t({media:i})})}};var T=r=>r?`&query=${encodeURIComponent(JSON.stringify(r))}`:"";var S,q=(r,t)=>({find(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/media?read_key=${r.readKey}${T(e)}`;return new O(n)},findOne(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/media?read_key=${r.readKey}&limit=1${T(e)}`;return new P(n)},async insertOne(e){let n=`${t.uploadUrl}/buckets/${r.bucketSlug}/media`,i=new W.default;return e.media.buffer?i.append("media",e.media.buffer,e.media.originalname):i.append("media",e.media,e.media.name),r.writeKey&&i.append("write_key",r.writeKey),e.folder&&i.append("folder",e.folder),e.metadata&&i.append("metadata",JSON.stringify(e.metadata)),e.trigger_webhook&&i.append("trigger_webhook",e.trigger_webhook.toString()),(s=>new Promise((a,p)=>{e.media.buffer?s.getLength((C,Y)=>{C&&p(C);let Z=h({"Content-Length":Y},s.getHeaders());a(Z)}):a({"Content-Type":"multipart/form-data"})}))(i).then(s=>{let a=s;return r.writeKey&&(a.Authorization=`Bearer ${r.writeKey}`),m(c.POST,n,i,a)}).catch(s=>{throw s.response.data})},async updateOne(e,n){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/media/${e}`;return S=d(r.writeKey),m(c.PATCH,i,n,S)},async deleteOne(e,n=!1){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/media/${e}${n?"?trigger_webhook=true":""}`;return S=d(r.writeKey),m(c.DELETE,i,null,S)}});var y=class extends l{depth(t){return this.endpoint+=`&depth=${t}`,this}status(t){return this.endpoint+=`&status=${t}`,this}after(t){return this.endpoint+=`&after=${t}`,this}options(t){return t&&(this.opts=t),this}};var ue=async(r,t,e)=>{let n={name:{$in:t}},{media:i}=await r.media.find(n).props(!e||e==="all"?"":`name,url,imgix_url,${e}`);return i},le=r=>{let t=[];return JSON.stringify(r,(e,n)=>{if(n&&typeof n=="object"){let i=n.imgix_url||n.url;i&&t.push(i.split("/").pop().split("?")[0])}return n}),[...new Set(t)]},fe=(r,t,e)=>{let n=new Map(t.map(o=>[o.name,o])),i=o=>{o&&typeof o=="object"&&Object.keys(o).forEach(s=>{if(o[s]&&typeof o[s]=="object"){let a=o[s].imgix_url||o[s].url;if(a){let p=a.split("/").pop().split("?")[0];if(n.has(p)){e.includes("name")||delete n.get(p).name;let C=h({},n.get(p));Object.assign(o[s],C)}}i(o[s])}})};i(r)},g=async(r,t,e)=>{let n=async i=>{let o=le(i);if(o.length>0){let s=await ue(t,o,e);fe(i,s,e)}return i};return Array.isArray(r)?Promise.all(r.map(i=>n(i))):n(r)};var j=class extends y{constructor(e,n){super(e);this.bucketConfig=n}limit(e){return this.endpoint+=`&limit=${e}`,this}async then(e,n){await u(this.endpoint,n,async i=>{this.opts&&this.opts.media&&i.objects&&(i.objects=await g(i.objects,f(this.bucketConfig),this.opts.media.props)),e==null||e(i)})}};var R=class extends y{constructor(e,n){super(e);this.bucketConfig=n}async then(e,n){await u(this.endpoint,n,async i=>{let o=i.objects&&i.objects.length?i.objects[0]:null;this.opts&&this.opts.media&&o&&(o=await g(o,f(this.bucketConfig),this.opts.media.props)),e==null||e({object:o})})}};var x,L=(r,t)=>({find(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/objects?read_key=${r.readKey}${T(e)}`;return new j(n,r)},findOne(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/objects?read_key=${r.readKey}&limit=1${T(e)}`;return new R(n,r)},async insertOne(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/objects`;return x=d(r.writeKey),m(c.POST,n,e,x)},async updateOne(e,n){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/objects/${e}`;return x=d(r.writeKey),m(c.PATCH,i,n,x)},async deleteOne(e,n=!1){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/objects/${e}${n?"?trigger_webhook=true":""}`;return x=d(r.writeKey),m(c.DELETE,i,null,x)}});var $,N=(r,t)=>({find(){let e=`${t.apiUrl}/buckets/${r.bucketSlug}/object-types?read_key=${r.readKey}`;return m(c.GET,e)},findOne(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/object-types/${e}?read_key=${r.readKey}`;return m(c.GET,n)},async insertOne(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/object-types`;return $=d(r.writeKey),m(c.POST,n,e,$)},async updateOne(e,n){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/object-types/${e}`;return $=d(r.writeKey),m(c.PATCH,i,n,$)},async deleteOne(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/object-types/${e}`;return $=d(r.writeKey),m(c.DELETE,n,null,$)}});var b=class extends l{depth(t){return this.endpoint+=`&depth=${t}`,this}status(t){return this.endpoint+=`&status=${t}`,this}after(t){return this.endpoint+=`&after=${t}`,this}options(t){return t&&(this.opts=t),this}};var v=class extends b{constructor(e,n){super(e);this.bucketConfig=n}async then(e,n){await u(this.endpoint,n,async i=>{let{revision:o}=i;this.opts&&this.opts.media&&o&&(o=await g(o,f(this.bucketConfig),this.opts.media.props)),e==null||e({revision:o})})}};var E=class extends b{constructor(e,n){super(e);this.bucketConfig=n}limit(e){return this.endpoint+=`&limit=${e}`,this}async then(e,n){await u(this.endpoint,n,async i=>{this.opts&&this.opts.media&&i.revisions&&(i.revisions=await g(i.revisions,f(this.bucketConfig),this.opts.media.props)),e==null||e(i)})}};var z,J=(r,t)=>({find(e){let n=`${t.apiUrl}/buckets/${r.bucketSlug}/objects/${e}/revisions?read_key=${r.readKey}`;return new E(n,r)},findOne({objectId:e,revisionId:n}){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/objects/${e}/revisions/${n}?read_key=${r.readKey}`;return new v(i,r)},async insertOne(e,n){let i=`${t.apiUrl}/buckets/${r.bucketSlug}/objects/${e}/revisions`;return z=d(r.writeKey),m(c.POST,i,n,z)}});var Q=require("events");var w=class extends Q.EventEmitter{constructor(e){super();this.stream=e;this.usageInfo=null;this.text="";this.setupListeners()}setupListeners(){let e="";this.stream.on("data",n=>{e+=n.toString();let i=e.split(`
`);e=i.pop()||"";for(let o of i)if(o.trim()){let s=o.split(`
`).filter(a=>a.startsWith("data: ")).map(a=>a.replace(/^data: /,""));for(let a of s)try{let p=JSON.parse(a);p.error?this.emit("error",new Error(p.error.message||"An error occurred")):(p.text&&(this.text+=p.text,this.emit("text",p.text)),p.token_count&&(this.usageInfo=p.token_count,this.emit("usage",p.token_count)),p.event==="end"&&this.emit("end",p.data))}catch(p){a.includes("error")&&this.emit("error",new Error(a))}}}),this.stream.on("error",n=>{this.emit("error",n)}),this.stream.on("end",()=>{if(e.trim()){let n=e.split(`
`).filter(i=>i.startsWith("data: ")).map(i=>i.replace(/^data: /,""));for(let i of n)try{let o=JSON.parse(i);o.text&&(this.text+=o.text,this.emit("text",o.text)),o.event==="end"&&this.emit("end",o.data)}catch(o){}}this.emit("end",{usage:this.usageInfo})})}get usage(){return this.usageInfo}[Symbol.asyncIterator](){let e=[],n=null,i=!1,o=!1;return this.on("text",s=>{n?(n({value:{text:s},done:!1}),n=null):e.push({text:s})}),this.on("usage",s=>{n?(n({value:{usage:s},done:!1}),n=null):e.push({usage:s})}),this.on("end",()=>{i=!0,n&&(n({value:void 0,done:!0}),n=null)}),this.on("error",s=>{o=!0,n?(n({value:{error:s},done:!1}),n=null):e.push({error:s})}),{next:async()=>{if(e.length>0){let s=e.shift();if(s.error)throw s.error;return{value:s,done:!1}}if(i)return{value:void 0,done:!0};if(o)throw new Error("Stream encountered an error");return new Promise(s=>{n=s})}}}},V=(r,t)=>{let{uploadUrl:e}=t,{bucketSlug:n,writeKey:i}=r,o={"Content-Type":"application/json"};return i&&(o.Authorization=`Bearer ${i}`),{generateText:async s=>{if(!s.prompt&&!s.messages)throw new Error("Either prompt or messages must be provided");let a=`${e}/buckets/${n}/ai/text`;if(s.stream){let p=await m("POST",a,s,o,!0);return new w(p)}return m("POST",a,s,o)},stream:async s=>{if(!s.prompt&&!s.messages)throw new Error("Either prompt or messages must be provided");let a=`${e}/buckets/${n}/ai/text`,p=await m("POST",a,M(h({},s),{stream:!0}),o,!0);return new w(p)},generateImage:async s=>{let a=`${e}/buckets/${n}/ai/image`;return m("POST",a,s,o)}}};var f=r=>{let t=h({apiVersion:"v3",apiEnvironment:"production"},r),e=K(t);return{objects:L(t,e),objectTypes:N(t,e),objectRevisions:J(t,e),media:q(t,e),ai:V(t,e)}},X=f;0&&(module.exports={TextStreamingResponse,createBucketClient});