query-weaver 0.0.10 → 0.0.12
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 +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +2 -2
- package/dist/index.esm.mjs +1 -1
- package/dist/index.esm.mjs.map +2 -2
- package/dist/query-helper.d.ts +2 -2
- package/package.json +14 -14
package/README.md
CHANGED
|
@@ -310,6 +310,7 @@ The final underlying `query` function can be changed by using `query` option.
|
|
|
310
310
|
So you can use Prisma, TypeORM, or whatever you want if you write a query handler for them.
|
|
311
311
|
|
|
312
312
|
Here are examples for using it;
|
|
313
|
+
|
|
313
314
|
<!-- prettier-ignore -->
|
|
314
315
|
```js
|
|
315
316
|
const db = withQueryHelper(new PrismaClient(), {
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var le=Object.create;var
|
|
1
|
+
"use strict";var le=Object.create;var q=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var fe=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var we=(e,r)=>{for(var t in r)q(e,t,{get:r[t],enumerable:!0})},Y=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of ge(r))!he.call(e,u)&&u!==t&&q(e,u,{get:()=>r[u],enumerable:!(n=ce(r,u))||n.enumerable});return e};var de=(e,r,t)=>(t=e!=null?le(fe(e)):{},Y(r||!e||!e.__esModule?q(t,"default",{value:e,enumerable:!0}):t,e)),me=e=>Y(q({},"__esModule",{value:!0}),e);var N=(e,r,t)=>{if(!r.has(e))throw TypeError("Cannot "+t)};var s=(e,r,t)=>(N(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)},l=(e,r,t,n)=>(N(e,r,"write to private field"),n?n.call(e,t):r.set(e,t),t);var c=(e,r,t)=>(N(e,r,"access private method"),t);var xe={};we(xe,{AND:()=>_,OR:()=>U,QueryHelper:()=>v,WHERE:()=>Q,WHERE_AND:()=>se,WHERE_OR:()=>K,and:()=>ue,buildClauses:()=>k,buildDelete:()=>$,buildInsert:()=>C,buildKeys:()=>J,buildUpdate:()=>H,buildValues:()=>L,ident:()=>ee,isQueryFragment:()=>x,isQueryTemplateStyle:()=>A,json:()=>re,or:()=>ne,pgIdent:()=>Z,pgString:()=>W,raw:()=>te,sql:()=>i,where:()=>ie,where_and:()=>oe,where_or:()=>ae,withQueryHelper:()=>Te});module.exports=me(xe);var b=de(require("pg-escape"));function Z(e){return e.split(".").map(r=>b.default.ident(r)).join(".")}function W(e){return e===null?"NULL":typeof e=="boolean"?e?"true":"false":Array.isArray(e)?"ARRAY["+e.map(W).join(",")+"]":typeof e=="object"?"toJSON"in e&&typeof e.toJSON=="function"?b.default.literal(e.toJSON()):b.default.literal(e.toString()):b.default.literal(String(e))}var d=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}}},F,X=class extends d{constructor(t){super();y(this,F,void 0);l(this,F,t)}toString(t){return(t?.valueFn??W)(s(this,F))}};F=new WeakMap;var O,D=class extends d{constructor(t){super();y(this,O,void 0);l(this,O,t)}toString(t){return(t?.identFn??Z)(s(this,O))}};O=new WeakMap;var S,I=class extends d{constructor(t){super();y(this,S,void 0);l(this,S,String(t))}toString(){return s(this,S)}};S=new WeakMap;function x(e){return e instanceof d}function f(e){return new D(e)}function z(e){return typeof e>"u"||x(e)?e:new X(e)}function m(e){return typeof e>"u"||x(e)?e:Array.isArray(e)?new g(e.map(m)):new I(e)}function G(e){return typeof e>"u"||x(e)?e:m(JSON.stringify(e))}var A=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 B(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 T,o,g=class extends d{constructor(...t){super();y(this,T,[]);y(this,o,void 0);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,T).push(...t.map(m).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,T).length===0?s(this,o).empty:s(this,o).prefix+s(this,o).wrapperFn(s(this,T).map(n=>n.toString(t)).join(s(this,o).glue),t)+s(this,o).suffix}};T=new WeakMap,o=new WeakMap;function i(...e){let r;if(A(e)){let[t,...n]=e;r=[new g(B(t.map(m),n.map(z)))]}else r=e.map(z);return new g(r)}var ee=f;function te(...e){return new g(e.map(m))}function re(...e){let r,t=(n,u)=>(u?.valueFn||W)(n);if(A(e)){let[n,...u]=e;r=[new g(B(n.map(m),u.map(G)),{wrapperFn:t})]}else r=e.map(n=>new g([G(n)],{wrapperFn:t}));return new g(r)}function k(...e){let r=new g,t=n=>{if(n!==void 0&&n!==null){if(typeof n=="string"){r.push(m(n));return}if(x(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(x(n[u])){r.push(i`${f(u)} ${n[u]}`);continue}if(n[u]===null){r.push(i`${f(u)} IS NULL`);continue}if(Array.isArray(n[u])){r.push(i`${f(u)} = ANY (${n[u]})`);continue}r.push(i`${f(u)} = ${n[u]}`)}return}}};return t(e),r}function U(...e){return k(e).setSewingPattern("((",") OR (","))","false")}function _(...e){return k(e).setSewingPattern("((",") AND (","))","true")}function Q(...e){return k(e).setSewingPattern("WHERE ((",") AND (","))","")}function K(...e){return k(e).setSewingPattern("WHERE ((",") OR (","))","")}function L(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");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 key");return i(...r.map(f)).setSewingPattern("(",", ",")")}function C(e,r,t){Array.isArray(r)||(r=[r]);let n=J(r),u=L(r.map(Object.values));return i`INSERT INTO ${f(e)} ${n} ${u}`.append(t).join(" ")}function H(e,r,t,n){let u=new g;for(let a in r){let E=r[a];E!==void 0&&u.push(i`${f(a)} = ${E}`)}return i`UPDATE ${f(e)} SET ${u.join(", ")} ${Q(t)}`.append(n).join(" ")}function $(e,r,t){return i`DELETE FROM ${f(e)} ${Q(r)}`.append(t).join(" ")}var ne=U,ue=_,ie=Q,se=Q,oe=Q,ae=K;i.raw=te;i.ident=ee;i.json=re;i.WHERE=Q;i.WHERE_AND=se;i.WHERE_OR=K;i.AND=_;i.OR=U;i.where=ie;i.where_and=oe;i.where_or=ae;i.and=ue;i.or=ne;i.insert=C;i.update=H;i.delete=$;i.keys=J;i.values=L;function Qe(e,r){return e={...e},Object.defineProperties(e,Object.fromEntries(Object.keys(e).map(t=>[t,r.includes(t)?{}:{enumerable:!1}]))),e}var j,w,P,pe,p,h,v=class{constructor(r,t={}){y(this,P);y(this,p);y(this,j,void 0);y(this,w,void 0);l(this,j,r),l(this,w,{...t}),s(this,w).query||"query"in r&&typeof r.query=="function"&&(s(this,w).query=r.query)}async insert(r,t,n){let u=C(r,t,n);return await c(this,p,h).call(this,[u])}async update(r,t,n,u){let a=H(r,t,n,u);return await c(this,p,h).call(this,[a])}async delete(r,t,n){let u=$(r,t,n);return await c(this,p,h).call(this,[u])}async query(...r){return c(this,p,h).call(this,r)}async getRows(...r){return c(this,p,h).call(this,r).then(t=>t.rows)}async getRow(...r){return c(this,p,h).call(this,r).then(t=>t.rows?.[0])}async getOne(...r){return c(this,p,h).call(this,r).then(t=>Object.values(t.rows?.[0]??{})?.[0])}async getCount(...r){return c(this,p,h).call(this,r).then(t=>t.rowCount)}async exec(...r){return c(this,p,h).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")}}};j=new WeakMap,w=new WeakMap,P=new WeakSet,pe=function(r){if(A(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,h=async function(r){let t=c(this,P,pe).call(this,r);s(this,w)?.beforeQuery?.(t);let n=s(this,w).query;if(!n)throw new Error("Missing query function");let u=await n.call(s(this,j),t).catch(a=>{throw s(this,w)?.onError?.(t,a),a});return s(this,w)?.afterQuery?.({...t,results:Qe(u,["command","rowCount","rows"])}),u};function Te(e,r){let t=new v(e,r),n=new Proxy(e,{get(u,a,E){let V=a in t?t:a in u?u:void 0,R=V&&Reflect.get(V,a);return R&&R instanceof Function?function(...ye){let M=R.apply(this===E?V:this,ye);return M===u?n:M}:R===u?n:R}});return n}0&&(module.exports={AND,OR,QueryHelper,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
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/query-weaver.ts", "../src/query-helper.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './query-weaver';\nexport * from './query-helper';\n", "import pgescape from 'pg-escape';\n\ntype EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => pgescape.ident(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') return pgescape.literal(JSON.stringify(s));\n return pgescape.literal(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\nclass 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 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 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 key');\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;\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};\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;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\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>;\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 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]);\n }\n\n async getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query(args).then((x) => Object.values(x.rows?.[0])?.[0] as T);\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": "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",
|
|
4
|
+
"sourcesContent": ["export * from './query-weaver';\nexport * from './query-helper';\n", "import pgescape from 'pg-escape';\n\ntype EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => pgescape.ident(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 pgescape.literal(s.toJSON());\n return pgescape.literal(s.toString());\n }\n return pgescape.literal(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\nclass 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 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 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 key');\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;\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};\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;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\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>;\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 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": "48BAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,SAAAE,EAAA,OAAAC,EAAA,gBAAAC,EAAA,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,GAAA,QAAAC,EAAA,UAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,oBAAAC,KAAA,eAAAC,GAAA5B,ICAA,IAAA6B,EAAqB,yBAWd,SAASC,EAAQC,EAAW,CAEjC,OAAOA,EACJ,MAAM,GAAG,EACT,IAAKC,GAAM,EAAAC,QAAS,MAAMD,CAAC,CAAC,EAC5B,KAAK,GAAG,CACb,CAGO,SAASE,EAASH,EAAoB,CAC3C,OAAIA,IAAM,KAAa,OACnB,OAAOA,GAAM,UAAkBA,EAAI,OAAS,QAC5C,MAAM,QAAQA,CAAC,EAAU,SAAWA,EAAE,IAAIG,CAAQ,EAAE,KAAK,GAAG,EAAI,IAChE,OAAOH,GAAM,SACX,WAAYA,GAAK,OAAOA,EAAE,QAAW,WAChC,EAAAE,QAAS,QAAQF,EAAE,OAAO,CAAC,EAC7B,EAAAE,QAAS,QAAQF,EAAE,SAAS,CAAC,EAE/B,EAAAE,QAAS,QAAQ,OAAOF,CAAC,CAAC,CACnC,CAgBA,IAAeI,EAAf,KAA0D,CAuBxD,aAAc,CArBd,UAAe,GACf,YAAoB,CAAC,EACrB,WAAiB,GAoBf,OAAO,iBAAiB,KAAM,CAC5B,KAAM,CACJ,WAAY,GACZ,KAAM,CACJ,OAAO,KAAK,SAAS,IACvB,CACF,EACA,OAAQ,CACN,WAAY,GACZ,KAAM,CACJ,OAAO,KAAK,SAAS,MACvB,CACF,EACA,MAAO,CACL,WAAY,GACZ,KAAM,CACJ,OAAO,KAAK,SAAS,KACvB,CACF,CACF,CAAC,CACH,CAtCA,IAAI,UAAW,CACb,IAAMC,EAAS,CAAC,EACVC,EAAO,KAAK,SAAS,CACzB,QAAUL,IACRI,EAAO,KAAKJ,CAAC,EACN,IAAMI,EAAO,OAExB,CAAC,EACKE,EAAQ,KAAK,SAAS,EAE5B,MAAO,CACL,KAAAD,EACA,OAAAD,EACA,MAAAE,CACF,CACF,CA0BF,EA7FAC,EA+FMC,EAAN,cAAiCL,CAAkB,CAGjD,YAAYM,EAAgB,CAC1B,MAAM,EAHRC,EAAA,KAAAH,EAAA,QAIEI,EAAA,KAAKJ,EAASE,EAChB,CAEA,SAASG,EAAqC,CAC5C,OAAQA,GAAM,SAAWV,GAAUW,EAAA,KAAKN,EAAM,CAChD,CACF,EAVEA,EAAA,YAhGF,IAAAO,EA4GMC,EAAN,cAAiCZ,CAAkB,CAGjD,YAAYa,EAAe,CACzB,MAAM,EAHRN,EAAA,KAAAI,EAAA,QAIEH,EAAA,KAAKG,EAASE,EAChB,CAEA,SAASJ,EAAqC,CAC5C,OAAQA,GAAM,SAAWd,GAASe,EAAA,KAAKC,EAAM,CAC/C,CACF,EAVEA,EAAA,YA7GF,IAAAG,EA0HMC,EAAN,cAAqCf,CAAkB,CAGrD,YAAYJ,EAAY,CACtB,MAAM,EAHRW,EAAA,KAAAO,EAAA,QAIEN,EAAA,KAAKM,EAAU,OAAOlB,CAAC,EACzB,CAGA,UAAW,CACT,OAAOc,EAAA,KAAKI,EACd,CACF,EAXEA,EAAA,YAaK,SAASE,EAAgBnB,EAAgC,CAC9D,OAAOA,aAAaG,CACtB,CAEA,SAASiB,EAAUC,EAAc,CAC/B,OAAO,IAAIN,EAAmBM,CAAI,CACpC,CAEA,SAASC,EAAUtB,EAAuC,CACxD,OAAI,OAAOA,EAAM,KAAemB,EAAgBnB,CAAC,EAAUA,EACpD,IAAIQ,EAAmBR,CAAC,CACjC,CAEA,SAASuB,EAAQlB,EAAsD,CACrE,OAAI,OAAOA,EAAS,KAAec,EAAgBd,CAAI,EAAUA,EAC7D,MAAM,QAAQA,CAAI,EAAU,IAAImB,EAAenB,EAAK,IAAIkB,CAAO,CAAC,EAC7D,IAAIL,EAAuBb,CAAI,CACxC,CAEA,SAASoB,EAAczB,EAAY,CACjC,OAAI,OAAOA,EAAM,KAAemB,EAAgBnB,CAAC,EAAUA,EACpDuB,EAAQ,KAAK,UAAUvB,CAAC,CAAC,CAClC,CAeO,IAAM0B,EACXC,GAC+B,CAI/B,GAHI,CAAC,MAAM,QAAQA,CAAI,GACnB,OAAOA,IAAO,CAAC,GAAM,UAAYA,EAAK,CAAC,IAAM,MAAQ,EAAE,QAASA,EAAK,CAAC,IAEtE,CAAC,MAAM,QAAQA,EAAK,CAAC,CAAC,EAAG,MAAO,GACpC,GAAM,CAACC,EAAO,GAAGxB,CAAM,EAAIuB,EAC3B,OAAOC,EAAM,OAAS,IAAMxB,EAAO,MACrC,EAEA,SAASyB,EACPD,EACAxB,EACA,CACA,GAAIwB,EAAM,OAAS,IAAMxB,EAAO,OAC9B,MAAM,IAAI,MAAM,8BAA8B,EAChD,OAAOwB,EAAM,QAAQ,CAACvB,EAAMyB,IAASA,EAAM,CAAC1B,EAAO0B,EAAM,CAAC,EAAGzB,CAAI,EAAI,CAACA,CAAI,CAAE,CAC9E,CA/LA,IAAA0B,EAAAC,EAiMMR,EAAN,cAA6BrB,CAAkB,CAI7C,eACKwB,EAIH,CACA,MAAM,EATRjB,EAAA,KAAAqB,EAAyB,CAAC,GAC1BrB,EAAA,KAAAsB,EAAA,QASE,GAAArB,EAAA,KAAKqB,EAAQ,CACX,OAAQ,GACR,KAAM,GACN,OAAQ,GACR,MAAO,GACP,UAAYhC,GAAMA,CACpB,GAEI,MAAM,QAAQ2B,EAAK,CAAC,CAAC,EAAG,CAC1B,GAAM,CAACvB,EAAQQ,CAAI,EAAIe,EAIvBhB,EAAA,KAAKqB,EAAQ,CAAE,GAAGnB,EAAA,KAAKmB,GAAO,GAAGpB,CAAK,GACtC,KAAK,KAAK,GAAGR,CAAM,CACrB,KAAO,CACL,GAAM,CAACQ,CAAI,EAAIe,EACfhB,EAAA,KAAKqB,EAAQ,CAAE,GAAGnB,EAAA,KAAKmB,GAAO,GAAGpB,CAAK,EACxC,CACF,CAEA,iBACEqB,EAAiB,GACjBC,EAAe,GACfC,EAAiB,GACjBC,EAAgB,GAChB,CACA,OAAAzB,EAAA,KAAKqB,EAAQ,CAAE,GAAGnB,EAAA,KAAKmB,GAAO,OAAAC,EAAQ,KAAAC,EAAM,OAAAC,EAAQ,MAAAC,CAAM,GACnD,IACT,CAEA,QAAQT,EAA8C,CACpD,OAAAd,EAAA,KAAKkB,GAAM,KACT,GAAIJ,EAAK,IAAIJ,CAAO,EAAE,OAAQvB,GAAMA,IAAM,MAAS,CACrD,EACO,IACT,CAGA,UAAU2B,EAA8C,CACtD,OAAO,KAAK,KAAK,GAAGA,CAAI,CAC1B,CAEA,KAAKO,EAAe,KAAM,CACxB,OAAArB,EAAA,KAAKmB,GAAM,KAAOE,EACX,IACT,CAEA,OAAOD,EAAiB,IAAK,CAC3B,OAAApB,EAAA,KAAKmB,GAAM,OAASC,EACb,IACT,CAEA,OAAOE,EAAiB,IAAK,CAC3B,OAAAtB,EAAA,KAAKmB,GAAM,OAASG,EACb,IACT,CAEA,MAAMC,EAAgB,GAAI,CACxB,OAAAvB,EAAA,KAAKmB,GAAM,MAAQI,EACZ,IACT,CAEA,SAASxB,EAA6C,CACpD,OAAIC,EAAA,KAAKkB,GAAM,SAAW,EAAUlB,EAAA,KAAKmB,GAAM,MAE7CnB,EAAA,KAAKmB,GAAM,OACXnB,EAAA,KAAKmB,GAAM,UACTnB,EAAA,KAAKkB,GAAM,IAAK/B,GAAMA,EAAE,SAASY,CAAI,CAAC,EAAE,KAAKC,EAAA,KAAKmB,GAAM,IAAI,EAC5DpB,CACF,EACAC,EAAA,KAAKmB,GAAM,MAEf,CACF,EApFED,EAAA,YACAC,EAAA,YAqFK,SAASK,KACXV,EAGa,CAChB,IAAIW,EACJ,GAAIZ,EAAqBC,CAAI,EAAG,CAE9B,GAAM,CAACC,EAAO,GAAGxB,CAAM,EAAIuB,EAK3BW,EAAY,CACV,IAAId,EACFK,EAA0BD,EAAM,IAAIL,CAAO,EAAGnB,EAAO,IAAIkB,CAAS,CAAC,CACrE,CACF,CACF,MAEEgB,EAAYX,EAAK,IAAIL,CAAS,EAGhC,OAAO,IAAIE,EAAec,CAAS,CACrC,CAEO,IAAMtB,GAAQI,EAEd,SAASmB,MAAOZ,EAAiB,CACtC,OAAO,IAAIH,EAAeG,EAAK,IAAIJ,CAAO,CAAC,CAC7C,CAEO,SAASiB,MACXb,EAGH,CACA,IAAIW,EACEG,EAAY,CAACzC,EAAWY,KAC3BA,GAAM,SAAWV,GAAUF,CAAC,EAC/B,GAAI0B,EAAqBC,CAAI,EAAG,CAC9B,GAAM,CAACC,EAAO,GAAGxB,CAAM,EAAIuB,EAC3BW,EAAY,CACV,IAAId,EACFK,EACED,EAAM,IAAIL,CAAO,EACjBnB,EAAO,IAAIqB,CAAa,CAC1B,EACA,CAAE,UAAAgB,CAAU,CACd,CACF,CACF,MAEEH,EAAYX,EAAK,IACd3B,GAAM,IAAIwB,EAAe,CAACC,EAAczB,CAAC,CAAC,EAAG,CAAE,UAAAyC,CAAU,CAAC,CAC7D,EAGF,OAAO,IAAIjB,EAAec,CAAS,CACrC,CAEO,SAASI,KAAgBf,EAAkB,CAChD,IAAMgB,EAAU,IAAInB,EAEdoB,EAASC,GAAkB,CAC/B,GAAIA,IAAQ,QACRA,IAAQ,KAEZ,IAAI,OAAOA,GAAQ,SAAU,CAC3BF,EAAQ,KAAKpB,EAAQsB,CAAG,CAAC,EACzB,MACF,CAEA,GAAI1B,EAAgB0B,CAAG,EAAG,CACxBF,EAAQ,KAAKE,CAAG,EAChB,MACF,CAEA,GAAI,MAAM,QAAQA,CAAG,EAAG,CACtBA,EAAI,QAAQD,CAAK,EACjB,MACF,CAEA,GAAI,OAAOC,GAAQ,SAAU,CAC3B,QAAWC,KAAOD,EAChB,GAAIA,EAAIC,CAAG,IAAM,OAEjB,IAAI3B,EAAgB0B,EAAIC,CAAG,CAAC,EAAG,CAC7BH,EAAQ,KAAKN,IAAMjB,EAAU0B,CAAG,CAAC,IAAID,EAAIC,CAAG,CAAC,EAAE,EAC/C,QACF,CAEA,GAAID,EAAIC,CAAG,IAAM,KAAM,CACrBH,EAAQ,KAAKN,IAAMjB,EAAU0B,CAAG,CAAC,UAAU,EAC3C,QACF,CAEA,GAAI,MAAM,QAAQD,EAAIC,CAAG,CAAC,EAAG,CAC3BH,EAAQ,KAAKN,IAAMjB,EAAU0B,CAAG,CAAC,WAAWD,EAAIC,CAAG,CAAC,GAAG,EACvD,QACF,CAGAH,EAAQ,KAAKN,IAAMjB,EAAU0B,CAAG,CAAC,MAAMD,EAAIC,CAAG,CAAC,EAAE,EAEnD,MACF,EACF,EAEA,OAAAF,EAAMjB,CAAI,EAEHgB,CACT,CAEO,SAASI,KAAMC,EAAgB,CACpC,OAAON,EAAaM,CAAE,EAAE,iBAAiB,KAAM,SAAU,KAAM,OAAO,CACxE,CAEO,SAASC,KAAOD,EAAgB,CACrC,OAAON,EAAaM,CAAE,EAAE,iBAAiB,KAAM,UAAW,KAAM,MAAM,CACxE,CAEO,SAASE,KAASF,EAAgB,CACvC,OAAON,EAAaM,CAAE,EAAE,iBAAiB,WAAY,UAAW,KAAM,EAAE,CAC1E,CAEO,SAASG,KAAYH,EAAgB,CAC1C,OAAON,EAAaM,CAAE,EAAE,iBAAiB,WAAY,SAAU,KAAM,EAAE,CACzE,CAEO,SAASI,EAAYC,EAAkC,CAC5D,GAAI,CAAC,MAAM,QAAQA,CAAG,EAAG,CACvB,GAAI,OAAOA,GAAQ,SACjB,MAAM,IAAI,MAAM,4CAA4C,EAC9DA,EAAM,CAACA,CAAG,CACZ,CACA,GAAIA,EAAI,SAAW,EACjB,MAAM,IAAI,MAAM,uDAAuD,EAEzE,IAAMC,EAAQD,EAAI,IAAKrD,GAAO,OAAOA,GAAM,SAAW,OAAO,OAAOA,CAAC,EAAIA,CAAE,EAErEuD,EAAMD,EAAM,CAAC,EAAE,OACrB,GAAIA,EAAM,KAAME,GAAQA,EAAI,SAAWD,CAAG,EACxC,MAAM,IAAI,MAAM,gDAAgD,EAGlE,IAAMnD,EAASiC,EACb,GAAGiB,EAAM,IAAKG,GAAMpB,EAAI,GAAGoB,CAAC,EAAE,KAAK,IAAI,CAAC,CAC1C,EAAE,iBAAiB,IAAK,OAAQ,GAAG,EACnC,OAAOpB,WAAajC,CAAM,EAC5B,CAEO,SAASsD,EAAUL,EAAkC,CAE1D,GADK,MAAM,QAAQA,CAAG,IAAGA,EAAM,CAACA,CAAG,GAC/BA,EAAI,QAAU,GAAK,CAACA,EAAI,CAAC,GAAK,OAAOA,EAAI,CAAC,GAAM,SAClD,MAAM,IAAI,MAAM,8BAA8B,EAEhD,IAAMM,EAAK,OAAO,KAAKN,EAAI,CAAC,CAAC,EACvBE,EAAMI,EAAG,KAAK,EACpB,GAAIN,EAAI,KAAML,GAAO,OAAO,KAAKA,CAAE,EAAE,KAAK,IAAMO,CAAG,EACjD,MAAM,IAAI,MAAM,+CAA+C,EAGjE,OAAOlB,EAAI,GAAGsB,EAAG,IAAIvC,CAAS,CAAC,EAAE,iBAAiB,IAAK,KAAM,GAAG,CAClE,CAEO,SAASwC,EACdC,EACAR,EACAS,EACA,CACK,MAAM,QAAQT,CAAG,IAAGA,EAAM,CAACA,CAAG,GAEnC,IAAMU,EAAOL,EAAUL,CAAG,EACpBjD,EAASgD,EAAYC,EAAI,IAAI,OAAO,MAAM,CAAC,EAEjD,OAAOhB,gBAAkBjB,EAAUyC,CAAK,CAAC,IAAIE,CAAI,IAAI3D,CAAM,GACxD,OAAO0D,CAAQ,EACf,KAAK,GAAG,CACb,CAEO,SAASE,EACdH,EACAb,EACAiB,EACAH,EACA,CACA,IAAMI,EAAQ,IAAI1C,EAElB,QAAW2C,KAAKnB,EAAI,CAClB,IAAMH,EAAMG,EAAGmB,CAAC,EACZtB,IAAQ,QAEZqB,EAAM,KAAK7B,IAAMjB,EAAU+C,CAAC,CAAC,MAAMtB,CAAG,EAAE,CAC1C,CAEA,OAAOR,WAAajB,EAAUyC,CAAK,CAAC,QAAQK,EAAM,KAAK,IAAI,CAAC,IAAIhB,EAAMe,CAAK,CAAC,GACzE,OAAOH,CAAQ,EACf,KAAK,GAAG,CACb,CAEO,SAASM,EACdP,EACAI,EACAH,EACA,CACA,OAAOzB,gBAAkBjB,EAAUyC,CAAK,CAAC,IAAIX,EAAMe,CAAK,CAAC,GACtD,OAAOH,CAAQ,EACf,KAAK,GAAG,CACb,CAGO,IAAMO,GAAKtB,EACLuB,GAAMrB,EACNgB,GAAQf,EACRqB,GAAYrB,EACZsB,GAAYtB,EACZuB,GAAWtB,EAGxBd,EAAI,IAAME,GACVF,EAAI,MAAQrB,GACZqB,EAAI,KAAOG,GACXH,EAAI,MAAQa,EACZb,EAAI,UAAYkC,GAChBlC,EAAI,SAAWc,EACfd,EAAI,IAAMY,EACVZ,EAAI,GAAKU,EACTV,EAAI,MAAQ4B,GACZ5B,EAAI,UAAYmC,GAChBnC,EAAI,SAAWoC,GACfpC,EAAI,IAAMiC,GACVjC,EAAI,GAAKgC,GACThC,EAAI,OAASuB,EACbvB,EAAI,OAAS2B,EACb3B,EAAI,OAAS+B,EACb/B,EAAI,KAAOqB,EACXrB,EAAI,OAASe,EC5cb,SAASsB,GAAqBC,EAAgBC,EAAgB,CAC5D,OAAAD,EAAS,CAAE,GAAGA,CAAO,EACrB,OAAO,iBACLA,EACA,OAAO,YACL,OAAO,KAAKA,CAAM,EAAE,IAAKE,GAAM,CAC7BA,EACAD,EAAK,SAASC,CAAC,EAAI,CAAC,EAAI,CAAE,WAAY,EAAM,CAC9C,CAAC,CACH,CACF,EACOF,CACT,CArEA,IAAAG,EAAAC,EAAAC,EAAAC,GAAAC,EAAAC,EA0EaC,EAAN,KAAoC,CAIzC,YAAYC,EAAOC,EAA8B,CAAC,EAAG,CAarDC,EAAA,KAAAP,GAeAO,EAAA,KAAML,GA/BNK,EAAA,KAAAT,EAAA,QACAS,EAAA,KAAAR,EAAA,QAGES,EAAA,KAAKV,EAAMO,GACXG,EAAA,KAAKT,EAAQ,CAAE,GAAGO,CAAK,GAGlBG,EAAA,KAAKV,GAAM,OACV,UAAWM,GAAM,OAAOA,EAAG,OAAU,aAEvCI,EAAA,KAAKV,GAAM,MAAQM,EAAG,MAG5B,CA0CA,MAAM,OACJK,EACAC,EACAC,EACA,CACA,IAAMC,EAAQC,EAAYJ,EAAOC,EAAIC,CAAQ,EAC7C,OAAO,MAAMG,EAAA,KAAKb,EAAAC,GAAL,UAAe,CAACU,CAAK,EACpC,CAEA,MAAM,OACJH,EACAC,EACAK,EACAJ,EACA,CACA,IAAMC,EAAQI,EAAYP,EAAOC,EAAIK,EAAOJ,CAAQ,EACpD,OAAO,MAAMG,EAAA,KAAKb,EAAAC,GAAL,UAAe,CAACU,CAAK,EACpC,CAEA,MAAM,OACJH,EACAM,EACAJ,EACA,CACA,IAAMC,EAAQK,EAAYR,EAAOM,EAAOJ,CAAQ,EAChD,OAAO,MAAMG,EAAA,KAAKb,EAAAC,GAAL,UAAe,CAACU,CAAK,EACpC,CAEA,MAAM,SAAmCM,EAAkC,CACzE,OAAOJ,EAAA,KAAKb,EAAAC,GAAL,UAAegB,EACxB,CAEA,MAAM,WAAqCA,EAAkC,CAC3E,OAAOJ,EAAA,KAAKb,EAAAC,GAAL,UAAegB,GAAM,KAAMC,GAAMA,EAAE,IAAI,CAChD,CAEA,MAAM,UAAoCD,EAAkC,CAC1E,OAAOJ,EAAA,KAAKb,EAAAC,GAAL,UAAegB,GAAM,KAAMC,GAAMA,EAAE,OAAO,CAAC,CAAkB,CACtE,CAEA,MAAM,UAAuBD,EAAkC,CAC7D,OAAOJ,EAAA,KAAKb,EAAAC,GAAL,UAAiBgB,GAAM,KAC3BC,GAAM,OAAO,OAAOA,EAAE,OAAO,CAAC,GAAK,CAAC,CAAC,IAAI,CAAC,CAC7C,CACF,CAEA,MAAM,YAAYD,EAAkC,CAClD,OAAOJ,EAAA,KAAKb,EAAAC,GAAL,UAAYgB,GAAM,KAAMC,GAAMA,EAAE,QAAQ,CACjD,CAEA,MAAM,QAAQD,EAAkC,CAE9C,OAAOJ,EAAA,KAAKb,EAAAC,GAAL,UAAYgB,GAAM,KAAMC,GAAMA,EAAE,QAAQ,CACjD,CAMA,WAAkB,QAAS,CACzB,OAAO,eAEL,CAAE,KAAAC,EAAM,OAAAC,CAAO,EACU,CACzB,GACE,oBAAqB,MACrB,OAAO,KAAK,iBAAoB,WAChC,CACA,IAAMC,EAAY,MAAM,KAAK,gBAAgBF,EAAM,GAAGC,CAAM,EAC5D,MAAO,CACL,KAAMC,EACN,SAAUA,EAAK,MACjB,CACF,CACA,MAAM,IAAI,MAAM,gBAAgB,CAClC,CACF,CAGA,WAAkB,SAAU,CAC1B,OAAO,eAEL,CAAE,KAAAF,EAAM,OAAAC,CAAO,EACU,CACzB,GAAI,UAAW,MAAQ,OAAO,KAAK,OAAU,WAAY,CACvD,IAAMC,EAAkB,MAAM,KAAK,MAAMF,EAAMC,CAAM,EAGrD,OACEC,EAAK,SAAW,GAChB,MAAM,QAAQA,EAAK,CAAC,CAAC,GACrB,OAAOA,EAAK,CAAC,GAAM,SAEZ,CAAE,KAAMA,EAAK,CAAC,EAAG,SAAUA,EAAK,CAAC,CAAE,EAGrC,CACL,KAAAA,EACA,SAAUA,EAAK,MACjB,CACF,CACA,MAAM,IAAI,MAAM,gBAAgB,CAClC,CACF,CACF,EAhKEzB,EAAA,YACAC,EAAA,YAeAC,EAAA,YAAAC,GAAwB,SAACkB,EAA+C,CACtE,GAAIK,EAAqBL,CAAI,EAAG,CAC9B,GAAM,CAACM,EAAO,GAAGH,CAAM,EAAIH,EAC3B,OAAOO,EAAID,EAAO,GAAGH,CAAM,CAC7B,CAEA,GAAM,CAACT,EAAOS,CAAM,EAAIH,EAExB,OAAI,OAAON,GAAU,UAAYA,GAAS,SAAUA,EAC3C,CAAE,GAAGA,EAAO,OAAQA,EAAM,QAAU,CAAC,CAAE,EAGzC,CAAE,KAAMA,EAAO,OAAQS,GAAU,CAAC,CAAE,CAC7C,EAEMpB,EAAA,YAAAC,EAAgC,eACpCgB,EAC8B,CAC9B,IAAMN,EAAQE,EAAA,KAAKf,EAAAC,IAAL,UAA8BkB,GAE5CV,EAAA,KAAKV,IAAO,cAAcc,CAAK,EAE/B,IAAMc,EAAUlB,EAAA,KAAKV,GAAM,MAC3B,GAAI,CAAC4B,EAAS,MAAM,IAAI,MAAM,wBAAwB,EACtD,IAAMC,EAAU,MAAMD,EAAQ,KAAKlB,EAAA,KAAKX,GAAKe,CAAK,EAAE,MAAOgB,GAAe,CACxE,MAAApB,EAAA,KAAKV,IAAO,UAAUc,EAAOgB,CAAC,EACxBA,CACR,CAAC,EAED,OAAApB,EAAA,KAAKV,IAAO,aAAa,CACvB,GAAGc,EACH,QAASnB,GAAqBkC,EAAS,CAAC,UAAW,WAAY,MAAM,CAAC,CACxE,CAAC,EAEMA,CACT,EAuIK,SAASE,GACdzB,EACAC,EACoB,CACpB,IAAMyB,EAAK,IAAI3B,EAAeC,EAAIC,CAAI,EAChC0B,EAAiB,IAAI,MAAM3B,EAAI,CACnC,IAAIA,EAAI4B,EAAKC,EAAU,CACrB,IAAMvC,EAASsC,KAAOF,EAAKA,EAAKE,KAAO5B,EAAKA,EAAK,OAC3C8B,EAAQxC,GAAU,QAAQ,IAAIA,EAAQsC,CAAG,EAE/C,OAAIE,GAASA,aAAiB,SACrB,YAA4BhB,GAAiB,CAClD,IAAMiB,EAASD,EAAM,MAAM,OAASD,EAAWvC,EAAS,KAAMwB,EAAI,EAClE,OAAOiB,IAAW/B,EAAK2B,EAAQI,CACjC,EAGKD,IAAU9B,EAAK2B,EAAQG,CAChC,CACF,CAAC,EAED,OAAOH,CACT",
|
|
6
6
|
"names": ["src_exports", "__export", "AND", "OR", "QueryHelper", "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", "import_pg_escape", "pgIdent", "s", "x", "pgescape", "pgString", "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", "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"]
|
|
7
7
|
}
|
package/dist/index.esm.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var C=(e,r,t)=>{if(!r.has(e))throw TypeError("Cannot "+t)};var s=(e,r,t)=>(C(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)},l=(e,r,t,n)=>(C(e,r,"write to private field"),n?n.call(e,t):r.set(e,t),t);var c=(e,r,t)=>(C(e,r,"access private method"),t);import k from"pg-escape";function B(e){return e.split(".").map(r=>k.ident(r)).join(".")}function P(e){return e===null?"NULL":typeof e=="boolean"?e?"true":"false":Array.isArray(e)?"ARRAY["+e.map(P).join(",")+"]":typeof e=="object"?"toJSON"in e&&typeof e.toJSON=="function"?k.literal(e.toJSON()):k.literal(e.toString()):k.literal(String(e))}var d=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}}},b,H=class extends d{constructor(t){super();y(this,b,void 0);l(this,b,t)}toString(t){return(t?.valueFn??P)(s(this,b))}};b=new WeakMap;var F,$=class extends d{constructor(t){super();y(this,F,void 0);l(this,F,t)}toString(t){return(t?.identFn??B)(s(this,F))}};F=new WeakMap;var O,v=class extends d{constructor(t){super();y(this,O,void 0);l(this,O,String(t))}toString(){return s(this,O)}};O=new WeakMap;function R(e){return e instanceof d}function f(e){return new $(e)}function U(e){return typeof e>"u"||R(e)?e:new H(e)}function m(e){return typeof e>"u"||R(e)?e:Array.isArray(e)?new g(e.map(m)):new v(e)}function _(e){return typeof e>"u"||R(e)?e:m(JSON.stringify(e))}var j=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 K(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 Q,o,g=class extends d{constructor(...t){super();y(this,Q,[]);y(this,o,void 0);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,Q).push(...t.map(m).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,Q).length===0?s(this,o).empty:s(this,o).prefix+s(this,o).wrapperFn(s(this,Q).map(n=>n.toString(t)).join(s(this,o).glue),t)+s(this,o).suffix}};Q=new WeakMap,o=new WeakMap;function i(...e){let r;if(j(e)){let[t,...n]=e;r=[new g(K(t.map(m),n.map(U)))]}else r=e.map(U);return new g(r)}var ee=f;function te(...e){return new g(e.map(m))}function re(...e){let r,t=(n,u)=>(u?.valueFn||P)(n);if(j(e)){let[n,...u]=e;r=[new g(K(n.map(m),u.map(_)),{wrapperFn:t})]}else r=e.map(n=>new g([_(n)],{wrapperFn:t}));return new g(r)}function E(...e){let r=new g,t=n=>{if(n!==void 0&&n!==null){if(typeof n=="string"){r.push(m(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`${f(u)} ${n[u]}`);continue}if(n[u]===null){r.push(i`${f(u)} IS NULL`);continue}if(Array.isArray(n[u])){r.push(i`${f(u)} = ANY (${n[u]})`);continue}r.push(i`${f(u)} = ${n[u]}`)}return}}};return t(e),r}function L(...e){return E(e).setSewingPattern("((",") OR (","))","false")}function J(...e){return E(e).setSewingPattern("((",") AND (","))","true")}function T(...e){return E(e).setSewingPattern("WHERE ((",") AND (","))","")}function M(...e){return E(e).setSewingPattern("WHERE ((",") OR (","))","")}function Y(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 z(e){if(Array.isArray(e)||(e=[e]),e.length==0||!e[0]||typeof e[0]!="object")throw new Error("Invalid call of the function");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 key");return i(...r.map(f)).setSewingPattern("(",", ",")")}function V(e,r,t){Array.isArray(r)||(r=[r]);let n=z(r),u=Y(r.map(Object.values));return i`INSERT INTO ${f(e)} ${n} ${u}`.append(t).join(" ")}function N(e,r,t,n){let u=new g;for(let a in r){let A=r[a];A!==void 0&&u.push(i`${f(a)} = ${A}`)}return i`UPDATE ${f(e)} SET ${u.join(", ")} ${T(t)}`.append(n).join(" ")}function X(e,r,t){return i`DELETE FROM ${f(e)} ${T(r)}`.append(t).join(" ")}var ne=L,ue=J,ie=T,se=T,oe=T,ae=M;i.raw=te;i.ident=ee;i.json=re;i.WHERE=T;i.WHERE_AND=se;i.WHERE_OR=M;i.AND=J;i.OR=L;i.where=ie;i.where_and=oe;i.where_or=ae;i.and=ue;i.or=ne;i.insert=V;i.update=N;i.delete=X;i.keys=z;i.values=Y;function pe(e,r){return e={...e},Object.defineProperties(e,Object.fromEntries(Object.keys(e).map(t=>[t,r.includes(t)?{}:{enumerable:!1}]))),e}var S,w,q,G,p,h,D=class{constructor(r,t={}){y(this,q);y(this,p);y(this,S,void 0);y(this,w,void 0);l(this,S,r),l(this,w,{...t}),s(this,w).query||"query"in r&&typeof r.query=="function"&&(s(this,w).query=r.query)}async insert(r,t,n){let u=V(r,t,n);return await c(this,p,h).call(this,[u])}async update(r,t,n,u){let a=N(r,t,n,u);return await c(this,p,h).call(this,[a])}async delete(r,t,n){let u=X(r,t,n);return await c(this,p,h).call(this,[u])}async query(...r){return c(this,p,h).call(this,r)}async getRows(...r){return c(this,p,h).call(this,r).then(t=>t.rows)}async getRow(...r){return c(this,p,h).call(this,r).then(t=>t.rows?.[0])}async getOne(...r){return c(this,p,h).call(this,r).then(t=>Object.values(t.rows?.[0]??{})?.[0])}async getCount(...r){return c(this,p,h).call(this,r).then(t=>t.rowCount)}async exec(...r){return c(this,p,h).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")}}};S=new WeakMap,w=new WeakMap,q=new WeakSet,G=function(r){if(j(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,h=async function(r){let t=c(this,q,G).call(this,r);s(this,w)?.beforeQuery?.(t);let n=s(this,w).query;if(!n)throw new Error("Missing query function");let u=await n.call(s(this,S),t).catch(a=>{throw s(this,w)?.onError?.(t,a),a});return s(this,w)?.afterQuery?.({...t,results:pe(u,["command","rowCount","rows"])}),u};function he(e,r){let t=new D(e,r),n=new Proxy(e,{get(u,a,A){let W=a in t?t:a in u?u:void 0,x=W&&Reflect.get(W,a);return x&&x instanceof Function?function(...Z){let I=x.apply(this===A?W:this,Z);return I===u?n:I}:x===u?n:x}});return n}export{J as AND,L as OR,D as QueryHelper,T as WHERE,se as WHERE_AND,M as WHERE_OR,ue as and,E as buildClauses,X as buildDelete,V as buildInsert,z as buildKeys,N as buildUpdate,Y as buildValues,ee as ident,R as isQueryFragment,j as isQueryTemplateStyle,re as json,ne as or,B as pgIdent,P as pgString,te as raw,i as sql,ie as where,oe as where_and,ae as where_or,he as withQueryHelper};
|
|
2
2
|
//# sourceMappingURL=index.esm.mjs.map
|
package/dist/index.esm.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/query-weaver.ts", "../src/query-helper.ts"],
|
|
4
|
-
"sourcesContent": ["import pgescape from 'pg-escape';\n\ntype EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => pgescape.ident(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') return pgescape.literal(JSON.stringify(s));\n return pgescape.literal(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\nclass 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 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 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 key');\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;\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};\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;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\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>;\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 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]);\n }\n\n async getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery) {\n return this.#query(args).then((x) => Object.values(x.rows?.[0])?.[0] as T);\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": "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",
|
|
4
|
+
"sourcesContent": ["import pgescape from 'pg-escape';\n\ntype EscapeFunction = (v: unknown) => string;\nexport type FieldValues = Record<string, unknown>;\nexport type WhereArg =\n | string\n | FieldValues\n | QueryFragment\n | undefined\n | WhereArg[];\n\nexport function pgIdent(s: string) {\n // '.' is a special for us\n return s\n .split('.')\n .map((x) => pgescape.ident(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 pgescape.literal(s.toJSON());\n return pgescape.literal(s.toString());\n }\n return pgescape.literal(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\nclass 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 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 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 key');\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;\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};\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;\n rows: T[];\n fields?: Partial<pg.FieldDef>[];\n};\n\nexport type QueryConfig = {\n text: string;\n values: unknown[];\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>;\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 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": "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",
|
|
6
6
|
"names": ["pgescape", "pgIdent", "s", "x", "pgescape", "pgString", "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", "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"]
|
|
7
7
|
}
|
package/dist/query-helper.d.ts
CHANGED
|
@@ -35,8 +35,8 @@ export declare class QueryHelper<X extends object> {
|
|
|
35
35
|
delete<T extends QueryResultRow>(table: string, where: WhereArg, appendix?: string | QueryFragment): Promise<pgQueryResult<X, T>>;
|
|
36
36
|
query<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery): Promise<pgQueryResult<X, T>>;
|
|
37
37
|
getRows<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery): Promise<T[]>;
|
|
38
|
-
getRow<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery): Promise<T>;
|
|
39
|
-
getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery): Promise<T>;
|
|
38
|
+
getRow<T extends QueryResultRow>(...args: QueryTemplateOrSimpleQuery): Promise<T | undefined>;
|
|
39
|
+
getOne<T = unknown>(...args: QueryTemplateOrSimpleQuery): Promise<T | undefined>;
|
|
40
40
|
getCount(...args: QueryTemplateOrSimpleQuery): Promise<number>;
|
|
41
41
|
exec(...args: QueryTemplateOrSimpleQuery): Promise<number>;
|
|
42
42
|
static get prisma(): <T extends pg.QueryResultRow>(this: object, { text, values }: QueryConfig) => Promise<QueryResult<T>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "query-weaver",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "SQL query builder using template string literal",
|
|
5
5
|
"main": "./dist/index.cjs.js",
|
|
6
6
|
"module": "./dist/index.esm.mjs",
|
|
@@ -33,22 +33,22 @@
|
|
|
33
33
|
"homepage": "https://github.com/kikuchan/query-weaver#readme",
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@types/pg": "^8.
|
|
36
|
+
"@types/pg": "^8.10.2",
|
|
37
37
|
"@types/pg-escape": "^0.2.1",
|
|
38
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
39
|
-
"@typescript-eslint/parser": "^5.
|
|
40
|
-
"esbuild": "^0.
|
|
41
|
-
"esbuild-node-externals": "^1.
|
|
38
|
+
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
39
|
+
"@typescript-eslint/parser": "^5.60.0",
|
|
40
|
+
"esbuild": "^0.18.9",
|
|
41
|
+
"esbuild-node-externals": "^1.8.0",
|
|
42
42
|
"esbuild-register": "^3.4.2",
|
|
43
|
-
"eslint": "^8.
|
|
44
|
-
"eslint-config-prettier": "^8.
|
|
43
|
+
"eslint": "^8.43.0",
|
|
44
|
+
"eslint-config-prettier": "^8.8.0",
|
|
45
45
|
"husky": "^8.0.3",
|
|
46
|
-
"lint-staged": "^13.
|
|
47
|
-
"pg": "^8.
|
|
48
|
-
"prettier": "^2.8.
|
|
49
|
-
"rimraf": "^
|
|
50
|
-
"typescript": "^
|
|
51
|
-
"vitest": "^0.
|
|
46
|
+
"lint-staged": "^13.2.2",
|
|
47
|
+
"pg": "^8.11.0",
|
|
48
|
+
"prettier": "^2.8.8",
|
|
49
|
+
"rimraf": "^5.0.1",
|
|
50
|
+
"typescript": "^5.1.3",
|
|
51
|
+
"vitest": "^0.32.2"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"pg-escape": "^0.2.0"
|