UNPKG

kolenkainc-honohub-graphql

Version:

GraphQL middleware for honohub

2 lines (1 loc) 4.15 kB
import{zValidator as r}from"@hono/zod-validator";import{buildSchema as t}from"drizzle-graphql";import{graphql as e}from"graphql";import{z as n}from"zod";function o(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e<t;e++)n[e]=r[e];return n}function a(r,t,e,n,o,a,i){try{var u=r[a](i),c=u.value}catch(r){return void e(r)}u.done?t(c):Promise.resolve(c).then(n,o)}function i(r,t,e){return t in r?Object.defineProperty(r,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[t]=e,r}function u(r){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{},n=Object.keys(e);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(e).filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})))),n.forEach((function(t){i(r,t,e[t])}))}return r}function c(r,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):function(r){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(r);t.push.apply(t,e)}return t}(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))})),r}function l(r){return function(r){if(Array.isArray(r))return o(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(!r)return;if("string"==typeof r)return o(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);"Object"===e&&r.constructor&&(e=r.constructor.name);if("Map"===e||"Set"===e)return Array.from(e);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return o(r,t)}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(r,t){var e,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(a){return function(u){return function(a){if(e)throw new TypeError("Generator is already executing.");for(;i;)try{if(e=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(r,i)}catch(r){a=[6,r],n=0}finally{e=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}}var f=n.object({operationName:n.string().optional(),query:n.string(),variables:n.record(n.string(),n.any()).optional()}),s={route:"/playground",graphQLEndpoint:"/graphql"};function y(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=n.route,i=void 0===o?"/graphql":o;return{name:"honohub-graphql",bootstrap:function(n){var o,u,c=t(n.config.db).schema;return n.app.post(i,r("json",f),(o=function(r){var t,n;return p(this,(function(o){switch(o.label){case 0:return t=r.req.valid("json"),[4,e({schema:c,source:t.query})];case 1:return n=o.sent(),[2,r.json(n)]}}))},u=function(){var r=this,t=arguments;return new Promise((function(e,n){var i=o.apply(r,t);function u(r){a(i,e,n,u,c,"next",r)}function c(r){a(i,e,n,u,c,"throw",r)}u(void 0)}))},function(r){return u.apply(this,arguments)})),n.app},register:function(r){if(n.playground){var t=u({},s,"boolean"!=typeof n.playground?n.playground:{}),e=t.route,o=t.graphQLEndpoint;return c(u({},r),{routes:l(r.routes).concat([{icon:"CodeBracketSquareIcon",label:"GraphQL Editor",path:e,import:"kolenkainc-honohub-graphql/playground",props:function(r){return{endpoint:null!=o?o:"".concat(r.serverUrl,"/graphql")}}}])})}}}}export{f as graphQLBodyValidation,y as useGraphQL};