@arkiv-network/sdk 0.4.0 → 0.4.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +147 -27
- package/dist/{entity-Bsvmepwv.d.cts → entity-BNSCqNpu.d.cts} +2 -2
- package/dist/{entity-Bsvmepwv.d.cts.map → entity-BNSCqNpu.d.cts.map} +1 -1
- package/dist/{entity-ChTOBhd6.d.ts → entity-CWj4qVCX.d.ts} +2 -2
- package/dist/{entity-ChTOBhd6.d.ts.map → entity-CWj4qVCX.d.ts.map} +1 -1
- package/dist/index.cjs +14 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/query/index.d.cts +2 -2
- package/dist/query/index.d.ts +2 -2
- package/dist/{queryBuilder-DI251Jjp.d.ts → queryBuilder-CXcMv0Uc.d.ts} +3 -3
- package/dist/{queryBuilder-DI251Jjp.d.ts.map → queryBuilder-CXcMv0Uc.d.ts.map} +1 -1
- package/dist/{queryBuilder-CNRqyot6.d.cts → queryBuilder-CvAx57pq.d.cts} +3 -3
- package/dist/{queryBuilder-CNRqyot6.d.cts.map → queryBuilder-CvAx57pq.d.cts.map} +1 -1
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/public/getEntity.ts +19 -3
- package/src/types/rpcSchema.ts +1 -1
package/README.md
CHANGED
|
@@ -8,6 +8,8 @@ The Arkiv SDK base strongly on Viem (Viem)[https://github.com/wevm/viem] library
|
|
|
8
8
|
```bash
|
|
9
9
|
npm install @arkiv-network/sdk
|
|
10
10
|
# or
|
|
11
|
+
pnpm install @arkiv-network/sdk
|
|
12
|
+
# or
|
|
11
13
|
bun add @arkiv-network/sdk
|
|
12
14
|
# or
|
|
13
15
|
yarn add @arkiv-network/sdk
|
|
@@ -15,29 +17,99 @@ yarn add @arkiv-network/sdk
|
|
|
15
17
|
|
|
16
18
|
## Usage
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
Below is a tutorial to help you create simple scripts that use Arkiv to query and write data.
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
### Prerequisites
|
|
23
|
+
|
|
24
|
+
For this tutorial, we recommend using Node.js version 22.10.0 or newer (see [nodejs.org](https://nodejs.org)).
|
|
25
|
+
Alternatively, you can use [`bun`](https://bun.sh/), a JavaScript/TypeScript runtime and package manager that natively supports TypeScript without transpilation.
|
|
26
|
+
|
|
27
|
+
### Project Setup
|
|
28
|
+
|
|
29
|
+
Create a new directory and navigate into it:
|
|
30
|
+
```bash
|
|
31
|
+
mkdir arkiv-sample
|
|
32
|
+
cd arkiv-sample
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Create an empty `index.ts` file:
|
|
36
|
+
```bash
|
|
37
|
+
touch index.ts
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Initialize a new JavaScript/TypeScript project:
|
|
41
|
+
```bash
|
|
42
|
+
npm init
|
|
43
|
+
```
|
|
44
|
+
You can accept all the default options by pressing `Enter` at each prompt.
|
|
45
|
+
After this step, a `package.json` file will be created with content similar to:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"name": "arkiv-sample",
|
|
50
|
+
"version": "1.0.0",
|
|
51
|
+
"description": "",
|
|
52
|
+
"license": "ISC",
|
|
53
|
+
"author": "",
|
|
54
|
+
"type": "commonjs",
|
|
55
|
+
"main": "index.js",
|
|
56
|
+
"scripts": {
|
|
57
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Modify the `"main"` entry to `"index.ts"` and set `"type"` to `"module"` so your `package.json` looks like this:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"name": "arkiv-sample",
|
|
67
|
+
"version": "1.0.0",
|
|
68
|
+
"description": "",
|
|
69
|
+
"license": "ISC",
|
|
70
|
+
"author": "",
|
|
71
|
+
"type": "module",
|
|
72
|
+
"main": "index.ts",
|
|
73
|
+
"scripts": {
|
|
74
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Install `@arkiv-network/sdk` using your preferred package manager:
|
|
80
|
+
```bash
|
|
81
|
+
npm install @arkiv-network/sdk
|
|
82
|
+
```
|
|
83
|
+
This command will update your `package.json` with a section like:
|
|
84
|
+
```json
|
|
85
|
+
"dependencies": {
|
|
86
|
+
"@arkiv-network/sdk": "^0.4.0"
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
I will also create a `node_modules` directory with all dependencies installed.
|
|
90
|
+
|
|
91
|
+
### Public Client Example (Query Data)
|
|
24
92
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
93
|
+
To query data from Arkiv, use the following sample code in `index.ts`:
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const publicClient = createPublicClient({
|
|
97
|
+
chain: mendoza, // "mendoza" is Arkiv's testnet, used during hackathons at DevConnect 2025 in Buenos Aires
|
|
28
98
|
transport: http(),
|
|
29
99
|
});
|
|
30
100
|
|
|
31
101
|
// Get chain ID
|
|
32
|
-
const chainId = await
|
|
102
|
+
const chainId = await publicClient.getChainId();
|
|
103
|
+
console.log('Chain ID:', chainId);
|
|
33
104
|
|
|
34
105
|
// Get entity by key
|
|
35
|
-
const entity = await
|
|
106
|
+
const entity = await publicClient.getEntity('0xcadb830a3414251d65e5c92cd28ecb648d9e73d85f2203eff631839d5421f9d7');
|
|
107
|
+
console.log('Entity:', entity);
|
|
36
108
|
|
|
37
109
|
// Build and execute a query using QueryBuilder
|
|
38
|
-
const query =
|
|
110
|
+
const query = publicClient.buildQuery();
|
|
39
111
|
const result = await query
|
|
40
|
-
.where(eq('
|
|
112
|
+
.where(eq('category', 'documentation'))
|
|
41
113
|
.ownedBy('0x6186B0DbA9652262942d5A465d49686eb560834C')
|
|
42
114
|
.withAttributes(true)
|
|
43
115
|
.withPayload(true)
|
|
@@ -51,24 +123,62 @@ if (result.hasNextPage()) {
|
|
|
51
123
|
await result.next();
|
|
52
124
|
console.log('Next page:', result.entities);
|
|
53
125
|
}
|
|
54
|
-
|
|
55
|
-
// Or use raw query string
|
|
56
|
-
const rawQueryResult = await client.query('testKey = "testValue" && $owner = "0x6186B0DbA9652262942d5A465d49686eb560834C"');
|
|
57
126
|
```
|
|
58
127
|
|
|
59
|
-
###
|
|
128
|
+
### Running the Example
|
|
129
|
+
|
|
130
|
+
You have several options to run your TypeScript sample:
|
|
131
|
+
|
|
132
|
+
- **With Node.js (using experimental TypeScript support):**
|
|
133
|
+
```bash
|
|
134
|
+
node --experimental-strip-types index.ts
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- **With Bun (native TypeScript support):**
|
|
138
|
+
```bash
|
|
139
|
+
bun index.ts
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
- **Classic Node.js (using transpilation to JavaScript):**
|
|
143
|
+
|
|
144
|
+
1. Install TypeScript if you haven't already:
|
|
145
|
+
```bash
|
|
146
|
+
npm install typescript
|
|
147
|
+
```
|
|
148
|
+
2. Initialize a TypeScript config with default settings:
|
|
149
|
+
```bash
|
|
150
|
+
npx tsc --init
|
|
151
|
+
```
|
|
152
|
+
This will create a `tsconfig.json` file. You do not need to change its contents.
|
|
153
|
+
3. Transpile your `.ts` files into `.js`:
|
|
154
|
+
```bash
|
|
155
|
+
npx tsc --outDir dist
|
|
156
|
+
```
|
|
157
|
+
This creates a `dist` directory containing `index.js` (the transpiled code), along with corresponding type declaration and source map files.
|
|
158
|
+
4. Run the transpiled script:
|
|
159
|
+
```bash
|
|
160
|
+
node dist/index.js
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Wallet Client Example (Create Entity)
|
|
164
|
+
|
|
165
|
+
Now, let's add storage functionality.
|
|
166
|
+
First, import the required modules at the top of your `index.ts`:
|
|
60
167
|
|
|
61
168
|
```typescript
|
|
62
|
-
import {
|
|
63
|
-
import { mendoza } from '@arkiv-network/sdk/chains';
|
|
64
|
-
import { privateKeyToAccount } from '@arkiv-network/sdk/accounts';
|
|
169
|
+
import { createWalletClient } from '@arkiv-network/sdk';
|
|
65
170
|
import { ExpirationTime, jsonToPayload } from '@arkiv-network/sdk/utils';
|
|
171
|
+
import { privateKeyToAccount } from '@arkiv-network/sdk/accounts';
|
|
172
|
+
```
|
|
66
173
|
|
|
174
|
+
Then, add the following example below your query code to create an entity:
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
67
177
|
// Create a wallet client with an account
|
|
68
178
|
const client = createWalletClient({
|
|
69
179
|
chain: mendoza,
|
|
70
180
|
transport: http(),
|
|
71
|
-
account: privateKeyToAccount('0x...'), //
|
|
181
|
+
account: privateKeyToAccount('0x...'), // Replace with your private key
|
|
72
182
|
});
|
|
73
183
|
|
|
74
184
|
// Create an entity
|
|
@@ -77,6 +187,7 @@ const { entityKey, txHash } = await client.createEntity({
|
|
|
77
187
|
entity: {
|
|
78
188
|
entityType: 'document',
|
|
79
189
|
entityId: 'doc-123',
|
|
190
|
+
entityContent: "Hello from DevConnect Hackathon 2025! Arkiv Mendoza chain wishes you all the best!"
|
|
80
191
|
},
|
|
81
192
|
}),
|
|
82
193
|
contentType: 'application/json',
|
|
@@ -90,15 +201,24 @@ const { entityKey, txHash } = await client.createEntity({
|
|
|
90
201
|
console.log('Created entity:', entityKey);
|
|
91
202
|
console.log('Transaction hash:', txHash);
|
|
92
203
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
chain: mendoza,
|
|
96
|
-
transport: http()
|
|
97
|
-
});
|
|
98
|
-
const entity = await publicClient.getEntity(entityKey);
|
|
99
|
-
console.log('Entity:', entity);
|
|
204
|
+
const newEntity = await publicClient.getEntity(entityKey);
|
|
205
|
+
console.log('Entity:', newEntity);
|
|
100
206
|
```
|
|
101
207
|
|
|
208
|
+
**Note:**
|
|
209
|
+
You must provide your own private key with a minimum balance on the Arkiv L3 network.
|
|
210
|
+
You can generate a private key using any tool, for example: https://vanity-eth.tk/
|
|
211
|
+
Once you have a key, you can paste it into the example above and fund its address using the Arkiv Mendoza testnet faucet at:
|
|
212
|
+
https://mendoza.hoodi.arkiv.network/faucet/
|
|
213
|
+
|
|
214
|
+
For quick testing, you may use this example key:
|
|
215
|
+
```
|
|
216
|
+
0x3d05798f7d11bb1c10b83fed8d3b4d76570c31cd66c8e0a8d8d991434c6d7a5e
|
|
217
|
+
```
|
|
218
|
+
However, funds may not always be available for this key.
|
|
219
|
+
|
|
220
|
+
The full example code can be found in the `sample` directory of this repository.
|
|
221
|
+
|
|
102
222
|
## Package Distribution
|
|
103
223
|
|
|
104
224
|
This package supports multiple module formats for maximum compatibility:
|
|
@@ -51,7 +51,7 @@ type ArkivRpcSchema = [{
|
|
|
51
51
|
Method: "arkiv_query";
|
|
52
52
|
Parameters?: [query: string, queryOptions?: RpcQueryOptions];
|
|
53
53
|
ReturnType: {
|
|
54
|
-
data: [
|
|
54
|
+
data: RpcEntity[];
|
|
55
55
|
blockNumber: bigint;
|
|
56
56
|
cursor: string;
|
|
57
57
|
};
|
|
@@ -251,4 +251,4 @@ declare class Entity {
|
|
|
251
251
|
}
|
|
252
252
|
//#endregion
|
|
253
253
|
export { ArkivRpcSchema as _, MutateEntitiesReturnType as a, RpcQueryOptions as b, ExtendEntityParameters as c, DeleteEntityReturnType as d, CreateEntityParameters as f, ArkivClient as g, ChangeOwnershipReturnType as h, MutateEntitiesParameters as i, ExtendEntityReturnType as l, ChangeOwnershipParameters as m, TxParams as n, UpdateEntityParameters as o, CreateEntityReturnType as p, Attribute as r, UpdateEntityReturnType as s, Entity as t, DeleteEntityParameters as u, RpcEntity as v, MimeType as x, RpcIncludeData as y };
|
|
254
|
-
//# sourceMappingURL=entity-
|
|
254
|
+
//# sourceMappingURL=entity-BNSCqNpu.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-
|
|
1
|
+
{"version":3,"file":"entity-BNSCqNpu.d.cts","names":[],"sources":["../src/types/mimeTypes.ts","../src/types/rpcSchema.ts","../src/clients/baseClient.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/updateEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/types/attributes.ts","../src/types/txParams.ts","../src/types/entity.ts"],"sourcesContent":[],"mappings":";;;KAAY,QAAA;;;KCGA,SAAA;EDHA,GAAA,ECIL,GDJK;eCKG;;;EAFH,cAAS,EAAA,MAAA;EACd,mBAAA,EAAA,MAAA;EACQ,uBAAA,EAAA,MAAA;EAON,2BAAA,EAAA,MAAA;EAAG,KAAA,EAAH,GAAG;EAKA,gBAAA,CAAA,EAAA,CAAA;IAMA,GAAA,EAAA,MAAA;IAQA,KAAA,EAAA,MAAc;EAad,CAAA,CAAA;;;;ECzCA,CAAA,CAAA;CACQ;AAAY,KDapB,mBAAA,GCboB;EAChB,IAAA,EAAA,MAAA;EAAoB,IAAA,EAAA,QAAA,GAAA,SAAA;EACT,IAAA,EAAA,OAAA;CAAsB;AAC7B,KDgBR,eAAA,GChBQ;EAAwB,OAAA,CAAA,EAAA,MAAA;EACjC,WAAA,CAAA,EDiBK,cCjBL;EAAW,OAAA,CAAA,EDkBV,mBClBU,EAAA;EAAO,cAAA,CAAA,EAAA,MAAA;EAAkB,MAAA,CAAA,EAAA,MAAA;CAA3C;AAAM,KDuBE,cAAA,GCvBF;;;;ECIE,WAAA,EAAA,OAAA;EAUA,UAAA,EAAA,OAAA;;;;ECPA,uBAAA,EAAsB,OAAA;EACvB,2BAAA,EAAA,OAAA;CACG;AACC,KH0BH,cAAA,GG1BG,CAAQ;EASX,MAAA,EAAA,aAAsB;8CHoBc;;UAEpC;IIrCA,WAAA,EAAA,MAAsB;IAStB,MAAA,EAAA,MAAA;;;ECRA,MAAA,EAAA,sBAAsB;EAUtB,UAAA,CAAA,EAAA,EAAA;;;;ICPA,QAAA,EAAA,MAAA;EACC,CAAA;AACF,CAAA,EACG;EACC,MAAA,EAAA,sBAAA;EAAQ,UAAA,CAAA,EAAA,EAAA;EASX,UAAA,EAAA,MAAA;;;;KL1BA,8BACQ,YAAY,yBAChB,oBAAoB,4CACT,sBAAsB,uCAC7B,wBAAwB,kBACxC,OAAO,WAAW,OAAO,kBAAkB;;;AFR/C;;;;ACGY,KESA,yBAAA,GFTS;EACd,SAAA,EESM,GFTN;EACQ,QAAA,EESH,GFTG;CAON;;AAKT;AAMA;AAQA;AAaA;KEtBY,yBAAA;aACC;;ADpBb,CAAA;;;AFHA;;;;ACGA;;;AASS,KGGG,sBAAA,GHHH;EAAG,OAAA,EGID,UHJC;EAKA,UAAA,EGAE,SHAF,EAAmB;EAMnB,WAAA,EGLG,QHKY;EAQf,SAAA,EAAA,MAAc;AAa1B,CAAA;;;;ACzCA;;AACgC,KEuBpB,sBAAA,GFvBoB;EAChB,SAAA,EEuBH,GFvBG;EAAoB,MAAA,EEwB1B,IFxB0B;CACT;;;AFN3B;;;;ACGY,KISA,sBAAA,GJTS;EACd,SAAA,EISM,GJTN;CACQ;;;AAYf;AAMA;AAQA;AAaY,KIvBA,sBAAA,GJ0BoC;aIzBnC;UACH;;;;ALvBV;;;;ACGA;AACO,KKSK,sBAAA,GLTL;EACQ,SAAA,EKSF,GLTE;EAON,SAAA,EAAA,MAAA;CAAG;AAKZ;AAMA;AAQA;AAaA;;KKrBY,sBAAA;aACC;EJrBD,MAAA,EIsBF,IJtBE;CACQ;;;AFJpB;;;;ACGA;;;;AASY,KMIA,sBAAA,GNJA;EAKA,SAAA,EMAC,GNAD;EAMA,OAAA,EMLD,UNKgB;EAQf,UAAA,EMZE,SNYY,EAAA;EAad,WAAA,EMxBG,QNwBW;;;;ACzC1B;;;;AAEoC,KKwBxB,sBAAA,GLxBwB;EACT,SAAA,EKwBd,GLxBc;EAAsB,MAAA,EKyBvC,ILzBuC;CAC7B;;;;;;;ADUpB;AAMA;AAQA;AAaY,KOvBA,wBAAA,GP0BoC;YOzBpC;YACA;YACA;ENrBA,UAAA,CAAA,EMsBG,sBNtBQ,EAAA;EACH,gBAAA,CAAA,EMsBC,yBNtBD,EAAA;CAAY;;;;;;;;;;AAIe,KMiEnC,wBAAA,GNjEmC;EAA3C,MAAA,EMkEM,INlEN;EAAM,eAAA,EMmES,GNnET,EAAA;mBMoES;mBACA;oBACC;ELlER,gBAAA,EKmEQ,GLnER,EAAA;AAUZ,CAAA;;;KMtBY,SAAA;;;ATAZ,CAAA;;;KUAY,QAAA;;;EVAA,QAAA,CAAA,EAAQ,MAAA;;;;ECGR,GAAA,CAAA,EAAA,MAAS;EACd,KAAA,CAAA,EAAA,MAAA;EACQ,YAAA,CAAA,EAAA,MAAA;EAON,oBAAA,CAAA,EAAA,MAAA;EAAG,QAAA,CAAA,EAAA,KAAA;AAKZ,CAAA;;;ADjBY,cWIC,MAAA,CXJO;OWKb;eACQ;SACN;EVJG,cAAS,EAAA,MAAA,GAAA,SAAA;EACd,cAAA,EAAA,MAAA,GAAA,SAAA;EACQ,mBAAA,EAAA,MAAA,GAAA,SAAA;EAON,uBAAA,EAAA,MAAA,GAAA,SAAA;EAAG,2BAAA,EAAA,MAAA,GAAA,SAAA;EAKA,OAAA,EUJD,UVIC,GAAmB,SAAA;EAMnB,UAAA,EUTE,SVSa,EAAA;EAQf,WAAA,CAAA,GAAA,EUdH,GVciB,EAAA,WAAA,EUbT,QVaS,GAAA,SAAA,EAAA,KAAA,EUZf,GVYe,GAAA,SAAA,EAAA,cAAA,EAAA,MAAA,GAAA,SAAA,EAAA,cAAA,EAAA,MAAA,GAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,GAAA,SAAA,EAAA,uBAAA,EAAA,MAAA,GAAA,SAAA,EAAA,2BAAA,EAAA,MAAA,GAAA,SAAA,EAAA,OAAA,EUNb,UVMa,GAAA,SAAA,EAAA,UAAA,EULV,SVKU,EAAA;EAad,MAAA,CAAA,CAAA,EAAA,MAAA"}
|
|
@@ -51,7 +51,7 @@ type ArkivRpcSchema = [{
|
|
|
51
51
|
Method: "arkiv_query";
|
|
52
52
|
Parameters?: [query: string, queryOptions?: RpcQueryOptions];
|
|
53
53
|
ReturnType: {
|
|
54
|
-
data: [
|
|
54
|
+
data: RpcEntity[];
|
|
55
55
|
blockNumber: bigint;
|
|
56
56
|
cursor: string;
|
|
57
57
|
};
|
|
@@ -251,4 +251,4 @@ declare class Entity {
|
|
|
251
251
|
}
|
|
252
252
|
//#endregion
|
|
253
253
|
export { ArkivRpcSchema as _, MutateEntitiesReturnType as a, RpcQueryOptions as b, ExtendEntityParameters as c, DeleteEntityReturnType as d, CreateEntityParameters as f, ArkivClient as g, ChangeOwnershipReturnType as h, MutateEntitiesParameters as i, ExtendEntityReturnType as l, ChangeOwnershipParameters as m, TxParams as n, UpdateEntityParameters as o, CreateEntityReturnType as p, Attribute as r, UpdateEntityReturnType as s, Entity as t, DeleteEntityParameters as u, RpcEntity as v, MimeType as x, RpcIncludeData as y };
|
|
254
|
-
//# sourceMappingURL=entity-
|
|
254
|
+
//# sourceMappingURL=entity-CWj4qVCX.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-
|
|
1
|
+
{"version":3,"file":"entity-CWj4qVCX.d.ts","names":[],"sources":["../src/types/mimeTypes.ts","../src/types/rpcSchema.ts","../src/clients/baseClient.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/updateEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/types/attributes.ts","../src/types/txParams.ts","../src/types/entity.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -31,10 +31,21 @@ async function getEntity(client, key) {
|
|
|
31
31
|
const hexKey = (0, viem.bytesToHex)(bytes);
|
|
32
32
|
const result = await client.request({
|
|
33
33
|
method: "arkiv_query",
|
|
34
|
-
params: [`$key = ${hexKey}
|
|
34
|
+
params: [`$key = ${hexKey}`, { includeData: {
|
|
35
|
+
key: true,
|
|
36
|
+
attributes: true,
|
|
37
|
+
payload: true,
|
|
38
|
+
contentType: true,
|
|
39
|
+
expiration: true,
|
|
40
|
+
owner: true,
|
|
41
|
+
createdAtBlock: true,
|
|
42
|
+
lastModifiedAtBlock: true,
|
|
43
|
+
transactionIndexInBlock: true,
|
|
44
|
+
operationIndexInTransaction: true
|
|
45
|
+
} }]
|
|
35
46
|
});
|
|
36
|
-
if (!result.data) throw new require_queryBuilder.NoEntityFoundError();
|
|
37
|
-
return require_queryBuilder.entityFromRpcResult(result.data[0]);
|
|
47
|
+
if (!result.data.length) throw new require_queryBuilder.NoEntityFoundError();
|
|
48
|
+
return await require_queryBuilder.entityFromRpcResult(result.data[0]);
|
|
38
49
|
}
|
|
39
50
|
|
|
40
51
|
//#endregion
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, g as ArkivClient, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "./entity-
|
|
2
|
-
import { t as QueryBuilder } from "./queryBuilder-
|
|
1
|
+
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, g as ArkivClient, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "./entity-BNSCqNpu.cjs";
|
|
2
|
+
import { t as QueryBuilder } from "./queryBuilder-CvAx57pq.cjs";
|
|
3
3
|
import { Account, Address, Chain, Client, Hex, ParseAccount, Prettify, PublicActions, PublicClientConfig, RpcSchema, Transport, WalletActions, WalletClientConfig } from "viem";
|
|
4
4
|
export * from "viem";
|
|
5
5
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, g as ArkivClient, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "./entity-
|
|
2
|
-
import { t as QueryBuilder } from "./queryBuilder-
|
|
1
|
+
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, g as ArkivClient, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "./entity-CWj4qVCX.js";
|
|
2
|
+
import { t as QueryBuilder } from "./queryBuilder-CXcMv0Uc.js";
|
|
3
3
|
import { Account, Address, Chain, Client, Hex, ParseAccount, Prettify, PublicActions, PublicClientConfig, RpcSchema, Transport, WalletActions, WalletClientConfig } from "viem";
|
|
4
4
|
export * from "viem";
|
|
5
5
|
|
package/dist/index.js
CHANGED
|
@@ -33,10 +33,21 @@ async function getEntity(client, key) {
|
|
|
33
33
|
const hexKey = bytesToHex(bytes);
|
|
34
34
|
const result = await client.request({
|
|
35
35
|
method: "arkiv_query",
|
|
36
|
-
params: [`$key = ${hexKey}
|
|
36
|
+
params: [`$key = ${hexKey}`, { includeData: {
|
|
37
|
+
key: true,
|
|
38
|
+
attributes: true,
|
|
39
|
+
payload: true,
|
|
40
|
+
contentType: true,
|
|
41
|
+
expiration: true,
|
|
42
|
+
owner: true,
|
|
43
|
+
createdAtBlock: true,
|
|
44
|
+
lastModifiedAtBlock: true,
|
|
45
|
+
transactionIndexInBlock: true,
|
|
46
|
+
operationIndexInTransaction: true
|
|
47
|
+
} }]
|
|
37
48
|
});
|
|
38
|
-
if (!result.data) throw new NoEntityFoundError();
|
|
39
|
-
return entityFromRpcResult(result.data[0]);
|
|
49
|
+
if (!result.data.length) throw new NoEntityFoundError();
|
|
50
|
+
return await entityFromRpcResult(result.data[0]);
|
|
40
51
|
}
|
|
41
52
|
|
|
42
53
|
//#endregion
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["logger","bytes: Uint8Array","query","logger","logger","zlib: typeof import(\"zlib\") | null","brotli: BrotliWasmType | null","logger","logger","logger","logger","logger","logger","createdEntities: Hex[]","updatedEntities: Hex[]","deletedEntities: Hex[]","extendedEntities: Hex[]","ownershipChanges: Hex[]"],"sources":["../src/actions/public/getBlockTiming.ts","../src/actions/public/getEntity.ts","../src/actions/public/getEntityCount.ts","../src/actions/public/query.ts","../src/actions/public/subscribeEntityEvents.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/utils/compression.ts","../src/utils/arkivTransactions.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/actions/wallet/updateEntity.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { ArkivClient } from \"../../clients/baseClient\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:public:get-block-timing\")\n\nexport type GetBlockTimingReturnType = {\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n}\n\nexport async function getBlockTiming(client: ArkivClient) {\n const blockTiming = await client.request({\n method: \"arkiv_getBlockTiming\",\n params: [],\n })\n logger(\"Block timing %o\", blockTiming)\n return {\n currentBlock: blockTiming.current_block,\n currentBlockTime: blockTiming.current_block_time,\n blockDuration: blockTiming.duration,\n }\n}\n","import { bytesToHex, type Hex, hexToBytes } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport { NoEntityFoundError } from \"../../query/errors\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function getEntity(client: ArkivClient, key: Hex) {\n // Normalize the key into bytes\n let bytes: Uint8Array\n try {\n bytes = hexToBytes(key)\n } catch {\n throw new Error(`Invalid key format: ${key}. Key must be a valid hex string.`)\n }\n\n if (bytes.length !== 32) {\n throw new Error(\n `Invalid key length: ${bytes.length} bytes. Key must be 32 bytes (64 hex characters) long.`,\n )\n }\n\n const hexKey = bytesToHex(bytes)\n\n const result = await client.request({\n method: \"arkiv_query\",\n params: [`$key = ${hexKey}`],\n })\n\n if (!result.data) {\n throw new NoEntityFoundError()\n }\n\n return entityFromRpcResult(result.data[0])\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\n\nexport async function getEntityCount(client: ArkivClient) {\n const count = await client.request({\n method: \"arkiv_getEntityCount\",\n params: [],\n })\n\n return count\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function query(client: ArkivClient, query: string) {\n const result = await client.request({\n method: \"arkiv_query\",\n params: [query],\n })\n\n const entities = await Promise.all(result.data.map((entity) => entityFromRpcResult(entity)))\n\n return entities\n}\n","import { decodeEventLog, parseAbi, toHex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { PublicArkivClient } from \"../../clients/createPublicClient\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityOwnerChangedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:public:subscribe-entity-events\")\n\nexport const arkivABI = parseAbi([\n \"event ArkivEntityCreated(uint256 indexed entityKey, address indexed ownerAddress, uint256 expirationBlock, uint256 cost)\",\n \"event ArkivEntityUpdated(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityOwnerChanged(uint256 indexed entityKey, address indexed oldOwnerAddress, address indexed newOwnerAddress)\",\n])\n\nexport async function subscribeEntityEvents(\n client: ArkivClient,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n onEntityOwnerChanged,\n }: {\n onError: ((error: Error) => void) | undefined\n onEntityCreated?: ((event: OnEntityCreatedEvent) => void) | undefined\n onEntityUpdated?: ((event: OnEntityUpdatedEvent) => void) | undefined\n onEntityDeleted?: ((event: OnEntityDeletedEvent) => void) | undefined\n onEntityExpired?: ((event: OnEntityExpiredEvent) => void) | undefined\n onEntityExpiresInExtended?: ((event: OnEntityExpiresInExtendedEvent) => void) | undefined\n onEntityOwnerChanged?: ((event: OnEntityOwnerChangedEvent) => void) | undefined\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n): Promise<() => void> {\n const unsubscribe = (client as PublicArkivClient).watchEvent({\n pollingInterval: pollingInterval ?? 1000,\n fromBlock: fromBlock ?? 0n,\n events: arkivABI,\n onLogs: (logs) => {\n logger(\"logs from subscribeEntityEvents %o\", logs)\n for (const log of logs) {\n const event = decodeEventLog({\n abi: arkivABI,\n topics: log.topics as [string, string, string] | [string, string, string, string],\n data: log.data,\n })\n logger(\"event from subscribeEntityEvents %o\", event)\n switch (event.eventName) {\n case \"ArkivEntityCreated\":\n onEntityCreated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n expirationBlock: Number(event.args.expirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityUpdated\":\n onEntityUpdated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityDeleted\":\n onEntityDeleted?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityBTLExtended\":\n onEntityExpiresInExtended?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityExpired\":\n onEntityExpired?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityOwnerChanged\":\n onEntityOwnerChanged?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n oldOwner: event.args.oldOwnerAddress,\n newOwner: event.args.newOwnerAddress,\n })\n break\n default:\n console.warn(\"unknown event from subscribeEntityEvents\", event)\n break\n }\n }\n },\n onError: (error) => {\n console.error(\"error from subscribeEntityEvents\", error)\n onError?.(error)\n },\n })\n\n return unsubscribe\n}\n","import type { Account, Chain, Client, Hex, PublicActions, Transport } from \"viem\"\nimport { getBlockTiming } from \"../../actions/public/getBlockTiming\"\nimport { getEntity } from \"../../actions/public/getEntity\"\nimport { getEntityCount } from \"../../actions/public/getEntityCount\"\nimport { query } from \"../../actions/public/query\"\nimport { subscribeEntityEvents } from \"../../actions/public/subscribeEntityEvents\"\nimport { QueryBuilder } from \"../../query/queryBuilder\"\nimport type { Entity } from \"../../types/entity\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\n\nexport type PublicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions<transport, chain, account>,\n | \"getBalance\"\n | \"getBlock\"\n | \"getBlockNumber\"\n | \"getChainId\"\n | \"getLogs\"\n | \"getTransaction\"\n | \"getTransactionCount\"\n | \"getTransactionReceipt\"\n | \"waitForTransactionReceipt\"\n | \"watchEvent\"\n> & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/public/getEntity\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entity = await client.getEntity(\"0x123\")\n * // {\n * // key: \"0x123\",\n * // value: \"0x123\",\n * // }\n */\n getEntity: (key: Hex) => Promise<Entity>\n\n /**\n * Returns a QueryBuilder instance for building and executing queries.\n * The QueryBuilder object follows the Builder pattern, allowing you to chain methods to build a query and then execute it.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/public/query\n *\n * @returns A QueryBuilder instance for building and executing queries. {@link QueryBuilder}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const query = client.buildQuery()\n * const entities = await query.where(\"key\", \"=\", \"value\").ownedBy(\"0x123\").fetch()\n *\n */\n buildQuery: () => QueryBuilder\n\n /**\n * Returns a QueryResult instance for fetching the results of a raw query.\n * @returns A QueryResult instance for fetching the results of a raw query. {@link QueryResult}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const queryResult = client.query('key = value && $owner = 0x123')\n *\n */\n query: (query: string) => Promise<Entity[]>\n\n /**\n * Returns the number of entities in the DBChain.\n * @returns The number of entities in the DBChain. {@link number}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entityCount = await client.getEntityCount()\n * // entityCount = 0\n */\n getEntityCount: () => Promise<number>\n\n /**\n * Returns the current block timing.\n * @returns The current block timing. {@link GetBlockTimingReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const blockTiming = await client.getBlockTiming()\n * // {\n * // currentBlock: 10n, // block number\n * // currentBlockTime: 1234567890, // block timestamp\n * // blockDuration: 2, // in seconds\n * // }\n */\n getBlockTiming: () => Promise<{\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n }>\n\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) => Promise<() => void>\n}\n\nexport function publicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n getEntity: (key: Hex) => getEntity(client, key),\n query: (rawQuery: string) => query(client, rawQuery),\n buildQuery: () => new QueryBuilder(client),\n getBlockTiming: () => getBlockTiming(client),\n getEntityCount: () => getEntityCount(client),\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) =>\n subscribeEntityEvents(\n client,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n },\n pollingInterval,\n fromBlock,\n ),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n PublicClientConfig,\n RpcSchema,\n Transport,\n} from \"viem\"\nimport { createClient, publicActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type PublicArkivActions, publicArkivActions } from \"./decorators/arkivPublic\"\n\nexport type PublicArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, accountOrAddress, rpcSchema, PublicArkivActions<transport, chain>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.arkiv.network/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.arkiv.network/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createPublicClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: PublicClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): PublicArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"public\", name = \"Public Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client.extend(publicActions).extend(publicArkivActions) as unknown as PublicArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n","// src/utils/compression.ts\n\nimport type { BrotliWasmType } from \"brotli-wasm\"\nimport { getLogger } from \"./logger\"\n\nconst logger = getLogger(\"utils:compression\")\n\n// Detect if we're in Node.js environment\nconst isNode = typeof process !== \"undefined\" && process.versions?.node != null\n\nlet zlib: typeof import(\"zlib\") | null = null\nlet brotli: BrotliWasmType | null = null\n\n// Lazy load zlib (Node.js only)\nasync function getZlib(): Promise<typeof import(\"zlib\") | null> {\n if (!isNode) return null\n\n if (!zlib) {\n try {\n zlib = await import(\"zlib\")\n } catch (error) {\n console.error(\"Error importing zlib\", error)\n return null\n }\n }\n return zlib\n}\n\n// Lazy load brotli-wasm (browser/fallback)\nasync function getBrotli(): Promise<BrotliWasmType | null> {\n if (brotli) return brotli\n\n try {\n const brotliModule = await import(\"brotli-wasm\")\n brotli = brotliModule.default || brotliModule\n } catch (error) {\n console.error(\"Error importing brotli-wasm\", error)\n return null\n }\n\n return brotli\n}\n\nexport async function compress(data: Uint8Array): Promise<Uint8Array> {\n logger(\"Compressing data size %d\", data.length)\n\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliCompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const compressed = zlibModule.brotliCompressSync(buffer)\n const result = new Uint8Array(compressed)\n logger(\"Brotli compressed with zlib size %d\", result.length)\n return result\n } catch (error) {\n console.warn(\"zlib compression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not compressing data\")\n return data\n }\n\n const brotliCompressed = brotliInstance.compress(data)\n logger(\"Brotli compressed with wasm size %d\", brotliCompressed.length)\n return brotliCompressed\n}\n\nexport async function decompress(data: Uint8Array): Promise<Uint8Array> {\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliDecompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const decompressed = zlibModule.brotliDecompressSync(buffer)\n const result = new Uint8Array(decompressed)\n logger(\"Brotli decompressed with zlib size %d\", result.length)\n return result\n } catch (error) {\n console.warn(\"zlib decompression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not decompressing data\")\n return data\n }\n\n return brotliInstance.decompress(data)\n}\n","import { type Hex, toBytes, toHex, toRlp } from \"viem\"\nimport type { ChangeOwnershipParameters } from \"../actions/wallet/changeOwnership\"\nimport type { CreateEntityParameters } from \"../actions/wallet/createEntity\"\nimport type { DeleteEntityParameters } from \"../actions/wallet/deleteEntity\"\nimport type { ExtendEntityParameters } from \"../actions/wallet/extendEntity\"\nimport type { UpdateEntityParameters } from \"../actions/wallet/updateEntity\"\nimport type { ArkivClient } from \"../clients/baseClient\"\nimport type { WalletArkivClient } from \"../clients/createWalletClient\"\nimport { ARKIV_ADDRESS, BLOCK_TIME } from \"../consts\"\nimport type { TxParams } from \"../types\"\nimport { compress } from \"./compression\"\nimport { getLogger } from \"./logger\"\n\nconst logger = getLogger(\"utils:arkiv-transactions\")\n\nexport function opsToTxData({\n creates,\n updates,\n deletes,\n extensions,\n ownershipChanges,\n}: {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}) {\n function formatAttributes<T extends string | number | bigint | boolean>(attribute: {\n key: string\n value: T\n }): [Hex, Hex] {\n return [toHex(attribute.key), toHex(attribute.value)]\n }\n\n const payload = [\n //creates\n (creates ?? []).map((item) => [\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.contentType),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //updates\n (updates ?? []).map((item) => [\n item.entityKey,\n toHex(item.contentType),\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //deletes\n (deletes ?? []).map((item) => item.entityKey),\n //extends\n (extensions ?? []).map((item) => [item.entityKey, toHex(item.expiresIn / BLOCK_TIME)]),\n //ownershipChanges TODO\n (ownershipChanges ?? []).map((item) => [item.entityKey, item.newOwner]),\n ]\n\n logger(\"txData to send as RLP %o length %d\", payload, payload.length)\n\n return toRlp(payload)\n}\n\nexport async function sendArkivTransaction(client: ArkivClient, data: Hex, txParams?: TxParams) {\n if (!client.account) throw new Error(\"Account required\")\n const walletClient = client as WalletArkivClient\n\n logger(\"Sending transaction %o\", {\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data,\n ...txParams,\n })\n\n const compressed = await compress(toBytes(data))\n const txHash = await walletClient.sendTransaction({\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data: toHex(compressed),\n ...txParams,\n })\n\n const receipt = await walletClient.waitForTransactionReceipt({ hash: txHash })\n\n logger(\"Tx receipt %o\", receipt)\n\n return receipt\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:change-ownership\")\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type ChangeOwnershipParameters = {\n entityKey: Hex\n newOwner: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ChangeOwnershipReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function changeOwnership(\n client: ArkivClient,\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n): Promise<ChangeOwnershipReturnType> {\n logger(\"changeOwnership %o\", data)\n const txData = opsToTxData({ ownershipChanges: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from changeOwnership %o\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:create-entity\")\n\n/**\n * Parameters for the createEntity function.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type CreateEntityParameters = {\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the createEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type CreateEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function createEntity(\n client: ArkivClient,\n data: CreateEntityParameters,\n txParams?: TxParams,\n): Promise<CreateEntityReturnType> {\n logger(\"createEntity %o\", data)\n const txData = opsToTxData({ creates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from createEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:delete-entity\")\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type DeleteEntityParameters = {\n entityKey: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type DeleteEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function deleteEntity(\n client: ArkivClient,\n data: DeleteEntityParameters,\n txParams?: TxParams,\n): Promise<DeleteEntityReturnType> {\n logger(\"deleteEntity %o\", data)\n const txData = opsToTxData({ deletes: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from deleteEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:extend-entity\")\n\n/**\n * Parameters for the extendEntity function.\n * - entityKey: The key of the entity to extend.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type ExtendEntityParameters = {\n entityKey: Hex\n expiresIn: number\n}\n\n/**\n * Return type for the extendEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ExtendEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function extendEntity(\n client: ArkivClient,\n data: ExtendEntityParameters,\n txParams?: TxParams,\n): Promise<ExtendEntityReturnType> {\n logger(\"extendEntity %o\", data)\n const txData = opsToTxData({ extensions: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from extendEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hash, Hex, TransactionReceipt } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\nimport type { ChangeOwnershipParameters } from \"./changeOwnership\"\n\nconst logger = getLogger(\"actions:wallet:mutate-entities\")\n\nimport type { CreateEntityParameters } from \"./createEntity\"\nimport type { DeleteEntityParameters } from \"./deleteEntity\"\nimport type { ExtendEntityParameters } from \"./extendEntity\"\nimport type { UpdateEntityParameters } from \"./updateEntity\"\n\n/**\n * Parameters for the mutateEntities function.\n * - creates: The creates to perform.\n * - updates: The updates to perform.\n * - deletes: The deletes to perform.\n * - extensions: The extensions to perform.\n */\nexport type MutateEntitiesParameters = {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}\n\nfunction parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParameters) {\n const createdEntities: Hex[] = []\n const updatedEntities: Hex[] = []\n const deletedEntities: Hex[] = []\n const extendedEntities: Hex[] = []\n const ownershipChanges: Hex[] = []\n\n const totalCreates = params.creates?.length ?? 0\n const totalUpdates = params.updates?.length ?? 0\n const totalDeletes = params.deletes?.length ?? 0\n const totalExtensions = params.extensions?.length ?? 0\n\n // iterate over all logs and parse the event\n // each odd log is the interested ones, logs goes in order like: creates, deleted, updates, extends\n for (let i = 0; i < receipt.logs.length; i++) {\n const log = receipt.logs[i]\n if (i % 2 === 1) continue\n\n const index = i / 2\n if (index < totalCreates) {\n createdEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalDeletes) {\n deletedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes) {\n updatedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes + totalExtensions) {\n extendedEntities.push(log.topics[1] as Hex)\n } else {\n ownershipChanges.push(log.topics[1] as Hex)\n }\n }\n\n return { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges }\n}\n\n/**\n * Return type for the mutateEntities function.\n * - txHash: The transaction hash.\n * - createdEntities: The keys of the created entities.\n * - updatedEntities: The keys of the updated entities.\n * - deletedEntities: The keys of the deleted entities.\n * - extendedEntities: The keys of the extended entities.\n * - ownershipChanges: The keys of the ownership changes.\n */\nexport type MutateEntitiesReturnType = {\n txHash: Hash\n createdEntities: Hex[]\n updatedEntities: Hex[]\n deletedEntities: Hex[]\n extendedEntities: Hex[]\n ownershipChanges: Hex[]\n}\nexport async function mutateEntities(\n client: ArkivClient,\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n): Promise<MutateEntitiesReturnType> {\n if (!data.creates && !data.updates && !data.deletes && !data.extensions) {\n throw new Error(\"No operations to perform\")\n }\n\n const txData = opsToTxData({\n creates: data.creates ?? [],\n updates: data.updates ?? [],\n deletes: data.deletes ?? [],\n extensions: data.extensions ?? [],\n ownershipChanges: data.ownershipChanges ?? [],\n })\n\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from mutateEntities %o\", receipt)\n\n const { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges } =\n parseReceipt(receipt, data)\n return {\n txHash: receipt.transactionHash as Hash,\n createdEntities,\n updatedEntities,\n deletedEntities,\n extendedEntities,\n ownershipChanges,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:update-entity\")\n\n/**\n * Parameters for the updateEntity function.\n * - entityKey: The key of the entity to update.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type UpdateEntityParameters = {\n entityKey: Hex\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the updateEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type UpdateEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function updateEntity(\n client: ArkivClient,\n data: UpdateEntityParameters,\n txParams?: TxParams,\n): Promise<UpdateEntityReturnType> {\n logger(\"updateEntity %o\", data)\n const txData = opsToTxData({ updates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from updateEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Account, Chain, Client, PublicActions, Transport, WalletActions } from \"viem\"\nimport type {\n ChangeOwnershipParameters,\n ChangeOwnershipReturnType,\n} from \"../../actions/wallet/changeOwnership\"\nimport { changeOwnership } from \"../../actions/wallet/changeOwnership\"\nimport {\n type CreateEntityParameters,\n type CreateEntityReturnType,\n createEntity,\n} from \"../../actions/wallet/createEntity\"\nimport type {\n DeleteEntityParameters,\n DeleteEntityReturnType,\n} from \"../../actions/wallet/deleteEntity\"\nimport { deleteEntity } from \"../../actions/wallet/deleteEntity\"\nimport type {\n ExtendEntityParameters,\n ExtendEntityReturnType,\n} from \"../../actions/wallet/extendEntity\"\nimport { extendEntity } from \"../../actions/wallet/extendEntity\"\nimport type {\n MutateEntitiesParameters,\n MutateEntitiesReturnType,\n} from \"../../actions/wallet/mutateEntities\"\nimport { mutateEntities } from \"../../actions/wallet/mutateEntities\"\nimport type {\n UpdateEntityParameters,\n UpdateEntityReturnType,\n} from \"../../actions/wallet/updateEntity\"\nimport { updateEntity } from \"../../actions/wallet/updateEntity\"\nimport type { Entity, TxParams } from \"../../types\"\n\nexport type WalletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<PublicActions<transport, chain, account>, \"waitForTransactionReceipt\"> &\n Pick<\n WalletActions<chain, account>,\n | \"addChain\"\n | \"sendTransaction\"\n | \"sendTransactionSync\"\n | \"sendRawTransaction\"\n | \"sendRawTransactionSync\"\n | \"signMessage\"\n | \"signTransaction\"\n > & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/public/getEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.createEntity({\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n createEntity: (\n data: CreateEntityParameters,\n txParams?: TxParams,\n ) => Promise<CreateEntityReturnType>\n\n /**\n * Updates the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/updateEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\n updateEntity: (\n data: UpdateEntityParameters,\n txParams?: TxParams,\n ) => Promise<UpdateEntityReturnType>\n\n /**\n * Deletes the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/deleteEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.deleteEntity({ entityKey: \"0x123\" })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n deleteEntity: (\n data: DeleteEntityParameters,\n txParams?: TxParams,\n ) => Promise<DeleteEntityReturnType>\n\n /**\n * Extends the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/extendEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.extendEntity(\"0x123\", {\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n extendEntity: (\n data: ExtendEntityParameters,\n txParams?: TxParams,\n ) => Promise<ExtendEntityReturnType>\n\n /**\n * Changes the ownership of the entity with the given address.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/changeOwnership\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey, newOwner}\n * @returns The entity with the given address. {@link Entity}\n */\n changeOwnership: (\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n ) => Promise<ChangeOwnershipReturnType>\n\n /**\n * Mutates the entities with the given keys.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/mutateEntities\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.mutateEntities({\n * creates: [{\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attriubutes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * updates: [{\n * entityKey: \"0x123\",\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * deletes: [{\n * entityKey: \"0x321\",\n * }],\n * extensions: [{\n * entityKey: \"0x1234\",\n * expiresIn: 1000,\n * }],\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n mutateEntities: (\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n ) => Promise<MutateEntitiesReturnType>\n }\n\nexport function walletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n createEntity: (data: CreateEntityParameters, txParams?: TxParams) =>\n createEntity(client, data, txParams),\n updateEntity: (data: UpdateEntityParameters, txParams?: TxParams) =>\n updateEntity(client, data, txParams),\n deleteEntity: (data: DeleteEntityParameters, txParams?: TxParams) =>\n deleteEntity(client, data, txParams),\n extendEntity: (data: ExtendEntityParameters, txParams?: TxParams) =>\n extendEntity(client, data, txParams),\n changeOwnership: (data: ChangeOwnershipParameters, txParams?: TxParams) =>\n changeOwnership(client, data, txParams),\n mutateEntities: (data: MutateEntitiesParameters, txParams?: TxParams) =>\n mutateEntities(client, data, txParams),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n RpcSchema,\n Transport,\n WalletClientConfig,\n} from \"viem\"\nimport { createClient, publicActions, walletActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type WalletArkivActions, walletArkivActions } from \"./decorators/arkivWallet\"\n\nexport type WalletArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, account, rpcSchema, WalletArkivActions<transport, chain, account>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.arkiv.network/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.arkiv.network/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createWalletClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: WalletClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): WalletArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"wallet\", name = \"Wallet Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client\n .extend(publicActions)\n .extend(walletActions)\n .extend(walletArkivActions) as unknown as WalletArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n"],"mappings":";;;;;;;;AAGA,MAAMA,WAAS,UAAU,kCAAkC;AAQ3D,eAAsB,eAAe,QAAqB;CACxD,MAAM,cAAc,MAAM,OAAO,QAAQ;EACvC,QAAQ;EACR,QAAQ,EAAE;EACX,CAAC;AACF,UAAO,mBAAmB,YAAY;AACtC,QAAO;EACL,cAAc,YAAY;EAC1B,kBAAkB,YAAY;EAC9B,eAAe,YAAY;EAC5B;;;;;AChBH,eAAsB,UAAU,QAAqB,KAAU;CAE7D,IAAIC;AACJ,KAAI;AACF,UAAQ,WAAW,IAAI;SACjB;AACN,QAAM,IAAI,MAAM,uBAAuB,IAAI,mCAAmC;;AAGhF,KAAI,MAAM,WAAW,GACnB,OAAM,IAAI,MACR,uBAAuB,MAAM,OAAO,wDACrC;CAGH,MAAM,SAAS,WAAW,MAAM;CAEhC,MAAM,SAAS,MAAM,OAAO,QAAQ;EAClC,QAAQ;EACR,QAAQ,CAAC,UAAU,SAAS;EAC7B,CAAC;AAEF,KAAI,CAAC,OAAO,KACV,OAAM,IAAI,oBAAoB;AAGhC,QAAO,oBAAoB,OAAO,KAAK,GAAG;;;;;AC7B5C,eAAsB,eAAe,QAAqB;AAMxD,QALc,MAAM,OAAO,QAAQ;EACjC,QAAQ;EACR,QAAQ,EAAE;EACX,CAAC;;;;;ACHJ,eAAsB,MAAM,QAAqB,SAAe;CAC9D,MAAM,SAAS,MAAM,OAAO,QAAQ;EAClC,QAAQ;EACR,QAAQ,CAACC,QAAM;EAChB,CAAC;AAIF,QAFiB,MAAM,QAAQ,IAAI,OAAO,KAAK,KAAK,WAAW,oBAAoB,OAAO,CAAC,CAAC;;;;;ACI9F,MAAMC,WAAS,UAAU,yCAAyC;AAElE,MAAa,WAAW,SAAS;CAC/B;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,eAAsB,sBACpB,QACA,EACE,SACA,iBACA,iBACA,iBACA,iBACA,2BACA,wBAUF,iBACA,WACqB;AAwErB,QAvEqB,OAA6B,WAAW;EAC3D,iBAAiB,mBAAmB;EACpC,WAAW,aAAa;EACxB,QAAQ;EACR,SAAS,SAAS;AAChB,YAAO,sCAAsC,KAAK;AAClD,QAAK,MAAM,OAAO,MAAM;IACtB,MAAM,QAAQ,eAAe;KAC3B,KAAK;KACL,QAAQ,IAAI;KACZ,MAAM,IAAI;KACX,CAAC;AACF,aAAO,uCAAuC,MAAM;AACpD,YAAQ,MAAM,WAAd;KACE,KAAK;AACH,wBAAkB;OAChB,WAAW,MAAM,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;OACpD,OAAO,MAAM,KAAK;OAClB,iBAAiB,OAAO,MAAM,KAAK,gBAAgB;OACnD,MAAM,MAAM,KAAK;OAClB,CAAC;AACF;KACF,KAAK;AACH,wBAAkB;OAChB,WAAW,MAAM,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;OACpD,OAAO,MAAM,KAAK;OAClB,oBAAoB,OAAO,MAAM,KAAK,mBAAmB;OACzD,oBAAoB,OAAO,MAAM,KAAK,mBAAmB;OACzD,MAAM,MAAM,KAAK;OAClB,CAAC;AACF;KACF,KAAK;AACH,wBAAkB;OAChB,WAAW,MAAM,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;OACpD,OAAO,MAAM,KAAK;OACnB,CAAC;AACF;KACF,KAAK;AACH,kCAA4B;OAC1B,WAAW,MAAM,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;OACpD,OAAO,MAAM,KAAK;OAClB,oBAAoB,OAAO,MAAM,KAAK,mBAAmB;OACzD,oBAAoB,OAAO,MAAM,KAAK,mBAAmB;OACzD,MAAM,MAAM,KAAK;OAClB,CAAC;AACF;KACF,KAAK;AACH,wBAAkB;OAChB,WAAW,MAAM,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;OACpD,OAAO,MAAM,KAAK;OACnB,CAAC;AACF;KACF,KAAK;AACH,6BAAuB;OACrB,WAAW,MAAM,MAAM,KAAK,WAAW,EAAE,MAAM,IAAI,CAAC;OACpD,UAAU,MAAM,KAAK;OACrB,UAAU,MAAM,KAAK;OACtB,CAAC;AACF;KACF;AACE,cAAQ,KAAK,4CAA4C,MAAM;AAC/D;;;;EAIR,UAAU,UAAU;AAClB,WAAQ,MAAM,oCAAoC,MAAM;AACxD,aAAU,MAAM;;EAEnB,CAAC;;;;;AC2CJ,SAAgB,mBAId,QAA2C;AAC3C,QAAO;EACL,YAAY,QAAa,UAAU,QAAQ,IAAI;EAC/C,QAAQ,aAAqB,MAAM,QAAQ,SAAS;EACpD,kBAAkB,IAAI,aAAa,OAAO;EAC1C,sBAAsB,eAAe,OAAO;EAC5C,sBAAsB,eAAe,OAAO;EAC5C,wBACE,EACE,SACA,iBACA,iBACA,iBACA,iBACA,6BASF,iBACA,cAEA,sBACE,QACA;GACE;GACA;GACA;GACA;GACA;GACA;GACD,EACD,iBACA,UACD;EACJ;;;;;;;;;;;;;;;;;;;;;;;;AC9JH,SAAgB,mBAMd,YACgF;CAChF,MAAM,EAAE,MAAM,UAAU,OAAO,oBAAoB;AAOnD,QANe,aAAa;EAC1B,GAAG;EACH;EACA;EACD,CAAC,CAEY,OAAO,cAAc,CAAC,OAAO,mBAAmB;;;;;ACrDhE,MAAMC,WAAS,UAAU,oBAAoB;AAG7C,MAAM,SAAS,OAAO,YAAY,eAAe,QAAQ,UAAU,QAAQ;AAE3E,IAAIC,OAAqC;AACzC,IAAIC,SAAgC;AAGpC,eAAe,UAAiD;AAC9D,KAAI,CAAC,OAAQ,QAAO;AAEpB,KAAI,CAAC,KACH,KAAI;AACF,SAAO,MAAM,OAAO;UACb,OAAO;AACd,UAAQ,MAAM,wBAAwB,MAAM;AAC5C,SAAO;;AAGX,QAAO;;AAIT,eAAe,YAA4C;AACzD,KAAI,OAAQ,QAAO;AAEnB,KAAI;EACF,MAAM,eAAe,MAAM,OAAO;AAClC,WAAS,aAAa,WAAW;UAC1B,OAAO;AACd,UAAQ,MAAM,+BAA+B,MAAM;AACnD,SAAO;;AAGT,QAAO;;AAGT,eAAsB,SAAS,MAAuC;AACpE,UAAO,4BAA4B,KAAK,OAAO;AAG/C,KAAI,QAAQ;EACV,MAAM,aAAa,MAAM,SAAS;AAClC,MAAI,WACF,KAAI;GAEF,MAAM,SAAS,OAAO,KAAK,KAAK;GAChC,MAAM,aAAa,WAAW,mBAAmB,OAAO;GACxD,MAAM,SAAS,IAAI,WAAW,WAAW;AACzC,YAAO,uCAAuC,OAAO,OAAO;AAC5D,UAAO;WACA,OAAO;AACd,WAAQ,KAAK,wDAAwD,MAAM;;;CAMjF,MAAM,iBAAiB,MAAM,WAAW;AACxC,KAAI,CAAC,gBAAgB;AACnB,UAAQ,KAAK,kDAAkD;AAC/D,SAAO;;CAGT,MAAM,mBAAmB,eAAe,SAAS,KAAK;AACtD,UAAO,uCAAuC,iBAAiB,OAAO;AACtE,QAAO;;;;;AC3DT,MAAMC,WAAS,UAAU,2BAA2B;AAEpD,SAAgB,YAAY,EAC1B,SACA,SACA,SACA,YACA,oBAOC;CACD,SAAS,iBAA+D,WAGzD;AACb,SAAO,CAAC,MAAM,UAAU,IAAI,EAAE,MAAM,UAAU,MAAM,CAAC;;CAGvD,MAAM,UAAU;GAEb,WAAW,EAAE,EAAE,KAAK,SAAS;GAC5B,MAAM,KAAK,YAAY,WAAW;GAClC,MAAM,KAAK,YAAY;GACvB,MAAM,KAAK,QAAQ;GACnB,KAAK,WACF,QAAQ,cAAc,OAAO,UAAU,UAAU,SAAS,CAC1D,IAAI,iBAAiB;GACxB,KAAK,WACF,QAAQ,cAAc,OAAO,UAAU,UAAU,SAAS,CAC1D,IAAI,iBAAiB;GACzB,CAAC;GAED,WAAW,EAAE,EAAE,KAAK,SAAS;GAC5B,KAAK;GACL,MAAM,KAAK,YAAY;GACvB,MAAM,KAAK,YAAY,WAAW;GAClC,MAAM,KAAK,QAAQ;GACnB,KAAK,WACF,QAAQ,cAAc,OAAO,UAAU,UAAU,SAAS,CAC1D,IAAI,iBAAiB;GACxB,KAAK,WACF,QAAQ,cAAc,OAAO,UAAU,UAAU,SAAS,CAC1D,IAAI,iBAAiB;GACzB,CAAC;GAED,WAAW,EAAE,EAAE,KAAK,SAAS,KAAK,UAAU;GAE5C,cAAc,EAAE,EAAE,KAAK,SAAS,CAAC,KAAK,WAAW,MAAM,KAAK,YAAY,WAAW,CAAC,CAAC;GAErF,oBAAoB,EAAE,EAAE,KAAK,SAAS,CAAC,KAAK,WAAW,KAAK,SAAS,CAAC;EACxE;AAED,UAAO,sCAAsC,SAAS,QAAQ,OAAO;AAErE,QAAO,MAAM,QAAQ;;AAGvB,eAAsB,qBAAqB,QAAqB,MAAW,UAAqB;AAC9F,KAAI,CAAC,OAAO,QAAS,OAAM,IAAI,MAAM,mBAAmB;CACxD,MAAM,eAAe;AAErB,UAAO,0BAA0B;EAC/B,SAAS,OAAO;EAChB,OAAO,OAAO;EACd,IAAI;EACJ,OAAO;EACP;EACA,GAAG;EACJ,CAAC;CAEF,MAAM,aAAa,MAAM,SAAS,QAAQ,KAAK,CAAC;CAChD,MAAM,SAAS,MAAM,aAAa,gBAAgB;EAChD,SAAS,OAAO;EAChB,OAAO,OAAO;EACd,IAAI;EACJ,OAAO;EACP,MAAM,MAAM,WAAW;EACvB,GAAG;EACJ,CAAC;CAEF,MAAM,UAAU,MAAM,aAAa,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AAE9E,UAAO,iBAAiB,QAAQ;AAEhC,QAAO;;;;;AC/FT,MAAMC,WAAS,UAAU,kCAAkC;AAqB3D,eAAsB,gBACpB,QACA,MACA,UACoC;AACpC,UAAO,sBAAsB,KAAK;CAElC,MAAM,UAAU,MAAM,qBAAqB,QAD5B,YAAY,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EACG,SAAS;AAEpE,UAAO,mCAAmC,QAAQ;AAElD,QAAO;EACL,QAAQ,QAAQ;EAChB,WAAW,KAAK;EACjB;;;;;ACnCH,MAAMC,WAAS,UAAU,+BAA+B;AA0BxD,eAAsB,aACpB,QACA,MACA,UACiC;AACjC,UAAO,mBAAmB,KAAK;CAE/B,MAAM,UAAU,MAAM,qBAAqB,QAD5B,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EACY,SAAS;AAEpE,UAAO,gCAAgC,QAAQ;AAE/C,QAAO;EACL,QAAQ,QAAQ;EAChB,WAAW,QAAQ,KAAK,GAAG,OAAO;EACnC;;;;;ACxCH,MAAMC,WAAS,UAAU,+BAA+B;AAoBxD,eAAsB,aACpB,QACA,MACA,UACiC;AACjC,UAAO,mBAAmB,KAAK;CAE/B,MAAM,UAAU,MAAM,qBAAqB,QAD5B,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EACY,SAAS;AAEpE,UAAO,gCAAgC,QAAQ;AAE/C,QAAO;EACL,QAAQ,QAAQ;EAChB,WAAW,KAAK;EACjB;;;;;AClCH,MAAMC,WAAS,UAAU,+BAA+B;AAsBxD,eAAsB,aACpB,QACA,MACA,UACiC;AACjC,UAAO,mBAAmB,KAAK;CAE/B,MAAM,UAAU,MAAM,qBAAqB,QAD5B,YAAY,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,EACS,SAAS;AAEpE,UAAO,gCAAgC,QAAQ;AAE/C,QAAO;EACL,QAAQ,QAAQ;EAChB,WAAW,QAAQ,KAAK,GAAG,OAAO;EACnC;;;;;ACnCH,MAAMC,WAAS,UAAU,iCAAiC;AAsB1D,SAAS,aAAa,SAA6B,QAAkC;CACnF,MAAMC,kBAAyB,EAAE;CACjC,MAAMC,kBAAyB,EAAE;CACjC,MAAMC,kBAAyB,EAAE;CACjC,MAAMC,mBAA0B,EAAE;CAClC,MAAMC,mBAA0B,EAAE;CAElC,MAAM,eAAe,OAAO,SAAS,UAAU;CAC/C,MAAM,eAAe,OAAO,SAAS,UAAU;CAC/C,MAAM,eAAe,OAAO,SAAS,UAAU;CAC/C,MAAM,kBAAkB,OAAO,YAAY,UAAU;AAIrD,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,KAAK,QAAQ,KAAK;EAC5C,MAAM,MAAM,QAAQ,KAAK;AACzB,MAAI,IAAI,MAAM,EAAG;EAEjB,MAAM,QAAQ,IAAI;AAClB,MAAI,QAAQ,aACV,iBAAgB,KAAK,IAAI,OAAO,GAAU;WACjC,QAAQ,eAAe,aAChC,iBAAgB,KAAK,IAAI,OAAO,GAAU;WACjC,QAAQ,eAAe,eAAe,aAC/C,iBAAgB,KAAK,IAAI,OAAO,GAAU;WACjC,QAAQ,eAAe,eAAe,eAAe,gBAC9D,kBAAiB,KAAK,IAAI,OAAO,GAAU;MAE3C,kBAAiB,KAAK,IAAI,OAAO,GAAU;;AAI/C,QAAO;EAAE;EAAiB;EAAiB;EAAiB;EAAkB;EAAkB;;AAoBlG,eAAsB,eACpB,QACA,MACA,UACmC;AACnC,KAAI,CAAC,KAAK,WAAW,CAAC,KAAK,WAAW,CAAC,KAAK,WAAW,CAAC,KAAK,WAC3D,OAAM,IAAI,MAAM,2BAA2B;CAW7C,MAAM,UAAU,MAAM,qBAAqB,QAR5B,YAAY;EACzB,SAAS,KAAK,WAAW,EAAE;EAC3B,SAAS,KAAK,WAAW,EAAE;EAC3B,SAAS,KAAK,WAAW,EAAE;EAC3B,YAAY,KAAK,cAAc,EAAE;EACjC,kBAAkB,KAAK,oBAAoB,EAAE;EAC9C,CAAC,EAEyD,SAAS;AAEpE,UAAO,kCAAkC,QAAQ;CAEjD,MAAM,EAAE,iBAAiB,iBAAiB,iBAAiB,kBAAkB,qBAC3E,aAAa,SAAS,KAAK;AAC7B,QAAO;EACL,QAAQ,QAAQ;EAChB;EACA;EACA;EACA;EACA;EACD;;;;;ACzGH,MAAM,SAAS,UAAU,+BAA+B;AA4BxD,eAAsB,aACpB,QACA,MACA,UACiC;AACjC,QAAO,mBAAmB,KAAK;CAE/B,MAAM,UAAU,MAAM,qBAAqB,QAD5B,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,EACY,SAAS;AAEpE,QAAO,gCAAgC,QAAQ;AAE/C,QAAO;EACL,QAAQ,QAAQ;EAChB,WAAW,QAAQ,KAAK,GAAG,OAAO;EACnC;;;;;ACuLH,SAAgB,mBAId,QAA2C;AAC3C,QAAO;EACL,eAAe,MAA8B,aAC3C,aAAa,QAAQ,MAAM,SAAS;EACtC,eAAe,MAA8B,aAC3C,aAAa,QAAQ,MAAM,SAAS;EACtC,eAAe,MAA8B,aAC3C,aAAa,QAAQ,MAAM,SAAS;EACtC,eAAe,MAA8B,aAC3C,aAAa,QAAQ,MAAM,SAAS;EACtC,kBAAkB,MAAiC,aACjD,gBAAgB,QAAQ,MAAM,SAAS;EACzC,iBAAiB,MAAgC,aAC/C,eAAe,QAAQ,MAAM,SAAS;EACzC;;;;;;;;;;;;;;;;;;;;;;;;AC9MH,SAAgB,mBAMd,YACgF;CAChF,MAAM,EAAE,MAAM,UAAU,OAAO,oBAAoB;AAOnD,QANe,aAAa;EAC1B,GAAG;EACH;EACA;EACD,CAAC,CAGC,OAAO,cAAc,CACrB,OAAO,cAAc,CACrB,OAAO,mBAAmB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["logger","bytes: Uint8Array","query","logger","logger","zlib: typeof import(\"zlib\") | null","brotli: BrotliWasmType | null","logger","logger","logger","logger","logger","logger","createdEntities: Hex[]","updatedEntities: Hex[]","deletedEntities: Hex[]","extendedEntities: Hex[]","ownershipChanges: Hex[]"],"sources":["../src/actions/public/getBlockTiming.ts","../src/actions/public/getEntity.ts","../src/actions/public/getEntityCount.ts","../src/actions/public/query.ts","../src/actions/public/subscribeEntityEvents.ts","../src/clients/decorators/arkivPublic.ts","../src/clients/createPublicClient.ts","../src/utils/compression.ts","../src/utils/arkivTransactions.ts","../src/actions/wallet/changeOwnership.ts","../src/actions/wallet/createEntity.ts","../src/actions/wallet/deleteEntity.ts","../src/actions/wallet/extendEntity.ts","../src/actions/wallet/mutateEntities.ts","../src/actions/wallet/updateEntity.ts","../src/clients/decorators/arkivWallet.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { ArkivClient } from \"../../clients/baseClient\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:public:get-block-timing\")\n\nexport type GetBlockTimingReturnType = {\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n}\n\nexport async function getBlockTiming(client: ArkivClient) {\n const blockTiming = await client.request({\n method: \"arkiv_getBlockTiming\",\n params: [],\n })\n logger(\"Block timing %o\", blockTiming)\n return {\n currentBlock: blockTiming.current_block,\n currentBlockTime: blockTiming.current_block_time,\n blockDuration: blockTiming.duration,\n }\n}\n","import { bytesToHex, type Hex, hexToBytes } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport { NoEntityFoundError } from \"../../query/errors\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function getEntity(client: ArkivClient, key: Hex) {\n // Normalize the key into bytes\n let bytes: Uint8Array\n try {\n bytes = hexToBytes(key)\n } catch {\n throw new Error(`Invalid key format: ${key}. Key must be a valid hex string.`)\n }\n\n if (bytes.length !== 32) {\n throw new Error(\n `Invalid key length: ${bytes.length} bytes. Key must be 32 bytes (64 hex characters) long.`,\n )\n }\n\n const hexKey = bytesToHex(bytes)\n\n const result = await client.request({\n method: \"arkiv_query\",\n params: [\n `$key = ${hexKey}`,\n {\n includeData: {\n key: true,\n attributes: true,\n payload: true,\n contentType: true,\n expiration: true,\n owner: true,\n createdAtBlock: true,\n lastModifiedAtBlock: true,\n transactionIndexInBlock: true,\n operationIndexInTransaction: true,\n },\n },\n ],\n })\n\n if (!result.data.length) {\n throw new NoEntityFoundError()\n }\n\n return await entityFromRpcResult(result.data[0])\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\n\nexport async function getEntityCount(client: ArkivClient) {\n const count = await client.request({\n method: \"arkiv_getEntityCount\",\n params: [],\n })\n\n return count\n}\n","import type { ArkivClient } from \"../../clients/baseClient\"\nimport { entityFromRpcResult } from \"../../utils/entities\"\n\nexport async function query(client: ArkivClient, query: string) {\n const result = await client.request({\n method: \"arkiv_query\",\n params: [query],\n })\n\n const entities = await Promise.all(result.data.map((entity) => entityFromRpcResult(entity)))\n\n return entities\n}\n","import { decodeEventLog, parseAbi, toHex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { PublicArkivClient } from \"../../clients/createPublicClient\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityOwnerChangedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:public:subscribe-entity-events\")\n\nexport const arkivABI = parseAbi([\n \"event ArkivEntityCreated(uint256 indexed entityKey, address indexed ownerAddress, uint256 expirationBlock, uint256 cost)\",\n \"event ArkivEntityUpdated(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityExpired(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityDeleted(uint256 indexed entityKey, address indexed ownerAddress)\",\n \"event ArkivEntityBTLExtended(uint256 indexed entityKey, address indexed ownerAddress, uint256 oldExpirationBlock, uint256 newExpirationBlock, uint256 cost)\",\n \"event ArkivEntityOwnerChanged(uint256 indexed entityKey, address indexed oldOwnerAddress, address indexed newOwnerAddress)\",\n])\n\nexport async function subscribeEntityEvents(\n client: ArkivClient,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n onEntityOwnerChanged,\n }: {\n onError: ((error: Error) => void) | undefined\n onEntityCreated?: ((event: OnEntityCreatedEvent) => void) | undefined\n onEntityUpdated?: ((event: OnEntityUpdatedEvent) => void) | undefined\n onEntityDeleted?: ((event: OnEntityDeletedEvent) => void) | undefined\n onEntityExpired?: ((event: OnEntityExpiredEvent) => void) | undefined\n onEntityExpiresInExtended?: ((event: OnEntityExpiresInExtendedEvent) => void) | undefined\n onEntityOwnerChanged?: ((event: OnEntityOwnerChangedEvent) => void) | undefined\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n): Promise<() => void> {\n const unsubscribe = (client as PublicArkivClient).watchEvent({\n pollingInterval: pollingInterval ?? 1000,\n fromBlock: fromBlock ?? 0n,\n events: arkivABI,\n onLogs: (logs) => {\n logger(\"logs from subscribeEntityEvents %o\", logs)\n for (const log of logs) {\n const event = decodeEventLog({\n abi: arkivABI,\n topics: log.topics as [string, string, string] | [string, string, string, string],\n data: log.data,\n })\n logger(\"event from subscribeEntityEvents %o\", event)\n switch (event.eventName) {\n case \"ArkivEntityCreated\":\n onEntityCreated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n expirationBlock: Number(event.args.expirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityUpdated\":\n onEntityUpdated?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityDeleted\":\n onEntityDeleted?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityBTLExtended\":\n onEntityExpiresInExtended?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n oldExpirationBlock: Number(event.args.oldExpirationBlock),\n newExpirationBlock: Number(event.args.newExpirationBlock),\n cost: event.args.cost,\n })\n break\n case \"ArkivEntityExpired\":\n onEntityExpired?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n owner: event.args.ownerAddress,\n })\n break\n case \"ArkivEntityOwnerChanged\":\n onEntityOwnerChanged?.({\n entityKey: toHex(event.args.entityKey, { size: 32 }),\n oldOwner: event.args.oldOwnerAddress,\n newOwner: event.args.newOwnerAddress,\n })\n break\n default:\n console.warn(\"unknown event from subscribeEntityEvents\", event)\n break\n }\n }\n },\n onError: (error) => {\n console.error(\"error from subscribeEntityEvents\", error)\n onError?.(error)\n },\n })\n\n return unsubscribe\n}\n","import type { Account, Chain, Client, Hex, PublicActions, Transport } from \"viem\"\nimport { getBlockTiming } from \"../../actions/public/getBlockTiming\"\nimport { getEntity } from \"../../actions/public/getEntity\"\nimport { getEntityCount } from \"../../actions/public/getEntityCount\"\nimport { query } from \"../../actions/public/query\"\nimport { subscribeEntityEvents } from \"../../actions/public/subscribeEntityEvents\"\nimport { QueryBuilder } from \"../../query/queryBuilder\"\nimport type { Entity } from \"../../types/entity\"\nimport type {\n OnEntityCreatedEvent,\n OnEntityDeletedEvent,\n OnEntityExpiredEvent,\n OnEntityExpiresInExtendedEvent,\n OnEntityUpdatedEvent,\n} from \"../../types/events\"\n\nexport type PublicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<\n PublicActions<transport, chain, account>,\n | \"getBalance\"\n | \"getBlock\"\n | \"getBlockNumber\"\n | \"getChainId\"\n | \"getLogs\"\n | \"getTransaction\"\n | \"getTransactionCount\"\n | \"getTransactionReceipt\"\n | \"waitForTransactionReceipt\"\n | \"watchEvent\"\n> & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/public/getEntity\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entity = await client.getEntity(\"0x123\")\n * // {\n * // key: \"0x123\",\n * // value: \"0x123\",\n * // }\n */\n getEntity: (key: Hex) => Promise<Entity>\n\n /**\n * Returns a QueryBuilder instance for building and executing queries.\n * The QueryBuilder object follows the Builder pattern, allowing you to chain methods to build a query and then execute it.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/public/query\n *\n * @returns A QueryBuilder instance for building and executing queries. {@link QueryBuilder}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const query = client.buildQuery()\n * const entities = await query.where(\"key\", \"=\", \"value\").ownedBy(\"0x123\").fetch()\n *\n */\n buildQuery: () => QueryBuilder\n\n /**\n * Returns a QueryResult instance for fetching the results of a raw query.\n * @returns A QueryResult instance for fetching the results of a raw query. {@link QueryResult}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const queryResult = client.query('key = value && $owner = 0x123')\n *\n */\n query: (query: string) => Promise<Entity[]>\n\n /**\n * Returns the number of entities in the DBChain.\n * @returns The number of entities in the DBChain. {@link number}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const entityCount = await client.getEntityCount()\n * // entityCount = 0\n */\n getEntityCount: () => Promise<number>\n\n /**\n * Returns the current block timing.\n * @returns The current block timing. {@link GetBlockTimingReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const blockTiming = await client.getBlockTiming()\n * // {\n * // currentBlock: 10n, // block number\n * // currentBlockTime: 1234567890, // block timestamp\n * // blockDuration: 2, // in seconds\n * // }\n */\n getBlockTiming: () => Promise<{\n currentBlock: bigint\n currentBlockTime: number\n blockDuration: number\n }>\n\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) => Promise<() => void>\n}\n\nexport function publicArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n getEntity: (key: Hex) => getEntity(client, key),\n query: (rawQuery: string) => query(client, rawQuery),\n buildQuery: () => new QueryBuilder(client),\n getBlockTiming: () => getBlockTiming(client),\n getEntityCount: () => getEntityCount(client),\n subscribeEntityEvents: (\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n }: {\n onError?: (error: Error) => void\n onEntityCreated?: (event: OnEntityCreatedEvent) => void\n onEntityUpdated?: (event: OnEntityUpdatedEvent) => void\n onEntityDeleted?: (event: OnEntityDeletedEvent) => void\n onEntityExpired?: (event: OnEntityExpiredEvent) => void\n onEntityExpiresInExtended?: (event: OnEntityExpiresInExtendedEvent) => void\n },\n pollingInterval?: number,\n fromBlock?: bigint,\n ) =>\n subscribeEntityEvents(\n client,\n {\n onError,\n onEntityCreated,\n onEntityUpdated,\n onEntityDeleted,\n onEntityExpired,\n onEntityExpiresInExtended,\n },\n pollingInterval,\n fromBlock,\n ),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n PublicClientConfig,\n RpcSchema,\n Transport,\n} from \"viem\"\nimport { createClient, publicActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type PublicArkivActions, publicArkivActions } from \"./decorators/arkivPublic\"\n\nexport type PublicArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n accountOrAddress extends Account | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, accountOrAddress, rpcSchema, PublicArkivActions<transport, chain>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.arkiv.network/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.arkiv.network/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createPublicClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: PublicClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): PublicArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"public\", name = \"Public Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client.extend(publicActions).extend(publicArkivActions) as unknown as PublicArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n","// src/utils/compression.ts\n\nimport type { BrotliWasmType } from \"brotli-wasm\"\nimport { getLogger } from \"./logger\"\n\nconst logger = getLogger(\"utils:compression\")\n\n// Detect if we're in Node.js environment\nconst isNode = typeof process !== \"undefined\" && process.versions?.node != null\n\nlet zlib: typeof import(\"zlib\") | null = null\nlet brotli: BrotliWasmType | null = null\n\n// Lazy load zlib (Node.js only)\nasync function getZlib(): Promise<typeof import(\"zlib\") | null> {\n if (!isNode) return null\n\n if (!zlib) {\n try {\n zlib = await import(\"zlib\")\n } catch (error) {\n console.error(\"Error importing zlib\", error)\n return null\n }\n }\n return zlib\n}\n\n// Lazy load brotli-wasm (browser/fallback)\nasync function getBrotli(): Promise<BrotliWasmType | null> {\n if (brotli) return brotli\n\n try {\n const brotliModule = await import(\"brotli-wasm\")\n brotli = brotliModule.default || brotliModule\n } catch (error) {\n console.error(\"Error importing brotli-wasm\", error)\n return null\n }\n\n return brotli\n}\n\nexport async function compress(data: Uint8Array): Promise<Uint8Array> {\n logger(\"Compressing data size %d\", data.length)\n\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliCompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const compressed = zlibModule.brotliCompressSync(buffer)\n const result = new Uint8Array(compressed)\n logger(\"Brotli compressed with zlib size %d\", result.length)\n return result\n } catch (error) {\n console.warn(\"zlib compression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not compressing data\")\n return data\n }\n\n const brotliCompressed = brotliInstance.compress(data)\n logger(\"Brotli compressed with wasm size %d\", brotliCompressed.length)\n return brotliCompressed\n}\n\nexport async function decompress(data: Uint8Array): Promise<Uint8Array> {\n // Try Node.js zlib first (if available)\n if (isNode) {\n const zlibModule = await getZlib()\n if (zlibModule) {\n try {\n // zlib.brotliDecompress expects Buffer, returns Buffer\n const buffer = Buffer.from(data)\n const decompressed = zlibModule.brotliDecompressSync(buffer)\n const result = new Uint8Array(decompressed)\n logger(\"Brotli decompressed with zlib size %d\", result.length)\n return result\n } catch (error) {\n console.warn(\"zlib decompression failed, falling back to brotli-wasm\", error)\n }\n }\n }\n\n // Fallback to brotli-wasm (browser or if zlib fails)\n const brotliInstance = await getBrotli()\n if (!brotliInstance) {\n console.warn(\"Brotli instance not found, not decompressing data\")\n return data\n }\n\n return brotliInstance.decompress(data)\n}\n","import { type Hex, toBytes, toHex, toRlp } from \"viem\"\nimport type { ChangeOwnershipParameters } from \"../actions/wallet/changeOwnership\"\nimport type { CreateEntityParameters } from \"../actions/wallet/createEntity\"\nimport type { DeleteEntityParameters } from \"../actions/wallet/deleteEntity\"\nimport type { ExtendEntityParameters } from \"../actions/wallet/extendEntity\"\nimport type { UpdateEntityParameters } from \"../actions/wallet/updateEntity\"\nimport type { ArkivClient } from \"../clients/baseClient\"\nimport type { WalletArkivClient } from \"../clients/createWalletClient\"\nimport { ARKIV_ADDRESS, BLOCK_TIME } from \"../consts\"\nimport type { TxParams } from \"../types\"\nimport { compress } from \"./compression\"\nimport { getLogger } from \"./logger\"\n\nconst logger = getLogger(\"utils:arkiv-transactions\")\n\nexport function opsToTxData({\n creates,\n updates,\n deletes,\n extensions,\n ownershipChanges,\n}: {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}) {\n function formatAttributes<T extends string | number | bigint | boolean>(attribute: {\n key: string\n value: T\n }): [Hex, Hex] {\n return [toHex(attribute.key), toHex(attribute.value)]\n }\n\n const payload = [\n //creates\n (creates ?? []).map((item) => [\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.contentType),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //updates\n (updates ?? []).map((item) => [\n item.entityKey,\n toHex(item.contentType),\n toHex(item.expiresIn / BLOCK_TIME),\n toHex(item.payload),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"string\")\n .map(formatAttributes),\n item.attributes\n .filter((attribute) => typeof attribute.value === \"number\")\n .map(formatAttributes),\n ]),\n //deletes\n (deletes ?? []).map((item) => item.entityKey),\n //extends\n (extensions ?? []).map((item) => [item.entityKey, toHex(item.expiresIn / BLOCK_TIME)]),\n //ownershipChanges TODO\n (ownershipChanges ?? []).map((item) => [item.entityKey, item.newOwner]),\n ]\n\n logger(\"txData to send as RLP %o length %d\", payload, payload.length)\n\n return toRlp(payload)\n}\n\nexport async function sendArkivTransaction(client: ArkivClient, data: Hex, txParams?: TxParams) {\n if (!client.account) throw new Error(\"Account required\")\n const walletClient = client as WalletArkivClient\n\n logger(\"Sending transaction %o\", {\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data,\n ...txParams,\n })\n\n const compressed = await compress(toBytes(data))\n const txHash = await walletClient.sendTransaction({\n account: client.account,\n chain: client.chain,\n to: ARKIV_ADDRESS,\n value: 0n,\n data: toHex(compressed),\n ...txParams,\n })\n\n const receipt = await walletClient.waitForTransactionReceipt({ hash: txHash })\n\n logger(\"Tx receipt %o\", receipt)\n\n return receipt\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:change-ownership\")\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type ChangeOwnershipParameters = {\n entityKey: Hex\n newOwner: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ChangeOwnershipReturnType = {\n entityKey: Hex\n txHash: string\n}\n\nexport async function changeOwnership(\n client: ArkivClient,\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n): Promise<ChangeOwnershipReturnType> {\n logger(\"changeOwnership %o\", data)\n const txData = opsToTxData({ ownershipChanges: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from changeOwnership %o\", receipt)\n\n return {\n txHash: receipt.transactionHash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:create-entity\")\n\n/**\n * Parameters for the createEntity function.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type CreateEntityParameters = {\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the createEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type CreateEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function createEntity(\n client: ArkivClient,\n data: CreateEntityParameters,\n txParams?: TxParams,\n): Promise<CreateEntityReturnType> {\n logger(\"createEntity %o\", data)\n const txData = opsToTxData({ creates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from createEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:delete-entity\")\n\n/**\n * Parameters for the deleteEntity function.\n * - entityKey: The key of the entity to delete.\n */\nexport type DeleteEntityParameters = {\n entityKey: Hex\n}\n\n/**\n * Return type for the deleteEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type DeleteEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function deleteEntity(\n client: ArkivClient,\n data: DeleteEntityParameters,\n txParams?: TxParams,\n): Promise<DeleteEntityReturnType> {\n logger(\"deleteEntity %o\", data)\n const txData = opsToTxData({ deletes: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from deleteEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: data.entityKey,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:extend-entity\")\n\n/**\n * Parameters for the extendEntity function.\n * - entityKey: The key of the entity to extend.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type ExtendEntityParameters = {\n entityKey: Hex\n expiresIn: number\n}\n\n/**\n * Return type for the extendEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type ExtendEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function extendEntity(\n client: ArkivClient,\n data: ExtendEntityParameters,\n txParams?: TxParams,\n): Promise<ExtendEntityReturnType> {\n logger(\"extendEntity %o\", data)\n const txData = opsToTxData({ extensions: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from extendEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Hash, Hex, TransactionReceipt } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\nimport type { ChangeOwnershipParameters } from \"./changeOwnership\"\n\nconst logger = getLogger(\"actions:wallet:mutate-entities\")\n\nimport type { CreateEntityParameters } from \"./createEntity\"\nimport type { DeleteEntityParameters } from \"./deleteEntity\"\nimport type { ExtendEntityParameters } from \"./extendEntity\"\nimport type { UpdateEntityParameters } from \"./updateEntity\"\n\n/**\n * Parameters for the mutateEntities function.\n * - creates: The creates to perform.\n * - updates: The updates to perform.\n * - deletes: The deletes to perform.\n * - extensions: The extensions to perform.\n */\nexport type MutateEntitiesParameters = {\n creates?: CreateEntityParameters[]\n updates?: UpdateEntityParameters[]\n deletes?: DeleteEntityParameters[]\n extensions?: ExtendEntityParameters[]\n ownershipChanges?: ChangeOwnershipParameters[]\n}\n\nfunction parseReceipt(receipt: TransactionReceipt, params: MutateEntitiesParameters) {\n const createdEntities: Hex[] = []\n const updatedEntities: Hex[] = []\n const deletedEntities: Hex[] = []\n const extendedEntities: Hex[] = []\n const ownershipChanges: Hex[] = []\n\n const totalCreates = params.creates?.length ?? 0\n const totalUpdates = params.updates?.length ?? 0\n const totalDeletes = params.deletes?.length ?? 0\n const totalExtensions = params.extensions?.length ?? 0\n\n // iterate over all logs and parse the event\n // each odd log is the interested ones, logs goes in order like: creates, deleted, updates, extends\n for (let i = 0; i < receipt.logs.length; i++) {\n const log = receipt.logs[i]\n if (i % 2 === 1) continue\n\n const index = i / 2\n if (index < totalCreates) {\n createdEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalDeletes) {\n deletedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes) {\n updatedEntities.push(log.topics[1] as Hex)\n } else if (index < totalCreates + totalUpdates + totalDeletes + totalExtensions) {\n extendedEntities.push(log.topics[1] as Hex)\n } else {\n ownershipChanges.push(log.topics[1] as Hex)\n }\n }\n\n return { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges }\n}\n\n/**\n * Return type for the mutateEntities function.\n * - txHash: The transaction hash.\n * - createdEntities: The keys of the created entities.\n * - updatedEntities: The keys of the updated entities.\n * - deletedEntities: The keys of the deleted entities.\n * - extendedEntities: The keys of the extended entities.\n * - ownershipChanges: The keys of the ownership changes.\n */\nexport type MutateEntitiesReturnType = {\n txHash: Hash\n createdEntities: Hex[]\n updatedEntities: Hex[]\n deletedEntities: Hex[]\n extendedEntities: Hex[]\n ownershipChanges: Hex[]\n}\nexport async function mutateEntities(\n client: ArkivClient,\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n): Promise<MutateEntitiesReturnType> {\n if (!data.creates && !data.updates && !data.deletes && !data.extensions) {\n throw new Error(\"No operations to perform\")\n }\n\n const txData = opsToTxData({\n creates: data.creates ?? [],\n updates: data.updates ?? [],\n deletes: data.deletes ?? [],\n extensions: data.extensions ?? [],\n ownershipChanges: data.ownershipChanges ?? [],\n })\n\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from mutateEntities %o\", receipt)\n\n const { createdEntities, updatedEntities, deletedEntities, extendedEntities, ownershipChanges } =\n parseReceipt(receipt, data)\n return {\n txHash: receipt.transactionHash as Hash,\n createdEntities,\n updatedEntities,\n deletedEntities,\n extendedEntities,\n ownershipChanges,\n }\n}\n","import type { Hash, Hex } from \"viem\"\nimport type { ArkivClient } from \"../../clients/baseClient\"\nimport type { Attribute, MimeType, TxParams } from \"../../types\"\nimport { opsToTxData, sendArkivTransaction } from \"../../utils/arkivTransactions\"\nimport { getLogger } from \"../../utils/logger\"\n\nconst logger = getLogger(\"actions:wallet:update-entity\")\n\n/**\n * Parameters for the updateEntity function.\n * - entityKey: The key of the entity to update.\n * - payload: The payload of the entity.\n * - attributes: The attributes of the entity.\n * - contentType: The content type of the entity.\n * - expiresIn: The expires in of the entity in seconds.\n */\nexport type UpdateEntityParameters = {\n entityKey: Hex\n payload: Uint8Array\n attributes: Attribute[]\n contentType: MimeType\n expiresIn: number\n}\n\n/**\n * Return type for the updateEntity function.\n * - entityKey: The key of the entity.\n * - txHash: The transaction hash.\n */\nexport type UpdateEntityReturnType = {\n entityKey: Hex\n txHash: Hash\n}\n\nexport async function updateEntity(\n client: ArkivClient,\n data: UpdateEntityParameters,\n txParams?: TxParams,\n): Promise<UpdateEntityReturnType> {\n logger(\"updateEntity %o\", data)\n const txData = opsToTxData({ updates: [data] })\n const receipt = await sendArkivTransaction(client, txData, txParams)\n\n logger(\"Receipt from updateEntity %o\", receipt)\n\n return {\n txHash: receipt.transactionHash as Hash,\n entityKey: receipt.logs[0].topics[1] as Hex,\n }\n}\n","import type { Account, Chain, Client, PublicActions, Transport, WalletActions } from \"viem\"\nimport type {\n ChangeOwnershipParameters,\n ChangeOwnershipReturnType,\n} from \"../../actions/wallet/changeOwnership\"\nimport { changeOwnership } from \"../../actions/wallet/changeOwnership\"\nimport {\n type CreateEntityParameters,\n type CreateEntityReturnType,\n createEntity,\n} from \"../../actions/wallet/createEntity\"\nimport type {\n DeleteEntityParameters,\n DeleteEntityReturnType,\n} from \"../../actions/wallet/deleteEntity\"\nimport { deleteEntity } from \"../../actions/wallet/deleteEntity\"\nimport type {\n ExtendEntityParameters,\n ExtendEntityReturnType,\n} from \"../../actions/wallet/extendEntity\"\nimport { extendEntity } from \"../../actions/wallet/extendEntity\"\nimport type {\n MutateEntitiesParameters,\n MutateEntitiesReturnType,\n} from \"../../actions/wallet/mutateEntities\"\nimport { mutateEntities } from \"../../actions/wallet/mutateEntities\"\nimport type {\n UpdateEntityParameters,\n UpdateEntityReturnType,\n} from \"../../actions/wallet/updateEntity\"\nimport { updateEntity } from \"../../actions/wallet/updateEntity\"\nimport type { Entity, TxParams } from \"../../types\"\n\nexport type WalletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n> = Pick<PublicActions<transport, chain, account>, \"waitForTransactionReceipt\"> &\n Pick<\n WalletActions<chain, account>,\n | \"addChain\"\n | \"sendTransaction\"\n | \"sendTransactionSync\"\n | \"sendRawTransaction\"\n | \"sendRawTransactionSync\"\n | \"signMessage\"\n | \"signTransaction\"\n > & {\n /**\n * Returns the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/public/getEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.createEntity({\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n createEntity: (\n data: CreateEntityParameters,\n txParams?: TxParams,\n ) => Promise<CreateEntityReturnType>\n\n /**\n * Updates the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/updateEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\n updateEntity: (\n data: UpdateEntityParameters,\n txParams?: TxParams,\n ) => Promise<UpdateEntityReturnType>\n\n /**\n * Deletes the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/deleteEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.deleteEntity({ entityKey: \"0x123\" })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n deleteEntity: (\n data: DeleteEntityParameters,\n txParams?: TxParams,\n ) => Promise<DeleteEntityReturnType>\n\n /**\n * Extends the entity with the given key.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/extendEntity\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey, data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.extendEntity(\"0x123\", {\n * expiresIn: 1000,\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n extendEntity: (\n data: ExtendEntityParameters,\n txParams?: TxParams,\n ) => Promise<ExtendEntityReturnType>\n\n /**\n * Changes the ownership of the entity with the given address.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/changeOwnership\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {entityKey, newOwner}\n * @returns The entity with the given address. {@link Entity}\n */\n changeOwnership: (\n data: ChangeOwnershipParameters,\n txParams?: TxParams,\n ) => Promise<ChangeOwnershipReturnType>\n\n /**\n * Mutates the entities with the given keys.\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/actions/wallet/mutateEntities\n * - JSON-RPC Methods: [`eth_sendRawTransaction`](https://docs.arkiv.network/dev/json-rpc-api/#mutateEntities)\n *\n * @param args - {data}\n * @returns The entity with the given key. {@link Entity}\n *\n * @example\n * import { createWalletClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createWalletClient({\n * chain: kaolin,\n * transport: http(),\n * })\n * const { entityKey, txHash } = await client.mutateEntities({\n * creates: [{\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attriubutes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * updates: [{\n * entityKey: \"0x123\",\n * payload: toBytes(JSON.stringify({ entity: { entityType: \"testType\", entityId: \"testId\" } })),\n * attributes: [{ key: \"testKey\", value: \"testValue\" }],\n * expiresIn: 1000,\n * }],\n * deletes: [{\n * entityKey: \"0x321\",\n * }],\n * extensions: [{\n * entityKey: \"0x1234\",\n * expiresIn: 1000,\n * }],\n * })\n * console.log(\"entityKey\", entityKey)\n * console.log(\"txHash\", txHash)\n * // {\n * // entityKey: \"0x123\",\n * // txHash: \"0x123\",\n * // }\n */\n mutateEntities: (\n data: MutateEntitiesParameters,\n txParams?: TxParams,\n ) => Promise<MutateEntitiesReturnType>\n }\n\nexport function walletArkivActions<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n>(client: Client<transport, chain, account>) {\n return {\n createEntity: (data: CreateEntityParameters, txParams?: TxParams) =>\n createEntity(client, data, txParams),\n updateEntity: (data: UpdateEntityParameters, txParams?: TxParams) =>\n updateEntity(client, data, txParams),\n deleteEntity: (data: DeleteEntityParameters, txParams?: TxParams) =>\n deleteEntity(client, data, txParams),\n extendEntity: (data: ExtendEntityParameters, txParams?: TxParams) =>\n extendEntity(client, data, txParams),\n changeOwnership: (data: ChangeOwnershipParameters, txParams?: TxParams) =>\n changeOwnership(client, data, txParams),\n mutateEntities: (data: MutateEntitiesParameters, txParams?: TxParams) =>\n mutateEntities(client, data, txParams),\n }\n}\n","import type {\n Account,\n Address,\n Chain,\n Client,\n ParseAccount,\n Prettify,\n RpcSchema,\n Transport,\n WalletClientConfig,\n} from \"viem\"\nimport { createClient, publicActions, walletActions } from \"viem\"\nimport type { ArkivRpcSchema } from \"../types/rpcSchema\"\nimport { type WalletArkivActions, walletArkivActions } from \"./decorators/arkivWallet\"\n\nexport type WalletArkivClient<\n transport extends Transport = Transport,\n chain extends Chain | undefined = Chain | undefined,\n account extends Account | undefined = Account | undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n> = Prettify<\n Client<transport, chain, account, rpcSchema, WalletArkivActions<transport, chain, account>>\n>\n\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://docs.arkiv.network/ts-sdk/clients/public\n *\n * A Public Client is an interface to \"public\" [Ethereum JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/), [Arkiv JSON-RPC API](https://docs.arkiv.network/json-rpc/), and [Kaolin JSON-RPC API](https://kaolin.holesky.arkiv.network/rpc) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Arkiv Public Client. {@link PublicArkivClient}\n *\n * @example\n * import { createPublicClient, http } from 'arkiv'\n * import { kaolin } from 'arkiv/chains'\n *\n * const client = createPublicClient({\n * chain: kaolin,\n * transport: http(),\n * })\n */\nexport function createWalletClient<\n transport extends Transport,\n chain extends Chain | undefined = undefined,\n accountOrAddress extends Account | Address | undefined = undefined,\n rpcSchema extends RpcSchema | undefined = ArkivRpcSchema,\n>(\n parameters: WalletClientConfig<transport, chain, accountOrAddress, rpcSchema>,\n): WalletArkivClient<transport, chain, ParseAccount<accountOrAddress>, rpcSchema> {\n const { key = \"wallet\", name = \"Wallet Client\" } = parameters\n const client = createClient({\n ...parameters,\n key,\n name,\n })\n\n return client\n .extend(publicActions)\n .extend(walletActions)\n .extend(walletArkivActions) as unknown as WalletArkivClient<\n transport,\n chain,\n ParseAccount<accountOrAddress>,\n rpcSchema\n >\n}\n"],"mappings":"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"}
|
package/dist/query/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../entity-
|
|
2
|
-
import { a as Predicate, c as and, d as gte, f as lt, g as or, h as not, i as QueryResult, l as eq, m as neq, n as asc, o as PredicateContainerType, p as lte, r as desc, s as PredicateType, t as QueryBuilder, u as gt } from "../queryBuilder-
|
|
1
|
+
import "../entity-BNSCqNpu.cjs";
|
|
2
|
+
import { a as Predicate, c as and, d as gte, f as lt, g as or, h as not, i as QueryResult, l as eq, m as neq, n as asc, o as PredicateContainerType, p as lte, r as desc, s as PredicateType, t as QueryBuilder, u as gt } from "../queryBuilder-CvAx57pq.cjs";
|
|
3
3
|
|
|
4
4
|
//#region src/query/errors.d.ts
|
|
5
5
|
declare class NoMoreResultsError extends Error {
|
package/dist/query/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "../entity-
|
|
2
|
-
import { a as Predicate, c as and, d as gte, f as lt, g as or, h as not, i as QueryResult, l as eq, m as neq, n as asc, o as PredicateContainerType, p as lte, r as desc, s as PredicateType, t as QueryBuilder, u as gt } from "../queryBuilder-
|
|
1
|
+
import "../entity-CWj4qVCX.js";
|
|
2
|
+
import { a as Predicate, c as and, d as gte, f as lt, g as or, h as not, i as QueryResult, l as eq, m as neq, n as asc, o as PredicateContainerType, p as lte, r as desc, s as PredicateType, t as QueryBuilder, u as gt } from "../queryBuilder-CXcMv0Uc.js";
|
|
3
3
|
|
|
4
4
|
//#region src/query/errors.d.ts
|
|
5
5
|
declare class NoMoreResultsError extends Error {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as ArkivClient, t as Entity } from "./entity-
|
|
1
|
+
import { g as ArkivClient, t as Entity } from "./entity-CWj4qVCX.js";
|
|
2
2
|
import { Hex } from "viem";
|
|
3
3
|
|
|
4
4
|
//#region src/query/predicate.d.ts
|
|
@@ -307,8 +307,8 @@ declare class QueryBuilder {
|
|
|
307
307
|
* const result = await builder.where(eq("name", "John")).count()
|
|
308
308
|
* // result = 10
|
|
309
309
|
*/
|
|
310
|
-
count(): Promise<
|
|
310
|
+
count(): Promise<number>;
|
|
311
311
|
}
|
|
312
312
|
//#endregion
|
|
313
313
|
export { Predicate as a, and as c, gte as d, lt as f, or as g, not as h, QueryResult as i, eq as l, neq as m, asc as n, PredicateContainerType as o, lte as p, desc as r, PredicateType as s, QueryBuilder as t, gt as u };
|
|
314
|
-
//# sourceMappingURL=queryBuilder-
|
|
314
|
+
//# sourceMappingURL=queryBuilder-CXcMv0Uc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryBuilder-
|
|
1
|
+
{"version":3,"file":"queryBuilder-CXcMv0Uc.d.ts","names":[],"sources":["../src/query/predicate.ts","../src/query/queryResult.ts","../src/query/queryBuilder.ts"],"sourcesContent":[],"mappings":";;;;KAAY,aAAA;KACA,sBAAA;KAEA,SAAA;QAEA;EALA,GAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,MAAA;AAEZ,CAAA,GAAY;EAEA,IAAA,EAKA,sBALA;EAKA,UAAA,EACM,SADN,EAAA;CACM;;AAclB;AAeA;AAcA;AAcA;AAcA;AAcA;AAcA;AAcA;AAaA;;iBAhHgB,EAAA,aAAe,cAAc;;AClB7C;;;;;;;;;;ACCK,iBFgCW,GAAA,CEhCK,UAAA,EFgCW,SEhCX,EAAA,CAAA,EFgCyB,SEhCzB;AAerB;AAiBA;AAaA;;;;;;;;AAmPa,iBFlPG,EAAA,CEkPH,GAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,GAAA,MAAA,CAAA,EFlP4C,SEkP5C;;;;;;;;;;;iBFpOG,GAAA,uCAA0C;;;;;;;;;;;iBAc1C,EAAA,uCAAyC;;;;;;;;;;;iBAczC,GAAA,uCAA0C;;;;;;;;;;;iBAc1C,EAAA,uCAAyC;;;;;;;;;;;iBAczC,GAAA,uCAA0C;;;;;;;;;;iBAa1C,GAAA,eAAkB;;;cClIrB,WAAA;YACD;EDRA,QAAA,eAAa;EACb,QAAA,OAAA;EAEA,QAAA,MAAS;EAET,QAAA,aAAA;EAKA,QAAA,aAAA;EACM,IAAA,YAAA,CAAA,CAAA,ECKI,YDLJ;EAAS,IAAA,MAAA,CAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAcX,WAAE,CAAA,QAAa,ECAjB,MDA+B,EAAA,EAAA,YAAS,ECCpC,YDDoC,EAAA,MAAA,EAAA,MAAA,GAAA,SAAA,EAAA,KAAA,EAAA,MAAA,GAAA,SAAA,EAAA,YAAA,EAAA,MAAA,GAAA,SAAA;EAetC,IAAA,CAAA,CAAG,ECDP,ODCO,CAAA,IAAa,CAAA;EAchB,WAAE,CAAA,CAAA,EAAA,OAAuC;AAczD;;;AApEA,KEQK,gBAAA,GFRoB;EACb,IAAA,EAAA,MAAA;EAEA,IAAA,EAAA,QAAS,GAAA,QAAA;EAET,KAAA,EAAA,KAAA,GAAA,MAAA;CAKA;;;AAeZ;AAeA;AAcA;AAcA;AAcA;AAcA;AAcA;AAcgB,iBErGA,GAAA,CFqG0C,aAAS,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,GAAA,QAAA,CAAA,EErGa,gBFqGb;AAanE;;;;AClIA;;;;;AAgCY,iBCCI,IAAA,CDDJ,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,GAAA,QAAA,CAAA,ECCqE,gBDDrE;;;;;ACjC+B;AAiB3C;AAiBgB,cAaH,YAAA,CAboE;EAapE,QAAA,OAAY;EAYH,QAAA,QAAA;EAcH,QAAA,QAAA;EA+BS,QAAA,aAAA;EAuIR,QAAA,eAAA;EAAc,QAAA,aAAA;EAmBrB,QAAA,YAAA;EAAA,QAAA,MAAA;EAgCA,QAAA,OAAA;EAAA,QAAA,WAAA;sBAvOS;;;;;;;;;;mBAcH;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA+BS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAuIR,cAAc;;;;;;;;;;;WAmBrB,QAAA;;;;;;;;;;WAgCA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as ArkivClient, t as Entity } from "./entity-
|
|
1
|
+
import { g as ArkivClient, t as Entity } from "./entity-BNSCqNpu.cjs";
|
|
2
2
|
import { Hex } from "viem";
|
|
3
3
|
|
|
4
4
|
//#region src/query/predicate.d.ts
|
|
@@ -307,8 +307,8 @@ declare class QueryBuilder {
|
|
|
307
307
|
* const result = await builder.where(eq("name", "John")).count()
|
|
308
308
|
* // result = 10
|
|
309
309
|
*/
|
|
310
|
-
count(): Promise<
|
|
310
|
+
count(): Promise<number>;
|
|
311
311
|
}
|
|
312
312
|
//#endregion
|
|
313
313
|
export { Predicate as a, and as c, gte as d, lt as f, or as g, not as h, QueryResult as i, eq as l, neq as m, asc as n, PredicateContainerType as o, lte as p, desc as r, PredicateType as s, QueryBuilder as t, gt as u };
|
|
314
|
-
//# sourceMappingURL=queryBuilder-
|
|
314
|
+
//# sourceMappingURL=queryBuilder-CvAx57pq.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryBuilder-
|
|
1
|
+
{"version":3,"file":"queryBuilder-CvAx57pq.d.cts","names":[],"sources":["../src/query/predicate.ts","../src/query/queryResult.ts","../src/query/queryBuilder.ts"],"sourcesContent":[],"mappings":";;;;KAAY,aAAA;KACA,sBAAA;KAEA,SAAA;QAEA;EALA,GAAA,EAAA,MAAA;EACA,KAAA,EAAA,MAAA,GAAA,MAAA;AAEZ,CAAA,GAAY;EAEA,IAAA,EAKA,sBALA;EAKA,UAAA,EACM,SADN,EAAA;CACM;;AAclB;AAeA;AAcA;AAcA;AAcA;AAcA;AAcA;AAcA;AAaA;;iBAhHgB,EAAA,aAAe,cAAc;;AClB7C;;;;;;;;;;ACCK,iBFgCW,GAAA,CEhCK,UAAA,EFgCW,SEhCX,EAAA,CAAA,EFgCyB,SEhCzB;AAerB;AAiBA;AAaA;;;;;;;;AAmPa,iBFlPG,EAAA,CEkPH,GAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,GAAA,MAAA,CAAA,EFlP4C,SEkP5C;;;;;;;;;;;iBFpOG,GAAA,uCAA0C;;;;;;;;;;;iBAc1C,EAAA,uCAAyC;;;;;;;;;;;iBAczC,GAAA,uCAA0C;;;;;;;;;;;iBAc1C,EAAA,uCAAyC;;;;;;;;;;;iBAczC,GAAA,uCAA0C;;;;;;;;;;iBAa1C,GAAA,eAAkB;;;cClIrB,WAAA;YACD;EDRA,QAAA,eAAa;EACb,QAAA,OAAA;EAEA,QAAA,MAAS;EAET,QAAA,aAAA;EAKA,QAAA,aAAA;EACM,IAAA,YAAA,CAAA,CAAA,ECKI,YDLJ;EAAS,IAAA,MAAA,CAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAcX,WAAE,CAAA,QAAa,ECAjB,MDA+B,EAAA,EAAA,YAAS,ECCpC,YDDoC,EAAA,MAAA,EAAA,MAAA,GAAA,SAAA,EAAA,KAAA,EAAA,MAAA,GAAA,SAAA,EAAA,YAAA,EAAA,MAAA,GAAA,SAAA;EAetC,IAAA,CAAA,CAAG,ECDP,ODCO,CAAA,IAAa,CAAA;EAchB,WAAE,CAAA,CAAA,EAAA,OAAuC;AAczD;;;AApEA,KEQK,gBAAA,GFRoB;EACb,IAAA,EAAA,MAAA;EAEA,IAAA,EAAA,QAAS,GAAA,QAAA;EAET,KAAA,EAAA,KAAA,GAAA,MAAA;CAKA;;;AAeZ;AAeA;AAcA;AAcA;AAcA;AAcA;AAcA;AAcgB,iBErGA,GAAA,CFqG0C,aAAS,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,GAAA,QAAA,CAAA,EErGa,gBFqGb;AAanE;;;;AClIA;;;;;AAgCY,iBCCI,IAAA,CDDJ,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,GAAA,QAAA,CAAA,ECCqE,gBDDrE;;;;;ACjC+B;AAiB3C;AAiBgB,cAaH,YAAA,CAboE;EAapE,QAAA,OAAY;EAYH,QAAA,QAAA;EAcH,QAAA,QAAA;EA+BS,QAAA,aAAA;EAuIR,QAAA,eAAA;EAAc,QAAA,aAAA;EAmBrB,QAAA,YAAA;EAAA,QAAA,MAAA;EAgCA,QAAA,OAAA;EAAA,QAAA,WAAA;sBAvOS;;;;;;;;;;mBAcH;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA+BS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAuIR,cAAc;;;;;;;;;;;WAmBrB,QAAA;;;;;;;;;;WAgCA"}
|
package/dist/types/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "../entity-
|
|
1
|
+
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "../entity-BNSCqNpu.cjs";
|
|
2
2
|
export { ArkivRpcSchema, Attribute, ChangeOwnershipParameters, ChangeOwnershipReturnType, CreateEntityParameters, CreateEntityReturnType, DeleteEntityParameters, DeleteEntityReturnType, Entity, ExtendEntityParameters, ExtendEntityReturnType, MimeType, MutateEntitiesParameters, MutateEntitiesReturnType, RpcEntity, RpcIncludeData, RpcQueryOptions, TxParams, UpdateEntityParameters, UpdateEntityReturnType };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "../entity-
|
|
1
|
+
import { _ as ArkivRpcSchema, a as MutateEntitiesReturnType, b as RpcQueryOptions, c as ExtendEntityParameters, d as DeleteEntityReturnType, f as CreateEntityParameters, h as ChangeOwnershipReturnType, i as MutateEntitiesParameters, l as ExtendEntityReturnType, m as ChangeOwnershipParameters, n as TxParams, o as UpdateEntityParameters, p as CreateEntityReturnType, r as Attribute, s as UpdateEntityReturnType, t as Entity, u as DeleteEntityParameters, v as RpcEntity, x as MimeType, y as RpcIncludeData } from "../entity-CWj4qVCX.js";
|
|
2
2
|
export { ArkivRpcSchema, Attribute, ChangeOwnershipParameters, ChangeOwnershipReturnType, CreateEntityParameters, CreateEntityReturnType, DeleteEntityParameters, DeleteEntityReturnType, Entity, ExtendEntityParameters, ExtendEntityReturnType, MimeType, MutateEntitiesParameters, MutateEntitiesReturnType, RpcEntity, RpcIncludeData, RpcQueryOptions, TxParams, UpdateEntityParameters, UpdateEntityReturnType };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/utils/expirationTime.ts","../../src/utils/payload.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;EAAA,SAAA,EAAA,CAAA,KAUZ,EAAA,MAAA,EAAA,GADkB,MAAI;;;;ECTP,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/utils/expirationTime.ts","../../src/utils/payload.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;EAAA,SAAA,EAAA,CAAA,KAUZ,EAAA,MAAA,EAAA,GADkB,MAAI;;;;ECTP,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,EAAgB,GAAA,MAAA;EAI7B,UAAA,EAAA,CAAA,MAAe,EAAA,MAAA,EAAA,GAAgB,MAAA;mBDK5B;;;;iBCTH,aAAA,gBAA6B;iBAI7B,eAAA,gBAA+B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/utils/expirationTime.ts","../../src/utils/payload.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;EAAA,SAAA,EAAA,CAAA,KAUZ,EAAA,MAAA,EAAA,GADkB,MAAI;;;;ECTP,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/utils/expirationTime.ts","../../src/utils/payload.ts"],"sourcesContent":[],"mappings":";;;cAEa;;;EAAA,SAAA,EAAA,CAAA,KAUZ,EAAA,MAAA,EAAA,GADkB,MAAI;;;;ECTP,SAAA,EAAA,CAAA,KAAa,EAAA,MAAA,EAAgB,GAAA,MAAA;EAI7B,UAAA,EAAA,CAAA,MAAe,EAAA,MAAA,EAAA,GAAgB,MAAA;mBDK5B;;;;iBCTH,aAAA,gBAA6B;iBAI7B,eAAA,gBAA+B"}
|
package/package.json
CHANGED
|
@@ -22,12 +22,28 @@ export async function getEntity(client: ArkivClient, key: Hex) {
|
|
|
22
22
|
|
|
23
23
|
const result = await client.request({
|
|
24
24
|
method: "arkiv_query",
|
|
25
|
-
params: [
|
|
25
|
+
params: [
|
|
26
|
+
`$key = ${hexKey}`,
|
|
27
|
+
{
|
|
28
|
+
includeData: {
|
|
29
|
+
key: true,
|
|
30
|
+
attributes: true,
|
|
31
|
+
payload: true,
|
|
32
|
+
contentType: true,
|
|
33
|
+
expiration: true,
|
|
34
|
+
owner: true,
|
|
35
|
+
createdAtBlock: true,
|
|
36
|
+
lastModifiedAtBlock: true,
|
|
37
|
+
transactionIndexInBlock: true,
|
|
38
|
+
operationIndexInTransaction: true,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
],
|
|
26
42
|
})
|
|
27
43
|
|
|
28
|
-
if (!result.data) {
|
|
44
|
+
if (!result.data.length) {
|
|
29
45
|
throw new NoEntityFoundError()
|
|
30
46
|
}
|
|
31
47
|
|
|
32
|
-
return entityFromRpcResult(result.data[0])
|
|
48
|
+
return await entityFromRpcResult(result.data[0])
|
|
33
49
|
}
|
package/src/types/rpcSchema.ts
CHANGED