query-weaver 0.1.3 → 0.1.5

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 CHANGED
@@ -249,7 +249,7 @@ import zlib from 'node:zlib'
249
249
  const db = withQueryHelper(new pg.Pool(), {
250
250
  onError: (ctx, error) => console.error(JSON.stringify({ error: zlib.gzipSync(JSON.stringify({ ... ctx, error })).toString('base64') })),
251
251
  beforeQuery: (ctx) => console.log(JSON.stringify({ query: zlib.gzipSync(JSON.stringify(ctx)).toString('base64') })),
252
- afterQuery: (ctx) => console.log(JSON.stringify({ query: zlib.gzipSync(JSON.stringify(ctx)).toString('base64') })),
252
+ afterQuery: (ctx) => console.log(JSON.stringify({ result: zlib.gzipSync(JSON.stringify(ctx)).toString('base64') })),
253
253
  });
254
254
  ```
255
255
 
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var W=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var de=(e,r)=>{for(var t in r)W(e,t,{get:r[t],enumerable:!0})},we=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of Ee(r))!he.call(e,u)&&u!==t&&W(e,u,{get:()=>r[u],enumerable:!(n=fe(r,u))||n.enumerable});return e};var me=e=>we(W({},"__esModule",{value:!0}),e);var H=(e,r,t)=>{if(!r.has(e))throw TypeError("Cannot "+t)};var s=(e,r,t)=>(H(e,r,"read from private field"),t?t.call(e):r.get(e)),y=(e,r,t)=>{if(r.has(e))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(e):r.set(e,t)},c=(e,r,t,n)=>(H(e,r,"write to private field"),n?n.call(e,t):r.set(e,t),t);var T=(e,r,t)=>(H(e,r,"access private method"),t);var Ae={};de(Ae,{AND:()=>_,LIMIT:()=>ie,OFFSET:()=>se,OR:()=>Y,QueryFragments:()=>p,QueryHelper:()=>q,UNION:()=>ue,UNION_ALL:()=>ne,WHERE:()=>w,WHERE_AND:()=>le,WHERE_OR:()=>v,and:()=>ae,buildClauses:()=>N,buildDelete:()=>j,buildInsert:()=>k,buildKeys:()=>X,buildUpdate:()=>U,buildValues:()=>G,ident:()=>te,isQueryFragment:()=>R,isQueryTemplateStyle:()=>x,json:()=>re,or:()=>oe,pgIdent:()=>z,pgString:()=>b,raw:()=>C,sql:()=>i,where:()=>pe,where_and:()=>ye,where_or:()=>ce,withQueryHelper:()=>Qe});module.exports=me(Ae);var Re=["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BYTEDICT","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY13","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"];function B(e){return e.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/)&&!Re.includes(e.toUpperCase())?e:`"${e.replace(/"/g,'""')}"`}function I(e){return`${e.includes("'")?"E":""}'${e.replace(/'/g,"''").replace(/\\/g,"\\\\")}'`}function z(e){return e.split(".").map(r=>B(r)).join(".")}function b(e){return e===null?"NULL":typeof e=="boolean"?e?"true":"false":Array.isArray(e)?"ARRAY["+e.map(b).join(",")+"]":typeof e=="object"?"toJSON"in e&&typeof e.toJSON=="function"?I(e.toJSON()):I(e.toString()):I(String(e))}var h=class{constructor(){this.text="";this.values=[];this.embed="";Object.defineProperties(this,{text:{enumerable:!0,get(){return this.compiled.text}},values:{enumerable:!0,get(){return this.compiled.values}},embed:{enumerable:!0,get(){return this.compiled.embed}}})}get compiled(){let r=[],t=this.toString({valueFn:u=>(r.push(u),"$"+r.length)}),n=this.toString();return{text:t,values:r,embed:n}}},Q,$=class extends h{constructor(t){super();y(this,Q,void 0);c(this,Q,t)}toString(t){return(t?.valueFn??b)(s(this,Q))}};Q=new WeakMap;var A,M=class extends h{constructor(t){super();y(this,A,void 0);c(this,A,t)}toString(t){return(t?.identFn??z)(s(this,A))}};A=new WeakMap;var S,V=class extends h{constructor(t){super();y(this,S,void 0);c(this,S,String(t))}toString(){return s(this,S)}};S=new WeakMap;function R(e){return e instanceof h}function g(e){return new M(e)}function Z(e){return typeof e>"u"||R(e)?e:new $(e)}function d(e){return typeof e>"u"||R(e)?e:Array.isArray(e)?new p(e.map(d)):new V(e)}function J(e){return typeof e>"u"||R(e)?e:d(JSON.stringify(e))}var x=e=>{if(!Array.isArray(e)||typeof e?.[0]!="object"||e[0]===null||!("raw"in e[0])||!Array.isArray(e[0]))return!1;let[r,...t]=e;return r.length-1===t.length};function ee(e,r){if(e.length-1!==r.length)throw new Error("Invalid call of the function");return e.flatMap((t,n)=>n?[r[n-1],t]:[t])}var m,o,p=class extends h{constructor(...t){super();y(this,m,[]);y(this,o,void 0);if(c(this,o,{prefix:"",glue:"",suffix:"",empty:"",wrapperFn:n=>n}),Array.isArray(t[0])){let[n,u]=t;c(this,o,{...s(this,o),...u}),this.push(...n)}else{let[n]=t;c(this,o,{...s(this,o),...n})}}setSewingPattern(t="",n="",u="",a=""){return c(this,o,{...s(this,o),prefix:t,glue:n,suffix:u,empty:a}),this}push(...t){return s(this,m).push(...t.map(d).filter(n=>n!==void 0)),this}append(...t){return this.push(...t)}join(t=", "){return s(this,o).glue=t,this}prefix(t=" "){return s(this,o).prefix=t,this}suffix(t=" "){return s(this,o).suffix=t,this}empty(t=""){return s(this,o).empty=t,this}toString(t){return s(this,m).length===0?s(this,o).empty:s(this,o).prefix+s(this,o).wrapperFn(s(this,m).map(n=>n.toString(t)).join(s(this,o).glue),t)+s(this,o).suffix}};m=new WeakMap,o=new WeakMap;function i(...e){let r;if(x(e)){let[t,...n]=e;r=[new p(ee(t.map(d),n.map(Z)))]}else r=e.map(Z);return new p(r)}var te=g;function C(...e){return new p(e.map(d))}function re(...e){let r,t=(n,u)=>(u?.valueFn||b)(n);if(x(e)){let[n,...u]=e;r=[new p(ee(n.map(d),u.map(J)),{wrapperFn:t})]}else r=e.map(n=>new p([J(n)],{wrapperFn:t}));return new p(r)}function N(...e){let r=new p,t=n=>{if(n!==void 0&&n!==null){if(typeof n=="string"){r.push(d(n));return}if(R(n)){r.push(n);return}if(Array.isArray(n)){n.forEach(t);return}if(typeof n=="object"){for(let u in n)if(n[u]!==void 0){if(R(n[u])){r.push(i`${g(u)} ${n[u]}`);continue}if(n[u]===null){r.push(i`${g(u)} IS NULL`);continue}if(Array.isArray(n[u])){r.push(i`${g(u)} = ANY (${n[u]})`);continue}r.push(i`${g(u)} = ${n[u]}`)}return}}};return t(e),r}function Y(...e){return N(e).setSewingPattern("((",") OR (","))","false")}function _(...e){return N(e).setSewingPattern("((",") AND (","))","true")}function w(...e){return N(e).setSewingPattern("WHERE ((",") AND (","))","")}function v(...e){return N(e).setSewingPattern("WHERE ((",") OR (","))","")}function ne(...e){return C(...e).join(" UNION ALL ")}function ue(...e){return C(...e).join(" UNION ")}function ie(e){return e==null?i``:(e=Number(e),e>0?i`LIMIT ${e}`:i``)}function se(e){return e==null?i``:(e=Number(e),e>=0?i`OFFSET ${e}`:i``)}function G(e){if(!Array.isArray(e)){if(typeof e!="object")throw new Error("buildValues: The argument must be an array");e=[e]}if(e.length===0)throw new Error("buildValues: Array must contain elements at least one");let r=e.map(u=>typeof u=="object"?Object.values(u):u),t=r[0].length;if(r.some(u=>u.length!==t))throw new Error("buildValues: Array must all be the same length");let n=i(...r.map(u=>i(...u).join(", "))).setSewingPattern("(","), (",")");return i`VALUES ${n}`}function X(e){if(Array.isArray(e)||(e=[e]),e.length==0||!e[0]||typeof e[0]!="object")throw new Error("Invalid call of the function");e=e.map(n=>Object.fromEntries(Object.entries(n).filter(([u,a])=>a!==void 0)));let r=Object.keys(e[0]),t=r.join();if(e.some(n=>Object.keys(n).join()!==t))throw new Error("buildKeys: All objects must have the same keys");return i(...r.map(g)).setSewingPattern("(",", ",")")}function k(e,r,t){Array.isArray(r)||(r=[r]);let n=X(r),u=G(r.map(Object.values));return i`INSERT INTO ${g(e)} ${n} ${u}`.append(t).join(" ")}function U(e,r,t,n){let u=new p;for(let a in r){let F=r[a];F!==void 0&&u.push(i`${g(a)} = ${F}`)}return i`UPDATE ${g(e)} SET ${u.join(", ")} ${w(t)}`.append(n).join(" ")}function j(e,r,t){return i`DELETE FROM ${g(e)} ${w(r)}`.append(t).join(" ")}var oe=Y,ae=_,pe=w,le=w,ye=w,ce=v;i.raw=C;i.ident=te;i.json=re;i.WHERE=w;i.WHERE_AND=le;i.WHERE_OR=v;i.AND=_;i.OR=Y;i.where=pe;i.where_and=ye;i.where_or=ce;i.and=ae;i.or=oe;i.insert=k;i.update=U;i.delete=j;i.keys=X;i.values=G;i.UNION_ALL=ne;i.UNION=ue;i.LIMIT=ie;i.OFFSET=se;function Oe(e,r){return e={...e},Object.defineProperties(e,Object.fromEntries(Object.keys(e).map(t=>[t,r.includes(t)?{}:{enumerable:!1}]))),e}var L,E,D,Te,l,f,q=class{constructor(r,t={}){y(this,D);y(this,l);y(this,L,void 0);y(this,E,void 0);c(this,L,r),c(this,E,{...t}),s(this,E).query||"query"in r&&typeof r.query=="function"&&(s(this,E).query=r.query)}async insert(r,t,n){let u=k(r,t,n);return await T(this,l,f).call(this,[u])}async update(r,t,n,u){let a=U(r,t,n,u);return await T(this,l,f).call(this,[a])}async delete(r,t,n){let u=j(r,t,n);return await T(this,l,f).call(this,[u])}async query(...r){return T(this,l,f).call(this,r)}async getRows(...r){return T(this,l,f).call(this,r).then(t=>t.rows)}async getRow(...r){return T(this,l,f).call(this,r).then(t=>t.rows?.[0])}async getOne(...r){return T(this,l,f).call(this,r).then(t=>Object.values(t.rows?.[0]??{})?.[0])}async getCount(...r){return T(this,l,f).call(this,r).then(t=>t.rowCount)}async exec(...r){return T(this,l,f).call(this,r).then(t=>t.rowCount)}static get prisma(){return async function({text:r,values:t}){if("$queryRawUnsafe"in this&&typeof this.$queryRawUnsafe=="function"){let n=await this.$queryRawUnsafe(r,...t);return{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}static get typeorm(){return async function({text:r,values:t}){if("query"in this&&typeof this.query=="function"){let n=await this.query(r,t);return n.length===2&&Array.isArray(n[0])&&typeof n[1]=="number"?{rows:n[0],rowCount:n[1]}:{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}};L=new WeakMap,E=new WeakMap,D=new WeakSet,Te=function(r){if(x(r)){let[u,...a]=r;return i(u,...a)}let[t,n]=r;return typeof t=="object"&&t&&"text"in t?{...t,values:t.values??[]}:{text:t,values:n??[]}},l=new WeakSet,f=async function(r){let t=T(this,D,Te).call(this,r);s(this,E)?.beforeQuery?.(t);let n=s(this,E).query;if(!n)throw new Error("Missing query function");let u=await n.call(s(this,L),t).catch(a=>{throw s(this,E)?.onError?.(t,a),a});return typeof u.rowCount!="number"&&(u.rowCount=u.rows?.length??0),s(this,E)?.afterQuery?.({...t,results:Oe(u,["command","rowCount","rows"])}),u};function Qe(e,r){let t=new q(e,r),n=new Proxy(e,{get(u,a,F){let P=a in t?t:a in u?u:void 0,O=P&&Reflect.get(P,a);return O&&O instanceof Function?function(...ge){let K=O.apply(this===F?P:this,ge);return K===u?n:K}:O===u?n:O}});return n}0&&(module.exports={AND,LIMIT,OFFSET,OR,QueryFragments,QueryHelper,UNION,UNION_ALL,WHERE,WHERE_AND,WHERE_OR,and,buildClauses,buildDelete,buildInsert,buildKeys,buildUpdate,buildValues,ident,isQueryFragment,isQueryTemplateStyle,json,or,pgIdent,pgString,raw,sql,where,where_and,where_or,withQueryHelper});
1
+ "use strict";var P=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var K=e=>{throw TypeError(e)};var de=(e,r)=>{for(var t in r)P(e,t,{get:r[t],enumerable:!0})},we=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of Ee(r))!he.call(e,u)&&u!==t&&P(e,u,{get:()=>r[u],enumerable:!(n=fe(r,u))||n.enumerable});return e};var me=e=>we(P({},"__esModule",{value:!0}),e);var W=(e,r,t)=>r.has(e)||K("Cannot "+t);var s=(e,r,t)=>(W(e,r,"read from private field"),t?t.call(e):r.get(e)),T=(e,r,t)=>r.has(e)?K("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(e):r.set(e,t),y=(e,r,t,n)=>(W(e,r,"write to private field"),n?n.call(e,t):r.set(e,t),t),c=(e,r,t)=>(W(e,r,"access private method"),t);var Ae={};de(Ae,{AND:()=>Y,LIMIT:()=>ie,OFFSET:()=>se,OR:()=>V,QueryFragments:()=>l,QueryHelper:()=>q,UNION:()=>ue,UNION_ALL:()=>ne,WHERE:()=>w,WHERE_AND:()=>le,WHERE_OR:()=>_,and:()=>ae,buildClauses:()=>N,buildDelete:()=>j,buildInsert:()=>k,buildKeys:()=>G,buildUpdate:()=>U,buildValues:()=>v,ident:()=>te,isQueryFragment:()=>m,isQueryTemplateStyle:()=>x,json:()=>re,or:()=>oe,pgIdent:()=>z,pgString:()=>b,raw:()=>C,sql:()=>i,where:()=>pe,where_and:()=>ye,where_or:()=>ce,withQueryHelper:()=>Qe});module.exports=me(Ae);var Re=["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BYTEDICT","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY13","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"];function B(e){return e.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/)&&!Re.includes(e.toUpperCase())?e:`"${e.replace(/"/g,'""')}"`}function I(e){return`${e.includes("'")?"E":""}'${e.replace(/'/g,"''").replace(/\\/g,"\\\\")}'`}function z(e){return e.split(".").map(r=>B(r)).join(".")}function b(e){return e===null?"NULL":typeof e=="boolean"?e?"true":"false":Array.isArray(e)?"ARRAY["+e.map(b).join(",")+"]":typeof e=="object"?"toJSON"in e&&typeof e.toJSON=="function"?I(e.toJSON()):I(e.toString()):I(String(e))}var h=class{constructor(){this.text="";this.values=[];this.embed="";Object.defineProperties(this,{text:{enumerable:!0,get(){return this.compiled.text}},values:{enumerable:!0,get(){return this.compiled.values}},embed:{enumerable:!0,get(){return this.compiled.embed}}})}get compiled(){let r=[],t=this.toString({valueFn:u=>(r.push(u),"$"+r.length)}),n=this.toString();return{text:t,values:r,embed:n}}},O,H=class extends h{constructor(t){super();T(this,O);y(this,O,t)}toString(t){return(t?.valueFn??b)(s(this,O))}};O=new WeakMap;var Q,$=class extends h{constructor(t){super();T(this,Q);y(this,Q,t)}toString(t){return(t?.identFn??z)(s(this,Q))}};Q=new WeakMap;var A,M=class extends h{constructor(t){super();T(this,A);y(this,A,String(t))}toString(){return s(this,A)}};A=new WeakMap;function m(e){return e instanceof h}function g(e){return new $(e)}function Z(e){return typeof e>"u"||m(e)?e:new H(e)}function d(e){return typeof e>"u"||m(e)?e:Array.isArray(e)?new l(e.map(d)):new M(e)}function J(e){return typeof e>"u"||m(e)?e:d(JSON.stringify(e))}var x=e=>{if(!Array.isArray(e)||typeof e?.[0]!="object"||e[0]===null||!("raw"in e[0])||!Array.isArray(e[0]))return!1;let[r,...t]=e;return r.length-1===t.length};function ee(e,r){if(e.length-1!==r.length)throw new Error("Invalid call of the function");return e.flatMap((t,n)=>n?[r[n-1],t]:[t])}var S,o,l=class extends h{constructor(...t){super();T(this,S,[]);T(this,o);if(y(this,o,{prefix:"",glue:"",suffix:"",empty:"",wrapperFn:n=>n}),Array.isArray(t[0])){let[n,u]=t;y(this,o,{...s(this,o),...u}),this.push(...n)}else{let[n]=t;y(this,o,{...s(this,o),...n})}}setSewingPattern(t="",n="",u="",a=""){return y(this,o,{...s(this,o),prefix:t,glue:n,suffix:u,empty:a}),this}push(...t){return s(this,S).push(...t.map(d).filter(n=>n!==void 0)),this}append(...t){return this.push(...t)}join(t=", "){return s(this,o).glue=t,this}prefix(t=" "){return s(this,o).prefix=t,this}suffix(t=" "){return s(this,o).suffix=t,this}empty(t=""){return s(this,o).empty=t,this}toString(t){let n=s(this,S).map(u=>u.toString(t)).filter(u=>u).join(s(this,o).glue);return n?s(this,o).prefix+s(this,o).wrapperFn(n,t)+s(this,o).suffix:s(this,o).empty}};S=new WeakMap,o=new WeakMap;function i(...e){let r;if(x(e)){let[t,...n]=e;r=[new l(ee(t.map(d),n.map(Z)))]}else r=e.map(Z);return new l(r)}var te=g;function C(...e){return new l(e.map(d))}function re(...e){let r,t=(n,u)=>(u?.valueFn||b)(n);if(x(e)){let[n,...u]=e;r=[new l(ee(n.map(d),u.map(J)),{wrapperFn:t})]}else r=e.map(n=>new l([J(n)],{wrapperFn:t}));return new l(r)}function N(...e){let r=new l,t=n=>{if(n!==void 0&&n!==null){if(typeof n=="string"){r.push(d(n));return}if(m(n)){r.push(n);return}if(Array.isArray(n)){n.forEach(t);return}if(typeof n=="object"){for(let u in n)if(n[u]!==void 0){if(m(n[u])){r.push(i`${g(u)} ${n[u]}`);continue}if(n[u]===null){r.push(i`${g(u)} IS NULL`);continue}if(Array.isArray(n[u])){r.push(i`${g(u)} = ANY (${n[u]})`);continue}r.push(i`${g(u)} = ${n[u]}`)}return}}};return t(e),r}function V(...e){return N(e).setSewingPattern("((",") OR (","))","")}function Y(...e){return N(e).setSewingPattern("((",") AND (","))","")}function w(...e){return N(e).setSewingPattern("WHERE ((",") AND (","))","")}function _(...e){return N(e).setSewingPattern("WHERE ((",") OR (","))","")}function ne(...e){return C(...e).join(" UNION ALL ")}function ue(...e){return C(...e).join(" UNION ")}function ie(e){return e==null?i``:(e=Number(e),e>0?i`LIMIT ${e}`:i``)}function se(e){return e==null?i``:(e=Number(e),e>=0?i`OFFSET ${e}`:i``)}function v(e){if(!Array.isArray(e)){if(typeof e!="object")throw new Error("buildValues: The argument must be an array");e=[e]}if(e.length===0)throw new Error("buildValues: Array must contain elements at least one");let r=e.map(u=>typeof u=="object"?Object.values(u):u),t=r[0].length;if(r.some(u=>u.length!==t))throw new Error("buildValues: Array must all be the same length");let n=i(...r.map(u=>i(...u).join(", "))).setSewingPattern("(","), (",")");return i`VALUES ${n}`}function G(e){if(Array.isArray(e)||(e=[e]),e.length==0||!e[0]||typeof e[0]!="object")throw new Error("Invalid call of the function");e=e.map(n=>Object.fromEntries(Object.entries(n).filter(([u,a])=>a!==void 0)));let r=Object.keys(e[0]),t=r.join();if(e.some(n=>Object.keys(n).join()!==t))throw new Error("buildKeys: All objects must have the same keys");return i(...r.map(g)).setSewingPattern("(",", ",")")}function k(e,r,t){Array.isArray(r)||(r=[r]);let n=G(r),u=v(r.map(Object.values));return i`INSERT INTO ${g(e)} ${n} ${u}`.append(t).join(" ")}function U(e,r,t,n){let u=new l;for(let a in r){let F=r[a];F!==void 0&&u.push(i`${g(a)} = ${F}`)}return i`UPDATE ${g(e)} SET ${u.join(", ")} ${w(t)}`.append(n).join(" ")}function j(e,r,t){return i`DELETE FROM ${g(e)} ${w(r)}`.append(t).join(" ")}var oe=V,ae=Y,pe=w,le=w,ye=w,ce=_;i.raw=C;i.ident=te;i.json=re;i.WHERE=w;i.WHERE_AND=le;i.WHERE_OR=_;i.AND=Y;i.OR=V;i.where=pe;i.where_and=ye;i.where_or=ce;i.and=ae;i.or=oe;i.insert=k;i.update=U;i.delete=j;i.keys=G;i.values=v;i.UNION_ALL=ne;i.UNION=ue;i.LIMIT=ie;i.OFFSET=se;function Oe(e,r){return e={...e},Object.defineProperties(e,Object.fromEntries(Object.keys(e).map(t=>[t,r.includes(t)?{}:{enumerable:!1}]))),e}var L,E,p,Te,f,q=class{constructor(r,t={}){T(this,p);T(this,L);T(this,E);y(this,L,r),y(this,E,{...t}),s(this,E).query||"query"in r&&typeof r.query=="function"&&(s(this,E).query=r.query)}async insert(r,t,n){let u=k(r,t,n);return await c(this,p,f).call(this,[u])}async update(r,t,n,u){let a=U(r,t,n,u);return await c(this,p,f).call(this,[a])}async delete(r,t,n){let u=j(r,t,n);return await c(this,p,f).call(this,[u])}async query(...r){return c(this,p,f).call(this,r)}async getRows(...r){return c(this,p,f).call(this,r).then(t=>t.rows)}async getRow(...r){return c(this,p,f).call(this,r).then(t=>t.rows?.[0])}async getOne(...r){return c(this,p,f).call(this,r).then(t=>Object.values(t.rows?.[0]??{})?.[0])}async getCount(...r){return c(this,p,f).call(this,r).then(t=>t.rowCount)}async exec(...r){return c(this,p,f).call(this,r).then(t=>t.rowCount)}static get prisma(){return async function({text:r,values:t}){if("$queryRawUnsafe"in this&&typeof this.$queryRawUnsafe=="function"){let n=await this.$queryRawUnsafe(r,...t);return{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}static get typeorm(){return async function({text:r,values:t}){if("query"in this&&typeof this.query=="function"){let n=await this.query(r,t);return n.length===2&&Array.isArray(n[0])&&typeof n[1]=="number"?{rows:n[0],rowCount:n[1]}:{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}};L=new WeakMap,E=new WeakMap,p=new WeakSet,Te=function(r){if(x(r)){let[u,...a]=r;return i(u,...a)}let[t,n]=r;return typeof t=="object"&&t&&"text"in t?{...t,values:t.values??[]}:{text:t,values:n??[]}},f=async function(r){let t=c(this,p,Te).call(this,r);s(this,E)?.beforeQuery?.(t);let n=s(this,E).query;if(!n)throw new Error("Missing query function");let u=await n.call(s(this,L),t).catch(a=>{throw s(this,E)?.onError?.(t,a),a});return typeof u.rowCount!="number"&&(u.rowCount=u.rows?.length??0),s(this,E)?.afterQuery?.({...t,results:Oe(u,["command","rowCount","rows"])}),u};function Qe(e,r){let t=new q(e,r),n=new Proxy(e,{get(u,a,F){let D=a in t?t:a in u?u:void 0,R=D&&Reflect.get(D,a);return R&&R instanceof Function?function(...ge){let X=R.apply(this===F?D:this,ge);return X===u?n:X}:R===u?n:R}});return n}0&&(module.exports={AND,LIMIT,OFFSET,OR,QueryFragments,QueryHelper,UNION,UNION_ALL,WHERE,WHERE_AND,WHERE_OR,and,buildClauses,buildDelete,buildInsert,buildKeys,buildUpdate,buildValues,ident,isQueryFragment,isQueryTemplateStyle,json,or,pgIdent,pgString,raw,sql,where,where_and,where_or,withQueryHelper});
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/quote.ts", "../src/query-weaver.ts", "../src/query-helper.ts"],
4
- "sourcesContent": ["export * from './query-weaver';\nexport * from './query-helper';\n", "const reservedKeywords = [\n // copied from pg-escape's reserved.txt\n 'AES128',\n 'AES256',\n 'ALL',\n 'ALLOWOVERWRITE',\n 'ANALYSE',\n 'ANALYZE',\n 'AND',\n 'ANY',\n 'ARRAY',\n 'AS',\n 'ASC',\n 'AUTHORIZATION',\n 'BACKUP',\n 'BETWEEN',\n 'BINARY',\n 'BLANKSASNULL',\n 'BOTH',\n 'BYTEDICT',\n 'CASE',\n 'CAST',\n 'CHECK',\n 'COLLATE',\n 'COLUMN',\n 'CONSTRAINT',\n 'CREATE',\n 'CREDENTIALS',\n 'CROSS',\n 'CURRENT_DATE',\n 'CURRENT_TIME',\n 'CURRENT_TIMESTAMP',\n 'CURRENT_USER',\n 'CURRENT_USER_ID',\n 'DEFAULT',\n 'DEFERRABLE',\n 'DEFLATE',\n 'DEFRAG',\n 'DELTA',\n 'DELTA32K',\n 'DESC',\n 'DISABLE',\n 'DISTINCT',\n 'DO',\n 'ELSE',\n 'EMPTYASNULL',\n 'ENABLE',\n 'ENCODE',\n 'ENCRYPT',\n 'ENCRYPTION',\n 'END',\n 'EXCEPT',\n 'EXPLICIT',\n 'FALSE',\n 'FOR',\n 'FOREIGN',\n 'FREEZE',\n 'FROM',\n 'FULL',\n 'GLOBALDICT256',\n 'GLOBALDICT64K',\n 'GRANT',\n 'GROUP',\n 'GZIP',\n 'HAVING',\n 'IDENTITY',\n 'IGNORE',\n 'ILIKE',\n 'IN',\n 'INITIALLY',\n 'INNER',\n 'INTERSECT',\n 'INTO',\n 'IS',\n 'ISNULL',\n 'JOIN',\n 'LEADING',\n 'LEFT',\n 'LIKE',\n 'LIMIT',\n 'LOCALTIME',\n 'LOCALTIMESTAMP',\n 'LUN',\n 'LUNS',\n 'LZO',\n 'LZOP',\n 'MINUS',\n 'MOSTLY13',\n 'MOSTLY32',\n 'MOSTLY8',\n 'NATURAL',\n 'NEW',\n 'NOT',\n 'NOTNULL',\n 'NULL',\n 'NULLS',\n 'OFF',\n 'OFFLINE',\n 'OFFSET',\n 'OLD',\n 'ON',\n 'ONLY',\n 'OPEN',\n 'OR',\n 'ORDER',\n 'OUTER',\n 'OVERLAPS',\n 'PARALLEL',\n 'PARTITION',\n 'PERCENT',\n 'PLACING',\n 'PRIMARY',\n 'RAW',\n 'READRATIO',\n 'RECOVER',\n 'REFERENCES',\n 'REJECTLOG',\n 'RESORT',\n 'RESTORE',\n 'RIGHT',\n 'SELECT',\n 'SESSION_USER',\n 'SIMILAR',\n 'SOME',\n 'SYSDATE',\n 'SYSTEM',\n 'TABLE',\n 'TAG',\n 'TDES',\n 'TEXT255',\n 'TEXT32K',\n 'THEN',\n 'TO',\n 'TOP',\n 'TRAILING',\n 'TRUE',\n 'TRUNCATECOLUMNS',\n 'UNION',\n 'UNIQUE',\n 'USER',\n 'USING',\n 'VERBOSE',\n 'WALLET',\n 'WHEN',\n 'WHERE',\n 'WITH',\n 'WITHOUT',\n];\n\nexport function quoteIdent(id: string) {\n if (\n id.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/) &&\n !reservedKeywords.includes(id.toUpperCase())\n ) {\n return id;\n }\n return `\"${id.replace(/\"/g, '\"\"')}\"`;\n}\n\nexport function quoteLiteral(s: string) {\n const prefix = s.includes(\"'\") ? 'E' : '';\n return `${prefix}'${s.replace(/'/g, \"''\").replace(/\\\\/g, '\\\\\\\\')}'`;\n}\n\nexport default {\n quoteIdent,\n quoteLiteral,\n};\n", "type EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nimport { quoteIdent, quoteLiteral } from './quote';\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => quoteIdent(x))\n .join('.');\n}\n\n// fallback function for when the EscapeFunction is not specified\nexport function pgString(s: unknown): string {\n if (s === null) return 'NULL';\n if (typeof s === 'boolean') return s ? 'true' : 'false';\n if (Array.isArray(s)) return 'ARRAY[' + s.map(pgString).join(',') + ']';\n if (typeof s === 'object') {\n if ('toJSON' in s && typeof s.toJSON === 'function') {\n return quoteLiteral(s.toJSON());\n }\n return quoteLiteral(s.toString());\n }\n return quoteLiteral(String(s));\n}\n\ntype QueryFragmentToStringOptions = {\n valueFn?: EscapeFunction;\n identFn?: EscapeFunction;\n};\n\nexport interface QueryFragment {\n text: string;\n values?: unknown[];\n embed?: string;\n sql?: string;\n\n toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nabstract class QueryFragmentBase implements QueryFragment {\n // XXX: entries for defineProperties\n text: string = '';\n values: unknown[] = [];\n embed?: string = '';\n\n get compiled() {\n const values = [] as unknown[];\n const text = this.toString({\n valueFn: (x: unknown) => {\n values.push(x);\n return '$' + values.length;\n },\n });\n const embed = this.toString();\n\n return {\n text,\n values,\n embed,\n };\n }\n\n constructor() {\n Object.defineProperties(this, {\n text: {\n enumerable: true,\n get() {\n return this.compiled.text;\n },\n },\n values: {\n enumerable: true,\n get() {\n return this.compiled.values;\n },\n },\n embed: {\n enumerable: true,\n get() {\n return this.compiled.embed;\n },\n },\n });\n }\n\n abstract toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nclass QueryFragmentValue extends QueryFragmentBase {\n #value: unknown;\n\n constructor(value: unknown) {\n super();\n this.#value = value;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.valueFn ?? pgString)(this.#value);\n }\n}\n\nclass QueryFragmentIdent extends QueryFragmentBase {\n #ident: string;\n\n constructor(ident: string) {\n super();\n this.#ident = ident;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.identFn ?? pgIdent)(this.#ident);\n }\n}\n\n// we exploits String constructor\nclass QueryFragmentRawString extends QueryFragmentBase {\n #string: string;\n\n constructor(s: unknown) {\n super();\n this.#string = String(s);\n }\n\n /* toString(_?: QueryFragmentToStringOptions) { */\n toString() {\n return this.#string;\n }\n}\n\nexport function isQueryFragment(x: unknown): x is QueryFragment {\n return x instanceof QueryFragmentBase;\n}\n\nfunction makeIdent(name: string) {\n return new QueryFragmentIdent(name);\n}\n\nfunction makeValue(x: unknown): QueryFragment | undefined {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return new QueryFragmentValue(x);\n}\n\nfunction makeRaw(text: unknown | unknown[]): QueryFragment | undefined {\n if (typeof text === 'undefined' || isQueryFragment(text)) return text;\n if (Array.isArray(text)) return new QueryFragments(text.map(makeRaw));\n return new QueryFragmentRawString(text);\n}\n\nfunction makeJsonValue(x: unknown) {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return makeRaw(JSON.stringify(x));\n}\n\ntype QueryFragmentsOptions = {\n prefix?: string;\n glue?: string;\n suffix?: string;\n empty?: string;\n\n wrapperFn?: (s: string, opts?: QueryFragmentToStringOptions) => string;\n};\n\nexport type QueryTemplateStyle = [\n text: TemplateStringsArray,\n ...values: unknown[],\n];\nexport const isQueryTemplateStyle = (\n args: unknown,\n): args is QueryTemplateStyle => {\n if (!Array.isArray(args)) return false;\n if (typeof args?.[0] !== 'object' || args[0] === null || !('raw' in args[0]))\n return false;\n if (!Array.isArray(args[0])) return false;\n const [texts, ...values] = args;\n return texts.length - 1 === values.length;\n};\n\nfunction sewTemplateTextsAndValues<T = unknown, R = unknown>(\n texts: T[],\n values: R[],\n) {\n if (texts.length - 1 !== values.length)\n throw new Error('Invalid call of the function');\n return texts.flatMap((text, idx) => (idx ? [values[idx - 1], text] : [text]));\n}\n\nexport class QueryFragments extends QueryFragmentBase {\n #list: QueryFragment[] = [];\n #opts: Required<QueryFragmentsOptions>;\n\n constructor(\n ...args:\n | []\n | [values: (QueryFragment | undefined)[], opts?: QueryFragmentsOptions]\n | [opts?: QueryFragmentsOptions]\n ) {\n super();\n this.#opts = {\n prefix: '',\n glue: '',\n suffix: '',\n empty: '',\n wrapperFn: (x) => x,\n };\n\n if (Array.isArray(args[0])) {\n const [values, opts] = args as [\n values: (QueryFragment | undefined)[],\n opts?: QueryFragmentsOptions,\n ];\n this.#opts = { ...this.#opts, ...opts };\n this.push(...values);\n } else {\n const [opts] = args as [opts?: QueryFragmentsOptions];\n this.#opts = { ...this.#opts, ...opts };\n }\n }\n\n setSewingPattern(\n prefix: string = '',\n glue: string = '',\n suffix: string = '',\n empty: string = '',\n ) {\n this.#opts = { ...this.#opts, prefix, glue, suffix, empty };\n return this;\n }\n\n push(...args: (QueryFragment | string | undefined)[]) {\n this.#list.push(\n ...(args.map(makeRaw).filter((x) => x !== undefined) as QueryFragment[]),\n );\n return this;\n }\n\n // alias\n append(...args: (QueryFragment | string | undefined)[]) {\n return this.push(...args);\n }\n\n join(glue: string = ', ') {\n this.#opts.glue = glue;\n return this;\n }\n\n prefix(prefix: string = ' ') {\n this.#opts.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string = ' ') {\n this.#opts.suffix = suffix;\n return this;\n }\n\n empty(empty: string = '') {\n this.#opts.empty = empty;\n return this;\n }\n\n toString(opts?: QueryFragmentToStringOptions): string {\n if (this.#list.length === 0) return this.#opts.empty;\n return (\n this.#opts.prefix +\n this.#opts.wrapperFn(\n this.#list.map((x) => x.toString(opts)).join(this.#opts.glue),\n opts,\n ) +\n this.#opts.suffix\n );\n }\n}\n\nexport function sql(\n ...args:\n | [texts: TemplateStringsArray, ...values: unknown[]]\n | [...values: unknown[]]\n): QueryFragments {\n let fragments: (QueryFragment | undefined)[];\n if (isQueryTemplateStyle(args)) {\n // sql`...` comes here\n const [texts, ...values] = args as [\n texts: TemplateStringsArray,\n values: unknown[],\n ];\n // template string looks like a single QueryFragment for user\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(texts.map(makeRaw), values.map(makeValue)),\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(makeValue);\n }\n\n return new QueryFragments(fragments);\n}\n\nexport const ident = makeIdent;\n\nexport function raw(...args: unknown[]) {\n return new QueryFragments(args.map(makeRaw));\n}\n\nexport function json(\n ...args:\n | [...json: unknown[]]\n | [texts: TemplateStringsArray, ...args: unknown[]]\n) {\n let fragments: (QueryFragment | undefined)[];\n const wrapperFn = (x: string, opts?: QueryFragmentToStringOptions) =>\n (opts?.valueFn || pgString)(x);\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(\n texts.map(makeRaw),\n values.map(makeJsonValue),\n ),\n { wrapperFn },\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(\n (x) => new QueryFragments([makeJsonValue(x)], { wrapperFn }),\n );\n }\n\n return new QueryFragments(fragments);\n}\n\nexport function buildClauses(...args: WhereArg[]) {\n const clauses = new QueryFragments();\n\n const parse = (val: WhereArg) => {\n if (val === undefined) return;\n if (val === null) return;\n\n if (typeof val === 'string') {\n clauses.push(makeRaw(val));\n return;\n }\n\n if (isQueryFragment(val)) {\n clauses.push(val);\n return;\n }\n\n if (Array.isArray(val)) {\n val.forEach(parse);\n return;\n }\n\n if (typeof val === 'object') {\n for (const key in val) {\n if (val[key] === undefined) continue;\n\n if (isQueryFragment(val[key])) {\n clauses.push(sql`${makeIdent(key)} ${val[key]}`);\n continue;\n }\n\n if (val[key] === null) {\n clauses.push(sql`${makeIdent(key)} IS NULL`);\n continue;\n }\n\n if (Array.isArray(val[key])) {\n clauses.push(sql`${makeIdent(key)} = ANY (${val[key]})`);\n continue;\n }\n\n // \u305D\u308C\u4EE5\u5916\n clauses.push(sql`${makeIdent(key)} = ${val[key]}`);\n }\n return;\n }\n };\n\n parse(args);\n\n return clauses;\n}\n\nexport function OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') OR (', '))', 'false');\n}\n\nexport function AND(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') AND (', '))', 'true');\n}\n\nexport function WHERE(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') AND (', '))', '');\n}\n\nexport function WHERE_OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') OR (', '))', '');\n}\n\nexport function UNION_ALL(...fv: unknown[]) {\n return raw(...fv).join(' UNION ALL ');\n}\n\nexport function UNION(...fv: unknown[]) {\n return raw(...fv).join(' UNION ');\n}\n\nexport function LIMIT(limit: number | string | null | undefined) {\n if (limit == null) return sql``;\n limit = Number(limit);\n return limit > 0 ? sql`LIMIT ${limit}` : sql``;\n}\n\nexport function OFFSET(offset: number | string | null | undefined) {\n if (offset == null) return sql``;\n offset = Number(offset);\n return offset >= 0 ? sql`OFFSET ${offset}` : sql``;\n}\n\nexport function buildValues(fvs: (FieldValues | unknown[])[]) {\n if (!Array.isArray(fvs)) {\n if (typeof fvs !== 'object')\n throw new Error('buildValues: The argument must be an array');\n fvs = [fvs];\n }\n if (fvs.length === 0)\n throw new Error('buildValues: Array must contain elements at least one');\n\n const array = fvs.map((x) => (typeof x === 'object' ? Object.values(x) : x));\n\n const sig = array[0].length;\n if (array.some((arg) => arg.length !== sig)) {\n throw new Error('buildValues: Array must all be the same length');\n }\n\n const values = sql(\n ...array.map((v) => sql(...v).join(', ')),\n ).setSewingPattern('(', '), (', ')');\n return sql`VALUES ${values}`;\n}\n\nexport function buildKeys(fvs: FieldValues[] | FieldValues) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n if (fvs.length == 0 || !fvs[0] || typeof fvs[0] !== 'object')\n throw new Error('Invalid call of the function');\n\n fvs = fvs.map((fv) =>\n Object.fromEntries(Object.entries(fv).filter(([_, v]) => v !== undefined)),\n );\n\n const ks = Object.keys(fvs[0]);\n const sig = ks.join();\n if (fvs.some((fv) => Object.keys(fv).join() !== sig)) {\n throw new Error('buildKeys: All objects must have the same keys');\n }\n\n return sql(...ks.map(makeIdent)).setSewingPattern('(', ', ', ')');\n}\n\nexport function buildInsert(\n table: string,\n fvs: FieldValues[] | FieldValues,\n appendix?: string | QueryFragment,\n) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n\n const keys = buildKeys(fvs);\n const values = buildValues(fvs.map(Object.values));\n\n return sql`INSERT INTO ${makeIdent(table)} ${keys} ${values}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildUpdate(\n table: string,\n fv: FieldValues,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n const pairs = new QueryFragments();\n\n for (const k in fv) {\n const val = fv[k];\n if (val === undefined) continue;\n\n pairs.push(sql`${makeIdent(k)} = ${val}`);\n }\n\n return sql`UPDATE ${makeIdent(table)} SET ${pairs.join(', ')} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildDelete(\n table: string,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n return sql`DELETE FROM ${makeIdent(table)} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\n// aliases\nexport const or = OR;\nexport const and = AND;\nexport const where = WHERE;\nexport const WHERE_AND = WHERE;\nexport const where_and = WHERE;\nexport const where_or = WHERE_OR;\n\n// expose via `sql`\nsql.raw = raw;\nsql.ident = ident;\nsql.json = json;\nsql.WHERE = WHERE;\nsql.WHERE_AND = WHERE_AND;\nsql.WHERE_OR = WHERE_OR;\nsql.AND = AND;\nsql.OR = OR;\nsql.where = where;\nsql.where_and = where_and;\nsql.where_or = where_or;\nsql.and = and;\nsql.or = or;\nsql.insert = buildInsert;\nsql.update = buildUpdate;\nsql.delete = buildDelete;\nsql.keys = buildKeys;\nsql.values = buildValues;\nsql.UNION_ALL = UNION_ALL;\nsql.UNION = UNION;\nsql.LIMIT = LIMIT;\nsql.OFFSET = OFFSET;\n\nexport default {\n sql,\n raw,\n ident,\n json,\n WHERE,\n WHERE_AND,\n WHERE_OR,\n AND,\n OR,\n where,\n where_and,\n where_or,\n and,\n or,\n buildInsert,\n buildUpdate,\n buildDelete,\n buildValues,\n UNION_ALL,\n UNION,\n LIMIT,\n OFFSET,\n};\n", "import type pg from 'pg';\nimport type {\n QueryFragment,\n FieldValues,\n WhereArg,\n QueryTemplateStyle,\n} from './query-weaver';\nimport {\n sql,\n buildInsert,\n buildUpdate,\n buildDelete,\n isQueryTemplateStyle,\n} from './query-weaver';\n\nexport type QueryResultRow = pg.QueryResultRow;\n\n// pg (almost) compatible types to relief and reduce their requirements\nexport type QueryResult<T extends QueryResultRow> = {\n rowCount?: number | null;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\n embed?: string;\n};\n\nexport type QueryableFunction<T extends object> = (\n this: T,\n queryConfig: QueryConfig,\n) => Promise<QueryResult<QueryResultRow>>;\n\nexport type Queryable<T extends object> = {\n query: QueryableFunction<T>;\n};\n\ntype pgQueryResult<X, T extends QueryResultRow> = (X extends {\n query(...args: unknown[]): Promise<pg.QueryResult<T>>; // pg\n}\n ? pg.QueryResult<T>\n : QueryResult<T>) & { rowCount: number };\n\ntype QueryHelperOptions<X extends object> = {\n beforeQuery?: <T extends QueryConfig>(ctx: T) => void;\n afterQuery?: <T extends QueryConfig>(ctx: T) => void;\n onError?: <T extends QueryConfig>(ctx: T, e: unknown) => void;\n\n query?: QueryableFunction<X>;\n};\n\ntype QueryTemplateOrSimpleQuery =\n | QueryTemplateStyle\n | [query: string, values?: unknown[]]\n | [query: pg.QueryConfig<unknown[]>];\n\nfunction hidePropertyExcludes(target: object, keys: string[]) {\n target = { ...target };\n Object.defineProperties(\n target,\n Object.fromEntries(\n Object.keys(target).map((k) => [\n k,\n keys.includes(k) ? {} : { enumerable: false },\n ]),\n ),\n );\n return target;\n}\n\n/**\n * Query Helper\n */\nexport class QueryHelper<X extends object> {\n #db: X;\n #opts: QueryHelperOptions<X>;\n\n constructor(db: X, opts: QueryHelperOptions<X> = {}) {\n this.#db = db;\n this.#opts = { ...opts };\n\n // set query function\n if (!this.#opts.query) {\n if ('query' in db && typeof db.query === 'function') {\n // default\n this.#opts.query = db.query as QueryableFunction<X>;\n }\n }\n }\n\n #parseQueryTemplateStyle(args: QueryTemplateOrSimpleQuery): QueryConfig {\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n return sql(texts, ...values);\n }\n\n const [query, values] = args;\n\n if (typeof query === 'object' && query && 'text' in query) {\n return { ...query, values: query.values ?? [] };\n }\n\n return { text: query, values: values ?? [] };\n }\n\n async #query<T extends QueryResultRow>(\n args: QueryTemplateOrSimpleQuery,\n ): Promise<pgQueryResult<X, T>> {\n const query = this.#parseQueryTemplateStyle(args);\n\n this.#opts?.beforeQuery?.(query);\n\n const queryFn = this.#opts.query;\n if (!queryFn) throw new Error('Missing query function');\n const results = await queryFn.call(this.#db, query).catch((e: unknown) => {\n this.#opts?.onError?.(query, e);\n throw e;\n });\n\n if (typeof results.rowCount !== 'number') {\n results.rowCount = results.rows?.length ?? 0;\n }\n\n this.#opts?.afterQuery?.({\n ...query,\n results: hidePropertyExcludes(results, ['command', 'rowCount', 'rows']),\n });\n\n return results as pgQueryResult<X, T>;\n }\n\n // ======================================================================\n // query executors\n\n async insert<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n appendix?: string | QueryFragment,\n ) {\n const query = buildInsert(table, fv, appendix);\n return await this.#query<T>([query]);\n }\n\n async update<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildUpdate(table, fv, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async delete<T extends QueryResultRow>(\n table: string,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildDelete(table, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async query<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args);\n }\n\n async getRows<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows);\n }\n\n async getRow<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows?.[0] as T | undefined);\n }\n\n async getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<[T]>(args).then(\n (x) => Object.values(x.rows?.[0] ?? {})?.[0] as T | undefined,\n );\n }\n\n async getCount(...args: QueryTemplateOrSimpleQuery) {\n return this.#query(args).then((x) => x.rowCount);\n }\n\n async exec(...args: QueryTemplateOrSimpleQuery) {\n // same as getCount\n return this.#query(args).then((x) => x.rowCount);\n }\n\n // ======================================================================\n // query adapters\n\n // Prisma adapter: NB; It only supports a query return rows\n public static get prisma() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if (\n '$queryRawUnsafe' in this &&\n typeof this.$queryRawUnsafe === 'function'\n ) {\n const rows: T[] = await this.$queryRawUnsafe(text, ...values);\n return {\n rows: rows,\n rowCount: rows.length,\n };\n }\n throw new Error('Invalid object');\n };\n }\n\n // TypeORM adapter\n public static get typeorm() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if ('query' in this && typeof this.query === 'function') {\n const rows: unknown[] = await this.query(text, values);\n\n // returns with row count\n if (\n rows.length === 2 &&\n Array.isArray(rows[0]) &&\n typeof rows[1] === 'number'\n ) {\n return { rows: rows[0], rowCount: rows[1] };\n }\n\n return {\n rows,\n rowCount: rows.length,\n } as { rows: T[]; rowCount: number };\n }\n throw new Error('Invalid object');\n };\n }\n}\n\ntype Overwrite<T, Q> = Omit<T, keyof Q> & Q;\ntype MethodChainRewrite<T, Q> = {\n [K in keyof T]: T[K] extends (...args: infer R) => T\n ? (...args: R) => Override<T, Q>\n : T[K] extends T\n ? Override<T, Q>\n : T[K];\n};\ntype Override<T, Q> = Overwrite<MethodChainRewrite<T, Q>, Q>;\n\nexport type WithQueryHelper<T extends object> = Override<T, QueryHelper<T>>;\n\n/**\n * Returns a proxy object that overrides the queryable instance `db` by Query Helper utilities\n * @param db - Queryable object to be wrapped\n */\nexport function withQueryHelper<T extends Queryable<T>>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts: Overwrite<QueryHelperOptions<T>, Queryable<T>>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T> {\n const qh = new QueryHelper<T>(db, opts);\n const proxy: unknown = new Proxy(db, {\n get(db, key, receiver) {\n const target = key in qh ? qh : key in db ? db : undefined;\n const value = target && Reflect.get(target, key);\n\n if (value && value instanceof Function) {\n return function (this: unknown, ...args: unknown[]) {\n const result = value.apply(this === receiver ? target : this, args);\n return result === db ? proxy : result;\n };\n }\n\n return value === db ? proxy : value;\n },\n });\n\n return proxy as WithQueryHelper<T>;\n}\n"],
5
- "mappings": "wzBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,SAAAE,EAAA,UAAAC,GAAA,WAAAC,GAAA,OAAAC,EAAA,mBAAAC,EAAA,gBAAAC,EAAA,UAAAC,GAAA,cAAAC,GAAA,UAAAC,EAAA,cAAAC,GAAA,aAAAC,EAAA,QAAAC,GAAA,iBAAAC,EAAA,gBAAAC,EAAA,gBAAAC,EAAA,cAAAC,EAAA,gBAAAC,EAAA,gBAAAC,EAAA,UAAAC,GAAA,oBAAAC,EAAA,yBAAAC,EAAA,SAAAC,GAAA,OAAAC,GAAA,YAAAC,EAAA,aAAAC,EAAA,QAAAC,EAAA,QAAAC,EAAA,UAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,oBAAAC,KAAA,eAAAC,GAAAjC,ICAA,IAAMkC,GAAmB,CAEvB,SACA,SACA,MACA,iBACA,UACA,UACA,MACA,MACA,QACA,KACA,MACA,gBACA,SACA,UACA,SACA,eACA,OACA,WACA,OACA,OACA,QACA,UACA,SACA,aACA,SACA,cACA,QACA,eACA,eACA,oBACA,eACA,kBACA,UACA,aACA,UACA,SACA,QACA,WACA,OACA,UACA,WACA,KACA,OACA,cACA,SACA,SACA,UACA,aACA,MACA,SACA,WACA,QACA,MACA,UACA,SACA,OACA,OACA,gBACA,gBACA,QACA,QACA,OACA,SACA,WACA,SACA,QACA,KACA,YACA,QACA,YACA,OACA,KACA,SACA,OACA,UACA,OACA,OACA,QACA,YACA,iBACA,MACA,OACA,MACA,OACA,QACA,WACA,WACA,UACA,UACA,MACA,MACA,UACA,OACA,QACA,MACA,UACA,SACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,WACA,WACA,YACA,UACA,UACA,UACA,MACA,YACA,UACA,aACA,YACA,SACA,UACA,QACA,SACA,eACA,UACA,OACA,UACA,SACA,QACA,MACA,OACA,UACA,UACA,OACA,KACA,MACA,WACA,OACA,kBACA,QACA,SACA,OACA,QACA,UACA,SACA,OACA,QACA,OACA,SACF,EAEO,SAASC,EAAWC,EAAY,CACrC,OACEA,EAAG,MAAM,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",
6
- "names": ["src_exports", "__export", "AND", "LIMIT", "OFFSET", "OR", "QueryFragments", "QueryHelper", "UNION", "UNION_ALL", "WHERE", "WHERE_AND", "WHERE_OR", "and", "buildClauses", "buildDelete", "buildInsert", "buildKeys", "buildUpdate", "buildValues", "ident", "isQueryFragment", "isQueryTemplateStyle", "json", "or", "pgIdent", "pgString", "raw", "sql", "where", "where_and", "where_or", "withQueryHelper", "__toCommonJS", "reservedKeywords", "quoteIdent", "id", "quoteLiteral", "s", "pgIdent", "s", "x", "quoteIdent", "pgString", "quoteLiteral", "QueryFragmentBase", "values", "text", "embed", "_value", "QueryFragmentValue", "value", "__privateAdd", "__privateSet", "opts", "__privateGet", "_ident", "QueryFragmentIdent", "ident", "_string", "QueryFragmentRawString", "isQueryFragment", "makeIdent", "name", "makeValue", "makeRaw", "QueryFragments", "makeJsonValue", "isQueryTemplateStyle", "args", "texts", "sewTemplateTextsAndValues", "idx", "_list", "_opts", "prefix", "glue", "suffix", "empty", "sql", "fragments", "raw", "json", "wrapperFn", "buildClauses", "clauses", "parse", "val", "key", "OR", "fv", "AND", "WHERE", "WHERE_OR", "UNION_ALL", "UNION", "LIMIT", "limit", "OFFSET", "offset", "buildValues", "fvs", "array", "sig", "arg", "v", "buildKeys", "_", "ks", "buildInsert", "table", "appendix", "keys", "buildUpdate", "where", "pairs", "k", "buildDelete", "or", "and", "WHERE_AND", "where_and", "where_or", "hidePropertyExcludes", "target", "keys", "k", "_db", "_opts", "_parseQueryTemplateStyle", "parseQueryTemplateStyle_fn", "_query", "query_fn", "QueryHelper", "db", "opts", "__privateAdd", "__privateSet", "__privateGet", "table", "fv", "appendix", "query", "buildInsert", "__privateMethod", "where", "buildUpdate", "buildDelete", "args", "x", "text", "values", "rows", "isQueryTemplateStyle", "texts", "sql", "queryFn", "results", "e", "withQueryHelper", "qh", "proxy", "key", "receiver", "value", "result"]
4
+ "sourcesContent": ["export * from './query-weaver';\nexport * from './query-helper';\n", "const reservedKeywords = [\n // copied from pg-escape's reserved.txt\n 'AES128',\n 'AES256',\n 'ALL',\n 'ALLOWOVERWRITE',\n 'ANALYSE',\n 'ANALYZE',\n 'AND',\n 'ANY',\n 'ARRAY',\n 'AS',\n 'ASC',\n 'AUTHORIZATION',\n 'BACKUP',\n 'BETWEEN',\n 'BINARY',\n 'BLANKSASNULL',\n 'BOTH',\n 'BYTEDICT',\n 'CASE',\n 'CAST',\n 'CHECK',\n 'COLLATE',\n 'COLUMN',\n 'CONSTRAINT',\n 'CREATE',\n 'CREDENTIALS',\n 'CROSS',\n 'CURRENT_DATE',\n 'CURRENT_TIME',\n 'CURRENT_TIMESTAMP',\n 'CURRENT_USER',\n 'CURRENT_USER_ID',\n 'DEFAULT',\n 'DEFERRABLE',\n 'DEFLATE',\n 'DEFRAG',\n 'DELTA',\n 'DELTA32K',\n 'DESC',\n 'DISABLE',\n 'DISTINCT',\n 'DO',\n 'ELSE',\n 'EMPTYASNULL',\n 'ENABLE',\n 'ENCODE',\n 'ENCRYPT',\n 'ENCRYPTION',\n 'END',\n 'EXCEPT',\n 'EXPLICIT',\n 'FALSE',\n 'FOR',\n 'FOREIGN',\n 'FREEZE',\n 'FROM',\n 'FULL',\n 'GLOBALDICT256',\n 'GLOBALDICT64K',\n 'GRANT',\n 'GROUP',\n 'GZIP',\n 'HAVING',\n 'IDENTITY',\n 'IGNORE',\n 'ILIKE',\n 'IN',\n 'INITIALLY',\n 'INNER',\n 'INTERSECT',\n 'INTO',\n 'IS',\n 'ISNULL',\n 'JOIN',\n 'LEADING',\n 'LEFT',\n 'LIKE',\n 'LIMIT',\n 'LOCALTIME',\n 'LOCALTIMESTAMP',\n 'LUN',\n 'LUNS',\n 'LZO',\n 'LZOP',\n 'MINUS',\n 'MOSTLY13',\n 'MOSTLY32',\n 'MOSTLY8',\n 'NATURAL',\n 'NEW',\n 'NOT',\n 'NOTNULL',\n 'NULL',\n 'NULLS',\n 'OFF',\n 'OFFLINE',\n 'OFFSET',\n 'OLD',\n 'ON',\n 'ONLY',\n 'OPEN',\n 'OR',\n 'ORDER',\n 'OUTER',\n 'OVERLAPS',\n 'PARALLEL',\n 'PARTITION',\n 'PERCENT',\n 'PLACING',\n 'PRIMARY',\n 'RAW',\n 'READRATIO',\n 'RECOVER',\n 'REFERENCES',\n 'REJECTLOG',\n 'RESORT',\n 'RESTORE',\n 'RIGHT',\n 'SELECT',\n 'SESSION_USER',\n 'SIMILAR',\n 'SOME',\n 'SYSDATE',\n 'SYSTEM',\n 'TABLE',\n 'TAG',\n 'TDES',\n 'TEXT255',\n 'TEXT32K',\n 'THEN',\n 'TO',\n 'TOP',\n 'TRAILING',\n 'TRUE',\n 'TRUNCATECOLUMNS',\n 'UNION',\n 'UNIQUE',\n 'USER',\n 'USING',\n 'VERBOSE',\n 'WALLET',\n 'WHEN',\n 'WHERE',\n 'WITH',\n 'WITHOUT',\n];\n\nexport function quoteIdent(id: string) {\n if (\n id.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/) &&\n !reservedKeywords.includes(id.toUpperCase())\n ) {\n return id;\n }\n return `\"${id.replace(/\"/g, '\"\"')}\"`;\n}\n\nexport function quoteLiteral(s: string) {\n const prefix = s.includes(\"'\") ? 'E' : '';\n return `${prefix}'${s.replace(/'/g, \"''\").replace(/\\\\/g, '\\\\\\\\')}'`;\n}\n\nexport default {\n quoteIdent,\n quoteLiteral,\n};\n", "type EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nimport { quoteIdent, quoteLiteral } from './quote';\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => quoteIdent(x))\n .join('.');\n}\n\n// fallback function for when the EscapeFunction is not specified\nexport function pgString(s: unknown): string {\n if (s === null) return 'NULL';\n if (typeof s === 'boolean') return s ? 'true' : 'false';\n if (Array.isArray(s)) return 'ARRAY[' + s.map(pgString).join(',') + ']';\n if (typeof s === 'object') {\n if ('toJSON' in s && typeof s.toJSON === 'function') {\n return quoteLiteral(s.toJSON());\n }\n return quoteLiteral(s.toString());\n }\n return quoteLiteral(String(s));\n}\n\ntype QueryFragmentToStringOptions = {\n valueFn?: EscapeFunction;\n identFn?: EscapeFunction;\n};\n\nexport interface QueryFragment {\n text: string;\n values?: unknown[];\n embed?: string;\n sql?: string;\n\n toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nabstract class QueryFragmentBase implements QueryFragment {\n // XXX: entries for defineProperties\n text: string = '';\n values: unknown[] = [];\n embed?: string = '';\n\n get compiled() {\n const values = [] as unknown[];\n const text = this.toString({\n valueFn: (x: unknown) => {\n values.push(x);\n return '$' + values.length;\n },\n });\n const embed = this.toString();\n\n return {\n text,\n values,\n embed,\n };\n }\n\n constructor() {\n Object.defineProperties(this, {\n text: {\n enumerable: true,\n get() {\n return this.compiled.text;\n },\n },\n values: {\n enumerable: true,\n get() {\n return this.compiled.values;\n },\n },\n embed: {\n enumerable: true,\n get() {\n return this.compiled.embed;\n },\n },\n });\n }\n\n abstract toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nclass QueryFragmentValue extends QueryFragmentBase {\n #value: unknown;\n\n constructor(value: unknown) {\n super();\n this.#value = value;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.valueFn ?? pgString)(this.#value);\n }\n}\n\nclass QueryFragmentIdent extends QueryFragmentBase {\n #ident: string;\n\n constructor(ident: string) {\n super();\n this.#ident = ident;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.identFn ?? pgIdent)(this.#ident);\n }\n}\n\n// we exploits String constructor\nclass QueryFragmentRawString extends QueryFragmentBase {\n #string: string;\n\n constructor(s: unknown) {\n super();\n this.#string = String(s);\n }\n\n /* toString(_?: QueryFragmentToStringOptions) { */\n toString() {\n return this.#string;\n }\n}\n\nexport function isQueryFragment(x: unknown): x is QueryFragment {\n return x instanceof QueryFragmentBase;\n}\n\nfunction makeIdent(name: string) {\n return new QueryFragmentIdent(name);\n}\n\nfunction makeValue(x: unknown): QueryFragment | undefined {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return new QueryFragmentValue(x);\n}\n\nfunction makeRaw(text: unknown | unknown[]): QueryFragment | undefined {\n if (typeof text === 'undefined' || isQueryFragment(text)) return text;\n if (Array.isArray(text)) return new QueryFragments(text.map(makeRaw));\n return new QueryFragmentRawString(text);\n}\n\nfunction makeJsonValue(x: unknown) {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return makeRaw(JSON.stringify(x));\n}\n\ntype QueryFragmentsOptions = {\n prefix?: string;\n glue?: string;\n suffix?: string;\n empty?: string;\n\n wrapperFn?: (s: string, opts?: QueryFragmentToStringOptions) => string;\n};\n\nexport type QueryTemplateStyle = [\n text: TemplateStringsArray,\n ...values: unknown[],\n];\nexport const isQueryTemplateStyle = (\n args: unknown,\n): args is QueryTemplateStyle => {\n if (!Array.isArray(args)) return false;\n if (typeof args?.[0] !== 'object' || args[0] === null || !('raw' in args[0]))\n return false;\n if (!Array.isArray(args[0])) return false;\n const [texts, ...values] = args;\n return texts.length - 1 === values.length;\n};\n\nfunction sewTemplateTextsAndValues<T = unknown, R = unknown>(\n texts: T[],\n values: R[],\n) {\n if (texts.length - 1 !== values.length)\n throw new Error('Invalid call of the function');\n return texts.flatMap((text, idx) => (idx ? [values[idx - 1], text] : [text]));\n}\n\nexport class QueryFragments extends QueryFragmentBase {\n #list: QueryFragment[] = [];\n #opts: Required<QueryFragmentsOptions>;\n\n constructor(\n ...args:\n | []\n | [values: (QueryFragment | undefined)[], opts?: QueryFragmentsOptions]\n | [opts?: QueryFragmentsOptions]\n ) {\n super();\n this.#opts = {\n prefix: '',\n glue: '',\n suffix: '',\n empty: '',\n wrapperFn: (x) => x,\n };\n\n if (Array.isArray(args[0])) {\n const [values, opts] = args as [\n values: (QueryFragment | undefined)[],\n opts?: QueryFragmentsOptions,\n ];\n this.#opts = { ...this.#opts, ...opts };\n this.push(...values);\n } else {\n const [opts] = args as [opts?: QueryFragmentsOptions];\n this.#opts = { ...this.#opts, ...opts };\n }\n }\n\n setSewingPattern(\n prefix: string = '',\n glue: string = '',\n suffix: string = '',\n empty: string = '',\n ) {\n this.#opts = { ...this.#opts, prefix, glue, suffix, empty };\n return this;\n }\n\n push(...args: (QueryFragment | string | undefined)[]) {\n this.#list.push(\n ...(args.map(makeRaw).filter((x) => x !== undefined) as QueryFragment[]),\n );\n return this;\n }\n\n // alias\n append(...args: (QueryFragment | string | undefined)[]) {\n return this.push(...args);\n }\n\n join(glue: string = ', ') {\n this.#opts.glue = glue;\n return this;\n }\n\n prefix(prefix: string = ' ') {\n this.#opts.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string = ' ') {\n this.#opts.suffix = suffix;\n return this;\n }\n\n empty(empty: string = '') {\n this.#opts.empty = empty;\n return this;\n }\n\n toString(opts?: QueryFragmentToStringOptions): string {\n const children = this.#list\n .map((x) => x.toString(opts))\n .filter((x) => x)\n .join(this.#opts.glue);\n if (!children) return this.#opts.empty;\n return (\n this.#opts.prefix +\n this.#opts.wrapperFn(children, opts) +\n this.#opts.suffix\n );\n }\n}\n\nexport function sql(\n ...args:\n | [texts: TemplateStringsArray, ...values: unknown[]]\n | [...values: unknown[]]\n): QueryFragments {\n let fragments: (QueryFragment | undefined)[];\n if (isQueryTemplateStyle(args)) {\n // sql`...` comes here\n const [texts, ...values] = args as [\n texts: TemplateStringsArray,\n values: unknown[],\n ];\n // template string looks like a single QueryFragment for user\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(texts.map(makeRaw), values.map(makeValue)),\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(makeValue);\n }\n\n return new QueryFragments(fragments);\n}\n\nexport const ident = makeIdent;\n\nexport function raw(...args: unknown[]) {\n return new QueryFragments(args.map(makeRaw));\n}\n\nexport function json(\n ...args:\n | [...json: unknown[]]\n | [texts: TemplateStringsArray, ...args: unknown[]]\n) {\n let fragments: (QueryFragment | undefined)[];\n const wrapperFn = (x: string, opts?: QueryFragmentToStringOptions) =>\n (opts?.valueFn || pgString)(x);\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(\n texts.map(makeRaw),\n values.map(makeJsonValue),\n ),\n { wrapperFn },\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(\n (x) => new QueryFragments([makeJsonValue(x)], { wrapperFn }),\n );\n }\n\n return new QueryFragments(fragments);\n}\n\nexport function buildClauses(...args: WhereArg[]) {\n const clauses = new QueryFragments();\n\n const parse = (val: WhereArg) => {\n if (val === undefined) return;\n if (val === null) return;\n\n if (typeof val === 'string') {\n clauses.push(makeRaw(val));\n return;\n }\n\n if (isQueryFragment(val)) {\n clauses.push(val);\n return;\n }\n\n if (Array.isArray(val)) {\n val.forEach(parse);\n return;\n }\n\n if (typeof val === 'object') {\n for (const key in val) {\n if (val[key] === undefined) continue;\n\n if (isQueryFragment(val[key])) {\n clauses.push(sql`${makeIdent(key)} ${val[key]}`);\n continue;\n }\n\n if (val[key] === null) {\n clauses.push(sql`${makeIdent(key)} IS NULL`);\n continue;\n }\n\n if (Array.isArray(val[key])) {\n clauses.push(sql`${makeIdent(key)} = ANY (${val[key]})`);\n continue;\n }\n\n // \u305D\u308C\u4EE5\u5916\n clauses.push(sql`${makeIdent(key)} = ${val[key]}`);\n }\n return;\n }\n };\n\n parse(args);\n\n return clauses;\n}\n\nexport function OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') OR (', '))', '');\n}\n\nexport function AND(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') AND (', '))', '');\n}\n\nexport function WHERE(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') AND (', '))', '');\n}\n\nexport function WHERE_OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') OR (', '))', '');\n}\n\nexport function UNION_ALL(...fv: unknown[]) {\n return raw(...fv).join(' UNION ALL ');\n}\n\nexport function UNION(...fv: unknown[]) {\n return raw(...fv).join(' UNION ');\n}\n\nexport function LIMIT(limit: number | string | null | undefined) {\n if (limit == null) return sql``;\n limit = Number(limit);\n return limit > 0 ? sql`LIMIT ${limit}` : sql``;\n}\n\nexport function OFFSET(offset: number | string | null | undefined) {\n if (offset == null) return sql``;\n offset = Number(offset);\n return offset >= 0 ? sql`OFFSET ${offset}` : sql``;\n}\n\nexport function buildValues(fvs: (FieldValues | unknown[])[]) {\n if (!Array.isArray(fvs)) {\n if (typeof fvs !== 'object')\n throw new Error('buildValues: The argument must be an array');\n fvs = [fvs];\n }\n if (fvs.length === 0)\n throw new Error('buildValues: Array must contain elements at least one');\n\n const array = fvs.map((x) => (typeof x === 'object' ? Object.values(x) : x));\n\n const sig = array[0].length;\n if (array.some((arg) => arg.length !== sig)) {\n throw new Error('buildValues: Array must all be the same length');\n }\n\n const values = sql(\n ...array.map((v) => sql(...v).join(', ')),\n ).setSewingPattern('(', '), (', ')');\n return sql`VALUES ${values}`;\n}\n\nexport function buildKeys(fvs: FieldValues[] | FieldValues) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n if (fvs.length == 0 || !fvs[0] || typeof fvs[0] !== 'object')\n throw new Error('Invalid call of the function');\n\n fvs = fvs.map((fv) =>\n Object.fromEntries(Object.entries(fv).filter(([_, v]) => v !== undefined)),\n );\n\n const ks = Object.keys(fvs[0]);\n const sig = ks.join();\n if (fvs.some((fv) => Object.keys(fv).join() !== sig)) {\n throw new Error('buildKeys: All objects must have the same keys');\n }\n\n return sql(...ks.map(makeIdent)).setSewingPattern('(', ', ', ')');\n}\n\nexport function buildInsert(\n table: string,\n fvs: FieldValues[] | FieldValues,\n appendix?: string | QueryFragment,\n) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n\n const keys = buildKeys(fvs);\n const values = buildValues(fvs.map(Object.values));\n\n return sql`INSERT INTO ${makeIdent(table)} ${keys} ${values}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildUpdate(\n table: string,\n fv: FieldValues,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n const pairs = new QueryFragments();\n\n for (const k in fv) {\n const val = fv[k];\n if (val === undefined) continue;\n\n pairs.push(sql`${makeIdent(k)} = ${val}`);\n }\n\n return sql`UPDATE ${makeIdent(table)} SET ${pairs.join(', ')} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildDelete(\n table: string,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n return sql`DELETE FROM ${makeIdent(table)} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\n// aliases\nexport const or = OR;\nexport const and = AND;\nexport const where = WHERE;\nexport const WHERE_AND = WHERE;\nexport const where_and = WHERE;\nexport const where_or = WHERE_OR;\n\n// expose via `sql`\nsql.raw = raw;\nsql.ident = ident;\nsql.json = json;\nsql.WHERE = WHERE;\nsql.WHERE_AND = WHERE_AND;\nsql.WHERE_OR = WHERE_OR;\nsql.AND = AND;\nsql.OR = OR;\nsql.where = where;\nsql.where_and = where_and;\nsql.where_or = where_or;\nsql.and = and;\nsql.or = or;\nsql.insert = buildInsert;\nsql.update = buildUpdate;\nsql.delete = buildDelete;\nsql.keys = buildKeys;\nsql.values = buildValues;\nsql.UNION_ALL = UNION_ALL;\nsql.UNION = UNION;\nsql.LIMIT = LIMIT;\nsql.OFFSET = OFFSET;\n\nexport default {\n sql,\n raw,\n ident,\n json,\n WHERE,\n WHERE_AND,\n WHERE_OR,\n AND,\n OR,\n where,\n where_and,\n where_or,\n and,\n or,\n buildInsert,\n buildUpdate,\n buildDelete,\n buildValues,\n UNION_ALL,\n UNION,\n LIMIT,\n OFFSET,\n};\n", "import type pg from 'pg';\nimport type {\n QueryFragment,\n FieldValues,\n WhereArg,\n QueryTemplateStyle,\n} from './query-weaver';\nimport {\n sql,\n buildInsert,\n buildUpdate,\n buildDelete,\n isQueryTemplateStyle,\n} from './query-weaver';\n\nexport type QueryResultRow = pg.QueryResultRow;\n\n// pg (almost) compatible types to relief and reduce their requirements\nexport type QueryResult<T extends QueryResultRow> = {\n rowCount?: number | null;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\n embed?: string;\n};\n\nexport type QueryableFunction<T extends object> = (\n this: T,\n queryConfig: QueryConfig,\n) => Promise<QueryResult<QueryResultRow>>;\n\nexport type Queryable<T extends object> = {\n query: QueryableFunction<T>;\n};\n\ntype pgQueryResult<X, T extends QueryResultRow> = (X extends {\n query(...args: unknown[]): Promise<pg.QueryResult<T>>; // pg\n}\n ? pg.QueryResult<T>\n : QueryResult<T>) & { rowCount: number };\n\ntype QueryHelperOptions<X extends object> = {\n beforeQuery?: <T extends QueryConfig>(ctx: T) => void;\n afterQuery?: <T extends QueryConfig>(ctx: T) => void;\n onError?: <T extends QueryConfig>(ctx: T, e: unknown) => void;\n\n query?: QueryableFunction<X>;\n};\n\ntype QueryTemplateOrSimpleQuery =\n | QueryTemplateStyle\n | [query: string, values?: unknown[]]\n | [query: pg.QueryConfig<unknown[]>];\n\nfunction hidePropertyExcludes(target: object, keys: string[]) {\n target = { ...target };\n Object.defineProperties(\n target,\n Object.fromEntries(\n Object.keys(target).map((k) => [\n k,\n keys.includes(k) ? {} : { enumerable: false },\n ]),\n ),\n );\n return target;\n}\n\n/**\n * Query Helper\n */\nexport class QueryHelper<X extends object> {\n #db: X;\n #opts: QueryHelperOptions<X>;\n\n constructor(db: X, opts: QueryHelperOptions<X> = {}) {\n this.#db = db;\n this.#opts = { ...opts };\n\n // set query function\n if (!this.#opts.query) {\n if ('query' in db && typeof db.query === 'function') {\n // default\n this.#opts.query = db.query as QueryableFunction<X>;\n }\n }\n }\n\n #parseQueryTemplateStyle(args: QueryTemplateOrSimpleQuery): QueryConfig {\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n return sql(texts, ...values);\n }\n\n const [query, values] = args;\n\n if (typeof query === 'object' && query && 'text' in query) {\n return { ...query, values: query.values ?? [] };\n }\n\n return { text: query, values: values ?? [] };\n }\n\n async #query<T extends QueryResultRow>(\n args: QueryTemplateOrSimpleQuery,\n ): Promise<pgQueryResult<X, T>> {\n const query = this.#parseQueryTemplateStyle(args);\n\n this.#opts?.beforeQuery?.(query);\n\n const queryFn = this.#opts.query;\n if (!queryFn) throw new Error('Missing query function');\n const results = await queryFn.call(this.#db, query).catch((e: unknown) => {\n this.#opts?.onError?.(query, e);\n throw e;\n });\n\n if (typeof results.rowCount !== 'number') {\n results.rowCount = results.rows?.length ?? 0;\n }\n\n this.#opts?.afterQuery?.({\n ...query,\n results: hidePropertyExcludes(results, ['command', 'rowCount', 'rows']),\n });\n\n return results as pgQueryResult<X, T>;\n }\n\n // ======================================================================\n // query executors\n\n async insert<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n appendix?: string | QueryFragment,\n ) {\n const query = buildInsert(table, fv, appendix);\n return await this.#query<T>([query]);\n }\n\n async update<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildUpdate(table, fv, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async delete<T extends QueryResultRow>(\n table: string,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildDelete(table, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async query<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args);\n }\n\n async getRows<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows);\n }\n\n async getRow<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows?.[0] as T | undefined);\n }\n\n async getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<[T]>(args).then(\n (x) => Object.values(x.rows?.[0] ?? {})?.[0] as T | undefined,\n );\n }\n\n async getCount(...args: QueryTemplateOrSimpleQuery) {\n return this.#query(args).then((x) => x.rowCount);\n }\n\n async exec(...args: QueryTemplateOrSimpleQuery) {\n // same as getCount\n return this.#query(args).then((x) => x.rowCount);\n }\n\n // ======================================================================\n // query adapters\n\n // Prisma adapter: NB; It only supports a query return rows\n public static get prisma() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if (\n '$queryRawUnsafe' in this &&\n typeof this.$queryRawUnsafe === 'function'\n ) {\n const rows: T[] = await this.$queryRawUnsafe(text, ...values);\n return {\n rows: rows,\n rowCount: rows.length,\n };\n }\n throw new Error('Invalid object');\n };\n }\n\n // TypeORM adapter\n public static get typeorm() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if ('query' in this && typeof this.query === 'function') {\n const rows: unknown[] = await this.query(text, values);\n\n // returns with row count\n if (\n rows.length === 2 &&\n Array.isArray(rows[0]) &&\n typeof rows[1] === 'number'\n ) {\n return { rows: rows[0], rowCount: rows[1] };\n }\n\n return {\n rows,\n rowCount: rows.length,\n } as { rows: T[]; rowCount: number };\n }\n throw new Error('Invalid object');\n };\n }\n}\n\ntype Overwrite<T, Q> = Omit<T, keyof Q> & Q;\ntype MethodChainRewrite<T, Q> = {\n [K in keyof T]: T[K] extends (...args: infer R) => T\n ? (...args: R) => Override<T, Q>\n : T[K] extends T\n ? Override<T, Q>\n : T[K];\n};\ntype Override<T, Q> = Overwrite<MethodChainRewrite<T, Q>, Q>;\n\nexport type WithQueryHelper<T extends object> = Override<T, QueryHelper<T>>;\n\n/**\n * Returns a proxy object that overrides the queryable instance `db` by Query Helper utilities\n * @param db - Queryable object to be wrapped\n */\nexport function withQueryHelper<T extends Queryable<T>>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts: Overwrite<QueryHelperOptions<T>, Queryable<T>>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T> {\n const qh = new QueryHelper<T>(db, opts);\n const proxy: unknown = new Proxy(db, {\n get(db, key, receiver) {\n const target = key in qh ? qh : key in db ? db : undefined;\n const value = target && Reflect.get(target, key);\n\n if (value && value instanceof Function) {\n return function (this: unknown, ...args: unknown[]) {\n const result = value.apply(this === receiver ? target : this, args);\n return result === db ? proxy : result;\n };\n }\n\n return value === db ? proxy : value;\n },\n });\n\n return proxy as WithQueryHelper<T>;\n}\n"],
5
+ "mappings": "4yBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,SAAAE,EAAA,UAAAC,GAAA,WAAAC,GAAA,OAAAC,EAAA,mBAAAC,EAAA,gBAAAC,EAAA,UAAAC,GAAA,cAAAC,GAAA,UAAAC,EAAA,cAAAC,GAAA,aAAAC,EAAA,QAAAC,GAAA,iBAAAC,EAAA,gBAAAC,EAAA,gBAAAC,EAAA,cAAAC,EAAA,gBAAAC,EAAA,gBAAAC,EAAA,UAAAC,GAAA,oBAAAC,EAAA,yBAAAC,EAAA,SAAAC,GAAA,OAAAC,GAAA,YAAAC,EAAA,aAAAC,EAAA,QAAAC,EAAA,QAAAC,EAAA,UAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,oBAAAC,KAAA,eAAAC,GAAAjC,ICAA,IAAMkC,GAAmB,CAEvB,SACA,SACA,MACA,iBACA,UACA,UACA,MACA,MACA,QACA,KACA,MACA,gBACA,SACA,UACA,SACA,eACA,OACA,WACA,OACA,OACA,QACA,UACA,SACA,aACA,SACA,cACA,QACA,eACA,eACA,oBACA,eACA,kBACA,UACA,aACA,UACA,SACA,QACA,WACA,OACA,UACA,WACA,KACA,OACA,cACA,SACA,SACA,UACA,aACA,MACA,SACA,WACA,QACA,MACA,UACA,SACA,OACA,OACA,gBACA,gBACA,QACA,QACA,OACA,SACA,WACA,SACA,QACA,KACA,YACA,QACA,YACA,OACA,KACA,SACA,OACA,UACA,OACA,OACA,QACA,YACA,iBACA,MACA,OACA,MACA,OACA,QACA,WACA,WACA,UACA,UACA,MACA,MACA,UACA,OACA,QACA,MACA,UACA,SACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,WACA,WACA,YACA,UACA,UACA,UACA,MACA,YACA,UACA,aACA,YACA,SACA,UACA,QACA,SACA,eACA,UACA,OACA,UACA,SACA,QACA,MACA,OACA,UACA,UACA,OACA,KACA,MACA,WACA,OACA,kBACA,QACA,SACA,OACA,QACA,UACA,SACA,OACA,QACA,OACA,SACF,EAEO,SAASC,EAAWC,EAAY,CACrC,OACEA,EAAG,MAAM,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",
6
+ "names": ["src_exports", "__export", "AND", "LIMIT", "OFFSET", "OR", "QueryFragments", "QueryHelper", "UNION", "UNION_ALL", "WHERE", "WHERE_AND", "WHERE_OR", "and", "buildClauses", "buildDelete", "buildInsert", "buildKeys", "buildUpdate", "buildValues", "ident", "isQueryFragment", "isQueryTemplateStyle", "json", "or", "pgIdent", "pgString", "raw", "sql", "where", "where_and", "where_or", "withQueryHelper", "__toCommonJS", "reservedKeywords", "quoteIdent", "id", "quoteLiteral", "s", "pgIdent", "s", "x", "quoteIdent", "pgString", "quoteLiteral", "QueryFragmentBase", "values", "text", "embed", "_value", "QueryFragmentValue", "value", "__privateAdd", "__privateSet", "opts", "__privateGet", "_ident", "QueryFragmentIdent", "ident", "_string", "QueryFragmentRawString", "isQueryFragment", "makeIdent", "name", "makeValue", "makeRaw", "QueryFragments", "makeJsonValue", "isQueryTemplateStyle", "args", "texts", "sewTemplateTextsAndValues", "idx", "_list", "_opts", "prefix", "glue", "suffix", "empty", "children", "sql", "fragments", "raw", "json", "wrapperFn", "buildClauses", "clauses", "parse", "val", "key", "OR", "fv", "AND", "WHERE", "WHERE_OR", "UNION_ALL", "UNION", "LIMIT", "limit", "OFFSET", "offset", "buildValues", "fvs", "array", "sig", "arg", "v", "buildKeys", "_", "ks", "buildInsert", "table", "appendix", "keys", "buildUpdate", "where", "pairs", "k", "buildDelete", "or", "and", "WHERE_AND", "where_and", "where_or", "hidePropertyExcludes", "target", "keys", "k", "_db", "_opts", "_QueryHelper_instances", "parseQueryTemplateStyle_fn", "query_fn", "QueryHelper", "db", "opts", "__privateAdd", "__privateSet", "__privateGet", "table", "fv", "appendix", "query", "buildInsert", "__privateMethod", "where", "buildUpdate", "buildDelete", "args", "x", "text", "values", "rows", "isQueryTemplateStyle", "texts", "sql", "queryFn", "results", "e", "withQueryHelper", "qh", "proxy", "key", "receiver", "value", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var k=(e,r,t)=>{if(!r.has(e))throw TypeError("Cannot "+t)};var s=(e,r,t)=>(k(e,r,"read from private field"),t?t.call(e):r.get(e)),l=(e,r,t)=>{if(r.has(e))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(e):r.set(e,t)},y=(e,r,t,n)=>(k(e,r,"write to private field"),n?n.call(e,t):r.set(e,t),t);var c=(e,r,t)=>(k(e,r,"access private method"),t);var te=["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BYTEDICT","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY13","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"];function Y(e){return e.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/)&&!te.includes(e.toUpperCase())?e:`"${e.replace(/"/g,'""')}"`}function L(e){return`${e.includes("'")?"E":""}'${e.replace(/'/g,"''").replace(/\\/g,"\\\\")}'`}function re(e){return e.split(".").map(r=>Y(r)).join(".")}function D(e){return e===null?"NULL":typeof e=="boolean"?e?"true":"false":Array.isArray(e)?"ARRAY["+e.map(D).join(",")+"]":typeof e=="object"?"toJSON"in e&&typeof e.toJSON=="function"?L(e.toJSON()):L(e.toString()):L(String(e))}var h=class{constructor(){this.text="";this.values=[];this.embed="";Object.defineProperties(this,{text:{enumerable:!0,get(){return this.compiled.text}},values:{enumerable:!0,get(){return this.compiled.values}},embed:{enumerable:!0,get(){return this.compiled.embed}}})}get compiled(){let r=[],t=this.toString({valueFn:u=>(r.push(u),"$"+r.length)}),n=this.toString();return{text:t,values:r,embed:n}}},Q,U=class extends h{constructor(t){super();l(this,Q,void 0);y(this,Q,t)}toString(t){return(t?.valueFn??D)(s(this,Q))}};Q=new WeakMap;var A,j=class extends h{constructor(t){super();l(this,A,void 0);y(this,A,t)}toString(t){return(t?.identFn??re)(s(this,A))}};A=new WeakMap;var S,q=class extends h{constructor(t){super();l(this,S,void 0);y(this,S,String(t))}toString(){return s(this,S)}};S=new WeakMap;function O(e){return e instanceof h}function g(e){return new j(e)}function _(e){return typeof e>"u"||O(e)?e:new U(e)}function d(e){return typeof e>"u"||O(e)?e:Array.isArray(e)?new T(e.map(d)):new q(e)}function v(e){return typeof e>"u"||O(e)?e:d(JSON.stringify(e))}var F=e=>{if(!Array.isArray(e)||typeof e?.[0]!="object"||e[0]===null||!("raw"in e[0])||!Array.isArray(e[0]))return!1;let[r,...t]=e;return r.length-1===t.length};function G(e,r){if(e.length-1!==r.length)throw new Error("Invalid call of the function");return e.flatMap((t,n)=>n?[r[n-1],t]:[t])}var w,o,T=class extends h{constructor(...t){super();l(this,w,[]);l(this,o,void 0);if(y(this,o,{prefix:"",glue:"",suffix:"",empty:"",wrapperFn:n=>n}),Array.isArray(t[0])){let[n,u]=t;y(this,o,{...s(this,o),...u}),this.push(...n)}else{let[n]=t;y(this,o,{...s(this,o),...n})}}setSewingPattern(t="",n="",u="",a=""){return y(this,o,{...s(this,o),prefix:t,glue:n,suffix:u,empty:a}),this}push(...t){return s(this,w).push(...t.map(d).filter(n=>n!==void 0)),this}append(...t){return this.push(...t)}join(t=", "){return s(this,o).glue=t,this}prefix(t=" "){return s(this,o).prefix=t,this}suffix(t=" "){return s(this,o).suffix=t,this}empty(t=""){return s(this,o).empty=t,this}toString(t){return s(this,w).length===0?s(this,o).empty:s(this,o).prefix+s(this,o).wrapperFn(s(this,w).map(n=>n.toString(t)).join(s(this,o).glue),t)+s(this,o).suffix}};w=new WeakMap,o=new WeakMap;function i(...e){let r;if(F(e)){let[t,...n]=e;r=[new T(G(t.map(d),n.map(_)))]}else r=e.map(_);return new T(r)}var ne=g;function P(...e){return new T(e.map(d))}function ue(...e){let r,t=(n,u)=>(u?.valueFn||D)(n);if(F(e)){let[n,...u]=e;r=[new T(G(n.map(d),u.map(v)),{wrapperFn:t})]}else r=e.map(n=>new T([v(n)],{wrapperFn:t}));return new T(r)}function I(...e){let r=new T,t=n=>{if(n!==void 0&&n!==null){if(typeof n=="string"){r.push(d(n));return}if(O(n)){r.push(n);return}if(Array.isArray(n)){n.forEach(t);return}if(typeof n=="object"){for(let u in n)if(n[u]!==void 0){if(O(n[u])){r.push(i`${g(u)} ${n[u]}`);continue}if(n[u]===null){r.push(i`${g(u)} IS NULL`);continue}if(Array.isArray(n[u])){r.push(i`${g(u)} = ANY (${n[u]})`);continue}r.push(i`${g(u)} = ${n[u]}`)}return}}};return t(e),r}function X(...e){return I(e).setSewingPattern("((",") OR (","))","false")}function K(...e){return I(e).setSewingPattern("((",") AND (","))","true")}function m(...e){return I(e).setSewingPattern("WHERE ((",") AND (","))","")}function B(...e){return I(e).setSewingPattern("WHERE ((",") OR (","))","")}function ie(...e){return P(...e).join(" UNION ALL ")}function se(...e){return P(...e).join(" UNION ")}function oe(e){return e==null?i``:(e=Number(e),e>0?i`LIMIT ${e}`:i``)}function ae(e){return e==null?i``:(e=Number(e),e>=0?i`OFFSET ${e}`:i``)}function Z(e){if(!Array.isArray(e)){if(typeof e!="object")throw new Error("buildValues: The argument must be an array");e=[e]}if(e.length===0)throw new Error("buildValues: Array must contain elements at least one");let r=e.map(u=>typeof u=="object"?Object.values(u):u),t=r[0].length;if(r.some(u=>u.length!==t))throw new Error("buildValues: Array must all be the same length");let n=i(...r.map(u=>i(...u).join(", "))).setSewingPattern("(","), (",")");return i`VALUES ${n}`}function J(e){if(Array.isArray(e)||(e=[e]),e.length==0||!e[0]||typeof e[0]!="object")throw new Error("Invalid call of the function");e=e.map(n=>Object.fromEntries(Object.entries(n).filter(([u,a])=>a!==void 0)));let r=Object.keys(e[0]),t=r.join();if(e.some(n=>Object.keys(n).join()!==t))throw new Error("buildKeys: All objects must have the same keys");return i(...r.map(g)).setSewingPattern("(",", ",")")}function W(e,r,t){Array.isArray(r)||(r=[r]);let n=J(r),u=Z(r.map(Object.values));return i`INSERT INTO ${g(e)} ${n} ${u}`.append(t).join(" ")}function H(e,r,t,n){let u=new T;for(let a in r){let N=r[a];N!==void 0&&u.push(i`${g(a)} = ${N}`)}return i`UPDATE ${g(e)} SET ${u.join(", ")} ${m(t)}`.append(n).join(" ")}function $(e,r,t){return i`DELETE FROM ${g(e)} ${m(r)}`.append(t).join(" ")}var pe=X,le=K,ye=m,ce=m,Te=m,ge=B;i.raw=P;i.ident=ne;i.json=ue;i.WHERE=m;i.WHERE_AND=ce;i.WHERE_OR=B;i.AND=K;i.OR=X;i.where=ye;i.where_and=Te;i.where_or=ge;i.and=le;i.or=pe;i.insert=W;i.update=H;i.delete=$;i.keys=J;i.values=Z;i.UNION_ALL=ie;i.UNION=se;i.LIMIT=oe;i.OFFSET=ae;function fe(e,r){return e={...e},Object.defineProperties(e,Object.fromEntries(Object.keys(e).map(t=>[t,r.includes(t)?{}:{enumerable:!1}]))),e}var x,E,b,z,p,f,M=class{constructor(r,t={}){l(this,b);l(this,p);l(this,x,void 0);l(this,E,void 0);y(this,x,r),y(this,E,{...t}),s(this,E).query||"query"in r&&typeof r.query=="function"&&(s(this,E).query=r.query)}async insert(r,t,n){let u=W(r,t,n);return await c(this,p,f).call(this,[u])}async update(r,t,n,u){let a=H(r,t,n,u);return await c(this,p,f).call(this,[a])}async delete(r,t,n){let u=$(r,t,n);return await c(this,p,f).call(this,[u])}async query(...r){return c(this,p,f).call(this,r)}async getRows(...r){return c(this,p,f).call(this,r).then(t=>t.rows)}async getRow(...r){return c(this,p,f).call(this,r).then(t=>t.rows?.[0])}async getOne(...r){return c(this,p,f).call(this,r).then(t=>Object.values(t.rows?.[0]??{})?.[0])}async getCount(...r){return c(this,p,f).call(this,r).then(t=>t.rowCount)}async exec(...r){return c(this,p,f).call(this,r).then(t=>t.rowCount)}static get prisma(){return async function({text:r,values:t}){if("$queryRawUnsafe"in this&&typeof this.$queryRawUnsafe=="function"){let n=await this.$queryRawUnsafe(r,...t);return{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}static get typeorm(){return async function({text:r,values:t}){if("query"in this&&typeof this.query=="function"){let n=await this.query(r,t);return n.length===2&&Array.isArray(n[0])&&typeof n[1]=="number"?{rows:n[0],rowCount:n[1]}:{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}};x=new WeakMap,E=new WeakMap,b=new WeakSet,z=function(r){if(F(r)){let[u,...a]=r;return i(u,...a)}let[t,n]=r;return typeof t=="object"&&t&&"text"in t?{...t,values:t.values??[]}:{text:t,values:n??[]}},p=new WeakSet,f=async function(r){let t=c(this,b,z).call(this,r);s(this,E)?.beforeQuery?.(t);let n=s(this,E).query;if(!n)throw new Error("Missing query function");let u=await n.call(s(this,x),t).catch(a=>{throw s(this,E)?.onError?.(t,a),a});return typeof u.rowCount!="number"&&(u.rowCount=u.rows?.length??0),s(this,E)?.afterQuery?.({...t,results:fe(u,["command","rowCount","rows"])}),u};function Oe(e,r){let t=new M(e,r),n=new Proxy(e,{get(u,a,N){let C=a in t?t:a in u?u:void 0,R=C&&Reflect.get(C,a);return R&&R instanceof Function?function(...ee){let V=R.apply(this===N?C:this,ee);return V===u?n:V}:R===u?n:R}});return n}export{K as AND,oe as LIMIT,ae as OFFSET,X as OR,T as QueryFragments,M as QueryHelper,se as UNION,ie as UNION_ALL,m as WHERE,ce as WHERE_AND,B as WHERE_OR,le as and,I as buildClauses,$ as buildDelete,W as buildInsert,J as buildKeys,H as buildUpdate,Z as buildValues,ne as ident,O as isQueryFragment,F as isQueryTemplateStyle,ue as json,pe as or,re as pgIdent,D as pgString,P as raw,i as sql,ye as where,Te as where_and,ge as where_or,Oe as withQueryHelper};
1
+ var V=e=>{throw TypeError(e)};var C=(e,r,t)=>r.has(e)||V("Cannot "+t);var s=(e,r,t)=>(C(e,r,"read from private field"),t?t.call(e):r.get(e)),T=(e,r,t)=>r.has(e)?V("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(e):r.set(e,t),l=(e,r,t,n)=>(C(e,r,"write to private field"),n?n.call(e,t):r.set(e,t),t),y=(e,r,t)=>(C(e,r,"access private method"),t);var te=["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BYTEDICT","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY13","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"];function Y(e){return e.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/)&&!te.includes(e.toUpperCase())?e:`"${e.replace(/"/g,'""')}"`}function L(e){return`${e.includes("'")?"E":""}'${e.replace(/'/g,"''").replace(/\\/g,"\\\\")}'`}function re(e){return e.split(".").map(r=>Y(r)).join(".")}function q(e){return e===null?"NULL":typeof e=="boolean"?e?"true":"false":Array.isArray(e)?"ARRAY["+e.map(q).join(",")+"]":typeof e=="object"?"toJSON"in e&&typeof e.toJSON=="function"?L(e.toJSON()):L(e.toString()):L(String(e))}var h=class{constructor(){this.text="";this.values=[];this.embed="";Object.defineProperties(this,{text:{enumerable:!0,get(){return this.compiled.text}},values:{enumerable:!0,get(){return this.compiled.values}},embed:{enumerable:!0,get(){return this.compiled.embed}}})}get compiled(){let r=[],t=this.toString({valueFn:u=>(r.push(u),"$"+r.length)}),n=this.toString();return{text:t,values:r,embed:n}}},O,k=class extends h{constructor(t){super();T(this,O);l(this,O,t)}toString(t){return(t?.valueFn??q)(s(this,O))}};O=new WeakMap;var Q,U=class extends h{constructor(t){super();T(this,Q);l(this,Q,t)}toString(t){return(t?.identFn??re)(s(this,Q))}};Q=new WeakMap;var A,j=class extends h{constructor(t){super();T(this,A);l(this,A,String(t))}toString(){return s(this,A)}};A=new WeakMap;function R(e){return e instanceof h}function g(e){return new U(e)}function _(e){return typeof e>"u"||R(e)?e:new k(e)}function d(e){return typeof e>"u"||R(e)?e:Array.isArray(e)?new c(e.map(d)):new j(e)}function v(e){return typeof e>"u"||R(e)?e:d(JSON.stringify(e))}var F=e=>{if(!Array.isArray(e)||typeof e?.[0]!="object"||e[0]===null||!("raw"in e[0])||!Array.isArray(e[0]))return!1;let[r,...t]=e;return r.length-1===t.length};function G(e,r){if(e.length-1!==r.length)throw new Error("Invalid call of the function");return e.flatMap((t,n)=>n?[r[n-1],t]:[t])}var S,o,c=class extends h{constructor(...t){super();T(this,S,[]);T(this,o);if(l(this,o,{prefix:"",glue:"",suffix:"",empty:"",wrapperFn:n=>n}),Array.isArray(t[0])){let[n,u]=t;l(this,o,{...s(this,o),...u}),this.push(...n)}else{let[n]=t;l(this,o,{...s(this,o),...n})}}setSewingPattern(t="",n="",u="",a=""){return l(this,o,{...s(this,o),prefix:t,glue:n,suffix:u,empty:a}),this}push(...t){return s(this,S).push(...t.map(d).filter(n=>n!==void 0)),this}append(...t){return this.push(...t)}join(t=", "){return s(this,o).glue=t,this}prefix(t=" "){return s(this,o).prefix=t,this}suffix(t=" "){return s(this,o).suffix=t,this}empty(t=""){return s(this,o).empty=t,this}toString(t){let n=s(this,S).map(u=>u.toString(t)).filter(u=>u).join(s(this,o).glue);return n?s(this,o).prefix+s(this,o).wrapperFn(n,t)+s(this,o).suffix:s(this,o).empty}};S=new WeakMap,o=new WeakMap;function i(...e){let r;if(F(e)){let[t,...n]=e;r=[new c(G(t.map(d),n.map(_)))]}else r=e.map(_);return new c(r)}var ne=g;function D(...e){return new c(e.map(d))}function ue(...e){let r,t=(n,u)=>(u?.valueFn||q)(n);if(F(e)){let[n,...u]=e;r=[new c(G(n.map(d),u.map(v)),{wrapperFn:t})]}else r=e.map(n=>new c([v(n)],{wrapperFn:t}));return new c(r)}function I(...e){let r=new c,t=n=>{if(n!==void 0&&n!==null){if(typeof n=="string"){r.push(d(n));return}if(R(n)){r.push(n);return}if(Array.isArray(n)){n.forEach(t);return}if(typeof n=="object"){for(let u in n)if(n[u]!==void 0){if(R(n[u])){r.push(i`${g(u)} ${n[u]}`);continue}if(n[u]===null){r.push(i`${g(u)} IS NULL`);continue}if(Array.isArray(n[u])){r.push(i`${g(u)} = ANY (${n[u]})`);continue}r.push(i`${g(u)} = ${n[u]}`)}return}}};return t(e),r}function X(...e){return I(e).setSewingPattern("((",") OR (","))","")}function K(...e){return I(e).setSewingPattern("((",") AND (","))","")}function w(...e){return I(e).setSewingPattern("WHERE ((",") AND (","))","")}function B(...e){return I(e).setSewingPattern("WHERE ((",") OR (","))","")}function ie(...e){return D(...e).join(" UNION ALL ")}function se(...e){return D(...e).join(" UNION ")}function oe(e){return e==null?i``:(e=Number(e),e>0?i`LIMIT ${e}`:i``)}function ae(e){return e==null?i``:(e=Number(e),e>=0?i`OFFSET ${e}`:i``)}function Z(e){if(!Array.isArray(e)){if(typeof e!="object")throw new Error("buildValues: The argument must be an array");e=[e]}if(e.length===0)throw new Error("buildValues: Array must contain elements at least one");let r=e.map(u=>typeof u=="object"?Object.values(u):u),t=r[0].length;if(r.some(u=>u.length!==t))throw new Error("buildValues: Array must all be the same length");let n=i(...r.map(u=>i(...u).join(", "))).setSewingPattern("(","), (",")");return i`VALUES ${n}`}function J(e){if(Array.isArray(e)||(e=[e]),e.length==0||!e[0]||typeof e[0]!="object")throw new Error("Invalid call of the function");e=e.map(n=>Object.fromEntries(Object.entries(n).filter(([u,a])=>a!==void 0)));let r=Object.keys(e[0]),t=r.join();if(e.some(n=>Object.keys(n).join()!==t))throw new Error("buildKeys: All objects must have the same keys");return i(...r.map(g)).setSewingPattern("(",", ",")")}function P(e,r,t){Array.isArray(r)||(r=[r]);let n=J(r),u=Z(r.map(Object.values));return i`INSERT INTO ${g(e)} ${n} ${u}`.append(t).join(" ")}function W(e,r,t,n){let u=new c;for(let a in r){let N=r[a];N!==void 0&&u.push(i`${g(a)} = ${N}`)}return i`UPDATE ${g(e)} SET ${u.join(", ")} ${w(t)}`.append(n).join(" ")}function H(e,r,t){return i`DELETE FROM ${g(e)} ${w(r)}`.append(t).join(" ")}var pe=X,le=K,ye=w,ce=w,Te=w,ge=B;i.raw=D;i.ident=ne;i.json=ue;i.WHERE=w;i.WHERE_AND=ce;i.WHERE_OR=B;i.AND=K;i.OR=X;i.where=ye;i.where_and=Te;i.where_or=ge;i.and=le;i.or=pe;i.insert=P;i.update=W;i.delete=H;i.keys=J;i.values=Z;i.UNION_ALL=ie;i.UNION=se;i.LIMIT=oe;i.OFFSET=ae;function fe(e,r){return e={...e},Object.defineProperties(e,Object.fromEntries(Object.keys(e).map(t=>[t,r.includes(t)?{}:{enumerable:!1}]))),e}var x,E,p,z,f,$=class{constructor(r,t={}){T(this,p);T(this,x);T(this,E);l(this,x,r),l(this,E,{...t}),s(this,E).query||"query"in r&&typeof r.query=="function"&&(s(this,E).query=r.query)}async insert(r,t,n){let u=P(r,t,n);return await y(this,p,f).call(this,[u])}async update(r,t,n,u){let a=W(r,t,n,u);return await y(this,p,f).call(this,[a])}async delete(r,t,n){let u=H(r,t,n);return await y(this,p,f).call(this,[u])}async query(...r){return y(this,p,f).call(this,r)}async getRows(...r){return y(this,p,f).call(this,r).then(t=>t.rows)}async getRow(...r){return y(this,p,f).call(this,r).then(t=>t.rows?.[0])}async getOne(...r){return y(this,p,f).call(this,r).then(t=>Object.values(t.rows?.[0]??{})?.[0])}async getCount(...r){return y(this,p,f).call(this,r).then(t=>t.rowCount)}async exec(...r){return y(this,p,f).call(this,r).then(t=>t.rowCount)}static get prisma(){return async function({text:r,values:t}){if("$queryRawUnsafe"in this&&typeof this.$queryRawUnsafe=="function"){let n=await this.$queryRawUnsafe(r,...t);return{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}static get typeorm(){return async function({text:r,values:t}){if("query"in this&&typeof this.query=="function"){let n=await this.query(r,t);return n.length===2&&Array.isArray(n[0])&&typeof n[1]=="number"?{rows:n[0],rowCount:n[1]}:{rows:n,rowCount:n.length}}throw new Error("Invalid object")}}};x=new WeakMap,E=new WeakMap,p=new WeakSet,z=function(r){if(F(r)){let[u,...a]=r;return i(u,...a)}let[t,n]=r;return typeof t=="object"&&t&&"text"in t?{...t,values:t.values??[]}:{text:t,values:n??[]}},f=async function(r){let t=y(this,p,z).call(this,r);s(this,E)?.beforeQuery?.(t);let n=s(this,E).query;if(!n)throw new Error("Missing query function");let u=await n.call(s(this,x),t).catch(a=>{throw s(this,E)?.onError?.(t,a),a});return typeof u.rowCount!="number"&&(u.rowCount=u.rows?.length??0),s(this,E)?.afterQuery?.({...t,results:fe(u,["command","rowCount","rows"])}),u};function Oe(e,r){let t=new $(e,r),n=new Proxy(e,{get(u,a,N){let b=a in t?t:a in u?u:void 0,m=b&&Reflect.get(b,a);return m&&m instanceof Function?function(...ee){let M=m.apply(this===N?b:this,ee);return M===u?n:M}:m===u?n:m}});return n}export{K as AND,oe as LIMIT,ae as OFFSET,X as OR,c as QueryFragments,$ as QueryHelper,se as UNION,ie as UNION_ALL,w as WHERE,ce as WHERE_AND,B as WHERE_OR,le as and,I as buildClauses,H as buildDelete,P as buildInsert,J as buildKeys,W as buildUpdate,Z as buildValues,ne as ident,R as isQueryFragment,F as isQueryTemplateStyle,ue as json,pe as or,re as pgIdent,q as pgString,D as raw,i as sql,ye as where,Te as where_and,ge as where_or,Oe as withQueryHelper};
2
2
  //# sourceMappingURL=index.esm.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/quote.ts", "../src/query-weaver.ts", "../src/query-helper.ts"],
4
- "sourcesContent": ["const reservedKeywords = [\n // copied from pg-escape's reserved.txt\n 'AES128',\n 'AES256',\n 'ALL',\n 'ALLOWOVERWRITE',\n 'ANALYSE',\n 'ANALYZE',\n 'AND',\n 'ANY',\n 'ARRAY',\n 'AS',\n 'ASC',\n 'AUTHORIZATION',\n 'BACKUP',\n 'BETWEEN',\n 'BINARY',\n 'BLANKSASNULL',\n 'BOTH',\n 'BYTEDICT',\n 'CASE',\n 'CAST',\n 'CHECK',\n 'COLLATE',\n 'COLUMN',\n 'CONSTRAINT',\n 'CREATE',\n 'CREDENTIALS',\n 'CROSS',\n 'CURRENT_DATE',\n 'CURRENT_TIME',\n 'CURRENT_TIMESTAMP',\n 'CURRENT_USER',\n 'CURRENT_USER_ID',\n 'DEFAULT',\n 'DEFERRABLE',\n 'DEFLATE',\n 'DEFRAG',\n 'DELTA',\n 'DELTA32K',\n 'DESC',\n 'DISABLE',\n 'DISTINCT',\n 'DO',\n 'ELSE',\n 'EMPTYASNULL',\n 'ENABLE',\n 'ENCODE',\n 'ENCRYPT',\n 'ENCRYPTION',\n 'END',\n 'EXCEPT',\n 'EXPLICIT',\n 'FALSE',\n 'FOR',\n 'FOREIGN',\n 'FREEZE',\n 'FROM',\n 'FULL',\n 'GLOBALDICT256',\n 'GLOBALDICT64K',\n 'GRANT',\n 'GROUP',\n 'GZIP',\n 'HAVING',\n 'IDENTITY',\n 'IGNORE',\n 'ILIKE',\n 'IN',\n 'INITIALLY',\n 'INNER',\n 'INTERSECT',\n 'INTO',\n 'IS',\n 'ISNULL',\n 'JOIN',\n 'LEADING',\n 'LEFT',\n 'LIKE',\n 'LIMIT',\n 'LOCALTIME',\n 'LOCALTIMESTAMP',\n 'LUN',\n 'LUNS',\n 'LZO',\n 'LZOP',\n 'MINUS',\n 'MOSTLY13',\n 'MOSTLY32',\n 'MOSTLY8',\n 'NATURAL',\n 'NEW',\n 'NOT',\n 'NOTNULL',\n 'NULL',\n 'NULLS',\n 'OFF',\n 'OFFLINE',\n 'OFFSET',\n 'OLD',\n 'ON',\n 'ONLY',\n 'OPEN',\n 'OR',\n 'ORDER',\n 'OUTER',\n 'OVERLAPS',\n 'PARALLEL',\n 'PARTITION',\n 'PERCENT',\n 'PLACING',\n 'PRIMARY',\n 'RAW',\n 'READRATIO',\n 'RECOVER',\n 'REFERENCES',\n 'REJECTLOG',\n 'RESORT',\n 'RESTORE',\n 'RIGHT',\n 'SELECT',\n 'SESSION_USER',\n 'SIMILAR',\n 'SOME',\n 'SYSDATE',\n 'SYSTEM',\n 'TABLE',\n 'TAG',\n 'TDES',\n 'TEXT255',\n 'TEXT32K',\n 'THEN',\n 'TO',\n 'TOP',\n 'TRAILING',\n 'TRUE',\n 'TRUNCATECOLUMNS',\n 'UNION',\n 'UNIQUE',\n 'USER',\n 'USING',\n 'VERBOSE',\n 'WALLET',\n 'WHEN',\n 'WHERE',\n 'WITH',\n 'WITHOUT',\n];\n\nexport function quoteIdent(id: string) {\n if (\n id.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/) &&\n !reservedKeywords.includes(id.toUpperCase())\n ) {\n return id;\n }\n return `\"${id.replace(/\"/g, '\"\"')}\"`;\n}\n\nexport function quoteLiteral(s: string) {\n const prefix = s.includes(\"'\") ? 'E' : '';\n return `${prefix}'${s.replace(/'/g, \"''\").replace(/\\\\/g, '\\\\\\\\')}'`;\n}\n\nexport default {\n quoteIdent,\n quoteLiteral,\n};\n", "type EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nimport { quoteIdent, quoteLiteral } from './quote';\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => quoteIdent(x))\n .join('.');\n}\n\n// fallback function for when the EscapeFunction is not specified\nexport function pgString(s: unknown): string {\n if (s === null) return 'NULL';\n if (typeof s === 'boolean') return s ? 'true' : 'false';\n if (Array.isArray(s)) return 'ARRAY[' + s.map(pgString).join(',') + ']';\n if (typeof s === 'object') {\n if ('toJSON' in s && typeof s.toJSON === 'function') {\n return quoteLiteral(s.toJSON());\n }\n return quoteLiteral(s.toString());\n }\n return quoteLiteral(String(s));\n}\n\ntype QueryFragmentToStringOptions = {\n valueFn?: EscapeFunction;\n identFn?: EscapeFunction;\n};\n\nexport interface QueryFragment {\n text: string;\n values?: unknown[];\n embed?: string;\n sql?: string;\n\n toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nabstract class QueryFragmentBase implements QueryFragment {\n // XXX: entries for defineProperties\n text: string = '';\n values: unknown[] = [];\n embed?: string = '';\n\n get compiled() {\n const values = [] as unknown[];\n const text = this.toString({\n valueFn: (x: unknown) => {\n values.push(x);\n return '$' + values.length;\n },\n });\n const embed = this.toString();\n\n return {\n text,\n values,\n embed,\n };\n }\n\n constructor() {\n Object.defineProperties(this, {\n text: {\n enumerable: true,\n get() {\n return this.compiled.text;\n },\n },\n values: {\n enumerable: true,\n get() {\n return this.compiled.values;\n },\n },\n embed: {\n enumerable: true,\n get() {\n return this.compiled.embed;\n },\n },\n });\n }\n\n abstract toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nclass QueryFragmentValue extends QueryFragmentBase {\n #value: unknown;\n\n constructor(value: unknown) {\n super();\n this.#value = value;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.valueFn ?? pgString)(this.#value);\n }\n}\n\nclass QueryFragmentIdent extends QueryFragmentBase {\n #ident: string;\n\n constructor(ident: string) {\n super();\n this.#ident = ident;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.identFn ?? pgIdent)(this.#ident);\n }\n}\n\n// we exploits String constructor\nclass QueryFragmentRawString extends QueryFragmentBase {\n #string: string;\n\n constructor(s: unknown) {\n super();\n this.#string = String(s);\n }\n\n /* toString(_?: QueryFragmentToStringOptions) { */\n toString() {\n return this.#string;\n }\n}\n\nexport function isQueryFragment(x: unknown): x is QueryFragment {\n return x instanceof QueryFragmentBase;\n}\n\nfunction makeIdent(name: string) {\n return new QueryFragmentIdent(name);\n}\n\nfunction makeValue(x: unknown): QueryFragment | undefined {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return new QueryFragmentValue(x);\n}\n\nfunction makeRaw(text: unknown | unknown[]): QueryFragment | undefined {\n if (typeof text === 'undefined' || isQueryFragment(text)) return text;\n if (Array.isArray(text)) return new QueryFragments(text.map(makeRaw));\n return new QueryFragmentRawString(text);\n}\n\nfunction makeJsonValue(x: unknown) {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return makeRaw(JSON.stringify(x));\n}\n\ntype QueryFragmentsOptions = {\n prefix?: string;\n glue?: string;\n suffix?: string;\n empty?: string;\n\n wrapperFn?: (s: string, opts?: QueryFragmentToStringOptions) => string;\n};\n\nexport type QueryTemplateStyle = [\n text: TemplateStringsArray,\n ...values: unknown[],\n];\nexport const isQueryTemplateStyle = (\n args: unknown,\n): args is QueryTemplateStyle => {\n if (!Array.isArray(args)) return false;\n if (typeof args?.[0] !== 'object' || args[0] === null || !('raw' in args[0]))\n return false;\n if (!Array.isArray(args[0])) return false;\n const [texts, ...values] = args;\n return texts.length - 1 === values.length;\n};\n\nfunction sewTemplateTextsAndValues<T = unknown, R = unknown>(\n texts: T[],\n values: R[],\n) {\n if (texts.length - 1 !== values.length)\n throw new Error('Invalid call of the function');\n return texts.flatMap((text, idx) => (idx ? [values[idx - 1], text] : [text]));\n}\n\nexport class QueryFragments extends QueryFragmentBase {\n #list: QueryFragment[] = [];\n #opts: Required<QueryFragmentsOptions>;\n\n constructor(\n ...args:\n | []\n | [values: (QueryFragment | undefined)[], opts?: QueryFragmentsOptions]\n | [opts?: QueryFragmentsOptions]\n ) {\n super();\n this.#opts = {\n prefix: '',\n glue: '',\n suffix: '',\n empty: '',\n wrapperFn: (x) => x,\n };\n\n if (Array.isArray(args[0])) {\n const [values, opts] = args as [\n values: (QueryFragment | undefined)[],\n opts?: QueryFragmentsOptions,\n ];\n this.#opts = { ...this.#opts, ...opts };\n this.push(...values);\n } else {\n const [opts] = args as [opts?: QueryFragmentsOptions];\n this.#opts = { ...this.#opts, ...opts };\n }\n }\n\n setSewingPattern(\n prefix: string = '',\n glue: string = '',\n suffix: string = '',\n empty: string = '',\n ) {\n this.#opts = { ...this.#opts, prefix, glue, suffix, empty };\n return this;\n }\n\n push(...args: (QueryFragment | string | undefined)[]) {\n this.#list.push(\n ...(args.map(makeRaw).filter((x) => x !== undefined) as QueryFragment[]),\n );\n return this;\n }\n\n // alias\n append(...args: (QueryFragment | string | undefined)[]) {\n return this.push(...args);\n }\n\n join(glue: string = ', ') {\n this.#opts.glue = glue;\n return this;\n }\n\n prefix(prefix: string = ' ') {\n this.#opts.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string = ' ') {\n this.#opts.suffix = suffix;\n return this;\n }\n\n empty(empty: string = '') {\n this.#opts.empty = empty;\n return this;\n }\n\n toString(opts?: QueryFragmentToStringOptions): string {\n if (this.#list.length === 0) return this.#opts.empty;\n return (\n this.#opts.prefix +\n this.#opts.wrapperFn(\n this.#list.map((x) => x.toString(opts)).join(this.#opts.glue),\n opts,\n ) +\n this.#opts.suffix\n );\n }\n}\n\nexport function sql(\n ...args:\n | [texts: TemplateStringsArray, ...values: unknown[]]\n | [...values: unknown[]]\n): QueryFragments {\n let fragments: (QueryFragment | undefined)[];\n if (isQueryTemplateStyle(args)) {\n // sql`...` comes here\n const [texts, ...values] = args as [\n texts: TemplateStringsArray,\n values: unknown[],\n ];\n // template string looks like a single QueryFragment for user\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(texts.map(makeRaw), values.map(makeValue)),\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(makeValue);\n }\n\n return new QueryFragments(fragments);\n}\n\nexport const ident = makeIdent;\n\nexport function raw(...args: unknown[]) {\n return new QueryFragments(args.map(makeRaw));\n}\n\nexport function json(\n ...args:\n | [...json: unknown[]]\n | [texts: TemplateStringsArray, ...args: unknown[]]\n) {\n let fragments: (QueryFragment | undefined)[];\n const wrapperFn = (x: string, opts?: QueryFragmentToStringOptions) =>\n (opts?.valueFn || pgString)(x);\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(\n texts.map(makeRaw),\n values.map(makeJsonValue),\n ),\n { wrapperFn },\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(\n (x) => new QueryFragments([makeJsonValue(x)], { wrapperFn }),\n );\n }\n\n return new QueryFragments(fragments);\n}\n\nexport function buildClauses(...args: WhereArg[]) {\n const clauses = new QueryFragments();\n\n const parse = (val: WhereArg) => {\n if (val === undefined) return;\n if (val === null) return;\n\n if (typeof val === 'string') {\n clauses.push(makeRaw(val));\n return;\n }\n\n if (isQueryFragment(val)) {\n clauses.push(val);\n return;\n }\n\n if (Array.isArray(val)) {\n val.forEach(parse);\n return;\n }\n\n if (typeof val === 'object') {\n for (const key in val) {\n if (val[key] === undefined) continue;\n\n if (isQueryFragment(val[key])) {\n clauses.push(sql`${makeIdent(key)} ${val[key]}`);\n continue;\n }\n\n if (val[key] === null) {\n clauses.push(sql`${makeIdent(key)} IS NULL`);\n continue;\n }\n\n if (Array.isArray(val[key])) {\n clauses.push(sql`${makeIdent(key)} = ANY (${val[key]})`);\n continue;\n }\n\n // \u305D\u308C\u4EE5\u5916\n clauses.push(sql`${makeIdent(key)} = ${val[key]}`);\n }\n return;\n }\n };\n\n parse(args);\n\n return clauses;\n}\n\nexport function OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') OR (', '))', 'false');\n}\n\nexport function AND(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') AND (', '))', 'true');\n}\n\nexport function WHERE(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') AND (', '))', '');\n}\n\nexport function WHERE_OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') OR (', '))', '');\n}\n\nexport function UNION_ALL(...fv: unknown[]) {\n return raw(...fv).join(' UNION ALL ');\n}\n\nexport function UNION(...fv: unknown[]) {\n return raw(...fv).join(' UNION ');\n}\n\nexport function LIMIT(limit: number | string | null | undefined) {\n if (limit == null) return sql``;\n limit = Number(limit);\n return limit > 0 ? sql`LIMIT ${limit}` : sql``;\n}\n\nexport function OFFSET(offset: number | string | null | undefined) {\n if (offset == null) return sql``;\n offset = Number(offset);\n return offset >= 0 ? sql`OFFSET ${offset}` : sql``;\n}\n\nexport function buildValues(fvs: (FieldValues | unknown[])[]) {\n if (!Array.isArray(fvs)) {\n if (typeof fvs !== 'object')\n throw new Error('buildValues: The argument must be an array');\n fvs = [fvs];\n }\n if (fvs.length === 0)\n throw new Error('buildValues: Array must contain elements at least one');\n\n const array = fvs.map((x) => (typeof x === 'object' ? Object.values(x) : x));\n\n const sig = array[0].length;\n if (array.some((arg) => arg.length !== sig)) {\n throw new Error('buildValues: Array must all be the same length');\n }\n\n const values = sql(\n ...array.map((v) => sql(...v).join(', ')),\n ).setSewingPattern('(', '), (', ')');\n return sql`VALUES ${values}`;\n}\n\nexport function buildKeys(fvs: FieldValues[] | FieldValues) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n if (fvs.length == 0 || !fvs[0] || typeof fvs[0] !== 'object')\n throw new Error('Invalid call of the function');\n\n fvs = fvs.map((fv) =>\n Object.fromEntries(Object.entries(fv).filter(([_, v]) => v !== undefined)),\n );\n\n const ks = Object.keys(fvs[0]);\n const sig = ks.join();\n if (fvs.some((fv) => Object.keys(fv).join() !== sig)) {\n throw new Error('buildKeys: All objects must have the same keys');\n }\n\n return sql(...ks.map(makeIdent)).setSewingPattern('(', ', ', ')');\n}\n\nexport function buildInsert(\n table: string,\n fvs: FieldValues[] | FieldValues,\n appendix?: string | QueryFragment,\n) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n\n const keys = buildKeys(fvs);\n const values = buildValues(fvs.map(Object.values));\n\n return sql`INSERT INTO ${makeIdent(table)} ${keys} ${values}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildUpdate(\n table: string,\n fv: FieldValues,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n const pairs = new QueryFragments();\n\n for (const k in fv) {\n const val = fv[k];\n if (val === undefined) continue;\n\n pairs.push(sql`${makeIdent(k)} = ${val}`);\n }\n\n return sql`UPDATE ${makeIdent(table)} SET ${pairs.join(', ')} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildDelete(\n table: string,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n return sql`DELETE FROM ${makeIdent(table)} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\n// aliases\nexport const or = OR;\nexport const and = AND;\nexport const where = WHERE;\nexport const WHERE_AND = WHERE;\nexport const where_and = WHERE;\nexport const where_or = WHERE_OR;\n\n// expose via `sql`\nsql.raw = raw;\nsql.ident = ident;\nsql.json = json;\nsql.WHERE = WHERE;\nsql.WHERE_AND = WHERE_AND;\nsql.WHERE_OR = WHERE_OR;\nsql.AND = AND;\nsql.OR = OR;\nsql.where = where;\nsql.where_and = where_and;\nsql.where_or = where_or;\nsql.and = and;\nsql.or = or;\nsql.insert = buildInsert;\nsql.update = buildUpdate;\nsql.delete = buildDelete;\nsql.keys = buildKeys;\nsql.values = buildValues;\nsql.UNION_ALL = UNION_ALL;\nsql.UNION = UNION;\nsql.LIMIT = LIMIT;\nsql.OFFSET = OFFSET;\n\nexport default {\n sql,\n raw,\n ident,\n json,\n WHERE,\n WHERE_AND,\n WHERE_OR,\n AND,\n OR,\n where,\n where_and,\n where_or,\n and,\n or,\n buildInsert,\n buildUpdate,\n buildDelete,\n buildValues,\n UNION_ALL,\n UNION,\n LIMIT,\n OFFSET,\n};\n", "import type pg from 'pg';\nimport type {\n QueryFragment,\n FieldValues,\n WhereArg,\n QueryTemplateStyle,\n} from './query-weaver';\nimport {\n sql,\n buildInsert,\n buildUpdate,\n buildDelete,\n isQueryTemplateStyle,\n} from './query-weaver';\n\nexport type QueryResultRow = pg.QueryResultRow;\n\n// pg (almost) compatible types to relief and reduce their requirements\nexport type QueryResult<T extends QueryResultRow> = {\n rowCount?: number | null;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\n embed?: string;\n};\n\nexport type QueryableFunction<T extends object> = (\n this: T,\n queryConfig: QueryConfig,\n) => Promise<QueryResult<QueryResultRow>>;\n\nexport type Queryable<T extends object> = {\n query: QueryableFunction<T>;\n};\n\ntype pgQueryResult<X, T extends QueryResultRow> = (X extends {\n query(...args: unknown[]): Promise<pg.QueryResult<T>>; // pg\n}\n ? pg.QueryResult<T>\n : QueryResult<T>) & { rowCount: number };\n\ntype QueryHelperOptions<X extends object> = {\n beforeQuery?: <T extends QueryConfig>(ctx: T) => void;\n afterQuery?: <T extends QueryConfig>(ctx: T) => void;\n onError?: <T extends QueryConfig>(ctx: T, e: unknown) => void;\n\n query?: QueryableFunction<X>;\n};\n\ntype QueryTemplateOrSimpleQuery =\n | QueryTemplateStyle\n | [query: string, values?: unknown[]]\n | [query: pg.QueryConfig<unknown[]>];\n\nfunction hidePropertyExcludes(target: object, keys: string[]) {\n target = { ...target };\n Object.defineProperties(\n target,\n Object.fromEntries(\n Object.keys(target).map((k) => [\n k,\n keys.includes(k) ? {} : { enumerable: false },\n ]),\n ),\n );\n return target;\n}\n\n/**\n * Query Helper\n */\nexport class QueryHelper<X extends object> {\n #db: X;\n #opts: QueryHelperOptions<X>;\n\n constructor(db: X, opts: QueryHelperOptions<X> = {}) {\n this.#db = db;\n this.#opts = { ...opts };\n\n // set query function\n if (!this.#opts.query) {\n if ('query' in db && typeof db.query === 'function') {\n // default\n this.#opts.query = db.query as QueryableFunction<X>;\n }\n }\n }\n\n #parseQueryTemplateStyle(args: QueryTemplateOrSimpleQuery): QueryConfig {\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n return sql(texts, ...values);\n }\n\n const [query, values] = args;\n\n if (typeof query === 'object' && query && 'text' in query) {\n return { ...query, values: query.values ?? [] };\n }\n\n return { text: query, values: values ?? [] };\n }\n\n async #query<T extends QueryResultRow>(\n args: QueryTemplateOrSimpleQuery,\n ): Promise<pgQueryResult<X, T>> {\n const query = this.#parseQueryTemplateStyle(args);\n\n this.#opts?.beforeQuery?.(query);\n\n const queryFn = this.#opts.query;\n if (!queryFn) throw new Error('Missing query function');\n const results = await queryFn.call(this.#db, query).catch((e: unknown) => {\n this.#opts?.onError?.(query, e);\n throw e;\n });\n\n if (typeof results.rowCount !== 'number') {\n results.rowCount = results.rows?.length ?? 0;\n }\n\n this.#opts?.afterQuery?.({\n ...query,\n results: hidePropertyExcludes(results, ['command', 'rowCount', 'rows']),\n });\n\n return results as pgQueryResult<X, T>;\n }\n\n // ======================================================================\n // query executors\n\n async insert<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n appendix?: string | QueryFragment,\n ) {\n const query = buildInsert(table, fv, appendix);\n return await this.#query<T>([query]);\n }\n\n async update<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildUpdate(table, fv, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async delete<T extends QueryResultRow>(\n table: string,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildDelete(table, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async query<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args);\n }\n\n async getRows<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows);\n }\n\n async getRow<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows?.[0] as T | undefined);\n }\n\n async getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<[T]>(args).then(\n (x) => Object.values(x.rows?.[0] ?? {})?.[0] as T | undefined,\n );\n }\n\n async getCount(...args: QueryTemplateOrSimpleQuery) {\n return this.#query(args).then((x) => x.rowCount);\n }\n\n async exec(...args: QueryTemplateOrSimpleQuery) {\n // same as getCount\n return this.#query(args).then((x) => x.rowCount);\n }\n\n // ======================================================================\n // query adapters\n\n // Prisma adapter: NB; It only supports a query return rows\n public static get prisma() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if (\n '$queryRawUnsafe' in this &&\n typeof this.$queryRawUnsafe === 'function'\n ) {\n const rows: T[] = await this.$queryRawUnsafe(text, ...values);\n return {\n rows: rows,\n rowCount: rows.length,\n };\n }\n throw new Error('Invalid object');\n };\n }\n\n // TypeORM adapter\n public static get typeorm() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if ('query' in this && typeof this.query === 'function') {\n const rows: unknown[] = await this.query(text, values);\n\n // returns with row count\n if (\n rows.length === 2 &&\n Array.isArray(rows[0]) &&\n typeof rows[1] === 'number'\n ) {\n return { rows: rows[0], rowCount: rows[1] };\n }\n\n return {\n rows,\n rowCount: rows.length,\n } as { rows: T[]; rowCount: number };\n }\n throw new Error('Invalid object');\n };\n }\n}\n\ntype Overwrite<T, Q> = Omit<T, keyof Q> & Q;\ntype MethodChainRewrite<T, Q> = {\n [K in keyof T]: T[K] extends (...args: infer R) => T\n ? (...args: R) => Override<T, Q>\n : T[K] extends T\n ? Override<T, Q>\n : T[K];\n};\ntype Override<T, Q> = Overwrite<MethodChainRewrite<T, Q>, Q>;\n\nexport type WithQueryHelper<T extends object> = Override<T, QueryHelper<T>>;\n\n/**\n * Returns a proxy object that overrides the queryable instance `db` by Query Helper utilities\n * @param db - Queryable object to be wrapped\n */\nexport function withQueryHelper<T extends Queryable<T>>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts: Overwrite<QueryHelperOptions<T>, Queryable<T>>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T> {\n const qh = new QueryHelper<T>(db, opts);\n const proxy: unknown = new Proxy(db, {\n get(db, key, receiver) {\n const target = key in qh ? qh : key in db ? db : undefined;\n const value = target && Reflect.get(target, key);\n\n if (value && value instanceof Function) {\n return function (this: unknown, ...args: unknown[]) {\n const result = value.apply(this === receiver ? target : this, args);\n return result === db ? proxy : result;\n };\n }\n\n return value === db ? proxy : value;\n },\n });\n\n return proxy as WithQueryHelper<T>;\n}\n"],
5
- "mappings": "qYAAA,IAAMA,GAAmB,CAEvB,SACA,SACA,MACA,iBACA,UACA,UACA,MACA,MACA,QACA,KACA,MACA,gBACA,SACA,UACA,SACA,eACA,OACA,WACA,OACA,OACA,QACA,UACA,SACA,aACA,SACA,cACA,QACA,eACA,eACA,oBACA,eACA,kBACA,UACA,aACA,UACA,SACA,QACA,WACA,OACA,UACA,WACA,KACA,OACA,cACA,SACA,SACA,UACA,aACA,MACA,SACA,WACA,QACA,MACA,UACA,SACA,OACA,OACA,gBACA,gBACA,QACA,QACA,OACA,SACA,WACA,SACA,QACA,KACA,YACA,QACA,YACA,OACA,KACA,SACA,OACA,UACA,OACA,OACA,QACA,YACA,iBACA,MACA,OACA,MACA,OACA,QACA,WACA,WACA,UACA,UACA,MACA,MACA,UACA,OACA,QACA,MACA,UACA,SACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,WACA,WACA,YACA,UACA,UACA,UACA,MACA,YACA,UACA,aACA,YACA,SACA,UACA,QACA,SACA,eACA,UACA,OACA,UACA,SACA,QACA,MACA,OACA,UACA,UACA,OACA,KACA,MACA,WACA,OACA,kBACA,QACA,SACA,OACA,QACA,UACA,SACA,OACA,QACA,OACA,SACF,EAEO,SAASC,EAAWC,EAAY,CACrC,OACEA,EAAG,MAAM,2BAA2B,GACpC,CAACF,GAAiB,SAASE,EAAG,YAAY,CAAC,EAEpCA,EAEF,IAAIA,EAAG,QAAQ,KAAM,IAAI,CAAC,GACnC,CAEO,SAASC,EAAaC,EAAW,CAEtC,MAAO,GADQA,EAAE,SAAS,GAAG,EAAI,IAAM,EACvB,IAAIA,EAAE,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,MAAM,CAAC,GAClE,CCvJO,SAASC,GAAQC,EAAW,CAEjC,OAAOA,EACJ,MAAM,GAAG,EACT,IAAKC,GAAMC,EAAWD,CAAC,CAAC,EACxB,KAAK,GAAG,CACb,CAGO,SAASE,EAASH,EAAoB,CAC3C,OAAIA,IAAM,KAAa,OACnB,OAAOA,GAAM,UAAkBA,EAAI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",
6
- "names": ["reservedKeywords", "quoteIdent", "id", "quoteLiteral", "s", "pgIdent", "s", "x", "quoteIdent", "pgString", "quoteLiteral", "QueryFragmentBase", "values", "text", "embed", "_value", "QueryFragmentValue", "value", "__privateAdd", "__privateSet", "opts", "__privateGet", "_ident", "QueryFragmentIdent", "ident", "_string", "QueryFragmentRawString", "isQueryFragment", "makeIdent", "name", "makeValue", "makeRaw", "QueryFragments", "makeJsonValue", "isQueryTemplateStyle", "args", "texts", "sewTemplateTextsAndValues", "idx", "_list", "_opts", "prefix", "glue", "suffix", "empty", "sql", "fragments", "raw", "json", "wrapperFn", "buildClauses", "clauses", "parse", "val", "key", "OR", "fv", "AND", "WHERE", "WHERE_OR", "UNION_ALL", "UNION", "LIMIT", "limit", "OFFSET", "offset", "buildValues", "fvs", "array", "sig", "arg", "v", "buildKeys", "_", "ks", "buildInsert", "table", "appendix", "keys", "buildUpdate", "where", "pairs", "k", "buildDelete", "or", "and", "WHERE_AND", "where_and", "where_or", "hidePropertyExcludes", "target", "keys", "k", "_db", "_opts", "_parseQueryTemplateStyle", "parseQueryTemplateStyle_fn", "_query", "query_fn", "QueryHelper", "db", "opts", "__privateAdd", "__privateSet", "__privateGet", "table", "fv", "appendix", "query", "buildInsert", "__privateMethod", "where", "buildUpdate", "buildDelete", "args", "x", "text", "values", "rows", "isQueryTemplateStyle", "texts", "sql", "queryFn", "results", "e", "withQueryHelper", "qh", "proxy", "key", "receiver", "value", "result"]
4
+ "sourcesContent": ["const reservedKeywords = [\n // copied from pg-escape's reserved.txt\n 'AES128',\n 'AES256',\n 'ALL',\n 'ALLOWOVERWRITE',\n 'ANALYSE',\n 'ANALYZE',\n 'AND',\n 'ANY',\n 'ARRAY',\n 'AS',\n 'ASC',\n 'AUTHORIZATION',\n 'BACKUP',\n 'BETWEEN',\n 'BINARY',\n 'BLANKSASNULL',\n 'BOTH',\n 'BYTEDICT',\n 'CASE',\n 'CAST',\n 'CHECK',\n 'COLLATE',\n 'COLUMN',\n 'CONSTRAINT',\n 'CREATE',\n 'CREDENTIALS',\n 'CROSS',\n 'CURRENT_DATE',\n 'CURRENT_TIME',\n 'CURRENT_TIMESTAMP',\n 'CURRENT_USER',\n 'CURRENT_USER_ID',\n 'DEFAULT',\n 'DEFERRABLE',\n 'DEFLATE',\n 'DEFRAG',\n 'DELTA',\n 'DELTA32K',\n 'DESC',\n 'DISABLE',\n 'DISTINCT',\n 'DO',\n 'ELSE',\n 'EMPTYASNULL',\n 'ENABLE',\n 'ENCODE',\n 'ENCRYPT',\n 'ENCRYPTION',\n 'END',\n 'EXCEPT',\n 'EXPLICIT',\n 'FALSE',\n 'FOR',\n 'FOREIGN',\n 'FREEZE',\n 'FROM',\n 'FULL',\n 'GLOBALDICT256',\n 'GLOBALDICT64K',\n 'GRANT',\n 'GROUP',\n 'GZIP',\n 'HAVING',\n 'IDENTITY',\n 'IGNORE',\n 'ILIKE',\n 'IN',\n 'INITIALLY',\n 'INNER',\n 'INTERSECT',\n 'INTO',\n 'IS',\n 'ISNULL',\n 'JOIN',\n 'LEADING',\n 'LEFT',\n 'LIKE',\n 'LIMIT',\n 'LOCALTIME',\n 'LOCALTIMESTAMP',\n 'LUN',\n 'LUNS',\n 'LZO',\n 'LZOP',\n 'MINUS',\n 'MOSTLY13',\n 'MOSTLY32',\n 'MOSTLY8',\n 'NATURAL',\n 'NEW',\n 'NOT',\n 'NOTNULL',\n 'NULL',\n 'NULLS',\n 'OFF',\n 'OFFLINE',\n 'OFFSET',\n 'OLD',\n 'ON',\n 'ONLY',\n 'OPEN',\n 'OR',\n 'ORDER',\n 'OUTER',\n 'OVERLAPS',\n 'PARALLEL',\n 'PARTITION',\n 'PERCENT',\n 'PLACING',\n 'PRIMARY',\n 'RAW',\n 'READRATIO',\n 'RECOVER',\n 'REFERENCES',\n 'REJECTLOG',\n 'RESORT',\n 'RESTORE',\n 'RIGHT',\n 'SELECT',\n 'SESSION_USER',\n 'SIMILAR',\n 'SOME',\n 'SYSDATE',\n 'SYSTEM',\n 'TABLE',\n 'TAG',\n 'TDES',\n 'TEXT255',\n 'TEXT32K',\n 'THEN',\n 'TO',\n 'TOP',\n 'TRAILING',\n 'TRUE',\n 'TRUNCATECOLUMNS',\n 'UNION',\n 'UNIQUE',\n 'USER',\n 'USING',\n 'VERBOSE',\n 'WALLET',\n 'WHEN',\n 'WHERE',\n 'WITH',\n 'WITHOUT',\n];\n\nexport function quoteIdent(id: string) {\n if (\n id.match(/^[a-zA-Z_][0-9a-zA-Z_$]*$/) &&\n !reservedKeywords.includes(id.toUpperCase())\n ) {\n return id;\n }\n return `\"${id.replace(/\"/g, '\"\"')}\"`;\n}\n\nexport function quoteLiteral(s: string) {\n const prefix = s.includes(\"'\") ? 'E' : '';\n return `${prefix}'${s.replace(/'/g, \"''\").replace(/\\\\/g, '\\\\\\\\')}'`;\n}\n\nexport default {\n quoteIdent,\n quoteLiteral,\n};\n", "type EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nimport { quoteIdent, quoteLiteral } from './quote';\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => quoteIdent(x))\n .join('.');\n}\n\n// fallback function for when the EscapeFunction is not specified\nexport function pgString(s: unknown): string {\n if (s === null) return 'NULL';\n if (typeof s === 'boolean') return s ? 'true' : 'false';\n if (Array.isArray(s)) return 'ARRAY[' + s.map(pgString).join(',') + ']';\n if (typeof s === 'object') {\n if ('toJSON' in s && typeof s.toJSON === 'function') {\n return quoteLiteral(s.toJSON());\n }\n return quoteLiteral(s.toString());\n }\n return quoteLiteral(String(s));\n}\n\ntype QueryFragmentToStringOptions = {\n valueFn?: EscapeFunction;\n identFn?: EscapeFunction;\n};\n\nexport interface QueryFragment {\n text: string;\n values?: unknown[];\n embed?: string;\n sql?: string;\n\n toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nabstract class QueryFragmentBase implements QueryFragment {\n // XXX: entries for defineProperties\n text: string = '';\n values: unknown[] = [];\n embed?: string = '';\n\n get compiled() {\n const values = [] as unknown[];\n const text = this.toString({\n valueFn: (x: unknown) => {\n values.push(x);\n return '$' + values.length;\n },\n });\n const embed = this.toString();\n\n return {\n text,\n values,\n embed,\n };\n }\n\n constructor() {\n Object.defineProperties(this, {\n text: {\n enumerable: true,\n get() {\n return this.compiled.text;\n },\n },\n values: {\n enumerable: true,\n get() {\n return this.compiled.values;\n },\n },\n embed: {\n enumerable: true,\n get() {\n return this.compiled.embed;\n },\n },\n });\n }\n\n abstract toString(opts?: QueryFragmentToStringOptions): string;\n}\n\nclass QueryFragmentValue extends QueryFragmentBase {\n #value: unknown;\n\n constructor(value: unknown) {\n super();\n this.#value = value;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.valueFn ?? pgString)(this.#value);\n }\n}\n\nclass QueryFragmentIdent extends QueryFragmentBase {\n #ident: string;\n\n constructor(ident: string) {\n super();\n this.#ident = ident;\n }\n\n toString(opts?: QueryFragmentToStringOptions) {\n return (opts?.identFn ?? pgIdent)(this.#ident);\n }\n}\n\n// we exploits String constructor\nclass QueryFragmentRawString extends QueryFragmentBase {\n #string: string;\n\n constructor(s: unknown) {\n super();\n this.#string = String(s);\n }\n\n /* toString(_?: QueryFragmentToStringOptions) { */\n toString() {\n return this.#string;\n }\n}\n\nexport function isQueryFragment(x: unknown): x is QueryFragment {\n return x instanceof QueryFragmentBase;\n}\n\nfunction makeIdent(name: string) {\n return new QueryFragmentIdent(name);\n}\n\nfunction makeValue(x: unknown): QueryFragment | undefined {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return new QueryFragmentValue(x);\n}\n\nfunction makeRaw(text: unknown | unknown[]): QueryFragment | undefined {\n if (typeof text === 'undefined' || isQueryFragment(text)) return text;\n if (Array.isArray(text)) return new QueryFragments(text.map(makeRaw));\n return new QueryFragmentRawString(text);\n}\n\nfunction makeJsonValue(x: unknown) {\n if (typeof x === 'undefined' || isQueryFragment(x)) return x;\n return makeRaw(JSON.stringify(x));\n}\n\ntype QueryFragmentsOptions = {\n prefix?: string;\n glue?: string;\n suffix?: string;\n empty?: string;\n\n wrapperFn?: (s: string, opts?: QueryFragmentToStringOptions) => string;\n};\n\nexport type QueryTemplateStyle = [\n text: TemplateStringsArray,\n ...values: unknown[],\n];\nexport const isQueryTemplateStyle = (\n args: unknown,\n): args is QueryTemplateStyle => {\n if (!Array.isArray(args)) return false;\n if (typeof args?.[0] !== 'object' || args[0] === null || !('raw' in args[0]))\n return false;\n if (!Array.isArray(args[0])) return false;\n const [texts, ...values] = args;\n return texts.length - 1 === values.length;\n};\n\nfunction sewTemplateTextsAndValues<T = unknown, R = unknown>(\n texts: T[],\n values: R[],\n) {\n if (texts.length - 1 !== values.length)\n throw new Error('Invalid call of the function');\n return texts.flatMap((text, idx) => (idx ? [values[idx - 1], text] : [text]));\n}\n\nexport class QueryFragments extends QueryFragmentBase {\n #list: QueryFragment[] = [];\n #opts: Required<QueryFragmentsOptions>;\n\n constructor(\n ...args:\n | []\n | [values: (QueryFragment | undefined)[], opts?: QueryFragmentsOptions]\n | [opts?: QueryFragmentsOptions]\n ) {\n super();\n this.#opts = {\n prefix: '',\n glue: '',\n suffix: '',\n empty: '',\n wrapperFn: (x) => x,\n };\n\n if (Array.isArray(args[0])) {\n const [values, opts] = args as [\n values: (QueryFragment | undefined)[],\n opts?: QueryFragmentsOptions,\n ];\n this.#opts = { ...this.#opts, ...opts };\n this.push(...values);\n } else {\n const [opts] = args as [opts?: QueryFragmentsOptions];\n this.#opts = { ...this.#opts, ...opts };\n }\n }\n\n setSewingPattern(\n prefix: string = '',\n glue: string = '',\n suffix: string = '',\n empty: string = '',\n ) {\n this.#opts = { ...this.#opts, prefix, glue, suffix, empty };\n return this;\n }\n\n push(...args: (QueryFragment | string | undefined)[]) {\n this.#list.push(\n ...(args.map(makeRaw).filter((x) => x !== undefined) as QueryFragment[]),\n );\n return this;\n }\n\n // alias\n append(...args: (QueryFragment | string | undefined)[]) {\n return this.push(...args);\n }\n\n join(glue: string = ', ') {\n this.#opts.glue = glue;\n return this;\n }\n\n prefix(prefix: string = ' ') {\n this.#opts.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string = ' ') {\n this.#opts.suffix = suffix;\n return this;\n }\n\n empty(empty: string = '') {\n this.#opts.empty = empty;\n return this;\n }\n\n toString(opts?: QueryFragmentToStringOptions): string {\n const children = this.#list\n .map((x) => x.toString(opts))\n .filter((x) => x)\n .join(this.#opts.glue);\n if (!children) return this.#opts.empty;\n return (\n this.#opts.prefix +\n this.#opts.wrapperFn(children, opts) +\n this.#opts.suffix\n );\n }\n}\n\nexport function sql(\n ...args:\n | [texts: TemplateStringsArray, ...values: unknown[]]\n | [...values: unknown[]]\n): QueryFragments {\n let fragments: (QueryFragment | undefined)[];\n if (isQueryTemplateStyle(args)) {\n // sql`...` comes here\n const [texts, ...values] = args as [\n texts: TemplateStringsArray,\n values: unknown[],\n ];\n // template string looks like a single QueryFragment for user\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(texts.map(makeRaw), values.map(makeValue)),\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(makeValue);\n }\n\n return new QueryFragments(fragments);\n}\n\nexport const ident = makeIdent;\n\nexport function raw(...args: unknown[]) {\n return new QueryFragments(args.map(makeRaw));\n}\n\nexport function json(\n ...args:\n | [...json: unknown[]]\n | [texts: TemplateStringsArray, ...args: unknown[]]\n) {\n let fragments: (QueryFragment | undefined)[];\n const wrapperFn = (x: string, opts?: QueryFragmentToStringOptions) =>\n (opts?.valueFn || pgString)(x);\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n fragments = [\n new QueryFragments(\n sewTemplateTextsAndValues(\n texts.map(makeRaw),\n values.map(makeJsonValue),\n ),\n { wrapperFn },\n ),\n ];\n } else {\n // normal function call\n fragments = args.map(\n (x) => new QueryFragments([makeJsonValue(x)], { wrapperFn }),\n );\n }\n\n return new QueryFragments(fragments);\n}\n\nexport function buildClauses(...args: WhereArg[]) {\n const clauses = new QueryFragments();\n\n const parse = (val: WhereArg) => {\n if (val === undefined) return;\n if (val === null) return;\n\n if (typeof val === 'string') {\n clauses.push(makeRaw(val));\n return;\n }\n\n if (isQueryFragment(val)) {\n clauses.push(val);\n return;\n }\n\n if (Array.isArray(val)) {\n val.forEach(parse);\n return;\n }\n\n if (typeof val === 'object') {\n for (const key in val) {\n if (val[key] === undefined) continue;\n\n if (isQueryFragment(val[key])) {\n clauses.push(sql`${makeIdent(key)} ${val[key]}`);\n continue;\n }\n\n if (val[key] === null) {\n clauses.push(sql`${makeIdent(key)} IS NULL`);\n continue;\n }\n\n if (Array.isArray(val[key])) {\n clauses.push(sql`${makeIdent(key)} = ANY (${val[key]})`);\n continue;\n }\n\n // \u305D\u308C\u4EE5\u5916\n clauses.push(sql`${makeIdent(key)} = ${val[key]}`);\n }\n return;\n }\n };\n\n parse(args);\n\n return clauses;\n}\n\nexport function OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') OR (', '))', '');\n}\n\nexport function AND(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('((', ') AND (', '))', '');\n}\n\nexport function WHERE(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') AND (', '))', '');\n}\n\nexport function WHERE_OR(...fv: WhereArg[]) {\n return buildClauses(fv).setSewingPattern('WHERE ((', ') OR (', '))', '');\n}\n\nexport function UNION_ALL(...fv: unknown[]) {\n return raw(...fv).join(' UNION ALL ');\n}\n\nexport function UNION(...fv: unknown[]) {\n return raw(...fv).join(' UNION ');\n}\n\nexport function LIMIT(limit: number | string | null | undefined) {\n if (limit == null) return sql``;\n limit = Number(limit);\n return limit > 0 ? sql`LIMIT ${limit}` : sql``;\n}\n\nexport function OFFSET(offset: number | string | null | undefined) {\n if (offset == null) return sql``;\n offset = Number(offset);\n return offset >= 0 ? sql`OFFSET ${offset}` : sql``;\n}\n\nexport function buildValues(fvs: (FieldValues | unknown[])[]) {\n if (!Array.isArray(fvs)) {\n if (typeof fvs !== 'object')\n throw new Error('buildValues: The argument must be an array');\n fvs = [fvs];\n }\n if (fvs.length === 0)\n throw new Error('buildValues: Array must contain elements at least one');\n\n const array = fvs.map((x) => (typeof x === 'object' ? Object.values(x) : x));\n\n const sig = array[0].length;\n if (array.some((arg) => arg.length !== sig)) {\n throw new Error('buildValues: Array must all be the same length');\n }\n\n const values = sql(\n ...array.map((v) => sql(...v).join(', ')),\n ).setSewingPattern('(', '), (', ')');\n return sql`VALUES ${values}`;\n}\n\nexport function buildKeys(fvs: FieldValues[] | FieldValues) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n if (fvs.length == 0 || !fvs[0] || typeof fvs[0] !== 'object')\n throw new Error('Invalid call of the function');\n\n fvs = fvs.map((fv) =>\n Object.fromEntries(Object.entries(fv).filter(([_, v]) => v !== undefined)),\n );\n\n const ks = Object.keys(fvs[0]);\n const sig = ks.join();\n if (fvs.some((fv) => Object.keys(fv).join() !== sig)) {\n throw new Error('buildKeys: All objects must have the same keys');\n }\n\n return sql(...ks.map(makeIdent)).setSewingPattern('(', ', ', ')');\n}\n\nexport function buildInsert(\n table: string,\n fvs: FieldValues[] | FieldValues,\n appendix?: string | QueryFragment,\n) {\n if (!Array.isArray(fvs)) fvs = [fvs];\n\n const keys = buildKeys(fvs);\n const values = buildValues(fvs.map(Object.values));\n\n return sql`INSERT INTO ${makeIdent(table)} ${keys} ${values}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildUpdate(\n table: string,\n fv: FieldValues,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n const pairs = new QueryFragments();\n\n for (const k in fv) {\n const val = fv[k];\n if (val === undefined) continue;\n\n pairs.push(sql`${makeIdent(k)} = ${val}`);\n }\n\n return sql`UPDATE ${makeIdent(table)} SET ${pairs.join(', ')} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\nexport function buildDelete(\n table: string,\n where?: WhereArg,\n appendix?: string | QueryFragment,\n) {\n return sql`DELETE FROM ${makeIdent(table)} ${WHERE(where)}`\n .append(appendix)\n .join(' ');\n}\n\n// aliases\nexport const or = OR;\nexport const and = AND;\nexport const where = WHERE;\nexport const WHERE_AND = WHERE;\nexport const where_and = WHERE;\nexport const where_or = WHERE_OR;\n\n// expose via `sql`\nsql.raw = raw;\nsql.ident = ident;\nsql.json = json;\nsql.WHERE = WHERE;\nsql.WHERE_AND = WHERE_AND;\nsql.WHERE_OR = WHERE_OR;\nsql.AND = AND;\nsql.OR = OR;\nsql.where = where;\nsql.where_and = where_and;\nsql.where_or = where_or;\nsql.and = and;\nsql.or = or;\nsql.insert = buildInsert;\nsql.update = buildUpdate;\nsql.delete = buildDelete;\nsql.keys = buildKeys;\nsql.values = buildValues;\nsql.UNION_ALL = UNION_ALL;\nsql.UNION = UNION;\nsql.LIMIT = LIMIT;\nsql.OFFSET = OFFSET;\n\nexport default {\n sql,\n raw,\n ident,\n json,\n WHERE,\n WHERE_AND,\n WHERE_OR,\n AND,\n OR,\n where,\n where_and,\n where_or,\n and,\n or,\n buildInsert,\n buildUpdate,\n buildDelete,\n buildValues,\n UNION_ALL,\n UNION,\n LIMIT,\n OFFSET,\n};\n", "import type pg from 'pg';\nimport type {\n QueryFragment,\n FieldValues,\n WhereArg,\n QueryTemplateStyle,\n} from './query-weaver';\nimport {\n sql,\n buildInsert,\n buildUpdate,\n buildDelete,\n isQueryTemplateStyle,\n} from './query-weaver';\n\nexport type QueryResultRow = pg.QueryResultRow;\n\n// pg (almost) compatible types to relief and reduce their requirements\nexport type QueryResult<T extends QueryResultRow> = {\n rowCount?: number | null;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\n embed?: string;\n};\n\nexport type QueryableFunction<T extends object> = (\n this: T,\n queryConfig: QueryConfig,\n) => Promise<QueryResult<QueryResultRow>>;\n\nexport type Queryable<T extends object> = {\n query: QueryableFunction<T>;\n};\n\ntype pgQueryResult<X, T extends QueryResultRow> = (X extends {\n query(...args: unknown[]): Promise<pg.QueryResult<T>>; // pg\n}\n ? pg.QueryResult<T>\n : QueryResult<T>) & { rowCount: number };\n\ntype QueryHelperOptions<X extends object> = {\n beforeQuery?: <T extends QueryConfig>(ctx: T) => void;\n afterQuery?: <T extends QueryConfig>(ctx: T) => void;\n onError?: <T extends QueryConfig>(ctx: T, e: unknown) => void;\n\n query?: QueryableFunction<X>;\n};\n\ntype QueryTemplateOrSimpleQuery =\n | QueryTemplateStyle\n | [query: string, values?: unknown[]]\n | [query: pg.QueryConfig<unknown[]>];\n\nfunction hidePropertyExcludes(target: object, keys: string[]) {\n target = { ...target };\n Object.defineProperties(\n target,\n Object.fromEntries(\n Object.keys(target).map((k) => [\n k,\n keys.includes(k) ? {} : { enumerable: false },\n ]),\n ),\n );\n return target;\n}\n\n/**\n * Query Helper\n */\nexport class QueryHelper<X extends object> {\n #db: X;\n #opts: QueryHelperOptions<X>;\n\n constructor(db: X, opts: QueryHelperOptions<X> = {}) {\n this.#db = db;\n this.#opts = { ...opts };\n\n // set query function\n if (!this.#opts.query) {\n if ('query' in db && typeof db.query === 'function') {\n // default\n this.#opts.query = db.query as QueryableFunction<X>;\n }\n }\n }\n\n #parseQueryTemplateStyle(args: QueryTemplateOrSimpleQuery): QueryConfig {\n if (isQueryTemplateStyle(args)) {\n const [texts, ...values] = args;\n return sql(texts, ...values);\n }\n\n const [query, values] = args;\n\n if (typeof query === 'object' && query && 'text' in query) {\n return { ...query, values: query.values ?? [] };\n }\n\n return { text: query, values: values ?? [] };\n }\n\n async #query<T extends QueryResultRow>(\n args: QueryTemplateOrSimpleQuery,\n ): Promise<pgQueryResult<X, T>> {\n const query = this.#parseQueryTemplateStyle(args);\n\n this.#opts?.beforeQuery?.(query);\n\n const queryFn = this.#opts.query;\n if (!queryFn) throw new Error('Missing query function');\n const results = await queryFn.call(this.#db, query).catch((e: unknown) => {\n this.#opts?.onError?.(query, e);\n throw e;\n });\n\n if (typeof results.rowCount !== 'number') {\n results.rowCount = results.rows?.length ?? 0;\n }\n\n this.#opts?.afterQuery?.({\n ...query,\n results: hidePropertyExcludes(results, ['command', 'rowCount', 'rows']),\n });\n\n return results as pgQueryResult<X, T>;\n }\n\n // ======================================================================\n // query executors\n\n async insert<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n appendix?: string | QueryFragment,\n ) {\n const query = buildInsert(table, fv, appendix);\n return await this.#query<T>([query]);\n }\n\n async update<T extends QueryResultRow>(\n table: string,\n fv: FieldValues,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildUpdate(table, fv, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async delete<T extends QueryResultRow>(\n table: string,\n where: WhereArg,\n appendix?: string | QueryFragment,\n ) {\n const query = buildDelete(table, where, appendix);\n return await this.#query<T>([query]);\n }\n\n async query<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args);\n }\n\n async getRows<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows);\n }\n\n async getRow<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<T>(args).then((x) => x.rows?.[0] as T | undefined);\n }\n\n async getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query<[T]>(args).then(\n (x) => Object.values(x.rows?.[0] ?? {})?.[0] as T | undefined,\n );\n }\n\n async getCount(...args: QueryTemplateOrSimpleQuery) {\n return this.#query(args).then((x) => x.rowCount);\n }\n\n async exec(...args: QueryTemplateOrSimpleQuery) {\n // same as getCount\n return this.#query(args).then((x) => x.rowCount);\n }\n\n // ======================================================================\n // query adapters\n\n // Prisma adapter: NB; It only supports a query return rows\n public static get prisma() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if (\n '$queryRawUnsafe' in this &&\n typeof this.$queryRawUnsafe === 'function'\n ) {\n const rows: T[] = await this.$queryRawUnsafe(text, ...values);\n return {\n rows: rows,\n rowCount: rows.length,\n };\n }\n throw new Error('Invalid object');\n };\n }\n\n // TypeORM adapter\n public static get typeorm() {\n return async function <T extends QueryResultRow>(\n this: object,\n { text, values }: QueryConfig,\n ): Promise<QueryResult<T>> {\n if ('query' in this && typeof this.query === 'function') {\n const rows: unknown[] = await this.query(text, values);\n\n // returns with row count\n if (\n rows.length === 2 &&\n Array.isArray(rows[0]) &&\n typeof rows[1] === 'number'\n ) {\n return { rows: rows[0], rowCount: rows[1] };\n }\n\n return {\n rows,\n rowCount: rows.length,\n } as { rows: T[]; rowCount: number };\n }\n throw new Error('Invalid object');\n };\n }\n}\n\ntype Overwrite<T, Q> = Omit<T, keyof Q> & Q;\ntype MethodChainRewrite<T, Q> = {\n [K in keyof T]: T[K] extends (...args: infer R) => T\n ? (...args: R) => Override<T, Q>\n : T[K] extends T\n ? Override<T, Q>\n : T[K];\n};\ntype Override<T, Q> = Overwrite<MethodChainRewrite<T, Q>, Q>;\n\nexport type WithQueryHelper<T extends object> = Override<T, QueryHelper<T>>;\n\n/**\n * Returns a proxy object that overrides the queryable instance `db` by Query Helper utilities\n * @param db - Queryable object to be wrapped\n */\nexport function withQueryHelper<T extends Queryable<T>>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts: Overwrite<QueryHelperOptions<T>, Queryable<T>>,\n): WithQueryHelper<T>;\nexport function withQueryHelper<T extends object>(\n db: T,\n opts?: QueryHelperOptions<T>,\n): WithQueryHelper<T> {\n const qh = new QueryHelper<T>(db, opts);\n const proxy: unknown = new Proxy(db, {\n get(db, key, receiver) {\n const target = key in qh ? qh : key in db ? db : undefined;\n const value = target && Reflect.get(target, key);\n\n if (value && value instanceof Function) {\n return function (this: unknown, ...args: unknown[]) {\n const result = value.apply(this === receiver ? target : this, args);\n return result === db ? proxy : result;\n };\n }\n\n return value === db ? proxy : value;\n },\n });\n\n return proxy as WithQueryHelper<T>;\n}\n"],
5
+ "mappings": "yXAAA,IAAMA,GAAmB,CAEvB,SACA,SACA,MACA,iBACA,UACA,UACA,MACA,MACA,QACA,KACA,MACA,gBACA,SACA,UACA,SACA,eACA,OACA,WACA,OACA,OACA,QACA,UACA,SACA,aACA,SACA,cACA,QACA,eACA,eACA,oBACA,eACA,kBACA,UACA,aACA,UACA,SACA,QACA,WACA,OACA,UACA,WACA,KACA,OACA,cACA,SACA,SACA,UACA,aACA,MACA,SACA,WACA,QACA,MACA,UACA,SACA,OACA,OACA,gBACA,gBACA,QACA,QACA,OACA,SACA,WACA,SACA,QACA,KACA,YACA,QACA,YACA,OACA,KACA,SACA,OACA,UACA,OACA,OACA,QACA,YACA,iBACA,MACA,OACA,MACA,OACA,QACA,WACA,WACA,UACA,UACA,MACA,MACA,UACA,OACA,QACA,MACA,UACA,SACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,WACA,WACA,YACA,UACA,UACA,UACA,MACA,YACA,UACA,aACA,YACA,SACA,UACA,QACA,SACA,eACA,UACA,OACA,UACA,SACA,QACA,MACA,OACA,UACA,UACA,OACA,KACA,MACA,WACA,OACA,kBACA,QACA,SACA,OACA,QACA,UACA,SACA,OACA,QACA,OACA,SACF,EAEO,SAASC,EAAWC,EAAY,CACrC,OACEA,EAAG,MAAM,2BAA2B,GACpC,CAACF,GAAiB,SAASE,EAAG,YAAY,CAAC,EAEpCA,EAEF,IAAIA,EAAG,QAAQ,KAAM,IAAI,CAAC,GACnC,CAEO,SAASC,EAAaC,EAAW,CAEtC,MAAO,GADQA,EAAE,SAAS,GAAG,EAAI,IAAM,EACvB,IAAIA,EAAE,QAAQ,KAAM,IAAI,EAAE,QAAQ,MAAO,MAAM,CAAC,GAClE,CCvJO,SAASC,GAAQC,EAAW,CAEjC,OAAOA,EACJ,MAAM,GAAG,EACT,IAAKC,GAAMC,EAAWD,CAAC,CAAC,EACxB,KAAK,GAAG,CACb,CAGO,SAASE,EAASH,EAAoB,CAC3C,OAAIA,IAAM,KAAa,OACnB,OAAOA,GAAM,UAAkBA,EAAI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",
6
+ "names": ["reservedKeywords", "quoteIdent", "id", "quoteLiteral", "s", "pgIdent", "s", "x", "quoteIdent", "pgString", "quoteLiteral", "QueryFragmentBase", "values", "text", "embed", "_value", "QueryFragmentValue", "value", "__privateAdd", "__privateSet", "opts", "__privateGet", "_ident", "QueryFragmentIdent", "ident", "_string", "QueryFragmentRawString", "isQueryFragment", "makeIdent", "name", "makeValue", "makeRaw", "QueryFragments", "makeJsonValue", "isQueryTemplateStyle", "args", "texts", "sewTemplateTextsAndValues", "idx", "_list", "_opts", "prefix", "glue", "suffix", "empty", "children", "sql", "fragments", "raw", "json", "wrapperFn", "buildClauses", "clauses", "parse", "val", "key", "OR", "fv", "AND", "WHERE", "WHERE_OR", "UNION_ALL", "UNION", "LIMIT", "limit", "OFFSET", "offset", "buildValues", "fvs", "array", "sig", "arg", "v", "buildKeys", "_", "ks", "buildInsert", "table", "appendix", "keys", "buildUpdate", "where", "pairs", "k", "buildDelete", "or", "and", "WHERE_AND", "where_and", "where_or", "hidePropertyExcludes", "target", "keys", "k", "_db", "_opts", "_QueryHelper_instances", "parseQueryTemplateStyle_fn", "query_fn", "QueryHelper", "db", "opts", "__privateAdd", "__privateSet", "__privateGet", "table", "fv", "appendix", "query", "buildInsert", "__privateMethod", "where", "buildUpdate", "buildDelete", "args", "x", "text", "values", "rows", "isQueryTemplateStyle", "texts", "sql", "queryFn", "results", "e", "withQueryHelper", "qh", "proxy", "key", "receiver", "value", "result"]
7
7
  }
@@ -42,8 +42,8 @@ export declare class QueryHelper<X extends object> {
42
42
  getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery): Promise<T | undefined>;
43
43
  getCount(...args: QueryTemplateOrSimpleQuery): Promise<number>;
44
44
  exec(...args: QueryTemplateOrSimpleQuery): Promise<number>;
45
- static get prisma(): <T extends pg.QueryResultRow>(this: object, { text, values }: QueryConfig) => Promise<QueryResult<T>>;
46
- static get typeorm(): <T extends pg.QueryResultRow>(this: object, { text, values }: QueryConfig) => Promise<QueryResult<T>>;
45
+ static get prisma(): <T extends QueryResultRow>(this: object, { text, values }: QueryConfig) => Promise<QueryResult<T>>;
46
+ static get typeorm(): <T extends QueryResultRow>(this: object, { text, values }: QueryConfig) => Promise<QueryResult<T>>;
47
47
  }
48
48
  type Overwrite<T, Q> = Omit<T, keyof Q> & Q;
49
49
  type MethodChainRewrite<T, Q> = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "query-weaver",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "SQL query builder using template string literal",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.mjs",
@@ -22,31 +22,28 @@
22
22
  "build": "pnpm run clean && pnpm run build:esbuild && pnpm run build:types",
23
23
  "build:esbuild": "node -r esbuild-register build.ts",
24
24
  "build:types": "tsc --declaration --emitDeclarationOnly --declarationDir './dist'",
25
- "format": "prettier --check . --ignore-path .prettierignore",
26
- "format:fix": "pnpm run format --write",
27
- "lint": "eslint src --ext .ts --ignore-path .prettierignore",
28
- "lint:fix": "pnpm run lint --fix",
25
+ "prepack": "pnpm run build && pnpm run test",
26
+ "format": "biome format ./src",
27
+ "format:fix": "biome format ./src --write",
28
+ "lint": "biome lint ./src",
29
+ "lint:fix": "biome lint ./src --write",
29
30
  "type-check": "tsc --noEmit -p tsconfig.json",
30
- "prepare": "husky install"
31
+ "prepare": "husky"
31
32
  },
32
33
  "author": "kikuchan98@gmail.com",
33
34
  "homepage": "https://github.com/kikuchan/query-weaver#readme",
34
35
  "license": "MIT",
35
36
  "devDependencies": {
36
- "@types/pg": "^8.11.0",
37
- "@typescript-eslint/eslint-plugin": "^7.0.2",
38
- "@typescript-eslint/parser": "^7.0.2",
39
- "esbuild": "^0.20.1",
40
- "esbuild-node-externals": "^1.13.0",
41
- "esbuild-register": "^3.5.0",
42
- "eslint": "^8.56.0",
43
- "eslint-config-prettier": "^9.1.0",
44
- "husky": "^9.0.11",
45
- "lint-staged": "^15.2.2",
46
- "pg": "^8.11.3",
47
- "prettier": "^3.2.5",
48
- "rimraf": "^5.0.5",
49
- "typescript": "^5.3.3",
50
- "vitest": "^1.3.1"
37
+ "@biomejs/biome": "^1.9.4",
38
+ "@types/pg": "^8.11.10",
39
+ "esbuild": "^0.24.0",
40
+ "esbuild-node-externals": "^1.15.0",
41
+ "esbuild-register": "^3.6.0",
42
+ "husky": "^9.1.6",
43
+ "lint-staged": "^15.2.10",
44
+ "pg": "^8.13.1",
45
+ "rimraf": "^6.0.1",
46
+ "typescript": "^5.6.3",
47
+ "vitest": "^2.1.4"
51
48
  }
52
49
  }