From d04e57816786b0793c642a5f84102c811d8e26d0 Mon Sep 17 00:00:00 2001 From: CJ Brewer Date: Wed, 2 Oct 2024 20:21:46 -0600 Subject: [PATCH 1/2] feat(js): add prisma app --- javascript/apps/prisma/.env.example | 8 + javascript/apps/prisma/README.md | 5 + javascript/apps/prisma/package.json | 22 +++ .../20241003015025_init/migration.sql | 11 ++ .../prisma/migrations/migration_lock.toml | 3 + javascript/apps/prisma/prisma/schema.prisma | 28 +++ javascript/apps/prisma/src/db.ts | 2 + javascript/apps/prisma/src/insert.ts | 38 ++++ javascript/apps/prisma/src/select.ts | 16 ++ javascript/apps/prisma/tsconfig.json | 30 +++ javascript/apps/prisma/types.d.ts | 7 + javascript/bun.lockb | Bin 89496 -> 94056 bytes src/cs_encrypted_v1.schema.json | 182 +++++++++--------- 13 files changed, 261 insertions(+), 91 deletions(-) create mode 100644 javascript/apps/prisma/.env.example create mode 100644 javascript/apps/prisma/README.md create mode 100644 javascript/apps/prisma/package.json create mode 100644 javascript/apps/prisma/prisma/migrations/20241003015025_init/migration.sql create mode 100644 javascript/apps/prisma/prisma/migrations/migration_lock.toml create mode 100644 javascript/apps/prisma/prisma/schema.prisma create mode 100644 javascript/apps/prisma/src/db.ts create mode 100644 javascript/apps/prisma/src/insert.ts create mode 100644 javascript/apps/prisma/src/select.ts create mode 100644 javascript/apps/prisma/tsconfig.json create mode 100644 javascript/apps/prisma/types.d.ts diff --git a/javascript/apps/prisma/.env.example b/javascript/apps/prisma/.env.example new file mode 100644 index 00000000..4e875d66 --- /dev/null +++ b/javascript/apps/prisma/.env.example @@ -0,0 +1,8 @@ +# Environment variables declared in this file are automatically made available to Prisma. +# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema + +# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. +# See the documentation for all the connection string options: https://pris.ly/d/connection-strings + +DATABASE_URL="postgresql://johndoe:randompassword@localhost:6432/mydb?schema=public" +DIRECT_URL="postgresql://johndoe:randompassword@my.db.host:5432/mydb?schema=public" \ No newline at end of file diff --git a/javascript/apps/prisma/README.md b/javascript/apps/prisma/README.md new file mode 100644 index 00000000..bcc8749b --- /dev/null +++ b/javascript/apps/prisma/README.md @@ -0,0 +1,5 @@ +# prisma-eql + +Init migrations: + +bun prisma migrate dev --name init diff --git a/javascript/apps/prisma/package.json b/javascript/apps/prisma/package.json new file mode 100644 index 00000000..92d4440e --- /dev/null +++ b/javascript/apps/prisma/package.json @@ -0,0 +1,22 @@ +{ + "name": "prisma-eql", + "module": "index.ts", + "type": "module", + "devDependencies": { + "@types/bun": "latest", + "prisma": "^5.20.0", + "prisma-json-types-generator": "^3.1.1" + }, + "scripts": { + "insert": "bun run src/insert.ts", + "select": "bun run src/select.ts" + }, + "peerDependencies": { + "typescript": "^5.0.0", + "@cipherstash/eql": "workspace:*" + }, + "dependencies": { + "@prisma/client": "^5.20.0", + "postgres": "^3.4.4" + } +} diff --git a/javascript/apps/prisma/prisma/migrations/20241003015025_init/migration.sql b/javascript/apps/prisma/prisma/migrations/20241003015025_init/migration.sql new file mode 100644 index 00000000..6406f58f --- /dev/null +++ b/javascript/apps/prisma/prisma/migrations/20241003015025_init/migration.sql @@ -0,0 +1,11 @@ +-- CreateTable +CREATE TABLE "User" ( + "id" SERIAL NOT NULL, + "email" TEXT NOT NULL, + "email_encrypted" JSONB NOT NULL, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/javascript/apps/prisma/prisma/migrations/migration_lock.toml b/javascript/apps/prisma/prisma/migrations/migration_lock.toml new file mode 100644 index 00000000..99e4f200 --- /dev/null +++ b/javascript/apps/prisma/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" diff --git a/javascript/apps/prisma/prisma/schema.prisma b/javascript/apps/prisma/prisma/schema.prisma new file mode 100644 index 00000000..f173dec0 --- /dev/null +++ b/javascript/apps/prisma/prisma/schema.prisma @@ -0,0 +1,28 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? +// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init + +generator client { + provider = "prisma-client-js" +} + +/// Always after the prisma-client-js generator +generator json { + provider = "prisma-json-types-generator" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") + directUrl = env("DIRECT_URL") +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + + /// [CsEncryptedType] + email_encrypted Json +} diff --git a/javascript/apps/prisma/src/db.ts b/javascript/apps/prisma/src/db.ts new file mode 100644 index 00000000..152a8ba4 --- /dev/null +++ b/javascript/apps/prisma/src/db.ts @@ -0,0 +1,2 @@ +import { PrismaClient } from '@prisma/client' +export const prisma = new PrismaClient() diff --git a/javascript/apps/prisma/src/insert.ts b/javascript/apps/prisma/src/insert.ts new file mode 100644 index 00000000..0de4f6dd --- /dev/null +++ b/javascript/apps/prisma/src/insert.ts @@ -0,0 +1,38 @@ +import { parseArgs } from 'node:util' +import { eqlPayload } from '@cipherstash/eql' +import { prisma } from './db' +import type { InputJsonValue } from '@prisma/client/runtime/library' + +const { values, positionals } = parseArgs({ + args: Bun.argv, + options: { + email: { + type: 'string', + }, + }, + strict: true, + allowPositionals: true, +}) + +const email = values.email + +if (!email) { + throw new Error('[ERROR] the email command line argument is required') +} + +await prisma.user.create({ + data: { + email, + email_encrypted: eqlPayload({ + plaintext: email, + table: 'users', + column: 'email_encrypted', + }), + }, +}) + +console.log( + "[INFO] You've inserted a new user with an encrypted email from the plaintext", + email, +) +process.exit(0) diff --git a/javascript/apps/prisma/src/select.ts b/javascript/apps/prisma/src/select.ts new file mode 100644 index 00000000..a4f43dff --- /dev/null +++ b/javascript/apps/prisma/src/select.ts @@ -0,0 +1,16 @@ +import { prisma } from './db' + +const allUsers = await prisma.user.findMany() + +console.log('[INFO] All emails have been decrypted by CipherStash Proxy') +console.log( + 'Emails:', + JSON.stringify( + allUsers.map((row) => row.email_encrypted?.p), + null, + 2, + ), +) + +await prisma.$disconnect() +process.exit(0) diff --git a/javascript/apps/prisma/tsconfig.json b/javascript/apps/prisma/tsconfig.json new file mode 100644 index 00000000..4e39a25d --- /dev/null +++ b/javascript/apps/prisma/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false, + + // For Prisma custom types on JSON payloads + "typeRoots": ["../../node_modules/@types/", "./types"] + } +} diff --git a/javascript/apps/prisma/types.d.ts b/javascript/apps/prisma/types.d.ts new file mode 100644 index 00000000..7e43d89f --- /dev/null +++ b/javascript/apps/prisma/types.d.ts @@ -0,0 +1,7 @@ +import type { CsEncryptedV1Schema } from '@cipherstash/eql' + +declare global { + namespace PrismaJson { + type CsEncryptedType = CsEncryptedV1Schema + } +} diff --git a/javascript/bun.lockb b/javascript/bun.lockb index eb19c74051806accb8f39d2d507324ae05d952b0..955cddb01e14e25887f36eb22f7bd13eaddeb36f 100755 GIT binary patch delta 19281 zcmeHv33!dy`tM#_20L>Ib|R4kA+t;}knD&dq*0{kMhzK}$Rr6hl$|I=QNyct&2vkX zQb$o$QwLO)qGmO;2dSYk)0X>tzacyAbqp4)St=RWs){N7=$cg^n__LpyYXNUE* z3)Ztj1JWKGow;aI?*@mbt`4^0oQj$}eZzC5_T#{Q_kfG5GF3lO4 zQ&?6SVJla_yDl<<{b}fK;M>3*!9Q2@G^FQ>B!F|iWu^JKnJB{+iivC1S&8sL^L5Y* zz_}+r1aSb*R>Dz;)bg^@5ycQS&k)J>_rW>ir6`s4!P&Vb9A7#jt0bc|N3$H=!xbye zEy*a$Db*B=;aCJXYfMr>WkYica|e&s3`Ku(!KL8bf>}t&T|Okgh%2n=0EN3S5}b#C z$A#_hLudZ#(A=z{u*)sY8I=P*8Sy+s{VRkSlGE|G; zpjB0%tGZ1r|^ek{Ls0%o^s4X~G z=onhSUAr5Er{}Sjau0l@v@EX(^)J+D-~m~fESjJFWxFfjoc<&@r~gXgCW{m8K>&Bj zHgN9JqQacA+=3iUL2f~AR>gTjw0d>1$m<$8rLRQObdzpC); zoXinJ&@%<4=znkx`m3}kKSPr>v}jmvc1FpsQL?k$Quv(K@-(~x-5v$xmWD_(G6NpN zJyw#Fk&P)|tj_<8!qEj8Wm!WrOER)B-8GY9WV^4x;iu(Zv2qV*Wn{r;@vL!>BaR`0 z$0*W)CfJ6W_Qc8R2jJYW>EP@`KeUx+XC#txePZKf9-?qJgFHghz>#zLNpPOEWlH#{ zL^(foGMt3Y`TSvoP5<7|BEx@gWZ|3t)1lR%W$ar&C&(@RLreZ#L)bSZC;hiu@;`5g z>Z6gJ{cqB7+li+56V(q!7duaA8d1IOR8rHfck;T;@tJ&Ocbz$(R zV@EFaD-RBul#`jf^nB%tMmru^@4Gf+bMmqQ2Wrs z($a3navG&OMeUp}*0nS5Eo%0|y&Ic{*7XsTZnu$qoV$oT%5_e(eg>!PMg`7otzQ%x zO;<^p59tL-x&o<-Bn4r&PnM+NkUFv?KBWNHMC+Y65A>xF*S6LTtu&h6k~9obcS-sf zQmQ0bTWd6FwB9w|3c`z0&`L;>nYcp%^%Je(78-lXSQ|;{&UM8YT3bKS@k8wPaFcSF zYTU@zIf&yNe?usy`R_xuNw$<{FgT9JNdj}^_mTb?bv2r?YA7;OpJ;?*sVSenW$yG9 zDMja~hqK=C90F5REW$nbe}@w@@$E z)Y^$2loxH#?MEP&r=#$o7_CiXszP8#oH#g7d8o!Wro0$~*42|L!LmH5D#oBY;E6d6 zlRBK4u0GB}+-HKSqhqvvy{IzQpnDgAHFdETO?Ww2AB2SgQW&idZL1pxDHh4JG(03m zw*{K)Al1P!);8XlkrZNxxAN6!UZIdSZLOz5!pZ>Ya!pu5Q;nvl6gCUe07<$DDOZwS z#(tS0Nn0Vwv2M*ZnjuoySV%dNbP>`ZNlNrnr6rK$6u;Dj^=qNlU^65mr_kBq1jdsX z9ugd*>jX{iWFE~)(7GW`9{zLCxLf5uYv?a`52g%;>LqA6U&wB%djlFfyEV@hU7Y|q z7jzTyOoP@Qaat)ILF4kQBnLaDXp*J2ejw!~8FXoZwS8~~G_Hi?M7l4b;TR+Pgzh(J z@_3+1+IB&d=V`Du;(&)0-LtLrYDieoAywB%388A()EenTjpW-(TKSP;7$mIxkT%yy zztl(_!qnJlHPW#fsd2a(n^hyNgM|Hq>rx}dpv&a2aW&FDNZ4IqXN&WaETz^+Gi#({ zs-$fcMU_pl>_kyjQ-f{<28BBaV-^`>y$)I|g?M7rv0L!EATKiA6iptJmC#<0x|nC} zO=yOiE)GIwoFArEs~GEH5aXp?@I6R!&fi0l2Z$$ydyG6JD8DJj9-87M@R^y=I z+prB)b~b3cwV|rc2J1P`=qTO*1be!+RU!p8FlgUQ zq&%?8iBt*Jq#ad(^>0Uk4Gq?F;rrO}8@9E+0tu%8NMT8;G_FQESR*yU+`$0?cA1b; zBxzlZbgxEA=%B{FQ6qg*Bk9qNa@q_@D)5LG9jVeI(F$s3Dbv_as${B>zJSz8inYgb zDN8+Sq_|GD0e=1!UKjTDrBr{4XcX)+g( z8v|MZo1647w*q`+RpM;dRMDB&0sH{A!wM}uwK>}d0?dQ>M=2K&q6AI=kz&JsD+z2fD;T>_z=Z_IVZ?fbmm;4B7h4n0XSVL zzz=f{AIS=y+MMlP1(=Tl_+buv6CdlPh}Sq24|C2)?U{eX*=_>B4|A^YL{{+B=3MY3 zfbFLM{4f_>%2Y}HJ+Ftbg-ZBe%DHv_N&(ieU#3*-d0dCMwMu+#&OK16gxBU$@74}r z!*z-wb3L$6(fVqCEi5|ugx1GzJ)XcWC2tP_z!d01Gpyta>3j}f23;!o~We% zm$~WBCj7sYPHI0-YX*<;zq0$nT(bW+c45=+wr}3N{mjBmwVX6O7f&bPnY^uHcq8`#V z%{{`qFF(xx!d=+(S8nf81OD+Y++E(5|NkzGzWOtpAb0Vih3v0#2uEsmY*5U8~+Wd*P~Gx$cI0tKko{hsPdVaJ6^!CyQ@~ z*bhGNbfhlk!xOemzA0|=%BpVOv-f{9H?E-QZ!gcEU-Ws!3jLC>w6$-dLxtw4GoSAo zP||!Oof_n5ayqjr@ml}EcRwpk45|Kh`-tBb-aNnO=d6C)Di@46p0-w#G*8!fWWDS! zJapYQui4vc>&{gLXPRkezi7}k8**e#o=`Ga0nfpF1siL(a|VOQ$s3 z<{x#px4Y?^=I0OG>lkcX;r(%`@0ahM?e3oK>gN~!{oRqto9efl-($Y+zD=Da-`P&v z)||$r>rHo`O&H^LI{Vy#dB3bXp!dAJt*X8hzd4sQ?P_U5>(FyW*YD+w zXy}@M@ABGlfn6rq9&g^guS}G58vuz6*4I)U`Wf!tL7v;T^Y4-R=xC+0}Hcm zpAP*pc6HrB2|wjzTAgfa8)tA|?Hssu)6rXLy?ib?UiiF8?6s7!y$TN=U3HDlXXxqc zaj7Qt1qWwsRla3!z_Afe4Q;i)m)o>|@uyQM^S}6_Ye`ho%)b{*`0`+v^ik)V^~&=b zcJA%zeIj)!ew*exys~8I;}bi4$3E=nx9?D`>NZj9%K3i3v1yTGSZ_CqqBU(qe%_Ny0O2uyCC)bO(}FZg_Tci(%>#zi_^KQ~=-VR(ANopTq$(hi?! z9#ku1Z_>SH6h4#z>Py=}o097|qi9CCpv}p5pi%hI@bN~`f)0STBwv$J_|s_606Gd9 zNCD+W5kwWB!E_olgu*L~B9x|rwxUa*VH7vPD8gwrXarpcjijX4jpU!_NUL8@6|JfI zb)$%;l!-4w_5{Ks%G~n?})vMuVo%QP3ACV46{+QUz#NIt}_Fg->*(D$;2745N67u7mcZq_>Qs7tIIlP1T?;Q_4)EFw%0+KJ*y0 zFQv^gihi^f^c51bjiNvG1sy<}KnId;j!_Jv4A6Ai4w^x(WE7c{3z|iHK(onxu2JOB zaL~bY0CWiXzHJmkX*6gq9RhSO}& z61x6QPivm1r8FN)lYhA*{Wd>UjG&YSSg4?_Uyv$ZrN_{wR5;Rrg{fjRtzBrO*a?p0 zxF}VOrM`=dbPd{0XyZt?*hufZ?nniTQ-z7PL+dipk-V0qiVDhIVx&jVzJ~TXRpc4P zL^=&RiNc2&#TzsgbTVB6okDT>MlqFUgT6`EL8nntfl*AS`JgkX8uTqnDKv_iv>bF6 zJqDdkX+=gcht`4;iDILeOMOA#rcI#pNH^Rl%#;E84s8dWPp&0Kv4C*v}1-N z`IV-M#WcJW?RX2?(p0gOhA%}sW;)UdXv@iW8QKAD(y~;sl8!=KGs}@$FHaS#sbaa2 z`pkBuAECWR;VX<(cMkk#MXFd!m!NHf)@fy`SVyy08fhpw(tT*_DQT5aY@qp|A5b;u zMoL+26q{%{=!f(ebTg&BYZQN@wV+!_yk`_2QD4xlvDCy={jf?C5`LGO?lYZP~>FX%nm zG`2f6b9Tcw1y(xs8_*0ox@H>2X~5d6j_T)^xAEiC3ExzVWy=QY$CbH-**T*^^Gf-E zprPuZR&&;u)9y`Hl)lN$LH$rND?c}s(kj~_Vz>1P7ksOOe0p*|j`Q$#(@vu)Uk2{7 zIsBuTI^^?_gZ5#Q&7mK?p_NS3k9u0;r@1{$O6zd2Z(eCpVMJM}rYZh#<%}Ho=vQ2l zQ&yInQ*sz#Tn2yRVda=t8ZtVgAYU^Pe~;o8%;ZpQNIWH1zN>8=wE0%$9l`wR2Ca5; z?x#t0KvpvO+I4e}BiHR9HMY0Ac88mYmpu3A(A9P(&C_S{!(pEQScWuLS;3>~Tqk}# z#&J6VKJDzl)G>lM z0{p6-GkFBCp%YLHaDvAGhhcOy!vPL^0&rL#&KXZfPKd`Yene!1!6%BUuQsN!*Bt}6 zOIiV8KsXQqTm`NH*8y%3cc-3KU-ve_durZUaUHq+++MC)Ai#aaeRCQ(18|?51I_~% zfbRkRyGj($8i)pBfLH*&#DB@;zxDH9UHKy-{<|)J8Kh|kBykb#A=sc{wm@Bg&t{&0 zAJ77T?`nd9OSHJEaeID+dlBHV{tV!;{}R{_8~_di{7aR8Zodz#2Q~m702_f#8tPZ& zVcG_9JMb~E17NpfH~SRW1?&d)0DFODz;a*(uo74WtOni%-UHSE3xTP?G+;U~19%IV z3Csd!19JcZ=7Ke@a@S3S`~r|l)i>&!Iz#FL@Vj6;zzZ^;`@8`kfZwVO0fquOKsN9# za0sXb1_FbCbYK$j1~3^g0p&mikOsU2^aR+S`F(RPkfN&rJhy&N|3ITpA?h4cc>H}^-1E3+$2+#xWf-YQd(X|=G z=71mI43r{y8BhWg0mT5%JJ!|k;zv;MJH?9TOp zdWz1ouL0l=cmR5UXCvzjRp+s1AK*MVKaTSOngPB*Q-!N#v2*+JII_31*DnQ@0E>Xv zfzbeu7mpKY2H=$<9^e%s7Kj7d0-VMGBmwP#PC!TCB_IXp0q|_;4kQCz0S@P| zE+}6TQo(t0y$EyzdIOvRC+2Cuycf_Dcm?PS^a1)QoE0HD#2yX&Y0iMykEb#Kc%fv)rF|Za`1*`$y z1y%yffn@-A0G9m*g2$!_Io%o9Jq4m2+(7+c*~i9!5PO951a|^ou_%Ad z@O>>d)D;86L*qgtF=>^nMpuqscKOw{S9)C$5gHyE4*Ny4{EoY*q#bwM8*?waAbq{- zFRktLnz@fvjnx6VeaF2u_gg*0rzdLKHvZa}$9|BK5+Q`mMNDpd9m3N72X>5gN$@qEYWosh^EY zCQ@D1+f?d@yMkCD9+EYQ_ASg7}h`9xkAM z-)<>Ky#~f#z?=9JcrE-YhKB_|ALN^6Y8Sf5y^EMXj-?b69UAeEdd>%vK!++QpVT+i z!pp)#BjRxCQDRoo!)LD1>b0}kt@_Pqu_Yl+E5^eM!XrXs)r)AlqWCYW(iZGM3`Q%wjfvnR7M9w0#!3PpmYj^INP@byrIMhB0hYDBoA}f@r-pzBbS1-R;Gw0(?N{IYhP4PZ__#^Osq!}9>^eVxHm-Ql$wSAGSvdL%PO9F} z>$~fg^`Z+m{Skv;9=lEr%(twCK3ct_x1@5;PYoMpGYONTFkVdG<;)dp8SeQP6&Wn0>-+g6>wKpOQX;cxk3V{y}tXQY_$Q0_cbrJb#4;0;l|ci2xXI-C4(DGv)TvFHuiNFS|U z9K4a;ulM=*-5sS`NhPRv6yGlj|6Bg8tR;wvl*_)YH@{_zo;0}2Tiek-l}A$UE&UPG zk7qCjUA@m(tKQLwk?L(ehqPLyzqBJ7nO*8ybkFD1Cr+L>BR$LmVHvGnS-kZ0>ka-< zj_;seJhRXy^>X9r>Mf_vCVnEjJtjz$=0Rig#k!(llQ4~X@i9Fm%f9K<-rR5O!l;>S zqxV#=K)SkrZq^@({SFpb{n+BNm)T7Rue|ML?!vsSxA`^ZUA)a3b*Nbu&Nw*gly7-< zyDfKtOkT#n^fOoq1=cpkNtUU zcPE$0M=dc=yv<$h;FX>}^8L3*1Lu#AT6FN4#UjziTn>xq0kFWo@|c$EVY2>f~;*f{5ShCB%s(Zb~3*8PLLJZG&q&?|xE_6Wd zS75<2Z1ub)H>`cqlOzji)PMFjuW-PUsa`O@>VZ{>YqFbf9YU!j>SN|F1lB9 zt8zHEyuM_^$S*B1PlM?xlB)M+ z^V3&6`)>Ajtiozi^=55^>$sOMef(0UC8k{nb^R^Ee9J)$jaF}?E_q`|hc&-By(=9G zq)ke_x7yKp<9lT@j=aeS33=}S8fBjDh?zX6wRtzVr+S0cZt!#!-Z&}7+#hK@)%&hieIj~&ZBzL@P@blJ-s$Ie)GtCS`j@VUfxu9I4%q@?!Vl@azOs$NzD>7EuJ>q*GJDoQl5bx z4g6dyn)N*7CJYJTu^K!p5W_QXMDB)TojWDpu_XNCeECy!~208)*^#XGPr<8tKLr=DWL6m$% zKWQMVM-kELP3CznbQYsoo0D z-5$Rt%BJA&Jjudi@w-d2Fo>2t(nmjUxswgli{{Z?4}G+J&fmsZk{%7BTS)r6_ENW|>bhOLqEKkcNKhz=v^bH_(Ac-{^rC;cIaJfG@4pF2KMQjAZJr~2sUj*n#U zyd6r;yHhYNLDJ`rkCgOzJCvNXBA9NVTF)IHDJjOs=b1kGx#J@lJa31R^S%~Lg-H6` z@sW}~Z-_7(?#^wdfS;RT||?nU6ok)8_#_t(@ zdk}Q~E%PvD*1G}kxHn@!mBBgqPbNZSV>N6@PFYBCen#2gqLKo+=n%X?2#X$^)jBpKGCDRpD<(51Zg6I1 zW=?EeR7UpT*zB%RQLVEh!eX-`Vx!b-)EbP;DJjh@D*R_zSaL9@)f1lm{}0*JYMPR< z(!_sSM@s=w=A=f#r=`+owVR9FYpYV$X7QqE>aG||od+w4TcXvxYIi5BYO6KIzON|5 z`aCZ}qJIz@!oR=5*=5w;sd2xMp*i`*IVI+bDAC3IQLt$2D!rUSei9GCdnu_QO7>`` z;LcC!`>w zcxy##5$0iD+E3VS{kgl)S($@9MH_RNpJ-+-_7XN*$9sx}!m+40r!ccLJ0zo|AUeu? zG*~n;w`?Mkx4!Eq?%Hg1>m?T3npZUv;bup@2r+lii-@hS>xEw(X?o2|79QrSjYTJ^ zy=G58;b!jT4ZC80)b?Vq@Y-6~MC`TMx;|LUwegUa8IV`Im!y{V$mp<9nf%)d%wN4C zLhLk!@?sEHD6d3b{Y6i^bR}?9AshLbm-ZJr5B2@@kwK@|Bwlf;w_7nfC8bQ3|H}yT JZ~eu>{{`1SJ=OpK delta 16353 zcmeHud0f?1`u{y2xxfVx5EQt8h%AB&vd9*CfmB4nJ-do4APUANpt*zNp4zBS`AJ-o zQo~%*)U>SJa>lI^Gff;FHLWzWw9WdOe&5e$x%g}N&P+4S@B7d9^Wyz1=RD^*+jGum z;hrxp8DH3ETpAG`_)E)ocjVO_X))z93c#R z-CSl3s66z!B5TCiV5q8?Se8=){T$!{{Rnt-@Lk~U;OoKNz@GP;D{SiT2fvyt}L&-r@g9o(Ri67 z3L^gocvJ9LliHxuTKZY&+~5=^g8_e4u^{X(uRLdBLE#ufEedh@<=~ZE;dBVh$7;O4 z#*@HXAiXWPC%A{kAHo~!UuyiE#t&=!HI1**_yTYq$%z`z(Re>+L#2|@6$#wp_8Rxm zxP!(=qGw!TUvM7!U-#rHymJS*N58E@7=L#BJND?G>d+}Pm^(bCGB0Q1ILvoZIS8&_ z_w2X#=(lyK@}HQa-_)aM1StpIX>i10)u1+N@Vx+z*{SLc&go&QU1b#_QJK?<@`&nqq% zJH@bA(`9fM_}hhYyo|>cmgFG*4Tf=HYS380Ik%S)Hy@4*%JU}Yfp11S zult$pREMS675N>X%A1mj@`%@}k?qwE6crQ~lxCNgcSAb&*t3ILt^l0(i^n*f*T2+J zt@wLna0_ok=K=@8c?4EQsQg*zJcR8!sp~fYoGToNeC8gJYWW;+F87c8R7auz+>&2A z+KeIM20RDO8-+PW-N^(v?_6iWIsI0&x<90#Hm>kMXO(-zs?l9h);W%+q;z8Ol-!ar zdG<)>4wjV^7V>1rCSd$|tMo}Q82rHR$E#cCr{G-C5%5;vHQ)$?s#)Nz!E?3r6!0ME zt-ujiRS!{J0QhB%9|Gs{FKhaIaIU8ioVVt&<&}Ap@`@|UMI+S+{5uD=twb^>EyiJZ1gNMMYT%?=khV&T)wTw^;q(U&gDJ9d1On9^C}98@(e|l z1w{q99mf{KYk5gwwjnpaD~-BrhBdD&yI zKuY!1l3hHdD7zvzKc_4^7mLGC(?hlU9Gs^-F->iVIX64kz}MLzHREe!a8I&>NV1Rc zzt~e%Pk{4=RSOQwDnoAsGle)Va&wXol>}Y;?pB-VJDWdAZIk(Wv(|$8H$6&jt_P^K zDa`T3kg5*t=jP??OgBxI9QQ8$gV)^K3og+C=PL4cxlE^A)5T!&aZ5JdL^Jx5zgvl2Owvql+Dc zeoE2?NEwRs4Wt2zlxj2>`Y6(~kQ6&{ktVM9QZGe1Ym)-7A*pHkHfe`V`q?IR z!v?3?Ew)J?L+Yvc^FxHGQm!J6=-x%RQ+4-bJE%PrlQ;x{DowLV2Xsj?dQf$m#gvYv z!=uuKvVG&Fl}L=V81EsmFRh78GN$2 zp-a+UGu6jgq?=|k$6KV9zGUucG4{o-(~tanCK=a2>Z3?EZBjh;CN*u2O{#;Gq1gFh zr|hLjc{XXAP5RL$rC`TX?H1ak(>BQ$`=gpW22xMO-)5V1*Cr*l)^n>M^-%1N*d(Vw zP8-pyi=85Hhn~|V>3kqndtt$}p?a{9ZOH6xk=D1NEU@cssMnwirj_mfnHDqETF;D{yAt&Zc#UHzh#Be#v>z7D3~Rnkd@)&=M4l zt2MSKbAUw}*PgP#UTRO(VD;^(KEPrM>R|KY7jJqRT6dJgmV)~BL3>Q`l8xP?c}J>m zZ81I3QB8DIOuQph%|WSl1hg(FU{6=z>}5?evL^jCg3N6!rqoUb!;^|nZnX@J_a``m z_OYg6uuyyJNVP}kABq=7QdW?~REtDzk|SmN$D6J~JLhFVOF^Dd+4^du zs5;nUx`jlp&qUc6>vqv(4zZZ>F~aOqouikcsXD|W#l}!Q*!&nWhgwWu#b6JBNfUNv zipQe{kG!D3ka%fEXR3$EaU|N>Vhq94MkZbKNit4=6iFBTl1w#_cv2*)@r^f~ho(h_ z7n%}BSz#9AK;#dj5n)Njt&oN)l6|6{mJMl;lC}%d2t{&7%L^1~Dx_>hx&TSdO-RBc zrjqs|q&!8kLn}uqQm#!p1W7Fs&{fZ!2}y0iIY?HN=prm+ZecNv#Sp?BM~OLJsXK4 z(_u(lv+Di7ps8)-poqm2lA0G7kIe&`I#BRn+6;~R=AaDJ_s~!jb@5Vr9O1}blw~MQ zPa|`Z#kd)X-RWY7B%&~=~UgtV%&xe zDUL??Cz-B6Qpbr`pS~dO^rGsn7Sq~Z215?~Ia8olyvY>H=}U6qD;TEhPh$N2v{6?2c~13Xm=0oI=Z_+rlbB35uQ=b-*0;0e48@Mi`^U3fx2m2-V>0ZRO_zz*L5*x|bXU(8wG z&kC+bIXgJ0r2fC0?GFLW4{Q0%+5U*8Gv@}K;N&LMaiEtwSASZ|Ryh4K)N3dwoB=rZ z9KcRL0r+Ch=@(eR_4hd2T~e%6F43BS0d!`dTP1tEuH`(+n{{OMzKkHCk&j0i+k?a4Pdm_?a26(PF0DLj$mAVo5 zJ#UGXd*P5T=3F7)3iUyha zM=L?w(;d(b)N6xPbfg;42>J=M6AjpC6_KXJ4RuN4@L1SpgD^^M`Mo(%pL@Z5M zXccjE3^bkspRtMrngW_gb)b(?_#&%FqFJC_=sajwidt;NrhjuKp zQo_?{-SQ04kFu9r=?iE@XzKuav(}3LHMnoGia}HW`UD*W#Xm(}wTdTc0;rXafexX- z%~mm#rhsNq9q2F$-(nTRX%^@RIuAOMqPAMaC|U?Qny!FmQ{pzO$f0GRxpV_`45hwi z6?wE0bS&Kg9Y?*k_cIB@1J?)GfAh(GoK+N10qA%-2>KNHXTSYm|8jl&7<3iWRXNZXu^%P!uA)-AAdjt>SH3IeUFogwy9uQ}+`S{K?nCqo>hpP+fa=t3jr zW{AVIX)gK%&1GJOI6_0`S;e1d2k4*4G~X(YQa0!@dK2_Gxi7Ga6I1|tk`98tPd*E+ z;sbhfxmA2f?qn6Gr~tH%4uYO0pXaRNBboquhK_-LOo7i^#aWsHdXDNqKcVmyR&kzY zf!5P`&r#LmVsWT8=zMxb){8YrInzc(jCxi)T`Pm zu2T)@XY>>3=QLoIReV94KyQ#(-H$$U^&~epJKDb8(U^&GGSPs&)0C7hI~BkoJksQwj>+xnif2 zF#gmQZ))&Ah>N+r6|TJ9RJ{l8h6-j&GctuQ$BY)N;L>%jk3S3YQy_of@B;V^?hSyiV*uxI_+h_NuH&FA z@`HhsmWFQ*N}4@*Jb0Do8H`)m@x*Jl8iW@tvnXe`;C`ECHSccrdx$JZMg|?7IMAM?1drlI9uc=8vJ2@Iz$f zDrBt&)&OgP&H(-k!e7aiFI)@2`7N5qekZUC*bVUb?*aIgpWnjyjh#Oi@Eq`%I|EGt z7oZuyFH=tfR$vIg-*~bN1}gd9SUDW>2w)^I3K$J!135r0Fb2p2#scGje4qdr4?G1F z0!09S5BUXn06YYEm;@jJO#mzq<(tcOWbsse0bmd-mHGG*$}NDWfrp)k`5WL4a2NO% z_zw6U_yM>KYy@5bHUX~!n}IFB%fNbo11$kq2pk690}cWQfEH*Be@9V1#_(&$KHzQO z3UC$p6u1EV1-J-o1-1dN0UU(VR{= z8GygLoaUFYj{sg~B|s@K0Vo5?feK(EFbQ}Xm<&t-rUKJ|>A(zNCcwU`fLXvFfZ4zt zU@q_`z+Zs)tI%VRdDR>Ru)+I(?-kMwVt1eikOuSw(t%z;Zy*E6qzONGSO!2E2n+(c z0v`grL_Yvd04IU>HC<27=Xu3tcb8X-k;P(~c(12B2WAn#LFEZ}ko*1e%Knf#13V@z z0B@ir;05>rK7cP^2BLu|AQI>VL;xLu4nTXL9S{zL0d0X$AOr{of`B$aAkZ2J09x@d z`a|do!~%VQOn^s#M}kL$M}|j;M~X*`M~+AEaUc~)0g?d=z+=P_z)`~kp9pYRa(Ko8 z{eW@6SRfA=!_$}xAqU6?MgyaOk-!LGI4}&z0)_%Z04wk$Fc^3O;K|`h;>jui3W4#! zQySOD{4#Wox=X-CfG6_<)Nkwkdyo$UhkygXeqal*5#Z3|P%QTbECW^oOMw*tr*qnJjXw|m99Jhpcma43Uoxug z_-0@ePz$^YybHVoybbIF-U8kP_5yo=H-O#1E?_6{I!DG12-|_zfNj85;2`kmFtdCT zX(xc=z%06R->Z_x=6&Eia0d7UI179P)B&deZq8|d^FId8Y2dti-~#X$;IBX|@CEQW z@EO39$mOm9p8{8bE5LQ&1{Sbl$e9UuL2yO5(WGBS_On22hUt50bz$v+lte0kX2kl*~qz)d}- z%R?ISchQ6gK6tWS1S{^H2doxNwR_=AT8w{#)iv7xz$aG!!FOHU&d2wEaCfAgh>A#z zh(RgkH{mGh`mMYo!1Cd`hMaJ6dFbP-|AzefPcctj3u+=YVED4kpi%gpZ&8d-9;V?M2T#IW8wmjEszk?i>+q=xM(vx`mL0 z-!XgTDX40n%c^ke(W~7&MLV>TuhaH&|CYi#?gA{F(c%c#ujZe(wY5EeYzZTfqC_shG|$Oi8&4r$Z1D;G0OVshX7hM>y?$8f9^3@bdHGU zS&lWy2T+TjejH$hTUBbzh;2O-@39flQHEG2xtR~@PjONnNvp2iddqyE^)GdbMI8Ik ze}G@`W|!K|_C=rB3A8F9B0AFG<17zHSwHFpIfG%vvBe1eq-&n zNq=sznBG*5^o51~v;V@;FFicF?9J2$i`u607+=xdX(=`s6Qb;t#|l?8r?H8Oj^SX} z&r*E8qT+5%@(=sim73GuS?!%-9p`=?uNz(+WnECAVGOVA0srsa~&o$X(pA{4s@3x?^GLhd?e}+P`LV^gD^{BPuZ>DjLg9 zKFMLw*xacW?VVTnp&5-$oodk7)Tud`y1rbtv8hun8eMft!&YJ1QP!`qsZ+~h>Q1ru z#->iSXl&}#986s+f0S)(>QswHSDn(bq^5Eq%K9}nb!u5m-8%N(*wm>OjZK}JgDJbs z-t|*0({7D>e?jvv+eo-`M@2*@;z7O53JK2j<1WiOWi1Ka-8E4XGovx9(Gdyy0T@$B zmp|PcP`wX1*o5OEIvWPHk^7?TKfGZ}*+KGZ3HOb&LGmd{d>~y5lGimstMtyXtLA*H0~+1|R4c zo&^jYg5^?JNZo_wXYeE=!sK`CM2z2It-#>Xw;ukyH2Vh>=!{BH;Bc_q)CiaQ@sU+6 z_S`hjefufpwt`0kJh6tzDMoZ;SBP9;6q$bdS)Q8%a;NoQ6gE?_#4`~dtV89$urK}e z&cKCdx3wD5+exbpU0fe3yV;9&PG5zpj~iMEdAPkW$0=uQuuC2=huH5MHTp7&VN>KL zbPH4a8z5aBIpFr~Qsg9}`JM6V6((=7N0s_{AfM*V3!eybJ)@PyU2$BPd>Iy!Pq-Y} zOtdf}DL7pAbU=?bhs)^>B2${#PF~?4+F81{S6&)zhl0L&Z$|0rb04bAxk)dMYH!>CTt!(md@X@gvIcBb9y@sc)x4FZmol z?1?fQ6)2;hUizg_Y%guoyhTLn}r@HS&(r z4=ddolQsBamjm6ERw*^;=c2ZhMC~fPox2t}F>2i&k@8v-MluIA;8~}tZpf>rdVTle zb*w>NznJt!+8u`+rQPx^l$Escl2%5@t(_Wlzed`Vs4kr9D7hGxar!Z-D-Yh^7S`G2 z1+YTRRmbT*h{OxQd(e<`C{AwH6lE`K7CS@iMnrxw*Q3EgKZTX> z&9r{a+~(IczaEXHNP)tRd$}ynKnv>Ziw&9R`doTX1YlgN1&+%ztV>aeey7RSh{l z333M)vo*Va3{8#@3@#6$@q7GgIW(n~6+$fxF1}(~pC#owu)B?JvzXDmN8ne{n3M0pV3`@7U^+~Y~R@JIVc;=QFcc7`U}eX>4(X>etTfYaktofG%g+? ziL#&fklj3Bp&u`6*D3w}y>9*6Fub>o+8?5vi8HY1b5l3l_;(BL2U8x z&Pj+pDJD02pdT%z#dtx`=mnW`eu0zZuZc#v+t!oNMHv? z5=RY6p7hwceEw{XYsWCz93aN*p#br~C>ISAQS#+9VJDvt5uN3=!$e0@&cx!56;n#{ z%H{P0rar<&j_M=Y$!_C>-=2$^;#+%pRd3 Date: Wed, 2 Oct 2024 20:27:30 -0600 Subject: [PATCH 2/2] chore(js): lint --- javascript/apps/prisma/src/insert.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/apps/prisma/src/insert.ts b/javascript/apps/prisma/src/insert.ts index 0de4f6dd..e9a09177 100644 --- a/javascript/apps/prisma/src/insert.ts +++ b/javascript/apps/prisma/src/insert.ts @@ -1,7 +1,7 @@ import { parseArgs } from 'node:util' import { eqlPayload } from '@cipherstash/eql' -import { prisma } from './db' import type { InputJsonValue } from '@prisma/client/runtime/library' +import { prisma } from './db' const { values, positionals } = parseArgs({ args: Bun.argv,