diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/progress.yaml b/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/progress.yaml new file mode 100644 index 000000000..5cf09ff98 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/progress.yaml @@ -0,0 +1,174 @@ +description: Connect external data to LLMs, no matter the source. +examples: {} +examples_2: {} +examples_3: + /health: + get: + '200': + application/json: {} + /integrations/oauth_url: + post: + '200': + application/json: {} + /process_sitemap: + get: + '200': + application/json: {} + /scrape_sitemap: + post: + '200': + application/json: {} + /web_scrape: + post: + '200': + application/json: {} +ignoreObjectsWithNoProperties: true +operationIds: + /add_webhook: + post: Webhooks_addUrl + /auth/v1/access_token: + get: Auth_getAccessToken + /auth/v1/white_labeling: + get: Auth_getWhiteLabeling + /create_user_file_tags: + post: Files_createUserFileTags + /delete_files: + post: Files_deleteMany + /delete_user_file_tags: + post: Files_deleteFileTags + /delete_webhook/{webhook_id}: + delete: Webhooks_deleteUrl + /deletefile/{file_id}: + delete: Files_delete + /embeddings: + post: Embeddings_getDocuments + /fetch_urls: + get: Utilities_fetchUrls + /fetch_youtube_transcript: + get: Utilities_fetchYoutubeTranscripts + /health: + get: Health_check + /integrations/confluence/list: + post: Integrations_listConfluencePages + /integrations/confluence/sync: + post: Integrations_syncConfluence + /integrations/files/sync: + post: Integrations_syncFiles + /integrations/freshdesk: + post: Integrations_connectFreshdesk + /integrations/gmail/sync: + post: Integrations_syncGmail + /integrations/items/list: + post: Integrations_listDataSourceItems + /integrations/items/sync: + post: Integrations_syncDataSourceItems + /integrations/oauth_url: + post: Integrations_getOauthUrl + /integrations/outlook/sync: + post: Integrations_syncOutlook + /integrations/rss_feed: + post: Integrations_syncRssFeed + /integrations/s3: + post: Integrations_createAwsIamUser + /integrations/s3/files: + post: Integrations_syncS3Files + /modify_user_configuration: + post: Users_toggleUserFeatures + /organization: + get: Organizations_get + /parsed_file/{file_id}: + get: Files_getParsedFile + /process_sitemap: + get: Utilities_processSitemap + /raw_file/{file_id}: + get: Files_getRawFile + /resync_file: + post: Files_resync + /revoke_access_token: + post: DataSources_revokeAccessToken + /scrape_sitemap: + post: Utilities_scrapeSitemap + /search_urls: + get: Utilities_searchUrls + /text_chunks: + post: Embeddings_getEmbeddingsAndChunks + /upload_chunks_and_embeddings: + post: Embeddings_uploadChunksAndEmbeddings + /upload_file_from_url: + post: Files_uploadFromUrl + /upload_text: + post: Files_uploadText + /uploadfile: + post: Files_upload + /user: + post: Users_get + /user_data_sources: + post: DataSources_queryUserDataSources + /user_files: + post: Files_queryUserFilesDeprecated + /user_files_v2: + post: Files_queryUserFiles + /web_scrape: + post: Utilities_scrapeWeb + /webhooks: + post: Webhooks_urls +operationTags: {} +renameTags: {} +requestSchemaNames: + /web_scrape: + post: + application/json: UtilitiesScrapeWebRequest +responseDescriptions: {} +responseSchemaNames: + /health: + get: + '200': + application/json: HealthCheckResponse + /integrations/oauth_url: + post: + '200': + application/json: IntegrationsGetOauthUrlResponse + /process_sitemap: + get: + '200': + application/json: UtilitiesProcessSitemapResponse + /scrape_sitemap: + post: + '200': + application/json: UtilitiesScrapeSitemapResponse + /user_files: + post: + '200': + application/json: FilesQueryUserFilesDeprecatedResponse + /web_scrape: + post: + '200': + application/json: UtilitiesScrapeWebResponse +securityParameters: + chunk_overlap: + query: false + chunk_size: + query: false + embedding_model: + query: false + generate_sparse_vectors: + query: false + id: + query: false + max_items_per_chunk: + query: false + prepend_filename_to_chunks: + query: false + query: + query: false + raw: + query: false + set_page_as_boundary: + query: false + skip_embedding_generation: + query: false + url: + query: false + use_ocr: + query: false +validServerUrls: {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/ruleset-version b/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/ruleset-version new file mode 100644 index 000000000..8e03717dc --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/ruleset-version @@ -0,0 +1 @@ +1.5.1 \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/ruleset.js b/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/ruleset.js new file mode 100644 index 000000000..40b9edb25 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/.konfig/ruleset.js @@ -0,0 +1,144 @@ +"use strict";var Mf=Object.create;var Rs=Object.defineProperty;var Lf=Object.getOwnPropertyDescriptor;var Df=Object.getOwnPropertyNames;var Zf=Object.getPrototypeOf,Vf=Object.prototype.hasOwnProperty;var kt=(r,e)=>()=>(r&&(e=r(r=0)),e);var g=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),zr=(r,e)=>{for(var t in e)Rs(r,t,{get:e[t],enumerable:!0})},Eo=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Df(e))!Vf.call(r,n)&&n!==t&&Rs(r,n,{get:()=>e[n],enumerable:!(s=Lf(e,n))||s.enumerable});return r};var X=(r,e,t)=>(t=r!=null?Mf(Zf(r)):{},Eo(e||!r||!r.__esModule?Rs(t,"default",{value:r,enumerable:!0}):t,r)),No=r=>Eo(Rs({},"__esModule",{value:!0}),r);var Vo=g((S0,Zo)=>{"use strict";var Ms,N,Mo={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` +`,r:"\r",t:" "},vi;function ft(r){throw{name:"SyntaxError",message:r,at:Ms,text:vi}}function U(r){return r&&r!==N&&ft("Expected '"+r+"' instead of '"+N+"'"),N=vi.charAt(Ms),Ms+=1,N}function Lo(){var r,e="";for(N==="-"&&(e="-",U("-"));N>="0"&&N<="9";)e+=N,U();if(N===".")for(e+=".";U()&&N>="0"&&N<="9";)e+=N;if(N==="e"||N==="E")for(e+=N,U(),(N==="-"||N==="+")&&(e+=N,U());N>="0"&&N<="9";)e+=N,U();return r=Number(e),isFinite(r)||ft("Bad number"),r}function Do(){var r,e,t="",s;if(N==='"')for(;U();){if(N==='"')return U(),t;if(N==="\\")if(U(),N==="u"){for(s=0,e=0;e<4&&(r=parseInt(U(),16),!!isFinite(r));e+=1)s=s*16+r;t+=String.fromCharCode(s)}else if(typeof Mo[N]=="string")t+=Mo[N];else break;else t+=N}ft("Bad string")}function Xe(){for(;N&&N<=" ";)U()}function Uf(){switch(N){case"t":return U("t"),U("r"),U("u"),U("e"),!0;case"f":return U("f"),U("a"),U("l"),U("s"),U("e"),!1;case"n":return U("n"),U("u"),U("l"),U("l"),null;default:ft("Unexpected '"+N+"'")}}function Bf(){var r=[];if(N==="["){if(U("["),Xe(),N==="]")return U("]"),r;for(;N;){if(r.push(Ls()),Xe(),N==="]")return U("]"),r;U(","),Xe()}}ft("Bad array")}function Ff(){var r,e={};if(N==="{"){if(U("{"),Xe(),N==="}")return U("}"),e;for(;N;){if(r=Do(),Xe(),U(":"),Object.prototype.hasOwnProperty.call(e,r)&&ft('Duplicate key "'+r+'"'),e[r]=Ls(),Xe(),N==="}")return U("}"),e;U(","),Xe()}}ft("Bad object")}function Ls(){switch(Xe(),N){case"{":return Ff();case"[":return Bf();case'"':return Do();case"-":return Lo();default:return N>="0"&&N<="9"?Lo():Uf()}}Zo.exports=function(r,e){var t;return vi=r,Ms=0,N=" ",t=Ls(),Xe(),N&&ft("Syntax error"),typeof e=="function"?function s(n,i){var a,o,c=n[i];if(c&&typeof c=="object")for(a in Ls)Object.prototype.hasOwnProperty.call(c,a)&&(o=s(c,a),typeof o>"u"?delete c[a]:c[a]=o);return e.call(n,i,c)}({"":t},""):t}});var Bo=g((x0,Uo)=>{"use strict";var bi=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,me,Ds,Kf={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},At;function _i(r){return bi.lastIndex=0,bi.test(r)?'"'+r.replace(bi,function(e){var t=Kf[e];return typeof t=="string"?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+r+'"'}function Zs(r,e){var t,s,n,i,a=me,o,c=e[r];switch(c&&typeof c=="object"&&typeof c.toJSON=="function"&&(c=c.toJSON(r)),typeof At=="function"&&(c=At.call(e,r,c)),typeof c){case"string":return _i(c);case"number":return isFinite(c)?String(c):"null";case"boolean":case"null":return String(c);case"object":if(!c)return"null";if(me+=Ds,o=[],Object.prototype.toString.apply(c)==="[object Array]"){for(i=c.length,t=0;t{"use strict";wi.parse=Vo();wi.stringify=Bo()});var Si=g((I0,Ko)=>{"use strict";var Vs=typeof JSON<"u"?JSON:Fo(),Wf=Array.isArray||function(r){return{}.toString.call(r)==="[object Array]"},Jf=Object.keys||function(r){var e=Object.prototype.hasOwnProperty||function(){return!0},t=[];for(var s in r)e.call(r,s)&&t.push(s);return t};Ko.exports=function(r,e){e||(e={}),typeof e=="function"&&(e={cmp:e});var t=e.space||"";typeof t=="number"&&(t=Array(t+1).join(" "));var s=typeof e.cycles=="boolean"?e.cycles:!1,n=e.replacer||function(o,c){return c},i=e.cmp&&function(o){return function(c){return function(l,u){var d={key:l,value:c[l]},p={key:u,value:c[u]};return o(d,p)}}}(e.cmp),a=[];return function o(c,l,u,d){var p=t?` +`+new Array(d+1).join(t):"",h=t?": ":":";if(u&&u.toJSON&&typeof u.toJSON=="function"&&(u=u.toJSON()),u=n.call(c,l,u),u!==void 0){if(typeof u!="object"||u===null)return Vs.stringify(u);if(Wf(u)){for(var _=[],b=0;b{"use strict";var Yf=dr&&dr.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(dr,"__esModule",{value:!0});dr.findRedundantSecuritySchemes=void 0;var Wo=Yf(Si());function Hf({operation:r,document:e}){if(!e.security||!r.security)return[];let t=[],s=[];for(let i in r.security)s.push((0,Wo.default)(r.security[i]));let n=new Set;for(let i in e.security)n.add((0,Wo.default)(e.security[i]));for(let i=0;i{"use strict";Object.defineProperty(fr,"__esModule",{value:!0});fr.isAnyZodType=fr.isZodType=void 0;function zf(r,e){return r.constructor.name===e}fr.isZodType=zf;function Gf(r){return"_def"in r}fr.isAnyZodType=Gf});var Go=g(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.extendZodWithOpenApi=void 0;var zo=xi();function Qf(r){if(typeof r.ZodSchema.prototype.openapi<"u")return;r.ZodSchema.prototype.openapi=function(o){var c,l,u,d,p,h;let{param:b,...y}=o??{},v=new this.constructor({...this._def,openapi:{_internal:(c=this._def.openapi)===null||c===void 0?void 0:c._internal,metadata:{...(l=this._def.openapi)===null||l===void 0?void 0:l.metadata,...y,param:((d=(u=this._def.openapi)===null||u===void 0?void 0:u.metadata)===null||d===void 0?void 0:d.param)||b?{...(h=(p=this._def.openapi)===null||p===void 0?void 0:p.metadata)===null||h===void 0?void 0:h.param,...b}:void 0}}});return(0,zo.isZodType)(this,"ZodObject")&&(v.extend=this.extend),v},r.ZodSchema.prototype.internal_openapi=function(o){var c,l;let u=new this.constructor({...this._def,openapi:{_internal:{...(c=this._def.openapi)===null||c===void 0?void 0:c._internal,...o},metadata:(l=this._def.openapi)===null||l===void 0?void 0:l.metadata}});if((0,zo.isZodType)(this,"ZodObject")){let d=this.extend;u.extend=function(...p){var h,b,y,v,_;let P=d.apply(this,p);return P._def.openapi={_internal:{extendedFrom:!((b=(h=this._def.openapi)===null||h===void 0?void 0:h._internal)===null||b===void 0)&&b.refId?{refId:(v=(y=this._def.openapi)===null||y===void 0?void 0:y._internal)===null||v===void 0?void 0:v.refId,schema:this}:(_=this._def.openapi)===null||_===void 0?void 0:_._internal.extendedFrom},metadata:{}},P}}return u};let e=r.ZodSchema.prototype.optional;r.ZodSchema.prototype.optional=function(...o){let c=e.apply(this,o);return c._def.openapi=this._def.openapi,c};let t=r.ZodSchema.prototype.nullable;r.ZodSchema.prototype.nullable=function(...o){let c=t.apply(this,o);return c._def.openapi=this._def.openapi,c};let s=r.ZodSchema.prototype.default;r.ZodSchema.prototype.default=function(...o){let c=s.apply(this,o);return c._def.openapi=this._def.openapi,c};let n=r.ZodSchema.prototype.describe;r.ZodSchema.prototype.describe=function(...o){let[c]=o;return n.apply(this,o).openapi({description:c})};let i=r.ZodObject.prototype.pick;r.ZodObject.prototype.pick=function(...o){let c=i.apply(this,o);return c._def.openapi=void 0,c};let a=r.ZodObject.prototype.omit;r.ZodObject.prototype.omit=function(...o){let c=a.apply(this,o);return c._def.openapi=void 0,c}}Us.extendZodWithOpenApi=Qf});var Qo=g(pr=>{"use strict";Object.defineProperty(pr,"__esModule",{value:!0});pr.ObjectSet=pr.isEqual=void 0;function Bs(r,e){if(r==null||e===null||e===void 0)return r===e;if(r===e||r.valueOf()===e.valueOf())return!0;if(Array.isArray(r)&&(!Array.isArray(e)||r.length!==e.length)||!(r instanceof Object)||!(e instanceof Object))return!1;let t=Object.keys(r);return Object.keys(e).every(s=>t.indexOf(s)!==-1)&&t.every(s=>Bs(r[s],e[s]))}pr.isEqual=Bs;var Oi=class{constructor(){this.buckets=new Map}put(e){let t=this.hashCodeOf(e),s=this.buckets.get(t);if(!s){this.buckets.set(t,[e]);return}s.some(i=>Bs(i,e))||s.push(e)}contains(e){let t=this.hashCodeOf(e),s=this.buckets.get(t);return s?s.some(n=>Bs(n,e)):!1}values(){return[...this.buckets.values()].flat()}stats(){let e=0,t=0,s=0;for(let i of this.buckets.values())e+=1,t+=i.length,i.length>1&&(s+=1);let n=e/t;return{totalBuckets:e,collisions:s,totalValues:t,hashEffectiveness:n}}hashCodeOf(e){let t=0;if(Array.isArray(e)){for(let s=0;s{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});ie.uniq=ie.objectEquals=ie.compact=ie.omitBy=ie.omit=ie.mapValues=ie.isNil=ie.isUndefined=void 0;var Xo=Qo();function Xf(r){return r===void 0}ie.isUndefined=Xf;function ec(r){return r==null}ie.isNil=ec;function ep(r,e){let t={};return Object.entries(r).forEach(([s,n])=>{t[s]=e(n)}),t}ie.mapValues=ep;function tp(r,e){let t={};return Object.entries(r).forEach(([s,n])=>{e.some(i=>i===s)||(t[s]=n)}),t}ie.omit=tp;function rp(r,e){let t={};return Object.entries(r).forEach(([s,n])=>{e(n,s)||(t[s]=n)}),t}ie.omitBy=rp;function sp(r){return r.filter(e=>!ec(e))}ie.compact=sp;ie.objectEquals=Xo.isEqual;function np(r){let e=new Xo.ObjectSet;return r.forEach(t=>e.put(t)),[...e.values()]}ie.uniq=np});var rc=g(Fs=>{"use strict";Object.defineProperty(Fs,"__esModule",{value:!0});Fs.getOpenApiMetadata=void 0;var tc=Ii();function ip(r){var e,t;return(0,tc.omitBy)((t=(e=r._def.openapi)===null||e===void 0?void 0:e.metadata)!==null&&t!==void 0?t:{},tc.isNil)}Fs.getOpenApiMetadata=ip});var sc=g(Ze=>{"use strict";Object.defineProperty(Ze,"__esModule",{value:!0});Ze.UnknownZodTypeError=Ze.MissingParameterDataError=Ze.ConflictError=Ze.ZodToOpenAPIError=void 0;var hr=class{constructor(e){this.message=e}};Ze.ZodToOpenAPIError=hr;var Pi=class extends hr{constructor(e,t){super(e),this.data=t}};Ze.ConflictError=Pi;var Ti=class extends hr{constructor(e){super(`Missing parameter data, please specify \`${e.missingField}\` and other OpenAPI parameter props using the \`param\` field of \`ZodSchema.openapi\``),this.data=e}};Ze.MissingParameterDataError=Ti;var $i=class extends hr{constructor(e){super("Unknown zod object type, please specify `type` and other OpenAPI props using `ZodSchema.openapi`."),this.data=e}};Ze.UnknownZodTypeError=$i});var nc=g(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.enumInfo=void 0;function ap(r){let t=Object.keys(r).filter(i=>typeof r[r[i]]!="number").map(i=>r[i]),s=t.filter(i=>typeof i=="number").length,n=s===0?"string":s===t.length?"numeric":"mixed";return{values:t,type:n}}Ks.enumInfo=ap});var ac=g(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.OpenAPIGenerator=void 0;var Q=Ii(),et=sc(),Z=xi(),op=nc(),ic=["3.0.0","3.0.1","3.0.2","3.0.3","3.1.0"],ki=class{constructor(e,t){this.definitions=e,this.openAPIVersion=t,this.schemaRefs={},this.paramRefs={},this.pathRefs={},this.webhookRefs={},this.rawComponents=[],this.openApiVersionSatisfies=(s,n)=>ic.indexOf(s)>=ic.indexOf(n),this.sortDefinitions()}generateDocument(e){return this.definitions.forEach(t=>this.generateSingle(t)),{...e,openapi:this.openAPIVersion,components:this.buildComponents(),paths:this.pathRefs,...Object.keys(this.webhookRefs).length&&{webhooks:this.webhookRefs}}}generateComponents(){return this.definitions.forEach(e=>this.generateSingle(e)),{components:this.buildComponents()}}buildComponents(){var e,t;let s={};return this.rawComponents.forEach(({componentType:n,name:i,component:a})=>{var o;(o=s[n])!==null&&o!==void 0||(s[n]={}),s[n][i]=a}),{...s,schemas:{...(e=s.schemas)!==null&&e!==void 0?e:{},...this.schemaRefs},parameters:{...(t=s.parameters)!==null&&t!==void 0?t:{},...this.paramRefs}}}sortDefinitions(){let e=["schema","parameter","component","route","webhook"];this.definitions.sort((t,s)=>{let n=e.findIndex(a=>a===t.type),i=e.findIndex(a=>a===s.type);return n-i})}generateSingle(e){switch(e.type){case"parameter":this.generateParameterDefinition(e.schema);return;case"schema":this.generateSchemaDefinition(e.schema);return;case"route":this.generateSingleRoute(e.route);return;case"webhook":this.generateSingleWebhook(e.webhook);return;case"component":this.rawComponents.push(e);return}}generateParameterDefinition(e){let t=this.getInternalMetadata(e),s=this.generateParameter(e);return t?.refId&&(this.paramRefs[t.refId]=s),s}getParameterRef(e,t){var s,n,i,a,o;let c=(s=e?.metadata)===null||s===void 0?void 0:s.param,l=!((n=e?._internal)===null||n===void 0)&&n.refId?this.paramRefs[(i=e._internal)===null||i===void 0?void 0:i.refId]:void 0;if(!(!(!((a=e?._internal)===null||a===void 0)&&a.refId)||!l)){if(c&&l.in!==c.in||t?.in&&l.in!==t.in)throw new et.ConflictError(`Conflicting location for parameter ${l.name}`,{key:"in",values:(0,Q.compact)([l.in,t?.in,c?.in])});if(c&&l.name!==c.name||t?.name&&l.name!==t?.name)throw new et.ConflictError("Conflicting names for parameter",{key:"name",values:(0,Q.compact)([l.name,t?.name,c?.name])});return{$ref:`#/components/parameters/${(o=e._internal)===null||o===void 0?void 0:o.refId}`}}}generateInlineParameters(e,t){var s;let n=this.getMetadata(e),i=(s=n?.metadata)===null||s===void 0?void 0:s.param,a=this.getParameterRef(n,{in:t});if(a)return[a];if((0,Z.isZodType)(e,"ZodObject")){let o=e._def.shape();return Object.entries(o).map(([l,u])=>{var d,p;let h=this.getMetadata(u),b=this.getParameterRef(h,{in:t,name:l});if(b)return b;let y=(d=h?.metadata)===null||d===void 0?void 0:d.param;if(y?.name&&y.name!==l)throw new et.ConflictError("Conflicting names for parameter",{key:"name",values:[l,y.name]});if(y?.in&&y.in!==t)throw new et.ConflictError(`Conflicting location for parameter ${(p=y.name)!==null&&p!==void 0?p:l}`,{key:"in",values:[t,y.in]});return this.generateParameter(u.openapi({param:{name:l,in:t}}))})}if(i?.in&&i.in!==t)throw new et.ConflictError(`Conflicting location for parameter ${i.name}`,{key:"in",values:[t,i.in]});return[this.generateParameter(e.openapi({param:{in:t}}))]}generateParameter(e){var t;let s=this.getMetadata(e),n=(t=s?.metadata)===null||t===void 0?void 0:t.param,i=n?.name,a=n?.in;if(!i)throw new et.MissingParameterDataError({missingField:"name"});if(!a)throw new et.MissingParameterDataError({missingField:"in",paramName:i});let o=!this.isOptionalSchema(e)&&!e.isNullable(),c=this.generateSimpleSchema(e);return{in:a,name:i,schema:c,required:o,...n?this.buildParameterMetadata(n):{}}}generateSimpleSchema(e){var t,s,n;let i=this.unwrapChained(e),a=(t=e._def.openapi)!==null&&t!==void 0?t:i._def.openapi,o=this.getDefaultValue(e),c=(s=a?._internal)===null||s===void 0?void 0:s.refId;if(c&&this.schemaRefs[c]){let d=this.schemaRefs[c],p={$ref:this.generateSchemaRef(c)},h=(0,Q.omitBy)(this.buildSchemaMetadata((n=a?.metadata)!==null&&n!==void 0?n:{}),(v,_)=>v===void 0||(0,Q.objectEquals)(v,d[_])),b=h.type?{}:(0,Q.omitBy)(this.constructReferencedOpenAPISchema(e,i,o),(v,_)=>v===void 0||(0,Q.objectEquals)(v,d[_])),y=this.applySchemaMetadata(b,h);return Object.keys(y).length>0?{allOf:[p,y]}:p}let u=(()=>{var d;return a?.metadata!==void 0&&a.metadata.oneOf!==void 0?a.metadata:!((d=a?.metadata)===null||d===void 0)&&d.type?{type:a?.metadata.type}:this.toOpenAPISchema(i,e.isNullable(),o)})();return a?.metadata?this.applySchemaMetadata(u,a.metadata):(0,Q.omitBy)(u,Q.isNil)}generateInnerSchema(e,t){let s=this.generateSimpleSchema(e);return"$ref"in s&&s.$ref?s:t?this.applySchemaMetadata(s,t):s}generateSchemaDefinition(e){var t;let s=this.getMetadata(e),n=(t=s?._internal)===null||t===void 0?void 0:t.refId,i=this.generateSimpleSchema(e),a=s?.metadata?this.applySchemaMetadata(i,s.metadata):i;return n&&(this.schemaRefs[n]=a),a}generateSchemaRef(e){return`#/components/schemas/${e}`}getRequestBody(e){if(!e)return;let{content:t,...s}=e,n=this.getBodyContent(t);return{...s,content:n}}getParameters(e){if(!e)return[];let t=e.query?this.generateInlineParameters(e.query,"query"):[],s=e.params?this.generateInlineParameters(e.params,"path"):[],{headers:n}=e,i=n?(0,Z.isZodType)(n,"ZodObject")?this.generateInlineParameters(n,"header"):n.flatMap(a=>this.generateInlineParameters(a,"header")):[];return[...s,...t,...i]}generatePath(e){let{method:t,path:s,request:n,responses:i,...a}=e,o=(0,Q.mapValues)(i,d=>this.getResponse(d)),c=this.getParameters(n),l=this.getRequestBody(n?.body);return{[t]:{...a,...c.length>0?{parameters:c}:{},...l?{requestBody:l}:{},responses:o}}}generateSingleRoute(e){let t=this.generatePath(e);return this.pathRefs[e.path]={...this.pathRefs[e.path],...t},t}generateSingleWebhook(e){let t=this.generatePath(e);return this.webhookRefs[e.path]={...this.webhookRefs[e.path],...t},t}getResponse({content:e,...t}){let s=e?{content:this.getBodyContent(e)}:{};return{...t,...s}}getBodyContent(e){return(0,Q.mapValues)(e,t=>{if(!(0,Z.isAnyZodType)(t.schema))return t;let{schema:s,...n}=t;return{schema:this.generateInnerSchema(s),...n}})}getZodStringCheck(e,t){return e._def.checks.find(s=>s.kind===t)}mapStringFormat(e){if(e.isUUID)return"uuid";if(e.isEmail)return"email";if(e.isURL)return"uri";if(e.isDatetime)return"date-time"}mapDiscriminator(e,t){if(e.some(n=>{var i,a;return((a=(i=n._def.openapi)===null||i===void 0?void 0:i._internal)===null||a===void 0?void 0:a.refId)===void 0}))return;let s={};return e.forEach(n=>{var i,a,o;let c=(a=(i=n._def.openapi)===null||i===void 0?void 0:i._internal)===null||a===void 0?void 0:a.refId,l=(o=n.shape)===null||o===void 0?void 0:o[t];if((0,Z.isZodType)(l,"ZodEnum")){l._def.values.forEach(d=>{s[d]=this.generateSchemaRef(c)});return}let u=l?._def.value;if(typeof u!="string")throw new Error(`Discriminator ${t} could not be found in one of the values of a discriminated union`);s[u]=this.generateSchemaRef(c)}),{propertyName:t,mapping:s}}mapNullableOfArray(e,t){return t?this.openApiVersionSatisfies(this.openAPIVersion,"3.1.0")?[...e,{type:"null"}]:[...e,{nullable:!0}]:e}mapNullableType(e,t){return t&&this.openApiVersionSatisfies(this.openAPIVersion,"3.1.0")?{type:Array.isArray(e)?[...e,"null"]:[e,"null"]}:{type:e,nullable:t?!0:void 0}}getNumberChecks(e){return Object.assign({},...e.map(t=>{switch(t.kind){case"min":return t.inclusive?{minimum:t.value}:this.openApiVersionSatisfies(this.openAPIVersion,"3.1.0")?{exclusiveMinimum:t.value}:{minimum:t.value,exclusiveMinimum:!0};case"max":return t.inclusive?{maximum:t.value}:this.openApiVersionSatisfies(this.openAPIVersion,"3.1.0")?{exclusiveMaximum:t.value}:{maximum:t.value,exclusiveMaximum:!0};default:return{}}}))}constructReferencedOpenAPISchema(e,t,s){var n,i;let a=e.isNullable(),o=(n=e._def.openapi)!==null&&n!==void 0?n:t._def.openapi;return!((i=o?.metadata)===null||i===void 0)&&i.type?this.mapNullableType(o.metadata.type,a):this.toOpenAPISchema(t,a,s)}toOpenAPISchema(e,t,s){var n,i,a,o,c,l,u;if((0,Z.isZodType)(e,"ZodNull"))return{type:"null"};if((0,Z.isZodType)(e,"ZodString")){let p=this.getZodStringCheck(e,"regex"),h=(n=this.getZodStringCheck(e,"length"))===null||n===void 0?void 0:n.value,b=Number.isFinite(e.minLength)&&(i=e.minLength)!==null&&i!==void 0?i:void 0,y=Number.isFinite(e.maxLength)&&(a=e.maxLength)!==null&&a!==void 0?a:void 0;return{...this.mapNullableType("string",t),minLength:h??b,maxLength:h??y,format:this.mapStringFormat(e),pattern:p?.regex.source,default:s}}if((0,Z.isZodType)(e,"ZodNumber"))return{...this.mapNullableType(e.isInt?"integer":"number",t),...this.getNumberChecks(e._def.checks),default:s};if((0,Z.isZodType)(e,"ZodBoolean"))return{...this.mapNullableType("boolean",t),default:s};if((0,Z.isZodType)(e,"ZodEffects")&&(e._def.effect.type==="refinement"||e._def.effect.type==="preprocess")){let p=e._def.schema;return this.generateInnerSchema(p)}if((0,Z.isZodType)(e,"ZodLiteral"))return{...this.mapNullableType(typeof e._def.value,t),enum:[e._def.value],default:s};if((0,Z.isZodType)(e,"ZodEnum"))return{...this.mapNullableType("string",t),enum:e._def.values,default:s};if((0,Z.isZodType)(e,"ZodNativeEnum")){let{type:p,values:h}=(0,op.enumInfo)(e._def.values);if(p==="mixed")throw new et.ZodToOpenAPIError("Enum has mixed string and number values, please specify the OpenAPI type manually");return{...this.mapNullableType(p==="numeric"?"integer":"string",t),enum:h,default:s}}if((0,Z.isZodType)(e,"ZodObject"))return this.toOpenAPIObjectSchema(e,t,s);if((0,Z.isZodType)(e,"ZodArray")){let p=e._def.type;return{...this.mapNullableType("array",t),items:this.generateInnerSchema(p),minItems:(o=e._def.minLength)===null||o===void 0?void 0:o.value,maxItems:(c=e._def.maxLength)===null||c===void 0?void 0:c.value,default:s}}if((0,Z.isZodType)(e,"ZodTuple")){let{items:p}=e._def,h=p.length,b=p.map(v=>this.generateInnerSchema(v)),y=(0,Q.uniq)(b);return y.length===1?{type:"array",items:y[0],minItems:h,maxItems:h}:{...this.mapNullableType("array",t),items:{anyOf:y},minItems:h,maxItems:h}}if((0,Z.isZodType)(e,"ZodUnion")){let p=this.flattenUnionTypes(e);return{anyOf:this.mapNullableOfArray(p.map(h=>this.generateInnerSchema(h)),t),default:s}}if((0,Z.isZodType)(e,"ZodDiscriminatedUnion")){let p=[...e.options.values()],h=p.map(b=>this.generateInnerSchema(b));return t?{oneOf:this.mapNullableOfArray(h,t),default:s}:{oneOf:h,discriminator:this.mapDiscriminator(p,e.discriminator),default:s}}if((0,Z.isZodType)(e,"ZodIntersection")){let h={allOf:this.flattenIntersectionTypes(e).map(b=>this.generateInnerSchema(b))};return t?{anyOf:this.mapNullableOfArray([h],t),default:s}:{...h,default:s}}if((0,Z.isZodType)(e,"ZodRecord")){let p=e._def.valueType;return{...this.mapNullableType("object",t),additionalProperties:this.generateInnerSchema(p),default:s}}if((0,Z.isZodType)(e,"ZodUnknown"))return{};if((0,Z.isZodType)(e,"ZodDate"))return{...this.mapNullableType("string",t),default:s};let d=(u=(l=this.getMetadata(e))===null||l===void 0?void 0:l._internal)===null||u===void 0?void 0:u.refId;throw new et.UnknownZodTypeError({currentSchema:e._def,schemaName:d})}isOptionalSchema(e){return(0,Z.isZodType)(e,"ZodEffects")?this.isOptionalSchema(e._def.schema):(0,Z.isZodType)(e,"ZodDefault")?this.isOptionalSchema(e._def.innerType):e.isOptional()}getDefaultValue(e){if((0,Z.isZodType)(e,"ZodOptional")||(0,Z.isZodType)(e,"ZodNullable"))return this.getDefaultValue(e.unwrap());if((0,Z.isZodType)(e,"ZodEffects"))return this.getDefaultValue(e._def.schema);if((0,Z.isZodType)(e,"ZodDefault"))return e._def.defaultValue()}requiredKeysOf(e){return Object.entries(e._def.shape()).filter(([t,s])=>!this.isOptionalSchema(s)).map(([t,s])=>t)}toOpenAPIObjectSchema(e,t,s){var n,i;let a=(i=(n=e._def.openapi)===null||n===void 0?void 0:n._internal)===null||i===void 0?void 0:i.extendedFrom,o=a?.schema._def.shape(),c=e._def.shape(),l=a?this.requiredKeysOf(a.schema):[],u=this.requiredKeysOf(e),d=o?(0,Q.mapValues)(o,_=>this.generateInnerSchema(_)):{},p=(0,Q.mapValues)(c,_=>this.generateInnerSchema(_)),h=Object.fromEntries(Object.entries(p).filter(([_,P])=>!(0,Q.objectEquals)(d[_],P))),b=u.filter(_=>!l.includes(_)),y=e._def.unknownKeys,v={...this.mapNullableType("object",t),default:s,properties:h,...b.length>0?{required:b}:{},...y==="strict"?{additionalProperties:!1}:{}};return a?{allOf:[{$ref:`#/components/schemas/${a.refId}`},v]}:v}flattenUnionTypes(e){return(0,Z.isZodType)(e,"ZodUnion")?e._def.options.flatMap(s=>this.flattenUnionTypes(s)):[e]}flattenIntersectionTypes(e){if(!(0,Z.isZodType)(e,"ZodIntersection"))return[e];let t=this.flattenIntersectionTypes(e._def.left),s=this.flattenIntersectionTypes(e._def.right);return[...t,...s]}unwrapChained(e){return(0,Z.isZodType)(e,"ZodOptional")||(0,Z.isZodType)(e,"ZodNullable")||(0,Z.isZodType)(e,"ZodBranded")?this.unwrapChained(e.unwrap()):(0,Z.isZodType)(e,"ZodDefault")?this.unwrapChained(e._def.innerType):(0,Z.isZodType)(e,"ZodEffects")&&e._def.effect.type==="refinement"?this.unwrapChained(e._def.schema):e}buildSchemaMetadata(e){return(0,Q.omitBy)((0,Q.omit)(e,["param"]),Q.isNil)}buildParameterMetadata(e){return(0,Q.omitBy)(e,Q.isNil)}getMetadata(e){let t=this.unwrapChained(e);return e._def.openapi?e._def.openapi:t._def.openapi}getInternalMetadata(e){let t=this.unwrapChained(e),s=e._def.openapi?e._def.openapi:t._def.openapi;return s?._internal}applySchemaMetadata(e,t){return(0,Q.omitBy)({...e,...this.buildSchemaMetadata(t)},Q.isNil)}};Ws.OpenAPIGenerator=ki});var oc=g(Js=>{"use strict";Object.defineProperty(Js,"__esModule",{value:!0});Js.OpenAPIRegistry=void 0;var Ai=class{constructor(e){this.parents=e,this._definitions=[]}get definitions(){var e,t;return[...(t=(e=this.parents)===null||e===void 0?void 0:e.flatMap(n=>n.definitions))!==null&&t!==void 0?t:[],...this._definitions]}register(e,t){let s=this.schemaWithRefId(e,t);return this._definitions.push({type:"schema",schema:s}),s}registerParameter(e,t){var s,n,i;let a=this.schemaWithRefId(e,t),o=(s=a._def.openapi)===null||s===void 0?void 0:s.metadata,c=a.openapi({...o,param:{...o?.param,name:(i=(n=o?.param)===null||n===void 0?void 0:n.name)!==null&&i!==void 0?i:e}});return this._definitions.push({type:"parameter",schema:c}),c}registerPath(e){this._definitions.push({type:"route",route:e})}registerWebhook(e){this._definitions.push({type:"webhook",webhook:e})}registerComponent(e,t,s){return this._definitions.push({type:"component",componentType:e,name:t,component:s}),{name:t,ref:{$ref:`#/components/${e}/${t}`}}}schemaWithRefId(e,t){return t.internal_openapi({refId:e})}};Js.OpenAPIRegistry=Ai});var Ee,Ei=kt(()=>{Ee=class{static isValidExtension(e){return/^x-/.test(e)}getExtension(e){if(!Ee.isValidExtension(e))throw new Error(`Invalid specification extension: '${e}'. Extensions must start with prefix 'x-`);return this[e]?this[e]:null}addExtension(e,t){if(!Ee.isValidExtension(e))throw new Error(`Invalid specification extension: '${e}'. Extensions must start with prefix 'x-`);this[e]=t}listExtensions(){let e=[];for(let t in this)Object.prototype.hasOwnProperty.call(this,t)&&Ee.isValidExtension(t)&&e.push(t);return e}}});function cp(r,e){if(Ee.isValidExtension(e))return r[e]}function lp(r,e,t){Ee.isValidExtension(e)&&(r[e]=t)}function up(r,e){if(!Ee.isValidExtension(e))return r[e]}function dp(r){return Object.prototype.hasOwnProperty.call(r,"$ref")}function fp(r){return!Object.prototype.hasOwnProperty.call(r,"$ref")}var cc=kt(()=>{Ei()});var Ni,ji,lc=kt(()=>{Ni=class{constructor(e,t){this.url=e,this.description=t,this.variables={}}addVariable(e,t){this.variables[e]=t}},ji=class{constructor(e,t,s){this.default=e,this.enum=t,this.description=s}}});var uc=kt(()=>{Ei();cc();lc()});var K=g(ae=>{"use strict";var qi=Symbol.for("yaml.alias"),dc=Symbol.for("yaml.document"),Ys=Symbol.for("yaml.map"),fc=Symbol.for("yaml.pair"),Ri=Symbol.for("yaml.scalar"),Hs=Symbol.for("yaml.seq"),Ve=Symbol.for("yaml.node.type"),pp=r=>!!r&&typeof r=="object"&&r[Ve]===qi,hp=r=>!!r&&typeof r=="object"&&r[Ve]===dc,mp=r=>!!r&&typeof r=="object"&&r[Ve]===Ys,yp=r=>!!r&&typeof r=="object"&&r[Ve]===fc,pc=r=>!!r&&typeof r=="object"&&r[Ve]===Ri,gp=r=>!!r&&typeof r=="object"&&r[Ve]===Hs;function hc(r){if(r&&typeof r=="object")switch(r[Ve]){case Ys:case Hs:return!0}return!1}function vp(r){if(r&&typeof r=="object")switch(r[Ve]){case qi:case Ys:case Ri:case Hs:return!0}return!1}var bp=r=>(pc(r)||hc(r))&&!!r.anchor,Ci=class{constructor(e){Object.defineProperty(this,Ve,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}};ae.ALIAS=qi;ae.DOC=dc;ae.MAP=Ys;ae.NODE_TYPE=Ve;ae.NodeBase=Ci;ae.PAIR=fc;ae.SCALAR=Ri;ae.SEQ=Hs;ae.hasAnchor=bp;ae.isAlias=pp;ae.isCollection=hc;ae.isDocument=hp;ae.isMap=mp;ae.isNode=vp;ae.isPair=yp;ae.isScalar=pc;ae.isSeq=gp});var Gr=g(Mi=>{"use strict";var re=K(),de=Symbol("break visit"),mc=Symbol("skip children"),Ue=Symbol("remove node");function zs(r,e){let t=yc(e);re.isDocument(r)?mr(null,r.contents,t,Object.freeze([r]))===Ue&&(r.contents=null):mr(null,r,t,Object.freeze([]))}zs.BREAK=de;zs.SKIP=mc;zs.REMOVE=Ue;function mr(r,e,t,s){let n=gc(r,e,t,s);if(re.isNode(n)||re.isPair(n))return vc(r,s,n),mr(r,n,t,s);if(typeof n!="symbol"){if(re.isCollection(e)){s=Object.freeze(s.concat(e));for(let i=0;i{"use strict";var bc=K(),_p=Gr(),wp={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},Sp=r=>r.replace(/[!,[\]{}]/g,e=>wp[e]),fe=class{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},fe.defaultYaml,e),this.tags=Object.assign({},fe.defaultTags,t)}clone(){let e=new fe(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new fe(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:fe.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},fe.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:fe.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},fe.defaultTags),this.atNextDocument=!1);let s=e.trim().split(/[ \t]+/),n=s.shift();switch(n){case"%TAG":{if(s.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),s.length<2))return!1;let[i,a]=s;return this.tags[i]=a,!0}case"%YAML":{if(this.yaml.explicit=!0,s.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[i]=s;if(i==="1.1"||i==="1.2")return this.yaml.version=i,!0;{let a=/^\d+\.\d+$/.test(i);return t(6,`Unsupported YAML version ${i}`,a),!1}}default:return t(0,`Unknown directive ${n}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let a=e.slice(2,-1);return a==="!"||a==="!!"?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),a)}let[,s,n]=e.match(/^(.*!)([^!]*)$/);n||t(`The ${e} tag has no suffix`);let i=this.tags[s];return i?i+decodeURIComponent(n):s==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,s]of Object.entries(this.tags))if(e.startsWith(s))return t+Sp(e.substring(s.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],s=Object.entries(this.tags),n;if(e&&s.length>0&&bc.isNode(e.contents)){let i={};_p.visit(e.contents,(a,o)=>{bc.isNode(o)&&o.tag&&(i[o.tag]=!0)}),n=Object.keys(i)}else n=[];for(let[i,a]of s)i==="!!"&&a==="tag:yaml.org,2002:"||(!e||n.some(o=>o.startsWith(a)))&&t.push(`%TAG ${i} ${a}`);return t.join(` +`)}};fe.defaultYaml={explicit:!1,version:"1.2"};fe.defaultTags={"!!":"tag:yaml.org,2002:"};_c.Directives=fe});var Qs=g(Qr=>{"use strict";var wc=K(),xp=Gr();function Op(r){if(/[\x00-\x19\s,[\]{}]/.test(r)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(r)}`;throw new Error(t)}return!0}function Sc(r){let e=new Set;return xp.visit(r,{Value(t,s){s.anchor&&e.add(s.anchor)}}),e}function xc(r,e){for(let t=1;;++t){let s=`${r}${t}`;if(!e.has(s))return s}}function Ip(r,e){let t=[],s=new Map,n=null;return{onAnchor:i=>{t.push(i),n||(n=Sc(r));let a=xc(e,n);return n.add(a),a},setAnchors:()=>{for(let i of t){let a=s.get(i);if(typeof a=="object"&&a.anchor&&(wc.isScalar(a.node)||wc.isCollection(a.node)))a.node.anchor=a.anchor;else{let o=new Error("Failed to resolve repeated object (this should not happen)");throw o.source=i,o}}},sourceObjects:s}}Qr.anchorIsValid=Op;Qr.anchorNames=Sc;Qr.createNodeAnchors=Ip;Qr.findNewAnchor=xc});var es=g(Ic=>{"use strict";var Pp=Qs(),Oc=Gr(),Xr=K(),Di=class extends Xr.NodeBase{constructor(e){super(Xr.ALIAS),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return Oc.visit(e,{Node:(s,n)=>{if(n===this)return Oc.visit.BREAK;n.anchor===this.source&&(t=n)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:s,doc:n,maxAliasCount:i}=t,a=this.resolve(n);if(!a){let c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let o=s.get(a);if(!o||o.res===void 0){let c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=Xs(n,a,s)),o.count*o.aliasCount>i)){let c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return o.res}toString(e,t,s){let n=`*${this.source}`;if(e){if(Pp.anchorIsValid(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${n} `}return n}};function Xs(r,e,t){if(Xr.isAlias(e)){let s=e.resolve(r),n=t&&s&&t.get(s);return n?n.count*n.aliasCount:0}else if(Xr.isCollection(e)){let s=0;for(let n of e.items){let i=Xs(r,n,t);i>s&&(s=i)}return s}else if(Xr.isPair(e)){let s=Xs(r,e.key,t),n=Xs(r,e.value,t);return Math.max(s,n)}return 1}Ic.Alias=Di});var gr=g(Tc=>{"use strict";var Tp=K();function Pc(r,e,t){if(Array.isArray(r))return r.map((s,n)=>Pc(s,String(n),t));if(r&&typeof r.toJSON=="function"){if(!t||!Tp.hasAnchor(r))return r.toJSON(e,t);let s={aliasCount:0,count:1,res:void 0};t.anchors.set(r,s),t.onCreate=i=>{s.res=i,delete t.onCreate};let n=r.toJSON(e,t);return t.onCreate&&t.onCreate(n),n}return typeof r=="bigint"&&!t?.keep?Number(r):r}Tc.toJS=Pc});var ee=g(Zi=>{"use strict";var $c=K(),$p=gr(),kp=r=>!r||typeof r!="function"&&typeof r!="object",pt=class extends $c.NodeBase{constructor(e){super($c.SCALAR),this.value=e}toJSON(e,t){return t?.keep?this.value:$p.toJS(this.value,e,t)}toString(){return String(this.value)}};pt.BLOCK_FOLDED="BLOCK_FOLDED";pt.BLOCK_LITERAL="BLOCK_LITERAL";pt.PLAIN="PLAIN";pt.QUOTE_DOUBLE="QUOTE_DOUBLE";pt.QUOTE_SINGLE="QUOTE_SINGLE";Zi.Scalar=pt;Zi.isScalarValue=kp});var ts=g(Ac=>{"use strict";var Ap=es(),Et=K(),kc=ee(),Ep="tag:yaml.org,2002:";function Np(r,e,t){if(e){let s=t.filter(i=>i.tag===e),n=s.find(i=>!i.format)??s[0];if(!n)throw new Error(`Tag ${e} not found`);return n}return t.find(s=>s.identify?.(r)&&!s.format)}function jp(r,e,t){if(Et.isDocument(r)&&(r=r.contents),Et.isNode(r))return r;if(Et.isPair(r)){let d=t.schema[Et.MAP].createNode?.(t.schema,null,t);return d.items.push(r),d}(r instanceof String||r instanceof Number||r instanceof Boolean||typeof BigInt<"u"&&r instanceof BigInt)&&(r=r.valueOf());let{aliasDuplicateObjects:s,onAnchor:n,onTagObj:i,schema:a,sourceObjects:o}=t,c;if(s&&r&&typeof r=="object"){if(c=o.get(r),c)return c.anchor||(c.anchor=n(r)),new Ap.Alias(c.anchor);c={anchor:null,node:null},o.set(r,c)}e?.startsWith("!!")&&(e=Ep+e.slice(2));let l=Np(r,e,a.tags);if(!l){if(r&&typeof r.toJSON=="function"&&(r=r.toJSON()),!r||typeof r!="object"){let d=new kc.Scalar(r);return c&&(c.node=d),d}l=r instanceof Map?a[Et.MAP]:Symbol.iterator in Object(r)?a[Et.SEQ]:a[Et.MAP]}i&&(i(l),delete t.onTagObj);let u=l?.createNode?l.createNode(t.schema,r,t):new kc.Scalar(r);return e&&(u.tag=e),c&&(c.node=u),u}Ac.createNode=jp});var rs=g(tn=>{"use strict";var Cp=ts(),Ne=K();function Vi(r,e,t){let s=t;for(let n=e.length-1;n>=0;--n){let i=e[n];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){let a=[];a[i]=s,s=a}else s=new Map([[i,s]])}return Cp.createNode(s,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:r,sourceObjects:new Map})}var Ec=r=>r==null||typeof r=="object"&&!!r[Symbol.iterator]().next().done,en=class extends Ne.NodeBase{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(s=>Ne.isNode(s)||Ne.isPair(s)?s.clone(e):s),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Ec(e))this.add(t);else{let[s,...n]=e,i=this.get(s,!0);if(Ne.isCollection(i))i.addIn(n,t);else if(i===void 0&&this.schema)this.set(s,Vi(this.schema,n,t));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${n}`)}}deleteIn(e){let[t,...s]=e;if(s.length===0)return this.delete(t);let n=this.get(t,!0);if(Ne.isCollection(n))return n.deleteIn(s);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${s}`)}getIn(e,t){let[s,...n]=e,i=this.get(s,!0);return n.length===0?!t&&Ne.isScalar(i)?i.value:i:Ne.isCollection(i)?i.getIn(n,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!Ne.isPair(t))return!1;let s=t.value;return s==null||e&&Ne.isScalar(s)&&s.value==null&&!s.commentBefore&&!s.comment&&!s.tag})}hasIn(e){let[t,...s]=e;if(s.length===0)return this.has(t);let n=this.get(t,!0);return Ne.isCollection(n)?n.hasIn(s):!1}setIn(e,t){let[s,...n]=e;if(n.length===0)this.set(s,t);else{let i=this.get(s,!0);if(Ne.isCollection(i))i.setIn(n,t);else if(i===void 0&&this.schema)this.set(s,Vi(this.schema,n,t));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${n}`)}}};en.maxFlowStringSingleLineLength=60;tn.Collection=en;tn.collectionFromPath=Vi;tn.isEmptyPath=Ec});var ss=g(rn=>{"use strict";var qp=r=>r.replace(/^(?!$)(?: $)?/gm,"#");function Ui(r,e){return/^\n+$/.test(r)?r.substring(1):e?r.replace(/^(?! *$)/gm,e):r}var Rp=(r,e,t)=>r.endsWith(` +`)?Ui(t,e):t.includes(` +`)?` +`+Ui(t,e):(r.endsWith(" ")?"":" ")+t;rn.indentComment=Ui;rn.lineComment=Rp;rn.stringifyComment=qp});var jc=g(ns=>{"use strict";var Mp="flow",Bi="block",sn="quoted";function Lp(r,e,t="flow",{indentAtStart:s,lineWidth:n=80,minContentWidth:i=20,onFold:a,onOverflow:o}={}){if(!n||n<0)return r;let c=Math.max(1+i,1+n-e.length);if(r.length<=c)return r;let l=[],u={},d=n-e.length;typeof s=="number"&&(s>n-Math.max(2,i)?l.push(0):d=n-s);let p,h,b=!1,y=-1,v=-1,_=-1;t===Bi&&(y=Nc(r,y),y!==-1&&(d=y+c));for(let k;k=r[y+=1];){if(t===sn&&k==="\\"){switch(v=y,r[y+1]){case"x":y+=3;break;case"u":y+=5;break;case"U":y+=9;break;default:y+=1}_=y}if(k===` +`)t===Bi&&(y=Nc(r,y)),d=y+c,p=void 0;else{if(k===" "&&h&&h!==" "&&h!==` +`&&h!==" "){let I=r[y+1];I&&I!==" "&&I!==` +`&&I!==" "&&(p=y)}if(y>=d)if(p)l.push(p),d=p+c,p=void 0;else if(t===sn){for(;h===" "||h===" ";)h=k,k=r[y+=1],b=!0;let I=y>_+1?y-2:v-1;if(u[I])return r;l.push(I),u[I]=!0,d=I+c,p=void 0}else b=!0}h=k}if(b&&o&&o(),l.length===0)return r;a&&a();let P=r.slice(0,l[0]);for(let k=0;k{"use strict";var Be=ee(),ht=jc(),an=r=>({indentAtStart:r.indentAtStart,lineWidth:r.options.lineWidth,minContentWidth:r.options.minContentWidth}),on=r=>/^(%|---|\.\.\.)/m.test(r);function Dp(r,e,t){if(!e||e<0)return!1;let s=e-t,n=r.length;if(n<=s)return!1;for(let i=0,a=0;is)return!0;if(a=i+1,n-a<=s)return!1}return!0}function is(r,e){let t=JSON.stringify(r);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:s}=e,n=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(on(r)?" ":""),a="",o=0;for(let c=0,l=t[c];l;l=t[++c])if(l===" "&&t[c+1]==="\\"&&t[c+2]==="n"&&(a+=t.slice(o,c)+"\\ ",c+=1,o=c,l="\\"),l==="\\")switch(t[c+1]){case"u":{a+=t.slice(o,c);let u=t.substr(c+2,4);switch(u){case"0000":a+="\\0";break;case"0007":a+="\\a";break;case"000b":a+="\\v";break;case"001b":a+="\\e";break;case"0085":a+="\\N";break;case"00a0":a+="\\_";break;case"2028":a+="\\L";break;case"2029":a+="\\P";break;default:u.substr(0,2)==="00"?a+="\\x"+u.substr(2):a+=t.substr(c,6)}c+=5,o=c+1}break;case"n":if(s||t[c+2]==='"'||t.length +`;let d,p;for(p=t.length;p>0;--p){let T=t[p-1];if(T!==` +`&&T!==" "&&T!==" ")break}let h=t.substring(p),b=h.indexOf(` +`);b===-1?d="-":t===h||b!==h.length-1?(d="+",i&&i()):d="",h&&(t=t.slice(0,-h.length),h[h.length-1]===` +`&&(h=h.slice(0,-1)),h=h.replace(/\n+(?!\n|$)/g,`$&${l}`));let y=!1,v,_=-1;for(v=0;v")+(y?l?"2":"1":"")+d;if(r&&(I+=" "+o(r.replace(/ ?[\r\n]+/g," ")),n&&n()),u)return t=t.replace(/\n+/g,`$&${l}`),`${I} +${l}${P}${t}${h}`;t=t.replace(/\n+/g,` +$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`);let F=ht.foldFlowLines(`${P}${t}${h}`,l,ht.FOLD_BLOCK,an(s));return`${I} +${l}${F}`}function Zp(r,e,t,s){let{type:n,value:i}=r,{actualString:a,implicitKey:o,indent:c,inFlow:l}=e;if(o&&/[\n[\]{},]/.test(i)||l&&/[[\]{},]/.test(i))return as(i,e);if(!i||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return o||l||!i.includes(` +`)?as(i,e):nn(r,e,t,s);if(!o&&!l&&n!==Be.Scalar.PLAIN&&i.includes(` +`))return nn(r,e,t,s);if(c===""&&on(i))return e.forceBlockIndent=!0,nn(r,e,t,s);let u=i.replace(/\n+/g,`$& +${c}`);if(a){let d=b=>b.default&&b.tag!=="tag:yaml.org,2002:str"&&b.test?.test(u),{compat:p,tags:h}=e.doc.schema;if(h.some(d)||p?.some(d))return as(i,e)}return o?u:ht.foldFlowLines(u,c,ht.FOLD_FLOW,an(e))}function Vp(r,e,t,s){let{implicitKey:n,inFlow:i}=e,a=typeof r.value=="string"?r:Object.assign({},r,{value:String(r.value)}),{type:o}=r;o!==Be.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(a.value)&&(o=Be.Scalar.QUOTE_DOUBLE);let c=u=>{switch(u){case Be.Scalar.BLOCK_FOLDED:case Be.Scalar.BLOCK_LITERAL:return n||i?as(a.value,e):nn(a,e,t,s);case Be.Scalar.QUOTE_DOUBLE:return is(a.value,e);case Be.Scalar.QUOTE_SINGLE:return Fi(a.value,e);case Be.Scalar.PLAIN:return Zp(a,e,t,s);default:return null}},l=c(o);if(l===null){let{defaultKeyType:u,defaultStringType:d}=e.options,p=n&&u||d;if(l=c(p),l===null)throw new Error(`Unsupported default string type ${p}`)}return l}Cc.stringifyString=Vp});var vr=g(Ki=>{"use strict";var Up=Qs(),mt=K(),Bp=ss(),Fp=os();function Kp(r,e){let t=Object.assign({blockQuote:!0,commentString:Bp.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},r.schema.toStringOptions,e),s;switch(t.collectionStyle){case"block":s=!1;break;case"flow":s=!0;break;default:s=null}return{anchors:new Set,doc:r,indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:s,options:t}}function Wp(r,e){if(e.tag){let n=r.filter(i=>i.tag===e.tag);if(n.length>0)return n.find(i=>i.format===e.format)??n[0]}let t,s;if(mt.isScalar(e)){s=e.value;let n=r.filter(i=>i.identify?.(s));t=n.find(i=>i.format===e.format)??n.find(i=>!i.format)}else s=e,t=r.find(n=>n.nodeClass&&s instanceof n.nodeClass);if(!t){let n=s?.constructor?.name??typeof s;throw new Error(`Tag not resolved for ${n} value`)}return t}function Jp(r,e,{anchors:t,doc:s}){if(!s.directives)return"";let n=[],i=(mt.isScalar(r)||mt.isCollection(r))&&r.anchor;i&&Up.anchorIsValid(i)&&(t.add(i),n.push(`&${i}`));let a=r.tag?r.tag:e.default?null:e.tag;return a&&n.push(s.directives.tagString(a)),n.join(" ")}function Yp(r,e,t,s){if(mt.isPair(r))return r.toString(e,t,s);if(mt.isAlias(r)){if(e.doc.directives)return r.toString(e);if(e.resolvedAliases?.has(r))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(r):e.resolvedAliases=new Set([r]),r=r.resolve(e.doc)}let n,i=mt.isNode(r)?r:e.doc.createNode(r,{onTagObj:c=>n=c});n||(n=Wp(e.doc.schema.tags,i));let a=Jp(i,n,e);a.length>0&&(e.indentAtStart=(e.indentAtStart??0)+a.length+1);let o=typeof n.stringify=="function"?n.stringify(i,e,t,s):mt.isScalar(i)?Fp.stringifyString(i,e,t,s):i.toString(e,t,s);return a?mt.isScalar(i)||o[0]==="{"||o[0]==="["?`${a} ${o}`:`${a} +${e.indent}${o}`:o}Ki.createStringifyContext=Kp;Ki.stringify=Yp});var Lc=g(Mc=>{"use strict";var yt=K(),qc=ee(),Rc=vr(),cs=ss();function Hp({key:r,value:e},t,s,n){let{allNullValues:i,doc:a,indent:o,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:d}}=t,p=yt.isNode(r)&&r.comment||null;if(d){if(p)throw new Error("With simple keys, key nodes cannot have comments");if(yt.isCollection(r)){let T="With simple keys, collection cannot be used as a key value";throw new Error(T)}}let h=!d&&(!r||p&&e==null&&!t.inFlow||yt.isCollection(r)||(yt.isScalar(r)?r.type===qc.Scalar.BLOCK_FOLDED||r.type===qc.Scalar.BLOCK_LITERAL:typeof r=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!h&&(d||!i),indent:o+c});let b=!1,y=!1,v=Rc.stringify(r,t,()=>b=!0,()=>y=!0);if(!h&&!t.inFlow&&v.length>1024){if(d)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");h=!0}if(t.inFlow){if(i||e==null)return b&&s&&s(),v===""?"?":h?`? ${v}`:v}else if(i&&!d||e==null&&h)return v=`? ${v}`,p&&!b?v+=cs.lineComment(v,t.indent,l(p)):y&&n&&n(),v;b&&(p=null),h?(p&&(v+=cs.lineComment(v,t.indent,l(p))),v=`? ${v} +${o}:`):(v=`${v}:`,p&&(v+=cs.lineComment(v,t.indent,l(p))));let _="",P=null;if(yt.isNode(e)){if(e.spaceBefore&&(_=` +`),e.commentBefore){let T=l(e.commentBefore);_+=` +${cs.indentComment(T,t.indent)}`}P=e.comment}else e&&typeof e=="object"&&(e=a.createNode(e));t.implicitKey=!1,!h&&!p&&yt.isScalar(e)&&(t.indentAtStart=v.length+1),y=!1,!u&&c.length>=2&&!t.inFlow&&!h&&yt.isSeq(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substr(2));let k=!1,I=Rc.stringify(e,t,()=>k=!0,()=>y=!0),F=" ";return _||p?I===""&&!t.inFlow?F=_===` +`?` + +`:_:F=`${_} +${t.indent}`:!h&&yt.isCollection(e)?(!(I[0]==="["||I[0]==="{")||I.includes(` +`))&&(F=` +${t.indent}`):(I===""||I[0]===` +`)&&(F=""),v+=F+I,t.inFlow?k&&s&&s():P&&!k?v+=cs.lineComment(v,t.indent,l(P)):y&&n&&n(),v}Mc.stringifyPair=Hp});var Ji=g(Wi=>{"use strict";function zp(r,...e){r==="debug"&&console.log(...e)}function Gp(r,e){(r==="debug"||r==="warn")&&(typeof process<"u"&&process.emitWarning?process.emitWarning(e):console.warn(e))}Wi.debug=zp;Wi.warn=Gp});var zi=g(Zc=>{"use strict";var Qp=Ji(),Xp=vr(),br=K(),eh=ee(),Yi=gr(),Dc="<<";function th(r,e,{key:t,value:s}){if(r?.doc.schema.merge&&rh(t))if(s=br.isAlias(s)?s.resolve(r.doc):s,br.isSeq(s))for(let n of s.items)Hi(r,e,n);else if(Array.isArray(s))for(let n of s)Hi(r,e,n);else Hi(r,e,s);else{let n=Yi.toJS(t,"",r);if(e instanceof Map)e.set(n,Yi.toJS(s,n,r));else if(e instanceof Set)e.add(n);else{let i=sh(t,n,r),a=Yi.toJS(s,i,r);i in e?Object.defineProperty(e,i,{value:a,writable:!0,enumerable:!0,configurable:!0}):e[i]=a}}return e}var rh=r=>r===Dc||br.isScalar(r)&&r.value===Dc&&(!r.type||r.type===eh.Scalar.PLAIN);function Hi(r,e,t){let s=r&&br.isAlias(t)?t.resolve(r.doc):t;if(!br.isMap(s))throw new Error("Merge sources must be maps or map aliases");let n=s.toJSON(null,r,Map);for(let[i,a]of n)e instanceof Map?e.has(i)||e.set(i,a):e instanceof Set?e.add(i):Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{value:a,writable:!0,enumerable:!0,configurable:!0});return e}function sh(r,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(br.isNode(r)&&t&&t.doc){let s=Xp.createStringifyContext(t.doc,{});s.anchors=new Set;for(let i of t.anchors.keys())s.anchors.add(i.anchor);s.inFlow=!0,s.inStringifyKey=!0;let n=r.toString(s);if(!t.mapKeyWarned){let i=JSON.stringify(n);i.length>40&&(i=i.substring(0,36)+'..."'),Qp.warn(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${i}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return n}return JSON.stringify(e)}Zc.addPairToJSMap=th});var tt=g(Gi=>{"use strict";var Vc=ts(),nh=Lc(),ih=zi(),cn=K();function ah(r,e,t){let s=Vc.createNode(r,void 0,t),n=Vc.createNode(e,void 0,t);return new _r(s,n)}var _r=class{constructor(e,t=null){Object.defineProperty(this,cn.NODE_TYPE,{value:cn.PAIR}),this.key=e,this.value=t}clone(e){let{key:t,value:s}=this;return cn.isNode(t)&&(t=t.clone(e)),cn.isNode(s)&&(s=s.clone(e)),new _r(t,s)}toJSON(e,t){let s=t?.mapAsMap?new Map:{};return ih.addPairToJSMap(t,s,this)}toString(e,t,s){return e?.doc?nh.stringifyPair(this,e,t,s):JSON.stringify(this)}};Gi.Pair=_r;Gi.createPair=ah});var Qi=g(Bc=>{"use strict";var oh=rs(),Nt=K(),Uc=vr(),ls=ss();function ch(r,e,t){return(e.inFlow??r.flow?uh:lh)(r,e,t)}function lh({comment:r,items:e},t,{blockItemPrefix:s,flowChars:n,itemIndent:i,onChompKeep:a,onComment:o}){let{indent:c,options:{commentString:l}}=t,u=Object.assign({},t,{indent:i,type:null}),d=!1,p=[];for(let b=0;bv=null,()=>d=!0);v&&(_+=ls.lineComment(_,i,l(v))),d&&v&&(d=!1),p.push(s+_)}let h;if(p.length===0)h=n.start+n.end;else{h=p[0];for(let b=1;bP=null);vd||k.includes(` +`))&&(u=!0),p.push(k),d=p.length}let h,{start:b,end:y}=s;if(p.length===0)h=b+y;else if(u||(u=p.reduce((_,P)=>_+P.length+2,2)>oh.Collection.maxFlowStringSingleLineLength),u){h=b;for(let v of p)h+=v?` +${o}${a}${v}`:` +`;h+=` +${a}${y}`}else h=`${b} ${p.join(" ")} ${y}`;return r&&(h+=ls.lineComment(h,c(r),a),i&&i()),h}function ln({indent:r,options:{commentString:e}},t,s,n){if(s&&n&&(s=s.replace(/^\n+/,"")),s){let i=ls.indentComment(e(s),r);t.push(i.trimStart())}}Bc.stringifyCollection=ch});var jt=g(ta=>{"use strict";var dh=Qi(),fh=zi(),ph=rs(),gt=K(),Xi=tt(),hh=ee();function us(r,e){let t=gt.isScalar(e)?e.value:e;for(let s of r)if(gt.isPair(s)&&(s.key===e||s.key===t||gt.isScalar(s.key)&&s.key.value===t))return s}var ea=class extends ph.Collection{constructor(e){super(gt.MAP,e),this.items=[]}static get tagName(){return"tag:yaml.org,2002:map"}add(e,t){let s;gt.isPair(e)?s=e:!e||typeof e!="object"||!("key"in e)?s=new Xi.Pair(e,e?.value):s=new Xi.Pair(e.key,e.value);let n=us(this.items,s.key),i=this.schema?.sortMapEntries;if(n){if(!t)throw new Error(`Key ${s.key} already set`);gt.isScalar(n.value)&&hh.isScalarValue(s.value)?n.value.value=s.value:n.value=s.value}else if(i){let a=this.items.findIndex(o=>i(s,o)<0);a===-1?this.items.push(s):this.items.splice(a,0,s)}else this.items.push(s)}delete(e){let t=us(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=us(this.items,e)?.value;return(!t&>.isScalar(n)?n.value:n)??void 0}has(e){return!!us(this.items,e)}set(e,t){this.add(new Xi.Pair(e,t),!0)}toJSON(e,t,s){let n=s?new s:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(n);for(let i of this.items)fh.addPairToJSMap(t,n,i);return n}toString(e,t,s){if(!e)return JSON.stringify(this);for(let n of this.items)if(!gt.isPair(n))throw new Error(`Map items must all be pairs; found ${JSON.stringify(n)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),dh.stringifyCollection(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:s,onComment:t})}};ta.YAMLMap=ea;ta.findPair=us});var wr=g(Kc=>{"use strict";var mh=K(),yh=tt(),Fc=jt();function gh(r,e,t){let{keepUndefined:s,replacer:n}=t,i=new Fc.YAMLMap(r),a=(o,c)=>{if(typeof n=="function")c=n.call(e,o,c);else if(Array.isArray(n)&&!n.includes(o))return;(c!==void 0||s)&&i.items.push(yh.createPair(o,c,t))};if(e instanceof Map)for(let[o,c]of e)a(o,c);else if(e&&typeof e=="object")for(let o of Object.keys(e))a(o,e[o]);return typeof r.sortMapEntries=="function"&&i.items.sort(r.sortMapEntries),i}var vh={collection:"map",createNode:gh,default:!0,nodeClass:Fc.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(r,e){return mh.isMap(r)||e("Expected a mapping for this tag"),r}};Kc.map=vh});var Ct=g(Wc=>{"use strict";var bh=Qi(),_h=rs(),dn=K(),wh=ee(),Sh=gr(),ra=class extends _h.Collection{constructor(e){super(dn.SEQ,e),this.items=[]}static get tagName(){return"tag:yaml.org,2002:seq"}add(e){this.items.push(e)}delete(e){let t=un(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let s=un(e);if(typeof s!="number")return;let n=this.items[s];return!t&&dn.isScalar(n)?n.value:n}has(e){let t=un(e);return typeof t=="number"&&t=0?e:null}Wc.YAMLSeq=ra});var Sr=g(Yc=>{"use strict";var xh=ts(),Oh=K(),Jc=Ct();function Ih(r,e,t){let{replacer:s}=t,n=new Jc.YAMLSeq(r);if(e&&Symbol.iterator in Object(e)){let i=0;for(let a of e){if(typeof s=="function"){let o=e instanceof Set?a:String(i++);a=s.call(e,o,a)}n.items.push(xh.createNode(a,void 0,t))}}return n}var Ph={collection:"seq",createNode:Ih,default:!0,nodeClass:Jc.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(r,e){return Oh.isSeq(r)||e("Expected a sequence for this tag"),r}};Yc.seq=Ph});var ds=g(Hc=>{"use strict";var Th=os(),$h={identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify(r,e,t,s){return e=Object.assign({actualString:!0},e),Th.stringifyString(r,e,t,s)}};Hc.string=$h});var fn=g(Qc=>{"use strict";var zc=ee(),Gc={identify:r=>r==null,createNode:()=>new zc.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new zc.Scalar(null),stringify:({source:r},e)=>typeof r=="string"&&Gc.test.test(r)?r:e.options.nullStr};Qc.nullTag=Gc});var sa=g(el=>{"use strict";var kh=ee(),Xc={identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:r=>new kh.Scalar(r[0]==="t"||r[0]==="T"),stringify({source:r,value:e},t){if(r&&Xc.test.test(r)){let s=r[0]==="t"||r[0]==="T";if(e===s)return r}return e?t.options.trueStr:t.options.falseStr}};el.boolTag=Xc});var xr=g(tl=>{"use strict";function Ah({format:r,minFractionDigits:e,tag:t,value:s}){if(typeof s=="bigint")return String(s);let n=typeof s=="number"?s:Number(s);if(!isFinite(n))return isNaN(n)?".nan":n<0?"-.inf":".inf";let i=JSON.stringify(s);if(!r&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\d/.test(i)){let a=i.indexOf(".");a<0&&(a=i.length,i+=".");let o=e-(i.length-a-1);for(;o-- >0;)i+="0"}return i}tl.stringifyNumber=Ah});var ia=g(pn=>{"use strict";var Eh=ee(),na=xr(),Nh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN))$/,resolve:r=>r.slice(-3).toLowerCase()==="nan"?NaN:r[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:na.stringifyNumber},jh={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:r=>parseFloat(r),stringify(r){let e=Number(r.value);return isFinite(e)?e.toExponential():na.stringifyNumber(r)}},Ch={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(r){let e=new Eh.Scalar(parseFloat(r)),t=r.indexOf(".");return t!==-1&&r[r.length-1]==="0"&&(e.minFractionDigits=r.length-t-1),e},stringify:na.stringifyNumber};pn.float=Ch;pn.floatExp=jh;pn.floatNaN=Nh});var oa=g(mn=>{"use strict";var rl=xr(),hn=r=>typeof r=="bigint"||Number.isInteger(r),aa=(r,e,t,{intAsBigInt:s})=>s?BigInt(r):parseInt(r.substring(e),t);function sl(r,e,t){let{value:s}=r;return hn(s)&&s>=0?t+s.toString(e):rl.stringifyNumber(r)}var qh={identify:r=>hn(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(r,e,t)=>aa(r,2,8,t),stringify:r=>sl(r,8,"0o")},Rh={identify:hn,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(r,e,t)=>aa(r,0,10,t),stringify:rl.stringifyNumber},Mh={identify:r=>hn(r)&&r>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(r,e,t)=>aa(r,2,16,t),stringify:r=>sl(r,16,"0x")};mn.int=Rh;mn.intHex=Mh;mn.intOct=qh});var il=g(nl=>{"use strict";var Lh=wr(),Dh=fn(),Zh=Sr(),Vh=ds(),Uh=sa(),ca=ia(),la=oa(),Bh=[Lh.map,Zh.seq,Vh.string,Dh.nullTag,Uh.boolTag,la.intOct,la.int,la.intHex,ca.floatNaN,ca.floatExp,ca.float];nl.schema=Bh});var cl=g(ol=>{"use strict";var Fh=ee(),Kh=wr(),Wh=Sr();function al(r){return typeof r=="bigint"||Number.isInteger(r)}var yn=({value:r})=>JSON.stringify(r),Jh=[{identify:r=>typeof r=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:r=>r,stringify:yn},{identify:r=>r==null,createNode:()=>new Fh.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:yn},{identify:r=>typeof r=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:r=>r==="true",stringify:yn},{identify:al,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(r,e,{intAsBigInt:t})=>t?BigInt(r):parseInt(r,10),stringify:({value:r})=>al(r)?r.toString():JSON.stringify(r)},{identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:r=>parseFloat(r),stringify:yn}],Yh={default:!0,tag:"",test:/^/,resolve(r,e){return e(`Unresolved plain scalar ${JSON.stringify(r)}`),r}},Hh=[Kh.map,Wh.seq].concat(Jh,Yh);ol.schema=Hh});var da=g(ll=>{"use strict";var ua=ee(),zh=os(),Gh={identify:r=>r instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(r,e){if(typeof Buffer=="function")return Buffer.from(r,"base64");if(typeof atob=="function"){let t=atob(r.replace(/[\n\r]/g,"")),s=new Uint8Array(t.length);for(let n=0;n{"use strict";var gn=K(),fa=tt(),Qh=ee(),Xh=Ct();function ul(r,e){if(gn.isSeq(r))for(let t=0;t1&&e("Each pair must have its own sequence indicator");let n=s.items[0]||new fa.Pair(new Qh.Scalar(null));if(s.commentBefore&&(n.key.commentBefore=n.key.commentBefore?`${s.commentBefore} +${n.key.commentBefore}`:s.commentBefore),s.comment){let i=n.value??n.key;i.comment=i.comment?`${s.comment} +${i.comment}`:s.comment}s=n}r.items[t]=gn.isPair(s)?s:new fa.Pair(s)}}else e("Expected a sequence for this tag");return r}function dl(r,e,t){let{replacer:s}=t,n=new Xh.YAMLSeq(r);n.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let a of e){typeof s=="function"&&(a=s.call(e,String(i++),a));let o,c;if(Array.isArray(a))if(a.length===2)o=a[0],c=a[1];else throw new TypeError(`Expected [key, value] tuple: ${a}`);else if(a&&a instanceof Object){let l=Object.keys(a);if(l.length===1)o=l[0],c=a[o];else throw new TypeError(`Expected { key: value } tuple: ${a}`)}else o=a;n.items.push(fa.createPair(o,c,t))}return n}var em={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:ul,createNode:dl};vn.createPairs=dl;vn.pairs=em;vn.resolvePairs=ul});var ma=g(ha=>{"use strict";var tm=Ct(),pa=gr(),pl=K(),fs=jt(),fl=bn(),rt=class extends tm.YAMLSeq{constructor(){super(),this.add=fs.YAMLMap.prototype.add.bind(this),this.delete=fs.YAMLMap.prototype.delete.bind(this),this.get=fs.YAMLMap.prototype.get.bind(this),this.has=fs.YAMLMap.prototype.has.bind(this),this.set=fs.YAMLMap.prototype.set.bind(this),this.tag=rt.tag}toJSON(e,t){if(!t)return super.toJSON(e);let s=new Map;t?.onCreate&&t.onCreate(s);for(let n of this.items){let i,a;if(pl.isPair(n)?(i=pa.toJS(n.key,"",t),a=pa.toJS(n.value,i,t)):i=pa.toJS(n,"",t),s.has(i))throw new Error("Ordered maps must not include duplicate keys");s.set(i,a)}return s}};rt.tag="tag:yaml.org,2002:omap";var rm={collection:"seq",identify:r=>r instanceof Map,nodeClass:rt,default:!1,tag:"tag:yaml.org,2002:omap",resolve(r,e){let t=fl.resolvePairs(r,e),s=[];for(let{key:n}of t.items)pl.isScalar(n)&&(s.includes(n.value)?e(`Ordered maps must not include duplicate keys: ${n.value}`):s.push(n.value));return Object.assign(new rt,t)},createNode(r,e,t){let s=fl.createPairs(r,e,t),n=new rt;return n.items=s.items,n}};ha.YAMLOMap=rt;ha.omap=rm});var vl=g(ya=>{"use strict";var hl=ee();function ml({value:r,source:e},t){return e&&(r?yl:gl).test.test(e)?e:r?t.options.trueStr:t.options.falseStr}var yl={identify:r=>r===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new hl.Scalar(!0),stringify:ml},gl={identify:r=>r===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,resolve:()=>new hl.Scalar(!1),stringify:ml};ya.falseTag=gl;ya.trueTag=yl});var bl=g(_n=>{"use strict";var sm=ee(),ga=xr(),nm={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN)$/,resolve:r=>r.slice(-3).toLowerCase()==="nan"?NaN:r[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ga.stringifyNumber},im={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:r=>parseFloat(r.replace(/_/g,"")),stringify(r){let e=Number(r.value);return isFinite(e)?e.toExponential():ga.stringifyNumber(r)}},am={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(r){let e=new sm.Scalar(parseFloat(r.replace(/_/g,""))),t=r.indexOf(".");if(t!==-1){let s=r.substring(t+1).replace(/_/g,"");s[s.length-1]==="0"&&(e.minFractionDigits=s.length)}return e},stringify:ga.stringifyNumber};_n.float=am;_n.floatExp=im;_n.floatNaN=nm});var wl=g(hs=>{"use strict";var _l=xr(),ps=r=>typeof r=="bigint"||Number.isInteger(r);function wn(r,e,t,{intAsBigInt:s}){let n=r[0];if((n==="-"||n==="+")&&(e+=1),r=r.substring(e).replace(/_/g,""),s){switch(t){case 2:r=`0b${r}`;break;case 8:r=`0o${r}`;break;case 16:r=`0x${r}`;break}let a=BigInt(r);return n==="-"?BigInt(-1)*a:a}let i=parseInt(r,t);return n==="-"?-1*i:i}function va(r,e,t){let{value:s}=r;if(ps(s)){let n=s.toString(e);return s<0?"-"+t+n.substr(1):t+n}return _l.stringifyNumber(r)}var om={identify:ps,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(r,e,t)=>wn(r,2,2,t),stringify:r=>va(r,2,"0b")},cm={identify:ps,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(r,e,t)=>wn(r,1,8,t),stringify:r=>va(r,8,"0")},lm={identify:ps,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(r,e,t)=>wn(r,0,10,t),stringify:_l.stringifyNumber},um={identify:ps,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(r,e,t)=>wn(r,2,16,t),stringify:r=>va(r,16,"0x")};hs.int=lm;hs.intBin=om;hs.intHex=um;hs.intOct=cm});var _a=g(ba=>{"use strict";var xn=K(),On=tt(),Sn=jt(),st=class extends Sn.YAMLMap{constructor(e){super(e),this.tag=st.tag}add(e){let t;xn.isPair(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new On.Pair(e.key,null):t=new On.Pair(e,null),Sn.findPair(this.items,t.key)||this.items.push(t)}get(e,t){let s=Sn.findPair(this.items,e);return!t&&xn.isPair(s)?xn.isScalar(s.key)?s.key.value:s.key:s}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let s=Sn.findPair(this.items,e);s&&!t?this.items.splice(this.items.indexOf(s),1):!s&&t&&this.items.push(new On.Pair(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,s){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,s);throw new Error("Set items must all have null values")}};st.tag="tag:yaml.org,2002:set";var dm={collection:"map",identify:r=>r instanceof Set,nodeClass:st,default:!1,tag:"tag:yaml.org,2002:set",resolve(r,e){if(xn.isMap(r)){if(r.hasAllNullValues(!0))return Object.assign(new st,r);e("Set items must all have null values")}else e("Expected a mapping for this tag");return r},createNode(r,e,t){let{replacer:s}=t,n=new st(r);if(e&&Symbol.iterator in Object(e))for(let i of e)typeof s=="function"&&(i=s.call(e,i,i)),n.items.push(On.createPair(i,null,t));return n}};ba.YAMLSet=st;ba.set=dm});var Sa=g(In=>{"use strict";var fm=xr();function wa(r,e){let t=r[0],s=t==="-"||t==="+"?r.substring(1):r,n=a=>e?BigInt(a):Number(a),i=s.replace(/_/g,"").split(":").reduce((a,o)=>a*n(60)+n(o),n(0));return t==="-"?n(-1)*i:i}function Sl(r){let{value:e}=r,t=a=>a;if(typeof e=="bigint")t=a=>BigInt(a);else if(isNaN(e)||!isFinite(e))return fm.stringifyNumber(r);let s="";e<0&&(s="-",e*=t(-1));let n=t(60),i=[e%n];return e<60?i.unshift(0):(e=(e-i[0])/n,i.unshift(e%n),e>=60&&(e=(e-i[0])/n,i.unshift(e))),s+i.map(a=>a<10?"0"+String(a):String(a)).join(":").replace(/000000\d*$/,"")}var pm={identify:r=>typeof r=="bigint"||Number.isInteger(r),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(r,e,{intAsBigInt:t})=>wa(r,t),stringify:Sl},hm={identify:r=>typeof r=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:r=>wa(r,!1),stringify:Sl},xl={identify:r=>r instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(r){let e=r.match(xl.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,s,n,i,a,o]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(t,s-1,n,i||0,a||0,o||0,c),u=e[8];if(u&&u!=="Z"){let d=wa(u,!1);Math.abs(d)<30&&(d*=60),l-=6e4*d}return new Date(l)},stringify:({value:r})=>r.toISOString().replace(/((T00:00)?:00)?\.000Z$/,"")};In.floatTime=hm;In.intTime=pm;In.timestamp=xl});var Pl=g(Il=>{"use strict";var mm=wr(),ym=fn(),gm=Sr(),vm=ds(),bm=da(),Ol=vl(),xa=bl(),Pn=wl(),_m=ma(),wm=bn(),Sm=_a(),Oa=Sa(),xm=[mm.map,gm.seq,vm.string,ym.nullTag,Ol.trueTag,Ol.falseTag,Pn.intBin,Pn.intOct,Pn.int,Pn.intHex,xa.floatNaN,xa.floatExp,xa.float,bm.binary,_m.omap,wm.pairs,Sm.set,Oa.intTime,Oa.floatTime,Oa.timestamp];Il.schema=xm});var Rl=g(Ta=>{"use strict";var Al=wr(),Om=fn(),El=Sr(),Im=ds(),Pm=sa(),Ia=ia(),Pa=oa(),Tm=il(),$m=cl(),Nl=da(),jl=ma(),Cl=bn(),Tl=Pl(),ql=_a(),Tn=Sa(),$l=new Map([["core",Tm.schema],["failsafe",[Al.map,El.seq,Im.string]],["json",$m.schema],["yaml11",Tl.schema],["yaml-1.1",Tl.schema]]),kl={binary:Nl.binary,bool:Pm.boolTag,float:Ia.float,floatExp:Ia.floatExp,floatNaN:Ia.floatNaN,floatTime:Tn.floatTime,int:Pa.int,intHex:Pa.intHex,intOct:Pa.intOct,intTime:Tn.intTime,map:Al.map,null:Om.nullTag,omap:jl.omap,pairs:Cl.pairs,seq:El.seq,set:ql.set,timestamp:Tn.timestamp},km={"tag:yaml.org,2002:binary":Nl.binary,"tag:yaml.org,2002:omap":jl.omap,"tag:yaml.org,2002:pairs":Cl.pairs,"tag:yaml.org,2002:set":ql.set,"tag:yaml.org,2002:timestamp":Tn.timestamp};function Am(r,e){let t=$l.get(e);if(!t)if(Array.isArray(r))t=[];else{let s=Array.from($l.keys()).filter(n=>n!=="yaml11").map(n=>JSON.stringify(n)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${s} or define customTags array`)}if(Array.isArray(r))for(let s of r)t=t.concat(s);else typeof r=="function"&&(t=r(t.slice()));return t.map(s=>{if(typeof s!="string")return s;let n=kl[s];if(n)return n;let i=Object.keys(kl).map(a=>JSON.stringify(a)).join(", ");throw new Error(`Unknown custom tag "${s}"; use one of ${i}`)})}Ta.coreKnownTags=km;Ta.getTags=Am});var ka=g(Ml=>{"use strict";var $a=K(),Em=wr(),Nm=Sr(),jm=ds(),$n=Rl(),Cm=(r,e)=>r.keye.key?1:0,ms=class{constructor({compat:e,customTags:t,merge:s,resolveKnownTags:n,schema:i,sortMapEntries:a,toStringDefaults:o}){this.compat=Array.isArray(e)?$n.getTags(e,"compat"):e?$n.getTags(null,e):null,this.merge=!!s,this.name=typeof i=="string"&&i||"core",this.knownTags=n?$n.coreKnownTags:{},this.tags=$n.getTags(t,this.name),this.toStringOptions=o??null,Object.defineProperty(this,$a.MAP,{value:Em.map}),Object.defineProperty(this,$a.SCALAR,{value:jm.string}),Object.defineProperty(this,$a.SEQ,{value:Nm.seq}),this.sortMapEntries=typeof a=="function"?a:a===!0?Cm:null}clone(){let e=Object.create(ms.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};Ml.Schema=ms});var Dl=g(Ll=>{"use strict";var qm=K(),Aa=vr(),ys=ss();function Rm(r,e){let t=[],s=e.directives===!0;if(e.directives!==!1&&r.directives){let c=r.directives.toString(r);c?(t.push(c),s=!0):r.directives.docStart&&(s=!0)}s&&t.push("---");let n=Aa.createStringifyContext(r,e),{commentString:i}=n.options;if(r.commentBefore){t.length!==1&&t.unshift("");let c=i(r.commentBefore);t.unshift(ys.indentComment(c,""))}let a=!1,o=null;if(r.contents){if(qm.isNode(r.contents)){if(r.contents.spaceBefore&&s&&t.push(""),r.contents.commentBefore){let u=i(r.contents.commentBefore);t.push(ys.indentComment(u,""))}n.forceBlockIndent=!!r.comment,o=r.contents.comment}let c=o?void 0:()=>a=!0,l=Aa.stringify(r.contents,n,()=>o=null,c);o&&(l+=ys.lineComment(l,"",i(o))),(l[0]==="|"||l[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${l}`:t.push(l)}else t.push(Aa.stringify(r.contents,n));if(r.directives?.docEnd)if(r.comment){let c=i(r.comment);c.includes(` +`)?(t.push("..."),t.push(ys.indentComment(c,""))):t.push(`... ${c}`)}else t.push("...");else{let c=r.comment;c&&a&&(c=c.replace(/^\n+/,"")),c&&((!a||o)&&t[t.length-1]!==""&&t.push(""),t.push(ys.indentComment(i(c),"")))}return t.join(` +`)+` +`}Ll.stringifyDocument=Rm});var Vl=g(Zl=>{"use strict";function gs(r,e,t,s){if(s&&typeof s=="object")if(Array.isArray(s))for(let n=0,i=s.length;n{"use strict";var Mm=es(),Or=rs(),we=K(),Lm=tt(),Dm=gr(),Zm=ka(),Vm=vr(),Um=Dl(),Ea=Qs(),Bm=Vl(),Fm=ts(),Na=Li(),vs=class{constructor(e,t,s){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,we.NODE_TYPE,{value:we.DOC});let n=null;typeof t=="function"||Array.isArray(t)?n=t:s===void 0&&t&&(s=t,t=void 0);let i=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,uniqueKeys:!0,version:"1.2"},s);this.options=i;let{version:a}=i;s?._directives?(this.directives=s._directives.atDocument(),this.directives.yaml.explicit&&(a=this.directives.yaml.version)):this.directives=new Na.Directives({version:a}),this.setSchema(a,s),e===void 0?this.contents=null:this.contents=this.createNode(e,n,s)}clone(){let e=Object.create(vs.prototype,{[we.NODE_TYPE]:{value:we.DOC}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=we.isNode(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Ir(this.contents)&&this.contents.add(e)}addIn(e,t){Ir(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let s=Ea.anchorNames(this);e.anchor=!t||s.has(t)?Ea.findNewAnchor(t||"a",s):t}return new Mm.Alias(e.anchor)}createNode(e,t,s){let n;if(typeof t=="function")e=t.call({"":e},"",e),n=t;else if(Array.isArray(t)){let v=P=>typeof P=="number"||P instanceof String||P instanceof Number,_=t.filter(v).map(String);_.length>0&&(t=t.concat(_)),n=t}else s===void 0&&t&&(s=t,t=void 0);let{aliasDuplicateObjects:i,anchorPrefix:a,flow:o,keepUndefined:c,onTagObj:l,tag:u}=s??{},{onAnchor:d,setAnchors:p,sourceObjects:h}=Ea.createNodeAnchors(this,a||"a"),b={aliasDuplicateObjects:i??!0,keepUndefined:c??!1,onAnchor:d,onTagObj:l,replacer:n,schema:this.schema,sourceObjects:h},y=Fm.createNode(e,u,b);return o&&we.isCollection(y)&&(y.flow=!0),p(),y}createPair(e,t,s={}){let n=this.createNode(e,null,s),i=this.createNode(t,null,s);return new Lm.Pair(n,i)}delete(e){return Ir(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Or.isEmptyPath(e)?this.contents==null?!1:(this.contents=null,!0):Ir(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return we.isCollection(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return Or.isEmptyPath(e)?!t&&we.isScalar(this.contents)?this.contents.value:this.contents:we.isCollection(this.contents)?this.contents.getIn(e,t):void 0}has(e){return we.isCollection(this.contents)?this.contents.has(e):!1}hasIn(e){return Or.isEmptyPath(e)?this.contents!==void 0:we.isCollection(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=Or.collectionFromPath(this.schema,[e],t):Ir(this.contents)&&this.contents.set(e,t)}setIn(e,t){Or.isEmptyPath(e)?this.contents=t:this.contents==null?this.contents=Or.collectionFromPath(this.schema,Array.from(e),t):Ir(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let s;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Na.Directives({version:"1.1"}),s={merge:!0,resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new Na.Directives({version:e}),s={merge:!1,resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,s=null;break;default:{let n=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${n}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(s)this.schema=new Zm.Schema(Object.assign(s,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:s,maxAliasCount:n,onAnchor:i,reviver:a}={}){let o={anchors:new Map,doc:this,keep:!e,mapAsMap:s===!0,mapKeyWarned:!1,maxAliasCount:typeof n=="number"?n:100,stringify:Vm.stringify},c=Dm.toJS(this.contents,t??"",o);if(typeof i=="function")for(let{count:l,res:u}of o.anchors.values())i(u,l);return typeof a=="function"?Bm.applyReviver(a,{"":c},"",c):c}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Um.stringifyDocument(this,e)}};function Ir(r){if(we.isCollection(r))return!0;throw new Error("Expected a YAML collection as document contents")}Ul.Document=vs});var Ss=g(ws=>{"use strict";var _s=class extends Error{constructor(e,t,s,n){super(),this.name=e,this.code=s,this.message=n,this.pos=t}},ja=class extends _s{constructor(e,t,s){super("YAMLParseError",e,t,s)}},Ca=class extends _s{constructor(e,t,s){super("YAMLWarning",e,t,s)}},Km=(r,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(o=>e.linePos(o));let{line:s,col:n}=t.linePos[0];t.message+=` at line ${s}, column ${n}`;let i=n-1,a=r.substring(e.lineStarts[s-1],e.lineStarts[s]).replace(/[\n\r]+$/,"");if(i>=60&&a.length>80){let o=Math.min(i-39,a.length-79);a="\u2026"+a.substring(o),i-=o-1}if(a.length>80&&(a=a.substring(0,79)+"\u2026"),s>1&&/^ *$/.test(a.substring(0,i))){let o=r.substring(e.lineStarts[s-2],e.lineStarts[s-1]);o.length>80&&(o=o.substring(0,79)+`\u2026 +`),a=o+a}if(/[^ ]/.test(a)){let o=1,c=t.linePos[1];c&&c.line===s&&c.col>n&&(o=Math.min(c.col-n,80-i));let l=" ".repeat(i)+"^".repeat(o);t.message+=`: + +${a} +${l} +`}};ws.YAMLError=_s;ws.YAMLParseError=ja;ws.YAMLWarning=Ca;ws.prettifyError=Km});var xs=g(Bl=>{"use strict";function Wm(r,{flow:e,indicator:t,next:s,offset:n,onError:i,startOnNewline:a}){let o=!1,c=a,l=a,u="",d="",p=!1,h=!1,b=!1,y=null,v=null,_=null,P=null,k=null;for(let T of r)switch(b&&(T.type!=="space"&&T.type!=="newline"&&T.type!=="comma"&&i(T.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),b=!1),T.type){case"space":!e&&c&&t!=="doc-start"&&T.source[0]===" "&&i(T,"TAB_AS_INDENT","Tabs are not allowed as indentation"),l=!0;break;case"comment":{l||i(T,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let ce=T.source.substring(1)||" ";u?u+=d+ce:u=ce,d="",c=!1;break}case"newline":c?u?u+=T.source:o=!0:d+=T.source,c=!0,p=!0,(y||v)&&(h=!0),l=!0;break;case"anchor":y&&i(T,"MULTIPLE_ANCHORS","A node can have at most one anchor"),T.source.endsWith(":")&&i(T.offset+T.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),y=T,k===null&&(k=T.offset),c=!1,l=!1,b=!0;break;case"tag":{v&&i(T,"MULTIPLE_TAGS","A node can have at most one tag"),v=T,k===null&&(k=T.offset),c=!1,l=!1,b=!0;break}case t:(y||v)&&i(T,"BAD_PROP_ORDER",`Anchors and tags must be after the ${T.source} indicator`),P&&i(T,"UNEXPECTED_TOKEN",`Unexpected ${T.source} in ${e??"collection"}`),P=T,c=!1,l=!1;break;case"comma":if(e){_&&i(T,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),_=T,c=!1,l=!1;break}default:i(T,"UNEXPECTED_TOKEN",`Unexpected ${T.type} token`),c=!1,l=!1}let I=r[r.length-1],F=I?I.offset+I.source.length:n;return b&&s&&s.type!=="space"&&s.type!=="newline"&&s.type!=="comma"&&(s.type!=="scalar"||s.source!=="")&&i(s.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),{comma:_,found:P,spaceBefore:o,comment:u,hasNewline:p,hasNewlineAfterProp:h,anchor:y,tag:v,end:F,start:k??F}}Bl.resolveProps=Wm});var kn=g(Fl=>{"use strict";function qa(r){if(!r)return null;switch(r.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(r.source.includes(` +`))return!0;if(r.end){for(let e of r.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of r.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(qa(e.key)||qa(e.value))return!0}return!1;default:return!0}}Fl.containsNewline=qa});var Ra=g(Kl=>{"use strict";var Jm=kn();function Ym(r,e,t){if(e?.type==="flow-collection"){let s=e.end[0];s.indent===r&&(s.source==="]"||s.source==="}")&&Jm.containsNewline(e)&&t(s,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Kl.flowIndentCheck=Ym});var Ma=g(Jl=>{"use strict";var Wl=K();function Hm(r,e,t){let{uniqueKeys:s}=r.options;if(s===!1)return!1;let n=typeof s=="function"?s:(i,a)=>i===a||Wl.isScalar(i)&&Wl.isScalar(a)&&i.value===a.value&&!(i.value==="<<"&&r.schema.merge);return e.some(i=>n(i.key,t))}Jl.mapIncludes=Hm});var Xl=g(Ql=>{"use strict";var Yl=tt(),zm=jt(),Hl=xs(),Gm=kn(),zl=Ra(),Qm=Ma(),Gl="All mapping items must start at the same column";function Xm({composeNode:r,composeEmptyNode:e},t,s,n){let i=new zm.YAMLMap(t.schema);t.atRoot&&(t.atRoot=!1);let a=s.offset,o=null;for(let c of s.items){let{start:l,key:u,sep:d,value:p}=c,h=Hl.resolveProps(l,{indicator:"explicit-key-ind",next:u??d?.[0],offset:a,onError:n,startOnNewline:!0}),b=!h.found;if(b){if(u&&(u.type==="block-seq"?n(a,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in u&&u.indent!==s.indent&&n(a,"BAD_INDENT",Gl)),!h.anchor&&!h.tag&&!d){o=h.end,h.comment&&(i.comment?i.comment+=` +`+h.comment:i.comment=h.comment);continue}(h.hasNewlineAfterProp||Gm.containsNewline(u))&&n(u??l[l.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else h.found?.indent!==s.indent&&n(a,"BAD_INDENT",Gl);let y=h.end,v=u?r(t,u,h,n):e(t,y,l,null,h,n);t.schema.compat&&zl.flowIndentCheck(s.indent,u,n),Qm.mapIncludes(t,i.items,v)&&n(y,"DUPLICATE_KEY","Map keys must be unique");let _=Hl.resolveProps(d??[],{indicator:"map-value-ind",next:p,offset:v.range[2],onError:n,startOnNewline:!u||u.type==="block-scalar"});if(a=_.end,_.found){b&&(p?.type==="block-map"&&!_.hasNewline&&n(a,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&h.start<_.found.offset-1024&&n(v.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let P=p?r(t,p,_,n):e(t,a,d,null,_,n);t.schema.compat&&zl.flowIndentCheck(s.indent,p,n),a=P.range[2];let k=new Yl.Pair(v,P);t.options.keepSourceTokens&&(k.srcToken=c),i.items.push(k)}else{b&&n(v.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),_.comment&&(v.comment?v.comment+=` +`+_.comment:v.comment=_.comment);let P=new Yl.Pair(v);t.options.keepSourceTokens&&(P.srcToken=c),i.items.push(P)}}return o&&o{"use strict";var ey=Ct(),ty=xs(),ry=Ra();function sy({composeNode:r,composeEmptyNode:e},t,s,n){let i=new ey.YAMLSeq(t.schema);t.atRoot&&(t.atRoot=!1);let a=s.offset,o=null;for(let{start:c,value:l}of s.items){let u=ty.resolveProps(c,{indicator:"seq-item-ind",next:l,offset:a,onError:n,startOnNewline:!0});if(!u.found)if(u.anchor||u.tag||l)l&&l.type==="block-seq"?n(u.end,"BAD_INDENT","All sequence items must start at the same column"):n(a,"MISSING_CHAR","Sequence item without - indicator");else{o=u.end,u.comment&&(i.comment=u.comment);continue}let d=l?r(t,l,u,n):e(t,u.end,c,null,u,n);t.schema.compat&&ry.flowIndentCheck(s.indent,l,n),a=d.range[2],i.items.push(d)}return i.range=[s.offset,a,o??a],i}eu.resolveBlockSeq=sy});var Pr=g(ru=>{"use strict";function ny(r,e,t,s){let n="";if(r){let i=!1,a="";for(let o of r){let{source:c,type:l}=o;switch(l){case"space":i=!0;break;case"comment":{t&&!i&&s(o,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let u=c.substring(1)||" ";n?n+=a+u:n=u,a="";break}case"newline":n&&(a+=c),i=!0;break;default:s(o,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}e+=c.length}}return{comment:n,offset:e}}ru.resolveEnd=ny});var au=g(iu=>{"use strict";var iy=K(),ay=tt(),su=jt(),oy=Ct(),cy=Pr(),nu=xs(),ly=kn(),uy=Ma(),La="Block collections are not allowed within flow collections",Da=r=>r&&(r.type==="block-map"||r.type==="block-seq");function dy({composeNode:r,composeEmptyNode:e},t,s,n){let i=s.start.source==="{",a=i?"flow map":"flow sequence",o=i?new su.YAMLMap(t.schema):new oy.YAMLSeq(t.schema);o.flow=!0;let c=t.atRoot;c&&(t.atRoot=!1);let l=s.offset+s.start.source.length;for(let b=0;b0){let b=cy.resolveEnd(p,h,t.options.strict,n);b.comment&&(o.comment?o.comment+=` +`+b.comment:o.comment=b.comment),o.range=[s.offset,h,b.offset]}else o.range=[s.offset,h,h];return o}iu.resolveFlowCollection=dy});var lu=g(cu=>{"use strict";var ou=K(),fy=ee(),py=Xl(),hy=tu(),my=au();function yy(r,e,t,s,n){let i;switch(t.type){case"block-map":{i=py.resolveBlockMap(r,e,t,n);break}case"block-seq":{i=hy.resolveBlockSeq(r,e,t,n);break}case"flow-collection":{i=my.resolveFlowCollection(r,e,t,n);break}}if(!s)return i;let a=e.directives.tagName(s.source,p=>n(s,"TAG_RESOLVE_FAILED",p));if(!a)return i;let o=i.constructor;if(a==="!"||a===o.tagName)return i.tag=o.tagName,i;let c=ou.isMap(i)?"map":"seq",l=e.schema.tags.find(p=>p.collection===c&&p.tag===a);if(!l){let p=e.schema.knownTags[a];if(p&&p.collection===c)e.schema.tags.push(Object.assign({},p,{default:!1})),l=p;else return n(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${a}`,!0),i.tag=a,i}let u=l.resolve(i,p=>n(s,"TAG_RESOLVE_FAILED",p),e.options),d=ou.isNode(u)?u:new fy.Scalar(u);return d.range=i.range,d.tag=a,l?.format&&(d.format=l.format),d}cu.composeCollection=yy});var Va=g(uu=>{"use strict";var Za=ee();function gy(r,e,t){let s=r.offset,n=vy(r,e,t);if(!n)return{value:"",type:null,comment:"",range:[s,s,s]};let i=n.mode===">"?Za.Scalar.BLOCK_FOLDED:Za.Scalar.BLOCK_LITERAL,a=r.source?by(r.source):[],o=a.length;for(let y=a.length-1;y>=0;--y){let v=a[y][1];if(v===""||v==="\r")o=y;else break}if(o===0){let y=n.chomp==="+"&&a.length>0?` +`.repeat(Math.max(1,a.length-1)):"",v=s+n.length;return r.source&&(v+=r.source.length),{value:y,type:i,comment:n.comment,range:[s,v,v]}}let c=r.indent+n.indent,l=r.offset+n.length,u=0;for(let y=0;yc&&(c=v.length);else{if(v.length=o;--y)a[y][0].length>c&&(o=y+1);let d="",p="",h=!1;for(let y=0;yc||_[0]===" "?(p===" "?p=` +`:!h&&p===` +`&&(p=` + +`),d+=p+v.slice(c)+_,p=` +`,h=!0):_===""?p===` +`?d+=` +`:p=` +`:(d+=p+_,p=" ",h=!1)}switch(n.chomp){case"-":break;case"+":for(let y=o;y{"use strict";var Ua=ee(),_y=Pr();function wy(r,e,t){let{offset:s,type:n,source:i,end:a}=r,o,c,l=(p,h,b)=>t(s+p,h,b);switch(n){case"scalar":o=Ua.Scalar.PLAIN,c=Sy(i,l);break;case"single-quoted-scalar":o=Ua.Scalar.QUOTE_SINGLE,c=xy(i,l);break;case"double-quoted-scalar":o=Ua.Scalar.QUOTE_DOUBLE,c=Oy(i,l);break;default:return t(r,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${n}`),{value:"",type:null,comment:"",range:[s,s+i.length,s+i.length]}}let u=s+i.length,d=_y.resolveEnd(a,u,e,t);return{value:c,type:o,comment:d.comment,range:[s,u,d.offset]}}function Sy(r,e){let t="";switch(r[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${r[0]}`;break}case"@":case"`":{t=`reserved character ${r[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),du(r)}function xy(r,e){return(r[r.length-1]!=="'"||r.length===1)&&e(r.length,"MISSING_CHAR","Missing closing 'quote"),du(r.slice(1,-1)).replace(/''/g,"'")}function du(r){let e,t;try{e=new RegExp(`(.*?)(?i?r.slice(i,s+1):n)}else t+=n}return(r[r.length-1]!=='"'||r.length===1)&&e(r.length,"MISSING_CHAR",'Missing closing "quote'),t}function Iy(r,e){let t="",s=r[e+1];for(;(s===" "||s===" "||s===` +`||s==="\r")&&!(s==="\r"&&r[e+2]!==` +`);)s===` +`&&(t+=` +`),e+=1,s=r[e+1];return t||(t=" "),{fold:t,offset:e}}var Py={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:` +`,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function Ty(r,e,t,s){let n=r.substr(e,t),a=n.length===t&&/^[0-9a-fA-F]+$/.test(n)?parseInt(n,16):NaN;if(isNaN(a)){let o=r.substr(e-2,t+2);return s(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${o}`),o}return String.fromCodePoint(a)}fu.resolveFlowScalar=wy});var mu=g(hu=>{"use strict";var Tr=K(),pu=ee(),$y=Va(),ky=Ba();function Ay(r,e,t,s){let{value:n,type:i,comment:a,range:o}=e.type==="block-scalar"?$y.resolveBlockScalar(e,r.options.strict,s):ky.resolveFlowScalar(e,r.options.strict,s),c=t?r.directives.tagName(t.source,d=>s(t,"TAG_RESOLVE_FAILED",d)):null,l=t&&c?Ey(r.schema,n,c,t,s):e.type==="scalar"?Ny(r,n,e,s):r.schema[Tr.SCALAR],u;try{let d=l.resolve(n,p=>s(t??e,"TAG_RESOLVE_FAILED",p),r.options);u=Tr.isScalar(d)?d:new pu.Scalar(d)}catch(d){let p=d instanceof Error?d.message:String(d);s(t??e,"TAG_RESOLVE_FAILED",p),u=new pu.Scalar(n)}return u.range=o,u.source=n,i&&(u.type=i),c&&(u.tag=c),l.format&&(u.format=l.format),a&&(u.comment=a),u}function Ey(r,e,t,s,n){if(t==="!")return r[Tr.SCALAR];let i=[];for(let o of r.tags)if(!o.collection&&o.tag===t)if(o.default&&o.test)i.push(o);else return o;for(let o of i)if(o.test?.test(e))return o;let a=r.knownTags[t];return a&&!a.collection?(r.tags.push(Object.assign({},a,{default:!1,test:void 0})),a):(n(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),r[Tr.SCALAR])}function Ny({directives:r,schema:e},t,s,n){let i=e.tags.find(a=>a.default&&a.test?.test(t))||e[Tr.SCALAR];if(e.compat){let a=e.compat.find(o=>o.default&&o.test?.test(t))??e[Tr.SCALAR];if(i.tag!==a.tag){let o=r.tagString(i.tag),c=r.tagString(a.tag),l=`Value may be parsed as either ${o} or ${c}`;n(s,"TAG_RESOLVE_FAILED",l,!0)}}return i}hu.composeScalar=Ay});var gu=g(yu=>{"use strict";function jy(r,e,t){if(e){t===null&&(t=e.length);for(let s=t-1;s>=0;--s){let n=e[s];switch(n.type){case"space":case"comment":case"newline":r-=n.source.length;continue}for(n=e[++s];n?.type==="space";)r+=n.source.length,n=e[++s];break}}return r}yu.emptyScalarPosition=jy});var _u=g(Ka=>{"use strict";var Cy=es(),qy=lu(),vu=mu(),Ry=Pr(),My=gu(),Ly={composeNode:bu,composeEmptyNode:Fa};function bu(r,e,t,s){let{spaceBefore:n,comment:i,anchor:a,tag:o}=t,c,l=!0;switch(e.type){case"alias":c=Dy(r,e,s),(a||o)&&s(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":c=vu.composeScalar(r,e,o,s),a&&(c.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":c=qy.composeCollection(Ly,r,e,o,s),a&&(c.anchor=a.source.substring(1));break;default:{let u=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;s(e,"UNEXPECTED_TOKEN",u),c=Fa(r,e.offset,void 0,null,t,s),l=!1}}return a&&c.anchor===""&&s(a,"BAD_ALIAS","Anchor cannot be an empty string"),n&&(c.spaceBefore=!0),i&&(e.type==="scalar"&&e.source===""?c.comment=i:c.commentBefore=i),r.options.keepSourceTokens&&l&&(c.srcToken=e),c}function Fa(r,e,t,s,{spaceBefore:n,comment:i,anchor:a,tag:o,end:c},l){let u={type:"scalar",offset:My.emptyScalarPosition(e,t,s),indent:-1,source:""},d=vu.composeScalar(r,u,o,l);return a&&(d.anchor=a.source.substring(1),d.anchor===""&&l(a,"BAD_ALIAS","Anchor cannot be an empty string")),n&&(d.spaceBefore=!0),i&&(d.comment=i,d.range[2]=c),d}function Dy({options:r},{offset:e,source:t,end:s},n){let i=new Cy.Alias(t.substring(1));i.source===""&&n(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&n(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let a=e+t.length,o=Ry.resolveEnd(s,a,r.strict,n);return i.range=[e,a,o.offset],o.comment&&(i.comment=o.comment),i}Ka.composeEmptyNode=Fa;Ka.composeNode=bu});var xu=g(Su=>{"use strict";var Zy=bs(),wu=_u(),Vy=Pr(),Uy=xs();function By(r,e,{offset:t,start:s,value:n,end:i},a){let o=Object.assign({_directives:e},r),c=new Zy.Document(void 0,o),l={atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},u=Uy.resolveProps(s,{indicator:"doc-start",next:n??i?.[0],offset:t,onError:a,startOnNewline:!0});u.found&&(c.directives.docStart=!0,n&&(n.type==="block-map"||n.type==="block-seq")&&!u.hasNewline&&a(u.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=n?wu.composeNode(l,n,u,a):wu.composeEmptyNode(l,u.end,s,null,u,a);let d=c.contents.range[2],p=Vy.resolveEnd(i,d,!1,a);return p.comment&&(c.comment=p.comment),c.range=[t,d,p.offset],c}Su.composeDoc=By});var Ja=g(Pu=>{"use strict";var Fy=Li(),Ky=bs(),Os=Ss(),Ou=K(),Wy=xu(),Jy=Pr();function Is(r){if(typeof r=="number")return[r,r+1];if(Array.isArray(r))return r.length===2?r:[r[0],r[1]];let{offset:e,source:t}=r;return[e,e+(typeof t=="string"?t.length:1)]}function Iu(r){let e="",t=!1,s=!1;for(let n=0;n{let a=Is(t);i?this.warnings.push(new Os.YAMLWarning(a,s,n)):this.errors.push(new Os.YAMLParseError(a,s,n))},this.directives=new Fy.Directives({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:s,afterEmptyLine:n}=Iu(this.prelude);if(s){let i=e.contents;if(t)e.comment=e.comment?`${e.comment} +${s}`:s;else if(n||e.directives.docStart||!i)e.commentBefore=s;else if(Ou.isCollection(i)&&!i.flow&&i.items.length>0){let a=i.items[0];Ou.isPair(a)&&(a=a.key);let o=a.commentBefore;a.commentBefore=o?`${s} +${o}`:s}else{let a=i.commentBefore;i.commentBefore=a?`${s} +${a}`:s}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Iu(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,s=-1){for(let n of e)yield*this.next(n);yield*this.end(t,s)}*next(e){switch(process.env.LOG_STREAM&&console.dir(e,{depth:null}),e.type){case"directive":this.directives.add(e.source,(t,s,n)=>{let i=Is(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",s,n)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=Wy.composeDoc(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,s=new Os.YAMLParseError(Is(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(s):this.doc.errors.push(s);break}case"doc-end":{if(!this.doc){let s="Unexpected doc-end without preceding document";this.errors.push(new Os.YAMLParseError(Is(e),"UNEXPECTED_TOKEN",s));break}this.doc.directives.docEnd=!0;let t=Jy.resolveEnd(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let s=this.doc.comment;this.doc.comment=s?`${s} +${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Os.YAMLParseError(Is(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let s=Object.assign({_directives:this.directives},this.options),n=new Ky.Document(void 0,s);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),n.range=[0,t,t],this.decorate(n,!1),yield n}}};Pu.Composer=Wa});var ku=g(An=>{"use strict";var Yy=Va(),Hy=Ba(),zy=Ss(),Tu=os();function Gy(r,e=!0,t){if(r){let s=(n,i,a)=>{let o=typeof n=="number"?n:Array.isArray(n)?n[0]:n.offset;if(t)t(o,i,a);else throw new zy.YAMLParseError([o,o+1],i,a)};switch(r.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return Hy.resolveFlowScalar(r,e,s);case"block-scalar":return Yy.resolveBlockScalar(r,e,s)}}return null}function Qy(r,e){let{implicitKey:t=!1,indent:s,inFlow:n=!1,offset:i=-1,type:a="PLAIN"}=e,o=Tu.stringifyString({type:a,value:r},{implicitKey:t,indent:s>0?" ".repeat(s):"",inFlow:n,options:{blockQuote:!0,lineWidth:-1}}),c=e.end??[{type:"newline",offset:-1,indent:s,source:` +`}];switch(o[0]){case"|":case">":{let l=o.indexOf(` +`),u=o.substring(0,l),d=o.substring(l+1)+` +`,p=[{type:"block-scalar-header",offset:i,indent:s,source:u}];return $u(p,c)||p.push({type:"newline",offset:-1,indent:s,source:` +`}),{type:"block-scalar",offset:i,indent:s,props:p,source:d}}case'"':return{type:"double-quoted-scalar",offset:i,indent:s,source:o,end:c};case"'":return{type:"single-quoted-scalar",offset:i,indent:s,source:o,end:c};default:return{type:"scalar",offset:i,indent:s,source:o,end:c}}}function Xy(r,e,t={}){let{afterKey:s=!1,implicitKey:n=!1,inFlow:i=!1,type:a}=t,o="indent"in r?r.indent:null;if(s&&typeof o=="number"&&(o+=2),!a)switch(r.type){case"single-quoted-scalar":a="QUOTE_SINGLE";break;case"double-quoted-scalar":a="QUOTE_DOUBLE";break;case"block-scalar":{let l=r.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");a=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:a="PLAIN"}let c=Tu.stringifyString({type:a,value:e},{implicitKey:n||o===null,indent:o!==null&&o>0?" ".repeat(o):"",inFlow:i,options:{blockQuote:!0,lineWidth:-1}});switch(c[0]){case"|":case">":eg(r,c);break;case'"':Ya(r,c,"double-quoted-scalar");break;case"'":Ya(r,c,"single-quoted-scalar");break;default:Ya(r,c,"scalar")}}function eg(r,e){let t=e.indexOf(` +`),s=e.substring(0,t),n=e.substring(t+1)+` +`;if(r.type==="block-scalar"){let i=r.props[0];if(i.type!=="block-scalar-header")throw new Error("Invalid block scalar header");i.source=s,r.source=n}else{let{offset:i}=r,a="indent"in r?r.indent:-1,o=[{type:"block-scalar-header",offset:i,indent:a,source:s}];$u(o,"end"in r?r.end:void 0)||o.push({type:"newline",offset:-1,indent:a,source:` +`});for(let c of Object.keys(r))c!=="type"&&c!=="offset"&&delete r[c];Object.assign(r,{type:"block-scalar",indent:a,props:o,source:n})}}function $u(r,e){if(e)for(let t of e)switch(t.type){case"space":case"comment":r.push(t);break;case"newline":return r.push(t),!0}return!1}function Ya(r,e,t){switch(r.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":r.type=t,r.source=e;break;case"block-scalar":{let s=r.props.slice(1),n=e.length;r.props[0].type==="block-scalar-header"&&(n-=r.props[0].source.length);for(let i of s)i.offset+=n;delete r.props,Object.assign(r,{type:t,source:e,end:s});break}case"block-map":case"block-seq":{let n={type:"newline",offset:r.offset+e.length,indent:r.indent,source:` +`};delete r.items,Object.assign(r,{type:t,source:e,end:[n]});break}default:{let s="indent"in r?r.indent:-1,n="end"in r&&Array.isArray(r.end)?r.end.filter(i=>i.type==="space"||i.type==="comment"||i.type==="newline"):[];for(let i of Object.keys(r))i!=="type"&&i!=="offset"&&delete r[i];Object.assign(r,{type:t,indent:s,source:e,end:n})}}}An.createScalarToken=Qy;An.resolveAsScalar=Gy;An.setScalarValue=Xy});var Eu=g(Au=>{"use strict";var tg=r=>"type"in r?Nn(r):En(r);function Nn(r){switch(r.type){case"block-scalar":{let e="";for(let t of r.props)e+=Nn(t);return e+r.source}case"block-map":case"block-seq":{let e="";for(let t of r.items)e+=En(t);return e}case"flow-collection":{let e=r.start.source;for(let t of r.items)e+=En(t);for(let t of r.end)e+=t.source;return e}case"document":{let e=En(r);if(r.end)for(let t of r.end)e+=t.source;return e}default:{let e=r.source;if("end"in r&&r.end)for(let t of r.end)e+=t.source;return e}}}function En({start:r,key:e,sep:t,value:s}){let n="";for(let i of r)n+=i.source;if(e&&(n+=Nn(e)),t)for(let i of t)n+=i.source;return s&&(n+=Nn(s)),n}Au.stringify=tg});var qu=g(Cu=>{"use strict";var Ha=Symbol("break visit"),rg=Symbol("skip children"),Nu=Symbol("remove item");function qt(r,e){"type"in r&&r.type==="document"&&(r={start:r.start,value:r.value}),ju(Object.freeze([]),r,e)}qt.BREAK=Ha;qt.SKIP=rg;qt.REMOVE=Nu;qt.itemAtPath=(r,e)=>{let t=r;for(let[s,n]of e){let i=t?.[s];if(i&&"items"in i)t=i.items[n];else return}return t};qt.parentCollection=(r,e)=>{let t=qt.itemAtPath(r,e.slice(0,-1)),s=e[e.length-1][0],n=t?.[s];if(n&&"items"in n)return n;throw new Error("Parent collection not found")};function ju(r,e,t){let s=t(e,r);if(typeof s=="symbol")return s;for(let n of["key","value"]){let i=e[n];if(i&&"items"in i){for(let a=0;a{"use strict";var za=ku(),sg=Eu(),ng=qu(),Ga="\uFEFF",Qa="",Xa="",eo="",ig=r=>!!r&&"items"in r,ag=r=>!!r&&(r.type==="scalar"||r.type==="single-quoted-scalar"||r.type==="double-quoted-scalar"||r.type==="block-scalar");function og(r){switch(r){case Ga:return"";case Qa:return"";case Xa:return"";case eo:return"";default:return JSON.stringify(r)}}function cg(r){switch(r){case Ga:return"byte-order-mark";case Qa:return"doc-mode";case Xa:return"flow-error-end";case eo:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case` +`:case`\r +`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(r[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}pe.createScalarToken=za.createScalarToken;pe.resolveAsScalar=za.resolveAsScalar;pe.setScalarValue=za.setScalarValue;pe.stringify=sg.stringify;pe.visit=ng.visit;pe.BOM=Ga;pe.DOCUMENT=Qa;pe.FLOW_END=Xa;pe.SCALAR=eo;pe.isCollection=ig;pe.isScalar=ag;pe.prettyToken=og;pe.tokenType=cg});var no=g(Mu=>{"use strict";var Ps=jn();function Se(r){switch(r){case void 0:case" ":case` +`:case"\r":case" ":return!0;default:return!1}}var Ru="0123456789ABCDEFabcdef".split(""),lg="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()".split(""),to=",[]{}".split(""),ug=` ,[]{} +\r `.split(""),ro=r=>!r||ug.includes(r),so=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){e&&(this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null),this.atEnd=!t;let s=this.next??"stream";for(;s&&(t||this.hasChars(1));)s=yield*this.parseNext(s)}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===` +`?!0:t==="\r"?this.buffer[e+1]===` +`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let s=0;for(;t===" ";)t=this.buffer[++s+e];if(t==="\r"){let n=this.buffer[s+e+1];if(n===` +`||!n&&!this.atEnd)return e+s+1}return t===` +`||s>=this.indentNext||!t&&!this.atEnd?e+s:-1}if(t==="-"||t==="."){let s=this.buffer.substr(e,3);if((s==="---"||s==="...")&&Se(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&ethis.indentValue&&!Se(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&Se(t)){let s=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=s,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*this.pushIndicators();switch(e[t]){case"#":yield*this.pushCount(e.length-t);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(ro),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return t+=yield*this.parseBlockScalarHeader(),t+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-t),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,t,s=-1;do e=yield*this.pushNewline(),e>0?(t=yield*this.pushSpaces(!1),this.indentValue=s=t):t=0,t+=yield*this.pushSpaces(!0);while(e+t>0);let n=this.getLine();if(n===null)return this.setNext("flow");if((s!==-1&&s"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*this.pushUntil(t=>Se(t)||t==="#")}*parseBlockScalar(){let e=this.pos-1,t=0,s;e:for(let n=this.pos;s=this.buffer[n];++n)switch(s){case" ":t+=1;break;case` +`:e=n,t=0;break;case"\r":{let i=this.buffer[n+1];if(!i&&!this.atEnd)return this.setNext("block-scalar");if(i===` +`)break}default:break e}if(!s&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext+=this.blockScalarIndent;do{let n=this.continueScalar(e+1);if(n===-1)break;e=this.buffer.indexOf(` +`,n)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}if(!this.blockScalarKeep)do{let n=e-1,i=this.buffer[n];i==="\r"&&(i=this.buffer[--n]);let a=n;for(;i===" "||i===" ";)i=this.buffer[--n];if(i===` +`&&n>=this.pos&&n+1+t>a)e=n;else break}while(!0);return yield Ps.SCALAR,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,s=this.pos-1,n;for(;n=this.buffer[++s];)if(n===":"){let i=this.buffer[s+1];if(Se(i)||e&&i===",")break;t=s}else if(Se(n)){let i=this.buffer[s+1];if(n==="\r"&&(i===` +`?(s+=1,n=` +`,i=this.buffer[s+1]):t=s),i==="#"||e&&to.includes(i))break;if(n===` +`){let a=this.continueScalar(s+1);if(a===-1)break;s=Math.max(s,a-2)}}else{if(e&&to.includes(n))break;t=s}return!n&&!this.atEnd?this.setNext("plain-scalar"):(yield Ps.SCALAR,yield*this.pushToIndex(t+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let s=this.buffer.slice(this.pos,e);return s?(yield s,this.pos+=s.length,s.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(ro))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(Se(t)||e&&to.includes(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!Se(t)&&t!==">";)t=this.buffer[++e];return yield*this.pushToIndex(t===">"?e+1:e,!1)}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(lg.includes(t))t=this.buffer[++e];else if(t==="%"&&Ru.includes(this.buffer[e+1])&&Ru.includes(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){let e=this.buffer[this.pos];return e===` +`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===` +`?yield*this.pushCount(2):0}*pushSpaces(e){let t=this.pos-1,s;do s=this.buffer[++t];while(s===" "||e&&s===" ");let n=t-this.pos;return n>0&&(yield this.buffer.substr(this.pos,n),this.pos=t),n}*pushUntil(e){let t=this.pos,s=this.buffer[t];for(;!e(s);)s=this.buffer[++t];return yield*this.pushToIndex(t,!1)}};Mu.Lexer=so});var ao=g(Lu=>{"use strict";var io=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,s=this.lineStarts.length;for(;t>1;this.lineStarts[i]{"use strict";var Du=jn(),dg=no();function je(r,e){for(let t=0;t=0;)switch(r[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;r[++e]?.type==="space";);return r.splice(e,r.length)}function Vu(r){if(r.start.type==="flow-seq-start")for(let e of r.items)e.sep&&!e.value&&!je(e.start,"explicit-key-ind")&&!je(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Uu(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var oo=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new dg.Lexer,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let s of this.lexer.lex(e,t))yield*this.next(s);t||(yield*this.end())}*next(e){if(this.source=e,process.env.LOG_TOKENS&&console.log("|",Du.prettyToken(e)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}let t=Du.tokenType(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*this.step(),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let s=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:s,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e??this.stack.pop();if(t)if(this.stack.length===0)yield t;else{let s=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in s?s.indent:0:t.type==="flow-collection"&&s.type==="document"&&(t.indent=0),t.type==="flow-collection"&&Vu(t),s.type){case"document":s.value=t;break;case"block-scalar":s.props.push(t);break;case"block-map":{let n=s.items[s.items.length-1];if(n.value){s.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(n.sep)n.value=t;else{Object.assign(n,{key:t,sep:[]}),this.onKeyLine=!je(n.start,"explicit-key-ind");return}break}case"block-seq":{let n=s.items[s.items.length-1];n.value?s.items.push({start:[],value:t}):n.value=t;break}case"flow-collection":{let n=s.items[s.items.length-1];!n||n.value?s.items.push({start:[],key:t,sep:[]}):n.sep?n.value=t:Object.assign(n,{key:t,sep:[]});return}default:yield*this.pop(),yield*this.pop(t)}if((s.type==="document"||s.type==="block-map"||s.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let n=t.items[t.items.length-1];n&&!n.sep&&!n.value&&n.start.length>0&&Zu(n.start)===-1&&(t.indent===0||n.start.every(i=>i.type!=="comment"||i.indent=e.indent){let s=!this.onKeyLine&&this.indent===e.indent&&t.sep,n=[];if(s&&t.sep&&!t.value){let i=[];for(let a=0;ae.indent&&(i.length=0);break;default:i.length=0}}i.length>=2&&(n=t.sep.splice(i[1]))}switch(this.type){case"anchor":case"tag":s||t.value?(n.push(this.sourceToken),e.items.push({start:n}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!je(t.start,"explicit-key-ind")?t.start.push(this.sourceToken):s||t.value?(n.push(this.sourceToken),e.items.push({start:n})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]}),this.onKeyLine=!0;return;case"map-value-ind":if(je(t.start,"explicit-key-ind"))if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(je(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]});else if(Uu(t.key)&&!je(t.sep,"newline")){let i=$r(t.start),a=t.key,o=t.sep;o.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:a,sep:o}]})}else n.length>0?t.sep=t.sep.concat(n,this.sourceToken):t.sep.push(this.sourceToken);else if(je(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let i=$r(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||s?e.items.push({start:n,key:null,sep:[this.sourceToken]}):je(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let i=this.flowScalar(this.type);s||t.value?(e.items.push({start:n,key:i,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(i):(Object.assign(t,{key:i,sep:[]}),this.onKeyLine=!0);return}default:{let i=this.startBlockValue(e);if(i){s&&i.type!=="block-seq"&&je(t.start,"explicit-key-ind")&&e.items.push({start:n}),this.stack.push(i);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let s="end"in t.value?t.value.end:void 0;(Array.isArray(s)?s[s.length-1]:void 0)?.type==="comment"?s?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||je(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let s=this.startBlockValue(e);if(s){this.stack.push(s);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let s;do yield*this.pop(),s=this.peek(1);while(s&&s.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let s=this.startBlockValue(e);s?this.stack.push(s):(yield*this.pop(),yield*this.step())}else{let s=this.peek(2);if(s.type==="block-map"&&(this.type==="map-value-ind"&&s.indent===e.indent||this.type==="newline"&&!s.items[s.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&s.type!=="flow-collection"){let n=Cn(s),i=$r(n);Vu(e);let a=e.end.splice(1,e.end.length);a.push(this.sourceToken);let o={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:a}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=o}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(` +`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(` +`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Cn(e),s=$r(t);return s.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Cn(e),s=$r(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(s=>s.type==="newline"||s.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};Bu.Parser=oo});var Yu=g($s=>{"use strict";var Fu=Ja(),fg=bs(),Ts=Ss(),pg=Ji(),hg=ao(),Ku=co();function Wu(r){let e=r.prettyErrors!==!1;return{lineCounter:r.lineCounter||e&&new hg.LineCounter||null,prettyErrors:e}}function mg(r,e={}){let{lineCounter:t,prettyErrors:s}=Wu(e),n=new Ku.Parser(t?.addNewLine),i=new Fu.Composer(e),a=Array.from(i.compose(n.parse(r)));if(s&&t)for(let o of a)o.errors.forEach(Ts.prettifyError(r,t)),o.warnings.forEach(Ts.prettifyError(r,t));return a.length>0?a:Object.assign([],{empty:!0},i.streamInfo())}function Ju(r,e={}){let{lineCounter:t,prettyErrors:s}=Wu(e),n=new Ku.Parser(t?.addNewLine),i=new Fu.Composer(e),a=null;for(let o of i.compose(n.parse(r),!0,r.length))if(!a)a=o;else if(a.options.logLevel!=="silent"){a.errors.push(new Ts.YAMLParseError(o.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return s&&t&&(a.errors.forEach(Ts.prettifyError(r,t)),a.warnings.forEach(Ts.prettifyError(r,t))),a}function yg(r,e,t){let s;typeof e=="function"?s=e:t===void 0&&e&&typeof e=="object"&&(t=e);let n=Ju(r,t);if(!n)return null;if(n.warnings.forEach(i=>pg.warn(n.options.logLevel,i)),n.errors.length>0){if(n.options.logLevel!=="silent")throw n.errors[0];n.errors=[]}return n.toJS(Object.assign({reviver:s},t))}function gg(r,e,t){let s=null;if(typeof e=="function"||Array.isArray(e)?s=e:t===void 0&&e&&(t=e),typeof t=="string"&&(t=t.length),typeof t=="number"){let n=Math.round(t);t=n<1?void 0:n>8?{indent:8}:{indent:n}}if(r===void 0){let{keepUndefined:n}=t??e??{};if(!n)return}return new fg.Document(r,s,t).toString(t)}$s.parse=yg;$s.parseAllDocuments=mg;$s.parseDocument=Ju;$s.stringify=gg});var zu=g(W=>{"use strict";var vg=Ja(),bg=bs(),_g=ka(),lo=Ss(),wg=es(),vt=K(),Sg=tt(),xg=ee(),Og=jt(),Ig=Ct(),Pg=jn(),Tg=no(),$g=ao(),kg=co(),qn=Yu(),Hu=Gr();W.Composer=vg.Composer;W.Document=bg.Document;W.Schema=_g.Schema;W.YAMLError=lo.YAMLError;W.YAMLParseError=lo.YAMLParseError;W.YAMLWarning=lo.YAMLWarning;W.Alias=wg.Alias;W.isAlias=vt.isAlias;W.isCollection=vt.isCollection;W.isDocument=vt.isDocument;W.isMap=vt.isMap;W.isNode=vt.isNode;W.isPair=vt.isPair;W.isScalar=vt.isScalar;W.isSeq=vt.isSeq;W.Pair=Sg.Pair;W.Scalar=xg.Scalar;W.YAMLMap=Og.YAMLMap;W.YAMLSeq=Ig.YAMLSeq;W.CST=Pg;W.Lexer=Tg.Lexer;W.LineCounter=$g.LineCounter;W.Parser=kg.Parser;W.parse=qn.parse;W.parseAllDocuments=qn.parseAllDocuments;W.parseDocument=qn.parseDocument;W.stringify=qn.stringify;W.visit=Hu.visit;W.visitAsync=Hu.visitAsync});var Gu,kr,Qu=kt(()=>{Gu=X(zu()),kr=class{static create(e){return new kr(e)}constructor(e){this.rootDoc=e||{openapi:"3.0.0",info:{title:"app",version:"version"},paths:{},components:{schemas:{},responses:{},parameters:{},examples:{},requestBodies:{},headers:{},securitySchemes:{},links:{},callbacks:{}},tags:[],servers:[]}}getSpec(){return this.rootDoc}getSpecAsJson(e,t){return JSON.stringify(this.rootDoc,e,t)}getSpecAsYaml(){return Gu.stringify(this.rootDoc)}static isValidOpenApiVersion(e){e=e||"";let t=/(\d+)\.(\d+).(\d+)/.exec(e);return!!(t&&parseInt(t[1],10)>=3)}addOpenApiVersion(e){if(!kr.isValidOpenApiVersion(e))throw new Error("Invalid OpenApi version: "+e+". Follow convention: 3.x.y");return this.rootDoc.openapi=e,this}addInfo(e){return this.rootDoc.info=e,this}addContact(e){return this.rootDoc.info.contact=e,this}addLicense(e){return this.rootDoc.info.license=e,this}addTitle(e){return this.rootDoc.info.title=e,this}addDescription(e){return this.rootDoc.info.description=e,this}addTermsOfService(e){return this.rootDoc.info.termsOfService=e,this}addVersion(e){return this.rootDoc.info.version=e,this}addPath(e,t){return this.rootDoc.paths[e]={...this.rootDoc.paths[e]||{},...t},this}addSchema(e,t){return this.rootDoc.components.schemas[e]=t,this}addResponse(e,t){return this.rootDoc.components.responses[e]=t,this}addParameter(e,t){return this.rootDoc.components.parameters[e]=t,this}addExample(e,t){return this.rootDoc.components.examples[e]=t,this}addRequestBody(e,t){return this.rootDoc.components.requestBodies[e]=t,this}addHeader(e,t){return this.rootDoc.components.headers[e]=t,this}addSecurityScheme(e,t){return this.rootDoc.components.securitySchemes[e]=t,this}addLink(e,t){return this.rootDoc.components.links[e]=t,this}addCallback(e,t){return this.rootDoc.components.callbacks[e]=t,this}addServer(e){return this.rootDoc.servers.push(e),this}addTag(e){return this.rootDoc.tags.push(e),this}addExternalDocs(e){return this.rootDoc.externalDocs=e,this}addWebhook(e,t){var s;return(s=this.rootDoc).webhooks??(s.webhooks={}),this.rootDoc.webhooks[e]=t,this}}});var Xu=kt(()=>{Qu()});var ed={};zr(ed,{OpenApiBuilder:()=>kr,Server:()=>Ni,ServerVariable:()=>ji,SpecificationExtension:()=>Ee,addExtension:()=>lp,getExtension:()=>cp,getPath:()=>up,isReferenceObject:()=>dp,isSchemaObject:()=>fp});var td=kt(()=>{uc();Xu()});var sd=g(se=>{"use strict";var rd=se&&se.__createBinding||(Object.create?function(r,e,t,s){s===void 0&&(s=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,s,n)}:function(r,e,t,s){s===void 0&&(s=t),r[s]=e[t]}),Ag=se&&se.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),Eg=se&&se.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&rd(e,r,t)},Ng=se&&se.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&rd(e,r,t);return Ag(e,r),e};Object.defineProperty(se,"__esModule",{value:!0});se.OpenAPI=se.OpenAPIRegistry=se.OpenAPIGenerator=se.extendZodWithOpenApi=void 0;var jg=Go();Object.defineProperty(se,"extendZodWithOpenApi",{enumerable:!0,get:function(){return jg.extendZodWithOpenApi}});Eg(rc(),se);var Cg=ac();Object.defineProperty(se,"OpenAPIGenerator",{enumerable:!0,get:function(){return Cg.OpenAPIGenerator}});var qg=oc();Object.defineProperty(se,"OpenAPIRegistry",{enumerable:!0,get:function(){return qg.OpenAPIRegistry}});se.OpenAPI=Ng((td(),No(ed)))});var ks=g(z=>{"use strict";Object.defineProperty(z,"__esModule",{value:!0});z.getParsedType=z.ZodParsedType=z.util=void 0;var nd;(function(r){r.assertEqual=n=>n;function e(n){}r.assertIs=e;function t(n){throw new Error}r.assertNever=t,r.arrayToEnum=n=>{let i={};for(let a of n)i[a]=a;return i},r.getValidEnumValues=n=>{let i=r.objectKeys(n).filter(o=>typeof n[n[o]]!="number"),a={};for(let o of i)a[o]=n[o];return r.objectValues(a)},r.objectValues=n=>r.objectKeys(n).map(function(i){return n[i]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let i=[];for(let a in n)Object.prototype.hasOwnProperty.call(n,a)&&i.push(a);return i},r.find=(n,i)=>{for(let a of n)if(i(a))return a},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&isFinite(n)&&Math.floor(n)===n;function s(n,i=" | "){return n.map(a=>typeof a=="string"?`'${a}'`:a).join(i)}r.joinValues=s,r.jsonStringifyReplacer=(n,i)=>typeof i=="bigint"?i.toString():i})(nd=z.util||(z.util={}));z.ZodParsedType=nd.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]);var Rg=r=>{switch(typeof r){case"undefined":return z.ZodParsedType.undefined;case"string":return z.ZodParsedType.string;case"number":return isNaN(r)?z.ZodParsedType.nan:z.ZodParsedType.number;case"boolean":return z.ZodParsedType.boolean;case"function":return z.ZodParsedType.function;case"bigint":return z.ZodParsedType.bigint;case"symbol":return z.ZodParsedType.symbol;case"object":return Array.isArray(r)?z.ZodParsedType.array:r===null?z.ZodParsedType.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?z.ZodParsedType.promise:typeof Map<"u"&&r instanceof Map?z.ZodParsedType.map:typeof Set<"u"&&r instanceof Set?z.ZodParsedType.set:typeof Date<"u"&&r instanceof Date?z.ZodParsedType.date:z.ZodParsedType.object;default:return z.ZodParsedType.unknown}};z.getParsedType=Rg});var Rn=g(bt=>{"use strict";Object.defineProperty(bt,"__esModule",{value:!0});bt.ZodError=bt.quotelessJson=bt.ZodIssueCode=void 0;var id=ks();bt.ZodIssueCode=id.util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);var Mg=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:");bt.quotelessJson=Mg;var As=class extends Error{constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){let t=e||function(i){return i.message},s={_errors:[]},n=i=>{for(let a of i.issues)if(a.code==="invalid_union")a.unionErrors.map(n);else if(a.code==="invalid_return_type")n(a.returnTypeError);else if(a.code==="invalid_arguments")n(a.argumentsError);else if(a.path.length===0)s._errors.push(t(a));else{let o=s,c=0;for(;ct.message){let t={},s=[];for(let n of this.issues)n.path.length>0?(t[n.path[0]]=t[n.path[0]]||[],t[n.path[0]].push(e(n))):s.push(e(n));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};bt.ZodError=As;As.create=r=>new As(r)});var fo=g(uo=>{"use strict";Object.defineProperty(uo,"__esModule",{value:!0});var Rt=ks(),le=Rn(),Lg=(r,e)=>{let t;switch(r.code){case le.ZodIssueCode.invalid_type:r.received===Rt.ZodParsedType.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case le.ZodIssueCode.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,Rt.util.jsonStringifyReplacer)}`;break;case le.ZodIssueCode.unrecognized_keys:t=`Unrecognized key(s) in object: ${Rt.util.joinValues(r.keys,", ")}`;break;case le.ZodIssueCode.invalid_union:t="Invalid input";break;case le.ZodIssueCode.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${Rt.util.joinValues(r.options)}`;break;case le.ZodIssueCode.invalid_enum_value:t=`Invalid enum value. Expected ${Rt.util.joinValues(r.options)}, received '${r.received}'`;break;case le.ZodIssueCode.invalid_arguments:t="Invalid function arguments";break;case le.ZodIssueCode.invalid_return_type:t="Invalid function return type";break;case le.ZodIssueCode.invalid_date:t="Invalid date";break;case le.ZodIssueCode.invalid_string:typeof r.validation=="object"?"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:Rt.util.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case le.ZodIssueCode.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(r.minimum)}`:t="Invalid input";break;case le.ZodIssueCode.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(r.maximum)}`:t="Invalid input";break;case le.ZodIssueCode.custom:t="Invalid input";break;case le.ZodIssueCode.invalid_intersection_types:t="Intersection results could not be merged";break;case le.ZodIssueCode.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case le.ZodIssueCode.not_finite:t="Number must be finite";break;default:t=e.defaultError,Rt.util.assertNever(r)}return{message:t}};uo.default=Lg});var Mn=g(Fe=>{"use strict";var Dg=Fe&&Fe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Fe,"__esModule",{value:!0});Fe.getErrorMap=Fe.setErrorMap=Fe.defaultErrorMap=void 0;var ad=Dg(fo());Fe.defaultErrorMap=ad.default;var od=ad.default;function Zg(r){od=r}Fe.setErrorMap=Zg;function Vg(){return od}Fe.getErrorMap=Vg});var po=g(J=>{"use strict";var Ug=J&&J.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(J,"__esModule",{value:!0});J.isAsync=J.isValid=J.isDirty=J.isAborted=J.OK=J.DIRTY=J.INVALID=J.ParseStatus=J.addIssueToContext=J.EMPTY_PATH=J.makeIssue=void 0;var Bg=Mn(),Fg=Ug(fo()),Kg=r=>{let{data:e,path:t,errorMaps:s,issueData:n}=r,i=[...t,...n.path||[]],a={...n,path:i},o="",c=s.filter(l=>!!l).slice().reverse();for(let l of c)o=l(a,{data:e,defaultError:o}).message;return{...n,path:i,message:n.message||o}};J.makeIssue=Kg;J.EMPTY_PATH=[];function Wg(r,e){let t=(0,J.makeIssue)({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,(0,Bg.getErrorMap)(),Fg.default].filter(s=>!!s)});r.common.issues.push(t)}J.addIssueToContext=Wg;var Es=class{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let s=[];for(let n of t){if(n.status==="aborted")return J.INVALID;n.status==="dirty"&&e.dirty(),s.push(n.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let n of t)s.push({key:await n.key,value:await n.value});return Es.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let n of t){let{key:i,value:a}=n;if(i.status==="aborted"||a.status==="aborted")return J.INVALID;i.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),(typeof a.value<"u"||n.alwaysSet)&&(s[i.value]=a.value)}return{status:e.value,value:s}}};J.ParseStatus=Es;J.INVALID=Object.freeze({status:"aborted"});var Jg=r=>({status:"dirty",value:r});J.DIRTY=Jg;var Yg=r=>({status:"valid",value:r});J.OK=Yg;var Hg=r=>r.status==="aborted";J.isAborted=Hg;var zg=r=>r.status==="dirty";J.isDirty=zg;var Gg=r=>r.status==="valid";J.isValid=Gg;var Qg=r=>typeof Promise!==void 0&&r instanceof Promise;J.isAsync=Qg});var ld=g(cd=>{"use strict";Object.defineProperty(cd,"__esModule",{value:!0})});var ud=g(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.errorUtil=void 0;var Xg;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message})(Xg=Ns.errorUtil||(Ns.errorUtil={}))});var bd=g(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.date=f.boolean=f.bigint=f.array=f.any=f.coerce=f.ZodFirstPartyTypeKind=f.late=f.ZodSchema=f.Schema=f.custom=f.ZodPipeline=f.ZodBranded=f.BRAND=f.ZodNaN=f.ZodCatch=f.ZodDefault=f.ZodNullable=f.ZodOptional=f.ZodTransformer=f.ZodEffects=f.ZodPromise=f.ZodNativeEnum=f.ZodEnum=f.ZodLiteral=f.ZodLazy=f.ZodFunction=f.ZodSet=f.ZodMap=f.ZodRecord=f.ZodTuple=f.ZodIntersection=f.ZodDiscriminatedUnion=f.ZodUnion=f.ZodObject=f.objectUtil=f.ZodArray=f.ZodVoid=f.ZodNever=f.ZodUnknown=f.ZodAny=f.ZodNull=f.ZodUndefined=f.ZodSymbol=f.ZodDate=f.ZodBoolean=f.ZodBigInt=f.ZodNumber=f.ZodString=f.ZodType=void 0;f.NEVER=f.void=f.unknown=f.union=f.undefined=f.tuple=f.transformer=f.symbol=f.string=f.strictObject=f.set=f.record=f.promise=f.preprocess=f.pipeline=f.ostring=f.optional=f.onumber=f.oboolean=f.object=f.number=f.nullable=f.null=f.never=f.nativeEnum=f.nan=f.map=f.literal=f.lazy=f.intersection=f.instanceof=f.function=f.enum=f.effect=f.discriminatedUnion=void 0;var Ln=Mn(),V=ud(),m=po(),w=ks(),O=Rn(),Oe=class{constructor(e,t,s,n){this.parent=e,this.data=t,this._path=s,this._key=n}get path(){return this._path.concat(this._key)}},dd=(r,e)=>{if((0,m.isValid)(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,error:new O.ZodError(r.common.issues)}};function R(r){if(!r)return{};let{errorMap:e,invalid_type_error:t,required_error:s,description:n}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(a,o)=>a.code!=="invalid_type"?{message:o.defaultError}:typeof o.data>"u"?{message:s??o.defaultError}:{message:t??o.defaultError},description:n}}var C=class{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return(0,w.getParsedType)(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:(0,w.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new m.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,w.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if((0,m.isAsync)(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){var s;let n={common:{issues:[],async:(s=t?.async)!==null&&s!==void 0?s:!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,w.getParsedType)(e)},i=this._parseSync({data:e,path:n.path,parent:n});return dd(n,i)}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,w.getParsedType)(e)},n=this._parse({data:e,path:s.path,parent:s}),i=await((0,m.isAsync)(n)?n:Promise.resolve(n));return dd(s,i)}refine(e,t){let s=n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t;return this._refinement((n,i)=>{let a=e(n),o=()=>i.addIssue({code:O.ZodIssueCode.custom,...s(n)});return typeof Promise<"u"&&a instanceof Promise?a.then(c=>c?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,n)=>e(s)?!0:(n.addIssue(typeof t=="function"?t(s,n):t),!1))}_refinement(e){return new ge({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return xe.create(this)}nullable(){return ot.create(this)}nullish(){return this.optional().nullable()}array(){return ye.create(this)}promise(){return St.create(this)}or(e){return Vt.create([this,e])}and(e){return Ut.create(this,e)}transform(e){return new ge({schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new Yt({innerType:this,defaultValue:t,typeName:E.ZodDefault})}brand(){return new Zn({typeName:E.ZodBranded,type:this,...R(void 0)})}catch(e){let t=typeof e=="function"?e:()=>e;return new qr({innerType:this,defaultValue:t,typeName:E.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Ht.create(this,e)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};f.ZodType=C;f.Schema=C;f.ZodSchema=C;var ev=/^c[^\s-]{8,}$/i,tv=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,rv=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,sv=r=>r.precision?r.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${r.precision}}(([+-]\\d{2}:\\d{2})|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${r.precision}}Z$`):r.precision===0?r.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}:\\d{2})|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):r.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}:\\d{2})|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$"),Ce=class extends C{constructor(){super(...arguments),this._regex=(e,t,s)=>this.refinement(n=>e.test(n),{validation:t,code:O.ZodIssueCode.invalid_string,...V.errorUtil.errToObj(s)}),this.nonempty=e=>this.min(1,V.errorUtil.errToObj(e)),this.trim=()=>new Ce({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==w.ZodParsedType.string){let i=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(i,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.string,received:i.parsedType}),m.INVALID}let s=new m.ParseStatus,n;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:O.ZodIssueCode.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),s.dirty());else if(i.kind==="length"){let a=e.data.length>i.value,o=e.data.length"u"?null:e?.precision,offset:(t=e?.offset)!==null&&t!==void 0?t:!1,...V.errorUtil.errToObj(e?.message)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...V.errorUtil.errToObj(t)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...V.errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...V.errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...V.errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...V.errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...V.errorUtil.errToObj(t)})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value{var e;return new Ce({checks:[],typeName:E.ZodString,coerce:(e=r?.coerce)!==null&&e!==void 0?e:!1,...R(r)})};function nv(r,e){let t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=t>s?t:s,i=parseInt(r.toFixed(n).replace(".","")),a=parseInt(e.toFixed(n).replace(".",""));return i%a/Math.pow(10,n)}var Ke=class extends C{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==w.ZodParsedType.number){let i=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(i,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.number,received:i.parsedType}),m.INVALID}let s,n=new m.ParseStatus;for(let i of this._def.checks)i.kind==="int"?w.util.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:"integer",received:"float",message:i.message}),n.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(s=this._getOrReturnCtx(e,s),(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind==="multipleOf"?nv(e.data,i.value)!==0&&(s=this._getOrReturnCtx(e,s),(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.not_finite,message:i.message}),n.dirty()):w.util.assertNever(i);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,V.errorUtil.toString(t))}gt(e,t){return this.setLimit("min",e,!1,V.errorUtil.toString(t))}lte(e,t){return this.setLimit("max",e,!0,V.errorUtil.toString(t))}lt(e,t){return this.setLimit("max",e,!1,V.errorUtil.toString(t))}setLimit(e,t,s,n){return new Ke({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:V.errorUtil.toString(n)}]})}_addCheck(e){return new Ke({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:V.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:V.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:V.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:V.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:V.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:V.errorUtil.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:V.errorUtil.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuee.kind==="int")}};f.ZodNumber=Ke;Ke.create=r=>new Ke({checks:[],typeName:E.ZodNumber,coerce:r?.coerce||!1,...R(r)});var Mt=class extends C{_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==w.ZodParsedType.bigint){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.bigint,received:s.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodBigInt=Mt;Mt.create=r=>{var e;return new Mt({typeName:E.ZodBigInt,coerce:(e=r?.coerce)!==null&&e!==void 0?e:!1,...R(r)})};var Lt=class extends C{_parse(e){if(this._def.coerce&&(e.data=Boolean(e.data)),this._getType(e)!==w.ZodParsedType.boolean){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.boolean,received:s.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodBoolean=Lt;Lt.create=r=>new Lt({typeName:E.ZodBoolean,coerce:r?.coerce||!1,...R(r)});var it=class extends C{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==w.ZodParsedType.date){let i=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(i,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.date,received:i.parsedType}),m.INVALID}if(isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(i,{code:O.ZodIssueCode.invalid_date}),m.INVALID}let s=new m.ParseStatus,n;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(n=this._getOrReturnCtx(e,n),(0,m.addIssueToContext)(n,{code:O.ZodIssueCode.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),s.dirty()):w.util.assertNever(i);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new it({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:V.errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:V.errorUtil.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew it({checks:[],coerce:r?.coerce||!1,typeName:E.ZodDate,...R(r)});var Er=class extends C{_parse(e){if(this._getType(e)!==w.ZodParsedType.symbol){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.symbol,received:s.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodSymbol=Er;Er.create=r=>new Er({typeName:E.ZodSymbol,...R(r)});var Dt=class extends C{_parse(e){if(this._getType(e)!==w.ZodParsedType.undefined){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.undefined,received:s.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodUndefined=Dt;Dt.create=r=>new Dt({typeName:E.ZodUndefined,...R(r)});var Zt=class extends C{_parse(e){if(this._getType(e)!==w.ZodParsedType.null){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.null,received:s.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodNull=Zt;Zt.create=r=>new Zt({typeName:E.ZodNull,...R(r)});var wt=class extends C{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,m.OK)(e.data)}};f.ZodAny=wt;wt.create=r=>new wt({typeName:E.ZodAny,...R(r)});var nt=class extends C{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,m.OK)(e.data)}};f.ZodUnknown=nt;nt.create=r=>new nt({typeName:E.ZodUnknown,...R(r)});var qe=class extends C{_parse(e){let t=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.never,received:t.parsedType}),m.INVALID}};f.ZodNever=qe;qe.create=r=>new qe({typeName:E.ZodNever,...R(r)});var Nr=class extends C{_parse(e){if(this._getType(e)!==w.ZodParsedType.undefined){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.void,received:s.parsedType}),m.INVALID}return(0,m.OK)(e.data)}};f.ZodVoid=Nr;Nr.create=r=>new Nr({typeName:E.ZodVoid,...R(r)});var ye=class extends C{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),n=this._def;if(t.parsedType!==w.ZodParsedType.array)return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.array,received:t.parsedType}),m.INVALID;if(n.exactLength!==null){let a=t.data.length>n.exactLength.value,o=t.data.lengthn.maxLength.value&&((0,m.addIssueToContext)(t,{code:O.ZodIssueCode.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),s.dirty()),t.common.async)return Promise.all(t.data.map((a,o)=>n.type._parseAsync(new Oe(t,a,t.path,o)))).then(a=>m.ParseStatus.mergeArray(s,a));let i=t.data.map((a,o)=>n.type._parseSync(new Oe(t,a,t.path,o)));return m.ParseStatus.mergeArray(s,i)}get element(){return this._def.type}min(e,t){return new ye({...this._def,minLength:{value:e,message:V.errorUtil.toString(t)}})}max(e,t){return new ye({...this._def,maxLength:{value:e,message:V.errorUtil.toString(t)}})}length(e,t){return new ye({...this._def,exactLength:{value:e,message:V.errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}};f.ZodArray=ye;ye.create=(r,e)=>new ye({type:r,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...R(e)});var pd;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(pd=f.objectUtil||(f.objectUtil={}));var fd=r=>e=>new Y({...r,shape:()=>({...r.shape(),...e})});function Ar(r){if(r instanceof Y){let e={};for(let t in r.shape){let s=r.shape[t];e[t]=xe.create(Ar(s))}return new Y({...r._def,shape:()=>e})}else return r instanceof ye?ye.create(Ar(r.element)):r instanceof xe?xe.create(Ar(r.unwrap())):r instanceof ot?ot.create(Ar(r.unwrap())):r instanceof Ie?Ie.create(r.items.map(e=>Ar(e))):r}var Y=class extends C{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=fd(this._def),this.extend=fd(this._def)}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=w.util.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==w.ZodParsedType.object){let l=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(l,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.object,received:l.parsedType}),m.INVALID}let{status:s,ctx:n}=this._processInputParams(e),{shape:i,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof qe&&this._def.unknownKeys==="strip"))for(let l in n.data)a.includes(l)||o.push(l);let c=[];for(let l of a){let u=i[l],d=n.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new Oe(n,d,n.path,l)),alwaysSet:l in n.data})}if(this._def.catchall instanceof qe){let l=this._def.unknownKeys;if(l==="passthrough")for(let u of o)c.push({key:{status:"valid",value:u},value:{status:"valid",value:n.data[u]}});else if(l==="strict")o.length>0&&((0,m.addIssueToContext)(n,{code:O.ZodIssueCode.unrecognized_keys,keys:o}),s.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let u of o){let d=n.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new Oe(n,d,n.path,u)),alwaysSet:u in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let l=[];for(let u of c){let d=await u.key;l.push({key:d,value:await u.value,alwaysSet:u.alwaysSet})}return l}).then(l=>m.ParseStatus.mergeObjectSync(s,l)):m.ParseStatus.mergeObjectSync(s,c)}get shape(){return this._def.shape()}strict(e){return V.errorUtil.errToObj,new Y({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{var n,i,a,o;let c=(a=(i=(n=this._def).errorMap)===null||i===void 0?void 0:i.call(n,t,s).message)!==null&&a!==void 0?a:s.defaultError;return t.code==="unrecognized_keys"?{message:(o=V.errorUtil.errToObj(e).message)!==null&&o!==void 0?o:c}:{message:c}}}:{}})}strip(){return new Y({...this._def,unknownKeys:"strip"})}passthrough(){return new Y({...this._def,unknownKeys:"passthrough"})}setKey(e,t){return this.augment({[e]:t})}merge(e){return new Y({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>pd.mergeShapes(this._def.shape(),e._def.shape()),typeName:E.ZodObject})}catchall(e){return new Y({...this._def,catchall:e})}pick(e){let t={};return w.util.objectKeys(e).map(s=>{this.shape[s]&&(t[s]=this.shape[s])}),new Y({...this._def,shape:()=>t})}omit(e){let t={};return w.util.objectKeys(this.shape).map(s=>{w.util.objectKeys(e).indexOf(s)===-1&&(t[s]=this.shape[s])}),new Y({...this._def,shape:()=>t})}deepPartial(){return Ar(this)}partial(e){let t={};if(e)return w.util.objectKeys(this.shape).map(s=>{w.util.objectKeys(e).indexOf(s)===-1?t[s]=this.shape[s]:t[s]=this.shape[s].optional()}),new Y({...this._def,shape:()=>t});for(let s in this.shape){let n=this.shape[s];t[s]=n.optional()}return new Y({...this._def,shape:()=>t})}required(e){let t={};if(e)w.util.objectKeys(this.shape).map(s=>{if(w.util.objectKeys(e).indexOf(s)===-1)t[s]=this.shape[s];else{let i=this.shape[s];for(;i instanceof xe;)i=i._def.innerType;t[s]=i}});else for(let s in this.shape){let i=this.shape[s];for(;i instanceof xe;)i=i._def.innerType;t[s]=i}return new Y({...this._def,shape:()=>t})}keyof(){return hd(w.util.objectKeys(this.shape))}};f.ZodObject=Y;Y.create=(r,e)=>new Y({shape:()=>r,unknownKeys:"strip",catchall:qe.create(),typeName:E.ZodObject,...R(e)});Y.strictCreate=(r,e)=>new Y({shape:()=>r,unknownKeys:"strict",catchall:qe.create(),typeName:E.ZodObject,...R(e)});Y.lazycreate=(r,e)=>new Y({shape:r,unknownKeys:"strip",catchall:qe.create(),typeName:E.ZodObject,...R(e)});var Vt=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function n(i){for(let o of i)if(o.result.status==="valid")return o.result;for(let o of i)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(o=>new O.ZodError(o.ctx.common.issues));return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_union,unionErrors:a}),m.INVALID}if(t.common.async)return Promise.all(s.map(async i=>{let a={...t,common:{...t.common,issues:[]},parent:null};return{result:await i._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(n);{let i,a=[];for(let c of s){let l={...t,common:{...t.common,issues:[]},parent:null},u=c._parseSync({data:t.data,path:t.path,parent:l});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:l}),l.common.issues.length&&a.push(l.common.issues)}if(i)return t.common.issues.push(...i.ctx.common.issues),i.result;let o=a.map(c=>new O.ZodError(c));return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_union,unionErrors:o}),m.INVALID}}get options(){return this._def.options}};f.ZodUnion=Vt;Vt.create=(r,e)=>new Vt({options:r,typeName:E.ZodUnion,...R(e)});var Dn=r=>r instanceof Ft?Dn(r.schema):r instanceof ge?Dn(r.innerType()):r instanceof Kt?[r.value]:r instanceof Wt?r.options:r instanceof Jt?Object.keys(r.enum):r instanceof Yt?Dn(r._def.innerType):r instanceof Dt?[void 0]:r instanceof Zt?[null]:null,jr=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==w.ZodParsedType.object)return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.object,received:t.parsedType}),m.INVALID;let s=this.discriminator,n=t.data[s],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):((0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),m.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let n=new Map;for(let i of t){let a=Dn(i.shape[e]);if(!a)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of a){if(n.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);n.set(o,i)}}return new jr({typeName:E.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...R(s)})}};f.ZodDiscriminatedUnion=jr;function ho(r,e){let t=(0,w.getParsedType)(r),s=(0,w.getParsedType)(e);if(r===e)return{valid:!0,data:r};if(t===w.ZodParsedType.object&&s===w.ZodParsedType.object){let n=w.util.objectKeys(e),i=w.util.objectKeys(r).filter(o=>n.indexOf(o)!==-1),a={...r,...e};for(let o of i){let c=ho(r[o],e[o]);if(!c.valid)return{valid:!1};a[o]=c.data}return{valid:!0,data:a}}else if(t===w.ZodParsedType.array&&s===w.ZodParsedType.array){if(r.length!==e.length)return{valid:!1};let n=[];for(let i=0;i{if((0,m.isAborted)(i)||(0,m.isAborted)(a))return m.INVALID;let o=ho(i.value,a.value);return o.valid?(((0,m.isDirty)(i)||(0,m.isDirty)(a))&&t.dirty(),{status:t.value,value:o.data}):((0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_intersection_types}),m.INVALID)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([i,a])=>n(i,a)):n(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};f.ZodIntersection=Ut;Ut.create=(r,e,t)=>new Ut({left:r,right:e,typeName:E.ZodIntersection,...R(t)});var Ie=class extends C{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.ZodParsedType.array)return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.array,received:s.parsedType}),m.INVALID;if(s.data.lengththis._def.items.length&&((0,m.addIssueToContext)(s,{code:O.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let i=s.data.map((a,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new Oe(s,a,s.path,o)):null}).filter(a=>!!a);return s.common.async?Promise.all(i).then(a=>m.ParseStatus.mergeArray(t,a)):m.ParseStatus.mergeArray(t,i)}get items(){return this._def.items}rest(e){return new Ie({...this._def,rest:e})}};f.ZodTuple=Ie;Ie.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ie({items:r,typeName:E.ZodTuple,rest:null,...R(e)})};var Bt=class extends C{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.ZodParsedType.object)return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.object,received:s.parsedType}),m.INVALID;let n=[],i=this._def.keyType,a=this._def.valueType;for(let o in s.data)n.push({key:i._parse(new Oe(s,o,s.path,o)),value:a._parse(new Oe(s,s.data[o],s.path,o))});return s.common.async?m.ParseStatus.mergeObjectAsync(t,n):m.ParseStatus.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof C?new Bt({keyType:e,valueType:t,typeName:E.ZodRecord,...R(s)}):new Bt({keyType:Ce.create(),valueType:e,typeName:E.ZodRecord,...R(t)})}};f.ZodRecord=Bt;var Cr=class extends C{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.ZodParsedType.map)return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.map,received:s.parsedType}),m.INVALID;let n=this._def.keyType,i=this._def.valueType,a=[...s.data.entries()].map(([o,c],l)=>({key:n._parse(new Oe(s,o,s.path,[l,"key"])),value:i._parse(new Oe(s,c,s.path,[l,"value"]))}));if(s.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of a){let l=await c.key,u=await c.value;if(l.status==="aborted"||u.status==="aborted")return m.INVALID;(l.status==="dirty"||u.status==="dirty")&&t.dirty(),o.set(l.value,u.value)}return{status:t.value,value:o}})}else{let o=new Map;for(let c of a){let l=c.key,u=c.value;if(l.status==="aborted"||u.status==="aborted")return m.INVALID;(l.status==="dirty"||u.status==="dirty")&&t.dirty(),o.set(l.value,u.value)}return{status:t.value,value:o}}}};f.ZodMap=Cr;Cr.create=(r,e,t)=>new Cr({valueType:e,keyType:r,typeName:E.ZodMap,...R(t)});var at=class extends C{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==w.ZodParsedType.set)return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.set,received:s.parsedType}),m.INVALID;let n=this._def;n.minSize!==null&&s.data.sizen.maxSize.value&&((0,m.addIssueToContext)(s,{code:O.ZodIssueCode.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(c){let l=new Set;for(let u of c){if(u.status==="aborted")return m.INVALID;u.status==="dirty"&&t.dirty(),l.add(u.value)}return{status:t.value,value:l}}let o=[...s.data.values()].map((c,l)=>i._parse(new Oe(s,c,s.path,l)));return s.common.async?Promise.all(o).then(c=>a(c)):a(o)}min(e,t){return new at({...this._def,minSize:{value:e,message:V.errorUtil.toString(t)}})}max(e,t){return new at({...this._def,maxSize:{value:e,message:V.errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};f.ZodSet=at;at.create=(r,e)=>new at({valueType:r,minSize:null,maxSize:null,typeName:E.ZodSet,...R(e)});var _t=class extends C{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==w.ZodParsedType.function)return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.function,received:t.parsedType}),m.INVALID;function s(o,c){return(0,m.makeIssue)({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,Ln.getErrorMap)(),Ln.defaultErrorMap].filter(l=>!!l),issueData:{code:O.ZodIssueCode.invalid_arguments,argumentsError:c}})}function n(o,c){return(0,m.makeIssue)({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,Ln.getErrorMap)(),Ln.defaultErrorMap].filter(l=>!!l),issueData:{code:O.ZodIssueCode.invalid_return_type,returnTypeError:c}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;return this._def.returns instanceof St?(0,m.OK)(async(...o)=>{let c=new O.ZodError([]),l=await this._def.args.parseAsync(o,i).catch(p=>{throw c.addIssue(s(o,p)),c}),u=await a(...l);return await this._def.returns._def.type.parseAsync(u,i).catch(p=>{throw c.addIssue(n(u,p)),c})}):(0,m.OK)((...o)=>{let c=this._def.args.safeParse(o,i);if(!c.success)throw new O.ZodError([s(o,c.error)]);let l=a(...c.data),u=this._def.returns.safeParse(l,i);if(!u.success)throw new O.ZodError([n(l,u.error)]);return u.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new _t({...this._def,args:Ie.create(e).rest(nt.create())})}returns(e){return new _t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new _t({args:e||Ie.create([]).rest(nt.create()),returns:t||nt.create(),typeName:E.ZodFunction,...R(s)})}};f.ZodFunction=_t;var Ft=class extends C{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};f.ZodLazy=Ft;Ft.create=(r,e)=>new Ft({getter:r,typeName:E.ZodLazy,...R(e)});var Kt=class extends C{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_literal,expected:this._def.value}),m.INVALID}return{status:"valid",value:e.data}}get value(){return this._def.value}};f.ZodLiteral=Kt;Kt.create=(r,e)=>new Kt({value:r,typeName:E.ZodLiteral,...R(e)});function hd(r,e){return new Wt({values:r,typeName:E.ZodEnum,...R(e)})}var Wt=class extends C{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return(0,m.addIssueToContext)(t,{expected:w.util.joinValues(s),received:t.parsedType,code:O.ZodIssueCode.invalid_type}),m.INVALID}if(this._def.values.indexOf(e.data)===-1){let t=this._getOrReturnCtx(e),s=this._def.values;return(0,m.addIssueToContext)(t,{received:t.data,code:O.ZodIssueCode.invalid_enum_value,options:s}),m.INVALID}return(0,m.OK)(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}};f.ZodEnum=Wt;Wt.create=hd;var Jt=class extends C{_parse(e){let t=w.util.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==w.ZodParsedType.string&&s.parsedType!==w.ZodParsedType.number){let n=w.util.objectValues(t);return(0,m.addIssueToContext)(s,{expected:w.util.joinValues(n),received:s.parsedType,code:O.ZodIssueCode.invalid_type}),m.INVALID}if(t.indexOf(e.data)===-1){let n=w.util.objectValues(t);return(0,m.addIssueToContext)(s,{received:s.data,code:O.ZodIssueCode.invalid_enum_value,options:n}),m.INVALID}return(0,m.OK)(e.data)}get enum(){return this._def.values}};f.ZodNativeEnum=Jt;Jt.create=(r,e)=>new Jt({values:r,typeName:E.ZodNativeEnum,...R(e)});var St=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==w.ZodParsedType.promise&&t.common.async===!1)return(0,m.addIssueToContext)(t,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.promise,received:t.parsedType}),m.INVALID;let s=t.parsedType===w.ZodParsedType.promise?t.data:Promise.resolve(t.data);return(0,m.OK)(s.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}};f.ZodPromise=St;St.create=(r,e)=>new St({type:r,typeName:E.ZodPromise,...R(e)});var ge=class extends C{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===E.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=this._def.effect||null;if(n.type==="preprocess"){let a=n.transform(s.data);return s.common.async?Promise.resolve(a).then(o=>this._def.schema._parseAsync({data:o,path:s.path,parent:s})):this._def.schema._parseSync({data:a,path:s.path,parent:s})}let i={addIssue:a=>{(0,m.addIssueToContext)(s,a),a.fatal?t.abort():t.dirty()},get path(){return s.path}};if(i.addIssue=i.addIssue.bind(i),n.type==="refinement"){let a=o=>{let c=n.refinement(o,i);if(s.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){let o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?m.INVALID:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?m.INVALID:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(n.type==="transform")if(s.common.async===!1){let a=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!(0,m.isValid)(a))return a;let o=n.transform(a.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(a=>(0,m.isValid)(a)?Promise.resolve(n.transform(a.value,i)).then(o=>({status:t.value,value:o})):a);w.util.assertNever(n)}};f.ZodEffects=ge;f.ZodTransformer=ge;ge.create=(r,e,t)=>new ge({schema:r,typeName:E.ZodEffects,effect:e,...R(t)});ge.createWithPreprocess=(r,e,t)=>new ge({schema:e,effect:{type:"preprocess",transform:r},typeName:E.ZodEffects,...R(t)});var xe=class extends C{_parse(e){return this._getType(e)===w.ZodParsedType.undefined?(0,m.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};f.ZodOptional=xe;xe.create=(r,e)=>new xe({innerType:r,typeName:E.ZodOptional,...R(e)});var ot=class extends C{_parse(e){return this._getType(e)===w.ZodParsedType.null?(0,m.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};f.ZodNullable=ot;ot.create=(r,e)=>new ot({innerType:r,typeName:E.ZodNullable,...R(e)});var Yt=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===w.ZodParsedType.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};f.ZodDefault=Yt;Yt.create=(r,e)=>new Yt({innerType:r,typeName:E.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...R(e)});var qr=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.innerType._parse({data:t.data,path:t.path,parent:t});return(0,m.isAsync)(s)?s.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.defaultValue()})):{status:"valid",value:s.status==="valid"?s.value:this._def.defaultValue()}}removeDefault(){return this._def.innerType}};f.ZodCatch=qr;qr.create=(r,e)=>new qr({innerType:r,typeName:E.ZodCatch,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...R(e)});var Rr=class extends C{_parse(e){if(this._getType(e)!==w.ZodParsedType.nan){let s=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(s,{code:O.ZodIssueCode.invalid_type,expected:w.ZodParsedType.nan,received:s.parsedType}),m.INVALID}return{status:"valid",value:e.data}}};f.ZodNaN=Rr;Rr.create=r=>new Rr({typeName:E.ZodNaN,...R(r)});f.BRAND=Symbol("zod_brand");var Zn=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}};f.ZodBranded=Zn;var Ht=class extends C{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?m.INVALID:i.status==="dirty"?(t.dirty(),(0,m.DIRTY)(i.value)):this._def.out._parseAsync({data:i.value,path:s.path,parent:s})})();{let n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?m.INVALID:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,t){return new Ht({in:e,out:t,typeName:E.ZodPipeline})}};f.ZodPipeline=Ht;var iv=(r,e={},t)=>r?wt.create().superRefine((s,n)=>{if(!r(s)){let i=typeof e=="function"?e(s):e,a=typeof i=="string"?{message:i}:i;n.addIssue({code:"custom",...a,fatal:t})}}):wt.create();f.custom=iv;f.late={object:Y.lazycreate};var E;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline"})(E=f.ZodFirstPartyTypeKind||(f.ZodFirstPartyTypeKind={}));var av=(r,e={message:`Input not instance of ${r.name}`})=>(0,f.custom)(t=>t instanceof r,e,!0);f.instanceof=av;var md=Ce.create;f.string=md;var yd=Ke.create;f.number=yd;var ov=Rr.create;f.nan=ov;var cv=Mt.create;f.bigint=cv;var gd=Lt.create;f.boolean=gd;var lv=it.create;f.date=lv;var uv=Er.create;f.symbol=uv;var dv=Dt.create;f.undefined=dv;var fv=Zt.create;f.null=fv;var pv=wt.create;f.any=pv;var hv=nt.create;f.unknown=hv;var mv=qe.create;f.never=mv;var yv=Nr.create;f.void=yv;var gv=ye.create;f.array=gv;var vv=Y.create;f.object=vv;var bv=Y.strictCreate;f.strictObject=bv;var _v=Vt.create;f.union=_v;var wv=jr.create;f.discriminatedUnion=wv;var Sv=Ut.create;f.intersection=Sv;var xv=Ie.create;f.tuple=xv;var Ov=Bt.create;f.record=Ov;var Iv=Cr.create;f.map=Iv;var Pv=at.create;f.set=Pv;var Tv=_t.create;f.function=Tv;var $v=Ft.create;f.lazy=$v;var kv=Kt.create;f.literal=kv;var Av=Wt.create;f.enum=Av;var Ev=Jt.create;f.nativeEnum=Ev;var Nv=St.create;f.promise=Nv;var vd=ge.create;f.effect=vd;f.transformer=vd;var jv=xe.create;f.optional=jv;var Cv=ot.create;f.nullable=Cv;var qv=ge.createWithPreprocess;f.preprocess=qv;var Rv=Ht.create;f.pipeline=Rv;var Mv=()=>md().optional();f.ostring=Mv;var Lv=()=>yd().optional();f.onumber=Lv;var Dv=()=>gd().optional();f.oboolean=Dv;f.coerce={string:r=>Ce.create({...r,coerce:!0}),number:r=>Ke.create({...r,coerce:!0}),boolean:r=>Lt.create({...r,coerce:!0}),bigint:r=>Mt.create({...r,coerce:!0}),date:r=>it.create({...r,coerce:!0})};f.NEVER=m.INVALID});var mo=g(Pe=>{"use strict";var Zv=Pe&&Pe.__createBinding||(Object.create?function(r,e,t,s){s===void 0&&(s=t),Object.defineProperty(r,s,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,s){s===void 0&&(s=t),r[s]=e[t]}),Mr=Pe&&Pe.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Zv(e,r,t)};Object.defineProperty(Pe,"__esModule",{value:!0});Mr(Mn(),Pe);Mr(po(),Pe);Mr(ld(),Pe);Mr(ks(),Pe);Mr(bd(),Pe);Mr(Rn(),Pe)});var Sd=g(he=>{"use strict";var _d=he&&he.__createBinding||(Object.create?function(r,e,t,s){s===void 0&&(s=t),Object.defineProperty(r,s,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,s){s===void 0&&(s=t),r[s]=e[t]}),Vv=he&&he.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),Uv=he&&he.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&_d(e,r,t);return Vv(e,r),e},Bv=he&&he.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&_d(e,r,t)};Object.defineProperty(he,"__esModule",{value:!0});he.z=void 0;var wd=Uv(mo());he.z=wd;Bv(mo(),he);he.default=wd});var Lr=g(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.z=void 0;var Fv=sd(),xd=Sd();Object.defineProperty(Vn,"z",{enumerable:!0,get:function(){return xd.z}});(0,Fv.extendZodWithOpenApi)(xd.z)});var Zr=g(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.getIgnore=te.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME=te.OBJECT_WITH_NO_PROPERTIES_RULE_NAME=te.KONFIG_OAS2_SCHEMA_NAME=te.NO_ADDITIONAL_PROPERTIES_RULE_NAME=te.IGNORE_NAME=void 0;var Dr=Lr();te.IGNORE_NAME="x-konfig-ignore";te.NO_ADDITIONAL_PROPERTIES_RULE_NAME="no-additional-properties";te.KONFIG_OAS2_SCHEMA_NAME="konfig-oas2-schema";te.OBJECT_WITH_NO_PROPERTIES_RULE_NAME="object-with-no-properties";te.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME="potential-incorrect-type";var Kv=Dr.z.object({[te.NO_ADDITIONAL_PROPERTIES_RULE_NAME]:Dr.z.boolean().optional(),[te.KONFIG_OAS2_SCHEMA_NAME]:Dr.z.object({paths:Dr.z.string().array()}).optional(),[te.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME]:Dr.z.boolean().optional(),[te.OBJECT_WITH_NO_PROPERTIES_RULE_NAME]:Dr.z.boolean().optional()}),Wv=({spec:r})=>{let e=r.info;if(te.IGNORE_NAME in e){let t=e[te.IGNORE_NAME],s=Kv.safeParse(t);return s.success===!0?s.data:{}}return{}};te.getIgnore=Wv});var Od=g(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});Un.isSchemaExamplePossibleIncorrectDataType=void 0;function Jv({schema:r}){if(typeof r!="object"||r===null||!("type"in r)||!("example"in r))return[];let e=r.type;if(typeof e!="string")return[];let t=r.example;return Yv(e,t)}Un.isSchemaExamplePossibleIncorrectDataType=Jv;var Yv=(r,e)=>r==="string"&&typeof e=="string"?Hv(e):[];function Hv(r){return Gv(r)?[{message:"Could be integer type based on example"}]:Qv(r)?[{message:"Could be number type based on example"}]:zv(r)?[{message:"Could be boolean type based on example"}]:[]}function zv(r){return r==="true"||r==="false"}function Gv(r){return/^[-+]?\d+$/.test(r)}function Qv(r){var e=/^-?\d+(?:[.,]\d*?)?$/;if(!e.test(r))return!1;let t=parseFloat(r);return!isNaN(t)}});var Kn=g(Fn=>{"use strict";Object.defineProperty(Fn,"__esModule",{value:!0});Fn.getSecurityParameterName=void 0;var Xv=({security:r})=>{if(r.type==="oauth2"||r.type==="basic"||r.type==="http")return"Authorization";if(r.type==="apiKey")return r.name;throw Error("Not Implemented")};Fn.getSecurityParameterName=Xv});var Td=g(Wn=>{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.hasAny=void 0;var eb=({a:r,b:e,comparator:t})=>r.filter(s=>e.filter(n=>t(s,n)).length>0).length>0;Wn.hasAny=eb});var yo=g(Jn=>{"use strict";Object.defineProperty(Jn,"__esModule",{value:!0});Jn.resolveRefStoplight=void 0;var tb=require("@stoplight/json-ref-resolver"),rb=new tb.Resolver,sb=async({refOrObject:r,source:e})=>"$ref"in r?(await rb.resolve(e,{jsonPointer:r.$ref})).result:r;Jn.resolveRefStoplight=sb});var go=g(Yn=>{"use strict";Object.defineProperty(Yn,"__esModule",{value:!0});Yn.getOperationParametersDeprecatedStoplight=void 0;var nb=yo(),ib=async({operation:r,document:e})=>{let t=r.parameters?.map(async s=>await(0,nb.resolveRefStoplight)({refOrObject:s,source:e}));if(t!==void 0)return await Promise.all(t)};Yn.getOperationParametersDeprecatedStoplight=ib});var vo=g(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.getSecuritySchemesStoplight=void 0;var ab=yo(),ob=async({document:r})=>{if("securityDefinitions"in r)return r.securityDefinitions;if("components"in r){let e=r.components?.securitySchemes;if(e===void 0)return;let t=await Promise.all(Object.entries(e).map(async([s,n])=>[s,await(0,ab.resolveRefStoplight)({refOrObject:n,source:r})]));return Object.fromEntries(t)}};Hn.getSecuritySchemesStoplight=ob});var $d=g(zn=>{"use strict";Object.defineProperty(zn,"__esModule",{value:!0});zn.findRedundantSecurityRequirementAndParameterStoplight=void 0;var cb=Kn(),lb=Td(),ub=go(),db=vo();async function fb({document:r,operation:e}){let t=r.security??e.security;if(t===void 0)return{found:!1};let s=await(0,db.getSecuritySchemesStoplight)({document:r});if(s===void 0)return{found:!1};let n=await(0,ub.getOperationParametersDeprecatedStoplight)({operation:e,document:r});if(n===void 0)return{found:!1};let i=t.flatMap(l=>Object.keys(l).map(u=>{let d=s[u];if(d===void 0)throw Error(`Found security requirement ${u} referring to non-existent security scheme`);return d})),a,o;if((0,lb.hasAny)({a:n,b:i,comparator:(l,u)=>{let d=l.name===(0,cb.getSecurityParameterName)({security:u});return d?(a=l.name,o=l,d):!1}})){if(a===void 0)throw Error("Name should have been assigned when redundancy was detected.");if(o===void 0)throw Error("Parameter should have been assigned when redundancy was detected.");return{found:!0,name:a,parameter:o,parameters:n}}return{found:!1}}zn.findRedundantSecurityRequirementAndParameterStoplight=fb});var Wd=g(ii=>{"use strict";Object.defineProperty(ii,"__esModule",{value:!0});ii.urlRegex=void 0;ii.urlRegex=/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/});var Jd=g(lr=>{"use strict";Object.defineProperty(lr,"__esModule",{value:!0});lr.getSecurityIn=lr.securitySchemeInSchema=void 0;var V_=Lr();lr.securitySchemeInSchema=V_.z.enum(["query","header","cookie"]);function U_({security:r}){return r.type==="basic"||r.type==="http"||r.type==="openIdConnect"||r.type==="oauth2"?"header":lr.securitySchemeInSchema.parse(r.in)}lr.getSecurityIn=U_});var Yd=g(ai=>{"use strict";Object.defineProperty(ai,"__esModule",{value:!0});ai.findSecuritySchemesForParametersStoplight=void 0;var B_=Jd(),F_=Kn(),K_=go(),W_=vo();async function J_({document:r,operation:e,caseInsensitive:t}){t=t??!0;let s=await(0,W_.getSecuritySchemesStoplight)({document:r});if(s===void 0)return;let n=await(0,K_.getOperationParametersDeprecatedStoplight)({operation:e,document:r});if(n===void 0)return;let i=Object.entries(s).filter(([a,o])=>{let c=(0,F_.getSecurityParameterName)({security:o}),l=(0,B_.getSecurityIn)({security:o}),u=n.filter(d=>d.in===l);return t?!!u.find(d=>d.name.toLowerCase()===c.toLowerCase()):!!u.find(d=>d.name===c)});if(i.length!==0)return i.map(([a,o])=>({name:a,scheme:o}))}ai.findSecuritySchemesForParametersStoplight=J_});var Gd=g(ur=>{"use strict";Object.defineProperty(ur,"__esModule",{value:!0});ur.operationIdSchema=ur.operationIdRegex=void 0;var Y_=Lr();ur.operationIdRegex=/^[a-zA-Z0-9]+_(?![0-9]+$)[a-zA-Z0-9]+$/g;ur.operationIdSchema=Y_.z.string().regex(ur.operationIdRegex,'OperationID should be prefixed with Tag + "_" (https://konfigthis.com/docs/tutorials/naming-operation-ids)').brand()});var Qd=g(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.disallowedHeaderNamesRequest=ze.isParameterDisallowed=ze.disallowedHeadersRegex=void 0;ze.disallowedHeadersRegex=/^(Content-Type|Accept)$/;async function H_({parameter:r}){let e=await(0,ze.disallowedHeaderNamesRequest)(r,null,{});return Array.isArray(e)?e.length>0:!1}ze.isParameterDisallowed=H_;var z_=r=>r.in!=="header"?[]:ze.disallowedHeadersRegex.test(r.name)?[{message:"Error"}]:[];ze.disallowedHeaderNamesRequest=z_});var Xd=g(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.tagSchema=void 0;var G_=Lr();oi.tagSchema=G_.z.string().refine(r=>!r.includes(">"),'Detected use of ">" character in tag. This could be from exporting your collection from Postman. Tags should try to follow a flat organizational structure for discoverable SDK methods.').refine(r=>r!=="default",'"default" is too generic for a tag name. Tags should be entities like "Pet" or concepts like "Authentication"').brand("Tag")});var rf=g(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.isJsonString=void 0;function Q_(r){try{JSON.parse(r)}catch{return!1}return!0}ci.isJsonString=Q_});var sf=g(Ae=>{"use strict";Object.defineProperty(Ae,"__esModule",{value:!0});Ae.jsonSchema=Ae.objectSchema=Ae.literalSchema=void 0;var Ge=Lr();Ae.literalSchema=Ge.z.union([Ge.z.string(),Ge.z.number(),Ge.z.boolean(),Ge.z.null()]);Ae.objectSchema=Ge.z.lazy(()=>Ge.z.record(Ae.jsonSchema));Ae.jsonSchema=Ge.z.lazy(()=>Ge.z.union([Ae.literalSchema,Ge.z.array(Ae.jsonSchema),Ae.objectSchema])).openapi({oneOf:[{type:"string"},{type:"boolean"},{type:"number"},{type:"object"}],nullable:!0})});var nf=g(li=>{"use strict";Object.defineProperty(li,"__esModule",{value:!0});li.canSchemaObjectBeStructured=void 0;var X_=rf(),e0=sf();function t0({schemaObject:r}){return!(r.type!=="string"||r.example===void 0||!(0,X_.isJsonString)(r.example)||!e0.objectSchema.safeParse(JSON.parse(r.example)).success)}li.canSchemaObjectBeStructured=t0});var lf=g(Qe=>{"use strict";Object.defineProperty(Qe,"__esModule",{value:!0});Qe.unaliasJsonPath=Qe.givenPaths=Qe.rulesetJsonPaths=void 0;var r0=Zr();Qe.rulesetJsonPaths={PathItem:["$.paths[*]"],Tags:["$.tags"],Tag:["#Tags.*"],OperationObject:["#PathItem[get,put,post,delete,options,head,patch,trace]"],ParameterObjects:["#OperationObject.parameters.*"],ParameterObjectNames:["#ParameterObjects.name"],ParameterSchemaObject:["#ParameterObjects..schema"],RequestContentObject:["#OperationObject.requestBody.content"],RequestSchemaObject:["#RequestContentObject..schema"],ResponsesObjects:["#OperationObject.responses"],ResponsesObjectHeaderNames:["#ResponsesObjects.*.headers.*~"],ResponsesObjectsKeys:["#ResponsesObjects.*~"],ResponseContentObject:["#ResponsesObjects.*.content.*"],ResponseSchemaObject:["#ResponseContentObject..schema"],AllSchemaObjects:["#RequestSchemaObject","#ResponseSchemaObject","#ParameterSchemaObject"]};Qe.givenPaths={[r0.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME]:["#ResponseSchemaObject..","#RequestSchemaObject..","#ParameterSchemaObject.."]};function cf({path:r}){let e=Object.keys(Qe.rulesetJsonPaths).find(t=>r.includes(t));return e===void 0?[r]:Qe.rulesetJsonPaths[e].flatMap(t=>cf({path:r.replace(`#${e}`,t)}))}Qe.unaliasJsonPath=cf});var uf=g(ui=>{"use strict";Object.defineProperty(ui,"__esModule",{value:!0});ui.isObjectTypeSchemaWithNoProperties=void 0;function s0({schema:r}){return r.type==="object"&&r.additionalProperties===void 0&&(r.properties===void 0||Object.keys(r.properties).length===0)}ui.isObjectTypeSchemaWithNoProperties=s0});var pf=g(fi=>{"use strict";Object.defineProperty(fi,"__esModule",{value:!0});fi.defaultOr200RangeStatusCodeRegex=void 0;fi.defaultOr200RangeStatusCodeRegex=/^(2\d\d|default)$/});var hf=g(pi=>{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.isMissing2xxResponse=void 0;var n0=pf();function i0({responseCodes:r}){return r.find(e=>n0.defaultOr200RangeStatusCodeRegex.test(e))===void 0}pi.isMissing2xxResponse=i0});var Sf=g((dx,$o)=>{"use strict";var a0=r=>{let e=!1,t=!1,s=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=a0(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,i)=>i.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};$o.exports=wf;$o.exports.default=wf});var xf=g(Cs=>{"use strict";var o0=Cs&&Cs.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Cs,"__esModule",{value:!0});var c0=o0(Sf());Cs.default=c0.default});var ko=g(Tt=>{"use strict";Tt.__esModule=!0;Tt.OpenAPIV2=Tt.OpenAPIV3=void 0;var u0;(function(r){var e;(function(t){t.GET="get",t.PUT="put",t.POST="post",t.DELETE="delete",t.OPTIONS="options",t.HEAD="head",t.PATCH="patch",t.TRACE="trace"})(e=r.HttpMethods||(r.HttpMethods={}))})(u0=Tt.OpenAPIV3||(Tt.OpenAPIV3={}));var d0;(function(r){var e;(function(t){t.GET="get",t.PUT="put",t.POST="post",t.DELETE="delete",t.OPTIONS="options",t.HEAD="head",t.PATCH="patch"})(e=r.HttpMethods||(r.HttpMethods={}))})(d0=Tt.OpenAPIV2||(Tt.OpenAPIV2={}))});var kf=g(hi=>{"use strict";Object.defineProperty(hi,"__esModule",{value:!0});hi.httpMethods=void 0;var $t=ko();hi.httpMethods=[$t.OpenAPIV3.HttpMethods.DELETE,$t.OpenAPIV3.HttpMethods.GET,$t.OpenAPIV3.HttpMethods.HEAD,$t.OpenAPIV3.HttpMethods.OPTIONS,$t.OpenAPIV3.HttpMethods.PATCH,$t.OpenAPIV3.HttpMethods.POST,$t.OpenAPIV3.HttpMethods.PUT,$t.OpenAPIV3.HttpMethods.TRACE]});var Af=g(Yr=>{"use strict";Object.defineProperty(Yr,"__esModule",{value:!0});Yr.forEachOperation=Yr.HttpMethodsEnum=void 0;var f0=ko(),p0=kf();Yr.HttpMethodsEnum=f0.OpenAPIV3.HttpMethods;function h0(r,e){if(r.paths)for(let t in r.paths){let s=r.paths[t];if(!s)throw Error("Path with missing PathObject");for(let n of p0.httpMethods){let i=s[n];i&&e({operation:i,path:t,method:n})}}}Yr.forEachOperation=h0});var Ef=g(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.getOperations=void 0;var m0=Af();function y0({spec:r}){let e=[];return(0,m0.forEachOperation)(r,t=>e.push(t)),e}mi.getOperations=y0});var v0={};zr(v0,{default:()=>g0});module.exports=No(v0);var ne=require("@stoplight/spectral-functions"),G=require("@stoplight/spectral-formats"),qf=require("@stoplight/spectral-rulesets");var jo;(function(r){r.Simple="simple",r.Matrix="matrix",r.Label="label",r.Form="form",r.CommaDelimited="commaDelimited",r.SpaceDelimited="spaceDelimited",r.PipeDelimited="pipeDelimited",r.DeepObject="deepObject"})(jo||(jo={}));var D;(function(r){r[r.Error=0]="Error",r[r.Warning=1]="Warning",r[r.Information=2]="Information",r[r.Hint=3]="Hint"})(D||(D={}));var Co;(function(r){r.Article="article",r.HttpService="http_service",r.HttpServer="http_server",r.HttpOperation="http_operation",r.Model="model",r.Generic="generic",r.Unknown="unknown",r.TableOfContents="table_of_contents",r.SpectralRuleset="spectral_ruleset",r.Styleguide="styleguide",r.Image="image"})(Co||(Co={}));var qo;(function(r){r.Json="json",r.Markdown="markdown",r.Yaml="yaml",r.Javascript="javascript",r.Apng="apng",r.Avif="avif",r.Bmp="bmp",r.Gif="gif",r.Jpeg="jpeg",r.Png="png",r.Svg="svg",r.Webp="webp"})(qo||(qo={}));var Ro=r=>r.length<=1?[]:[{message:"Potential misuse of security has been detected"}];var Yo=X(Jo()),Ho=(r,e,t)=>{let s=[],n=t.document.data;return(0,Yo.findRedundantSecuritySchemes)({operation:r,document:n}).length>0&&s.push({message:"Detected redundant security schemes."}),s};var Bn=X(Zr()),Id=X(Od()),Pd=(r,e,t)=>(0,Bn.getIgnore)({spec:t.document.data})[Bn.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME]?[]:(0,Id.isSchemaExamplePossibleIncorrectDataType)({schema:r});var kd=X($d()),Ad=async(r,e,t)=>{let s=[],n=t.document.data,i=await(0,kd.findRedundantSecurityRequirementAndParameterStoplight)({document:n,operation:r});return i.found&&s.push({message:i.name}),s};var Bd=X(Zr()),Fd=require("@stoplight/spectral-functions"),ni=require("@stoplight/spectral-formats");var bo={};zr(bo,{$id:()=>hb,$schema:()=>mb,additionalProperties:()=>vb,default:()=>Sb,definitions:()=>wb,patternProperties:()=>bb,properties:()=>_b,required:()=>gb,title:()=>pb,type:()=>yb});var pb="A JSON Schema for Swagger 2.0 API.",hb="http://swagger.io/v2/schema.json#",mb="http://json-schema.org/draft-07/schema#",yb="object",gb=["swagger","info","paths"],vb=!1,bb={"^x-":{$ref:"#/definitions/vendorExtension"}},_b={swagger:{type:"string",enum:["2.0"],description:"The Swagger version of this document."},info:{$ref:"#/definitions/info"},host:{type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",description:"The host (name or ip) of the API. Example: 'swagger.io'"},basePath:{type:"string",pattern:"^/",description:"The base path to the API. Example: '/api'."},schemes:{$ref:"#/definitions/schemesList"},consumes:{description:"A list of MIME types accepted by the API.",allOf:[{$ref:"#/definitions/mediaTypeList"}]},produces:{description:"A list of MIME types the API can produce.",allOf:[{$ref:"#/definitions/mediaTypeList"}]},paths:{$ref:"#/definitions/paths"},definitions:{$ref:"#/definitions/definitions"},parameters:{$ref:"#/definitions/parameterDefinitions"},responses:{$ref:"#/definitions/responseDefinitions"},security:{$ref:"#/definitions/security"},securityDefinitions:{$ref:"#/definitions/securityDefinitions"},tags:{type:"array",items:{$ref:"#/definitions/tag"},uniqueItems:!0},externalDocs:{$ref:"#/definitions/externalDocs"}},wb={info:{type:"object",description:"General information about the API.",required:["version","title"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{title:{type:"string",description:"A unique and precise title of the API."},version:{type:"string",description:"A semantic version number of the API."},description:{type:"string",description:"A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed."},termsOfService:{type:"string",description:"The terms of service for the API."},contact:{$ref:"#/definitions/contact"},license:{$ref:"#/definitions/license"}}},contact:{type:"object",description:"Contact information for the owners of the API.",additionalProperties:!1,properties:{name:{type:"string",description:"The identifying name of the contact person/organization."},url:{type:"string",description:"The URL pointing to the contact information.",format:"uri"},email:{type:"string",description:"The email address of the contact person/organization.",format:"email"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},license:{type:"object",required:["name"],additionalProperties:!1,properties:{name:{type:"string",description:"The name of the license type. It's encouraged to use an OSI compatible license."},url:{type:"string",description:"The URL pointing to the license.",format:"uri"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},paths:{type:"object",description:"Relative paths to the individual endpoints. They must be relative to the 'basePath'.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"},"^/":{$ref:"#/definitions/pathItem"}},additionalProperties:!1},definitions:{type:"object",additionalProperties:{$ref:"#/definitions/schema"},description:"One or more JSON objects describing the schemas being consumed and produced by the API."},parameterDefinitions:{type:"object",additionalProperties:{$ref:"#/definitions/parameter"},description:"One or more JSON representations for parameters"},responseDefinitions:{type:"object",additionalProperties:{$ref:"#/definitions/response"},description:"One or more JSON representations for responses"},externalDocs:{type:"object",additionalProperties:!1,description:"information about external documentation",required:["url"],properties:{description:{type:"string"},url:{type:"string",format:"uri"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},examples:{type:"object",additionalProperties:!0},mimeType:{type:"string",description:"The MIME type of the HTTP message."},operation:{type:"object",required:["responses"],additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{tags:{type:"array",items:{type:"string"},uniqueItems:!0},summary:{type:"string",description:"A brief summary of the operation."},description:{type:"string",description:"A longer description of the operation, GitHub Flavored Markdown is allowed."},externalDocs:{$ref:"#/definitions/externalDocs"},operationId:{type:"string",description:"A unique identifier of the operation."},produces:{description:"A list of MIME types the API can produce.",allOf:[{$ref:"#/definitions/mediaTypeList"}]},consumes:{description:"A list of MIME types the API can consume.",allOf:[{$ref:"#/definitions/mediaTypeList"}]},parameters:{$ref:"#/definitions/parametersList"},responses:{$ref:"#/definitions/responses"},schemes:{$ref:"#/definitions/schemesList"},deprecated:{type:"boolean",default:!1},security:{$ref:"#/definitions/security"}}},pathItem:{type:"object",additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{$ref:{type:"string"},get:{$ref:"#/definitions/operation"},put:{$ref:"#/definitions/operation"},post:{$ref:"#/definitions/operation"},delete:{$ref:"#/definitions/operation"},options:{$ref:"#/definitions/operation"},head:{$ref:"#/definitions/operation"},patch:{$ref:"#/definitions/operation"},parameters:{$ref:"#/definitions/parametersList"}}},responses:{type:"object",description:"Response objects names can either be any valid HTTP status code or 'default'.",minProperties:1,additionalProperties:!1,patternProperties:{"^([0-9]{3})$|^(default)$":{$ref:"#/definitions/responseValue"},"^x-":{$ref:"#/definitions/vendorExtension"}},not:{type:"object",additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}}},responseValue:{oneOf:[{$ref:"#/definitions/response"},{$ref:"#/definitions/jsonReference"}]},response:{type:"object",required:["description"],properties:{description:{type:"string"},schema:{oneOf:[{$ref:"#/definitions/schema"},{$ref:"#/definitions/fileSchema"}]},headers:{$ref:"#/definitions/headers"},examples:{$ref:"#/definitions/examples"}},additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},headers:{type:"object",additionalProperties:{$ref:"#/definitions/header"}},header:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},vendorExtension:{description:"Any property starting with x- is valid.",additionalProperties:!0,additionalItems:!0},bodyParameter:{type:"object",required:["name","in","schema"],patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},in:{type:"string",description:"Determines the location of the parameter.",enum:["body"]},required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},schema:{$ref:"#/definitions/schema"}},additionalProperties:!1},headerParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["header"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},queryParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["query"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},allowEmptyValue:{type:"boolean",default:!1,description:"allows sending a parameter by name only or with an empty value."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormatWithMulti"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},formDataParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{required:{type:"boolean",description:"Determines whether or not this parameter is required or optional.",default:!1},in:{type:"string",description:"Determines the location of the parameter.",enum:["formData"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},allowEmptyValue:{type:"boolean",default:!1,description:"allows sending a parameter by name only or with an empty value."},type:{type:"string",enum:["string","number","boolean","integer","array","file"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormatWithMulti"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},pathParameterSubSchema:{additionalProperties:!1,patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},required:["required"],properties:{required:{type:"boolean",enum:[!0],description:"Determines whether or not this parameter is required or optional."},in:{type:"string",description:"Determines the location of the parameter.",enum:["path"]},description:{type:"string",description:"A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."},name:{type:"string",description:"The name of the parameter."},type:{type:"string",enum:["string","number","boolean","integer","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}}},nonBodyParameter:{type:"object",required:["name","in","type"],oneOf:[{$ref:"#/definitions/headerParameterSubSchema"},{$ref:"#/definitions/formDataParameterSubSchema"},{$ref:"#/definitions/queryParameterSubSchema"},{$ref:"#/definitions/pathParameterSubSchema"}]},parameter:{oneOf:[{$ref:"#/definitions/bodyParameter"},{$ref:"#/definitions/nonBodyParameter"}]},schema:{type:"object",description:"A deterministic version of a JSON Schema object.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},properties:{$ref:{type:"string"},format:{type:"string"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},multipleOf:{$ref:"http://json-schema.org/draft-04/schema#/properties/multipleOf"},maximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/maximum"},exclusiveMaximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"},minimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/minimum"},exclusiveMinimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"},maxLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},pattern:{$ref:"http://json-schema.org/draft-04/schema#/properties/pattern"},maxItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},uniqueItems:{$ref:"http://json-schema.org/draft-04/schema#/properties/uniqueItems"},maxProperties:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minProperties:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},required:{$ref:"http://json-schema.org/draft-04/schema#/definitions/stringArray"},enum:{$ref:"http://json-schema.org/draft-04/schema#/properties/enum"},additionalProperties:{anyOf:[{$ref:"#/definitions/schema"},{type:"boolean"}],default:{}},type:{$ref:"http://json-schema.org/draft-04/schema#/properties/type"},items:{anyOf:[{$ref:"#/definitions/schema"},{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}}],default:{}},allOf:{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}},oneOf:{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}},anyOf:{type:"array",minItems:1,items:{$ref:"#/definitions/schema"}},properties:{type:"object",additionalProperties:{$ref:"#/definitions/schema"},default:{}},discriminator:{type:"string"},readOnly:{type:"boolean",default:!1},xml:{$ref:"#/definitions/xml"},externalDocs:{$ref:"#/definitions/externalDocs"},example:{}},additionalProperties:!1},fileSchema:{type:"object",description:"A deterministic version of a JSON Schema object.",patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}},required:["type"],properties:{format:{type:"string"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},required:{$ref:"http://json-schema.org/draft-04/schema#/definitions/stringArray"},type:{type:"string",enum:["file"]},readOnly:{type:"boolean",default:!1},externalDocs:{$ref:"#/definitions/externalDocs"},example:{}},additionalProperties:!1},primitivesItems:{type:"object",additionalProperties:!1,properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:{$ref:"#/definitions/primitivesItems"},collectionFormat:{$ref:"#/definitions/collectionFormat"},default:{$ref:"#/definitions/default"},maximum:{$ref:"#/definitions/maximum"},exclusiveMaximum:{$ref:"#/definitions/exclusiveMaximum"},minimum:{$ref:"#/definitions/minimum"},exclusiveMinimum:{$ref:"#/definitions/exclusiveMinimum"},maxLength:{$ref:"#/definitions/maxLength"},minLength:{$ref:"#/definitions/minLength"},pattern:{$ref:"#/definitions/pattern"},maxItems:{$ref:"#/definitions/maxItems"},minItems:{$ref:"#/definitions/minItems"},uniqueItems:{$ref:"#/definitions/uniqueItems"},enum:{$ref:"#/definitions/enum"},multipleOf:{$ref:"#/definitions/multipleOf"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},security:{type:"array",items:{$ref:"#/definitions/securityRequirement"},uniqueItems:!0},securityRequirement:{type:"object",additionalProperties:{type:"array",items:{type:"string"},uniqueItems:!0}},xml:{type:"object",additionalProperties:!1,properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean",default:!1},wrapped:{type:"boolean",default:!1}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},tag:{type:"object",additionalProperties:!1,required:["name"],properties:{name:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/definitions/externalDocs"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},securityDefinitions:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/basicAuthenticationSecurity"},{$ref:"#/definitions/apiKeySecurity"},{$ref:"#/definitions/oauth2ImplicitSecurity"},{$ref:"#/definitions/oauth2PasswordSecurity"},{$ref:"#/definitions/oauth2ApplicationSecurity"},{$ref:"#/definitions/oauth2AccessCodeSecurity"}]},errorMessage:{properties:{basic:"Invalid basic authentication security definition",apiKey:"Invalid apiKey authentication security definition",oauth2:"Invalid oauth2 authentication security definition"},_:"Invalid security securityDefinitions"}},basicAuthenticationSecurity:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["basic"]},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},apiKeySecurity:{type:"object",additionalProperties:!1,required:["type","name","in"],properties:{type:{type:"string",enum:["apiKey"]},name:{type:"string"},in:{type:"string",enum:["header","query"]},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2ImplicitSecurity:{type:"object",additionalProperties:!1,required:["type","flow","authorizationUrl","scopes"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["implicit"]},scopes:{$ref:"#/definitions/oauth2Scopes"},authorizationUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2PasswordSecurity:{type:"object",additionalProperties:!1,required:["type","flow","tokenUrl","scopes"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["password"]},scopes:{$ref:"#/definitions/oauth2Scopes"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2ApplicationSecurity:{type:"object",additionalProperties:!1,required:["type","flow","tokenUrl","scopes"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["application"]},scopes:{$ref:"#/definitions/oauth2Scopes"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2AccessCodeSecurity:{type:"object",additionalProperties:!1,required:["type","flow","authorizationUrl","tokenUrl","scopes"],properties:{type:{type:"string",enum:["oauth2"]},flow:{type:"string",enum:["accessCode"]},scopes:{$ref:"#/definitions/oauth2Scopes"},authorizationUrl:{type:"string",format:"uri"},tokenUrl:{type:"string",format:"uri"},description:{type:"string"}},patternProperties:{"^x-":{$ref:"#/definitions/vendorExtension"}}},oauth2Scopes:{type:"object",additionalProperties:{type:"string"}},mediaTypeList:{type:"array",items:{$ref:"#/definitions/mimeType"},uniqueItems:!0},parametersList:{type:"array",description:"The parameters needed to send a valid API call.",additionalItems:!1,items:{oneOf:[{$ref:"#/definitions/parameter"},{$ref:"#/definitions/jsonReference"}]},uniqueItems:!0},schemesList:{type:"array",description:"The transfer protocol of the API.",items:{type:"string",enum:["http","https","ws","wss"]},uniqueItems:!0},collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes"],default:"csv"},collectionFormatWithMulti:{type:"string",enum:["csv","ssv","tsv","pipes","multi"],default:"csv"},title:{$ref:"http://json-schema.org/draft-04/schema#/properties/title"},description:{$ref:"http://json-schema.org/draft-04/schema#/properties/description"},default:{$ref:"http://json-schema.org/draft-04/schema#/properties/default"},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/maximum"},exclusiveMaximum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"},minimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/minimum"},exclusiveMinimum:{$ref:"http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"},maxLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minLength:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},pattern:{$ref:"http://json-schema.org/draft-04/schema#/properties/pattern"},maxItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveInteger"},minItems:{$ref:"http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"},uniqueItems:{$ref:"http://json-schema.org/draft-04/schema#/properties/uniqueItems"},enum:{$ref:"http://json-schema.org/draft-04/schema#/properties/enum"},jsonReference:{type:"object",required:["$ref"],additionalProperties:!1,properties:{$ref:{type:"string"}}}},Sb={title:pb,$id:hb,$schema:mb,type:yb,required:gb,additionalProperties:vb,patternProperties:bb,properties:_b,definitions:wb};var _o={};zr(_o,{$id:()=>xb,$schema:()=>Ob,additionalProperties:()=>Ab,default:()=>Nb,definitions:()=>Eb,description:()=>Ib,patternProperties:()=>kb,properties:()=>$b,required:()=>Tb,type:()=>Pb});var xb="https://spec.openapis.org/oas/3.0/schema/2019-04-02",Ob="http://json-schema.org/draft-07/schema#",Ib="Validation schema for OpenAPI Specification 3.0.X.",Pb="object",Tb=["openapi","info","paths"],$b={openapi:{type:"string",pattern:"^3\\.0\\.\\d(-.+)?$"},info:{$ref:"#/definitions/Info"},externalDocs:{$ref:"#/definitions/ExternalDocumentation"},servers:{type:"array",items:{$ref:"#/definitions/Server"}},security:{type:"array",items:{$ref:"#/definitions/SecurityRequirement"}},tags:{type:"array",items:{$ref:"#/definitions/Tag"},uniqueItems:!0},paths:{$ref:"#/definitions/Paths"},components:{$ref:"#/definitions/Components"}},kb={"^x-":{}},Ab=!1,Eb={Reference:{type:"object",required:["$ref"],patternProperties:{"^\\$ref$":{type:"string",format:"uri-reference"}}},Info:{type:"object",required:["title","version"],properties:{title:{type:"string"},description:{type:"string"},termsOfService:{type:"string",format:"uri-reference"},contact:{$ref:"#/definitions/Contact"},license:{$ref:"#/definitions/License"},version:{type:"string"}},patternProperties:{"^x-":{}},additionalProperties:!1},Contact:{type:"object",properties:{name:{type:"string"},url:{type:"string",format:"uri-reference"},email:{type:"string",format:"email"}},patternProperties:{"^x-":{}},additionalProperties:!1},License:{type:"object",required:["name"],properties:{name:{type:"string"},url:{type:"string",format:"uri-reference"}},patternProperties:{"^x-":{}},additionalProperties:!1},Server:{type:"object",required:["url"],properties:{url:{type:"string"},description:{type:"string"},variables:{type:"object",additionalProperties:{$ref:"#/definitions/ServerVariable"}}},patternProperties:{"^x-":{}},additionalProperties:!1},ServerVariable:{type:"object",required:["default"],properties:{enum:{type:"array",items:{type:"string"}},default:{type:"string"},description:{type:"string"}},patternProperties:{"^x-":{}},additionalProperties:!1},Components:{type:"object",properties:{schemas:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]}}},responses:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/Response"}]}}},parameters:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/Parameter"}]}}},examples:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/Example"}]}}},requestBodies:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/RequestBody"}]}}},headers:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/Header"}]}}},securitySchemes:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/SecurityScheme"}]}}},links:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/Link"}]}}},callbacks:{type:"object",patternProperties:{"^[a-zA-Z0-9\\.\\-_]+$":{oneOf:[{$ref:"#/definitions/Reference"},{$ref:"#/definitions/Callback"}]}}}},patternProperties:{"^x-":{}},additionalProperties:!1},Schema:{type:"object",properties:{title:{type:"string"},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean",default:!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean",default:!1},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0,default:0},pattern:{type:"string",format:"regex"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0,default:0},uniqueItems:{type:"boolean",default:!1},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0,default:0},required:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0},enum:{type:"array",items:{},minItems:1,uniqueItems:!1},type:{type:"string",enum:["array","boolean","integer","number","object","string"]},not:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]},allOf:{type:"array",items:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]}},oneOf:{type:"array",items:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]}},anyOf:{type:"array",items:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]}},items:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]},properties:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]}},additionalProperties:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"},{type:"boolean"}],default:!0},description:{type:"string"},format:{type:"string"},default:{},nullable:{type:"boolean",default:!1},discriminator:{$ref:"#/definitions/Discriminator"},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},example:{},externalDocs:{$ref:"#/definitions/ExternalDocumentation"},deprecated:{type:"boolean",default:!1},xml:{$ref:"#/definitions/XML"}},patternProperties:{"^x-":{}},additionalProperties:!1},Discriminator:{type:"object",required:["propertyName"],properties:{propertyName:{type:"string"},mapping:{type:"object",additionalProperties:{type:"string"}}}},XML:{type:"object",properties:{name:{type:"string"},namespace:{type:"string",format:"uri"},prefix:{type:"string"},attribute:{type:"boolean",default:!1},wrapped:{type:"boolean",default:!1}},patternProperties:{"^x-":{}},additionalProperties:!1},Response:{type:"object",required:["description"],properties:{description:{type:"string"},headers:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Header"},{$ref:"#/definitions/Reference"}]}},content:{type:"object",additionalProperties:{$ref:"#/definitions/MediaType"}},links:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Link"},{$ref:"#/definitions/Reference"}]}}},patternProperties:{"^x-":{}},additionalProperties:!1},MediaType:{type:"object",properties:{schema:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]},example:{},examples:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Example"},{$ref:"#/definitions/Reference"}]}},encoding:{type:"object",additionalProperties:{$ref:"#/definitions/Encoding"}}},patternProperties:{"^x-":{}},additionalProperties:!1,allOf:[{$ref:"#/definitions/ExampleXORExamples"}]},Example:{type:"object",properties:{summary:{type:"string"},description:{type:"string"},value:{},externalValue:{type:"string",format:"uri-reference"}},patternProperties:{"^x-":{}},additionalProperties:!1},Header:{type:"object",properties:{description:{type:"string"},required:{type:"boolean",default:!1},deprecated:{type:"boolean",default:!1},allowEmptyValue:{type:"boolean",default:!1},style:{type:"string",enum:["simple"],default:"simple"},explode:{type:"boolean"},allowReserved:{type:"boolean",default:!1},schema:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]},content:{type:"object",additionalProperties:{$ref:"#/definitions/MediaType"},minProperties:1,maxProperties:1},example:{},examples:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Example"},{$ref:"#/definitions/Reference"}]}}},patternProperties:{"^x-":{}},additionalProperties:!1,allOf:[{$ref:"#/definitions/ExampleXORExamples"},{$ref:"#/definitions/SchemaXORContent"}]},Paths:{type:"object",patternProperties:{"^\\/":{$ref:"#/definitions/PathItem"},"^x-":{}},additionalProperties:!1},PathItem:{type:"object",properties:{$ref:{type:"string"},summary:{type:"string"},description:{type:"string"},servers:{type:"array",items:{$ref:"#/definitions/Server"}},parameters:{type:"array",items:{oneOf:[{$ref:"#/definitions/Parameter"},{$ref:"#/definitions/Reference"}]},uniqueItems:!0}},patternProperties:{"^(get|put|post|delete|options|head|patch|trace)$":{$ref:"#/definitions/Operation"},"^x-":{}},additionalProperties:!1},Operation:{type:"object",required:["responses"],properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/definitions/ExternalDocumentation"},operationId:{type:"string"},parameters:{type:"array",items:{oneOf:[{$ref:"#/definitions/Parameter"},{$ref:"#/definitions/Reference"}]},uniqueItems:!0},requestBody:{oneOf:[{$ref:"#/definitions/RequestBody"},{$ref:"#/definitions/Reference"}]},responses:{$ref:"#/definitions/Responses"},callbacks:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Callback"},{$ref:"#/definitions/Reference"}]}},deprecated:{type:"boolean",default:!1},security:{type:"array",items:{$ref:"#/definitions/SecurityRequirement"}},servers:{type:"array",items:{$ref:"#/definitions/Server"}}},patternProperties:{"^x-":{}},additionalProperties:!1},Responses:{type:"object",properties:{default:{oneOf:[{$ref:"#/definitions/Response"},{$ref:"#/definitions/Reference"}]}},patternProperties:{"^[1-5](?:\\d{2}|XX)$":{oneOf:[{$ref:"#/definitions/Response"},{$ref:"#/definitions/Reference"}]},"^x-":{}},minProperties:1,additionalProperties:!1},SecurityRequirement:{type:"object",additionalProperties:{type:"array",items:{type:"string"}}},Tag:{type:"object",required:["name"],properties:{name:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/definitions/ExternalDocumentation"}},patternProperties:{"^x-":{}},additionalProperties:!1},ExternalDocumentation:{type:"object",required:["url"],properties:{description:{type:"string"},url:{type:"string",format:"uri-reference"}},patternProperties:{"^x-":{}},additionalProperties:!1},ExampleXORExamples:{description:"Example and examples are mutually exclusive",not:{required:["example","examples"]}},SchemaXORContent:{description:"Schema and content are mutually exclusive, at least one is required",not:{required:["schema","content"]},oneOf:[{required:["schema"]},{required:["content"],description:"Some properties are not allowed if content is present",allOf:[{not:{required:["style"]}},{not:{required:["explode"]}},{not:{required:["allowReserved"]}},{not:{required:["example"]}},{not:{required:["examples"]}}]}]},Parameter:{type:"object",properties:{name:{type:"string"},in:{type:"string"},description:{type:"string"},required:{type:"boolean",default:!1},deprecated:{type:"boolean",default:!1},allowEmptyValue:{type:"boolean",default:!1},style:{type:"string"},explode:{type:"boolean"},allowReserved:{type:"boolean",default:!1},schema:{oneOf:[{$ref:"#/definitions/Schema"},{$ref:"#/definitions/Reference"}]},content:{type:"object",additionalProperties:{$ref:"#/definitions/MediaType"},minProperties:1,maxProperties:1},example:{},examples:{type:"object",additionalProperties:{oneOf:[{$ref:"#/definitions/Example"},{$ref:"#/definitions/Reference"}]}}},patternProperties:{"^x-":{}},additionalProperties:!1,required:["name","in"],allOf:[{$ref:"#/definitions/ExampleXORExamples"},{$ref:"#/definitions/SchemaXORContent"},{$ref:"#/definitions/ParameterLocation"}]},ParameterLocation:{description:"Parameter location",oneOf:[{description:"Parameter in path",required:["required"],properties:{in:{enum:["path"]},style:{enum:["matrix","label","simple"],default:"simple"},required:{enum:[!0]}}},{description:"Parameter in query",properties:{in:{enum:["query"]},style:{enum:["form","spaceDelimited","pipeDelimited","deepObject"],default:"form"}}},{description:"Parameter in header",properties:{in:{enum:["header"]},style:{enum:["simple"],default:"simple"}}},{description:"Parameter in cookie",properties:{in:{enum:["cookie"]},style:{enum:["form"],default:"form"}}}]},RequestBody:{type:"object",required:["content"],properties:{description:{type:"string"},content:{type:"object",additionalProperties:{$ref:"#/definitions/MediaType"}},required:{type:"boolean",default:!1}},patternProperties:{"^x-":{}},additionalProperties:!1},SecurityScheme:{oneOf:[{$ref:"#/definitions/APIKeySecurityScheme"},{$ref:"#/definitions/HTTPSecurityScheme"},{$ref:"#/definitions/OAuth2SecurityScheme"},{$ref:"#/definitions/OpenIdConnectSecurityScheme"}]},APIKeySecurityScheme:{type:"object",required:["type","name","in"],properties:{type:{type:"string",enum:["apiKey"]},name:{type:"string"},in:{type:"string",enum:["header","query","cookie"]},description:{type:"string"}},patternProperties:{"^x-":{}},additionalProperties:!1},HTTPSecurityScheme:{type:"object",required:["scheme","type"],properties:{scheme:{type:"string"},bearerFormat:{type:"string"},description:{type:"string"},type:{type:"string",enum:["http"]}},patternProperties:{"^x-":{}},additionalProperties:!1,oneOf:[{description:"Bearer",properties:{scheme:{enum:["bearer"]}}},{description:"Non Bearer",not:{required:["bearerFormat"]},properties:{scheme:{not:{enum:["bearer"]}}}}]},OAuth2SecurityScheme:{type:"object",required:["type","flows"],properties:{type:{type:"string",enum:["oauth2"]},flows:{$ref:"#/definitions/OAuthFlows"},description:{type:"string"}},patternProperties:{"^x-":{}},additionalProperties:!1},OpenIdConnectSecurityScheme:{type:"object",required:["type","openIdConnectUrl"],properties:{type:{type:"string",enum:["openIdConnect"]},openIdConnectUrl:{type:"string",format:"uri-reference"},description:{type:"string"}},patternProperties:{"^x-":{}},additionalProperties:!1},OAuthFlows:{type:"object",properties:{implicit:{$ref:"#/definitions/ImplicitOAuthFlow"},password:{$ref:"#/definitions/PasswordOAuthFlow"},clientCredentials:{$ref:"#/definitions/ClientCredentialsFlow"},authorizationCode:{$ref:"#/definitions/AuthorizationCodeOAuthFlow"}},patternProperties:{"^x-":{}},additionalProperties:!1},ImplicitOAuthFlow:{type:"object",required:["authorizationUrl","scopes"],properties:{authorizationUrl:{type:"string",format:"uri-reference"},refreshUrl:{type:"string",format:"uri-reference"},scopes:{type:"object",additionalProperties:{type:"string"}}},patternProperties:{"^x-":{}},additionalProperties:!1},PasswordOAuthFlow:{type:"object",required:["tokenUrl","scopes"],properties:{tokenUrl:{type:"string",format:"uri-reference"},refreshUrl:{type:"string",format:"uri-reference"},scopes:{type:"object",additionalProperties:{type:"string"}}},patternProperties:{"^x-":{}},additionalProperties:!1},ClientCredentialsFlow:{type:"object",required:["tokenUrl","scopes"],properties:{tokenUrl:{type:"string",format:"uri-reference"},refreshUrl:{type:"string",format:"uri-reference"},scopes:{type:"object",additionalProperties:{type:"string"}}},patternProperties:{"^x-":{}},additionalProperties:!1},AuthorizationCodeOAuthFlow:{type:"object",required:["authorizationUrl","tokenUrl","scopes"],properties:{authorizationUrl:{type:"string",format:"uri-reference"},tokenUrl:{type:"string",format:"uri-reference"},refreshUrl:{type:"string",format:"uri-reference"},scopes:{type:"object",additionalProperties:{type:"string"}}},patternProperties:{"^x-":{}},additionalProperties:!1},Link:{type:"object",properties:{operationId:{type:"string"},operationRef:{type:"string",format:"uri-reference"},parameters:{type:"object",additionalProperties:{}},requestBody:{},description:{type:"string"},server:{$ref:"#/definitions/Server"}},patternProperties:{"^x-":{}},additionalProperties:!1,not:{description:"Operation Id and Operation Ref are mutually exclusive",required:["operationId","operationRef"]}},Callback:{type:"object",additionalProperties:{$ref:"#/definitions/PathItem"},patternProperties:{"^x-":{}}},Encoding:{type:"object",properties:{contentType:{type:"string"},headers:{type:"object",additionalProperties:{$ref:"#/definitions/Header"}},style:{type:"string",enum:["form","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean",default:!1}},additionalProperties:!1}},Nb={$id:xb,$schema:Ob,description:Ib,type:Pb,required:Tb,properties:$b,patternProperties:kb,additionalProperties:Ab,definitions:Eb};var wo={};zr(wo,{$defs:()=>Vb,$id:()=>jb,$ref:()=>Db,$schema:()=>Cb,anyOf:()=>Lb,default:()=>Ub,properties:()=>Rb,required:()=>Mb,type:()=>qb,unevaluatedProperties:()=>Zb});var jb="https://spec.openapis.org/oas/3.1/schema/2021-09-28",Cb="https://json-schema.org/draft/2020-12/schema",qb="object",Rb={openapi:{type:"string",pattern:"^3\\.1\\.\\d+(-.+)?$"},info:{$ref:"#/$defs/info"},jsonSchemaDialect:{type:"string",format:"uri",default:"https://spec.openapis.org/oas/3.1/dialect/base"},servers:{type:"array",items:{$ref:"#/$defs/server"}},paths:{$ref:"#/$defs/paths"},webhooks:{type:"object",additionalProperties:{$ref:"#/$defs/path-item-or-reference"}},components:{$ref:"#/$defs/components"},security:{type:"array",items:{$ref:"#/$defs/security-requirement"}},tags:{type:"array",items:{$ref:"#/$defs/tag"}},externalDocs:{$ref:"#/$defs/external-documentation"}},Mb=["openapi","info"],Lb=[{required:["paths"],errorMessage:'The document must have either "paths", "webhooks" or "components"'},{required:["components"]},{required:["webhooks"]}],Db="#/$defs/specification-extensions",Zb=!1,Vb={info:{type:"object",properties:{title:{type:"string"},summary:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:{$ref:"#/$defs/contact"},license:{$ref:"#/$defs/license"},version:{type:"string"}},required:["title","version"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},contact:{type:"object",properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},license:{type:"object",properties:{name:{type:"string"},identifier:{type:"string"},url:{type:"string",format:"uri"}},required:["name"],oneOf:[{required:["identifier"]},{required:["url"]}],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},server:{type:"object",properties:{url:{type:"string",format:"uri-template"},description:{type:"string"},variables:{type:"object",additionalProperties:{$ref:"#/$defs/server-variable"}}},required:["url"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"server-variable":{type:"object",properties:{enum:{type:"array",items:{type:"string"},minItems:1},default:{type:"string"},description:{type:"string"}},required:["default"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},components:{type:"object",properties:{schemas:{type:"object",additionalProperties:{$ref:"#/$defs/schema"}},responses:{type:"object",additionalProperties:{$ref:"#/$defs/response-or-reference"}},parameters:{type:"object",additionalProperties:{$ref:"#/$defs/parameter-or-reference"}},examples:{type:"object",additionalProperties:{$ref:"#/$defs/example-or-reference"}},requestBodies:{type:"object",additionalProperties:{$ref:"#/$defs/request-body-or-reference"}},headers:{type:"object",additionalProperties:{$ref:"#/$defs/header-or-reference"}},securitySchemes:{type:"object",additionalProperties:{$ref:"#/$defs/security-scheme-or-reference"}},links:{type:"object",additionalProperties:{$ref:"#/$defs/link-or-reference"}},callbacks:{type:"object",additionalProperties:{$ref:"#/$defs/callbacks-or-reference"}},pathItems:{type:"object",additionalProperties:{$ref:"#/$defs/path-item-or-reference"}}},patternProperties:{"^(schemas|responses|parameters|examples|requestBodies|headers|securitySchemes|links|callbacks|pathItems)$":{$comment:"Enumerating all of the property names in the regex above is necessary for unevaluatedProperties to work as expected",propertyNames:{pattern:"^[a-zA-Z0-9._-]+$"}}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},paths:{type:"object",patternProperties:{"^/":{$ref:"#/$defs/path-item"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"path-item":{type:"object",properties:{summary:{type:"string"},description:{type:"string"},servers:{type:"array",items:{$ref:"#/$defs/server"}},parameters:{type:"array",items:{$ref:"#/$defs/parameter-or-reference"}}},patternProperties:{"^(get|put|post|delete|options|head|patch|trace)$":{$ref:"#/$defs/operation"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"path-item-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/path-item"}},operation:{type:"object",properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/$defs/external-documentation"},operationId:{type:"string"},parameters:{type:"array",items:{$ref:"#/$defs/parameter-or-reference"}},requestBody:{$ref:"#/$defs/request-body-or-reference"},responses:{$ref:"#/$defs/responses"},callbacks:{type:"object",additionalProperties:{$ref:"#/$defs/callbacks-or-reference"}},deprecated:{default:!1,type:"boolean"},security:{type:"array",items:{$ref:"#/$defs/security-requirement"}},servers:{type:"array",items:{$ref:"#/$defs/server"}}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"external-documentation":{type:"object",properties:{description:{type:"string"},url:{type:"string",format:"uri"}},required:["url"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},parameter:{type:"object",properties:{name:{type:"string"},in:{enum:["query","header","path","cookie"]},description:{type:"string"},required:{default:!1,type:"boolean"},deprecated:{default:!1,type:"boolean"},allowEmptyValue:{default:!1,type:"boolean"},schema:{$ref:"#/$defs/schema"},content:{$ref:"#/$defs/content"}},required:["in"],oneOf:[{required:["schema"]},{required:["content"]}],dependentSchemas:{schema:{properties:{style:{type:"string"},explode:{type:"boolean"},allowReserved:{default:!1,type:"boolean"}},allOf:[{$ref:"#/$defs/examples"},{$ref:"#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-path"},{$ref:"#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-header"},{$ref:"#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-query"},{$ref:"#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-cookie"},{$ref:"#/$defs/parameter/dependentSchemas/schema/$defs/styles-for-form"}],$defs:{"styles-for-path":{if:{properties:{in:{const:"path"}},required:["in"]},then:{properties:{name:{pattern:"[^/#?]+$"},style:{default:"simple",enum:["matrix","label","simple"]},required:{const:!0}},required:["required"]}},"styles-for-header":{if:{properties:{in:{const:"header"}},required:["in"]},then:{properties:{style:{default:"simple",const:"simple"}}}},"styles-for-query":{if:{properties:{in:{const:"query"}},required:["in"]},then:{properties:{style:{default:"form",enum:["form","spaceDelimited","pipeDelimited","deepObject"]}}}},"styles-for-cookie":{if:{properties:{in:{const:"cookie"}},required:["in"]},then:{properties:{style:{default:"form",const:"form"}}}},"styles-for-form":{if:{properties:{style:{const:"form"}},required:["style"]},then:{properties:{explode:{default:!0}}},else:{properties:{explode:{default:!1}}}}}}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"parameter-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/parameter"}},"request-body":{type:"object",properties:{description:{type:"string"},content:{$ref:"#/$defs/content"},required:{default:!1,type:"boolean"}},required:["content"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"request-body-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/request-body"}},content:{type:"object",additionalProperties:{$ref:"#/$defs/media-type"},propertyNames:{format:"media-range"}},"media-type":{type:"object",properties:{schema:{$ref:"#/$defs/schema"},encoding:{type:"object",additionalProperties:{$ref:"#/$defs/encoding"}}},allOf:[{$ref:"#/$defs/specification-extensions"},{$ref:"#/$defs/examples"}],unevaluatedProperties:!1},encoding:{type:"object",properties:{contentType:{type:"string",format:"media-range"},headers:{type:"object",additionalProperties:{$ref:"#/$defs/header-or-reference"}},style:{default:"form",enum:["form","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{default:!1,type:"boolean"}},allOf:[{$ref:"#/$defs/specification-extensions"},{$ref:"#/$defs/encoding/$defs/explode-default"}],unevaluatedProperties:!1,$defs:{"explode-default":{if:{properties:{style:{const:"form"}},required:["style"]},then:{properties:{explode:{default:!0}}},else:{properties:{explode:{default:!1}}}}}},responses:{type:"object",properties:{default:{$ref:"#/$defs/response-or-reference"}},patternProperties:{"^[1-5](?:[0-9]{2}|XX)$":{$ref:"#/$defs/response-or-reference"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},response:{type:"object",properties:{description:{type:"string"},headers:{type:"object",additionalProperties:{$ref:"#/$defs/header-or-reference"}},content:{$ref:"#/$defs/content"},links:{type:"object",additionalProperties:{$ref:"#/$defs/link-or-reference"}}},required:["description"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"response-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/response"}},callbacks:{type:"object",$ref:"#/$defs/specification-extensions",additionalProperties:{$ref:"#/$defs/path-item-or-reference"}},"callbacks-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/callbacks"}},example:{type:"object",properties:{summary:{type:"string"},description:{type:"string"},value:!0,externalValue:{type:"string",format:"uri"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"example-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/example"}},link:{type:"object",properties:{operationRef:{type:"string",format:"uri-reference"},operationId:!0,parameters:{$ref:"#/$defs/map-of-strings"},requestBody:!0,description:{type:"string"},body:{$ref:"#/$defs/server"}},oneOf:[{required:["operationRef"]},{required:["operationId"]}],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"link-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/link"}},header:{type:"object",properties:{description:{type:"string"},required:{default:!1,type:"boolean"},deprecated:{default:!1,type:"boolean"},schema:{$ref:"#/$defs/schema"},content:{$ref:"#/$defs/content"}},oneOf:[{required:["schema"]},{required:["content"]}],dependentSchemas:{schema:{properties:{style:{default:"simple",const:"simple"},explode:{default:!1,type:"boolean"}},$ref:"#/$defs/examples"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"header-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/header"}},tag:{type:"object",properties:{name:{type:"string"},description:{type:"string"},externalDocs:{$ref:"#/$defs/external-documentation"}},required:["name"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},reference:{type:"object",properties:{$ref:{type:"string",format:"uri-reference"},summary:{type:"string"},description:{type:"string"}},unevaluatedProperties:!1},schema:{$dynamicAnchor:"meta",type:["object","boolean"]},"security-scheme":{type:"object",properties:{type:{enum:["apiKey","http","mutualTLS","oauth2","openIdConnect"]},description:{type:"string"}},required:["type"],allOf:[{$ref:"#/$defs/specification-extensions"},{$ref:"#/$defs/security-scheme/$defs/type-apikey"},{$ref:"#/$defs/security-scheme/$defs/type-http"},{$ref:"#/$defs/security-scheme/$defs/type-http-bearer"},{$ref:"#/$defs/security-scheme/$defs/type-oauth2"},{$ref:"#/$defs/security-scheme/$defs/type-oidc"}],unevaluatedProperties:!1,$defs:{"type-apikey":{if:{properties:{type:{const:"apiKey"}},required:["type"]},then:{properties:{name:{type:"string"},in:{enum:["query","header","cookie"]}},required:["name","in"]}},"type-http":{if:{properties:{type:{const:"http"}},required:["type"]},then:{properties:{scheme:{type:"string"}},required:["scheme"]}},"type-http-bearer":{if:{properties:{type:{const:"http"},scheme:{type:"string",pattern:"^[Bb][Ee][Aa][Rr][Ee][Rr]$"}},required:["type","scheme"]},then:{properties:{bearerFormat:{type:"string"}}}},"type-oauth2":{if:{properties:{type:{const:"oauth2"}},required:["type"]},then:{properties:{flows:{$ref:"#/$defs/oauth-flows"}},required:["flows"]}},"type-oidc":{if:{properties:{type:{const:"openIdConnect"}},required:["type"]},then:{properties:{openIdConnectUrl:{type:"string",format:"uri"}},required:["openIdConnectUrl"]}}}},"security-scheme-or-reference":{if:{type:"object",required:["$ref"]},then:{$ref:"#/$defs/reference"},else:{$ref:"#/$defs/security-scheme"}},"oauth-flows":{type:"object",properties:{implicit:{$ref:"#/$defs/oauth-flows/$defs/implicit"},password:{$ref:"#/$defs/oauth-flows/$defs/password"},clientCredentials:{$ref:"#/$defs/oauth-flows/$defs/client-credentials"},authorizationCode:{$ref:"#/$defs/oauth-flows/$defs/authorization-code"}},$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1,$defs:{implicit:{type:"object",properties:{authorizationUrl:{type:"string"},refreshUrl:{type:"string"},scopes:{$ref:"#/$defs/map-of-strings"}},required:["authorizationUrl","scopes"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},password:{type:"object",properties:{tokenUrl:{type:"string"},refreshUrl:{type:"string"},scopes:{$ref:"#/$defs/map-of-strings"}},required:["tokenUrl","scopes"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"client-credentials":{type:"object",properties:{tokenUrl:{type:"string"},refreshUrl:{type:"string"},scopes:{$ref:"#/$defs/map-of-strings"}},required:["tokenUrl","scopes"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1},"authorization-code":{type:"object",properties:{authorizationUrl:{type:"string"},tokenUrl:{type:"string"},refreshUrl:{type:"string"},scopes:{$ref:"#/$defs/map-of-strings"}},required:["authorizationUrl","tokenUrl","scopes"],$ref:"#/$defs/specification-extensions",unevaluatedProperties:!1}}},"security-requirement":{type:"object",additionalProperties:{type:"array",items:{type:"string"}}},"specification-extensions":{patternProperties:{"^x-":!0}},examples:{properties:{example:!0,examples:{type:"object",additionalProperties:{$ref:"#/$defs/example-or-reference"}}}},"map-of-strings":{type:"object",additionalProperties:{type:"string"}}},Ub={$id:jb,$schema:Cb,type:qb,properties:Rb,required:Mb,anyOf:Lb,$ref:Db,unevaluatedProperties:Zb,$defs:Vb};var B;(function(r){r.assertEqual=n=>n;function e(n){}r.assertIs=e;function t(n){throw new Error}r.assertNever=t,r.arrayToEnum=n=>{let i={};for(let a of n)i[a]=a;return i},r.getValidEnumValues=n=>{let i=r.objectKeys(n).filter(o=>typeof n[n[o]]!="number"),a={};for(let o of i)a[o]=n[o];return r.objectValues(a)},r.objectValues=n=>r.objectKeys(n).map(function(i){return n[i]}),r.objectKeys=typeof Object.keys=="function"?n=>Object.keys(n):n=>{let i=[];for(let a in n)Object.prototype.hasOwnProperty.call(n,a)&&i.push(a);return i},r.find=(n,i)=>{for(let a of n)if(i(a))return a},r.isInteger=typeof Number.isInteger=="function"?n=>Number.isInteger(n):n=>typeof n=="number"&&isFinite(n)&&Math.floor(n)===n;function s(n,i=" | "){return n.map(a=>typeof a=="string"?`'${a}'`:a).join(i)}r.joinValues=s,r.jsonStringifyReplacer=(n,i)=>typeof i=="bigint"?i.toString():i})(B||(B={}));var x=B.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),xt=r=>{switch(typeof r){case"undefined":return x.undefined;case"string":return x.string;case"number":return isNaN(r)?x.nan:x.number;case"boolean":return x.boolean;case"function":return x.function;case"bigint":return x.bigint;case"symbol":return x.symbol;case"object":return Array.isArray(r)?x.array:r===null?x.null:r.then&&typeof r.then=="function"&&r.catch&&typeof r.catch=="function"?x.promise:typeof Map<"u"&&r instanceof Map?x.map:typeof Set<"u"&&r instanceof Set?x.set:typeof Date<"u"&&r instanceof Date?x.date:x.object;default:return x.unknown}},S=B.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Bb=r=>JSON.stringify(r,null,2).replace(/"([^"]+)":/g,"$1:"),Re=class extends Error{constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){let t=e||function(i){return i.message},s={_errors:[]},n=i=>{for(let a of i.issues)if(a.code==="invalid_union")a.unionErrors.map(n);else if(a.code==="invalid_return_type")n(a.returnTypeError);else if(a.code==="invalid_arguments")n(a.argumentsError);else if(a.path.length===0)s._errors.push(t(a));else{let o=s,c=0;for(;ct.message){let t={},s=[];for(let n of this.issues)n.path.length>0?(t[n.path[0]]=t[n.path[0]]||[],t[n.path[0]].push(e(n))):s.push(e(n));return{formErrors:s,fieldErrors:t}}get formErrors(){return this.flatten()}};Re.create=r=>new Re(r);var js=(r,e)=>{let t;switch(r.code){case S.invalid_type:r.received===x.undefined?t="Required":t=`Expected ${r.expected}, received ${r.received}`;break;case S.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(r.expected,B.jsonStringifyReplacer)}`;break;case S.unrecognized_keys:t=`Unrecognized key(s) in object: ${B.joinValues(r.keys,", ")}`;break;case S.invalid_union:t="Invalid input";break;case S.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${B.joinValues(r.options)}`;break;case S.invalid_enum_value:t=`Invalid enum value. Expected ${B.joinValues(r.options)}, received '${r.received}'`;break;case S.invalid_arguments:t="Invalid function arguments";break;case S.invalid_return_type:t="Invalid function return type";break;case S.invalid_date:t="Invalid date";break;case S.invalid_string:typeof r.validation=="object"?"startsWith"in r.validation?t=`Invalid input: must start with "${r.validation.startsWith}"`:"endsWith"in r.validation?t=`Invalid input: must end with "${r.validation.endsWith}"`:B.assertNever(r.validation):r.validation!=="regex"?t=`Invalid ${r.validation}`:t="Invalid";break;case S.too_small:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at least":"more than"} ${r.minimum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at least":"over"} ${r.minimum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${r.minimum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly equal to ":r.inclusive?"greater than or equal to ":"greater than "}${new Date(r.minimum)}`:t="Invalid input";break;case S.too_big:r.type==="array"?t=`Array must contain ${r.exact?"exactly":r.inclusive?"at most":"less than"} ${r.maximum} element(s)`:r.type==="string"?t=`String must contain ${r.exact?"exactly":r.inclusive?"at most":"under"} ${r.maximum} character(s)`:r.type==="number"?t=`Number must be ${r.exact?"exactly":r.inclusive?"less than or equal to":"less than"} ${r.maximum}`:r.type==="date"?t=`Date must be ${r.exact?"exactly":r.inclusive?"smaller than or equal to":"smaller than"} ${new Date(r.maximum)}`:t="Invalid input";break;case S.custom:t="Invalid input";break;case S.invalid_intersection_types:t="Intersection results could not be merged";break;case S.not_multiple_of:t=`Number must be a multiple of ${r.multipleOf}`;break;case S.not_finite:t="Number must be finite";break;default:t=e.defaultError,B.assertNever(r)}return{message:t}},Cd=js;function Fb(r){Cd=r}function Qn(){return Cd}var Xn=r=>{let{data:e,path:t,errorMaps:s,issueData:n}=r,i=[...t,...n.path||[]],a={...n,path:i},o="",c=s.filter(l=>!!l).slice().reverse();for(let l of c)o=l(a,{data:e,defaultError:o}).message;return{...n,path:i,message:n.message||o}},Kb=[];function $(r,e){let t=Xn({issueData:e,data:r.data,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,Qn(),js].filter(s=>!!s)});r.common.issues.push(t)}var oe=class{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,t){let s=[];for(let n of t){if(n.status==="aborted")return j;n.status==="dirty"&&e.dirty(),s.push(n.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,t){let s=[];for(let n of t)s.push({key:await n.key,value:await n.value});return oe.mergeObjectSync(e,s)}static mergeObjectSync(e,t){let s={};for(let n of t){let{key:i,value:a}=n;if(i.status==="aborted"||a.status==="aborted")return j;i.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),(typeof a.value<"u"||n.alwaysSet)&&(s[i.value]=a.value)}return{status:e.value,value:s}}},j=Object.freeze({status:"aborted"}),qd=r=>({status:"dirty",value:r}),ue=r=>({status:"valid",value:r}),So=r=>r.status==="aborted",xo=r=>r.status==="dirty",ei=r=>r.status==="valid",ti=r=>typeof Promise!==void 0&&r instanceof Promise,L;(function(r){r.errToObj=e=>typeof e=="string"?{message:e}:e||{},r.toString=e=>typeof e=="string"?e:e?.message})(L||(L={}));var $e=class{constructor(e,t,s,n){this.parent=e,this.data=t,this._path=s,this._key=n}get path(){return this._path.concat(this._key)}},Ed=(r,e)=>{if(ei(e))return{success:!0,data:e.value};if(!r.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,error:new Re(r.common.issues)}};function M(r){if(!r)return{};let{errorMap:e,invalid_type_error:t,required_error:s,description:n}=r;if(e&&(t||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:n}:{errorMap:(a,o)=>a.code!=="invalid_type"?{message:o.defaultError}:typeof o.data>"u"?{message:s??o.defaultError}:{message:t??o.defaultError},description:n}}var q=class{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return xt(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:xt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new oe,ctx:{common:e.parent.common,data:e.data,parsedType:xt(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(ti(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let s=this.safeParse(e,t);if(s.success)return s.data;throw s.error}safeParse(e,t){var s;let n={common:{issues:[],async:(s=t?.async)!==null&&s!==void 0?s:!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:xt(e)},i=this._parseSync({data:e,path:n.path,parent:n});return Ed(n,i)}async parseAsync(e,t){let s=await this.safeParseAsync(e,t);if(s.success)return s.data;throw s.error}async safeParseAsync(e,t){let s={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:xt(e)},n=this._parse({data:e,path:s.path,parent:s}),i=await(ti(n)?n:Promise.resolve(n));return Ed(s,i)}refine(e,t){let s=n=>typeof t=="string"||typeof t>"u"?{message:t}:typeof t=="function"?t(n):t;return this._refinement((n,i)=>{let a=e(n),o=()=>i.addIssue({code:S.custom,...s(n)});return typeof Promise<"u"&&a instanceof Promise?a.then(c=>c?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(e,t){return this._refinement((s,n)=>e(s)?!0:(n.addIssue(typeof t=="function"?t(s,n):t),!1))}_refinement(e){return new be({schema:this,typeName:A.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return Te.create(this)}nullable(){return dt.create(this)}nullish(){return this.optional().nullable()}array(){return ve.create(this)}promise(){return Pt.create(this)}or(e){return er.create([this,e])}and(e){return tr.create(this,e)}transform(e){return new be({schema:this,typeName:A.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let t=typeof e=="function"?e:()=>e;return new or({innerType:this,defaultValue:t,typeName:A.ZodDefault})}brand(){return new si({typeName:A.ZodBranded,type:this,...M(void 0)})}catch(e){let t=typeof e=="function"?e:()=>e;return new Wr({innerType:this,defaultValue:t,typeName:A.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return cr.create(this,e)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Wb=/^c[^\s-]{8,}$/i,Jb=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,Yb=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,Hb=r=>r.precision?r.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${r.precision}}(([+-]\\d{2}:\\d{2})|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${r.precision}}Z$`):r.precision===0?r.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}:\\d{2})|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):r.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}:\\d{2})|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$"),Me=class extends q{constructor(){super(...arguments),this._regex=(e,t,s)=>this.refinement(n=>e.test(n),{validation:t,code:S.invalid_string,...L.errToObj(s)}),this.nonempty=e=>this.min(1,L.errToObj(e)),this.trim=()=>new Me({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==x.string){let i=this._getOrReturnCtx(e);return $(i,{code:S.invalid_type,expected:x.string,received:i.parsedType}),j}let s=new oe,n;for(let i of this._def.checks)if(i.kind==="min")e.data.lengthi.value&&(n=this._getOrReturnCtx(e,n),$(n,{code:S.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),s.dirty());else if(i.kind==="length"){let a=e.data.length>i.value,o=e.data.length"u"?null:e?.precision,offset:(t=e?.offset)!==null&&t!==void 0?t:!1,...L.errToObj(e?.message)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...L.errToObj(t)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...L.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...L.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...L.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...L.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...L.errToObj(t)})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get minLength(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.value{var e;return new Me({checks:[],typeName:A.ZodString,coerce:(e=r?.coerce)!==null&&e!==void 0?e:!1,...M(r)})};function zb(r,e){let t=(r.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,n=t>s?t:s,i=parseInt(r.toFixed(n).replace(".","")),a=parseInt(e.toFixed(n).replace(".",""));return i%a/Math.pow(10,n)}var He=class extends q{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==x.number){let i=this._getOrReturnCtx(e);return $(i,{code:S.invalid_type,expected:x.number,received:i.parsedType}),j}let s,n=new oe;for(let i of this._def.checks)i.kind==="int"?B.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),$(s,{code:S.invalid_type,expected:"integer",received:"float",message:i.message}),n.dirty()):i.kind==="min"?(i.inclusive?e.datai.value:e.data>=i.value)&&(s=this._getOrReturnCtx(e,s),$(s,{code:S.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):i.kind==="multipleOf"?zb(e.data,i.value)!==0&&(s=this._getOrReturnCtx(e,s),$(s,{code:S.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),$(s,{code:S.not_finite,message:i.message}),n.dirty()):B.assertNever(i);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,L.toString(t))}gt(e,t){return this.setLimit("min",e,!1,L.toString(t))}lte(e,t){return this.setLimit("max",e,!0,L.toString(t))}lt(e,t){return this.setLimit("max",e,!1,L.toString(t))}setLimit(e,t,s,n){return new He({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:s,message:L.toString(n)}]})}_addCheck(e){return new He({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:L.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:L.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:L.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:L.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:L.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:L.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:L.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuee.kind==="int")}};He.create=r=>new He({checks:[],typeName:A.ZodNumber,coerce:r?.coerce||!1,...M(r)});var zt=class extends q{_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==x.bigint){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.bigint,received:s.parsedType}),j}return ue(e.data)}};zt.create=r=>{var e;return new zt({typeName:A.ZodBigInt,coerce:(e=r?.coerce)!==null&&e!==void 0?e:!1,...M(r)})};var Gt=class extends q{_parse(e){if(this._def.coerce&&(e.data=Boolean(e.data)),this._getType(e)!==x.boolean){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.boolean,received:s.parsedType}),j}return ue(e.data)}};Gt.create=r=>new Gt({typeName:A.ZodBoolean,coerce:r?.coerce||!1,...M(r)});var lt=class extends q{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==x.date){let i=this._getOrReturnCtx(e);return $(i,{code:S.invalid_type,expected:x.date,received:i.parsedType}),j}if(isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return $(i,{code:S.invalid_date}),j}let s=new oe,n;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()i.value&&(n=this._getOrReturnCtx(e,n),$(n,{code:S.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),s.dirty()):B.assertNever(i);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new lt({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:L.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:L.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind==="min"&&(e===null||t.value>e)&&(e=t.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)t.kind==="max"&&(e===null||t.valuenew lt({checks:[],coerce:r?.coerce||!1,typeName:A.ZodDate,...M(r)});var Ur=class extends q{_parse(e){if(this._getType(e)!==x.symbol){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.symbol,received:s.parsedType}),j}return ue(e.data)}};Ur.create=r=>new Ur({typeName:A.ZodSymbol,...M(r)});var Qt=class extends q{_parse(e){if(this._getType(e)!==x.undefined){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.undefined,received:s.parsedType}),j}return ue(e.data)}};Qt.create=r=>new Qt({typeName:A.ZodUndefined,...M(r)});var Xt=class extends q{_parse(e){if(this._getType(e)!==x.null){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.null,received:s.parsedType}),j}return ue(e.data)}};Xt.create=r=>new Xt({typeName:A.ZodNull,...M(r)});var It=class extends q{constructor(){super(...arguments),this._any=!0}_parse(e){return ue(e.data)}};It.create=r=>new It({typeName:A.ZodAny,...M(r)});var ct=class extends q{constructor(){super(...arguments),this._unknown=!0}_parse(e){return ue(e.data)}};ct.create=r=>new ct({typeName:A.ZodUnknown,...M(r)});var Le=class extends q{_parse(e){let t=this._getOrReturnCtx(e);return $(t,{code:S.invalid_type,expected:x.never,received:t.parsedType}),j}};Le.create=r=>new Le({typeName:A.ZodNever,...M(r)});var Br=class extends q{_parse(e){if(this._getType(e)!==x.undefined){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.void,received:s.parsedType}),j}return ue(e.data)}};Br.create=r=>new Br({typeName:A.ZodVoid,...M(r)});var ve=class extends q{_parse(e){let{ctx:t,status:s}=this._processInputParams(e),n=this._def;if(t.parsedType!==x.array)return $(t,{code:S.invalid_type,expected:x.array,received:t.parsedType}),j;if(n.exactLength!==null){let a=t.data.length>n.exactLength.value,o=t.data.lengthn.maxLength.value&&($(t,{code:S.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),s.dirty()),t.common.async)return Promise.all(t.data.map((a,o)=>n.type._parseAsync(new $e(t,a,t.path,o)))).then(a=>oe.mergeArray(s,a));let i=t.data.map((a,o)=>n.type._parseSync(new $e(t,a,t.path,o)));return oe.mergeArray(s,i)}get element(){return this._def.type}min(e,t){return new ve({...this._def,minLength:{value:e,message:L.toString(t)}})}max(e,t){return new ve({...this._def,maxLength:{value:e,message:L.toString(t)}})}length(e,t){return new ve({...this._def,exactLength:{value:e,message:L.toString(t)}})}nonempty(e){return this.min(1,e)}};ve.create=(r,e)=>new ve({type:r,minLength:null,maxLength:null,exactLength:null,typeName:A.ZodArray,...M(e)});var ri;(function(r){r.mergeShapes=(e,t)=>({...e,...t})})(ri||(ri={}));var Nd=r=>e=>new H({...r,shape:()=>({...r.shape(),...e})});function Vr(r){if(r instanceof H){let e={};for(let t in r.shape){let s=r.shape[t];e[t]=Te.create(Vr(s))}return new H({...r._def,shape:()=>e})}else return r instanceof ve?ve.create(Vr(r.element)):r instanceof Te?Te.create(Vr(r.unwrap())):r instanceof dt?dt.create(Vr(r.unwrap())):r instanceof ke?ke.create(r.items.map(e=>Vr(e))):r}var H=class extends q{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=Nd(this._def),this.extend=Nd(this._def)}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=B.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==x.object){let l=this._getOrReturnCtx(e);return $(l,{code:S.invalid_type,expected:x.object,received:l.parsedType}),j}let{status:s,ctx:n}=this._processInputParams(e),{shape:i,keys:a}=this._getCached(),o=[];if(!(this._def.catchall instanceof Le&&this._def.unknownKeys==="strip"))for(let l in n.data)a.includes(l)||o.push(l);let c=[];for(let l of a){let u=i[l],d=n.data[l];c.push({key:{status:"valid",value:l},value:u._parse(new $e(n,d,n.path,l)),alwaysSet:l in n.data})}if(this._def.catchall instanceof Le){let l=this._def.unknownKeys;if(l==="passthrough")for(let u of o)c.push({key:{status:"valid",value:u},value:{status:"valid",value:n.data[u]}});else if(l==="strict")o.length>0&&($(n,{code:S.unrecognized_keys,keys:o}),s.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let u of o){let d=n.data[u];c.push({key:{status:"valid",value:u},value:l._parse(new $e(n,d,n.path,u)),alwaysSet:u in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let l=[];for(let u of c){let d=await u.key;l.push({key:d,value:await u.value,alwaysSet:u.alwaysSet})}return l}).then(l=>oe.mergeObjectSync(s,l)):oe.mergeObjectSync(s,c)}get shape(){return this._def.shape()}strict(e){return L.errToObj,new H({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(t,s)=>{var n,i,a,o;let c=(a=(i=(n=this._def).errorMap)===null||i===void 0?void 0:i.call(n,t,s).message)!==null&&a!==void 0?a:s.defaultError;return t.code==="unrecognized_keys"?{message:(o=L.errToObj(e).message)!==null&&o!==void 0?o:c}:{message:c}}}:{}})}strip(){return new H({...this._def,unknownKeys:"strip"})}passthrough(){return new H({...this._def,unknownKeys:"passthrough"})}setKey(e,t){return this.augment({[e]:t})}merge(e){return new H({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>ri.mergeShapes(this._def.shape(),e._def.shape()),typeName:A.ZodObject})}catchall(e){return new H({...this._def,catchall:e})}pick(e){let t={};return B.objectKeys(e).map(s=>{this.shape[s]&&(t[s]=this.shape[s])}),new H({...this._def,shape:()=>t})}omit(e){let t={};return B.objectKeys(this.shape).map(s=>{B.objectKeys(e).indexOf(s)===-1&&(t[s]=this.shape[s])}),new H({...this._def,shape:()=>t})}deepPartial(){return Vr(this)}partial(e){let t={};if(e)return B.objectKeys(this.shape).map(s=>{B.objectKeys(e).indexOf(s)===-1?t[s]=this.shape[s]:t[s]=this.shape[s].optional()}),new H({...this._def,shape:()=>t});for(let s in this.shape){let n=this.shape[s];t[s]=n.optional()}return new H({...this._def,shape:()=>t})}required(e){let t={};if(e)B.objectKeys(this.shape).map(s=>{if(B.objectKeys(e).indexOf(s)===-1)t[s]=this.shape[s];else{let i=this.shape[s];for(;i instanceof Te;)i=i._def.innerType;t[s]=i}});else for(let s in this.shape){let i=this.shape[s];for(;i instanceof Te;)i=i._def.innerType;t[s]=i}return new H({...this._def,shape:()=>t})}keyof(){return Rd(B.objectKeys(this.shape))}};H.create=(r,e)=>new H({shape:()=>r,unknownKeys:"strip",catchall:Le.create(),typeName:A.ZodObject,...M(e)});H.strictCreate=(r,e)=>new H({shape:()=>r,unknownKeys:"strict",catchall:Le.create(),typeName:A.ZodObject,...M(e)});H.lazycreate=(r,e)=>new H({shape:r,unknownKeys:"strip",catchall:Le.create(),typeName:A.ZodObject,...M(e)});var er=class extends q{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.options;function n(i){for(let o of i)if(o.result.status==="valid")return o.result;for(let o of i)if(o.result.status==="dirty")return t.common.issues.push(...o.ctx.common.issues),o.result;let a=i.map(o=>new Re(o.ctx.common.issues));return $(t,{code:S.invalid_union,unionErrors:a}),j}if(t.common.async)return Promise.all(s.map(async i=>{let a={...t,common:{...t.common,issues:[]},parent:null};return{result:await i._parseAsync({data:t.data,path:t.path,parent:a}),ctx:a}})).then(n);{let i,a=[];for(let c of s){let l={...t,common:{...t.common,issues:[]},parent:null},u=c._parseSync({data:t.data,path:t.path,parent:l});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:l}),l.common.issues.length&&a.push(l.common.issues)}if(i)return t.common.issues.push(...i.ctx.common.issues),i.result;let o=a.map(c=>new Re(c));return $(t,{code:S.invalid_union,unionErrors:o}),j}}get options(){return this._def.options}};er.create=(r,e)=>new er({options:r,typeName:A.ZodUnion,...M(e)});var Gn=r=>r instanceof sr?Gn(r.schema):r instanceof be?Gn(r.innerType()):r instanceof nr?[r.value]:r instanceof ir?r.options:r instanceof ar?Object.keys(r.enum):r instanceof or?Gn(r._def.innerType):r instanceof Qt?[void 0]:r instanceof Xt?[null]:null,Fr=class extends q{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==x.object)return $(t,{code:S.invalid_type,expected:x.object,received:t.parsedType}),j;let s=this.discriminator,n=t.data[s],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):($(t,{code:S.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[s]}),j)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,s){let n=new Map;for(let i of t){let a=Gn(i.shape[e]);if(!a)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let o of a){if(n.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(o)}`);n.set(o,i)}}return new Fr({typeName:A.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...M(s)})}};function Oo(r,e){let t=xt(r),s=xt(e);if(r===e)return{valid:!0,data:r};if(t===x.object&&s===x.object){let n=B.objectKeys(e),i=B.objectKeys(r).filter(o=>n.indexOf(o)!==-1),a={...r,...e};for(let o of i){let c=Oo(r[o],e[o]);if(!c.valid)return{valid:!1};a[o]=c.data}return{valid:!0,data:a}}else if(t===x.array&&s===x.array){if(r.length!==e.length)return{valid:!1};let n=[];for(let i=0;i{if(So(i)||So(a))return j;let o=Oo(i.value,a.value);return o.valid?((xo(i)||xo(a))&&t.dirty(),{status:t.value,value:o.data}):($(s,{code:S.invalid_intersection_types}),j)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([i,a])=>n(i,a)):n(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}};tr.create=(r,e,t)=>new tr({left:r,right:e,typeName:A.ZodIntersection,...M(t)});var ke=class extends q{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==x.array)return $(s,{code:S.invalid_type,expected:x.array,received:s.parsedType}),j;if(s.data.lengththis._def.items.length&&($(s,{code:S.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let i=s.data.map((a,o)=>{let c=this._def.items[o]||this._def.rest;return c?c._parse(new $e(s,a,s.path,o)):null}).filter(a=>!!a);return s.common.async?Promise.all(i).then(a=>oe.mergeArray(t,a)):oe.mergeArray(t,i)}get items(){return this._def.items}rest(e){return new ke({...this._def,rest:e})}};ke.create=(r,e)=>{if(!Array.isArray(r))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ke({items:r,typeName:A.ZodTuple,rest:null,...M(e)})};var rr=class extends q{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==x.object)return $(s,{code:S.invalid_type,expected:x.object,received:s.parsedType}),j;let n=[],i=this._def.keyType,a=this._def.valueType;for(let o in s.data)n.push({key:i._parse(new $e(s,o,s.path,o)),value:a._parse(new $e(s,s.data[o],s.path,o))});return s.common.async?oe.mergeObjectAsync(t,n):oe.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,s){return t instanceof q?new rr({keyType:e,valueType:t,typeName:A.ZodRecord,...M(s)}):new rr({keyType:Me.create(),valueType:e,typeName:A.ZodRecord,...M(t)})}},Kr=class extends q{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==x.map)return $(s,{code:S.invalid_type,expected:x.map,received:s.parsedType}),j;let n=this._def.keyType,i=this._def.valueType,a=[...s.data.entries()].map(([o,c],l)=>({key:n._parse(new $e(s,o,s.path,[l,"key"])),value:i._parse(new $e(s,c,s.path,[l,"value"]))}));if(s.common.async){let o=new Map;return Promise.resolve().then(async()=>{for(let c of a){let l=await c.key,u=await c.value;if(l.status==="aborted"||u.status==="aborted")return j;(l.status==="dirty"||u.status==="dirty")&&t.dirty(),o.set(l.value,u.value)}return{status:t.value,value:o}})}else{let o=new Map;for(let c of a){let l=c.key,u=c.value;if(l.status==="aborted"||u.status==="aborted")return j;(l.status==="dirty"||u.status==="dirty")&&t.dirty(),o.set(l.value,u.value)}return{status:t.value,value:o}}}};Kr.create=(r,e,t)=>new Kr({valueType:e,keyType:r,typeName:A.ZodMap,...M(t)});var ut=class extends q{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.parsedType!==x.set)return $(s,{code:S.invalid_type,expected:x.set,received:s.parsedType}),j;let n=this._def;n.minSize!==null&&s.data.sizen.maxSize.value&&($(s,{code:S.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(c){let l=new Set;for(let u of c){if(u.status==="aborted")return j;u.status==="dirty"&&t.dirty(),l.add(u.value)}return{status:t.value,value:l}}let o=[...s.data.values()].map((c,l)=>i._parse(new $e(s,c,s.path,l)));return s.common.async?Promise.all(o).then(c=>a(c)):a(o)}min(e,t){return new ut({...this._def,minSize:{value:e,message:L.toString(t)}})}max(e,t){return new ut({...this._def,maxSize:{value:e,message:L.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};ut.create=(r,e)=>new ut({valueType:r,minSize:null,maxSize:null,typeName:A.ZodSet,...M(e)});var Ot=class extends q{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==x.function)return $(t,{code:S.invalid_type,expected:x.function,received:t.parsedType}),j;function s(o,c){return Xn({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Qn(),js].filter(l=>!!l),issueData:{code:S.invalid_arguments,argumentsError:c}})}function n(o,c){return Xn({data:o,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Qn(),js].filter(l=>!!l),issueData:{code:S.invalid_return_type,returnTypeError:c}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;return this._def.returns instanceof Pt?ue(async(...o)=>{let c=new Re([]),l=await this._def.args.parseAsync(o,i).catch(p=>{throw c.addIssue(s(o,p)),c}),u=await a(...l);return await this._def.returns._def.type.parseAsync(u,i).catch(p=>{throw c.addIssue(n(u,p)),c})}):ue((...o)=>{let c=this._def.args.safeParse(o,i);if(!c.success)throw new Re([s(o,c.error)]);let l=a(...c.data),u=this._def.returns.safeParse(l,i);if(!u.success)throw new Re([n(l,u.error)]);return u.data})}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new Ot({...this._def,args:ke.create(e).rest(ct.create())})}returns(e){return new Ot({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,s){return new Ot({args:e||ke.create([]).rest(ct.create()),returns:t||ct.create(),typeName:A.ZodFunction,...M(s)})}},sr=class extends q{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};sr.create=(r,e)=>new sr({getter:r,typeName:A.ZodLazy,...M(e)});var nr=class extends q{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return $(t,{code:S.invalid_literal,expected:this._def.value}),j}return{status:"valid",value:e.data}}get value(){return this._def.value}};nr.create=(r,e)=>new nr({value:r,typeName:A.ZodLiteral,...M(e)});function Rd(r,e){return new ir({values:r,typeName:A.ZodEnum,...M(e)})}var ir=class extends q{_parse(e){if(typeof e.data!="string"){let t=this._getOrReturnCtx(e),s=this._def.values;return $(t,{expected:B.joinValues(s),received:t.parsedType,code:S.invalid_type}),j}if(this._def.values.indexOf(e.data)===-1){let t=this._getOrReturnCtx(e),s=this._def.values;return $(t,{received:t.data,code:S.invalid_enum_value,options:s}),j}return ue(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}};ir.create=Rd;var ar=class extends q{_parse(e){let t=B.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==x.string&&s.parsedType!==x.number){let n=B.objectValues(t);return $(s,{expected:B.joinValues(n),received:s.parsedType,code:S.invalid_type}),j}if(t.indexOf(e.data)===-1){let n=B.objectValues(t);return $(s,{received:s.data,code:S.invalid_enum_value,options:n}),j}return ue(e.data)}get enum(){return this._def.values}};ar.create=(r,e)=>new ar({values:r,typeName:A.ZodNativeEnum,...M(e)});var Pt=class extends q{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==x.promise&&t.common.async===!1)return $(t,{code:S.invalid_type,expected:x.promise,received:t.parsedType}),j;let s=t.parsedType===x.promise?t.data:Promise.resolve(t.data);return ue(s.then(n=>this._def.type.parseAsync(n,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Pt.create=(r,e)=>new Pt({type:r,typeName:A.ZodPromise,...M(e)});var be=class extends q{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===A.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:s}=this._processInputParams(e),n=this._def.effect||null;if(n.type==="preprocess"){let a=n.transform(s.data);return s.common.async?Promise.resolve(a).then(o=>this._def.schema._parseAsync({data:o,path:s.path,parent:s})):this._def.schema._parseSync({data:a,path:s.path,parent:s})}let i={addIssue:a=>{$(s,a),a.fatal?t.abort():t.dirty()},get path(){return s.path}};if(i.addIssue=i.addIssue.bind(i),n.type==="refinement"){let a=o=>{let c=n.refinement(o,i);if(s.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(s.common.async===!1){let o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?j:(o.status==="dirty"&&t.dirty(),a(o.value),{status:t.value,value:o.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>o.status==="aborted"?j:(o.status==="dirty"&&t.dirty(),a(o.value).then(()=>({status:t.value,value:o.value}))))}if(n.type==="transform")if(s.common.async===!1){let a=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!ei(a))return a;let o=n.transform(a.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:o}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(a=>ei(a)?Promise.resolve(n.transform(a.value,i)).then(o=>({status:t.value,value:o})):a);B.assertNever(n)}};be.create=(r,e,t)=>new be({schema:r,typeName:A.ZodEffects,effect:e,...M(t)});be.createWithPreprocess=(r,e,t)=>new be({schema:e,effect:{type:"preprocess",transform:r},typeName:A.ZodEffects,...M(t)});var Te=class extends q{_parse(e){return this._getType(e)===x.undefined?ue(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Te.create=(r,e)=>new Te({innerType:r,typeName:A.ZodOptional,...M(e)});var dt=class extends q{_parse(e){return this._getType(e)===x.null?ue(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};dt.create=(r,e)=>new dt({innerType:r,typeName:A.ZodNullable,...M(e)});var or=class extends q{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return t.parsedType===x.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};or.create=(r,e)=>new or({innerType:r,typeName:A.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...M(e)});var Wr=class extends q{_parse(e){let{ctx:t}=this._processInputParams(e),s=this._def.innerType._parse({data:t.data,path:t.path,parent:t});return ti(s)?s.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.defaultValue()})):{status:"valid",value:s.status==="valid"?s.value:this._def.defaultValue()}}removeDefault(){return this._def.innerType}};Wr.create=(r,e)=>new Wr({innerType:r,typeName:A.ZodCatch,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...M(e)});var Jr=class extends q{_parse(e){if(this._getType(e)!==x.nan){let s=this._getOrReturnCtx(e);return $(s,{code:S.invalid_type,expected:x.nan,received:s.parsedType}),j}return{status:"valid",value:e.data}}};Jr.create=r=>new Jr({typeName:A.ZodNaN,...M(r)});var Gb=Symbol("zod_brand"),si=class extends q{_parse(e){let{ctx:t}=this._processInputParams(e),s=t.data;return this._def.type._parse({data:s,path:t.path,parent:t})}unwrap(){return this._def.type}},cr=class extends q{_parse(e){let{status:t,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?j:i.status==="dirty"?(t.dirty(),qd(i.value)):this._def.out._parseAsync({data:i.value,path:s.path,parent:s})})();{let n=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return n.status==="aborted"?j:n.status==="dirty"?(t.dirty(),{status:"dirty",value:n.value}):this._def.out._parseSync({data:n.value,path:s.path,parent:s})}}static create(e,t){return new cr({in:e,out:t,typeName:A.ZodPipeline})}},Md=(r,e={},t)=>r?It.create().superRefine((s,n)=>{if(!r(s)){let i=typeof e=="function"?e(s):e,a=typeof i=="string"?{message:i}:i;n.addIssue({code:"custom",...a,fatal:t})}}):It.create(),Qb={object:H.lazycreate},A;(function(r){r.ZodString="ZodString",r.ZodNumber="ZodNumber",r.ZodNaN="ZodNaN",r.ZodBigInt="ZodBigInt",r.ZodBoolean="ZodBoolean",r.ZodDate="ZodDate",r.ZodSymbol="ZodSymbol",r.ZodUndefined="ZodUndefined",r.ZodNull="ZodNull",r.ZodAny="ZodAny",r.ZodUnknown="ZodUnknown",r.ZodNever="ZodNever",r.ZodVoid="ZodVoid",r.ZodArray="ZodArray",r.ZodObject="ZodObject",r.ZodUnion="ZodUnion",r.ZodDiscriminatedUnion="ZodDiscriminatedUnion",r.ZodIntersection="ZodIntersection",r.ZodTuple="ZodTuple",r.ZodRecord="ZodRecord",r.ZodMap="ZodMap",r.ZodSet="ZodSet",r.ZodFunction="ZodFunction",r.ZodLazy="ZodLazy",r.ZodLiteral="ZodLiteral",r.ZodEnum="ZodEnum",r.ZodEffects="ZodEffects",r.ZodNativeEnum="ZodNativeEnum",r.ZodOptional="ZodOptional",r.ZodNullable="ZodNullable",r.ZodDefault="ZodDefault",r.ZodCatch="ZodCatch",r.ZodPromise="ZodPromise",r.ZodBranded="ZodBranded",r.ZodPipeline="ZodPipeline"})(A||(A={}));var Xb=(r,e={message:`Input not instance of ${r.name}`})=>Md(t=>t instanceof r,e,!0),Ld=Me.create,Dd=He.create,e_=Jr.create,t_=zt.create,Zd=Gt.create,r_=lt.create,s_=Ur.create,n_=Qt.create,i_=Xt.create,a_=It.create,o_=ct.create,c_=Le.create,l_=Br.create,u_=ve.create,d_=H.create,f_=H.strictCreate,p_=er.create,h_=Fr.create,m_=tr.create,y_=ke.create,g_=rr.create,v_=Kr.create,b_=ut.create,__=Ot.create,w_=sr.create,S_=nr.create,x_=ir.create,O_=ar.create,I_=Pt.create,jd=be.create,P_=Te.create,T_=dt.create,$_=be.createWithPreprocess,k_=cr.create,A_=()=>Ld().optional(),E_=()=>Dd().optional(),N_=()=>Zd().optional(),j_={string:r=>Me.create({...r,coerce:!0}),number:r=>He.create({...r,coerce:!0}),boolean:r=>Gt.create({...r,coerce:!0}),bigint:r=>zt.create({...r,coerce:!0}),date:r=>lt.create({...r,coerce:!0})},C_=j,Vd=Object.freeze({__proto__:null,defaultErrorMap:js,setErrorMap:Fb,getErrorMap:Qn,makeIssue:Xn,EMPTY_PATH:Kb,addIssueToContext:$,ParseStatus:oe,INVALID:j,DIRTY:qd,OK:ue,isAborted:So,isDirty:xo,isValid:ei,isAsync:ti,get util(){return B},ZodParsedType:x,getParsedType:xt,ZodType:q,ZodString:Me,ZodNumber:He,ZodBigInt:zt,ZodBoolean:Gt,ZodDate:lt,ZodSymbol:Ur,ZodUndefined:Qt,ZodNull:Xt,ZodAny:It,ZodUnknown:ct,ZodNever:Le,ZodVoid:Br,ZodArray:ve,get objectUtil(){return ri},ZodObject:H,ZodUnion:er,ZodDiscriminatedUnion:Fr,ZodIntersection:tr,ZodTuple:ke,ZodRecord:rr,ZodMap:Kr,ZodSet:ut,ZodFunction:Ot,ZodLazy:sr,ZodLiteral:nr,ZodEnum:ir,ZodNativeEnum:ar,ZodPromise:Pt,ZodEffects:be,ZodTransformer:be,ZodOptional:Te,ZodNullable:dt,ZodDefault:or,ZodCatch:Wr,ZodNaN:Jr,BRAND:Gb,ZodBranded:si,ZodPipeline:cr,custom:Md,Schema:q,ZodSchema:q,late:Qb,get ZodFirstPartyTypeKind(){return A},coerce:j_,any:a_,array:u_,bigint:t_,boolean:Zd,date:r_,discriminatedUnion:h_,effect:jd,enum:x_,function:__,instanceof:Xb,intersection:m_,lazy:w_,literal:S_,map:v_,nan:e_,nativeEnum:O_,never:c_,null:i_,nullable:T_,number:Dd,object:d_,oboolean:N_,onumber:E_,optional:P_,ostring:A_,pipeline:k_,preprocess:$_,promise:I_,record:g_,set:b_,strictObject:f_,string:Ld,symbol:s_,transformer:jd,tuple:y_,undefined:n_,union:p_,unknown:o_,void:l_,NEVER:C_,ZodIssueCode:S,quotelessJson:Bb,ZodError:Re});var q_=Vd.string().transform(r=>r.replaceAll("/",".").replaceAll("~0","~").replaceAll("~1","/")).brand(),Ud=r=>q_.parse(r);var Io={"2.0":bo,"3.0":_o,"3.1":wo};function R_(r){return r.keyword==="oneOf"||r.keyword==="required"&&r.params.missingProperty==="$ref"}function M_(r,e){return e["konfig-oas2-schema"]===void 0?!1:e["konfig-oas2-schema"].paths.filter(n=>{if(r.path===void 0)return!1;let i=r.path.join("/"),a=Ud(i);return r.path&&a.includes(n)}).length>0}var L_=[{path:/^components\/securitySchemes\/[^/]+$/,message:"Invalid security scheme"}];function D_(r){for(let e of r)e.keyword==="additionalProperties"&&(e.instancePath=`${e.instancePath}/${String(e.params.additionalProperty)}`);for(let e=0;e0&&R_(t)&&r[e-1]?.instancePath.startsWith(t.instancePath)&&(r.splice(e,1),e--)}}function Z_(r){for(let e of r){if(e.path===void 0)continue;let t=e.path.join("/");for(let s of L_)if(s.path.test(t)){e.message=s.message;break}}}var Kd=(r,e,t)=>{let s=t.document.formats;if(s==null)return;let n=s.has(ni.oas2)?Io["2.0"]:s.has(ni.oas3_1)?Io["3.1"]:Io["3.0"],i=(0,Bd.getIgnore)({spec:t.document.data}),a=(0,Fd.schema)(r,{allErrors:!0,schema:n,prepareResults:D_},t);return Array.isArray(a)&&(Z_(a),a=a.filter(o=>!M_(o,i))),a};var qs=X(Zr()),Rf=X(Wd());var Hd=X(Yd()),Po=X(Kn()),zd=async(r,e,t)=>{let s=t.document.data,n=await(0,Hd.findSecuritySchemesForParametersStoplight)({document:s,operation:r});if(n===void 0)return[];if(n.length===1){let i=n[0];if(i===void 0)throw Error("this makes no sense");return[{message:`Use security requirement "${i.name}" instead of parameter with name "${(0,Po.getSecurityParameterName)({security:i.scheme})}"`}]}return[{message:`Use security requirements ${n.map(i=>`"${i.name}"`).join(", ")} instead of parameters with names ${n.map(i=>`"${(0,Po.getSecurityParameterName)({security:i.scheme})}"`).join(", ")}`}]};var Ao=X(Gd()),yi=X(Qd());var ef=X(Xd()),tf=async r=>{let e=ef.tagSchema.safeParse(r);if(e.success)return[];if(!e.error.issues[0])throw Error("At least one issue should exist");return[{message:e.error.issues[0].message}]};var To=(r,e,t)=>{let s=[],n=Object.keys(r);for(let i=0;i(0,af.canSchemaObjectBeStructured)({schemaObject:r})?[{message:`Detected JSON example '${r.example}'. Request body schemas should be structured to generate helpful method parameters and classes.`}]:[];var _e=X(lf());var di=X(Zr()),df=X(uf()),ff=(r,e,t)=>(0,di.getIgnore)({spec:t.document.data})[di.OBJECT_WITH_NO_PROPERTIES_RULE_NAME]?[]:(0,df.isObjectTypeSchemaWithNoProperties)({schema:r})?[{message:"Error found"}]:[];var mf=X(hf()),yf=(r,e)=>(0,mf.isMissing2xxResponse)({responseCodes:Object.keys(r)})?[{message:"Missing 2xx response detected"}]:[];var gf=(r,e,t)=>{let s=[],n=r.map(i=>i.name);for(let i=0;itypeof r!="object"?[]:Array.isArray(r)?[]:r===null?[]:"type"in r?r.type!=="object"?[]:"properties"in r?typeof r.properties!="object"?[]:Array.isArray(r.properties)?[]:r.properties===null?[]:Object.keys(r.properties).find(t=>t==="")===void 0?[]:[{message:"Empty name found"}]:[]:[];var ox=Si(),bf=r=>{if(r==null)throw Error("All references should be dereferenced and non-empty");if("$ref"in r)throw Error("All references should be dereferenced by Spectral already");return r};var _f=r=>r.in!=="query"?[]:r.schema===void 0?[]:bf(r.schema).type!=="boolean"?[]:[{message:"Found boolean query parameter"}];var Of=X(xf()),If=async r=>{let e=(0,Of.default)(r);return/^requestBody$/.test(e)?[{message:"requestBody is not allowed"}]:[]};var Pf=r=>r.type!=="string"?[]:r.format==="date-time"?[]:/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\+|-)(\d{2}):(\d{2})$/.test(r.example)?[{message:r.example}]:[];var Tf=r=>r.type!=="string"?[]:r.format==="date"?[]:/^(\d{4})-(\d{2})-(\d{2})$/.test(r.example)?[{message:r.example}]:[];var $f=(r,e,t)=>{let s=[];if(r===null)return[];if(r.type!=="object")return[];if(r.required===void 0)return[];let n=r.required;for(let i=0;i3}var jf=X(Ef()),Cf=(r,e,t)=>{let s=[];if(r.operationId===void 0)return s;let n=t.document.data,i=(0,jf.getOperations)({spec:n}),a=new Map;for(let{operation:d}of i){let p=d.operationId;if(p){let h=p.substring(p.lastIndexOf("_")+1).toLowerCase(),b=Nf(d.tags?.[0]??"default");a.has(b)||a.set(b,new Map);let y=a.get(b),v=y.get(h)||0;y.set(h,v+1)}}let o=Nf(r.tags?.[0]??"default"),c=r.operationId.substring(r.operationId.lastIndexOf("_")+1).toLowerCase(),l=a.get(o);return l===void 0||(l.get(c)||0)>1&&s.push({message:`Duplicate case-insensitive SDK method name "${c}" detected. Please rename one of the operations.`}),s};function Nf(r){return r.toLowerCase()}var g0={extends:qf.oas,aliases:_e.rulesetJsonPaths,rules:{"operation-description":"off","operation-success-response":"off","info-contact":"off","oas2-schema":"off","oas3-unused-component":"off","konfig-oas2-schema":{description:"Validate structure of OpenAPI v2 specification.",message:"{{error}}.",recommended:!0,formats:[G.oas2],severity:D.Error,given:"$",then:{function:Kd}},"no-http-basic":{description:"Consider a more secure alternative to HTTP Basic",message:"HTTP Basic is a pretty insecure way to pass credentials around, please consider an alternative.",given:"$.components.securitySchemes[*]",then:{field:"scheme",function:ne.pattern,functionOptions:{notMatch:"basic"}},severity:D.Error},"no-parameter-named-requestbody":{given:_e.rulesetJsonPaths.ParameterObjectNames,message:`Parameter's are not allowed to have a name that can be camelcased to "requestBody" as it is a reserved keyword for Konfig's TypeScript SDK`,then:{function:If},severity:D.Error},"duplicate-sdk-method-name":{given:"#OperationObject",then:[{function:Cf}],severity:D.Warning},"duplicate-tag-names":{given:_e.rulesetJsonPaths.Tags,then:{function:gf},severity:D.Warning},"no-file-extensions-in-paths":{description:"Paths must not include file extensions such as .json, .xml, .html and .txt",message:"Paths must not include file extensions such as .json, .xml, .html and .txt. Use the OpenAPI `content` keyword to tell consumers which Media Types are available.",given:"$.paths[*]~",then:{function:ne.pattern,functionOptions:{notMatch:".(json|xml|html|txt)$"}},severity:D.Error},"adv-security-schemes-defined":{description:"All APIs MUST have a security scheme defined.",message:"This API definition does not have any security scheme defined.",given:"$..components",then:{field:"securitySchemes",function:ne.schema,functionOptions:{schema:{type:"object",minProperties:1}}},formats:[G.oas3],severity:D.Error},"components-schemas-defined-oas2":{description:"APIs should define definitions for developer friendly SDK generation.",message:"{{description}}",given:"$",then:[{function:ne.schema,functionOptions:{schema:{type:"object",properties:{definitions:{type:"object",minProperties:1}},required:["definitions"]}}}],formats:[G.oas2],severity:D.Warning},[qs.OBJECT_WITH_NO_PROPERTIES_RULE_NAME]:{message:'Schema type of "object" has no properties',given:"#AllSchemaObjects",then:[{function:ff}],formats:[G.oas3],severity:D.Hint},"invalid-required-property-syntax":{message:"{{error}}",given:_e.rulesetJsonPaths.AllSchemaObjects.map(r=>`${r}..`),then:[{function:$f}],severity:D.Warning},"missing-date-format":{message:'Schema type of "string" has no format "date" but has example "{{error}}"',given:_e.rulesetJsonPaths.AllSchemaObjects,then:[{function:Tf}],formats:[G.oas3],severity:D.Warning},"missing-date-time-format":{message:'Schema type of "string" has no format "date-time" but has example "{{error}}"',given:_e.rulesetJsonPaths.AllSchemaObjects,then:[{function:Pf}],formats:[G.oas3],severity:D.Warning},"missing-2xx-response":{message:'Specify a "default" or "2xx" range HTTP Status Code response',given:_e.rulesetJsonPaths.ResponsesObjects,then:{function:yf},severity:D.Warning},"components-schemas-defined-oas3":{description:"APIs should define schemas for developer friendly SDK generation.",message:"{{description}}",given:"$",then:[{function:ne.schema,functionOptions:{schema:{type:"object",properties:{components:{type:"object",properties:{schemas:{type:"object",minProperties:1}},required:["schemas"]}},required:["components"]}}}],formats:[G.oas3],severity:D.Warning},"adv-security-schemes-defined-oas2":{description:"All APIs MUST have a security scheme defined.",message:"This API definition does not have any security scheme defined.",given:"$",then:{field:"securityDefinitions",function:ne.schema,functionOptions:{schema:{type:"object",minProperties:1}}},formats:[G.oas2],severity:D.Error},"list-usage-of-security":{description:"List usage of security implies multiple possible security strategies which is uncommon",message:"Potential misuse of the security field. Only use list when you have multiple security strategies. (i.e. list vs map is significant https://swagger.io/docs/specification/authentication/)",given:["$.security","$.paths..security"],then:{function:Ro},formats:[G.oas3]},"operation-operationId":{message:"Assign Operation#operationId to create better SDK method names.",given:"#OperationObject",then:{field:"operationId",function:ne.truthy}},"redundant-security-schemes":{message:"Remove redundant security schemes from operation object.",given:"#OperationObject",then:{function:Ho}},"redundant-security-and-parameter":{description:"Duplicate security and request parameters will cause generated SDKs to have undesired behavior.",message:'Detected security requirement and parameter with the same name "{{error}}".',given:"#OperationObject",then:{function:Ad},formats:[G.oas2,G.oas3],severity:D.Error},"use-security-instead":{given:"#OperationObject",then:{function:zd},formats:[G.oas2,G.oas3],severity:D.Warning},[qs.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME]:{message:"{{error}}. Ensure your types are correct.",given:_e.givenPaths[qs.POTENTIAL_INCORRECT_DATA_TYPE_RULE_NAME],then:{function:Pd},severity:D.Error},"valid-server-urls-oas3":{message:'"{{value}}" is not a valid URL',given:"$.servers.*.url",then:{function:ne.pattern,functionOptions:{match:Rf.urlRegex}},formats:[G.oas3],severity:D.Error},"disallowed-header-names-request":{message:"Konfig's Python SDK does not allow 'Accept', 'Content-Type', or 'Authorization' to be specified as a header in the request",given:_e.rulesetJsonPaths.ParameterObjects,then:[{function:yi.disallowedHeaderNamesRequest}],formats:[G.oas2,G.oas3],severity:D.Error},"disallowed-header-names-response":{message:"Konfig's Python SDK does not allow 'Accept', 'Content-Type', or 'Authorization' to be specified as a header in the response",given:_e.rulesetJsonPaths.ResponsesObjectHeaderNames,then:{function:ne.pattern,functionOptions:{notMatch:yi.disallowedHeadersRegex}},formats:[G.oas2,G.oas3],severity:D.Error},"limited-oas3_1-support":{message:"Konfig has limited support for OAS 3.1",given:"$.openapi",then:{function:ne.pattern,functionOptions:{notMatch:"^3.1.\\d$"}},formats:[G.oas3],severity:D.Error},"boolean-query-parameter":{message:'There is no standard method of serializing boolean values in query parameters according to RFC 6570 (https://www.rfc-editor.org/rfc/rfc6570). Konfig serializes boolean values as the lowercase string values "true" and "false". Note that this might not necessarily be compatible with your server implementation.',given:_e.rulesetJsonPaths.ParameterObjects,then:{function:_f},severity:D.Information},"multiple-tags":{message:"Having more than 1 tag can be confusing as generated SDKs will only show up under one tag.",given:"#OperationObject.tags",then:{function:ne.length,functionOptions:{min:1,max:1}},severity:D.Warning},"empty-property-name":{given:"#AllSchemaObjects..",message:"Empty property names cause generated SDKs to fail",then:{function:vf},severity:D.Error},"empty-request-body-content":{message:"Empty request body content is not allowed for SDK generation ",given:"#RequestContentObject",then:[{function:ne.length,functionOptions:{min:1}}],severity:D.Error},"empty-response-body-schema":{message:"Provide a response body schema to provide helpful information regarding the operation.",given:"#ResponseContentObject",then:[{field:"schema",function:ne.truthy},{field:"schema",function:ne.length,functionOptions:{min:1}}],severity:D.Warning},"duplicate-schema-name-oas3":{given:"$.components.schemas",then:[{function:To}],severity:D.Error,formats:[G.oas3]},"duplicate-schema-name-oas2":{given:"$.definitions",then:[{function:To}],severity:D.Error,formats:[G.oas2]},"structured-request-body":{given:"#RequestSchemaObject",then:[{function:of}],severity:D.Warning},"tag-naming-convention":{given:"#Tag.name",then:[{function:tf}],severity:D.Warning},"operationId-pattern":{message:`The operation ID "{{value}}" does not match the regex: "${Ao.operationIdRegex}". Prefix operation IDs with "Tag_" (https://konfigthis.com/docs/tutorials/naming-operation-ids)`,given:"#OperationObject",then:[{field:"operationId",function:ne.pattern,functionOptions:{match:Ao.operationIdRegex}}],severity:D.Warning}}};0&&(module.exports={}); +module.exports = module.exports.default; +//# sourceMappingURL=ruleset.js.map \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/.spectral.yaml b/generator/konfig-integration-tests/sdks/typescript-carbon/.spectral.yaml new file mode 100644 index 000000000..e5b3d1741 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/.spectral.yaml @@ -0,0 +1,2 @@ +extends: + - .konfig/ruleset.js diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/.vscode/extensions.json b/generator/konfig-integration-tests/sdks/typescript-carbon/.vscode/extensions.json new file mode 100644 index 000000000..e568e040e --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "stoplight.spectral", + "redhat.vscode-yaml", + "csharpier.csharpier-vscode" + ] +} \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/.vscode/settings.json b/generator/konfig-integration-tests/sdks/typescript-carbon/.vscode/settings.json new file mode 100644 index 000000000..b284f657e --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/.vscode/settings.json @@ -0,0 +1,44 @@ +{ + "spectral.enable": true, + "files.associations": { + ".konfigignore": "ignore" + }, + "python.testing.pytestArgs": [ + "python", + "-o", + "cache_dir=python/.pytest_cache" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true, + "dotnet-test-explorer.testProjectPath": "**/*.sln", + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter", + "editor.formatOnSave": true + }, + "files.insertFinalNewline": false, + "terminal.integrated.scrollback": 50000, + "black-formatter.importStrategy": "fromEnvironment", + "python.formatting.provider": "none", + "python.analysis.typeCheckingMode": "basic", + "python.testing.unittestArgs": [ + "-v", + "-s", + "./python", + "-p", + "test_*.py" + ], + "java.compile.nullAnalysis.mode": "automatic", + "ruby.useBundler": true, + "ruby.useLanguageServer": true, + "ruby.intellisense": "rubyLocate", + "ruby.lint": { + "rubocop": { + "useBundler": true + } + }, + "ruby.format": "rubocop", + "[csharp]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "csharpier.csharpier-vscode" + } +} \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/LICENSE b/generator/konfig-integration-tests/sdks/typescript-carbon/LICENSE new file mode 100644 index 000000000..6f78cb8b3 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2024- Konfig, Inc. (https://konfigthis.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/README.md b/generator/konfig-integration-tests/sdks/typescript-carbon/README.md new file mode 100644 index 000000000..89989712f --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/README.md @@ -0,0 +1,5 @@ +# konfig + +|Language|Version|Package Manager|README|Source| +|-|-|-|-|-| +|TypeScript|0.1.1|[npm](https://www.npmjs.com/package/carbon-typescript-sdk/v/0.1.1)|[README](https://github.com/konfig-dev/carbon-sdks/tree/main/typescript#readme)|[Source](https://github.com/konfig-dev/carbon-sdks/tree/main/typescript)| \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/header.png b/generator/konfig-integration-tests/sdks/typescript-carbon/header.png new file mode 100644 index 000000000..2eed2dca6 Binary files /dev/null and b/generator/konfig-integration-tests/sdks/typescript-carbon/header.png differ diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/konfig.yaml b/generator/konfig-integration-tests/sdks/typescript-carbon/konfig.yaml new file mode 100644 index 000000000..a1600555a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/konfig.yaml @@ -0,0 +1,42 @@ +# yaml-language-server: $schema=https://unpkg.com/konfig-lib@latest/konfig-yaml.schema.json + +outputDirectory: /tmp/carbon-sdks-out +specRemotePath: https://api.carbon.ai/openapi.json +specInputPath: openapi.json +specPath: openapi-fixed.json +readmeHeader: + title: Carbon + image: header.png + url: https://carbon.ai +securitySchemeOverride: + security: + - apiKey: [] + customerId: [] + - accessToken: [] + securitySchemes: + apiKey: + type: apiKey + name: authorization + in: header + x-konfig-prefix: "Bearer " + accessToken: + type: apiKey + name: authorization + in: header + x-konfig-prefix: "Token " + customerId: + type: apiKey + name: customer-id + in: header +generators: + typescript: + version: 0.1.1 + npmName: carbon-typescript-sdk + outputDirectory: typescript + clientName: Carbon + removeDefaultConfigurationParameters: true + useSecurityKeyNameAsPropertyName: true + readmeSnippet: snippets/typescriptReadmeGettingStartedSnippet.ts + git: + userId: konfig-dev + repoId: carbon-sdks/tree/main/typescript diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/openapi-fixed.json b/generator/konfig-integration-tests/sdks/typescript-carbon/openapi-fixed.json new file mode 100644 index 000000000..36b1bdc03 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/openapi-fixed.json @@ -0,0 +1,5868 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "Carbon", + "description": "Connect external data to LLMs, no matter the source.", + "version": "1.0.0", + "x-logo": { + "url": "https://i.ibb.co/qBqT3Ft/Group-14-1.png" + }, + "x-konfig-ignore": { + "object-with-no-properties": true + } + }, + "servers": [ + { + "url": "https://api.carbon.ai" + } + ], + "tags": [ + { + "description": "\n---\nUtilize these API endpoints to manage user documents. Whether the data is sourced from third-party integrations, web pages, or file uploads, Carbon maintains consistency by standardizing all documents as \"files\" within our data model.\n\nCarbon supports the following file formats:\n\n### Text\n- `pdf`\n- `xlsx`\n- `csv`\n- `docx`\n- `txt`\n- `md`\n- `rtf`\n- `tsv`\n- `pptx`\n- `json` (Coming Soon)\n\n### Audio\n- `mp3`\n- `mp4`\n- `mp2`\n- `aac`\n- `wav`\n- `flac`\n- `pcm`\n- `m4a`\n- `ogg`\n- `opus`\n- `webm`\n\n### Images\n- `jpg`\n- `png`\n", + "name": "Files" + }, + { + "description": "\nEmploy these endpoints when syncing files from external data sources outside of Carbon Connect.\n", + "name": "Integrations" + }, + { + "description": "\n---\nLeverage these `Utilities` endpoints to execute a wide range of helpful actions, including initiating web scraping, processing sitemaps, retrieving URLs from a specific webpage, obtaining relevant URLs based on a search query, fetching YouTube video transcripts, and many other functionalities.\n", + "name": "Utilities" + }, + { + "description": "\n---\nEmploy these endpoints for direct vector searches within our managed vector database or to fetch embeddings for storage in your custom vector store. Additionally, we offer hybrid support for keyword-based searches.\n", + "name": "Embeddings" + }, + { + "description": "\n---\nCarbon offers a set of webhooks for a variety of events, listed below. Currently, there is no way to choose\nwhich events to receive webhooks for - it's on our roadmap to allow for more fine-grained filtering. The steps\nin setting up webhooks for your service are:\n1. Add a URL to which webhoooks should be sent. This can be done using the `/add_webhook` endpoint.\n2. Save the `signing_key` in the response somewhere safe - this can't be retrieved again.\n\nAt this point, all events will be sent to the URL specified in step 1. An event - sent via an HTTP POST\nrequest - contains two important elements, a `Carbon-Signature` header and a body with a single key-value pair.\nYou can validate the authenticity and integrity of the webhook by calculating its signature. To do this, you should:\n1. Extract the timestamp and signature.\n 1. Extract the timestamp and signature from the `Carbon-Signature` header. It will be of the form\n`Carbon-Signature:t=1492774577,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd`.\n 2. For those using JavaScript and decoding the request json via `JSON.stringify`, we suggest using the `Carbon-Signature-Compact`\nheader instead. It will have the form `Carbon-Signature:t=1492774577,v2=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd`.\n2. Create a string of the form `{timestamp}.{request_body}`, where `request_body` is the entire request body.\nNote that all values in the webhook request body are coerced to strings - this is *intentional*.\n 1. If using `Carbon-Signature`, you can use `request_body` as is, or you can decode it as json. When decoding, ensure that the \nresulting json is formatted *exactly* as it is in `request_body`. In other words, the json should look like:\n```\n{\"x\": 5, \"y\": 6}\n```\n 2. If using `Carbon-Signature-V2`, when decoding the request body, ensure that the resulting json is in compact form, where there \nare no spaces between key-value pairs or between keys and values. For example,\n```\n{\"x\":5,\"y\":6}\n```\nGiven a request body, `x`, you can do this in Python via `json.dumps(x, separators=[\",\", \":\"])` or in JavaScript via `JSON.stringify(x)`.\n3. Compute an HMAC of the above string with the SHA256 hash function. Use `signing_key` obtained from the `/add_webhook` endpoint as the key.\n4. Compare the computed signature with the signature in the header (the value that `v1` - or `v2` - is equal to). If they're identical,\nyou can be assured that the webhook is both genuine and hasn't been tampered with.\n\nOnce you receive and handle the webhook, you should respond to the POST request with a 200 status - otherwise the webhook\nwill be retried (up to three times).\n\n### Webhooks for File Processing\n\nWe currently support the following webhook events for file processing:\n1. `FILE_READY`\n - Sent after a file has been fully processed and added to Carbon.\n2. `FILE_ERROR`\n - Sent if there was an error during the file processing stage. If an error occurred, the file is requeued for reprocessing\n up to three times.\n3. `FILE_DELETED`\n - Sent if a file has been successfully deleted.\n4. `RATE_LIMIT_ERROR`\n - Sent if the organization has reached the rate limit for file processing. In this case, the file is requeued for reprocessing\n up to three times.\n\nThese are sent *after* a file has been processed.\n\n### Webhooks for Data Sources\n\nWe currently support the following webhook events for managing user connections to data sources:\n\n1. `ADD` \n - This event is fired when a user authenticates their account for a specific data source for the first time.\n\n2. `UPDATE` \n - This event is fired when a user selects one or more files for a particular data source. This event is fired once per file selection confirmation, regardless of how many files are selected.\n\n3. `CANCEL` \n - This event is fired when a user cancels the authentication flow. It's important to note that this event cannot capture tab-close events, so directly closing a tab is not within our tracking capabilities.\n\n4. `REVOKE`\n - This event is triggered when a user's data source connection is revoked via the `/revoke_access_token` endpoint.\n\nAn organization is allowed up to *3* webhook URLs. To delete an existing URL, you can use the `/delete_webhook` endpoint.\nTo view all existing webhooks, use the `/webhooks` endpoint.\n\nAll webhook payloads have the form\n```\n{\n \"payload\": str\n}\n```\nThe value of `payload` (which is a stringified json object) will always have the form\n```\n{\n \"webhook_type\": WebhookType,\n \"obj\": {\n \"object_type\": WebhookObjectType,\n \"object_id\": str,\n \"additional_information\": dict[str, str] | str\n },\n \"timestamp\": str\n}\n```\nNote that `WebhookType` is one of the webhook events described above. `WebhookObjectType` is limited to `FILE` currently.\n`additional_information` is always a dictionary of string-string key-value pairs, unless it's empty, in which case it is\nthe string value \"null\". Finally, `timestamp` is an int POSIX timestamp as a string. Note that to use `object_id` in\nsubsequent API requests, you'll likely need to convert it to an int.\n", + "name": "Webhooks" + }, + { + "description": "\n---\n", + "name": "Auth" + }, + { + "description": "\n---\n", + "name": "Users" + }, + { + "description": "\n---\nCarbon facilitates user connections and content synchronization with third-party applications. We manage authentication, ingestion, parsing, and sync scheduling. Within Carbon, content from third-party applications is uniformly categorized as \"files\" within our data model. \n\nCarbon also supports websites as a data source (see [here](https://api.carbon.ai/redoc#tag/Data-Sources/operation/web_scrape_web_scrape_post)).\n\n# Google Drive\nThe Carbon Connect `enabledIntegrations` value for Google Drive is `GOOGLE_DRIVE`. Google Slides, Google Docs and Google Sheets are supported with our Google Drive integration, along with regular text, audio and image files.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)** to connect to Google workspace.\n\n## Authorization Flow\n\n**Carbon's Google Drive integration is still pending approval from Google. In the meantime, end users are required to take a couple additional steps to connect their accounts (see gif below).**\n\n![](https://files.readme.io/19f57f6-Carbon_-_Google_OAuth_Flow.gif)\n\nLog into your Google Drive account.\n![](https://i.ibb.co/wQsyjrV/Screen-Shot-2023-08-11-at-2-04-49-PM.png)\n\nOnce you've successfully authenticated your account, you can select files directly.\n![](https://i.ibb.co/wYs9Xbp/image.png)\n\nClick \"Select\" after selecting files to grant Carbon access to files.\n![](https://i.ibb.co/1fSzKHS/image.png)\n\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. Go to `APIs and Services` > `Enabled APIs and Services` in your Google Cloud console, then click on the button titled `ENABLE APIS AND SERVICES` and enable `Google Drive API` and `Google Picker API`.\n2. Then create an `OAuth Client ID` in the `Credentials section` under `Google Drive API`. Select `Web Application` as the Application type and give it an identifiable name for your reference.\n\n![](https://files.readme.io/e7f42e5-image.png)\n\n3. Add [https://api.carbon.ai](https://api.carbon.ai/) as the `Authorized JS origin` and as an `Authorized redirect URI`.\n\n![](https://files.readme.io/60d16d3-image.png)\n\n4. Save the credentials. Download the credentials.json file once you save the OAuth Client ID data and share the file with Carbon.\n\n![](https://files.readme.io/f265775-image.png)\n\n5. Then create an `API key` in the `Credentials section` under `Google Picker API`. Restrict the application to websites and then add [https://api.carbon.ai](https://api.carbon.ai/) to the list under website restrictions. For `API Restrictions`, pick `Restrict key` and select `Google Picker API` from the list.\n\n6. Save the API key. Copy the API key and share it with Carbon.\n\n7. Configure your consent screen in the OAuth Consent Screen. Provide your **App name**, **support email address**, and **brand logo**. Add [carbon.ai](http://carbon.ai/) to `Authorized domain`.\n\n![](https://files.readme.io/33ebd01-image.png)\n\n![](https://files.readme.io/6d7f247-image.png)\n\n\n8. Click on `Add or Remove Scopes` button to add the following scopes: `userinfo.profile`, `userinfo.email`, `drive.readonly`, `drive.metadata.readonly`\n\n![](https://files.readme.io/6649d66-image.png)\n![](https://i.ibb.co/PNRnYwV/Screen-Shot-2023-08-11-at-2-11-51-PM.png)\n\n9. If you wish to add test users, you can do so. These users will not see the \"App is unverified\" notification. Other users will see this alert.\n10. Click `Publish App` to make this app available to your end-users.\n\n![](https://files.readme.io/d24c355-image.png)\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove Google Drive files and folders via the Google Drive picker. When a user selects a folder to be synced, we auto-sync all files added to the folder as well.\n\nYou can use the `resync_file` API endpoint to programmatically resync specific Google Drive files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs.\n\n# Dropbox\nThe Carbon Connect `enabledIntegrations` value for Dropbox is `DROPBOX`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.dropbox.com/oauth-guide)** to connect to Dropbox.\n\n## Authorization Flow\n\nLog into your Dropbox account.\n![](https://files.readme.io/9427ebb-image.png)\n\nOnce you've successfully authenticated your account, you can select files directly.\n![](https://files.readme.io/0efd7b0-image.png)\n\nClick \"Choose\" after selecting files to grant Carbon access to files.\n![](https://files.readme.io/9c32acb-image.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. Sign up on [Dropbox Developers](https://www.dropbox.com/developers) and create a new app with `Full Dropbox` access.\n\n![](https://i.ibb.co/fdrPky4/Screen-Shot-2023-09-08-at-12-39-39-PM.png)\n\n2. Copy and share the `App key` and `App secret` under the `Settings` tab with us.\n\n![](https://i.ibb.co/QmR2WXb/Screen-Shot-2023-09-08-at-1-06-46-PM.png)\n\n3. Add as a `Redirect URIs` and [carbon.ai](carbon.ai) as the `Chooser / Saver / Embedder domains`.\n\n![](https://i.ibb.co/5vR8zgf/Screen-Shot-2023-09-08-at-1-15-17-PM.png)\n\n4. Configure your app details under the `Branding` tab. These details will appear on the OAuth Consent Screen as well. Provide your **App name**, **Publisher**, and **App icons**. \n\n![](https://i.ibb.co/wYj1LL7/Screen-Shot-2023-09-08-at-1-10-10-PM.png)\n\n5. Under the `Permissions` tab, add the following scopes: `account_info.read`, `files.metadata.read`, and `files.content.read`.\n\n![](https://i.ibb.co/xSzhgYC/Screen-Shot-2023-09-08-at-1-03-32-PM.png)\n\n6. Click `Apply for Production` under the `Settings` tab to make this app available to your end-users.\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from Dropbox.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the Dropbox file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific Dropbox files. To delete Dropbox files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for Dropbox by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# Intercom\n\nThe Carbon Connect `enabledIntegrations` value for Intercom is `INTERCOM`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.intercom.com/building-apps/docs/setting-up-oauth)** to connect to Intercom workspaces.\n\n## Authorization Flow\n\n![](https://files.readme.io/d72b15d-image.png)\n\n![](https://files.readme.io/c2825e3-image.png)\n\n## Functionality\n\nCarbon syncs all `Published` articles under a single Intercom workspace. Any `Draft` article won't be synced. We currently support only having a single Intercom workspace connected per `customer_id`.\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. After you create or log into your [Intercom Developer](https://developers.intercom.com/) account, click `New App` to create your own app.\n\n![](https://i.ibb.co/Y3Nmh4r/Screen-Shot-2023-09-11-at-5-06-46-PM.png)\n\n2. Under the `Authentication` tab, click `Edit` -> `Use OAuth` -> `Add redirect URL` and then enter https://api.carbon.ai/integrations/intercom.\n\n![](https://i.ibb.co/pfzG9VJ/Screen-Shot-2023-09-11-at-5-17-47-PM.png)\n\n3. Under the `Authentication` tab, click `Edit` and then add permissions for `Read one admin`, `Read and List Articles`, and `Read and Write Articles`. You can remove access to the other permissions.\n\n![](https://i.ibb.co/L9BxJFK/Screen-Shot-2023-09-11-at-5-21-01-PM.png)\n\n4. Under the `Basic Info` tab, share the `Client ID` and `Client secret` with us via Slack.\n\n![](https://i.ibb.co/wCnVcQq/Screen-Shot-2023-09-11-at-5-25-39-PM.png)\n\n5. Under the `Basic Info` tab, add an `App icon` and `App name`.\n\n![](https://i.ibb.co/HqS9bhk/Screen-Shot-2023-09-11-at-5-47-31-PM.png)\n\n6. Click `Test and publish` -> `Submit for review` and fill in the details require to publish your app. After your app is approved, then we can enable the white labeling.\n\n![](https://i.ibb.co/Cm0xWBF/Screen-Shot-2023-09-11-at-5-51-09-PM.png)\n\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove pages via the Intercom OAuth flow. You can use the `resync_file` API endpoint to programmatically resync specific Intercom files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs.\n\n# Notion\n\nThe Carbon Connect `enabledIntegrations` value for Notion is `NOTION`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.notion.com/docs/authorization)** to connect to Notion workspaces.\n\n## Authorization Flow\n\n![](https://files.readme.io/0fa801d-image.png)\n\n![](https://files.readme.io/f72df4f-image.png)\n\n## Functionality\n\nCarbon enables end-users to select top-level pages for synchronization and automatically syncs all sub-pages. For instance, a top-level Company page may contain sub-pages for **`Company Benefits`** and **`PTO Policy`**. Once the end-user selects the Company page in the Authorization flow, Carbon automatically includes the sub-pages **`Company Benefits`** or **`PTO Policy`** to be synced.\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove pages via the Notion OAuth flow. You can use the `resync_file` API endpoint to programmatically resync specific Notion files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs. \n\nWhen a user adds a nested page or database record under a selected Notion page, we auto-sync those documents as well.\n\n# OneDrive\n\nThe Carbon Connect `enabledIntegrations` value for OneDrive is `ONEDRIVE`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/msa-oauth?view=odsp-graph-online)** to connect to OneDrive.\n\n## Authorization Flow\n\nLog into your Microsoft account.\n![](https://i.ibb.co/86FPknL/Screen-Shot-2023-08-31-at-4-41-48-PM.png)\n\nClick the \"Confirm\" button to grant us permission to access OneDrive.\n![](https://i.ibb.co/BqxmsJG/2880x1628.png)\n\nClick the \"Select Files from OneDrive\" button to open up the OneDrive file selector.\n![](https://i.ibb.co/Sm90PHL/Screen-Shot-2023-08-31-at-4-32-37-PM.png)\n\nClick \"Select\" after selecting files to grant Carbon access to files.\n![](https://i.ibb.co/t4Kchcv/Screen-Shot-2023-08-31-at-4-35-33-PM.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n#### Setting up the OAuth App\n\n1. Create or log into your [Microsoft Azure](https://portal.azure.com/) Account.\n\n2. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n4. Add https://api.carbon.ai/integrations/onedrive as the `Redirect URI` and select `Web` under the `Select a platform` dropdown. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/integrations/onedrive`.\n\n![](https://i.ibb.co/9NTZycz/Screen-Shot-2023-09-08-at-2-59-16-PM.png)\n\n5. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `offline_access`, `openid`, and `User.Read`.\n\n![](https://i.ibb.co/VTGK90Z/Onedrive-1.png)\n\n6. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n7. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n![](https://i.ibb.co/KGWzr1H/Screen-Shot-2023-09-12-at-11-14-08-PM.png)\n\n8. Customize your app branding under `Manage` -> `Branding & properties`.\n\n![](https://i.ibb.co/HrS9Cxj/Screen-Shot-2023-09-08-at-3-24-16-PM.png)\n\n#### Setting up the File Picker UI\n\n1. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n2. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Under the `Authentication` tab, select `Add a Platform` -> `Single Page Application`. \n\n![](https://i.ibb.co/nLDdQfP/Screen-Shot-2023-09-13-at-3-03-00-PM.png)\n\n4. For the `Redirect URI` of the `Single Page Application`, you can use https://api.carbon.ai/static/loading.html or add a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/static/loading.html`.\n\n![](https://i.ibb.co/0X5Nkz7/Screen-Shot-2023-09-13-at-3-13-53-PM.png)\n\n5. Under the `Authentciation`'s `Implicit grant and hybrid flows` section, check `Access tokens (used for implicit flows)` and `ID tokens (used for implicit and hybrid flows)`.\n\n![](https://i.ibb.co/ckVKZgV/Screen-Shot-2023-09-13-at-3-17-44-PM.png)\n\n6. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `Sites.Read.All`, `User.Read`, `AllSites.Read`, and `MyFiles.Read`.\n\n![](https://i.ibb.co/xjtvKTg/Screen-Shot-2023-09-13-at-3-22-12-PM.png)\n\n7. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n8. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from OneDrive.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the OneDrive file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific OneDrive files. To delete OneDrive files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for OneDrive by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# SharePoint\n\nThe Carbon Connect `enabledIntegrations` value for SharePoint is `SHAREPOINT`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/msa-oauth?view=odsp-graph-online)** to connect to SharePoint.\n\n## Authorization Flow\n\nEnter your Sharepoint `tenant` and `site name`. For example, if the SharePoint site URL is `https://jasoncarbon.sharepoint.com/sites/carbon-dev`, `jasoncarbon` is the tenant and `carbon-dev` is the site name.\n\n![](https://i.ibb.co/sgW9vfQ/Screen-Shot-2023-10-24-at-11-45-21-AM.png)\n\nLog into your Microsoft SharePoint account.\n![](https://i.ibb.co/86FPknL/Screen-Shot-2023-08-31-at-4-41-48-PM.png)\n\nClick the \"Confirm\" button to grant us permission to access SharePoint.\n![](https://i.ibb.co/x6L7knS/Screen-Shot-2023-10-24-at-11-45-27-AM.png)\n\nOnce clicking \"Confirm\", you will be taken through a flow to grant permissions.\n![](https://i.ibb.co/HTqCBVR/Screen-Shot-2023-10-24-at-1-00-08-PM.png)\n\nClick the \"Select Files from SharePoint\" button to open up the SharePoint file selector.\n![](https://i.ibb.co/6tn24b3/Screen-Shot-2023-10-24-at-1-00-20-PM.png)\n\nClick \"Select\" after selecting files to grant Carbon access to files.\n![](https://i.ibb.co/WVTwT9P/Screen-Shot-2023-10-24-at-11-45-39-AM.png)\n\nYou'll see a screen confirming that your files have been added.\n![](https://i.ibb.co/nwSRcSS/Screen-Shot-2023-10-24-at-11-45-11-AM.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n#### Setting up the OAuth App\n\n1. Create or log into your [Microsoft Azure](https://portal.azure.com/) Account.\n\n2. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n4. Add https://api.carbon.ai/integrations/onedrive and https://api.carbon.ai/integrations/sharepoint to `Redirect URI` and select `Web` under the `Select a platform` dropdown. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain paths must still be `/integrations/onedrive` and `/integrations/sharepoint`.\n\n![](https://i.ibb.co/9NTZycz/Screen-Shot-2023-09-08-at-2-59-16-PM.png)\n\n5. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `offline_access`, `openid`, and `User.Read`.\n\n![](https://i.ibb.co/VTGK90Z/Onedrive-1.png)\n\n6. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n7. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n![](https://i.ibb.co/KGWzr1H/Screen-Shot-2023-09-12-at-11-14-08-PM.png)\n\n8. Customize your app branding under `Manage` -> `Branding & properties`.\n\n![](https://i.ibb.co/HrS9Cxj/Screen-Shot-2023-09-08-at-3-24-16-PM.png)\n\n#### Setting up the File Picker UI\n\n1. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n2. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Under the `Authentication` tab, select `Add a Platform` -> `Single Page Application`. \n\n![](https://i.ibb.co/nLDdQfP/Screen-Shot-2023-09-13-at-3-03-00-PM.png)\n\n4. For the `Redirect URI` of the `Single Page Application`, you can use https://api.carbon.ai/static/loading.html or add a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/static/loading.html`.\n\n![](https://i.ibb.co/0X5Nkz7/Screen-Shot-2023-09-13-at-3-13-53-PM.png)\n\n5. Under the `Authentciation`'s `Implicit grant and hybrid flows` section, check `Access tokens (used for implicit flows)` and `ID tokens (used for implicit and hybrid flows)`.\n\n![](https://i.ibb.co/ckVKZgV/Screen-Shot-2023-09-13-at-3-17-44-PM.png)\n\n6. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `Sites.Read.All`, `User.Read`, `AllSites.Read`, and `MyFiles.Read`.\n\n![](https://i.ibb.co/xjtvKTg/Screen-Shot-2023-09-13-at-3-22-12-PM.png)\n\n7. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n8. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from SharePoint.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the SharePoint file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific SharePoint files. To delete SharePoint files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for SharePoint by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# Zotero\n\nThe Carbon Connect `enabledIntegrations` value for ZOTERO is `ZOTERO`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 1.0](https://www.zotero.org/support/dev/web_api/v2/oauth)** to connect to Zotero.\n\n## Authorization Flow\n\nLog into your Zotero account. \n![](https://i.ibb.co/sgnb9xC/Screen-Shot-2023-11-06-at-12-45-31-PM.png)\n\nClick the \"Accept Defaults\" button to grant us permission to access Zotero.\n![](https://i.ibb.co/sJbyWX7/Screen-Shot-2023-11-06-at-12-43-09-PM.png)\n\nOnce clicking \"Accept Defaults\", all Zotero files are synced and you should see the following confirmation:\n![](https://i.ibb.co/HLvPWK8/Screen-Shot-2023-11-06-at-12-42-42-PM.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n#### Setting up the OAuth App\n\n1. Create or log into your [Zotero](https://www.zotero.org/) Account.\n\n2. Click [here](https://www.zotero.org/oauth/apps) to set up your OAuth app.\n\n![](https://i.ibb.co/rs41H7N/Screen-Shot-2023-11-06-at-2-41-13-PM.png)\n\n3. Click \"Register a New Application\" and fill out the info below. Add https://api.carbon.ai/integrations/zotero as the `Callback URL`. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/integrations/zotero`.\n\n![](https://i.ibb.co/5nBwgWT/Screen-Shot-2023-11-06-at-12-51-59-PM.png)\n\n4. Copy and share the Client Key and Client Secret with Carbon.\n\n![](https://i.ibb.co/cTkv51s/Screen-Shot-2023-11-06-at-2-46-20-PM.png)\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from Zotero.\n\n## Synchronization\n\nBy default, Carbon syncs all attachments from your Zotero library along with the accompanying info as metadata.\n\nYou can use the `resync_file` API endpoint to programmatically resync specific Zotero files. To delete Zotero files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for Zotero by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# Box\n\nThe Carbon Connect `enabledIntegrations` value for Box is `BOX`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developer.box.com/guides/authentication/oauth2/)** to connect to Box.\n\n## Authorization Flow\n\nLog into your Box account.\n\n![](https://i.ibb.co/8gGpBdg/Screen-Shot-2023-09-08-at-1-34-42-PM.png)\n\nClick the \"Select Files from Box\" button to open up the Box file selector.\n![](https://i.ibb.co/K55H1rp/Screen-Shot-2023-09-08-at-1-38-15-PM.png)\n\nClick the checkmark after selecting files to grant Carbon access to files.\n\n*Limitations*: You can currently only upload individual file(s) via Box's file selector. If you'd like the ability the upload entire folders, please reach out to us on Slack. \n\n![](https://i.ibb.co/Zz2pDPm/Screen-Shot-2023-09-08-at-1-33-30-PM.png)\n\nYou'll receive a confirmation that your file(s) has been uploaded.\n\n![](https://i.ibb.co/ZTZQw03/Screen-Shot-2023-09-08-at-2-03-48-PM.png)\n\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. Sign up for an account under [Box Developer](https://developer.box.com/).\n\n2. Go to `My Apps`, then `Create New App` -> `Choose Custom App`.\n\n![](https://i.ibb.co/cQw41M9/Screen-Shot-2023-09-08-at-2-12-34-PM.png)\n\n2. Fill out the app details in the modal that opens.\n\n![](https://i.ibb.co/TPJpqny/Screen-Shot-2023-09-08-at-2-14-32-PM.png)\n\n3. Select User Auth with OAuth 2.0 in the following step.\n\n![](https://i.ibb.co/Hr3SJJ8/Screen-Shot-2023-09-08-at-2-20-26-PM.png)\n\n4. In the `Configuration` tab copy and paste the `Client ID` and `Client Secret` and share it with us.\n\n![](https://i.ibb.co/1mm1PWM/Screen-Shot-2023-09-08-at-2-22-53-PM.png)\n\n5. Add https://api.carbon.ai/integrations/box as a `Redirect URIs` and https://api.carbon.ai as a `CORS Domains`\n\n![](https://i.ibb.co/374946D/Screen-Shot-2023-09-08-at-2-30-28-PM.png)\n![](https://i.ibb.co/HdtDqfd/Screen-Shot-2023-09-08-at-2-31-14-PM.png)\n\n7. For scopes, select `Read all files and folders stored in Box` and `Write all files and folders stored in Box`.\n\n![](https://i.ibb.co/9wRrqKX/Screen-Shot-2023-09-08-at-2-27-44-PM.png)\n\n8. In the `App Center` tab, you can edit your branding.\n\n![](https://i.ibb.co/GsHQq2g/Screen-Shot-2023-09-08-at-2-34-26-PM.png)\n\n9. Once you're ready, you can also submit your app for approval.\n\n![](https://i.ibb.co/XVg2skh/Screen-Shot-2023-09-08-at-2-37-05-PM.png)\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from Box.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the Box file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific Box files. To delete Box files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for Box by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n\n# Zendesk\nThe Carbon Connect `enabledIntegrations` value for Zendesk is `ZENDESK`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.Zendesk.com/building-apps/docs/setting-up-oauth)** to connect to Zendesk workspaces.\n\n## Authorization Flow\n\n![](https://i.ibb.co/Zc1sh5Q/Screen-Shot-2023-09-14-at-5-25-02-PM.png)\n\n![](https://i.ibb.co/DKqsbFC/Screen-Shot-2023-09-14-at-10-40-28-AM.png)\n\n![](https://i.ibb.co/Vw6bF82/Screen-Shot-2023-09-14-at-10-37-47-AM.png)\n\n## Functionality\n\nCarbon syncs all `Published` articles under a single Zendesk workspace. Any `Draft` article won't be synced. We currently support only having a single Zendesk workspace connected per `customer_id`.\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. In Admin Center, click the `Apps and integrations` icon and then in the sidebar, select `APIs` > `Zendesk` APIs.\n\n![](https://i.ibb.co/3cXNwRj/Screen-Shot-2023-09-14-at-9-05-14-AM.png)\n\n![](https://i.ibb.co/wzvZ9jS/Screen-Shot-2023-09-13-at-5-08-26-PM.png)\n\n2. Click the `OAuth Clients` tab on the Zendesk API page, and then click `Add OAuth client` on the right side of the OAuth client list.\n\n![](https://i.ibb.co/djnzwcx/Screen-Shot-2023-09-13-at-5-06-46-PM.png)\n\n3. Complete the following fields to create a client:\n- Client Name - Enter a name for your app. This is the name that users will see when asked to grant access to your application, and when they check the list of third-party apps that have access to their Zendesk.\nDescription - Optional. This is a short description of your app that users will see when asked to grant access to it.\n- Company - Optional. This is the company name that users will see when asked to grant access to your application. The information can help them understand who they're granting access to.\n- Logo - Optional. This is the logo that users will see when asked to grant access to your application. The image can be a JPG, GIF, or PNG. For best results, upload a square image. It will be resized for the authorization page.\n- Unique Identifier - The field is auto-populated with a reformatted version of the name you entered for your app. You can change it if you want.\n- Redirect URLs - Enter https://api.carbon.ai/integrations/zendesk here. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/integrations/zendesk`.\n\n![](https://i.ibb.co/yPqPzbD/Screen-Shot-2023-09-13-at-5-15-35-PM.png)\n\n4. Click Save. After the page refreshes, a new pre-populated Secret field appears on the lower side. This is the `client_secret` value specified in the OAuth2 spec. Send us the `client_secret` value over Slack.\n6. Copy the Secret value to your clipboard and save it somewhere safe. Note: The characters may extend past the width of the text box, so make sure to select everything before copying.\n\n![](https://i.ibb.co/Db8TQDJ/Screen-Shot-2023-09-13-at-5-21-34-PM.png)\n\n7. Copy the `Unique Identifier` of the OAuth app and share that value over Slack as well.\n8. In order for us to white-label your OAuth app, you need to request approval first to convert the app from a **local OAuth client** to **global OAuth client**. You can follow the instructions [here](https://developer.zendesk.com/documentation/marketplace/building-a-marketplace-app/set-up-a-global-oauth-client) to do so.\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove pages via the Zendesk OAuth flow. You can use the `resync_file` API endpoint to programmatically resync specific Zendesk files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs.\n\n# Slack\n# Confluence\n", + "name": "Data Sources" + }, + { + "description": "\n---\nUse this endpoint to check the status of the API. A `200` response indicates that the Carbon API is up.\n\nYou can also check for the health of our services on our [Status Page](https://status.carbon.ai/).\n", + "name": "Health" + }, + { + "name": "Organizations" + }, + { + "description": "\n---\n\n![](http://cdn.mcauto-images-production.sendgrid.net/3b277c940596d872/33ed03b3-3f38-485c-a51c-8925f14a7441/1780x1252.png)\n\n## What is Carbon?\n\nCarbon provides a comprehensive framework designed to streamline the process of connecting external data sources to Large Language Models (LLMs). \n\nThe Carbon search model is purpose-built for Large Language Models (LLMs) because of its fully neural architecture, enabling natural language querying across indexed documents from external data sources. In cases where vector (or neural) search isn't optimal, Carbon also supports keyword-based searches.\n\nCarbon simplifies the process of **retrieval augmented generation** (RAG), allowing you to spend more time using your data, and less time trying to ingest it.\n\n## How Carbon Works\n\nUse **[Carbon Connect](https://api.carbon.ai/redoc#tag/Carbon-Connect)** to connect to your users' data sources and then our **Universal API** to retrieve the data to use with LLMs. Carbon has native integrations with 10+ data sources and supports more than 20+ file formats, encompassing text, audio, and visual data.\n\nDepending on your use case and in-house infrastructure, you can retrieve user data from Carbon in several formats: \n\n- Parsed plaintext files\n- Embeddings (and chunks) to store in your vector store\n- Direct semantic and keyword search against Carbon's managed vector database\n\n## Products\n\n### πŸ”— Connect\n\nA client-side component for users to connect data sources such as Notion, Google Drive, Dropbox, OneDrive, websites, and file uploads. Available as a React component, JavaScript SDK, and soon as a magic link. \n\nCarbon handles OAuth flows for 10+ sources, transforms the source data, and automates data synchronization.\n\n### πŸ—„οΈ Store\n\nChoose between Carbon's managed vector database (hosted on Qdrant Cloud) or your storage solution. The database updates as users modify connected sources and manage chunks alongside embeddings.\n\n### πŸ”Œ Universal API\n\nAccess and manage data (documents, chunks, vectors, etc.) from any source using our flexible API suite. Apply custom metadata filters to objects for tailored data retrieval.\n\n## Setup\n\n---\n\n### πŸ”‘ Getting a Carbon API Key\n\nCarbon is free to use up to the first 20 million characters. \nBook a 15 minute onboarding to get an API key [here](https://cal.com/carbon-ai/15min).\n\n### πŸ”— Helpful Links\nTo get started with Carbon, follow our guides:\n\n- [Installing Carbon Connect](https://api.carbon.ai/redoc#tag/Carbon-Connect)\n- [Integrating Data Sources](https://api.carbon.ai/redoc#tag/Data-Sources)\n\n", + "name": "Getting Started" + }, + { + "description": "\n\n---\n\nUse Connect to connect to your users' accounts with the Carbon API.\n\nCarbon Connect is the client-side component that your users will interact with in order upload their content to Carbon and grant you access via the Carbon API.\n\nCarbon Connect handles credential validation, content upload, and success/error handling for each connector that Carbon supports. We support 10+ integrations (Google Drive, Notion, etc), local file uploads (images, audio and text), and public webpages.\n\nCarbon is currently supported via a Javascript SDK, as well as via React Native and mobile webviews.\n\n![](http://cdn.mcauto-images-production.sendgrid.net/3b277c940596d872/17a00fb4-f6d8-49fd-86e1-1a82dd8e64f1/680x1089.gif)\n\n# Javascript SDK\n\n---\n\nCarbon Connect JS is a vanilla JS wrapper and a headless offering to integrate Carbon API into your product.\n\nYou can reference this example repo showcasing our JS SDK [here](https://github.com/hubbleai/sdk-example).\n\n## Installation\n\n---\n\nUse the package manager [npm](https://www.npmjs.com/) to install carbon-connect-js.\n\n```bash\nnpm install carbon-connect-js\n```\n\n## Usage\n\n---\n\n```javascript\nimport * as Carbon from 'carbon-connect-js';\n\n// Note: Access token generation should happen prior to other function calls!\n\n// Generate Access Token\nconst accessTokenResponse = await Carbon.generateAccessToken(\n 'api_key',\n 'customer_id'\n);\nconsole.log(accessTokenResponse.data.access_token);\n\n// Get White Label data\nconst whiteLabelResponse = Carbon.getWhiteLabelData('ACCESS_TOKEN');\nconsole.log(whiteLabelResponse.data);\n```\n\n## Methods\n\n---\n\n### 1. generateAccessToken()\n\n- **Description**: This method is used to generate an access token required for authentication. The access token will be valid for 10 hours.\n\n- **Parameters**: The `generateAccessToken()` method accepts an object with the following properties:\n\n - `apiKey` (string): Your API key.\n - `customerId` (string): The customer's unique ID.\n\n- **Returns**: A promise that resolves to an `AccessTokenResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data containing the access token, if the request was successful. Otherwise, null.\n - `error` (string or null): Error message if there was an issue generating the token. Otherwise, null.\n\n- **Usage**: Here's how you can use the `generateAccessToken()` method\n\n ```javascript\n const Carbon = require('carbon-connect-js');\n\n async function fetchAccessToken() {\n try {\n const response = await Carbon.generateAccessToken({\n apiKey: 'your_api_key',\n customerId: 'your_customer_id',\n });\n\n if (response.status === 200) {\n console.log('Access token:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err);\n }\n }\n\n fetchAccessToken();\n ```\n\n- **Note** : It is ideal to call this method from your backend code and return it to your frontend. This is to avoid exposing your API key to the frontend.\n\n### 2. getWhiteLabelData()\n\n- **Description**: This method retrieves the white label data of the organization, which can be useful for custom branding and theming.\n- **Parameters**: The `getWhiteLabelData()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained from the authentication process.\n\n- **Returns**: A promise that resolves to an `WhiteLabelDataResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): The response data containing details of the white label settings.\n\n- **Usage**: Here's how you can use the `getWhiteLabelData()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchWhiteLabelDetails() {\n try {\n const response = await Carbon.getWhiteLabelData({\n accessToken: 'ACCESS_TOKEN',\n });\n\n if (response.status === 200) {\n console.log('White Label Data:', response.data);\n } else {\n console.error(\n 'Failed to fetch white label data. Status:',\n response.status\n );\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n // Call the function to fetch the data.\n fetchWhiteLabelDetails();\n ```\n\n### 3. getUserConnections()\n\n- **Description**: Retrieve all the active integrations or connections associated with a user.\n- **Parameters**: The `getUserConnections()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained from the authentication process.\n\n- **Returns**: A promise that resolves to a `UserConnectionsResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `connections` (array): List of active integrations or connections associated with the user.\n - `error` (object or null): Contains error details if any issues arise while fetching user connections.\n\n- **Usage**:\n\n```javascript\nimport * as Carbon from 'carbon-connect-js';\n\nasync function fetchUserIntegrations() {\n try {\n const response = await Carbon.getUserConnections({\n accessToken: 'ACCESS_TOKEN',\n });\n\n if (response.status === 200) {\n console.log('User Connections:', response.connections);\n } else {\n console.error('Error:', response.error.message);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n}\n\n// Initiate the call to fetch user integrations.\nfetchUserIntegrations();\n```\n\n### 4. generateOauthurl()\n\n- **Description**: Generate an OAuth URL to facilitate users in connecting a third-party account.\n\n- **Parameters**: The `generateOauthurl()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `integrationName` (string): Name of the third-party service you want to integrate.\n - `chunkSize` (number, optional): Defines the chunk size. Defaults to 1500.\n - `chunkOverlap` (number, optional): Defines the chunk overlap. Defaults to 20.\n - `skipEmbeddingGeneration` (boolean, optional): If set to true, embedding generation will be skipped. Defaults to false.\n - `tags` (object, optional): Tags that can be passed for additional information. Defaults to an empty object.\n\n- **Returns**: A promise that resolves to a `GenerateOAuthURLResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details like the generated OAuth URL, integration name, chunk size, chunk overlap, and other specified parameters.\n - `error` (string or null): Contains error message if there's any issue generating the OAuth URL.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function generateIntegrationOAuthURL() {\n try {\n const response = await Carbon.generateOauthurl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n integrationName: 'SERVICE_NAME',\n // Accepted values are: NOTION, GOOGLE_DRIVE, ONEDRIVE, INTERCOM, DROPBOX, ZENDESK, BOX\n });\n\n if (response.status === 200) {\n console.log('Generated OAuth URL:', response.data.oauth_url);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n generateIntegrationOAuthURL();\n ```\n\n### 5. uploadFiles()\n\n- **Description**: Upload one or multiple files to Carbon, with options to control chunk size, chunk overlap, and embedding generation.\n\n- **Parameters**: The `uploadFiles()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `files` (Array): An array of files you want to upload.\n - `chunkSize` (number, optional): Defines the chunk size. Defaults to 1500.\n - `chunkOverlap` (number, optional): Defines the chunk overlap. Defaults to 20.\n - `skipEmbeddingGeneration` (boolean, optional): If set to true, embedding generation will be skipped. Defaults to false.\n\n- **Returns**: A promise that resolves to an UploadFilesResponse object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the uploaded files, including count and array of successful uploads.\n - `error` (object or null): Contains error details if there's an issue during file upload.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function uploadFilesToPlatform() {\n try {\n const response = await Carbon.uploadFilesToCarbon({\n accessToken: 'YOUR_ACCESS_TOKEN',\n files: filesToUploadArray,\n // You can also specify other parameters here if needed.\n });\n\n if (response.status === 200) {\n console.log('Uploaded Files:', response.data.successfulUploads);\n if (response.error) {\n console.warn('Failed Uploads:', response.error.failedUploads);\n }\n } else {\n console.error('Error:', response.error.message);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n uploadFilesToPlatform();\n ```\n\n### 6. updateTags()\n\n- **Description**: Updates or appends tags to a specified file in Carbon.\n\n- **Parameters**:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (int): The ID of the file you want to update tags for.\n - `tags` (object): The tags you want to add or update for the specified file.\n\n- **Returns**: A promise that resolves to an `UpdateTagsResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the updated file, including the file ID and updated tags.\n - `error` (object or null): Contains error details if there's an issue updating the tags.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function updateFileTags() {\n const fileId = 'YOUR_FILE_ID'; // Replace with your actual file ID\n const tagsToUpdate = {\n category: 'document',\n type: 'pdf',\n // ... add more tags as needed\n };\n\n try {\n const response = await Carbon.updateTags({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: fileId,\n tags: tagsToUpdate,\n });\n\n if (response.status === 200) {\n console.log('Updated Tags:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n updateFileTags();\n ```\n\n### 7. processSitemapUrl()\n\n- **Description**: Fetches and processes the URLs present in a specified sitemap.\n\n- **Parameters**: The `processSitemapUrl()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `sitemapUrl` (string): The URL of the sitemap to be fetched.\n\n- **Returns**: A promise that resolves to a `ProcessSitemapUrlResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the fetched URLs.\n - `urls` (array): An array of URLs retrieved from the sitemap.\n - `count` (number): Total number of URLs retrieved from the sitemap.\n - `error` (string or null): Error message if there's an issue fetching the sitemap.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchSitemapUrls() {\n const sitemap = 'YOUR_SITEMAP_URL'; // Replace with your actual sitemap URL\n\n try {\n const response = await Carbon.handleFetchSitemapUrls({\n accessToken: 'ACCESS_TOKEN',\n sitemapUrl: sitemap,\n });\n\n if (response.status === 200) {\n console.log('Retrieved URLs:', response.data.urls);\n console.log('Total URLs:', response.data.count);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n fetchSitemapUrls();\n ```\n\n### 8. submitScrapeRequest()\n\n- **Description**: Initiates a scraping request for specified URLs. This function supports batch scraping and can take multiple URLs in a single request.\n\n- **Parameters**: The `submitScrapeRequest()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `urls` (array of strings): An array of URLs you want to scrape.\n - `tags` (object, optional): Tags associated with the scraping request. Defaults to an empty object.\n - `recursionDepth` (number, optional): Specifies the depth of scraping for linked pages. Defaults to 1.\n - `maxPagesToScrape` (number, optional): Maximum number of pages to scrape per URL. Defaults to 1.\n - `chunkSize` (number, optional): Size of data chunks. Defaults to 1500.\n - `chunkOverlap` (number, optional): Overlapping size between chunks. Defaults to 20.\n - `skipEmbeddingGeneration` (boolean, optional): Indicates whether to skip embedding generation during scraping. Defaults to false.\n\n- **Returns**: A promise that resolves to a `SubmitScrapeRequestResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the scraping response.\n - `files` (array): An array of objects, each representing a file resulting from the scraping process.\n - `error` (string or null): Error message if there's an issue initiating the scraping.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function initiateScraping() {\n const urlsToScrape = ['URL_1', 'URL_2']; // Replace with your actual URLs\n\n try {\n const response = await Carbon.submitScrapeRequest({\n accessToken: 'YOUR_ACCESS_TOKEN',\n urls: urlsToScrape,\n recursionDepth: 2,\n maxPagesToScrape: 5,\n });\n\n if (response.status === 200) {\n console.log('Scraping result:', response.data.files);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n initiateScraping();\n ```\n\n### 9. getCarbonHealth()\n\n- **Description**: This function retrieves the health status of the Carbon service.\n\n- **Parameters**: The `getCarbonHealth()` method does not require any parameters.\n\n- **Returns**: A promise that resolves to a `getCarbonHealthResponse` object:\n\n - status (number): An HTTP status code indicating the health status. A status code of 200 indicates that the service is in a healthy state.\n\n- **Usage**: Below is an example of how to utilize the `getCarbonHealth()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchCarbonHealth() {\n try {\n const response = await Carbon.getCarbonHealth();\n\n if (response.status === 200) {\n console.log('Carbon service is healthy.');\n } else {\n console.error(\n 'Carbon service is currently unavailable:',\n response.status\n );\n }\n } catch (err) {\n console.error(\n 'Unexpected error while checking Carbon health:',\n err.message\n );\n }\n }\n\n fetchCarbonHealth();\n ```\n\n### 10. uploadFileFromUrl()\n\n- **Description**: This function allows you to upload a file to the Carbon service by fetching it from a specified URL.\n\n- **Parameters**: The `uploadFileFromUrl()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `url` (string): The URL from which the file should be retrieved and uploaded.\n - `fileName` (string, optional): A custom name for the file. If not specified, the original filename from the URL will be used.\n - `chunkSize` (number, optional): The size of data chunks during the upload process. Default is set to 1500.\n - `chunkOverlap` (number, optional): The overlap size between chunks. Default is set to 20.\n - `skipEmbeddingGeneration` (boolean, optional): Indicates whether to skip embedding generation during the upload. Default is set to false.\n\n- **Returns**: A promise that resolves to an `UploadFileFromUrlResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): Contains details of the uploaded file.\n - `file` (object): Represents the uploaded file and all its properties.\n - `error` (string or null): An error message, if there's an issue with the upload.\n\n- **Usage**: Below is an example of how to use the `uploadFileFromUrl()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function uploadFromUrl() {\n const fileUrl = 'URL_TO_THE_FILE'; // Replace with the actual URL\n\n try {\n const response = await Carbon.uploadFileFromUrl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n url: fileUrl,\n fileName: 'custom_file_name.ext',\n });\n\n if (response.status === 200) {\n console.log('Uploaded file details:', response.data.file);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during upload:', err.message);\n }\n }\n\n uploadFromUrl();\n ```\n\n### 11. uploadText()\n\n- **Description**: This function enables the uploading of textual content to the Carbon service.\n\n- **Parameters**: The `uploadText()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `contents` (string): The text content you wish to upload.\n - `fileName` (string, optional): A custom name for the file. If not specified, a random name will be used.\n - `chunkSize` (number, optional): The size of data chunks during the upload process. The default value is 1500.\n - `chunkOverlap` (number, optional): The overlapping size between chunks. The default value is 20.\n - `skipEmbeddingGeneration` (boolean, optional): An indicator of whether to skip embedding generation during the upload. The default is set to false.\n - `overWriteFileId` (number or null, optional): If provided, the uploaded content will overwrite an existing file with the specified ID.\n\n- **Returns**: A promise that resolves to an `UploadTextResponse` object containing the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): Contains details of the uploaded file.\n - `file` (object): Represents the uploaded file along with its properties.\n - `error` (string or null): An error message in case of an issue during the upload.\n\n- **Usage**: Below is an example of how to utilize the `uploadText()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function uploadCustomText() {\n const textContent = 'This is a sample text content for upload.';\n\n try {\n const response = await Carbon.uploadText({\n accessToken: 'YOUR_ACCESS_TOKEN',\n contents: textContent,\n fileName: 'sample_text.txt',\n });\n\n if (response.status === 200) {\n console.log('Uploaded file details:', response.data.file);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during upload:', err.message);\n }\n }\n\n uploadCustomText();\n ```\n\n### 12. deleteFile()\n\n- **Description**: This function allows for the removal of a specified file from the Carbon service.\n\n- **Parameters**: The `deleteFile()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file you intend to delete.\n\n- **Returns**: A promise that resolves to an `DeleteFileResponse` object containing the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): Contains details of the deleted file or any additional response data.\n - `error` (string or null): An error message in case there is an issue with the file deletion.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function removeFile() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.deleteFile({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n });\n\n if (response.status === 200) {\n console.log('File successfully deleted:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during file deletion:', err.message);\n }\n }\n\n removeFile();\n ```\n\n### 13. resyncFile()\n\n- **Description**: This function triggers a resynchronization of a specified file with the Carbon service. This can be valuable in scenarios where a file's internal data changes or if there are discrepancies in the data on the server.\n\n- **Parameters**: The `resyncFile()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file you wish to resynchronize.\n - `chunkSize` (number, optional, default 1500): Specifies the chunk size when processing the file.\n - `chunkOverlap` (number, optional, default 20): Specifies the overlap size between each chunk.\n\n- **Returns**: A promise that resolves to an `ResyncFileResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data, containing the access token if the request was successful; otherwise, it is null.\n - `error` (string or null): An error message if there was an issue generating the token, otherwise null.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function resynchronizeFile() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.resyncFile({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n chunkSize: 1600, // Optional. Default is 1500.\n chunkOverlap: 25, // Optional. Default is 20.\n });\n\n if (response.status === 200) {\n console.log('File successfully resynced:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during file resync:', err.message);\n }\n }\n\n resynchronizeFile();\n ```\n\n### 14. getRawFilePresignedUrl()\n\n- **Description**: This function retrieves a presigned URL that can be utilized to directly access the unprocessed content of a file stored within the Carbon service.\n\n- **Parameters**: The `getRawFilePresignedUrl()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file for which you seek to obtain the presigned URL.\n\n- **Returns**: A promise that resolves to an `GetRawFilePresignedUrlResponse` object comprising the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null):\n - `presigned_url` (string): The presigned URL that can be used to access the raw file content.\n - `error` (string or null): An error message if there is an issue with fetching the presigned URL.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchPresignedUrl() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.getRawFilePresignedUrl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n });\n\n if (response.status === 200) {\n console.log('Presigned URL:', response.data.presigned_url);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error fetching presigned URL:', err.message);\n }\n }\n\n fetchPresignedUrl();\n ```\n\n### 15. getParsedFilePresignedUrl()\n\n- **Description**: This function retrieves a presigned URL that can be employed to directly access the parsed content of a file stored within the Carbon service.\n\n- **Parameters**: The `getParsedFilePresignedUrl()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file for which you desire the presigned URL.\n\n- **Returns**: A promise that resolves to an `GetParsedFilePresignedUrlResponse` object containing the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null):\n - `presigned_url` (string): The presigned URL that enables access to the parsed file content.\n - `error` (string or null): An error message in the event of any issues with obtaining the presigned URL.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchParsedPresignedUrl() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.getParsedFilePresignedUrl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n });\n\n if (response.status === 200) {\n console.log(\n 'Presigned URL for parsed content:',\n response.data.presigned_url\n );\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error(\n 'Unexpected error fetching presigned URL for parsed content:',\n err.message\n );\n }\n }\n\n fetchParsedPresignedUrl();\n ```\n\n### 16. getUserFiles()\n\n- **Description**: This function retrieves a list of user files from the Carbon service based on specified filters.\n\n- **Parameters**: The `getUserFiles()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `limit` (number, optional, default = 10): The maximum number of files to be returned.\n - `offset` (number, optional, default = 0): The starting point from which to fetch files.\n - `order_by` (string, optional, default = 'updated_at'): The attribute by which the returned files are ordered.\n - `order_dir` (string, optional, default = 'asc'):The direction in which the files are ordered. Options are 'asc' or 'desc'.\n - `filters` (Record, optional, default = {}): An object of filters to apply to the file list query.\n - `include_raw_file` (boolean, optional, default = false): If set to true, includes the presigned URL for the raw file in the response.\n - `include_parsed_file` (boolean, optional, default = false): If set to true, includes the presigned URL for the parsed file in the response.\n\n- **Returns**: A promise that resolves to an `GetUserFilesResponse` object with the following properties:\n\n - status (number): The HTTP status code of the response.\n - data (object or null):\n - files (any[]): An array of user file data objects.\n - error (string or null): An error message if there are issues with fetching user files.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchUserFiles() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n limit: 5,\n order_by: 'created_at',\n order_dir: 'desc',\n };\n\n try {\n const response = await Carbon.getUserFiles(params);\n\n if (response.status === 200) {\n console.log('Fetched user files:', response.data.files);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error fetching user files:', err.message);\n }\n }\n\n fetchUserFiles();\n ```\n\n### 17. deleteTags()\n\n- **Description**: This function removes specified tags from a user file within the given organization. The method sends a request to the Carbon service to delete the provided tags from the file associated with the `organizationUserFileId`.\n\n- **Parameters**: The `deleteTags()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `organizationUserFileId` (number): The unique identifier of the user file within the organization.\n - `tags` (string[]): An array of tag names to be deleted from the user file.\n\n- **Returns**: A promise that resolves to an `DeleteTagsResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data received from the Carbon service after the tags have been deleted.\n - `error` (string or null): An error message in case there are issues with the deletion of tags from the user file.\n\n- **Usage**: Below is an example of how to use the `generateAccessToken()` method\n\n ```javascript\n const Carbon = require('carbon-connect-js');\n\n async function fetchAccessToken() {\n try {\n const response = await Carbon.generateAccessToken({\n apiKey: 'your_api_key',\n customerId: 'your_customer_id',\n });\n\n if (response.status === 200) {\n console.log('Access token:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err);\n }\n }\n\n fetchAccessToken();\n ```\n\n### 18. fetchUrls()\n\n- **Description**: This method retrieves all URLs from a specified web page. It initiates a GET request to the Carbon service with the target URL as a parameter. The Carbon service will then access the content of the specified web page and parse it to extract all the URLs.\n\n- **Parameters**: The `fetchUrls()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `url` (string): The URL of the web page from which the links should be fetched.\n\n- **Returns**: A promise that resolves to an `AccessTokenResponse` object comprising the following properties:\n\n - status (number): The HTTP status code of the response.\n - data (object or null): The response data object containing the extracted URLs and potentially the raw HTML content.\n - urls (string[]): A list of URLs extracted from the web page.\n - html_content (string or null): The raw HTML content of the fetched web page (if provided by the Carbon service).\n - error (string or null): An error message in case there are issues with fetching the URLs.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveUrls() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n url: 'https://www.example.com', // replace with actual URL\n };\n\n try {\n const response = await Carbon.fetchUrls(params);\n\n if (response.status === 200) {\n console.log('Fetched URLs successfully:', response.data.urls);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error fetching URLs:', err.message);\n }\n }\n\n retrieveUrls();\n ```\n\n### 19. searchUrls()\n\n- **Description**: This method conducts a search for URLs based on the provided query string.\n\n As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following:\n\n - https://tomrenz.substack.com/p/mrna-and-why-it-matters\n - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/\n - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/\n - https://joomi.substack.com/p/were-still-being-misled-about-how\n\n Subsequently, you can submit these links to the `web_scrape` endpoint in order to retrieve the content of the respective web pages.\n\n- **Parameters**: The `searchUrls()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `query` (string): The search term or query for which URLs are to be discovered.\n\n- **Returns**: A promise that resolves to an `SearchUrlsForQueryResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data object containing the discovered URLs.\n - `urls` (string[]): A list of URLs associated with the search query.\n - `html_content` (null): A null value is returned.\n - `error` (string or null): An error message if there are any issues with the URL search.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveSearchResults() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n query: 'example search term', // replace with actual query\n };\n\n try {\n const response = await Carbon.searchUrls(params);\n\n if (response.status === 200) {\n console.log('Search results:', response.data.urls);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during search:', err.message);\n }\n }\n\n retrieveSearchResults();\n ```\n\n### 20. fetchYoutubeTranscript()\n\n- **Description**: This method retrieves the transcript for a specific YouTube video.\n\n **Example:**Β In the URLΒ https://www.youtube.com/watch?v=_Nq2m5LRQ3g&t=1080s, the video id isΒ `_Nq2m5LRQ3`\n\n- **Parameters**: The `fetchYoutubeTranscript()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `videoId` (string): The unique identifier of the YouTube video.\n - `raw` (boolean, optional): A flag indicating whether to fetch the raw transcript (default is false, indicating that only the processed transcript is fetched).\n\n- **Returns**: A promise that resolves to an `FetchYoutubeTranscriptsResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data object containing the transcript information.\n - `error` (string or null): An error message if there are any issues with fetching the transcript.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveTranscript() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n videoId: 'YOUR_YOUTUBE_VIDEO_ID',\n raw: true,\n };\n\n try {\n const response = await Carbon.fetchYoutubeTranscript(params);\n\n if (response.status === 200) {\n console.log('Transcript data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during transcript fetch:', err.message);\n }\n }\n\n retrieveTranscript();\n ```\n\n### 21. getEmbeddingsfetchUrls()\n\n- **Description**: This method is utilized to retrieve embeddings based on a provided query.\n\n- **Parameters**: The `getEmbeddings()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `query` (string): The search query.\n - `queryVector` (number[] or null, optional): The query vector.\n - `k` (number): The number of nearest embeddings to retrieve.\n - `filesIds` (number[] or null, optional): An array of file IDs.\n - `parentFileIds` (number[] or null, optional): An array of parent file IDs.\n - `tags` (Record or null, optional): Tags associated with the embeddings.\n - `includeTags` (boolean or null, optional): A flag to include tags.\n - `includeVectors` (boolean or null, optional): A flag to include vectors.\n - `includeRawFile` (boolean or null, optional): A flag to include raw file.\n - `hybridSearch` (boolean or null, optional): A flag to indicate hybrid search.\n - `hybridSearchTuningParameters` (HybridSearchParams or null, optional): Parameters for fine-tuning hybrid search. The following properties are available:\n - `weightA`\n - `weightB`\n\n- **Returns**: A promise that resolves to an `GetEmbeddingsResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data containing the embeddings information.\n - `error` (string or null): An error message if there's an issue fetching the embeddings.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveEmbeddings() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n query: 'YOUR_SEARCH_QUERY',\n k: 5, // Example: retrieve 5 nearest embeddings.\n // Add other parameters as needed\n };\n\n try {\n const response = await Carbon.getEmbeddings(params);\n\n if (response.status === 200) {\n console.log('Embeddings data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during embeddings fetch:', err.message);\n }\n }\n\n retrieveEmbeddings();\n ```\n\n### 22. getTextChunks()\n\n- **Description**: This method fetches text chunks based on the specified user file ID and other optional parameters.\n\n- **Parameters**: The `getTextChunks()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `userFileId` (number): ID of the user file for which text chunks are being fetched.\n - `limit` (number, optional): Maximum number of text chunks to retrieve. Defaults to 10.\n - `offset` (number, optional): The number to start the fetch from. Useful for pagination. Defaults to 0.\n - `orderBy` (string, optional): The column name to order the results by. Defaults to 'updated_at'.\n - `orderDir` (string, optional): Direction of the order ('asc' or 'desc'). Defaults to 'asc'.\n - `includeVectors` (boolean, optional): Flag to indicate whether to include vectors in the response. Defaults to false.\n\n- **Returns**: A promise that resolves to an `GetTextChunksResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data containing the text chunks information.\n - `error` (string or null): Error message if there's an issue fetching the text chunks.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveTextChunks() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n userFileId: 12345, // Replace with actual user file ID.\n limit: 5, // Example: retrieve 5 text chunks.\n // Add other parameters as needed\n };\n\n try {\n const response = await Carbon.getTextChunks(params);\n\n if (response.status === 200) {\n console.log('Text chunks data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during text chunks fetch:', err.message);\n }\n }\n\n retrieveTextChunks();\n ```\n\n### 23. getUserDataSources()\n\n- **Description**: This method retrieves user data sources based on the provided parameters.\n\n- **Parameters**: The `getUserDataSources()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `limit` (number, optional): The maximum number of data sources to retrieve. Defaults to 10.\n - `offset` (number, optional): The starting point for the fetch, useful for pagination. Defaults to 0.\n - `orderBy` (string, optional): The column name to order the results by. Defaults to 'updated_at'.\n - `orderDir` (string, optional): The direction of the order ('asc' or 'desc'). Defaults to 'asc'.\n - `sourceType` (string, optional): The type of data source to filter the results by.\n - `sourceIds` (number[] or null, optional): An array of specific data source IDs to retrieve.\n - `revokedAccess` (boolean or null, optional): A flag to filter data sources based on revoked access.\n\n- **Returns**: A promise that resolves to an `AccessTokenResponse` object with the following properties:\n\n - status (number): The HTTP status code of the response.\n - data (object or null): The response data containing user data sources information.\n - error (string or null): An error message if there's an issue fetching the user data sources.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveUserDataSources() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n limit: 5, // Example: retrieve 5 data sources.\n // Add other parameters as needed\n };\n\n try {\n const response = await Carbon.getUserDataSources(params);\n\n if (response.status === 200) {\n console.log('User data sources data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error(\n 'Unexpected error during user data sources fetch:',\n err.message\n );\n }\n }\n\n retrieveUserDataSources();\n ```\n\n### 24. revokeAccessToDataSource()\n\n- **Description**: This method revokes user access to a specified data source. The user will need to re-authenticate after access is revoked.\n\n- **Parameters**: The `revokeAccessToDataSource()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `dataSourceId` (number): The ID of the data source for which access should be revoked.\n\n- **Returns**: A promise that resolves to an `RevokeAccessToDataSourceResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data indicating the outcome of the access revocation request.\n - `error` (string or null): An error message if there are any issues with revoking access to the data source.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function revokeDataSourceAccess() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n dataSourceId: 12345, // Example: data source ID to revoke access to.\n };\n\n try {\n const response = await Carbon.revokeAccessToDataSource(params);\n\n if (response.status === 200) {\n console.log('Successfully revoked access:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during access revocation:', err.message);\n }\n }\n\n revokeDataSourceAccess();\n ```\n\n# Prebuilt Component\n\n---\n\n## Installation\n\n---\n\nTo install Carbon Connect as a prebuilt React component, use npm as follows:\n\n```bash\nnpm install carbon-connect\n```\n\n## Prerequisites\n\n---\n\nThe package expects the following npm packages to be installed in your project:\n\n1. `@radix-ui/react-dialog`\n2. `\"lodash\": \"^4.17.21`\n3. `react`\n4. `react-dom`\n5. `react-drag-drop-files`\n6. `react-icons`\n7. `react-toastify`\n8. `tailwindcss`\n\nPlease check for the versions from `package.json` if you encounter a version mismatch error.\n\n## Component Properties\n\n---\n\nThe `CarbonConnect` component accepts the following properties:\n\n| Property | Type | Required? | Description |\n| -------------------------- | --------------- | --------- | ----------------------------------------------------------------------------------------------------------------------- |\n| `brandIcon` | String | Yes | A URL or a local path to your organization's brand icon. |\n| `orgName` | String | Yes | The name of your organization. This is displayed in the initial announcement modal view. |\n| `tokenFetcher` | Function | Yes | A function that returns a promise which resolves with the access and refresh tokens. |\n| `onSuccess` | Function | No | A callback function that will be called after the file upload is successful. |\n| `onError` | Function | No | A callback function that will be called if there is any error in the file upload. |\n| `children` | React Node(JSX) | No | You can pass any valid React node that will be used as a trigger to open the component. |\n| `entryPoint` | String | No | The initial active step when the component loads. Default entry point is 'LOCAL_FILES'. More integrations are upcoming. |\n| `maxFileSize` | Number | No | Maximum file size in bytes that is allowed to be uploaded. Defaults to 10 MB |\n| `tags` | Object | No | Any additional data you want to associate with the component's state, such as an app ID. |\n| `enabledIntegrations` | dict | No | Let's you choose which 3rd party integrations to show. See below for more details about this prop |\n| `primaryBackgroundColor` | String | No | The primary background color of the component. Defaults to `#000000`. |\n| `primaryTextColor` | String | No | The primary text color of the component. Defaults to `#FFFFFF`. |\n| `secondaryBackgroundColor` | String | No | The secondary background color of the component. Defaults to `#FFFFFF`. |\n| `secondaryTextColor` | String | No | The secondary text color of the component. Defaults to `#000000`. |\n| `allowMultipleFiles` | Boolean | No | Whether or not to allow multiple files to be uploaded at once. Defaults to `false`. |\n| `chunkSize` | Number | No | The no.of tokens per chunk. Defaults to 1500. |\n| `overlapSize` | Number | No | The no.of tokens to overlap between chunks. Defaults to 20. |\n| `open` | Boolean | No | Whether or not to open the component. Defaults to `false`. |\n| `setOpen` | Function | No | A function that will be called to set the open state of the component. Defaults to `None`. |\n| `alwaysOpen` | Boolean | No | Whether or not to always keep the component open. Defaults to `false`. |\n| `tosURL` | String | No | A URL to your organization's terms of service. Defaults to `https://carbon.ai/terms`. |\n| `privacyPolicyURL` | String | No | A URL to your organization's privacy policy. Defaults to `https://carbon.ai/privacy`. |\n| `navigateBackURL` | String | No | A URL to your intended destination. Defaults to `None`. |\n| `backButtonText` | String | No | The label that you want to show on the back button. Defaults to `Go back` |\n\nWhen you do not pass `open` or `setOpen`, CC will manage the open state internally. If you pass `open` and `setOpen`, you will have to manage the open state yourself.\n\n### Note about Google Drive\n\nOur oAuth app is in approval phase. your users will see a warning message when they try to connect their Google account. Please ignore the warning and proceed to connect your account. We will update this section once our app is approved.\n\n## Usage\n\n---\n\nThis section demonstrates how to integrate the CarbonConnect component within a Next.js project.\n\n### Client Side Configuration\n\n1. Import necessary libraries and components:\n\n```jsx\nimport { CarbonConnect } from 'carbon-connect';\nimport axios from 'axios';\n```\n\n2. Token Retrieval:\n The tokenFetcher function is set up to request access tokens from Carbon directly via your backend:\n\n```js\nconst tokenFetcher = async () => {\n const response = await axios.get('/api/auth/fetchCarbonTokens', {\n params: { customer_id: 'your_customer_id' },\n });\n return response.data; // Must return data containing access_token\n};\n```\n In the example above, tokenFetcher is a helper function that retrieves the necessary tokens for authentication. This function should be implemented in your client-side code and is designed to make a request to an API on your backend server. The API then requests tokens from the Carbon token creation endpoint. The Carbon token creation endpoint is a secure endpoint that requires a valid API key and customer ID. The customer ID is a unique identifier for your end-user, and you can pass any string as the customer ID. The API key is a secret key provided to you by Carbon. Please contact us to obtain your API key.\n\n3. Implement CarbonConnect Component:\n Here's a concise usage example. Customize according to your requirements:\n\n```jsx\n console.log('Data on Success: ', data)}\n onError={(error) => console.log('Data on Error: ', error)}\n primaryBackgroundColor=\"#F2F2F2\"\n primaryTextColor=\"#555555\"\n secondaryBackgroundColor=\"#f2f2f2\"\n secondaryTextColor=\"#000000\"\n allowMultipleFiles={true}\n open={true}\n chunkSize={1500}\n overlapSize={20}\n // entryPoint=\"LOCAL_FILES\"\n>\n```\n\n### Server Side Configuration\n\nYour backend should handle token requests like this:\n\n```js\nconst response = await axios.get('https://api.carbon.ai/auth/v1/access_token', {\n headers: {\n 'Content-Type': 'application/json',\n 'customer-id': '',\n authorization: 'Bearer ',\n },\n});\nif (response.status === 200 && response.data) {\n res.status(200).json(response.data);\n}\n```\n\n### Return Value Expectation:\n\nEnsure that your tokenFetcher returns an object structured as:\n\n```js\n{\n access_token: string;\n}\n```\n\n## Enable Data Sources\n\n---\n\nAnother important prop is enabledIntegrations. This prop lets you choose which integrations to show in the component. You can also pass additional configuration for each integration. We have provided an example in the above code snippet. Here is the list of all the integrations that you can enable:\n\n1. `LOCAL_FILES`: This integration lets you upload files from your local machine. You can pass the following configuration for this integration:\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `maxFileSize`: This is the maximum file size in bytes that is allowed to be uploaded. Defaults to 10 MB.\n - `allowMultipleFiles`: Whether or not to allow multiple files to be uploaded at once. Defaults to `false`.\n - `maxFilesCount`: This is the maximum no.of files that can be uploaded at once. Defaults to 10.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n - `allowedFileTypes`: This is an array of objects. Each object represents a file type that is allowed to be uploaded. Each object can have the following properties:\n - `extension`: The file extension of the file type. This is a required property.\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n2. `NOTION`: This integration lets you upload files from your notion account. You can pass the following configuration for this integration\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n3. `WEB_SCRAPER`: This integration lets you scrape URLs. You can pass the following configuration for this integration:\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `recursionDepth`: This is the depth of recursion. Defaults to 3. If you do not want recursion to happen, please pass 1. Passing 0 will scrape recursively until the maxPagesToScrape limit is reached.\n - `maxPagesToScrape`: This is the maximum no.of pages to scrape. Defaults to 100.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n4. `GOOGLE_DRIVE`: This integration lets you upload files from your Google Drive. You can pass the following configuration for this integration:\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n5. `INTERCOM`: This integration lets you select pages from your Intercom. You can pass the following configuration for this integration:\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n6. `DROPBOX`: This integration lets you upload files from your Dropbox. You can pass the following configuration for this integration:\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n7. `ONEDRIVE`: This integration lets you upload files from your Onedrive. You can pass the following configuration for this integration:\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n## Callback Function Props\n\n---\n\n1. `onError`: CC will also call another call back method if there is an error while uploading file. This function will pass data in the following format:\n\n```js\n{\n status: 400,\n action: 'UPDATE',\n event: 'UPDATE',\n integration: ``, // 'LOCAL_FILES' or 'WEB_SCRAPER',\n data: ``, // This field will be present only if the error is related to a file or web scraper\n}\n```\n\n2. `onSuccess`: You can let CC trigger a callback function upon successful file upload, 3rd party account connection and file selection, Webscraping request initiation.\n\n ### `onSuccess`` Event Types\n\n 1. `INITIATE`: This event type is triggered when a user enters the integration flow (either for auth or file selection)\n 2. `ADD`: This event type is triggered when a user authenticates an account under an integration.\n 3. `UPDATE`: This event type is triggered when a user adds or removes files for an integration. We’ll list the files added or removed.\n 4. `CANCEL`: This event type is triggered when when a user exits the integration flow without taking any action.\n\n\n ### Data passed to `onSuccess` callback\n\n The data passed to the onSuccess callback prop will be:\n\n 1. For `LOCAL_FILES`: \n\n ```js\n {\n status: 200,\n data: {\n \"data_source_external_id\": null, // This field is not applicable for local files\n \"sync_status\": null, // This is not applicable for local files\n \"files\": , (Refer to the file object format below)\n },\n action: 'UPDATE'\n event: 'UPDATE'\n integration: 'LOCAL_FILES',\n }\n ```\n\n 2. For `WEB_SCRAPER`: An array containing only one object in the following format\n\n ```js\n {\n status: 200,\n data: {\n \"data_source_external_id\": null, // This field is not applicable for webscrapers\n \"sync_status\": null, // This is not applicable for webscrapers\n \"files\": , (Refer to the file object format below)\n },\n action: 'UPDATE'\n event: 'UPDATE'\n integration: 'WEB_SCRAPER',\n }\n\n ```\n\n 3. For third party integrations: An array of objects. Each object will be in the following format:\n\n ```js\n {\n status: 200,\n data: {\n \"data_source_external_id\": ,\n \"sync_status\": ,\n \"files\": ,\n } or null,\n action: , // `ACTION_TYPE` can be one of the following: `INITIATE`, `ADD`, `UPDATE`, `CANCEL`\n event: , // `EVENT_TYPE` can be one of the following: `INITIATE`, `ADD`, `UPDATE`, `CANCEL`\n integration: , // `INTEGRATION_NAME` can be one of the following: `LOCAL_FILES`, `NOTION`, `WEB_SCRAPER`, `GOOGLE_DRIVE`, `INTERCOM`, `DROPBOX`, `ONEDRIVE`\n }\n ```\n\n Each file object will be in the following format:\n\n ```js\n {\n \"id\": `Unique ID for the file, can be used for resyncing, deleting, updating tags etc.`,\n \"source\": ``, // One among `LOCAL_FILES`, `NOTION`, `WEB_SCRAPER`, `GOOGLE_DRIVE`, `INTERCOM`, `DROPBOX`, `ONEDRIVE`\n \"organization_id\": ``, // This is your unique organization id in carbon\n \"organization_supplied_user_id\": ``, // This is the unique user id that you pass to CC\n \"organization_user_data_source_id\": ``, // This is the unique user data source id that CC creates for each user for each integration\n \"external_file_id\": ``, // This is the unique file id in the 3rd party integration\n \"external_url\": ``, // This is the unique url of the file in the 3rd party integration\n \"sync_status\": ``, // This is the sync status of the file. It can be one of the following: `READY`, `QUEUED_FOR_SYNCING`, `SYNCING`, `SYNC_ERROR`\n \"last_sync\": ``, // This is the timestamp of the last sync\n \"tags\": ``, // These are the tags passed in to CC\n \"file_statistics\": ``, // This is the file statistics object\n \"file_metadata\": ``, // This is the file metadata object\n \"chunk_size\": ``, // This is the chunk size used for the file\n \"chunk_overlap\": ``, // This is the chunk overlap used for the file\n \"name\": ``, // This is the name of the file\n \"enable_auto_sync\": ``, // This is the auto sync status of the file. This is a boolean flag\n \"presigned_url\": ``, // This is the presigned url of the file\n \"parsed_text_url\": ``, // This is the parsed text url of the file\n \"skip_embedding_generation\": ``, // This is the skip embedding generation status of the file. This is a boolean flag\n \"created_at\": ``, // This is the timestamp of the file creation\n \"updated_at\": ``, // This is the timestamp of the file updation\n \"action\": ``, // This is the action type. It can be one of the following: `ADD`, `UPDATE`, `REMOVE`\n }\n ```\n", + "name": "Carbon Connect" + }, + { + "description": "\n---\n### πŸ’¬ We're here to help!\n\nIt’s our mandate to deliver a delightful experience and answer any questions you might have. This documentation is meant to help get you started but isn't the only resource you have! \n\nPlease don't hesitate to email us at [support@carbon.ai](mailto:support@carbon.ai) or reach out directly to your account manager.\n\nOur terms of service can be found here: [terms of service](https://carbon.ai/terms)\n\nWe're excited you're here!\n", + "name": "Contact Us" + } + ], + "paths": { + "/integrations/oauth_url": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Get Oauth Url", + "operationId": "Integrations_getOauthUrl", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthURLRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IntegrationsGetOauthUrlResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/items/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Sync Data Source Items", + "operationId": "Integrations_syncDataSourceItems", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncDirectoryRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceAPI" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/items/list": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "List Data Source Items", + "operationId": "Integrations_listDataSourceItems", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListDataSourceItemsRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListDataSourceItemsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/files/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Sync Files", + "operationId": "Integrations_syncFiles", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncFilesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/confluence/list": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Confluence List", + "operationId": "Integrations_listConfluencePages", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "To begin listing a user's Confluence pages, at least a `data_source_id` of a connected\nConfluence account must be specified. This base request returns a list of root pages for\nevery space the user has access to in a Confluence instance. To traverse further down\nthe user's page directory, additional requests to this endpoint can be made with the same\n`data_source_id` and with `parent_id` set to the id of page from a previous request. For\nconvenience, the `has_children` property in each directory item in the response list will\nflag which pages will return non-empty lists of pages when set as the `parent_id`.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/confluence/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Confluence Sync", + "operationId": "Integrations_syncConfluence", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "After listing pages in a user's Confluence account, the set of selected page `ids` and the\nconnected account's `data_source_id` can be passed into this endpoint to sync them into\nCarbon. Additional parameters listed below can be used to associate data to the selected\npages or alter the behavior of the sync.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncFilesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/s3": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "S3 Auth", + "operationId": "Integrations_createAwsIamUser", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Create a new IAM user with permissions to:\n
    \n
  1. List all buckets.
  2. \n
  3. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry \nthe same permissions.
  4. \n
\nOnce created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/S3AuthRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceAPI" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/s3/files": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "S3 Files", + "operationId": "Integrations_syncS3Files", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name \nand object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate \ndata with the selected items or modify the sync behavior", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/S3FileSyncInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/gmail/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Gmail Sync", + "operationId": "Integrations_syncGmail", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Once you have successfully connected your gmail account, you can choose which emails to sync with us\nusing the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations.\nFor now, we support a limited set of keys listed below.\n\nlabel: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. \nafter or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date.\nYou can also use them in combination to get emails from a certain period. \nis: Can have the following values - starred, important, snoozed, and unread \n\nUsing keys or values outside of the specified values can lead to unexpected behaviour.\n\nAn example of a basic query with filters can be\n```json\n{\n \"filters\": {\n \"key\": \"label\",\n \"value\": \"Test\"\n }\n}\n```\nWhich will list all emails that have the label \"Test\".\n\nYou can use AND and OR operation in the following way:\n```json\n{\n \"filters\": {\n \"AND\": [\n {\n \"key\": \"after\",\n \"value\": \"2024/01/07\"\n },\n {\n \"OR\": [\n {\n \"key\": \"label\",\n \"value\": \"Personal\"\n },\n {\n \"key\": \"is\",\n \"value\": \"starred\"\n }\n ]\n }\n ]\n }\n}\n```\nThis will return emails after 7th of Jan that are either starred or have the label \"Personal\". \nNote that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter\nin the above example.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GmailSyncInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/rss_feed": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Rss Feed", + "operationId": "Integrations_syncRssFeed", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RSSFeedInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/outlook/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Outlook Sync", + "operationId": "Integrations_syncOutlook", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Once you have successfully connected your Outlook account, you can choose which emails to sync with us\nusing the filters and folder parameter. \"folder\" should be the folder you want to sync from Outlook. By default\nwe get messages from your inbox folder. \nFilters is a JSON object with key value pairs. It also supports AND and OR operations.\nFor now, we support a limited set of keys listed below.\n\ncategory: Custom categories that you created in Outlook. \nafter or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. \nis: Can have the following values: flagged \n\nAn example of a basic query with filters can be\n```json\n{\n \"filters\": {\n \"key\": \"category\",\n \"value\": \"Test\"\n }\n}\n```\nWhich will list all emails that have the category \"Test\". \n\nSpecifying a custom folder in the same query\n```json\n{\n \"folder\": \"Folder Name\",\n \"filters\": {\n \"key\": \"category\",\n \"value\": \"Test\"\n }\n}\n```\n\nYou can use AND and OR operation in the following way:\n```json\n{\n \"filters\": {\n \"AND\": [\n {\n \"key\": \"after\",\n \"value\": \"2024/01/07\"\n },\n {\n \"OR\": [\n {\n \"key\": \"category\",\n \"value\": \"Personal\"\n },\n {\n \"key\": \"category\",\n \"value\": \"Test\"\n },\n ]\n }\n ]\n }\n}\n```\nThis will return emails after 7th of Jan that have either Personal or Test as category. \nNote that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter\nin the above example.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OutlookSyncInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/freshdesk": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Freshdesk Connect", + "operationId": "Integrations_connectFreshdesk", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. \nOnce you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will \ntrigger an automatic sync of the articles in your \"solutions\" tab. Additional parameters below can be used to associate \ndata with the synced articles or modify the sync behavior.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FreshDeskConnectRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/auth/v1/access_token": { + "get": { + "tags": [ + "Auth" + ], + "summary": "Get Access Token", + "operationId": "Auth_getAccessToken", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/auth/v1/white_labeling": { + "get": { + "tags": [ + "Auth" + ], + "summary": "Get White Labeling", + "operationId": "Auth_getWhiteLabeling", + "security": [ + { + "accessToken": [ + ] + } + ], + "description": "Returns whether or not the organization is white labeled and which integrations are white labeled\n\n:param current_user: the current user\n:param db: the database session\n:return: a WhiteLabelingResponse", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/embeddings": { + "post": { + "tags": [ + "Embeddings" + ], + "summary": "Embeddings", + "operationId": "Embeddings_getDocuments", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2`\nand `tags` are specified, `tags` is ignored. `tags_v2` enables\nbuilding complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example:\n```json\n{\n \"OR\": [\n {\n \"key\": \"subject\",\n \"value\": \"holy-bible\",\n \"negate\": false\n },\n {\n \"key\": \"person-of-interest\",\n \"value\": \"jesus christ\",\n \"negate\": false\n },\n {\n \"key\": \"genre\",\n \"value\": \"religion\",\n \"negate\": true\n }\n {\n \"AND\": [\n {\n \"key\": \"subject\",\n \"value\": \"tao-te-ching\",\n \"negate\": false\n },\n {\n \"key\": \"author\",\n \"value\": \"lao-tzu\",\n \"negate\": false\n }\n ]\n }\n ]\n}\n```\nIn this case, files will be filtered such that:\n1. \"subject\" = \"holy-bible\" OR\n2. \"person-of-interest\" = \"jesus christ\" OR\n3. \"genre\" != \"religion\" OR\n4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\"\n\nNote that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3.\nFor tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply:\n1. \"key\" isn't optional and must be a `string`\n2. \"value\" isn't optional and can be `any` or list[`any`]\n3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in\nthe resulting query. It is `false` by default.\n\n\nWhen querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if\nnot set), it is equal to \"TEXT\". This means that the query will be performed over files that have\nbeen parsed as text (for now, this covers all files except image files). If it is equal to \"IMAGE\",\nthe query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this\nfield as an additional filter on top of any filters set in `file_ids` and\n\n\nWhen `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank\nand select candidate embeddings during information retrieval. By default, these search methods are weighted\nequally during the ranking process. To adjust the weight (or \"importance\") of each search method, you can use\nthe `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are:\n- `weight_a`: weight to assign to semantic search\n- `weight_b`: weight to assign to keyword search\n\nYou must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality\nhas an error tolerance of 0.001 to account for possible floating point issues.\n\nIn order to use hybrid search for a customer across a set of documents, two flags need to be enabled:\n1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload\nbody for this request is below:\n```\n{\n \"configuration_key_name\": \"sparse_vectors\",\n \"value\": {\n \"enabled\": true\n }\n}\n```\n2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the\n`/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true`\n\n\nCarbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's\nmultimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0.\nThe model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query \nparameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing\nembedding queries, embeddings from files that used the specified model will be considered in the query.\nFor example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with\n`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is\nspecified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that\nthe set of all files you want considered for a query have embeddings generated via the same model. For now, **do not**\nset `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetEmbeddingDocumentsBody" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentResponseList" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/text_chunks": { + "post": { + "tags": [ + "Embeddings" + ], + "summary": "Retrieve Embeddings And Content", + "operationId": "Embeddings_getEmbeddingsAndChunks", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EmbeddingsAndChunksQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EmbeddingsAndChunksResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/upload_chunks_and_embeddings": { + "post": { + "tags": [ + "Embeddings" + ], + "summary": "Upload Chunks And Embeddings", + "operationId": "Embeddings_uploadChunksAndEmbeddings", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChunksAndEmbeddingsUploadInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/organization": { + "get": { + "tags": [ + "Organizations" + ], + "summary": "Get Organization", + "operationId": "Organizations_get", + "security": [ + { + "accessToken": [ + ] + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user": { + "post": { + "tags": [ + "Users" + ], + "summary": "User Endpoint", + "operationId": "Users_get", + "security": [ + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserRequestContent" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/modify_user_configuration": { + "post": { + "tags": [ + "Users" + ], + "summary": "Toggle User Features", + "operationId": "Users_toggleUserFeatures", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModifyUserConfigurationInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/uploadfile": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create Upload File", + "operationId": "Files_upload", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request.\nNote that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set,\nPDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates\nof the bounding box around the chunk (this can be used for things like text highlighting). Following is a description\nof all possible query parameters:\n- `chunk_size`: the chunk size (in tokens) applied when splitting the document\n- `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document\n- `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings\n- `set_page_as_boundary`: described above\n- `embedding_model`: the model used to generate embeddings for the document chunks\n- `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently)\n- `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search.\n- `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text\n\n\nCarbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's\nmultimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0.\nThe model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query \nparameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing\nembedding queries, embeddings from files that used the specified model will be considered in the query.\nFor example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with\n`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is\nspecified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that\nthe set of all files you want considered for a query have embeddings generated via the same model. For now, **do not**\nset `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file.", + "parameters": [ + { + "description": "Chunk size in tiktoken tokens to be used when processing file.", + "name": "chunk_size", + "in": "query", + "required": false, + "schema": { + "title": "Chunk Size", + "description": "Chunk size in tiktoken tokens to be used when processing file.", + "type": "integer", + "nullable": true + } + }, + { + "description": "Chunk overlap in tiktoken tokens to be used when processing file.", + "name": "chunk_overlap", + "in": "query", + "required": false, + "schema": { + "title": "Chunk Overlap", + "description": "Chunk overlap in tiktoken tokens to be used when processing file.", + "type": "integer", + "nullable": true + } + }, + { + "description": "Flag to control whether or not embeddings should be generated and stored\n when processing file.", + "name": "skip_embedding_generation", + "in": "query", + "required": false, + "schema": { + "title": "Skip Embedding Generation", + "description": "Flag to control whether or not embeddings should be generated and stored\n when processing file.", + "type": "boolean", + "default": false + } + }, + { + "description": "Flag to control whether or not to set the a page's worth of content as the maximum\n amount of content that can appear in a chunk. Only valid for PDFs. See description route description for\n more information.", + "name": "set_page_as_boundary", + "in": "query", + "required": false, + "schema": { + "title": "Set Page As Boundary", + "description": "Flag to control whether or not to set the a page's worth of content as the maximum\n amount of content that can appear in a chunk. Only valid for PDFs. See description route description for\n more information.", + "type": "boolean", + "default": false + } + }, + { + "description": "Embedding model that will be used to embed file chunks.", + "name": "embedding_model", + "in": "query", + "required": false, + "schema": { + "title": "Embedding Model", + "description": "Embedding model that will be used to embed file chunks.", + "allOf": [ + { + "$ref": "#/components/schemas/TextEmbeddingGenerators" + } + ], + "default": "OPENAI" + } + }, + { + "description": "Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with\n tables, images, and/or scanned text.", + "name": "use_ocr", + "in": "query", + "required": false, + "schema": { + "title": "Use Ocr", + "description": "Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with\n tables, images, and/or scanned text.", + "type": "boolean", + "default": false + } + }, + { + "description": "Whether or not to generate sparse vectors for the file. This is *required* for the file to be a\n candidate for hybrid search.", + "name": "generate_sparse_vectors", + "in": "query", + "required": false, + "schema": { + "title": "Generate Sparse Vectors", + "description": "Whether or not to generate sparse vectors for the file. This is *required* for the file to be a\n candidate for hybrid search.", + "type": "boolean", + "default": false + } + }, + { + "description": "Whether or not to prepend the file's name to chunks.", + "name": "prepend_filename_to_chunks", + "in": "query", + "required": false, + "schema": { + "title": "Prepend Filename To Chunks", + "description": "Whether or not to prepend the file's name to chunks.", + "type": "boolean", + "default": false + } + }, + { + "description": "Number of objects per chunk. For json files only.", + "name": "max_items_per_chunk", + "in": "query", + "required": false, + "schema": { + "title": "Max Items Per Chunk", + "description": "Number of objects per chunk. For json files only.", + "type": "integer", + "nullable": true + } + } + ], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_create_upload_file_uploadfile_post" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/upload_file_from_url": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create Upload File From Url", + "operationId": "Files_uploadFromUrl", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadFileFromUrlInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/upload_text": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create Raw Text", + "operationId": "Files_uploadText", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's\nmultimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0.\nThe model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query \nparameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing\nembedding queries, embeddings from files that used the specified model will be considered in the query.\nFor example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with\n`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is\nspecified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that\nthe set of all files you want considered for a query have embeddings generated via the same model. For now, **do not**\nset `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RawTextInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/deletefile/{file_id}": { + "delete": { + "tags": [ + "Files" + ], + "summary": "Delete File Endpoint", + "operationId": "Files_delete", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "parameters": [ + { + "name": "file_id", + "in": "path", + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/delete_files": { + "post": { + "tags": [ + "Files" + ], + "summary": "Delete Files Endpoint", + "operationId": "Files_deleteMany", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteFilesQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user_files_v2": { + "post": { + "tags": [ + "Files" + ], + "summary": "User Files V2", + "operationId": "Files_queryUserFiles", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2`\nand `tags` are specified, `tags` is ignored. `tags_v2` enables\nbuilding complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example:\n```json\n{\n \"OR\": [\n {\n \"key\": \"subject\",\n \"value\": \"holy-bible\",\n \"negate\": false\n },\n {\n \"key\": \"person-of-interest\",\n \"value\": \"jesus christ\",\n \"negate\": false\n },\n {\n \"key\": \"genre\",\n \"value\": \"religion\",\n \"negate\": true\n }\n {\n \"AND\": [\n {\n \"key\": \"subject\",\n \"value\": \"tao-te-ching\",\n \"negate\": false\n },\n {\n \"key\": \"author\",\n \"value\": \"lao-tzu\",\n \"negate\": false\n }\n ]\n }\n ]\n}\n```\nIn this case, files will be filtered such that:\n1. \"subject\" = \"holy-bible\" OR\n2. \"person-of-interest\" = \"jesus christ\" OR\n3. \"genre\" != \"religion\" OR\n4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\"\n\nNote that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3.\nFor tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply:\n1. \"key\" isn't optional and must be a `string`\n2. \"value\" isn't optional and can be `any` or list[`any`]\n3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in\nthe resulting query. It is `false` by default.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFilesV2" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/create_user_file_tags": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create File Tags", + "operationId": "Files_createUserFileTags", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "A tag is a key-value pair that can be added to a file. This pair can then be used\nfor searches (e.g. embedding searches) in order to narrow down the scope of the search.\nA file can have any number of tags. The following are reserved keys that cannot be used:\n- db_embedding_id\n- organization_id\n- user_id\n- organization_user_file_id\n\nCarbon currently supports two data types for tag values - `string` and `list`.\nKeys can only be `string`. If values other than `string` and `list` are used,\nthey're automatically converted to strings (e.g. 4 will become \"4\").", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFileTagCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/delete_user_file_tags": { + "post": { + "tags": [ + "Files" + ], + "summary": "Delete File Tags", + "operationId": "Files_deleteFileTags", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFileTagsRemove" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/resync_file": { + "post": { + "tags": [ + "Files" + ], + "summary": "Resync File", + "operationId": "Files_resync", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResyncFileQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/raw_file/{file_id}": { + "get": { + "tags": [ + "Files" + ], + "summary": "Raw File", + "operationId": "Files_getRawFile", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "This route is deprecated. Use `/user_files_v2` instead.", + "parameters": [ + { + "name": "file_id", + "in": "path", + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresignedURLResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "deprecated": true + } + }, + "/parsed_file/{file_id}": { + "get": { + "tags": [ + "Files" + ], + "summary": "Parsed File", + "operationId": "Files_getParsedFile", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "This route is deprecated. Use `/user_files_v2` instead.", + "parameters": [ + { + "name": "file_id", + "in": "path", + "required": true, + "schema": { + "title": "File Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresignedURLResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "deprecated": true + } + }, + "/user_files": { + "post": { + "tags": [ + "Files" + ], + "summary": "User Files", + "operationId": "Files_queryUserFilesDeprecated", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "This route is deprecated. Use `/user_files_v2` instead.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FilesQueryUserFilesDeprecatedResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "deprecated": true + } + }, + "/webhooks": { + "post": { + "tags": [ + "Webhooks" + ], + "summary": "Webhook Urls", + "operationId": "Webhooks_urls", + "security": [ + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookQueryResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/add_webhook": { + "post": { + "tags": [ + "Webhooks" + ], + "summary": "Add Webhook Url", + "operationId": "Webhooks_addUrl", + "security": [ + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddWebhookProps" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Webhook" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/delete_webhook/{webhook_id}": { + "delete": { + "tags": [ + "Webhooks" + ], + "summary": "Delete Webhook Url", + "operationId": "Webhooks_deleteUrl", + "security": [ + { + "accessToken": [ + ] + } + ], + "parameters": [ + { + "name": "webhook_id", + "in": "path", + "required": true, + "schema": { + "title": "Webhook Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user_data_sources": { + "post": { + "tags": [ + "Data Sources" + ], + "summary": "User Data Sources", + "operationId": "DataSources_queryUserDataSources", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/revoke_access_token": { + "post": { + "tags": [ + "Data Sources" + ], + "summary": "Revoke Access Token", + "operationId": "DataSources_revokeAccessToken", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevokeAccessTokenInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/web_scrape": { + "post": { + "tags": [ + "Utilities" + ], + "summary": "Web Scrape", + "operationId": "Utilities_scrapeWeb", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website.\n\n", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UtilitiesScrapeWebRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UtilitiesScrapeWebResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/process_sitemap": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Sitemap", + "operationId": "Utilities_processSitemap", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint.\n\n", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "title": "Url", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UtilitiesProcessSitemapResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/scrape_sitemap": { + "post": { + "tags": [ + "Utilities" + ], + "summary": "Scrape Sitemap", + "operationId": "Utilities_scrapeSitemap", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Extracts all URLs from a sitemap and performs a web scrape on each of them.\n\nArgs:\n sitemap_url (str): URL of the sitemap\n\nReturns:\n dict: A response object with the status of the scraping job message.-->", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SitemapScrapeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UtilitiesScrapeSitemapResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/fetch_urls": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Fetch Urls", + "operationId": "Utilities_fetchUrls", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Extracts all URLs from a webpage. \n\nArgs:\n url (str): URL of the webpage\n\nReturns:\n FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content.", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "title": "Url", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchURLsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/search_urls": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Search Urls", + "operationId": "Utilities_searchUrls", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Perform a web search and obtain a list of relevant URLs.\n\nAs an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following:\n\n - https://tomrenz.substack.com/p/mrna-and-why-it-matters\n\n - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/\n\n - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/\n \n - https://joomi.substack.com/p/were-still-being-misled-about-how\n\nSubsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages.\n\nArgs:\n query (str): Query to search for\n\nReturns:\n FetchURLsResponse: A response object with a list of URLs for a given search query.", + "parameters": [ + { + "name": "query", + "in": "query", + "required": true, + "schema": { + "title": "Query", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchURLsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/fetch_youtube_transcript": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Fetch Youtube Transcripts", + "operationId": "Utilities_fetchYoutubeTranscripts", + "security": [ + { + "apiKey": [ + ], + "customerId": [ + ] + }, + { + "accessToken": [ + ] + } + ], + "description": "Fetches english transcripts from YouTube videos.\n\nArgs:\n id (str): The ID of the YouTube video. \n raw (bool): Whether to return the raw transcript or not. Defaults to False.\n\nReturns:\n dict: A dictionary with the transcript of the YouTube video.", + "parameters": [ + { + "name": "id", + "in": "query", + "required": true, + "schema": { + "title": "Id", + "type": "string" + } + }, + { + "name": "raw", + "in": "query", + "required": false, + "schema": { + "title": "Raw", + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/YoutubeTranscriptResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Health", + "operationId": "Health_check", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HealthCheckResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AddWebhookProps": { + "title": "AddWebhookProps", + "properties": { + "url": { + "title": "Url", + "type": "string" + } + }, + "type": "object", + "required": [ + "url" + ] + }, + "Body_create_upload_file_uploadfile_post": { + "title": "Body_create_upload_file_uploadfile_post", + "properties": { + "file": { + "title": "File", + "type": "string", + "format": "binary" + } + }, + "type": "object", + "required": [ + "file" + ] + }, + "ChunkProperties": { + "title": "ChunkProperties", + "properties": { + "set_page_as_boundary": { + "title": "Set Page As Boundary", + "type": "boolean", + "default": false + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "type": "boolean", + "default": false + }, + "max_items_per_chunk": { + "title": "Max Items Per Chunk", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "set_page_as_boundary", + "prepend_filename_to_chunks", + "max_items_per_chunk" + ] + }, + "ChunksAndEmbeddings": { + "title": "ChunksAndEmbeddings", + "properties": { + "chunk_number": { + "title": "Chunk Number", + "type": "integer", + "nullable": true + }, + "chunk": { + "title": "Chunk", + "type": "string" + }, + "embedding": { + "title": "Embedding", + "items": { + "type": "number" + }, + "type": "array" + } + }, + "type": "object", + "required": [ + "chunk_number", + "chunk", + "embedding" + ] + }, + "ChunksAndEmbeddingsUploadInput": { + "title": "ChunksAndEmbeddingsUploadInput", + "properties": { + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + "chunks_and_embeddings": { + "title": "Chunks And Embeddings", + "items": { + "$ref": "#/components/schemas/SingleChunksAndEmbeddingsUploadInput" + }, + "type": "array" + }, + "overwrite_existing": { + "title": "Overwrite Existing", + "type": "boolean", + "default": false + } + }, + "type": "object", + "required": [ + "embedding_model", + "chunks_and_embeddings" + ] + }, + "ConfigurationKeys": { + "title": "ConfigurationKeys", + "type": "string", + "const": "sparse_vectors" + }, + "DataSourceLastSyncActions": { + "title": "DataSourceLastSyncActions", + "type": "string", + "enum": [ + "ADD", + "UPDATE", + "CANCEL", + "REVOKE" + ] + }, + "DataSourceSyncStatuses": { + "title": "DataSourceSyncStatuses", + "type": "string", + "enum": [ + "QUEUED_FOR_SYNCING", + "SYNCING", + "READY", + "SYNC_ERROR" + ] + }, + "DataSourceType": { + "title": "DataSourceType", + "type": "string", + "enum": [ + "GOOGLE_DRIVE", + "NOTION", + "NOTION_DATABASE", + "INTERCOM", + "DROPBOX", + "ONEDRIVE", + "SHAREPOINT", + "CONFLUENCE", + "BOX", + "ZENDESK", + "ZOTERO", + "S3", + "GMAIL", + "OUTLOOK", + "TEXT", + "CSV", + "TSV", + "PDF", + "DOCX", + "PPTX", + "XLSX", + "MD", + "RTF", + "JSON", + "RAW_TEXT", + "WEB_SCRAPE", + "RSS_FEED", + "FRESHDESK", + "JPG", + "PNG", + "MP3", + "MP4", + "MP2", + "AAC", + "WAV", + "FLAC", + "PCM", + "M4A", + "OGG", + "OPUS", + "WEBM" + ] + }, + "DeleteFilesQueryInput": { + "title": "DeleteFilesQueryInput", + "properties": { + "file_ids": { + "title": "File Ids", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "sync_statuses": { + "title": "Sync Statuses", + "items": { + "$ref": "#/components/schemas/ExternalFileSyncStatuses" + }, + "type": "array", + "nullable": true + }, + "delete_non_synced_only": { + "title": "Delete Non Synced Only", + "type": "boolean", + "default": false + } + }, + "type": "object" + }, + "DirectoryItem": { + "title": "DirectoryItem", + "properties": { + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "is_synced": { + "title": "Is Synced", + "type": "boolean", + "default": false + }, + "has_children": { + "title": "Has Children", + "type": "boolean", + "default": false + } + }, + "type": "object", + "required": [ + "id", + "name", + "is_synced", + "has_children" + ] + }, + "DocumentResponse": { + "title": "DocumentResponse", + "properties": { + "tags": { + "title": "Tags", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object", + "nullable": true + }, + "content": { + "title": "Content", + "type": "string" + }, + "file_id": { + "title": "File Id", + "type": "integer" + }, + "source": { + "title": "Source", + "type": "string", + "nullable": true + }, + "source_url": { + "title": "Source Url", + "type": "string", + "nullable": true + }, + "source_type": { + "$ref": "#/components/schemas/DataSourceTypeNullable" + }, + "presigned_url": { + "title": "Presigned Url", + "type": "string", + "nullable": true + }, + "vector": { + "title": "Vector", + "items": { + "type": "number" + }, + "type": "array", + "nullable": true + }, + "score": { + "title": "Score", + "type": "number", + "nullable": true + }, + "rank": { + "title": "Rank", + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + } + ], + "nullable": true + }, + "content_metadata": { + "title": "Content Metadata", + "type": "object", + "nullable": true + } + }, + "type": "object", + "required": [ + "content", + "file_id", + "source", + "source_url", + "source_type", + "presigned_url", + "tags", + "vector", + "score", + "rank", + "content_metadata" + ] + }, + "DocumentResponseList": { + "title": "DocumentResponseList", + "properties": { + "documents": { + "title": "Documents", + "items": { + "$ref": "#/components/schemas/DocumentResponse" + }, + "type": "array" + } + }, + "type": "object", + "required": [ + "documents" + ] + }, + "EmbeddingAndChunk": { + "title": "EmbeddingAndChunk", + "properties": { + "user_file_id": { + "title": "User File Id", + "type": "integer" + }, + "chunk_index": { + "title": "Chunk Index", + "type": "integer", + "nullable": true + }, + "source_content": { + "title": "Source Content", + "type": "string" + }, + "embedding": { + "title": "Embedding", + "items": { + "type": "number" + }, + "type": "array", + "nullable": true + } + }, + "type": "object", + "required": [ + "user_file_id", + "chunk_index", + "source_content", + "embedding" + ] + }, + "EmbeddingGenerators": { + "title": "EmbeddingGenerators", + "type": "string", + "enum": [ + "OPENAI", + "AZURE_OPENAI", + "COHERE_MULTILINGUAL_V3", + "VERTEX_MULTIMODAL", + "OPENAI_ADA_LARGE_256", + "OPENAI_ADA_LARGE_1024", + "OPENAI_ADA_LARGE_3072", + "OPENAI_ADA_SMALL_512", + "OPENAI_ADA_SMALL_1536" + ] + }, + "EmbeddingProperties": { + "title": "EmbeddingProperties", + "properties": { + "chunk_size": { + "title": "Chunk Size", + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "chunk_size", + "chunk_overlap" + ] + }, + "EmbeddingsAndChunksFilters": { + "title": "EmbeddingsAndChunksFilters", + "properties": { + "user_file_id": { + "title": "User File Id", + "type": "integer" + }, + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGeneratorsNullable" + } + }, + "type": "object", + "required": [ + "user_file_id" + ] + }, + "EmbeddingsAndChunksOrderByColumns": { + "title": "EmbeddingsAndChunksOrderByColumns", + "type": "string", + "enum": [ + "created_at", + "updated_at", + "chunk_index" + ] + }, + "EmbeddingsAndChunksQueryInput": { + "title": "EmbeddingsAndChunksQueryInput", + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingsAndChunksOrderByColumns" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "$ref": "#/components/schemas/EmbeddingsAndChunksFilters" + }, + "include_vectors": { + "title": "Include Vectors", + "type": "boolean", + "default": false + } + }, + "type": "object", + "required": [ + "filters" + ] + }, + "EmbeddingsAndChunksResponse": { + "title": "EmbeddingsAndChunksResponse", + "properties": { + "results": { + "title": "Results", + "items": { + "$ref": "#/components/schemas/EmbeddingAndChunk" + }, + "type": "array" + }, + "count": { + "title": "Count", + "type": "integer" + } + }, + "type": "object", + "required": [ + "results", + "count" + ] + }, + "ExternalFileSyncStatuses": { + "title": "ExternalFileSyncStatuses", + "type": "string", + "enum": [ + "DELAYED", + "QUEUED_FOR_SYNC", + "SYNCING", + "READY", + "SYNC_ERROR", + "EVALUATING_RESYNC", + "RATE_LIMITED", + "SYNC_ABORTED", + "QUEUED_FOR_OCR" + ] + }, + "ExternalSourceItem": { + "title": "ExternalSourceItem", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "external_id": { + "title": "External Id", + "type": "string" + }, + "source": { + "$ref": "#/components/schemas/DataSourceType" + }, + "name": { + "title": "Name", + "type": "string" + }, + "synced_at": { + "title": "Synced At", + "type": "string", + "format": "date-time" + }, + "is_selectable": { + "title": "Is Selectable", + "type": "boolean", + "nullable": true + }, + "is_expandable": { + "title": "Is Expandable", + "type": "boolean", + "nullable": true + }, + "organization_id": { + "title": "Organization Id", + "type": "integer" + }, + "organization_supplied_user_id": { + "title": "Organization Supplied User Id", + "type": "string" + }, + "organization_user_id": { + "title": "Organization User Id", + "type": "integer" + }, + "organization_user_data_source_id": { + "title": "Organization User Data Source Id", + "type": "integer" + }, + "organization_user_file_to_sync_id": { + "title": "Organization User File To Sync Id", + "type": "integer", + "nullable": true + }, + "parent_external_id": { + "title": "Parent External Id", + "type": "string", + "nullable": true + }, + "item_type": { + "title": "Item Type", + "type": "string", + "nullable": true + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + } + }, + "type": "object", + "required": [ + "id", + "external_id", + "source", + "name", + "synced_at", + "is_selectable", + "is_expandable", + "organization_id", + "organization_supplied_user_id", + "organization_user_id", + "organization_user_data_source_id", + "organization_user_file_to_sync_id", + "parent_external_id", + "item_type", + "created_at", + "updated_at" + ] + }, + "FetchURLsResponse": { + "title": "FetchURLsResponse", + "properties": { + "urls": { + "title": "Urls", + "items": { + "type": "string" + }, + "type": "array" + }, + "html_content": { + "title": "Html Content", + "type": "string" + } + }, + "type": "object", + "required": [ + "urls", + "html_content" + ] + }, + "FileContentTypes": { + "title": "FileContentTypes", + "type": "string", + "enum": [ + "TEXT", + "IMAGE" + ] + }, + "FileFormats": { + "title": "FileFormats", + "type": "string", + "enum": [ + "TXT", + "CSV", + "TSV", + "PDF", + "DOCX", + "PPTX", + "XLSX", + "MD", + "RTF", + "JSON", + "NOTION", + "GOOGLE_DRIVE", + "GOOGLE_DOCS", + "GOOGLE_SHEETS", + "GOOGLE_SLIDES", + "INTERCOM", + "DROPBOX", + "ONEDRIVE", + "SHAREPOINT", + "CONFLUENCE", + "RSS_FEED", + "GMAIL", + "OUTLOOK", + "BOX", + "ZENDESK", + "FRESHDESK", + "WEB_SCRAPE", + "JPG", + "JPG", + "PNG", + "MP3", + "MP4", + "MP2", + "AAC", + "WAV", + "FLAC", + "PCM", + "M4A", + "OGG", + "OPUS", + "WEBM" + ] + }, + "FileStatistics": { + "title": "FileStatistics", + "properties": { + "file_format": { + "$ref": "#/components/schemas/FileFormatsNullable" + }, + "file_size": { + "title": "File Size", + "type": "integer", + "nullable": true + }, + "num_characters": { + "title": "Num Characters", + "type": "integer", + "nullable": true + }, + "num_tokens": { + "title": "Num Tokens", + "type": "integer", + "nullable": true + }, + "num_embeddings": { + "title": "Num Embeddings", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "file_format", + "file_size", + "num_characters", + "num_tokens", + "num_embeddings" + ] + }, + "FreshDeskConnectRequest": { + "title": "FreshDeskConnectRequest", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "type": "object", + "nullable": true + }, + "domain": { + "title": "Domain", + "type": "string" + }, + "api_key": { + "title": "Api Key", + "type": "string" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGeneratorsNullable" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + } + }, + "type": "object", + "required": [ + "domain", + "api_key" + ] + }, + "GenericSuccessResponse": { + "title": "GenericSuccessResponse", + "properties": { + "success": { + "title": "Success", + "type": "boolean" + } + }, + "type": "object", + "required": [ + "success" + ] + }, + "GetEmbeddingDocumentsBody": { + "title": "GetEmbeddingDocumentsBody", + "properties": { + "tags": { + "title": "Tags", + "description": "A set of tags to limit the search to. Deprecated and may be removed in the future.", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object", + "nullable": true + }, + "query": { + "title": "Query", + "description": "Query for which to get related chunks and embeddings.", + "type": "string", + "minLength": 1 + }, + "query_vector": { + "title": "Query Vector", + "description": "Optional query vector for which to get related chunks and embeddings. It must have been\n generated by the same model used to generate the embeddings across which the search is being conducted. Cannot\n provide both `query` and `query_vector`.", + "items": { + "type": "number" + }, + "type": "array", + "nullable": true + }, + "k": { + "title": "K", + "description": "Number of related chunks to return.", + "type": "integer" + }, + "file_ids": { + "title": "File Ids", + "description": "Optional list of file IDs to limit the search to", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "parent_file_ids": { + "title": "Parent File Ids", + "description": "Optional list of parent file IDs to limit the search to. A parent file describes a file to which\n another file belongs (e.g. a folder)", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "tags_v2": { + "title": "Tags V2", + "description": "A set of tags to limit the search to. Use this instead of `tags`, which is deprecated.", + "type": "object", + "nullable": true, + "example": { + "OR": [ + { + "key": "subject", + "negate": false, + "value": "holy-bible" + }, + { + "key": "person-of-interest", + "negate": false, + "value": "jesus christ" + }, + { + "key": "genre", + "negate": true, + "value": "fiction" + }, + { + "AND": [ + { + "key": "subject", + "negate": true, + "value": "tao-te-ching" + }, + { + "key": "author", + "negate": false, + "value": "lao-tzu" + } + ] + } + ] + }, + "x-examples": [ + { + "OR": [ + { + "key": "subject", + "negate": false, + "value": "holy-bible" + }, + { + "key": "person-of-interest", + "negate": false, + "value": "jesus christ" + }, + { + "key": "genre", + "negate": true, + "value": "fiction" + }, + { + "AND": [ + { + "key": "subject", + "negate": true, + "value": "tao-te-ching" + }, + { + "key": "author", + "negate": false, + "value": "lao-tzu" + } + ] + } + ] + } + ] + }, + "include_tags": { + "title": "Include Tags", + "description": "Flag to control whether or not to include tags for each chunk in the response.", + "type": "boolean", + "nullable": true + }, + "include_vectors": { + "title": "Include Vectors", + "description": "Flag to control whether or not to include embedding vectors in the response.", + "type": "boolean", + "nullable": true + }, + "include_raw_file": { + "title": "Include Raw File", + "description": "Flag to control whether or not to include a signed URL to the raw file containing each chunk\n in the response.", + "type": "boolean", + "nullable": true + }, + "hybrid_search": { + "title": "Hybrid Search", + "description": "Flag to control whether or not to perform hybrid search.", + "type": "boolean", + "nullable": true + }, + "hybrid_search_tuning_parameters": { + "$ref": "#/components/schemas/HybridSearchTuningParamsNullable" + }, + "media_type": { + "$ref": "#/components/schemas/FileContentTypesNullable" + }, + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGeneratorsNullable" + } + }, + "type": "object", + "required": [ + "query", + "k" + ] + }, + "GmailSyncInput": { + "title": "GmailSyncInput", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "type": "object", + "nullable": true + }, + "filters": { + "title": "Filters", + "type": "object" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + } + }, + "type": "object", + "required": [ + "filters" + ] + }, + "HTTPValidationError": { + "title": "HTTPValidationError", + "properties": { + "detail": { + "title": "Detail", + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array" + } + }, + "type": "object" + }, + "HybridSearchTuningParams": { + "title": "HybridSearchTuningParams", + "properties": { + "weight_a": { + "title": "Weight A", + "type": "number" + }, + "weight_b": { + "title": "Weight B", + "type": "number" + } + }, + "type": "object", + "required": [ + "weight_a", + "weight_b" + ] + }, + "ListDataSourceItemsRequest": { + "title": "ListDataSourceItemsRequest", + "properties": { + "data_source_id": { + "title": "Data Source Id", + "type": "integer" + }, + "parent_id": { + "title": "Parent Id", + "type": "string", + "nullable": true + }, + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + } + }, + "type": "object", + "required": [ + "data_source_id" + ] + }, + "ListDataSourceItemsResponse": { + "title": "ListDataSourceItemsResponse", + "properties": { + "items": { + "title": "Items", + "items": { + "$ref": "#/components/schemas/ExternalSourceItem" + }, + "type": "array" + }, + "count": { + "title": "Count", + "type": "integer" + } + }, + "type": "object", + "required": [ + "items", + "count" + ] + }, + "ListRequest": { + "title": "ListRequest", + "properties": { + "data_source_id": { + "title": "Data Source Id", + "type": "integer" + }, + "parent_id": { + "title": "Parent Id", + "type": "string", + "nullable": true + } + }, + "type": "object", + "required": [ + "data_source_id" + ] + }, + "ListResponse": { + "title": "ListResponse", + "properties": { + "data": { + "title": "Data", + "items": { + "$ref": "#/components/schemas/DirectoryItem" + }, + "type": "array" + } + }, + "type": "object", + "required": [ + "data" + ] + }, + "ModifyUserConfigurationInput": { + "title": "ModifyUserConfigurationInput", + "properties": { + "configuration_key_name": { + "$ref": "#/components/schemas/ConfigurationKeys" + }, + "value": { + "title": "Value", + "type": "object" + } + }, + "type": "object", + "required": [ + "configuration_key_name", + "value" + ] + }, + "OAuthURLRequest": { + "title": "OAuthURLRequest", + "properties": { + "tags": { + "title": "Tags", + "nullable": true + }, + "scope": { + "title": "Scope", + "type": "string", + "nullable": true + }, + "service": { + "$ref": "#/components/schemas/DataSourceType" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGeneratorsNullable" + }, + "zendesk_subdomain": { + "title": "Zendesk Subdomain", + "type": "string", + "nullable": true + }, + "microsoft_tenant": { + "title": "Microsoft Tenant", + "type": "string", + "nullable": true + }, + "sharepoint_site_name": { + "title": "Sharepoint Site Name", + "type": "string", + "nullable": true + }, + "confluence_subdomain": { + "title": "Confluence Subdomain", + "type": "string", + "nullable": true + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + }, + "max_items_per_chunk": { + "title": "Max Items Per Chunk", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "service" + ] + }, + "OrderDir": { + "title": "OrderDir", + "type": "string", + "enum": [ + "desc", + "asc" + ] + }, + "OrganizationResponse": { + "title": "OrganizationResponse", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "nickname": { + "title": "Nickname", + "type": "string", + "nullable": true + }, + "remove_branding": { + "title": "Remove Branding", + "type": "boolean" + }, + "custom_branding": { + "title": "Custom Branding", + "type": "object", + "nullable": true + }, + "custom_limits": { + "title": "Custom Limits", + "type": "object", + "nullable": true + }, + "aggregate_file_size": { + "title": "Aggregate File Size", + "type": "object" + }, + "aggregate_num_characters": { + "title": "Aggregate Num Characters", + "type": "object" + }, + "aggregate_num_tokens": { + "title": "Aggregate Num Tokens", + "type": "object" + }, + "aggregate_num_embeddings": { + "title": "Aggregate Num Embeddings", + "type": "object" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + } + }, + "type": "object", + "required": [ + "id", + "name", + "nickname", + "remove_branding", + "custom_branding", + "custom_limits", + "aggregate_file_size", + "aggregate_num_characters", + "aggregate_num_tokens", + "aggregate_num_embeddings", + "created_at", + "updated_at" + ] + }, + "OrganizationUserDataSourceAPI": { + "title": "OrganizationUserDataSourceAPI", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "data_source_external_id": { + "title": "Data Source External Id", + "type": "string", + "nullable": true + }, + "data_source_type": { + "$ref": "#/components/schemas/DataSourceType" + }, + "sync_status": { + "$ref": "#/components/schemas/DataSourceSyncStatuses" + }, + "source_items_synced_at": { + "title": "Source Items Synced At", + "type": "string", + "format": "date-time", + "nullable": true + }, + "organization_user_id": { + "title": "Organization User Id", + "type": "integer" + }, + "organization_id": { + "title": "Organization Id", + "type": "integer" + }, + "organization_supplied_user_id": { + "title": "Organization Supplied User Id", + "type": "string" + }, + "revoked_access": { + "title": "Revoked Access", + "type": "boolean" + }, + "last_synced_at": { + "title": "Last Synced At", + "type": "string", + "format": "date-time" + }, + "last_sync_action": { + "$ref": "#/components/schemas/DataSourceLastSyncActions" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + } + }, + "type": "object", + "required": [ + "id", + "data_source_external_id", + "data_source_type", + "sync_status", + "source_items_synced_at", + "organization_user_id", + "organization_id", + "organization_supplied_user_id", + "revoked_access", + "last_synced_at", + "last_sync_action", + "created_at", + "updated_at" + ] + }, + "OrganizationUserDataSourceFilters": { + "title": "OrganizationUserDataSourceFilters", + "properties": { + "source": { + "$ref": "#/components/schemas/DataSourceTypeNullable" + }, + "ids": { + "title": "Ids", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "revoked_access": { + "title": "Revoked Access", + "type": "boolean", + "nullable": true + } + }, + "type": "object" + }, + "OrganizationUserDataSourceOrderByColumns": { + "title": "OrganizationUserDataSourceOrderByColumns", + "type": "string", + "enum": [ + "created_at", + "updated_at" + ] + }, + "OrganizationUserDataSourceQueryInput": { + "title": "OrganizationUserDataSourceQueryInput", + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserDataSourceOrderByColumns" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserDataSourceFilters" + } + ], + "default": { + } + } + }, + "type": "object" + }, + "OrganizationUserDataSourceResponse": { + "title": "OrganizationUserDataSourceResponse", + "properties": { + "results": { + "title": "Results", + "items": { + "$ref": "#/components/schemas/OrganizationUserDataSourceAPI" + }, + "type": "array" + }, + "count": { + "title": "Count", + "type": "integer" + } + }, + "type": "object", + "required": [ + "results", + "count" + ] + }, + "OrganizationUserFileTagCreate": { + "title": "OrganizationUserFileTagCreate", + "properties": { + "tags": { + "title": "Tags", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object" + }, + "organization_user_file_id": { + "title": "Organization User File Id", + "type": "integer" + } + }, + "type": "object", + "required": [ + "organization_user_file_id", + "tags" + ] + }, + "OrganizationUserFileTagsRemove": { + "title": "OrganizationUserFileTagsRemove", + "properties": { + "tags": { + "title": "Tags", + "items": { + "type": "string" + }, + "type": "array" + }, + "organization_user_file_id": { + "title": "Organization User File Id", + "type": "integer" + } + }, + "type": "object", + "required": [ + "organization_user_file_id", + "tags" + ] + }, + "OrganizationUserFilesToSyncFilters": { + "title": "OrganizationUserFilesToSyncFilters", + "properties": { + "tags": { + "title": "Tags", + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object", + "nullable": true + }, + "source": { + "title": "Source", + "anyOf": [ + { + "$ref": "#/components/schemas/DataSourceType" + }, + { + "items": { + "$ref": "#/components/schemas/DataSourceType" + }, + "type": "array" + } + ], + "nullable": true + }, + "name": { + "title": "Name", + "type": "string", + "nullable": true + }, + "tags_v2": { + "title": "Tags V2", + "type": "object", + "nullable": true + }, + "ids": { + "title": "Ids", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "external_file_ids": { + "title": "External File Ids", + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + }, + "sync_statuses": { + "title": "Sync Statuses", + "items": { + "$ref": "#/components/schemas/ExternalFileSyncStatuses" + }, + "type": "array", + "nullable": true + }, + "parent_file_ids": { + "title": "Parent File Ids", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "organization_user_data_source_id": { + "title": "Organization User Data Source Id", + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + }, + "embedding_generators": { + "title": "Embedding Generators", + "items": { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + "type": "array", + "nullable": true + } + }, + "type": "object" + }, + "OrganizationUserFilesToSyncOrderByTypes": { + "title": "OrganizationUserFilesToSyncOrderByTypes", + "type": "string", + "enum": [ + "created_at", + "updated_at", + "name", + "last_sync", + "file_size" + ] + }, + "OrganizationUserFilesToSyncQueryInput": { + "title": "OrganizationUserFilesToSyncQueryInput", + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncOrderByTypes" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncFilters" + } + ], + "default": { + } + }, + "include_raw_file": { + "title": "Include Raw File", + "type": "boolean", + "nullable": true + }, + "include_parsed_text_file": { + "title": "Include Parsed Text File", + "type": "boolean", + "nullable": true + }, + "include_additional_files": { + "title": "Include Additional Files", + "type": "boolean", + "nullable": true + } + }, + "type": "object" + }, + "OutlookSyncInput": { + "title": "OutlookSyncInput", + "properties": { + "tags": { + "title": "Tags", + "type": "object", + "nullable": true + }, + "folder": { + "title": "Folder", + "default": "Inbox", + "type": "string", + "nullable": true + }, + "filters": { + "title": "Filters", + "type": "object" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + } + }, + "type": "object", + "required": [ + "filters" + ] + }, + "Pagination": { + "title": "Pagination", + "properties": { + "limit": { + "title": "Limit", + "type": "integer", + "default": 10 + }, + "offset": { + "title": "Offset", + "type": "integer", + "default": 0 + } + }, + "type": "object" + }, + "PresignedURLResponse": { + "title": "PresignedURLResponse", + "properties": { + "presigned_url": { + "title": "Presigned Url", + "type": "string" + } + }, + "type": "object", + "required": [ + "presigned_url" + ] + }, + "RSSFeedInput": { + "title": "RSSFeedInput", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "type": "object", + "nullable": true + }, + "url": { + "title": "Url", + "type": "string" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + } + }, + "type": "object", + "required": [ + "url" + ] + }, + "RawTextInput": { + "title": "RawTextInput", + "properties": { + "contents": { + "title": "Contents", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string", + "nullable": true + }, + "chunk_size": { + "title": "Chunk Size", + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "type": "boolean", + "default": false + }, + "overwrite_file_id": { + "title": "Overwrite File Id", + "type": "integer", + "nullable": true + }, + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGeneratorsNullable" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + } + }, + "type": "object", + "required": [ + "contents" + ] + }, + "ResyncFileQueryInput": { + "title": "ResyncFileQueryInput", + "properties": { + "file_id": { + "title": "File Id", + "type": "integer" + }, + "chunk_size": { + "title": "Chunk Size", + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "file_id" + ] + }, + "RevokeAccessTokenInput": { + "title": "RevokeAccessTokenInput", + "properties": { + "data_source_id": { + "title": "Data Source Id", + "type": "integer" + } + }, + "type": "object", + "required": [ + "data_source_id" + ] + }, + "S3AuthRequest": { + "title": "S3AuthRequest", + "properties": { + "access_key": { + "title": "Access Key", + "type": "string" + }, + "access_key_secret": { + "title": "Access Key Secret", + "type": "string" + } + }, + "type": "object", + "required": [ + "access_key", + "access_key_secret" + ] + }, + "S3FileSyncInput": { + "title": "S3FileSyncInput", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "type": "object", + "nullable": true + }, + "ids": { + "title": "Ids", + "items": { + "$ref": "#/components/schemas/S3GetFileInput" + }, + "type": "array" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + }, + "max_items_per_chunk": { + "title": "Max Items Per Chunk", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "ids" + ] + }, + "S3GetFileInput": { + "title": "S3GetFileInput", + "properties": { + "id": { + "title": "Id", + "type": "string", + "nullable": true + }, + "bucket": { + "title": "Bucket", + "type": "string", + "nullable": true + } + }, + "type": "object" + }, + "SingleChunksAndEmbeddingsUploadInput": { + "title": "SingleChunksAndEmbeddingsUploadInput", + "properties": { + "file_id": { + "title": "File Id", + "type": "integer" + }, + "chunk_size": { + "title": "Chunk Size", + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "type": "integer", + "nullable": true + }, + "chunks_and_embeddings": { + "title": "Chunks And Embeddings", + "items": { + "$ref": "#/components/schemas/ChunksAndEmbeddings" + }, + "type": "array" + } + }, + "type": "object", + "required": [ + "file_id", + "chunks_and_embeddings" + ] + }, + "SitemapScrapeRequest": { + "title": "SitemapScrapeRequest", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object", + "nullable": true + }, + "url": { + "title": "Url", + "type": "string" + }, + "max_pages_to_scrape": { + "title": "Max Pages To Scrape", + "default": 100, + "type": "integer", + "nullable": true + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "enable_auto_sync": { + "title": "Enable Auto Sync", + "default": false, + "type": "boolean", + "nullable": true + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + }, + "html_tags_to_skip": { + "title": "Html Tags To Skip", + "default": [ + ], + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + }, + "css_classes_to_skip": { + "title": "Css Classes To Skip", + "default": [ + ], + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + }, + "css_selectors_to_skip": { + "title": "Css Selectors To Skip", + "default": [ + ], + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + } + }, + "type": "object", + "required": [ + "url" + ] + }, + "SyncDirectoryRequest": { + "title": "SyncDirectoryRequest", + "properties": { + "data_source_id": { + "title": "Data Source Id", + "type": "integer" + } + }, + "type": "object", + "required": [ + "data_source_id" + ] + }, + "SyncFilesRequest": { + "title": "SyncFilesRequest", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "type": "object", + "nullable": true + }, + "data_source_id": { + "title": "Data Source Id", + "type": "integer" + }, + "ids": { + "title": "Ids", + "items": { + "type": "string" + }, + "type": "array" + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGeneratorsNullable" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + }, + "max_items_per_chunk": { + "title": "Max Items Per Chunk", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "data_source_id", + "ids" + ] + }, + "TextEmbeddingGenerators": { + "title": "TextEmbeddingGenerators", + "type": "string", + "enum": [ + "OPENAI", + "AZURE_OPENAI", + "COHERE_MULTILINGUAL_V3", + "OPENAI_ADA_LARGE_256", + "OPENAI_ADA_LARGE_1024", + "OPENAI_ADA_LARGE_3072", + "OPENAI_ADA_SMALL_512", + "OPENAI_ADA_SMALL_1536" + ] + }, + "TokenResponse": { + "title": "TokenResponse", + "properties": { + "access_token": { + "title": "Access Token", + "type": "string" + }, + "refresh_token": { + "title": "Refresh Token", + "type": "string" + } + }, + "type": "object", + "required": [ + "access_token", + "refresh_token" + ] + }, + "UploadFileFromUrlInput": { + "title": "UploadFileFromUrlInput", + "properties": { + "url": { + "title": "Url", + "type": "string" + }, + "file_name": { + "title": "File Name", + "type": "string", + "nullable": true + }, + "chunk_size": { + "title": "Chunk Size", + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "type": "boolean", + "default": false + }, + "set_page_as_boundary": { + "title": "Set Page As Boundary", + "type": "boolean", + "default": false + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "type": "boolean", + "default": false + }, + "use_textract": { + "title": "Use Textract", + "type": "boolean", + "default": false + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "type": "boolean", + "default": false + }, + "max_items_per_chunk": { + "title": "Max Items Per Chunk", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "url" + ] + }, + "UserFile": { + "title": "UserFile", + "properties": { + "tags": { + "title": "Tags", + "type": "object", + "nullable": true + }, + "id": { + "title": "Id", + "type": "integer" + }, + "source": { + "$ref": "#/components/schemas/DataSourceType" + }, + "organization_id": { + "title": "Organization Id", + "type": "integer" + }, + "organization_supplied_user_id": { + "title": "Organization Supplied User Id", + "type": "string" + }, + "organization_user_data_source_id": { + "title": "Organization User Data Source Id", + "type": "integer", + "nullable": true + }, + "external_file_id": { + "title": "External File Id", + "type": "string" + }, + "external_url": { + "title": "External Url", + "type": "string", + "nullable": true + }, + "sync_status": { + "$ref": "#/components/schemas/ExternalFileSyncStatuses" + }, + "sync_error_message": { + "title": "Sync Error Message", + "type": "string", + "nullable": true + }, + "last_sync": { + "title": "Last Sync", + "type": "string", + "format": "date-time", + "nullable": true + }, + "file_statistics": { + "$ref": "#/components/schemas/FileStatisticsNullable" + }, + "file_metadata": { + "title": "File Metadata", + "type": "object", + "nullable": true + }, + "embedding_properties": { + "title": "Embedding Properties", + "additionalProperties": { + "$ref": "#/components/schemas/EmbeddingProperties" + }, + "type": "object", + "nullable": true + }, + "chunk_size": { + "title": "Chunk Size", + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "type": "integer", + "nullable": true + }, + "chunk_properties": { + "$ref": "#/components/schemas/ChunkPropertiesNullable" + }, + "name": { + "title": "Name", + "type": "string", + "nullable": true + }, + "parent_id": { + "title": "Parent Id", + "type": "integer", + "nullable": true + }, + "enable_auto_sync": { + "title": "Enable Auto Sync", + "type": "boolean", + "nullable": true + }, + "presigned_url": { + "title": "Presigned Url", + "type": "string", + "nullable": true + }, + "parsed_text_url": { + "title": "Parsed Text Url", + "type": "string", + "nullable": true + }, + "additional_presigned_urls": { + "title": "Additional Presigned Urls", + "type": "object", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "type": "boolean" + }, + "source_created_at": { + "title": "Source Created At", + "type": "string", + "format": "date-time", + "nullable": true + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "type": "boolean", + "nullable": true + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + } + }, + "type": "object", + "required": [ + "id", + "source", + "organization_id", + "organization_supplied_user_id", + "organization_user_data_source_id", + "external_file_id", + "external_url", + "sync_status", + "sync_error_message", + "last_sync", + "tags", + "file_statistics", + "file_metadata", + "embedding_properties", + "chunk_size", + "chunk_overlap", + "chunk_properties", + "name", + "parent_id", + "enable_auto_sync", + "presigned_url", + "parsed_text_url", + "additional_presigned_urls", + "skip_embedding_generation", + "source_created_at", + "generate_sparse_vectors", + "created_at", + "updated_at" + ] + }, + "UserFilesV2": { + "title": "UserFilesV2", + "properties": { + "results": { + "title": "Results", + "items": { + "$ref": "#/components/schemas/UserFile" + }, + "type": "array" + }, + "count": { + "title": "Count", + "type": "integer" + } + }, + "type": "object", + "required": [ + "results", + "count" + ] + }, + "UserRequestContent": { + "title": "UserRequestContent", + "properties": { + "customer_id": { + "title": "Customer Id", + "type": "string" + } + }, + "type": "object", + "required": [ + "customer_id" + ] + }, + "UserResponse": { + "title": "UserResponse", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "organization_id": { + "title": "Organization Id", + "type": "integer" + }, + "organization_supplied_user_id": { + "title": "Organization Supplied User Id", + "type": "string" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + }, + "deleted_at": { + "title": "Deleted At", + "type": "string", + "format": "date-time", + "nullable": true + }, + "num_files_synced": { + "title": "Num Files Synced", + "type": "integer" + }, + "num_characters_synced": { + "title": "Num Characters Synced", + "type": "integer" + }, + "num_tokens_synced": { + "title": "Num Tokens Synced", + "type": "integer" + }, + "unique_file_tags": { + "title": "Unique File Tags", + "items": { + "type": "object" + }, + "type": "array" + }, + "enabled_features": { + "title": "Enabled Features", + "type": "object", + "nullable": true + } + }, + "type": "object", + "required": [ + "id", + "organization_id", + "organization_supplied_user_id", + "created_at", + "updated_at", + "deleted_at", + "num_files_synced", + "num_characters_synced", + "num_tokens_synced", + "unique_file_tags", + "enabled_features" + ] + }, + "ValidationError": { + "title": "ValidationError", + "properties": { + "loc": { + "title": "Location", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array" + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ] + }, + "Webhook": { + "title": "Webhook", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "organization_id": { + "title": "Organization Id", + "type": "integer" + }, + "url": { + "title": "Url", + "type": "string" + }, + "signing_key": { + "title": "Signing Key", + "type": "string" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + } + }, + "type": "object", + "required": [ + "id", + "organization_id", + "url", + "signing_key", + "created_at", + "updated_at" + ] + }, + "WebhookFilters": { + "title": "WebhookFilters", + "properties": { + "ids": { + "title": "Ids", + "default": [ + ], + "items": { + "type": "integer" + }, + "type": "array", + "nullable": true + } + }, + "type": "object" + }, + "WebhookNoKey": { + "title": "WebhookNoKey", + "properties": { + "id": { + "title": "Id", + "type": "integer" + }, + "organization_id": { + "title": "Organization Id", + "type": "integer" + }, + "url": { + "title": "Url", + "type": "string" + }, + "created_at": { + "title": "Created At", + "type": "string", + "format": "date-time" + }, + "updated_at": { + "title": "Updated At", + "type": "string", + "format": "date-time" + } + }, + "type": "object", + "required": [ + "id", + "organization_id", + "url", + "created_at", + "updated_at" + ] + }, + "WebhookOrderByColumns": { + "title": "WebhookOrderByColumns", + "type": "string", + "enum": [ + "created_at", + "updated_at" + ] + }, + "WebhookQueryInput": { + "title": "WebhookQueryInput", + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookOrderByColumns" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookFilters" + } + ], + "default": { + "ids": [ + ] + } + } + }, + "type": "object" + }, + "WebhookQueryResponse": { + "title": "WebhookQueryResponse", + "properties": { + "results": { + "title": "Results", + "items": { + "$ref": "#/components/schemas/WebhookNoKey" + }, + "type": "array" + }, + "count": { + "title": "Count", + "type": "integer" + } + }, + "type": "object", + "required": [ + "results", + "count" + ] + }, + "WebscrapeRequest": { + "title": "WebscrapeRequest", + "properties": { + "tags": { + "title": "Tags", + "default": { + }, + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object", + "nullable": true + }, + "url": { + "title": "Url", + "type": "string" + }, + "recursion_depth": { + "title": "Recursion Depth", + "default": 3, + "type": "integer", + "nullable": true + }, + "max_pages_to_scrape": { + "title": "Max Pages To Scrape", + "default": 100, + "type": "integer", + "nullable": true + }, + "chunk_size": { + "title": "Chunk Size", + "default": 1500, + "type": "integer", + "nullable": true + }, + "chunk_overlap": { + "title": "Chunk Overlap", + "default": 20, + "type": "integer", + "nullable": true + }, + "skip_embedding_generation": { + "title": "Skip Embedding Generation", + "default": false, + "type": "boolean", + "nullable": true + }, + "enable_auto_sync": { + "title": "Enable Auto Sync", + "default": false, + "type": "boolean", + "nullable": true + }, + "generate_sparse_vectors": { + "title": "Generate Sparse Vectors", + "default": false, + "type": "boolean", + "nullable": true + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "default": false, + "type": "boolean", + "nullable": true + }, + "html_tags_to_skip": { + "title": "Html Tags To Skip", + "default": [ + ], + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + }, + "css_classes_to_skip": { + "title": "Css Classes To Skip", + "default": [ + ], + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + }, + "css_selectors_to_skip": { + "title": "Css Selectors To Skip", + "default": [ + ], + "items": { + "type": "string" + }, + "type": "array", + "nullable": true + } + }, + "type": "object", + "required": [ + "url" + ] + }, + "WhiteLabelingResponse": { + "title": "WhiteLabelingResponse", + "properties": { + "remove_branding": { + "title": "Remove Branding", + "type": "boolean" + }, + "integrations": { + "title": "Integrations", + "type": "object" + } + }, + "type": "object", + "required": [ + "remove_branding", + "integrations" + ] + }, + "YoutubeTranscriptResponse": { + "title": "YoutubeTranscriptResponse", + "properties": { + "status": { + "title": "Status", + "type": "string" + }, + "error": { + "title": "Error", + "type": "string", + "nullable": true + }, + "data": { + "title": "Data", + "type": "string", + "nullable": true + }, + "raw_transcript": { + "title": "Raw Transcript", + "items": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "type": "object" + }, + "type": "array", + "nullable": true + } + }, + "type": "object", + "required": [ + "status", + "error", + "data", + "raw_transcript" + ] + }, + "DataSourceTypeNullable": { + "title": "DataSourceType", + "type": "string", + "enum": [ + "GOOGLE_DRIVE", + "NOTION", + "NOTION_DATABASE", + "INTERCOM", + "DROPBOX", + "ONEDRIVE", + "SHAREPOINT", + "CONFLUENCE", + "BOX", + "ZENDESK", + "ZOTERO", + "S3", + "GMAIL", + "OUTLOOK", + "TEXT", + "CSV", + "TSV", + "PDF", + "DOCX", + "PPTX", + "XLSX", + "MD", + "RTF", + "JSON", + "RAW_TEXT", + "WEB_SCRAPE", + "RSS_FEED", + "FRESHDESK", + "JPG", + "PNG", + "MP3", + "MP4", + "MP2", + "AAC", + "WAV", + "FLAC", + "PCM", + "M4A", + "OGG", + "OPUS", + "WEBM" + ], + "nullable": true + }, + "EmbeddingGeneratorsNullable": { + "title": "EmbeddingGenerators", + "type": "string", + "enum": [ + "OPENAI", + "AZURE_OPENAI", + "COHERE_MULTILINGUAL_V3", + "VERTEX_MULTIMODAL", + "OPENAI_ADA_LARGE_256", + "OPENAI_ADA_LARGE_1024", + "OPENAI_ADA_LARGE_3072", + "OPENAI_ADA_SMALL_512", + "OPENAI_ADA_SMALL_1536" + ], + "default": "OPENAI", + "nullable": true + }, + "FileFormatsNullable": { + "title": "FileFormats", + "type": "string", + "enum": [ + "TXT", + "CSV", + "TSV", + "PDF", + "DOCX", + "PPTX", + "XLSX", + "MD", + "RTF", + "JSON", + "NOTION", + "GOOGLE_DRIVE", + "GOOGLE_DOCS", + "GOOGLE_SHEETS", + "GOOGLE_SLIDES", + "INTERCOM", + "DROPBOX", + "ONEDRIVE", + "SHAREPOINT", + "CONFLUENCE", + "RSS_FEED", + "GMAIL", + "OUTLOOK", + "BOX", + "ZENDESK", + "FRESHDESK", + "WEB_SCRAPE", + "JPG", + "JPG", + "PNG", + "MP3", + "MP4", + "MP2", + "AAC", + "WAV", + "FLAC", + "PCM", + "M4A", + "OGG", + "OPUS", + "WEBM" + ], + "nullable": true + }, + "HybridSearchTuningParamsNullable": { + "title": "HybridSearchTuningParams", + "description": "Hybrid search tuning parameters. See the endpoint description for more details.", + "properties": { + "weight_a": { + "title": "Weight A", + "type": "number" + }, + "weight_b": { + "title": "Weight B", + "type": "number" + } + }, + "type": "object", + "required": [ + "weight_a", + "weight_b" + ], + "nullable": true, + "example": { + "weight_a": 0.5, + "weight_b": 0.5 + }, + "x-examples": [ + { + "weight_a": 0.5, + "weight_b": 0.5 + }, + { + "weight_a": 0.3, + "weight_b": 0.7 + } + ] + }, + "FileContentTypesNullable": { + "title": "FileContentTypes", + "description": "Used to filter the kind of files (e.g. `TEXT` or `IMAGE`) over which to perform the search. Also\n plays a role in determining what embedding model is used to embed the query. If `IMAGE` is chosen as the media type,\n then the embedding model used will be an embedding model that is not text-only, *regardless* of what value is passed\n for `embedding_model`.", + "type": "string", + "enum": [ + "TEXT", + "IMAGE" + ], + "default": "TEXT", + "nullable": true + }, + "FileStatisticsNullable": { + "title": "FileStatistics", + "properties": { + "file_format": { + "$ref": "#/components/schemas/FileFormatsNullable" + }, + "file_size": { + "title": "File Size", + "type": "integer", + "nullable": true + }, + "num_characters": { + "title": "Num Characters", + "type": "integer", + "nullable": true + }, + "num_tokens": { + "title": "Num Tokens", + "type": "integer", + "nullable": true + }, + "num_embeddings": { + "title": "Num Embeddings", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "file_format", + "file_size", + "num_characters", + "num_tokens", + "num_embeddings" + ], + "nullable": true + }, + "ChunkPropertiesNullable": { + "title": "ChunkProperties", + "properties": { + "set_page_as_boundary": { + "title": "Set Page As Boundary", + "type": "boolean", + "default": false + }, + "prepend_filename_to_chunks": { + "title": "Prepend Filename To Chunks", + "type": "boolean", + "default": false + }, + "max_items_per_chunk": { + "title": "Max Items Per Chunk", + "type": "integer", + "nullable": true + } + }, + "type": "object", + "required": [ + "set_page_as_boundary", + "prepend_filename_to_chunks", + "max_items_per_chunk" + ], + "nullable": true + }, + "UtilitiesScrapeWebRequest": { + "title": "Scraping Requests", + "type": "array", + "items": { + "$ref": "#/components/schemas/WebscrapeRequest" + } + }, + "IntegrationsGetOauthUrlResponse": { + "type": "object", + "properties": { + }, + "example": { + } + }, + "FilesQueryUserFilesDeprecatedResponse": { + "title": "Response User Files User Files Post", + "type": "array", + "items": { + "$ref": "#/components/schemas/UserFile" + } + }, + "UtilitiesScrapeWebResponse": { + "type": "object", + "properties": { + }, + "example": { + } + }, + "UtilitiesProcessSitemapResponse": { + "type": "object", + "properties": { + }, + "example": { + } + }, + "UtilitiesScrapeSitemapResponse": { + "type": "object", + "properties": { + }, + "example": { + } + }, + "HealthCheckResponse": { + "type": "object", + "properties": { + }, + "example": { + } + } + }, + "securitySchemes": { + "apiKey": { + "type": "apiKey", + "name": "authorization", + "in": "header", + "x-konfig-prefix": "Bearer " + }, + "accessToken": { + "type": "apiKey", + "name": "authorization", + "in": "header", + "x-konfig-prefix": "Token " + }, + "customerId": { + "type": "apiKey", + "name": "customer-id", + "in": "header" + } + } + } +} \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/openapi.json b/generator/konfig-integration-tests/sdks/typescript-carbon/openapi.json new file mode 100644 index 000000000..5ad482c89 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/openapi.json @@ -0,0 +1,6952 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Carbon", + "version": "1.0.0", + "x-logo": { + "url": "https://i.ibb.co/qBqT3Ft/Group-14-1.png" + } + }, + "servers": [ + { + "url": "https://api.carbon.ai/" + } + ], + "paths": { + "/integrations/oauth_url": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Get Oauth Url", + "operationId": "get_oauth_url_integrations_oauth_url_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OAuthURLRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/items/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Sync Data Source Items", + "operationId": "sync_data_source_items_integrations_items_sync_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncDirectoryRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceAPI" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/items/list": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "List Data Source Items", + "operationId": "list_data_source_items_integrations_items_list_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListDataSourceItemsRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListDataSourceItemsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/files/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Sync Files", + "operationId": "sync_files_integrations_files_sync_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncFilesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/confluence/list": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Confluence List", + "description": "To begin listing a user's Confluence pages, at least a `data_source_id` of a connected\nConfluence account must be specified. This base request returns a list of root pages for\nevery space the user has access to in a Confluence instance. To traverse further down\nthe user's page directory, additional requests to this endpoint can be made with the same\n`data_source_id` and with `parent_id` set to the id of page from a previous request. For\nconvenience, the `has_children` property in each directory item in the response list will\nflag which pages will return non-empty lists of pages when set as the `parent_id`.", + "operationId": "confluence_list_integrations_confluence_list_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/confluence/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Confluence Sync", + "description": "After listing pages in a user's Confluence account, the set of selected page `ids` and the\nconnected account's `data_source_id` can be passed into this endpoint to sync them into\nCarbon. Additional parameters listed below can be used to associate data to the selected\npages or alter the behavior of the sync.", + "operationId": "confluence_sync_integrations_confluence_sync_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyncFilesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/s3": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "S3 Auth", + "description": "Create a new IAM user with permissions to:\n
    \n
  1. List all buckets.
  2. \n
  3. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry \nthe same permissions.
  4. \n
\nOnce created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand.", + "operationId": "s3_auth_integrations_s3_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/S3AuthRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceAPI" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/s3/files": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "S3 Files", + "description": "After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name \nand object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate \ndata with the selected items or modify the sync behavior", + "operationId": "s3_files_integrations_s3_files_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/S3FileSyncInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/gmail/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Gmail Sync", + "description": "Once you have successfully connected your gmail account, you can choose which emails to sync with us\nusing the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations.\nFor now, we support a limited set of keys listed below.\n\nlabel: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. \nafter or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date.\nYou can also use them in combination to get emails from a certain period. \nis: Can have the following values - starred, important, snoozed, and unread \n\nUsing keys or values outside of the specified values can lead to unexpected behaviour.\n\nAn example of a basic query with filters can be\n```json\n{\n \"filters\": {\n \"key\": \"label\",\n \"value\": \"Test\"\n }\n}\n```\nWhich will list all emails that have the label \"Test\".\n\nYou can use AND and OR operation in the following way:\n```json\n{\n \"filters\": {\n \"AND\": [\n {\n \"key\": \"after\",\n \"value\": \"2024/01/07\"\n },\n {\n \"OR\": [\n {\n \"key\": \"label\",\n \"value\": \"Personal\"\n },\n {\n \"key\": \"is\",\n \"value\": \"starred\"\n }\n ]\n }\n ]\n }\n}\n```\nThis will return emails after 7th of Jan that are either starred or have the label \"Personal\". \nNote that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter\nin the above example.", + "operationId": "gmail_sync_integrations_gmail_sync_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GmailSyncInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/rss_feed": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Rss Feed", + "operationId": "rss_feed_integrations_rss_feed_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RSSFeedInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/outlook/sync": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Outlook Sync", + "description": "Once you have successfully connected your Outlook account, you can choose which emails to sync with us\nusing the filters and folder parameter. \"folder\" should be the folder you want to sync from Outlook. By default\nwe get messages from your inbox folder. \nFilters is a JSON object with key value pairs. It also supports AND and OR operations.\nFor now, we support a limited set of keys listed below.\n\ncategory: Custom categories that you created in Outlook. \nafter or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. \nis: Can have the following values: flagged \n\nAn example of a basic query with filters can be\n```json\n{\n \"filters\": {\n \"key\": \"category\",\n \"value\": \"Test\"\n }\n}\n```\nWhich will list all emails that have the category \"Test\". \n\nSpecifying a custom folder in the same query\n```json\n{\n \"folder\": \"Folder Name\",\n \"filters\": {\n \"key\": \"category\",\n \"value\": \"Test\"\n }\n}\n```\n\nYou can use AND and OR operation in the following way:\n```json\n{\n \"filters\": {\n \"AND\": [\n {\n \"key\": \"after\",\n \"value\": \"2024/01/07\"\n },\n {\n \"OR\": [\n {\n \"key\": \"category\",\n \"value\": \"Personal\"\n },\n {\n \"key\": \"category\",\n \"value\": \"Test\"\n },\n ]\n }\n ]\n }\n}\n```\nThis will return emails after 7th of Jan that have either Personal or Test as category. \nNote that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter\nin the above example.", + "operationId": "outlook_sync_integrations_outlook_sync_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OutlookSyncInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/integrations/freshdesk": { + "post": { + "tags": [ + "Integrations" + ], + "summary": "Freshdesk Connect", + "description": "Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. \nOnce you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will \ntrigger an automatic sync of the articles in your \"solutions\" tab. Additional parameters below can be used to associate \ndata with the synced articles or modify the sync behavior.", + "operationId": "freshdesk_connect_integrations_freshdesk_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FreshDeskConnectRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/auth/v1/access_token": { + "get": { + "tags": [ + "Auth" + ], + "summary": "Get Access Token", + "operationId": "get_access_token_auth_v1_access_token_get", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/auth/v1/white_labeling": { + "get": { + "tags": [ + "Auth" + ], + "summary": "Get White Labeling", + "description": "Returns whether or not the organization is white labeled and which integrations are white labeled\n\n:param current_user: the current user\n:param db: the database session\n:return: a WhiteLabelingResponse", + "operationId": "get_white_labeling_auth_v1_white_labeling_get", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WhiteLabelingResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/embeddings": { + "post": { + "tags": [ + "Embeddings" + ], + "summary": "Embeddings", + "description": "For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2`\nand `tags` are specified, `tags` is ignored. `tags_v2` enables\nbuilding complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example:\n```json\n{\n \"OR\": [\n {\n \"key\": \"subject\",\n \"value\": \"holy-bible\",\n \"negate\": false\n },\n {\n \"key\": \"person-of-interest\",\n \"value\": \"jesus christ\",\n \"negate\": false\n },\n {\n \"key\": \"genre\",\n \"value\": \"religion\",\n \"negate\": true\n }\n {\n \"AND\": [\n {\n \"key\": \"subject\",\n \"value\": \"tao-te-ching\",\n \"negate\": false\n },\n {\n \"key\": \"author\",\n \"value\": \"lao-tzu\",\n \"negate\": false\n }\n ]\n }\n ]\n}\n```\nIn this case, files will be filtered such that:\n1. \"subject\" = \"holy-bible\" OR\n2. \"person-of-interest\" = \"jesus christ\" OR\n3. \"genre\" != \"religion\" OR\n4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\"\n\nNote that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3.\nFor tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply:\n1. \"key\" isn't optional and must be a `string`\n2. \"value\" isn't optional and can be `any` or list[`any`]\n3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in\nthe resulting query. It is `false` by default.\n\n\nWhen querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if\nnot set), it is equal to \"TEXT\". This means that the query will be performed over files that have\nbeen parsed as text (for now, this covers all files except image files). If it is equal to \"IMAGE\",\nthe query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this\nfield as an additional filter on top of any filters set in `file_ids` and\n\n\nWhen `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank\nand select candidate embeddings during information retrieval. By default, these search methods are weighted\nequally during the ranking process. To adjust the weight (or \"importance\") of each search method, you can use\nthe `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are:\n- `weight_a`: weight to assign to semantic search\n- `weight_b`: weight to assign to keyword search\n\nYou must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality\nhas an error tolerance of 0.001 to account for possible floating point issues.\n\nIn order to use hybrid search for a customer across a set of documents, two flags need to be enabled:\n1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload\nbody for this request is below:\n```\n{\n \"configuration_key_name\": \"sparse_vectors\",\n \"value\": {\n \"enabled\": true\n }\n}\n```\n2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the\n`/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true`\n\n\nCarbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's\nmultimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0.\nThe model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query \nparameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing\nembedding queries, embeddings from files that used the specified model will be considered in the query.\nFor example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with\n`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is\nspecified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that\nthe set of all files you want considered for a query have embeddings generated via the same model. For now, **do not**\nset `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file.", + "operationId": "embeddings_embeddings_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetEmbeddingDocumentsBody" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DocumentResponseList" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/text_chunks": { + "post": { + "tags": [ + "Embeddings" + ], + "summary": "Retrieve Embeddings And Content", + "operationId": "retrieve_embeddings_and_content_text_chunks_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EmbeddingsAndChunksQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EmbeddingsAndChunksResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/upload_chunks_and_embeddings": { + "post": { + "tags": [ + "Embeddings" + ], + "summary": "Upload Chunks And Embeddings", + "operationId": "upload_chunks_and_embeddings_upload_chunks_and_embeddings_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChunksAndEmbeddingsUploadInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/organization": { + "get": { + "tags": [ + "Organizations" + ], + "summary": "Get Organization", + "operationId": "get_organization_organization_get", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user": { + "post": { + "tags": [ + "Users" + ], + "summary": "User Endpoint", + "operationId": "user_endpoint_user_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserRequestContent" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/modify_user_configuration": { + "post": { + "tags": [ + "Users" + ], + "summary": "Toggle User Features", + "operationId": "toggle_user_features_modify_user_configuration_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModifyUserConfigurationInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/uploadfile": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create Upload File", + "description": "This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request.\nNote that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set,\nPDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates\nof the bounding box around the chunk (this can be used for things like text highlighting). Following is a description\nof all possible query parameters:\n- `chunk_size`: the chunk size (in tokens) applied when splitting the document\n- `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document\n- `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings\n- `set_page_as_boundary`: described above\n- `embedding_model`: the model used to generate embeddings for the document chunks\n- `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently)\n- `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search.\n- `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text\n\n\nCarbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's\nmultimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0.\nThe model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query \nparameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing\nembedding queries, embeddings from files that used the specified model will be considered in the query.\nFor example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with\n`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is\nspecified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that\nthe set of all files you want considered for a query have embeddings generated via the same model. For now, **do not**\nset `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file.", + "operationId": "create_upload_file_uploadfile_post", + "parameters": [ + { + "name": "chunk_size", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Chunk size in tiktoken tokens to be used when processing file.", + "title": "Chunk Size" + }, + "description": "Chunk size in tiktoken tokens to be used when processing file." + }, + { + "name": "chunk_overlap", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Chunk overlap in tiktoken tokens to be used when processing file.", + "title": "Chunk Overlap" + }, + "description": "Chunk overlap in tiktoken tokens to be used when processing file." + }, + { + "name": "skip_embedding_generation", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Flag to control whether or not embeddings should be generated and stored\n when processing file.", + "default": false, + "title": "Skip Embedding Generation" + }, + "description": "Flag to control whether or not embeddings should be generated and stored\n when processing file." + }, + { + "name": "set_page_as_boundary", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Flag to control whether or not to set the a page's worth of content as the maximum\n amount of content that can appear in a chunk. Only valid for PDFs. See description route description for\n more information.", + "default": false, + "title": "Set Page As Boundary" + }, + "description": "Flag to control whether or not to set the a page's worth of content as the maximum\n amount of content that can appear in a chunk. Only valid for PDFs. See description route description for\n more information." + }, + { + "name": "embedding_model", + "in": "query", + "required": false, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/TextEmbeddingGenerators" + } + ], + "description": "Embedding model that will be used to embed file chunks.", + "default": "OPENAI", + "title": "Embedding Model" + }, + "description": "Embedding model that will be used to embed file chunks." + }, + { + "name": "use_ocr", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with\n tables, images, and/or scanned text.", + "default": false, + "title": "Use Ocr" + }, + "description": "Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with\n tables, images, and/or scanned text." + }, + { + "name": "generate_sparse_vectors", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Whether or not to generate sparse vectors for the file. This is *required* for the file to be a\n candidate for hybrid search.", + "default": false, + "title": "Generate Sparse Vectors" + }, + "description": "Whether or not to generate sparse vectors for the file. This is *required* for the file to be a\n candidate for hybrid search." + }, + { + "name": "prepend_filename_to_chunks", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Whether or not to prepend the file's name to chunks.", + "default": false, + "title": "Prepend Filename To Chunks" + }, + "description": "Whether or not to prepend the file's name to chunks." + }, + { + "name": "max_items_per_chunk", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of objects per chunk. For json files only.", + "title": "Max Items Per Chunk" + }, + "description": "Number of objects per chunk. For json files only." + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_create_upload_file_uploadfile_post" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/upload_file_from_url": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create Upload File From Url", + "operationId": "create_upload_file_from_url_upload_file_from_url_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UploadFileFromUrlInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/upload_text": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create Raw Text", + "description": "Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's\nmultimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0.\nThe model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query \nparameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing\nembedding queries, embeddings from files that used the specified model will be considered in the query.\nFor example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with\n`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is\nspecified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that\nthe set of all files you want considered for a query have embeddings generated via the same model. For now, **do not**\nset `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file.", + "operationId": "create_raw_text_upload_text_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RawTextInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/deletefile/{file_id}": { + "delete": { + "tags": [ + "Files" + ], + "summary": "Delete File Endpoint", + "operationId": "delete_file_endpoint_deletefile__file_id__delete", + "parameters": [ + { + "name": "file_id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "title": "File Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/delete_files": { + "post": { + "tags": [ + "Files" + ], + "summary": "Delete Files Endpoint", + "operationId": "delete_files_endpoint_delete_files_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteFilesQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user_files_v2": { + "post": { + "tags": [ + "Files" + ], + "summary": "User Files V2", + "description": "For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2`\nand `tags` are specified, `tags` is ignored. `tags_v2` enables\nbuilding complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example:\n```json\n{\n \"OR\": [\n {\n \"key\": \"subject\",\n \"value\": \"holy-bible\",\n \"negate\": false\n },\n {\n \"key\": \"person-of-interest\",\n \"value\": \"jesus christ\",\n \"negate\": false\n },\n {\n \"key\": \"genre\",\n \"value\": \"religion\",\n \"negate\": true\n }\n {\n \"AND\": [\n {\n \"key\": \"subject\",\n \"value\": \"tao-te-ching\",\n \"negate\": false\n },\n {\n \"key\": \"author\",\n \"value\": \"lao-tzu\",\n \"negate\": false\n }\n ]\n }\n ]\n}\n```\nIn this case, files will be filtered such that:\n1. \"subject\" = \"holy-bible\" OR\n2. \"person-of-interest\" = \"jesus christ\" OR\n3. \"genre\" != \"religion\" OR\n4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\"\n\nNote that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3.\nFor tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply:\n1. \"key\" isn't optional and must be a `string`\n2. \"value\" isn't optional and can be `any` or list[`any`]\n3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in\nthe resulting query. It is `false` by default.", + "operationId": "user_files_v2_user_files_v2_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFilesV2" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/create_user_file_tags": { + "post": { + "tags": [ + "Files" + ], + "summary": "Create File Tags", + "description": "A tag is a key-value pair that can be added to a file. This pair can then be used\nfor searches (e.g. embedding searches) in order to narrow down the scope of the search.\nA file can have any number of tags. The following are reserved keys that cannot be used:\n- db_embedding_id\n- organization_id\n- user_id\n- organization_user_file_id\n\nCarbon currently supports two data types for tag values - `string` and `list`.\nKeys can only be `string`. If values other than `string` and `list` are used,\nthey're automatically converted to strings (e.g. 4 will become \"4\").", + "operationId": "create_file_tags_create_user_file_tags_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFileTagCreate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/delete_user_file_tags": { + "post": { + "tags": [ + "Files" + ], + "summary": "Delete File Tags", + "operationId": "delete_file_tags_delete_user_file_tags_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFileTagsRemove" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/resync_file": { + "post": { + "tags": [ + "Files" + ], + "summary": "Resync File", + "operationId": "resync_file_resync_file_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResyncFileQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserFile" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/raw_file/{file_id}": { + "get": { + "tags": [ + "Files" + ], + "summary": "Raw File", + "description": "This route is deprecated. Use `/user_files_v2` instead.", + "operationId": "raw_file_raw_file__file_id__get", + "deprecated": true, + "parameters": [ + { + "name": "file_id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "title": "File Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresignedURLResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/parsed_file/{file_id}": { + "get": { + "tags": [ + "Files" + ], + "summary": "Parsed File", + "description": "This route is deprecated. Use `/user_files_v2` instead.", + "operationId": "parsed_file_parsed_file__file_id__get", + "deprecated": true, + "parameters": [ + { + "name": "file_id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "title": "File Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresignedURLResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user_files": { + "post": { + "tags": [ + "Files" + ], + "summary": "User Files", + "description": "This route is deprecated. Use `/user_files_v2` instead.", + "operationId": "user_files_user_files_post", + "deprecated": true, + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserFile" + }, + "title": "Response User Files User Files Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/webhooks": { + "post": { + "tags": [ + "Webhooks" + ], + "summary": "Webhook Urls", + "operationId": "webhook_urls_webhooks_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebhookQueryResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/add_webhook": { + "post": { + "tags": [ + "Webhooks" + ], + "summary": "Add Webhook Url", + "operationId": "add_webhook_url_add_webhook_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddWebhookProps" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Webhook" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/delete_webhook/{webhook_id}": { + "delete": { + "tags": [ + "Webhooks" + ], + "summary": "Delete Webhook Url", + "operationId": "delete_webhook_url_delete_webhook__webhook_id__delete", + "parameters": [ + { + "name": "webhook_id", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "title": "Webhook Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/user_data_sources": { + "post": { + "tags": [ + "Data Sources" + ], + "summary": "User Data Sources", + "operationId": "user_data_sources_user_data_sources_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceQueryInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrganizationUserDataSourceResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/revoke_access_token": { + "post": { + "tags": [ + "Data Sources" + ], + "summary": "Revoke Access Token", + "operationId": "revoke_access_token_revoke_access_token_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RevokeAccessTokenInput" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenericSuccessResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/web_scrape": { + "post": { + "tags": [ + "Utilities" + ], + "summary": "Web Scrape", + "description": "Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website.\n\n", + "operationId": "web_scrape_web_scrape_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WebscrapeRequest" + }, + "title": "Scraping Requests" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/process_sitemap": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Sitemap", + "description": "Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint.\n\n", + "operationId": "sitemap_process_sitemap_get", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Url" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/scrape_sitemap": { + "post": { + "tags": [ + "Utilities" + ], + "summary": "Scrape Sitemap", + "description": "Extracts all URLs from a sitemap and performs a web scrape on each of them.\n\nArgs:\n sitemap_url (str): URL of the sitemap\n\nReturns:\n dict: A response object with the status of the scraping job message.-->", + "operationId": "scrape_sitemap_scrape_sitemap_post", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SitemapScrapeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/fetch_urls": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Fetch Urls", + "description": "Extracts all URLs from a webpage. \n\nArgs:\n url (str): URL of the webpage\n\nReturns:\n FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content.", + "operationId": "fetch_urls_fetch_urls_get", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Url" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchURLsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/search_urls": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Search Urls", + "description": "Perform a web search and obtain a list of relevant URLs.\n\nAs an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following:\n\n - https://tomrenz.substack.com/p/mrna-and-why-it-matters\n\n - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/\n\n - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/\n \n - https://joomi.substack.com/p/were-still-being-misled-about-how\n\nSubsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages.\n\nArgs:\n query (str): Query to search for\n\nReturns:\n FetchURLsResponse: A response object with a list of URLs for a given search query.", + "operationId": "search_urls_search_urls_get", + "parameters": [ + { + "name": "query", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Query" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FetchURLsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/fetch_youtube_transcript": { + "get": { + "tags": [ + "Utilities" + ], + "summary": "Fetch Youtube Transcripts", + "description": "Fetches english transcripts from YouTube videos.\n\nArgs:\n id (str): The ID of the YouTube video. \n raw (bool): Whether to return the raw transcript or not. Defaults to False.\n\nReturns:\n dict: A dictionary with the transcript of the YouTube video.", + "operationId": "fetch_youtube_transcripts_fetch_youtube_transcript_get", + "parameters": [ + { + "name": "id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Id" + } + }, + { + "name": "raw", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Raw" + } + }, + { + "name": "authorization", + "in": "header", + "required": true, + "schema": { + "type": "string", + "title": "Authorization" + } + }, + { + "name": "customer-id", + "in": "header", + "required": false, + "schema": { + "type": "string", + "title": "Customer-Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/YoutubeTranscriptResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health": { + "get": { + "tags": [ + "Health" + ], + "summary": "Health", + "operationId": "health_health_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AddWebhookProps": { + "properties": { + "url": { + "type": "string", + "title": "Url" + } + }, + "type": "object", + "required": [ + "url" + ], + "title": "AddWebhookProps" + }, + "Body_create_upload_file_uploadfile_post": { + "properties": { + "file": { + "type": "string", + "format": "binary", + "title": "File" + } + }, + "type": "object", + "required": [ + "file" + ], + "title": "Body_create_upload_file_uploadfile_post" + }, + "ChunkProperties": { + "properties": { + "set_page_as_boundary": { + "type": "boolean", + "title": "Set Page As Boundary", + "default": false + }, + "prepend_filename_to_chunks": { + "type": "boolean", + "title": "Prepend Filename To Chunks", + "default": false + }, + "max_items_per_chunk": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Items Per Chunk" + } + }, + "type": "object", + "required": [ + "set_page_as_boundary", + "prepend_filename_to_chunks", + "max_items_per_chunk" + ], + "title": "ChunkProperties" + }, + "ChunksAndEmbeddings": { + "properties": { + "chunk_number": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Number" + }, + "chunk": { + "type": "string", + "title": "Chunk" + }, + "embedding": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Embedding" + } + }, + "type": "object", + "required": [ + "chunk_number", + "chunk", + "embedding" + ], + "title": "ChunksAndEmbeddings" + }, + "ChunksAndEmbeddingsUploadInput": { + "properties": { + "embedding_model": { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + "chunks_and_embeddings": { + "items": { + "$ref": "#/components/schemas/SingleChunksAndEmbeddingsUploadInput" + }, + "type": "array", + "title": "Chunks And Embeddings" + }, + "overwrite_existing": { + "type": "boolean", + "title": "Overwrite Existing", + "default": false + } + }, + "type": "object", + "required": [ + "embedding_model", + "chunks_and_embeddings" + ], + "title": "ChunksAndEmbeddingsUploadInput" + }, + "ConfigurationKeys": { + "type": "string", + "const": "sparse_vectors", + "title": "ConfigurationKeys" + }, + "DataSourceLastSyncActions": { + "type": "string", + "enum": [ + "ADD", + "UPDATE", + "CANCEL", + "REVOKE" + ], + "title": "DataSourceLastSyncActions" + }, + "DataSourceSyncStatuses": { + "type": "string", + "enum": [ + "QUEUED_FOR_SYNCING", + "SYNCING", + "READY", + "SYNC_ERROR" + ], + "title": "DataSourceSyncStatuses" + }, + "DataSourceType": { + "type": "string", + "enum": [ + "GOOGLE_DRIVE", + "NOTION", + "NOTION_DATABASE", + "INTERCOM", + "DROPBOX", + "ONEDRIVE", + "SHAREPOINT", + "CONFLUENCE", + "BOX", + "ZENDESK", + "ZOTERO", + "S3", + "GMAIL", + "OUTLOOK", + "TEXT", + "CSV", + "TSV", + "PDF", + "DOCX", + "PPTX", + "XLSX", + "MD", + "RTF", + "JSON", + "RAW_TEXT", + "WEB_SCRAPE", + "RSS_FEED", + "FRESHDESK", + "JPG", + "PNG", + "MP3", + "MP4", + "MP2", + "AAC", + "WAV", + "FLAC", + "PCM", + "M4A", + "OGG", + "OPUS", + "WEBM" + ], + "title": "DataSourceType" + }, + "DeleteFilesQueryInput": { + "properties": { + "file_ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "File Ids" + }, + "sync_statuses": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ExternalFileSyncStatuses" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Sync Statuses" + }, + "delete_non_synced_only": { + "type": "boolean", + "title": "Delete Non Synced Only", + "default": false + } + }, + "type": "object", + "title": "DeleteFilesQueryInput" + }, + "DirectoryItem": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "is_synced": { + "type": "boolean", + "title": "Is Synced", + "default": false + }, + "has_children": { + "type": "boolean", + "title": "Has Children", + "default": false + } + }, + "type": "object", + "required": [ + "id", + "name", + "is_synced", + "has_children" + ], + "title": "DirectoryItem" + }, + "DocumentResponse": { + "properties": { + "content": { + "type": "string", + "title": "Content" + }, + "file_id": { + "type": "integer", + "title": "File Id" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "source_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source Url" + }, + "source_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/DataSourceType" + }, + { + "type": "null" + } + ] + }, + "presigned_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Presigned Url" + }, + "tags": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags" + }, + "vector": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Vector" + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Score" + }, + "rank": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Rank" + }, + "content_metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Content Metadata" + } + }, + "type": "object", + "required": [ + "content", + "file_id", + "source", + "source_url", + "source_type", + "presigned_url", + "tags", + "vector", + "score", + "rank", + "content_metadata" + ], + "title": "DocumentResponse" + }, + "DocumentResponseList": { + "properties": { + "documents": { + "items": { + "$ref": "#/components/schemas/DocumentResponse" + }, + "type": "array", + "title": "Documents" + } + }, + "type": "object", + "required": [ + "documents" + ], + "title": "DocumentResponseList" + }, + "EmbeddingAndChunk": { + "properties": { + "user_file_id": { + "type": "integer", + "title": "User File Id" + }, + "chunk_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Index" + }, + "source_content": { + "type": "string", + "title": "Source Content" + }, + "embedding": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Embedding" + } + }, + "type": "object", + "required": [ + "user_file_id", + "chunk_index", + "source_content", + "embedding" + ], + "title": "EmbeddingAndChunk" + }, + "EmbeddingGenerators": { + "type": "string", + "enum": [ + "OPENAI", + "AZURE_OPENAI", + "COHERE_MULTILINGUAL_V3", + "VERTEX_MULTIMODAL", + "OPENAI_ADA_LARGE_256", + "OPENAI_ADA_LARGE_1024", + "OPENAI_ADA_LARGE_3072", + "OPENAI_ADA_SMALL_512", + "OPENAI_ADA_SMALL_1536" + ], + "title": "EmbeddingGenerators" + }, + "EmbeddingProperties": { + "properties": { + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size" + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap" + } + }, + "type": "object", + "required": [ + "chunk_size", + "chunk_overlap" + ], + "title": "EmbeddingProperties" + }, + "EmbeddingsAndChunksFilters": { + "properties": { + "user_file_id": { + "type": "integer", + "title": "User File Id" + }, + "embedding_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "user_file_id" + ], + "title": "EmbeddingsAndChunksFilters" + }, + "EmbeddingsAndChunksOrderByColumns": { + "type": "string", + "enum": [ + "created_at", + "updated_at", + "chunk_index" + ], + "title": "EmbeddingsAndChunksOrderByColumns" + }, + "EmbeddingsAndChunksQueryInput": { + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingsAndChunksOrderByColumns" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "$ref": "#/components/schemas/EmbeddingsAndChunksFilters" + }, + "include_vectors": { + "type": "boolean", + "title": "Include Vectors", + "default": false + } + }, + "type": "object", + "required": [ + "filters" + ], + "title": "EmbeddingsAndChunksQueryInput" + }, + "EmbeddingsAndChunksResponse": { + "properties": { + "results": { + "items": { + "$ref": "#/components/schemas/EmbeddingAndChunk" + }, + "type": "array", + "title": "Results" + }, + "count": { + "type": "integer", + "title": "Count" + } + }, + "type": "object", + "required": [ + "results", + "count" + ], + "title": "EmbeddingsAndChunksResponse" + }, + "ExternalFileSyncStatuses": { + "type": "string", + "enum": [ + "DELAYED", + "QUEUED_FOR_SYNC", + "SYNCING", + "READY", + "SYNC_ERROR", + "EVALUATING_RESYNC", + "RATE_LIMITED", + "SYNC_ABORTED", + "QUEUED_FOR_OCR" + ], + "title": "ExternalFileSyncStatuses" + }, + "ExternalSourceItem": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "external_id": { + "type": "string", + "title": "External Id" + }, + "source": { + "$ref": "#/components/schemas/DataSourceType" + }, + "name": { + "type": "string", + "title": "Name" + }, + "synced_at": { + "type": "string", + "format": "date-time", + "title": "Synced At" + }, + "is_selectable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Selectable" + }, + "is_expandable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Expandable" + }, + "organization_id": { + "type": "integer", + "title": "Organization Id" + }, + "organization_supplied_user_id": { + "type": "string", + "title": "Organization Supplied User Id" + }, + "organization_user_id": { + "type": "integer", + "title": "Organization User Id" + }, + "organization_user_data_source_id": { + "type": "integer", + "title": "Organization User Data Source Id" + }, + "organization_user_file_to_sync_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Organization User File To Sync Id" + }, + "parent_external_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Parent External Id" + }, + "item_type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Item Type" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "external_id", + "source", + "name", + "synced_at", + "is_selectable", + "is_expandable", + "organization_id", + "organization_supplied_user_id", + "organization_user_id", + "organization_user_data_source_id", + "organization_user_file_to_sync_id", + "parent_external_id", + "item_type", + "created_at", + "updated_at" + ], + "title": "ExternalSourceItem" + }, + "FetchURLsResponse": { + "properties": { + "urls": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Urls" + }, + "html_content": { + "type": "string", + "title": "Html Content" + } + }, + "type": "object", + "required": [ + "urls", + "html_content" + ], + "title": "FetchURLsResponse" + }, + "FileContentTypes": { + "type": "string", + "enum": [ + "TEXT", + "IMAGE" + ], + "title": "FileContentTypes" + }, + "FileFormats": { + "type": "string", + "enum": [ + "TXT", + "CSV", + "TSV", + "PDF", + "DOCX", + "PPTX", + "XLSX", + "MD", + "RTF", + "JSON", + "NOTION", + "GOOGLE_DRIVE", + "GOOGLE_DOCS", + "GOOGLE_SHEETS", + "GOOGLE_SLIDES", + "INTERCOM", + "DROPBOX", + "ONEDRIVE", + "SHAREPOINT", + "CONFLUENCE", + "RSS_FEED", + "GMAIL", + "OUTLOOK", + "BOX", + "ZENDESK", + "FRESHDESK", + "WEB_SCRAPE", + "JPG", + "JPG", + "PNG", + "MP3", + "MP4", + "MP2", + "AAC", + "WAV", + "FLAC", + "PCM", + "M4A", + "OGG", + "OPUS", + "WEBM" + ], + "title": "FileFormats" + }, + "FileStatistics": { + "properties": { + "file_format": { + "anyOf": [ + { + "$ref": "#/components/schemas/FileFormats" + }, + { + "type": "null" + } + ] + }, + "file_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "File Size" + }, + "num_characters": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Num Characters" + }, + "num_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Num Tokens" + }, + "num_embeddings": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Num Embeddings" + } + }, + "type": "object", + "required": [ + "file_format", + "file_size", + "num_characters", + "num_tokens", + "num_embeddings" + ], + "title": "FileStatistics" + }, + "FreshDeskConnectRequest": { + "properties": { + "domain": { + "type": "string", + "title": "Domain" + }, + "api_key": { + "type": "string", + "title": "Api Key" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + { + "type": "null" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + } + }, + "type": "object", + "required": [ + "domain", + "api_key" + ], + "title": "FreshDeskConnectRequest" + }, + "GenericSuccessResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success" + } + }, + "type": "object", + "required": [ + "success" + ], + "title": "GenericSuccessResponse" + }, + "GetEmbeddingDocumentsBody": { + "properties": { + "query": { + "type": "string", + "minLength": 1, + "title": "Query", + "description": "Query for which to get related chunks and embeddings." + }, + "query_vector": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Query Vector", + "description": "Optional query vector for which to get related chunks and embeddings. It must have been\n generated by the same model used to generate the embeddings across which the search is being conducted. Cannot\n provide both `query` and `query_vector`." + }, + "k": { + "type": "integer", + "title": "K", + "description": "Number of related chunks to return." + }, + "file_ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "File Ids", + "description": "Optional list of file IDs to limit the search to" + }, + "parent_file_ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Parent File Ids", + "description": "Optional list of parent file IDs to limit the search to. A parent file describes a file to which\n another file belongs (e.g. a folder)" + }, + "tags": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "description": "A set of tags to limit the search to. Deprecated and may be removed in the future." + }, + "tags_v2": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags V2", + "description": "A set of tags to limit the search to. Use this instead of `tags`, which is deprecated.", + "examples": [ + { + "OR": [ + { + "key": "subject", + "negate": false, + "value": "holy-bible" + }, + { + "key": "person-of-interest", + "negate": false, + "value": "jesus christ" + }, + { + "key": "genre", + "negate": true, + "value": "fiction" + }, + { + "AND": [ + { + "key": "subject", + "negate": true, + "value": "tao-te-ching" + }, + { + "key": "author", + "negate": false, + "value": "lao-tzu" + } + ] + } + ] + } + ] + }, + "include_tags": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Include Tags", + "description": "Flag to control whether or not to include tags for each chunk in the response." + }, + "include_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Include Vectors", + "description": "Flag to control whether or not to include embedding vectors in the response." + }, + "include_raw_file": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Include Raw File", + "description": "Flag to control whether or not to include a signed URL to the raw file containing each chunk\n in the response." + }, + "hybrid_search": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Hybrid Search", + "description": "Flag to control whether or not to perform hybrid search." + }, + "hybrid_search_tuning_parameters": { + "anyOf": [ + { + "$ref": "#/components/schemas/HybridSearchTuningParams" + }, + { + "type": "null" + } + ], + "description": "Hybrid search tuning parameters. See the endpoint description for more details.", + "examples": [ + { + "weight_a": 0.5, + "weight_b": 0.5 + }, + { + "weight_a": 0.3, + "weight_b": 0.7 + } + ] + }, + "media_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/FileContentTypes" + }, + { + "type": "null" + } + ], + "description": "Used to filter the kind of files (e.g. `TEXT` or `IMAGE`) over which to perform the search. Also\n plays a role in determining what embedding model is used to embed the query. If `IMAGE` is chosen as the media type,\n then the embedding model used will be an embedding model that is not text-only, *regardless* of what value is passed\n for `embedding_model`.", + "default": "TEXT" + }, + "embedding_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + { + "type": "null" + } + ], + "description": "Embedding model that should be used to embed the query. For this to be effective, the\n files being searched must also have embeddings in Carbon that were generated by the same embedding model." + } + }, + "type": "object", + "required": [ + "query", + "k" + ], + "title": "GetEmbeddingDocumentsBody" + }, + "GmailSyncInput": { + "properties": { + "filters": { + "type": "object", + "title": "Filters" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + } + }, + "type": "object", + "required": [ + "filters" + ], + "title": "GmailSyncInput" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HybridSearchTuningParams": { + "properties": { + "weight_a": { + "type": "number", + "title": "Weight A" + }, + "weight_b": { + "type": "number", + "title": "Weight B" + } + }, + "type": "object", + "required": [ + "weight_a", + "weight_b" + ], + "title": "HybridSearchTuningParams" + }, + "ListDataSourceItemsRequest": { + "properties": { + "data_source_id": { + "type": "integer", + "title": "Data Source Id" + }, + "parent_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Parent Id" + }, + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + } + }, + "type": "object", + "required": [ + "data_source_id" + ], + "title": "ListDataSourceItemsRequest" + }, + "ListDataSourceItemsResponse": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/ExternalSourceItem" + }, + "type": "array", + "title": "Items" + }, + "count": { + "type": "integer", + "title": "Count" + } + }, + "type": "object", + "required": [ + "items", + "count" + ], + "title": "ListDataSourceItemsResponse" + }, + "ListRequest": { + "properties": { + "data_source_id": { + "type": "integer", + "title": "Data Source Id" + }, + "parent_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Parent Id" + } + }, + "type": "object", + "required": [ + "data_source_id" + ], + "title": "ListRequest" + }, + "ListResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/DirectoryItem" + }, + "type": "array", + "title": "Data" + } + }, + "type": "object", + "required": [ + "data" + ], + "title": "ListResponse" + }, + "ModifyUserConfigurationInput": { + "properties": { + "configuration_key_name": { + "$ref": "#/components/schemas/ConfigurationKeys" + }, + "value": { + "type": "object", + "title": "Value" + } + }, + "type": "object", + "required": [ + "configuration_key_name", + "value" + ], + "title": "ModifyUserConfigurationInput" + }, + "OAuthURLRequest": { + "properties": { + "scope": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Scope" + }, + "service": { + "$ref": "#/components/schemas/DataSourceType" + }, + "tags": { + "anyOf": [ + {}, + { + "type": "null" + } + ], + "title": "Tags" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + { + "type": "null" + } + ], + "default": "OPENAI" + }, + "zendesk_subdomain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Zendesk Subdomain" + }, + "microsoft_tenant": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Microsoft Tenant" + }, + "sharepoint_site_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sharepoint Site Name" + }, + "confluence_subdomain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Confluence Subdomain" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + }, + "max_items_per_chunk": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Items Per Chunk" + } + }, + "type": "object", + "required": [ + "service" + ], + "title": "OAuthURLRequest" + }, + "OrderDir": { + "type": "string", + "enum": [ + "desc", + "asc" + ], + "title": "OrderDir" + }, + "OrganizationResponse": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "nickname": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Nickname" + }, + "remove_branding": { + "type": "boolean", + "title": "Remove Branding" + }, + "custom_branding": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Custom Branding" + }, + "custom_limits": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Custom Limits" + }, + "aggregate_file_size": { + "type": "object", + "title": "Aggregate File Size" + }, + "aggregate_num_characters": { + "type": "object", + "title": "Aggregate Num Characters" + }, + "aggregate_num_tokens": { + "type": "object", + "title": "Aggregate Num Tokens" + }, + "aggregate_num_embeddings": { + "type": "object", + "title": "Aggregate Num Embeddings" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "name", + "nickname", + "remove_branding", + "custom_branding", + "custom_limits", + "aggregate_file_size", + "aggregate_num_characters", + "aggregate_num_tokens", + "aggregate_num_embeddings", + "created_at", + "updated_at" + ], + "title": "OrganizationResponse" + }, + "OrganizationUserDataSourceAPI": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "data_source_external_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data Source External Id" + }, + "data_source_type": { + "$ref": "#/components/schemas/DataSourceType" + }, + "sync_status": { + "$ref": "#/components/schemas/DataSourceSyncStatuses" + }, + "source_items_synced_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Source Items Synced At" + }, + "organization_user_id": { + "type": "integer", + "title": "Organization User Id" + }, + "organization_id": { + "type": "integer", + "title": "Organization Id" + }, + "organization_supplied_user_id": { + "type": "string", + "title": "Organization Supplied User Id" + }, + "revoked_access": { + "type": "boolean", + "title": "Revoked Access" + }, + "last_synced_at": { + "type": "string", + "format": "date-time", + "title": "Last Synced At" + }, + "last_sync_action": { + "$ref": "#/components/schemas/DataSourceLastSyncActions" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "data_source_external_id", + "data_source_type", + "sync_status", + "source_items_synced_at", + "organization_user_id", + "organization_id", + "organization_supplied_user_id", + "revoked_access", + "last_synced_at", + "last_sync_action", + "created_at", + "updated_at" + ], + "title": "OrganizationUserDataSourceAPI" + }, + "OrganizationUserDataSourceFilters": { + "properties": { + "source": { + "anyOf": [ + { + "$ref": "#/components/schemas/DataSourceType" + }, + { + "type": "null" + } + ] + }, + "ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ids" + }, + "revoked_access": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Revoked Access" + } + }, + "type": "object", + "title": "OrganizationUserDataSourceFilters" + }, + "OrganizationUserDataSourceOrderByColumns": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "title": "OrganizationUserDataSourceOrderByColumns" + }, + "OrganizationUserDataSourceQueryInput": { + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserDataSourceOrderByColumns" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserDataSourceFilters" + } + ], + "default": {} + } + }, + "type": "object", + "title": "OrganizationUserDataSourceQueryInput" + }, + "OrganizationUserDataSourceResponse": { + "properties": { + "results": { + "items": { + "$ref": "#/components/schemas/OrganizationUserDataSourceAPI" + }, + "type": "array", + "title": "Results" + }, + "count": { + "type": "integer", + "title": "Count" + } + }, + "type": "object", + "required": [ + "results", + "count" + ], + "title": "OrganizationUserDataSourceResponse" + }, + "OrganizationUserFileTagCreate": { + "properties": { + "organization_user_file_id": { + "type": "integer", + "title": "Organization User File Id" + }, + "tags": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object", + "title": "Tags" + } + }, + "type": "object", + "required": [ + "organization_user_file_id", + "tags" + ], + "title": "OrganizationUserFileTagCreate" + }, + "OrganizationUserFileTagsRemove": { + "properties": { + "organization_user_file_id": { + "type": "integer", + "title": "Organization User File Id" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Tags" + } + }, + "type": "object", + "required": [ + "organization_user_file_id", + "tags" + ], + "title": "OrganizationUserFileTagsRemove" + }, + "OrganizationUserFilesToSyncFilters": { + "properties": { + "source": { + "anyOf": [ + { + "$ref": "#/components/schemas/DataSourceType" + }, + { + "items": { + "$ref": "#/components/schemas/DataSourceType" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Source" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "tags": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags" + }, + "tags_v2": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags V2" + }, + "ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ids" + }, + "external_file_ids": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "External File Ids" + }, + "sync_statuses": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ExternalFileSyncStatuses" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Sync Statuses" + }, + "parent_file_ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Parent File Ids" + }, + "organization_user_data_source_id": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Organization User Data Source Id" + }, + "embedding_generators": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Embedding Generators" + } + }, + "type": "object", + "title": "OrganizationUserFilesToSyncFilters" + }, + "OrganizationUserFilesToSyncOrderByTypes": { + "type": "string", + "enum": [ + "created_at", + "updated_at", + "name", + "last_sync", + "file_size" + ], + "title": "OrganizationUserFilesToSyncOrderByTypes" + }, + "OrganizationUserFilesToSyncQueryInput": { + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncOrderByTypes" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "allOf": [ + { + "$ref": "#/components/schemas/OrganizationUserFilesToSyncFilters" + } + ], + "default": {} + }, + "include_raw_file": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Include Raw File" + }, + "include_parsed_text_file": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Include Parsed Text File" + }, + "include_additional_files": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Include Additional Files" + } + }, + "type": "object", + "title": "OrganizationUserFilesToSyncQueryInput" + }, + "OutlookSyncInput": { + "properties": { + "folder": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Folder", + "default": "Inbox" + }, + "filters": { + "type": "object", + "title": "Filters" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + } + }, + "type": "object", + "required": [ + "filters" + ], + "title": "OutlookSyncInput" + }, + "Pagination": { + "properties": { + "limit": { + "type": "integer", + "title": "Limit", + "default": 10 + }, + "offset": { + "type": "integer", + "title": "Offset", + "default": 0 + } + }, + "type": "object", + "title": "Pagination" + }, + "PresignedURLResponse": { + "properties": { + "presigned_url": { + "type": "string", + "title": "Presigned Url" + } + }, + "type": "object", + "required": [ + "presigned_url" + ], + "title": "PresignedURLResponse" + }, + "RSSFeedInput": { + "properties": { + "url": { + "type": "string", + "title": "Url" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + } + }, + "type": "object", + "required": [ + "url" + ], + "title": "RSSFeedInput" + }, + "RawTextInput": { + "properties": { + "contents": { + "type": "string", + "title": "Contents" + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size" + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap" + }, + "skip_embedding_generation": { + "type": "boolean", + "title": "Skip Embedding Generation", + "default": false + }, + "overwrite_file_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Overwrite File Id" + }, + "embedding_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + { + "type": "null" + } + ] + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + } + }, + "type": "object", + "required": [ + "contents" + ], + "title": "RawTextInput" + }, + "ResyncFileQueryInput": { + "properties": { + "file_id": { + "type": "integer", + "title": "File Id" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size" + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap" + } + }, + "type": "object", + "required": [ + "file_id" + ], + "title": "ResyncFileQueryInput" + }, + "RevokeAccessTokenInput": { + "properties": { + "data_source_id": { + "type": "integer", + "title": "Data Source Id" + } + }, + "type": "object", + "required": [ + "data_source_id" + ], + "title": "RevokeAccessTokenInput" + }, + "S3AuthRequest": { + "properties": { + "access_key": { + "type": "string", + "title": "Access Key" + }, + "access_key_secret": { + "type": "string", + "title": "Access Key Secret" + } + }, + "type": "object", + "required": [ + "access_key", + "access_key_secret" + ], + "title": "S3AuthRequest" + }, + "S3FileSyncInput": { + "properties": { + "ids": { + "items": { + "$ref": "#/components/schemas/S3GetFileInput" + }, + "type": "array", + "title": "Ids" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + }, + "max_items_per_chunk": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Items Per Chunk" + } + }, + "type": "object", + "required": [ + "ids" + ], + "title": "S3FileSyncInput" + }, + "S3GetFileInput": { + "properties": { + "id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Id" + }, + "bucket": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Bucket" + } + }, + "type": "object", + "title": "S3GetFileInput" + }, + "SingleChunksAndEmbeddingsUploadInput": { + "properties": { + "file_id": { + "type": "integer", + "title": "File Id" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size" + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap" + }, + "chunks_and_embeddings": { + "items": { + "$ref": "#/components/schemas/ChunksAndEmbeddings" + }, + "type": "array", + "title": "Chunks And Embeddings" + } + }, + "type": "object", + "required": [ + "file_id", + "chunks_and_embeddings" + ], + "title": "SingleChunksAndEmbeddingsUploadInput" + }, + "SitemapScrapeRequest": { + "properties": { + "url": { + "type": "string", + "title": "Url" + }, + "tags": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "max_pages_to_scrape": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Pages To Scrape", + "default": 100 + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "enable_auto_sync": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Enable Auto Sync", + "default": false + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + }, + "html_tags_to_skip": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Html Tags To Skip", + "default": [] + }, + "css_classes_to_skip": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Css Classes To Skip", + "default": [] + }, + "css_selectors_to_skip": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Css Selectors To Skip", + "default": [] + } + }, + "type": "object", + "required": [ + "url" + ], + "title": "SitemapScrapeRequest" + }, + "SyncDirectoryRequest": { + "properties": { + "data_source_id": { + "type": "integer", + "title": "Data Source Id" + } + }, + "type": "object", + "required": [ + "data_source_id" + ], + "title": "SyncDirectoryRequest" + }, + "SyncFilesRequest": { + "properties": { + "data_source_id": { + "type": "integer", + "title": "Data Source Id" + }, + "ids": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Ids" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "embedding_model": { + "anyOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + }, + { + "type": "null" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + }, + "max_items_per_chunk": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Items Per Chunk" + } + }, + "type": "object", + "required": [ + "data_source_id", + "ids" + ], + "title": "SyncFilesRequest" + }, + "TextEmbeddingGenerators": { + "type": "string", + "enum": [ + "OPENAI", + "AZURE_OPENAI", + "COHERE_MULTILINGUAL_V3", + "OPENAI_ADA_LARGE_256", + "OPENAI_ADA_LARGE_1024", + "OPENAI_ADA_LARGE_3072", + "OPENAI_ADA_SMALL_512", + "OPENAI_ADA_SMALL_1536" + ], + "title": "TextEmbeddingGenerators" + }, + "TokenResponse": { + "properties": { + "access_token": { + "type": "string", + "title": "Access Token" + }, + "refresh_token": { + "type": "string", + "title": "Refresh Token" + } + }, + "type": "object", + "required": [ + "access_token", + "refresh_token" + ], + "title": "TokenResponse" + }, + "UploadFileFromUrlInput": { + "properties": { + "url": { + "type": "string", + "title": "Url" + }, + "file_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File Name" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size" + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap" + }, + "skip_embedding_generation": { + "type": "boolean", + "title": "Skip Embedding Generation", + "default": false + }, + "set_page_as_boundary": { + "type": "boolean", + "title": "Set Page As Boundary", + "default": false + }, + "embedding_model": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddingGenerators" + } + ], + "default": "OPENAI" + }, + "generate_sparse_vectors": { + "type": "boolean", + "title": "Generate Sparse Vectors", + "default": false + }, + "use_textract": { + "type": "boolean", + "title": "Use Textract", + "default": false + }, + "prepend_filename_to_chunks": { + "type": "boolean", + "title": "Prepend Filename To Chunks", + "default": false + }, + "max_items_per_chunk": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Items Per Chunk" + } + }, + "type": "object", + "required": [ + "url" + ], + "title": "UploadFileFromUrlInput" + }, + "UserFile": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "source": { + "$ref": "#/components/schemas/DataSourceType" + }, + "organization_id": { + "type": "integer", + "title": "Organization Id" + }, + "organization_supplied_user_id": { + "type": "string", + "title": "Organization Supplied User Id" + }, + "organization_user_data_source_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Organization User Data Source Id" + }, + "external_file_id": { + "type": "string", + "title": "External File Id" + }, + "external_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "External Url" + }, + "sync_status": { + "$ref": "#/components/schemas/ExternalFileSyncStatuses" + }, + "sync_error_message": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sync Error Message" + }, + "last_sync": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Last Sync" + }, + "tags": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags" + }, + "file_statistics": { + "anyOf": [ + { + "$ref": "#/components/schemas/FileStatistics" + }, + { + "type": "null" + } + ] + }, + "file_metadata": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "File Metadata" + }, + "embedding_properties": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/components/schemas/EmbeddingProperties" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Embedding Properties" + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size" + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap" + }, + "chunk_properties": { + "anyOf": [ + { + "$ref": "#/components/schemas/ChunkProperties" + }, + { + "type": "null" + } + ] + }, + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "parent_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Parent Id" + }, + "enable_auto_sync": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Enable Auto Sync" + }, + "presigned_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Presigned Url" + }, + "parsed_text_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Parsed Text Url" + }, + "additional_presigned_urls": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Additional Presigned Urls" + }, + "skip_embedding_generation": { + "type": "boolean", + "title": "Skip Embedding Generation" + }, + "source_created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Source Created At" + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "source", + "organization_id", + "organization_supplied_user_id", + "organization_user_data_source_id", + "external_file_id", + "external_url", + "sync_status", + "sync_error_message", + "last_sync", + "tags", + "file_statistics", + "file_metadata", + "embedding_properties", + "chunk_size", + "chunk_overlap", + "chunk_properties", + "name", + "parent_id", + "enable_auto_sync", + "presigned_url", + "parsed_text_url", + "additional_presigned_urls", + "skip_embedding_generation", + "source_created_at", + "generate_sparse_vectors", + "created_at", + "updated_at" + ], + "title": "UserFile" + }, + "UserFilesV2": { + "properties": { + "results": { + "items": { + "$ref": "#/components/schemas/UserFile" + }, + "type": "array", + "title": "Results" + }, + "count": { + "type": "integer", + "title": "Count" + } + }, + "type": "object", + "required": [ + "results", + "count" + ], + "title": "UserFilesV2" + }, + "UserRequestContent": { + "properties": { + "customer_id": { + "type": "string", + "title": "Customer Id" + } + }, + "type": "object", + "required": [ + "customer_id" + ], + "title": "UserRequestContent" + }, + "UserResponse": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "organization_id": { + "type": "integer", + "title": "Organization Id" + }, + "organization_supplied_user_id": { + "type": "string", + "title": "Organization Supplied User Id" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + }, + "deleted_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Deleted At" + }, + "num_files_synced": { + "type": "integer", + "title": "Num Files Synced" + }, + "num_characters_synced": { + "type": "integer", + "title": "Num Characters Synced" + }, + "num_tokens_synced": { + "type": "integer", + "title": "Num Tokens Synced" + }, + "unique_file_tags": { + "items": { + "type": "object" + }, + "type": "array", + "title": "Unique File Tags" + }, + "enabled_features": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Enabled Features" + } + }, + "type": "object", + "required": [ + "id", + "organization_id", + "organization_supplied_user_id", + "created_at", + "updated_at", + "deleted_at", + "num_files_synced", + "num_characters_synced", + "num_tokens_synced", + "unique_file_tags", + "enabled_features" + ], + "title": "UserResponse" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + }, + "Webhook": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "organization_id": { + "type": "integer", + "title": "Organization Id" + }, + "url": { + "type": "string", + "title": "Url" + }, + "signing_key": { + "type": "string", + "title": "Signing Key" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "organization_id", + "url", + "signing_key", + "created_at", + "updated_at" + ], + "title": "Webhook" + }, + "WebhookFilters": { + "properties": { + "ids": { + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Ids", + "default": [] + } + }, + "type": "object", + "title": "WebhookFilters" + }, + "WebhookNoKey": { + "properties": { + "id": { + "type": "integer", + "title": "Id" + }, + "organization_id": { + "type": "integer", + "title": "Organization Id" + }, + "url": { + "type": "string", + "title": "Url" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "organization_id", + "url", + "created_at", + "updated_at" + ], + "title": "WebhookNoKey" + }, + "WebhookOrderByColumns": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "title": "WebhookOrderByColumns" + }, + "WebhookQueryInput": { + "properties": { + "pagination": { + "allOf": [ + { + "$ref": "#/components/schemas/Pagination" + } + ], + "default": { + "limit": 10, + "offset": 0 + } + }, + "order_by": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookOrderByColumns" + } + ], + "default": "updated_at" + }, + "order_dir": { + "allOf": [ + { + "$ref": "#/components/schemas/OrderDir" + } + ], + "default": "asc" + }, + "filters": { + "allOf": [ + { + "$ref": "#/components/schemas/WebhookFilters" + } + ], + "default": { + "ids": [] + } + } + }, + "type": "object", + "title": "WebhookQueryInput" + }, + "WebhookQueryResponse": { + "properties": { + "results": { + "items": { + "$ref": "#/components/schemas/WebhookNoKey" + }, + "type": "array", + "title": "Results" + }, + "count": { + "type": "integer", + "title": "Count" + } + }, + "type": "object", + "required": [ + "results", + "count" + ], + "title": "WebhookQueryResponse" + }, + "WebscrapeRequest": { + "properties": { + "url": { + "type": "string", + "title": "Url" + }, + "tags": { + "anyOf": [ + { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "items": { + "type": "boolean" + }, + "type": "array" + } + ] + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tags", + "default": {} + }, + "recursion_depth": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Recursion Depth", + "default": 3 + }, + "max_pages_to_scrape": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Pages To Scrape", + "default": 100 + }, + "chunk_size": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Size", + "default": 1500 + }, + "chunk_overlap": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Chunk Overlap", + "default": 20 + }, + "skip_embedding_generation": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Skip Embedding Generation", + "default": false + }, + "enable_auto_sync": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Enable Auto Sync", + "default": false + }, + "generate_sparse_vectors": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Generate Sparse Vectors", + "default": false + }, + "prepend_filename_to_chunks": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Prepend Filename To Chunks", + "default": false + }, + "html_tags_to_skip": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Html Tags To Skip", + "default": [] + }, + "css_classes_to_skip": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Css Classes To Skip", + "default": [] + }, + "css_selectors_to_skip": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Css Selectors To Skip", + "default": [] + } + }, + "type": "object", + "required": [ + "url" + ], + "title": "WebscrapeRequest" + }, + "WhiteLabelingResponse": { + "properties": { + "remove_branding": { + "type": "boolean", + "title": "Remove Branding" + }, + "integrations": { + "type": "object", + "title": "Integrations" + } + }, + "type": "object", + "required": [ + "remove_branding", + "integrations" + ], + "title": "WhiteLabelingResponse" + }, + "YoutubeTranscriptResponse": { + "properties": { + "status": { + "type": "string", + "title": "Status" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error" + }, + "data": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Data" + }, + "raw_transcript": { + "anyOf": [ + { + "items": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ] + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Raw Transcript" + } + }, + "type": "object", + "required": [ + "status", + "error", + "data", + "raw_transcript" + ], + "title": "YoutubeTranscriptResponse" + } + } + }, + "tags": [ + { + "name": "Getting Started", + "description": "\n---\n\n![](http://cdn.mcauto-images-production.sendgrid.net/3b277c940596d872/33ed03b3-3f38-485c-a51c-8925f14a7441/1780x1252.png)\n\n## What is Carbon?\n\nCarbon provides a comprehensive framework designed to streamline the process of connecting external data sources to Large Language Models (LLMs). \n\nThe Carbon search model is purpose-built for Large Language Models (LLMs) because of its fully neural architecture, enabling natural language querying across indexed documents from external data sources. In cases where vector (or neural) search isn't optimal, Carbon also supports keyword-based searches.\n\nCarbon simplifies the process of **retrieval augmented generation** (RAG), allowing you to spend more time using your data, and less time trying to ingest it.\n\n## How Carbon Works\n\nUse **[Carbon Connect](https://api.carbon.ai/redoc#tag/Carbon-Connect)** to connect to your users' data sources and then our **Universal API** to retrieve the data to use with LLMs. Carbon has native integrations with 10+ data sources and supports more than 20+ file formats, encompassing text, audio, and visual data.\n\nDepending on your use case and in-house infrastructure, you can retrieve user data from Carbon in several formats: \n\n- Parsed plaintext files\n- Embeddings (and chunks) to store in your vector store\n- Direct semantic and keyword search against Carbon's managed vector database\n\n## Products\n\n### πŸ”— Connect\n\nA client-side component for users to connect data sources such as Notion, Google Drive, Dropbox, OneDrive, websites, and file uploads. Available as a React component, JavaScript SDK, and soon as a magic link. \n\nCarbon handles OAuth flows for 10+ sources, transforms the source data, and automates data synchronization.\n\n### πŸ—„οΈ Store\n\nChoose between Carbon's managed vector database (hosted on Qdrant Cloud) or your storage solution. The database updates as users modify connected sources and manage chunks alongside embeddings.\n\n### πŸ”Œ Universal API\n\nAccess and manage data (documents, chunks, vectors, etc.) from any source using our flexible API suite. Apply custom metadata filters to objects for tailored data retrieval.\n\n## Setup\n\n---\n\n### πŸ”‘ Getting a Carbon API Key\n\nCarbon is free to use up to the first 20 million characters. \nBook a 15 minute onboarding to get an API key [here](https://cal.com/carbon-ai/15min).\n\n### πŸ”— Helpful Links\nTo get started with Carbon, follow our guides:\n\n- [Installing Carbon Connect](https://api.carbon.ai/redoc#tag/Carbon-Connect)\n- [Integrating Data Sources](https://api.carbon.ai/redoc#tag/Data-Sources)\n\n" + }, + { + "name": "Carbon Connect", + "description": "\n\n---\n\nUse Connect to connect to your users' accounts with the Carbon API.\n\nCarbon Connect is the client-side component that your users will interact with in order upload their content to Carbon and grant you access via the Carbon API.\n\nCarbon Connect handles credential validation, content upload, and success/error handling for each connector that Carbon supports. We support 10+ integrations (Google Drive, Notion, etc), local file uploads (images, audio and text), and public webpages.\n\nCarbon is currently supported via a Javascript SDK, as well as via React Native and mobile webviews.\n\n![](http://cdn.mcauto-images-production.sendgrid.net/3b277c940596d872/17a00fb4-f6d8-49fd-86e1-1a82dd8e64f1/680x1089.gif)\n\n# Javascript SDK\n\n---\n\nCarbon Connect JS is a vanilla JS wrapper and a headless offering to integrate Carbon API into your product.\n\nYou can reference this example repo showcasing our JS SDK [here](https://github.com/hubbleai/sdk-example).\n\n## Installation\n\n---\n\nUse the package manager [npm](https://www.npmjs.com/) to install carbon-connect-js.\n\n```bash\nnpm install carbon-connect-js\n```\n\n## Usage\n\n---\n\n```javascript\nimport * as Carbon from 'carbon-connect-js';\n\n// Note: Access token generation should happen prior to other function calls!\n\n// Generate Access Token\nconst accessTokenResponse = await Carbon.generateAccessToken(\n 'api_key',\n 'customer_id'\n);\nconsole.log(accessTokenResponse.data.access_token);\n\n// Get White Label data\nconst whiteLabelResponse = Carbon.getWhiteLabelData('ACCESS_TOKEN');\nconsole.log(whiteLabelResponse.data);\n```\n\n## Methods\n\n---\n\n### 1. generateAccessToken()\n\n- **Description**: This method is used to generate an access token required for authentication. The access token will be valid for 10 hours.\n\n- **Parameters**: The `generateAccessToken()` method accepts an object with the following properties:\n\n - `apiKey` (string): Your API key.\n - `customerId` (string): The customer's unique ID.\n\n- **Returns**: A promise that resolves to an `AccessTokenResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data containing the access token, if the request was successful. Otherwise, null.\n - `error` (string or null): Error message if there was an issue generating the token. Otherwise, null.\n\n- **Usage**: Here's how you can use the `generateAccessToken()` method\n\n ```javascript\n const Carbon = require('carbon-connect-js');\n\n async function fetchAccessToken() {\n try {\n const response = await Carbon.generateAccessToken({\n apiKey: 'your_api_key',\n customerId: 'your_customer_id',\n });\n\n if (response.status === 200) {\n console.log('Access token:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err);\n }\n }\n\n fetchAccessToken();\n ```\n\n- **Note** : It is ideal to call this method from your backend code and return it to your frontend. This is to avoid exposing your API key to the frontend.\n\n### 2. getWhiteLabelData()\n\n- **Description**: This method retrieves the white label data of the organization, which can be useful for custom branding and theming.\n- **Parameters**: The `getWhiteLabelData()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained from the authentication process.\n\n- **Returns**: A promise that resolves to an `WhiteLabelDataResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): The response data containing details of the white label settings.\n\n- **Usage**: Here's how you can use the `getWhiteLabelData()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchWhiteLabelDetails() {\n try {\n const response = await Carbon.getWhiteLabelData({\n accessToken: 'ACCESS_TOKEN',\n });\n\n if (response.status === 200) {\n console.log('White Label Data:', response.data);\n } else {\n console.error(\n 'Failed to fetch white label data. Status:',\n response.status\n );\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n // Call the function to fetch the data.\n fetchWhiteLabelDetails();\n ```\n\n### 3. getUserConnections()\n\n- **Description**: Retrieve all the active integrations or connections associated with a user.\n- **Parameters**: The `getUserConnections()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained from the authentication process.\n\n- **Returns**: A promise that resolves to a `UserConnectionsResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `connections` (array): List of active integrations or connections associated with the user.\n - `error` (object or null): Contains error details if any issues arise while fetching user connections.\n\n- **Usage**:\n\n```javascript\nimport * as Carbon from 'carbon-connect-js';\n\nasync function fetchUserIntegrations() {\n try {\n const response = await Carbon.getUserConnections({\n accessToken: 'ACCESS_TOKEN',\n });\n\n if (response.status === 200) {\n console.log('User Connections:', response.connections);\n } else {\n console.error('Error:', response.error.message);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n}\n\n// Initiate the call to fetch user integrations.\nfetchUserIntegrations();\n```\n\n### 4. generateOauthurl()\n\n- **Description**: Generate an OAuth URL to facilitate users in connecting a third-party account.\n\n- **Parameters**: The `generateOauthurl()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `integrationName` (string): Name of the third-party service you want to integrate.\n - `chunkSize` (number, optional): Defines the chunk size. Defaults to 1500.\n - `chunkOverlap` (number, optional): Defines the chunk overlap. Defaults to 20.\n - `skipEmbeddingGeneration` (boolean, optional): If set to true, embedding generation will be skipped. Defaults to false.\n - `tags` (object, optional): Tags that can be passed for additional information. Defaults to an empty object.\n\n- **Returns**: A promise that resolves to a `GenerateOAuthURLResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details like the generated OAuth URL, integration name, chunk size, chunk overlap, and other specified parameters.\n - `error` (string or null): Contains error message if there's any issue generating the OAuth URL.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function generateIntegrationOAuthURL() {\n try {\n const response = await Carbon.generateOauthurl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n integrationName: 'SERVICE_NAME',\n // Accepted values are: NOTION, GOOGLE_DRIVE, ONEDRIVE, INTERCOM, DROPBOX, ZENDESK, BOX\n });\n\n if (response.status === 200) {\n console.log('Generated OAuth URL:', response.data.oauth_url);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n generateIntegrationOAuthURL();\n ```\n\n### 5. uploadFiles()\n\n- **Description**: Upload one or multiple files to Carbon, with options to control chunk size, chunk overlap, and embedding generation.\n\n- **Parameters**: The `uploadFiles()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `files` (Array): An array of files you want to upload.\n - `chunkSize` (number, optional): Defines the chunk size. Defaults to 1500.\n - `chunkOverlap` (number, optional): Defines the chunk overlap. Defaults to 20.\n - `skipEmbeddingGeneration` (boolean, optional): If set to true, embedding generation will be skipped. Defaults to false.\n\n- **Returns**: A promise that resolves to an UploadFilesResponse object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the uploaded files, including count and array of successful uploads.\n - `error` (object or null): Contains error details if there's an issue during file upload.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function uploadFilesToPlatform() {\n try {\n const response = await Carbon.uploadFilesToCarbon({\n accessToken: 'YOUR_ACCESS_TOKEN',\n files: filesToUploadArray,\n // You can also specify other parameters here if needed.\n });\n\n if (response.status === 200) {\n console.log('Uploaded Files:', response.data.successfulUploads);\n if (response.error) {\n console.warn('Failed Uploads:', response.error.failedUploads);\n }\n } else {\n console.error('Error:', response.error.message);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n uploadFilesToPlatform();\n ```\n\n### 6. updateTags()\n\n- **Description**: Updates or appends tags to a specified file in Carbon.\n\n- **Parameters**:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (int): The ID of the file you want to update tags for.\n - `tags` (object): The tags you want to add or update for the specified file.\n\n- **Returns**: A promise that resolves to an `UpdateTagsResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the updated file, including the file ID and updated tags.\n - `error` (object or null): Contains error details if there's an issue updating the tags.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function updateFileTags() {\n const fileId = 'YOUR_FILE_ID'; // Replace with your actual file ID\n const tagsToUpdate = {\n category: 'document',\n type: 'pdf',\n // ... add more tags as needed\n };\n\n try {\n const response = await Carbon.updateTags({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: fileId,\n tags: tagsToUpdate,\n });\n\n if (response.status === 200) {\n console.log('Updated Tags:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n updateFileTags();\n ```\n\n### 7. processSitemapUrl()\n\n- **Description**: Fetches and processes the URLs present in a specified sitemap.\n\n- **Parameters**: The `processSitemapUrl()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `sitemapUrl` (string): The URL of the sitemap to be fetched.\n\n- **Returns**: A promise that resolves to a `ProcessSitemapUrlResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the fetched URLs.\n - `urls` (array): An array of URLs retrieved from the sitemap.\n - `count` (number): Total number of URLs retrieved from the sitemap.\n - `error` (string or null): Error message if there's an issue fetching the sitemap.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchSitemapUrls() {\n const sitemap = 'YOUR_SITEMAP_URL'; // Replace with your actual sitemap URL\n\n try {\n const response = await Carbon.handleFetchSitemapUrls({\n accessToken: 'ACCESS_TOKEN',\n sitemapUrl: sitemap,\n });\n\n if (response.status === 200) {\n console.log('Retrieved URLs:', response.data.urls);\n console.log('Total URLs:', response.data.count);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n fetchSitemapUrls();\n ```\n\n### 8. submitScrapeRequest()\n\n- **Description**: Initiates a scraping request for specified URLs. This function supports batch scraping and can take multiple URLs in a single request.\n\n- **Parameters**: The `submitScrapeRequest()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `urls` (array of strings): An array of URLs you want to scrape.\n - `tags` (object, optional): Tags associated with the scraping request. Defaults to an empty object.\n - `recursionDepth` (number, optional): Specifies the depth of scraping for linked pages. Defaults to 1.\n - `maxPagesToScrape` (number, optional): Maximum number of pages to scrape per URL. Defaults to 1.\n - `chunkSize` (number, optional): Size of data chunks. Defaults to 1500.\n - `chunkOverlap` (number, optional): Overlapping size between chunks. Defaults to 20.\n - `skipEmbeddingGeneration` (boolean, optional): Indicates whether to skip embedding generation during scraping. Defaults to false.\n\n- **Returns**: A promise that resolves to a `SubmitScrapeRequestResponse` object:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object): Contains details of the scraping response.\n - `files` (array): An array of objects, each representing a file resulting from the scraping process.\n - `error` (string or null): Error message if there's an issue initiating the scraping.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function initiateScraping() {\n const urlsToScrape = ['URL_1', 'URL_2']; // Replace with your actual URLs\n\n try {\n const response = await Carbon.submitScrapeRequest({\n accessToken: 'YOUR_ACCESS_TOKEN',\n urls: urlsToScrape,\n recursionDepth: 2,\n maxPagesToScrape: 5,\n });\n\n if (response.status === 200) {\n console.log('Scraping result:', response.data.files);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err.message);\n }\n }\n\n initiateScraping();\n ```\n\n### 9. getCarbonHealth()\n\n- **Description**: This function retrieves the health status of the Carbon service.\n\n- **Parameters**: The `getCarbonHealth()` method does not require any parameters.\n\n- **Returns**: A promise that resolves to a `getCarbonHealthResponse` object:\n\n - status (number): An HTTP status code indicating the health status. A status code of 200 indicates that the service is in a healthy state.\n\n- **Usage**: Below is an example of how to utilize the `getCarbonHealth()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchCarbonHealth() {\n try {\n const response = await Carbon.getCarbonHealth();\n\n if (response.status === 200) {\n console.log('Carbon service is healthy.');\n } else {\n console.error(\n 'Carbon service is currently unavailable:',\n response.status\n );\n }\n } catch (err) {\n console.error(\n 'Unexpected error while checking Carbon health:',\n err.message\n );\n }\n }\n\n fetchCarbonHealth();\n ```\n\n### 10. uploadFileFromUrl()\n\n- **Description**: This function allows you to upload a file to the Carbon service by fetching it from a specified URL.\n\n- **Parameters**: The `uploadFileFromUrl()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `url` (string): The URL from which the file should be retrieved and uploaded.\n - `fileName` (string, optional): A custom name for the file. If not specified, the original filename from the URL will be used.\n - `chunkSize` (number, optional): The size of data chunks during the upload process. Default is set to 1500.\n - `chunkOverlap` (number, optional): The overlap size between chunks. Default is set to 20.\n - `skipEmbeddingGeneration` (boolean, optional): Indicates whether to skip embedding generation during the upload. Default is set to false.\n\n- **Returns**: A promise that resolves to an `UploadFileFromUrlResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): Contains details of the uploaded file.\n - `file` (object): Represents the uploaded file and all its properties.\n - `error` (string or null): An error message, if there's an issue with the upload.\n\n- **Usage**: Below is an example of how to use the `uploadFileFromUrl()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function uploadFromUrl() {\n const fileUrl = 'URL_TO_THE_FILE'; // Replace with the actual URL\n\n try {\n const response = await Carbon.uploadFileFromUrl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n url: fileUrl,\n fileName: 'custom_file_name.ext',\n });\n\n if (response.status === 200) {\n console.log('Uploaded file details:', response.data.file);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during upload:', err.message);\n }\n }\n\n uploadFromUrl();\n ```\n\n### 11. uploadText()\n\n- **Description**: This function enables the uploading of textual content to the Carbon service.\n\n- **Parameters**: The `uploadText()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `contents` (string): The text content you wish to upload.\n - `fileName` (string, optional): A custom name for the file. If not specified, a random name will be used.\n - `chunkSize` (number, optional): The size of data chunks during the upload process. The default value is 1500.\n - `chunkOverlap` (number, optional): The overlapping size between chunks. The default value is 20.\n - `skipEmbeddingGeneration` (boolean, optional): An indicator of whether to skip embedding generation during the upload. The default is set to false.\n - `overWriteFileId` (number or null, optional): If provided, the uploaded content will overwrite an existing file with the specified ID.\n\n- **Returns**: A promise that resolves to an `UploadTextResponse` object containing the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): Contains details of the uploaded file.\n - `file` (object): Represents the uploaded file along with its properties.\n - `error` (string or null): An error message in case of an issue during the upload.\n\n- **Usage**: Below is an example of how to utilize the `uploadText()` method\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function uploadCustomText() {\n const textContent = 'This is a sample text content for upload.';\n\n try {\n const response = await Carbon.uploadText({\n accessToken: 'YOUR_ACCESS_TOKEN',\n contents: textContent,\n fileName: 'sample_text.txt',\n });\n\n if (response.status === 200) {\n console.log('Uploaded file details:', response.data.file);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during upload:', err.message);\n }\n }\n\n uploadCustomText();\n ```\n\n### 12. deleteFile()\n\n- **Description**: This function allows for the removal of a specified file from the Carbon service.\n\n- **Parameters**: The `deleteFile()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file you intend to delete.\n\n- **Returns**: A promise that resolves to an `DeleteFileResponse` object containing the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): Contains details of the deleted file or any additional response data.\n - `error` (string or null): An error message in case there is an issue with the file deletion.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function removeFile() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.deleteFile({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n });\n\n if (response.status === 200) {\n console.log('File successfully deleted:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during file deletion:', err.message);\n }\n }\n\n removeFile();\n ```\n\n### 13. resyncFile()\n\n- **Description**: This function triggers a resynchronization of a specified file with the Carbon service. This can be valuable in scenarios where a file's internal data changes or if there are discrepancies in the data on the server.\n\n- **Parameters**: The `resyncFile()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file you wish to resynchronize.\n - `chunkSize` (number, optional, default 1500): Specifies the chunk size when processing the file.\n - `chunkOverlap` (number, optional, default 20): Specifies the overlap size between each chunk.\n\n- **Returns**: A promise that resolves to an `ResyncFileResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data, containing the access token if the request was successful; otherwise, it is null.\n - `error` (string or null): An error message if there was an issue generating the token, otherwise null.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function resynchronizeFile() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.resyncFile({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n chunkSize: 1600, // Optional. Default is 1500.\n chunkOverlap: 25, // Optional. Default is 20.\n });\n\n if (response.status === 200) {\n console.log('File successfully resynced:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during file resync:', err.message);\n }\n }\n\n resynchronizeFile();\n ```\n\n### 14. getRawFilePresignedUrl()\n\n- **Description**: This function retrieves a presigned URL that can be utilized to directly access the unprocessed content of a file stored within the Carbon service.\n\n- **Parameters**: The `getRawFilePresignedUrl()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file for which you seek to obtain the presigned URL.\n\n- **Returns**: A promise that resolves to an `GetRawFilePresignedUrlResponse` object comprising the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null):\n - `presigned_url` (string): The presigned URL that can be used to access the raw file content.\n - `error` (string or null): An error message if there is an issue with fetching the presigned URL.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchPresignedUrl() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.getRawFilePresignedUrl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n });\n\n if (response.status === 200) {\n console.log('Presigned URL:', response.data.presigned_url);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error fetching presigned URL:', err.message);\n }\n }\n\n fetchPresignedUrl();\n ```\n\n### 15. getParsedFilePresignedUrl()\n\n- **Description**: This function retrieves a presigned URL that can be employed to directly access the parsed content of a file stored within the Carbon service.\n\n- **Parameters**: The `getParsedFilePresignedUrl()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `fileId` (string): The ID of the file for which you desire the presigned URL.\n\n- **Returns**: A promise that resolves to an `GetParsedFilePresignedUrlResponse` object containing the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null):\n - `presigned_url` (string): The presigned URL that enables access to the parsed file content.\n - `error` (string or null): An error message in the event of any issues with obtaining the presigned URL.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchParsedPresignedUrl() {\n const targetFileId = 'YOUR_FILE_ID_HERE';\n\n try {\n const response = await Carbon.getParsedFilePresignedUrl({\n accessToken: 'YOUR_ACCESS_TOKEN',\n fileId: targetFileId,\n });\n\n if (response.status === 200) {\n console.log(\n 'Presigned URL for parsed content:',\n response.data.presigned_url\n );\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error(\n 'Unexpected error fetching presigned URL for parsed content:',\n err.message\n );\n }\n }\n\n fetchParsedPresignedUrl();\n ```\n\n### 16. getUserFiles()\n\n- **Description**: This function retrieves a list of user files from the Carbon service based on specified filters.\n\n- **Parameters**: The `getUserFiles()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `limit` (number, optional, default = 10): The maximum number of files to be returned.\n - `offset` (number, optional, default = 0): The starting point from which to fetch files.\n - `order_by` (string, optional, default = 'updated_at'): The attribute by which the returned files are ordered.\n - `order_dir` (string, optional, default = 'asc'):The direction in which the files are ordered. Options are 'asc' or 'desc'.\n - `filters` (Record, optional, default = {}): An object of filters to apply to the file list query.\n - `include_raw_file` (boolean, optional, default = false): If set to true, includes the presigned URL for the raw file in the response.\n - `include_parsed_file` (boolean, optional, default = false): If set to true, includes the presigned URL for the parsed file in the response.\n\n- **Returns**: A promise that resolves to an `GetUserFilesResponse` object with the following properties:\n\n - status (number): The HTTP status code of the response.\n - data (object or null):\n - files (any[]): An array of user file data objects.\n - error (string or null): An error message if there are issues with fetching user files.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function fetchUserFiles() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n limit: 5,\n order_by: 'created_at',\n order_dir: 'desc',\n };\n\n try {\n const response = await Carbon.getUserFiles(params);\n\n if (response.status === 200) {\n console.log('Fetched user files:', response.data.files);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error fetching user files:', err.message);\n }\n }\n\n fetchUserFiles();\n ```\n\n### 17. deleteTags()\n\n- **Description**: This function removes specified tags from a user file within the given organization. The method sends a request to the Carbon service to delete the provided tags from the file associated with the `organizationUserFileId`.\n\n- **Parameters**: The `deleteTags()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `organizationUserFileId` (number): The unique identifier of the user file within the organization.\n - `tags` (string[]): An array of tag names to be deleted from the user file.\n\n- **Returns**: A promise that resolves to an `DeleteTagsResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data received from the Carbon service after the tags have been deleted.\n - `error` (string or null): An error message in case there are issues with the deletion of tags from the user file.\n\n- **Usage**: Below is an example of how to use the `generateAccessToken()` method\n\n ```javascript\n const Carbon = require('carbon-connect-js');\n\n async function fetchAccessToken() {\n try {\n const response = await Carbon.generateAccessToken({\n apiKey: 'your_api_key',\n customerId: 'your_customer_id',\n });\n\n if (response.status === 200) {\n console.log('Access token:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error:', err);\n }\n }\n\n fetchAccessToken();\n ```\n\n### 18. fetchUrls()\n\n- **Description**: This method retrieves all URLs from a specified web page. It initiates a GET request to the Carbon service with the target URL as a parameter. The Carbon service will then access the content of the specified web page and parse it to extract all the URLs.\n\n- **Parameters**: The `fetchUrls()` method requires an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `url` (string): The URL of the web page from which the links should be fetched.\n\n- **Returns**: A promise that resolves to an `AccessTokenResponse` object comprising the following properties:\n\n - status (number): The HTTP status code of the response.\n - data (object or null): The response data object containing the extracted URLs and potentially the raw HTML content.\n - urls (string[]): A list of URLs extracted from the web page.\n - html_content (string or null): The raw HTML content of the fetched web page (if provided by the Carbon service).\n - error (string or null): An error message in case there are issues with fetching the URLs.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveUrls() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n url: 'https://www.example.com', // replace with actual URL\n };\n\n try {\n const response = await Carbon.fetchUrls(params);\n\n if (response.status === 200) {\n console.log('Fetched URLs successfully:', response.data.urls);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error fetching URLs:', err.message);\n }\n }\n\n retrieveUrls();\n ```\n\n### 19. searchUrls()\n\n- **Description**: This method conducts a search for URLs based on the provided query string.\n\n As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following:\n\n - https://tomrenz.substack.com/p/mrna-and-why-it-matters\n - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/\n - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/\n - https://joomi.substack.com/p/were-still-being-misled-about-how\n\n Subsequently, you can submit these links to the `web_scrape` endpoint in order to retrieve the content of the respective web pages.\n\n- **Parameters**: The `searchUrls()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `query` (string): The search term or query for which URLs are to be discovered.\n\n- **Returns**: A promise that resolves to an `SearchUrlsForQueryResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data object containing the discovered URLs.\n - `urls` (string[]): A list of URLs associated with the search query.\n - `html_content` (null): A null value is returned.\n - `error` (string or null): An error message if there are any issues with the URL search.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveSearchResults() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n query: 'example search term', // replace with actual query\n };\n\n try {\n const response = await Carbon.searchUrls(params);\n\n if (response.status === 200) {\n console.log('Search results:', response.data.urls);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during search:', err.message);\n }\n }\n\n retrieveSearchResults();\n ```\n\n### 20. fetchYoutubeTranscript()\n\n- **Description**: This method retrieves the transcript for a specific YouTube video.\n\n **Example:**Β In the URLΒ https://www.youtube.com/watch?v=_Nq2m5LRQ3g&t=1080s, the video id isΒ `_Nq2m5LRQ3`\n\n- **Parameters**: The `fetchYoutubeTranscript()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `videoId` (string): The unique identifier of the YouTube video.\n - `raw` (boolean, optional): A flag indicating whether to fetch the raw transcript (default is false, indicating that only the processed transcript is fetched).\n\n- **Returns**: A promise that resolves to an `FetchYoutubeTranscriptsResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data object containing the transcript information.\n - `error` (string or null): An error message if there are any issues with fetching the transcript.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveTranscript() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n videoId: 'YOUR_YOUTUBE_VIDEO_ID',\n raw: true,\n };\n\n try {\n const response = await Carbon.fetchYoutubeTranscript(params);\n\n if (response.status === 200) {\n console.log('Transcript data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during transcript fetch:', err.message);\n }\n }\n\n retrieveTranscript();\n ```\n\n### 21. getEmbeddingsfetchUrls()\n\n- **Description**: This method is utilized to retrieve embeddings based on a provided query.\n\n- **Parameters**: The `getEmbeddings()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `query` (string): The search query.\n - `queryVector` (number[] or null, optional): The query vector.\n - `k` (number): The number of nearest embeddings to retrieve.\n - `filesIds` (number[] or null, optional): An array of file IDs.\n - `parentFileIds` (number[] or null, optional): An array of parent file IDs.\n - `tags` (Record or null, optional): Tags associated with the embeddings.\n - `includeTags` (boolean or null, optional): A flag to include tags.\n - `includeVectors` (boolean or null, optional): A flag to include vectors.\n - `includeRawFile` (boolean or null, optional): A flag to include raw file.\n - `hybridSearch` (boolean or null, optional): A flag to indicate hybrid search.\n - `hybridSearchTuningParameters` (HybridSearchParams or null, optional): Parameters for fine-tuning hybrid search. The following properties are available:\n - `weightA`\n - `weightB`\n\n- **Returns**: A promise that resolves to an `GetEmbeddingsResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data containing the embeddings information.\n - `error` (string or null): An error message if there's an issue fetching the embeddings.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveEmbeddings() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n query: 'YOUR_SEARCH_QUERY',\n k: 5, // Example: retrieve 5 nearest embeddings.\n // Add other parameters as needed\n };\n\n try {\n const response = await Carbon.getEmbeddings(params);\n\n if (response.status === 200) {\n console.log('Embeddings data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during embeddings fetch:', err.message);\n }\n }\n\n retrieveEmbeddings();\n ```\n\n### 22. getTextChunks()\n\n- **Description**: This method fetches text chunks based on the specified user file ID and other optional parameters.\n\n- **Parameters**: The `getTextChunks()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `userFileId` (number): ID of the user file for which text chunks are being fetched.\n - `limit` (number, optional): Maximum number of text chunks to retrieve. Defaults to 10.\n - `offset` (number, optional): The number to start the fetch from. Useful for pagination. Defaults to 0.\n - `orderBy` (string, optional): The column name to order the results by. Defaults to 'updated_at'.\n - `orderDir` (string, optional): Direction of the order ('asc' or 'desc'). Defaults to 'asc'.\n - `includeVectors` (boolean, optional): Flag to indicate whether to include vectors in the response. Defaults to false.\n\n- **Returns**: A promise that resolves to an `GetTextChunksResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data containing the text chunks information.\n - `error` (string or null): Error message if there's an issue fetching the text chunks.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveTextChunks() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n userFileId: 12345, // Replace with actual user file ID.\n limit: 5, // Example: retrieve 5 text chunks.\n // Add other parameters as needed\n };\n\n try {\n const response = await Carbon.getTextChunks(params);\n\n if (response.status === 200) {\n console.log('Text chunks data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during text chunks fetch:', err.message);\n }\n }\n\n retrieveTextChunks();\n ```\n\n### 23. getUserDataSources()\n\n- **Description**: This method retrieves user data sources based on the provided parameters.\n\n- **Parameters**: The `getUserDataSources()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `limit` (number, optional): The maximum number of data sources to retrieve. Defaults to 10.\n - `offset` (number, optional): The starting point for the fetch, useful for pagination. Defaults to 0.\n - `orderBy` (string, optional): The column name to order the results by. Defaults to 'updated_at'.\n - `orderDir` (string, optional): The direction of the order ('asc' or 'desc'). Defaults to 'asc'.\n - `sourceType` (string, optional): The type of data source to filter the results by.\n - `sourceIds` (number[] or null, optional): An array of specific data source IDs to retrieve.\n - `revokedAccess` (boolean or null, optional): A flag to filter data sources based on revoked access.\n\n- **Returns**: A promise that resolves to an `AccessTokenResponse` object with the following properties:\n\n - status (number): The HTTP status code of the response.\n - data (object or null): The response data containing user data sources information.\n - error (string or null): An error message if there's an issue fetching the user data sources.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function retrieveUserDataSources() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n limit: 5, // Example: retrieve 5 data sources.\n // Add other parameters as needed\n };\n\n try {\n const response = await Carbon.getUserDataSources(params);\n\n if (response.status === 200) {\n console.log('User data sources data:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error(\n 'Unexpected error during user data sources fetch:',\n err.message\n );\n }\n }\n\n retrieveUserDataSources();\n ```\n\n### 24. revokeAccessToDataSource()\n\n- **Description**: This method revokes user access to a specified data source. The user will need to re-authenticate after access is revoked.\n\n- **Parameters**: The `revokeAccessToDataSource()` method accepts an object with the following properties:\n\n - `accessToken` (string): The access token obtained through authentication.\n - `dataSourceId` (number): The ID of the data source for which access should be revoked.\n\n- **Returns**: A promise that resolves to an `RevokeAccessToDataSourceResponse` object with the following properties:\n\n - `status` (number): The HTTP status code of the response.\n - `data` (object or null): The response data indicating the outcome of the access revocation request.\n - `error` (string or null): An error message if there are any issues with revoking access to the data source.\n\n- **Usage**:\n\n ```javascript\n import * as Carbon from 'carbon-connect-js';\n\n async function revokeDataSourceAccess() {\n const params = {\n accessToken: 'YOUR_ACCESS_TOKEN',\n dataSourceId: 12345, // Example: data source ID to revoke access to.\n };\n\n try {\n const response = await Carbon.revokeAccessToDataSource(params);\n\n if (response.status === 200) {\n console.log('Successfully revoked access:', response.data);\n } else {\n console.error('Error:', response.error);\n }\n } catch (err) {\n console.error('Unexpected error during access revocation:', err.message);\n }\n }\n\n revokeDataSourceAccess();\n ```\n\n# Prebuilt Component\n\n---\n\n## Installation\n\n---\n\nTo install Carbon Connect as a prebuilt React component, use npm as follows:\n\n```bash\nnpm install carbon-connect\n```\n\n## Prerequisites\n\n---\n\nThe package expects the following npm packages to be installed in your project:\n\n1. `@radix-ui/react-dialog`\n2. `\"lodash\": \"^4.17.21`\n3. `react`\n4. `react-dom`\n5. `react-drag-drop-files`\n6. `react-icons`\n7. `react-toastify`\n8. `tailwindcss`\n\nPlease check for the versions from `package.json` if you encounter a version mismatch error.\n\n## Component Properties\n\n---\n\nThe `CarbonConnect` component accepts the following properties:\n\n| Property | Type | Required? | Description |\n| -------------------------- | --------------- | --------- | ----------------------------------------------------------------------------------------------------------------------- |\n| `brandIcon` | String | Yes | A URL or a local path to your organization's brand icon. |\n| `orgName` | String | Yes | The name of your organization. This is displayed in the initial announcement modal view. |\n| `tokenFetcher` | Function | Yes | A function that returns a promise which resolves with the access and refresh tokens. |\n| `onSuccess` | Function | No | A callback function that will be called after the file upload is successful. |\n| `onError` | Function | No | A callback function that will be called if there is any error in the file upload. |\n| `children` | React Node(JSX) | No | You can pass any valid React node that will be used as a trigger to open the component. |\n| `entryPoint` | String | No | The initial active step when the component loads. Default entry point is 'LOCAL_FILES'. More integrations are upcoming. |\n| `maxFileSize` | Number | No | Maximum file size in bytes that is allowed to be uploaded. Defaults to 10 MB |\n| `tags` | Object | No | Any additional data you want to associate with the component's state, such as an app ID. |\n| `enabledIntegrations` | dict | No | Let's you choose which 3rd party integrations to show. See below for more details about this prop |\n| `primaryBackgroundColor` | String | No | The primary background color of the component. Defaults to `#000000`. |\n| `primaryTextColor` | String | No | The primary text color of the component. Defaults to `#FFFFFF`. |\n| `secondaryBackgroundColor` | String | No | The secondary background color of the component. Defaults to `#FFFFFF`. |\n| `secondaryTextColor` | String | No | The secondary text color of the component. Defaults to `#000000`. |\n| `allowMultipleFiles` | Boolean | No | Whether or not to allow multiple files to be uploaded at once. Defaults to `false`. |\n| `chunkSize` | Number | No | The no.of tokens per chunk. Defaults to 1500. |\n| `overlapSize` | Number | No | The no.of tokens to overlap between chunks. Defaults to 20. |\n| `open` | Boolean | No | Whether or not to open the component. Defaults to `false`. |\n| `setOpen` | Function | No | A function that will be called to set the open state of the component. Defaults to `None`. |\n| `alwaysOpen` | Boolean | No | Whether or not to always keep the component open. Defaults to `false`. |\n| `tosURL` | String | No | A URL to your organization's terms of service. Defaults to `https://carbon.ai/terms`. |\n| `privacyPolicyURL` | String | No | A URL to your organization's privacy policy. Defaults to `https://carbon.ai/privacy`. |\n| `navigateBackURL` | String | No | A URL to your intended destination. Defaults to `None`. |\n| `backButtonText` | String | No | The label that you want to show on the back button. Defaults to `Go back` |\n\nWhen you do not pass `open` or `setOpen`, CC will manage the open state internally. If you pass `open` and `setOpen`, you will have to manage the open state yourself.\n\n### Note about Google Drive\n\nOur oAuth app is in approval phase. your users will see a warning message when they try to connect their Google account. Please ignore the warning and proceed to connect your account. We will update this section once our app is approved.\n\n## Usage\n\n---\n\nThis section demonstrates how to integrate the CarbonConnect component within a Next.js project.\n\n### Client Side Configuration\n\n1. Import necessary libraries and components:\n\n```jsx\nimport { CarbonConnect } from 'carbon-connect';\nimport axios from 'axios';\n```\n\n2. Token Retrieval:\n The tokenFetcher function is set up to request access tokens from Carbon directly via your backend:\n\n```js\nconst tokenFetcher = async () => {\n const response = await axios.get('/api/auth/fetchCarbonTokens', {\n params: { customer_id: 'your_customer_id' },\n });\n return response.data; // Must return data containing access_token\n};\n```\n In the example above, tokenFetcher is a helper function that retrieves the necessary tokens for authentication. This function should be implemented in your client-side code and is designed to make a request to an API on your backend server. The API then requests tokens from the Carbon token creation endpoint. The Carbon token creation endpoint is a secure endpoint that requires a valid API key and customer ID. The customer ID is a unique identifier for your end-user, and you can pass any string as the customer ID. The API key is a secret key provided to you by Carbon. Please contact us to obtain your API key.\n\n3. Implement CarbonConnect Component:\n Here's a concise usage example. Customize according to your requirements:\n\n```jsx\n console.log('Data on Success: ', data)}\n onError={(error) => console.log('Data on Error: ', error)}\n primaryBackgroundColor=\"#F2F2F2\"\n primaryTextColor=\"#555555\"\n secondaryBackgroundColor=\"#f2f2f2\"\n secondaryTextColor=\"#000000\"\n allowMultipleFiles={true}\n open={true}\n chunkSize={1500}\n overlapSize={20}\n // entryPoint=\"LOCAL_FILES\"\n>\n```\n\n### Server Side Configuration\n\nYour backend should handle token requests like this:\n\n```js\nconst response = await axios.get('https://api.carbon.ai/auth/v1/access_token', {\n headers: {\n 'Content-Type': 'application/json',\n 'customer-id': '',\n authorization: 'Bearer ',\n },\n});\nif (response.status === 200 && response.data) {\n res.status(200).json(response.data);\n}\n```\n\n### Return Value Expectation:\n\nEnsure that your tokenFetcher returns an object structured as:\n\n```js\n{\n access_token: string;\n}\n```\n\n## Enable Data Sources\n\n---\n\nAnother important prop is enabledIntegrations. This prop lets you choose which integrations to show in the component. You can also pass additional configuration for each integration. We have provided an example in the above code snippet. Here is the list of all the integrations that you can enable:\n\n1. `LOCAL_FILES`: This integration lets you upload files from your local machine. You can pass the following configuration for this integration:\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `maxFileSize`: This is the maximum file size in bytes that is allowed to be uploaded. Defaults to 10 MB.\n - `allowMultipleFiles`: Whether or not to allow multiple files to be uploaded at once. Defaults to `false`.\n - `maxFilesCount`: This is the maximum no.of files that can be uploaded at once. Defaults to 10.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n - `allowedFileTypes`: This is an array of objects. Each object represents a file type that is allowed to be uploaded. Each object can have the following properties:\n - `extension`: The file extension of the file type. This is a required property.\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n2. `NOTION`: This integration lets you upload files from your notion account. You can pass the following configuration for this integration\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n3. `WEB_SCRAPER`: This integration lets you scrape URLs. You can pass the following configuration for this integration:\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `recursionDepth`: This is the depth of recursion. Defaults to 3. If you do not want recursion to happen, please pass 1. Passing 0 will scrape recursively until the maxPagesToScrape limit is reached.\n - `maxPagesToScrape`: This is the maximum no.of pages to scrape. Defaults to 100.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n4. `GOOGLE_DRIVE`: This integration lets you upload files from your Google Drive. You can pass the following configuration for this integration:\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n5. `INTERCOM`: This integration lets you select pages from your Intercom. You can pass the following configuration for this integration:\n\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n6. `DROPBOX`: This integration lets you upload files from your Dropbox. You can pass the following configuration for this integration:\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n7. `ONEDRIVE`: This integration lets you upload files from your Onedrive. You can pass the following configuration for this integration:\n - `chunkSize`: This is the no.of tokens per chunk. Defaults to 1500.\n - `overlapSize`: This is the size of the overlap in tokens. Defaults to 20.\n - `skipEmbeddingGeneration`: Whether or not to skip embeddings generation. Defaults to `false`.\n\n## Callback Function Props\n\n---\n\n1. `onError`: CC will also call another call back method if there is an error while uploading file. This function will pass data in the following format:\n\n```js\n{\n status: 400,\n action: 'UPDATE',\n event: 'UPDATE',\n integration: ``, // 'LOCAL_FILES' or 'WEB_SCRAPER',\n data: ``, // This field will be present only if the error is related to a file or web scraper\n}\n```\n\n2. `onSuccess`: You can let CC trigger a callback function upon successful file upload, 3rd party account connection and file selection, Webscraping request initiation.\n\n ### `onSuccess`` Event Types\n\n 1. `INITIATE`: This event type is triggered when a user enters the integration flow (either for auth or file selection)\n 2. `ADD`: This event type is triggered when a user authenticates an account under an integration.\n 3. `UPDATE`: This event type is triggered when a user adds or removes files for an integration. We’ll list the files added or removed.\n 4. `CANCEL`: This event type is triggered when when a user exits the integration flow without taking any action.\n\n\n ### Data passed to `onSuccess` callback\n\n The data passed to the onSuccess callback prop will be:\n\n 1. For `LOCAL_FILES`: \n\n ```js\n {\n status: 200,\n data: {\n \"data_source_external_id\": null, // This field is not applicable for local files\n \"sync_status\": null, // This is not applicable for local files\n \"files\": , (Refer to the file object format below)\n },\n action: 'UPDATE'\n event: 'UPDATE'\n integration: 'LOCAL_FILES',\n }\n ```\n\n 2. For `WEB_SCRAPER`: An array containing only one object in the following format\n\n ```js\n {\n status: 200,\n data: {\n \"data_source_external_id\": null, // This field is not applicable for webscrapers\n \"sync_status\": null, // This is not applicable for webscrapers\n \"files\": , (Refer to the file object format below)\n },\n action: 'UPDATE'\n event: 'UPDATE'\n integration: 'WEB_SCRAPER',\n }\n\n ```\n\n 3. For third party integrations: An array of objects. Each object will be in the following format:\n\n ```js\n {\n status: 200,\n data: {\n \"data_source_external_id\": ,\n \"sync_status\": ,\n \"files\": ,\n } or null,\n action: , // `ACTION_TYPE` can be one of the following: `INITIATE`, `ADD`, `UPDATE`, `CANCEL`\n event: , // `EVENT_TYPE` can be one of the following: `INITIATE`, `ADD`, `UPDATE`, `CANCEL`\n integration: , // `INTEGRATION_NAME` can be one of the following: `LOCAL_FILES`, `NOTION`, `WEB_SCRAPER`, `GOOGLE_DRIVE`, `INTERCOM`, `DROPBOX`, `ONEDRIVE`\n }\n ```\n\n Each file object will be in the following format:\n\n ```js\n {\n \"id\": `Unique ID for the file, can be used for resyncing, deleting, updating tags etc.`,\n \"source\": ``, // One among `LOCAL_FILES`, `NOTION`, `WEB_SCRAPER`, `GOOGLE_DRIVE`, `INTERCOM`, `DROPBOX`, `ONEDRIVE`\n \"organization_id\": ``, // This is your unique organization id in carbon\n \"organization_supplied_user_id\": ``, // This is the unique user id that you pass to CC\n \"organization_user_data_source_id\": ``, // This is the unique user data source id that CC creates for each user for each integration\n \"external_file_id\": ``, // This is the unique file id in the 3rd party integration\n \"external_url\": ``, // This is the unique url of the file in the 3rd party integration\n \"sync_status\": ``, // This is the sync status of the file. It can be one of the following: `READY`, `QUEUED_FOR_SYNCING`, `SYNCING`, `SYNC_ERROR`\n \"last_sync\": ``, // This is the timestamp of the last sync\n \"tags\": ``, // These are the tags passed in to CC\n \"file_statistics\": ``, // This is the file statistics object\n \"file_metadata\": ``, // This is the file metadata object\n \"chunk_size\": ``, // This is the chunk size used for the file\n \"chunk_overlap\": ``, // This is the chunk overlap used for the file\n \"name\": ``, // This is the name of the file\n \"enable_auto_sync\": ``, // This is the auto sync status of the file. This is a boolean flag\n \"presigned_url\": ``, // This is the presigned url of the file\n \"parsed_text_url\": ``, // This is the parsed text url of the file\n \"skip_embedding_generation\": ``, // This is the skip embedding generation status of the file. This is a boolean flag\n \"created_at\": ``, // This is the timestamp of the file creation\n \"updated_at\": ``, // This is the timestamp of the file updation\n \"action\": ``, // This is the action type. It can be one of the following: `ADD`, `UPDATE`, `REMOVE`\n }\n ```\n" + }, + { + "name": "Health", + "description": "\n---\nUse this endpoint to check the status of the API. A `200` response indicates that the Carbon API is up.\n\nYou can also check for the health of our services on our [Status Page](https://status.carbon.ai/).\n" + }, + { + "name": "Auth", + "description": "\n---\n" + }, + { + "name": "Users", + "description": "\n---\n" + }, + { + "name": "Files", + "description": "\n---\nUtilize these API endpoints to manage user documents. Whether the data is sourced from third-party integrations, web pages, or file uploads, Carbon maintains consistency by standardizing all documents as \"files\" within our data model.\n\nCarbon supports the following file formats:\n\n### Text\n- `pdf`\n- `xlsx`\n- `csv`\n- `docx`\n- `txt`\n- `md`\n- `rtf`\n- `tsv`\n- `pptx`\n- `json` (Coming Soon)\n\n### Audio\n- `mp3`\n- `mp4`\n- `mp2`\n- `aac`\n- `wav`\n- `flac`\n- `pcm`\n- `m4a`\n- `ogg`\n- `opus`\n- `webm`\n\n### Images\n- `jpg`\n- `png`\n" + }, + { + "name": "Embeddings", + "description": "\n---\nEmploy these endpoints for direct vector searches within our managed vector database or to fetch embeddings for storage in your custom vector store. Additionally, we offer hybrid support for keyword-based searches.\n" + }, + { + "name": "Data Sources", + "description": "\n---\nCarbon facilitates user connections and content synchronization with third-party applications. We manage authentication, ingestion, parsing, and sync scheduling. Within Carbon, content from third-party applications is uniformly categorized as \"files\" within our data model. \n\nCarbon also supports websites as a data source (see [here](https://api.carbon.ai/redoc#tag/Data-Sources/operation/web_scrape_web_scrape_post)).\n\n# Google Drive\nThe Carbon Connect `enabledIntegrations` value for Google Drive is `GOOGLE_DRIVE`. Google Slides, Google Docs and Google Sheets are supported with our Google Drive integration, along with regular text, audio and image files.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)** to connect to Google workspace.\n\n## Authorization Flow\n\n**Carbon's Google Drive integration is still pending approval from Google. In the meantime, end users are required to take a couple additional steps to connect their accounts (see gif below).**\n\n![](https://files.readme.io/19f57f6-Carbon_-_Google_OAuth_Flow.gif)\n\nLog into your Google Drive account.\n![](https://i.ibb.co/wQsyjrV/Screen-Shot-2023-08-11-at-2-04-49-PM.png)\n\nOnce you've successfully authenticated your account, you can select files directly.\n![](https://i.ibb.co/wYs9Xbp/image.png)\n\nClick \"Select\" after selecting files to grant Carbon access to files.\n![](https://i.ibb.co/1fSzKHS/image.png)\n\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. Go to `APIs and Services` > `Enabled APIs and Services` in your Google Cloud console, then click on the button titled `ENABLE APIS AND SERVICES` and enable `Google Drive API` and `Google Picker API`.\n2. Then create an `OAuth Client ID` in the `Credentials section` under `Google Drive API`. Select `Web Application` as the Application type and give it an identifiable name for your reference.\n\n![](https://files.readme.io/e7f42e5-image.png)\n\n3. Add [https://api.carbon.ai](https://api.carbon.ai/) as the `Authorized JS origin` and as an `Authorized redirect URI`.\n\n![](https://files.readme.io/60d16d3-image.png)\n\n4. Save the credentials. Download the credentials.json file once you save the OAuth Client ID data and share the file with Carbon.\n\n![](https://files.readme.io/f265775-image.png)\n\n5. Then create an `API key` in the `Credentials section` under `Google Picker API`. Restrict the application to websites and then add [https://api.carbon.ai](https://api.carbon.ai/) to the list under website restrictions. For `API Restrictions`, pick `Restrict key` and select `Google Picker API` from the list.\n\n6. Save the API key. Copy the API key and share it with Carbon.\n\n7. Configure your consent screen in the OAuth Consent Screen. Provide your **App name**, **support email address**, and **brand logo**. Add [carbon.ai](http://carbon.ai/) to `Authorized domain`.\n\n![](https://files.readme.io/33ebd01-image.png)\n\n![](https://files.readme.io/6d7f247-image.png)\n\n\n8. Click on `Add or Remove Scopes` button to add the following scopes: `userinfo.profile`, `userinfo.email`, `drive.readonly`, `drive.metadata.readonly`\n\n![](https://files.readme.io/6649d66-image.png)\n![](https://i.ibb.co/PNRnYwV/Screen-Shot-2023-08-11-at-2-11-51-PM.png)\n\n9. If you wish to add test users, you can do so. These users will not see the \"App is unverified\" notification. Other users will see this alert.\n10. Click `Publish App` to make this app available to your end-users.\n\n![](https://files.readme.io/d24c355-image.png)\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove Google Drive files and folders via the Google Drive picker. When a user selects a folder to be synced, we auto-sync all files added to the folder as well.\n\nYou can use the `resync_file` API endpoint to programmatically resync specific Google Drive files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs.\n\n# Dropbox\nThe Carbon Connect `enabledIntegrations` value for Dropbox is `DROPBOX`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.dropbox.com/oauth-guide)** to connect to Dropbox.\n\n## Authorization Flow\n\nLog into your Dropbox account.\n![](https://files.readme.io/9427ebb-image.png)\n\nOnce you've successfully authenticated your account, you can select files directly.\n![](https://files.readme.io/0efd7b0-image.png)\n\nClick \"Choose\" after selecting files to grant Carbon access to files.\n![](https://files.readme.io/9c32acb-image.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. Sign up on [Dropbox Developers](https://www.dropbox.com/developers) and create a new app with `Full Dropbox` access.\n\n![](https://i.ibb.co/fdrPky4/Screen-Shot-2023-09-08-at-12-39-39-PM.png)\n\n2. Copy and share the `App key` and `App secret` under the `Settings` tab with us.\n\n![](https://i.ibb.co/QmR2WXb/Screen-Shot-2023-09-08-at-1-06-46-PM.png)\n\n3. Add as a `Redirect URIs` and [carbon.ai](carbon.ai) as the `Chooser / Saver / Embedder domains`.\n\n![](https://i.ibb.co/5vR8zgf/Screen-Shot-2023-09-08-at-1-15-17-PM.png)\n\n4. Configure your app details under the `Branding` tab. These details will appear on the OAuth Consent Screen as well. Provide your **App name**, **Publisher**, and **App icons**. \n\n![](https://i.ibb.co/wYj1LL7/Screen-Shot-2023-09-08-at-1-10-10-PM.png)\n\n5. Under the `Permissions` tab, add the following scopes: `account_info.read`, `files.metadata.read`, and `files.content.read`.\n\n![](https://i.ibb.co/xSzhgYC/Screen-Shot-2023-09-08-at-1-03-32-PM.png)\n\n6. Click `Apply for Production` under the `Settings` tab to make this app available to your end-users.\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from Dropbox.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the Dropbox file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific Dropbox files. To delete Dropbox files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for Dropbox by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# Intercom\n\nThe Carbon Connect `enabledIntegrations` value for Intercom is `INTERCOM`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.intercom.com/building-apps/docs/setting-up-oauth)** to connect to Intercom workspaces.\n\n## Authorization Flow\n\n![](https://files.readme.io/d72b15d-image.png)\n\n![](https://files.readme.io/c2825e3-image.png)\n\n## Functionality\n\nCarbon syncs all `Published` articles under a single Intercom workspace. Any `Draft` article won't be synced. We currently support only having a single Intercom workspace connected per `customer_id`.\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. After you create or log into your [Intercom Developer](https://developers.intercom.com/) account, click `New App` to create your own app.\n\n![](https://i.ibb.co/Y3Nmh4r/Screen-Shot-2023-09-11-at-5-06-46-PM.png)\n\n2. Under the `Authentication` tab, click `Edit` -> `Use OAuth` -> `Add redirect URL` and then enter https://api.carbon.ai/integrations/intercom.\n\n![](https://i.ibb.co/pfzG9VJ/Screen-Shot-2023-09-11-at-5-17-47-PM.png)\n\n3. Under the `Authentication` tab, click `Edit` and then add permissions for `Read one admin`, `Read and List Articles`, and `Read and Write Articles`. You can remove access to the other permissions.\n\n![](https://i.ibb.co/L9BxJFK/Screen-Shot-2023-09-11-at-5-21-01-PM.png)\n\n4. Under the `Basic Info` tab, share the `Client ID` and `Client secret` with us via Slack.\n\n![](https://i.ibb.co/wCnVcQq/Screen-Shot-2023-09-11-at-5-25-39-PM.png)\n\n5. Under the `Basic Info` tab, add an `App icon` and `App name`.\n\n![](https://i.ibb.co/HqS9bhk/Screen-Shot-2023-09-11-at-5-47-31-PM.png)\n\n6. Click `Test and publish` -> `Submit for review` and fill in the details require to publish your app. After your app is approved, then we can enable the white labeling.\n\n![](https://i.ibb.co/Cm0xWBF/Screen-Shot-2023-09-11-at-5-51-09-PM.png)\n\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove pages via the Intercom OAuth flow. You can use the `resync_file` API endpoint to programmatically resync specific Intercom files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs.\n\n# Notion\n\nThe Carbon Connect `enabledIntegrations` value for Notion is `NOTION`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.notion.com/docs/authorization)** to connect to Notion workspaces.\n\n## Authorization Flow\n\n![](https://files.readme.io/0fa801d-image.png)\n\n![](https://files.readme.io/f72df4f-image.png)\n\n## Functionality\n\nCarbon enables end-users to select top-level pages for synchronization and automatically syncs all sub-pages. For instance, a top-level Company page may contain sub-pages for **`Company Benefits`** and **`PTO Policy`**. Once the end-user selects the Company page in the Authorization flow, Carbon automatically includes the sub-pages **`Company Benefits`** or **`PTO Policy`** to be synced.\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove pages via the Notion OAuth flow. You can use the `resync_file` API endpoint to programmatically resync specific Notion files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs. \n\nWhen a user adds a nested page or database record under a selected Notion page, we auto-sync those documents as well.\n\n# OneDrive\n\nThe Carbon Connect `enabledIntegrations` value for OneDrive is `ONEDRIVE`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/msa-oauth?view=odsp-graph-online)** to connect to OneDrive.\n\n## Authorization Flow\n\nLog into your Microsoft account.\n![](https://i.ibb.co/86FPknL/Screen-Shot-2023-08-31-at-4-41-48-PM.png)\n\nClick the \"Confirm\" button to grant us permission to access OneDrive.\n![](https://i.ibb.co/BqxmsJG/2880x1628.png)\n\nClick the \"Select Files from OneDrive\" button to open up the OneDrive file selector.\n![](https://i.ibb.co/Sm90PHL/Screen-Shot-2023-08-31-at-4-32-37-PM.png)\n\nClick \"Select\" after selecting files to grant Carbon access to files.\n![](https://i.ibb.co/t4Kchcv/Screen-Shot-2023-08-31-at-4-35-33-PM.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n#### Setting up the OAuth App\n\n1. Create or log into your [Microsoft Azure](https://portal.azure.com/) Account.\n\n2. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n4. Add https://api.carbon.ai/integrations/onedrive as the `Redirect URI` and select `Web` under the `Select a platform` dropdown. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/integrations/onedrive`.\n\n![](https://i.ibb.co/9NTZycz/Screen-Shot-2023-09-08-at-2-59-16-PM.png)\n\n5. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `offline_access`, `openid`, and `User.Read`.\n\n![](https://i.ibb.co/VTGK90Z/Onedrive-1.png)\n\n6. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n7. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n![](https://i.ibb.co/KGWzr1H/Screen-Shot-2023-09-12-at-11-14-08-PM.png)\n\n8. Customize your app branding under `Manage` -> `Branding & properties`.\n\n![](https://i.ibb.co/HrS9Cxj/Screen-Shot-2023-09-08-at-3-24-16-PM.png)\n\n#### Setting up the File Picker UI\n\n1. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n2. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Under the `Authentication` tab, select `Add a Platform` -> `Single Page Application`. \n\n![](https://i.ibb.co/nLDdQfP/Screen-Shot-2023-09-13-at-3-03-00-PM.png)\n\n4. For the `Redirect URI` of the `Single Page Application`, you can use https://api.carbon.ai/static/loading.html or add a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/static/loading.html`.\n\n![](https://i.ibb.co/0X5Nkz7/Screen-Shot-2023-09-13-at-3-13-53-PM.png)\n\n5. Under the `Authentciation`'s `Implicit grant and hybrid flows` section, check `Access tokens (used for implicit flows)` and `ID tokens (used for implicit and hybrid flows)`.\n\n![](https://i.ibb.co/ckVKZgV/Screen-Shot-2023-09-13-at-3-17-44-PM.png)\n\n6. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `Sites.Read.All`, `User.Read`, `AllSites.Read`, and `MyFiles.Read`.\n\n![](https://i.ibb.co/xjtvKTg/Screen-Shot-2023-09-13-at-3-22-12-PM.png)\n\n7. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n8. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from OneDrive.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the OneDrive file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific OneDrive files. To delete OneDrive files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for OneDrive by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# SharePoint\n\nThe Carbon Connect `enabledIntegrations` value for SharePoint is `SHAREPOINT`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://learn.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/msa-oauth?view=odsp-graph-online)** to connect to SharePoint.\n\n## Authorization Flow\n\nEnter your Sharepoint `tenant` and `site name`. For example, if the SharePoint site URL is `https://jasoncarbon.sharepoint.com/sites/carbon-dev`, `jasoncarbon` is the tenant and `carbon-dev` is the site name.\n\n![](https://i.ibb.co/sgW9vfQ/Screen-Shot-2023-10-24-at-11-45-21-AM.png)\n\nLog into your Microsoft SharePoint account.\n![](https://i.ibb.co/86FPknL/Screen-Shot-2023-08-31-at-4-41-48-PM.png)\n\nClick the \"Confirm\" button to grant us permission to access SharePoint.\n![](https://i.ibb.co/x6L7knS/Screen-Shot-2023-10-24-at-11-45-27-AM.png)\n\nOnce clicking \"Confirm\", you will be taken through a flow to grant permissions.\n![](https://i.ibb.co/HTqCBVR/Screen-Shot-2023-10-24-at-1-00-08-PM.png)\n\nClick the \"Select Files from SharePoint\" button to open up the SharePoint file selector.\n![](https://i.ibb.co/6tn24b3/Screen-Shot-2023-10-24-at-1-00-20-PM.png)\n\nClick \"Select\" after selecting files to grant Carbon access to files.\n![](https://i.ibb.co/WVTwT9P/Screen-Shot-2023-10-24-at-11-45-39-AM.png)\n\nYou'll see a screen confirming that your files have been added.\n![](https://i.ibb.co/nwSRcSS/Screen-Shot-2023-10-24-at-11-45-11-AM.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n#### Setting up the OAuth App\n\n1. Create or log into your [Microsoft Azure](https://portal.azure.com/) Account.\n\n2. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n4. Add https://api.carbon.ai/integrations/onedrive and https://api.carbon.ai/integrations/sharepoint to `Redirect URI` and select `Web` under the `Select a platform` dropdown. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain paths must still be `/integrations/onedrive` and `/integrations/sharepoint`.\n\n![](https://i.ibb.co/9NTZycz/Screen-Shot-2023-09-08-at-2-59-16-PM.png)\n\n5. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `offline_access`, `openid`, and `User.Read`.\n\n![](https://i.ibb.co/VTGK90Z/Onedrive-1.png)\n\n6. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n7. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n![](https://i.ibb.co/KGWzr1H/Screen-Shot-2023-09-12-at-11-14-08-PM.png)\n\n8. Customize your app branding under `Manage` -> `Branding & properties`.\n\n![](https://i.ibb.co/HrS9Cxj/Screen-Shot-2023-09-08-at-3-24-16-PM.png)\n\n#### Setting up the File Picker UI\n\n1. Under `Azure Services`, select `App Registration` -> `New registration`.\n\n![](https://i.ibb.co/qBLpg1r/Screen-Shot-2023-09-12-at-11-09-28-PM.png)\n\n2. Select `Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)` as the `Supported account types`.\n\n![](https://i.ibb.co/SPR4ztF/Screen-Shot-2023-09-08-at-2-52-56-PM.png)\n\n3. Under the `Authentication` tab, select `Add a Platform` -> `Single Page Application`. \n\n![](https://i.ibb.co/nLDdQfP/Screen-Shot-2023-09-13-at-3-03-00-PM.png)\n\n4. For the `Redirect URI` of the `Single Page Application`, you can use https://api.carbon.ai/static/loading.html or add a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/static/loading.html`.\n\n![](https://i.ibb.co/0X5Nkz7/Screen-Shot-2023-09-13-at-3-13-53-PM.png)\n\n5. Under the `Authentciation`'s `Implicit grant and hybrid flows` section, check `Access tokens (used for implicit flows)` and `ID tokens (used for implicit and hybrid flows)`.\n\n![](https://i.ibb.co/ckVKZgV/Screen-Shot-2023-09-13-at-3-17-44-PM.png)\n\n6. Under `Manage` -> `API permissions` add the permissions `Files.Read.All`, `Sites.Read.All`, `User.Read`, `AllSites.Read`, and `MyFiles.Read`.\n\n![](https://i.ibb.co/xjtvKTg/Screen-Shot-2023-09-13-at-3-22-12-PM.png)\n\n7. Under `Client credentials`, click `Add a certificate or secret` -> `New Client Secret`. Then copy the client secret’s `Value` and share it with us via Slack.\n\n![](https://i.ibb.co/0tghs0p/Screen-Shot-2023-09-08-at-3-13-30-PM.png)\n\n8. Navigate to the `Overview` tab then copy the `Application (client) ID` and share it with us via Slack.\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from SharePoint.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the SharePoint file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific SharePoint files. To delete SharePoint files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for SharePoint by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# Zotero\n\nThe Carbon Connect `enabledIntegrations` value for ZOTERO is `ZOTERO`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 1.0](https://www.zotero.org/support/dev/web_api/v2/oauth)** to connect to Zotero.\n\n## Authorization Flow\n\nLog into your Zotero account. \n![](https://i.ibb.co/sgnb9xC/Screen-Shot-2023-11-06-at-12-45-31-PM.png)\n\nClick the \"Accept Defaults\" button to grant us permission to access Zotero.\n![](https://i.ibb.co/sJbyWX7/Screen-Shot-2023-11-06-at-12-43-09-PM.png)\n\nOnce clicking \"Accept Defaults\", all Zotero files are synced and you should see the following confirmation:\n![](https://i.ibb.co/HLvPWK8/Screen-Shot-2023-11-06-at-12-42-42-PM.png)\n\n## Configuration\n\n### Custom OAuth Credentials\n\n#### Setting up the OAuth App\n\n1. Create or log into your [Zotero](https://www.zotero.org/) Account.\n\n2. Click [here](https://www.zotero.org/oauth/apps) to set up your OAuth app.\n\n![](https://i.ibb.co/rs41H7N/Screen-Shot-2023-11-06-at-2-41-13-PM.png)\n\n3. Click \"Register a New Application\" and fill out the info below. Add https://api.carbon.ai/integrations/zotero as the `Callback URL`. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/integrations/zotero`.\n\n![](https://i.ibb.co/5nBwgWT/Screen-Shot-2023-11-06-at-12-51-59-PM.png)\n\n4. Copy and share the Client Key and Client Secret with Carbon.\n\n![](https://i.ibb.co/cTkv51s/Screen-Shot-2023-11-06-at-2-46-20-PM.png)\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from Zotero.\n\n## Synchronization\n\nBy default, Carbon syncs all attachments from your Zotero library along with the accompanying info as metadata.\n\nYou can use the `resync_file` API endpoint to programmatically resync specific Zotero files. To delete Zotero files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for Zotero by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n# Box\n\nThe Carbon Connect `enabledIntegrations` value for Box is `BOX`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developer.box.com/guides/authentication/oauth2/)** to connect to Box.\n\n## Authorization Flow\n\nLog into your Box account.\n\n![](https://i.ibb.co/8gGpBdg/Screen-Shot-2023-09-08-at-1-34-42-PM.png)\n\nClick the \"Select Files from Box\" button to open up the Box file selector.\n![](https://i.ibb.co/K55H1rp/Screen-Shot-2023-09-08-at-1-38-15-PM.png)\n\nClick the checkmark after selecting files to grant Carbon access to files.\n\n*Limitations*: You can currently only upload individual file(s) via Box's file selector. If you'd like the ability the upload entire folders, please reach out to us on Slack. \n\n![](https://i.ibb.co/Zz2pDPm/Screen-Shot-2023-09-08-at-1-33-30-PM.png)\n\nYou'll receive a confirmation that your file(s) has been uploaded.\n\n![](https://i.ibb.co/ZTZQw03/Screen-Shot-2023-09-08-at-2-03-48-PM.png)\n\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. Sign up for an account under [Box Developer](https://developer.box.com/).\n\n2. Go to `My Apps`, then `Create New App` -> `Choose Custom App`.\n\n![](https://i.ibb.co/cQw41M9/Screen-Shot-2023-09-08-at-2-12-34-PM.png)\n\n2. Fill out the app details in the modal that opens.\n\n![](https://i.ibb.co/TPJpqny/Screen-Shot-2023-09-08-at-2-14-32-PM.png)\n\n3. Select User Auth with OAuth 2.0 in the following step.\n\n![](https://i.ibb.co/Hr3SJJ8/Screen-Shot-2023-09-08-at-2-20-26-PM.png)\n\n4. In the `Configuration` tab copy and paste the `Client ID` and `Client Secret` and share it with us.\n\n![](https://i.ibb.co/1mm1PWM/Screen-Shot-2023-09-08-at-2-22-53-PM.png)\n\n5. Add https://api.carbon.ai/integrations/box as a `Redirect URIs` and https://api.carbon.ai as a `CORS Domains`\n\n![](https://i.ibb.co/374946D/Screen-Shot-2023-09-08-at-2-30-28-PM.png)\n![](https://i.ibb.co/HdtDqfd/Screen-Shot-2023-09-08-at-2-31-14-PM.png)\n\n7. For scopes, select `Read all files and folders stored in Box` and `Write all files and folders stored in Box`.\n\n![](https://i.ibb.co/9wRrqKX/Screen-Shot-2023-09-08-at-2-27-44-PM.png)\n\n8. In the `App Center` tab, you can edit your branding.\n\n![](https://i.ibb.co/GsHQq2g/Screen-Shot-2023-09-08-at-2-34-26-PM.png)\n\n9. Once you're ready, you can also submit your app for approval.\n\n![](https://i.ibb.co/XVg2skh/Screen-Shot-2023-09-08-at-2-37-05-PM.png)\n\n## Functionality\n\nCarbon allows users to upload `pdf`, `docx`, `pptx`,`txt`,`csv`, `png`, `rtf`, `tsv`, `xlsx`, `jpeg` and `md` files directly from Box.\n\n## Synchronization\n\nSyncs are triggered when end-users select files to upload via the Box file selector UI. You can also use the `resync_file` API endpoint to programmatically resync specific Box files. To delete Box files from Carbon, you can use the `deletefile` endpoint directly.\n\nWe do not run our 24-hour batch sync for Box by default. If you'd like us to enable batch syncs to run in the background, you can request this via Slack.\n\n\n# Zendesk\nThe Carbon Connect `enabledIntegrations` value for Zendesk is `ZENDESK`.\n\n## Authorization Type\n\nCarbon uses **[OAuth 2.0](https://developers.Zendesk.com/building-apps/docs/setting-up-oauth)** to connect to Zendesk workspaces.\n\n## Authorization Flow\n\n![](https://i.ibb.co/Zc1sh5Q/Screen-Shot-2023-09-14-at-5-25-02-PM.png)\n\n![](https://i.ibb.co/DKqsbFC/Screen-Shot-2023-09-14-at-10-40-28-AM.png)\n\n![](https://i.ibb.co/Vw6bF82/Screen-Shot-2023-09-14-at-10-37-47-AM.png)\n\n## Functionality\n\nCarbon syncs all `Published` articles under a single Zendesk workspace. Any `Draft` article won't be synced. We currently support only having a single Zendesk workspace connected per `customer_id`.\n\n## Configuration\n\n### Custom OAuth Credentials\n\n1. In Admin Center, click the `Apps and integrations` icon and then in the sidebar, select `APIs` > `Zendesk` APIs.\n\n![](https://i.ibb.co/3cXNwRj/Screen-Shot-2023-09-14-at-9-05-14-AM.png)\n\n![](https://i.ibb.co/wzvZ9jS/Screen-Shot-2023-09-13-at-5-08-26-PM.png)\n\n2. Click the `OAuth Clients` tab on the Zendesk API page, and then click `Add OAuth client` on the right side of the OAuth client list.\n\n![](https://i.ibb.co/djnzwcx/Screen-Shot-2023-09-13-at-5-06-46-PM.png)\n\n3. Complete the following fields to create a client:\n- Client Name - Enter a name for your app. This is the name that users will see when asked to grant access to your application, and when they check the list of third-party apps that have access to their Zendesk.\nDescription - Optional. This is a short description of your app that users will see when asked to grant access to it.\n- Company - Optional. This is the company name that users will see when asked to grant access to your application. The information can help them understand who they're granting access to.\n- Logo - Optional. This is the logo that users will see when asked to grant access to your application. The image can be a JPG, GIF, or PNG. For best results, upload a square image. It will be resized for the authorization page.\n- Unique Identifier - The field is auto-populated with a reformatted version of the name you entered for your app. You can change it if you want.\n- Redirect URLs - Enter https://api.carbon.ai/integrations/zendesk here. You can also opt to use a custom CNAME record pointing to https://api.carbon.ai. The domain path must still be `/integrations/zendesk`.\n\n![](https://i.ibb.co/yPqPzbD/Screen-Shot-2023-09-13-at-5-15-35-PM.png)\n\n4. Click Save. After the page refreshes, a new pre-populated Secret field appears on the lower side. This is the `client_secret` value specified in the OAuth2 spec. Send us the `client_secret` value over Slack.\n6. Copy the Secret value to your clipboard and save it somewhere safe. Note: The characters may extend past the width of the text box, so make sure to select everything before copying.\n\n![](https://i.ibb.co/Db8TQDJ/Screen-Shot-2023-09-13-at-5-21-34-PM.png)\n\n7. Copy the `Unique Identifier` of the OAuth app and share that value over Slack as well.\n8. In order for us to white-label your OAuth app, you need to request approval first to convert the app from a **local OAuth client** to **global OAuth client**. You can follow the instructions [here](https://developer.zendesk.com/documentation/marketplace/building-a-marketplace-app/set-up-a-global-oauth-client) to do so.\n\n## Synchronization\n\nSyncs are triggered when end-users add or remove pages via the Zendesk OAuth flow. You can use the `resync_file` API endpoint to programmatically resync specific Zendesk files.\n\nIn addition, we have a 24-hour batch sync running in the background. You can request us via Slack to run more frequent batch syncs.\n\n# Slack\n# Confluence\n" + }, + { + "name": "Integrations", + "description": "\nEmploy these endpoints when syncing files from external data sources outside of Carbon Connect.\n" + }, + { + "name": "Utilities", + "description": "\n---\nLeverage these `Utilities` endpoints to execute a wide range of helpful actions, including initiating web scraping, processing sitemaps, retrieving URLs from a specific webpage, obtaining relevant URLs based on a search query, fetching YouTube video transcripts, and many other functionalities.\n" + }, + { + "name": "Webhooks", + "description": "\n---\nCarbon offers a set of webhooks for a variety of events, listed below. Currently, there is no way to choose\nwhich events to receive webhooks for - it's on our roadmap to allow for more fine-grained filtering. The steps\nin setting up webhooks for your service are:\n1. Add a URL to which webhoooks should be sent. This can be done using the `/add_webhook` endpoint.\n2. Save the `signing_key` in the response somewhere safe - this can't be retrieved again.\n\nAt this point, all events will be sent to the URL specified in step 1. An event - sent via an HTTP POST\nrequest - contains two important elements, a `Carbon-Signature` header and a body with a single key-value pair.\nYou can validate the authenticity and integrity of the webhook by calculating its signature. To do this, you should:\n1. Extract the timestamp and signature.\n 1. Extract the timestamp and signature from the `Carbon-Signature` header. It will be of the form\n`Carbon-Signature:t=1492774577,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd`.\n 2. For those using JavaScript and decoding the request json via `JSON.stringify`, we suggest using the `Carbon-Signature-Compact`\nheader instead. It will have the form `Carbon-Signature:t=1492774577,v2=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd`.\n2. Create a string of the form `{timestamp}.{request_body}`, where `request_body` is the entire request body.\nNote that all values in the webhook request body are coerced to strings - this is *intentional*.\n 1. If using `Carbon-Signature`, you can use `request_body` as is, or you can decode it as json. When decoding, ensure that the \nresulting json is formatted *exactly* as it is in `request_body`. In other words, the json should look like:\n```\n{\"x\": 5, \"y\": 6}\n```\n 2. If using `Carbon-Signature-V2`, when decoding the request body, ensure that the resulting json is in compact form, where there \nare no spaces between key-value pairs or between keys and values. For example,\n```\n{\"x\":5,\"y\":6}\n```\nGiven a request body, `x`, you can do this in Python via `json.dumps(x, separators=[\",\", \":\"])` or in JavaScript via `JSON.stringify(x)`.\n3. Compute an HMAC of the above string with the SHA256 hash function. Use `signing_key` obtained from the `/add_webhook` endpoint as the key.\n4. Compare the computed signature with the signature in the header (the value that `v1` - or `v2` - is equal to). If they're identical,\nyou can be assured that the webhook is both genuine and hasn't been tampered with.\n\nOnce you receive and handle the webhook, you should respond to the POST request with a 200 status - otherwise the webhook\nwill be retried (up to three times).\n\n### Webhooks for File Processing\n\nWe currently support the following webhook events for file processing:\n1. `FILE_READY`\n - Sent after a file has been fully processed and added to Carbon.\n2. `FILE_ERROR`\n - Sent if there was an error during the file processing stage. If an error occurred, the file is requeued for reprocessing\n up to three times.\n3. `FILE_DELETED`\n - Sent if a file has been successfully deleted.\n4. `RATE_LIMIT_ERROR`\n - Sent if the organization has reached the rate limit for file processing. In this case, the file is requeued for reprocessing\n up to three times.\n\nThese are sent *after* a file has been processed.\n\n### Webhooks for Data Sources\n\nWe currently support the following webhook events for managing user connections to data sources:\n\n1. `ADD` \n - This event is fired when a user authenticates their account for a specific data source for the first time.\n\n2. `UPDATE` \n - This event is fired when a user selects one or more files for a particular data source. This event is fired once per file selection confirmation, regardless of how many files are selected.\n\n3. `CANCEL` \n - This event is fired when a user cancels the authentication flow. It's important to note that this event cannot capture tab-close events, so directly closing a tab is not within our tracking capabilities.\n\n4. `REVOKE`\n - This event is triggered when a user's data source connection is revoked via the `/revoke_access_token` endpoint.\n\nAn organization is allowed up to *3* webhook URLs. To delete an existing URL, you can use the `/delete_webhook` endpoint.\nTo view all existing webhooks, use the `/webhooks` endpoint.\n\nAll webhook payloads have the form\n```\n{\n \"payload\": str\n}\n```\nThe value of `payload` (which is a stringified json object) will always have the form\n```\n{\n \"webhook_type\": WebhookType,\n \"obj\": {\n \"object_type\": WebhookObjectType,\n \"object_id\": str,\n \"additional_information\": dict[str, str] | str\n },\n \"timestamp\": str\n}\n```\nNote that `WebhookType` is one of the webhook events described above. `WebhookObjectType` is limited to `FILE` currently.\n`additional_information` is always a dictionary of string-string key-value pairs, unless it's empty, in which case it is\nthe string value \"null\". Finally, `timestamp` is an int POSIX timestamp as a string. Note that to use `object_id` in\nsubsequent API requests, you'll likely need to convert it to an int.\n" + }, + { + "name": "Contact Us", + "description": "\n---\n### πŸ’¬ We're here to help!\n\nIt’s our mandate to deliver a delightful experience and answer any questions you might have. This documentation is meant to help get you started but isn't the only resource you have! \n\nPlease don't hesitate to email us at [support@carbon.ai](mailto:support@carbon.ai) or reach out directly to your account manager.\n\nOur terms of service can be found here: [terms of service](https://carbon.ai/terms)\n\nWe're excited you're here!\n" + } + ] +} \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/snippets/typescriptReadmeGettingStartedSnippet.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/snippets/typescriptReadmeGettingStartedSnippet.ts new file mode 100644 index 000000000..b1aaa713a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/snippets/typescriptReadmeGettingStartedSnippet.ts @@ -0,0 +1,21 @@ +import { Carbon } from "carbon-typescript-sdk"; + +// Generally this is done in the backend to avoid exposing API key to the client + +const carbonWithApiKey = new Carbon({ + apiKey: "API_KEY", + customerId: "CUSTOMER_ID", +}); + +const accessToken = await carbonWithApiKey.auth.getAccessToken(); + +// Once an access token is obtained, it can be passed to the frontend +// and used to instantiate the SDK client without an API key + +const carbon = new Carbon({ + accessToken: accessToken.data.access_token, +}); + +// use SDK as usual +const whiteLabeling = await carbon.auth.getWhiteLabeling(); +// etc. diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.gitignore b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.gitignore new file mode 100644 index 000000000..149b57654 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.konfigignore b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.konfigignore new file mode 100644 index 000000000..41de6c442 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.konfigignore @@ -0,0 +1 @@ +index.test.ts \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.npmignore b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.npmignore new file mode 100644 index 000000000..999d88df6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.npmignore @@ -0,0 +1 @@ +# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.npmrc b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.npmrc new file mode 100644 index 000000000..7494f7212 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/.npmrc @@ -0,0 +1,3 @@ +//registry.npmjs.org/:_authToken=${NPM_TOKEN} +registry=https://registry.npmjs.org/ +always-auth=true \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/README.md b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/README.md new file mode 100644 index 000000000..72b800925 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/README.md @@ -0,0 +1,2184 @@ +
+ +[![Visit Carbon](./header.png)](https://carbon.ai) + +# [Carbon](https://carbon.ai) + +Connect external data to LLMs, no matter the source. + +[![npm](https://img.shields.io/badge/npm-v0.1.1-blue)](https://www.npmjs.com/package/carbon-typescript-sdk/v/0.1.1) + +
+ +## Table of Contents + + + +- [Installation](#installation) +- [Getting Started](#getting-started) +- [Reference](#reference) + * [`carbon.auth.getAccessToken`](#carbonauthgetaccesstoken) + * [`carbon.auth.getWhiteLabeling`](#carbonauthgetwhitelabeling) + * [`carbon.dataSources.queryUserDataSources`](#carbondatasourcesqueryuserdatasources) + * [`carbon.dataSources.revokeAccessToken`](#carbondatasourcesrevokeaccesstoken) + * [`carbon.embeddings.getDocuments`](#carbonembeddingsgetdocuments) + * [`carbon.embeddings.getEmbeddingsAndChunks`](#carbonembeddingsgetembeddingsandchunks) + * [`carbon.embeddings.uploadChunksAndEmbeddings`](#carbonembeddingsuploadchunksandembeddings) + * [`carbon.files.createUserFileTags`](#carbonfilescreateuserfiletags) + * [`carbon.files.delete`](#carbonfilesdelete) + * [`carbon.files.deleteFileTags`](#carbonfilesdeletefiletags) + * [`carbon.files.deleteMany`](#carbonfilesdeletemany) + * [`carbon.files.getParsedFile`](#carbonfilesgetparsedfile) + * [`carbon.files.getRawFile`](#carbonfilesgetrawfile) + * [`carbon.files.queryUserFiles`](#carbonfilesqueryuserfiles) + * [`carbon.files.queryUserFilesDeprecated`](#carbonfilesqueryuserfilesdeprecated) + * [`carbon.files.resync`](#carbonfilesresync) + * [`carbon.files.upload`](#carbonfilesupload) + * [`carbon.files.uploadFromUrl`](#carbonfilesuploadfromurl) + * [`carbon.files.uploadText`](#carbonfilesuploadtext) + * [`carbon.health.check`](#carbonhealthcheck) + * [`carbon.integrations.connectFreshdesk`](#carbonintegrationsconnectfreshdesk) + * [`carbon.integrations.createAwsIamUser`](#carbonintegrationscreateawsiamuser) + * [`carbon.integrations.getOauthUrl`](#carbonintegrationsgetoauthurl) + * [`carbon.integrations.listConfluencePages`](#carbonintegrationslistconfluencepages) + * [`carbon.integrations.listDataSourceItems`](#carbonintegrationslistdatasourceitems) + * [`carbon.integrations.syncConfluence`](#carbonintegrationssyncconfluence) + * [`carbon.integrations.syncDataSourceItems`](#carbonintegrationssyncdatasourceitems) + * [`carbon.integrations.syncFiles`](#carbonintegrationssyncfiles) + * [`carbon.integrations.syncGmail`](#carbonintegrationssyncgmail) + * [`carbon.integrations.syncOutlook`](#carbonintegrationssyncoutlook) + * [`carbon.integrations.syncRssFeed`](#carbonintegrationssyncrssfeed) + * [`carbon.integrations.syncS3Files`](#carbonintegrationssyncs3files) + * [`carbon.organizations.get`](#carbonorganizationsget) + * [`carbon.users.get`](#carbonusersget) + * [`carbon.users.toggleUserFeatures`](#carbonuserstoggleuserfeatures) + * [`carbon.utilities.fetchUrls`](#carbonutilitiesfetchurls) + * [`carbon.utilities.fetchYoutubeTranscripts`](#carbonutilitiesfetchyoutubetranscripts) + * [`carbon.utilities.processSitemap`](#carbonutilitiesprocesssitemap) + * [`carbon.utilities.scrapeSitemap`](#carbonutilitiesscrapesitemap) + * [`carbon.utilities.scrapeWeb`](#carbonutilitiesscrapeweb) + * [`carbon.utilities.searchUrls`](#carbonutilitiessearchurls) + * [`carbon.webhooks.addUrl`](#carbonwebhooksaddurl) + * [`carbon.webhooks.deleteUrl`](#carbonwebhooksdeleteurl) + * [`carbon.webhooks.urls`](#carbonwebhooksurls) + + + +## Installation + + + + + + + + + + + + +
npmpnpmyarn
+ +```bash +npm i carbon-typescript-sdk +``` + + + +```bash +pnpm i carbon-typescript-sdk +``` + + + +```bash +yarn add carbon-typescript-sdk +``` + +
+ +## Getting Started + +```typescript +import { Carbon } from "carbon-typescript-sdk"; + +// Generally this is done in the backend to avoid exposing API key to the client + +const carbonWithApiKey = new Carbon({ + apiKey: "API_KEY", + customerId: "CUSTOMER_ID", +}); + +const accessToken = await carbonWithApiKey.auth.getAccessToken(); + +// Once an access token is obtained, it can be passed to the frontend +// and used to instantiate the SDK client without an API key + +const carbon = new Carbon({ + accessToken: accessToken.data.access_token, +}); + +// use SDK as usual +const whiteLabeling = await carbon.auth.getWhiteLabeling(); +// etc. +``` + +## Reference + + +### `carbon.auth.getAccessToken` + +Get Access Token + +#### πŸ› οΈ Usage + +```typescript +const getAccessTokenResponse = await carbon.auth.getAccessToken(); +``` + +#### πŸ”„ Return + +[TokenResponse](./models/token-response.ts) + +#### 🌐 Endpoint + +`/auth/v1/access_token` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.auth.getWhiteLabeling` + +Returns whether or not the organization is white labeled and which integrations are white labeled + +:param current_user: the current user +:param db: the database session +:return: a WhiteLabelingResponse + +#### πŸ› οΈ Usage + +```typescript +const getWhiteLabelingResponse = await carbon.auth.getWhiteLabeling(); +``` + +#### πŸ”„ Return + +[WhiteLabelingResponse](./models/white-labeling-response.ts) + +#### 🌐 Endpoint + +`/auth/v1/white_labeling` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.dataSources.queryUserDataSources` + +User Data Sources + +#### πŸ› οΈ Usage + +```typescript +const queryUserDataSourcesResponse = + await carbon.dataSources.queryUserDataSources({}); +``` + +#### βš™οΈ Parameters + +##### pagination: [`EmbeddingsAndChunksQueryInputPagination`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [`OrganizationUserDataSourceOrderByColumns`](./models/organization-user-data-source-order-by-columns.ts) + +##### order_dir: [`OrderDir`](./models/order-dir.ts) + +##### filters: [`OrganizationUserDataSourceQueryInputFilters`](./models/organization-user-data-source-query-input-filters.ts) + +#### πŸ”„ Return + +[OrganizationUserDataSourceResponse](./models/organization-user-data-source-response.ts) + +#### 🌐 Endpoint + +`/user_data_sources` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.dataSources.revokeAccessToken` + +Revoke Access Token + +#### πŸ› οΈ Usage + +```typescript +const revokeAccessTokenResponse = await carbon.dataSources.revokeAccessToken({ + data_source_id: 1, +}); +``` + +#### βš™οΈ Parameters + +##### data_source_id: `number` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/revoke_access_token` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.embeddings.getDocuments` + +For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` +and `tags` are specified, `tags` is ignored. `tags_v2` enables +building complex filters through the use of "AND", "OR", and negation logic. Take the below input as an example: +```json +{ + "OR": [ + { + "key": "subject", + "value": "holy-bible", + "negate": false + }, + { + "key": "person-of-interest", + "value": "jesus christ", + "negate": false + }, + { + "key": "genre", + "value": "religion", + "negate": true + } + { + "AND": [ + { + "key": "subject", + "value": "tao-te-ching", + "negate": false + }, + { + "key": "author", + "value": "lao-tzu", + "negate": false + } + ] + } + ] +} +``` +In this case, files will be filtered such that: +1. "subject" = "holy-bible" OR +2. "person-of-interest" = "jesus christ" OR +3. "genre" != "religion" OR +4. "subject" = "tao-te-ching" AND "author" = "lao-tzu" + +Note that the top level of the query must be either an "OR" or "AND" array. Currently, nesting is limited to 3. +For tag blocks (those with "key", "value", and "negate" keys), the following typing rules apply: +1. "key" isn't optional and must be a `string` +2. "value" isn't optional and can be `any` or list[`any`] +3. "negate" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in +the resulting query. It is `false` by default. + + +When querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if +not set), it is equal to "TEXT". This means that the query will be performed over files that have +been parsed as text (for now, this covers all files except image files). If it is equal to "IMAGE", +the query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this +field as an additional filter on top of any filters set in `file_ids` and + + +When `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank +and select candidate embeddings during information retrieval. By default, these search methods are weighted +equally during the ranking process. To adjust the weight (or "importance") of each search method, you can use +the `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are: +- `weight_a`: weight to assign to semantic search +- `weight_b`: weight to assign to keyword search + +You must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality +has an error tolerance of 0.001 to account for possible floating point issues. + +In order to use hybrid search for a customer across a set of documents, two flags need to be enabled: +1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload +body for this request is below: +``` +{ + "configuration_key_name": "sparse_vectors", + "value": { + "enabled": true + } +} +``` +2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the +`/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true` + + +Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's +multimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0. +The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query +parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing +embedding queries, embeddings from files that used the specified model will be considered in the query. +For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with +`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is +specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that +the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** +set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + +#### πŸ› οΈ Usage + +```typescript +const getDocumentsResponse = await carbon.embeddings.getDocuments({ + query: "query_example", + k: 1, +}); +``` + +#### βš™οΈ Parameters + +##### query: `string` + +Query for which to get related chunks and embeddings. + +##### k: `number` + +Number of related chunks to return. + +##### tags: Record + +A set of tags to limit the search to. Deprecated and may be removed in the future. + +##### query_vector: `number`[] + +Optional query vector for which to get related chunks and embeddings. It must have been generated by the same model used to generate the embeddings across which the search is being conducted. Cannot provide both `query` and `query_vector`. + +##### file_ids: `number`[] + +Optional list of file IDs to limit the search to + +##### parent_file_ids: `number`[] + +Optional list of parent file IDs to limit the search to. A parent file describes a file to which another file belongs (e.g. a folder) + +##### tags_v2: `object` + +A set of tags to limit the search to. Use this instead of `tags`, which is deprecated. + +##### include_tags: `boolean` + +Flag to control whether or not to include tags for each chunk in the response. + +##### include_vectors: `boolean` + +Flag to control whether or not to include embedding vectors in the response. + +##### include_raw_file: `boolean` + +Flag to control whether or not to include a signed URL to the raw file containing each chunk in the response. + +##### hybrid_search: `boolean` + +Flag to control whether or not to perform hybrid search. + +##### hybrid_search_tuning_parameters: [`HybridSearchTuningParamsNullable`](./models/hybrid-search-tuning-params-nullable.ts) + +##### media_type: [`FileContentTypesNullable`](./models/file-content-types-nullable.ts) + +Used to filter the kind of files (e.g. `TEXT` or `IMAGE`) over which to perform the search. Also plays a role in determining what embedding model is used to embed the query. If `IMAGE` is chosen as the media type, then the embedding model used will be an embedding model that is not text-only, *regardless* of what value is passed for `embedding_model`. + +##### embedding_model: [`EmbeddingGeneratorsNullable`](./models/embedding-generators-nullable.ts) + +#### πŸ”„ Return + +[DocumentResponseList](./models/document-response-list.ts) + +#### 🌐 Endpoint + +`/embeddings` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.embeddings.getEmbeddingsAndChunks` + +Retrieve Embeddings And Content + +#### πŸ› οΈ Usage + +```typescript +const getEmbeddingsAndChunksResponse = + await carbon.embeddings.getEmbeddingsAndChunks({ + filters: { + user_file_id: 1, + }, + include_vectors: false, + }); +``` + +#### βš™οΈ Parameters + +##### filters: [`EmbeddingsAndChunksFilters`](./models/embeddings-and-chunks-filters.ts) + +##### pagination: [`EmbeddingsAndChunksQueryInputPagination`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [`EmbeddingsAndChunksOrderByColumns`](./models/embeddings-and-chunks-order-by-columns.ts) + +##### order_dir: [`OrderDir`](./models/order-dir.ts) + +##### include_vectors: `boolean` + +#### πŸ”„ Return + +[EmbeddingsAndChunksResponse](./models/embeddings-and-chunks-response.ts) + +#### 🌐 Endpoint + +`/text_chunks` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.embeddings.uploadChunksAndEmbeddings` + +Upload Chunks And Embeddings + +#### πŸ› οΈ Usage + +```typescript +const uploadChunksAndEmbeddingsResponse = + await carbon.embeddings.uploadChunksAndEmbeddings({ + embedding_model: "string_example", + chunks_and_embeddings: [ + { + file_id: 1, + chunks_and_embeddings: [ + { + chunk_number: 1, + chunk: "chunk_example", + embedding: [3.14], + }, + ], + }, + ], + overwrite_existing: false, + }); +``` + +#### βš™οΈ Parameters + +##### embedding_model: [`EmbeddingGenerators`](./models/embedding-generators.ts) + +##### chunks_and_embeddings: [`SingleChunksAndEmbeddingsUploadInput`](./models/single-chunks-and-embeddings-upload-input.ts)[] + +##### overwrite_existing: `boolean` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/upload_chunks_and_embeddings` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.createUserFileTags` + +A tag is a key-value pair that can be added to a file. This pair can then be used +for searches (e.g. embedding searches) in order to narrow down the scope of the search. +A file can have any number of tags. The following are reserved keys that cannot be used: +- db_embedding_id +- organization_id +- user_id +- organization_user_file_id + +Carbon currently supports two data types for tag values - `string` and `list`. +Keys can only be `string`. If values other than `string` and `list` are used, +they're automatically converted to strings (e.g. 4 will become "4"). + +#### πŸ› οΈ Usage + +```typescript +const createUserFileTagsResponse = await carbon.files.createUserFileTags({ + tags: { + key: "string_example", + }, + organization_user_file_id: 1, +}); +``` + +#### βš™οΈ Parameters + +##### tags: Record + +##### organization_user_file_id: `number` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/create_user_file_tags` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.delete` + +Delete File Endpoint + +#### πŸ› οΈ Usage + +```typescript +const deleteResponse = await carbon.files.delete({ + fileId: 1, +}); +``` + +#### βš™οΈ Parameters + +##### fileId: `number` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/deletefile/{file_id}` `DELETE` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.deleteFileTags` + +Delete File Tags + +#### πŸ› οΈ Usage + +```typescript +const deleteFileTagsResponse = await carbon.files.deleteFileTags({ + tags: ["tags_example"], + organization_user_file_id: 1, +}); +``` + +#### βš™οΈ Parameters + +##### tags: `string`[] + +##### organization_user_file_id: `number` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/delete_user_file_tags` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.deleteMany` + +Delete Files Endpoint + +#### πŸ› οΈ Usage + +```typescript +const deleteManyResponse = await carbon.files.deleteMany({ + delete_non_synced_only: false, +}); +``` + +#### βš™οΈ Parameters + +##### file_ids: `number`[] + +##### sync_statuses: [`ExternalFileSyncStatuses`](./models/external-file-sync-statuses.ts)[] + +##### delete_non_synced_only: `boolean` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/delete_files` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.getParsedFile` + +This route is deprecated. Use `/user_files_v2` instead. + +#### πŸ› οΈ Usage + +```typescript +const getParsedFileResponse = await carbon.files.getParsedFile({ + fileId: 1, +}); +``` + +#### βš™οΈ Parameters + +##### fileId: `number` + +#### πŸ”„ Return + +[PresignedURLResponse](./models/presigned-urlresponse.ts) + +#### 🌐 Endpoint + +`/parsed_file/{file_id}` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.getRawFile` + +This route is deprecated. Use `/user_files_v2` instead. + +#### πŸ› οΈ Usage + +```typescript +const getRawFileResponse = await carbon.files.getRawFile({ + fileId: 1, +}); +``` + +#### βš™οΈ Parameters + +##### fileId: `number` + +#### πŸ”„ Return + +[PresignedURLResponse](./models/presigned-urlresponse.ts) + +#### 🌐 Endpoint + +`/raw_file/{file_id}` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.queryUserFiles` + +For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` +and `tags` are specified, `tags` is ignored. `tags_v2` enables +building complex filters through the use of "AND", "OR", and negation logic. Take the below input as an example: +```json +{ + "OR": [ + { + "key": "subject", + "value": "holy-bible", + "negate": false + }, + { + "key": "person-of-interest", + "value": "jesus christ", + "negate": false + }, + { + "key": "genre", + "value": "religion", + "negate": true + } + { + "AND": [ + { + "key": "subject", + "value": "tao-te-ching", + "negate": false + }, + { + "key": "author", + "value": "lao-tzu", + "negate": false + } + ] + } + ] +} +``` +In this case, files will be filtered such that: +1. "subject" = "holy-bible" OR +2. "person-of-interest" = "jesus christ" OR +3. "genre" != "religion" OR +4. "subject" = "tao-te-ching" AND "author" = "lao-tzu" + +Note that the top level of the query must be either an "OR" or "AND" array. Currently, nesting is limited to 3. +For tag blocks (those with "key", "value", and "negate" keys), the following typing rules apply: +1. "key" isn't optional and must be a `string` +2. "value" isn't optional and can be `any` or list[`any`] +3. "negate" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in +the resulting query. It is `false` by default. + +#### πŸ› οΈ Usage + +```typescript +const queryUserFilesResponse = await carbon.files.queryUserFiles({}); +``` + +#### βš™οΈ Parameters + +##### pagination: [`EmbeddingsAndChunksQueryInputPagination`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [`OrganizationUserFilesToSyncOrderByTypes`](./models/organization-user-files-to-sync-order-by-types.ts) + +##### order_dir: [`OrderDir`](./models/order-dir.ts) + +##### filters: [`OrganizationUserFilesToSyncQueryInputFilters`](./models/organization-user-files-to-sync-query-input-filters.ts) + +##### include_raw_file: `boolean` + +##### include_parsed_text_file: `boolean` + +##### include_additional_files: `boolean` + +#### πŸ”„ Return + +[UserFilesV2](./models/user-files-v2.ts) + +#### 🌐 Endpoint + +`/user_files_v2` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.queryUserFilesDeprecated` + +This route is deprecated. Use `/user_files_v2` instead. + +#### πŸ› οΈ Usage + +```typescript +const queryUserFilesDeprecatedResponse = + await carbon.files.queryUserFilesDeprecated({}); +``` + +#### βš™οΈ Parameters + +##### pagination: [`EmbeddingsAndChunksQueryInputPagination`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [`OrganizationUserFilesToSyncOrderByTypes`](./models/organization-user-files-to-sync-order-by-types.ts) + +##### order_dir: [`OrderDir`](./models/order-dir.ts) + +##### filters: [`OrganizationUserFilesToSyncQueryInputFilters`](./models/organization-user-files-to-sync-query-input-filters.ts) + +##### include_raw_file: `boolean` + +##### include_parsed_text_file: `boolean` + +##### include_additional_files: `boolean` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/user_files` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.resync` + +Resync File + +#### πŸ› οΈ Usage + +```typescript +const resyncResponse = await carbon.files.resync({ + file_id: 1, +}); +``` + +#### βš™οΈ Parameters + +##### file_id: `number` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/resync_file` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.upload` + +This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request. +Note that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set, +PDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates +of the bounding box around the chunk (this can be used for things like text highlighting). Following is a description +of all possible query parameters: +- `chunk_size`: the chunk size (in tokens) applied when splitting the document +- `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document +- `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings +- `set_page_as_boundary`: described above +- `embedding_model`: the model used to generate embeddings for the document chunks +- `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently) +- `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search. +- `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text + + +Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's +multimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0. +The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query +parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing +embedding queries, embeddings from files that used the specified model will be considered in the query. +For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with +`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is +specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that +the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** +set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + +#### πŸ› οΈ Usage + +```typescript +const uploadResponse = await carbon.files.upload({ + skipEmbeddingGeneration: false, + setPageAsBoundary: false, + useOcr: false, + generateSparseVectors: false, + prependFilenameToChunks: false, + file: fs.readFileSync("/path/to/file"), +}); +``` + +#### βš™οΈ Parameters + +##### file: `Uint8Array | File | buffer.File` + +##### chunkSize: `number` + +Chunk size in tiktoken tokens to be used when processing file. + +##### chunkOverlap: `number` + +Chunk overlap in tiktoken tokens to be used when processing file. + +##### skipEmbeddingGeneration: `boolean` + +Flag to control whether or not embeddings should be generated and stored when processing file. + +##### setPageAsBoundary: `boolean` + +Flag to control whether or not to set the a page\'s worth of content as the maximum amount of content that can appear in a chunk. Only valid for PDFs. See description route description for more information. + +##### embeddingModel: [`TextEmbeddingGenerators`](./models/text-embedding-generators.ts) + +Embedding model that will be used to embed file chunks. + +##### useOcr: `boolean` + +Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with tables, images, and/or scanned text. + +##### generateSparseVectors: `boolean` + +Whether or not to generate sparse vectors for the file. This is *required* for the file to be a candidate for hybrid search. + +##### prependFilenameToChunks: `boolean` + +Whether or not to prepend the file\'s name to chunks. + +##### maxItemsPerChunk: `number` + +Number of objects per chunk. For json files only. + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/uploadfile` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.uploadFromUrl` + +Create Upload File From Url + +#### πŸ› οΈ Usage + +```typescript +const uploadFromUrlResponse = await carbon.files.uploadFromUrl({ + url: "url_example", + skip_embedding_generation: false, + set_page_as_boundary: false, + generate_sparse_vectors: false, + use_textract: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### url: `string` + +##### file_name: `string` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### set_page_as_boundary: `boolean` + +##### embedding_model: [`EmbeddingGenerators`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: `boolean` + +##### use_textract: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +##### max_items_per_chunk: `number` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/upload_file_from_url` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.files.uploadText` + +Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's +multimodal model; for text, we support OpenAI's `text-embedding-ada-002` and Cohere's embed-multilingual-v3.0. +The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query +parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing +embedding queries, embeddings from files that used the specified model will be considered in the query. +For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with +`COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is +specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that +the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** +set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + +#### πŸ› οΈ Usage + +```typescript +const uploadTextResponse = await carbon.files.uploadText({ + contents: "contents_example", + skip_embedding_generation: false, + generate_sparse_vectors: false, +}); +``` + +#### βš™οΈ Parameters + +##### contents: `string` + +##### name: `string` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### overwrite_file_id: `number` + +##### embedding_model: [`EmbeddingGeneratorsNullable`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: `boolean` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +`/upload_text` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.health.check` + +Health + +#### πŸ› οΈ Usage + +```typescript +const checkResponse = await carbon.health.check(); +``` + +#### 🌐 Endpoint + +`/health` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.connectFreshdesk` + +Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. +Once you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will +trigger an automatic sync of the articles in your "solutions" tab. Additional parameters below can be used to associate +data with the synced articles or modify the sync behavior. + +#### πŸ› οΈ Usage + +```typescript +const connectFreshdeskResponse = await carbon.integrations.connectFreshdesk({ + domain: "domain_example", + api_key: "api_key_example", + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### domain: `string` + +##### api_key: `string` + +##### tags: `object` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGeneratorsNullable`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/freshdesk` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.createAwsIamUser` + +Create a new IAM user with permissions to: +
    +
  1. List all buckets.
  2. +
  3. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry +the same permissions.
  4. +
+Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. + +#### πŸ› οΈ Usage + +```typescript +const createAwsIamUserResponse = await carbon.integrations.createAwsIamUser({ + access_key: "access_key_example", + access_key_secret: "access_key_secret_example", +}); +``` + +#### βš™οΈ Parameters + +##### access_key: `string` + +##### access_key_secret: `string` + +#### πŸ”„ Return + +[OrganizationUserDataSourceAPI](./models/organization-user-data-source-api.ts) + +#### 🌐 Endpoint + +`/integrations/s3` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.getOauthUrl` + +Get Oauth Url + +#### πŸ› οΈ Usage + +```typescript +const getOauthUrlResponse = await carbon.integrations.getOauthUrl({ + service: "string_example", + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### service: [`DataSourceType`](./models/data-source-type.ts) + +##### tags: + +##### scope: `string` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGeneratorsNullable`](./models/embedding-generators-nullable.ts) + +##### zendesk_subdomain: `string` + +##### microsoft_tenant: `string` + +##### sharepoint_site_name: `string` + +##### confluence_subdomain: `string` + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +##### max_items_per_chunk: `number` + +#### 🌐 Endpoint + +`/integrations/oauth_url` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.listConfluencePages` + +To begin listing a user's Confluence pages, at least a `data_source_id` of a connected +Confluence account must be specified. This base request returns a list of root pages for +every space the user has access to in a Confluence instance. To traverse further down +the user's page directory, additional requests to this endpoint can be made with the same +`data_source_id` and with `parent_id` set to the id of page from a previous request. For +convenience, the `has_children` property in each directory item in the response list will +flag which pages will return non-empty lists of pages when set as the `parent_id`. + +#### πŸ› οΈ Usage + +```typescript +const listConfluencePagesResponse = + await carbon.integrations.listConfluencePages({ + data_source_id: 1, + }); +``` + +#### βš™οΈ Parameters + +##### data_source_id: `number` + +##### parent_id: `string` + +#### πŸ”„ Return + +[ListResponse](./models/list-response.ts) + +#### 🌐 Endpoint + +`/integrations/confluence/list` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.listDataSourceItems` + +List Data Source Items + +#### πŸ› οΈ Usage + +```typescript +const listDataSourceItemsResponse = + await carbon.integrations.listDataSourceItems({ + data_source_id: 1, + }); +``` + +#### βš™οΈ Parameters + +##### data_source_id: `number` + +##### parent_id: `string` + +##### pagination: [`EmbeddingsAndChunksQueryInputPagination`](./models/embeddings-and-chunks-query-input-pagination.ts) + +#### πŸ”„ Return + +[ListDataSourceItemsResponse](./models/list-data-source-items-response.ts) + +#### 🌐 Endpoint + +`/integrations/items/list` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncConfluence` + +After listing pages in a user's Confluence account, the set of selected page `ids` and the +connected account's `data_source_id` can be passed into this endpoint to sync them into +Carbon. Additional parameters listed below can be used to associate data to the selected +pages or alter the behavior of the sync. + +#### πŸ› οΈ Usage + +```typescript +const syncConfluenceResponse = await carbon.integrations.syncConfluence({ + data_source_id: 1, + ids: ["ids_example"], + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### data_source_id: `number` + +##### ids: `string`[] + +##### tags: `object` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGeneratorsNullable`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +##### max_items_per_chunk: `number` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/confluence/sync` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncDataSourceItems` + +Sync Data Source Items + +#### πŸ› οΈ Usage + +```typescript +const syncDataSourceItemsResponse = + await carbon.integrations.syncDataSourceItems({ + data_source_id: 1, + }); +``` + +#### βš™οΈ Parameters + +##### data_source_id: `number` + +#### πŸ”„ Return + +[OrganizationUserDataSourceAPI](./models/organization-user-data-source-api.ts) + +#### 🌐 Endpoint + +`/integrations/items/sync` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncFiles` + +Sync Files + +#### πŸ› οΈ Usage + +```typescript +const syncFilesResponse = await carbon.integrations.syncFiles({ + data_source_id: 1, + ids: ["ids_example"], + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### data_source_id: `number` + +##### ids: `string`[] + +##### tags: `object` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGeneratorsNullable`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +##### max_items_per_chunk: `number` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/files/sync` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncGmail` + +Once you have successfully connected your gmail account, you can choose which emails to sync with us +using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. +For now, we support a limited set of keys listed below. + +label: Inbuilt Gmail labels, for example "Important" or a custom label you created. +after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. +You can also use them in combination to get emails from a certain period. +is: Can have the following values - starred, important, snoozed, and unread + +Using keys or values outside of the specified values can lead to unexpected behaviour. + +An example of a basic query with filters can be +```json +{ + "filters": { + "key": "label", + "value": "Test" + } +} +``` +Which will list all emails that have the label "Test". + +You can use AND and OR operation in the following way: +```json +{ + "filters": { + "AND": [ + { + "key": "after", + "value": "2024/01/07" + }, + { + "OR": [ + { + "key": "label", + "value": "Personal" + }, + { + "key": "is", + "value": "starred" + } + ] + } + ] + } +} +``` +This will return emails after 7th of Jan that are either starred or have the label "Personal". +Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter +in the above example. + +#### πŸ› οΈ Usage + +```typescript +const syncGmailResponse = await carbon.integrations.syncGmail({ + filters: {}, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### filters: `object` + +##### tags: `object` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGenerators`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/gmail/sync` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncOutlook` + +Once you have successfully connected your Outlook account, you can choose which emails to sync with us +using the filters and folder parameter. "folder" should be the folder you want to sync from Outlook. By default +we get messages from your inbox folder. +Filters is a JSON object with key value pairs. It also supports AND and OR operations. +For now, we support a limited set of keys listed below. + +category: Custom categories that you created in Outlook. +after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. +is: Can have the following values: flagged + +An example of a basic query with filters can be +```json +{ + "filters": { + "key": "category", + "value": "Test" + } +} +``` +Which will list all emails that have the category "Test". + +Specifying a custom folder in the same query +```json +{ + "folder": "Folder Name", + "filters": { + "key": "category", + "value": "Test" + } +} +``` + +You can use AND and OR operation in the following way: +```json +{ + "filters": { + "AND": [ + { + "key": "after", + "value": "2024/01/07" + }, + { + "OR": [ + { + "key": "category", + "value": "Personal" + }, + { + "key": "category", + "value": "Test" + }, + ] + } + ] + } +} +``` +This will return emails after 7th of Jan that have either Personal or Test as category. +Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter +in the above example. + +#### πŸ› οΈ Usage + +```typescript +const syncOutlookResponse = await carbon.integrations.syncOutlook({ + folder: "Inbox", + filters: {}, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### filters: `object` + +##### tags: `object` + +##### folder: `string` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGenerators`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/outlook/sync` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncRssFeed` + +Rss Feed + +#### πŸ› οΈ Usage + +```typescript +const syncRssFeedResponse = await carbon.integrations.syncRssFeed({ + url: "url_example", + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### url: `string` + +##### tags: `object` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGenerators`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/rss_feed` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.integrations.syncS3Files` + +After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name +and object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate +data with the selected items or modify the sync behavior + +#### πŸ› οΈ Usage + +```typescript +const syncS3FilesResponse = await carbon.integrations.syncS3Files({ + ids: [{}], + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +``` + +#### βš™οΈ Parameters + +##### ids: [`S3GetFileInput`](./models/s3-get-file-input.ts)[] + +##### tags: `object` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### embedding_model: [`EmbeddingGenerators`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +##### max_items_per_chunk: `number` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/integrations/s3/files` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.organizations.get` + +Get Organization + +#### πŸ› οΈ Usage + +```typescript +const getResponse = await carbon.organizations.get(); +``` + +#### πŸ”„ Return + +[OrganizationResponse](./models/organization-response.ts) + +#### 🌐 Endpoint + +`/organization` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.users.get` + +User Endpoint + +#### πŸ› οΈ Usage + +```typescript +const getResponse = await carbon.users.get({ + customer_id: "customer_id_example", +}); +``` + +#### βš™οΈ Parameters + +##### customer_id: `string` + +#### πŸ”„ Return + +[UserResponse](./models/user-response.ts) + +#### 🌐 Endpoint + +`/user` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.users.toggleUserFeatures` + +Toggle User Features + +#### πŸ› οΈ Usage + +```typescript +const toggleUserFeaturesResponse = await carbon.users.toggleUserFeatures({ + configuration_key_name: "configuration_key_name_example", + value: {}, +}); +``` + +#### βš™οΈ Parameters + +##### configuration_key_name: `string` + +##### value: `object` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/modify_user_configuration` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.utilities.fetchUrls` + +Extracts all URLs from a webpage. + +Args: + url (str): URL of the webpage + +Returns: + FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content. + +#### πŸ› οΈ Usage + +```typescript +const fetchUrlsResponse = await carbon.utilities.fetchUrls({ + url: "url_example", +}); +``` + +#### βš™οΈ Parameters + +##### url: `string` + +#### πŸ”„ Return + +[FetchURLsResponse](./models/fetch-urls-response.ts) + +#### 🌐 Endpoint + +`/fetch_urls` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.utilities.fetchYoutubeTranscripts` + +Fetches english transcripts from YouTube videos. + +Args: + id (str): The ID of the YouTube video. + raw (bool): Whether to return the raw transcript or not. Defaults to False. + +Returns: + dict: A dictionary with the transcript of the YouTube video. + +#### πŸ› οΈ Usage + +```typescript +const fetchYoutubeTranscriptsResponse = + await carbon.utilities.fetchYoutubeTranscripts({ + id: "id_example", + raw: false, + }); +``` + +#### βš™οΈ Parameters + +##### id: `string` + +##### raw: `boolean` + +#### πŸ”„ Return + +[YoutubeTranscriptResponse](./models/youtube-transcript-response.ts) + +#### 🌐 Endpoint + +`/fetch_youtube_transcript` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.utilities.processSitemap` + +Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint. + + + +#### πŸ› οΈ Usage + +```typescript +const processSitemapResponse = await carbon.utilities.processSitemap({ + url: "url_example", +}); +``` + +#### βš™οΈ Parameters + +##### url: `string` + +#### 🌐 Endpoint + +`/process_sitemap` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.utilities.scrapeSitemap` + +Extracts all URLs from a sitemap and performs a web scrape on each of them. + +Args: + sitemap_url (str): URL of the sitemap + +Returns: + dict: A response object with the status of the scraping job message.--> + +#### πŸ› οΈ Usage + +```typescript +const scrapeSitemapResponse = await carbon.utilities.scrapeSitemap({ + url: "url_example", + max_pages_to_scrape: 100, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + enable_auto_sync: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, + html_tags_to_skip: [], + css_classes_to_skip: [], + css_selectors_to_skip: [], +}); +``` + +#### βš™οΈ Parameters + +##### url: `string` + +##### tags: Record + +##### max_pages_to_scrape: `number` + +##### chunk_size: `number` + +##### chunk_overlap: `number` + +##### skip_embedding_generation: `boolean` + +##### enable_auto_sync: `boolean` + +##### generate_sparse_vectors: `boolean` + +##### prepend_filename_to_chunks: `boolean` + +##### html_tags_to_skip: `string`[] + +##### css_classes_to_skip: `string`[] + +##### css_selectors_to_skip: `string`[] + +#### 🌐 Endpoint + +`/scrape_sitemap` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.utilities.scrapeWeb` + +Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website. + + + +#### πŸ› οΈ Usage + +```typescript +const scrapeWebResponse = await carbon.utilities.scrapeWeb([ + { + url: "url_example", + recursion_depth: 3, + max_pages_to_scrape: 100, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + enable_auto_sync: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, + html_tags_to_skip: [], + css_classes_to_skip: [], + css_selectors_to_skip: [], + }, +]); +``` + +#### βš™οΈ Request Body + +[`WebscrapeRequest`](./models/webscrape-request.ts)[] + +#### 🌐 Endpoint + +`/web_scrape` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.utilities.searchUrls` + +Perform a web search and obtain a list of relevant URLs. + +As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following: + + - https://tomrenz.substack.com/p/mrna-and-why-it-matters + + - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/ + + - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/ + + - https://joomi.substack.com/p/were-still-being-misled-about-how + +Subsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages. + +Args: + query (str): Query to search for + +Returns: + FetchURLsResponse: A response object with a list of URLs for a given search query. + +#### πŸ› οΈ Usage + +```typescript +const searchUrlsResponse = await carbon.utilities.searchUrls({ + query: "query_example", +}); +``` + +#### βš™οΈ Parameters + +##### query: `string` + +#### πŸ”„ Return + +[FetchURLsResponse](./models/fetch-urls-response.ts) + +#### 🌐 Endpoint + +`/search_urls` `GET` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.webhooks.addUrl` + +Add Webhook Url + +#### πŸ› οΈ Usage + +```typescript +const addUrlResponse = await carbon.webhooks.addUrl({ + url: "url_example", +}); +``` + +#### βš™οΈ Parameters + +##### url: `string` + +#### πŸ”„ Return + +[Webhook](./models/webhook.ts) + +#### 🌐 Endpoint + +`/add_webhook` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.webhooks.deleteUrl` + +Delete Webhook Url + +#### πŸ› οΈ Usage + +```typescript +const deleteUrlResponse = await carbon.webhooks.deleteUrl({ + webhookId: 1, +}); +``` + +#### βš™οΈ Parameters + +##### webhookId: `number` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +`/delete_webhook/{webhook_id}` `DELETE` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### `carbon.webhooks.urls` + +Webhook Urls + +#### πŸ› οΈ Usage + +```typescript +const urlsResponse = await carbon.webhooks.urls({}); +``` + +#### βš™οΈ Parameters + +##### pagination: [`EmbeddingsAndChunksQueryInputPagination`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [`WebhookOrderByColumns`](./models/webhook-order-by-columns.ts) + +##### order_dir: [`OrderDir`](./models/order-dir.ts) + +##### filters: [`WebhookQueryInputFilters`](./models/webhook-query-input-filters.ts) + +#### πŸ”„ Return + +[WebhookQueryResponse](./models/webhook-query-response.ts) + +#### 🌐 Endpoint + +`/webhooks` `POST` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +## Author +This TypeScript package is automatically generated by [Konfig](https://konfigthis.com) diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api.ts new file mode 100644 index 000000000..eee4f3c89 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + + +export * from './api/auth-api'; +export * from './api/data-sources-api'; +export * from './api/embeddings-api'; +export * from './api/files-api'; +export * from './api/health-api'; +export * from './api/integrations-api'; +export * from './api/organizations-api'; +export * from './api/users-api'; +export * from './api/utilities-api'; +export * from './api/webhooks-api'; + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/auth-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/auth-api-generated.ts new file mode 100644 index 000000000..53758f444 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/auth-api-generated.ts @@ -0,0 +1,207 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { TokenResponse } from '../models'; +// @ts-ignore +import { WhiteLabelingResponse } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * AuthApi - axios parameter creator + * @export + */ +export const AuthApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary Get Access Token + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAccessToken: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/auth/v1/access_token`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Returns whether or not the organization is white labeled and which integrations are white labeled :param current_user: the current user :param db: the database session :return: a WhiteLabelingResponse + * @summary Get White Labeling + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getWhiteLabeling: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/auth/v1/white_labeling`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * AuthApi - functional programming interface + * @export + */ +export const AuthApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = AuthApiAxiosParamCreator(configuration) + return { + /** + * + * @summary Get Access Token + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getAccessToken(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getAccessToken(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Returns whether or not the organization is white labeled and which integrations are white labeled :param current_user: the current user :param db: the database session :return: a WhiteLabelingResponse + * @summary Get White Labeling + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getWhiteLabeling(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getWhiteLabeling(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * AuthApi - factory interface + * @export + */ +export const AuthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = AuthApiFp(configuration) + return { + /** + * + * @summary Get Access Token + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getAccessToken(options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getAccessToken(options).then((request) => request(axios, basePath)); + }, + /** + * Returns whether or not the organization is white labeled and which integrations are white labeled :param current_user: the current user :param db: the database session :return: a WhiteLabelingResponse + * @summary Get White Labeling + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getWhiteLabeling(options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getWhiteLabeling(options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * AuthApiGenerated - object-oriented interface + * @export + * @class AuthApiGenerated + * @extends {BaseAPI} + */ +export class AuthApiGenerated extends BaseAPI { + /** + * + * @summary Get Access Token + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AuthApiGenerated + */ + public getAccessToken(options?: AxiosRequestConfig) { + return AuthApiFp(this.configuration).getAccessToken(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Returns whether or not the organization is white labeled and which integrations are white labeled :param current_user: the current user :param db: the database session :return: a WhiteLabelingResponse + * @summary Get White Labeling + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof AuthApiGenerated + */ + public getWhiteLabeling(options?: AxiosRequestConfig) { + return AuthApiFp(this.configuration).getWhiteLabeling(options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/auth-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/auth-api.ts new file mode 100644 index 000000000..8d4719139 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/auth-api.ts @@ -0,0 +1,4 @@ +import { AuthApiGenerated } from "./auth-api-generated"; +export * from "./auth-api-generated"; + +export class AuthApi extends AuthApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/data-sources-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/data-sources-api-generated.ts new file mode 100644 index 000000000..3adfceda5 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/data-sources-api-generated.ts @@ -0,0 +1,263 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { EmbeddingsAndChunksQueryInputPagination } from '../models'; +// @ts-ignore +import { GenericSuccessResponse } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { OrderDir } from '../models'; +// @ts-ignore +import { OrganizationUserDataSourceOrderByColumns } from '../models'; +// @ts-ignore +import { OrganizationUserDataSourceQueryInput } from '../models'; +// @ts-ignore +import { OrganizationUserDataSourceQueryInputFilters } from '../models'; +// @ts-ignore +import { OrganizationUserDataSourceResponse } from '../models'; +// @ts-ignore +import { RevokeAccessTokenInput } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * DataSourcesApi - axios parameter creator + * @export + */ +export const DataSourcesApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary User Data Sources + * @param {OrganizationUserDataSourceQueryInput} organizationUserDataSourceQueryInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + queryUserDataSources: async (organizationUserDataSourceQueryInput: OrganizationUserDataSourceQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'organizationUserDataSourceQueryInput' is not null or undefined + assertParamExists('queryUserDataSources', 'organizationUserDataSourceQueryInput', organizationUserDataSourceQueryInput) + const localVarPath = `/user_data_sources`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: organizationUserDataSourceQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(organizationUserDataSourceQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Revoke Access Token + * @param {RevokeAccessTokenInput} revokeAccessTokenInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + revokeAccessToken: async (revokeAccessTokenInput: RevokeAccessTokenInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'revokeAccessTokenInput' is not null or undefined + assertParamExists('revokeAccessToken', 'revokeAccessTokenInput', revokeAccessTokenInput) + const localVarPath = `/revoke_access_token`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: revokeAccessTokenInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(revokeAccessTokenInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * DataSourcesApi - functional programming interface + * @export + */ +export const DataSourcesApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = DataSourcesApiAxiosParamCreator(configuration) + return { + /** + * + * @summary User Data Sources + * @param {DataSourcesApiQueryUserDataSourcesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async queryUserDataSources(requestParameters: DataSourcesApiQueryUserDataSourcesRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.queryUserDataSources(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Revoke Access Token + * @param {DataSourcesApiRevokeAccessTokenRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async revokeAccessToken(requestParameters: DataSourcesApiRevokeAccessTokenRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.revokeAccessToken(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * DataSourcesApi - factory interface + * @export + */ +export const DataSourcesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = DataSourcesApiFp(configuration) + return { + /** + * + * @summary User Data Sources + * @param {DataSourcesApiQueryUserDataSourcesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + queryUserDataSources(requestParameters: DataSourcesApiQueryUserDataSourcesRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.queryUserDataSources(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Revoke Access Token + * @param {DataSourcesApiRevokeAccessTokenRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + revokeAccessToken(requestParameters: DataSourcesApiRevokeAccessTokenRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.revokeAccessToken(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for queryUserDataSources operation in DataSourcesApi. + * @export + * @interface DataSourcesApiQueryUserDataSourcesRequest + */ +export type DataSourcesApiQueryUserDataSourcesRequest = { + +} & OrganizationUserDataSourceQueryInput + +/** + * Request parameters for revokeAccessToken operation in DataSourcesApi. + * @export + * @interface DataSourcesApiRevokeAccessTokenRequest + */ +export type DataSourcesApiRevokeAccessTokenRequest = { + +} & RevokeAccessTokenInput + +/** + * DataSourcesApiGenerated - object-oriented interface + * @export + * @class DataSourcesApiGenerated + * @extends {BaseAPI} + */ +export class DataSourcesApiGenerated extends BaseAPI { + /** + * + * @summary User Data Sources + * @param {DataSourcesApiQueryUserDataSourcesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DataSourcesApiGenerated + */ + public queryUserDataSources(requestParameters: DataSourcesApiQueryUserDataSourcesRequest, options?: AxiosRequestConfig) { + return DataSourcesApiFp(this.configuration).queryUserDataSources(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Revoke Access Token + * @param {DataSourcesApiRevokeAccessTokenRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DataSourcesApiGenerated + */ + public revokeAccessToken(requestParameters: DataSourcesApiRevokeAccessTokenRequest, options?: AxiosRequestConfig) { + return DataSourcesApiFp(this.configuration).revokeAccessToken(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/data-sources-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/data-sources-api.ts new file mode 100644 index 000000000..6a95a445c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/data-sources-api.ts @@ -0,0 +1,4 @@ +import { DataSourcesApiGenerated } from "./data-sources-api-generated"; +export * from "./data-sources-api-generated"; + +export class DataSourcesApi extends DataSourcesApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/embeddings-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/embeddings-api-generated.ts new file mode 100644 index 000000000..34a837b54 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/embeddings-api-generated.ts @@ -0,0 +1,371 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { ChunksAndEmbeddingsUploadInput } from '../models'; +// @ts-ignore +import { DocumentResponseList } from '../models'; +// @ts-ignore +import { EmbeddingGenerators } from '../models'; +// @ts-ignore +import { EmbeddingGeneratorsNullable } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksFilters } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksOrderByColumns } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksQueryInput } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksQueryInputPagination } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksResponse } from '../models'; +// @ts-ignore +import { FileContentTypesNullable } from '../models'; +// @ts-ignore +import { GenericSuccessResponse } from '../models'; +// @ts-ignore +import { GetEmbeddingDocumentsBody } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { HybridSearchTuningParamsNullable } from '../models'; +// @ts-ignore +import { OrderDir } from '../models'; +// @ts-ignore +import { SingleChunksAndEmbeddingsUploadInput } from '../models'; +// @ts-ignore +import { Tags1 } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * EmbeddingsApi - axios parameter creator + * @export + */ +export const EmbeddingsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. When querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if not set), it is equal to \"TEXT\". This means that the query will be performed over files that have been parsed as text (for now, this covers all files except image files). If it is equal to \"IMAGE\", the query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this field as an additional filter on top of any filters set in `file_ids` and When `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank and select candidate embeddings during information retrieval. By default, these search methods are weighted equally during the ranking process. To adjust the weight (or \"importance\") of each search method, you can use the `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are: - `weight_a`: weight to assign to semantic search - `weight_b`: weight to assign to keyword search You must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality has an error tolerance of 0.001 to account for possible floating point issues. In order to use hybrid search for a customer across a set of documents, two flags need to be enabled: 1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload body for this request is below: ``` { \"configuration_key_name\": \"sparse_vectors\", \"value\": { \"enabled\": true } } ``` 2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the `/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true` Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Embeddings + * @param {GetEmbeddingDocumentsBody} getEmbeddingDocumentsBody + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getDocuments: async (getEmbeddingDocumentsBody: GetEmbeddingDocumentsBody, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'getEmbeddingDocumentsBody' is not null or undefined + assertParamExists('getDocuments', 'getEmbeddingDocumentsBody', getEmbeddingDocumentsBody) + const localVarPath = `/embeddings`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: getEmbeddingDocumentsBody, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(getEmbeddingDocumentsBody, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Retrieve Embeddings And Content + * @param {EmbeddingsAndChunksQueryInput} embeddingsAndChunksQueryInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getEmbeddingsAndChunks: async (embeddingsAndChunksQueryInput: EmbeddingsAndChunksQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'embeddingsAndChunksQueryInput' is not null or undefined + assertParamExists('getEmbeddingsAndChunks', 'embeddingsAndChunksQueryInput', embeddingsAndChunksQueryInput) + const localVarPath = `/text_chunks`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: embeddingsAndChunksQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(embeddingsAndChunksQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Upload Chunks And Embeddings + * @param {ChunksAndEmbeddingsUploadInput} chunksAndEmbeddingsUploadInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadChunksAndEmbeddings: async (chunksAndEmbeddingsUploadInput: ChunksAndEmbeddingsUploadInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'chunksAndEmbeddingsUploadInput' is not null or undefined + assertParamExists('uploadChunksAndEmbeddings', 'chunksAndEmbeddingsUploadInput', chunksAndEmbeddingsUploadInput) + const localVarPath = `/upload_chunks_and_embeddings`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: chunksAndEmbeddingsUploadInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(chunksAndEmbeddingsUploadInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * EmbeddingsApi - functional programming interface + * @export + */ +export const EmbeddingsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = EmbeddingsApiAxiosParamCreator(configuration) + return { + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. When querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if not set), it is equal to \"TEXT\". This means that the query will be performed over files that have been parsed as text (for now, this covers all files except image files). If it is equal to \"IMAGE\", the query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this field as an additional filter on top of any filters set in `file_ids` and When `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank and select candidate embeddings during information retrieval. By default, these search methods are weighted equally during the ranking process. To adjust the weight (or \"importance\") of each search method, you can use the `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are: - `weight_a`: weight to assign to semantic search - `weight_b`: weight to assign to keyword search You must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality has an error tolerance of 0.001 to account for possible floating point issues. In order to use hybrid search for a customer across a set of documents, two flags need to be enabled: 1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload body for this request is below: ``` { \"configuration_key_name\": \"sparse_vectors\", \"value\": { \"enabled\": true } } ``` 2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the `/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true` Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Embeddings + * @param {EmbeddingsApiGetDocumentsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getDocuments(requestParameters: EmbeddingsApiGetDocumentsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getDocuments(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Retrieve Embeddings And Content + * @param {EmbeddingsApiGetEmbeddingsAndChunksRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getEmbeddingsAndChunks(requestParameters: EmbeddingsApiGetEmbeddingsAndChunksRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getEmbeddingsAndChunks(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Upload Chunks And Embeddings + * @param {EmbeddingsApiUploadChunksAndEmbeddingsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async uploadChunksAndEmbeddings(requestParameters: EmbeddingsApiUploadChunksAndEmbeddingsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.uploadChunksAndEmbeddings(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * EmbeddingsApi - factory interface + * @export + */ +export const EmbeddingsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = EmbeddingsApiFp(configuration) + return { + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. When querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if not set), it is equal to \"TEXT\". This means that the query will be performed over files that have been parsed as text (for now, this covers all files except image files). If it is equal to \"IMAGE\", the query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this field as an additional filter on top of any filters set in `file_ids` and When `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank and select candidate embeddings during information retrieval. By default, these search methods are weighted equally during the ranking process. To adjust the weight (or \"importance\") of each search method, you can use the `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are: - `weight_a`: weight to assign to semantic search - `weight_b`: weight to assign to keyword search You must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality has an error tolerance of 0.001 to account for possible floating point issues. In order to use hybrid search for a customer across a set of documents, two flags need to be enabled: 1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload body for this request is below: ``` { \"configuration_key_name\": \"sparse_vectors\", \"value\": { \"enabled\": true } } ``` 2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the `/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true` Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Embeddings + * @param {EmbeddingsApiGetDocumentsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getDocuments(requestParameters: EmbeddingsApiGetDocumentsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getDocuments(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Retrieve Embeddings And Content + * @param {EmbeddingsApiGetEmbeddingsAndChunksRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getEmbeddingsAndChunks(requestParameters: EmbeddingsApiGetEmbeddingsAndChunksRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getEmbeddingsAndChunks(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Upload Chunks And Embeddings + * @param {EmbeddingsApiUploadChunksAndEmbeddingsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadChunksAndEmbeddings(requestParameters: EmbeddingsApiUploadChunksAndEmbeddingsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.uploadChunksAndEmbeddings(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for getDocuments operation in EmbeddingsApi. + * @export + * @interface EmbeddingsApiGetDocumentsRequest + */ +export type EmbeddingsApiGetDocumentsRequest = { + +} & GetEmbeddingDocumentsBody + +/** + * Request parameters for getEmbeddingsAndChunks operation in EmbeddingsApi. + * @export + * @interface EmbeddingsApiGetEmbeddingsAndChunksRequest + */ +export type EmbeddingsApiGetEmbeddingsAndChunksRequest = { + +} & EmbeddingsAndChunksQueryInput + +/** + * Request parameters for uploadChunksAndEmbeddings operation in EmbeddingsApi. + * @export + * @interface EmbeddingsApiUploadChunksAndEmbeddingsRequest + */ +export type EmbeddingsApiUploadChunksAndEmbeddingsRequest = { + +} & ChunksAndEmbeddingsUploadInput + +/** + * EmbeddingsApiGenerated - object-oriented interface + * @export + * @class EmbeddingsApiGenerated + * @extends {BaseAPI} + */ +export class EmbeddingsApiGenerated extends BaseAPI { + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. When querying embeddings, you can optionally specify the `media_type` parameter in your request. By default (if not set), it is equal to \"TEXT\". This means that the query will be performed over files that have been parsed as text (for now, this covers all files except image files). If it is equal to \"IMAGE\", the query will be performed over image files (for now, `.jpg` and `.png` files). You can think of this field as an additional filter on top of any filters set in `file_ids` and When `hybrid_search` is set to true, a combination of keyword search and semantic search are used to rank and select candidate embeddings during information retrieval. By default, these search methods are weighted equally during the ranking process. To adjust the weight (or \"importance\") of each search method, you can use the `hybrid_search_tuning_parameters` property. The description for the different tuning parameters are: - `weight_a`: weight to assign to semantic search - `weight_b`: weight to assign to keyword search You must ensure that `sum(weight_a, weight_b,..., weight_n)` for all *n* weights is equal to 1. The equality has an error tolerance of 0.001 to account for possible floating point issues. In order to use hybrid search for a customer across a set of documents, two flags need to be enabled: 1. Use the `/modify_user_configuration` endpoint to to enable `sparse_vectors` for the customer. The payload body for this request is below: ``` { \"configuration_key_name\": \"sparse_vectors\", \"value\": { \"enabled\": true } } ``` 2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the `/uploadfile` endpoint, this can be done by setting the following query parameter: `generate_sparse_vectors=true` Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Embeddings + * @param {EmbeddingsApiGetDocumentsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EmbeddingsApiGenerated + */ + public getDocuments(requestParameters: EmbeddingsApiGetDocumentsRequest, options?: AxiosRequestConfig) { + return EmbeddingsApiFp(this.configuration).getDocuments(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Retrieve Embeddings And Content + * @param {EmbeddingsApiGetEmbeddingsAndChunksRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EmbeddingsApiGenerated + */ + public getEmbeddingsAndChunks(requestParameters: EmbeddingsApiGetEmbeddingsAndChunksRequest, options?: AxiosRequestConfig) { + return EmbeddingsApiFp(this.configuration).getEmbeddingsAndChunks(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Upload Chunks And Embeddings + * @param {EmbeddingsApiUploadChunksAndEmbeddingsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof EmbeddingsApiGenerated + */ + public uploadChunksAndEmbeddings(requestParameters: EmbeddingsApiUploadChunksAndEmbeddingsRequest, options?: AxiosRequestConfig) { + return EmbeddingsApiFp(this.configuration).uploadChunksAndEmbeddings(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/embeddings-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/embeddings-api.ts new file mode 100644 index 000000000..dbf5a258a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/embeddings-api.ts @@ -0,0 +1,4 @@ +import { EmbeddingsApiGenerated } from "./embeddings-api-generated"; +export * from "./embeddings-api-generated"; + +export class EmbeddingsApi extends EmbeddingsApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/files-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/files-api-generated.ts new file mode 100644 index 000000000..f6cafdfb6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/files-api-generated.ts @@ -0,0 +1,1398 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { BodyCreateUploadFileUploadfilePost } from '../models'; +// @ts-ignore +import { DeleteFilesQueryInput } from '../models'; +// @ts-ignore +import { EmbeddingGenerators } from '../models'; +// @ts-ignore +import { EmbeddingGeneratorsNullable } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksQueryInputPagination } from '../models'; +// @ts-ignore +import { ExternalFileSyncStatuses } from '../models'; +// @ts-ignore +import { GenericSuccessResponse } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { OrderDir } from '../models'; +// @ts-ignore +import { OrganizationUserFileTagCreate } from '../models'; +// @ts-ignore +import { OrganizationUserFileTagsRemove } from '../models'; +// @ts-ignore +import { OrganizationUserFilesToSyncOrderByTypes } from '../models'; +// @ts-ignore +import { OrganizationUserFilesToSyncQueryInput } from '../models'; +// @ts-ignore +import { OrganizationUserFilesToSyncQueryInputFilters } from '../models'; +// @ts-ignore +import { PresignedURLResponse } from '../models'; +// @ts-ignore +import { RawTextInput } from '../models'; +// @ts-ignore +import { ResyncFileQueryInput } from '../models'; +// @ts-ignore +import { Tags1 } from '../models'; +// @ts-ignore +import { TextEmbeddingGenerators } from '../models'; +// @ts-ignore +import { UploadFileFromUrlInput } from '../models'; +// @ts-ignore +import { UserFile } from '../models'; +// @ts-ignore +import { UserFilesV2 } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * FilesApi - axios parameter creator + * @export + */ +export const FilesApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * A tag is a key-value pair that can be added to a file. This pair can then be used for searches (e.g. embedding searches) in order to narrow down the scope of the search. A file can have any number of tags. The following are reserved keys that cannot be used: - db_embedding_id - organization_id - user_id - organization_user_file_id Carbon currently supports two data types for tag values - `string` and `list`. Keys can only be `string`. If values other than `string` and `list` are used, they\'re automatically converted to strings (e.g. 4 will become \"4\"). + * @summary Create File Tags + * @param {OrganizationUserFileTagCreate} organizationUserFileTagCreate + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createUserFileTags: async (organizationUserFileTagCreate: OrganizationUserFileTagCreate, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'organizationUserFileTagCreate' is not null or undefined + assertParamExists('createUserFileTags', 'organizationUserFileTagCreate', organizationUserFileTagCreate) + const localVarPath = `/create_user_file_tags`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: organizationUserFileTagCreate, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(organizationUserFileTagCreate, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Delete File Endpoint + * @param {number} fileId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + delete: async (fileId: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'fileId' is not null or undefined + assertParamExists('delete', 'fileId', fileId) + const localVarPath = `/deletefile/{file_id}` + .replace(`{${"file_id"}}`, encodeURIComponent(String(fileId !== undefined ? fileId : `-file_id-`))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Delete File Tags + * @param {OrganizationUserFileTagsRemove} organizationUserFileTagsRemove + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteFileTags: async (organizationUserFileTagsRemove: OrganizationUserFileTagsRemove, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'organizationUserFileTagsRemove' is not null or undefined + assertParamExists('deleteFileTags', 'organizationUserFileTagsRemove', organizationUserFileTagsRemove) + const localVarPath = `/delete_user_file_tags`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: organizationUserFileTagsRemove, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(organizationUserFileTagsRemove, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Delete Files Endpoint + * @param {DeleteFilesQueryInput} deleteFilesQueryInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteMany: async (deleteFilesQueryInput: DeleteFilesQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'deleteFilesQueryInput' is not null or undefined + assertParamExists('deleteMany', 'deleteFilesQueryInput', deleteFilesQueryInput) + const localVarPath = `/delete_files`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: deleteFilesQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(deleteFilesQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Parsed File + * @param {number} fileId + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + getParsedFile: async (fileId: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'fileId' is not null or undefined + assertParamExists('getParsedFile', 'fileId', fileId) + const localVarPath = `/parsed_file/{file_id}` + .replace(`{${"file_id"}}`, encodeURIComponent(String(fileId !== undefined ? fileId : `-file_id-`))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Raw File + * @param {number} fileId + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + getRawFile: async (fileId: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'fileId' is not null or undefined + assertParamExists('getRawFile', 'fileId', fileId) + const localVarPath = `/raw_file/{file_id}` + .replace(`{${"file_id"}}`, encodeURIComponent(String(fileId !== undefined ? fileId : `-file_id-`))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. + * @summary User Files V2 + * @param {OrganizationUserFilesToSyncQueryInput} organizationUserFilesToSyncQueryInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + queryUserFiles: async (organizationUserFilesToSyncQueryInput: OrganizationUserFilesToSyncQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'organizationUserFilesToSyncQueryInput' is not null or undefined + assertParamExists('queryUserFiles', 'organizationUserFilesToSyncQueryInput', organizationUserFilesToSyncQueryInput) + const localVarPath = `/user_files_v2`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: organizationUserFilesToSyncQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(organizationUserFilesToSyncQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary User Files + * @param {OrganizationUserFilesToSyncQueryInput} organizationUserFilesToSyncQueryInput + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + queryUserFilesDeprecated: async (organizationUserFilesToSyncQueryInput: OrganizationUserFilesToSyncQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'organizationUserFilesToSyncQueryInput' is not null or undefined + assertParamExists('queryUserFilesDeprecated', 'organizationUserFilesToSyncQueryInput', organizationUserFilesToSyncQueryInput) + const localVarPath = `/user_files`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: organizationUserFilesToSyncQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(organizationUserFilesToSyncQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Resync File + * @param {ResyncFileQueryInput} resyncFileQueryInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + resync: async (resyncFileQueryInput: ResyncFileQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'resyncFileQueryInput' is not null or undefined + assertParamExists('resync', 'resyncFileQueryInput', resyncFileQueryInput) + const localVarPath = `/resync_file`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: resyncFileQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(resyncFileQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request. Note that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set, PDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates of the bounding box around the chunk (this can be used for things like text highlighting). Following is a description of all possible query parameters: - `chunk_size`: the chunk size (in tokens) applied when splitting the document - `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document - `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings - `set_page_as_boundary`: described above - `embedding_model`: the model used to generate embeddings for the document chunks - `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently) - `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search. - `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Upload File + * @param {Uint8Array | File | buffer.File} file + * @param {BodyCreateUploadFileUploadfilePost} bodyCreateUploadFileUploadfilePost + * @param {number} [chunkSize] Chunk size in tiktoken tokens to be used when processing file. + * @param {number} [chunkOverlap] Chunk overlap in tiktoken tokens to be used when processing file. + * @param {boolean} [skipEmbeddingGeneration] Flag to control whether or not embeddings should be generated and stored when processing file. + * @param {boolean} [setPageAsBoundary] Flag to control whether or not to set the a page\'s worth of content as the maximum amount of content that can appear in a chunk. Only valid for PDFs. See description route description for more information. + * @param {TextEmbeddingGenerators} [embeddingModel] Embedding model that will be used to embed file chunks. + * @param {boolean} [useOcr] Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with tables, images, and/or scanned text. + * @param {boolean} [generateSparseVectors] Whether or not to generate sparse vectors for the file. This is *required* for the file to be a candidate for hybrid search. + * @param {boolean} [prependFilenameToChunks] Whether or not to prepend the file\'s name to chunks. + * @param {number} [maxItemsPerChunk] Number of objects per chunk. For json files only. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + upload: async (file: Uint8Array | File | buffer.File, bodyCreateUploadFileUploadfilePost: BodyCreateUploadFileUploadfilePost, chunkSize?: number, chunkOverlap?: number, skipEmbeddingGeneration?: boolean, setPageAsBoundary?: boolean, embeddingModel?: TextEmbeddingGenerators, useOcr?: boolean, generateSparseVectors?: boolean, prependFilenameToChunks?: boolean, maxItemsPerChunk?: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'file' is not null or undefined + assertParamExists('upload', 'file', file) + // verify required parameter 'bodyCreateUploadFileUploadfilePost' is not null or undefined + assertParamExists('upload', 'bodyCreateUploadFileUploadfilePost', bodyCreateUploadFileUploadfilePost) + const localVarPath = `/uploadfile`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)(); + const addFormParam = async (name: string, data: any, isBinary: boolean, isPrimitiveType: boolean) => { + if (isBinary) { + if (data instanceof Uint8Array) { + // Handle Buffer data + const filetype = await fromBuffer(data) + const filename = filetype === undefined ? name : `${name}.${filetype.ext}` + localVarFormParams.append(name, data as any, filename); + } else if ("name" in data) { + // File instances in browsers and Node.js have the + // "name" property "Duck typing" files to handle browser + // File class or Node.js File class + // Web: https://developer.mozilla.org/en-US/docs/Web/API/File + // Node.js: https://nodejs.org/api/buffer.html#new-bufferfilesources-filename-options + if (isBrowser()) { + // FormData in browser can accept File/Blob directly + localVarFormParams.append(name, data, data.name); + } else { + // FormData in Node.js can only accept raw Buffer so convert before passing + const bytes = await data.arrayBuffer() + const buffer = Buffer.from(bytes) + localVarFormParams.append(name, buffer, data.name); + } + } + } else { + if (isPrimitiveType) { + /** + * FormData can only accept string or Blob so we need to convert + * non-string primitives to string. We also need to convert + */ + if (typeof data === "object") { + localVarFormParams.append(name, JSON.stringify(data)); + } else { + localVarFormParams.append(name, data); + } + } else { + if (isBrowser()) { + localVarFormParams.append(name, new Blob([JSON.stringify(data)], { type: "application/json" })) + } else { + localVarFormParams.append(name, JSON.stringify(data), { type: "application/json", filename: "data.json" }); + } + } + } + } + if (!isBrowser()) Object.assign(localVarHeaderParameter, localVarFormParams.getHeaders()); + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + if (chunkSize !== undefined) { + localVarQueryParameter['chunk_size'] = chunkSize; + } + + if (chunkOverlap !== undefined) { + localVarQueryParameter['chunk_overlap'] = chunkOverlap; + } + + if (skipEmbeddingGeneration !== undefined) { + localVarQueryParameter['skip_embedding_generation'] = skipEmbeddingGeneration; + } + + if (setPageAsBoundary !== undefined) { + localVarQueryParameter['set_page_as_boundary'] = setPageAsBoundary; + } + + if (embeddingModel !== undefined) { + localVarQueryParameter['embedding_model'] = embeddingModel; + } + + if (useOcr !== undefined) { + localVarQueryParameter['use_ocr'] = useOcr; + } + + if (generateSparseVectors !== undefined) { + localVarQueryParameter['generate_sparse_vectors'] = generateSparseVectors; + } + + if (prependFilenameToChunks !== undefined) { + localVarQueryParameter['prepend_filename_to_chunks'] = prependFilenameToChunks; + } + + if (maxItemsPerChunk !== undefined) { + localVarQueryParameter['max_items_per_chunk'] = maxItemsPerChunk; + } + + + if (file !== undefined) { + await addFormParam('file', file, true, true) + } + + + + localVarHeaderParameter['Content-Type'] = 'multipart/form-data'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = localVarFormParams; + requestBeforeHook({ + requestBody: bodyCreateUploadFileUploadfilePost, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Create Upload File From Url + * @param {UploadFileFromUrlInput} uploadFileFromUrlInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadFromUrl: async (uploadFileFromUrlInput: UploadFileFromUrlInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'uploadFileFromUrlInput' is not null or undefined + assertParamExists('uploadFromUrl', 'uploadFileFromUrlInput', uploadFileFromUrlInput) + const localVarPath = `/upload_file_from_url`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: uploadFileFromUrlInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(uploadFileFromUrlInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Raw Text + * @param {RawTextInput} rawTextInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadText: async (rawTextInput: RawTextInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'rawTextInput' is not null or undefined + assertParamExists('uploadText', 'rawTextInput', rawTextInput) + const localVarPath = `/upload_text`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: rawTextInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(rawTextInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * FilesApi - functional programming interface + * @export + */ +export const FilesApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = FilesApiAxiosParamCreator(configuration) + return { + /** + * A tag is a key-value pair that can be added to a file. This pair can then be used for searches (e.g. embedding searches) in order to narrow down the scope of the search. A file can have any number of tags. The following are reserved keys that cannot be used: - db_embedding_id - organization_id - user_id - organization_user_file_id Carbon currently supports two data types for tag values - `string` and `list`. Keys can only be `string`. If values other than `string` and `list` are used, they\'re automatically converted to strings (e.g. 4 will become \"4\"). + * @summary Create File Tags + * @param {FilesApiCreateUserFileTagsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createUserFileTags(requestParameters: FilesApiCreateUserFileTagsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createUserFileTags(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Delete File Endpoint + * @param {FilesApiDeleteRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async delete(requestParameters: FilesApiDeleteRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.delete(requestParameters.fileId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Delete File Tags + * @param {FilesApiDeleteFileTagsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteFileTags(requestParameters: FilesApiDeleteFileTagsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteFileTags(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Delete Files Endpoint + * @param {FilesApiDeleteManyRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteMany(requestParameters: FilesApiDeleteManyRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteMany(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Parsed File + * @param {FilesApiGetParsedFileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + async getParsedFile(requestParameters: FilesApiGetParsedFileRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getParsedFile(requestParameters.fileId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Raw File + * @param {FilesApiGetRawFileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + async getRawFile(requestParameters: FilesApiGetRawFileRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getRawFile(requestParameters.fileId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. + * @summary User Files V2 + * @param {FilesApiQueryUserFilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async queryUserFiles(requestParameters: FilesApiQueryUserFilesRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.queryUserFiles(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary User Files + * @param {FilesApiQueryUserFilesDeprecatedRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + async queryUserFilesDeprecated(requestParameters: FilesApiQueryUserFilesDeprecatedRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.queryUserFilesDeprecated(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Resync File + * @param {FilesApiResyncRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async resync(requestParameters: FilesApiResyncRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.resync(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request. Note that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set, PDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates of the bounding box around the chunk (this can be used for things like text highlighting). Following is a description of all possible query parameters: - `chunk_size`: the chunk size (in tokens) applied when splitting the document - `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document - `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings - `set_page_as_boundary`: described above - `embedding_model`: the model used to generate embeddings for the document chunks - `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently) - `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search. - `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Upload File + * @param {FilesApiUploadRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async upload(requestParameters: FilesApiUploadRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.upload(requestParameters.file, requestParameters, requestParameters.chunkSize, requestParameters.chunkOverlap, requestParameters.skipEmbeddingGeneration, requestParameters.setPageAsBoundary, requestParameters.embeddingModel, requestParameters.useOcr, requestParameters.generateSparseVectors, requestParameters.prependFilenameToChunks, requestParameters.maxItemsPerChunk, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Create Upload File From Url + * @param {FilesApiUploadFromUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async uploadFromUrl(requestParameters: FilesApiUploadFromUrlRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.uploadFromUrl(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Raw Text + * @param {FilesApiUploadTextRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async uploadText(requestParameters: FilesApiUploadTextRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.uploadText(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * FilesApi - factory interface + * @export + */ +export const FilesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = FilesApiFp(configuration) + return { + /** + * A tag is a key-value pair that can be added to a file. This pair can then be used for searches (e.g. embedding searches) in order to narrow down the scope of the search. A file can have any number of tags. The following are reserved keys that cannot be used: - db_embedding_id - organization_id - user_id - organization_user_file_id Carbon currently supports two data types for tag values - `string` and `list`. Keys can only be `string`. If values other than `string` and `list` are used, they\'re automatically converted to strings (e.g. 4 will become \"4\"). + * @summary Create File Tags + * @param {FilesApiCreateUserFileTagsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createUserFileTags(requestParameters: FilesApiCreateUserFileTagsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.createUserFileTags(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Delete File Endpoint + * @param {FilesApiDeleteRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + delete(requestParameters: FilesApiDeleteRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.delete(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Delete File Tags + * @param {FilesApiDeleteFileTagsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteFileTags(requestParameters: FilesApiDeleteFileTagsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.deleteFileTags(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Delete Files Endpoint + * @param {FilesApiDeleteManyRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteMany(requestParameters: FilesApiDeleteManyRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.deleteMany(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Parsed File + * @param {FilesApiGetParsedFileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + getParsedFile(requestParameters: FilesApiGetParsedFileRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getParsedFile(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Raw File + * @param {FilesApiGetRawFileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + getRawFile(requestParameters: FilesApiGetRawFileRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getRawFile(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. + * @summary User Files V2 + * @param {FilesApiQueryUserFilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + queryUserFiles(requestParameters: FilesApiQueryUserFilesRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.queryUserFiles(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary User Files + * @param {FilesApiQueryUserFilesDeprecatedRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + */ + queryUserFilesDeprecated(requestParameters: FilesApiQueryUserFilesDeprecatedRequest, options?: AxiosRequestConfig): AxiosPromise> { + return localVarFp.queryUserFilesDeprecated(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Resync File + * @param {FilesApiResyncRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + resync(requestParameters: FilesApiResyncRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.resync(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request. Note that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set, PDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates of the bounding box around the chunk (this can be used for things like text highlighting). Following is a description of all possible query parameters: - `chunk_size`: the chunk size (in tokens) applied when splitting the document - `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document - `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings - `set_page_as_boundary`: described above - `embedding_model`: the model used to generate embeddings for the document chunks - `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently) - `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search. - `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Upload File + * @param {FilesApiUploadRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + upload(requestParameters: FilesApiUploadRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.upload(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Create Upload File From Url + * @param {FilesApiUploadFromUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadFromUrl(requestParameters: FilesApiUploadFromUrlRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.uploadFromUrl(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Raw Text + * @param {FilesApiUploadTextRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + uploadText(requestParameters: FilesApiUploadTextRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.uploadText(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for createUserFileTags operation in FilesApi. + * @export + * @interface FilesApiCreateUserFileTagsRequest + */ +export type FilesApiCreateUserFileTagsRequest = { + +} & OrganizationUserFileTagCreate + +/** + * Request parameters for delete operation in FilesApi. + * @export + * @interface FilesApiDeleteRequest + */ +export type FilesApiDeleteRequest = { + + /** + * + * @type {number} + * @memberof FilesApiDelete + */ + readonly fileId: number + +} + +/** + * Request parameters for deleteFileTags operation in FilesApi. + * @export + * @interface FilesApiDeleteFileTagsRequest + */ +export type FilesApiDeleteFileTagsRequest = { + +} & OrganizationUserFileTagsRemove + +/** + * Request parameters for deleteMany operation in FilesApi. + * @export + * @interface FilesApiDeleteManyRequest + */ +export type FilesApiDeleteManyRequest = { + +} & DeleteFilesQueryInput + +/** + * Request parameters for getParsedFile operation in FilesApi. + * @export + * @interface FilesApiGetParsedFileRequest + */ +export type FilesApiGetParsedFileRequest = { + + /** + * + * @type {number} + * @memberof FilesApiGetParsedFile + */ + readonly fileId: number + +} + +/** + * Request parameters for getRawFile operation in FilesApi. + * @export + * @interface FilesApiGetRawFileRequest + */ +export type FilesApiGetRawFileRequest = { + + /** + * + * @type {number} + * @memberof FilesApiGetRawFile + */ + readonly fileId: number + +} + +/** + * Request parameters for queryUserFiles operation in FilesApi. + * @export + * @interface FilesApiQueryUserFilesRequest + */ +export type FilesApiQueryUserFilesRequest = { + +} & OrganizationUserFilesToSyncQueryInput + +/** + * Request parameters for queryUserFilesDeprecated operation in FilesApi. + * @export + * @interface FilesApiQueryUserFilesDeprecatedRequest + */ +export type FilesApiQueryUserFilesDeprecatedRequest = { + +} & OrganizationUserFilesToSyncQueryInput + +/** + * Request parameters for resync operation in FilesApi. + * @export + * @interface FilesApiResyncRequest + */ +export type FilesApiResyncRequest = { + +} & ResyncFileQueryInput + +/** + * Request parameters for upload operation in FilesApi. + * @export + * @interface FilesApiUploadRequest + */ +export type FilesApiUploadRequest = { + + /** + * + * @type {Uint8Array | File | buffer.File} + * @memberof FilesApiUpload + */ + readonly file: Uint8Array | File | buffer.File + + /** + * Chunk size in tiktoken tokens to be used when processing file. + * @type {number} + * @memberof FilesApiUpload + */ + readonly chunkSize?: number + + /** + * Chunk overlap in tiktoken tokens to be used when processing file. + * @type {number} + * @memberof FilesApiUpload + */ + readonly chunkOverlap?: number + + /** + * Flag to control whether or not embeddings should be generated and stored when processing file. + * @type {boolean} + * @memberof FilesApiUpload + */ + readonly skipEmbeddingGeneration?: boolean + + /** + * Flag to control whether or not to set the a page\'s worth of content as the maximum amount of content that can appear in a chunk. Only valid for PDFs. See description route description for more information. + * @type {boolean} + * @memberof FilesApiUpload + */ + readonly setPageAsBoundary?: boolean + + /** + * Embedding model that will be used to embed file chunks. + * @type {TextEmbeddingGenerators} + * @memberof FilesApiUpload + */ + readonly embeddingModel?: TextEmbeddingGenerators + + /** + * Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with tables, images, and/or scanned text. + * @type {boolean} + * @memberof FilesApiUpload + */ + readonly useOcr?: boolean + + /** + * Whether or not to generate sparse vectors for the file. This is *required* for the file to be a candidate for hybrid search. + * @type {boolean} + * @memberof FilesApiUpload + */ + readonly generateSparseVectors?: boolean + + /** + * Whether or not to prepend the file\'s name to chunks. + * @type {boolean} + * @memberof FilesApiUpload + */ + readonly prependFilenameToChunks?: boolean + + /** + * Number of objects per chunk. For json files only. + * @type {number} + * @memberof FilesApiUpload + */ + readonly maxItemsPerChunk?: number + +} & BodyCreateUploadFileUploadfilePost + +/** + * Request parameters for uploadFromUrl operation in FilesApi. + * @export + * @interface FilesApiUploadFromUrlRequest + */ +export type FilesApiUploadFromUrlRequest = { + +} & UploadFileFromUrlInput + +/** + * Request parameters for uploadText operation in FilesApi. + * @export + * @interface FilesApiUploadTextRequest + */ +export type FilesApiUploadTextRequest = { + +} & RawTextInput + +/** + * FilesApiGenerated - object-oriented interface + * @export + * @class FilesApiGenerated + * @extends {BaseAPI} + */ +export class FilesApiGenerated extends BaseAPI { + /** + * A tag is a key-value pair that can be added to a file. This pair can then be used for searches (e.g. embedding searches) in order to narrow down the scope of the search. A file can have any number of tags. The following are reserved keys that cannot be used: - db_embedding_id - organization_id - user_id - organization_user_file_id Carbon currently supports two data types for tag values - `string` and `list`. Keys can only be `string`. If values other than `string` and `list` are used, they\'re automatically converted to strings (e.g. 4 will become \"4\"). + * @summary Create File Tags + * @param {FilesApiCreateUserFileTagsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public createUserFileTags(requestParameters: FilesApiCreateUserFileTagsRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).createUserFileTags(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Delete File Endpoint + * @param {FilesApiDeleteRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public delete(requestParameters: FilesApiDeleteRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).delete(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Delete File Tags + * @param {FilesApiDeleteFileTagsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public deleteFileTags(requestParameters: FilesApiDeleteFileTagsRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).deleteFileTags(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Delete Files Endpoint + * @param {FilesApiDeleteManyRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public deleteMany(requestParameters: FilesApiDeleteManyRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).deleteMany(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Parsed File + * @param {FilesApiGetParsedFileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public getParsedFile(requestParameters: FilesApiGetParsedFileRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).getParsedFile(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary Raw File + * @param {FilesApiGetRawFileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public getRawFile(requestParameters: FilesApiGetRawFileRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).getRawFile(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * For pre-filtering documents, using `tags_v2` is preferred to using `tags` (which is now deprecated). If both `tags_v2` and `tags` are specified, `tags` is ignored. `tags_v2` enables building complex filters through the use of \"AND\", \"OR\", and negation logic. Take the below input as an example: ```json { \"OR\": [ { \"key\": \"subject\", \"value\": \"holy-bible\", \"negate\": false }, { \"key\": \"person-of-interest\", \"value\": \"jesus christ\", \"negate\": false }, { \"key\": \"genre\", \"value\": \"religion\", \"negate\": true } { \"AND\": [ { \"key\": \"subject\", \"value\": \"tao-te-ching\", \"negate\": false }, { \"key\": \"author\", \"value\": \"lao-tzu\", \"negate\": false } ] } ] } ``` In this case, files will be filtered such that: 1. \"subject\" = \"holy-bible\" OR 2. \"person-of-interest\" = \"jesus christ\" OR 3. \"genre\" != \"religion\" OR 4. \"subject\" = \"tao-te-ching\" AND \"author\" = \"lao-tzu\" Note that the top level of the query must be either an \"OR\" or \"AND\" array. Currently, nesting is limited to 3. For tag blocks (those with \"key\", \"value\", and \"negate\" keys), the following typing rules apply: 1. \"key\" isn\'t optional and must be a `string` 2. \"value\" isn\'t optional and can be `any` or list[`any`] 3. \"negate\" is optional and must be `true` or `false`. If present and `true`, then the filter block is negated in the resulting query. It is `false` by default. + * @summary User Files V2 + * @param {FilesApiQueryUserFilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public queryUserFiles(requestParameters: FilesApiQueryUserFilesRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).queryUserFiles(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * This route is deprecated. Use `/user_files_v2` instead. + * @summary User Files + * @param {FilesApiQueryUserFilesDeprecatedRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @deprecated + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public queryUserFilesDeprecated(requestParameters: FilesApiQueryUserFilesDeprecatedRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).queryUserFilesDeprecated(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Resync File + * @param {FilesApiResyncRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public resync(requestParameters: FilesApiResyncRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).resync(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * This endpoint is used to directly upload local files to Carbon. The `POST` request should be a multipart form request. Note that the `set_page_as_boundary` query parameter is applicable only to PDFs for now. When this value is set, PDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates of the bounding box around the chunk (this can be used for things like text highlighting). Following is a description of all possible query parameters: - `chunk_size`: the chunk size (in tokens) applied when splitting the document - `chunk_overlap`: the chunk overlap (in tokens) applied when splitting the document - `skip_embedding_generation`: whether or not to skip the generation of chunks and embeddings - `set_page_as_boundary`: described above - `embedding_model`: the model used to generate embeddings for the document chunks - `use_ocr`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently) - `generate_sparse_vectors`: whether or not to generate sparse vectors for the file. Required for hybrid search. - `prepend_filename_to_chunks`: whether or not to prepend the filename to the chunk text Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Upload File + * @param {FilesApiUploadRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public upload(requestParameters: FilesApiUploadRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).upload(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Create Upload File From Url + * @param {FilesApiUploadFromUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public uploadFromUrl(requestParameters: FilesApiUploadFromUrlRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).uploadFromUrl(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI\'s multimodal model; for text, we support OpenAI\'s `text-embedding-ada-002` and Cohere\'s embed-multilingual-v3.0. The model can be specified via the `embedding_model` parameter (in the POST body for `/embeddings`, and a query parameter in `/uploadfile`). If no model is supplied, the `text-embedding-ada-002` is used by default. When performing embedding queries, embeddings from files that used the specified model will be considered in the query. For example, if files A and B have embeddings generated with `OPENAI`, and files C and D have embeddings generated with `COHERE_MULTILINGUAL_V3`, then by default, queries will only consider files A and B. If `COHERE_MULTILINGUAL_V3` is specified as the `embedding_model` in `/embeddings`, then only files C and D will be considered. Make sure that the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** set `VERTEX_MULTIMODAL` as an `embedding_model`. This model is used automatically by Carbon when it detects an image file. + * @summary Create Raw Text + * @param {FilesApiUploadTextRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof FilesApiGenerated + */ + public uploadText(requestParameters: FilesApiUploadTextRequest, options?: AxiosRequestConfig) { + return FilesApiFp(this.configuration).uploadText(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/files-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/files-api.ts new file mode 100644 index 000000000..5c289b87a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/files-api.ts @@ -0,0 +1,4 @@ +import { FilesApiGenerated } from "./files-api-generated"; +export * from "./files-api-generated"; + +export class FilesApi extends FilesApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/health-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/health-api-generated.ts new file mode 100644 index 000000000..45df88743 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/health-api-generated.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * HealthApi - axios parameter creator + * @export + */ +export const HealthApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary Health + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + check: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/health`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * HealthApi - functional programming interface + * @export + */ +export const HealthApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = HealthApiAxiosParamCreator(configuration) + return { + /** + * + * @summary Health + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async check(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.check(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * HealthApi - factory interface + * @export + */ +export const HealthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = HealthApiFp(configuration) + return { + /** + * + * @summary Health + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + check(options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.check(options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * HealthApiGenerated - object-oriented interface + * @export + * @class HealthApiGenerated + * @extends {BaseAPI} + */ +export class HealthApiGenerated extends BaseAPI { + /** + * + * @summary Health + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof HealthApiGenerated + */ + public check(options?: AxiosRequestConfig) { + return HealthApiFp(this.configuration).check(options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/health-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/health-api.ts new file mode 100644 index 000000000..54c60e737 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/health-api.ts @@ -0,0 +1,4 @@ +import { HealthApiGenerated } from "./health-api-generated"; +export * from "./health-api-generated"; + +export class HealthApi extends HealthApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/integrations-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/integrations-api-generated.ts new file mode 100644 index 000000000..c6a34b984 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/integrations-api-generated.ts @@ -0,0 +1,1207 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { DataSourceType } from '../models'; +// @ts-ignore +import { EmbeddingGenerators } from '../models'; +// @ts-ignore +import { EmbeddingGeneratorsNullable } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksQueryInputPagination } from '../models'; +// @ts-ignore +import { FreshDeskConnectRequest } from '../models'; +// @ts-ignore +import { GenericSuccessResponse } from '../models'; +// @ts-ignore +import { GmailSyncInput } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { ListDataSourceItemsRequest } from '../models'; +// @ts-ignore +import { ListDataSourceItemsResponse } from '../models'; +// @ts-ignore +import { ListRequest } from '../models'; +// @ts-ignore +import { ListResponse } from '../models'; +// @ts-ignore +import { OAuthURLRequest } from '../models'; +// @ts-ignore +import { OrganizationUserDataSourceAPI } from '../models'; +// @ts-ignore +import { OutlookSyncInput } from '../models'; +// @ts-ignore +import { RSSFeedInput } from '../models'; +// @ts-ignore +import { S3AuthRequest } from '../models'; +// @ts-ignore +import { S3FileSyncInput } from '../models'; +// @ts-ignore +import { S3GetFileInput } from '../models'; +// @ts-ignore +import { SyncDirectoryRequest } from '../models'; +// @ts-ignore +import { SyncFilesRequest } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * IntegrationsApi - axios parameter creator + * @export + */ +export const IntegrationsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. Once you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will trigger an automatic sync of the articles in your \"solutions\" tab. Additional parameters below can be used to associate data with the synced articles or modify the sync behavior. + * @summary Freshdesk Connect + * @param {FreshDeskConnectRequest} freshDeskConnectRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + connectFreshdesk: async (freshDeskConnectRequest: FreshDeskConnectRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'freshDeskConnectRequest' is not null or undefined + assertParamExists('connectFreshdesk', 'freshDeskConnectRequest', freshDeskConnectRequest) + const localVarPath = `/integrations/freshdesk`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: freshDeskConnectRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(freshDeskConnectRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Create a new IAM user with permissions to:
  1. List all buckets.
  2. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry the same permissions.
Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. + * @summary S3 Auth + * @param {S3AuthRequest} s3AuthRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAwsIamUser: async (s3AuthRequest: S3AuthRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 's3AuthRequest' is not null or undefined + assertParamExists('createAwsIamUser', 's3AuthRequest', s3AuthRequest) + const localVarPath = `/integrations/s3`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: s3AuthRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(s3AuthRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Get Oauth Url + * @param {OAuthURLRequest} oAuthURLRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getOauthUrl: async (oAuthURLRequest: OAuthURLRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'oAuthURLRequest' is not null or undefined + assertParamExists('getOauthUrl', 'oAuthURLRequest', oAuthURLRequest) + const localVarPath = `/integrations/oauth_url`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: oAuthURLRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(oAuthURLRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * To begin listing a user\'s Confluence pages, at least a `data_source_id` of a connected Confluence account must be specified. This base request returns a list of root pages for every space the user has access to in a Confluence instance. To traverse further down the user\'s page directory, additional requests to this endpoint can be made with the same `data_source_id` and with `parent_id` set to the id of page from a previous request. For convenience, the `has_children` property in each directory item in the response list will flag which pages will return non-empty lists of pages when set as the `parent_id`. + * @summary Confluence List + * @param {ListRequest} listRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listConfluencePages: async (listRequest: ListRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'listRequest' is not null or undefined + assertParamExists('listConfluencePages', 'listRequest', listRequest) + const localVarPath = `/integrations/confluence/list`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: listRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(listRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary List Data Source Items + * @param {ListDataSourceItemsRequest} listDataSourceItemsRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listDataSourceItems: async (listDataSourceItemsRequest: ListDataSourceItemsRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'listDataSourceItemsRequest' is not null or undefined + assertParamExists('listDataSourceItems', 'listDataSourceItemsRequest', listDataSourceItemsRequest) + const localVarPath = `/integrations/items/list`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: listDataSourceItemsRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(listDataSourceItemsRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * After listing pages in a user\'s Confluence account, the set of selected page `ids` and the connected account\'s `data_source_id` can be passed into this endpoint to sync them into Carbon. Additional parameters listed below can be used to associate data to the selected pages or alter the behavior of the sync. + * @summary Confluence Sync + * @param {SyncFilesRequest} syncFilesRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncConfluence: async (syncFilesRequest: SyncFilesRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'syncFilesRequest' is not null or undefined + assertParamExists('syncConfluence', 'syncFilesRequest', syncFilesRequest) + const localVarPath = `/integrations/confluence/sync`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: syncFilesRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(syncFilesRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Sync Data Source Items + * @param {SyncDirectoryRequest} syncDirectoryRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncDataSourceItems: async (syncDirectoryRequest: SyncDirectoryRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'syncDirectoryRequest' is not null or undefined + assertParamExists('syncDataSourceItems', 'syncDirectoryRequest', syncDirectoryRequest) + const localVarPath = `/integrations/items/sync`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: syncDirectoryRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(syncDirectoryRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Sync Files + * @param {SyncFilesRequest} syncFilesRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncFiles: async (syncFilesRequest: SyncFilesRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'syncFilesRequest' is not null or undefined + assertParamExists('syncFiles', 'syncFilesRequest', syncFilesRequest) + const localVarPath = `/integrations/files/sync`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: syncFilesRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(syncFilesRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. label: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values - starred, important, snoozed, and unread Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Gmail Sync + * @param {GmailSyncInput} gmailSyncInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncGmail: async (gmailSyncInput: GmailSyncInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'gmailSyncInput' is not null or undefined + assertParamExists('syncGmail', 'gmailSyncInput', gmailSyncInput) + const localVarPath = `/integrations/gmail/sync`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: gmailSyncInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(gmailSyncInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Once you have successfully connected your Outlook account, you can choose which emails to sync with us using the filters and folder parameter. \"folder\" should be the folder you want to sync from Outlook. By default we get messages from your inbox folder. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. category: Custom categories that you created in Outlook. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values: flagged An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` Which will list all emails that have the category \"Test\". Specifying a custom folder in the same query ```json { \"folder\": \"Folder Name\", \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"category\", \"value\": \"Personal\" }, { \"key\": \"category\", \"value\": \"Test\" }, ] } ] } } ``` This will return emails after 7th of Jan that have either Personal or Test as category. Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Outlook Sync + * @param {OutlookSyncInput} outlookSyncInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncOutlook: async (outlookSyncInput: OutlookSyncInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'outlookSyncInput' is not null or undefined + assertParamExists('syncOutlook', 'outlookSyncInput', outlookSyncInput) + const localVarPath = `/integrations/outlook/sync`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: outlookSyncInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(outlookSyncInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Rss Feed + * @param {RSSFeedInput} rSSFeedInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncRssFeed: async (rSSFeedInput: RSSFeedInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'rSSFeedInput' is not null or undefined + assertParamExists('syncRssFeed', 'rSSFeedInput', rSSFeedInput) + const localVarPath = `/integrations/rss_feed`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: rSSFeedInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(rSSFeedInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name and object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate data with the selected items or modify the sync behavior + * @summary S3 Files + * @param {S3FileSyncInput} s3FileSyncInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncS3Files: async (s3FileSyncInput: S3FileSyncInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 's3FileSyncInput' is not null or undefined + assertParamExists('syncS3Files', 's3FileSyncInput', s3FileSyncInput) + const localVarPath = `/integrations/s3/files`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: s3FileSyncInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(s3FileSyncInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * IntegrationsApi - functional programming interface + * @export + */ +export const IntegrationsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = IntegrationsApiAxiosParamCreator(configuration) + return { + /** + * Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. Once you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will trigger an automatic sync of the articles in your \"solutions\" tab. Additional parameters below can be used to associate data with the synced articles or modify the sync behavior. + * @summary Freshdesk Connect + * @param {IntegrationsApiConnectFreshdeskRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async connectFreshdesk(requestParameters: IntegrationsApiConnectFreshdeskRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.connectFreshdesk(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Create a new IAM user with permissions to:
  1. List all buckets.
  2. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry the same permissions.
Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. + * @summary S3 Auth + * @param {IntegrationsApiCreateAwsIamUserRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createAwsIamUser(requestParameters: IntegrationsApiCreateAwsIamUserRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createAwsIamUser(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Get Oauth Url + * @param {IntegrationsApiGetOauthUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getOauthUrl(requestParameters: IntegrationsApiGetOauthUrlRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getOauthUrl(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * To begin listing a user\'s Confluence pages, at least a `data_source_id` of a connected Confluence account must be specified. This base request returns a list of root pages for every space the user has access to in a Confluence instance. To traverse further down the user\'s page directory, additional requests to this endpoint can be made with the same `data_source_id` and with `parent_id` set to the id of page from a previous request. For convenience, the `has_children` property in each directory item in the response list will flag which pages will return non-empty lists of pages when set as the `parent_id`. + * @summary Confluence List + * @param {IntegrationsApiListConfluencePagesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listConfluencePages(requestParameters: IntegrationsApiListConfluencePagesRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listConfluencePages(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary List Data Source Items + * @param {IntegrationsApiListDataSourceItemsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listDataSourceItems(requestParameters: IntegrationsApiListDataSourceItemsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listDataSourceItems(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * After listing pages in a user\'s Confluence account, the set of selected page `ids` and the connected account\'s `data_source_id` can be passed into this endpoint to sync them into Carbon. Additional parameters listed below can be used to associate data to the selected pages or alter the behavior of the sync. + * @summary Confluence Sync + * @param {IntegrationsApiSyncConfluenceRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncConfluence(requestParameters: IntegrationsApiSyncConfluenceRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncConfluence(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Sync Data Source Items + * @param {IntegrationsApiSyncDataSourceItemsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncDataSourceItems(requestParameters: IntegrationsApiSyncDataSourceItemsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncDataSourceItems(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Sync Files + * @param {IntegrationsApiSyncFilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncFiles(requestParameters: IntegrationsApiSyncFilesRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncFiles(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. label: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values - starred, important, snoozed, and unread Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Gmail Sync + * @param {IntegrationsApiSyncGmailRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncGmail(requestParameters: IntegrationsApiSyncGmailRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncGmail(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Once you have successfully connected your Outlook account, you can choose which emails to sync with us using the filters and folder parameter. \"folder\" should be the folder you want to sync from Outlook. By default we get messages from your inbox folder. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. category: Custom categories that you created in Outlook. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values: flagged An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` Which will list all emails that have the category \"Test\". Specifying a custom folder in the same query ```json { \"folder\": \"Folder Name\", \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"category\", \"value\": \"Personal\" }, { \"key\": \"category\", \"value\": \"Test\" }, ] } ] } } ``` This will return emails after 7th of Jan that have either Personal or Test as category. Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Outlook Sync + * @param {IntegrationsApiSyncOutlookRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncOutlook(requestParameters: IntegrationsApiSyncOutlookRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncOutlook(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Rss Feed + * @param {IntegrationsApiSyncRssFeedRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncRssFeed(requestParameters: IntegrationsApiSyncRssFeedRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncRssFeed(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name and object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate data with the selected items or modify the sync behavior + * @summary S3 Files + * @param {IntegrationsApiSyncS3FilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async syncS3Files(requestParameters: IntegrationsApiSyncS3FilesRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.syncS3Files(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * IntegrationsApi - factory interface + * @export + */ +export const IntegrationsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = IntegrationsApiFp(configuration) + return { + /** + * Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. Once you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will trigger an automatic sync of the articles in your \"solutions\" tab. Additional parameters below can be used to associate data with the synced articles or modify the sync behavior. + * @summary Freshdesk Connect + * @param {IntegrationsApiConnectFreshdeskRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + connectFreshdesk(requestParameters: IntegrationsApiConnectFreshdeskRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.connectFreshdesk(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Create a new IAM user with permissions to:
  1. List all buckets.
  2. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry the same permissions.
Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. + * @summary S3 Auth + * @param {IntegrationsApiCreateAwsIamUserRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAwsIamUser(requestParameters: IntegrationsApiCreateAwsIamUserRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.createAwsIamUser(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Get Oauth Url + * @param {IntegrationsApiGetOauthUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getOauthUrl(requestParameters: IntegrationsApiGetOauthUrlRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.getOauthUrl(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * To begin listing a user\'s Confluence pages, at least a `data_source_id` of a connected Confluence account must be specified. This base request returns a list of root pages for every space the user has access to in a Confluence instance. To traverse further down the user\'s page directory, additional requests to this endpoint can be made with the same `data_source_id` and with `parent_id` set to the id of page from a previous request. For convenience, the `has_children` property in each directory item in the response list will flag which pages will return non-empty lists of pages when set as the `parent_id`. + * @summary Confluence List + * @param {IntegrationsApiListConfluencePagesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listConfluencePages(requestParameters: IntegrationsApiListConfluencePagesRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.listConfluencePages(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary List Data Source Items + * @param {IntegrationsApiListDataSourceItemsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listDataSourceItems(requestParameters: IntegrationsApiListDataSourceItemsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.listDataSourceItems(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * After listing pages in a user\'s Confluence account, the set of selected page `ids` and the connected account\'s `data_source_id` can be passed into this endpoint to sync them into Carbon. Additional parameters listed below can be used to associate data to the selected pages or alter the behavior of the sync. + * @summary Confluence Sync + * @param {IntegrationsApiSyncConfluenceRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncConfluence(requestParameters: IntegrationsApiSyncConfluenceRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncConfluence(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Sync Data Source Items + * @param {IntegrationsApiSyncDataSourceItemsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncDataSourceItems(requestParameters: IntegrationsApiSyncDataSourceItemsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncDataSourceItems(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Sync Files + * @param {IntegrationsApiSyncFilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncFiles(requestParameters: IntegrationsApiSyncFilesRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncFiles(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. label: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values - starred, important, snoozed, and unread Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Gmail Sync + * @param {IntegrationsApiSyncGmailRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncGmail(requestParameters: IntegrationsApiSyncGmailRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncGmail(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Once you have successfully connected your Outlook account, you can choose which emails to sync with us using the filters and folder parameter. \"folder\" should be the folder you want to sync from Outlook. By default we get messages from your inbox folder. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. category: Custom categories that you created in Outlook. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values: flagged An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` Which will list all emails that have the category \"Test\". Specifying a custom folder in the same query ```json { \"folder\": \"Folder Name\", \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"category\", \"value\": \"Personal\" }, { \"key\": \"category\", \"value\": \"Test\" }, ] } ] } } ``` This will return emails after 7th of Jan that have either Personal or Test as category. Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Outlook Sync + * @param {IntegrationsApiSyncOutlookRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncOutlook(requestParameters: IntegrationsApiSyncOutlookRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncOutlook(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Rss Feed + * @param {IntegrationsApiSyncRssFeedRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncRssFeed(requestParameters: IntegrationsApiSyncRssFeedRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncRssFeed(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name and object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate data with the selected items or modify the sync behavior + * @summary S3 Files + * @param {IntegrationsApiSyncS3FilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + syncS3Files(requestParameters: IntegrationsApiSyncS3FilesRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.syncS3Files(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for connectFreshdesk operation in IntegrationsApi. + * @export + * @interface IntegrationsApiConnectFreshdeskRequest + */ +export type IntegrationsApiConnectFreshdeskRequest = { + +} & FreshDeskConnectRequest + +/** + * Request parameters for createAwsIamUser operation in IntegrationsApi. + * @export + * @interface IntegrationsApiCreateAwsIamUserRequest + */ +export type IntegrationsApiCreateAwsIamUserRequest = { + +} & S3AuthRequest + +/** + * Request parameters for getOauthUrl operation in IntegrationsApi. + * @export + * @interface IntegrationsApiGetOauthUrlRequest + */ +export type IntegrationsApiGetOauthUrlRequest = { + +} & OAuthURLRequest + +/** + * Request parameters for listConfluencePages operation in IntegrationsApi. + * @export + * @interface IntegrationsApiListConfluencePagesRequest + */ +export type IntegrationsApiListConfluencePagesRequest = { + +} & ListRequest + +/** + * Request parameters for listDataSourceItems operation in IntegrationsApi. + * @export + * @interface IntegrationsApiListDataSourceItemsRequest + */ +export type IntegrationsApiListDataSourceItemsRequest = { + +} & ListDataSourceItemsRequest + +/** + * Request parameters for syncConfluence operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncConfluenceRequest + */ +export type IntegrationsApiSyncConfluenceRequest = { + +} & SyncFilesRequest + +/** + * Request parameters for syncDataSourceItems operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncDataSourceItemsRequest + */ +export type IntegrationsApiSyncDataSourceItemsRequest = { + +} & SyncDirectoryRequest + +/** + * Request parameters for syncFiles operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncFilesRequest + */ +export type IntegrationsApiSyncFilesRequest = { + +} & SyncFilesRequest + +/** + * Request parameters for syncGmail operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncGmailRequest + */ +export type IntegrationsApiSyncGmailRequest = { + +} & GmailSyncInput + +/** + * Request parameters for syncOutlook operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncOutlookRequest + */ +export type IntegrationsApiSyncOutlookRequest = { + +} & OutlookSyncInput + +/** + * Request parameters for syncRssFeed operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncRssFeedRequest + */ +export type IntegrationsApiSyncRssFeedRequest = { + +} & RSSFeedInput + +/** + * Request parameters for syncS3Files operation in IntegrationsApi. + * @export + * @interface IntegrationsApiSyncS3FilesRequest + */ +export type IntegrationsApiSyncS3FilesRequest = { + +} & S3FileSyncInput + +/** + * IntegrationsApiGenerated - object-oriented interface + * @export + * @class IntegrationsApiGenerated + * @extends {BaseAPI} + */ +export class IntegrationsApiGenerated extends BaseAPI { + /** + * Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. Once you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will trigger an automatic sync of the articles in your \"solutions\" tab. Additional parameters below can be used to associate data with the synced articles or modify the sync behavior. + * @summary Freshdesk Connect + * @param {IntegrationsApiConnectFreshdeskRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public connectFreshdesk(requestParameters: IntegrationsApiConnectFreshdeskRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).connectFreshdesk(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Create a new IAM user with permissions to:
  1. List all buckets.
  2. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry the same permissions.
Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. + * @summary S3 Auth + * @param {IntegrationsApiCreateAwsIamUserRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public createAwsIamUser(requestParameters: IntegrationsApiCreateAwsIamUserRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).createAwsIamUser(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Get Oauth Url + * @param {IntegrationsApiGetOauthUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public getOauthUrl(requestParameters: IntegrationsApiGetOauthUrlRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).getOauthUrl(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * To begin listing a user\'s Confluence pages, at least a `data_source_id` of a connected Confluence account must be specified. This base request returns a list of root pages for every space the user has access to in a Confluence instance. To traverse further down the user\'s page directory, additional requests to this endpoint can be made with the same `data_source_id` and with `parent_id` set to the id of page from a previous request. For convenience, the `has_children` property in each directory item in the response list will flag which pages will return non-empty lists of pages when set as the `parent_id`. + * @summary Confluence List + * @param {IntegrationsApiListConfluencePagesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public listConfluencePages(requestParameters: IntegrationsApiListConfluencePagesRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).listConfluencePages(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary List Data Source Items + * @param {IntegrationsApiListDataSourceItemsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public listDataSourceItems(requestParameters: IntegrationsApiListDataSourceItemsRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).listDataSourceItems(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * After listing pages in a user\'s Confluence account, the set of selected page `ids` and the connected account\'s `data_source_id` can be passed into this endpoint to sync them into Carbon. Additional parameters listed below can be used to associate data to the selected pages or alter the behavior of the sync. + * @summary Confluence Sync + * @param {IntegrationsApiSyncConfluenceRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncConfluence(requestParameters: IntegrationsApiSyncConfluenceRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncConfluence(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Sync Data Source Items + * @param {IntegrationsApiSyncDataSourceItemsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncDataSourceItems(requestParameters: IntegrationsApiSyncDataSourceItemsRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncDataSourceItems(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Sync Files + * @param {IntegrationsApiSyncFilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncFiles(requestParameters: IntegrationsApiSyncFilesRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncFiles(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Once you have successfully connected your gmail account, you can choose which emails to sync with us using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. label: Inbuilt Gmail labels, for example \"Important\" or a custom label you created. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values - starred, important, snoozed, and unread Using keys or values outside of the specified values can lead to unexpected behaviour. An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"label\", \"value\": \"Test\" } } ``` Which will list all emails that have the label \"Test\". You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"label\", \"value\": \"Personal\" }, { \"key\": \"is\", \"value\": \"starred\" } ] } ] } } ``` This will return emails after 7th of Jan that are either starred or have the label \"Personal\". Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Gmail Sync + * @param {IntegrationsApiSyncGmailRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncGmail(requestParameters: IntegrationsApiSyncGmailRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncGmail(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Once you have successfully connected your Outlook account, you can choose which emails to sync with us using the filters and folder parameter. \"folder\" should be the folder you want to sync from Outlook. By default we get messages from your inbox folder. Filters is a JSON object with key value pairs. It also supports AND and OR operations. For now, we support a limited set of keys listed below. category: Custom categories that you created in Outlook. after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. is: Can have the following values: flagged An example of a basic query with filters can be ```json { \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` Which will list all emails that have the category \"Test\". Specifying a custom folder in the same query ```json { \"folder\": \"Folder Name\", \"filters\": { \"key\": \"category\", \"value\": \"Test\" } } ``` You can use AND and OR operation in the following way: ```json { \"filters\": { \"AND\": [ { \"key\": \"after\", \"value\": \"2024/01/07\" }, { \"OR\": [ { \"key\": \"category\", \"value\": \"Personal\" }, { \"key\": \"category\", \"value\": \"Test\" }, ] } ] } } ``` This will return emails after 7th of Jan that have either Personal or Test as category. Note that this is the highest level of nesting we support, i.e. you can\'t add more AND/OR filters within the OR filter in the above example. + * @summary Outlook Sync + * @param {IntegrationsApiSyncOutlookRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncOutlook(requestParameters: IntegrationsApiSyncOutlookRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncOutlook(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Rss Feed + * @param {IntegrationsApiSyncRssFeedRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncRssFeed(requestParameters: IntegrationsApiSyncRssFeedRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncRssFeed(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name and object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate data with the selected items or modify the sync behavior + * @summary S3 Files + * @param {IntegrationsApiSyncS3FilesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof IntegrationsApiGenerated + */ + public syncS3Files(requestParameters: IntegrationsApiSyncS3FilesRequest, options?: AxiosRequestConfig) { + return IntegrationsApiFp(this.configuration).syncS3Files(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/integrations-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/integrations-api.ts new file mode 100644 index 000000000..46553a371 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/integrations-api.ts @@ -0,0 +1,4 @@ +import { IntegrationsApiGenerated } from "./integrations-api-generated"; +export * from "./integrations-api-generated"; + +export class IntegrationsApi extends IntegrationsApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/organizations-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/organizations-api-generated.ts new file mode 100644 index 000000000..a1d00218a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/organizations-api-generated.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { OrganizationResponse } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * OrganizationsApi - axios parameter creator + * @export + */ +export const OrganizationsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary Get Organization + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + get: async (options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/organization`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * OrganizationsApi - functional programming interface + * @export + */ +export const OrganizationsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = OrganizationsApiAxiosParamCreator(configuration) + return { + /** + * + * @summary Get Organization + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async get(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.get(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * OrganizationsApi - factory interface + * @export + */ +export const OrganizationsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = OrganizationsApiFp(configuration) + return { + /** + * + * @summary Get Organization + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + get(options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.get(options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * OrganizationsApiGenerated - object-oriented interface + * @export + * @class OrganizationsApiGenerated + * @extends {BaseAPI} + */ +export class OrganizationsApiGenerated extends BaseAPI { + /** + * + * @summary Get Organization + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof OrganizationsApiGenerated + */ + public get(options?: AxiosRequestConfig) { + return OrganizationsApiFp(this.configuration).get(options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/organizations-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/organizations-api.ts new file mode 100644 index 000000000..3d58e78f4 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/organizations-api.ts @@ -0,0 +1,4 @@ +import { OrganizationsApiGenerated } from "./organizations-api-generated"; +export * from "./organizations-api-generated"; + +export class OrganizationsApi extends OrganizationsApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/users-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/users-api-generated.ts new file mode 100644 index 000000000..a9c9b1340 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/users-api-generated.ts @@ -0,0 +1,251 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { GenericSuccessResponse } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { ModifyUserConfigurationInput } from '../models'; +// @ts-ignore +import { UserRequestContent } from '../models'; +// @ts-ignore +import { UserResponse } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * UsersApi - axios parameter creator + * @export + */ +export const UsersApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary User Endpoint + * @param {UserRequestContent} userRequestContent + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + get: async (userRequestContent: UserRequestContent, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'userRequestContent' is not null or undefined + assertParamExists('get', 'userRequestContent', userRequestContent) + const localVarPath = `/user`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: userRequestContent, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(userRequestContent, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Toggle User Features + * @param {ModifyUserConfigurationInput} modifyUserConfigurationInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + toggleUserFeatures: async (modifyUserConfigurationInput: ModifyUserConfigurationInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'modifyUserConfigurationInput' is not null or undefined + assertParamExists('toggleUserFeatures', 'modifyUserConfigurationInput', modifyUserConfigurationInput) + const localVarPath = `/modify_user_configuration`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: modifyUserConfigurationInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(modifyUserConfigurationInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * UsersApi - functional programming interface + * @export + */ +export const UsersApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = UsersApiAxiosParamCreator(configuration) + return { + /** + * + * @summary User Endpoint + * @param {UsersApiGetRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async get(requestParameters: UsersApiGetRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.get(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Toggle User Features + * @param {UsersApiToggleUserFeaturesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async toggleUserFeatures(requestParameters: UsersApiToggleUserFeaturesRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.toggleUserFeatures(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * UsersApi - factory interface + * @export + */ +export const UsersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = UsersApiFp(configuration) + return { + /** + * + * @summary User Endpoint + * @param {UsersApiGetRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + get(requestParameters: UsersApiGetRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.get(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Toggle User Features + * @param {UsersApiToggleUserFeaturesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + toggleUserFeatures(requestParameters: UsersApiToggleUserFeaturesRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.toggleUserFeatures(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for get operation in UsersApi. + * @export + * @interface UsersApiGetRequest + */ +export type UsersApiGetRequest = { + +} & UserRequestContent + +/** + * Request parameters for toggleUserFeatures operation in UsersApi. + * @export + * @interface UsersApiToggleUserFeaturesRequest + */ +export type UsersApiToggleUserFeaturesRequest = { + +} & ModifyUserConfigurationInput + +/** + * UsersApiGenerated - object-oriented interface + * @export + * @class UsersApiGenerated + * @extends {BaseAPI} + */ +export class UsersApiGenerated extends BaseAPI { + /** + * + * @summary User Endpoint + * @param {UsersApiGetRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UsersApiGenerated + */ + public get(requestParameters: UsersApiGetRequest, options?: AxiosRequestConfig) { + return UsersApiFp(this.configuration).get(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Toggle User Features + * @param {UsersApiToggleUserFeaturesRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UsersApiGenerated + */ + public toggleUserFeatures(requestParameters: UsersApiToggleUserFeaturesRequest, options?: AxiosRequestConfig) { + return UsersApiFp(this.configuration).toggleUserFeatures(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/users-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/users-api.ts new file mode 100644 index 000000000..724024b63 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/users-api.ts @@ -0,0 +1,4 @@ +import { UsersApiGenerated } from "./users-api-generated"; +export * from "./users-api-generated"; + +export class UsersApi extends UsersApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/utilities-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/utilities-api-generated.ts new file mode 100644 index 000000000..8a22c2b72 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/utilities-api-generated.ts @@ -0,0 +1,659 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { FetchURLsResponse } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { SitemapScrapeRequest } from '../models'; +// @ts-ignore +import { Tags1 } from '../models'; +// @ts-ignore +import { WebscrapeRequest } from '../models'; +// @ts-ignore +import { YoutubeTranscriptResponse } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * UtilitiesApi - axios parameter creator + * @export + */ +export const UtilitiesApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * Extracts all URLs from a webpage. Args: url (str): URL of the webpage Returns: FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content. + * @summary Fetch Urls + * @param {string} url + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + fetchUrls: async (url: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'url' is not null or undefined + assertParamExists('fetchUrls', 'url', url) + const localVarPath = `/fetch_urls`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + if (url !== undefined) { + localVarQueryParameter['url'] = url; + } + + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Fetches english transcripts from YouTube videos. Args: id (str): The ID of the YouTube video. raw (bool): Whether to return the raw transcript or not. Defaults to False. Returns: dict: A dictionary with the transcript of the YouTube video. + * @summary Fetch Youtube Transcripts + * @param {string} id + * @param {boolean} [raw] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + fetchYoutubeTranscripts: async (id: string, raw?: boolean, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('fetchYoutubeTranscripts', 'id', id) + const localVarPath = `/fetch_youtube_transcript`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + if (id !== undefined) { + localVarQueryParameter['id'] = id; + } + + if (raw !== undefined) { + localVarQueryParameter['raw'] = raw; + } + + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint. + * @summary Sitemap + * @param {string} url + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + processSitemap: async (url: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'url' is not null or undefined + assertParamExists('processSitemap', 'url', url) + const localVarPath = `/process_sitemap`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + if (url !== undefined) { + localVarQueryParameter['url'] = url; + } + + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Extracts all URLs from a sitemap and performs a web scrape on each of them. Args: sitemap_url (str): URL of the sitemap Returns: dict: A response object with the status of the scraping job message.--> + * @summary Scrape Sitemap + * @param {SitemapScrapeRequest} sitemapScrapeRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + scrapeSitemap: async (sitemapScrapeRequest: SitemapScrapeRequest, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'sitemapScrapeRequest' is not null or undefined + assertParamExists('scrapeSitemap', 'sitemapScrapeRequest', sitemapScrapeRequest) + const localVarPath = `/scrape_sitemap`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: sitemapScrapeRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(sitemapScrapeRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website. + * @summary Web Scrape + * @param {Array} webscrapeRequest + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + scrapeWeb: async (webscrapeRequest: Array, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'webscrapeRequest' is not null or undefined + assertParamExists('scrapeWeb', 'webscrapeRequest', webscrapeRequest) + const localVarPath = `/web_scrape`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: webscrapeRequest, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(webscrapeRequest, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Perform a web search and obtain a list of relevant URLs. As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following: - https://tomrenz.substack.com/p/mrna-and-why-it-matters - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/ - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/ - https://joomi.substack.com/p/were-still-being-misled-about-how Subsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages. Args: query (str): Query to search for Returns: FetchURLsResponse: A response object with a list of URLs for a given search query. + * @summary Search Urls + * @param {string} query + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + searchUrls: async (query: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'query' is not null or undefined + assertParamExists('searchUrls', 'query', query) + const localVarPath = `/search_urls`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + // authentication apiKey required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "apiKey", configuration, prefix: "Bearer " }) + // authentication customerId required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "customer-id", keyParamName: "customerId", configuration }) + if (query !== undefined) { + localVarQueryParameter['query'] = query; + } + + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * UtilitiesApi - functional programming interface + * @export + */ +export const UtilitiesApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = UtilitiesApiAxiosParamCreator(configuration) + return { + /** + * Extracts all URLs from a webpage. Args: url (str): URL of the webpage Returns: FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content. + * @summary Fetch Urls + * @param {UtilitiesApiFetchUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async fetchUrls(requestParameters: UtilitiesApiFetchUrlsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.fetchUrls(requestParameters.url, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Fetches english transcripts from YouTube videos. Args: id (str): The ID of the YouTube video. raw (bool): Whether to return the raw transcript or not. Defaults to False. Returns: dict: A dictionary with the transcript of the YouTube video. + * @summary Fetch Youtube Transcripts + * @param {UtilitiesApiFetchYoutubeTranscriptsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async fetchYoutubeTranscripts(requestParameters: UtilitiesApiFetchYoutubeTranscriptsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.fetchYoutubeTranscripts(requestParameters.id, requestParameters.raw, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint. + * @summary Sitemap + * @param {UtilitiesApiProcessSitemapRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async processSitemap(requestParameters: UtilitiesApiProcessSitemapRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.processSitemap(requestParameters.url, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Extracts all URLs from a sitemap and performs a web scrape on each of them. Args: sitemap_url (str): URL of the sitemap Returns: dict: A response object with the status of the scraping job message.--> + * @summary Scrape Sitemap + * @param {UtilitiesApiScrapeSitemapRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async scrapeSitemap(requestParameters: UtilitiesApiScrapeSitemapRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.scrapeSitemap(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website. + * @summary Web Scrape + * @param {UtilitiesApiScrapeWebRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async scrapeWeb(requestParameters: UtilitiesApiScrapeWebRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.scrapeWeb(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * Perform a web search and obtain a list of relevant URLs. As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following: - https://tomrenz.substack.com/p/mrna-and-why-it-matters - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/ - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/ - https://joomi.substack.com/p/were-still-being-misled-about-how Subsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages. Args: query (str): Query to search for Returns: FetchURLsResponse: A response object with a list of URLs for a given search query. + * @summary Search Urls + * @param {UtilitiesApiSearchUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async searchUrls(requestParameters: UtilitiesApiSearchUrlsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.searchUrls(requestParameters.query, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * UtilitiesApi - factory interface + * @export + */ +export const UtilitiesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = UtilitiesApiFp(configuration) + return { + /** + * Extracts all URLs from a webpage. Args: url (str): URL of the webpage Returns: FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content. + * @summary Fetch Urls + * @param {UtilitiesApiFetchUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + fetchUrls(requestParameters: UtilitiesApiFetchUrlsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.fetchUrls(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Fetches english transcripts from YouTube videos. Args: id (str): The ID of the YouTube video. raw (bool): Whether to return the raw transcript or not. Defaults to False. Returns: dict: A dictionary with the transcript of the YouTube video. + * @summary Fetch Youtube Transcripts + * @param {UtilitiesApiFetchYoutubeTranscriptsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + fetchYoutubeTranscripts(requestParameters: UtilitiesApiFetchYoutubeTranscriptsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.fetchYoutubeTranscripts(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint. + * @summary Sitemap + * @param {UtilitiesApiProcessSitemapRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + processSitemap(requestParameters: UtilitiesApiProcessSitemapRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.processSitemap(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Extracts all URLs from a sitemap and performs a web scrape on each of them. Args: sitemap_url (str): URL of the sitemap Returns: dict: A response object with the status of the scraping job message.--> + * @summary Scrape Sitemap + * @param {UtilitiesApiScrapeSitemapRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + scrapeSitemap(requestParameters: UtilitiesApiScrapeSitemapRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.scrapeSitemap(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website. + * @summary Web Scrape + * @param {UtilitiesApiScrapeWebRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + scrapeWeb(requestParameters: UtilitiesApiScrapeWebRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.scrapeWeb(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * Perform a web search and obtain a list of relevant URLs. As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following: - https://tomrenz.substack.com/p/mrna-and-why-it-matters - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/ - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/ - https://joomi.substack.com/p/were-still-being-misled-about-how Subsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages. Args: query (str): Query to search for Returns: FetchURLsResponse: A response object with a list of URLs for a given search query. + * @summary Search Urls + * @param {UtilitiesApiSearchUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + searchUrls(requestParameters: UtilitiesApiSearchUrlsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.searchUrls(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for fetchUrls operation in UtilitiesApi. + * @export + * @interface UtilitiesApiFetchUrlsRequest + */ +export type UtilitiesApiFetchUrlsRequest = { + + /** + * + * @type {string} + * @memberof UtilitiesApiFetchUrls + */ + readonly url: string + +} + +/** + * Request parameters for fetchYoutubeTranscripts operation in UtilitiesApi. + * @export + * @interface UtilitiesApiFetchYoutubeTranscriptsRequest + */ +export type UtilitiesApiFetchYoutubeTranscriptsRequest = { + + /** + * + * @type {string} + * @memberof UtilitiesApiFetchYoutubeTranscripts + */ + readonly id: string + + /** + * + * @type {boolean} + * @memberof UtilitiesApiFetchYoutubeTranscripts + */ + readonly raw?: boolean + +} + +/** + * Request parameters for processSitemap operation in UtilitiesApi. + * @export + * @interface UtilitiesApiProcessSitemapRequest + */ +export type UtilitiesApiProcessSitemapRequest = { + + /** + * + * @type {string} + * @memberof UtilitiesApiProcessSitemap + */ + readonly url: string + +} + +/** + * Request parameters for scrapeSitemap operation in UtilitiesApi. + * @export + * @interface UtilitiesApiScrapeSitemapRequest + */ +export type UtilitiesApiScrapeSitemapRequest = { + +} & SitemapScrapeRequest + +/** + * Request parameters for scrapeWeb operation in UtilitiesApi. + * @export + * @interface UtilitiesApiScrapeWebRequest + */ +export type UtilitiesApiScrapeWebRequest = Array + +/** + * Request parameters for searchUrls operation in UtilitiesApi. + * @export + * @interface UtilitiesApiSearchUrlsRequest + */ +export type UtilitiesApiSearchUrlsRequest = { + + /** + * + * @type {string} + * @memberof UtilitiesApiSearchUrls + */ + readonly query: string + +} + +/** + * UtilitiesApiGenerated - object-oriented interface + * @export + * @class UtilitiesApiGenerated + * @extends {BaseAPI} + */ +export class UtilitiesApiGenerated extends BaseAPI { + /** + * Extracts all URLs from a webpage. Args: url (str): URL of the webpage Returns: FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content. + * @summary Fetch Urls + * @param {UtilitiesApiFetchUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UtilitiesApiGenerated + */ + public fetchUrls(requestParameters: UtilitiesApiFetchUrlsRequest, options?: AxiosRequestConfig) { + return UtilitiesApiFp(this.configuration).fetchUrls(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Fetches english transcripts from YouTube videos. Args: id (str): The ID of the YouTube video. raw (bool): Whether to return the raw transcript or not. Defaults to False. Returns: dict: A dictionary with the transcript of the YouTube video. + * @summary Fetch Youtube Transcripts + * @param {UtilitiesApiFetchYoutubeTranscriptsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UtilitiesApiGenerated + */ + public fetchYoutubeTranscripts(requestParameters: UtilitiesApiFetchYoutubeTranscriptsRequest, options?: AxiosRequestConfig) { + return UtilitiesApiFp(this.configuration).fetchYoutubeTranscripts(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Retrieves all URLs from a sitemap, which can subsequently be utilized with our `web_scrape` endpoint. + * @summary Sitemap + * @param {UtilitiesApiProcessSitemapRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UtilitiesApiGenerated + */ + public processSitemap(requestParameters: UtilitiesApiProcessSitemapRequest, options?: AxiosRequestConfig) { + return UtilitiesApiFp(this.configuration).processSitemap(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Extracts all URLs from a sitemap and performs a web scrape on each of them. Args: sitemap_url (str): URL of the sitemap Returns: dict: A response object with the status of the scraping job message.--> + * @summary Scrape Sitemap + * @param {UtilitiesApiScrapeSitemapRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UtilitiesApiGenerated + */ + public scrapeSitemap(requestParameters: UtilitiesApiScrapeSitemapRequest, options?: AxiosRequestConfig) { + return UtilitiesApiFp(this.configuration).scrapeSitemap(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website. + * @summary Web Scrape + * @param {UtilitiesApiScrapeWebRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UtilitiesApiGenerated + */ + public scrapeWeb(requestParameters: UtilitiesApiScrapeWebRequest, options?: AxiosRequestConfig) { + return UtilitiesApiFp(this.configuration).scrapeWeb(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * Perform a web search and obtain a list of relevant URLs. As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following: - https://tomrenz.substack.com/p/mrna-and-why-it-matters - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/ - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/ - https://joomi.substack.com/p/were-still-being-misled-about-how Subsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages. Args: query (str): Query to search for Returns: FetchURLsResponse: A response object with a list of URLs for a given search query. + * @summary Search Urls + * @param {UtilitiesApiSearchUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof UtilitiesApiGenerated + */ + public searchUrls(requestParameters: UtilitiesApiSearchUrlsRequest, options?: AxiosRequestConfig) { + return UtilitiesApiFp(this.configuration).searchUrls(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/utilities-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/utilities-api.ts new file mode 100644 index 000000000..231e89231 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/utilities-api.ts @@ -0,0 +1,4 @@ +import { UtilitiesApiGenerated } from "./utilities-api-generated"; +export * from "./utilities-api-generated"; + +export class UtilitiesApi extends UtilitiesApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/webhooks-api-generated.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/webhooks-api-generated.ts new file mode 100644 index 000000000..84254bed2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/webhooks-api-generated.ts @@ -0,0 +1,348 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, isBrowser } from '../common'; +import { fromBuffer } from "file-type/browser" +const FormData = require("form-data") +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +// @ts-ignore +import { AddWebhookProps } from '../models'; +// @ts-ignore +import { EmbeddingsAndChunksQueryInputPagination } from '../models'; +// @ts-ignore +import { GenericSuccessResponse } from '../models'; +// @ts-ignore +import { HTTPValidationError } from '../models'; +// @ts-ignore +import { OrderDir } from '../models'; +// @ts-ignore +import { Webhook } from '../models'; +// @ts-ignore +import { WebhookOrderByColumns } from '../models'; +// @ts-ignore +import { WebhookQueryInput } from '../models'; +// @ts-ignore +import { WebhookQueryInputFilters } from '../models'; +// @ts-ignore +import { WebhookQueryResponse } from '../models'; +import { paginate } from "../pagination/paginate"; +import type * as buffer from "buffer" +import { requestBeforeHook } from '../requestBeforeHook'; +/** + * WebhooksApi - axios parameter creator + * @export + */ +export const WebhooksApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary Add Webhook Url + * @param {AddWebhookProps} addWebhookProps + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + addUrl: async (addWebhookProps: AddWebhookProps, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'addWebhookProps' is not null or undefined + assertParamExists('addUrl', 'addWebhookProps', addWebhookProps) + const localVarPath = `/add_webhook`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: addWebhookProps, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(addWebhookProps, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Delete Webhook Url + * @param {number} webhookId + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteUrl: async (webhookId: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'webhookId' is not null or undefined + assertParamExists('deleteUrl', 'webhookId', webhookId) + const localVarPath = `/delete_webhook/{webhook_id}` + .replace(`{${"webhook_id"}}`, encodeURIComponent(String(webhookId !== undefined ? webhookId : `-webhook_id-`))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary Webhook Urls + * @param {WebhookQueryInput} webhookQueryInput + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + urls: async (webhookQueryInput: WebhookQueryInput, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'webhookQueryInput' is not null or undefined + assertParamExists('urls', 'webhookQueryInput', webhookQueryInput) + const localVarPath = `/webhooks`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions: AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = configuration && !isBrowser() ? { "User-Agent": configuration.userAgent } : {} as any; + const localVarQueryParameter = {} as any; + + // authentication accessToken required + await setApiKeyToObject({ object: localVarHeaderParameter, key: "authorization", keyParamName: "accessToken", configuration, prefix: "Token " }) + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + requestBeforeHook({ + requestBody: webhookQueryInput, + queryParameters: localVarQueryParameter, + requestConfig: localVarRequestOptions, + path: localVarPath, + configuration + }); + localVarRequestOptions.data = serializeDataIfNeeded(webhookQueryInput, localVarRequestOptions, configuration) + + setSearchParams(localVarUrlObj, localVarQueryParameter); + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * WebhooksApi - functional programming interface + * @export + */ +export const WebhooksApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = WebhooksApiAxiosParamCreator(configuration) + return { + /** + * + * @summary Add Webhook Url + * @param {WebhooksApiAddUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async addUrl(requestParameters: WebhooksApiAddUrlRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.addUrl(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Delete Webhook Url + * @param {WebhooksApiDeleteUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async deleteUrl(requestParameters: WebhooksApiDeleteUrlRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.deleteUrl(requestParameters.webhookId, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @summary Webhook Urls + * @param {WebhooksApiUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async urls(requestParameters: WebhooksApiUrlsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.urls(requestParameters, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + } +}; + +/** + * WebhooksApi - factory interface + * @export + */ +export const WebhooksApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = WebhooksApiFp(configuration) + return { + /** + * + * @summary Add Webhook Url + * @param {WebhooksApiAddUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + addUrl(requestParameters: WebhooksApiAddUrlRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.addUrl(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Delete Webhook Url + * @param {WebhooksApiDeleteUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteUrl(requestParameters: WebhooksApiDeleteUrlRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.deleteUrl(requestParameters, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary Webhook Urls + * @param {WebhooksApiUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + urls(requestParameters: WebhooksApiUrlsRequest, options?: AxiosRequestConfig): AxiosPromise { + return localVarFp.urls(requestParameters, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * Request parameters for addUrl operation in WebhooksApi. + * @export + * @interface WebhooksApiAddUrlRequest + */ +export type WebhooksApiAddUrlRequest = { + +} & AddWebhookProps + +/** + * Request parameters for deleteUrl operation in WebhooksApi. + * @export + * @interface WebhooksApiDeleteUrlRequest + */ +export type WebhooksApiDeleteUrlRequest = { + + /** + * + * @type {number} + * @memberof WebhooksApiDeleteUrl + */ + readonly webhookId: number + +} + +/** + * Request parameters for urls operation in WebhooksApi. + * @export + * @interface WebhooksApiUrlsRequest + */ +export type WebhooksApiUrlsRequest = { + +} & WebhookQueryInput + +/** + * WebhooksApiGenerated - object-oriented interface + * @export + * @class WebhooksApiGenerated + * @extends {BaseAPI} + */ +export class WebhooksApiGenerated extends BaseAPI { + /** + * + * @summary Add Webhook Url + * @param {WebhooksApiAddUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WebhooksApiGenerated + */ + public addUrl(requestParameters: WebhooksApiAddUrlRequest, options?: AxiosRequestConfig) { + return WebhooksApiFp(this.configuration).addUrl(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Delete Webhook Url + * @param {WebhooksApiDeleteUrlRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WebhooksApiGenerated + */ + public deleteUrl(requestParameters: WebhooksApiDeleteUrlRequest, options?: AxiosRequestConfig) { + return WebhooksApiFp(this.configuration).deleteUrl(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary Webhook Urls + * @param {WebhooksApiUrlsRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof WebhooksApiGenerated + */ + public urls(requestParameters: WebhooksApiUrlsRequest, options?: AxiosRequestConfig) { + return WebhooksApiFp(this.configuration).urls(requestParameters, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/webhooks-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/webhooks-api.ts new file mode 100644 index 000000000..752f9a60f --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/api/webhooks-api.ts @@ -0,0 +1,4 @@ +import { WebhooksApiGenerated } from "./webhooks-api-generated"; +export * from "./webhooks-api-generated"; + +export class WebhooksApi extends WebhooksApiGenerated {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/base.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/base.ts new file mode 100644 index 000000000..ebd71237b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/base.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { Configuration } from "./configuration"; +// Some imports not used depending on template conditions +// @ts-ignore +import globalAxios, { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; + +export const BASE_PATH = "https://api.carbon.ai".replace(/\/+$/, ""); + +/** + * + * @export + */ +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +/** + * + * @export + * @interface RequestArgs + */ +export interface RequestArgs { + url: string; + options: AxiosRequestConfig; +} + +/** + * + * @export + * @class BaseAPI + */ +export class BaseAPI { + protected configuration: Configuration | undefined; + + constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) { + if (configuration) { + this.configuration = configuration; + this.basePath = configuration.basePath || this.basePath; + } + } +}; + +/** + * + * @export + * @class RequiredError + * @extends {Error} + */ +export class RequiredError extends Error { + name: "RequiredError" = "RequiredError"; + constructor(public field: string, msg?: string) { + super(msg); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/client-custom.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/client-custom.ts new file mode 100644 index 000000000..5ed610b3d --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/client-custom.ts @@ -0,0 +1,5 @@ +import { ConfigurationParameters } from "./configuration"; + +export class CarbonCustom { + constructor(configurationParameters: ConfigurationParameters) {} +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/client.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/client.ts new file mode 100644 index 000000000..d8d88fce9 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/client.ts @@ -0,0 +1,55 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { AxiosRequestConfig } from "axios"; +import { + AuthApi, + DataSourcesApi, + EmbeddingsApi, + FilesApi, + HealthApi, + IntegrationsApi, + OrganizationsApi, + UsersApi, + UtilitiesApi, + WebhooksApi, +} from "./api"; +import { Configuration, ConfigurationParameters } from "./configuration"; +import { CarbonCustom } from "./client-custom"; + +export class Carbon extends CarbonCustom { + readonly auth: AuthApi; + readonly dataSources: DataSourcesApi; + readonly embeddings: EmbeddingsApi; + readonly files: FilesApi; + readonly health: HealthApi; + readonly integrations: IntegrationsApi; + readonly organizations: OrganizationsApi; + readonly users: UsersApi; + readonly utilities: UtilitiesApi; + readonly webhooks: WebhooksApi; + + constructor(configurationParameters: ConfigurationParameters = {}) { + super(configurationParameters); + const configuration = new Configuration(configurationParameters); + this.auth = new AuthApi(configuration); + this.dataSources = new DataSourcesApi(configuration); + this.embeddings = new EmbeddingsApi(configuration); + this.files = new FilesApi(configuration); + this.health = new HealthApi(configuration); + this.integrations = new IntegrationsApi(configuration); + this.organizations = new OrganizationsApi(configuration); + this.users = new UsersApi(configuration); + this.utilities = new UtilitiesApi(configuration); + this.webhooks = new WebhooksApi(configuration); + } + +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/common.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/common.ts new file mode 100644 index 000000000..cb5cb4138 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/common.ts @@ -0,0 +1,208 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { Configuration } from "./configuration"; +import { RequiredError, RequestArgs } from "./base"; +import axios, { AxiosError, AxiosInstance, AxiosResponse } from 'axios'; +import { requestAfterHook } from "./requestAfterHook"; +import { requestBeforeUrlHook } from "./requestBeforeUrlHook"; +import { readableStreamToString, CarbonError, parseIfJson } from "./error"; + +/** + * + * @export + */ +export const DUMMY_BASE_URL = 'https://example.com' + +/** + * + * @throws {RequiredError} + * @export + */ +export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) { + if (paramValue === null || paramValue === undefined) { + throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`); + } +} + +/** + * + * @export + */ +export const setApiKeyToObject = async function ({ + object, + key, + type, + keyParamName, + configuration, + prefix +}: { + object: any + key?: string + type?: "Cookie" + keyParamName: string + configuration?: Configuration + prefix?: string +}) { + key = key ? key : keyParamName + let apiKey: string | null | undefined = null + if (configuration && configuration.apiKey) { + if (typeof configuration.apiKey === 'function') + apiKey = await configuration.apiKey(keyParamName) + else if (typeof configuration.apiKey === 'string') + apiKey = configuration.apiKey + else if (typeof configuration.apiKey === 'object') { + if (keyParamName in configuration.apiKey) + apiKey = configuration.apiKey[keyParamName] + } else + throw Error( + `Unexpected type ${typeof configuration.apiKey} for Configuration.apiKey` + ) + } + if (!apiKey) return + object[key] = prefix !== undefined ? `${prefix}${apiKey}` : apiKey + if (type === "Cookie") + object[key] = `${keyParamName}=${object[key]}` +} + +/** + * + * @export + */ +export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { + if (configuration && (configuration.username || configuration.password)) { + object["auth"] = { username: configuration.username, password: configuration.password }; + } +} + +/** + * + * @export + */ +export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + object["Authorization"] = "Bearer " + accessToken; + } +} + +function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void { + if (typeof parameter === "object") { + if (Array.isArray(parameter)) { + (parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key)); + } + else { + Object.keys(parameter).forEach(currentKey => + setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`) + ); + } + } + else { + if (urlSearchParams.has(key)) { + urlSearchParams.append(key, parameter); + } + else { + urlSearchParams.set(key, parameter); + } + } +} + +/** + * + * @export + */ +export const setSearchParams = function (url: URL, ...objects: any[]) { + const searchParams = new URLSearchParams(url.search); + setFlattenedQueryParams(searchParams, objects); + url.search = searchParams.toString(); +} + +/** + * + * @export + */ +export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) { + const nonString = typeof value !== 'string'; + const needsSerialization = nonString && configuration && configuration.isJsonMime + ? configuration.isJsonMime(requestOptions.headers['Content-Type']) + : nonString; + return needsSerialization + ? JSON.stringify(value !== undefined ? value : {}) + : (value || ""); +} + +/** + * + * @export + */ +export const toPathString = function (url: URL) { + return removeTrailingSlash(url.pathname) + url.search + url.hash +} + +/** + * remove trailing slash from string + */ +export const removeTrailingSlash = function (url: string) { + return url.replace(/\/$/, ""); +} + +/** + * Wrap an axios request in a try/catch block to catch network errors and parse the response body + */ +async function wrapAxiosRequest(makeRequest: () => Promise): Promise { + try { + return await makeRequest(); + } catch (e) { + if (e instanceof AxiosError && e.isAxiosError) { + try { + const responseBody = + e.response?.data instanceof ReadableStream + ? await readableStreamToString(e.response.data) + : e.response?.data + throw new CarbonError(e, parseIfJson(responseBody)) + } catch (innerError) { + if (innerError instanceof ReferenceError) { + // Got: "ReferenceError: ReadableStream is not defined" + // This means we are in a Node environment so just throw the original error + throw new CarbonError(e, e.response?.data) + } + if (innerError instanceof CarbonError) { + // Got "CarbonError" from the above try block + throw innerError; + } + // Something unexpected happened: propagate the error + throw e + } + } + throw e + } +} + +/** + * + * @export + */ +export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) { + return async >(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + requestBeforeUrlHook({axiosArgs, basePath, configuration}) + const url = (configuration?.basePath || basePath) + axiosArgs.url + await requestAfterHook({axiosArgs, basePath, url, configuration}) + return wrapAxiosRequest(async () => await axios.request({ ...axiosArgs.options, url })); + }; +} + +export function isBrowser() { + return typeof window !== "undefined" +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/configuration.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/configuration.ts new file mode 100644 index 000000000..a1acc4f07 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/configuration.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + + +type ApiKey = + | string + | ((keyParamName: string) => string) + | ((keyParamName: string) => Promise) + | { [apiKeyName: string]: string | undefined }; + +export interface ConfigurationParameters { + accessToken?: string; + apiKey?: string; + customerId?: string; + + basePath?: string; + baseOptions?: any; + userAgent?: string; + formDataCtor?: new () => any; +} + +export class Configuration { + /** + * parameter for apiKey security + * @param name security name + * @memberof Configuration + */ + apiKey?: ApiKey; + /** + * parameter for basic security + * + * @type {string} + * @memberof Configuration + */ + username?: string; + /** + * parameter for basic security + * + * @type {string} + * @memberof Configuration + */ + password?: string; + /** + * parameter for oauth2 security + * @param name security name + * @param scopes oauth2 scope + * @memberof Configuration + */ + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise); + /** + * override base path + * + * @type {string} + * @memberof Configuration + */ + basePath?: string; + /** + * base options for axios calls + * + * @type {any} + * @memberof Configuration + */ + baseOptions?: any; + /** + * The FormData constructor that will be used to create multipart form data + * requests. You can inject this here so that execution environments that + * do not support the FormData class can still run the generated client. + * + * @type {new () => FormData} + */ + formDataCtor?: new () => any; + /** + * Default User-Agent header + */ + userAgent: string; + + constructor(param: ConfigurationParameters = {}) { + + if (this.apiKey === undefined) { + this.apiKey = {} + if (param.accessToken !== undefined) + this.apiKey["accessToken"] = param.accessToken + if (param.apiKey !== undefined) + this.apiKey["apiKey"] = param.apiKey + if (param.customerId !== undefined) + this.apiKey["customerId"] = param.customerId + } + this.basePath = param.basePath; + this.baseOptions = param.baseOptions ?? {}; + this.userAgent = param.userAgent === undefined ? "Konfig/0.1.1/typescript" : param.userAgent; + this.formDataCtor = param.formDataCtor; + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public isJsonMime(mime: string): boolean { + const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); + return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/error.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/error.ts new file mode 100644 index 000000000..bc96baf12 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/error.ts @@ -0,0 +1,130 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import type { AxiosError } from "axios"; + +/** + * This class provides a wrapper for network errors when making requests to Carbon + */ +export class CarbonError extends Error { + /** + * The response body + */ + readonly responseBody: unknown; + + /** + * The error code provided from the underlying "axios" library which can be + * more descriptive than the HTTP status descriptions. + */ + readonly code?: string; + + /** + * The status code from the response. + * For explanations, refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + */ + readonly status?: number; + + /** + * The status text from the response. + * For explanations, refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + */ + readonly statusText?: string; + + /** + * The URL that the original request was sent to + */ + readonly url?: string; + + /** + * HTTP request method (see https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) + */ + readonly method?: string; + + constructor(axiosError: AxiosError, responseBody: unknown) { + super(axiosError.message); + this.name = "CarbonError"; + this.code = axiosError.code; + this.method = axiosError.config.method?.toUpperCase(); + this.url = axiosError.config.url; + this.status = axiosError.response?.status; + this.statusText = axiosError.response?.statusText; + this.responseBody = responseBody; + } + + toJSON() { + return { + name: this.name, + message: this.message, + method: this.method, + url: this.url, + code: this.code, + status: this.status, + statusText: this.statusText, + responseBody: this.responseBody, + }; + } +} + +export async function readableStreamToString(stream: ReadableStream) { + // Step 1: Create a new TextDecoder + const decoder = new TextDecoder(); + + // Step 2: Create a new ReadableStreamDefaultReader + const reader = stream.getReader(); + + // Step 3: Initialize an empty string to hold the result + let result = ""; + + try { + while (true) { + // Step 4: Read data from the stream + const { done, value } = await reader.read(); + + // If there is no more data to read, break the loop + if (done) break; + + // Convert the chunk of data to a string using the TextDecoder + const chunk = decoder.decode(value, { stream: true }); + + // Concatenate the chunk to the result + result += chunk; + } + } finally { + // Step 5: Release the ReadableStreamDefaultReader when done or in case of an error + reader.releaseLock(); + } + + // Return the final result as a string + return result; +} + +export function parseIfJson(input: unknown): object | unknown { + if (typeof input !== "string") { + // If the input is not a string, return the original input + return input; + } + + try { + // Attempt to parse the input as JSON + const parsedJSON = JSON.parse(input); + + // Check if the parsed result is an object (not an array or primitive value) + if (typeof parsedJSON === "object" && parsedJSON !== null) { + return parsedJSON; + } else { + // Return the original input if the parsed result is not an object + return input; + } + } catch (error) { + // Return the original input if parsing fails (invalid JSON) + return input; + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/header.png b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/header.png new file mode 100644 index 000000000..2eed2dca6 Binary files /dev/null and b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/header.png differ diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/index.test.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/index.test.ts new file mode 100644 index 000000000..0f8d3f946 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/index.test.ts @@ -0,0 +1,51 @@ +import { Carbon } from "./index"; +import * as fs from "fs"; + +describe("carbon-typescript-sdk", () => { + it("initialize client", async () => { + const carbon = new Carbon({ + apiKey: "API_KEY", + customerId: "CUSTOMER_ID", + }); + expect(carbon).not.toBeNull(); + }); + const carbon = new Carbon({ + apiKey: "API_KEY", + customerId: "CUSTOMER_ID", + basePath: "http://127.0.0.1:4094", + }); + it("get access token", async () => { + const token = await carbon.auth.getAccessToken(); + expect(token).not.toBeNull(); + console.log(token.data); + const carbonClientWithToken = new Carbon({ + accessToken: token.data.access_token, + basePath: "http://127.0.0.1:4094", + }); + expect(carbonClientWithToken).not.toBeNull(); + const whiteLabeling = await carbonClientWithToken.auth.getWhiteLabeling(); + expect(whiteLabeling).not.toBeNull(); + console.log(whiteLabeling.data); + }); + + it("query user data sources", async () => { + const dataSources = await carbon.dataSources.queryUserDataSources({}); + console.log(dataSources.data); + }); + it("sync s3 files", async () => { + const syncS3Files = await carbon.integrations.syncS3Files({ + ids: [{ id: "ID", bucket: "BUCKET" }], + }); + console.log(syncS3Files.data); + }); + it("health check", async () => { + const status = await carbon.health.check(); + console.log(status.data); + }); + it("file upload", async () => { + const file = await carbon.files.upload({ + file: fs.readFileSync("README.md"), + }); + console.log(file.data); + }); +}); diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/index.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/index.ts new file mode 100644 index 000000000..ca3d6007a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/index.ts @@ -0,0 +1,18 @@ +/* tslint:disable */ +/* eslint-disable */ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +export * from "./api"; +export * from "./configuration"; +export * from "./models"; +export * from "./client"; +export * from "./error"; \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/jest.config.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/jest.config.ts new file mode 100644 index 000000000..f4518b87b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/jest.config.ts @@ -0,0 +1,12 @@ +import type { Config } from "@jest/types"; +const config: Config.InitialOptions = { + verbose: true, + preset: "ts-jest", + testEnvironment: "node", + testPathIgnorePatterns: ["dist/"], + testTimeout: 60 * 1000, + transform: { + "^.+\\.ts?$": ["ts-jest", { tsconfig: "./tsconfig.test.json" }], + }, +}; +export default config; diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/add-webhook-props.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/add-webhook-props.ts new file mode 100644 index 000000000..323a17d70 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/add-webhook-props.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface AddWebhookProps + */ +export interface AddWebhookProps { + /** + * + * @type {string} + * @memberof AddWebhookProps + */ + 'url': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/body-create-upload-file-uploadfile-post.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/body-create-upload-file-uploadfile-post.ts new file mode 100644 index 000000000..fdfc85958 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/body-create-upload-file-uploadfile-post.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface BodyCreateUploadFileUploadfilePost + */ +export interface BodyCreateUploadFileUploadfilePost { + /** + * + * @type {Uint8Array | File | buffer.File} + * @memberof BodyCreateUploadFileUploadfilePost + */ + 'file': Uint8Array | File | buffer.File; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunk-properties-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunk-properties-nullable.ts new file mode 100644 index 000000000..89994c7cc --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunk-properties-nullable.ts @@ -0,0 +1,39 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface ChunkPropertiesNullable + */ +export interface ChunkPropertiesNullable { + /** + * + * @type {boolean} + * @memberof ChunkPropertiesNullable + */ + 'set_page_as_boundary': boolean; + /** + * + * @type {boolean} + * @memberof ChunkPropertiesNullable + */ + 'prepend_filename_to_chunks': boolean; + /** + * + * @type {number} + * @memberof ChunkPropertiesNullable + */ + 'max_items_per_chunk': number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunk-properties.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunk-properties.ts new file mode 100644 index 000000000..1672238f4 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunk-properties.ts @@ -0,0 +1,39 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface ChunkProperties + */ +export interface ChunkProperties { + /** + * + * @type {boolean} + * @memberof ChunkProperties + */ + 'set_page_as_boundary': boolean; + /** + * + * @type {boolean} + * @memberof ChunkProperties + */ + 'prepend_filename_to_chunks': boolean; + /** + * + * @type {number} + * @memberof ChunkProperties + */ + 'max_items_per_chunk': number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunks-and-embeddings-upload-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunks-and-embeddings-upload-input.ts new file mode 100644 index 000000000..1fa9b31af --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunks-and-embeddings-upload-input.ts @@ -0,0 +1,41 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; +import { SingleChunksAndEmbeddingsUploadInput } from './single-chunks-and-embeddings-upload-input'; + +/** + * + * @export + * @interface ChunksAndEmbeddingsUploadInput + */ +export interface ChunksAndEmbeddingsUploadInput { + /** + * + * @type {EmbeddingGenerators} + * @memberof ChunksAndEmbeddingsUploadInput + */ + 'embedding_model': EmbeddingGenerators; + /** + * + * @type {Array} + * @memberof ChunksAndEmbeddingsUploadInput + */ + 'chunks_and_embeddings': Array; + /** + * + * @type {boolean} + * @memberof ChunksAndEmbeddingsUploadInput + */ + 'overwrite_existing'?: boolean; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunks-and-embeddings.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunks-and-embeddings.ts new file mode 100644 index 000000000..8f3c235be --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/chunks-and-embeddings.ts @@ -0,0 +1,39 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface ChunksAndEmbeddings + */ +export interface ChunksAndEmbeddings { + /** + * + * @type {number} + * @memberof ChunksAndEmbeddings + */ + 'chunk_number': number | null; + /** + * + * @type {string} + * @memberof ChunksAndEmbeddings + */ + 'chunk': string; + /** + * + * @type {Array} + * @memberof ChunksAndEmbeddings + */ + 'embedding': Array; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-last-sync-actions.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-last-sync-actions.ts new file mode 100644 index 000000000..27c5bdd5d --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-last-sync-actions.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type DataSourceLastSyncActions = 'ADD' | 'UPDATE' | 'CANCEL' | 'REVOKE' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-sync-statuses.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-sync-statuses.ts new file mode 100644 index 000000000..4028eae98 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-sync-statuses.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type DataSourceSyncStatuses = 'QUEUED_FOR_SYNCING' | 'SYNCING' | 'READY' | 'SYNC_ERROR' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-type-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-type-nullable.ts new file mode 100644 index 000000000..3e40ab67d --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-type-nullable.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type DataSourceTypeNullable = 'GOOGLE_DRIVE' | 'NOTION' | 'NOTION_DATABASE' | 'INTERCOM' | 'DROPBOX' | 'ONEDRIVE' | 'SHAREPOINT' | 'CONFLUENCE' | 'BOX' | 'ZENDESK' | 'ZOTERO' | 'S3' | 'GMAIL' | 'OUTLOOK' | 'TEXT' | 'CSV' | 'TSV' | 'PDF' | 'DOCX' | 'PPTX' | 'XLSX' | 'MD' | 'RTF' | 'JSON' | 'RAW_TEXT' | 'WEB_SCRAPE' | 'RSS_FEED' | 'FRESHDESK' | 'JPG' | 'PNG' | 'MP3' | 'MP4' | 'MP2' | 'AAC' | 'WAV' | 'FLAC' | 'PCM' | 'M4A' | 'OGG' | 'OPUS' | 'WEBM' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-type.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-type.ts new file mode 100644 index 000000000..c79a919da --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/data-source-type.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type DataSourceType = 'GOOGLE_DRIVE' | 'NOTION' | 'NOTION_DATABASE' | 'INTERCOM' | 'DROPBOX' | 'ONEDRIVE' | 'SHAREPOINT' | 'CONFLUENCE' | 'BOX' | 'ZENDESK' | 'ZOTERO' | 'S3' | 'GMAIL' | 'OUTLOOK' | 'TEXT' | 'CSV' | 'TSV' | 'PDF' | 'DOCX' | 'PPTX' | 'XLSX' | 'MD' | 'RTF' | 'JSON' | 'RAW_TEXT' | 'WEB_SCRAPE' | 'RSS_FEED' | 'FRESHDESK' | 'JPG' | 'PNG' | 'MP3' | 'MP4' | 'MP2' | 'AAC' | 'WAV' | 'FLAC' | 'PCM' | 'M4A' | 'OGG' | 'OPUS' | 'WEBM' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/delete-files-query-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/delete-files-query-input.ts new file mode 100644 index 000000000..33826094f --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/delete-files-query-input.ts @@ -0,0 +1,40 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { ExternalFileSyncStatuses } from './external-file-sync-statuses'; + +/** + * + * @export + * @interface DeleteFilesQueryInput + */ +export interface DeleteFilesQueryInput { + /** + * + * @type {Array} + * @memberof DeleteFilesQueryInput + */ + 'file_ids'?: Array | null; + /** + * + * @type {Array} + * @memberof DeleteFilesQueryInput + */ + 'sync_statuses'?: Array | null; + /** + * + * @type {boolean} + * @memberof DeleteFilesQueryInput + */ + 'delete_non_synced_only'?: boolean; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/directory-item.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/directory-item.ts new file mode 100644 index 000000000..a8aa1894d --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/directory-item.ts @@ -0,0 +1,45 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface DirectoryItem + */ +export interface DirectoryItem { + /** + * + * @type {string} + * @memberof DirectoryItem + */ + 'id': string; + /** + * + * @type {string} + * @memberof DirectoryItem + */ + 'name': string; + /** + * + * @type {boolean} + * @memberof DirectoryItem + */ + 'is_synced': boolean; + /** + * + * @type {boolean} + * @memberof DirectoryItem + */ + 'has_children': boolean; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/document-response-list.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/document-response-list.ts new file mode 100644 index 000000000..77e8fc8bb --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/document-response-list.ts @@ -0,0 +1,28 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DocumentResponse } from './document-response'; + +/** + * + * @export + * @interface DocumentResponseList + */ +export interface DocumentResponseList { + /** + * + * @type {Array} + * @memberof DocumentResponseList + */ + 'documents': Array; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/document-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/document-response.ts new file mode 100644 index 000000000..4f2ec0ec6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/document-response.ts @@ -0,0 +1,90 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceTypeNullable } from './data-source-type-nullable'; +import { RankProperty } from './rank-property'; +import { Tags } from './tags'; + +/** + * + * @export + * @interface DocumentResponse + */ +export interface DocumentResponse { + /** + * + * @type {{ [key: string]: Tags; }} + * @memberof DocumentResponse + */ + 'tags': { [key: string]: Tags; } | null; + /** + * + * @type {string} + * @memberof DocumentResponse + */ + 'content': string; + /** + * + * @type {number} + * @memberof DocumentResponse + */ + 'file_id': number; + /** + * + * @type {string} + * @memberof DocumentResponse + */ + 'source': string | null; + /** + * + * @type {string} + * @memberof DocumentResponse + */ + 'source_url': string | null; + /** + * + * @type {DataSourceTypeNullable} + * @memberof DocumentResponse + */ + 'source_type': DataSourceTypeNullable | null; + /** + * + * @type {string} + * @memberof DocumentResponse + */ + 'presigned_url': string | null; + /** + * + * @type {Array} + * @memberof DocumentResponse + */ + 'vector': Array | null; + /** + * + * @type {number} + * @memberof DocumentResponse + */ + 'score': number | null; + /** + * + * @type {RankProperty} + * @memberof DocumentResponse + */ + 'rank': RankProperty | null; + /** + * + * @type {object} + * @memberof DocumentResponse + */ + 'content_metadata': object | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-and-chunk.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-and-chunk.ts new file mode 100644 index 000000000..71518c65b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-and-chunk.ts @@ -0,0 +1,45 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface EmbeddingAndChunk + */ +export interface EmbeddingAndChunk { + /** + * + * @type {number} + * @memberof EmbeddingAndChunk + */ + 'user_file_id': number; + /** + * + * @type {number} + * @memberof EmbeddingAndChunk + */ + 'chunk_index': number | null; + /** + * + * @type {string} + * @memberof EmbeddingAndChunk + */ + 'source_content': string; + /** + * + * @type {Array} + * @memberof EmbeddingAndChunk + */ + 'embedding': Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-generators-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-generators-nullable.ts new file mode 100644 index 000000000..ec59948f7 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-generators-nullable.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type EmbeddingGeneratorsNullable = 'OPENAI' | 'AZURE_OPENAI' | 'COHERE_MULTILINGUAL_V3' | 'VERTEX_MULTIMODAL' | 'OPENAI_ADA_LARGE_256' | 'OPENAI_ADA_LARGE_1024' | 'OPENAI_ADA_LARGE_3072' | 'OPENAI_ADA_SMALL_512' | 'OPENAI_ADA_SMALL_1536' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-generators.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-generators.ts new file mode 100644 index 000000000..fb09f62ec --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-generators.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type EmbeddingGenerators = 'OPENAI' | 'AZURE_OPENAI' | 'COHERE_MULTILINGUAL_V3' | 'VERTEX_MULTIMODAL' | 'OPENAI_ADA_LARGE_256' | 'OPENAI_ADA_LARGE_1024' | 'OPENAI_ADA_LARGE_3072' | 'OPENAI_ADA_SMALL_512' | 'OPENAI_ADA_SMALL_1536' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-properties.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-properties.ts new file mode 100644 index 000000000..bee8f032a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embedding-properties.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface EmbeddingProperties + */ +export interface EmbeddingProperties { + /** + * + * @type {number} + * @memberof EmbeddingProperties + */ + 'chunk_size': number | null; + /** + * + * @type {number} + * @memberof EmbeddingProperties + */ + 'chunk_overlap': number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-filters.ts new file mode 100644 index 000000000..bb9abfa1a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-filters.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGeneratorsNullable } from './embedding-generators-nullable'; + +/** + * + * @export + * @interface EmbeddingsAndChunksFilters + */ +export interface EmbeddingsAndChunksFilters { + /** + * + * @type {number} + * @memberof EmbeddingsAndChunksFilters + */ + 'user_file_id': number; + /** + * + * @type {EmbeddingGeneratorsNullable} + * @memberof EmbeddingsAndChunksFilters + */ + 'embedding_model'?: EmbeddingGeneratorsNullable | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-order-by-columns.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-order-by-columns.ts new file mode 100644 index 000000000..25d5a353f --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-order-by-columns.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type EmbeddingsAndChunksOrderByColumns = 'created_at' | 'updated_at' | 'chunk_index' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-query-input-pagination.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-query-input-pagination.ts new file mode 100644 index 000000000..9ecf633e3 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-query-input-pagination.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { Pagination } from './pagination'; + +/** + * + * @export + * @interface EmbeddingsAndChunksQueryInputPagination + */ +export interface EmbeddingsAndChunksQueryInputPagination { + /** + * + * @type {number} + * @memberof EmbeddingsAndChunksQueryInputPagination + */ + 'limit'?: number; + /** + * + * @type {number} + * @memberof EmbeddingsAndChunksQueryInputPagination + */ + 'offset'?: number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-query-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-query-input.ts new file mode 100644 index 000000000..da8a0a206 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-query-input.ts @@ -0,0 +1,55 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingsAndChunksFilters } from './embeddings-and-chunks-filters'; +import { EmbeddingsAndChunksOrderByColumns } from './embeddings-and-chunks-order-by-columns'; +import { EmbeddingsAndChunksQueryInputPagination } from './embeddings-and-chunks-query-input-pagination'; +import { OrderDir } from './order-dir'; + +/** + * + * @export + * @interface EmbeddingsAndChunksQueryInput + */ +export interface EmbeddingsAndChunksQueryInput { + /** + * + * @type {EmbeddingsAndChunksQueryInputPagination} + * @memberof EmbeddingsAndChunksQueryInput + */ + 'pagination'?: EmbeddingsAndChunksQueryInputPagination; + /** + * + * @type {EmbeddingsAndChunksOrderByColumns} + * @memberof EmbeddingsAndChunksQueryInput + */ + 'order_by'?: EmbeddingsAndChunksOrderByColumns; + /** + * + * @type {OrderDir} + * @memberof EmbeddingsAndChunksQueryInput + */ + 'order_dir'?: OrderDir; + /** + * + * @type {EmbeddingsAndChunksFilters} + * @memberof EmbeddingsAndChunksQueryInput + */ + 'filters': EmbeddingsAndChunksFilters; + /** + * + * @type {boolean} + * @memberof EmbeddingsAndChunksQueryInput + */ + 'include_vectors'?: boolean; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-response.ts new file mode 100644 index 000000000..a82d4e71a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/embeddings-and-chunks-response.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingAndChunk } from './embedding-and-chunk'; + +/** + * + * @export + * @interface EmbeddingsAndChunksResponse + */ +export interface EmbeddingsAndChunksResponse { + /** + * + * @type {Array} + * @memberof EmbeddingsAndChunksResponse + */ + 'results': Array; + /** + * + * @type {number} + * @memberof EmbeddingsAndChunksResponse + */ + 'count': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/external-file-sync-statuses.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/external-file-sync-statuses.ts new file mode 100644 index 000000000..13c5fb8c2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/external-file-sync-statuses.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type ExternalFileSyncStatuses = 'DELAYED' | 'QUEUED_FOR_SYNC' | 'SYNCING' | 'READY' | 'SYNC_ERROR' | 'EVALUATING_RESYNC' | 'RATE_LIMITED' | 'SYNC_ABORTED' | 'QUEUED_FOR_OCR' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/external-source-item.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/external-source-item.ts new file mode 100644 index 000000000..b7c5e1a54 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/external-source-item.ts @@ -0,0 +1,118 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceType } from './data-source-type'; + +/** + * + * @export + * @interface ExternalSourceItem + */ +export interface ExternalSourceItem { + /** + * + * @type {number} + * @memberof ExternalSourceItem + */ + 'id': number; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'external_id': string; + /** + * + * @type {DataSourceType} + * @memberof ExternalSourceItem + */ + 'source': DataSourceType; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'name': string; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'synced_at': string; + /** + * + * @type {boolean} + * @memberof ExternalSourceItem + */ + 'is_selectable': boolean | null; + /** + * + * @type {boolean} + * @memberof ExternalSourceItem + */ + 'is_expandable': boolean | null; + /** + * + * @type {number} + * @memberof ExternalSourceItem + */ + 'organization_id': number; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'organization_supplied_user_id': string; + /** + * + * @type {number} + * @memberof ExternalSourceItem + */ + 'organization_user_id': number; + /** + * + * @type {number} + * @memberof ExternalSourceItem + */ + 'organization_user_data_source_id': number; + /** + * + * @type {number} + * @memberof ExternalSourceItem + */ + 'organization_user_file_to_sync_id': number | null; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'parent_external_id': string | null; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'item_type': string | null; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof ExternalSourceItem + */ + 'updated_at': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/fetch-urls-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/fetch-urls-response.ts new file mode 100644 index 000000000..7e5ea5091 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/fetch-urls-response.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface FetchURLsResponse + */ +export interface FetchURLsResponse { + /** + * + * @type {Array} + * @memberof FetchURLsResponse + */ + 'urls': Array; + /** + * + * @type {string} + * @memberof FetchURLsResponse + */ + 'html_content': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-content-types-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-content-types-nullable.ts new file mode 100644 index 000000000..e7677fd5c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-content-types-nullable.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * Used to filter the kind of files (e.g. `TEXT` or `IMAGE`) over which to perform the search. Also plays a role in determining what embedding model is used to embed the query. If `IMAGE` is chosen as the media type, then the embedding model used will be an embedding model that is not text-only, *regardless* of what value is passed for `embedding_model`. + * @export + * @enum {string} + */ +export type FileContentTypesNullable = 'TEXT' | 'IMAGE' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-content-types.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-content-types.ts new file mode 100644 index 000000000..2049f60a9 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-content-types.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type FileContentTypes = 'TEXT' | 'IMAGE' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-formats-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-formats-nullable.ts new file mode 100644 index 000000000..df8b301ef --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-formats-nullable.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type FileFormatsNullable = 'TXT' | 'CSV' | 'TSV' | 'PDF' | 'DOCX' | 'PPTX' | 'XLSX' | 'MD' | 'RTF' | 'JSON' | 'NOTION' | 'GOOGLE_DRIVE' | 'GOOGLE_DOCS' | 'GOOGLE_SHEETS' | 'GOOGLE_SLIDES' | 'INTERCOM' | 'DROPBOX' | 'ONEDRIVE' | 'SHAREPOINT' | 'CONFLUENCE' | 'RSS_FEED' | 'GMAIL' | 'OUTLOOK' | 'BOX' | 'ZENDESK' | 'FRESHDESK' | 'WEB_SCRAPE' | 'JPG' | 'JPG' | 'PNG' | 'MP3' | 'MP4' | 'MP2' | 'AAC' | 'WAV' | 'FLAC' | 'PCM' | 'M4A' | 'OGG' | 'OPUS' | 'WEBM' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-formats.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-formats.ts new file mode 100644 index 000000000..6f21359cd --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-formats.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type FileFormats = 'TXT' | 'CSV' | 'TSV' | 'PDF' | 'DOCX' | 'PPTX' | 'XLSX' | 'MD' | 'RTF' | 'JSON' | 'NOTION' | 'GOOGLE_DRIVE' | 'GOOGLE_DOCS' | 'GOOGLE_SHEETS' | 'GOOGLE_SLIDES' | 'INTERCOM' | 'DROPBOX' | 'ONEDRIVE' | 'SHAREPOINT' | 'CONFLUENCE' | 'RSS_FEED' | 'GMAIL' | 'OUTLOOK' | 'BOX' | 'ZENDESK' | 'FRESHDESK' | 'WEB_SCRAPE' | 'JPG' | 'JPG' | 'PNG' | 'MP3' | 'MP4' | 'MP2' | 'AAC' | 'WAV' | 'FLAC' | 'PCM' | 'M4A' | 'OGG' | 'OPUS' | 'WEBM' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-statistics-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-statistics-nullable.ts new file mode 100644 index 000000000..98d0dbd96 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-statistics-nullable.ts @@ -0,0 +1,52 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { FileFormatsNullable } from './file-formats-nullable'; + +/** + * + * @export + * @interface FileStatisticsNullable + */ +export interface FileStatisticsNullable { + /** + * + * @type {FileFormatsNullable} + * @memberof FileStatisticsNullable + */ + 'file_format': FileFormatsNullable | null; + /** + * + * @type {number} + * @memberof FileStatisticsNullable + */ + 'file_size': number | null; + /** + * + * @type {number} + * @memberof FileStatisticsNullable + */ + 'num_characters': number | null; + /** + * + * @type {number} + * @memberof FileStatisticsNullable + */ + 'num_tokens': number | null; + /** + * + * @type {number} + * @memberof FileStatisticsNullable + */ + 'num_embeddings': number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-statistics.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-statistics.ts new file mode 100644 index 000000000..eaa45a26d --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/file-statistics.ts @@ -0,0 +1,52 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { FileFormatsNullable } from './file-formats-nullable'; + +/** + * + * @export + * @interface FileStatistics + */ +export interface FileStatistics { + /** + * + * @type {FileFormatsNullable} + * @memberof FileStatistics + */ + 'file_format': FileFormatsNullable | null; + /** + * + * @type {number} + * @memberof FileStatistics + */ + 'file_size': number | null; + /** + * + * @type {number} + * @memberof FileStatistics + */ + 'num_characters': number | null; + /** + * + * @type {number} + * @memberof FileStatistics + */ + 'num_tokens': number | null; + /** + * + * @type {number} + * @memberof FileStatistics + */ + 'num_embeddings': number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/fresh-desk-connect-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/fresh-desk-connect-request.ts new file mode 100644 index 000000000..031166089 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/fresh-desk-connect-request.ts @@ -0,0 +1,76 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGeneratorsNullable } from './embedding-generators-nullable'; + +/** + * + * @export + * @interface FreshDeskConnectRequest + */ +export interface FreshDeskConnectRequest { + /** + * + * @type {object} + * @memberof FreshDeskConnectRequest + */ + 'tags'?: object | null; + /** + * + * @type {string} + * @memberof FreshDeskConnectRequest + */ + 'domain': string; + /** + * + * @type {string} + * @memberof FreshDeskConnectRequest + */ + 'api_key': string; + /** + * + * @type {number} + * @memberof FreshDeskConnectRequest + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof FreshDeskConnectRequest + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof FreshDeskConnectRequest + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGeneratorsNullable} + * @memberof FreshDeskConnectRequest + */ + 'embedding_model'?: EmbeddingGeneratorsNullable | null; + /** + * + * @type {boolean} + * @memberof FreshDeskConnectRequest + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof FreshDeskConnectRequest + */ + 'prepend_filename_to_chunks'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/generic-success-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/generic-success-response.ts new file mode 100644 index 000000000..e3f027b8e --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/generic-success-response.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface GenericSuccessResponse + */ +export interface GenericSuccessResponse { + /** + * + * @type {boolean} + * @memberof GenericSuccessResponse + */ + 'success': boolean; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/get-embedding-documents-body.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/get-embedding-documents-body.ts new file mode 100644 index 000000000..9abef3b47 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/get-embedding-documents-body.ts @@ -0,0 +1,109 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGeneratorsNullable } from './embedding-generators-nullable'; +import { FileContentTypesNullable } from './file-content-types-nullable'; +import { HybridSearchTuningParamsNullable } from './hybrid-search-tuning-params-nullable'; +import { Tags1 } from './tags1'; + +/** + * + * @export + * @interface GetEmbeddingDocumentsBody + */ +export interface GetEmbeddingDocumentsBody { + /** + * A set of tags to limit the search to. Deprecated and may be removed in the future. + * @type {{ [key: string]: Tags1; }} + * @memberof GetEmbeddingDocumentsBody + */ + 'tags'?: { [key: string]: Tags1; } | null; + /** + * Query for which to get related chunks and embeddings. + * @type {string} + * @memberof GetEmbeddingDocumentsBody + */ + 'query': string; + /** + * Optional query vector for which to get related chunks and embeddings. It must have been generated by the same model used to generate the embeddings across which the search is being conducted. Cannot provide both `query` and `query_vector`. + * @type {Array} + * @memberof GetEmbeddingDocumentsBody + */ + 'query_vector'?: Array | null; + /** + * Number of related chunks to return. + * @type {number} + * @memberof GetEmbeddingDocumentsBody + */ + 'k': number; + /** + * Optional list of file IDs to limit the search to + * @type {Array} + * @memberof GetEmbeddingDocumentsBody + */ + 'file_ids'?: Array | null; + /** + * Optional list of parent file IDs to limit the search to. A parent file describes a file to which another file belongs (e.g. a folder) + * @type {Array} + * @memberof GetEmbeddingDocumentsBody + */ + 'parent_file_ids'?: Array | null; + /** + * A set of tags to limit the search to. Use this instead of `tags`, which is deprecated. + * @type {object} + * @memberof GetEmbeddingDocumentsBody + */ + 'tags_v2'?: object | null; + /** + * Flag to control whether or not to include tags for each chunk in the response. + * @type {boolean} + * @memberof GetEmbeddingDocumentsBody + */ + 'include_tags'?: boolean | null; + /** + * Flag to control whether or not to include embedding vectors in the response. + * @type {boolean} + * @memberof GetEmbeddingDocumentsBody + */ + 'include_vectors'?: boolean | null; + /** + * Flag to control whether or not to include a signed URL to the raw file containing each chunk in the response. + * @type {boolean} + * @memberof GetEmbeddingDocumentsBody + */ + 'include_raw_file'?: boolean | null; + /** + * Flag to control whether or not to perform hybrid search. + * @type {boolean} + * @memberof GetEmbeddingDocumentsBody + */ + 'hybrid_search'?: boolean | null; + /** + * + * @type {HybridSearchTuningParamsNullable} + * @memberof GetEmbeddingDocumentsBody + */ + 'hybrid_search_tuning_parameters'?: HybridSearchTuningParamsNullable | null; + /** + * Used to filter the kind of files (e.g. `TEXT` or `IMAGE`) over which to perform the search. Also plays a role in determining what embedding model is used to embed the query. If `IMAGE` is chosen as the media type, then the embedding model used will be an embedding model that is not text-only, *regardless* of what value is passed for `embedding_model`. + * @type {FileContentTypesNullable} + * @memberof GetEmbeddingDocumentsBody + */ + 'media_type'?: FileContentTypesNullable | null; + /** + * + * @type {EmbeddingGeneratorsNullable} + * @memberof GetEmbeddingDocumentsBody + */ + 'embedding_model'?: EmbeddingGeneratorsNullable | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/gmail-sync-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/gmail-sync-input.ts new file mode 100644 index 000000000..f8c55f268 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/gmail-sync-input.ts @@ -0,0 +1,70 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; + +/** + * + * @export + * @interface GmailSyncInput + */ +export interface GmailSyncInput { + /** + * + * @type {object} + * @memberof GmailSyncInput + */ + 'tags'?: object | null; + /** + * + * @type {object} + * @memberof GmailSyncInput + */ + 'filters': object; + /** + * + * @type {number} + * @memberof GmailSyncInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof GmailSyncInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof GmailSyncInput + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGenerators} + * @memberof GmailSyncInput + */ + 'embedding_model'?: EmbeddingGenerators; + /** + * + * @type {boolean} + * @memberof GmailSyncInput + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof GmailSyncInput + */ + 'prepend_filename_to_chunks'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/httpvalidation-error.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/httpvalidation-error.ts new file mode 100644 index 000000000..1e24a55ec --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/httpvalidation-error.ts @@ -0,0 +1,28 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { ValidationError } from './validation-error'; + +/** + * + * @export + * @interface HTTPValidationError + */ +export interface HTTPValidationError { + /** + * + * @type {Array} + * @memberof HTTPValidationError + */ + 'detail'?: Array; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/hybrid-search-tuning-params-nullable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/hybrid-search-tuning-params-nullable.ts new file mode 100644 index 000000000..8884fb163 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/hybrid-search-tuning-params-nullable.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * Hybrid search tuning parameters. See the endpoint description for more details. + * @export + * @interface HybridSearchTuningParamsNullable + */ +export interface HybridSearchTuningParamsNullable { + /** + * + * @type {number} + * @memberof HybridSearchTuningParamsNullable + */ + 'weight_a': number; + /** + * + * @type {number} + * @memberof HybridSearchTuningParamsNullable + */ + 'weight_b': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/hybrid-search-tuning-params.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/hybrid-search-tuning-params.ts new file mode 100644 index 000000000..3859290b6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/hybrid-search-tuning-params.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface HybridSearchTuningParams + */ +export interface HybridSearchTuningParams { + /** + * + * @type {number} + * @memberof HybridSearchTuningParams + */ + 'weight_a': number; + /** + * + * @type {number} + * @memberof HybridSearchTuningParams + */ + 'weight_b': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/index.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/index.ts new file mode 100644 index 000000000..f60745b6b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/index.ts @@ -0,0 +1,97 @@ +export * from './add-webhook-props'; +export * from './body-create-upload-file-uploadfile-post'; +export * from './chunk-properties'; +export * from './chunk-properties-nullable'; +export * from './chunks-and-embeddings'; +export * from './chunks-and-embeddings-upload-input'; +export * from './data-source-last-sync-actions'; +export * from './data-source-sync-statuses'; +export * from './data-source-type'; +export * from './data-source-type-nullable'; +export * from './delete-files-query-input'; +export * from './directory-item'; +export * from './document-response'; +export * from './document-response-list'; +export * from './embedding-and-chunk'; +export * from './embedding-generators'; +export * from './embedding-generators-nullable'; +export * from './embedding-properties'; +export * from './embeddings-and-chunks-filters'; +export * from './embeddings-and-chunks-order-by-columns'; +export * from './embeddings-and-chunks-query-input'; +export * from './embeddings-and-chunks-query-input-pagination'; +export * from './embeddings-and-chunks-response'; +export * from './external-file-sync-statuses'; +export * from './external-source-item'; +export * from './fetch-urls-response'; +export * from './file-content-types'; +export * from './file-content-types-nullable'; +export * from './file-formats'; +export * from './file-formats-nullable'; +export * from './file-statistics'; +export * from './file-statistics-nullable'; +export * from './fresh-desk-connect-request'; +export * from './generic-success-response'; +export * from './get-embedding-documents-body'; +export * from './gmail-sync-input'; +export * from './httpvalidation-error'; +export * from './hybrid-search-tuning-params'; +export * from './hybrid-search-tuning-params-nullable'; +export * from './list-data-source-items-request'; +export * from './list-data-source-items-response'; +export * from './list-request'; +export * from './list-response'; +export * from './location-property-inner'; +export * from './modify-user-configuration-input'; +export * from './oauth-urlrequest'; +export * from './order-dir'; +export * from './organization-response'; +export * from './organization-user-data-source-api'; +export * from './organization-user-data-source-filters'; +export * from './organization-user-data-source-order-by-columns'; +export * from './organization-user-data-source-query-input'; +export * from './organization-user-data-source-query-input-filters'; +export * from './organization-user-data-source-response'; +export * from './organization-user-file-tag-create'; +export * from './organization-user-file-tags-remove'; +export * from './organization-user-files-to-sync-filters'; +export * from './organization-user-files-to-sync-order-by-types'; +export * from './organization-user-files-to-sync-query-input'; +export * from './organization-user-files-to-sync-query-input-filters'; +export * from './outlook-sync-input'; +export * from './pagination'; +export * from './presigned-urlresponse'; +export * from './rssfeed-input'; +export * from './rank-property'; +export * from './raw-text-input'; +export * from './raw-transcript-property-inner-value'; +export * from './resync-file-query-input'; +export * from './revoke-access-token-input'; +export * from './s3-auth-request'; +export * from './s3-file-sync-input'; +export * from './s3-get-file-input'; +export * from './single-chunks-and-embeddings-upload-input'; +export * from './sitemap-scrape-request'; +export * from './source-property'; +export * from './sync-directory-request'; +export * from './sync-files-request'; +export * from './tags'; +export * from './tags1'; +export * from './text-embedding-generators'; +export * from './token-response'; +export * from './upload-file-from-url-input'; +export * from './user-file'; +export * from './user-files-v2'; +export * from './user-request-content'; +export * from './user-response'; +export * from './validation-error'; +export * from './webhook'; +export * from './webhook-filters'; +export * from './webhook-no-key'; +export * from './webhook-order-by-columns'; +export * from './webhook-query-input'; +export * from './webhook-query-input-filters'; +export * from './webhook-query-response'; +export * from './webscrape-request'; +export * from './white-labeling-response'; +export * from './youtube-transcript-response'; diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-data-source-items-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-data-source-items-request.ts new file mode 100644 index 000000000..74acfbcc1 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-data-source-items-request.ts @@ -0,0 +1,40 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingsAndChunksQueryInputPagination } from './embeddings-and-chunks-query-input-pagination'; + +/** + * + * @export + * @interface ListDataSourceItemsRequest + */ +export interface ListDataSourceItemsRequest { + /** + * + * @type {number} + * @memberof ListDataSourceItemsRequest + */ + 'data_source_id': number; + /** + * + * @type {string} + * @memberof ListDataSourceItemsRequest + */ + 'parent_id'?: string | null; + /** + * + * @type {EmbeddingsAndChunksQueryInputPagination} + * @memberof ListDataSourceItemsRequest + */ + 'pagination'?: EmbeddingsAndChunksQueryInputPagination; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-data-source-items-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-data-source-items-response.ts new file mode 100644 index 000000000..f748c9122 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-data-source-items-response.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { ExternalSourceItem } from './external-source-item'; + +/** + * + * @export + * @interface ListDataSourceItemsResponse + */ +export interface ListDataSourceItemsResponse { + /** + * + * @type {Array} + * @memberof ListDataSourceItemsResponse + */ + 'items': Array; + /** + * + * @type {number} + * @memberof ListDataSourceItemsResponse + */ + 'count': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-request.ts new file mode 100644 index 000000000..e425b89ef --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-request.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface ListRequest + */ +export interface ListRequest { + /** + * + * @type {number} + * @memberof ListRequest + */ + 'data_source_id': number; + /** + * + * @type {string} + * @memberof ListRequest + */ + 'parent_id'?: string | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-response.ts new file mode 100644 index 000000000..9ffbdc59b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/list-response.ts @@ -0,0 +1,28 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DirectoryItem } from './directory-item'; + +/** + * + * @export + * @interface ListResponse + */ +export interface ListResponse { + /** + * + * @type {Array} + * @memberof ListResponse + */ + 'data': Array; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/location-property-inner.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/location-property-inner.ts new file mode 100644 index 000000000..8e1a66608 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/location-property-inner.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * @type LocationPropertyInner + * @export + */ +export type LocationPropertyInner = string | number; + + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/modify-user-configuration-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/modify-user-configuration-input.ts new file mode 100644 index 000000000..7af26ba78 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/modify-user-configuration-input.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface ModifyUserConfigurationInput + */ +export interface ModifyUserConfigurationInput { + /** + * + * @type {string} + * @memberof ModifyUserConfigurationInput + */ + 'configuration_key_name': string; + /** + * + * @type {object} + * @memberof ModifyUserConfigurationInput + */ + 'value': object; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/oauth-urlrequest.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/oauth-urlrequest.ts new file mode 100644 index 000000000..b14a4f4f8 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/oauth-urlrequest.ts @@ -0,0 +1,107 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceType } from './data-source-type'; +import { EmbeddingGeneratorsNullable } from './embedding-generators-nullable'; + +/** + * + * @export + * @interface OAuthURLRequest + */ +export interface OAuthURLRequest { + /** + * + * @type {any} + * @memberof OAuthURLRequest + */ + 'tags'?: any | null; + /** + * + * @type {string} + * @memberof OAuthURLRequest + */ + 'scope'?: string | null; + /** + * + * @type {DataSourceType} + * @memberof OAuthURLRequest + */ + 'service': DataSourceType; + /** + * + * @type {number} + * @memberof OAuthURLRequest + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof OAuthURLRequest + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof OAuthURLRequest + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGeneratorsNullable} + * @memberof OAuthURLRequest + */ + 'embedding_model'?: EmbeddingGeneratorsNullable | null; + /** + * + * @type {string} + * @memberof OAuthURLRequest + */ + 'zendesk_subdomain'?: string | null; + /** + * + * @type {string} + * @memberof OAuthURLRequest + */ + 'microsoft_tenant'?: string | null; + /** + * + * @type {string} + * @memberof OAuthURLRequest + */ + 'sharepoint_site_name'?: string | null; + /** + * + * @type {string} + * @memberof OAuthURLRequest + */ + 'confluence_subdomain'?: string | null; + /** + * + * @type {boolean} + * @memberof OAuthURLRequest + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof OAuthURLRequest + */ + 'prepend_filename_to_chunks'?: boolean | null; + /** + * + * @type {number} + * @memberof OAuthURLRequest + */ + 'max_items_per_chunk'?: number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/order-dir.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/order-dir.ts new file mode 100644 index 000000000..a95995f82 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/order-dir.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type OrderDir = 'desc' | 'asc' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-response.ts new file mode 100644 index 000000000..9d11f6df9 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-response.ts @@ -0,0 +1,93 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface OrganizationResponse + */ +export interface OrganizationResponse { + /** + * + * @type {number} + * @memberof OrganizationResponse + */ + 'id': number; + /** + * + * @type {string} + * @memberof OrganizationResponse + */ + 'name': string; + /** + * + * @type {string} + * @memberof OrganizationResponse + */ + 'nickname': string | null; + /** + * + * @type {boolean} + * @memberof OrganizationResponse + */ + 'remove_branding': boolean; + /** + * + * @type {object} + * @memberof OrganizationResponse + */ + 'custom_branding': object | null; + /** + * + * @type {object} + * @memberof OrganizationResponse + */ + 'custom_limits': object | null; + /** + * + * @type {object} + * @memberof OrganizationResponse + */ + 'aggregate_file_size': object; + /** + * + * @type {object} + * @memberof OrganizationResponse + */ + 'aggregate_num_characters': object; + /** + * + * @type {object} + * @memberof OrganizationResponse + */ + 'aggregate_num_tokens': object; + /** + * + * @type {object} + * @memberof OrganizationResponse + */ + 'aggregate_num_embeddings': object; + /** + * + * @type {string} + * @memberof OrganizationResponse + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof OrganizationResponse + */ + 'updated_at': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-api.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-api.ts new file mode 100644 index 000000000..529a79ca2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-api.ts @@ -0,0 +1,102 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceLastSyncActions } from './data-source-last-sync-actions'; +import { DataSourceSyncStatuses } from './data-source-sync-statuses'; +import { DataSourceType } from './data-source-type'; + +/** + * + * @export + * @interface OrganizationUserDataSourceAPI + */ +export interface OrganizationUserDataSourceAPI { + /** + * + * @type {number} + * @memberof OrganizationUserDataSourceAPI + */ + 'id': number; + /** + * + * @type {string} + * @memberof OrganizationUserDataSourceAPI + */ + 'data_source_external_id': string | null; + /** + * + * @type {DataSourceType} + * @memberof OrganizationUserDataSourceAPI + */ + 'data_source_type': DataSourceType; + /** + * + * @type {DataSourceSyncStatuses} + * @memberof OrganizationUserDataSourceAPI + */ + 'sync_status': DataSourceSyncStatuses; + /** + * + * @type {string} + * @memberof OrganizationUserDataSourceAPI + */ + 'source_items_synced_at': string | null; + /** + * + * @type {number} + * @memberof OrganizationUserDataSourceAPI + */ + 'organization_user_id': number; + /** + * + * @type {number} + * @memberof OrganizationUserDataSourceAPI + */ + 'organization_id': number; + /** + * + * @type {string} + * @memberof OrganizationUserDataSourceAPI + */ + 'organization_supplied_user_id': string; + /** + * + * @type {boolean} + * @memberof OrganizationUserDataSourceAPI + */ + 'revoked_access': boolean; + /** + * + * @type {string} + * @memberof OrganizationUserDataSourceAPI + */ + 'last_synced_at': string; + /** + * + * @type {DataSourceLastSyncActions} + * @memberof OrganizationUserDataSourceAPI + */ + 'last_sync_action': DataSourceLastSyncActions; + /** + * + * @type {string} + * @memberof OrganizationUserDataSourceAPI + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof OrganizationUserDataSourceAPI + */ + 'updated_at': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-filters.ts new file mode 100644 index 000000000..b503e6ac8 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-filters.ts @@ -0,0 +1,40 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceTypeNullable } from './data-source-type-nullable'; + +/** + * + * @export + * @interface OrganizationUserDataSourceFilters + */ +export interface OrganizationUserDataSourceFilters { + /** + * + * @type {DataSourceTypeNullable} + * @memberof OrganizationUserDataSourceFilters + */ + 'source'?: DataSourceTypeNullable | null; + /** + * + * @type {Array} + * @memberof OrganizationUserDataSourceFilters + */ + 'ids'?: Array | null; + /** + * + * @type {boolean} + * @memberof OrganizationUserDataSourceFilters + */ + 'revoked_access'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-order-by-columns.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-order-by-columns.ts new file mode 100644 index 000000000..6d09320a1 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-order-by-columns.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type OrganizationUserDataSourceOrderByColumns = 'created_at' | 'updated_at' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-query-input-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-query-input-filters.ts new file mode 100644 index 000000000..f92882930 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-query-input-filters.ts @@ -0,0 +1,41 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceTypeNullable } from './data-source-type-nullable'; +import { OrganizationUserDataSourceFilters } from './organization-user-data-source-filters'; + +/** + * + * @export + * @interface OrganizationUserDataSourceQueryInputFilters + */ +export interface OrganizationUserDataSourceQueryInputFilters { + /** + * + * @type {DataSourceTypeNullable} + * @memberof OrganizationUserDataSourceQueryInputFilters + */ + 'source'?: DataSourceTypeNullable | null; + /** + * + * @type {Array} + * @memberof OrganizationUserDataSourceQueryInputFilters + */ + 'ids'?: Array | null; + /** + * + * @type {boolean} + * @memberof OrganizationUserDataSourceQueryInputFilters + */ + 'revoked_access'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-query-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-query-input.ts new file mode 100644 index 000000000..f9a83bfd2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-query-input.ts @@ -0,0 +1,49 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingsAndChunksQueryInputPagination } from './embeddings-and-chunks-query-input-pagination'; +import { OrderDir } from './order-dir'; +import { OrganizationUserDataSourceOrderByColumns } from './organization-user-data-source-order-by-columns'; +import { OrganizationUserDataSourceQueryInputFilters } from './organization-user-data-source-query-input-filters'; + +/** + * + * @export + * @interface OrganizationUserDataSourceQueryInput + */ +export interface OrganizationUserDataSourceQueryInput { + /** + * + * @type {EmbeddingsAndChunksQueryInputPagination} + * @memberof OrganizationUserDataSourceQueryInput + */ + 'pagination'?: EmbeddingsAndChunksQueryInputPagination; + /** + * + * @type {OrganizationUserDataSourceOrderByColumns} + * @memberof OrganizationUserDataSourceQueryInput + */ + 'order_by'?: OrganizationUserDataSourceOrderByColumns; + /** + * + * @type {OrderDir} + * @memberof OrganizationUserDataSourceQueryInput + */ + 'order_dir'?: OrderDir; + /** + * + * @type {OrganizationUserDataSourceQueryInputFilters} + * @memberof OrganizationUserDataSourceQueryInput + */ + 'filters'?: OrganizationUserDataSourceQueryInputFilters; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-response.ts new file mode 100644 index 000000000..c4e7073fe --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-data-source-response.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { OrganizationUserDataSourceAPI } from './organization-user-data-source-api'; + +/** + * + * @export + * @interface OrganizationUserDataSourceResponse + */ +export interface OrganizationUserDataSourceResponse { + /** + * + * @type {Array} + * @memberof OrganizationUserDataSourceResponse + */ + 'results': Array; + /** + * + * @type {number} + * @memberof OrganizationUserDataSourceResponse + */ + 'count': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-file-tag-create.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-file-tag-create.ts new file mode 100644 index 000000000..6c4b49766 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-file-tag-create.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { Tags1 } from './tags1'; + +/** + * + * @export + * @interface OrganizationUserFileTagCreate + */ +export interface OrganizationUserFileTagCreate { + /** + * + * @type {{ [key: string]: Tags1; }} + * @memberof OrganizationUserFileTagCreate + */ + 'tags': { [key: string]: Tags1; }; + /** + * + * @type {number} + * @memberof OrganizationUserFileTagCreate + */ + 'organization_user_file_id': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-file-tags-remove.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-file-tags-remove.ts new file mode 100644 index 000000000..3a4bdab81 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-file-tags-remove.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface OrganizationUserFileTagsRemove + */ +export interface OrganizationUserFileTagsRemove { + /** + * + * @type {Array} + * @memberof OrganizationUserFileTagsRemove + */ + 'tags': Array; + /** + * + * @type {number} + * @memberof OrganizationUserFileTagsRemove + */ + 'organization_user_file_id': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-filters.ts new file mode 100644 index 000000000..9112f7bbe --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-filters.ts @@ -0,0 +1,85 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; +import { ExternalFileSyncStatuses } from './external-file-sync-statuses'; +import { SourceProperty } from './source-property'; +import { Tags1 } from './tags1'; + +/** + * + * @export + * @interface OrganizationUserFilesToSyncFilters + */ +export interface OrganizationUserFilesToSyncFilters { + /** + * + * @type {{ [key: string]: Tags1; }} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'tags'?: { [key: string]: Tags1; } | null; + /** + * + * @type {SourceProperty} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'source'?: SourceProperty | null; + /** + * + * @type {string} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'name'?: string | null; + /** + * + * @type {object} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'tags_v2'?: object | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'ids'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'external_file_ids'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'sync_statuses'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'parent_file_ids'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'organization_user_data_source_id'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncFilters + */ + 'embedding_generators'?: Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-order-by-types.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-order-by-types.ts new file mode 100644 index 000000000..b0662cfd6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-order-by-types.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type OrganizationUserFilesToSyncOrderByTypes = 'created_at' | 'updated_at' | 'name' | 'last_sync' | 'file_size' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-query-input-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-query-input-filters.ts new file mode 100644 index 000000000..cd48d2dbf --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-query-input-filters.ts @@ -0,0 +1,86 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; +import { ExternalFileSyncStatuses } from './external-file-sync-statuses'; +import { OrganizationUserFilesToSyncFilters } from './organization-user-files-to-sync-filters'; +import { SourceProperty } from './source-property'; +import { Tags1 } from './tags1'; + +/** + * + * @export + * @interface OrganizationUserFilesToSyncQueryInputFilters + */ +export interface OrganizationUserFilesToSyncQueryInputFilters { + /** + * + * @type {{ [key: string]: Tags1; }} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'tags'?: { [key: string]: Tags1; } | null; + /** + * + * @type {SourceProperty} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'source'?: SourceProperty | null; + /** + * + * @type {string} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'name'?: string | null; + /** + * + * @type {object} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'tags_v2'?: object | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'ids'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'external_file_ids'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'sync_statuses'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'parent_file_ids'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'organization_user_data_source_id'?: Array | null; + /** + * + * @type {Array} + * @memberof OrganizationUserFilesToSyncQueryInputFilters + */ + 'embedding_generators'?: Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-query-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-query-input.ts new file mode 100644 index 000000000..102b072ea --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/organization-user-files-to-sync-query-input.ts @@ -0,0 +1,67 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingsAndChunksQueryInputPagination } from './embeddings-and-chunks-query-input-pagination'; +import { OrderDir } from './order-dir'; +import { OrganizationUserFilesToSyncOrderByTypes } from './organization-user-files-to-sync-order-by-types'; +import { OrganizationUserFilesToSyncQueryInputFilters } from './organization-user-files-to-sync-query-input-filters'; + +/** + * + * @export + * @interface OrganizationUserFilesToSyncQueryInput + */ +export interface OrganizationUserFilesToSyncQueryInput { + /** + * + * @type {EmbeddingsAndChunksQueryInputPagination} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'pagination'?: EmbeddingsAndChunksQueryInputPagination; + /** + * + * @type {OrganizationUserFilesToSyncOrderByTypes} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'order_by'?: OrganizationUserFilesToSyncOrderByTypes; + /** + * + * @type {OrderDir} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'order_dir'?: OrderDir; + /** + * + * @type {OrganizationUserFilesToSyncQueryInputFilters} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'filters'?: OrganizationUserFilesToSyncQueryInputFilters; + /** + * + * @type {boolean} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'include_raw_file'?: boolean | null; + /** + * + * @type {boolean} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'include_parsed_text_file'?: boolean | null; + /** + * + * @type {boolean} + * @memberof OrganizationUserFilesToSyncQueryInput + */ + 'include_additional_files'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/outlook-sync-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/outlook-sync-input.ts new file mode 100644 index 000000000..1d537b9c0 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/outlook-sync-input.ts @@ -0,0 +1,76 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; + +/** + * + * @export + * @interface OutlookSyncInput + */ +export interface OutlookSyncInput { + /** + * + * @type {object} + * @memberof OutlookSyncInput + */ + 'tags'?: object | null; + /** + * + * @type {string} + * @memberof OutlookSyncInput + */ + 'folder'?: string | null; + /** + * + * @type {object} + * @memberof OutlookSyncInput + */ + 'filters': object; + /** + * + * @type {number} + * @memberof OutlookSyncInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof OutlookSyncInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof OutlookSyncInput + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGenerators} + * @memberof OutlookSyncInput + */ + 'embedding_model'?: EmbeddingGenerators; + /** + * + * @type {boolean} + * @memberof OutlookSyncInput + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof OutlookSyncInput + */ + 'prepend_filename_to_chunks'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/pagination.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/pagination.ts new file mode 100644 index 000000000..6717df2ae --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/pagination.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface Pagination + */ +export interface Pagination { + /** + * + * @type {number} + * @memberof Pagination + */ + 'limit'?: number; + /** + * + * @type {number} + * @memberof Pagination + */ + 'offset'?: number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/presigned-urlresponse.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/presigned-urlresponse.ts new file mode 100644 index 000000000..aeb0e8e3e --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/presigned-urlresponse.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface PresignedURLResponse + */ +export interface PresignedURLResponse { + /** + * + * @type {string} + * @memberof PresignedURLResponse + */ + 'presigned_url': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/rank-property.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/rank-property.ts new file mode 100644 index 000000000..e8d281240 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/rank-property.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * @type RankProperty + * @export + */ +export type RankProperty = number; + + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/raw-text-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/raw-text-input.ts new file mode 100644 index 000000000..ef0e9a8f2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/raw-text-input.ts @@ -0,0 +1,70 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGeneratorsNullable } from './embedding-generators-nullable'; + +/** + * + * @export + * @interface RawTextInput + */ +export interface RawTextInput { + /** + * + * @type {string} + * @memberof RawTextInput + */ + 'contents': string; + /** + * + * @type {string} + * @memberof RawTextInput + */ + 'name'?: string | null; + /** + * + * @type {number} + * @memberof RawTextInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof RawTextInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof RawTextInput + */ + 'skip_embedding_generation'?: boolean; + /** + * + * @type {number} + * @memberof RawTextInput + */ + 'overwrite_file_id'?: number | null; + /** + * + * @type {EmbeddingGeneratorsNullable} + * @memberof RawTextInput + */ + 'embedding_model'?: EmbeddingGeneratorsNullable | null; + /** + * + * @type {boolean} + * @memberof RawTextInput + */ + 'generate_sparse_vectors'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/raw-transcript-property-inner-value.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/raw-transcript-property-inner-value.ts new file mode 100644 index 000000000..f295b087c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/raw-transcript-property-inner-value.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * @type RawTranscriptPropertyInnerValue + * @export + */ +export type RawTranscriptPropertyInnerValue = string | number; + + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/resync-file-query-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/resync-file-query-input.ts new file mode 100644 index 000000000..5bceb8b18 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/resync-file-query-input.ts @@ -0,0 +1,39 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface ResyncFileQueryInput + */ +export interface ResyncFileQueryInput { + /** + * + * @type {number} + * @memberof ResyncFileQueryInput + */ + 'file_id': number; + /** + * + * @type {number} + * @memberof ResyncFileQueryInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof ResyncFileQueryInput + */ + 'chunk_overlap'?: number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/revoke-access-token-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/revoke-access-token-input.ts new file mode 100644 index 000000000..02cee5764 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/revoke-access-token-input.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface RevokeAccessTokenInput + */ +export interface RevokeAccessTokenInput { + /** + * + * @type {number} + * @memberof RevokeAccessTokenInput + */ + 'data_source_id': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/rssfeed-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/rssfeed-input.ts new file mode 100644 index 000000000..06f67908a --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/rssfeed-input.ts @@ -0,0 +1,70 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; + +/** + * + * @export + * @interface RSSFeedInput + */ +export interface RSSFeedInput { + /** + * + * @type {object} + * @memberof RSSFeedInput + */ + 'tags'?: object | null; + /** + * + * @type {string} + * @memberof RSSFeedInput + */ + 'url': string; + /** + * + * @type {number} + * @memberof RSSFeedInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof RSSFeedInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof RSSFeedInput + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGenerators} + * @memberof RSSFeedInput + */ + 'embedding_model'?: EmbeddingGenerators; + /** + * + * @type {boolean} + * @memberof RSSFeedInput + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof RSSFeedInput + */ + 'prepend_filename_to_chunks'?: boolean | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-auth-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-auth-request.ts new file mode 100644 index 000000000..2fe1b0996 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-auth-request.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface S3AuthRequest + */ +export interface S3AuthRequest { + /** + * + * @type {string} + * @memberof S3AuthRequest + */ + 'access_key': string; + /** + * + * @type {string} + * @memberof S3AuthRequest + */ + 'access_key_secret': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-file-sync-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-file-sync-input.ts new file mode 100644 index 000000000..f833bd64c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-file-sync-input.ts @@ -0,0 +1,77 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; +import { S3GetFileInput } from './s3-get-file-input'; + +/** + * + * @export + * @interface S3FileSyncInput + */ +export interface S3FileSyncInput { + /** + * + * @type {object} + * @memberof S3FileSyncInput + */ + 'tags'?: object | null; + /** + * + * @type {Array} + * @memberof S3FileSyncInput + */ + 'ids': Array; + /** + * + * @type {number} + * @memberof S3FileSyncInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof S3FileSyncInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof S3FileSyncInput + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGenerators} + * @memberof S3FileSyncInput + */ + 'embedding_model'?: EmbeddingGenerators; + /** + * + * @type {boolean} + * @memberof S3FileSyncInput + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof S3FileSyncInput + */ + 'prepend_filename_to_chunks'?: boolean | null; + /** + * + * @type {number} + * @memberof S3FileSyncInput + */ + 'max_items_per_chunk'?: number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-get-file-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-get-file-input.ts new file mode 100644 index 000000000..991c9af0d --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/s3-get-file-input.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface S3GetFileInput + */ +export interface S3GetFileInput { + /** + * + * @type {string} + * @memberof S3GetFileInput + */ + 'id'?: string | null; + /** + * + * @type {string} + * @memberof S3GetFileInput + */ + 'bucket'?: string | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/single-chunks-and-embeddings-upload-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/single-chunks-and-embeddings-upload-input.ts new file mode 100644 index 000000000..eb4301f9b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/single-chunks-and-embeddings-upload-input.ts @@ -0,0 +1,46 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { ChunksAndEmbeddings } from './chunks-and-embeddings'; + +/** + * + * @export + * @interface SingleChunksAndEmbeddingsUploadInput + */ +export interface SingleChunksAndEmbeddingsUploadInput { + /** + * + * @type {number} + * @memberof SingleChunksAndEmbeddingsUploadInput + */ + 'file_id': number; + /** + * + * @type {number} + * @memberof SingleChunksAndEmbeddingsUploadInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof SingleChunksAndEmbeddingsUploadInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {Array} + * @memberof SingleChunksAndEmbeddingsUploadInput + */ + 'chunks_and_embeddings': Array; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sitemap-scrape-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sitemap-scrape-request.ts new file mode 100644 index 000000000..948003b83 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sitemap-scrape-request.ts @@ -0,0 +1,94 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { Tags1 } from './tags1'; + +/** + * + * @export + * @interface SitemapScrapeRequest + */ +export interface SitemapScrapeRequest { + /** + * + * @type {{ [key: string]: Tags1; }} + * @memberof SitemapScrapeRequest + */ + 'tags'?: { [key: string]: Tags1; } | null; + /** + * + * @type {string} + * @memberof SitemapScrapeRequest + */ + 'url': string; + /** + * + * @type {number} + * @memberof SitemapScrapeRequest + */ + 'max_pages_to_scrape'?: number | null; + /** + * + * @type {number} + * @memberof SitemapScrapeRequest + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof SitemapScrapeRequest + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof SitemapScrapeRequest + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {boolean} + * @memberof SitemapScrapeRequest + */ + 'enable_auto_sync'?: boolean | null; + /** + * + * @type {boolean} + * @memberof SitemapScrapeRequest + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof SitemapScrapeRequest + */ + 'prepend_filename_to_chunks'?: boolean | null; + /** + * + * @type {Array} + * @memberof SitemapScrapeRequest + */ + 'html_tags_to_skip'?: Array | null; + /** + * + * @type {Array} + * @memberof SitemapScrapeRequest + */ + 'css_classes_to_skip'?: Array | null; + /** + * + * @type {Array} + * @memberof SitemapScrapeRequest + */ + 'css_selectors_to_skip'?: Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/source-property.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/source-property.ts new file mode 100644 index 000000000..050a5f235 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/source-property.ts @@ -0,0 +1,21 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { DataSourceType } from './data-source-type'; + +/** + * @type SourceProperty + * @export + */ +export type SourceProperty = DataSourceType | Array; + + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sync-directory-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sync-directory-request.ts new file mode 100644 index 000000000..1f23afd46 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sync-directory-request.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface SyncDirectoryRequest + */ +export interface SyncDirectoryRequest { + /** + * + * @type {number} + * @memberof SyncDirectoryRequest + */ + 'data_source_id': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sync-files-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sync-files-request.ts new file mode 100644 index 000000000..16ae5793c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/sync-files-request.ts @@ -0,0 +1,82 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGeneratorsNullable } from './embedding-generators-nullable'; + +/** + * + * @export + * @interface SyncFilesRequest + */ +export interface SyncFilesRequest { + /** + * + * @type {object} + * @memberof SyncFilesRequest + */ + 'tags'?: object | null; + /** + * + * @type {number} + * @memberof SyncFilesRequest + */ + 'data_source_id': number; + /** + * + * @type {Array} + * @memberof SyncFilesRequest + */ + 'ids': Array; + /** + * + * @type {number} + * @memberof SyncFilesRequest + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof SyncFilesRequest + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof SyncFilesRequest + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {EmbeddingGeneratorsNullable} + * @memberof SyncFilesRequest + */ + 'embedding_model'?: EmbeddingGeneratorsNullable | null; + /** + * + * @type {boolean} + * @memberof SyncFilesRequest + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof SyncFilesRequest + */ + 'prepend_filename_to_chunks'?: boolean | null; + /** + * + * @type {number} + * @memberof SyncFilesRequest + */ + 'max_items_per_chunk'?: number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/tags.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/tags.ts new file mode 100644 index 000000000..019b5f3aa --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/tags.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * @type Tags + * @export + */ +export type Tags = string | number | boolean | Array | Array | Array; + + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/tags1.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/tags1.ts new file mode 100644 index 000000000..c617b1fff --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/tags1.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * @type Tags1 + * @export + */ +export type Tags1 = string | number | boolean | Array | Array | Array; + + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/text-embedding-generators.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/text-embedding-generators.ts new file mode 100644 index 000000000..85ed37358 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/text-embedding-generators.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type TextEmbeddingGenerators = 'OPENAI' | 'AZURE_OPENAI' | 'COHERE_MULTILINGUAL_V3' | 'OPENAI_ADA_LARGE_256' | 'OPENAI_ADA_LARGE_1024' | 'OPENAI_ADA_LARGE_3072' | 'OPENAI_ADA_SMALL_512' | 'OPENAI_ADA_SMALL_1536' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/token-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/token-response.ts new file mode 100644 index 000000000..dadbccf0c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/token-response.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface TokenResponse + */ +export interface TokenResponse { + /** + * + * @type {string} + * @memberof TokenResponse + */ + 'access_token': string; + /** + * + * @type {string} + * @memberof TokenResponse + */ + 'refresh_token': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/upload-file-from-url-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/upload-file-from-url-input.ts new file mode 100644 index 000000000..acf8d44f0 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/upload-file-from-url-input.ts @@ -0,0 +1,88 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingGenerators } from './embedding-generators'; + +/** + * + * @export + * @interface UploadFileFromUrlInput + */ +export interface UploadFileFromUrlInput { + /** + * + * @type {string} + * @memberof UploadFileFromUrlInput + */ + 'url': string; + /** + * + * @type {string} + * @memberof UploadFileFromUrlInput + */ + 'file_name'?: string | null; + /** + * + * @type {number} + * @memberof UploadFileFromUrlInput + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof UploadFileFromUrlInput + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof UploadFileFromUrlInput + */ + 'skip_embedding_generation'?: boolean; + /** + * + * @type {boolean} + * @memberof UploadFileFromUrlInput + */ + 'set_page_as_boundary'?: boolean; + /** + * + * @type {EmbeddingGenerators} + * @memberof UploadFileFromUrlInput + */ + 'embedding_model'?: EmbeddingGenerators; + /** + * + * @type {boolean} + * @memberof UploadFileFromUrlInput + */ + 'generate_sparse_vectors'?: boolean; + /** + * + * @type {boolean} + * @memberof UploadFileFromUrlInput + */ + 'use_textract'?: boolean; + /** + * + * @type {boolean} + * @memberof UploadFileFromUrlInput + */ + 'prepend_filename_to_chunks'?: boolean; + /** + * + * @type {number} + * @memberof UploadFileFromUrlInput + */ + 'max_items_per_chunk'?: number | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-file.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-file.ts new file mode 100644 index 000000000..9c811e1b2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-file.ts @@ -0,0 +1,194 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { ChunkPropertiesNullable } from './chunk-properties-nullable'; +import { DataSourceType } from './data-source-type'; +import { EmbeddingProperties } from './embedding-properties'; +import { ExternalFileSyncStatuses } from './external-file-sync-statuses'; +import { FileStatisticsNullable } from './file-statistics-nullable'; + +/** + * + * @export + * @interface UserFile + */ +export interface UserFile { + /** + * + * @type {object} + * @memberof UserFile + */ + 'tags': object | null; + /** + * + * @type {number} + * @memberof UserFile + */ + 'id': number; + /** + * + * @type {DataSourceType} + * @memberof UserFile + */ + 'source': DataSourceType; + /** + * + * @type {number} + * @memberof UserFile + */ + 'organization_id': number; + /** + * + * @type {string} + * @memberof UserFile + */ + 'organization_supplied_user_id': string; + /** + * + * @type {number} + * @memberof UserFile + */ + 'organization_user_data_source_id': number | null; + /** + * + * @type {string} + * @memberof UserFile + */ + 'external_file_id': string; + /** + * + * @type {string} + * @memberof UserFile + */ + 'external_url': string | null; + /** + * + * @type {ExternalFileSyncStatuses} + * @memberof UserFile + */ + 'sync_status': ExternalFileSyncStatuses; + /** + * + * @type {string} + * @memberof UserFile + */ + 'sync_error_message': string | null; + /** + * + * @type {string} + * @memberof UserFile + */ + 'last_sync': string | null; + /** + * + * @type {FileStatisticsNullable} + * @memberof UserFile + */ + 'file_statistics': FileStatisticsNullable | null; + /** + * + * @type {object} + * @memberof UserFile + */ + 'file_metadata': object | null; + /** + * + * @type {{ [key: string]: EmbeddingProperties; }} + * @memberof UserFile + */ + 'embedding_properties': { [key: string]: EmbeddingProperties; } | null; + /** + * + * @type {number} + * @memberof UserFile + */ + 'chunk_size': number | null; + /** + * + * @type {number} + * @memberof UserFile + */ + 'chunk_overlap': number | null; + /** + * + * @type {ChunkPropertiesNullable} + * @memberof UserFile + */ + 'chunk_properties': ChunkPropertiesNullable | null; + /** + * + * @type {string} + * @memberof UserFile + */ + 'name': string | null; + /** + * + * @type {number} + * @memberof UserFile + */ + 'parent_id': number | null; + /** + * + * @type {boolean} + * @memberof UserFile + */ + 'enable_auto_sync': boolean | null; + /** + * + * @type {string} + * @memberof UserFile + */ + 'presigned_url': string | null; + /** + * + * @type {string} + * @memberof UserFile + */ + 'parsed_text_url': string | null; + /** + * + * @type {object} + * @memberof UserFile + */ + 'additional_presigned_urls': object | null; + /** + * + * @type {boolean} + * @memberof UserFile + */ + 'skip_embedding_generation': boolean; + /** + * + * @type {string} + * @memberof UserFile + */ + 'source_created_at': string | null; + /** + * + * @type {boolean} + * @memberof UserFile + */ + 'generate_sparse_vectors': boolean | null; + /** + * + * @type {string} + * @memberof UserFile + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof UserFile + */ + 'updated_at': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-files-v2.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-files-v2.ts new file mode 100644 index 000000000..756d00fb4 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-files-v2.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { UserFile } from './user-file'; + +/** + * + * @export + * @interface UserFilesV2 + */ +export interface UserFilesV2 { + /** + * + * @type {Array} + * @memberof UserFilesV2 + */ + 'results': Array; + /** + * + * @type {number} + * @memberof UserFilesV2 + */ + 'count': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-request-content.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-request-content.ts new file mode 100644 index 000000000..72f453544 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-request-content.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface UserRequestContent + */ +export interface UserRequestContent { + /** + * + * @type {string} + * @memberof UserRequestContent + */ + 'customer_id': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-response.ts new file mode 100644 index 000000000..26b4a76c4 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/user-response.ts @@ -0,0 +1,87 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface UserResponse + */ +export interface UserResponse { + /** + * + * @type {number} + * @memberof UserResponse + */ + 'id': number; + /** + * + * @type {number} + * @memberof UserResponse + */ + 'organization_id': number; + /** + * + * @type {string} + * @memberof UserResponse + */ + 'organization_supplied_user_id': string; + /** + * + * @type {string} + * @memberof UserResponse + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof UserResponse + */ + 'updated_at': string; + /** + * + * @type {string} + * @memberof UserResponse + */ + 'deleted_at': string | null; + /** + * + * @type {number} + * @memberof UserResponse + */ + 'num_files_synced': number; + /** + * + * @type {number} + * @memberof UserResponse + */ + 'num_characters_synced': number; + /** + * + * @type {number} + * @memberof UserResponse + */ + 'num_tokens_synced': number; + /** + * + * @type {Array} + * @memberof UserResponse + */ + 'unique_file_tags': Array; + /** + * + * @type {object} + * @memberof UserResponse + */ + 'enabled_features': object | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/validation-error.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/validation-error.ts new file mode 100644 index 000000000..e66bf4db9 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/validation-error.ts @@ -0,0 +1,40 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { LocationPropertyInner } from './location-property-inner'; + +/** + * + * @export + * @interface ValidationError + */ +export interface ValidationError { + /** + * + * @type {Array} + * @memberof ValidationError + */ + 'loc': Array; + /** + * + * @type {string} + * @memberof ValidationError + */ + 'msg': string; + /** + * + * @type {string} + * @memberof ValidationError + */ + 'type': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-filters.ts new file mode 100644 index 000000000..6b6fb61d9 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-filters.ts @@ -0,0 +1,27 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface WebhookFilters + */ +export interface WebhookFilters { + /** + * + * @type {Array} + * @memberof WebhookFilters + */ + 'ids'?: Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-no-key.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-no-key.ts new file mode 100644 index 000000000..acf18e8f0 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-no-key.ts @@ -0,0 +1,51 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface WebhookNoKey + */ +export interface WebhookNoKey { + /** + * + * @type {number} + * @memberof WebhookNoKey + */ + 'id': number; + /** + * + * @type {number} + * @memberof WebhookNoKey + */ + 'organization_id': number; + /** + * + * @type {string} + * @memberof WebhookNoKey + */ + 'url': string; + /** + * + * @type {string} + * @memberof WebhookNoKey + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof WebhookNoKey + */ + 'updated_at': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-order-by-columns.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-order-by-columns.ts new file mode 100644 index 000000000..8bdaff867 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-order-by-columns.ts @@ -0,0 +1,20 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @enum {string} + */ +export type WebhookOrderByColumns = 'created_at' | 'updated_at' + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-input-filters.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-input-filters.ts new file mode 100644 index 000000000..df3fa513f --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-input-filters.ts @@ -0,0 +1,28 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { WebhookFilters } from './webhook-filters'; + +/** + * + * @export + * @interface WebhookQueryInputFilters + */ +export interface WebhookQueryInputFilters { + /** + * + * @type {Array} + * @memberof WebhookQueryInputFilters + */ + 'ids'?: Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-input.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-input.ts new file mode 100644 index 000000000..d758bc5e0 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-input.ts @@ -0,0 +1,49 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { EmbeddingsAndChunksQueryInputPagination } from './embeddings-and-chunks-query-input-pagination'; +import { OrderDir } from './order-dir'; +import { WebhookOrderByColumns } from './webhook-order-by-columns'; +import { WebhookQueryInputFilters } from './webhook-query-input-filters'; + +/** + * + * @export + * @interface WebhookQueryInput + */ +export interface WebhookQueryInput { + /** + * + * @type {EmbeddingsAndChunksQueryInputPagination} + * @memberof WebhookQueryInput + */ + 'pagination'?: EmbeddingsAndChunksQueryInputPagination; + /** + * + * @type {WebhookOrderByColumns} + * @memberof WebhookQueryInput + */ + 'order_by'?: WebhookOrderByColumns; + /** + * + * @type {OrderDir} + * @memberof WebhookQueryInput + */ + 'order_dir'?: OrderDir; + /** + * + * @type {WebhookQueryInputFilters} + * @memberof WebhookQueryInput + */ + 'filters'?: WebhookQueryInputFilters; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-response.ts new file mode 100644 index 000000000..3d4e8ce6b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook-query-response.ts @@ -0,0 +1,34 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { WebhookNoKey } from './webhook-no-key'; + +/** + * + * @export + * @interface WebhookQueryResponse + */ +export interface WebhookQueryResponse { + /** + * + * @type {Array} + * @memberof WebhookQueryResponse + */ + 'results': Array; + /** + * + * @type {number} + * @memberof WebhookQueryResponse + */ + 'count': number; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook.ts new file mode 100644 index 000000000..16aba16eb --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webhook.ts @@ -0,0 +1,57 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface Webhook + */ +export interface Webhook { + /** + * + * @type {number} + * @memberof Webhook + */ + 'id': number; + /** + * + * @type {number} + * @memberof Webhook + */ + 'organization_id': number; + /** + * + * @type {string} + * @memberof Webhook + */ + 'url': string; + /** + * + * @type {string} + * @memberof Webhook + */ + 'signing_key': string; + /** + * + * @type {string} + * @memberof Webhook + */ + 'created_at': string; + /** + * + * @type {string} + * @memberof Webhook + */ + 'updated_at': string; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webscrape-request.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webscrape-request.ts new file mode 100644 index 000000000..00d5a7f5b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/webscrape-request.ts @@ -0,0 +1,100 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { Tags1 } from './tags1'; + +/** + * + * @export + * @interface WebscrapeRequest + */ +export interface WebscrapeRequest { + /** + * + * @type {{ [key: string]: Tags1; }} + * @memberof WebscrapeRequest + */ + 'tags'?: { [key: string]: Tags1; } | null; + /** + * + * @type {string} + * @memberof WebscrapeRequest + */ + 'url': string; + /** + * + * @type {number} + * @memberof WebscrapeRequest + */ + 'recursion_depth'?: number | null; + /** + * + * @type {number} + * @memberof WebscrapeRequest + */ + 'max_pages_to_scrape'?: number | null; + /** + * + * @type {number} + * @memberof WebscrapeRequest + */ + 'chunk_size'?: number | null; + /** + * + * @type {number} + * @memberof WebscrapeRequest + */ + 'chunk_overlap'?: number | null; + /** + * + * @type {boolean} + * @memberof WebscrapeRequest + */ + 'skip_embedding_generation'?: boolean | null; + /** + * + * @type {boolean} + * @memberof WebscrapeRequest + */ + 'enable_auto_sync'?: boolean | null; + /** + * + * @type {boolean} + * @memberof WebscrapeRequest + */ + 'generate_sparse_vectors'?: boolean | null; + /** + * + * @type {boolean} + * @memberof WebscrapeRequest + */ + 'prepend_filename_to_chunks'?: boolean | null; + /** + * + * @type {Array} + * @memberof WebscrapeRequest + */ + 'html_tags_to_skip'?: Array | null; + /** + * + * @type {Array} + * @memberof WebscrapeRequest + */ + 'css_classes_to_skip'?: Array | null; + /** + * + * @type {Array} + * @memberof WebscrapeRequest + */ + 'css_selectors_to_skip'?: Array | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/white-labeling-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/white-labeling-response.ts new file mode 100644 index 000000000..b1f8e1a8c --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/white-labeling-response.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + + +/** + * + * @export + * @interface WhiteLabelingResponse + */ +export interface WhiteLabelingResponse { + /** + * + * @type {boolean} + * @memberof WhiteLabelingResponse + */ + 'remove_branding': boolean; + /** + * + * @type {object} + * @memberof WhiteLabelingResponse + */ + 'integrations': object; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/youtube-transcript-response.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/youtube-transcript-response.ts new file mode 100644 index 000000000..38f474972 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/models/youtube-transcript-response.ts @@ -0,0 +1,46 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ +import type * as buffer from "buffer" + +import { RawTranscriptPropertyInnerValue } from './raw-transcript-property-inner-value'; + +/** + * + * @export + * @interface YoutubeTranscriptResponse + */ +export interface YoutubeTranscriptResponse { + /** + * + * @type {string} + * @memberof YoutubeTranscriptResponse + */ + 'status': string; + /** + * + * @type {string} + * @memberof YoutubeTranscriptResponse + */ + 'error': string | null; + /** + * + * @type {string} + * @memberof YoutubeTranscriptResponse + */ + 'data': string | null; + /** + * + * @type {Array<{ [key: string]: RawTranscriptPropertyInnerValue; }>} + * @memberof YoutubeTranscriptResponse + */ + 'raw_transcript': Array<{ [key: string]: RawTranscriptPropertyInnerValue; }> | null; +} + diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/package.json b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/package.json new file mode 100644 index 000000000..fbb2ab5fb --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/package.json @@ -0,0 +1,55 @@ +{ + "name": "carbon-typescript-sdk", + "version": "0.1.1", + "description": "Client for Carbon", + "author": "Konfig", + "engines": { + "node": ">=10" + }, + "repository": { + "type": "git", + "url": "https://github.com/konfig-dev/carbon-sdks.git", + "directory": "typescript" + }, + "homepage": "https://github.com/konfig-dev/carbon-sdks/tree/HEAD/typescript#readme", + "keywords": [ + "axios", + "typescript", + "konfig", + "carbon-typescript-sdk" + ], + "license": "Unlicense", + "files": [ + "./dist/**/*" + ], + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "scripts": { + "build": "npm run clean && tsc && webpack", + "clean": "rm -rf dist/", + "prepack": "npm run build", + "test": "jest" + }, + "dependencies": { + "axios": "1.6.4", + "buffer": "^6.0.3", + "file-type": "16.5.4", + "form-data": "^4.0.0" + }, + "resolutions": { + "semver": "^7.5.2", + "@babel/traverse": "^7.23.2" + }, + "devDependencies": { + "@jest/types": "^29.6.3", + "@types/jest": "^29.2.4", + "@types/node": "^18", + "jest": "^29.3.1", + "ts-jest": "^29.0.3", + "ts-loader": "^9.4.4", + "ts-node": "^10.9.1", + "typescript": "^4.0", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4" + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/page-types.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/page-types.ts new file mode 100644 index 000000000..53663dcd9 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/page-types.ts @@ -0,0 +1,33 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { Pageable, PageParametersBase } from "./pageable"; + +/** + * The set of parameters that appear in a paginated operation (requestBody or parameters) + */ +export type PageParameterProperties = { + [key: string]: any; +}; + +export type PageParameters = PageParametersBase; + +/** + * The set of properties that appear in a paginated operation's response + */ +export interface PageInfo { + [key: string]: any +} + +export interface PageBase< + Data extends PageInfo, + Parameters extends PageParameters +> extends Pageable {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/page.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/page.ts new file mode 100644 index 000000000..b26273fa4 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/page.ts @@ -0,0 +1,57 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { Pageable, PageParametersBase, PageRequest } from "./pageable"; + +/** + * The set of parameters that appear in a paginated operation (requestBody or parameters) + */ +export type PageParameterProperties = { + [key: string]: any +}; + +export type PageParameters = PageParametersBase; + +/** + * The set of properties that appear in a paginated operation's response + */ +export interface PageInfo { + [key: string]: any +} + +export class Page< + Data extends PageInfo, + Parameters extends PageParameters +> extends Pageable { + make(parameters: { + data: Data; + initialParameters: Parameters; + request: PageRequest; + }): Pageable { + throw new Error("Method not implemented."); + } + + protected get previousParameters(): PageParameterProperties | null { + throw Error("Stub") + } + + protected get nextParameters(): PageParameterProperties | null { + throw Error("Stub") + } + + hasPrevious(): boolean { + throw Error("Stub") + } + + hasNext(): boolean { + throw Error("Stub") + } +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/pageable.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/pageable.ts new file mode 100644 index 000000000..a477d578f --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/pageable.ts @@ -0,0 +1,112 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { AxiosPromise } from "axios"; +import { + PageBase, + PageInfo, + PageParameterProperties, + PageParameters, +} from "./page-types"; + +export type PageParametersBase = Parameters & { + requestBody?: Parameters; +}; +export type PageRequest< + Data extends PageInfo, + Parameters extends PageParameters +> = (parameters: Parameters) => AxiosPromise; + +export abstract class Pageable< + Data extends PageInfo, + Parameters extends PageParameters +> { + readonly data: Data; + protected readonly initialParameters: Parameters; + private readonly _request: PageRequest; + async previous(): Promise> { + if (!this.hasPrevious()) return this; + if (this.previousParameters === null) return this; + const response = await this.makeRequest(this.previousParameters); + return this.withData(response.data); + } + async next(): Promise> { + if (!this.hasNext()) return this; + if (this.nextParameters === null) return this; + const response = await this.makeRequest(this.nextParameters); + return this.withData(response.data); + } + + /** + * Generate minimal set of parameters needed to get the previous page + */ + protected abstract get previousParameters(): PageParameterProperties | null; + + /** + * Generate minimal set of parameters needed to get the next page + */ + protected abstract get nextParameters(): PageParameterProperties | null; + + /** + * Is there a previous page based on PageInfo? + */ + abstract hasPrevious(): boolean; + + /** + * Is there a next page based on PageInfo? + */ + abstract hasNext(): boolean; + + /** + * Helper for invoking a request. Handles request body and parameter based pagination + */ + private makeRequest(parameters: PageParameterProperties): AxiosPromise { + // Handle request body pagination + if (this.initialParameters.requestBody !== undefined) { + return this._request({ + ...this.initialParameters, + requestBody: { ...this.initialParameters.requestBody, ...parameters }, + }); + } + return this._request({ ...this.initialParameters, ...parameters }); + } + + /** + * Helper for creating new page + */ + private withData(data: Data): PageBase { + return this.make({ + data, + initialParameters: this.initialParameters, + request: this._request, + }); + } + + constructor({ + data, + initialParameters, + request, + }: { + data: Data; + initialParameters: Parameters; + request: PageRequest; + }) { + this.data = data; + this._request = request; + this.initialParameters = initialParameters; + } + + abstract make(parameters: { + data: Data; + initialParameters: Parameters; + request: PageRequest; + }): Pageable; +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/paginate.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/paginate.ts new file mode 100644 index 000000000..0b52d224b --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pagination/paginate.ts @@ -0,0 +1,40 @@ +/* +Carbon + +Connect external data to LLMs, no matter the source. + +The version of the OpenAPI document: 1.0.0 + + +NOTE: This file is auto generated by Konfig (https://konfigthis.com). +*/ + +import { PageBase, PageInfo, PageParameters } from "./page-types"; +import { Page } from "./page"; +import { PageRequest } from "./pageable"; + +export const paginate = < + Data extends PageInfo, + Parameters extends PageParameters +>({ + request, + initialParameters, +}: { + request: PageRequest; + initialParameters: Parameters; +}): Promise> => { + return new Promise(async (resolve, reject) => { + try { + const data = await request(initialParameters); + resolve( + new Page({ + data: data.data, + initialParameters, + request: (parameters) => request(parameters), + }) + ); + } catch (error) { + reject(error); + } + }); +}; diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pnpm-lock.yaml b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pnpm-lock.yaml new file mode 100644 index 000000000..eb7812c36 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/pnpm-lock.yaml @@ -0,0 +1,3141 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + semver: ^7.5.2 + '@babel/traverse': ^7.23.2 + +dependencies: + axios: + specifier: 1.6.4 + version: 1.6.4 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + file-type: + specifier: 16.5.4 + version: 16.5.4 + form-data: + specifier: ^4.0.0 + version: 4.0.0 + +devDependencies: + '@jest/types': + specifier: ^29.6.3 + version: 29.6.3 + '@types/jest': + specifier: ^29.2.4 + version: 29.5.12 + '@types/node': + specifier: ^18 + version: 18.19.14 + jest: + specifier: ^29.3.1 + version: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + ts-jest: + specifier: ^29.0.3 + version: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(jest@29.7.0)(typescript@4.9.5) + ts-loader: + specifier: ^9.4.4 + version: 9.5.1(typescript@4.9.5)(webpack@5.90.1) + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@types/node@18.19.14)(typescript@4.9.5) + typescript: + specifier: ^4.0 + version: 4.9.5 + webpack: + specifier: ^5.88.2 + version: 5.90.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack@5.90.1) + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.3 + lru-cache: 5.1.1 + semver: 7.6.0 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0(ts-node@10.9.2): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.19.14 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.22 + '@types/node': 18.19.14 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.9 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.22 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.19.14 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@tokenizer/token@0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: false + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 18.19.14 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/node@18.19.14: + resolution: {integrity: sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.90.1): + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + dependencies: + webpack: 5.90.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.90.1) + dev: true + + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.90.1): + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + dependencies: + webpack: 5.90.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.90.1) + dev: true + + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.90.1): + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + dependencies: + webpack: 5.90.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.90.1) + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /axios@1.6.4: + resolution: {integrity: sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /babel-jest@29.7.0(@babel/core@7.23.9): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.9 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.9) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.5 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.9): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001585 + electron-to-chromium: 1.4.660 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.3) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001585: + resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-jest@29.7.0(@types/node@18.19.14)(ts-node@10.9.2): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /electron-to-chromium@1.4.660: + resolution: {integrity: sha512-1BqvQG0BBQrAA7FVL2EMrb5A1sVyXF3auwJneXjGWa1TpN+g0C4KbUsYWePz6OZ0mXZfXGy+RmQDELJWwE8v/Q==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /envinfo@7.11.1: + resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 6.3.0 + token-types: 4.2.1 + dev: false + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0(@types/node@18.19.14)(ts-node@10.9.2): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@18.19.14)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.9 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + babel-jest: 29.7.0(@babel/core@7.23.9) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.2(@types/node@18.19.14)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.19.14 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/types': 7.23.9 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.19.14 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.19.14 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.19.14 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0(@types/node@18.19.14)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.2 + dev: false + + /rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + dependencies: + resolve: 1.22.8 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terser-webpack-plugin@5.3.10(webpack@5.90.1): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.90.1(webpack-cli@5.1.4) + dev: true + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: false + + /ts-jest@29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(jest@29.7.0)(typescript@4.9.5): + resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} + engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.23.9 + '@jest/types': 29.6.3 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@18.19.14)(ts-node@10.9.2) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.0 + typescript: 4.9.5 + yargs-parser: 21.1.1 + dev: true + + /ts-loader@9.5.1(typescript@4.9.5)(webpack@5.90.1): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.15.0 + micromatch: 4.0.5 + semver: 7.6.0 + source-map: 0.7.4 + typescript: 4.9.5 + webpack: 5.90.1(webpack-cli@5.1.4) + dev: true + + /ts-node@10.9.2(@types/node@18.19.14)(typescript@4.9.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.14 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.3): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.3 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /webpack-cli@5.1.4(webpack@5.90.1): + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.90.1) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.90.1) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.90.1) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.3 + envinfo: 7.11.1 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.90.1(webpack-cli@5.1.4) + webpack-merge: 5.10.0 + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack@5.90.1(webpack-cli@5.1.4): + resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.3 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.90.1) + watchpack: 2.4.0 + webpack-cli: 5.1.4(webpack@5.90.1) + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestAfterHook.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestAfterHook.ts new file mode 100644 index 000000000..6f11a45c6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestAfterHook.ts @@ -0,0 +1,9 @@ +import { RequestArgs } from "./base"; +import { Configuration } from "./configuration"; + +export async function requestAfterHook(request: { + axiosArgs: RequestArgs; + basePath: string; + url: string; + configuration?: Configuration; +}): Promise {} \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestBeforeHook.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestBeforeHook.ts new file mode 100644 index 000000000..1f125f386 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestBeforeHook.ts @@ -0,0 +1,16 @@ +import { Configuration } from "./configuration"; +import { AxiosRequestConfig } from "axios"; + +export function requestBeforeHook({ + requestBody, + queryParameters, + path, + requestConfig, + configuration, +}: { + requestBody?: any; + queryParameters: Record; + path: string; + requestConfig: AxiosRequestConfig; + configuration?: Configuration; +}): void {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestBeforeUrlHook.ts b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestBeforeUrlHook.ts new file mode 100644 index 000000000..69c5e6ad1 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/requestBeforeUrlHook.ts @@ -0,0 +1,8 @@ +import { RequestArgs } from "./base"; +import { Configuration } from "./configuration"; + +export function requestBeforeUrlHook(request: { + axiosArgs: RequestArgs; + basePath: string; + configuration?: Configuration; +}): void {} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/tsconfig.json b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/tsconfig.json new file mode 100644 index 000000000..317003cb6 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "declaration": true, + "target": "ES2015", + "module": "commonjs", + "noImplicitAny": true, + "outDir": "dist", + "rootDir": ".", + "lib": [ + "es2021", + "dom" + ], + "typeRoots": [ + "node_modules/@types" + ] + }, + "exclude": [ + "dist", + "index.test.ts", + "node_modules" + ] +} diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/tsconfig.test.json b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/tsconfig.test.json new file mode 100644 index 000000000..bc078f484 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/tsconfig.test.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": true + } +} \ No newline at end of file diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/webpack.config.js b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/webpack.config.js new file mode 100644 index 000000000..55598f325 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/webpack.config.js @@ -0,0 +1,27 @@ +const path = require("path"); + +module.exports = { + mode: "production", + entry: "./index.ts", + output: { + filename: "browser.js", + path: path.resolve(__dirname, "dist"), + library: "client", + libraryTarget: "umd", + }, + resolve: { + extensions: [".ts", ".js"], + fallback: { + crypto: false, + }, + }, + module: { + rules: [ + { + test: /\.ts$/, + use: "ts-loader", + exclude: /node_modules/, + }, + ], + }, +}; diff --git a/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/yarn.lock b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/yarn.lock new file mode 100644 index 000000000..3a614d3a2 --- /dev/null +++ b/generator/konfig-integration-tests/sdks/typescript-carbon/typescript/yarn.lock @@ -0,0 +1,2947 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.6", "@babel/generator@^7.7.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + +"@babel/traverse@^7.23.2", "@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + dependencies: + "@babel/types" "^7.20.7" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.56.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.2.tgz#1c72a9b794aa26a8b94ad26d5b9aa51c8a6384bb" + integrity sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.2.4": + version "29.5.12" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@*": + version "20.11.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.16.tgz#4411f79411514eb8e2926f036c86c9f0e4ec6708" + integrity sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ== + dependencies: + undici-types "~5.26.4" + +"@types/node@^18": + version "18.19.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.14.tgz#1880ff1b3ac913f3877f711588e5ed227da01886" + integrity sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg== + dependencies: + undici-types "~5.26.4" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-walk@^8.1.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.4.tgz#184ee1f63d412caffcf30d2c50982253c3ee86e0" + integrity sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A== + dependencies: + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.10, browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== + dependencies: + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001580: + version "1.0.30001584" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz#5e3ea0625d048d5467670051687655b1f7bf7dfd" + integrity sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +electron-to-chromium@^1.4.648: + version "1.4.657" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.657.tgz#8a07ee3faa552976970843a80a1c94088ea59c9a" + integrity sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +envinfo@^7.7.3: + version "7.11.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-module-lexer@^1.2.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" + integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +file-type@16.5.4: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.15.4: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.3.1: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +micromatch@^4.0.0, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +semver@^6.3.0, semver@^6.3.1, semver@^7.3.4, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.26.0: + version "5.27.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" + integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +ts-jest@^29.0.3: + version "29.1.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" + integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + +ts-loader@^9.4.4: + version "9.5.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + +ts-node@^10.9.1: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typescript@^4.0: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.88.2: + version "5.90.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.1.tgz#62ab0c097d7cbe83d32523dbfbb645cdb7c3c01c" + integrity sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/generator/konfig-integration-tests/tests/__snapshots__/typescript-carbon.test.ts.snap b/generator/konfig-integration-tests/tests/__snapshots__/typescript-carbon.test.ts.snap new file mode 100644 index 000000000..73b79a9c1 --- /dev/null +++ b/generator/konfig-integration-tests/tests/__snapshots__/typescript-carbon.test.ts.snap @@ -0,0 +1,2189 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`typescript-carbon 1`] = ` +"
+ +[![Visit Carbon](./header.png)](https://carbon.ai) + +# [Carbon](https://carbon.ai) + +Connect external data to LLMs, no matter the source. + +[![npm](https://img.shields.io/badge/npm-v0.1.1-blue)](https://www.npmjs.com/package/carbon-typescript-sdk/v/0.1.1) + +
+ +## Table of Contents + + + +- [Installation](#installation) +- [Getting Started](#getting-started) +- [Reference](#reference) + * [\`carbon.auth.getAccessToken\`](#carbonauthgetaccesstoken) + * [\`carbon.auth.getWhiteLabeling\`](#carbonauthgetwhitelabeling) + * [\`carbon.dataSources.queryUserDataSources\`](#carbondatasourcesqueryuserdatasources) + * [\`carbon.dataSources.revokeAccessToken\`](#carbondatasourcesrevokeaccesstoken) + * [\`carbon.embeddings.getDocuments\`](#carbonembeddingsgetdocuments) + * [\`carbon.embeddings.getEmbeddingsAndChunks\`](#carbonembeddingsgetembeddingsandchunks) + * [\`carbon.embeddings.uploadChunksAndEmbeddings\`](#carbonembeddingsuploadchunksandembeddings) + * [\`carbon.files.createUserFileTags\`](#carbonfilescreateuserfiletags) + * [\`carbon.files.delete\`](#carbonfilesdelete) + * [\`carbon.files.deleteFileTags\`](#carbonfilesdeletefiletags) + * [\`carbon.files.deleteMany\`](#carbonfilesdeletemany) + * [\`carbon.files.getParsedFile\`](#carbonfilesgetparsedfile) + * [\`carbon.files.getRawFile\`](#carbonfilesgetrawfile) + * [\`carbon.files.queryUserFiles\`](#carbonfilesqueryuserfiles) + * [\`carbon.files.queryUserFilesDeprecated\`](#carbonfilesqueryuserfilesdeprecated) + * [\`carbon.files.resync\`](#carbonfilesresync) + * [\`carbon.files.upload\`](#carbonfilesupload) + * [\`carbon.files.uploadFromUrl\`](#carbonfilesuploadfromurl) + * [\`carbon.files.uploadText\`](#carbonfilesuploadtext) + * [\`carbon.health.check\`](#carbonhealthcheck) + * [\`carbon.integrations.connectFreshdesk\`](#carbonintegrationsconnectfreshdesk) + * [\`carbon.integrations.createAwsIamUser\`](#carbonintegrationscreateawsiamuser) + * [\`carbon.integrations.getOauthUrl\`](#carbonintegrationsgetoauthurl) + * [\`carbon.integrations.listConfluencePages\`](#carbonintegrationslistconfluencepages) + * [\`carbon.integrations.listDataSourceItems\`](#carbonintegrationslistdatasourceitems) + * [\`carbon.integrations.syncConfluence\`](#carbonintegrationssyncconfluence) + * [\`carbon.integrations.syncDataSourceItems\`](#carbonintegrationssyncdatasourceitems) + * [\`carbon.integrations.syncFiles\`](#carbonintegrationssyncfiles) + * [\`carbon.integrations.syncGmail\`](#carbonintegrationssyncgmail) + * [\`carbon.integrations.syncOutlook\`](#carbonintegrationssyncoutlook) + * [\`carbon.integrations.syncRssFeed\`](#carbonintegrationssyncrssfeed) + * [\`carbon.integrations.syncS3Files\`](#carbonintegrationssyncs3files) + * [\`carbon.organizations.get\`](#carbonorganizationsget) + * [\`carbon.users.get\`](#carbonusersget) + * [\`carbon.users.toggleUserFeatures\`](#carbonuserstoggleuserfeatures) + * [\`carbon.utilities.fetchUrls\`](#carbonutilitiesfetchurls) + * [\`carbon.utilities.fetchYoutubeTranscripts\`](#carbonutilitiesfetchyoutubetranscripts) + * [\`carbon.utilities.processSitemap\`](#carbonutilitiesprocesssitemap) + * [\`carbon.utilities.scrapeSitemap\`](#carbonutilitiesscrapesitemap) + * [\`carbon.utilities.scrapeWeb\`](#carbonutilitiesscrapeweb) + * [\`carbon.utilities.searchUrls\`](#carbonutilitiessearchurls) + * [\`carbon.webhooks.addUrl\`](#carbonwebhooksaddurl) + * [\`carbon.webhooks.deleteUrl\`](#carbonwebhooksdeleteurl) + * [\`carbon.webhooks.urls\`](#carbonwebhooksurls) + + + +## Installation + + + + + + + + + + + + +
npmpnpmyarn
+ +\`\`\`bash +npm i carbon-typescript-sdk +\`\`\` + + + +\`\`\`bash +pnpm i carbon-typescript-sdk +\`\`\` + + + +\`\`\`bash +yarn add carbon-typescript-sdk +\`\`\` + +
+ +## Getting Started + +\`\`\`typescript +import { Carbon } from \\"carbon-typescript-sdk\\"; + +// Generally this is done in the backend to avoid exposing API key to the client + +const carbonWithApiKey = new Carbon({ + apiKey: \\"API_KEY\\", + customerId: \\"CUSTOMER_ID\\", +}); + +const accessToken = await carbonWithApiKey.auth.getAccessToken(); + +// Once an access token is obtained, it can be passed to the frontend +// and used to instantiate the SDK client without an API key + +const carbon = new Carbon({ + accessToken: accessToken.data.access_token, +}); + +// use SDK as usual +const whiteLabeling = await carbon.auth.getWhiteLabeling(); +// etc. +\`\`\` + +## Reference + + +### \`carbon.auth.getAccessToken\` + +Get Access Token + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getAccessTokenResponse = await carbon.auth.getAccessToken(); +\`\`\` + +#### πŸ”„ Return + +[TokenResponse](./models/token-response.ts) + +#### 🌐 Endpoint + +\`/auth/v1/access_token\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.auth.getWhiteLabeling\` + +Returns whether or not the organization is white labeled and which integrations are white labeled + +:param current_user: the current user +:param db: the database session +:return: a WhiteLabelingResponse + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getWhiteLabelingResponse = await carbon.auth.getWhiteLabeling(); +\`\`\` + +#### πŸ”„ Return + +[WhiteLabelingResponse](./models/white-labeling-response.ts) + +#### 🌐 Endpoint + +\`/auth/v1/white_labeling\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.dataSources.queryUserDataSources\` + +User Data Sources + +#### πŸ› οΈ Usage + +\`\`\`typescript +const queryUserDataSourcesResponse = + await carbon.dataSources.queryUserDataSources({}); +\`\`\` + +#### βš™οΈ Parameters + +##### pagination: [\`EmbeddingsAndChunksQueryInputPagination\`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [\`OrganizationUserDataSourceOrderByColumns\`](./models/organization-user-data-source-order-by-columns.ts) + +##### order_dir: [\`OrderDir\`](./models/order-dir.ts) + +##### filters: [\`OrganizationUserDataSourceQueryInputFilters\`](./models/organization-user-data-source-query-input-filters.ts) + +#### πŸ”„ Return + +[OrganizationUserDataSourceResponse](./models/organization-user-data-source-response.ts) + +#### 🌐 Endpoint + +\`/user_data_sources\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.dataSources.revokeAccessToken\` + +Revoke Access Token + +#### πŸ› οΈ Usage + +\`\`\`typescript +const revokeAccessTokenResponse = await carbon.dataSources.revokeAccessToken({ + data_source_id: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### data_source_id: \`number\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/revoke_access_token\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.embeddings.getDocuments\` + +For pre-filtering documents, using \`tags_v2\` is preferred to using \`tags\` (which is now deprecated). If both \`tags_v2\` +and \`tags\` are specified, \`tags\` is ignored. \`tags_v2\` enables +building complex filters through the use of \\"AND\\", \\"OR\\", and negation logic. Take the below input as an example: +\`\`\`json +{ + \\"OR\\": [ + { + \\"key\\": \\"subject\\", + \\"value\\": \\"holy-bible\\", + \\"negate\\": false + }, + { + \\"key\\": \\"person-of-interest\\", + \\"value\\": \\"jesus christ\\", + \\"negate\\": false + }, + { + \\"key\\": \\"genre\\", + \\"value\\": \\"religion\\", + \\"negate\\": true + } + { + \\"AND\\": [ + { + \\"key\\": \\"subject\\", + \\"value\\": \\"tao-te-ching\\", + \\"negate\\": false + }, + { + \\"key\\": \\"author\\", + \\"value\\": \\"lao-tzu\\", + \\"negate\\": false + } + ] + } + ] +} +\`\`\` +In this case, files will be filtered such that: +1. \\"subject\\" = \\"holy-bible\\" OR +2. \\"person-of-interest\\" = \\"jesus christ\\" OR +3. \\"genre\\" != \\"religion\\" OR +4. \\"subject\\" = \\"tao-te-ching\\" AND \\"author\\" = \\"lao-tzu\\" + +Note that the top level of the query must be either an \\"OR\\" or \\"AND\\" array. Currently, nesting is limited to 3. +For tag blocks (those with \\"key\\", \\"value\\", and \\"negate\\" keys), the following typing rules apply: +1. \\"key\\" isn't optional and must be a \`string\` +2. \\"value\\" isn't optional and can be \`any\` or list[\`any\`] +3. \\"negate\\" is optional and must be \`true\` or \`false\`. If present and \`true\`, then the filter block is negated in +the resulting query. It is \`false\` by default. + + +When querying embeddings, you can optionally specify the \`media_type\` parameter in your request. By default (if +not set), it is equal to \\"TEXT\\". This means that the query will be performed over files that have +been parsed as text (for now, this covers all files except image files). If it is equal to \\"IMAGE\\", +the query will be performed over image files (for now, \`.jpg\` and \`.png\` files). You can think of this +field as an additional filter on top of any filters set in \`file_ids\` and + + +When \`hybrid_search\` is set to true, a combination of keyword search and semantic search are used to rank +and select candidate embeddings during information retrieval. By default, these search methods are weighted +equally during the ranking process. To adjust the weight (or \\"importance\\") of each search method, you can use +the \`hybrid_search_tuning_parameters\` property. The description for the different tuning parameters are: +- \`weight_a\`: weight to assign to semantic search +- \`weight_b\`: weight to assign to keyword search + +You must ensure that \`sum(weight_a, weight_b,..., weight_n)\` for all *n* weights is equal to 1. The equality +has an error tolerance of 0.001 to account for possible floating point issues. + +In order to use hybrid search for a customer across a set of documents, two flags need to be enabled: +1. Use the \`/modify_user_configuration\` endpoint to to enable \`sparse_vectors\` for the customer. The payload +body for this request is below: +\`\`\` +{ + \\"configuration_key_name\\": \\"sparse_vectors\\", + \\"value\\": { + \\"enabled\\": true + } +} +\`\`\` +2. Make sure hybrid search is enabled for the documents across which you want to perform the search. For the +\`/uploadfile\` endpoint, this can be done by setting the following query parameter: \`generate_sparse_vectors=true\` + + +Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's +multimodal model; for text, we support OpenAI's \`text-embedding-ada-002\` and Cohere's embed-multilingual-v3.0. +The model can be specified via the \`embedding_model\` parameter (in the POST body for \`/embeddings\`, and a query +parameter in \`/uploadfile\`). If no model is supplied, the \`text-embedding-ada-002\` is used by default. When performing +embedding queries, embeddings from files that used the specified model will be considered in the query. +For example, if files A and B have embeddings generated with \`OPENAI\`, and files C and D have embeddings generated with +\`COHERE_MULTILINGUAL_V3\`, then by default, queries will only consider files A and B. If \`COHERE_MULTILINGUAL_V3\` is +specified as the \`embedding_model\` in \`/embeddings\`, then only files C and D will be considered. Make sure that +the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** +set \`VERTEX_MULTIMODAL\` as an \`embedding_model\`. This model is used automatically by Carbon when it detects an image file. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getDocumentsResponse = await carbon.embeddings.getDocuments({ + query: \\"query_example\\", + k: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### query: \`string\` + +Query for which to get related chunks and embeddings. + +##### k: \`number\` + +Number of related chunks to return. + +##### tags: Record + +A set of tags to limit the search to. Deprecated and may be removed in the future. + +##### query_vector: \`number\`[] + +Optional query vector for which to get related chunks and embeddings. It must have been generated by the same model used to generate the embeddings across which the search is being conducted. Cannot provide both \`query\` and \`query_vector\`. + +##### file_ids: \`number\`[] + +Optional list of file IDs to limit the search to + +##### parent_file_ids: \`number\`[] + +Optional list of parent file IDs to limit the search to. A parent file describes a file to which another file belongs (e.g. a folder) + +##### tags_v2: \`object\` + +A set of tags to limit the search to. Use this instead of \`tags\`, which is deprecated. + +##### include_tags: \`boolean\` + +Flag to control whether or not to include tags for each chunk in the response. + +##### include_vectors: \`boolean\` + +Flag to control whether or not to include embedding vectors in the response. + +##### include_raw_file: \`boolean\` + +Flag to control whether or not to include a signed URL to the raw file containing each chunk in the response. + +##### hybrid_search: \`boolean\` + +Flag to control whether or not to perform hybrid search. + +##### hybrid_search_tuning_parameters: [\`HybridSearchTuningParamsNullable\`](./models/hybrid-search-tuning-params-nullable.ts) + +##### media_type: [\`FileContentTypesNullable\`](./models/file-content-types-nullable.ts) + +Used to filter the kind of files (e.g. \`TEXT\` or \`IMAGE\`) over which to perform the search. Also plays a role in determining what embedding model is used to embed the query. If \`IMAGE\` is chosen as the media type, then the embedding model used will be an embedding model that is not text-only, *regardless* of what value is passed for \`embedding_model\`. + +##### embedding_model: [\`EmbeddingGeneratorsNullable\`](./models/embedding-generators-nullable.ts) + +#### πŸ”„ Return + +[DocumentResponseList](./models/document-response-list.ts) + +#### 🌐 Endpoint + +\`/embeddings\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.embeddings.getEmbeddingsAndChunks\` + +Retrieve Embeddings And Content + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getEmbeddingsAndChunksResponse = + await carbon.embeddings.getEmbeddingsAndChunks({ + filters: { + user_file_id: 1, + }, + include_vectors: false, + }); +\`\`\` + +#### βš™οΈ Parameters + +##### filters: [\`EmbeddingsAndChunksFilters\`](./models/embeddings-and-chunks-filters.ts) + +##### pagination: [\`EmbeddingsAndChunksQueryInputPagination\`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [\`EmbeddingsAndChunksOrderByColumns\`](./models/embeddings-and-chunks-order-by-columns.ts) + +##### order_dir: [\`OrderDir\`](./models/order-dir.ts) + +##### include_vectors: \`boolean\` + +#### πŸ”„ Return + +[EmbeddingsAndChunksResponse](./models/embeddings-and-chunks-response.ts) + +#### 🌐 Endpoint + +\`/text_chunks\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.embeddings.uploadChunksAndEmbeddings\` + +Upload Chunks And Embeddings + +#### πŸ› οΈ Usage + +\`\`\`typescript +const uploadChunksAndEmbeddingsResponse = + await carbon.embeddings.uploadChunksAndEmbeddings({ + embedding_model: \\"string_example\\", + chunks_and_embeddings: [ + { + file_id: 1, + chunks_and_embeddings: [ + { + chunk_number: 1, + chunk: \\"chunk_example\\", + embedding: [3.14], + }, + ], + }, + ], + overwrite_existing: false, + }); +\`\`\` + +#### βš™οΈ Parameters + +##### embedding_model: [\`EmbeddingGenerators\`](./models/embedding-generators.ts) + +##### chunks_and_embeddings: [\`SingleChunksAndEmbeddingsUploadInput\`](./models/single-chunks-and-embeddings-upload-input.ts)[] + +##### overwrite_existing: \`boolean\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/upload_chunks_and_embeddings\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.createUserFileTags\` + +A tag is a key-value pair that can be added to a file. This pair can then be used +for searches (e.g. embedding searches) in order to narrow down the scope of the search. +A file can have any number of tags. The following are reserved keys that cannot be used: +- db_embedding_id +- organization_id +- user_id +- organization_user_file_id + +Carbon currently supports two data types for tag values - \`string\` and \`list\`. +Keys can only be \`string\`. If values other than \`string\` and \`list\` are used, +they're automatically converted to strings (e.g. 4 will become \\"4\\"). + +#### πŸ› οΈ Usage + +\`\`\`typescript +const createUserFileTagsResponse = await carbon.files.createUserFileTags({ + tags: { + key: \\"string_example\\", + }, + organization_user_file_id: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### tags: Record + +##### organization_user_file_id: \`number\` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/create_user_file_tags\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.delete\` + +Delete File Endpoint + +#### πŸ› οΈ Usage + +\`\`\`typescript +const deleteResponse = await carbon.files.delete({ + fileId: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### fileId: \`number\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/deletefile/{file_id}\` \`DELETE\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.deleteFileTags\` + +Delete File Tags + +#### πŸ› οΈ Usage + +\`\`\`typescript +const deleteFileTagsResponse = await carbon.files.deleteFileTags({ + tags: [\\"tags_example\\"], + organization_user_file_id: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### tags: \`string\`[] + +##### organization_user_file_id: \`number\` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/delete_user_file_tags\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.deleteMany\` + +Delete Files Endpoint + +#### πŸ› οΈ Usage + +\`\`\`typescript +const deleteManyResponse = await carbon.files.deleteMany({ + delete_non_synced_only: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### file_ids: \`number\`[] + +##### sync_statuses: [\`ExternalFileSyncStatuses\`](./models/external-file-sync-statuses.ts)[] + +##### delete_non_synced_only: \`boolean\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/delete_files\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.getParsedFile\` + +This route is deprecated. Use \`/user_files_v2\` instead. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getParsedFileResponse = await carbon.files.getParsedFile({ + fileId: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### fileId: \`number\` + +#### πŸ”„ Return + +[PresignedURLResponse](./models/presigned-urlresponse.ts) + +#### 🌐 Endpoint + +\`/parsed_file/{file_id}\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.getRawFile\` + +This route is deprecated. Use \`/user_files_v2\` instead. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getRawFileResponse = await carbon.files.getRawFile({ + fileId: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### fileId: \`number\` + +#### πŸ”„ Return + +[PresignedURLResponse](./models/presigned-urlresponse.ts) + +#### 🌐 Endpoint + +\`/raw_file/{file_id}\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.queryUserFiles\` + +For pre-filtering documents, using \`tags_v2\` is preferred to using \`tags\` (which is now deprecated). If both \`tags_v2\` +and \`tags\` are specified, \`tags\` is ignored. \`tags_v2\` enables +building complex filters through the use of \\"AND\\", \\"OR\\", and negation logic. Take the below input as an example: +\`\`\`json +{ + \\"OR\\": [ + { + \\"key\\": \\"subject\\", + \\"value\\": \\"holy-bible\\", + \\"negate\\": false + }, + { + \\"key\\": \\"person-of-interest\\", + \\"value\\": \\"jesus christ\\", + \\"negate\\": false + }, + { + \\"key\\": \\"genre\\", + \\"value\\": \\"religion\\", + \\"negate\\": true + } + { + \\"AND\\": [ + { + \\"key\\": \\"subject\\", + \\"value\\": \\"tao-te-ching\\", + \\"negate\\": false + }, + { + \\"key\\": \\"author\\", + \\"value\\": \\"lao-tzu\\", + \\"negate\\": false + } + ] + } + ] +} +\`\`\` +In this case, files will be filtered such that: +1. \\"subject\\" = \\"holy-bible\\" OR +2. \\"person-of-interest\\" = \\"jesus christ\\" OR +3. \\"genre\\" != \\"religion\\" OR +4. \\"subject\\" = \\"tao-te-ching\\" AND \\"author\\" = \\"lao-tzu\\" + +Note that the top level of the query must be either an \\"OR\\" or \\"AND\\" array. Currently, nesting is limited to 3. +For tag blocks (those with \\"key\\", \\"value\\", and \\"negate\\" keys), the following typing rules apply: +1. \\"key\\" isn't optional and must be a \`string\` +2. \\"value\\" isn't optional and can be \`any\` or list[\`any\`] +3. \\"negate\\" is optional and must be \`true\` or \`false\`. If present and \`true\`, then the filter block is negated in +the resulting query. It is \`false\` by default. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const queryUserFilesResponse = await carbon.files.queryUserFiles({}); +\`\`\` + +#### βš™οΈ Parameters + +##### pagination: [\`EmbeddingsAndChunksQueryInputPagination\`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [\`OrganizationUserFilesToSyncOrderByTypes\`](./models/organization-user-files-to-sync-order-by-types.ts) + +##### order_dir: [\`OrderDir\`](./models/order-dir.ts) + +##### filters: [\`OrganizationUserFilesToSyncQueryInputFilters\`](./models/organization-user-files-to-sync-query-input-filters.ts) + +##### include_raw_file: \`boolean\` + +##### include_parsed_text_file: \`boolean\` + +##### include_additional_files: \`boolean\` + +#### πŸ”„ Return + +[UserFilesV2](./models/user-files-v2.ts) + +#### 🌐 Endpoint + +\`/user_files_v2\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.queryUserFilesDeprecated\` + +This route is deprecated. Use \`/user_files_v2\` instead. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const queryUserFilesDeprecatedResponse = + await carbon.files.queryUserFilesDeprecated({}); +\`\`\` + +#### βš™οΈ Parameters + +##### pagination: [\`EmbeddingsAndChunksQueryInputPagination\`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [\`OrganizationUserFilesToSyncOrderByTypes\`](./models/organization-user-files-to-sync-order-by-types.ts) + +##### order_dir: [\`OrderDir\`](./models/order-dir.ts) + +##### filters: [\`OrganizationUserFilesToSyncQueryInputFilters\`](./models/organization-user-files-to-sync-query-input-filters.ts) + +##### include_raw_file: \`boolean\` + +##### include_parsed_text_file: \`boolean\` + +##### include_additional_files: \`boolean\` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/user_files\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.resync\` + +Resync File + +#### πŸ› οΈ Usage + +\`\`\`typescript +const resyncResponse = await carbon.files.resync({ + file_id: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### file_id: \`number\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/resync_file\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.upload\` + +This endpoint is used to directly upload local files to Carbon. The \`POST\` request should be a multipart form request. +Note that the \`set_page_as_boundary\` query parameter is applicable only to PDFs for now. When this value is set, +PDF chunks are at most one page long. Additional information can be retrieved for each chunk, however, namely the coordinates +of the bounding box around the chunk (this can be used for things like text highlighting). Following is a description +of all possible query parameters: +- \`chunk_size\`: the chunk size (in tokens) applied when splitting the document +- \`chunk_overlap\`: the chunk overlap (in tokens) applied when splitting the document +- \`skip_embedding_generation\`: whether or not to skip the generation of chunks and embeddings +- \`set_page_as_boundary\`: described above +- \`embedding_model\`: the model used to generate embeddings for the document chunks +- \`use_ocr\`: whether or not to use OCR as a preprocessing step prior to generating chunks (only valid for PDFs currently) +- \`generate_sparse_vectors\`: whether or not to generate sparse vectors for the file. Required for hybrid search. +- \`prepend_filename_to_chunks\`: whether or not to prepend the filename to the chunk text + + +Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's +multimodal model; for text, we support OpenAI's \`text-embedding-ada-002\` and Cohere's embed-multilingual-v3.0. +The model can be specified via the \`embedding_model\` parameter (in the POST body for \`/embeddings\`, and a query +parameter in \`/uploadfile\`). If no model is supplied, the \`text-embedding-ada-002\` is used by default. When performing +embedding queries, embeddings from files that used the specified model will be considered in the query. +For example, if files A and B have embeddings generated with \`OPENAI\`, and files C and D have embeddings generated with +\`COHERE_MULTILINGUAL_V3\`, then by default, queries will only consider files A and B. If \`COHERE_MULTILINGUAL_V3\` is +specified as the \`embedding_model\` in \`/embeddings\`, then only files C and D will be considered. Make sure that +the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** +set \`VERTEX_MULTIMODAL\` as an \`embedding_model\`. This model is used automatically by Carbon when it detects an image file. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const uploadResponse = await carbon.files.upload({ + skipEmbeddingGeneration: false, + setPageAsBoundary: false, + useOcr: false, + generateSparseVectors: false, + prependFilenameToChunks: false, + file: fs.readFileSync(\\"/path/to/file\\"), +}); +\`\`\` + +#### βš™οΈ Parameters + +##### file: \`Uint8Array | File | buffer.File\` + +##### chunkSize: \`number\` + +Chunk size in tiktoken tokens to be used when processing file. + +##### chunkOverlap: \`number\` + +Chunk overlap in tiktoken tokens to be used when processing file. + +##### skipEmbeddingGeneration: \`boolean\` + +Flag to control whether or not embeddings should be generated and stored when processing file. + +##### setPageAsBoundary: \`boolean\` + +Flag to control whether or not to set the a page\\\\'s worth of content as the maximum amount of content that can appear in a chunk. Only valid for PDFs. See description route description for more information. + +##### embeddingModel: [\`TextEmbeddingGenerators\`](./models/text-embedding-generators.ts) + +Embedding model that will be used to embed file chunks. + +##### useOcr: \`boolean\` + +Whether or not to use OCR when processing files. Only valid for PDFs. Useful for documents with tables, images, and/or scanned text. + +##### generateSparseVectors: \`boolean\` + +Whether or not to generate sparse vectors for the file. This is *required* for the file to be a candidate for hybrid search. + +##### prependFilenameToChunks: \`boolean\` + +Whether or not to prepend the file\\\\'s name to chunks. + +##### maxItemsPerChunk: \`number\` + +Number of objects per chunk. For json files only. + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/uploadfile\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.uploadFromUrl\` + +Create Upload File From Url + +#### πŸ› οΈ Usage + +\`\`\`typescript +const uploadFromUrlResponse = await carbon.files.uploadFromUrl({ + url: \\"url_example\\", + skip_embedding_generation: false, + set_page_as_boundary: false, + generate_sparse_vectors: false, + use_textract: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### url: \`string\` + +##### file_name: \`string\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### set_page_as_boundary: \`boolean\` + +##### embedding_model: [\`EmbeddingGenerators\`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### use_textract: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +##### max_items_per_chunk: \`number\` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/upload_file_from_url\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.files.uploadText\` + +Carbon supports multiple models for use in generating embeddings for files. For images, we support Vertex AI's +multimodal model; for text, we support OpenAI's \`text-embedding-ada-002\` and Cohere's embed-multilingual-v3.0. +The model can be specified via the \`embedding_model\` parameter (in the POST body for \`/embeddings\`, and a query +parameter in \`/uploadfile\`). If no model is supplied, the \`text-embedding-ada-002\` is used by default. When performing +embedding queries, embeddings from files that used the specified model will be considered in the query. +For example, if files A and B have embeddings generated with \`OPENAI\`, and files C and D have embeddings generated with +\`COHERE_MULTILINGUAL_V3\`, then by default, queries will only consider files A and B. If \`COHERE_MULTILINGUAL_V3\` is +specified as the \`embedding_model\` in \`/embeddings\`, then only files C and D will be considered. Make sure that +the set of all files you want considered for a query have embeddings generated via the same model. For now, **do not** +set \`VERTEX_MULTIMODAL\` as an \`embedding_model\`. This model is used automatically by Carbon when it detects an image file. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const uploadTextResponse = await carbon.files.uploadText({ + contents: \\"contents_example\\", + skip_embedding_generation: false, + generate_sparse_vectors: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### contents: \`string\` + +##### name: \`string\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### overwrite_file_id: \`number\` + +##### embedding_model: [\`EmbeddingGeneratorsNullable\`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: \`boolean\` + +#### πŸ”„ Return + +[UserFile](./models/user-file.ts) + +#### 🌐 Endpoint + +\`/upload_text\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.health.check\` + +Health + +#### πŸ› οΈ Usage + +\`\`\`typescript +const checkResponse = await carbon.health.check(); +\`\`\` + +#### 🌐 Endpoint + +\`/health\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.connectFreshdesk\` + +Refer this article to obtain an API key https://support.freshdesk.com/en/support/solutions/articles/215517. +Once you have an API key, you can make a request to this endpoint along with your freshdesk domain. This will +trigger an automatic sync of the articles in your \\"solutions\\" tab. Additional parameters below can be used to associate +data with the synced articles or modify the sync behavior. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const connectFreshdeskResponse = await carbon.integrations.connectFreshdesk({ + domain: \\"domain_example\\", + api_key: \\"api_key_example\\", + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### domain: \`string\` + +##### api_key: \`string\` + +##### tags: \`object\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGeneratorsNullable\`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/freshdesk\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.createAwsIamUser\` + +Create a new IAM user with permissions to: +
    +
  1. List all buckets.
  2. +
  3. Read from the specific buckets and objects to sync with Carbon. Ensure any future buckets or objects carry +the same permissions.
  4. +
+Once created, generate an access key for this user and share the credentials with us. We recommend testing this key beforehand. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const createAwsIamUserResponse = await carbon.integrations.createAwsIamUser({ + access_key: \\"access_key_example\\", + access_key_secret: \\"access_key_secret_example\\", +}); +\`\`\` + +#### βš™οΈ Parameters + +##### access_key: \`string\` + +##### access_key_secret: \`string\` + +#### πŸ”„ Return + +[OrganizationUserDataSourceAPI](./models/organization-user-data-source-api.ts) + +#### 🌐 Endpoint + +\`/integrations/s3\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.getOauthUrl\` + +Get Oauth Url + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getOauthUrlResponse = await carbon.integrations.getOauthUrl({ + service: \\"string_example\\", + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### service: [\`DataSourceType\`](./models/data-source-type.ts) + +##### tags: + +##### scope: \`string\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGeneratorsNullable\`](./models/embedding-generators-nullable.ts) + +##### zendesk_subdomain: \`string\` + +##### microsoft_tenant: \`string\` + +##### sharepoint_site_name: \`string\` + +##### confluence_subdomain: \`string\` + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +##### max_items_per_chunk: \`number\` + +#### 🌐 Endpoint + +\`/integrations/oauth_url\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.listConfluencePages\` + +To begin listing a user's Confluence pages, at least a \`data_source_id\` of a connected +Confluence account must be specified. This base request returns a list of root pages for +every space the user has access to in a Confluence instance. To traverse further down +the user's page directory, additional requests to this endpoint can be made with the same +\`data_source_id\` and with \`parent_id\` set to the id of page from a previous request. For +convenience, the \`has_children\` property in each directory item in the response list will +flag which pages will return non-empty lists of pages when set as the \`parent_id\`. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const listConfluencePagesResponse = + await carbon.integrations.listConfluencePages({ + data_source_id: 1, + }); +\`\`\` + +#### βš™οΈ Parameters + +##### data_source_id: \`number\` + +##### parent_id: \`string\` + +#### πŸ”„ Return + +[ListResponse](./models/list-response.ts) + +#### 🌐 Endpoint + +\`/integrations/confluence/list\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.listDataSourceItems\` + +List Data Source Items + +#### πŸ› οΈ Usage + +\`\`\`typescript +const listDataSourceItemsResponse = + await carbon.integrations.listDataSourceItems({ + data_source_id: 1, + }); +\`\`\` + +#### βš™οΈ Parameters + +##### data_source_id: \`number\` + +##### parent_id: \`string\` + +##### pagination: [\`EmbeddingsAndChunksQueryInputPagination\`](./models/embeddings-and-chunks-query-input-pagination.ts) + +#### πŸ”„ Return + +[ListDataSourceItemsResponse](./models/list-data-source-items-response.ts) + +#### 🌐 Endpoint + +\`/integrations/items/list\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncConfluence\` + +After listing pages in a user's Confluence account, the set of selected page \`ids\` and the +connected account's \`data_source_id\` can be passed into this endpoint to sync them into +Carbon. Additional parameters listed below can be used to associate data to the selected +pages or alter the behavior of the sync. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncConfluenceResponse = await carbon.integrations.syncConfluence({ + data_source_id: 1, + ids: [\\"ids_example\\"], + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### data_source_id: \`number\` + +##### ids: \`string\`[] + +##### tags: \`object\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGeneratorsNullable\`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +##### max_items_per_chunk: \`number\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/confluence/sync\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncDataSourceItems\` + +Sync Data Source Items + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncDataSourceItemsResponse = + await carbon.integrations.syncDataSourceItems({ + data_source_id: 1, + }); +\`\`\` + +#### βš™οΈ Parameters + +##### data_source_id: \`number\` + +#### πŸ”„ Return + +[OrganizationUserDataSourceAPI](./models/organization-user-data-source-api.ts) + +#### 🌐 Endpoint + +\`/integrations/items/sync\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncFiles\` + +Sync Files + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncFilesResponse = await carbon.integrations.syncFiles({ + data_source_id: 1, + ids: [\\"ids_example\\"], + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### data_source_id: \`number\` + +##### ids: \`string\`[] + +##### tags: \`object\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGeneratorsNullable\`](./models/embedding-generators-nullable.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +##### max_items_per_chunk: \`number\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/files/sync\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncGmail\` + +Once you have successfully connected your gmail account, you can choose which emails to sync with us +using the filters parameter. Filters is a JSON object with key value pairs. It also supports AND and OR operations. +For now, we support a limited set of keys listed below. + +label: Inbuilt Gmail labels, for example \\"Important\\" or a custom label you created. +after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. +You can also use them in combination to get emails from a certain period. +is: Can have the following values - starred, important, snoozed, and unread + +Using keys or values outside of the specified values can lead to unexpected behaviour. + +An example of a basic query with filters can be +\`\`\`json +{ + \\"filters\\": { + \\"key\\": \\"label\\", + \\"value\\": \\"Test\\" + } +} +\`\`\` +Which will list all emails that have the label \\"Test\\". + +You can use AND and OR operation in the following way: +\`\`\`json +{ + \\"filters\\": { + \\"AND\\": [ + { + \\"key\\": \\"after\\", + \\"value\\": \\"2024/01/07\\" + }, + { + \\"OR\\": [ + { + \\"key\\": \\"label\\", + \\"value\\": \\"Personal\\" + }, + { + \\"key\\": \\"is\\", + \\"value\\": \\"starred\\" + } + ] + } + ] + } +} +\`\`\` +This will return emails after 7th of Jan that are either starred or have the label \\"Personal\\". +Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter +in the above example. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncGmailResponse = await carbon.integrations.syncGmail({ + filters: {}, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### filters: \`object\` + +##### tags: \`object\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGenerators\`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/gmail/sync\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncOutlook\` + +Once you have successfully connected your Outlook account, you can choose which emails to sync with us +using the filters and folder parameter. \\"folder\\" should be the folder you want to sync from Outlook. By default +we get messages from your inbox folder. +Filters is a JSON object with key value pairs. It also supports AND and OR operations. +For now, we support a limited set of keys listed below. + +category: Custom categories that you created in Outlook. +after or before: A date in YYYY/mm/dd format (example 2023/12/31). Gets emails after/before a certain date. You can also use them in combination to get emails from a certain period. +is: Can have the following values: flagged + +An example of a basic query with filters can be +\`\`\`json +{ + \\"filters\\": { + \\"key\\": \\"category\\", + \\"value\\": \\"Test\\" + } +} +\`\`\` +Which will list all emails that have the category \\"Test\\". + +Specifying a custom folder in the same query +\`\`\`json +{ + \\"folder\\": \\"Folder Name\\", + \\"filters\\": { + \\"key\\": \\"category\\", + \\"value\\": \\"Test\\" + } +} +\`\`\` + +You can use AND and OR operation in the following way: +\`\`\`json +{ + \\"filters\\": { + \\"AND\\": [ + { + \\"key\\": \\"after\\", + \\"value\\": \\"2024/01/07\\" + }, + { + \\"OR\\": [ + { + \\"key\\": \\"category\\", + \\"value\\": \\"Personal\\" + }, + { + \\"key\\": \\"category\\", + \\"value\\": \\"Test\\" + }, + ] + } + ] + } +} +\`\`\` +This will return emails after 7th of Jan that have either Personal or Test as category. +Note that this is the highest level of nesting we support, i.e. you can't add more AND/OR filters within the OR filter +in the above example. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncOutlookResponse = await carbon.integrations.syncOutlook({ + folder: \\"Inbox\\", + filters: {}, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### filters: \`object\` + +##### tags: \`object\` + +##### folder: \`string\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGenerators\`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/outlook/sync\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncRssFeed\` + +Rss Feed + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncRssFeedResponse = await carbon.integrations.syncRssFeed({ + url: \\"url_example\\", + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### url: \`string\` + +##### tags: \`object\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGenerators\`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/rss_feed\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.integrations.syncS3Files\` + +After optionally loading the items via /integrations/items/sync and integrations/items/list, use the bucket name +and object key as the ID in this endpoint to sync them into Carbon. Additional parameters below can associate +data with the selected items or modify the sync behavior + +#### πŸ› οΈ Usage + +\`\`\`typescript +const syncS3FilesResponse = await carbon.integrations.syncS3Files({ + ids: [{}], + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### ids: [\`S3GetFileInput\`](./models/s3-get-file-input.ts)[] + +##### tags: \`object\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### embedding_model: [\`EmbeddingGenerators\`](./models/embedding-generators.ts) + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +##### max_items_per_chunk: \`number\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/integrations/s3/files\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.organizations.get\` + +Get Organization + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getResponse = await carbon.organizations.get(); +\`\`\` + +#### πŸ”„ Return + +[OrganizationResponse](./models/organization-response.ts) + +#### 🌐 Endpoint + +\`/organization\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.users.get\` + +User Endpoint + +#### πŸ› οΈ Usage + +\`\`\`typescript +const getResponse = await carbon.users.get({ + customer_id: \\"customer_id_example\\", +}); +\`\`\` + +#### βš™οΈ Parameters + +##### customer_id: \`string\` + +#### πŸ”„ Return + +[UserResponse](./models/user-response.ts) + +#### 🌐 Endpoint + +\`/user\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.users.toggleUserFeatures\` + +Toggle User Features + +#### πŸ› οΈ Usage + +\`\`\`typescript +const toggleUserFeaturesResponse = await carbon.users.toggleUserFeatures({ + configuration_key_name: \\"configuration_key_name_example\\", + value: {}, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### configuration_key_name: \`string\` + +##### value: \`object\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/modify_user_configuration\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.utilities.fetchUrls\` + +Extracts all URLs from a webpage. + +Args: + url (str): URL of the webpage + +Returns: + FetchURLsResponse: A response object with a list of URLs extracted from the webpage and the webpage content. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const fetchUrlsResponse = await carbon.utilities.fetchUrls({ + url: \\"url_example\\", +}); +\`\`\` + +#### βš™οΈ Parameters + +##### url: \`string\` + +#### πŸ”„ Return + +[FetchURLsResponse](./models/fetch-urls-response.ts) + +#### 🌐 Endpoint + +\`/fetch_urls\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.utilities.fetchYoutubeTranscripts\` + +Fetches english transcripts from YouTube videos. + +Args: + id (str): The ID of the YouTube video. + raw (bool): Whether to return the raw transcript or not. Defaults to False. + +Returns: + dict: A dictionary with the transcript of the YouTube video. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const fetchYoutubeTranscriptsResponse = + await carbon.utilities.fetchYoutubeTranscripts({ + id: \\"id_example\\", + raw: false, + }); +\`\`\` + +#### βš™οΈ Parameters + +##### id: \`string\` + +##### raw: \`boolean\` + +#### πŸ”„ Return + +[YoutubeTranscriptResponse](./models/youtube-transcript-response.ts) + +#### 🌐 Endpoint + +\`/fetch_youtube_transcript\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.utilities.processSitemap\` + +Retrieves all URLs from a sitemap, which can subsequently be utilized with our \`web_scrape\` endpoint. + + + +#### πŸ› οΈ Usage + +\`\`\`typescript +const processSitemapResponse = await carbon.utilities.processSitemap({ + url: \\"url_example\\", +}); +\`\`\` + +#### βš™οΈ Parameters + +##### url: \`string\` + +#### 🌐 Endpoint + +\`/process_sitemap\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.utilities.scrapeSitemap\` + +Extracts all URLs from a sitemap and performs a web scrape on each of them. + +Args: + sitemap_url (str): URL of the sitemap + +Returns: + dict: A response object with the status of the scraping job message.--> + +#### πŸ› οΈ Usage + +\`\`\`typescript +const scrapeSitemapResponse = await carbon.utilities.scrapeSitemap({ + url: \\"url_example\\", + max_pages_to_scrape: 100, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + enable_auto_sync: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, + html_tags_to_skip: [], + css_classes_to_skip: [], + css_selectors_to_skip: [], +}); +\`\`\` + +#### βš™οΈ Parameters + +##### url: \`string\` + +##### tags: Record + +##### max_pages_to_scrape: \`number\` + +##### chunk_size: \`number\` + +##### chunk_overlap: \`number\` + +##### skip_embedding_generation: \`boolean\` + +##### enable_auto_sync: \`boolean\` + +##### generate_sparse_vectors: \`boolean\` + +##### prepend_filename_to_chunks: \`boolean\` + +##### html_tags_to_skip: \`string\`[] + +##### css_classes_to_skip: \`string\`[] + +##### css_selectors_to_skip: \`string\`[] + +#### 🌐 Endpoint + +\`/scrape_sitemap\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.utilities.scrapeWeb\` + +Conduct a web scrape on a given webpage URL. Our web scraper is fully compatible with JavaScript and supports recursion depth, enabling you to efficiently extract all content from the target website. + + + +#### πŸ› οΈ Usage + +\`\`\`typescript +const scrapeWebResponse = await carbon.utilities.scrapeWeb([ + { + url: \\"url_example\\", + recursion_depth: 3, + max_pages_to_scrape: 100, + chunk_size: 1500, + chunk_overlap: 20, + skip_embedding_generation: false, + enable_auto_sync: false, + generate_sparse_vectors: false, + prepend_filename_to_chunks: false, + html_tags_to_skip: [], + css_classes_to_skip: [], + css_selectors_to_skip: [], + }, +]); +\`\`\` + +#### βš™οΈ Request Body + +[\`WebscrapeRequest\`](./models/webscrape-request.ts)[] + +#### 🌐 Endpoint + +\`/web_scrape\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.utilities.searchUrls\` + +Perform a web search and obtain a list of relevant URLs. + +As an illustration, when you perform a search for β€œcontent related to MRNA,” you will receive a list of links such as the following: + + - https://tomrenz.substack.com/p/mrna-and-why-it-matters + + - https://www.statnews.com/2020/11/10/the-story-of-mrna-how-a-once-dismissed-idea-became-a-leading-technology-in-the-covid-vaccine-race/ + + - https://www.statnews.com/2022/11/16/covid-19-vaccines-were-a-success-but-mrna-still-has-a-delivery-problem/ + + - https://joomi.substack.com/p/were-still-being-misled-about-how + +Subsequently, you can submit these links to the web_scrape endpoint in order to retrieve the content of the respective web pages. + +Args: + query (str): Query to search for + +Returns: + FetchURLsResponse: A response object with a list of URLs for a given search query. + +#### πŸ› οΈ Usage + +\`\`\`typescript +const searchUrlsResponse = await carbon.utilities.searchUrls({ + query: \\"query_example\\", +}); +\`\`\` + +#### βš™οΈ Parameters + +##### query: \`string\` + +#### πŸ”„ Return + +[FetchURLsResponse](./models/fetch-urls-response.ts) + +#### 🌐 Endpoint + +\`/search_urls\` \`GET\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.webhooks.addUrl\` + +Add Webhook Url + +#### πŸ› οΈ Usage + +\`\`\`typescript +const addUrlResponse = await carbon.webhooks.addUrl({ + url: \\"url_example\\", +}); +\`\`\` + +#### βš™οΈ Parameters + +##### url: \`string\` + +#### πŸ”„ Return + +[Webhook](./models/webhook.ts) + +#### 🌐 Endpoint + +\`/add_webhook\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.webhooks.deleteUrl\` + +Delete Webhook Url + +#### πŸ› οΈ Usage + +\`\`\`typescript +const deleteUrlResponse = await carbon.webhooks.deleteUrl({ + webhookId: 1, +}); +\`\`\` + +#### βš™οΈ Parameters + +##### webhookId: \`number\` + +#### πŸ”„ Return + +[GenericSuccessResponse](./models/generic-success-response.ts) + +#### 🌐 Endpoint + +\`/delete_webhook/{webhook_id}\` \`DELETE\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +### \`carbon.webhooks.urls\` + +Webhook Urls + +#### πŸ› οΈ Usage + +\`\`\`typescript +const urlsResponse = await carbon.webhooks.urls({}); +\`\`\` + +#### βš™οΈ Parameters + +##### pagination: [\`EmbeddingsAndChunksQueryInputPagination\`](./models/embeddings-and-chunks-query-input-pagination.ts) + +##### order_by: [\`WebhookOrderByColumns\`](./models/webhook-order-by-columns.ts) + +##### order_dir: [\`OrderDir\`](./models/order-dir.ts) + +##### filters: [\`WebhookQueryInputFilters\`](./models/webhook-query-input-filters.ts) + +#### πŸ”„ Return + +[WebhookQueryResponse](./models/webhook-query-response.ts) + +#### 🌐 Endpoint + +\`/webhooks\` \`POST\` + +[πŸ”™ **Back to Table of Contents**](#table-of-contents) + +--- + + +## Author +This TypeScript package is automatically generated by [Konfig](https://konfigthis.com) +" +`; diff --git a/generator/konfig-integration-tests/tests/typescript-carbon.test.ts b/generator/konfig-integration-tests/tests/typescript-carbon.test.ts new file mode 100644 index 000000000..650ff0db9 --- /dev/null +++ b/generator/konfig-integration-tests/tests/typescript-carbon.test.ts @@ -0,0 +1,6 @@ +import { e2e } from "../util"; +import { test } from "vitest"; + +test("typescript-carbon", async () => { + await e2e(4094); +}); \ No newline at end of file