@m1212e/rumble 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +6 -6
- package/index.cjs.map +1 -1
- package/index.d.cts +2 -5
- package/index.d.ts +2 -5
- package/index.js +6 -6
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.cjs
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
'use strict';var graphqlYoga=require('graphql-yoga'),drizzleOrm=require('drizzle-orm'),casing=require('drizzle-orm/casing'),de=require('@pothos/core'),ye=require('@pothos/plugin-drizzle'),fe=require('@pothos/plugin-smart-subscriptions'),graphqlScalars=require('graphql-scalars');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var de__default=/*#__PURE__*/_interopDefault(de);var ye__default=/*#__PURE__*/_interopDefault(ye);var fe__default=/*#__PURE__*/_interopDefault(fe);function q(e){return typeof e=="object"&&e!==null}function z(e,t){throw new Error("Unexpected invariant triggered.")}var Z=/\r\n|[\n\r]/g;function
|
2
|
-
`,
|
3
|
-
`)}function ee(e){let t=e[0];return t==null||"kind"in t||"length"in t?{nodes:t,source:e[1],positions:e[2],path:e[3],originalError:e[4],extensions:e[5]}:t}var
|
1
|
+
'use strict';var graphqlYoga=require('graphql-yoga'),drizzleOrm=require('drizzle-orm'),casing=require('drizzle-orm/casing'),de=require('@pothos/core'),ye=require('@pothos/plugin-drizzle'),fe=require('@pothos/plugin-smart-subscriptions'),graphqlScalars=require('graphql-scalars');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var de__default=/*#__PURE__*/_interopDefault(de);var ye__default=/*#__PURE__*/_interopDefault(ye);var fe__default=/*#__PURE__*/_interopDefault(fe);function q(e){return typeof e=="object"&&e!==null}function z(e,t){throw new Error("Unexpected invariant triggered.")}var Z=/\r\n|[\n\r]/g;function I(e,t){let l=0,c=1;for(let r of e.body.matchAll(Z)){if(typeof r.index=="number"||z(),r.index>=t)break;l=r.index+r[0].length,c+=1;}return {line:c,column:t+1-l}}function w(e){return U(e.source,I(e.source,e.start))}function U(e,t){let l=e.locationOffset.column-1,c="".padStart(l)+e.body,r=t.line-1,s=e.locationOffset.line-1,i=t.line+s,a=t.line===1?l:0,o=t.column+a,m=`${e.name}:${i}:${o}
|
2
|
+
`,n=c.split(/\r\n|[\n\r]/g),d=n[r];if(d.length>120){let y=Math.floor(o/80),C=o%80,u=[];for(let x=0;x<d.length;x+=80)u.push(d.slice(x,x+80));return m+O([[`${i} |`,u[0]],...u.slice(1,y+1).map(x=>["|",x]),["|","^".padStart(C)],["|",u[y+1]]])}return m+O([[`${i-1} |`,n[r-1]],[`${i} |`,d],["|","^".padStart(o)],[`${i+1} |`,n[r+1]]])}function O(e){let t=e.filter(([c,r])=>r!==void 0),l=Math.max(...t.map(([c])=>c.length));return t.map(([c,r])=>c.padStart(l)+(r?" "+r:"")).join(`
|
3
|
+
`)}function ee(e){let t=e[0];return t==null||"kind"in t||"length"in t?{nodes:t,source:e[1],positions:e[2],path:e[3],originalError:e[4],extensions:e[5]}:t}var E=class e extends Error{constructor(t,...l){var c,r,s;let{nodes:i,source:a,positions:o,path:m,originalError:n,extensions:d}=ee(l);super(t),this.name="GraphQLError",this.path=m??void 0,this.originalError=n??void 0,this.nodes=Q(Array.isArray(i)?i:i?[i]:void 0);let y=Q((c=this.nodes)===null||c===void 0?void 0:c.map(u=>u.loc).filter(u=>u!=null));this.source=a??(y==null||(r=y[0])===null||r===void 0?void 0:r.source),this.positions=o??y?.map(u=>u.start),this.locations=o&&a?o.map(u=>I(a,u)):y?.map(u=>I(u.source,u.start));let C=q(n?.extensions)?n?.extensions:void 0;this.extensions=(s=d??C)!==null&&s!==void 0?s:Object.create(null),Object.defineProperties(this,{message:{writable:true,enumerable:true},name:{enumerable:false},nodes:{enumerable:false},source:{enumerable:false},positions:{enumerable:false},originalError:{enumerable:false}}),n!=null&&n.stack?Object.defineProperty(this,"stack",{value:n.stack,writable:true,configurable:true}):Error.captureStackTrace?Error.captureStackTrace(this,e):Object.defineProperty(this,"stack",{value:Error().stack,writable:true,configurable:true});}get[Symbol.toStringTag](){return "GraphQLError"}toString(){let t=this.message;if(this.nodes)for(let l of this.nodes)l.loc&&(t+=`
|
4
4
|
|
5
|
-
`+w(
|
5
|
+
`+w(l.loc));else if(this.source&&this.locations)for(let l of this.locations)t+=`
|
6
6
|
|
7
|
-
`+U(this.source,c);return t}toJSON(){let t={message:this.message};return this.locations!=null&&(t.locations=this.locations),this.path!=null&&(t.path=this.path),this.extensions!=null&&Object.keys(this.extensions).length>0&&(t.extensions=this.extensions),t}};function Q(e){return e===void 0||e.length===0?void 0:e}var S=class extends Error{constructor(t){super(t),this.name="RumbleError";}},B=class extends P{};var v=(e,t)=>new S(`RumbleError: Unknown SQL type '${e}'. Please open an issue (https://github.com/m1212e/rumble/issues) so it can be added. (${t})`);function k(e){if(["serial","int","integer","tinyint","smallint","mediumint"].includes(e))return {value1:1,value2:2};if(["real","decimal","double","float"].includes(e))return {value1:1.1,value2:2.2};if(["string","text","varchar","char","text(256)"].includes(e))return {value1:"a",value2:"b"};if(["uuid"].includes(e))return {value1:"fba31870-5528-42d7-b27e-2e5ee657aea5",value2:"fc65db81-c2d1-483d-8a25-a30e2cf6e02d"};if(["boolean"].includes(e))return {value1:true,value2:false};if(["timestamp","datetime"].includes(e))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["date"].includes(e))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["json"].includes(e))return {value1:{a:1},value2:{b:2}};throw v(e,"Distinct")}function oe(e){return typeof e!="function"}function ie(e){return typeof e=="function"&&e.constructor.name!=="AsyncFunction"}var G=({db:e})=>{let t=e._.schema,c={},p={},n=a=>({allow:i=>{let u=p[a];u||(u={},p[a]=u);let o=Array.isArray(i)?i:[i];for(let s of o){let r=u[s];r||(r="wildcard",u[s]=r);}return {when:s=>{for(let r of o)u[r]==="wildcard"&&(u[r]=[]),u[r].push(s);}}}});for(let a of Object.keys(e.query))c[a]=n(a);return {...c,registeredConditions:p,buildWithUserContext:a=>{let i={},u=o=>({filter:(s,r)=>{let m=p[o];m||(m={});let f=m[s];if(f==="wildcard")return {single:{where:r?.inject?.where,columns:r?.inject?.columns},many:{where:r?.inject?.where,columns:r?.inject?.columns,limit:r?.inject?.limit}};let T=()=>{let g=t[o].primaryKey.at(0);if(!g)throw new S(`No primary key found for entity ${o.toString()}`);let D=k(g.getSQLType());return {where:drizzleOrm.and(drizzleOrm.eq(g,D.value1),drizzleOrm.eq(g,D.value2))}};(!m||!f)&&(f=[T()]);let l=f.filter(oe),x=f.filter(ie).map(g=>g(a)),h=[...l,...x];h.filter(g=>g!==void 0).length===0&&h.push(T());let y;for(let g of h)g?.limit&&(y===void 0||g.limit>y)&&(y=g.limit);r?.inject?.limit&&y<r.inject.limit&&(y=r.inject.limit);let d;for(let g of [...h,r?.inject??{}])g?.columns&&(d===void 0?d=g.columns:d={...d,...g.columns});let b=h.filter(g=>g?.where).map(g=>g?.where),C=b.length>0?drizzleOrm.or(...b):void 0;return r?.inject?.where&&(C=C?drizzleOrm.and(C,r.inject.where):r.inject.where),{single:{where:C,columns:d},many:{where:C,columns:d,limit:y}}}});for(let o of Object.keys(e.query))i[o]=u(o);return i}}};var _=({context:e,abilityBuilder:t})=>async c=>{let p=e?await e(c):{};return {...p,abilities:t.buildWithUserContext(p)}};function R(e){return String(e).charAt(0).toUpperCase()+String(e).slice(1)}function I(e){let t=E(e);return t.enumValues!==void 0&&t.enumName!==void 0&&typeof t.enumName=="string"&&Array.isArray(t.enumValues)}function E(e){return e.enum??e}var V=({db:e,schemaBuilder:t})=>{let c=new Map;return ({enumVariableName:n,name:a,enumValues:i,enumName:u})=>{let o=e._.fullSchema,s;if(n?s=o[n]:i?s=Object.values(o).filter(I).map(E).find(T=>T.enumValues===i):u&&(s=Object.values(o).filter(I).map(E).find(T=>T.enumName===u)),!s)throw new S(`Could not determine enum structure! (${String(n)}, ${i}, ${u})`);let r=a??`${R(casing.toCamelCase(s.enumName.toString()))}Enum`,m=c.get(r);return m||(m=t.enumType(r,{values:s.enumValues}),c.set(r,m),m)}};function N(e){let t;if(["serial","int","integer","tinyint","smallint","mediumint"].includes(e)&&(t="Int"),["real","decimal","double","float"].includes(e)&&(t="Float"),["string","text","varchar","char","text(256)"].includes(e)&&(t="String"),["uuid"].includes(e)&&(t="ID"),["boolean"].includes(e)&&(t="Boolean"),["timestamp","datetime"].includes(e)&&(t="DateTime"),["date"].includes(e)&&(t="Date"),["json"].includes(e)&&(t="JSON"),t!==void 0)return t;throw v(e,"SQL to GQL")}var ae="RUMBLE_SUBSCRIPTION_NOTIFICATION",ue="REMOVED",me="UPDATED",le="CREATED",$=({subscriptions:e,db:t})=>{let c=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:c,makePubSubInstance:({tableName:n})=>{function a({action:i,tableName:u,primaryKeyValue:o}){let s;switch(i){case "created":s=le;break;case "removed":s=ue;break;case "updated":s=me;break;default:throw new Error(`Unknown action: ${i}`)}return `${ae}/${u}${o?`/${o}`:""}/${s}`}return {registerOnInstance({instance:i,action:u,primaryKeyValue:o}){let s=a({tableName:n.toString(),action:u,primaryKeyValue:o});i.register(s);},created(){let i=a({tableName:n.toString(),action:"created"});return c.publish(i)},removed(i){let u=a({tableName:n.toString(),action:"removed"});return c.publish(u)},updated(i){let o=(Array.isArray(i)?i:[i]).map(r=>a({tableName:n.toString(),action:"updated",primaryKeyValue:r})),s=Array.from(new Set(o));for(let r of s)c.publish(r);}}}}};var M=({db:e,schemaBuilder:t,makePubSubInstance:c,argImplementer:p,enumImplementer:n})=>({tableName:a,name:i,readAction:u="read"})=>{let o=e._.schema[a];if(!o)throw new S(`Could not find schema for ${a.toString()} (object)`);let s=o.primaryKey.at(0)?.name;s||console.warn(`Could not find primary key for ${a.toString()}. Cannot register subscriptions!`);let{registerOnInstance:r}=c({tableName:a});return t.drizzleObject(a,{name:i??R(a.toString()),subscribe:(m,f,T)=>{if(!s)return;let l=f[s];if(!l){console.warn(`Could not find primary key value for ${JSON.stringify(f)}. Cannot register subscription!`);return}r({instance:m,action:"updated",primaryKeyValue:l});},fields:m=>{let f=(x,h,y)=>{let d=N(x);switch(d){case "Int":return m.exposeInt(h,{nullable:y});case "String":return m.exposeString(h,{nullable:y});case "Boolean":return m.exposeBoolean(h,{nullable:y});case "Date":return m.field({type:"Date",resolve:b=>b[h],nullable:y});case "DateTime":return m.field({type:"DateTime",resolve:b=>b[h],nullable:y});case "Float":return m.exposeFloat(h,{nullable:y});case "ID":return m.exposeID(h,{nullable:y});case "JSON":return m.field({type:"JSON",resolve:b=>b[h],nullable:y});default:throw new S(`Unsupported object type ${d} for column ${h}`)}},T=Object.entries(o.columns).reduce((x,[h,y])=>{if(I(y)){let d=E(y),b=n({enumName:d.enumName});x[h]=m.field({type:b,resolve:C=>C[h],nullable:!y.notNull});}else x[h]=f(y.getSQLType(),h,!y.notNull);return x},{}),l=Object.entries(o.relations).reduce((x,[h,y])=>{let {inputType:d,transformArgumentToQueryCondition:b}=p({tableName:y.referencedTableName,nativeTableName:y.referencedTableName}),C=false,D="many";return y instanceof drizzleOrm.One&&(C=!y.isNullable,D="single"),x[h]=m.relation(h,{args:{where:m.arg({type:d,required:false})},nullable:C,query:(H,X)=>X.abilities[y.referencedTableName].filter(u,{inject:{where:b(H.where)}})[D]}),x},{});return {...T,...l}}})};var L=e=>{if(!e)throw new B("Value not found but required (findFirst)");return e},pe=e=>{let t=e.at(0);if(!t)throw new B("Value not found but required (firstEntry)");return t};var W=({db:e,schemaBuilder:t,argImplementer:c,makePubSubInstance:p})=>({tableName:n,readAction:a="read",listAction:i="read"})=>{let u=e._.schema[n];if(!u)throw new S(`Could not find schema for ${n.toString()} (query)`);u.primaryKey.at(0)?.name||console.warn(`Could not find primary key for ${n.toString()}. Cannot register subscriptions!`);let{inputType:s,transformArgumentToQueryCondition:r}=c({tableName:n}),{registerOnInstance:m}=p({tableName:n});return t.queryFields(f=>({[`findMany${R(n.toString())}`]:f.drizzleField({type:[n],nullable:false,smartSubscription:true,subscribe:(T,l,x,h,y)=>{m({instance:T,action:"created"}),m({instance:T,action:"removed"});},args:{where:f.arg({type:s,required:false})},resolve:(T,l,x,h,y)=>{let d=h.abilities[n].filter(i,{inject:{where:r(x.where)}}).many,b=T(d);return d.columns&&(b.columns=d.columns),e.query[n].findMany(b)}}),[`findFirst${R(n.toString())}`]:f.drizzleField({type:n,nullable:false,smartSubscription:true,args:{where:f.arg({type:s,required:false})},resolve:(T,l,x,h,y)=>{let d=h.abilities[n].filter(a,{inject:{where:r(x.where)}}).single,b=T(d);return d.columns&&(b.columns=d.columns),e.query[n].findFirst(b).then(L)}})}))};var J=({db:e,disableDefaultObjects:t,pubsub:c,pothosConfig:p})=>{let n=new de__default.default({plugins:[ye__default.default,fe__default.default,...p?.plugins??[]],...p,drizzle:{client:e},smartSubscriptions:{...fe.subscribeOptionsFromIterator((a,i)=>c.subscribe(a))}});return n.addScalarType("JSON",graphqlScalars.JSONResolver),n.addScalarType("Date",graphqlScalars.DateResolver),n.addScalarType("DateTime",graphqlScalars.DateTimeISOResolver),t?.query||n.queryType({}),t?.subscription||n.subscriptionType({}),t?.mutation||n.mutationType({}),{schemaBuilder:n}};var Re=e=>`${R(casing.toCamelCase(e.toString()))}WhereInputArgument`,Y=({db:e,schemaBuilder:t,enumImplementer:c})=>{let p=new Map,n=({tableName:a,name:i,nativeTableName:u})=>{let o=e._.schema[a];if(u){let f=Object.values(e._.schema).find(T=>T.dbName===u);f&&(o=f);}if(!o)throw new S(`Could not find schema for ${a.toString()} (whereArg)`);let s=i??Re(o.dbName),r=p.get(s);return r||(r={inputType:t.inputType(s,{fields:l=>{let x=d=>{let b=N(d);switch(b){case "Int":return l.int({required:false});case "String":return l.string({required:false});case "Boolean":return l.boolean({required:false});case "Date":return l.field({type:"Date",required:false});case "DateTime":return l.field({type:"DateTime",required:false});case "Float":return l.float({required:false});case "ID":return l.id({required:false});case "JSON":return l.field({type:"JSON",required:false});default:throw new S(`Unsupported argument type ${b} for column ${d}`)}},h=Object.entries(o.columns).reduce((d,[b,C])=>{if(I(C)){let g=E(C),D=c({enumName:g.enumName});d[b]=l.field({type:D,required:false});}else d[b]=x(C.getSQLType());return d},{}),y=Object.entries(o.relations).reduce((d,[b,C])=>{let g=n({tableName:C.referencedTableName,nativeTableName:C.referencedTableName});return d[b]=l.field({type:g.inputType,required:false}),d},{});return {...h,...y}}}),transformArgumentToQueryCondition:l=>{if(!l)return;let x=d=>{let b=o.columns[d],C=l[d];if(C)return drizzleOrm.eq(b,C)},h=d=>{let b=o.relations[d],C=l[d];if(!C)return;let g=n({tableName:b.referencedTableName,nativeTableName:b.referencedTableName}).transformArgumentToQueryCondition;return g(C)},y=[...Object.keys(o.columns).map(x),...Object.keys(o.relations).map(h)];return drizzleOrm.and(...y)}},p.set(s,r),r)};return n};var Ee=e=>{let t=G(e),c=_({...e,abilityBuilder:t}),{makePubSubInstance:p,pubsub:n}=$({...e}),{schemaBuilder:a}=J({...e,pubsub:n}),i=V({...e,schemaBuilder:a}),u=Y({...e,schemaBuilder:a,enumImplementer:i}),o=M({...e,schemaBuilder:a,makePubSubInstance:p,argImplementer:u,enumImplementer:i}),s=W({...e,schemaBuilder:a,argImplementer:u,makePubSubInstance:p});return {abilityBuilder:t,schemaBuilder:a,createYoga:m=>graphqlYoga.createYoga({...m,schema:a.toSchema(),context:c}),object:o,arg:u,query:s,pubsub:p,enum_:i}};
|
8
|
-
exports.RumbleError=S;exports.RumbleErrorSafe=
|
7
|
+
`+U(this.source,l);return t}toJSON(){let t={message:this.message};return this.locations!=null&&(t.locations=this.locations),this.path!=null&&(t.path=this.path),this.extensions!=null&&Object.keys(this.extensions).length>0&&(t.extensions=this.extensions),t}};function Q(e){return e===void 0||e.length===0?void 0:e}var S=class extends Error{constructor(t){super(t),this.name="RumbleError";}},P=class extends E{};var v=(e,t)=>new S(`RumbleError: Unknown SQL type '${e}'. Please open an issue (https://github.com/m1212e/rumble/issues) so it can be added. (${t})`);function k(e){if(["serial","int","integer","tinyint","smallint","mediumint"].includes(e))return {value1:1,value2:2};if(["real","decimal","double","float"].includes(e))return {value1:1.1,value2:2.2};if(["string","text","varchar","char","text(256)"].includes(e))return {value1:"a",value2:"b"};if(["uuid"].includes(e))return {value1:"fba31870-5528-42d7-b27e-2e5ee657aea5",value2:"fc65db81-c2d1-483d-8a25-a30e2cf6e02d"};if(["boolean"].includes(e))return {value1:true,value2:false};if(["timestamp","datetime"].includes(e))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["date"].includes(e))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["json"].includes(e))return {value1:{a:1},value2:{b:2}};throw v(e,"Distinct")}function oe(e){return typeof e!="function"}function ie(e){return typeof e=="function"&&e.constructor.name!=="AsyncFunction"}var j=({db:e})=>{let t=e._.schema,l={},c={},r=s=>({allow:i=>{let a=c[s];a||(a={},c[s]=a);let o=Array.isArray(i)?i:[i];for(let m of o){let n=a[m];n||(n="wildcard",a[m]=n);}return {when:m=>{for(let n of o)a[n]==="wildcard"&&(a[n]=[]),a[n].push(m);}}}});for(let s of Object.keys(e.query))l[s]=r(s);return {...l,registeredConditions:c,buildWithUserContext:s=>{let i={},a=o=>({filter:(m,n)=>{let d=c[o];d||(d={});let y=d[m];if(y==="wildcard")return {single:{where:n?.inject?.where,columns:n?.inject?.columns},many:{where:n?.inject?.where,columns:n?.inject?.columns,limit:n?.inject?.limit}};let C=()=>{let b=t[o].primaryKey.at(0);if(!b)throw new S(`No primary key found for entity ${o.toString()}`);let D=k(b.getSQLType());return {where:drizzleOrm.and(drizzleOrm.eq(b,D.value1),drizzleOrm.eq(b,D.value2))}};(!d||!y)&&(y=[C()]);let u=y.filter(oe),x=y.filter(ie).map(b=>b(s)),h=[...u,...x];h.filter(b=>b!==void 0).length===0&&h.push(C());let f;for(let b of h)b?.limit&&(f===void 0||b.limit>f)&&(f=b.limit);n?.inject?.limit&&f<n.inject.limit&&(f=n.inject.limit);let p;for(let b of [...h,n?.inject??{}])b?.columns&&(p===void 0?p=b.columns:p={...p,...b.columns});let g=h.filter(b=>b?.where).map(b=>b?.where),T=g.length>0?drizzleOrm.or(...g):void 0;return n?.inject?.where&&(T=T?drizzleOrm.and(T,n.inject.where):n.inject.where),{single:{where:T,columns:p},many:{where:T,columns:p,limit:f}}}});for(let o of Object.keys(e.query))i[o]=a(o);return i}}};var _=({context:e,abilityBuilder:t})=>async l=>{let c=e?await e(l):{};return {...c,abilities:t.buildWithUserContext(c)}};function R(e){return String(e).charAt(0).toUpperCase()+String(e).slice(1)}function A(e){let t=B(e);return t.enumValues!==void 0&&t.enumName!==void 0&&typeof t.enumName=="string"&&Array.isArray(t.enumValues)}function B(e){return e.enum??e}var K=({db:e,schemaBuilder:t})=>{let l=new Map;return ({enumVariableName:r,name:s,enumName:i})=>{let a=e._.fullSchema,o;if(r?o=a[r]:i&&(o=Object.values(a).filter(A).map(B).find(y=>y.enumName===i)),!o)throw new S(`Could not determine enum structure! (${String(r)}, ${enumValuesParam}, ${i})`);let m=s??`${R(casing.toCamelCase(o.enumName.toString()))}Enum`,n=l.get(m);return n||(n=t.enumType(m,{values:o.enumValues}),l.set(m,n),n)}};function N(e){let t;if(["serial","int","integer","tinyint","smallint","mediumint"].includes(e)&&(t="Int"),["real","decimal","double","float"].includes(e)&&(t="Float"),["string","text","varchar","char","text(256)"].includes(e)&&(t="String"),["uuid"].includes(e)&&(t="ID"),["boolean"].includes(e)&&(t="Boolean"),["timestamp","datetime"].includes(e)&&(t="DateTime"),["date"].includes(e)&&(t="Date"),["json"].includes(e)&&(t="JSON"),t!==void 0)return t;throw v(e,"SQL to GQL")}var ae="RUMBLE_SUBSCRIPTION_NOTIFICATION",ue="REMOVED",me="UPDATED",le="CREATED",$=({subscriptions:e,db:t})=>{let l=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:l,makePubSubInstance:({tableName:r})=>{function s({action:i,tableName:a,primaryKeyValue:o}){let m;switch(i){case "created":m=le;break;case "removed":m=ue;break;case "updated":m=me;break;default:throw new Error(`Unknown action: ${i}`)}return `${ae}/${a}${o?`/${o}`:""}/${m}`}return {registerOnInstance({instance:i,action:a,primaryKeyValue:o}){let m=s({tableName:r.toString(),action:a,primaryKeyValue:o});i.register(m);},created(){let i=s({tableName:r.toString(),action:"created"});return l.publish(i)},removed(i){let a=s({tableName:r.toString(),action:"removed"});return l.publish(a)},updated(i){let o=(Array.isArray(i)?i:[i]).map(n=>s({tableName:r.toString(),action:"updated",primaryKeyValue:n})),m=Array.from(new Set(o));for(let n of m)l.publish(n);}}}}};var M=({db:e,schemaBuilder:t,makePubSubInstance:l,argImplementer:c,enumImplementer:r})=>({tableName:s,name:i,readAction:a="read"})=>{let o=e._.schema[s];if(!o)throw new S(`Could not find schema for ${s.toString()} (object)`);let m=o.primaryKey.at(0)?.name;m||console.warn(`Could not find primary key for ${s.toString()}. Cannot register subscriptions!`);let{registerOnInstance:n}=l({tableName:s});return t.drizzleObject(s,{name:i??R(s.toString()),subscribe:(d,y,C)=>{if(!m)return;let u=y[m];if(!u){console.warn(`Could not find primary key value for ${JSON.stringify(y)}. Cannot register subscription!`);return}n({instance:d,action:"updated",primaryKeyValue:u});},fields:d=>{let y=(x,h,f)=>{let p=N(x);switch(p){case "Int":return d.exposeInt(h,{nullable:f});case "String":return d.exposeString(h,{nullable:f});case "Boolean":return d.exposeBoolean(h,{nullable:f});case "Date":return d.field({type:"Date",resolve:g=>g[h],nullable:f});case "DateTime":return d.field({type:"DateTime",resolve:g=>g[h],nullable:f});case "Float":return d.exposeFloat(h,{nullable:f});case "ID":return d.exposeID(h,{nullable:f});case "JSON":return d.field({type:"JSON",resolve:g=>g[h],nullable:f});default:throw new S(`Unsupported object type ${p} for column ${h}`)}},C=Object.entries(o.columns).reduce((x,[h,f])=>{if(A(f)){let p=B(f),g=r({enumName:p.enumName});x[h]=d.field({type:g,resolve:T=>T[h],nullable:!f.notNull});}else x[h]=y(f.getSQLType(),h,!f.notNull);return x},{}),u=Object.entries(o.relations).reduce((x,[h,f])=>{let {inputType:p,transformArgumentToQueryCondition:g}=c({tableName:f.referencedTableName,nativeTableName:f.referencedTableName}),T=false,D="many";return f instanceof drizzleOrm.One&&(T=!f.isNullable,D="single"),x[h]=d.relation(h,{args:{where:d.arg({type:p,required:false})},nullable:T,query:(H,X)=>X.abilities[f.referencedTableName].filter(a,{inject:{where:g(H.where)}})[D]}),x},{});return {...C,...u}}})};var L=e=>{if(!e)throw new P("Value not found but required (findFirst)");return e},pe=e=>{let t=e.at(0);if(!t)throw new P("Value not found but required (firstEntry)");return t};var W=({db:e,schemaBuilder:t,argImplementer:l,makePubSubInstance:c})=>({tableName:r,readAction:s="read",listAction:i="read"})=>{let a=e._.schema[r];if(!a)throw new S(`Could not find schema for ${r.toString()} (query)`);a.primaryKey.at(0)?.name||console.warn(`Could not find primary key for ${r.toString()}. Cannot register subscriptions!`);let{inputType:m,transformArgumentToQueryCondition:n}=l({tableName:r}),{registerOnInstance:d}=c({tableName:r});return t.queryFields(y=>({[`findMany${R(r.toString())}`]:y.drizzleField({type:[r],nullable:false,smartSubscription:true,subscribe:(C,u,x,h,f)=>{d({instance:C,action:"created"}),d({instance:C,action:"removed"});},args:{where:y.arg({type:m,required:false})},resolve:(C,u,x,h,f)=>{let p=h.abilities[r].filter(i,{inject:{where:n(x.where)}}).many,g=C(p);return p.columns&&(g.columns=p.columns),e.query[r].findMany(g)}}),[`findFirst${R(r.toString())}`]:y.drizzleField({type:r,nullable:false,smartSubscription:true,args:{where:y.arg({type:m,required:false})},resolve:(C,u,x,h,f)=>{let p=h.abilities[r].filter(s,{inject:{where:n(x.where)}}).single,g=C(p);return p.columns&&(g.columns=p.columns),e.query[r].findFirst(g).then(L)}})}))};var J=({db:e,disableDefaultObjects:t,pubsub:l,pothosConfig:c})=>{let r=new de__default.default({plugins:[ye__default.default,fe__default.default,...c?.plugins??[]],...c,drizzle:{client:e},smartSubscriptions:{...fe.subscribeOptionsFromIterator((s,i)=>l.subscribe(s))}});return r.addScalarType("JSON",graphqlScalars.JSONResolver),r.addScalarType("Date",graphqlScalars.DateResolver),r.addScalarType("DateTime",graphqlScalars.DateTimeISOResolver),t?.query||r.queryType({}),t?.subscription||r.subscriptionType({}),t?.mutation||r.mutationType({}),{schemaBuilder:r}};var Re=e=>`${R(casing.toCamelCase(e.toString()))}WhereInputArgument`,Y=({db:e,schemaBuilder:t,enumImplementer:l})=>{let c=new Map,r=({tableName:s,name:i,nativeTableName:a})=>{let o=e._.schema[s];if(a){let y=Object.values(e._.schema).find(C=>C.dbName===a);y&&(o=y);}if(!o)throw new S(`Could not find schema for ${s.toString()} (whereArg)`);let m=i??Re(o.dbName),n=c.get(m);return n||(n={inputType:t.inputType(m,{fields:u=>{let x=p=>{let g=N(p);switch(g){case "Int":return u.int({required:false});case "String":return u.string({required:false});case "Boolean":return u.boolean({required:false});case "Date":return u.field({type:"Date",required:false});case "DateTime":return u.field({type:"DateTime",required:false});case "Float":return u.float({required:false});case "ID":return u.id({required:false});case "JSON":return u.field({type:"JSON",required:false});default:throw new S(`Unsupported argument type ${g} for column ${p}`)}},h=Object.entries(o.columns).reduce((p,[g,T])=>{if(A(T)){let b=B(T),D=l({enumName:b.enumName});p[g]=u.field({type:D,required:false});}else p[g]=x(T.getSQLType());return p},{}),f=Object.entries(o.relations).reduce((p,[g,T])=>{let b=r({tableName:T.referencedTableName,nativeTableName:T.referencedTableName});return p[g]=u.field({type:b.inputType,required:false}),p},{});return {...h,...f}}}),transformArgumentToQueryCondition:u=>{if(!u)return;let x=p=>{let g=o.columns[p],T=u[p];if(T)return drizzleOrm.eq(g,T)},h=p=>{let g=o.relations[p],T=u[p];if(!T)return;let b=r({tableName:g.referencedTableName,nativeTableName:g.referencedTableName}).transformArgumentToQueryCondition;return b(T)},f=[...Object.keys(o.columns).map(x),...Object.keys(o.relations).map(h)];return drizzleOrm.and(...f)}},c.set(m,n),n)};return r};var Ee=e=>{let t=j(e),l=_({...e,abilityBuilder:t}),{makePubSubInstance:c,pubsub:r}=$({...e}),{schemaBuilder:s}=J({...e,pubsub:r}),i=K({...e,schemaBuilder:s}),a=Y({...e,schemaBuilder:s,enumImplementer:i}),o=M({...e,schemaBuilder:s,makePubSubInstance:c,argImplementer:a,enumImplementer:i}),m=W({...e,schemaBuilder:s,argImplementer:a,makePubSubInstance:c});return {abilityBuilder:t,schemaBuilder:s,createYoga:d=>graphqlYoga.createYoga({...d,schema:s.toSchema(),context:l}),object:o,arg:a,query:m,pubsub:c,enum_:i}};
|
8
|
+
exports.RumbleError=S;exports.RumbleErrorSafe=P;exports.assertFindFirstExists=L;exports.assertFirstEntryExists=pe;exports.rumble=Ee;//# sourceMappingURL=index.cjs.map
|
9
9
|
//# sourceMappingURL=index.cjs.map
|