@m1212e/rumble 0.7.11 → 0.8.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 +97 -0
- package/index.d.ts +97 -0
- 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'),pgCore=require('drizzle-orm/pg-core'),
|
2
|
-
`,
|
3
|
-
`)}function
|
1
|
+
'use strict';var graphqlYoga=require('graphql-yoga'),drizzleOrm=require('drizzle-orm'),casing=require('drizzle-orm/casing'),pgCore=require('drizzle-orm/pg-core'),Be=require('@pothos/core'),Le=require('@pothos/plugin-drizzle'),qe=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 Le__default=/*#__PURE__*/_interopDefault(Le);var qe__default=/*#__PURE__*/_interopDefault(qe);function k(t){let n,o=false;return ()=>(o||(n=t(),o=true),n)}function M(t){return typeof t=="object"&&t!==null}function $(t,n){throw new Error("Unexpected invariant triggered.")}var ye=/\r\n|[\n\r]/g;function U(t,n){let o=0,u=1;for(let r of t.body.matchAll(ye)){if(typeof r.index=="number"||$(),r.index>=n)break;o=r.index+r[0].length,u+=1;}return {line:u,column:n+1-o}}function H(t){return W(t.source,U(t.source,t.start))}function W(t,n){let o=t.locationOffset.column-1,u="".padStart(o)+t.body,r=n.line-1,e=t.locationOffset.line-1,a=n.line+e,p=n.line===1?o:0,l=n.column+p,c=`${t.name}:${a}:${l}
|
2
|
+
`,s=u.split(/\r\n|[\n\r]/g),g=s[r];if(g.length>120){let i=Math.floor(l/80),y=l%80,d=[];for(let b=0;b<g.length;b+=80)d.push(g.slice(b,b+80));return c+J([[`${a} |`,d[0]],...d.slice(1,i+1).map(b=>["|",b]),["|","^".padStart(y)],["|",d[i+1]]])}return c+J([[`${a-1} |`,s[r-1]],[`${a} |`,g],["|","^".padStart(l)],[`${a+1} |`,s[r+1]]])}function J(t){let n=t.filter(([u,r])=>r!==void 0),o=Math.max(...n.map(([u])=>u.length));return n.map(([u,r])=>u.padStart(o)+(r?" "+r:"")).join(`
|
3
|
+
`)}function de(t){let n=t[0];return n==null||"kind"in n||"length"in n?{nodes:n,source:t[1],positions:t[2],path:t[3],originalError:t[4],extensions:t[5]}:n}var L=class t extends Error{constructor(n,...o){var u,r,e;let{nodes:a,source:p,positions:l,path:c,originalError:s,extensions:g}=de(o);super(n),this.name="GraphQLError",this.path=c??void 0,this.originalError=s??void 0,this.nodes=Y(Array.isArray(a)?a:a?[a]:void 0);let i=Y((u=this.nodes)===null||u===void 0?void 0:u.map(d=>d.loc).filter(d=>d!=null));this.source=p??(i==null||(r=i[0])===null||r===void 0?void 0:r.source),this.positions=l??i?.map(d=>d.start),this.locations=l&&p?l.map(d=>U(p,d)):i?.map(d=>U(d.source,d.start));let y=M(s?.extensions)?s?.extensions:void 0;this.extensions=(e=g??y)!==null&&e!==void 0?e: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}}),s!=null&&s.stack?Object.defineProperty(this,"stack",{value:s.stack,writable:true,configurable:true}):Error.captureStackTrace?Error.captureStackTrace(this,t):Object.defineProperty(this,"stack",{value:Error().stack,writable:true,configurable:true});}get[Symbol.toStringTag](){return "GraphQLError"}toString(){let n=this.message;if(this.nodes)for(let o of this.nodes)o.loc&&(n+=`
|
4
4
|
|
5
|
-
`+
|
5
|
+
`+H(o.loc));else if(this.source&&this.locations)for(let o of this.locations)n+=`
|
6
6
|
|
7
|
-
`+
|
8
|
-
Please ensure that you use the enum at least once as a column of a table!`);a=y.enumValues;}else if(l){let r=Object.entries(e._.relations.schema).find(([y,d])=>d===l.config.enum);if(!r)throw new R(`Could not find enum in schema for ${l.name}!`);u=r[0],a=l.enumValues;}if(!u||!a)throw new R("Could not determine enum structure!");let m=s??`${A(casing.toCamelCase(u))}Enum`,o=i.get(m);return o||(o=t.enumType(m,{values:a}),i.set(m,o),o)}};function G({sqlType:e,fieldName:t}){let i;if(["serial","int","integer","tinyint","smallint","mediumint"].includes(e)&&(i="Int"),["real","decimal","double","float"].includes(e)&&(i="Float"),["string","text","varchar","char","text(256)"].includes(e)&&(t&&(t.toLowerCase().endsWith("_id")||t.toLowerCase().endsWith("id"))?i="ID":i="String"),["uuid"].includes(e)&&(i="ID"),["boolean"].includes(e)&&(i="Boolean"),["timestamp","datetime"].includes(e)&&(i="DateTime"),["date"].includes(e)&&(i="Date"),["json"].includes(e)&&(i="JSON"),i!==void 0)return i;throw j(e,"SQL to GQL")}var De=e=>typeof e!="object"?false:!!Object.keys(e).some(t=>["args","nullable","query","subscribe","description","type","resolve"].find(i=>i===t)),re=({db:e,schemaBuilder:t,makePubSubInstance:i,argImplementer:c,enumImplementer:n,abilityBuilder:l})=>({table:s,refName:u,readAction:a="read",adjust:m})=>{let o=I({db:e,tsName:s});Object.keys(o.primaryColumns).length===0&&console.warn(`Could not find primary key for ${s.toString()}. Cannot register subscriptions!`);let b=Object.values(o.primaryColumns)[0],{registerOnInstance:r}=i({table:s});return t.drizzleObject(s,{name:u??A(s.toString()),subscribe:(y,d,T)=>{if(!b)return;let h=d[b.name];if(!h){console.warn(`Could not find primary key value for ${JSON.stringify(d)}. Cannot register subscription!`);return}r({instance:y,action:"updated",primaryKeyValue:h});},applyFilters:l?.registeredFilters?.[s]?.[a],fields:y=>{let d=o.columns,T=(x,f,g)=>{let S=G({sqlType:x,fieldName:f});switch(S){case "Int":return y.exposeInt(f,{nullable:g});case "String":return y.exposeString(f,{nullable:g});case "Boolean":return y.exposeBoolean(f,{nullable:g});case "Date":return y.field({type:"Date",resolve:p=>p[f],nullable:g});case "DateTime":return y.field({type:"DateTime",resolve:p=>p[f],nullable:g});case "Float":return y.exposeFloat(f,{nullable:g});case "ID":return y.exposeID(f,{nullable:g});case "JSON":return y.field({type:"JSON",resolve:p=>p[f],nullable:g});default:throw new R(`Unsupported object type ${S} for column ${f}`)}},h=new Map,D=m?.(new Proxy(y,{get:(x,f)=>typeof x[f]=="function"?(...g)=>{let S=x[f](...g),p=g.find(De);if(!p)throw new R("Expected config object to be passed to adjust field");return h.set(S,{params:g,creatorFunction:x[f],configObject:p}),S}:x[f]}))??{},E=Object.entries(d).reduce((x,[f,g])=>{if(D[f]){let{params:S,creatorFunction:p,configObject:B}=h.get(D[f]);return typeof B.nullable!="boolean"&&(B.nullable=!g.notNull),D[f]=p.bind(y)(...S),x}if(k(g)){let S=n({enumColumn:g});x[f]=y.field({type:S,resolve:p=>p[f],nullable:!g.notNull});}else x[f]=T(g.getSQLType(),f,!g.notNull);return x},{}),P=Object.entries(o.relations??{}).reduce((x,[f,g])=>{let S=I({db:e,table:g.targetTable}),p=c({dbName:S.dbName}),B=i({table:S.tsName}),v=false,L=true,F="many";g instanceof drizzleOrm.One&&(L=false,v=g.optional,F="single");let N=(C,O)=>{B.registerOnInstance({instance:C,action:"created"}),B.registerOnInstance({instance:C,action:"removed"});};if(D[f]){let{params:C,creatorFunction:O,configObject:z}=h.get(D[f]);return typeof z.nullable!="boolean"&&(z.nullable=v),typeof z.subscribe!="function"&&(z.subscribe=N),D[f]=O.bind(y)(...C),x}return x[f]=y.relation(f,{args:{where:y.arg({type:p,required:false}),...L?{offset:y.arg.int({required:false}),limit:y.arg.int({required:false})}:{}},subscribe:N,nullable:v,query:(C,O)=>{let z=O.abilities[S.tsName].filter(a,{inject:{where:C.where,limit:C.limit}}).query[F];return C.offset&&(z.offset=C.offset),z}}),x},{});return {...E,...P,...D}}})};var Re="RUMBLE_SUBSCRIPTION_NOTIFICATION",Se="REMOVED",Ee="UPDATED",Be="CREATED",oe=({subscriptions:e,db:t})=>{let i=e?graphqlYoga.createPubSub(...e):graphqlYoga.createPubSub();return {pubsub:i,makePubSubInstance:({table:n})=>{function l({action:s,tableName:u,primaryKeyValue:a}){let m;switch(s){case "created":m=Be;break;case "removed":m=Se;break;case "updated":m=Ee;break;default:throw new Error(`Unknown action: ${s}`)}return `${Re}/${u}${a?`/${a}`:""}/${m}`}return {registerOnInstance({instance:s,action:u,primaryKeyValue:a}){let m=l({tableName:n.toString(),action:u,primaryKeyValue:a});s.register(m);},created(){let s=l({tableName:n.toString(),action:"created"});return i.publish(s)},removed(s){let u=l({tableName:n.toString(),action:"removed"});return i.publish(u)},updated(s){let a=(Array.isArray(s)?s:[s]).map(o=>l({tableName:n.toString(),action:"updated",primaryKeyValue:o})),m=Array.from(new Set(a));for(let o of m)i.publish(o);}}}}};var V=e=>{if(!e)throw new w("Value not found but required (findFirst)");return e},Pe=e=>{let t=e.at(0);if(!t)throw new w("Value not found but required (firstEntry)");return t},se=async({filters:e,entities:t,context:i})=>(await Promise.all(e.map(c=>c({context:i,entities:t})))).reduce((c,n)=>(c.push(...n),c),[]);var ae=({db:e,schemaBuilder:t,argImplementer:i,makePubSubInstance:c})=>({table:n,readAction:l="read",listAction:s="read"})=>{let u=i({table:n}),{registerOnInstance:a}=c({table:n});return t.queryFields(m=>({[`findMany${A(n.toString())}`]:m.drizzleField({type:[n],nullable:false,smartSubscription:true,subscribe:(o,b,r,y,d)=>{a({instance:o,action:"created"}),a({instance:o,action:"removed"});},args:{where:m.arg({type:u,required:false}),limit:m.arg.int({required:false}),offset:m.arg.int({required:false})},resolve:(o,b,r,y,d)=>{let T=y.abilities[n].filter(s,r.where||r.limit||r.offset?{inject:{where:r.where,limit:r.limit}}:void 0).query.many;r.offset&&(T.offset=r.offset);let h=o(T);return T.columns&&(h.columns=T.columns),e.query[n].findMany(h)}}),[`findFirst${A(n.toString())}`]:m.drizzleField({type:n,nullable:false,smartSubscription:true,args:{where:m.arg({type:u,required:false})},resolve:(o,b,r,y,d)=>{let T=y.abilities[n].filter(l,r.where?{inject:{where:r.where}}:void 0).query.single,h=o(T);return T.columns&&(h.columns=T.columns),e.query[n].findFirst(h).then(V)}})}))};var le="ManualFiltersPlugin",ue=le,ve="applyFilters",M=class extends Ie.BasePlugin{wrapResolve(t,i){return async(c,n,l,s)=>{let u=(i?.type).type?.ref.currentConfig.pothosOptions[ve];if(!u||!Array.isArray(u)||u.length===0)return t(c,n,l,s);let a=await t(c,n,l,s),m=Array.isArray(a)?a:[a],o=Array.isArray(u)?u:[u],b=await se({filters:o,entities:m,context:l});return Array.isArray(a)?b:b[0]??null}}};Ie__default.default.registerPlugin(le,M);var pe=({db:e,disableDefaultObjects:t,pubsub:i,pothosConfig:c})=>{let n=new Ie__default.default({...c,plugins:[ue,Ne__default.default,ze__default.default,...c?.plugins??[]],drizzle:{client:e,relations:e._.relations,getTableConfig(l){return {columns:Object.values(l[Symbol.for("drizzle:Columns")]),primaryKeys:Object.values(l[Symbol.for("drizzle:Columns")]).filter(s=>s.primary)}}},smartSubscriptions:{...ze.subscribeOptionsFromIterator((l,s)=>i.subscribe(l))}});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 Qe=e=>`${A(casing.toCamelCase(e.toString()))}WhereInputArgument`,me=({db:e,schemaBuilder:t,enumImplementer:i})=>{let c=new Map,n=({table:l,refName:s,dbName:u})=>{let a=I({db:e,dbName:u,tsName:l}),m=s??Qe(a.tsName),o=c.get(m);return o||(o=t.inputType(m,{fields:r=>{let y=(h,D)=>{let E=G({sqlType:h,fieldName:D});switch(E){case "Int":return r.int({required:false});case "String":return r.string({required:false});case "Boolean":return r.boolean({required:false});case "Date":return r.field({type:"Date",required:false});case "DateTime":return r.field({type:"DateTime",required:false});case "Float":return r.float({required:false});case "ID":return r.id({required:false});case "JSON":return r.field({type:"JSON",required:false});default:throw new R(`Unsupported argument type ${E} for column ${h}`)}},d=Object.entries(a.columns).reduce((h,[D,E])=>{if(k(E)){let P=i({enumColumn:E});h[D]=r.field({type:P,required:false});}else h[D]=y(E.getSQLType(),D);return h},{}),T=Object.entries(a.relations??{}).reduce((h,[D,E])=>{let P=I({db:e,table:E.targetTable}),x=n({dbName:P.dbName});return h[D]=r.field({type:x,required:false}),h},{});return {...d,...T}}}),c.set(m,o),o)};return n};var ke=e=>{e.actions||(e.actions=["read","update","delete"]),e.defaultLimit===void 0&&(e.defaultLimit=100);let t=ee(e),i=te({...e,abilityBuilder:t}),{makePubSubInstance:c,pubsub:n}=oe({...e}),{schemaBuilder:l}=pe({...e,pubsub:n}),s=ne({...e,schemaBuilder:l}),u=me({...e,schemaBuilder:l,enumImplementer:s}),a=re({...e,schemaBuilder:l,makePubSubInstance:c,argImplementer:u,enumImplementer:s,abilityBuilder:t}),m=ae({...e,schemaBuilder:l,argImplementer:u,makePubSubInstance:c});return {abilityBuilder:t,schemaBuilder:l,createYoga:b=>graphqlYoga.createYoga({...b,schema:l.toSchema(),context:i}),object:a,arg:u,query:m,pubsub:c,enum_:s}};exports.RumbleError=R;exports.RumbleErrorSafe=w;exports.assertFindFirstExists=V;exports.assertFirstEntryExists=Pe;exports.rumble=ke;//# sourceMappingURL=index.cjs.map
|
7
|
+
`+W(this.source,o);return n}toJSON(){let n={message:this.message};return this.locations!=null&&(n.locations=this.locations),this.path!=null&&(n.path=this.path),this.extensions!=null&&Object.keys(this.extensions).length>0&&(n.extensions=this.extensions),n}};function Y(t){return t===void 0||t.length===0?void 0:t}var R=class extends Error{constructor(n){super(n),this.name="RumbleError";}},q=class extends L{};var Q=(t,n)=>new R(`RumbleError: Unknown SQL type '${t}'. Please open an issue (https://github.com/m1212e/rumble/issues) so it can be added. (${n})`);function X(t){if(["serial","int","integer","tinyint","smallint","mediumint"].includes(t))return {value1:1,value2:2};if(["real","decimal","double","float"].includes(t))return {value1:1.1,value2:2.2};if(["string","text","varchar","char","text(256)"].includes(t))return {value1:"a",value2:"b"};if(["uuid"].includes(t))return {value1:"fba31870-5528-42d7-b27e-2e5ee657aea5",value2:"fc65db81-c2d1-483d-8a25-a30e2cf6e02d"};if(["boolean"].includes(t))return {value1:true,value2:false};if(["timestamp","datetime"].includes(t))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["date"].includes(t))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["json"].includes(t))return {value1:{a:1},value2:{b:2}};throw Q(t,"Distinct")}var K=Symbol.for("drizzle:Name"),Z=Symbol.for("drizzle:Columns");function N({dbName:t,tsName:n,table:o,db:u}){let r=o;if(n&&(r=u._.relations.schema[n]),t&&(r=Object.values(u._.relations.schema).find(e=>e[K]===t)),!r)throw new R(`Could not find schema for ${JSON.stringify({tsName:n,dbName:t,table:o?.[K]}).toString()}`);return {tableSchema:r,columns:r[Z],get primaryColumns(){return Object.entries(r[Z]).filter(([e,a])=>a.primary).reduce((e,[a,p])=>(e[a]=p,e),{})},relations:u._.relations.config[n],dbName:r[K],get tsName(){return Object.entries(u._.relations.schema).find(([e,a])=>a===r).at(0)}}}function Te(t){return typeof t!="function"}function he(t){return typeof t=="function"&&t.constructor.name!=="AsyncFunction"}var ee=({db:t,actions:n,defaultLimit:o})=>{let u={},r={},e={},a=p=>{for(let l of n)e[p]||(e[p]={}),e[p][l]||(e[p][l]=[]);return {allow:l=>{let c=r[p];c||(c={},r[p]=c);let s=Array.isArray(l)?l:[l];for(let g of s){let i=c[g];i||(i="unspecified",c[g]=i);}return {when:g=>{for(let i of s)c[i]==="unspecified"&&(c[i]=[]),c[i].push(g);}}},filter:l=>{let c=Array.isArray(l)?l:[l];return {by:s=>{for(let g of c)e[p][g].push(s);}}}}};for(let p of Object.keys(t.query))u[p]=a(p);return {...u,registeredQueryFilters:r,registeredFilters:e,buildWithUserContext:p=>{let l={},c=s=>({filter:(g,i)=>{let y=m=>{let A=k(()=>{if(!(!m?.where&&!i?.inject?.where)){if(i?.inject?.where&&m?.where)return {AND:[m?.where,i?.inject?.where]};if(i?.inject?.where&&!m?.where)return i?.inject?.where;if(!i?.inject?.where&&m?.where)return m?.where;!i?.inject?.where&&m?.where;}}),P=k(()=>{let C=A();if(!C)return;let z=N({tsName:s,db:t});return drizzleOrm.relationsFilterToSQL(z.tableSchema,C)}),w=k(()=>{let C=m?.limit??o;return i?.inject?.limit&&(!C||C>i.inject.limit)&&(C=i.inject.limit),m?.limit&&(!C||m.limit>C)&&(C=m.limit),C??void 0}),v=k(()=>{if(!(!m?.columns&&!i?.inject?.columns))return {...m?.columns,...i?.inject?.columns}}),F={query:{single:{get where(){return A()},columns:v()},many:{get where(){return A()},columns:v(),get limit(){return w()}}},sql:{get where(){return P()},columns:v(),get limit(){return w()}}};return v()||(delete F.sql.columns,delete F.query.many.columns,delete F.query.single.columns),F},d=()=>{let m=N({db:t,tsName:s});if(Object.keys(m.primaryColumns).length===0)throw new R(`No primary key found for entity ${s.toString()}`);let A=Object.values(m.primaryColumns)[0],P=X(A.getSQLType());return {where:{AND:[{[A.name]:P.value1},{[A.name]:P.value2}]}}},b=r?.[s]?.[g];if(b==="unspecified")return y();b||(b=[d()]);let h=b.filter(Te),D=b.filter(he).map(m=>m(p)),I=D.some(m=>m==="allow"),E=[...h,...D].filter(m=>m!==void 0).filter(m=>m!=="allow");!I&&E.length===0&&(E=[d()]);let x;for(let m of E)m?.limit&&(x===void 0||m.limit>x)&&(x=m.limit);let f;for(let m of [...E,i?.inject])m?.columns&&(f===void 0?f=m.columns:f={...f,...m.columns});let T=I?[]:E.filter(m=>m?.where).map(m=>m.where),S=T.length>0?{OR:T}:void 0;return y({where:S,columns:f,limit:x})},explicitFilters:g=>e[s][g]});for(let s of Object.keys(t.query))l[s]=c(s);return l}}};var te=({context:t,abilityBuilder:n})=>async o=>{let u=t?await t(o):{};return {...u,abilities:n.buildWithUserContext(u)}};function B(t){return String(t).charAt(0).toUpperCase()+String(t).slice(1)}function j(t){return t instanceof pgCore.PgEnumColumn}var ne=({db:t,schemaBuilder:n})=>{let o=new Map;return ({tsName:r,enumColumn:e,refName:a})=>{let p,l;if(r){let i=t._.relations.schema[r];p=r.toString();let y=Object.values(t._.relations.schema).filter(d=>typeof d=="object").map(d=>Object.values(d[Symbol.for("drizzle:Columns")])).flat(2).find(d=>d.config?.enum===i);if(!y)throw new R(`Could not find applied enum column for ${r.toString()}.
|
8
|
+
Please ensure that you use the enum at least once as a column of a table!`);l=y.enumValues;}else if(e){let i=Object.entries(t._.relations.schema).find(([y,d])=>d===e.config.enum);if(!i)throw new R(`Could not find enum in schema for ${e.name}!`);p=i[0],l=e.enumValues;}if(!p||!l)throw new R("Could not determine enum structure!");let c=a??`${B(casing.toCamelCase(p))}Enum`,s=o.get(c);return s||(s=n.enumType(c,{values:l}),o.set(c,s),s)}};function G({sqlType:t,fieldName:n}){let o;if(["serial","int","integer","tinyint","smallint","mediumint"].includes(t)&&(o="Int"),["real","decimal","double","float"].includes(t)&&(o="Float"),["string","text","varchar","char","text(256)"].includes(t)&&(n&&(n.toLowerCase().endsWith("_id")||n.toLowerCase().endsWith("id"))?o="ID":o="String"),["uuid"].includes(t)&&(o="ID"),["boolean"].includes(t)&&(o="Boolean"),["timestamp","datetime"].includes(t)&&(o="DateTime"),["date"].includes(t)&&(o="Date"),["json"].includes(t)&&(o="JSON"),o!==void 0)return o;throw Q(t,"SQL to GQL")}var Re=t=>typeof t!="object"?false:!!Object.keys(t).some(n=>["args","nullable","query","subscribe","description","type","resolve"].find(o=>o===n)),re=({db:t,schemaBuilder:n,makePubSubInstance:o,argImplementer:u,enumImplementer:r,abilityBuilder:e})=>({table:a,refName:p,readAction:l="read",adjust:c})=>{let s=N({db:t,tsName:a});Object.keys(s.primaryColumns).length===0&&console.warn(`Could not find primary key for ${a.toString()}. Cannot register subscriptions!`);let g=Object.values(s.primaryColumns)[0],{registerOnInstance:i}=o({table:a});return n.drizzleObject(a,{name:p??B(a.toString()),subscribe:(y,d,b)=>{if(!g)return;let h=d[g.name];if(!h){console.warn(`Could not find primary key value for ${JSON.stringify(d)}. Cannot register subscription!`);return}i({instance:y,action:"updated",primaryKeyValue:h});},applyFilters:e?.registeredFilters?.[a]?.[l],fields:y=>{let d=s.columns,b=(x,f,T)=>{let S=G({sqlType:x,fieldName:f});switch(S){case "Int":return y.exposeInt(f,{nullable:T});case "String":return y.exposeString(f,{nullable:T});case "Boolean":return y.exposeBoolean(f,{nullable:T});case "Date":return y.field({type:"Date",resolve:m=>m[f],nullable:T});case "DateTime":return y.field({type:"DateTime",resolve:m=>m[f],nullable:T});case "Float":return y.exposeFloat(f,{nullable:T});case "ID":return y.exposeID(f,{nullable:T});case "JSON":return y.field({type:"JSON",resolve:m=>m[f],nullable:T});default:throw new R(`Unsupported object type ${S} for column ${f}`)}},h=new Map,D=c?.(new Proxy(y,{get:(x,f)=>typeof x[f]=="function"?(...T)=>{let S=x[f](...T),m=T.find(Re);if(!m)throw new R("Expected config object to be passed to adjust field");return h.set(S,{params:T,creatorFunction:x[f],configObject:m}),S}:x[f]}))??{},I=Object.entries(d).reduce((x,[f,T])=>{if(D[f]){let{params:S,creatorFunction:m,configObject:A}=h.get(D[f]);return typeof A.nullable!="boolean"&&(A.nullable=!T.notNull),D[f]=m.bind(y)(...S),x}if(j(T)){let S=r({enumColumn:T});x[f]=y.field({type:S,resolve:m=>m[f],nullable:!T.notNull});}else x[f]=b(T.getSQLType(),f,!T.notNull);return x},{}),E=Object.entries(s.relations??{}).reduce((x,[f,T])=>{let S=N({db:t,table:T.targetTable}),m=u({dbName:S.dbName}),A=o({table:S.tsName}),P=false,w=true,v="many";T instanceof drizzleOrm.One&&(w=false,P=T.optional,v="single");let F=(C,z)=>{A.registerOnInstance({instance:C,action:"created"}),A.registerOnInstance({instance:C,action:"removed"});};if(D[f]){let{params:C,creatorFunction:z,configObject:O}=h.get(D[f]);return typeof O.nullable!="boolean"&&(O.nullable=P),typeof O.subscribe!="function"&&(O.subscribe=F),D[f]=z.bind(y)(...C),x}return x[f]=y.relation(f,{args:{where:y.arg({type:m,required:false}),...w?{offset:y.arg.int({required:false}),limit:y.arg.int({required:false})}:{}},subscribe:F,nullable:P,query:(C,z)=>{C=JSON.parse(JSON.stringify(C));let O=z.abilities[S.tsName].filter(l,{inject:{where:C.where,limit:C.limit}}).query[v];return C.offset&&(O.offset=C.offset),O}}),x},{});return {...I,...E,...D}}})};var Se="RUMBLE_SUBSCRIPTION_NOTIFICATION",Ie="REMOVED",Ae="UPDATED",Ee="CREATED",oe=({subscriptions:t,db:n})=>{let o=t?graphqlYoga.createPubSub(...t):graphqlYoga.createPubSub();return {pubsub:o,makePubSubInstance:({table:r})=>{function e({action:a,tableName:p,primaryKeyValue:l}){let c;switch(a){case "created":c=Ee;break;case "removed":c=Ie;break;case "updated":c=Ae;break;default:throw new Error(`Unknown action: ${a}`)}return `${Se}/${p}${l?`/${l}`:""}/${c}`}return {registerOnInstance({instance:a,action:p,primaryKeyValue:l}){let c=e({tableName:r.toString(),action:p,primaryKeyValue:l});a.register(c);},created(){let a=e({tableName:r.toString(),action:"created"});return o.publish(a)},removed(a){let p=e({tableName:r.toString(),action:"removed"});return o.publish(p)},updated(a){let l=(Array.isArray(a)?a:[a]).map(s=>e({tableName:r.toString(),action:"updated",primaryKeyValue:s})),c=Array.from(new Set(l));for(let s of c)o.publish(s);}}}}};var _=t=>{if(!t)throw new q("Value not found but required (findFirst)");return t},Ne=t=>{let n=t.at(0);if(!n)throw new q("Value not found but required (firstEntry)");return n},se=async({filters:t,entities:n,context:o})=>(await Promise.all(t.map(u=>u({context:o,entities:n})))).reduce((u,r)=>(u.push(...r),u),[]);var ae=({db:t,schemaBuilder:n,argImplementer:o,makePubSubInstance:u})=>({table:r,readAction:e="read",listAction:a="read"})=>{let p=o({table:r}),{registerOnInstance:l}=u({table:r});return n.queryFields(c=>({[`findMany${B(r.toString())}`]:c.drizzleField({type:[r],nullable:false,smartSubscription:true,subscribe:(s,g,i,y,d)=>{l({instance:s,action:"created"}),l({instance:s,action:"removed"});},args:{where:c.arg({type:p,required:false}),limit:c.arg.int({required:false}),offset:c.arg.int({required:false})},resolve:(s,g,i,y,d)=>{i=JSON.parse(JSON.stringify(i));let b=y.abilities[r].filter(a,i.where||i.limit||i.offset?{inject:{where:i.where,limit:i.limit}}:void 0).query.many;i.offset&&(b.offset=i.offset);let h=s(b);return b.columns&&(h.columns=b.columns),t.query[r].findMany(h)}}),[`findFirst${B(r.toString())}`]:c.drizzleField({type:r,nullable:false,smartSubscription:true,args:{where:c.arg({type:p,required:false})},resolve:(s,g,i,y,d)=>{i=JSON.parse(JSON.stringify(i));let b=y.abilities[r].filter(e,i.where?{inject:{where:i.where}}:void 0).query.single,h=s(b);return b.columns&&(h.columns=b.columns),t.query[r].findFirst(h).then(_)}})}))};var le="ManualFiltersPlugin",ue=le,ve="applyFilters",V=class extends Be.BasePlugin{wrapResolve(n,o){return async(u,r,e,a)=>{let p=(o?.type).type?.ref.currentConfig.pothosOptions[ve];if(!p||!Array.isArray(p)||p.length===0)return n(u,r,e,a);let l=await n(u,r,e,a),c=Array.isArray(l)?l:[l],s=Array.isArray(p)?p:[p],g=await se({filters:s,entities:c,context:e});return Array.isArray(l)?g:g[0]??null}}};Be__default.default.registerPlugin(le,V);var Oe=t=>`${B(casing.toCamelCase(t.toString()))}WhereInputArgument`,pe=({db:t,schemaBuilder:n,enumImplementer:o})=>{let u=new Map,r=({table:e,refName:a,dbName:p})=>{let l=N({db:t,dbName:p,tsName:e}),c=a??Oe(l.tsName),s=u.get(c);return s||(s=n.inputType(c,{fields:i=>{let y=(h,D)=>{let I=G({sqlType:h,fieldName:D});switch(I){case "Int":return i.field({type:"IntWhereInputArgument"});case "String":return i.field({type:"StringWhereInputArgument"});case "Boolean":return i.boolean({required:false});case "Date":return i.field({type:"DateWhereInputArgument"});case "DateTime":return i.field({type:"DateWhereInputArgument"});case "Float":return i.field({type:"FloatWhereInputArgument"});case "ID":return i.id({required:false});case "JSON":return i.field({type:"JSON",required:false});default:throw new R(`Unsupported argument type ${I} for column ${h}`)}},d=Object.entries(l.columns).reduce((h,[D,I])=>{if(j(I)){let E=o({enumColumn:I});h[D]=i.field({type:E,required:false});}else h[D]=y(I.getSQLType(),D);return h},{}),b=Object.entries(l.relations??{}).reduce((h,[D,I])=>{let E=N({db:t,table:I.targetTable}),x=r({dbName:E.dbName});return h[D]=i.field({type:x,required:false}),h},{});return {...d,...b}}}),u.set(c,s),s)};return r};function me(t){let n=t.inputRef("IntWhereInputArgument").implement({fields:e=>({eq:e.int(),ne:e.int(),gt:e.int(),gte:e.int(),lt:e.int(),lte:e.int(),in:e.intList(),notIn:e.intList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.intList(),arrayContained:e.intList(),arrayContains:e.intList(),AND:e.field({type:[n]}),OR:e.field({type:[n]}),NOT:e.field({type:n})})}),o=t.inputRef("FloatWhereInputArgument").implement({fields:e=>({eq:e.float(),ne:e.float(),gt:e.float(),gte:e.float(),lt:e.float(),lte:e.float(),in:e.floatList(),notIn:e.floatList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.floatList(),arrayContained:e.floatList(),arrayContains:e.floatList(),AND:e.field({type:[o]}),OR:e.field({type:[o]}),NOT:e.field({type:o})})}),u=t.inputRef("StringWhereInputArgument").implement({fields:e=>({eq:e.string(),ne:e.string(),gt:e.string(),gte:e.string(),lt:e.string(),lte:e.string(),in:e.stringList(),notIn:e.stringList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.stringList(),arrayContained:e.stringList(),arrayContains:e.stringList(),AND:e.field({type:[u]}),OR:e.field({type:[u]}),NOT:e.field({type:u})})}),r=t.inputRef("DateWhereInputArgument").implement({fields:e=>({eq:e.field({type:"Date"}),ne:e.field({type:"Date"}),gt:e.field({type:"Date"}),gte:e.field({type:"Date"}),lt:e.field({type:"Date"}),lte:e.field({type:"Date"}),in:e.field({type:["Date"]}),notIn:e.field({type:["Date"]}),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.field({type:["Date"]}),arrayContained:e.field({type:["Date"]}),arrayContains:e.field({type:["Date"]}),AND:e.field({type:[r]}),OR:e.field({type:[r]}),NOT:e.field({type:r})})});}var ce=({db:t,disableDefaultObjects:n,pubsub:o,pothosConfig:u})=>{let r=new Be__default.default({...u,plugins:[ue,Le__default.default,qe__default.default,...u?.plugins??[]],drizzle:{client:t,relations:t._.relations,getTableConfig(e){return {columns:Object.values(e[Symbol.for("drizzle:Columns")]),primaryKeys:Object.values(e[Symbol.for("drizzle:Columns")]).filter(a=>a.primary)}}},smartSubscriptions:{...qe.subscribeOptionsFromIterator((e,a)=>o.subscribe(e))}});return r.addScalarType("JSON",graphqlScalars.JSONResolver),r.addScalarType("Date",graphqlScalars.DateResolver),r.addScalarType("DateTime",graphqlScalars.DateTimeISOResolver),me(r),n?.query||r.queryType({}),n?.subscription||r.subscriptionType({}),n?.mutation||r.mutationType({}),{schemaBuilder:r}};var Ge=t=>{t.actions||(t.actions=["read","update","delete"]),t.defaultLimit===void 0&&(t.defaultLimit=100);let n=ee(t),o=te({...t,abilityBuilder:n}),{makePubSubInstance:u,pubsub:r}=oe({...t}),{schemaBuilder:e}=ce({...t,pubsub:r}),a=ne({...t,schemaBuilder:e}),p=pe({...t,schemaBuilder:e,enumImplementer:a}),l=re({...t,schemaBuilder:e,makePubSubInstance:u,argImplementer:p,enumImplementer:a,abilityBuilder:n}),c=ae({...t,schemaBuilder:e,argImplementer:p,makePubSubInstance:u});return {abilityBuilder:n,schemaBuilder:e,createYoga:g=>graphqlYoga.createYoga({...g,schema:e.toSchema(),context:o}),object:l,arg:p,query:c,pubsub:u,enum_:a}};exports.RumbleError=R;exports.RumbleErrorSafe=q;exports.assertFindFirstExists=_;exports.assertFirstEntryExists=Ne;exports.rumble=Ge;//# sourceMappingURL=index.cjs.map
|
9
9
|
//# sourceMappingURL=index.cjs.map
|