mydocsai
Version:
A production-ready, responsive AI chatbot component for React applications with streaming support, mobile optimization, and secure API key handling.
5 lines (4 loc) • 11.4 kB
JavaScript
;require("http");var e=require("stream"),r=require("stream/promises"),n=require("node-fetch"),t=require("next/server");function o(e){var r,n,t,o=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,t=Symbol.iterator);o--;){if(n&&null!=(r=e[n]))return r.call(e);if(t&&null!=(r=e[t]))return new a(r.call(e));n="@@asyncIterator",t="@@iterator"}throw new TypeError("Object is not async iterable")}function a(e){function r(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:r}}))}return a=function(e){this.s=e,this.n=e.next},a.prototype={s:null,n:null,next:function(){return r(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):r(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):r(n.apply(this.s,arguments))}},new a(e)}function c(e,r,n,t,o,a,c){try{var i=e[a](c),s=i.value}catch(e){return void n(e)}i.done?r(s):Promise.resolve(s).then(t,o)}function i(e){return function(){var r=this,n=arguments;return new Promise((function(t,o){var a=e.apply(r,n);function i(e){c(a,t,o,i,s,"next",e)}function s(e){c(a,t,o,i,s,"throw",e)}i(void 0)}))}}function s(e,r,n){return(r=function(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,r);if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:r+""}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function u(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function l(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?u(Object(n),!0).forEach((function(r){s(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function d(){
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
var e,r,n="function"==typeof Symbol?Symbol:{},t=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function a(n,t,o,a){var s=t&&t.prototype instanceof i?t:i,u=Object.create(s.prototype);return p(u,"_invoke",function(n,t,o){var a,i,s,u=0,l=o||[],d=!1,p={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(r,n){return a=r,i=0,s=e,p.n=n,c}};function f(n,t){for(i=n,s=t,r=0;!d&&u&&!o&&r<l.length;r++){var o,a=l[r],f=p.p,b=a[2];n>3?(o=b===t)&&(s=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=e):a[0]<=f&&((o=n<2&&f<a[1])?(i=0,p.v=t,p.n=a[1]):f<b&&(o=n<3||a[0]>t||t>b)&&(a[4]=n,a[5]=t,p.n=b,i=0))}if(o||n>1)return c;throw d=!0,t}return function(o,l,b){if(u>1)throw TypeError("Generator is already running");for(d&&1===l&&f(l,b),i=l,s=b;(r=i<2?e:s)||!d;){a||(i?i<3?(i>1&&(p.n=-1),f(i,s)):p.n=s:p.v=s);try{if(u=2,a){if(i||(o="next"),r=a[o]){if(!(r=r.call(a,s)))throw TypeError("iterator result is not an object");if(!r.done)return r;s=r.value,i<2&&(i=0)}else 1===i&&(r=a.return)&&r.call(a),i<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),i=1);a=e}else if((r=(d=p.n<0)?s:n.call(t,p))!==c)break}catch(r){a=e,i=1,s=r}finally{u=1}}return{value:r,done:d}}}(n,o,a),!0),u}var c={};function i(){}function s(){}function u(){}r=Object.getPrototypeOf;var l=[][t]?r(r([][t]())):(p(r={},t,(function(){return this})),r),f=u.prototype=i.prototype=Object.create(l);function b(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,p(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return s.prototype=u,p(f,"constructor",u),p(u,"constructor",s),s.displayName="GeneratorFunction",p(u,o,"GeneratorFunction"),p(f),p(f,o,"Generator"),p(f,t,(function(){return this})),p(f,"toString",(function(){return"[object Generator]"})),(d=function(){return{w:a,m:b}})()}function p(e,r,n,t){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}p=function(e,r,n,t){if(r)o?o(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n;else{function a(r,n){p(e,r,(function(e){return this._invoke(r,n,e)}))}a("next",0),a("throw",1),a("return",2)}},p(e,r,n,t)}var f=function(e){var t=e.docsAiApiKey,a=e.docsAiApiBaseUrl,c=void 0===a?"https://api.mydocsai.tech/sendmessage":a;return t?function(){var e=i(d().m((function e(a,i){var s,u,p,f,b,y,g,h,v,m,S,x,w,D,k,A,O,j;return d().w((function(e){for(;;)switch(e.n){case 0:console.log("SDK (backend-core): Incoming request. Method: ".concat(a.method,", URL: ").concat(a.url)),e.p=1,u=[],p=!1,f=!1,e.p=2,y=o(a);case 3:return e.n=4,y.next();case 4:if(!(p=!(g=e.v).done)){e.n=6;break}h=g.value,u.push(h);case 5:p=!1,e.n=3;break;case 6:e.n=8;break;case 7:e.p=7,A=e.v,f=!0,b=A;case 8:if(e.p=8,e.p=9,!p||null==y.return){e.n=10;break}return e.n=10,y.return();case 10:if(e.p=10,!f){e.n=11;break}throw b;case 11:return e.f(10);case 12:return e.f(8);case 13:v=Buffer.concat(u),m=v.toString("utf8"),console.log("SDK (backend-core): Request body received (length: ".concat(v.length,")")),e.p=14,S=JSON.parse(m),e.n=16;break;case 15:return e.p=15,O=e.v,console.error("SDK (backend-core): Error parsing request body:",O),i.writeHead(400,{"Content-Type":"application/json"}),i.end(JSON.stringify({message:"Invalid JSON in request body"})),e.a(2);case 16:return delete(x=l({"Content-Type":a.headers["content-type"]||"application/json",Authorization:t},a.headers)).host,delete x.connection,delete x["content-length"],delete x["transfer-encoding"],(null===(s=a.headers.accept)||void 0===s?void 0:s.includes("text/event-stream"))&&(x.Accept="text/event-stream",console.log("SDK (backend-core): Client expects event-stream. Setting Accept header.")),console.log("SDK (backend-core): Forwarding request to DocsAI API:",c),console.log("SDK (backend-core): Forwarding headers (partial):",{"Content-Type":x["content-type"],Authorization:x.authorization?"API Key ...":"None",Accept:x.accept}),e.n=17,n(c,{method:a.method,headers:x,body:JSON.stringify(S)});case 17:if(w=e.v,console.log("SDK (backend-core): DocsAI API responded with status: ".concat(w.status)),console.log("SDK (backend-core): DocsAI API response headers (partial):",{"Content-Type":w.headers.get("content-type"),"Transfer-Encoding":w.headers.get("transfer-encoding")}),i.writeHead(w.status,Object.fromEntries(w.headers.entries())),!(D=w.headers.get("content-type"))||!D.includes("text/event-stream")){e.n=19;break}return console.log("SDK (backend-core): Streaming response from DocsAI API. Piping to client."),w.body.pipe(i),e.n=18,r.finished(w.body);case 18:console.log("SDK (backend-core): Streaming finished."),e.n=21;break;case 19:return console.log("SDK (backend-core): Non-streaming response from DocsAI API. Sending as JSON/text."),e.n=20,w.buffer();case 20:k=e.v,i.end(k);case 21:e.n=23;break;case 22:e.p=22,j=e.v,console.error("SDK (backend-core): Error during proxy operation:",j),i.headersSent||i.writeHead(500,{"Content-Type":"application/json"}),i.end(JSON.stringify({message:"Internal proxy error",error:j.message}));case 23:return e.a(2)}}),e,null,[[14,15],[9,,10,12],[2,7,8,13],[1,22]])})));return function(r,n){return e.apply(this,arguments)}}():(console.error("DocsAI SDK Error (backend-core): 'docsAiApiKey' is required but was not provided to createDocsAiProxy."),function(){var e=i(d().m((function e(r,n){return d().w((function(e){for(;;)switch(e.n){case 0:n.writeHead(500,{"Content-Type":"application/json"}),n.end(JSON.stringify({message:"Server configuration error: DocsAI API key not found in SDK setup."}));case 1:return e.a(2)}}),e)})));return function(r,n){return e.apply(this,arguments)}}())};exports.createDocsAiProxy=f,exports.createNextDocsAiProxy=function(r){var n=r.docsAiApiKey,o=r.docsAiApiBaseUrl,a=void 0===o?"https://api.mydocsai.tech/sendmessage":o;if(console.log("SDK (backend-next): createNextDocsAiProxy called during initialization."),!n)return console.error("SDK Error (backend-next): 'docsAiApiKey' is required but was not provided to createNextDocsAiProxy during initialization."),function(){var e=i(d().m((function e(r){return d().w((function(e){for(;;)if(0===e.n)return console.error("SDK (backend-next): Returning 500 status due to missing API key for request to",r.url),e.a(2,t.NextResponse.json({message:"Server configuration error: DocsAI API key not found in SDK setup."},{status:500}))}),e)})));return function(r){return e.apply(this,arguments)}}();var c=f({docsAiApiKey:n,docsAiApiBaseUrl:a});return console.log("SDK (backend-next): Core docsAiProxyHandler created successfully."),function(){var r=i(d().m((function r(n){var o,a,i,s,u,p,f,b,y,g,h,v,m,S,x,w;return d().w((function(r){for(;;)switch(r.n){case 0:return console.log("SDK (backend-next): Incoming request to Next.js proxy handler. Method: ".concat(n.method,", URL: ").concat(n.url)),r.p=1,r.n=2,n.arrayBuffer();case 2:return o=r.v,a=new e.Readable({read:function(){this.push(Buffer.from(o)),this.push(null)}}),Object.assign(a,{method:n.method,headers:Object.fromEntries(n.headers.entries()),url:n.nextUrl.pathname}),console.log("SDK (backend-next): Mock Node.js Request created for core proxy."),i=200,s={},u=[],p=!1,f=null,b=null,g=new Promise((function(e){y=e})),h=new e.Writable({write:function(e,r,n){p&&b?b.enqueue(e):u.push(e),n()},final:function(e){p&&b&&b.close(),e()}}),Object.assign(h,{statusCode:200,setHeader:function(e,r){s[e.toLowerCase()]=r},writeHead:function(e,r){var n;i=e,null!==(n=(s=l(l({},s),r))["content-type"])&&void 0!==n&&n.includes("text/event-stream")&&(p=!0,console.log("SDK (backend-next): Detected streaming response in writeHead. Initializing Web ReadableStream."),f=new ReadableStream({start:function(e){b=e},cancel:function(){console.log("SDK (backend-next): Web ReadableStream cancelled.")}})),y()}}),v=c(a,h),r.n=3,g;case 3:if(console.log("SDK (backend-next): writeHead was called. isStreamingResponse:",p),!p||!f){r.n=4;break}return console.log("SDK (backend-next): Returning NextResponse with Web ReadableStream for streaming."),r.a(2,new t.NextResponse(f,{status:i,headers:s}));case 4:return console.log("SDK (backend-next): Not a streaming response. Awaiting full proxy operation."),r.n=5,v;case 5:return console.log("SDK (backend-next): Full proxy operation completed for non-streaming."),m=Buffer.concat(u).toString("utf8"),r.p=6,S=JSON.parse(m),r.a(2,t.NextResponse.json(S,{status:i,headers:s}));case 7:return r.p=7,x=r.v,console.error("SDK (backend-next): Failed to parse responseBody as JSON. Returning as text."),console.error("SDK (backend-next): JSON parsing error:",x),console.error("SDK (backend-next): Problematic responseBody (full):",m),r.a(2,new t.NextResponse(m,{status:i,headers:s}));case 8:r.n=10;break;case 9:return r.p=9,w=r.v,console.error("SDK (backend-next): Uncaught error in createNextDocsAiProxy handler's try-catch block:",w),r.a(2,t.NextResponse.json({message:"Internal server error in DocsAI proxy.",error:w.message},{status:500}));case 10:return r.a(2)}}),r,null,[[6,7],[1,9]])})));return function(e){return r.apply(this,arguments)}}()};
//# sourceMappingURL=backend.js.map