@m1212e/rumble 0.3.14 → 0.4.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/README.md +2 -2
- package/index.cjs +6 -6
- package/index.cjs.map +1 -1
- package/index.d.cts +47 -17
- package/index.d.ts +47 -17
- package/index.js +6 -6
- package/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -73,7 +73,7 @@ schemaBuilder.queryFields((t) => {
|
|
73
73
|
resolve: (query, root, args, ctx, info) => {
|
74
74
|
return db.query.posts.findMany(
|
75
75
|
// here we apply our filter
|
76
|
-
query(ctx.abilities.posts.filter("read")),
|
76
|
+
query(ctx.abilities.posts.filter("read").many),
|
77
77
|
);
|
78
78
|
},
|
79
79
|
}),
|
@@ -127,7 +127,7 @@ schemaBuilder.queryFields((t) => {
|
|
127
127
|
// here we transform the args into a drizzle filter
|
128
128
|
where: transformArgumentToQueryCondition(args.where),
|
129
129
|
},
|
130
|
-
}),
|
130
|
+
}).many,
|
131
131
|
),
|
132
132
|
);
|
133
133
|
},
|
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'),
|
2
|
-
`,r=o.split(/\r\n|[\n\r]/g),a=r[n];if(a.length>120){let f=Math.floor(s/80),C=s%80,u=[];for(let
|
3
|
-
`)}function
|
1
|
+
'use strict';var graphqlYoga=require('graphql-yoga'),drizzleOrm=require('drizzle-orm'),casing=require('drizzle-orm/casing'),ye=require('@pothos/core'),fe=require('@pothos/plugin-drizzle'),he=require('@pothos/plugin-smart-subscriptions'),graphqlScalars=require('graphql-scalars');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ye__default=/*#__PURE__*/_interopDefault(ye);var fe__default=/*#__PURE__*/_interopDefault(fe);var he__default=/*#__PURE__*/_interopDefault(he);function z(e){return typeof e=="object"&&e!==null}function O(e,t){throw new Error("Unexpected invariant triggered.")}var ee=/\r\n|[\n\r]/g;function v(e,t){let m=0,o=1;for(let n of e.body.matchAll(ee)){if(typeof n.index=="number"||O(),n.index>=t)break;m=n.index+n[0].length,o+=1;}return {line:o,column:t+1-m}}function Q(e){return L(e.source,v(e.source,e.start))}function L(e,t){let m=e.locationOffset.column-1,o="".padStart(m)+e.body,n=t.line-1,i=e.locationOffset.line-1,p=t.line+i,c=t.line===1?m:0,s=t.column+c,y=`${e.name}:${p}:${s}
|
2
|
+
`,r=o.split(/\r\n|[\n\r]/g),a=r[n];if(a.length>120){let f=Math.floor(s/80),C=s%80,u=[];for(let x=0;x<a.length;x+=80)u.push(a.slice(x,x+80));return y+w([[`${p} |`,u[0]],...u.slice(1,f+1).map(x=>["|",x]),["|","^".padStart(C)],["|",u[f+1]]])}return y+w([[`${p-1} |`,r[n-1]],[`${p} |`,a],["|","^".padStart(s)],[`${p+1} |`,r[n+1]]])}function w(e){let t=e.filter(([o,n])=>n!==void 0),m=Math.max(...t.map(([o])=>o.length));return t.map(([o,n])=>o.padStart(m)+(n?" "+n:"")).join(`
|
3
|
+
`)}function te(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,...m){var o,n,i;let{nodes:p,source:c,positions:s,path:y,originalError:r,extensions:a}=te(m);super(t),this.name="GraphQLError",this.path=y??void 0,this.originalError=r??void 0,this.nodes=k(Array.isArray(p)?p:p?[p]:void 0);let f=k((o=this.nodes)===null||o===void 0?void 0:o.map(u=>u.loc).filter(u=>u!=null));this.source=c??(f==null||(n=f[0])===null||n===void 0?void 0:n.source),this.positions=s??f?.map(u=>u.start),this.locations=s&&c?s.map(u=>v(c,u)):f?.map(u=>v(u.source,u.start));let C=z(r?.extensions)?r?.extensions:void 0;this.extensions=(i=a??C)!==null&&i!==void 0?i: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}}),r!=null&&r.stack?Object.defineProperty(this,"stack",{value:r.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 m of this.nodes)m.loc&&(t+=`
|
4
4
|
|
5
|
-
`+
|
5
|
+
`+Q(m.loc));else if(this.source&&this.locations)for(let m of this.locations)t+=`
|
6
6
|
|
7
|
-
`+L(this.source,m);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 F(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 B{};var A=(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 A(e,"Distinct")}function oe(e){return typeof e!="function"}function ie(e){return typeof e=="function"&&e.constructor.name!=="AsyncFunction"}var V=({db:e})=>{let t=e._.schema,m={},o={},n=i=>({allow:p=>{let l=o[i];l||(l={},o[i]=l);let s=Array.isArray(p)?p:[p];for(let y of s){let r=l[y];r||(r="wildcard",l[y]=r);}return {when:y=>{for(let r of s)l[r]==="wildcard"&&(l[r]=[]),l[r].push(y);}}}});for(let i of Object.keys(e.query))m[i]=n(i);return {...m,registeredConditions:o,buildWithUserContext:i=>{let p={},l=s=>({filter:(y,r)=>{let a=o[s];a||(a={});let f=a[y];if(f==="wildcard")return {where:r?.inject?.where,columns:r?.inject?.columns,limit:r?.inject?.limit};let C=()=>{let x=t[s].primaryKey.at(0);if(!x)throw new S(`No primary key found for entity ${s.toString()}`);let z=j(x.getSQLType());return {where:drizzleOrm.and(drizzleOrm.eq(x,z.value1),drizzleOrm.eq(x,z.value2))}};(!a||!f)&&(f=[C()]);let u=f.filter(oe),g=f.filter(ie).map(x=>x(i)),h=[...u,...g];h.filter(x=>x!==void 0).length===0&&h.push(C());let d;for(let x of h)x?.limit&&(d===void 0||x.limit>d)&&(d=x.limit);r?.inject?.limit&&d<r.inject.limit&&(d=r.inject.limit);let c;for(let x of [...h,r?.inject??{}])x?.columns&&(c===void 0?c=x.columns:c={...c,...x.columns});let b=h.filter(x=>x?.where).map(x=>x?.where),T=b.length>0?drizzleOrm.or(...b):void 0;return r?.inject?.where&&(T=T?drizzleOrm.and(T,r.inject.where):r.inject.where),{where:T,columns:c,limit:d}}});for(let s of Object.keys(e.query))p[s]=l(s);return p}}};var $=({context:e,abilityBuilder:t})=>async m=>{let o=e?await e(m):{};return {...o,abilities:t.buildWithUserContext(o)}};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 K=({db:e,schemaBuilder:t})=>{let m=new Map;return ({enumVariableName:n,name:i,enumValues:p,enumName:l})=>{let s=e._.fullSchema,y;if(n?y=s[n]:p?y=Object.values(s).filter(I).map(E).find(C=>C.enumValues===p):l&&(y=Object.values(s).filter(I).map(E).find(C=>C.enumName===l)),!y)throw new S(`Could not determine enum structure! (${String(n)}, ${p}, ${l})`);let r=i??`${R(casing.toCamelCase(y.enumName.toString()))}Enum`,a=m.get(r);return a||(a=t.enumType(r,{values:y.enumValues}),m.set(r,a),a)}};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 A(e,"SQL to GQL")}var ae="RUMBLE_SUBSCRIPTION_NOTIFICATION",ue="REMOVED",me="UPDATED",le="CREATED";function U({action:e,tableName:t,primaryKeyValue:m}){let o;switch(e){case "created":o=le;break;case "removed":o=ue;break;case "updated":o=me;break;default:throw new Error(`Unknown action: ${e}`)}return `${ae}/${t}${m?`/${m}`:""}/${o}`}var W=({subscriptions:e})=>{let t=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:t,makePubSubInstance:({tableName:o})=>({registerOnInstance({instance:n,action:i,primaryKeyValue:p}){let l=U({tableName:o.toString(),action:i,primaryKeyValue:p});n.register(l);},created(){let n=U({tableName:o.toString(),action:"created"});return t.publish(n)},removed(n){let i=U({tableName:o.toString(),action:"removed"});return t.publish(i)},updated(n){let i=U({tableName:o.toString(),action:"updated",primaryKeyValue:n});return t.publish(i)}})}};var J=({db:e,schemaBuilder:t,makePubSubInstance:m,argImplementer:o,enumImplementer:n})=>({tableName:i,name:p,readAction:l="read"})=>{let s=e._.schema[i];if(!s)throw new S(`Could not find schema for ${i.toString()} (object)`);let y=s.primaryKey.at(0)?.name;y||console.warn(`Could not find primary key for ${i.toString()}. Cannot register subscriptions!`);let{registerOnInstance:r}=m({tableName:i});return t.drizzleObject(i,{name:p??R(i.toString()),subscribe:(a,f,C)=>{if(!y)return;let u=f[y];if(!u){console.warn(`Could not find primary key value for ${JSON.stringify(f)}. Cannot register subscription!`);return}r({instance:a,action:"updated",primaryKeyValue:u});},fields:a=>{let f=(g,h,d)=>{let c=N(g);switch(c){case "Int":return a.exposeInt(h,{nullable:d});case "String":return a.exposeString(h,{nullable:d});case "Boolean":return a.exposeBoolean(h,{nullable:d});case "Date":return a.field({type:"Date",resolve:b=>b[h],nullable:d});case "DateTime":return a.field({type:"DateTime",resolve:b=>b[h],nullable:d});case "Float":return a.exposeFloat(h,{nullable:d});case "ID":return a.exposeID(h,{nullable:d});case "JSON":return a.field({type:"JSON",resolve:b=>b[h],nullable:d});default:throw new S(`Unsupported object type ${c} for column ${h}`)}},C=Object.entries(s.columns).reduce((g,[h,d])=>{if(I(d)){let c=E(d),b=n({enumName:c.enumName});g[h]=a.field({type:b,resolve:T=>T[h],nullable:!d.notNull});}else g[h]=f(d.getSQLType(),h,!d.notNull);return g},{}),u=Object.entries(s.relations).reduce((g,[h,d])=>{let{inputType:c,transformArgumentToQueryCondition:b}=o({tableName:d.referencedTableName,nativeTableName:d.referencedTableName}),T=false;return d instanceof drizzleOrm.One&&(T=!d.isNullable),g[h]=a.relation(h,{args:{where:a.arg({type:c,required:false})},nullable:T,query:(D,x)=>x.abilities[d.referencedTableName].filter(l,{inject:{where:b(D.where)}})}),g},{});return {...C,...u}}})};var q=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 Y=({db:e,schemaBuilder:t,argImplementer:m,makePubSubInstance:o})=>({tableName:n,readAction:i="read",listAction:p="read"})=>{let l=e._.schema[n];if(!l)throw new S(`Could not find schema for ${n.toString()} (query)`);l.primaryKey.at(0)?.name||console.warn(`Could not find primary key for ${n.toString()}. Cannot register subscriptions!`);let{inputType:y,transformArgumentToQueryCondition:r}=m({tableName:n}),{registerOnInstance:a}=o({tableName:n});return t.queryFields(f=>({[`findMany${R(n.toString())}`]:f.drizzleField({type:[n],nullable:false,smartSubscription:true,subscribe:(C,u,g,h,d)=>{a({instance:C,action:"created"}),a({instance:C,action:"removed"});},args:{where:f.arg({type:y,required:false})},resolve:(C,u,g,h,d)=>{let c=h.abilities[n].filter(p,{inject:{where:r(g.where)}}),b=C(c);return c.columns&&(b.columns=c.columns),e.query[n].findMany(b)}}),[`findFirst${R(n.toString())}`]:f.drizzleField({type:n,nullable:false,smartSubscription:true,args:{where:f.arg({type:y,required:false})},resolve:(C,u,g,h,d)=>{let c=h.abilities[n].filter(i,{inject:{where:r(g.where)}}),b=C(c);return c.columns&&(b.columns=c.columns),e.query[n].findFirst(b).then(q)}})}))};var H=({db:e,disableDefaultObjects:t,pubsub:m,pothosConfig:o})=>{let n=new de__default.default({plugins:[ye__default.default,fe__default.default,...o?.plugins??[]],...o,drizzle:{client:e},smartSubscriptions:{...fe.subscribeOptionsFromIterator((i,p)=>m.subscribe(i))}});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`,X=({db:e,schemaBuilder:t,enumImplementer:m})=>{let o=new Map,n=({tableName:i,name:p,nativeTableName:l})=>{let s=e._.schema[i];if(l){let f=Object.values(e._.schema).find(C=>C.dbName===l);f&&(s=f);}if(!s)throw new S(`Could not find schema for ${i.toString()} (whereArg)`);let y=p??Re(s.dbName),r=o.get(y);return r||(r={inputType:t.inputType(y,{fields:u=>{let g=c=>{let b=N(c);switch(b){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 ${b} for column ${c}`)}},h=Object.entries(s.columns).reduce((c,[b,T])=>{if(I(T)){let D=E(T),x=m({enumName:D.enumName});c[b]=u.field({type:x,required:false});}else c[b]=g(T.getSQLType());return c},{}),d=Object.entries(s.relations).reduce((c,[b,T])=>{let D=n({tableName:T.referencedTableName,nativeTableName:T.referencedTableName});return c[b]=u.field({type:D.inputType,required:false}),c},{});return {...h,...d}}}),transformArgumentToQueryCondition:u=>{if(!u)return;let g=c=>{let b=s.columns[c],T=u[c];if(T)return drizzleOrm.eq(b,T)},h=c=>{let b=s.relations[c],T=u[c];if(!T)return;let D=n({tableName:b.referencedTableName,nativeTableName:b.referencedTableName}).transformArgumentToQueryCondition;return D(T)},d=[...Object.keys(s.columns).map(g),...Object.keys(s.relations).map(h)];return drizzleOrm.and(...d)}},o.set(y,r),r)};return n};var Ee=e=>{let t=V(e),m=$({...e,abilityBuilder:t}),{makePubSubInstance:o,pubsub:n}=W({...e}),{schemaBuilder:i}=H({...e,pubsub:n}),p=K({...e,schemaBuilder:i}),l=X({...e,schemaBuilder:i,enumImplementer:p}),s=J({...e,schemaBuilder:i,makePubSubInstance:o,argImplementer:l,enumImplementer:p}),y=Y({...e,schemaBuilder:i,argImplementer:l,makePubSubInstance:o});return {abilityBuilder:t,schemaBuilder:i,createYoga:a=>graphqlYoga.createYoga({...a,schema:i.toSchema(),context:m}),object:s,arg:l,query:y,pubsub:o,enum_:p}};
|
8
|
-
exports.RumbleError=S;exports.RumbleErrorSafe=P;exports.assertFindFirstExists=q;exports.assertFirstEntryExists=
|
7
|
+
`+L(this.source,m);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 k(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 B{};var A=(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 F(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 A(e,"Distinct")}function ie(e){return typeof e!="function"}function se(e){return typeof e=="function"&&e.constructor.name!=="AsyncFunction"}var _=({db:e})=>{let t=e._.schema,m={},o={},n=i=>({allow:p=>{let c=o[i];c||(c={},o[i]=c);let s=Array.isArray(p)?p:[p];for(let y of s){let r=c[y];r||(r="wildcard",c[y]=r);}return {when:y=>{for(let r of s)c[r]==="wildcard"&&(c[r]=[]),c[r].push(y);}}}});for(let i of Object.keys(e.query))m[i]=n(i);return {...m,registeredConditions:o,buildWithUserContext:i=>{let p={},c=s=>({filter:(y,r)=>{let a=o[s];a||(a={});let f=a[y];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 C=()=>{let b=t[s].primaryKey.at(0);if(!b)throw new S(`No primary key found for entity ${s.toString()}`);let D=F(b.getSQLType());return {where:drizzleOrm.and(drizzleOrm.eq(b,D.value1),drizzleOrm.eq(b,D.value2))}};(!a||!f)&&(f=[C()]);let u=f.filter(ie),x=f.filter(se).map(b=>b(i)),h=[...u,...x];h.filter(b=>b!==void 0).length===0&&h.push(C());let d;for(let b of h)b?.limit&&(d===void 0||b.limit>d)&&(d=b.limit);r?.inject?.limit&&d<r.inject.limit&&(d=r.inject.limit);let l;for(let b of [...h,r?.inject??{}])b?.columns&&(l===void 0?l=b.columns:l={...l,...b.columns});let g=h.filter(b=>b?.where).map(b=>b?.where),T=g.length>0?drizzleOrm.or(...g):void 0;return r?.inject?.where&&(T=T?drizzleOrm.and(T,r.inject.where):r.inject.where),{single:{where:T,columns:l},many:{where:T,columns:l,limit:d}}}});for(let s of Object.keys(e.query))p[s]=c(s);return p}}};var V=({context:e,abilityBuilder:t})=>async m=>{let o=e?await e(m):{};return {...o,abilities:t.buildWithUserContext(o)}};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 $=({db:e,schemaBuilder:t})=>{let m=new Map;return ({enumVariableName:n,name:i,enumValues:p,enumName:c})=>{let s=e._.fullSchema,y;if(n?y=s[n]:p?y=Object.values(s).filter(I).map(E).find(C=>C.enumValues===p):c&&(y=Object.values(s).filter(I).map(E).find(C=>C.enumName===c)),!y)throw new S(`Could not determine enum structure! (${String(n)}, ${p}, ${c})`);let r=i??`${R(casing.toCamelCase(y.enumName.toString()))}Enum`,a=m.get(r);return a||(a=t.enumType(r,{values:y.enumValues}),m.set(r,a),a)}};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 A(e,"SQL to GQL")}var ue="RUMBLE_SUBSCRIPTION_NOTIFICATION",me="REMOVED",le="UPDATED",ce="CREATED";function U({action:e,tableName:t,primaryKeyValue:m}){let o;switch(e){case "created":o=ce;break;case "removed":o=me;break;case "updated":o=le;break;default:throw new Error(`Unknown action: ${e}`)}return `${ue}/${t}${m?`/${m}`:""}/${o}`}var M=({subscriptions:e})=>{let t=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:t,makePubSubInstance:({tableName:o})=>({registerOnInstance({instance:n,action:i,primaryKeyValue:p}){let c=U({tableName:o.toString(),action:i,primaryKeyValue:p});n.register(c);},created(){let n=U({tableName:o.toString(),action:"created"});return t.publish(n)},removed(n){let i=U({tableName:o.toString(),action:"removed"});return t.publish(i)},updated(n){let i=U({tableName:o.toString(),action:"updated",primaryKeyValue:n});return t.publish(i)}})}};var W=({db:e,schemaBuilder:t,makePubSubInstance:m,argImplementer:o,enumImplementer:n})=>({tableName:i,name:p,readAction:c="read"})=>{let s=e._.schema[i];if(!s)throw new S(`Could not find schema for ${i.toString()} (object)`);let y=s.primaryKey.at(0)?.name;y||console.warn(`Could not find primary key for ${i.toString()}. Cannot register subscriptions!`);let{registerOnInstance:r}=m({tableName:i});return t.drizzleObject(i,{name:p??R(i.toString()),subscribe:(a,f,C)=>{if(!y)return;let u=f[y];if(!u){console.warn(`Could not find primary key value for ${JSON.stringify(f)}. Cannot register subscription!`);return}r({instance:a,action:"updated",primaryKeyValue:u});},fields:a=>{let f=(x,h,d)=>{let l=N(x);switch(l){case "Int":return a.exposeInt(h,{nullable:d});case "String":return a.exposeString(h,{nullable:d});case "Boolean":return a.exposeBoolean(h,{nullable:d});case "Date":return a.field({type:"Date",resolve:g=>g[h],nullable:d});case "DateTime":return a.field({type:"DateTime",resolve:g=>g[h],nullable:d});case "Float":return a.exposeFloat(h,{nullable:d});case "ID":return a.exposeID(h,{nullable:d});case "JSON":return a.field({type:"JSON",resolve:g=>g[h],nullable:d});default:throw new S(`Unsupported object type ${l} for column ${h}`)}},C=Object.entries(s.columns).reduce((x,[h,d])=>{if(I(d)){let l=E(d),g=n({enumName:l.enumName});x[h]=a.field({type:g,resolve:T=>T[h],nullable:!d.notNull});}else x[h]=f(d.getSQLType(),h,!d.notNull);return x},{}),u=Object.entries(s.relations).reduce((x,[h,d])=>{let {inputType:l,transformArgumentToQueryCondition:g}=o({tableName:d.referencedTableName,nativeTableName:d.referencedTableName}),T=false,D="many";return d instanceof drizzleOrm.One&&(T=!d.isNullable,D="single"),x[h]=a.relation(h,{args:{where:a.arg({type:l,required:false})},nullable:T,query:(X,Z)=>Z.abilities[d.referencedTableName].filter(c,{inject:{where:g(X.where)}})[D]}),x},{});return {...C,...u}}})};var q=e=>{if(!e)throw new P("Value not found but required (findFirst)");return e},de=e=>{let t=e.at(0);if(!t)throw new P("Value not found but required (firstEntry)");return t};var J=({db:e,schemaBuilder:t,argImplementer:m,makePubSubInstance:o})=>({tableName:n,readAction:i="read",listAction:p="read"})=>{let c=e._.schema[n];if(!c)throw new S(`Could not find schema for ${n.toString()} (query)`);c.primaryKey.at(0)?.name||console.warn(`Could not find primary key for ${n.toString()}. Cannot register subscriptions!`);let{inputType:y,transformArgumentToQueryCondition:r}=m({tableName:n}),{registerOnInstance:a}=o({tableName:n});return t.queryFields(f=>({[`findMany${R(n.toString())}`]:f.drizzleField({type:[n],nullable:false,smartSubscription:true,subscribe:(C,u,x,h,d)=>{a({instance:C,action:"created"}),a({instance:C,action:"removed"});},args:{where:f.arg({type:y,required:false})},resolve:(C,u,x,h,d)=>{let l=h.abilities[n].filter(p,{inject:{where:r(x.where)}}).many,g=C(l);return l.columns&&(g.columns=l.columns),e.query[n].findMany(g)}}),[`findFirst${R(n.toString())}`]:f.drizzleField({type:n,nullable:false,smartSubscription:true,args:{where:f.arg({type:y,required:false})},resolve:(C,u,x,h,d)=>{let l=h.abilities[n].filter(i,{inject:{where:r(x.where)}}).single,g=C(l);return l.columns&&(g.columns=l.columns),e.query[n].findFirst(g).then(q)}})}))};var Y=({db:e,disableDefaultObjects:t,pubsub:m,pothosConfig:o})=>{let n=new ye__default.default({plugins:[fe__default.default,he__default.default,...o?.plugins??[]],...o,drizzle:{client:e},smartSubscriptions:{...he.subscribeOptionsFromIterator((i,p)=>m.subscribe(i))}});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 De=e=>`${R(casing.toCamelCase(e.toString()))}WhereInputArgument`,H=({db:e,schemaBuilder:t,enumImplementer:m})=>{let o=new Map,n=({tableName:i,name:p,nativeTableName:c})=>{let s=e._.schema[i];if(c){let f=Object.values(e._.schema).find(C=>C.dbName===c);f&&(s=f);}if(!s)throw new S(`Could not find schema for ${i.toString()} (whereArg)`);let y=p??De(s.dbName),r=o.get(y);return r||(r={inputType:t.inputType(y,{fields:u=>{let x=l=>{let g=N(l);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 ${l}`)}},h=Object.entries(s.columns).reduce((l,[g,T])=>{if(I(T)){let b=E(T),D=m({enumName:b.enumName});l[g]=u.field({type:D,required:false});}else l[g]=x(T.getSQLType());return l},{}),d=Object.entries(s.relations).reduce((l,[g,T])=>{let b=n({tableName:T.referencedTableName,nativeTableName:T.referencedTableName});return l[g]=u.field({type:b.inputType,required:false}),l},{});return {...h,...d}}}),transformArgumentToQueryCondition:u=>{if(!u)return;let x=l=>{let g=s.columns[l],T=u[l];if(T)return drizzleOrm.eq(g,T)},h=l=>{let g=s.relations[l],T=u[l];if(!T)return;let b=n({tableName:g.referencedTableName,nativeTableName:g.referencedTableName}).transformArgumentToQueryCondition;return b(T)},d=[...Object.keys(s.columns).map(x),...Object.keys(s.relations).map(h)];return drizzleOrm.and(...d)}},o.set(y,r),r)};return n};var Be=e=>{let t=_(e),m=V({...e,abilityBuilder:t}),{makePubSubInstance:o,pubsub:n}=M({...e}),{schemaBuilder:i}=Y({...e,pubsub:n}),p=$({...e,schemaBuilder:i}),c=H({...e,schemaBuilder:i,enumImplementer:p}),s=W({...e,schemaBuilder:i,makePubSubInstance:o,argImplementer:c,enumImplementer:p}),y=J({...e,schemaBuilder:i,argImplementer:c,makePubSubInstance:o});return {abilityBuilder:t,schemaBuilder:i,createYoga:a=>graphqlYoga.createYoga({...a,schema:i.toSchema(),context:m}),object:s,arg:c,query:y,pubsub:o,enum_:p}};
|
8
|
+
exports.RumbleError=S;exports.RumbleErrorSafe=P;exports.assertFindFirstExists=q;exports.assertFirstEntryExists=de;exports.rumble=Be;//# sourceMappingURL=index.cjs.map
|
9
9
|
//# sourceMappingURL=index.cjs.map
|