From 52bf8c33b6d6357f4a97f85a7e374bdb8f6dbad6 Mon Sep 17 00:00:00 2001 From: Julia Ortiz <94128293+julia-script@users.noreply.github.com> Date: Fri, 16 Feb 2024 17:58:43 -0300 Subject: [PATCH] Init command (#5) * rename cli package * rename cli * creates init command * cleanup * adds changeset * fix missing types * fix dependencies * test different bun version * tries disabling macro * tries with bun canary * hardcode template in a string because of bun's macro bug --- .changeset/proud-dingos-beg.md | 7 + .changeset/smooth-mails-wonder.md | 5 + .github/workflows/main.yml | 2 +- README.md | 143 +++++++++--------- bun.lockb | Bin 535656 -> 577152 bytes package.json | 9 +- packages/dappstore-cli/build.ts | 17 ++- packages/dappstore-cli/package.json | 26 +--- packages/dappstore-cli/src/dev.ts | 16 +- packages/dappstore-cli/src/index.d.ts | 4 - packages/dappstore-cli/src/index.ts | 5 +- .../dappstore-cli/src/init/detect-port.ts | 43 ++++++ .../src/init/get-package-manager.ts | 19 +++ .../dappstore-cli/src/init/get-template.ts | 26 ++++ packages/dappstore-cli/src/init/init.ts | 92 +++++++++++ .../src/init/install-dependencies.ts | 49 ++++++ .../src/init/read-package-json.ts | 33 ++++ .../src/init/templates/dappstore-client.ts | 8 + .../dappstore-cli/src/init/write-template.ts | 8 + packages/dappstore-cli/tsconfig.json | 6 +- packages/dappstore-sdk/package.json | 10 +- packages/dappstore-sdk/src/client.ts | 46 ++++-- packages/dappstore-sdk/src/index.ts | 2 +- packages/dev-wrapper/package.json | 2 + packages/dev-wrapper/serve.ts | 6 +- packages/dev-wrapper/src/App.tsx | 2 +- 26 files changed, 447 insertions(+), 139 deletions(-) create mode 100644 .changeset/proud-dingos-beg.md create mode 100644 .changeset/smooth-mails-wonder.md delete mode 100644 packages/dappstore-cli/src/index.d.ts create mode 100644 packages/dappstore-cli/src/init/detect-port.ts create mode 100644 packages/dappstore-cli/src/init/get-package-manager.ts create mode 100644 packages/dappstore-cli/src/init/get-template.ts create mode 100644 packages/dappstore-cli/src/init/init.ts create mode 100644 packages/dappstore-cli/src/init/install-dependencies.ts create mode 100644 packages/dappstore-cli/src/init/read-package-json.ts create mode 100644 packages/dappstore-cli/src/init/templates/dappstore-client.ts create mode 100644 packages/dappstore-cli/src/init/write-template.ts diff --git a/.changeset/proud-dingos-beg.md b/.changeset/proud-dingos-beg.md new file mode 100644 index 0000000..9e4382a --- /dev/null +++ b/.changeset/proud-dingos-beg.md @@ -0,0 +1,7 @@ +--- +"dappstore": patch +"@evmos/dappstore-sdk": patch +"@evmos/dev-wrapper": patch +--- + +Creates init command diff --git a/.changeset/smooth-mails-wonder.md b/.changeset/smooth-mails-wonder.md new file mode 100644 index 0000000..944bdfb --- /dev/null +++ b/.changeset/smooth-mails-wonder.md @@ -0,0 +1,5 @@ +--- +"dappstore": patch +--- + +Rename dappstore cli package diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3b31177..4e99fa8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,7 +8,7 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: build: - name: Release + name: CI runs-on: ubuntu-latest steps: - name: Checkout Repo diff --git a/README.md b/README.md index 7a4658a..1b61549 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,84 @@ -# Turborepo starter +# DAppStore SDK client -This is an official starter Turborepo. +## Standalone usage: -## Using this example +```ts +import { createDAppStoreClient } from "@evmos/dappstore-sdk"; -Run the following command: +// Waits for the client to establish a connection to the DAppStore +await dappstore.initialized; -```sh -npx create-turbo@latest +console.log( + `DAppStore client initialized.`, + `Chain ID: ${dappstore.chainId}, Accounts: ${dappstore.accounts}` +); // -> DAppStore client initialized. Chain ID: evmos:1, Accounts: ["0x..."] ``` -## What's inside? - -This Turborepo includes the following packages/apps: - -### Apps and Packages - -- `docs`: a [Next.js](https://nextjs.org/) app -- `web`: another [Next.js](https://nextjs.org/) app -- `@repo/ui`: a stub React component library shared by both `web` and `docs` applications -- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) -- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo - -Each package/app is 100% [TypeScript](https://www.typescriptlang.org/). - -### Utilities - -This Turborepo has some additional tools already setup for you: - -- [TypeScript](https://www.typescriptlang.org/) for static type checking -- [ESLint](https://eslint.org/) for code linting -- [Prettier](https://prettier.io) for code formatting - -### Build - -To build all apps and packages, run the following command: - -``` -cd my-turborepo -pnpm build -``` - -### Develop - -To develop all apps and packages, run the following command: - +## Subscribe to account and chain id changes: + +```ts +// Shorthand for dappstore.provider.on("accountsChanged", (accounts) => { ... }) +dappstore.onAccountsChange((accounts) => { + console.log(`Accounts changed: ${accounts}`); // -> Accounts changed: ["0x..."] +}); +* +// Shorthand for dappstore.provider.on("chainChanged", (chainId) => { ... }) +dappstore.onChainChange((chainId) => { + console.log(`Chain changed: ${chainId}`); // -> Chain changed: evmos:1 +}); + +// Or interact directly with the provider +dappstore.provider.request({ method: "eth_requestAccounts" }).then((accounts) => { + console.log(`Accounts: ${accounts}`); // -> Accounts: ["0x..."] +}); ``` -cd my-turborepo -pnpm dev -``` - -### Remote Caching -Turborepo can use a technique known as [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines. - -By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup), then enter the following commands: - -``` -cd my-turborepo -npx turbo login +## Usage with React: + +```tsx +const dappstore = createDAppStoreClient(); +import { useEffect, useState } from "react"; + +const useAccounts = () => { + const [accounts, setAccounts] = useState<`0x${string}`[]>(dappstore.accounts); + useEffect(() => { + return dappstore.onAccountsChange(setAccounts); // <- returns cleanup function + }, []); + return acccounts; +}; + +const useChainId = () => { + const [chainId, setChainId] = useState(dappstore.chainId); + useEffect(() => { + return dappstore.onChainChange(setChainId); + }, []); + return chainId; +}; + +const App = () => { + const accounts = useAccounts(); + return
Accounts: {accounts.join(", ")}
; +}; ``` -This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview). - -Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo: - -``` -npx turbo link +## Send a transaction: + +```ts +const sendTransaction = async (to: `0x${string}`) => { + const [from] = dappstore.accounts; + if (!from) { + throw new Error("No account connected"); + } + + return await dappstore.provider.request({ + method: "eth_sendTransaction", + params: [ + { + from, + to, + value: "0x1", // We recommend using a library like ethers.js or viem to handle amounts + }, + ], + }); +}; ``` - -## Useful Links - -Learn more about the power of Turborepo: - -- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks) -- [Caching](https://turbo.build/repo/docs/core-concepts/caching) -- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) -- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering) -- [Configuration Options](https://turbo.build/repo/docs/reference/configuration) -- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference) diff --git a/bun.lockb b/bun.lockb index c14de948166ec60dd19267b9defee4b33f1e7681..cf05fc83cdc172625ab4af9e2d8fb3e60f8c662f 100755 GIT binary patch delta 144081 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

ql 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

s{bg9PoAT$mILjPX_H zd4k2%iEp_x5{@0o#g}R>NRrJ7o>HOuK>c`4@Bo9-&IXGMyNqpF{ zKeoKYQ-l6f0kf5kf%(%wn?{{wFdYOm^{S3Ub>2nQ2Ky(~Ijxzo0mqz)kvh4sK7UP9 zXD_P1BUCTXIlj4>Ym5kW4u*C4YtF>(Ele8Q?lPwa0@h;ak0+!v-=CUOr%B78|H%2z zY9Z=~e@pu)>VSV!!>1jk1ZOg;&M(aDcX-lYoz?jo_V0!nbGm6dw*Z{UuQ}bz=*=KK zk19hmNRuPsUtpvCUz~=YVN7JsM{8mINX5ySO>-ZtH;i)?2an`dOl1GHqDh2Q7CNa` z!!+OluZ4bPgeecJd}hRH+1kWWD=DYIIum!Cw_oq~!G`*!$RB+2N6O9QYh#y!$6rvT zCc?Utk|)WWD6fU72J@)!6_}ZPdN-j~TeH|`8B=i}O!@rwI~T%aNz>C8U}_7~kOdq# zGae`Ra}G=kkspRAWeH3R*gxflUxo2oZh4y1x?S*(x7)&Hu-;zg<+uigNN;Mbb(Udf z`45JvEEDI!?AaW*@d?a$AvuxeDW-j#93M|jgbc6B_8v^#GIxB9+8YCyQ`9h+DmPwZ z70eVVukj45uU`sXPH;NlIw$oE_3z*%4Q7Ju?hv17y4gzXSdE2-bo45fW?*MF7E0iR z^#O0W1a({ZYg)K|mmt3-Yd@b$XokO`y++7xV?(-Dd6%68FYuj6s7E(1V;JuB?rw^e zUkNwsUX^Dx!Hc}iVW^EG!N7T5@?UD(>=ZZ0$ew z$|9smuOBEPjtkR%g|DWTXKWlkZ($_-1B^$pye!u#E$IK!b-aJxeI90}F%Jg9p>#&d z&HQItsBgMgF%s)ukD`S{Tlp#am2@v@6l(LH@rkNwF&Z|NG=7PpdwY77N;4rEp94yB zHB2qVZ(kg7o`u<+bsE3m!R#dC@lT`|&fe6>0>2T~)qkDiB|?LJof5)Hy=j5F@A9

@V`US>n~`)q<{Wok$^!Nz*~8W8al!C1W2&ceP`o|~oqD9l(A z$K-qq%dJW|`yA6RZl+$1gzh=Vs~AUbKSI@*q0)!6e#UC72Ku+aGJjWawp(V_#?P>E zyvXSOe1WZ>j9WN4Nec&e&%pvX@3;LvteoO zy7g(!f)S=M{!0+fc9_<)8G-#UGb{9%veC%+eB^Ot!qkzh%?Ulj*PyodA6LFWNJcV0 zn2jH0O2SLwzORL8lrR8K8=taFn@4IQ#4Jc1GtU}bm2fV570kx5=UfLfOH+gU5=;w> zLKs}3?%8H`^T_(@B%n0(# zY2W_zL;|v)KOe%czy|r-Wz%fq&d_Ob225u!+RvGEUAD&`>GDf?RT_E~9x~H+3^UUc z3Fy>rvc6u$G^tLT74#n<`UN?YVR{T`*n=?LJs9>q%#@;heRC+hDsIW2*fW1(Nx4D) zXHrwjESNmEVFzJV-3WJ_EhnA)ae5*Fzi=;>!wnd0vVH>zA2){;;Qtyji_j>)m=^rH z^9pR3o1B+kBTvJlpG*EuNW;y5;8Ftl@xf}rOK%XZ9HMx&7&64)qu(Q>-Gi24;7$eA zds_t4WW|EpsSY;5-SYXs(w5Iu8~bZ>Ad*uf%fNHU@4?b^j|G_38q3>0Q?fvdOjx*pYeOL za}7++l&*04c^PIL1EqvcUf@+;L>J~PFymOqxAs3_+U-tq`CZGYz0fQt+Qhucf%PTM zwD3jPcv!%TWni^di>mwWaWEyN-!ym)EC=TQnSv8o9AEdcNhwT|ihHEDBcW#&dlk!R zlyiQ33TQy5!Q^Lg$ozV+^?Wbsl3+B^xxjcf;|J?q?Ia>--k1Zyr7&$4Snv~mN`jfC zxnVY5h7(GmPzXEvJeL<4oSOFHE<`+)!ZLc`)mT7^3YkO+gM@ zS&{Jfiu3P`^uJf>h92_vFQG1&jAkb4qp(aETg&1|Xmq)kbQyiWyW9*D`yoGD9foP? z*7gVc!KG$d*Y;vjjNbkt<511p%gbQ$N|#s(w9?DCh8jk!G!F}S9?pvbtuON`QN!hz=|Mo| zm1*Hu2;sIe(wz2}o6Uh)!~`gXjiXL;GI-81v#B?~!lWe5O$}b*Rk-+x-B);(LT8ni zbRAVpS;Z7}Ggt9)4k7J+tPl=n-@~-~`G4N#Ou8~&ln#6wV4BwcoC$vn8|k~PZdaLI zpL_Aysfm!PO)>P(tGtZsskZUeUIpk3x!SA+Gjz|w%*Ly;QqybVyNCvI49x5es`{!w z;$VBK;?(4XYpV_&SZ0uA{@inx!!$PL&igT#*@m^j9`9Bi+c*aHhMnuKW1~}mEKKE( zBB4XBm&9+Gby{6#)?ckaAkeVtZMey(nu!>mo5!nR{q!s*{7*vIW>Q*W>T2VS{x~D$ zpr}dg>oop8m`(uxnhyo8_mXbJOwsGj(b}9dZioGG5`6KVs~N8`tvdtm1L zCBys+rd7k4=Qm!yUSs-ooVVc;);~;T2E7fn4O2guTzI*C#OcInenG6e)=S#N5H4Qp zWq{7-6{ZeWCPr*^L!9kj#vk~=tYhbQwohTI1Fym=Z+s&u^=^CkJU@g(aIPZc-_m+5 zZp4ec1(nNV>^NlCU1u7MX*d*)g=y@VIrm4xt6{}n=AvMF=q8?+#CkeCZ!$BB&ax)w z!8BD_lXU1Im~{hQB=p@)Ugc&w)b3_4X$wnX=FK!(gXQcXB=a%!bnSbXn$O(9Z+BR4 z<~1c!em+bsP4M<-((qfLX3l6Le`X_bG#ne+ZZL&nO~xb}CQCcs{!T&Oq=F82_m!qO z-w;w8&GE6{M$=n{mASbJ#@}Lar|=9R?Ir$75BXbR^!gZMNNQI$xWjs$Uz? z>yWG7uhCBD?H`li_Wu6l*8gi-e!HzRb*q^@D0@_5|8gsOn0<0DUZ{7ZNopJ9B|Xf~ukh))I|UH=zUzR5Z) z>B4XN6=hmve)*h-cm5?*i>C{{ojZb!%W4qh>8hV>jzx~){v~Y7XEmQNp9((e&kcNZ z3B_;ZqxcPcbX7;iZ}e4zN_RUS_5bd;;kH7Qa2p@B?{9o`3Dv*{_$cEee3b6*7I#{F z6qF$zw|p0N;5^91< zkZ5^rP|K$wr~(@)(xM7H87?Ww>i-Ru{}h`(*``kpVjx`-l%Sc75GHuPJ{)XZU&`rL z7KXg!PnlR!TJt4rqp!c9ns*kuN^K8{ced%OqvE?-U8rC;%d4Z(MQnVk>?YxCn^34= zn#FXBJtcApmA;qNdt2;du`j5rI%?$(vwC$@IV1SrjrkSwjL^TTqXzOks|(fh@scunC09ILq?ts0PeIR|WYNxmWkE>Ztg+ zRu`(gQp?YX2ZYk**@)_x;AQR%Humy%@?HU79lZ-aBc!iRDy!UP5h}QpFX_uH=kCY9 zghB5hMft0h+YtXc8p`clNxZtqY1wx}90&dDXee*7j(8>El;z{iHoZ_L;AG?L8~tMe z0s%kbRvWPi)KwiNagOk>>Zty47VsO$W{MZu`#D}n?bvRUS4S=WN6;1ZcN;HMyB@Xr zW1#lKr!9ZR;vP_!P{C&{7plG&K;?T)t4V=(Y{Y(0hWr%dzrX>$>VStu{sSug&o=)5 zf+vx$erS?uNfUL8t2)YHP0>~MDHfA$y6UJNwM19c={DX+FaPmivx!pLSXrp{wg**w zCs4(Aw(&yg-7G&EDk`EcZ{OqA8>ZXjM?)2-e=|x+`q*?wLq(lq^jlERi#U)^)MP#H_x;B{{@wAjLlaaH9sd?U8r=KA)YQMFvUg)6`W@I z(Xa{e3yGK4y%?|NNC$reVF`c1QoDn!5F%#T_931s>*0!}zGxACt&+G}K~v%Ek*--fqi<;!j%+ zmg#@p82H!<)lt%?Hp2lM|KCsz{E~EX7e{P*p(^~z@_$FVANG461)kZN}=T1|(bkXs8NLxA8|q zmD`4RC242VwM+1lo(|S3ldJOgON$!Z?xa!YBR0?3Hcxd_o6@Z=RQjHv^j@IW%5WQh zG*tQ#2}}-M1gcQpW}@XnCCsom2~-7{ApZrX>C2)zIm2?Hg0uKi2lGLdQ(&`7}Lg07>XDqLXWh2o1qRk#FHRJp$X11jAz;+5|bo30AAI2Ex1R0~&v^}!0z0dE0y z36*XWsC2hkT_}FL#m%77-C^T};&)kI9VL}*<68yXV-pB9pB@C2@gb`VWy;4u_2@}Z zQBUjZKcLEehIp0pET|5>V);K!zOsMwiQww1Z7ARDm5q^}IW%_*76k-Z?hDAE-;H^!-79{VAa9zo7~o zVABZ|9AddpmKhGJ;1O0AijTB7%IejyCDHsX01=8C%a(z#X#lYHSi8?o9(_~_kD`?&M? z^#__M``=2es=v*q5^71^ZTZnq)omqSxXq@kjw<(lbm1cwciHq$SbS2=)J4Fz$I~|9 z^PuCcd!F{mOm9JT9Sv1~CGoeW&DEUOE}b3j!z$6^7f1{YZ@wpeO$zHY^oVG*bT7TbsmEM92im)iJ?tiBB7zrae% zF9+pYR)ey@T2SRxSiAvLJvV`B(0Wkm%5Js7Z8pIc%kQ*&D=1UlXY~iH{*dL5SpKNx zk6V1g>bouO0r@YmmoHWPve9w(1k|F}jSzUt^0zJSv-9ASC$_F zWr1%kKWyWFuz1AR8UJ6b@S87?iSBCusRgQ{6F@bv9w-www7ikU#-P$Qwb%?)x|SeC z23mv4-_~L~8{b}B^RJ_g=xnj8#qJhULG`2usDjf$RoL6c_XSUckF)U;L0v-S%dj{J zR8&k~7X35tbOg0r=QjQ4-m||2YnSP~|1Tu< z;b)ul7n?+=CjM@9f9HS;)zsRciq^lQCaj}+|AMkXeH-7v#tW6cVNC`>ffH>+b(G%7 zCOpYvW1Frzs)DBIifU=&h01@Lu59eJU(L1*L#8Y6m6scD`zF%sW9x4a6~b6r)!QMfX0M%OC6!^R8M)4M^%Z?*CFSp1uf zzaP{kRQ?A+rQc!oG6f_&WCfuL{=4Nu@y9GaVRfPA_#RLNKWFiI8!wavUbFZvsB-p$ zs_z4kHB=V(j({$q3Oa1LP!;?PD&ub!gOn=26b7XyT7EpJg6n`Pr!J^VC|)1b=606V zg<-uM(TRXEb_SKOE2s)mEk7I7CDbbECGHJ-o2^jvT&UVH$R-mi`!I{6KovjQ;(4I1 z>ZoeRqN|(hDtOxJM?=N$ zvGGDx^sMDVmGeBPbT5Fi@N1yby$(8gCs<@?&|LZ$x(^yl9Z0!r|+O(0akzgaHS5G3emVo~YCmJ3zjaiG%Gwz^Q| zoM5p&sG&I7#tZ!$wx(7Ps^DbHg(~<|uoc+P>O#4d!Ile^Zz!nr!>s}?G$JqFzq0*1F@j~UBV7XB76G63llK$;s36pI^Ca8grSw0=q z^}nDh%C_mNqlU7;>eW#VDAK=Us0Pd>f$X{fRKy~iL8yUS3M$=2HhvkXpNg)r@oPa{ zLQRC5K&8JK)SA1~#{V1Y->FiC*YA!vD+5W+eC1D}Qf3!gKhjoPHMjgSv#$&$T!J`e+8}9W!0WUOF@O=xgm! z9kp_+zicLZiOY`1UOGGW(iuNpF&i{-s=sWeSt2gI`pah0#kHXvd+AKp;Eakrj=gmD zr&dh=R*h^>r>Nx7lXu5y+FE5+< z8Hqpk(%Fb(FP-Tv5V_xDFP$BG=`2N$a=88%)ST&H(+hPXJoeI=HOR4-&dgcv*h^>T z@#wLa&erpgRg2@;OJ~PkItv_o>Fn4`XUASTJNDAqv6s%OzkGJ=r8CY4<|VX&HgN2v zv!lO+rst%`UOGGW(pg>m+KW&(&W^owhAS{HrO7E& zf7wjBxco--m(8S$%d7r>|I*nYTA~N6)n7JK3&o}X?=PKs8FfP?-oE;wAzqVup*mi- z2B9Ir1aE1B(0Ff;gpVbJy-p1g7S=~t-4LOsw_ie=1_=F6L~y)oPDFT9!eI%uy*`Z) zRy0J|)Ci%DcSu6&i3np)La6I)I0@l^gm7bo`rfF<2x}T4+%KV_7i@ws@FaxnCJ2qZ zdnNoRq0z|*jlI~(2%8%t?3Qq{S3e1Xe|4{pH!lgHskci);>ieSG(|}E<~BvxA>lO% z&Ab+;Amk(=EI$RIh4-?ACQT8#B_o{XEloz)BjIBSXLy}XMOb(W!s=5IT6_B?v`I$j z-wdIxcTF>dHzgdF(9Y}A9AU+&2%DNCqfM=!i3Wh=AD6%=IxS@ zcsjxvtq^*8b6X+oknoy>US5mV2svjUEN_j_$9q{qlU4}b+8~_cEp3CaN5aPv`g@() zA}nl;u(~b60B^s9Hf<34pNTNYyXH)UHzgdFFvRQA4q-)GgiY-bhIxl1q@IZ|_AG=E z-iEUf4oC>6AdK=xr68)k8iM+uEOAdL579S}CBAncYf z(W~DPVM2R^c^wfZdAlSec0f3z6GEmpw-dq+39m_*>b2;Mkkb)id1r)}_p*d0oe;Wp zLCEr!c0t%9;bRHeUZ<`I3p*pM?uszW+b^L_7li)Z5OTe1x*@zN;jn}`UZ3s=E4m_V z>W+}_9g>jR4Pk5qq0rk9K{y~GoQg2l8HVKOVSa_yk{lk zq#>mAL|E!A>WR=K9bun@i@ml{ggp{gMG=;JZ%J6#6QO4>giF1Zy%5?&5e`aN>GkN1 z@TP=yy%8?=K9jJb7s9YU2&=rceGpQ6Bm64iDsNCEf!a)gJydFak-juLz2*RD-XA)KnMi@2};cjp3P=wSW2)|0$<_#K#a6rP{ z!w~NEj!0ND6d`js!gg=VaD;)w5bBITxZj&N0^vsqJ0(2mIU^A^4@bx!iSUs3kc0^% z5RykBJmTe!LP#8muvfxP@8r=4J0vU_jqsTFtc09V2r1_w?D7_!htOm+!afO4dTqxb z?2)i)48m^jEeQ+HL+Cjc;Tdn`ScEoX5DrRs*6T42;Y|ta#v%N}`%J=$u?WM)Bkc9o zjz>rxhw!U}7rj9f5DrMVdji7C-Vq6F#v^1-M0nNPG7(|m1cW*n2(Nh)GZ221uv5Yt zo-+wy^F)OFNeFLw4@sDifsi~I;cYK>GD6}cguN2>c_(Kg?2xb|6X8AYSqV9l5mKfg z?DrN;L1>bRuusB=UfZb%dnBxyitw@bmV|{<5PD8S_|#iD4WZ3cgo6@3^LoS(-juK| zhVX^=nS>S75Qa@hIOwgNj*uEd_*KH!-k>am0}}4eLOA3dk+5buLgoyF@4PKD5C&!; z)X7FT>`lx@_))@62|swwOoYud5b|dt9Pu8KFd-Wuc~)ph=;wepdsb+impBt;uasW{ zUQ!Oq4k=4=P<{`1&q>Ldg_4p>F+p!pF2yv-LD(lD!D~AkVUL7Wvk}7HTM`!LBJ`Yt zP}5sE2cgYugo6?suSXujn-UJ^A#eoA4~-8V@2wSZ{t%qt4JrUQdDFvU@I-aNsCLm{5c;uNZ*?hlIqr2xpWaaNsCG z*dgIH2^=^|5ps$VmX{)M;E>Ry1fknJ1P&bY5cWv;SON!*`3MV35mwJf;J_iF%{+wu z3lKPPEI@cu!eI#ZuD*&ZvjdA?Q6<59NTAl=>*0g5Ki# zC~Fp?{7Np)9D^27%)mtmcP~Qd<{gpnqlC=G2oZ0~Vua0$5$c?e(8HT}KEj0a5q3&Q z^PCG15-&i=zW|}9_mG4g5|Wo7^zw3-Aml7T*ejurck+b@O)f-Oav{Pw-m?<+NJuF| z=PWR2rHH%9F#E3>v0i6>O~0a zE-ql|vBzhArLC$_DVMu6F(EDj{0?Xu5l!NIgnV9};lpRv~_e7Z* z^hOUs$ytGN{}7Z|&$!f{b1pA4=XK`HnKNfjxo6Iu z+j}Y|n(TS>NH&G-#UO$%r_0uB;Q1M!o?QB8i^GkWOJrt3ZzeQ(+{@#=hb#$WqR2EEC#CvyCh-=3xU zwtKmQ&9-=?zIV38CI9wW?~#!+;~t4Kez4I|zt`YKPnT>A`>tN0vGvzfnVxCF-VPm- zH14!MPx0N8vVSZz$92qtd5_l>X;x?D!d>%nU-^09q}HBEGWZ1l(0!o3*Q0#L67p9@ z?RROJaRd#nIOS6M346bvb~^jY>u&~B$}zY=zP5V{`BW^o;Ld~wZC^LO{MVzOf2h7X zv|NwE-G{x~5!$u$-jE$*@8)tJG9}lP3N~X6PzNL~aE1556Ov4JPqwdN*-Jmv4bMO0 z^!&4vCdB^I?_!RhrUvz&60olK`Jr!X=k)8h?{kilWfx3*JEG?3)cxGf-B=X#xy7?l z1HNXQ@TK5hi8G%4>!ZL3GdalFpjt>e?*c^Pj zwa?KfNn12LUSQDDS1}7tzU*>i=9z78XP$_i`lIp<;)_mWiS$mK@u84@aT{M{jgEOT z%x9-pSh-cr>iREQarI%xRcEdzukvi(`&-wp&NvzCXuq!FxD~CU8V9)fG|kg*f9f}< zFTI-5u*-sk0=p#?SbwQgR4nSFZio?v8xl)KiGUQDBZ_`*+X{noZqNH z}1sF{oZF0#4X$V%HI4@NBQpckQC^=X<+`zFrVqtnKV zj-^EcBUUc&KX^r#JL97Vm(1{>VBQS=1LppCX#A6kmny}c-W)LF*}mCx_ov%`=$l!g zJyNaTo@Rg}DBF*xIt1&>TdurXpjNCuG3%ThF)g<*{9|9WOW);RSzt=HUbWZu`FmB& z=yi3~_i+?$Gadi0|-ob;f9*l2ta(!->J-J`(`}xA6nPJtprU}tsPjcql zKXJYfqmS=8o$O%7>Ors0UkFU)GW7Dc3^!jsN!>5*YRv^zF8}cE^{&-tGe5{Ov+B}a z8MANr*s6WwB9|(4k4=)Y&-n}$sy6;w6OM#K=lmPEDzu|m%edEno%MeID(umT;j1Gi zZcH|6LYA|=9z`^&(`DA9l4Bn?p4xqSt3izi`ny+t`sc$}h&rrY*!mz|uEzvY(CDv z!jatE6pnH=SUv(;TTtw=WoKFxXLOFay4fZj&(JK&k>GuHRBbIcQuz3 zPH;8f{6jd=)l5@3$<^FaIN8-yI8Qjm)y!2G>}nn;oa$<7Tp*n0Y8DbUo}ReE*N5zi zXi@Rp<1IfAZ!tgV*;Eq_eJZrhw||#mm!cb%34G=AX3}r#YOUy3bLxgV-)||jqI=yh z(ZAKKvT$JCpx?j!m?8TrGsaLaj}LM?nZfq|&`ms)J3!bUm|2uSCJqzy+4W3@vyqic zw2SQ+ne)iR%P!|ewrJ6Jd5+07%hq;GiT_yVbLPtC$dJ5+`W^N8W7nH@?PnesnQ6xQ zj>YO+%hLYLp09r{{d4NilzvX)J@_*sZ|%$x{X>pz8PnTkUj3P?TLw2cx63DAsWN>I zJSje6dbTEKTQgW1;nAG|X_nr8*wM^b;N~5a|MIur zPj=tfcI3|DkDsqTQm)5sw0X`WyW-)>o<{n(? z$F}K`WtiPy>gYe?JhrU~?%`YQjO*Oi6@AQO@(pS+vf1}r)6L(vbmr>ReRqfK?a=5| z-hXb)eDnO;JkOObev6i*y)ov?u__~rq+FW*XzDvvid?O{<#f6UoA+#+>YHm_LH+G` z=Wg@MB>$NlzAIZsTw9wgICbt-euKkyT_5yM=fb^0JUa}VyTAGFg)XCtKkfHC{`(L%ba=>nxl4&zqo^72Hd1OV?#^%F_!Eo*n;Z zqT($`T)al()-*8z@r^(KT6FCEy92gWd$(q>TXTDV>rg$li?=QITS<|A!-o*EK^5ABZ*rJ7&tmJi}XuEIxX?N21~_ zN?g3TotNzP_oJC51HCGi9%^jFNJ z6PT@B6lLnI!jwIUiQuw$5)&^ID-+3u@lQpaiW&GD*YM;XF;^KG;;~9>5 zEfdY<@h?o2%&NaIdtJ>7nSiyJmZvfMUCoNq81Ho$k29EqJOH1;#K=U*9O41^EGBS0 zru$jU5pEPRzQ18I{*5`xt>SOY1(`!K$GKUY!vt@@3_HhT^GUOO7mv+;8xda7h*PFb zG$KwSTH>@xwg(Zq3DIv4;;h*rQExLM$6hWJ{PptxOpZx0D?7)otZ?DjZz~^{Nwpzr zN3~Dej#muqm|;MnYN=KiU$|>n_OSW^i#txgbhrJM)D?zJZQizPx?Kgk&HklJ`3tKH zJ~EFt)0R%gaqBxzY2Q%V@GWd9|9#9wj@^A8`~81+^9t#Qxa=CTlX=grDvK-PDz`bM zh}!Cw(){h_-pK7bNB03HU>j*_cO=bCZXIbc-VvBXVbsfQj+0D`%-w(7w6?ZC`%V4iYgm5Gz7 z?16dCIis9IcVa%J!@T62NspNL=4)8y>NhJVP88Uj!Fa{ zM2v}c*I3A)w+O#K5c%JdQEKC}9}y=pX+OnF>t=RNp?IN(Fjq13N)$Rkl6r>`GY%j! znu`+g5|w#2pl@R8K}7fwMD0t6EM}^T=O2T3d=Zh&%(;Z{Jc@X&6gf=w%ZMn6RhJRD z%yWr=V~Cbl5I$!46@>S3gvV7xUeoLawDi$zp6 z_a&kv8s9}!H4E+{0?r{mNmMuW?;*VZL2S5(sA=9w#7K0AL)12F;}C)85nlHZbxoW5 z2;U2cXoOpRH}ifodv`%5;{%d3G+iE$B={oYkVIpX_94RW5@Ogx#CK-DM4UwaM~G%- z&?7|XWyCp&7RKi>qTUt6q{oPs=Cnk-MA;{Z)@IxjMEF%itVA1A>M6qi8Y1K=qMf-Z z;dvcV`x&Bxnez-0CGlw{W$)x>8qCs(a|5$s7D>98`%2<{6R~OmNxHe27Yj%dBh&af zNxGW_&q)$^OSvE#_tZeDogDe1OI}~GF~gu5dxrnnA@i?mn`T(uX6DhVe@5lYw<39k zPS;az|7BsmTN7RH_U!yLS<>27YmLiuX#V893kN+No~_P+xZWnmZ7!Z0Ua+BF=G_Z6 zbm2A|>hKcL$EpH%Kt>|MmLH;5r- z{~J=&yN5WZ({-5fiATgsOo~U0FsCKL;}B)vAx4^U?-2g?5wQ}ZO{w#)hM-N(yb2VLRX#)FEY61itSfsmRn!8 ztcU;Dj-#i%Y#rL>^o?J>{FbW4{ccY`Y^bxmeS->X2PN(BEZMlWzW>Cm?>GGJ7V6sh z3^~Cp_{fH0$TsNY*b_^J^vP7>b(8R+duE(UKW)t83fAQ8o$rNL| z%x&1XPR3&MKTHg5H@VE`e2c5?OFQ>PksTBBh3V&voY_uFd`R;g^jq+4iG{Q3@1C|f zU9|=G?&kDrapt?dY0hu&JipxWp@Yx-8obGG)R-*G+veGy`a+i9pP$W8x7NhH+rrI` z*l|lL|Lt%3J?5Bte5PWim}Z|TukRBoCPHGWas7h0AkqB`V!GKP5&V?LN z3z8!0y+C}D2r>0N5%CfmJQ2pclL&u_=#UJtz^qM%@PCEyN{(1$+9XGKzD68UgA6lU zB%&lTrXa;q(^mY^)RDig_%v-_2CWj`4QGgk{GZbTbcRVq_ZU zz#MWj3v*xs-7%kJj&OO)iScz{Hsr({@~8v9~msUKfVU@FWfnS0bvA&hTo%!Wdk`_zxj1(^|j9*$zw9HfLrzj>)re9IabLvMXG#w^KG0aQqrx>PQddx|g*VIpOOuWpP;+VJ8 zk4$(5OtBJ}chpY_jDJSVRhbXePf3htCd`bIm`~J?Oq5LJQkXB)Pbo}5X7^O)Nh$XR zJP(%thNkQ7O_H#0Xv^;AzC?^fOJR-9>DiNLw@j8@SNfvigLw98V+?bXNG1=VBiiH?YAB@K$Ob&O`d=Vx} zCIX{@stRNikOy(K0{QxwLKP9-c@Z-zBJ!Gx5-}2$8O7jXaB3w)U_L|`gBUyv-mi@C z&5vkY1yRT>sDij4@kyeHsb3WlTmZ45Dx#QqC*fBR(V-fmgjrh+5hvkQ9Z|}(sg4Ns zMMO)KHpyxr>J>uttAQwMc1XlagpyvZ}*O5H=PdyDy**zS8`$J&%=X_r zU&fd*rQE%P9!=@qWX0ZjOV_0zI>4t%)1i63uhOJgjxL4AwF~X>H0Pn%JzLk!EVyyG z_xNrdW}SL`r1;?FKc$}fsIN<=yZ7%buiN}VqT)7AT)KukvlNZYI$(9?W>r>pZu#Yh z(q50+?))R|WS0T?gZF=bu70;pYtj#_wmr+PSkGQ>a(nK)+VWAaFE>^l{yk?zi;H)5 zHT-OfeM9knivFuuNY;(}Mnq&fH@NrPTh+#GDRt+x@0k39HhIi?b~Soc|HwVXH+J6c z_98?5x|Q!G$-L9=RO@MPqMr=N)_mZw#eEYMkH3-dpUJT`?fXfG#;=HK(Z5N)UcNQj z9uE8S=@|cX@!!6WTJ*ua@y-#Kzue0Ds9zShVaeZx{1i9toAJ>bUx!t_IV#KZ0#{6Q zqhHNc74O`gTzd+9{{DSukFc$sfAv{?d*#7)b>r)AoVsWB!t%-d=lL8fUFq&(Yv$CE-5l>f6<9OhW(PQ zMEfMeqo+>D;*s;w?C{Ym>bP`XH#^JQmy1s&ZQRBV}+eHGL%|ew%C9Ei^H0532ABeOT#~(t%zvZ64A>nZ;7}d;n51w$24n& z2(E;PkmzSzTO<4`Bf7Un3@}?H;v_QqBL83I8&+v!n+nCqyu6CKS+&;k$6p)5$~*3?}P}fjabzQF~vNW@U4Sr*%>j_ zEbolCAmPykG2Jxlf(WjQh>)0JT)QIt>LJcWaF3nkZt`qrXX0cgZO6=UH)mu*>to7B zV&=J<@sXH%4KT4XA@1gusvusbHqYvAhD+rROn5^~_pWSef!U%>`8Psj?1ormx^zQ$ zHbxwh2s3GaKtxFl`vI}k?3V~=g2>+;vD^&mj`02taZX~T@#%qxk(ks2vC5p52yBWd z+Y_b((h603S6 zwwUJ#OF*1_| zVGeNsWdhq_$_~aH;Q$WC__oKy${eK)55ZiJ2^oSp&LNcv?trO16myb8IuzsA5%XH+ z6c25~FmW=ghG9;-n-?;noiHtjW6tszHyl&1Gsa^C<{Xc4BQWtY5i;l9jawilybGp# zAm*aG`CZ1pD<1ebtJ~K8|IMARdPIHv2TcCan48qkXpDDv z%sH9c)X$HY7@0{wVq&QunZO>HvSTp!sGl(y-=3IQnfuhwPnZibAwOXrQa>`m0hroB zn8(yl5XP?;=C#aI>Srt_PG;3u%ya5TCbT!ESr9LULTCdc+6|+XFMieCPL;d z^)mqz-WSt-0_Gj{Bjeu>lW`*E1NAczzAiY_xAcJ|QAfstEgN?)wXCo0a z*hpsMIuj8-0?~aYB8%A~;U9>|I17=@beV{9Z2~j%)QOwK`O zh=7bHTK zA{v^T2-ilY{4#>ZW{!d;=DvdOO!egiP0a!Y&CGKJ%}xCk1TD;R1>c)@3R;?GD+yYe zwF+9BLTlMb_zX5OV=WtLV=hYg&qP#ShiGS}u0wdvLOhn}V9KvYL`j6LM|3jxB?4w6 z8vlmqVix>{@ScPCB+<>(-++jb*suZ7-Mo_soQsH_!;QYDX|@sJI}Z`Dkrcg*>n6kn ziSC;aease#;9n3KHzWF)E}Id4A&5f~15Da2h&YL1TM&cHeu>cei2T1JhL}OWBkCE% zISG1qw<6*tCT&H~yDJeMiYU7cLGSK1g#Q9WtOUKg5eUzPh>!>by}J@o61BG@=-u6p z2v~%8Eiukik3@JcMy!fNOfb(SVkBBdAtssSQHa1WgvSm99iclAzDp1h5_E*_L|l;Q zz7s)5s6_BmM8;i+8K%oFgx@m6A&FTg?QTSz#IW6nIcC2^=yF8$S zQ~dzJal$J!LMeyf>q|7g4L$k9|UX6S_0#{mQ8vcVv}o4n?r~T644Ut zO|rv?;B|<8hY=gh4hg^Yh#W__K5ufE-bc7T$H|McW3ky|m zI3)b?t!EQmPyR77tVo#q-V9GNjxTqr)cX_}d!5X7_{ff>ElZfNjeI(vaf~hPaF|QS z*pmMywp95zW|zZEJC5<(jCm{*?JyNiV4`HgPGI&r%mbN#Ettk9G5Z~6;Yp15@0d?A z2OXxtpO_e#4S!+|Im~;Rz^#}Lr!YqxX5A@_?>3CrUzno~^Wp;Lf=tVcnBxw!;vyzE z0^@NBbJAg&U&8op$3)1Sau}W_sAZY%mocXu=69LUNKD2nn6nPk^$Mn56y}i3IfqGi z6%#KrX&R5X=N;yZMnA%LV1`{K%|(YfpfvtFG5N1yE<4QNYZ%X6m~%2$9VX9pOq9%| z>zM20BNMP2Q}zbtro)WCf$@&U#LC=um~U=kVq`*YVqzWUmQ3ItOzm5kdk!=A7RGlk z=C#ayhpBNJb3ta+ZOlVzOeT0ArsW;XV`}UU#&18yBNp?N8jHom$wbIJr^fDLLJwfN z-^IM7#$@Up#ALjOc}%%wvo?J|A=9c*h{Z9wX@Zl!%FOPiY!Gac|^G$LAA7 z;89ZK*v6GQsd+BpdkoR?DXSzi%by}HNO(L$q%h5%A%c(7Rkp+B*`oFyIeYByTcAdG zvfgnODi{0NHRhkX?aJO?Rp`?3zc=n%8d5vzPT$S0qxJ;OIe4#Bp*nG`yB_bmFyqL* zr~Vl^fpgElWt)6NK(B5A=z z2cuF2ik7>V_Ml5DM@_H61N!zIHqgbTNN>BR*%J2DtNW0y!+Q1o!Q~#yQbg|0>`3kA z@oFT8E3$E22QPlGua#8NH6`mfTy+4VzOJ{DBIuC5o2ot4CbBe~_EmN3+v`6^_K)fO zA!joqo8zq6e8SV=;X9jO##0IFChWcrTb6{wX7{A`kOBS6lJymSzcl%Os>!SO*E)2W zI-ecVapKh$KTk)c$P5J?UyD`r>w#P5!)`AKXJw^I?XImvhURnpkgz8|Xx3w6wB5b) zU)Ra*%Q{_;IIGUfCnn+dj>gU+OsQ-}JAB^9ey#1EaU}asSrZQI|1Q+m7W(RI1+C>( zL>-^Esa##sB~(yk(Qh4n-BqJa6Ly|iPcu8M!!xbUi+XKHa8R3}M+22<=BpefFG9>KQzACO9Y^pj}Lhgz7Dxm=^uEzT0vw_h2Ya1C` zogMGZU$#%B`63Cc?Urj-)76DfNcKeXN~kbaJzm?D3Q0IU=ht$0y0>ZM8d=rVk<8U( zsO>1@F{zm=r=J>qB#p)4nyF4}R~Pyl$0lwN`>I4XsOw1L<`vV{HKBescXoBjp#A!i zaIj40#uQ-PU}c3ou0nZ@XV#mHyocLz%}UVg0+~hcAk6f&YSco%9so13m7}D`m$}Nw zxp$FqtsH@_&Kfg)+p?*CyoZ@k>W3Z&3vq5LpGE&Jiez3_HQ|!l!ryNHFZ^#P$;tnV zWh(9Ve=)QFH>&9Wzr*y`|85>_eU;s$@8?l1=<}Da6DPP!AkV~lACj{= zVRFvvDlm(?o~DsDjb`UtH_AFaQV&vMrqR}EYeTI2(YhqKPhVfW400J`Wm2tW6DIsD zIJ2IR(z+md7Us#vW^qlC5v^FaVi7%LznEJb(}vwu8sPFCj9`pmg#R^6_#L{W}OB+ zhUk}vG)=csr7L2q^=Ioc;tG;Z8=Qetr~;R@>&~+2^fQp-ZOzQKPCF4}-5l$*6DM)n zOpx=Z(Dl`rGd7`q7G0&*Pu*R!PQQ$p>B+ROYf z!@3nXm8$^M;`>$!lYY@%%L_tXn{btNI+pdUTWwe7dYtfsG&WE37la)}g!gPV07A$3w4+m;O?_TIg;o^_@L;5~?vqTUU|zBMPI&xW~Fm#3$Gc_gbf) z%qn0Dy$`2GRt0wA)bI}B_~%j;qOCjX;P`9rs!0;bLwL+)Se^KKTt33%*3}?B3#SHk z!n&Hoo8r_?PFh!sI1e2O)1TJWX6{?-PFYt+?XRene<3MY!f$cq!l{v+u?g!D&u!gV z>+0ilJk{|2wyptj9ZtD()-@#F2-Fz=!KvajulAtryIiyh8xwEO%9<`&*MxWnoEqb0 z>%JpCm|WBtuUOZVxN1U~UbU_n@#eM>UbC(_uBzR}bqCv5yal|}g`Me!P53?WSJvIM zt|jh`b+@c*g-d7MZR=X&(pz^2r&{%g4A$MXu8sCTpOtZT<+dcuZ{2z;m%!B_)Oo1<`heD}53bhrRr^z;Qww#ovLA6ZFgZP| zXyyJ;71U}S)(s%8Z#Zjx59GCfj< zXB4!xE~9m$aqX?kY%}~3*TFh(>&D=E;M72~*mZv*KG>$qW}UVjG}Ou*cIC0i;nwA} zZX9l;b-An?kGrL6W6Eva1mYzqeK$fM>n0K}Xk8Pq@?&jtX&^3-5xgEM?_9P66dA*mXmRC$WVNs%Yf`sAui9Z;@`b-xnVJw(%Y)~zDGP4|CI zO|4u_T+i$}U7F!^oYuf}>sr`!;kdiD3ct5*Ev|*#NK5P1;qK|!FtxI7J@Gi}TI=VZ zwRgY4eJlN~+kks$T^s8*;vQMo*1Ao&ySVX$?QmMW8EV2L=xEbzA>I{&p_6q%zcZtR zI$b(jxs`aTHx+-aPq`PThI z{BP@wb?0#xtqZm8g7!bs$^}SO;YDbKTSmATr@~x<<~H3D>n`J3ShozP9k~MOh-+GI z-BsecqH0=U-8JGhHLv<#Y2|g|N9_gVSDZF{1N0GW72#^@ZW7mL`PGEscHLXVmEjs# zYu#<)AGAkI>#Vy&{F!y@aS6|VvB<`t3(0Rb;a%e2S+~Kud(3Mix{z$NE{^yzt^v9h zY_je?aUFME3pQK#fVhsk+!pH|s{JXUE)c(4`N$@e+iKlo;!3BB#y0Do*mQCc);%R& zh(@UE$ad?V5ieq0q;=16%5SHRf0UIkkSd`rI6JI+X%p%~veUX(Hl5rq>s}Mz$3}E< z*=^k$;+b)K38SrhOWfPKJ-CFQACE_>H2Vnm*@W+it1xo=t$R;g)qg-(_rbbDga@tr zNcn_`M)8ew~{L=;Js!f=VdF_eZHS5wd-@~qa z-MS38HaJ~`ZdjKQSHz~fXVjNyBAZzG$R^B%Yi8YJoJyS= z*M%?^p4xOixVFsSg=f~~!KuyYBJ|w4yw-8Sad}}~z68hd*TvE^4=y?zmTd` z?t^v3h+m`;>J<8DU2)>tW1ShFtkcJD<)?=H*}9U%m7m-f>w-!#GlE8=R_j8j;2Zu^ zhH9a%)|Do%4Ar3AtSduY8Opg^r%`mRtG45?PQ6|uIh;DI9yrRM&}Yz9*MA+?ls2Is z@lsmK#5=S1n$jiV_%rXq z2xUTs+ROAdVO8Q2DYZ(U!MbY1Cs~)#y6U(wwy|cij-kth{M0j&*}9t6X@|V6tEE$7 zBr_^$7Q%#kbm8b}N2AU$M& zjF1U3gEwSh7amUYNM_=vdE_pZA5#Ddf-e+;!myqina^ z040f(f^VQSXjsP&DnLc31eKu*RE6qL18PDb`!othgNA-KQNdKWx4cMlwIDJ^zh{A3@_vIUzS_?C5)F39X?mgwjqH!4l9}^c}7d)Q9R& z0|wz4ly?~dY0dI!9_fQN5Pbko;2FfgLD&vEL8C=KgGPutLT4BU<6#1ffuA4<5>9Nw zT2LG6KwYQ@^`QYYghtR&4bYVyab59ssnVS!ClqBtF(?itp%iRn|5w7V(8PGn@W>XV zFZ$I1jqTKf`k-&UHG&aP8p=Rf&{$7D=n6~O#4_keyc2YWa#W2Ul!rFVw}qC_3cdqf z6&n*afQHZ|31?t!B6UE2slJknNj1kKQ_wOpSPm;-CHxAjU^T3Pa99iLU_JZ>8(<@B zg3Yi6X2L9(4Rc^F%!6Mb1m=T*P*?y9VS*c{%VZ)Nh|<8*KcK;;3vdy3fCid&K_p~@ z?2rOdLk7qMAIRe~yaQL}-9VrHUNIjF+rgLl$uJ%?)-(owQh#j$78ZnEup4wU>Oj~W zh7zwtSQ)B-H)MgVaF}JgfEPbp=7E7Z&=tDCB$x=JU^M&)fiMh)!wBf9HrN}QL1SnF zxYh-l!rCRXalUc9J*~ld@GX>sVo)4PKuKs#8jW;lU_%2L?LdPU8m#CDouD&xfv(UEdO`s7f{%gZaaRM?hmA<6t~YfQc{(Cc{V=4x7kFV;@bakmiJSl2OdMMCw5$ zr~;+IuyGBDXaGb59`W!FG^X(ZG>)Nhi_hRnIyXoH_nFsFgN6|_Y_JA2DzF}YgN>kp zSB(m26yTOYlx};yi zb}Bj&q979|!V}u=BRD|1d9WV}(_B)peoFAt2vRB{sbMb*_CqCj3hD!03+igD1$Cev z)Q1Mp7@9z9=mecXJ&--2H}nDho@*w^0B(>JlEDj_PXWS$Noj}b0bB$Vp&zLCPrZHW zv{Q#%K2SeO5_m#ws_A?O7ug%V9i)D@kL-Z@%j!TM;(eh%3;_L+^ueIMvoKf!%V0UI z2;#q$@GGnW^`(6WO+kHV&7lRfgx1go+Cn>M4;`Tste~1put&w=62sT>)op%;1A(J9JiV*%+7*f61-r( z5Tt@5Bv476Ol01ddA(7jH;9UW-VoXg```c^ggx*L`KjyD8Mb1+9H@V-B;<#@5air= zV-joRpcPbw?kv>a4`rjZnBT*(tj2tDs?iNTQ9!+f69GHnH~1au!#dhgO~M|8BOnk) z!=L1p9Ivo6g{;W-T}lxt4ke%@RAXb+p#~gc{tswRTsZfr7V$22z8awl>OrCYAoJ63 z2F}7hC{6q7MA(D^R3`jF!*s_v;GWL^2Z$SR8}xp|LlQcV-BjY!VG@i7JvQ96rB}gg zvT+qG7P{KFTp9|qkc|aH7ud&o8bfEy+@%;~hXRm6=l@PNtf6WH8lHA;Tzl)ua_788 zi=FYM#E-+tMD7TMj{%Ll{t0oQq0nlaSt^v;nBJ$0gxR1`$b{qXP6;cpq0j8uD{y1M zTf!%hxLwpDlbWC~3wwBj^=`r~xDCs|S-^jXg(zqdD4M9inRWiZNF??U-vYaS)zp%+05#cu!X7zANj9c) z);aGCo!5YzEYA&2uMEX&oNBTQakU#cXBuarH1aSM5-$r%i}=ExXamlK=N)v)z&!R& zqYFb|C^$3hO}s6%WBI?=Imdd=bUIY^nIBHunhhgi6gbb6S~~yv@Bc%h1pmoQ1yovR z<{BADJg@jzG9L%yVIrure=u!(XR1yWlPvA^2ij9nhC_Qd5 z1$S1bex4u)vz`=4kA!+e{F6P^r^ZU4PmpOLIq=WrDd?ku1N5=M4K&K6j}ETzp18Uv zl=wBlD|i7H;5_J4XgKJTs6LhcsaiWu%bfIbh^`Rcrh1yUVii5LoWr?c*B|sZj!Bkl72nAx;fr$1@1##|) z7Am10Hn_F^X9YRu-YBi+o$JV}Hq_viXBDUkHK00FgQ}oqDvT(nTvc9xfGHRj%68I!^!Zco`l4rZ&;n5`En(m9n|@T3H+U9+YuQQ0C6e zl-9W+IiZ@-I;zx4KQ(fXC7)$YC~G4 zcwguPy&(X4K^o`}17L`b|6n44FdT-$Fc<-&U?ltq>XMoRQz18ug>jG@f?*;|fblRH zCczY#4$~kP%z&R^Cd`7_FjvPvH<5Yp3xvQ?I1GQlLD&nw!xC5s3m_D{Aq*D5V$epG z!BW@*T4x0;hc&PYeub5=8a6>V+fR7say{W%SO*(mBW!_i*bLFI1EOFnM8Y=M4iPr4 za5wCNouET?0QSQ^$O4BTE5yJN2vYT(gcG3nSvU=+;4e4>=O8IOh3D`X9>FEJ2wE@k zA$Z9AeYgf!;R;-aIJgDZL5{-{%ZK<5TwBf^HDk~Sc$4^=?V2DPCk zRD+7(2RlfYj!+{Hdi2v1m0G(7gY=?MdhiB~I@rM>zIVk;5zq%s4NB@!OAnp;^sBh@ zgJ@pjc|fB}Nys!mp&DgA!qkL??K1fSPzdy{hUSYwQ78ra+*llju}(=nHS5DDmZusmq5w6|43dtMo8Ky{GUcUEiJxQ1TqfNDX@>cS1;8gH3FcpWtUBB$DH4$Xr2 zPgkYy2_+R*Z=D{?)N|Jrr{QRK;>R3c$AX4vg(0A2KY)h@@Vc7ie|lsNYDcsSbOwD6Z4VtmAN6%eRYBcgFleN#Pwq`1G9JdkSWxBs1Y_Vw7!9L9eHDQ)0*1pd z7z#6C7R<15T{z|DfR5yR2!UT`SA8dx-U@z=}aEOFx*apiT|t>7t<*YEN1~ZcOXk2jwA@r$VjgOmj)czciGAXOMWq%J>z$1ZAwfQOTVdz9SwF zs+~8Wg1rT2e$G8j!X?8ET;Vgz^{MI$VOI#!e_G%H?%)8qq&8Gs*CprmNW&2ts`v-5 zYmg~Lk`ltg{LVKr#xe0TDUIfy7 zUP2}QZ>3jvo$`vHHq;fZu7kQz9bXWf8&yH|dWQN!s|4|%AE+Z#9iv4-9ixRI zGl!}yp}H0I3XS?4HRh}CMmcpkYIzxOE>o|byyg?fwVu3sik)dSALLx%%up|o=v9jH zpw}rXgPi6SuL{*b)$Xh{4IR{iJWv6&x8(`HBlIJzNmv8Q5HAIVp#(638I&;8?ZZrd z&(35$+7ZgCKcZBwWUWwDI zae76r5^QAI1|5IBrL+dt!#Y?Co*esd!hVFS2!Dl@@H5PYSuhi3z<3x7%4-A+gTbIH z#9jALs>aKcRsK^=76Y%p`FZ7(`qxe<=i{!a5Ul{%e8uKno-%6S5#-IAIFmbWrtABb*AV@=l=Y zSE2QAyn=ZHb3uifPdF#hybAUY1cM&7eqq_y!gKt!!aRht^dX5>bY`*?r*xr&&dhZk z*9Mn>)>YYE5SNx|jrIesI)t)i`81BF= zxB*w;GMt6vq)7&zkOVXi8XI^n7k0xg*aOk950pk3CeA2v+?o0RDLg?QDy;HxrVDaL6#ius=#+ALmG*DYypF#z zNWAO`^LqL@&$55u9B4y&U~$%l(m0np3!p-fZ_s}-b7rbg8K}V}-k7`^;=i3XD3`e9 ztI?`${5!20^#61mf3@`gDZkDqu3kMGIt!@hJmXZ;od0*eI9t#iZ9nsKJlsq2g@e8apmt@9Y`98a9ax!k#PLH}O(n2h9f+*JVQ@zsi| zY8_WS)hdm%UFc$xI3K4^?3^3c1Fhl?t`#f~O4yJ#;_+1^?6C@=J&<=M)|KnOW$4_K z|F+Dz(SL_Z`!#QlzjH-3I$czp^9qG7xfR)X1<;G9xuqDU?UsKO4yZzSqSw4ac-PmB9`k0xrt9=f1mHpQ!;Tw`jr(I!_P1VROQ16 z>p^X(0ac(fR0Tb>R41$kwV)<+gT4>|TCa{f$6qVXV9ylR1>IV8Z&!)+`A)}Q4bu4} zbBwq)-jj67FoOB6gq=ahw<%#q_?bLg6LtU<;5(=TO~6^;<~sf=nF=r-^oZ1m`G&BJ zjI~EWI2Eh`=m{w)8>vrx2%g}76jW!8_AK$n^csosR=xntU?Anlc8J3=i`={4Vs zuqE@_ySBu&XU;v+Q%)aBEdv(_IgYpp7_Z|r=p%_bR5SM z9|wBo*Ty&EotN4O;@dzEInGRRA{uuJfa3q{ z^1X;=cqq&SbzBc6qZ!0QKndp&&V@NJ8)kvdfb^i{a=(D{FwQ5gM%Iyh z^a;u^zW`Q(t{qFE8!UmagyT;l^~dRS(z&e$sBi@dmV+ARGQ!R*R~OxKQ2NcdO|TKx zf-+TF?a*panpK41u*QZuJ2u$)^@Quxuyk%~#oq}3oj@hlUg}D>6}&+;wGIB;vhDaN zhy?W?>>=C*J76dLhKnZL4gWyUIsQ}CoQ9Kd0-TrGL&UZ5KL`(k3XzNXN1*G$KIV1E z4iN5#!*C3a!%>KVBOoUtz**>1#Q)Us|BHwUp@qMLGr`})wb8Sn4cir5&JcID744PU zL3L`+xn5tK)>BQXKu)hbbPc&k*pl>3;ktVsP9KCfpWSZ~=0M&cyard{3YeRRJ@T4o zhdq)7U1s(=Xt5S0W3{Akmv}tH!drL-Z$Mc;f<|O}pD+&Yz&+6Vx8W9OeXXly3Okct z@du!E4}tZA669-Uv;h_56}*HOpoGui2`Ce#c?v45GW!f4;2pe&kMId}VNAkKcz^@i z;M@pZpeW0}Fz-s-U2na661l-L-2yTvitEcO86g9t2Ys-cw>&5z8uk57fW^ZsH;fwKMRPf>qqm&2-Uw-2=uDF z!lF>z&X=@K;Wsv3n$YRX5!ZTpJzu^oC=bPh5@-7FPOqkH+}Y_>lXwlN#7fS-DRqn~ zjkBN2nWiG%S$OS$`mt(Rr*&#V4?OFB?JTQ?_+OoU2V9iL^Y`5e&m9&(1w=god!-#k zR7C6z5qk}a3W@?EXzW1jU2KdkiX9uGQL&3PR)W1F_O6&1E9(25r*MRT`Tbu%+3Y>f z%gDVm>=f{_Lw^+W1~ z6ok|lsSi>hQct8FNYg;u6?uCkzgYaQEz)c#%pd^R%=5X(c1SItkWNU>NOk4B1KzW8 zbwnP3q&zEm7rg6?)CtKP<+01y4Zk@=#AXTqiSN4O9b55OHsecy$c~W01TU6*1A$w? z@A&yA{0;(6KO`mRmN2Y8U?E6RNW+i@Aq_?fMJfTDNaRD2B9Ow7xRGJVhj6fzU&;@; z0G=|qE5-me8i^ShiNwszLSj*lLgLD&AfJcCl8iwbkHmBe;|!mOlovh@&tpX#^#3q$ z$jB4$;uoYiBre1b@A-MM{LDm?kl4rIiWPh=cskNFB%TPTB4?kLaT#w0at^S>BcFw| z8o&84z)bv}!^E?Z<|1)r+-Ize3y@f;SfN-^isL=&2^W}%d>gg7-=6;RnY7~o{F>^iIr*((q8;#rDJD_TYU)W01~%;Khi;@seth^^9YZBM&cGT zAPwm#lJf3^{QDSkZmkuFm|3OO$MH^SIpc&NB>~PJ+8O-*fb<^e9nxP&Z;`T*?n7E{ zkU!`CXMe;IoU<68;hB}_3Gzos50UO8iBUJ?w~^S-YzN$%_JYPk+ zf|QPQ8L1p#myn-BVmI?F@(iSlNU<02zdw)|`8*N>_?h!-NVkygAY~zCBC%(87x@Du zp3@&AXGZz=Q~5o^6oy~p_ba3qNH3B8MB;`rQ_s2o`GH%>t>Ko;Le4E1=46ddlBZ`}WU14)IX5Go>Nktu|q z@S7{*{^VOr*Fch&8OCEcGsa~xV_YG>tAI*NBJm|AzRbiIo7lkd`y$Qpz_*?F))RAQ zirfsja`Pz)h+N@uNP}-ZF(Kc4;(SkE{NR5hY5fJ$YVE!7(@Ld^+t+mbPiOAcU+*AP z!W$dB>5IG+a>t@W{C;!ZFv3CblW}=oC;`aE`RCsCwwxZM6L{TN4sVu_{YBHV`1?bh zE}GWXZNpnGi4rfGx~osnm5ZisdOlZWftSlhCH?-rRtJMd9cXYe)OB*j$p-Q>5p4BS z!KNKB)~c(Y-IwT)42-%?E>14IlpyoVrnY)Ml28^HL5UOVHaTs39T+Z72FAFnrrT=4 zR`XU(zR2}OAQlH;`c-?^FtJ*XSz>KsS(P;u&t)|N2J`dDZE#3Z-(8tTiB$M9FPub75t(lvDdis@4R z3*s?X@g9HOd$6fsz+c{8bO@ZO&^czPciX}$tvWkw8X$7!%55+!l5ov5L_bJI$Z0Zp zPFVf1A7s`Iyqu@V8>ZGo*Gz}#lev?*oY2iz&Xqo7Bcpln`iAVTqvG@; zELi&JM<@d>E7IBT9}dLEtJ5QubI!{fy*5p*Xe36bAi54 znmy2r0&kfb^f%=eH5`~RVBFNfRk$uMG|7Mq-?W9x;)}RNQPyeC@2i{!1bfK*qO2js zC<_>xpNl2DHMJ#&zf4P0)!U{G^2yd#b6TL+)gbf#NsMTqL35`BWjsXDk4uo{Q{*2? zQ1(mY8gmM{12~ye@_jH@6`EoT=9-~do|$Uv-i`+`pGRtVVm$8tM0f!|Ex~WI@D+^ zLR_6ZF?m{$0~ph%1A|S2g~^KheGK|InGq=WLkqf?2}!>O2D7@_eDU59v-kTNF$7C; zxC=fkEU7OVMW64RmSI&bXGsxw?^)ea;wyaVfr|5j4jlz0k7($FCm^i(#csS?)O~lc zVPcsEC$zD#B^|g6L3OaCY?PrN2u#*(tIM;R9$J6)m0UY8BQ0sp6H^-#H&u)!`D6ii z8gR{l+kAABrTdRGFCpT(x#>i^+MYp0%8qF(x0QIc3)C4RfHIvV81_Ek~zA}vm^!q8)4gO zPby}{FRd)og6GN^92d+e9B$4cEane8oOxIk-5 zQaqPF9vIA7cJVTU2VMN!PR0Q5vjD+=aoxA{{TiCv_VPffA>xpiJ5+xJ^{`QRxvk+Ut6g1c$OS?OiVDj5tSLYh%IOR2WmmQs z`88Q7M%GHtl9&lga~o5q#V^r4Vr#^<#ucj+K=5DO6@A+6PCJjUm03dT^RslsBH>}- z>WiWjCge&r%ClS$?R;ojP8ra8E2s-=tg7C-pI5h>IaaI}a~=9Z(teG-4cR?H|4acU zYwYu&WYdPj*I$t_QQ=%bAoI9l_ZvKKyI`KIpFGnf+E5s13)6PYAt^SL2n>0wS(~Eb zrzPn%zfy9=_9)L*Hst*naJ=_@VruY=gyQn>*mR})rjs*MrpThJ_aBOLC{G!={VWZ> z+_DRL4?AdW>WTVfYh@g-3ZwarWRw-fJqN?DEhvzUr!r~_!~gO7yp>bmXU4wFD=;1n z8c|b3kt&uf$A~T#BXMfY#!YUHK2a}qW=gS};iD$+z65E?6Q&7CD|KK9I>l{H@0J9jwd;-r*U z9%!;?{yhsfnU68>Sy@{hZ)oEm<=;)#77Sj6Yo%kA@uRSouUkC}mqQ^20xTbLAfH$0 z8cFT{q3*`sk`$BKY(FOlljRs_+%+*zCaW*hl*O1)$3df%Zzlx5< z%ph7{3}(?~GU)#T0-KU$ZSMJRj2p=!$WGTg`-4U%ehs~$6i){0wTM@aQa?@HjmTiu6K8mjJop% zpR~u5`|*&${Kp3QffGgkg_`~Z2GP*Go zp(p&E$@d+~=mkuc#gS4C{_f*9|12=UAq%502iQ$z?Lu=vtFMIe*qIK=JT`sDj!nG4 zlNVGGE_C#rsh_5oGg$M_Wd!QsBR4gW z-5kM|HvNsk*cpxF0vpU&ecMp+(-E;iRF0K^fwDlR4}l@!`Sg86!UU_L>)A(Q4FV&7 zxsla-OjrEH1IF-oKDxT>nPcpuxk(rvFc555=d9Y%9F5cUk~Z}a=3t1)vPg@AYW#M|9%u2DIlR+Kjc; zOU|+WarlImMK+XL*5N^i*k)#Xc(}_3K^dGAKbcn0EcT&uUr`)h9srr9Un9y!96Yoak}_{FrYKA@(=*PeOf z?lwsr84og9tD~Aw{1>!fd=onU1&hs|O{q=}$Okv2$mfE!DKu_OQ|g-o6v^J$(v}=3 z>!+rYk`(>*-pxtc2W)#GYUVno8QsqTBPhuQGV*NHTx$7LZOs+!*6i2-Ox7oK)l5Lx z8Z@wP6*y*oo3d|!#a~giB5zp?nocbfzM+b%Ey@2In3ZEMN^FCcelzt~ zUjBE8L_eanB-DAyRf>*vJunV@V8O-eEC)+y@ORTexuw7SZtAX-u7qk7pd3!oC$*6T zzIJZ<(T$q9k}ocbN4DDRi%PK+&lkXDzy0m-x3%Z>yw{1xn>aL7er+WoZ}B+M=-8s& z-$en5po?v(I7f<Nd~8srMktqyBgdaKN|dRv$dDWn`tKl=5@J$9N)n+|X`W{0 z1Ggw5D@+Aj&vWgirDxwpss`o%$lPGUrVv&hfnh+{)ZDP}{^Mwt>3JjMWqW!FTK!jG zun8>ntmDS!AqG z+eun`FSAa4UT*S%A;5Hj<6*#D--+UNXqG&C(QO@?;{|k{hMsrmKQ>@yjTjMKv&4gM-`vQX}6PZFYpbI54v8zC>GI51yyBNvHD3W?E$P1Dzw7kXQmBtTIWXzYTRuEZ^8fbX>Tz5y?AO6iuwxUBdYIdF-I0-50LY zs4L-38PE(Xl2A;rjSa*j*EpcZv7;+25=}Mg)_7x$Hw6SdIraxdiUWq|M;CqjqE-tl z6OB3yZ@8BVa3?$^ngW8O>`n4qC2^wXoeWm4p6cbdT6|c^PJ$;efDqe*GQev=q1<|s zpC}cD*n1I))z8e7nTcm#n9eLBj_*4hbH8G5YYgD;>Sf0D+&!je-Lo zbqRCC&}x)+$<$W8iaHb*%BpwM5Y8^pg@wrK(Msv%-r|CrdIr716Kl4v1cs$NWYmjj zXbHUb=}0q52qEgO^tOcHR{nXAB%*cG6D!y9U+p9FgqpumBXeO_`7xLwnduc%_BT!X zYQ7%6fCpGZH!mj(3&Bl;LEFqi@GD=S>n?hAfwb8IHOr%0qpCw$7U<*D5FD>S$?3n1 zyAZzLzKjmq3-v{-z2IVVzbX46y4?Mci=g2?{xoXh+Xq!wlm(5KlLtCe)v2Y#=RD`0 zv#afDSPu{by2-`K^Dbz3oRzb#TJo35oz8JRUQUKiPVSyB0Afv@wtxLa+mRRQ$RHa`t2_ef*FiuTA3FY*C zfl>-ZD?2xu+?^ZKffP_juq|JDpw!Bu2_DnNIS$}pp1b7auAxU&1UDK~M{uXt4g%tw zXb1&9hS1zp)j`JYMvl|-MX`RT8i5S$1cJ&F5cX%s+BWzcI<<2MAly(0^aPmUPHgk> zbeQRzHJt%*gKGdKZY0yR2oL+x+$)XU8n`a3dCFfguVE5u+0yJY36rM$*f&9uNP6ux-D-Hpc?i8J^*Fq zLZM8Nu7gz6Zi-MwA2diBaSvbaE0^Z*^#X9wi_DU3C-NR7*ve{OAv09!ShJztC!cp% zx?faHgD2*-p@UU)Azg5d9XD9gvHeyyrGA>bWP*trtriCs0fHb++^+90|14VWOjRS~ zH$V_iiR-ZR^=se63*U^8i-7Q^m@xd}fUxwxG)73aO!He+lb>9kPA)A&V!^b<5UDt? z?6K|5EvH^E5;*~awSU~qxnGy3RxbJ62nhg$D|+0xs_yTm&5j!(5r8-VQn&h6FTrL302p3rHhvhmfdgrw1@3R%+`8fOtt(VN84Vqj6W_j6}x)VJTSLzu;OY=WLD< zk|onji&|Fw&a~DgjF4KxB+bsuJpAis!@+tcYA8iL=!MD~5FWRuv;oxOY4}kSn*BsD zs~dpVyyWfZlTlk=p(NZ7g&;&Gu>Jhmwc{DjU?XJAFcqDDB9y5x7brZ1yEIwaCsnY3 z%oXC*Kv6#x%GBK>mvU6~x@EOz8eb#IIY4+2hVJ!Fau>oM8zGq>ZqLMj%H^-#7&G{_ zuIfc2ifNR@_U0C$KSedFzT5~YAElySL0rKA6mD>>QZ?MvGasxnqO<_Y1unn0jMC30 z$IQas>b(&q5|C0Lev&Z!&sB}y?>9mwfY|;Sh!@Gk3mUwvJb3ofX-1TdGVzf|^O8!J zY5Bnj*$?7y5LfsEC@eW$NuSz#)C9)V`?3XanE%Z z;0>_JbH({Ocd0w`1s4oB7!?%l7!(m5+T#8D7_Y=pYLOYSG(Of{6l_+gbgy!nS*5*V zl_DfRGYySI1vnM#YJs^zA#`DmP?{2*1v8KF(i}Lcy)MFg;*y?HU<2%{o&r(~ywo{! z<>l6l(#^%#9fk`6E8{8C8Jc*4h{< z?jaZ`!~oBIM+{9c0KH$V#BjeJ8-7W7%p90M7XOuOea4t)YNtcMGg{d>

_GbFLO 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" @@ -29,6 +31,7 @@ "packages/*" ], "dependencies": { - "@changesets/cli": "^2.27.1" + "@changesets/cli": "^2.27.1", + "cross-spawn": "^7.0.3" } } diff --git a/packages/dappstore-cli/build.ts b/packages/dappstore-cli/build.ts index ec3dcea..1fb7b75 100644 --- a/packages/dappstore-cli/build.ts +++ b/packages/dappstore-cli/build.ts @@ -1,26 +1,31 @@ // @ts-nocheck import Bun from "bun"; import { dependencies, peerDependencies } from "./package.json"; -import { version } from "./package.json"; import { watch } from "node:fs"; -export const build = async () => - await Bun.build({ +export const build = async () => { + const result = await Bun.build({ entrypoints: ["./src/index.ts"], target: "node", format: "esm", external: [...Object.keys(dependencies), ...Object.keys(peerDependencies)], outdir: "./dist", }); -const test = await build(); + + if (result.success === false) { + result.logs.forEach((log) => console.error(log)); + return; + } + console.log("Build successful"); +}; +await build(); if (process.argv.includes("--watch")) { const srcWatcher = watch( `${import.meta.dir}/src`, { recursive: true }, async (event, filename) => { - await build(); - console.log(`Detected ${event} in ${filename} (src)`); + await build(); } ); process.on("SIGINT", () => { diff --git a/packages/dappstore-cli/package.json b/packages/dappstore-cli/package.json index 0698c39..798816b 100644 --- a/packages/dappstore-cli/package.json +++ b/packages/dappstore-cli/package.json @@ -5,39 +5,27 @@ "type": "module", "main": "dist/index.js", "scripts": { - "build": "bun run ./build.ts" + "build": "bun run ./build.ts", + "dev": "bun run build -- --watch" }, "bin": { "dappstore": "./dist/index.js" }, "peerDependencies": {}, "devDependencies": { - "@commander-js/extra-typings": "^11.1.0", - "@evmos/dappstore-sdk": "workspace:*", - "@types/eslint": "^8.56.1", "@types/node": "^20.10.6", - "@types/react": "^18.2.46", - "@types/react-dom": "^18.2.18", - "eslint": "^8.56.0", - "react": "^18.2.0", - "typescript": "^5.3.3", - "viem": "^2.7.9" + "typescript": "^5.3.3" }, "dependencies": { "@evmos/dev-wrapper": "workspace:*", - "@types/express": "^4.17.21", - "@vitejs/plugin-react": "^4.2.1", + "@types/cross-spawn": "^6.0.6", "autoprefixer": "^10.4.17", "chalk": "^5.3.0", - "clsx": "^2.1.0", - "express": "^4.18.2", - "glob": "^10.3.10", + "inquirer": "^9.2.14", + "lodash-es": "^4.17.21", "postcss": "^8.4.33", - "postcss-scopify": "^0.1.10", - "react-dom": "^18.2.0", "tailwindcss": "^3.4.1", - "ts-dedent": "^2.2.0", - "vite": "^5.0.12" + "@commander-js/extra-typings": "^12.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/dappstore-cli/src/dev.ts b/packages/dappstore-cli/src/dev.ts index 70afdc7..7c31f8b 100644 --- a/packages/dappstore-cli/src/dev.ts +++ b/packages/dappstore-cli/src/dev.ts @@ -1,8 +1,10 @@ import { program } from "@commander-js/extra-typings"; import { serve } from "@evmos/dev-wrapper/serve/serve.js"; +import chalk from "chalk"; program .command("dev") + .description("Start a development server") .option("-p, --port ", "Development server port", "1337") .option( "-t, --target ", @@ -11,10 +13,20 @@ program ) .action(async ({ port, target }) => { + const targetUrl = target.startsWith("http") + ? target + : `http://localhost:${target}`; const app = serve({ - target, + target: targetUrl, }); app.listen(port, () => { - console.log(`Example app listening on port http://localhost:${port}`); + console.log( + "\n\n", + `${chalk.hex("#FF8C5C")(`☄️ Evmos DAppStore Widget`)} environment running on http://localhost:${port}`, + "\n\n", + chalk.dim( + `Note: Expects your widget server to be running on ${targetUrl}` + ) + ); }); }); diff --git a/packages/dappstore-cli/src/index.d.ts b/packages/dappstore-cli/src/index.d.ts deleted file mode 100644 index 636e1e3..0000000 --- a/packages/dappstore-cli/src/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -import "./dev.js"; -import "./build.js"; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/packages/dappstore-cli/src/index.ts b/packages/dappstore-cli/src/index.ts index a1ca3c7..0571ed1 100644 --- a/packages/dappstore-cli/src/index.ts +++ b/packages/dappstore-cli/src/index.ts @@ -1,5 +1,6 @@ #!/usr/bin/env node import "./dev"; - +import "./init/init"; import { program } from "@commander-js/extra-typings"; -program.parseAsync(process.argv); + +program.parse(process.argv); diff --git a/packages/dappstore-cli/src/init/detect-port.ts b/packages/dappstore-cli/src/init/detect-port.ts new file mode 100644 index 0000000..fc4c91a --- /dev/null +++ b/packages/dappstore-cli/src/init/detect-port.ts @@ -0,0 +1,43 @@ +import { readPackageJson } from "./read-package-json.js"; + +export const detectRunningPort = async (dir: string = ".") => { + const pkg = await readPackageJson(dir); + + const startScript = pkg.scripts?.start ?? ""; + const devScript = pkg.scripts?.dev ?? ""; + let explicitPort: null | number = parseInt( + startScript.match(/(--port|-p) (\d+)/)?.[1] ?? "" + ); + + if (isNaN(explicitPort)) { + explicitPort = null; + } + + if (startScript.includes("next") || devScript.includes("next")) { + return { + framework: "next" as const, + port: explicitPort ?? 3000, + }; + } + if (startScript.includes("vite") || devScript.includes("vite")) { + return { + framework: "vite" as const, + port: explicitPort ?? 5173, + }; + } + + if ( + startScript.includes("react-scripts") || + devScript.includes("react-scripts") + ) { + return { + framework: "react-scripts" as const, + port: explicitPort ?? 3000, + }; + } + + return { + framework: "unknown" as const, + port: explicitPort ?? null, + }; +}; diff --git a/packages/dappstore-cli/src/init/get-package-manager.ts b/packages/dappstore-cli/src/init/get-package-manager.ts new file mode 100644 index 0000000..acc099f --- /dev/null +++ b/packages/dappstore-cli/src/init/get-package-manager.ts @@ -0,0 +1,19 @@ +export type PackageManager = "npm" | "pnpm" | "yarn" | "bun"; + +export function getPkgManager(): PackageManager { + const userAgent = process.env.npm_config_user_agent || ""; + + if (userAgent.startsWith("yarn")) { + return "yarn"; + } + + if (userAgent.startsWith("pnpm")) { + return "pnpm"; + } + + if (userAgent.startsWith("bun")) { + return "bun"; + } + + return "npm"; +} diff --git a/packages/dappstore-cli/src/init/get-template.ts b/packages/dappstore-cli/src/init/get-template.ts new file mode 100644 index 0000000..91bebe3 --- /dev/null +++ b/packages/dappstore-cli/src/init/get-template.ts @@ -0,0 +1,26 @@ +const TEMPLATE = ` +import { createDAppStoreClient } from "@evmos/dappstore-sdk"; + +export const dappstore = createDAppStoreClient(); + +/** + * EIP-1193 provider + */ +export const provider = dappstore.provider; +`; +// const __dirname = path.dirname(fileURLToPath(import.meta.url)); +export const readTemplate = () => { + // try { + // return await readFile( + // path.join(__dirname, `./templates/dappstore-client.ts`), + // "utf-8" + // ); + // } catch (e) { + // console.error("Template not found"); + // process.exit(1); + // } + + // TODO: I was actually reading this file with a Bun macro but it's not working on github CI + // let's try again in the future + return TEMPLATE; +}; diff --git a/packages/dappstore-cli/src/init/init.ts b/packages/dappstore-cli/src/init/init.ts new file mode 100644 index 0000000..b276018 --- /dev/null +++ b/packages/dappstore-cli/src/init/init.ts @@ -0,0 +1,92 @@ +import { program } from "@commander-js/extra-typings"; +import inquirer from "inquirer"; +import { PackageManager, getPkgManager } from "./get-package-manager.js"; +import { installDependencies } from "./install-dependencies.js"; +import { readPackageJson, writePackageJson } from "./read-package-json.js"; +import chalk from "chalk"; +import { detectRunningPort } from "./detect-port.js"; +import { stat } from "fs/promises"; +import { writeTemplate } from "./write-template.js"; + +program + .command("init") + .description("Initialize DAppStore widget in your project") + + .option("--skip-install", "Skip installing dependencies") + + .action(async ({ skipInstall }) => { + const detectedPackageManager = getPkgManager(); + let pkgJson: Awaited>; + try { + pkgJson = await readPackageJson(); + } catch (e) { + console.log( + "\n", + chalk.bgRed("package.json not found"), + "\n\n", + "Make sure you run this command in the root of your project,", + "\n", + `or you initialize a new project with ${chalk.yellow( + `'${detectedPackageManager} init'` + )} first.`, + "\n" + ); + process.exit(1); + } + + const defaultPort = await detectRunningPort(); + const { packageManager, port } = await inquirer.prompt<{ + packageManager: PackageManager; + port: number; + }>([ + { + type: "list", + name: "packageManager", + message: `Which package manager do you want to use?`, + + choices: ["npm", "pnpm", "bun", "yarn"].map((pm) => ({ + name: pm === detectedPackageManager ? `${pm} (detected)` : pm, + value: pm, + })), + default: detectedPackageManager, + }, + { + type: "number", + name: "port", + + message: `What port or url of your development server will run on?`, + default: defaultPort.port ?? 3000, + }, + ]); + if (!skipInstall) { + await installDependencies(packageManager, ["@evmos/dappstore-sdk"]); + await installDependencies(packageManager, ["dappstore"], "dev"); + } + const packageJson = await readPackageJson(); + packageJson.scripts = { + ...packageJson.scripts, + "dev:dappstore": `dappstore dev --target ${port}`, + }; + await writePackageJson(".", packageJson); + let templateDest = "./dappstore-client.ts"; + try { + const srcDir = await stat("src"); + if (srcDir.isDirectory()) { + templateDest = "./src/dappstore-client.ts"; + } + } catch (e) { + // noop + } + + await writeTemplate(templateDest); + + console.log( + "\n", + chalk.green(`🚀 DAppStore Widget Setup is completed`), + "\n", + `To start the development, start your development server, and then run:`, + "\n\n", + + chalk.yellow(`\t${packageManager} run dev:dappstore`) + ); + }); diff --git a/packages/dappstore-cli/src/init/install-dependencies.ts b/packages/dappstore-cli/src/init/install-dependencies.ts new file mode 100644 index 0000000..33e33ad --- /dev/null +++ b/packages/dappstore-cli/src/init/install-dependencies.ts @@ -0,0 +1,49 @@ +import spawn from "cross-spawn"; +import { PackageManager } from "./get-package-manager.js"; +import { readPackageJson } from "./read-package-json.js"; + +/** + * Spawn a package manager installation based on user preference. + * + * @returns A Promise that resolves once the installation is finished. + */ +export async function installDependencies( + /** Indicate which package manager to use. */ + packageManager: PackageManager, + dependencies: string[] = [], + as: "dev" | "prod" = "dev" +): Promise { + readPackageJson.cache.clear?.(); + const args: string[] = ["install"]; + if (as === "dev") { + args.push("--save-dev"); + } + args.push(...dependencies); + + /** + * Return a Promise that resolves once the installation is finished. + */ + return new Promise((resolve, reject) => { + /** + * Spawn the installation process. + */ + const child = spawn(packageManager, args, { + stdio: "inherit", + env: { + ...process.env, + ADBLOCK: "1", + // we set NODE_ENV to development as pnpm skips dev + // dependencies when production + NODE_ENV: "development", + DISABLE_OPENCOLLECTIVE: "1", + }, + }); + child.on("close", (code) => { + if (code !== 0) { + reject({ command: `${packageManager} ${args.join(" ")}` }); + return; + } + resolve(); + }); + }); +} diff --git a/packages/dappstore-cli/src/init/read-package-json.ts b/packages/dappstore-cli/src/init/read-package-json.ts new file mode 100644 index 0000000..e8797d6 --- /dev/null +++ b/packages/dappstore-cli/src/init/read-package-json.ts @@ -0,0 +1,33 @@ +import { readFile, writeFile } from "fs/promises"; +import { join } from "path"; +import { memoize } from "lodash-es"; +const readJson = async (path: string): Promise => { + const content = await readFile(path, "utf-8"); + return JSON.parse(content); +}; + +export const readPackageJson = memoize(async (dir: string = ".") => { + const pkgPath = join(process.cwd(), dir, "package.json"); + + return await readJson<{ + name?: string; + dependencies?: Record; + devDependencies?: Record; + scripts?: Record; + }>(pkgPath); +}); + +export const writePackageJson = async ( + dir: string = ".", + pkg: { + name?: string; + dependencies?: Record; + devDependencies?: Record; + scripts?: Record; + } +) => { + readPackageJson.cache.clear?.(); + const pkgPath = join(process.cwd(), dir, "package.json"); + + await writeFile(pkgPath, JSON.stringify(pkg, null, 2)); +}; diff --git a/packages/dappstore-cli/src/init/templates/dappstore-client.ts b/packages/dappstore-cli/src/init/templates/dappstore-client.ts new file mode 100644 index 0000000..3bc2406 --- /dev/null +++ b/packages/dappstore-cli/src/init/templates/dappstore-client.ts @@ -0,0 +1,8 @@ +import { createDAppStoreClient } from "@evmos/dappstore-sdk"; + +export const dappstore = createDAppStoreClient(); + +/** + * EIP-1193 provider + */ +export const provider = dappstore.provider; diff --git a/packages/dappstore-cli/src/init/write-template.ts b/packages/dappstore-cli/src/init/write-template.ts new file mode 100644 index 0000000..8ebbcf2 --- /dev/null +++ b/packages/dappstore-cli/src/init/write-template.ts @@ -0,0 +1,8 @@ +import { writeFile } from "fs/promises"; +import { readTemplate } from "./get-template" with { type: "macro" }; + +export const writeTemplate = async (destination: string) => { + const templatePath = await readTemplate(); + + await writeFile(destination, templatePath, "utf-8"); +}; diff --git a/packages/dappstore-cli/tsconfig.json b/packages/dappstore-cli/tsconfig.json index 0ca48f0..7415bd5 100644 --- a/packages/dappstore-cli/tsconfig.json +++ b/packages/dappstore-cli/tsconfig.json @@ -2,11 +2,7 @@ "extends": "@evmos/config/base.json", "compilerOptions": { "outDir": "./dist", - "emitDeclarationOnly": true, - - "target": "ESNext", - "moduleResolution": "NodeNext", - "module": "NodeNext" + "target": "ESNext" }, "include": ["./src/**/*", "./src/**/*.d.ts"], "exclude": ["node_modules", "dist"] diff --git a/packages/dappstore-sdk/package.json b/packages/dappstore-sdk/package.json index 19e61b7..cef39d7 100644 --- a/packages/dappstore-sdk/package.json +++ b/packages/dappstore-sdk/package.json @@ -10,12 +10,12 @@ "dev": "bun run --watch ./build.ts --watch & bun run dev:types", "build": "bun run ./build.ts & tsc" }, + "main": "dist/index.js", + "types": "dist/index.d.ts", "exports": { ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } + "types": "./dist/index.d.ts", + "default": "./dist/index.js" }, "./internal/host": { "types": "./dist/host.d.ts", @@ -27,8 +27,6 @@ "@trpc/server": "next", "@types/lodash-es": "^4.17.12", "@types/node": "^20.10.6", - "@types/react": "^18.2.46", - "@types/react-dom": "^18.2.18", "@types/uuid": "^9.0.8", "lodash-es": "^4.17.21", "typescript": "^5.3.3", diff --git a/packages/dappstore-sdk/src/client.ts b/packages/dappstore-sdk/src/client.ts index eff9258..7800f07 100644 --- a/packages/dappstore-sdk/src/client.ts +++ b/packages/dappstore-sdk/src/client.ts @@ -68,13 +68,22 @@ class SDKProvider implements StronglyTypedEIP1193Provider { } class Client { - private _host: null | ReturnType = null; - private _listeners: Record> = {}; - private _provider = new SDKProvider(); - private _ready = false; - private _chainId: Hex | null = null; - private _accounts: Hex[] = []; - private _state: "uninitialized" | "ready" | "error" = "uninitialized"; + // @internal + _host: null | ReturnType = null; + // @internal + _listeners: Record> = {}; + // @internal + _provider = new SDKProvider(); + // @internal + _ready = false; + // @internal + _chainId: Hex | null = null; + // @internal + _accounts: Hex[] = []; + // @internal + _state: "uninitialized" | "ready" | "error" = "uninitialized"; + + initialized: Promise<() => void> = Promise.resolve(() => {}); get ready() { return this._ready; } @@ -88,18 +97,25 @@ class Client { get provider() { return this._provider; } - private get isInsideIframe() { + // @internal + get _isInsideIframe() { try { return window.self !== window.top; } catch (e) { return true; } } - init() { - if (this.isInsideIframe === false) { - throw new Error("Cannot use DAppStore SDK outside of an iframe"); + + constructor(autoInit = true) { + if (autoInit) this.initialized = this.init(); + } + async init() { + if (this._isInsideIframe === false) { + throw new Error( + "Cannot use DAppStore SDK outside of the DAppStore iframe" + ); } - this.ack(); + await this.ack(); const unsubAccounts = trpcClient.provider.on.accountsChanged.subscribe( undefined, { @@ -162,7 +178,9 @@ class Client { } export const createDAppStoreClient = ({ autoInit = true } = {}) => { - const client = new Client(); - if (autoInit) client.init(); + const client = new Client(autoInit); + return client; }; + +export type DAppStoreClient = Client; diff --git a/packages/dappstore-sdk/src/index.ts b/packages/dappstore-sdk/src/index.ts index 9659024..422799b 100644 --- a/packages/dappstore-sdk/src/index.ts +++ b/packages/dappstore-sdk/src/index.ts @@ -1,2 +1,2 @@ -export { createDAppStoreClient as createDAppstoreClient } from "./client"; +export { createDAppStoreClient, type DAppStoreClient } from "./client"; export * from "./types/EIP1193Provider"; diff --git a/packages/dev-wrapper/package.json b/packages/dev-wrapper/package.json index 936f8f8..05a9532 100644 --- a/packages/dev-wrapper/package.json +++ b/packages/dev-wrapper/package.json @@ -13,6 +13,8 @@ "preview": "vite preview" }, "dependencies": { + "@tanstack/react-query": "^5.20.5", + "@types/express": "^4.17.21", "clsx": "^2.1.0", "express": "^4.18.2", "react": "^18.2.0", diff --git a/packages/dev-wrapper/serve.ts b/packages/dev-wrapper/serve.ts index a16bbe8..2444a06 100644 --- a/packages/dev-wrapper/serve.ts +++ b/packages/dev-wrapper/serve.ts @@ -5,12 +5,8 @@ import { readFileSync } from "fs"; const __dirname = fileURLToPath(new URL("./", import.meta.url)); export const serve = ({ target }: { target: string }) => { - const targetUrl = target.startsWith("http") - ? target - : `http://localhost:${target}`; - const app = express(); - const envScript = ``; + const envScript = ``; const index = readFileSync( path.join(__dirname, "../app/index.html"), "utf-8" diff --git a/packages/dev-wrapper/src/App.tsx b/packages/dev-wrapper/src/App.tsx index c367163..bf0e591 100644 --- a/packages/dev-wrapper/src/App.tsx +++ b/packages/dev-wrapper/src/App.tsx @@ -26,7 +26,7 @@ const Header = () => { ); }; -export function WalletOptions() { +function WalletOptions() { const { connectors, connect, isPending } = useConnect(); const { disconnect } = useDisconnect(); const { isConnected, address } = useAccount();