@arkiv-network/sdk 0.3.2-dev.3 → 0.3.2-dev.4

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.
Files changed (49) hide show
  1. package/README.md +12 -8
  2. package/dist/chains/index.cjs +1 -0
  3. package/dist/{entity-BG8YycYJ.d.ts → entity-Bsvmepwv.d.cts} +25 -13
  4. package/dist/entity-Bsvmepwv.d.cts.map +1 -0
  5. package/dist/{entity-0JJeFAgO.d.cts → entity-ChTOBhd6.d.ts} +25 -13
  6. package/dist/entity-ChTOBhd6.d.ts.map +1 -0
  7. package/dist/index.cjs +31 -21
  8. package/dist/index.d.cts +3 -3
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.js +31 -21
  11. package/dist/index.js.map +1 -1
  12. package/dist/query/index.cjs +1 -1
  13. package/dist/query/index.d.cts +2 -2
  14. package/dist/query/index.d.ts +2 -2
  15. package/dist/query/index.js +1 -1
  16. package/dist/{queryBuilder-Dc_ii8LH.d.cts → queryBuilder-CNRqyot6.d.cts} +2 -2
  17. package/dist/{queryBuilder-Dc_ii8LH.d.cts.map → queryBuilder-CNRqyot6.d.cts.map} +1 -1
  18. package/dist/{queryBuilder-DEkfSiCF.cjs → queryBuilder-Cn5JJRMM.cjs} +79 -11
  19. package/dist/{queryBuilder-BNhnpewa.d.ts → queryBuilder-DI251Jjp.d.ts} +2 -2
  20. package/dist/{queryBuilder-BNhnpewa.d.ts.map → queryBuilder-DI251Jjp.d.ts.map} +1 -1
  21. package/dist/{queryBuilder-CAQ7TDMZ.js → queryBuilder-DVs4ZIyZ.js} +45 -13
  22. package/dist/queryBuilder-DVs4ZIyZ.js.map +1 -0
  23. package/dist/types/index.d.cts +1 -1
  24. package/dist/types/index.d.ts +1 -1
  25. package/dist/utils/index.cjs +1 -0
  26. package/dist/utils/index.d.cts.map +1 -1
  27. package/package.json +4 -2
  28. package/src/actions/public/getBlockTiming.ts +4 -1
  29. package/src/actions/public/subscribeEntityEvents.ts +6 -3
  30. package/src/actions/wallet/changeOwnership.ts +5 -2
  31. package/src/actions/wallet/createEntity.ts +8 -5
  32. package/src/actions/wallet/deleteEntity.ts +8 -5
  33. package/src/actions/wallet/extendEntity.ts +8 -5
  34. package/src/actions/wallet/mutateEntities.ts +8 -4
  35. package/src/actions/wallet/updateEntity.ts +8 -5
  36. package/src/clients/decorators/arkivWallet.ts +1 -1
  37. package/src/query/engine.test.ts +75 -0
  38. package/src/query/engine.ts +28 -9
  39. package/src/query/queryBuilder.test.ts +8 -0
  40. package/src/query/queryResult.ts +4 -1
  41. package/src/types/entity.ts +22 -10
  42. package/src/types/rpcSchema.ts +9 -1
  43. package/src/utils/arkivTransactions.ts +6 -3
  44. package/src/utils/compression.ts +7 -4
  45. package/src/utils/entities.ts +15 -2
  46. package/src/utils/logger.ts +13 -0
  47. package/dist/entity-0JJeFAgO.d.cts.map +0 -1
  48. package/dist/entity-BG8YycYJ.d.ts.map +0 -1
  49. package/dist/queryBuilder-CAQ7TDMZ.js.map +0 -1
@@ -1,5 +1,35 @@
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc$1) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc$1 = __getOwnPropDesc(from, key)) || desc$1.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+
23
+ //#endregion
1
24
  let viem = require("viem");
25
+ let debug = require("debug");
26
+ debug = __toESM(debug);
2
27
 
28
+ //#region src/utils/logger.ts
29
+ const ROOT_NAMESPACE = "arkiv";
30
+ const getLogger = (scope) => (0, debug.default)(`${ROOT_NAMESPACE}:${scope}`);
31
+
32
+ //#endregion
3
33
  //#region src/query/errors.ts
4
34
  var NoMoreResultsError = class extends Error {
5
35
  constructor() {
@@ -26,31 +56,41 @@ var NoEntityFoundError = class extends Error {
26
56
  //#region src/types/entity.ts
27
57
  var Entity = class {
28
58
  key;
59
+ contentType;
29
60
  owner;
30
61
  expiresAtBlock;
62
+ createdAtBlock;
63
+ lastModifiedAtBlock;
64
+ transactionIndexInBlock;
65
+ operationIndexInTransaction;
31
66
  payload;
32
67
  attributes;
33
- contentType;
34
- constructor(key, contentType, owner, expiresAtBlock, payload, attributes) {
68
+ constructor(key, contentType = void 0, owner = void 0, expiresAtBlock = void 0, createdAtBlock = void 0, lastModifiedAtBlock = void 0, transactionIndexInBlock = void 0, operationIndexInTransaction = void 0, payload = void 0, attributes) {
35
69
  this.key = key;
36
70
  this.owner = owner;
37
71
  this.expiresAtBlock = expiresAtBlock;
72
+ this.createdAtBlock = createdAtBlock;
73
+ this.lastModifiedAtBlock = lastModifiedAtBlock;
74
+ this.transactionIndexInBlock = transactionIndexInBlock;
75
+ this.operationIndexInTransaction = operationIndexInTransaction;
38
76
  this.payload = payload;
39
77
  this.attributes = attributes;
40
78
  this.contentType = contentType;
41
79
  }
42
80
  toText() {
43
- return (0, viem.bytesToString)(this.payload);
81
+ return this.payload ? (0, viem.bytesToString)(this.payload) : "";
44
82
  }
45
83
  toJson() {
46
- return JSON.parse((0, viem.bytesToString)(this.payload));
84
+ return this.payload ? JSON.parse((0, viem.bytesToString)(this.payload)) : {};
47
85
  }
48
86
  };
49
87
 
50
88
  //#endregion
51
89
  //#region src/utils/entities.ts
90
+ const logger$2 = getLogger("utils:entities");
52
91
  async function entityFromRpcResult(rpcEntity) {
53
- return new Entity(rpcEntity.key, rpcEntity.contentType, rpcEntity.owner, rpcEntity.expiresAt, (0, viem.toBytes)(rpcEntity.value), [...(rpcEntity.stringAttributes ?? []).map(({ key, value }) => ({
92
+ logger$2("entityFromRpcResult %o", rpcEntity);
93
+ return new Entity(rpcEntity.key, rpcEntity.contentType, rpcEntity.owner, rpcEntity.expiresAt !== void 0 ? BigInt(rpcEntity.expiresAt) : void 0, rpcEntity.createdAtBlock !== void 0 ? BigInt(rpcEntity.createdAtBlock) : void 0, rpcEntity.lastModifiedAtBlock !== void 0 ? BigInt(rpcEntity.lastModifiedAtBlock) : void 0, rpcEntity.transactionIndexInBlock !== void 0 ? BigInt(rpcEntity.transactionIndexInBlock) : void 0, rpcEntity.operationIndexInTransaction !== void 0 ? BigInt(rpcEntity.operationIndexInTransaction) : void 0, rpcEntity.value !== void 0 ? (0, viem.toBytes)(rpcEntity.value) : void 0, [...(rpcEntity.stringAttributes ?? []).map(({ key, value }) => ({
54
94
  key,
55
95
  value
56
96
  })), ...(rpcEntity.numericAttributes ?? []).map(({ key, value }) => ({
@@ -61,6 +101,7 @@ async function entityFromRpcResult(rpcEntity) {
61
101
 
62
102
  //#endregion
63
103
  //#region src/query/engine.ts
104
+ const logger$1 = getLogger("query:engine");
64
105
  function processPredicates(predicates) {
65
106
  const processValue = (value) => {
66
107
  if (typeof value === "string") return `"${value}"`;
@@ -83,7 +124,17 @@ function processPredicates(predicates) {
83
124
  }
84
125
  async function processQuery(client, queryParams) {
85
126
  const { predicates, limit, cursor, ownedBy, orderBy, validAtBlock, withAttributes, withMetadata, withPayload } = queryParams;
86
- console.debug(`Processing query with params: predicates: ${JSON.stringify(predicates)}, cursor: ${cursor}, limit: ${limit}, ownedBy: ${ownedBy}, orderBy: ${JSON.stringify(orderBy)}, validAtBlock: ${validAtBlock}, withAttributes: ${withAttributes}, withMetadata: ${withMetadata}, withPayload: ${withPayload}`);
127
+ logger$1("Processing query with params %o", {
128
+ predicates,
129
+ cursor,
130
+ limit,
131
+ ownedBy,
132
+ orderBy,
133
+ validAtBlock,
134
+ withAttributes,
135
+ withMetadata,
136
+ withPayload
137
+ });
87
138
  let query = processPredicates(predicates);
88
139
  if (ownedBy) query += ` && $owner=${ownedBy}`;
89
140
  query = query.trim();
@@ -94,29 +145,34 @@ async function processQuery(client, queryParams) {
94
145
  payload: withPayload ?? false,
95
146
  contentType: withMetadata ?? false,
96
147
  expiration: withMetadata ?? false,
97
- owner: withMetadata ?? false
148
+ owner: withMetadata ?? false,
149
+ createdAtBlock: withMetadata ?? false,
150
+ lastModifiedAtBlock: withMetadata ?? false,
151
+ transactionIndexInBlock: withMetadata ?? false,
152
+ operationIndexInTransaction: withMetadata ?? false
98
153
  } };
99
154
  if (validAtBlock !== void 0) queryOptions.atBlock = Number(validAtBlock);
100
155
  if (limit !== void 0) queryOptions.resultsPerPage = limit;
101
156
  if (cursor !== void 0) queryOptions.cursor = cursor;
102
157
  if (orderBy !== void 0) queryOptions.orderBy = orderBy;
103
- console.debug(`Built query to send: ${query}, queryOptions: ${JSON.stringify({
158
+ logger$1("Built query to send %s %o", query, {
104
159
  includeData: queryOptions.includeData,
105
160
  atBlock: queryOptions.atBlock?.toString(),
106
161
  orderBy: queryOptions.orderBy,
107
162
  resultsPerPage: queryOptions.resultsPerPage,
108
163
  cursor: queryOptions.cursor
109
- })}`);
164
+ });
110
165
  const result = await client.request({
111
166
  method: "arkiv_query",
112
167
  params: [query, queryOptions]
113
168
  });
114
- console.debug("Raw result from query: ", result);
169
+ logger$1("Raw result from query %o", result);
115
170
  return result;
116
171
  }
117
172
 
118
173
  //#endregion
119
174
  //#region src/query/queryResult.ts
175
+ const logger = getLogger("query:result");
120
176
  var QueryResult = class {
121
177
  entities;
122
178
  _endOfIteration;
@@ -147,7 +203,7 @@ var QueryResult = class {
147
203
  this._queryBuilder = result.queryBuilder;
148
204
  this._endOfIteration = !result.cursor || result.entities.length < this._limit;
149
205
  this._cursor = result.cursor;
150
- console.debug("Current block height for next page: ", this._validAtBlock);
206
+ logger("Current block height for next page %s", this._validAtBlock?.toString() ?? "unknown");
151
207
  }
152
208
  hasNextPage() {
153
209
  return !this._endOfIteration;
@@ -429,6 +485,12 @@ Object.defineProperty(exports, 'QueryResult', {
429
485
  return QueryResult;
430
486
  }
431
487
  });
488
+ Object.defineProperty(exports, '__toESM', {
489
+ enumerable: true,
490
+ get: function () {
491
+ return __toESM;
492
+ }
493
+ });
432
494
  Object.defineProperty(exports, 'asc', {
433
495
  enumerable: true,
434
496
  get: function () {
@@ -446,4 +508,10 @@ Object.defineProperty(exports, 'entityFromRpcResult', {
446
508
  get: function () {
447
509
  return entityFromRpcResult;
448
510
  }
511
+ });
512
+ Object.defineProperty(exports, 'getLogger', {
513
+ enumerable: true,
514
+ get: function () {
515
+ return getLogger;
516
+ }
449
517
  });
@@ -1,4 +1,4 @@
1
- import { g as ArkivClient, t as Entity } from "./entity-BG8YycYJ.js";
1
+ import { g as ArkivClient, t as Entity } from "./entity-ChTOBhd6.js";
2
2
  import { Hex } from "viem";
3
3
 
4
4
  //#region src/query/predicate.d.ts
@@ -311,4 +311,4 @@ declare class QueryBuilder {
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-BNhnpewa.d.ts.map
314
+ //# sourceMappingURL=queryBuilder-DI251Jjp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryBuilder-BNhnpewa.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;;ACrB7C;;;;;;;;;;ACIK,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;;;cCrIrB,WAAA;YACD;EDLA,QAAA,eAAa;EACb,QAAA,OAAA;EAEA,QAAA,MAAS;EAET,QAAA,aAAA;EAKA,QAAA,aAAA;EACM,IAAA,YAAA,CAAA,CAAA,ECEI,YDFJ;EAAS,IAAA,MAAA,CAAA,CAAA,EAAA,MAAA,GAAA,SAAA;EAcX,WAAE,CAAA,QAAa,ECHjB,MDG+B,EAAA,EAAA,YAAS,ECFpC,YDEoC,EAAA,MAAA,EAAA,MAAA,GAAA,SAAA,EAAA,KAAA,EAAA,MAAA,GAAA,SAAA,EAAA,YAAA,EAAA,MAAA,GAAA,SAAA;EAetC,IAAA,CAAA,CAAG,ECJP,ODIO,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;;;;ACrIA;;;;;AAgCY,iBCII,IAAA,CDJJ,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,GAAA,QAAA,CAAA,ECIqE,gBDJrE;;;;;AC9B+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
+ {"version":3,"file":"queryBuilder-DI251Jjp.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,5 +1,11 @@
1
1
  import { bytesToString, toBytes } from "viem";
2
+ import createDebug from "debug";
2
3
 
4
+ //#region src/utils/logger.ts
5
+ const ROOT_NAMESPACE = "arkiv";
6
+ const getLogger = (scope) => createDebug(`${ROOT_NAMESPACE}:${scope}`);
7
+
8
+ //#endregion
3
9
  //#region src/query/errors.ts
4
10
  var NoMoreResultsError = class extends Error {
5
11
  constructor() {
@@ -26,31 +32,41 @@ var NoEntityFoundError = class extends Error {
26
32
  //#region src/types/entity.ts
27
33
  var Entity = class {
28
34
  key;
35
+ contentType;
29
36
  owner;
30
37
  expiresAtBlock;
38
+ createdAtBlock;
39
+ lastModifiedAtBlock;
40
+ transactionIndexInBlock;
41
+ operationIndexInTransaction;
31
42
  payload;
32
43
  attributes;
33
- contentType;
34
- constructor(key, contentType, owner, expiresAtBlock, payload, attributes) {
44
+ constructor(key, contentType = void 0, owner = void 0, expiresAtBlock = void 0, createdAtBlock = void 0, lastModifiedAtBlock = void 0, transactionIndexInBlock = void 0, operationIndexInTransaction = void 0, payload = void 0, attributes) {
35
45
  this.key = key;
36
46
  this.owner = owner;
37
47
  this.expiresAtBlock = expiresAtBlock;
48
+ this.createdAtBlock = createdAtBlock;
49
+ this.lastModifiedAtBlock = lastModifiedAtBlock;
50
+ this.transactionIndexInBlock = transactionIndexInBlock;
51
+ this.operationIndexInTransaction = operationIndexInTransaction;
38
52
  this.payload = payload;
39
53
  this.attributes = attributes;
40
54
  this.contentType = contentType;
41
55
  }
42
56
  toText() {
43
- return bytesToString(this.payload);
57
+ return this.payload ? bytesToString(this.payload) : "";
44
58
  }
45
59
  toJson() {
46
- return JSON.parse(bytesToString(this.payload));
60
+ return this.payload ? JSON.parse(bytesToString(this.payload)) : {};
47
61
  }
48
62
  };
49
63
 
50
64
  //#endregion
51
65
  //#region src/utils/entities.ts
66
+ const logger$2 = getLogger("utils:entities");
52
67
  async function entityFromRpcResult(rpcEntity) {
53
- return new Entity(rpcEntity.key, rpcEntity.contentType, rpcEntity.owner, rpcEntity.expiresAt, toBytes(rpcEntity.value), [...(rpcEntity.stringAttributes ?? []).map(({ key, value }) => ({
68
+ logger$2("entityFromRpcResult %o", rpcEntity);
69
+ return new Entity(rpcEntity.key, rpcEntity.contentType, rpcEntity.owner, rpcEntity.expiresAt !== void 0 ? BigInt(rpcEntity.expiresAt) : void 0, rpcEntity.createdAtBlock !== void 0 ? BigInt(rpcEntity.createdAtBlock) : void 0, rpcEntity.lastModifiedAtBlock !== void 0 ? BigInt(rpcEntity.lastModifiedAtBlock) : void 0, rpcEntity.transactionIndexInBlock !== void 0 ? BigInt(rpcEntity.transactionIndexInBlock) : void 0, rpcEntity.operationIndexInTransaction !== void 0 ? BigInt(rpcEntity.operationIndexInTransaction) : void 0, rpcEntity.value !== void 0 ? toBytes(rpcEntity.value) : void 0, [...(rpcEntity.stringAttributes ?? []).map(({ key, value }) => ({
54
70
  key,
55
71
  value
56
72
  })), ...(rpcEntity.numericAttributes ?? []).map(({ key, value }) => ({
@@ -61,6 +77,7 @@ async function entityFromRpcResult(rpcEntity) {
61
77
 
62
78
  //#endregion
63
79
  //#region src/query/engine.ts
80
+ const logger$1 = getLogger("query:engine");
64
81
  function processPredicates(predicates) {
65
82
  const processValue = (value) => {
66
83
  if (typeof value === "string") return `"${value}"`;
@@ -83,7 +100,17 @@ function processPredicates(predicates) {
83
100
  }
84
101
  async function processQuery(client, queryParams) {
85
102
  const { predicates, limit, cursor, ownedBy, orderBy, validAtBlock, withAttributes, withMetadata, withPayload } = queryParams;
86
- console.debug(`Processing query with params: predicates: ${JSON.stringify(predicates)}, cursor: ${cursor}, limit: ${limit}, ownedBy: ${ownedBy}, orderBy: ${JSON.stringify(orderBy)}, validAtBlock: ${validAtBlock}, withAttributes: ${withAttributes}, withMetadata: ${withMetadata}, withPayload: ${withPayload}`);
103
+ logger$1("Processing query with params %o", {
104
+ predicates,
105
+ cursor,
106
+ limit,
107
+ ownedBy,
108
+ orderBy,
109
+ validAtBlock,
110
+ withAttributes,
111
+ withMetadata,
112
+ withPayload
113
+ });
87
114
  let query = processPredicates(predicates);
88
115
  if (ownedBy) query += ` && $owner=${ownedBy}`;
89
116
  query = query.trim();
@@ -94,29 +121,34 @@ async function processQuery(client, queryParams) {
94
121
  payload: withPayload ?? false,
95
122
  contentType: withMetadata ?? false,
96
123
  expiration: withMetadata ?? false,
97
- owner: withMetadata ?? false
124
+ owner: withMetadata ?? false,
125
+ createdAtBlock: withMetadata ?? false,
126
+ lastModifiedAtBlock: withMetadata ?? false,
127
+ transactionIndexInBlock: withMetadata ?? false,
128
+ operationIndexInTransaction: withMetadata ?? false
98
129
  } };
99
130
  if (validAtBlock !== void 0) queryOptions.atBlock = Number(validAtBlock);
100
131
  if (limit !== void 0) queryOptions.resultsPerPage = limit;
101
132
  if (cursor !== void 0) queryOptions.cursor = cursor;
102
133
  if (orderBy !== void 0) queryOptions.orderBy = orderBy;
103
- console.debug(`Built query to send: ${query}, queryOptions: ${JSON.stringify({
134
+ logger$1("Built query to send %s %o", query, {
104
135
  includeData: queryOptions.includeData,
105
136
  atBlock: queryOptions.atBlock?.toString(),
106
137
  orderBy: queryOptions.orderBy,
107
138
  resultsPerPage: queryOptions.resultsPerPage,
108
139
  cursor: queryOptions.cursor
109
- })}`);
140
+ });
110
141
  const result = await client.request({
111
142
  method: "arkiv_query",
112
143
  params: [query, queryOptions]
113
144
  });
114
- console.debug("Raw result from query: ", result);
145
+ logger$1("Raw result from query %o", result);
115
146
  return result;
116
147
  }
117
148
 
118
149
  //#endregion
119
150
  //#region src/query/queryResult.ts
151
+ const logger = getLogger("query:result");
120
152
  var QueryResult = class {
121
153
  entities;
122
154
  _endOfIteration;
@@ -147,7 +179,7 @@ var QueryResult = class {
147
179
  this._queryBuilder = result.queryBuilder;
148
180
  this._endOfIteration = !result.cursor || result.entities.length < this._limit;
149
181
  this._cursor = result.cursor;
150
- console.debug("Current block height for next page: ", this._validAtBlock);
182
+ logger("Current block height for next page %s", this._validAtBlock?.toString() ?? "unknown");
151
183
  }
152
184
  hasNextPage() {
153
185
  return !this._endOfIteration;
@@ -393,5 +425,5 @@ var QueryBuilder = class {
393
425
  };
394
426
 
395
427
  //#endregion
396
- export { entityFromRpcResult as a, NoMoreResultsError as c, QueryResult as i, OffsetCannotBeLessThanZeroError as l, asc as n, NoCursorOrLimitError as o, desc as r, NoEntityFoundError as s, QueryBuilder as t };
397
- //# sourceMappingURL=queryBuilder-CAQ7TDMZ.js.map
428
+ export { entityFromRpcResult as a, NoMoreResultsError as c, QueryResult as i, OffsetCannotBeLessThanZeroError as l, asc as n, NoCursorOrLimitError as o, desc as r, NoEntityFoundError as s, QueryBuilder as t, getLogger as u };
429
+ //# sourceMappingURL=queryBuilder-DVs4ZIyZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilder-DVs4ZIyZ.js","names":["logger","logger","predicate","queryOptions: RpcQueryOptions","order"],"sources":["../src/utils/logger.ts","../src/query/errors.ts","../src/types/entity.ts","../src/utils/entities.ts","../src/query/engine.ts","../src/query/queryResult.ts","../src/query/queryBuilder.ts"],"sourcesContent":["import createDebug from \"debug\"\n\nconst ROOT_NAMESPACE = \"arkiv\"\n\nexport const getLogger = (scope: string) => createDebug(`${ROOT_NAMESPACE}:${scope}`)\n\nexport const enableDebug = (namespaces: string): void => {\n createDebug.enable(namespaces)\n}\n\nexport const disableDebug = (): void => {\n createDebug.disable()\n}\n","export class NoMoreResultsError extends Error {\n constructor() {\n super(\"No more results\")\n }\n}\n\nexport class NoCursorOrLimitError extends Error {\n constructor() {\n super(\"Cursor and limit must be defined to fetch next\")\n }\n}\n\nexport class OffsetCannotBeLessThanZeroError extends Error {\n constructor() {\n super(\"Offset cannot be less than 0\")\n }\n}\n\nexport class NoEntityFoundError extends Error {\n constructor() {\n super(\"No entity found\")\n }\n}\n","import { bytesToString, type Hex } from \"viem\"\nimport type { MimeType } from \"../types\"\nimport type { Attribute } from \"./attributes\"\n\nexport class Entity {\n key: Hex\n contentType: MimeType | undefined\n owner: Hex | undefined\n expiresAtBlock: bigint | undefined\n createdAtBlock: bigint | undefined\n lastModifiedAtBlock: bigint | undefined\n transactionIndexInBlock: bigint | undefined\n operationIndexInTransaction: bigint | undefined\n payload: Uint8Array | undefined\n attributes: Attribute[]\n\n constructor(\n key: Hex,\n contentType: MimeType | undefined = undefined,\n owner: Hex | undefined = undefined,\n expiresAtBlock: bigint | undefined = undefined,\n createdAtBlock: bigint | undefined = undefined,\n lastModifiedAtBlock: bigint | undefined = undefined,\n transactionIndexInBlock: bigint | undefined = undefined,\n operationIndexInTransaction: bigint | undefined = undefined,\n payload: Uint8Array | undefined = undefined,\n attributes: Attribute[],\n ) {\n this.key = key\n this.owner = owner\n this.expiresAtBlock = expiresAtBlock\n this.createdAtBlock = createdAtBlock\n this.lastModifiedAtBlock = lastModifiedAtBlock\n this.transactionIndexInBlock = transactionIndexInBlock\n this.operationIndexInTransaction = operationIndexInTransaction\n this.payload = payload\n this.attributes = attributes\n this.contentType = contentType\n }\n\n toText(): string {\n return this.payload ? bytesToString(this.payload) : \"\"\n }\n\n toJson(): any {\n return this.payload ? JSON.parse(bytesToString(this.payload)) : {}\n }\n}\n","import { toBytes } from \"viem\"\nimport { Entity } from \"../types/entity\"\nimport type { RpcEntity } from \"../types/rpcSchema\"\nimport { getLogger } from \"./logger\"\n\nconst logger = getLogger(\"utils:entities\")\n\nexport async function entityFromRpcResult(rpcEntity: RpcEntity) {\n logger(\"entityFromRpcResult %o\", rpcEntity)\n\n return new Entity(\n rpcEntity.key,\n rpcEntity.contentType,\n rpcEntity.owner,\n rpcEntity.expiresAt !== undefined ? BigInt(rpcEntity.expiresAt) : undefined,\n rpcEntity.createdAtBlock !== undefined ? BigInt(rpcEntity.createdAtBlock) : undefined,\n rpcEntity.lastModifiedAtBlock !== undefined ? BigInt(rpcEntity.lastModifiedAtBlock) : undefined,\n rpcEntity.transactionIndexInBlock !== undefined\n ? BigInt(rpcEntity.transactionIndexInBlock)\n : undefined,\n rpcEntity.operationIndexInTransaction !== undefined\n ? BigInt(rpcEntity.operationIndexInTransaction)\n : undefined,\n rpcEntity.value !== undefined ? toBytes(rpcEntity.value) : undefined,\n [\n ...(rpcEntity.stringAttributes ?? []).map(({ key, value }) => ({\n key,\n value,\n })),\n ...(rpcEntity.numericAttributes ?? []).map(({ key, value }) => ({\n key,\n value: Number(value),\n })),\n ],\n )\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../clients/baseClient\"\nimport type { RpcIncludeData, RpcOrderByAttribute, RpcQueryOptions } from \"../types/rpcSchema\"\nimport { getLogger } from \"../utils/logger\"\nimport type { Predicate } from \"./predicate\"\n\nconst logger = getLogger(\"query:engine\")\n\nfunction processPredicates(predicates: Predicate[]): string {\n const processValue = (value: string | number) => {\n if (typeof value === \"string\") {\n return `\"${value}\"`\n }\n return value\n }\n return predicates\n .map((predicate) => {\n switch (predicate.type) {\n case \"eq\":\n return `${predicate.key} = ${processValue(predicate.value)}`\n case \"neq\":\n return `${predicate.key} != ${processValue(predicate.value)}`\n case \"gt\":\n return `${predicate.key} > ${processValue(predicate.value)}`\n case \"gte\":\n return `${predicate.key} >= ${processValue(predicate.value)}`\n case \"lt\":\n return `${predicate.key} < ${processValue(predicate.value)}`\n case \"lte\":\n return `${predicate.key} <= ${processValue(predicate.value)}`\n case \"not\":\n return `!${predicate.key}`\n case \"or\":\n return `(${predicate.predicates.map((predicate) => processPredicates([predicate])).join(\" || \")})`\n case \"and\":\n return `(${predicate.predicates.map((predicate) => processPredicates([predicate])).join(\" && \")})`\n default:\n return \"\"\n }\n })\n .join(\" && \")\n}\n\nexport async function processQuery(\n client: ArkivClient,\n queryParams: {\n predicates: Predicate[]\n limit: number | undefined\n cursor: string | undefined\n ownedBy: Hex | undefined\n orderBy: RpcOrderByAttribute[] | undefined\n validAtBlock?: bigint | undefined\n withAttributes?: boolean | undefined\n withMetadata?: boolean | undefined\n withPayload?: boolean | undefined\n },\n) {\n const {\n predicates,\n limit,\n cursor,\n ownedBy,\n orderBy,\n validAtBlock,\n withAttributes,\n withMetadata,\n withPayload,\n } = queryParams\n\n logger(\"Processing query with params %o\", {\n predicates,\n cursor,\n limit,\n ownedBy,\n orderBy,\n validAtBlock,\n withAttributes,\n withMetadata,\n withPayload,\n })\n\n let query = processPredicates(predicates)\n if (ownedBy) {\n query += ` && $owner=${ownedBy}`\n }\n\n // remove leading and trailing spaces and leading &&\n query = query.trim()\n if (query.startsWith(\"&& \")) {\n query = query.slice(3)\n }\n\n const queryOptions: RpcQueryOptions = {\n includeData: {\n key: true,\n attributes: withAttributes ?? false,\n payload: withPayload ?? false,\n contentType: withMetadata ?? false,\n expiration: withMetadata ?? false,\n owner: withMetadata ?? false,\n createdAtBlock: withMetadata ?? false,\n lastModifiedAtBlock: withMetadata ?? false,\n transactionIndexInBlock: withMetadata ?? false,\n operationIndexInTransaction: withMetadata ?? false,\n } as RpcIncludeData,\n }\n\n if (validAtBlock !== undefined) {\n queryOptions.atBlock = Number(validAtBlock)\n }\n if (limit !== undefined) {\n queryOptions.resultsPerPage = limit\n }\n if (cursor !== undefined) {\n queryOptions.cursor = cursor\n }\n if (orderBy !== undefined) {\n queryOptions.orderBy = orderBy\n }\n\n logger(\"Built query to send %s %o\", query, {\n includeData: queryOptions.includeData,\n atBlock: queryOptions.atBlock?.toString(),\n orderBy: queryOptions.orderBy,\n resultsPerPage: queryOptions.resultsPerPage,\n cursor: queryOptions.cursor,\n })\n\n const result = await client.request({\n method: \"arkiv_query\",\n params: [query, queryOptions],\n })\n logger(\"Raw result from query %o\", result)\n\n return result\n}\n","import type { Entity } from \"../types/entity\"\nimport { getLogger } from \"../utils/logger\"\nimport { NoCursorOrLimitError, NoMoreResultsError } from \"./errors\"\nimport type { QueryBuilder } from \"./queryBuilder\"\n\nconst logger = getLogger(\"query:result\")\n\nexport class QueryResult {\n entities: Entity[]\n private _endOfIteration: boolean\n private _cursor: string | undefined\n private _limit: number | undefined\n private _validAtBlock: bigint | undefined\n private _queryBuilder: QueryBuilder\n\n // Public getters for internal state\n get queryBuilder(): QueryBuilder {\n return this._queryBuilder\n }\n\n get cursor(): string | undefined {\n return this._cursor\n }\n\n constructor(\n entities: Entity[],\n queryBuilder: QueryBuilder,\n cursor: string | undefined,\n limit: number | undefined,\n validAtBlock: bigint | undefined,\n ) {\n this.entities = entities\n this._queryBuilder = queryBuilder\n this._endOfIteration = !limit || entities.length < limit\n this._cursor = cursor\n this._limit = limit\n this._validAtBlock = validAtBlock\n }\n\n async next() {\n if (this._cursor === undefined || this._limit === undefined) {\n throw new NoCursorOrLimitError()\n }\n if (this._endOfIteration) {\n throw new NoMoreResultsError()\n }\n this._queryBuilder.cursor(this._cursor)\n const result = await this._queryBuilder.fetch()\n this.entities = result.entities\n // Update the query builder reference\n this._queryBuilder = result.queryBuilder\n // Check if we've reached the end (no more cursor or we got fewer entities than limit)\n this._endOfIteration = !result.cursor || result.entities.length < this._limit\n // Update the cursor\n this._cursor = result.cursor\n\n // TODO check current block height and if it is not too old\n logger(\"Current block height for next page %s\", this._validAtBlock?.toString() ?? \"unknown\")\n }\n\n hasNextPage() {\n return !this._endOfIteration\n }\n}\n","import type { Hex } from \"viem\"\nimport type { ArkivClient } from \"../clients/baseClient\"\nimport type { RpcOrderByAttribute } from \"../types/rpcSchema\"\nimport { entityFromRpcResult } from \"../utils/entities\"\nimport { processQuery } from \"./engine\"\nimport type { Predicate } from \"./predicate\"\nimport { QueryResult } from \"./queryResult\"\n\ntype OrderByAttribute = {\n name: string\n type: \"string\" | \"number\"\n order: \"asc\" | \"desc\"\n}\n\n/**\n * Helper function to create an ascending order by attribute\n * @param attributeName - The name of the attribute to order by\n * @param attributeType - The type of the attribute to order by (string or number)\n * @returns The OrderByAttribute instance\n *\n * @example\n * const ascAttribute = asc(\"name\", \"string\")\n */\nexport function asc(attributeName: string, attributeType: \"string\" | \"number\"): OrderByAttribute {\n return {\n name: attributeName,\n type: attributeType,\n order: \"asc\",\n }\n}\n\n/**\n * Helper function to create a descending order by attribute\n * @param attributeName - The name of the attribute to order by\n * @param attributeType - The type of the attribute to order by (string or number)\n * @returns The OrderByAttribute instance\n *\n * @example\n * const descAttribute = desc(\"name\", \"string\")\n */\nexport function desc(attributeName: string, attributeType: \"string\" | \"number\"): OrderByAttribute {\n return {\n name: attributeName,\n type: attributeType,\n order: \"desc\",\n }\n}\n/**\n * QueryBuilder is a helper class to build queries to the Arkiv DBChains.\n * It can be used to fetch entities from the Arkiv DBChains. It follows the Builder pattern allowing chaining of methods.\n * @param client - The Arkiv client\n * @returns The QueryBuilder instance {@link QueryBuilder}\n */\nexport class QueryBuilder {\n private _client: ArkivClient\n private _ownedBy: Hex | undefined\n private _orderBy: RpcOrderByAttribute[] | undefined\n private _validAtBlock: bigint | undefined\n private _withAttributes: boolean | undefined\n private _withMetadata: boolean | undefined\n private _withPayload: boolean | undefined\n private _limit: number | undefined\n private _cursor: string | undefined\n private _predicates: Predicate[]\n\n constructor(client: ArkivClient) {\n this._client = client\n this._predicates = []\n }\n\n /**\n * Sets the ownedBy filter\n * @param ownedBy - The address of the owner\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.ownedBy(\"0x1234567890123456789012345678901234567890\")\n */\n ownedBy(ownedBy: Hex) {\n this._ownedBy = ownedBy\n return this\n }\n\n /**\n * Sets the orderBy for the query.\n * It can be called multiple times to order by multiple attributes.\n * The order of the attributes is important. The first attribute is the primary order by attribute.\n * @param attributeName - The name of the attribute to order by\n * @param attributeType - The type of the attribute to order by (string or number)\n * @param order - The order to set the order by (asc or desc)\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.orderBy(\"name\", \"string\", \"desc\")\n */\n orderBy(attributeName: string, attributeType: \"string\" | \"number\", order?: \"asc\" | \"desc\"): this\n /**\n * Sets the orderBy for the query.\n * This method takes the OrderByAttribute object as an argument and is mainly\n * used to use the helper functions asc() and desc() to create the OrderByAttribute instances.\n * @param orderByAttribute - The OrderByAttribute instance to set\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.orderBy(asc(\"name\", \"string\"))\n * builder.orderBy(desc(\"name\", \"string\"))\n */\n orderBy(orderByAttribute: OrderByAttribute): this\n orderBy(\n attributeNameOrOrderByAttribute: string | OrderByAttribute,\n attributeType?: \"string\" | \"number\",\n order: \"asc\" | \"desc\" = \"asc\",\n ) {\n if (!this._orderBy) {\n this._orderBy = []\n }\n\n const pushOrderByAttribute = ({ name, type, order }: OrderByAttribute) => {\n this._orderBy?.push({\n name,\n type: type === \"number\" ? \"numeric\" : type,\n desc: order === \"desc\",\n })\n }\n\n if (typeof attributeNameOrOrderByAttribute === \"string\") {\n if (!attributeType) {\n throw new Error(\"attributeType is required when using positional orderBy arguments\")\n }\n pushOrderByAttribute({\n name: attributeNameOrOrderByAttribute,\n type: attributeType,\n order,\n })\n } else {\n pushOrderByAttribute(attributeNameOrOrderByAttribute)\n }\n\n return this\n }\n\n /**\n * Sets the withAttributes flag which will return the attributes for the entities if true\n * @param withAttributes - The boolean value to set\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.withAttributes(true)\n */\n withAttributes(withAttributes: boolean = true) {\n this._withAttributes = withAttributes\n return this\n }\n\n /**\n * Sets the withMetadata flag which will return the metadata (like owner, expiredAt, etc.) for the entities if true\n * @param withMetadata - The boolean value to set\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.withMetadata(true)\n */\n withMetadata(withMetadata: boolean = true) {\n this._withMetadata = withMetadata\n return this\n }\n\n /**\n * Sets the withPayload flag which will return the payload for the entities if true\n * @param withPayload - The boolean value to set\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.withPayload(true)\n */\n withPayload(withPayload: boolean = true) {\n this._withPayload = withPayload\n return this\n }\n\n /**\n * Sets the limit for the query\n * @param limit - The number of entities to return\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.limit(10)\n */\n limit(limit: number) {\n this._limit = limit\n return this\n }\n\n /**\n * Sets the cursor for the query - it is advances setting which rather shouldn't be used manually but it is provided from query result if limit is used (pagination).\n * @param cursor - The cursor to set which tells to RPC Query server where to start or continue the query.\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.offset(10)\n */\n cursor(cursor: string) {\n this._cursor = cursor\n return this\n }\n\n /**\n * Sets the validAtBlock for the query which tells at which block height the state we are intested.\n * If not set, the latest block is used.\n * @param validAtBlock - The block number to set\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.validAtBlock(10000)\n */\n validAtBlock(validAtBlock: bigint) {\n this._validAtBlock = validAtBlock\n return this\n }\n\n /**\n * Sets the predicates for the query limiting the results. It can be a single predicate or an array of predicates combined with 'and'.\n * Predicates can be nested using 'or' and 'and' predicates.\n * @param predicates - The predicates to set\n * @returns The QueryBuilder instance\n *\n * @example\n * const builder = new QueryBuilder(client)\n * builder.where(eq(\"name\", \"John\"))\n * builder.where([eq(\"name\", \"John\"), eq(\"age\", 30)])\n * builder.where([eq(\"name\", \"John\"), or([eq(\"age\", 30), eq(\"age\", 31)])])\n * builder.where([eq(\"name\", \"John\"), and([eq(\"age\", 30), eq(\"age\", 31)])])\n * builder.where([eq(\"name\", \"John\"), or([eq(\"age\", 30), and([eq(\"age\", 31), eq(\"age\", 32)])])])\n * builder.where([eq(\"name\", \"John\"), and([eq(\"age\", 30), or([eq(\"age\", 31), eq(\"age\", 32)])])])\n * builder.where([eq(\"name\", \"John\"), and([eq(\"age\", 30), or([eq(\"age\", 31), and([eq(\"age\", 32), eq(\"age\", 33)])])])])\n */\n where(predicates: Predicate[] | Predicate) {\n if (Array.isArray(predicates)) {\n this._predicates.push(...predicates)\n } else {\n this._predicates.push(predicates)\n }\n return this\n }\n\n /**\n * Fetches the entities from the query. Re\n * It will return a QueryResult instance which can be used to fetch the next and previous pages.\n * @returns The QueryResult instance {@link QueryResult}\n *\n * @example\n * const builder = new QueryBuilder(client)\n * const result = await builder.where(eq(\"name\", \"John\")).fetch()\n * // result = { entities: [Entity, Entity, Entity], next: async () => QueryResult, previous: async () => QueryResult }\n */\n async fetch() {\n const queryResult = await processQuery(this._client, {\n predicates: this._predicates,\n limit: this._limit,\n cursor: this._cursor,\n ownedBy: this._ownedBy,\n orderBy: this._orderBy,\n validAtBlock: this._validAtBlock,\n withAttributes: this._withAttributes,\n withMetadata: this._withMetadata,\n withPayload: this._withPayload,\n })\n\n const entities = await Promise.all(\n queryResult.data.map((entity) => entityFromRpcResult(entity)),\n )\n\n this.cursor(queryResult.cursor)\n this.validAtBlock(queryResult.blockNumber)\n\n return new QueryResult(entities, this, this._cursor, this._limit, this._validAtBlock)\n }\n\n /**\n * Counts the entities from the query.\n * @returns The number of entities\n *\n * @example\n * const builder = new QueryBuilder(client)\n * const result = await builder.where(eq(\"name\", \"John\")).count()\n * // result = 10\n */\n async count() {\n const queryResult = await processQuery(this._client, {\n predicates: this._predicates,\n limit: this._limit,\n cursor: this._cursor,\n ownedBy: this._ownedBy,\n orderBy: undefined,\n validAtBlock: this._validAtBlock,\n withAttributes: false,\n withMetadata: false,\n withPayload: false,\n })\n\n return queryResult.data.length ?? 0\n }\n}\n"],"mappings":"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"}
@@ -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-0JJeFAgO.cjs";
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-Bsvmepwv.cjs";
2
2
  export { ArkivRpcSchema, Attribute, ChangeOwnershipParameters, ChangeOwnershipReturnType, CreateEntityParameters, CreateEntityReturnType, DeleteEntityParameters, DeleteEntityReturnType, Entity, ExtendEntityParameters, ExtendEntityReturnType, MimeType, MutateEntitiesParameters, MutateEntitiesReturnType, RpcEntity, RpcIncludeData, RpcQueryOptions, TxParams, UpdateEntityParameters, UpdateEntityReturnType };
@@ -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-BG8YycYJ.js";
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-ChTOBhd6.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,3 +1,4 @@
1
+ const require_queryBuilder = require('../queryBuilder-Cn5JJRMM.cjs');
1
2
  const require_consts = require('../consts-BV9DVKgE.cjs');
2
3
  let viem = require("viem");
3
4
 
@@ -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,EAAgB,GAAA,MAAA;EAI7B,UAAA,EAAA,CAAA,MAAe,EAAA,MAAA,EAAgB,GAAA,MAAA;mBDK5B;;;;iBCTH,aAAA,gBAA6B;iBAI7B,eAAA,gBAA+B"}
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,EAAA,GAAgB,MAAA;EAI7B,UAAA,EAAA,CAAA,MAAe,EAAA,MAAA,EAAA,GAAgB,MAAA;mBDK5B;;;;iBCTH,aAAA,gBAA6B;iBAI7B,eAAA,gBAA+B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkiv-network/sdk",
3
- "version": "0.3.2-dev.3",
3
+ "version": "0.3.2-dev.4",
4
4
  "description": "TypeScript client library for Arkiv's blockchains interactions",
5
5
  "type": "module",
6
6
  "target": "esnext",
@@ -84,6 +84,7 @@
84
84
  "publish-dev:dry": "npm publish ./arkiv-network-sdk-latest.tgz --access public --tag dev --dry-run"
85
85
  },
86
86
  "devDependencies": {
87
+ "@types/debug": "^4.1.12",
87
88
  "@biomejs/biome": "2.2.4",
88
89
  "@types/bun": "latest",
89
90
  "rimraf": "^6.0.1",
@@ -116,6 +117,7 @@
116
117
  "homepage": "https://arkiv.network",
117
118
  "dependencies": {
118
119
  "brotli-wasm": "^3.0.1",
119
- "viem": "^2.38.2"
120
+ "viem": "^2.38.2",
121
+ "debug": "^4.3.7"
120
122
  }
121
123
  }
@@ -1,4 +1,7 @@
1
1
  import type { ArkivClient } from "../../clients/baseClient"
2
+ import { getLogger } from "../../utils/logger"
3
+
4
+ const logger = getLogger("actions:public:get-block-timing")
2
5
 
3
6
  export type GetBlockTimingReturnType = {
4
7
  currentBlock: bigint
@@ -11,7 +14,7 @@ export async function getBlockTiming(client: ArkivClient) {
11
14
  method: "arkiv_getBlockTiming",
12
15
  params: [],
13
16
  })
14
- console.debug("Block timing", blockTiming)
17
+ logger("Block timing %o", blockTiming)
15
18
  return {
16
19
  currentBlock: blockTiming.current_block,
17
20
  currentBlockTime: blockTiming.current_block_time,
@@ -9,6 +9,9 @@ import type {
9
9
  OnEntityOwnerChangedEvent,
10
10
  OnEntityUpdatedEvent,
11
11
  } from "../../types/events"
12
+ import { getLogger } from "../../utils/logger"
13
+
14
+ const logger = getLogger("actions:public:subscribe-entity-events")
12
15
 
13
16
  export const arkivABI = parseAbi([
14
17
  "event ArkivEntityCreated(uint256 indexed entityKey, address indexed ownerAddress, uint256 expirationBlock, uint256 cost)",
@@ -46,14 +49,14 @@ export async function subscribeEntityEvents(
46
49
  fromBlock: fromBlock ?? 0n,
47
50
  events: arkivABI,
48
51
  onLogs: (logs) => {
49
- console.debug("logs from subscribeEntityEvents", logs)
52
+ logger("logs from subscribeEntityEvents %o", logs)
50
53
  for (const log of logs) {
51
54
  const event = decodeEventLog({
52
55
  abi: arkivABI,
53
- topics: log.topics,
56
+ topics: log.topics as [string, string, string] | [string, string, string, string],
54
57
  data: log.data,
55
58
  })
56
- console.debug("event from subscribeEntityEvents", event)
59
+ logger("event from subscribeEntityEvents %o", event)
57
60
  switch (event.eventName) {
58
61
  case "ArkivEntityCreated":
59
62
  onEntityCreated?.({
@@ -2,6 +2,9 @@ import type { Hex } from "viem"
2
2
  import type { ArkivClient } from "../../clients/baseClient"
3
3
  import type { TxParams } from "../../types"
4
4
  import { opsToTxData, sendArkivTransaction } from "../../utils/arkivTransactions"
5
+ import { getLogger } from "../../utils/logger"
6
+
7
+ const logger = getLogger("actions:wallet:change-ownership")
5
8
 
6
9
  /**
7
10
  * Parameters for the deleteEntity function.
@@ -27,11 +30,11 @@ export async function changeOwnership(
27
30
  data: ChangeOwnershipParameters,
28
31
  txParams?: TxParams,
29
32
  ): Promise<ChangeOwnershipReturnType> {
30
- console.debug("changeOwnership", data)
33
+ logger("changeOwnership %o", data)
31
34
  const txData = opsToTxData({ ownershipChanges: [data] })
32
35
  const receipt = await sendArkivTransaction(client, txData, txParams)
33
36
 
34
- console.debug("Receipt from changeOwnership", receipt)
37
+ logger("Receipt from changeOwnership %o", receipt)
35
38
 
36
39
  return {
37
40
  txHash: receipt.transactionHash,
@@ -1,7 +1,10 @@
1
- import type { Hex } from "viem"
1
+ import type { Hash, Hex } from "viem"
2
2
  import type { ArkivClient } from "../../clients/baseClient"
3
3
  import type { Attribute, MimeType, TxParams } from "../../types"
4
4
  import { opsToTxData, sendArkivTransaction } from "../../utils/arkivTransactions"
5
+ import { getLogger } from "../../utils/logger"
6
+
7
+ const logger = getLogger("actions:wallet:create-entity")
5
8
 
6
9
  /**
7
10
  * Parameters for the createEntity function.
@@ -24,7 +27,7 @@ export type CreateEntityParameters = {
24
27
  */
25
28
  export type CreateEntityReturnType = {
26
29
  entityKey: Hex
27
- txHash: string
30
+ txHash: Hash
28
31
  }
29
32
 
30
33
  export async function createEntity(
@@ -32,14 +35,14 @@ export async function createEntity(
32
35
  data: CreateEntityParameters,
33
36
  txParams?: TxParams,
34
37
  ): Promise<CreateEntityReturnType> {
35
- console.debug("createEntity", data)
38
+ logger("createEntity %o", data)
36
39
  const txData = opsToTxData({ creates: [data] })
37
40
  const receipt = await sendArkivTransaction(client, txData, txParams)
38
41
 
39
- console.debug("Receipt from createEntity", receipt)
42
+ logger("Receipt from createEntity %o", receipt)
40
43
 
41
44
  return {
42
- txHash: receipt.transactionHash,
45
+ txHash: receipt.transactionHash as Hash,
43
46
  entityKey: receipt.logs[0].topics[1] as Hex,
44
47
  }
45
48
  }
@@ -1,7 +1,10 @@
1
- import type { Hex } from "viem"
1
+ import type { Hash, Hex } from "viem"
2
2
  import type { ArkivClient } from "../../clients/baseClient"
3
3
  import type { TxParams } from "../../types"
4
4
  import { opsToTxData, sendArkivTransaction } from "../../utils/arkivTransactions"
5
+ import { getLogger } from "../../utils/logger"
6
+
7
+ const logger = getLogger("actions:wallet:delete-entity")
5
8
 
6
9
  /**
7
10
  * Parameters for the deleteEntity function.
@@ -18,7 +21,7 @@ export type DeleteEntityParameters = {
18
21
  */
19
22
  export type DeleteEntityReturnType = {
20
23
  entityKey: Hex
21
- txHash: string
24
+ txHash: Hash
22
25
  }
23
26
 
24
27
  export async function deleteEntity(
@@ -26,14 +29,14 @@ export async function deleteEntity(
26
29
  data: DeleteEntityParameters,
27
30
  txParams?: TxParams,
28
31
  ): Promise<DeleteEntityReturnType> {
29
- console.debug("deleteEntity", data)
32
+ logger("deleteEntity %o", data)
30
33
  const txData = opsToTxData({ deletes: [data] })
31
34
  const receipt = await sendArkivTransaction(client, txData, txParams)
32
35
 
33
- console.debug("Receipt from deleteEntity", receipt)
36
+ logger("Receipt from deleteEntity %o", receipt)
34
37
 
35
38
  return {
36
- txHash: receipt.transactionHash,
39
+ txHash: receipt.transactionHash as Hash,
37
40
  entityKey: data.entityKey,
38
41
  }
39
42
  }
@@ -1,7 +1,10 @@
1
- import type { Hex } from "viem"
1
+ import type { Hash, Hex } from "viem"
2
2
  import type { ArkivClient } from "../../clients/baseClient"
3
3
  import type { TxParams } from "../../types"
4
4
  import { opsToTxData, sendArkivTransaction } from "../../utils/arkivTransactions"
5
+ import { getLogger } from "../../utils/logger"
6
+
7
+ const logger = getLogger("actions:wallet:extend-entity")
5
8
 
6
9
  /**
7
10
  * Parameters for the extendEntity function.
@@ -20,7 +23,7 @@ export type ExtendEntityParameters = {
20
23
  */
21
24
  export type ExtendEntityReturnType = {
22
25
  entityKey: Hex
23
- txHash: string
26
+ txHash: Hash
24
27
  }
25
28
 
26
29
  export async function extendEntity(
@@ -28,14 +31,14 @@ export async function extendEntity(
28
31
  data: ExtendEntityParameters,
29
32
  txParams?: TxParams,
30
33
  ): Promise<ExtendEntityReturnType> {
31
- console.debug("extendEntity", data)
34
+ logger("extendEntity %o", data)
32
35
  const txData = opsToTxData({ extensions: [data] })
33
36
  const receipt = await sendArkivTransaction(client, txData, txParams)
34
37
 
35
- console.debug("Receipt from extendEntity", receipt)
38
+ logger("Receipt from extendEntity %o", receipt)
36
39
 
37
40
  return {
38
- txHash: receipt.transactionHash,
41
+ txHash: receipt.transactionHash as Hash,
39
42
  entityKey: receipt.logs[0].topics[1] as Hex,
40
43
  }
41
44
  }