kolenkainc-honohub-graphql
Version:
GraphQL middleware for honohub
2 lines (1 loc) • 4.15 kB
JavaScript
;var r=require("@hono/zod-validator"),e=require("drizzle-graphql"),t=require("graphql"),n=require("zod");function o(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function a(r,e,t,n,o,a,i){try{var u=r[a](i),c=u.value}catch(r){return void t(r)}u.done?e(c):Promise.resolve(c).then(n,o)}function i(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function u(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})))),n.forEach((function(e){i(r,e,t[e])}))}return r}function c(r,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):function(r){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e.push.apply(e,t)}return e}(Object(e)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(e,t))})),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,e){if(!r)return;if("string"==typeof r)return o(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);"Object"===t&&r.constructor&&(t=r.constructor.name);if("Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return o(r,e)}(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,e){var t,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(t)throw new TypeError("Generator is already executing.");for(;i;)try{if(t=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=e.call(r,i)}catch(r){a=[6,r],n=0}finally{t=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}}var s=n.z.object({operationName:n.z.string().optional(),query:n.z.string(),variables:n.z.record(n.z.string(),n.z.any()).optional()}),f={route:"/playground",graphQLEndpoint:"/graphql"};exports.graphQLBodyValidation=s,exports.useGraphQL=function(){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=e.buildSchema(n.config.db).schema;return n.app.post(i,r.zValidator("json",s),(o=function(r){var e,n;return p(this,(function(o){switch(o.label){case 0:return e=r.req.valid("json"),[4,t.graphql({schema:c,source:e.query})];case 1:return n=o.sent(),[2,r.json(n)]}}))},u=function(){var r=this,e=arguments;return new Promise((function(t,n){var i=o.apply(r,e);function u(r){a(i,t,n,u,c,"next",r)}function c(r){a(i,t,n,u,c,"throw",r)}u(void 0)}))},function(r){return u.apply(this,arguments)})),n.app},register:function(r){if(n.playground){var e=u({},f,"boolean"!=typeof n.playground?n.playground:{}),t=e.route,o=e.graphQLEndpoint;return c(u({},r),{routes:l(r.routes).concat([{icon:"CodeBracketSquareIcon",label:"GraphQL Editor",path:t,import:"kolenkainc-honohub-graphql/playground",props:function(r){return{endpoint:null!=o?o:"".concat(r.serverUrl,"/graphql")}}}])})}}}};