From bd21f97973915f350b10afea0185a7aec91d2a4e Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Mon, 3 Jun 2024 14:31:44 -0500 Subject: [PATCH 1/4] feat(gql): use wallet for `owner_address` when available for public list commands PE-6232 --- src/commands/list_drive.ts | 16 ++++++++++------ src/commands/list_folder.ts | 18 +++++++++++++----- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/commands/list_drive.ts b/src/commands/list_drive.ts index 2cb5592f..f498b3b4 100644 --- a/src/commands/list_drive.ts +++ b/src/commands/list_drive.ts @@ -42,22 +42,26 @@ new CLICommand({ const rootFolderId = drive.rootFolderId; const withKeys = await parameters.getParameterValue(WithKeysParameter, (value) => !!value); - // We have the drive id from deriving a key, we can derive the owner - const driveOwner = await arDrive.getOwnerForDriveId(driveId); - children = await arDrive.listPrivateFolder({ folderId: rootFolderId, driveKey, maxDepth, includeRoot: true, - owner: driveOwner, + owner: await wallet.getAddress(), withKeys }); } else { const arDrive = cliArDriveAnonymousFactory({ arweave }); - const drive = await arDrive.getPublicDrive({ driveId }); + + // Use wallet for owner if available to improve GQL query performance + const owner = (await (await parameters.getOptionalWallet())?.getAddress()) ?? undefined; + + const drive = await arDrive.getPublicDrive({ + driveId, + owner + }); const rootFolderId = drive.rootFolderId; - children = await arDrive.listPublicFolder({ folderId: rootFolderId, maxDepth, includeRoot: true }); + children = await arDrive.listPublicFolder({ folderId: rootFolderId, maxDepth, includeRoot: true, owner }); } const sortedChildren = children.sort((a, b) => alphabeticalOrder(a.path, b.path)) as ( diff --git a/src/commands/list_folder.ts b/src/commands/list_folder.ts index 729f6bef..fefd98a1 100644 --- a/src/commands/list_folder.ts +++ b/src/commands/list_folder.ts @@ -48,13 +48,21 @@ new CLICommand({ const driveKey = await parameters.getDriveKey({ driveId }); const withKeys = await parameters.getParameterValue(WithKeysParameter, (value) => !!value); - // We have the drive id from deriving a key, we can derive the owner - const driveOwner = await arDrive.getOwnerForDriveId(driveId); - - children = await arDrive.listPrivateFolder({ folderId, driveKey, maxDepth, owner: driveOwner, withKeys }); + children = await arDrive.listPrivateFolder({ + folderId, + driveKey, + maxDepth, + owner: await wallet.getAddress(), + withKeys + }); } else { const arDrive = cliArDriveAnonymousFactory({ arweave }); - children = await arDrive.listPublicFolder({ folderId, maxDepth }); + children = await arDrive.listPublicFolder({ + folderId, + maxDepth, + // Use wallet for owner if available to improve GQL query performance + owner: await (await parameters.getOptionalWallet())?.getAddress() + }); } const sortedChildren = children.sort((a, b) => alphabeticalOrder(a.path, b.path)) as ( From f57bfce65e258f9ace1830352d20ba241c4c1ad3 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Mon, 3 Jun 2024 15:18:10 -0500 Subject: [PATCH 2/4] chore: use an alpha build PE-6232 --- .pnp.cjs | 10 +++++----- ...m-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip} | Bin 218163 -> 218295 bytes package.json | 4 ++-- yarn.lock | 10 +++++----- 4 files changed, 12 insertions(+), 12 deletions(-) rename .yarn/cache/{ardrive-core-js-npm-2.0.3-7789db1654-9bc648a5b6.zip => ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip} (78%) diff --git a/.pnp.cjs b/.pnp.cjs index bc4bf847..f494e2ae 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -41,7 +41,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/source-map-support", "npm:0.5.4"],\ ["@typescript-eslint/eslint-plugin", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ ["@typescript-eslint/parser", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ - ["ardrive-core-js", "npm:2.0.3"],\ + ["ardrive-core-js", "npm:2.0.4-alpha-1"],\ ["arweave", "npm:1.11.4"],\ ["axios", "npm:0.21.1"],\ ["bn.js", "npm:5.2.1"],\ @@ -2199,7 +2199,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/source-map-support", "npm:0.5.4"],\ ["@typescript-eslint/eslint-plugin", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ ["@typescript-eslint/parser", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ - ["ardrive-core-js", "npm:2.0.3"],\ + ["ardrive-core-js", "npm:2.0.4-alpha-1"],\ ["arweave", "npm:1.11.4"],\ ["axios", "npm:0.21.1"],\ ["bn.js", "npm:5.2.1"],\ @@ -2227,10 +2227,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["ardrive-core-js", [\ - ["npm:2.0.3", {\ - "packageLocation": "./.yarn/cache/ardrive-core-js-npm-2.0.3-7789db1654-9bc648a5b6.zip/node_modules/ardrive-core-js/",\ + ["npm:2.0.4-alpha-1", {\ + "packageLocation": "./.yarn/cache/ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip/node_modules/ardrive-core-js/",\ "packageDependencies": [\ - ["ardrive-core-js", "npm:2.0.3"],\ + ["ardrive-core-js", "npm:2.0.4-alpha-1"],\ ["@alexsasharegan/simple-cache", "npm:3.3.3"],\ ["arbundles", "npm:0.6.19"],\ ["arweave", "npm:1.11.4"],\ diff --git a/.yarn/cache/ardrive-core-js-npm-2.0.3-7789db1654-9bc648a5b6.zip b/.yarn/cache/ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip similarity index 78% rename from .yarn/cache/ardrive-core-js-npm-2.0.3-7789db1654-9bc648a5b6.zip rename to .yarn/cache/ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip index 9b44ece223ad3602f2b7e44bda791c1cb0754fab..84a962417393d769e2d5bbd5ebab35b91758ccd4 100644 GIT binary patch delta 34335 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 L<`Kc;h;aW8DH5G@ diff --git a/package.json b/package.json index 7e0d5526..57f2fa7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ardrive-cli", - "version": "2.0.3", + "version": "2.0.4-alpha-1", "description": "The ArDrive Command Line Interface (CLI is a Node.js application for terminal-based ArDrive workflows. It also offers utility operations for securely interacting with Arweave wallets and inspecting various Arweave blockchain conditions.", "main": "./lib/index.js", "bin": { @@ -8,7 +8,7 @@ }, "types": "./lib/index.d.ts", "dependencies": { - "ardrive-core-js": "2.0.3", + "ardrive-core-js": "2.0.4-alpha-1", "arweave": "1.11.4", "axios": "^0.21.1", "bn.js": "^5.2.1", diff --git a/yarn.lock b/yarn.lock index 04aa041c..b7da9879 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1802,7 +1802,7 @@ __metadata: "@types/source-map-support": ^0 "@typescript-eslint/eslint-plugin": ^6.2.1 "@typescript-eslint/parser": ^6.2.1 - ardrive-core-js: 2.0.3 + ardrive-core-js: 2.0.4-alpha-1 arweave: 1.11.4 axios: ^0.21.1 bn.js: ^5.2.1 @@ -1830,9 +1830,9 @@ __metadata: languageName: unknown linkType: soft -"ardrive-core-js@npm:2.0.3": - version: 2.0.3 - resolution: "ardrive-core-js@npm:2.0.3" +"ardrive-core-js@npm:2.0.4-alpha-1": + version: 2.0.4-alpha-1 + resolution: "ardrive-core-js@npm:2.0.4-alpha-1" dependencies: "@alexsasharegan/simple-cache": ^3.3.3 arbundles: ^0.6.19 @@ -1851,7 +1851,7 @@ __metadata: smartweave: ^0.4.49 utf8: ^3.0.0 uuid: ^8.3.2 - checksum: 9bc648a5b69c6b1b8c40c5634dd56852334e6668873dfa0db23370f5fd22b51067e67d8d62fa4f28fb415bde7eebaa3902834199f21c029429f51601dc49eeb6 + checksum: 1a4ef2cff76f0cf5c0d47ae8fb9d3560767febd7fb97ff178011cbf86907130d372e2f44b58532d4273947c2289c6f24c2df724dc0b66e12277af09e068379ae languageName: node linkType: hard From 3a8bdd0c4c2ca2d0882cdc7b4ccbdbc6f56ba7e1 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Thu, 6 Jun 2024 13:46:15 -0500 Subject: [PATCH 3/4] chore: use 2.0.4 ardrive-core-js PE-6232 --- .pnp.cjs | 10 +++++----- ...re-js-npm-2.0.4-90b47c42f3-cf7f1239f0.zip} | Bin 218295 -> 218291 bytes package.json | 4 ++-- yarn.lock | 10 +++++----- 4 files changed, 12 insertions(+), 12 deletions(-) rename .yarn/cache/{ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip => ardrive-core-js-npm-2.0.4-90b47c42f3-cf7f1239f0.zip} (96%) diff --git a/.pnp.cjs b/.pnp.cjs index f494e2ae..19d972a6 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -41,7 +41,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/source-map-support", "npm:0.5.4"],\ ["@typescript-eslint/eslint-plugin", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ ["@typescript-eslint/parser", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ - ["ardrive-core-js", "npm:2.0.4-alpha-1"],\ + ["ardrive-core-js", "npm:2.0.4"],\ ["arweave", "npm:1.11.4"],\ ["axios", "npm:0.21.1"],\ ["bn.js", "npm:5.2.1"],\ @@ -2199,7 +2199,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { ["@types/source-map-support", "npm:0.5.4"],\ ["@typescript-eslint/eslint-plugin", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ ["@typescript-eslint/parser", "virtual:6f50bb9424c73c7612c66dab5cf8914d8ec79550c84d8ca5e4888e80022682c708b4b5a1c510d282a03285cc9bb19002b477ae70d15882aa995ea1d5d6bf24ab#npm:6.2.1"],\ - ["ardrive-core-js", "npm:2.0.4-alpha-1"],\ + ["ardrive-core-js", "npm:2.0.4"],\ ["arweave", "npm:1.11.4"],\ ["axios", "npm:0.21.1"],\ ["bn.js", "npm:5.2.1"],\ @@ -2227,10 +2227,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { }]\ ]],\ ["ardrive-core-js", [\ - ["npm:2.0.4-alpha-1", {\ - "packageLocation": "./.yarn/cache/ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip/node_modules/ardrive-core-js/",\ + ["npm:2.0.4", {\ + "packageLocation": "./.yarn/cache/ardrive-core-js-npm-2.0.4-90b47c42f3-cf7f1239f0.zip/node_modules/ardrive-core-js/",\ "packageDependencies": [\ - ["ardrive-core-js", "npm:2.0.4-alpha-1"],\ + ["ardrive-core-js", "npm:2.0.4"],\ ["@alexsasharegan/simple-cache", "npm:3.3.3"],\ ["arbundles", "npm:0.6.19"],\ ["arweave", "npm:1.11.4"],\ diff --git a/.yarn/cache/ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip b/.yarn/cache/ardrive-core-js-npm-2.0.4-90b47c42f3-cf7f1239f0.zip similarity index 96% rename from .yarn/cache/ardrive-core-js-npm-2.0.4-alpha-1-b1ac3c17a1-1a4ef2cff7.zip rename to .yarn/cache/ardrive-core-js-npm-2.0.4-90b47c42f3-cf7f1239f0.zip index 84a962417393d769e2d5bbd5ebab35b91758ccd4..df8b5c40d66f6581dbfbc02674ea0324bd005ffc 100644 GIT binary patch delta 2875 zcmY*Zc|4TcA2#O*4KqeWa%H)abu44XzDAZovJ|CFbEiT=DQzbGL~^snk(;6-S`b+) z%!jk?X{vJ zB6TQ+4D5Ki+EuSaT?BbzM@7s%Q8y;${&qDkrwY;nuqw9jt5$wIRk{E_6|L zcfiAaYj#j_{E~|7DGE|iz8(6*eOV!IkG)KO9grAkAa^-w^=QF##IZ?V3GR}+{L6=~ znTS4(vXNh+t8!dTt%({rUYq7HUcRB!hP8B_)?^!FhtB21W09KGfnvwjBZY&d7hpXv zW_6D~ooCRi9%r4$=QKIr*r(HVF~6`NXIrtJ)Yx9q^E^ML5tYAXKYUQ4=dCQrs64XK zihd{lk`3q1sdlubO#PzYCB>5sk(rf`RI^V8wO+D0r_16fIxS{~?&wdXt?l9dmcG4U z*saht{eTFUbD|}onv*N7w0S3Qh!hB?q~p+)AEyv?sBk9Dbah1Gt!QCVfGk_2L^ zOEkO+)F)*9y{we>2f5n4GhHuv^HiQ*`}99C3HH4e^ru$gAA;0;DP9Q=l*&Ir!^A=5 zu?35Cq~vwWJ=+`t4qmQRIaI;nSX>xAVj1WVmY!D8y7thn6Zuiej|3ysRR5Hd(R<9C zCByVGc?Gif3sV!wk9}DCm6l3v%QjR#R4aWZ$opvbo`>G2I^qXjlvg}IxKreRCwdkA z5#z9S9fPkJJ(!hyNJQ3b`0Vk>CDtXc9qxF>)oiQ^&KPV>iz=OT-$Z7(E@|OD>wk4G zF87 zMa`{7Zj3Ldf?eMGM>xdh%bv9-3%J?f`FW06vnd(Njb(jrAWwrz0Fk(=0`P0QS1($$>WzFYJkX&I4c zuI5iHlm2a8o_j(0`hxLi{EO7+GpDy&=|-F0)K?_OO|0ATXIskQcE5-yzd-(z$xTKp z{|IS5^D}rnGQYlmSm8N^XI%;!uIm*Jogl5IX&o*2bp%;b0fqObp)xl+XVD|`BaI@D z8%sq1(|5rO>pUN0`8DESQe197YG!c;qWWY?cJ-cT+GrH}H_Mi?o1Ih#V}lbNm~Gc~ zYw1j`wyq#Y8uamo)PXazgMon>)-Y)8#csECt0{YuZ&2=b zRzluN;8z>kdEl|0#Htl!_Bqn0eS3PBYU*gSmOHe0?{#U@exNaG@G|#N(5wD`={v6O z`pnc^FIW|r()GS;F*{K0J=Fq|p%CfiK##h_298 z2aM>>BJxOy4CfwGB$<=z{g04Xro_^p%HL5Mrj^!amKynG_=JE zJ4rCG6PZakjR%v+88&OkXbl5egHF>Q&;{sk2BZU3%Wn!|D8v#-p@n9+nw2JSAxVHD zOduC&ZpWGmvvzM_hv`1cGI`B8cH$4{;u3_ zz#KGU1}#BQ=r=$P)rSIEw4aH^j+kSy&tWqr6fO%Dkh~dg-FqRN5-|(UMST%K8krhn zmlu(MCMELqI~Us-DP(D9^mWfebrv|X%WlFgbvIrLElWI9k-ak%6h0r%bHD}b7h2+; zZbW=b7y=YxXZRUqALj|@MhB42JAdVj2G`E83o$l>X)4+6jDxudFU@gT*iP6E>Z9mZg3(=A*L-B9?Bzh zl5L?mSbdK0vSE{`S$5c(cb>2Y*kS8X(bteGND8P^Xs#_L`1eTeZoEc37VaGDa0+Y9h9Bi9`46zlg+khtd-&SZKnls!C zD0hinnEH(*gZj4$oZUvTq5mA+ENDI(DH(Z_nV}dVy1yDdE?mxcp za#?KLw@Xh5ve!+Vq8}TR!+MG4l(2E6pgtlj#T{CJ-2y^pgC<-&qkszBao9Jg(H$3? z+>iL~xWirjc*mBRKpC{l11jRDBh>>2gN_%%I80>ZiFf1pAfehbh%e&II$rg}xwH)l zIojx>Cw^SrUJ-}J<@m7(T#gs6V0adB0Ij352MV(A!dD=Dj1Zmn!VZ07crq8f@a=OS zpM@S^)26{gW z`G$z*1FdjjFe9Q{9R-r0G&<-5bs!r;bY(6{3r*=mitw7sp-CU?O+_-kFo4u2{Ar+Z RaX>}6zEDnVjTpoW^M9apSpNV3 delta 2852 zcmY*Zc|6oxA2#Pu3^UnA-bv}r5{hPQg)n4CM(vuH{M#6^*T^ZkZ@2B}=(V zb}hKsN{d&rgtBETr4TKobaT)6mD`;^=JPqvdA{H0`7Y;oEr(K?Ly3$fT?c!~V%qW3 zrIo@$LU+(1GGOs?U6tF#_;<`GvZN5vW*_M#ZCZc)aZhD&_+~jU`-$o?!*Anc#wa(& z==6o_qn{D3X$-l6}!%O)I9zH~VqL zHS2+EhbE?m*A#6$lb9Uh#}AbEzR&P8pzYj{YwTTOd3{89RGt;f1(mb=&IY}X3gnN(Ufk=H8}rdL zs3nSgd(_IH%rzJtiR^yzU~v0TjJ9%ChdI?`EmyQky(2f_5nuSE@xF#sj=%S%)c-F< zX3w8a()#n>M1J6x#6G=@kG+64rtJwy`!zJFnuk9 z{f%qyf!>5o4hhEbig&B=%YS$ z!$#4c<3xqtWu=a#vcJ8&?AA`*CK2|ofA7NeEls*yQ?Z$3uQUIid$dS}?CdMU z*hTv{uDf-ACT4MURN@S;I=d`mgDq63E2KRQPI!C?Y0UhW?N&dgaQ6gvCT~d>b>`Xe zg-N?m%(P}_?bW(0G27{{pGphm=~Ams{N>o<)qb&2-{#YKx2~PFs%n3wePU^{XVnJo z1jSX=X`EQGc_MbxP)P3ER$sHSW8BRvD9wEjKP=PcS{Lt^j!u3Y5v`u4>c_JluaNUm zM4>53lih{P&*bXC19z()-0Twejh=Wl**#h9$brIW=^99nJG=;#9$o}Fia&kKI!Ge5|R{ya;SL?Gy#{D|3Q+@ttBHXCX_|5Re_|0(Dz?fRG;cR zNewkJpcWu$%p-CrT?|SI;>@ zj^ec;6F6!kDSfDd`n9n$svcsRL(L=;cQX2)9*{w!Hc%2B(7|as*8aGXM?vP;@3;U} zHX@=Kx^O)hGA8m~pg=0RX^1)Hx|s7TdtN~V&FW$Up7sL72>I*5wZNMzIB25FTp)|; znF2jmASwP&CxVfrKHLvtHlug?P#aa^Kav)j(1(7&aGLNlfo#Q1n4^Yr@BTN%M@Pj6bB8_l2eu*G5_0VvpF9OPvC;_q>c|-we zv~xYw0GEys9jjcA1C&n+2BnUckx5kKc~A8Sx>{*SdO5y0{V1UucI zL?()&nd73u5W^e>fP2>kLHel89O?qmQi5t-iW8e`!0nMOC&V`$BFUkg4OragmVh(& zm_!jP2E%j<3>#D-DK@suUk1fcgaC1=CXk||ST~~@2oqK(EwK11B*})}psI$@o2|j) zD8%7l;Py}1>C5qZ#RJy@Ywr>8ZxNK*Smd&PXO6gp3tNBAR}ZscHJruTxgIU#FXi^gSye8TAX;rymoDfi>@b}8oPh1^ zpfMPFK?p3j$8YYA9k%}D)cv9adA;u(*!5&3uz&`z{Qmf&deh;M0bW-a488U?dn{C0-d1& zbbt^Qi;>h2AL1`G_AZIuJ3~5@7A8n`!cZKocYzx4g)l_SLd-nn0u>f`EP(iv_czAI BW2*oF diff --git a/package.json b/package.json index 57f2fa7f..27f49188 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ardrive-cli", - "version": "2.0.4-alpha-1", + "version": "2.0.4", "description": "The ArDrive Command Line Interface (CLI is a Node.js application for terminal-based ArDrive workflows. It also offers utility operations for securely interacting with Arweave wallets and inspecting various Arweave blockchain conditions.", "main": "./lib/index.js", "bin": { @@ -8,7 +8,7 @@ }, "types": "./lib/index.d.ts", "dependencies": { - "ardrive-core-js": "2.0.4-alpha-1", + "ardrive-core-js": "2.0.4", "arweave": "1.11.4", "axios": "^0.21.1", "bn.js": "^5.2.1", diff --git a/yarn.lock b/yarn.lock index b7da9879..28594e6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1802,7 +1802,7 @@ __metadata: "@types/source-map-support": ^0 "@typescript-eslint/eslint-plugin": ^6.2.1 "@typescript-eslint/parser": ^6.2.1 - ardrive-core-js: 2.0.4-alpha-1 + ardrive-core-js: 2.0.4 arweave: 1.11.4 axios: ^0.21.1 bn.js: ^5.2.1 @@ -1830,9 +1830,9 @@ __metadata: languageName: unknown linkType: soft -"ardrive-core-js@npm:2.0.4-alpha-1": - version: 2.0.4-alpha-1 - resolution: "ardrive-core-js@npm:2.0.4-alpha-1" +"ardrive-core-js@npm:2.0.4": + version: 2.0.4 + resolution: "ardrive-core-js@npm:2.0.4" dependencies: "@alexsasharegan/simple-cache": ^3.3.3 arbundles: ^0.6.19 @@ -1851,7 +1851,7 @@ __metadata: smartweave: ^0.4.49 utf8: ^3.0.0 uuid: ^8.3.2 - checksum: 1a4ef2cff76f0cf5c0d47ae8fb9d3560767febd7fb97ff178011cbf86907130d372e2f44b58532d4273947c2289c6f24c2df724dc0b66e12277af09e068379ae + checksum: cf7f1239f0c7567d04956f01ee29cc66cc70f6f8ec2998806645d26f5b17c0ed95f0989eac52b3a1a58368a1464d8e55951925c15be5a099c0d77c2d2d775305 languageName: node linkType: hard From a7b8e8d7309daf47729dd0a4d820f85c294a7fe6 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Thu, 6 Jun 2024 14:17:11 -0500 Subject: [PATCH 4/4] Revert "feat(gql): use wallet for `owner_address` when available for public list commands PE-6232" This reverts commit bd21f97973915f350b10afea0185a7aec91d2a4e. --- src/commands/list_drive.ts | 16 ++++++---------- src/commands/list_folder.ts | 18 +++++------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/commands/list_drive.ts b/src/commands/list_drive.ts index f498b3b4..2cb5592f 100644 --- a/src/commands/list_drive.ts +++ b/src/commands/list_drive.ts @@ -42,26 +42,22 @@ new CLICommand({ const rootFolderId = drive.rootFolderId; const withKeys = await parameters.getParameterValue(WithKeysParameter, (value) => !!value); + // We have the drive id from deriving a key, we can derive the owner + const driveOwner = await arDrive.getOwnerForDriveId(driveId); + children = await arDrive.listPrivateFolder({ folderId: rootFolderId, driveKey, maxDepth, includeRoot: true, - owner: await wallet.getAddress(), + owner: driveOwner, withKeys }); } else { const arDrive = cliArDriveAnonymousFactory({ arweave }); - - // Use wallet for owner if available to improve GQL query performance - const owner = (await (await parameters.getOptionalWallet())?.getAddress()) ?? undefined; - - const drive = await arDrive.getPublicDrive({ - driveId, - owner - }); + const drive = await arDrive.getPublicDrive({ driveId }); const rootFolderId = drive.rootFolderId; - children = await arDrive.listPublicFolder({ folderId: rootFolderId, maxDepth, includeRoot: true, owner }); + children = await arDrive.listPublicFolder({ folderId: rootFolderId, maxDepth, includeRoot: true }); } const sortedChildren = children.sort((a, b) => alphabeticalOrder(a.path, b.path)) as ( diff --git a/src/commands/list_folder.ts b/src/commands/list_folder.ts index fefd98a1..729f6bef 100644 --- a/src/commands/list_folder.ts +++ b/src/commands/list_folder.ts @@ -48,21 +48,13 @@ new CLICommand({ const driveKey = await parameters.getDriveKey({ driveId }); const withKeys = await parameters.getParameterValue(WithKeysParameter, (value) => !!value); - children = await arDrive.listPrivateFolder({ - folderId, - driveKey, - maxDepth, - owner: await wallet.getAddress(), - withKeys - }); + // We have the drive id from deriving a key, we can derive the owner + const driveOwner = await arDrive.getOwnerForDriveId(driveId); + + children = await arDrive.listPrivateFolder({ folderId, driveKey, maxDepth, owner: driveOwner, withKeys }); } else { const arDrive = cliArDriveAnonymousFactory({ arweave }); - children = await arDrive.listPublicFolder({ - folderId, - maxDepth, - // Use wallet for owner if available to improve GQL query performance - owner: await (await parameters.getOptionalWallet())?.getAddress() - }); + children = await arDrive.listPublicFolder({ folderId, maxDepth }); } const sortedChildren = children.sort((a, b) => alphabeticalOrder(a.path, b.path)) as (