@m1212e/rumble 0.4.3 → 0.5.0
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 +15 -10
- package/index.d.ts +15 -10
- 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'),be=require('@pothos/core'),Se=require('@pothos/plugin-drizzle'),Re=require('@pothos/plugin-smart-subscriptions'),graphqlScalars=require('graphql-scalars');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var be__default=/*#__PURE__*/_interopDefault(be);var Se__default=/*#__PURE__*/_interopDefault(Se);var Re__default=/*#__PURE__*/_interopDefault(Re);function
|
2
|
-
`,
|
3
|
-
`)}function ie(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'),be=require('@pothos/core'),Se=require('@pothos/plugin-drizzle'),Re=require('@pothos/plugin-smart-subscriptions'),graphqlScalars=require('graphql-scalars');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var be__default=/*#__PURE__*/_interopDefault(be);var Se__default=/*#__PURE__*/_interopDefault(Se);var Re__default=/*#__PURE__*/_interopDefault(Re);function w(e){return typeof e=="object"&&e!==null}function Q(e,t){throw new Error("Unexpected invariant triggered.")}var oe=/\r\n|[\n\r]/g;function I(e,t){let l=0,p=1;for(let n of e.body.matchAll(oe)){if(typeof n.index=="number"||Q(),n.index>=t)break;l=n.index+n[0].length,p+=1;}return {line:p,column:t+1-l}}function G(e){return q(e.source,I(e.source,e.start))}function q(e,t){let l=e.locationOffset.column-1,p="".padStart(l)+e.body,n=t.line-1,d=e.locationOffset.line-1,i=t.line+d,y=t.line===1?l:0,r=t.column+y,s=`${e.name}:${i}:${r}
|
2
|
+
`,o=p.split(/\r\n|[\n\r]/g),f=o[n];if(f.length>120){let a=Math.floor(r/80),c=r%80,m=[];for(let b=0;b<f.length;b+=80)m.push(f.slice(b,b+80));return s+k([[`${i} |`,m[0]],...m.slice(1,a+1).map(b=>["|",b]),["|","^".padStart(c)],["|",m[a+1]]])}return s+k([[`${i-1} |`,o[n-1]],[`${i} |`,f],["|","^".padStart(r)],[`${i+1} |`,o[n+1]]])}function k(e){let t=e.filter(([p,n])=>n!==void 0),l=Math.max(...t.map(([p])=>p.length));return t.map(([p,n])=>p.padStart(l)+(n?" "+n:"")).join(`
|
3
|
+
`)}function ie(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 B=class e extends Error{constructor(t,...l){var p,n,d;let{nodes:i,source:y,positions:r,path:s,originalError:o,extensions:f}=ie(l);super(t),this.name="GraphQLError",this.path=s??void 0,this.originalError=o??void 0,this.nodes=j(Array.isArray(i)?i:i?[i]:void 0);let a=j((p=this.nodes)===null||p===void 0?void 0:p.map(m=>m.loc).filter(m=>m!=null));this.source=y??(a==null||(n=a[0])===null||n===void 0?void 0:n.source),this.positions=r??a?.map(m=>m.start),this.locations=r&&y?r.map(m=>I(y,m)):a?.map(m=>I(m.source,m.start));let c=w(o?.extensions)?o?.extensions:void 0;this.extensions=(d=f??c)!==null&&d!==void 0?d: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}}),o!=null&&o.stack?Object.defineProperty(this,"stack",{value:o.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
|
-
`+
|
5
|
+
`+G(l.loc));else if(this.source&&this.locations)for(let l of this.locations)t+=`
|
6
6
|
|
7
|
-
`+L(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 G(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 U=(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 j(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 U(e,"Distinct")}function le(e){return typeof e!="function"}function pe(e){return typeof e=="function"&&e.constructor.name!=="AsyncFunction"}var K=({db:e,actions:t})=>{let c=e._.schema,p={},n={},y={},u=a=>{for(let r of t)y[a]||(y[a]={}),y[a][r]||(y[a][r]=[]);return {allow:r=>{let l=n[a];l||(l={},n[a]=l);let i=Array.isArray(r)?r:[r];for(let f of i){let o=l[f];o||(o="wildcard",l[f]=o);}return {when:f=>{for(let o of i)l[o]==="wildcard"&&(l[o]=[]),l[o].push(f);}}},filter:r=>{let l=Array.isArray(r)?r:[r];return {by:i=>{for(let f of l)y[a][f].push(i);}}}}};for(let a of Object.keys(e.query))p[a]=u(a);return {...p,registeredConditions:n,registeredFilters:y,buildWithUserContext:a=>{let r={},l=i=>({filter:(f,o)=>{let b=n[i];b||(b={});let m=b[f];if(m==="wildcard")return {single:{where:o?.inject?.where,columns:o?.inject?.columns},many:{where:o?.inject?.where,columns:o?.inject?.columns,limit:o?.inject?.limit}};let x=()=>{let T=c[i].primaryKey.at(0);if(!T)throw new S(`No primary key found for entity ${i.toString()}`);let N=j(T.getSQLType());return {where:drizzleOrm.and(drizzleOrm.eq(T,N.value1),drizzleOrm.eq(T,N.value2))}};(!b||!m)&&(m=[x()]);let C=m.filter(le),g=m.filter(pe).map(T=>T(a)),s=[...C,...g];s.filter(T=>T!==void 0).length===0&&s.push(x());let d;for(let T of s)T?.limit&&(d===void 0||T.limit>d)&&(d=T.limit);o?.inject?.limit&&d<o.inject.limit&&(d=o.inject.limit);let h;for(let T of [...s,o?.inject??{}])T?.columns&&(h===void 0?h=T.columns:h={...h,...T.columns});let R=s.filter(T=>T?.where).map(T=>T?.where),D=R.length>0?drizzleOrm.or(...R):void 0;return o?.inject?.where&&(D=D?drizzleOrm.and(D,o.inject.where):o.inject.where),{single:{where:D,columns:h},many:{where:D,columns:h,limit:d}}},explicitFilters:f=>y[i][f]});for(let i of Object.keys(e.query))r[i]=l(i);return r}}};var $=({context:e,abilityBuilder:t})=>async c=>{let p=e?await e(c):{};return {...p,abilities:t.buildWithUserContext(p)}};function E(e){return String(e).charAt(0).toUpperCase()+String(e).slice(1)}function v(e){let t=A(e);return t.enumValues!==void 0&&t.enumName!==void 0&&typeof t.enumName=="string"&&Array.isArray(t.enumValues)}function A(e){return e.enum??e}var M=({db:e,schemaBuilder:t})=>{let c=new Map;return ({enumVariableName:n,name:y,enumName:u})=>{let a=e._.fullSchema,r;if(n?r=a[n]:u&&(r=Object.values(a).filter(v).map(A).find(o=>o.enumName===u)),!r)throw new S(`Could not determine enum structure! (${String(n)}, ${enumValuesParam}, ${u})`);let l=y??`${E(casing.toCamelCase(r.enumName.toString()))}Enum`,i=c.get(l);return i||(i=t.enumType(l,{values:r.enumValues}),c.set(l,i),i)}};function F(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 U(e,"SQL to GQL")}var ce="RUMBLE_SUBSCRIPTION_NOTIFICATION",ye="REMOVED",de="UPDATED",fe="CREATED",J=({subscriptions:e,db:t})=>{let c=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:c,makePubSubInstance:({tableName:n})=>{function y({action:u,tableName:a,primaryKeyValue:r}){let l;switch(u){case "created":l=fe;break;case "removed":l=ye;break;case "updated":l=de;break;default:throw new Error(`Unknown action: ${u}`)}return `${ce}/${a}${r?`/${r}`:""}/${l}`}return {registerOnInstance({instance:u,action:a,primaryKeyValue:r}){let l=y({tableName:n.toString(),action:a,primaryKeyValue:r});u.register(l);},created(){let u=y({tableName:n.toString(),action:"created"});return c.publish(u)},removed(u){let a=y({tableName:n.toString(),action:"removed"});return c.publish(a)},updated(u){let r=(Array.isArray(u)?u:[u]).map(i=>y({tableName:n.toString(),action:"updated",primaryKeyValue:i})),l=Array.from(new Set(r));for(let i of l)c.publish(i);}}}}};var Y=({db:e,schemaBuilder:t,makePubSubInstance:c,argImplementer:p,enumImplementer:n,abilityBuilder:y})=>({tableName:u,name:a,readAction:r="read"})=>{let l=e._.schema[u];if(!l)throw new S(`Could not find schema for ${u.toString()} (object)`);let i=l.primaryKey.at(0)?.name;i||console.warn(`Could not find primary key for ${u.toString()}. Cannot register subscriptions!`);let{registerOnInstance:f}=c({tableName:u});return t.drizzleObject(u,{name:a??E(u.toString()),subscribe:(o,b,m)=>{if(!i)return;let x=b[i];if(!x){console.warn(`Could not find primary key value for ${JSON.stringify(b)}. Cannot register subscription!`);return}f({instance:o,action:"updated",primaryKeyValue:x});},applyFilters:y?.registeredFilters?.[u]?.[r],fields:o=>{let b=(C,g,s)=>{let d=F(C);switch(d){case "Int":return o.exposeInt(g,{nullable:s});case "String":return o.exposeString(g,{nullable:s});case "Boolean":return o.exposeBoolean(g,{nullable:s});case "Date":return o.field({type:"Date",resolve:h=>h[g],nullable:s});case "DateTime":return o.field({type:"DateTime",resolve:h=>h[g],nullable:s});case "Float":return o.exposeFloat(g,{nullable:s});case "ID":return o.exposeID(g,{nullable:s});case "JSON":return o.field({type:"JSON",resolve:h=>h[g],nullable:s});default:throw new S(`Unsupported object type ${d} for column ${g}`)}},m=Object.entries(l.columns).reduce((C,[g,s])=>{if(v(s)){let d=A(s),h=n({enumName:d.enumName});C[g]=o.field({type:h,resolve:R=>R[g],nullable:!s.notNull});}else C[g]=b(s.getSQLType(),g,!s.notNull);return C},{}),x=Object.entries(l.relations).reduce((C,[g,s])=>{let {inputType:d,transformArgumentToQueryCondition:h}=p({tableName:s.referencedTableName,nativeTableName:s.referencedTableName}),R=false,T="many";return s instanceof drizzleOrm.One&&(R=!s.isNullable,T="single"),C[g]=o.relation(g,{args:{where:o.arg({type:d,required:false})},nullable:R,query:(N,re)=>re.abilities[s.referencedTableName].filter(r,{inject:{where:h(N.where)}})[T]}),C},{});return {...m,...x}}})};var q=e=>{if(!e)throw new B("Value not found but required (findFirst)");return e},ge=e=>{let t=e.at(0);if(!t)throw new B("Value not found but required (firstEntry)");return t},H=async({filters:e,entities:t,context:c})=>(await Promise.all(e.map(p=>p({context:c,entities:t})))).reduce((p,n)=>(p.push(...n),p),[]);var X=({db:e,schemaBuilder:t,argImplementer:c,makePubSubInstance:p})=>({tableName:n,readAction:y="read",listAction:u="read"})=>{let a=e._.schema[n];if(!a)throw new S(`Could not find schema for ${n.toString()} (query)`);a.primaryKey.at(0)?.name||console.warn(`Could not find primary key for ${n.toString()}. Cannot register subscriptions!`);let{inputType:l,transformArgumentToQueryCondition:i}=c({tableName:n}),{registerOnInstance:f}=p({tableName:n});return t.queryFields(o=>({[`findMany${E(n.toString())}`]:o.drizzleField({type:[n],nullable:false,smartSubscription:true,subscribe:(b,m,x,C,g)=>{f({instance:b,action:"created"}),f({instance:b,action:"removed"});},args:{where:o.arg({type:l,required:false})},resolve:(b,m,x,C,g)=>{let s=C.abilities[n].filter(u,{inject:{where:i(x.where)}}).many,d=b(s);return s.columns&&(d.columns=s.columns),e.query[n].findMany(d)}}),[`findFirst${E(n.toString())}`]:o.drizzleField({type:n,nullable:false,smartSubscription:true,args:{where:o.arg({type:l,required:false})},resolve:(b,m,x,C,g)=>{let s=C.abilities[n].filter(y,{inject:{where:i(x.where)}}).single,d=b(s);return s.columns&&(d.columns=s.columns),e.query[n].findFirst(d).then(q)}})}))};var Z="ManualFiltersPlugin",ee=Z,Te="applyFilters",z=class extends be.BasePlugin{wrapResolve(t,c){return async(p,n,y,u)=>{let a=(c?.type).type?.ref.currentConfig.pothosOptions[Te];if(!a||!Array.isArray(a)||a.length===0)return t(p,n,y,u);let r=await t(p,n,y,u),l=Array.isArray(r)?r:[r],i=Array.isArray(a)?a:[a],f=await H({filters:i,entities:l,context:y});return Array.isArray(r)?f:f[0]??null}}};be__default.default.registerPlugin(Z,z);var te=({db:e,disableDefaultObjects:t,pubsub:c,pothosConfig:p})=>{let n=new be__default.default({plugins:[ee,Se__default.default,Re__default.default,...p?.plugins??[]],...p,drizzle:{client:e},smartSubscriptions:{...Re.subscribeOptionsFromIterator((y,u)=>c.subscribe(y))}});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 Ne=e=>`${E(casing.toCamelCase(e.toString()))}WhereInputArgument`,ne=({db:e,schemaBuilder:t,enumImplementer:c})=>{let p=new Map,n=({tableName:y,name:u,nativeTableName:a})=>{let r=e._.schema[y];if(a){let o=Object.values(e._.schema).find(b=>b.dbName===a);o&&(r=o);}if(!r)throw new S(`Could not find schema for ${y.toString()} (whereArg)`);let l=u??Ne(r.dbName),i=p.get(l);return i||(i={inputType:t.inputType(l,{fields:m=>{let x=s=>{let d=F(s);switch(d){case "Int":return m.int({required:false});case "String":return m.string({required:false});case "Boolean":return m.boolean({required:false});case "Date":return m.field({type:"Date",required:false});case "DateTime":return m.field({type:"DateTime",required:false});case "Float":return m.float({required:false});case "ID":return m.id({required:false});case "JSON":return m.field({type:"JSON",required:false});default:throw new S(`Unsupported argument type ${d} for column ${s}`)}},C=Object.entries(r.columns).reduce((s,[d,h])=>{if(v(h)){let R=A(h),D=c({enumName:R.enumName});s[d]=m.field({type:D,required:false});}else s[d]=x(h.getSQLType());return s},{}),g=Object.entries(r.relations).reduce((s,[d,h])=>{let R=n({tableName:h.referencedTableName,nativeTableName:h.referencedTableName});return s[d]=m.field({type:R.inputType,required:false}),s},{});return {...C,...g}}}),transformArgumentToQueryCondition:m=>{if(!m)return;let x=s=>{let d=r.columns[s],h=m[s];if(h)return drizzleOrm.eq(d,h)},C=s=>{let d=r.relations[s],h=m[s];if(!h)return;let R=n({tableName:d.referencedTableName,nativeTableName:d.referencedTableName}).transformArgumentToQueryCondition;return R(h)},g=[...Object.keys(r.columns).map(x),...Object.keys(r.relations).map(C)];return drizzleOrm.and(...g)}},p.set(l,i),i)};return n};var Fe=e=>{e.actions||(e.actions=["read","update","delete"]);let t=K(e),c=$({...e,abilityBuilder:t}),{makePubSubInstance:p,pubsub:n}=J({...e}),{schemaBuilder:y}=te({...e,pubsub:n}),u=M({...e,schemaBuilder:y}),a=ne({...e,schemaBuilder:y,enumImplementer:u}),r=Y({...e,schemaBuilder:y,makePubSubInstance:p,argImplementer:a,enumImplementer:u,abilityBuilder:t}),l=X({...e,schemaBuilder:y,argImplementer:a,makePubSubInstance:p});return {abilityBuilder:t,schemaBuilder:y,createYoga:f=>graphqlYoga.createYoga({...f,schema:y.toSchema(),context:c}),object:r,arg:a,query:l,pubsub:p,enum_:u}};
|
8
|
-
exports.RumbleError=
|
7
|
+
`+q(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 j(e){return e===void 0||e.length===0?void 0:e}var R=class extends Error{constructor(t){super(t),this.name="RumbleError";}},A=class extends B{};var U=(e,t)=>new R(`RumbleError: Unknown SQL type '${e}'. Please open an issue (https://github.com/m1212e/rumble/issues) so it can be added. (${t})`);function _(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 U(e,"Distinct")}function le(e){return typeof e!="function"}function pe(e){return typeof e=="function"&&e.constructor.name!=="AsyncFunction"}var $=({db:e,actions:t,defaultLimit:l})=>{let p=e._.schema,n={},d={},i={},y=r=>{for(let s of t)i[r]||(i[r]={}),i[r][s]||(i[r][s]=[]);return {allow:s=>{let o=d[r];o||(o={},d[r]=o);let f=Array.isArray(s)?s:[s];for(let a of f){let c=o[a];c||(c="wildcard",o[a]=c);}return {when:a=>{for(let c of f)o[c]==="wildcard"&&(o[c]=[]),o[c].push(a);}}},filter:s=>{let o=Array.isArray(s)?s:[s];return {by:f=>{for(let a of o)i[r][a].push(f);}}}}};for(let r of Object.keys(e.query))n[r]=y(r);return {...n,registeredConditions:d,registeredFilters:i,buildWithUserContext:r=>{let s={},o=f=>({filter:(a,c)=>{let m=d[f];m||(m={});let b=m[a];if(b==="wildcard")return {single:{where:c?.inject?.where,columns:c?.inject?.columns},many:{where:c?.inject?.where,columns:c?.inject?.columns,limit:c?.inject?.limit??l??void 0}};let C=()=>{let T=p[f].primaryKey.at(0);if(!T)throw new R(`No primary key found for entity ${f.toString()}`);let L=_(T.getSQLType());return {where:drizzleOrm.and(drizzleOrm.eq(T,L.value1),drizzleOrm.eq(T,L.value2))}};(!m||!b)&&(b=[C()]);let x=b.filter(le),u=b.filter(pe).map(T=>T(r)),h=[...x,...u];h.filter(T=>T!==void 0).length===0&&h.push(C());let g;for(let T of h)T?.limit&&(g===void 0||T.limit>g)&&(g=T.limit);c?.inject?.limit&&g&&g<c.inject.limit&&(g=c.inject.limit);let S;for(let T of [...h,c?.inject??{}])T?.columns&&(S===void 0?S=T.columns:S={...S,...T.columns});let P=h.filter(T=>T?.where).map(T=>T?.where),E=P.length>0?drizzleOrm.or(...P):void 0;return c?.inject?.where&&(E=E?drizzleOrm.and(E,c.inject.where):c.inject.where),{single:{where:E,columns:S},many:{where:E,columns:S,limit:g??l??void 0}}},explicitFilters:a=>i[f][a]});for(let f of Object.keys(e.query))s[f]=o(f);return s}}};var M=({context:e,abilityBuilder:t})=>async l=>{let p=e?await e(l):{};return {...p,abilities:t.buildWithUserContext(p)}};function D(e){return String(e).charAt(0).toUpperCase()+String(e).slice(1)}function N(e){let t=v(e);return t.enumValues!==void 0&&t.enumName!==void 0&&typeof t.enumName=="string"&&Array.isArray(t.enumValues)}function v(e){return e.enum??e}var W=({db:e,schemaBuilder:t})=>{let l=new Map;return ({enumVariableName:n,name:d,enumName:i})=>{let y=e._.fullSchema,r;if(n?r=y[n]:i&&(r=Object.values(y).filter(N).map(v).find(a=>a.enumName===i)),!r)throw new R(`Could not determine enum structure! (${String(n)}, ${enumValuesParam}, ${i})`);let s=d??`${D(casing.toCamelCase(r.enumName.toString()))}Enum`,o=l.get(s);return o||(o=t.enumType(s,{values:r.enumValues}),l.set(s,o),o)}};function F(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 U(e,"SQL to GQL")}var ce="RUMBLE_SUBSCRIPTION_NOTIFICATION",ye="REMOVED",de="UPDATED",fe="CREATED",Y=({subscriptions:e,db:t})=>{let l=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:l,makePubSubInstance:({tableName:n})=>{function d({action:i,tableName:y,primaryKeyValue:r}){let s;switch(i){case "created":s=fe;break;case "removed":s=ye;break;case "updated":s=de;break;default:throw new Error(`Unknown action: ${i}`)}return `${ce}/${y}${r?`/${r}`:""}/${s}`}return {registerOnInstance({instance:i,action:y,primaryKeyValue:r}){let s=d({tableName:n.toString(),action:y,primaryKeyValue:r});i.register(s);},created(){let i=d({tableName:n.toString(),action:"created"});return l.publish(i)},removed(i){let y=d({tableName:n.toString(),action:"removed"});return l.publish(y)},updated(i){let r=(Array.isArray(i)?i:[i]).map(o=>d({tableName:n.toString(),action:"updated",primaryKeyValue:o})),s=Array.from(new Set(r));for(let o of s)l.publish(o);}}}}};var H=({db:e,schemaBuilder:t,makePubSubInstance:l,argImplementer:p,enumImplementer:n,abilityBuilder:d})=>({tableName:i,name:y,readAction:r="read"})=>{let s=e._.schema[i];if(!s)throw new R(`Could not find schema for ${i.toString()} (object)`);let o=s.primaryKey.at(0)?.name;o||console.warn(`Could not find primary key for ${i.toString()}. Cannot register subscriptions!`);let{registerOnInstance:f}=l({tableName:i});return t.drizzleObject(i,{name:y??D(i.toString()),subscribe:(a,c,m)=>{if(!o)return;let b=c[o];if(!b){console.warn(`Could not find primary key value for ${JSON.stringify(c)}. Cannot register subscription!`);return}f({instance:a,action:"updated",primaryKeyValue:b});},applyFilters:d?.registeredFilters?.[i]?.[r],fields:a=>{let c=(C,x,u)=>{let h=F(C);switch(h){case "Int":return a.exposeInt(x,{nullable:u});case "String":return a.exposeString(x,{nullable:u});case "Boolean":return a.exposeBoolean(x,{nullable:u});case "Date":return a.field({type:"Date",resolve:g=>g[x],nullable:u});case "DateTime":return a.field({type:"DateTime",resolve:g=>g[x],nullable:u});case "Float":return a.exposeFloat(x,{nullable:u});case "ID":return a.exposeID(x,{nullable:u});case "JSON":return a.field({type:"JSON",resolve:g=>g[x],nullable:u});default:throw new R(`Unsupported object type ${h} for column ${x}`)}},m=Object.entries(s.columns).reduce((C,[x,u])=>{if(N(u)){let h=v(u),g=n({enumName:h.enumName});C[x]=a.field({type:g,resolve:S=>S[x],nullable:!u.notNull});}else C[x]=c(u.getSQLType(),x,!u.notNull);return C},{}),b=Object.entries(s.relations).reduce((C,[x,u])=>{let {inputType:h,transformArgumentToQueryCondition:g}=p({tableName:u.referencedTableName,nativeTableName:u.referencedTableName}),S=false,E="many";return u instanceof drizzleOrm.One&&(S=!u.isNullable,E="single"),C[x]=a.relation(x,{args:{where:a.arg({type:h,required:false})},nullable:S,query:(T,L)=>L.abilities[u.referencedTableName].filter(r,{inject:{where:g(T.where)}})[E]}),C},{});return {...m,...b}}})};var z=e=>{if(!e)throw new A("Value not found but required (findFirst)");return e},ge=e=>{let t=e.at(0);if(!t)throw new A("Value not found but required (firstEntry)");return t},X=async({filters:e,entities:t,context:l})=>(await Promise.all(e.map(p=>p({context:l,entities:t})))).reduce((p,n)=>(p.push(...n),p),[]);var Z=({db:e,schemaBuilder:t,argImplementer:l,makePubSubInstance:p})=>({tableName:n,readAction:d="read",listAction:i="read"})=>{let y=e._.schema[n];if(!y)throw new R(`Could not find schema for ${n.toString()} (query)`);y.primaryKey.at(0)?.name||console.warn(`Could not find primary key for ${n.toString()}. Cannot register subscriptions!`);let{inputType:s,transformArgumentToQueryCondition:o}=l({tableName:n}),{registerOnInstance:f}=p({tableName:n});return t.queryFields(a=>({[`findMany${D(n.toString())}`]:a.drizzleField({type:[n],nullable:false,smartSubscription:true,subscribe:(c,m,b,C,x)=>{f({instance:c,action:"created"}),f({instance:c,action:"removed"});},args:{where:a.arg({type:s,required:false})},resolve:(c,m,b,C,x)=>{let u=C.abilities[n].filter(i,{inject:{where:o(b.where)}}).many,h=c(u);return u.columns&&(h.columns=u.columns),e.query[n].findMany(h)}}),[`findFirst${D(n.toString())}`]:a.drizzleField({type:n,nullable:false,smartSubscription:true,args:{where:a.arg({type:s,required:false})},resolve:(c,m,b,C,x)=>{let u=C.abilities[n].filter(d,{inject:{where:o(b.where)}}).single,h=c(u);return u.columns&&(h.columns=u.columns),e.query[n].findFirst(h).then(z)}})}))};var ee="ManualFiltersPlugin",te=ee,Te="applyFilters",O=class extends be.BasePlugin{wrapResolve(t,l){return async(p,n,d,i)=>{let y=(l?.type).type?.ref.currentConfig.pothosOptions[Te];if(!y||!Array.isArray(y)||y.length===0)return t(p,n,d,i);let r=await t(p,n,d,i),s=Array.isArray(r)?r:[r],o=Array.isArray(y)?y:[y],f=await X({filters:o,entities:s,context:d});return Array.isArray(r)?f:f[0]??null}}};be__default.default.registerPlugin(ee,O);var ne=({db:e,disableDefaultObjects:t,pubsub:l,pothosConfig:p})=>{let n=new be__default.default({plugins:[te,Se__default.default,Re__default.default,...p?.plugins??[]],...p,drizzle:{client:e},smartSubscriptions:{...Re.subscribeOptionsFromIterator((d,i)=>l.subscribe(d))}});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 Ne=e=>`${D(casing.toCamelCase(e.toString()))}WhereInputArgument`,re=({db:e,schemaBuilder:t,enumImplementer:l})=>{let p=new Map,n=({tableName:d,name:i,nativeTableName:y})=>{let r=e._.schema[d];if(y){let a=Object.values(e._.schema).find(c=>c.dbName===y);a&&(r=a);}if(!r)throw new R(`Could not find schema for ${d.toString()} (whereArg)`);let s=i??Ne(r.dbName),o=p.get(s);return o||(o={inputType:t.inputType(s,{fields:m=>{let b=u=>{let h=F(u);switch(h){case "Int":return m.int({required:false});case "String":return m.string({required:false});case "Boolean":return m.boolean({required:false});case "Date":return m.field({type:"Date",required:false});case "DateTime":return m.field({type:"DateTime",required:false});case "Float":return m.float({required:false});case "ID":return m.id({required:false});case "JSON":return m.field({type:"JSON",required:false});default:throw new R(`Unsupported argument type ${h} for column ${u}`)}},C=Object.entries(r.columns).reduce((u,[h,g])=>{if(N(g)){let S=v(g),P=l({enumName:S.enumName});u[h]=m.field({type:P,required:false});}else u[h]=b(g.getSQLType());return u},{}),x=Object.entries(r.relations).reduce((u,[h,g])=>{let S=n({tableName:g.referencedTableName,nativeTableName:g.referencedTableName});return u[h]=m.field({type:S.inputType,required:false}),u},{});return {...C,...x}}}),transformArgumentToQueryCondition:m=>{if(!m)return;let b=u=>{let h=r.columns[u],g=m[u];if(g)return drizzleOrm.eq(h,g)},C=u=>{let h=r.relations[u],g=m[u];if(!g)return;let S=n({tableName:h.referencedTableName,nativeTableName:h.referencedTableName}).transformArgumentToQueryCondition;return S(g)},x=[...Object.keys(r.columns).map(b),...Object.keys(r.relations).map(C)];return drizzleOrm.and(...x)}},p.set(s,o),o)};return n};var Ue=e=>{e.actions||(e.actions=["read","update","delete"]),e.defaultLimit===void 0&&(e.defaultLimit=100);let t=$(e),l=M({...e,abilityBuilder:t}),{makePubSubInstance:p,pubsub:n}=Y({...e}),{schemaBuilder:d}=ne({...e,pubsub:n}),i=W({...e,schemaBuilder:d}),y=re({...e,schemaBuilder:d,enumImplementer:i}),r=H({...e,schemaBuilder:d,makePubSubInstance:p,argImplementer:y,enumImplementer:i,abilityBuilder:t}),s=Z({...e,schemaBuilder:d,argImplementer:y,makePubSubInstance:p});return {abilityBuilder:t,schemaBuilder:d,createYoga:f=>graphqlYoga.createYoga({...f,schema:d.toSchema(),context:l}),object:r,arg:y,query:s,pubsub:p,enum_:i}};
|
8
|
+
exports.RumbleError=R;exports.RumbleErrorSafe=A;exports.assertFindFirstExists=z;exports.assertFirstEntryExists=ge;exports.rumble=Ue;//# sourceMappingURL=index.cjs.map
|
9
9
|
//# sourceMappingURL=index.cjs.map
|