@m1212e/rumble 0.3.14 → 0.4.1
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 +49 -19
- package/index.d.ts +49 -19
- 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'),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
|
2
|
-
`,r=
|
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 A(e,t){let c=0,p=1;for(let n of e.body.matchAll(Z)){if(typeof n.index=="number"||z(),n.index>=t)break;c=n.index+n[0].length,p+=1;}return {line:p,column:t+1-c}}function w(e){return U(e.source,A(e.source,e.start))}function U(e,t){let c=e.locationOffset.column-1,p="".padStart(c)+e.body,n=t.line-1,a=e.locationOffset.line-1,i=t.line+a,u=t.line===1?c:0,o=t.column+u,s=`${e.name}:${i}:${o}
|
2
|
+
`,r=p.split(/\r\n|[\n\r]/g),m=r[n];if(m.length>120){let f=Math.floor(o/80),T=o%80,l=[];for(let x=0;x<m.length;x+=80)l.push(m.slice(x,x+80));return s+O([[`${i} |`,l[0]],...l.slice(1,f+1).map(x=>["|",x]),["|","^".padStart(T)],["|",l[f+1]]])}return s+O([[`${i-1} |`,r[n-1]],[`${i} |`,m],["|","^".padStart(o)],[`${i+1} |`,r[n+1]]])}function O(e){let t=e.filter(([p,n])=>n!==void 0),c=Math.max(...t.map(([p])=>p.length));return t.map(([p,n])=>p.padStart(c)+(n?" "+n:"")).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 P=class e extends Error{constructor(t,...c){var p,n,a;let{nodes:i,source:u,positions:o,path:s,originalError:r,extensions:m}=ee(c);super(t),this.name="GraphQLError",this.path=s??void 0,this.originalError=r??void 0,this.nodes=Q(Array.isArray(i)?i:i?[i]:void 0);let f=Q((p=this.nodes)===null||p===void 0?void 0:p.map(l=>l.loc).filter(l=>l!=null));this.source=u??(f==null||(n=f[0])===null||n===void 0?void 0:n.source),this.positions=o??f?.map(l=>l.start),this.locations=o&&u?o.map(l=>A(u,l)):f?.map(l=>A(l.source,l.start));let T=q(r?.extensions)?r?.extensions:void 0;this.extensions=(a=m??T)!==null&&a!==void 0?a: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 c of this.nodes)c.loc&&(t+=`
|
4
4
|
|
5
|
-
`+
|
5
|
+
`+w(c.loc));else if(this.source&&this.locations)for(let c 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=
|
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=B;exports.assertFindFirstExists=L;exports.assertFirstEntryExists=pe;exports.rumble=Ee;//# sourceMappingURL=index.cjs.map
|
9
9
|
//# sourceMappingURL=index.cjs.map
|