@trufnetwork/sdk-js 0.2.4 → 0.3.0

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 (111) hide show
  1. package/README.md +85 -12
  2. package/dist/cjs/client/client.cjs +41 -32
  3. package/dist/cjs/client/client.cjs.map +2 -2
  4. package/dist/cjs/client/getLastTransactions.cjs +67 -0
  5. package/dist/cjs/client/getLastTransactions.cjs.map +7 -0
  6. package/dist/cjs/client/listStreams.cjs +46 -0
  7. package/dist/cjs/client/listStreams.cjs.map +7 -0
  8. package/dist/cjs/contracts-api/{stream.cjs → action.cjs} +121 -163
  9. package/dist/cjs/contracts-api/action.cjs.map +7 -0
  10. package/dist/cjs/contracts-api/composedAction.cjs +183 -0
  11. package/dist/cjs/contracts-api/composedAction.cjs.map +7 -0
  12. package/dist/cjs/contracts-api/{destroyStream.cjs → deleteStream.cjs} +16 -16
  13. package/dist/cjs/contracts-api/deleteStream.cjs.map +7 -0
  14. package/dist/cjs/contracts-api/deployStream.cjs +33 -16
  15. package/dist/cjs/contracts-api/deployStream.cjs.map +3 -3
  16. package/dist/cjs/contracts-api/primitiveAction.cjs +92 -0
  17. package/dist/cjs/contracts-api/primitiveAction.cjs.map +7 -0
  18. package/dist/cjs/index.common.cjs +6 -6
  19. package/dist/cjs/index.common.cjs.map +1 -1
  20. package/dist/cjs/types/transaction.cjs +19 -0
  21. package/dist/cjs/types/transaction.cjs.map +7 -0
  22. package/dist/cjs/util/EthereumAddress.cjs +0 -1
  23. package/dist/cjs/util/EthereumAddress.cjs.map +2 -2
  24. package/dist/cjs/util/StreamId.cjs +7 -2
  25. package/dist/cjs/util/StreamId.cjs.map +2 -2
  26. package/dist/esm/client/client.mjs +41 -32
  27. package/dist/esm/client/client.mjs.map +2 -2
  28. package/dist/esm/client/getLastTransactions.mjs +46 -0
  29. package/dist/esm/client/getLastTransactions.mjs.map +7 -0
  30. package/dist/esm/client/listStreams.mjs +25 -0
  31. package/dist/esm/client/listStreams.mjs.map +7 -0
  32. package/dist/esm/contracts-api/{stream.mjs → action.mjs} +118 -160
  33. package/dist/esm/contracts-api/action.mjs.map +7 -0
  34. package/dist/esm/contracts-api/composedAction.mjs +156 -0
  35. package/dist/esm/contracts-api/composedAction.mjs.map +7 -0
  36. package/dist/esm/contracts-api/deleteStream.mjs +24 -0
  37. package/dist/esm/contracts-api/deleteStream.mjs.map +7 -0
  38. package/dist/esm/contracts-api/deployStream.mjs +23 -21
  39. package/dist/esm/contracts-api/deployStream.mjs.map +2 -2
  40. package/dist/esm/contracts-api/primitiveAction.mjs +71 -0
  41. package/dist/esm/contracts-api/primitiveAction.mjs.map +7 -0
  42. package/dist/esm/index.common.mjs +6 -6
  43. package/dist/esm/index.common.mjs.map +1 -1
  44. package/dist/esm/types/transaction.mjs +1 -0
  45. package/dist/esm/types/transaction.mjs.map +7 -0
  46. package/dist/esm/util/EthereumAddress.mjs +0 -1
  47. package/dist/esm/util/EthereumAddress.mjs.map +2 -2
  48. package/dist/esm/util/StreamId.mjs +7 -2
  49. package/dist/esm/util/StreamId.mjs.map +2 -2
  50. package/dist/tsconfig.build.tsbuildinfo +1 -1
  51. package/dist/types/client/client.d.ts +38 -15
  52. package/dist/types/client/client.d.ts.map +1 -1
  53. package/dist/types/client/getLastTransactions.d.ts +5 -0
  54. package/dist/types/client/getLastTransactions.d.ts.map +1 -0
  55. package/dist/types/client/listStreams.d.ts +12 -0
  56. package/dist/types/client/listStreams.d.ts.map +1 -0
  57. package/dist/types/contracts-api/{stream.d.ts → action.d.ts} +35 -54
  58. package/dist/types/contracts-api/action.d.ts.map +1 -0
  59. package/dist/types/contracts-api/{composedStream.d.ts → composedAction.d.ts} +11 -22
  60. package/dist/types/contracts-api/composedAction.d.ts.map +1 -0
  61. package/dist/types/contracts-api/{destroyStream.d.ts → deleteStream.d.ts} +7 -7
  62. package/dist/types/contracts-api/deleteStream.d.ts.map +1 -0
  63. package/dist/types/contracts-api/deployStream.d.ts +2 -2
  64. package/dist/types/contracts-api/deployStream.d.ts.map +1 -1
  65. package/dist/types/contracts-api/primitiveAction.d.ts +33 -0
  66. package/dist/types/contracts-api/primitiveAction.d.ts.map +1 -0
  67. package/dist/types/index.common.d.ts +7 -7
  68. package/dist/types/types/transaction.d.ts +11 -0
  69. package/dist/types/types/transaction.d.ts.map +1 -0
  70. package/dist/types/util/EthereumAddress.d.ts.map +1 -1
  71. package/dist/types/util/StreamId.d.ts +2 -0
  72. package/dist/types/util/StreamId.d.ts.map +1 -1
  73. package/package.json +10 -6
  74. package/dist/cjs/client/listAllStreams.cjs +0 -51
  75. package/dist/cjs/client/listAllStreams.cjs.map +0 -7
  76. package/dist/cjs/contracts/composed_stream_template.json +0 -1638
  77. package/dist/cjs/contracts/composed_stream_template_unix.json +0 -2122
  78. package/dist/cjs/contracts/contractsContent.cjs +0 -65
  79. package/dist/cjs/contracts/contractsContent.cjs.map +0 -7
  80. package/dist/cjs/contracts/primitive_stream_template.json +0 -952
  81. package/dist/cjs/contracts/primitive_stream_template_unix.json +0 -1173
  82. package/dist/cjs/contracts-api/composedStream.cjs +0 -137
  83. package/dist/cjs/contracts-api/composedStream.cjs.map +0 -7
  84. package/dist/cjs/contracts-api/destroyStream.cjs.map +0 -7
  85. package/dist/cjs/contracts-api/primitiveStream.cjs +0 -86
  86. package/dist/cjs/contracts-api/primitiveStream.cjs.map +0 -7
  87. package/dist/cjs/contracts-api/stream.cjs.map +0 -7
  88. package/dist/esm/client/listAllStreams.mjs +0 -30
  89. package/dist/esm/client/listAllStreams.mjs.map +0 -7
  90. package/dist/esm/contracts/composed_stream_template.json +0 -1638
  91. package/dist/esm/contracts/composed_stream_template_unix.json +0 -2122
  92. package/dist/esm/contracts/contractsContent.mjs +0 -33
  93. package/dist/esm/contracts/contractsContent.mjs.map +0 -7
  94. package/dist/esm/contracts/primitive_stream_template.json +0 -952
  95. package/dist/esm/contracts/primitive_stream_template_unix.json +0 -1173
  96. package/dist/esm/contracts-api/composedStream.mjs +0 -116
  97. package/dist/esm/contracts-api/composedStream.mjs.map +0 -7
  98. package/dist/esm/contracts-api/destroyStream.mjs +0 -24
  99. package/dist/esm/contracts-api/destroyStream.mjs.map +0 -7
  100. package/dist/esm/contracts-api/primitiveStream.mjs +0 -65
  101. package/dist/esm/contracts-api/primitiveStream.mjs.map +0 -7
  102. package/dist/esm/contracts-api/stream.mjs.map +0 -7
  103. package/dist/types/client/listAllStreams.d.ts +0 -14
  104. package/dist/types/client/listAllStreams.d.ts.map +0 -1
  105. package/dist/types/contracts/contractsContent.d.ts +0 -6
  106. package/dist/types/contracts/contractsContent.d.ts.map +0 -1
  107. package/dist/types/contracts-api/composedStream.d.ts.map +0 -1
  108. package/dist/types/contracts-api/destroyStream.d.ts.map +0 -1
  109. package/dist/types/contracts-api/primitiveStream.d.ts +0 -39
  110. package/dist/types/contracts-api/primitiveStream.d.ts.map +0 -1
  111. package/dist/types/contracts-api/stream.d.ts.map +0 -1
package/README.md CHANGED
@@ -5,7 +5,7 @@ The TN SDK provides developers with tools to interact with the Truf Network, a d
5
5
  ## Quick Start
6
6
 
7
7
  ### Prerequisites
8
- - Node.js 18 or later
8
+ - Node.js 18 or later (For enabling Explorer-related features, please use Node.js 18)
9
9
 
10
10
  ### Installation
11
11
  ```bash
@@ -46,23 +46,54 @@ const client = new NodeTNClient({
46
46
  const streamId = await StreamId.generate("my-data-stream");
47
47
  await client.deployStream(streamId, "primitive", true);
48
48
 
49
- const stream = client.loadPrimitiveStream({
50
- streamId,
51
- dataProvider: client.address(),
52
- });
53
-
54
- // here simplified, you might need to wait for the tx using client.waitForTx
55
- await stream.initializeStream();
49
+ const stream = client.loadPrimitiveAction();
56
50
 
57
51
  // Insert data, simplified
58
52
  await stream.insertRecords([
59
- { dateValue: "2024-01-01", value: "100.5" }
53
+ { stream: client.ownStreamLocator(streamId), eventTime: new Date("2024-01-01").getTime() / 1000, value: "100.5" }
60
54
  ]);
61
55
 
62
56
  // Read data
63
57
  const data = await stream.getRecord({
64
- dateFrom: "2024-01-01",
65
- dateTo: "2024-01-01",
58
+ stream: client.ownStreamLocator(streamId),
59
+ from: new Date("2024-01-01").getTime() / 1000,
60
+ to: new Date("2024-01-02").getTime() / 1000,
61
+ });
62
+ ```
63
+
64
+ ### Explorer interaction
65
+
66
+ To enable Explorer-related features, you need to set the `neonConnectionString` in the `NodeTNClient` constructor.
67
+ You can request the explorer write only connection string by contacting us.
68
+
69
+ ```ts
70
+ const client = new NodeTNClient({
71
+ // other options...
72
+ neonConnectionString: yourNeonConnectionString,
73
+ });
74
+ ```
75
+
76
+ ### Explorer interaction
77
+
78
+ To enable Explorer-related features, you need to set the `neonConnectionString` in the `NodeTNClient` constructor.
79
+ You can request the explorer write only connection string by contacting us.
80
+
81
+ ```ts
82
+ const client = new NodeTNClient({
83
+ // other options...
84
+ neonConnectionString: yourNeonConnectionString,
85
+ });
86
+ ```
87
+
88
+ ### Explorer interaction
89
+
90
+ To enable Explorer-related features, you need to set the `neonConnectionString` in the `NodeTNClient` constructor.
91
+ You can request the explorer write only connection string by contacting us.
92
+
93
+ ```ts
94
+ const client = new NodeTNClient({
95
+ // other options...
96
+ neonConnectionString: yourNeonConnectionString,
66
97
  });
67
98
  ```
68
99
 
@@ -101,7 +132,49 @@ import { ... } from "npm:@trufnetwork/sdk-js"
101
132
 
102
133
  ### Deno Environment Permissions
103
134
 
104
- By default, some dependencies requires environment permissions. If you need to run without environment permissions, please see [this GitHub issue](https://github.com/denoland/deno/issues/20898#issuecomment-2500396620) for workarounds.
135
+ By default, some dependencies requires environment permissions. If you need to run without environment permissions, please see [this GitHub issue](https://github.com/denoland/deno/issues/20898#issuecomment-2500396620) for workarounds.# Serverless Deployment Notes
136
+
137
+ ## Handling Crypto Hashing in Serverless Environments
138
+
139
+ When deploying to serverless environments, some Node.js modules like `crypto-hash` may not work as expected due to
140
+ compatibility issues. To resolve this, you can create a shim for the `crypto-hash` module and use
141
+ Webpack's `NormalModuleReplacementPlugin` to replace it during the build process.
142
+
143
+ ### Steps to Add a Crypto Hash Shim
144
+
145
+ #### 1. Create a Shim File
146
+
147
+ Add a new file named `crypto-hash-sync.js` to your project:
148
+
149
+ ```
150
+ import { createHash } from 'crypto';
151
+
152
+ export const sha1 = (input) => createHash('sha1').update(input).digest('hex');
153
+ export const sha256 = (input) => createHash('sha256').update(input).digest('hex');
154
+ export const sha384 = (input) => createHash('sha384').update(input).digest('hex');
155
+ export const sha512 = (input) => createHash('sha512').update(input).digest('hex');
156
+ ```
157
+
158
+ #### 2. Update Your Webpack Configuration
159
+
160
+ Modify your `next.config.js` (or equivalent Webpack configuration file) to include the following:
161
+
162
+ ```
163
+ const path = require('path');
164
+
165
+ module.exports = {
166
+ webpack: (config, {isServer, webpack}) => {
167
+ // Add shim for crypto-hash
168
+ config.plugins.push(
169
+ new webpack.NormalModuleReplacementPlugin(
170
+ /crypto-hash/,
171
+ path.resolve(__dirname, 'crypto-hash-sync.js')
172
+ )
173
+ );
174
+ return config;
175
+ }
176
+ };
177
+ ```
105
178
 
106
179
  ## Support
107
180
 
@@ -24,18 +24,21 @@ __export(client_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(client_exports);
26
26
  var import_kwil_js = require("@kwilteam/kwil-js");
27
- var import_composedStream = require("../contracts-api/composedStream.cjs");
27
+ var import_composedAction = require("../contracts-api/composedAction.cjs");
28
28
  var import_deployStream = require("../contracts-api/deployStream.cjs");
29
- var import_destroyStream = require("../contracts-api/destroyStream.cjs");
30
- var import_primitiveStream = require("../contracts-api/primitiveStream.cjs");
31
- var import_stream = require("../contracts-api/stream.cjs");
29
+ var import_deleteStream = require("../contracts-api/deleteStream.cjs");
30
+ var import_primitiveAction = require("../contracts-api/primitiveAction.cjs");
31
+ var import_action = require("../contracts-api/action.cjs");
32
32
  var import_EthereumAddress = require("../util/EthereumAddress.cjs");
33
- var import_listAllStreams = require("./listAllStreams.cjs");
33
+ var import_listStreams = require("./listStreams.cjs");
34
+ var import_getLastTransactions = require("./getLastTransactions.cjs");
34
35
  var BaseTNClient = class {
35
36
  kwilClient;
36
37
  signerInfo;
38
+ neonConnectionString;
37
39
  constructor(options) {
38
40
  this.signerInfo = options.signerInfo;
41
+ this.neonConnectionString = options.neonConnectionString;
39
42
  }
40
43
  /**
41
44
  * Waits for a transaction to be mined by TN.
@@ -49,14 +52,14 @@ var BaseTNClient = class {
49
52
  const receipt = await this.getKwilClient()["txInfoClient"](txHash).catch(() => ({ data: void 0, status: void 0 }));
50
53
  switch (receipt.status) {
51
54
  case 200:
52
- if (receipt.data?.tx_result.log === "success") {
53
- resolve(receipt.data);
54
- } else {
55
+ if (receipt.data?.tx_result?.log !== void 0 && receipt.data?.tx_result?.log.includes("ERROR")) {
55
56
  reject(
56
57
  new Error(
57
58
  `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`
58
59
  )
59
60
  );
61
+ } else {
62
+ resolve(receipt.data);
60
63
  }
61
64
  break;
62
65
  case void 0:
@@ -96,6 +99,12 @@ var BaseTNClient = class {
96
99
  }
97
100
  return this.kwilClient;
98
101
  }
102
+ /**
103
+ * Returns the Neon connection string used by the client.
104
+ */
105
+ getNeonConnectionString() {
106
+ return this.neonConnectionString;
107
+ }
99
108
  /**
100
109
  * Deploys a new stream.
101
110
  * @param streamId - The ID of the stream to deploy.
@@ -104,25 +113,25 @@ var BaseTNClient = class {
104
113
  * @param contractVersion
105
114
  * @returns A promise that resolves to a generic response containing the transaction receipt.
106
115
  */
107
- async deployStream(streamId, streamType, synchronous, contractVersion) {
116
+ async deployStream(streamId, streamType, synchronous) {
108
117
  return await (0, import_deployStream.deployStream)({
109
118
  streamId,
110
119
  streamType,
111
120
  synchronous,
112
121
  kwilClient: this.getKwilClient(),
113
122
  kwilSigner: this.getKwilSigner(),
114
- contractVersion
123
+ neonConnectionString: this.getNeonConnectionString()
115
124
  });
116
125
  }
117
126
  /**
118
127
  * Destroys a stream.
119
- * @param streamId - The ID of the stream to destroy.
128
+ * @param stream - The StreamLocator of the stream to destroy.
120
129
  * @param synchronous - Whether the destruction should be synchronous.
121
130
  * @returns A promise that resolves to a generic response containing the transaction receipt.
122
131
  */
123
- async destroyStream(streamId, synchronous) {
124
- return await (0, import_destroyStream.destroyStream)({
125
- streamId,
132
+ async destroyStream(stream, synchronous) {
133
+ return await (0, import_deleteStream.deleteStream)({
134
+ stream,
126
135
  synchronous,
127
136
  kwilClient: this.getKwilClient(),
128
137
  kwilSigner: this.getKwilSigner()
@@ -130,35 +139,27 @@ var BaseTNClient = class {
130
139
  }
131
140
  /**
132
141
  * Loads an already deployed stream, permitting its API usage.
133
- * @param stream - The locator of the stream to load.
134
142
  * @returns An instance of IStream.
135
143
  */
136
- loadStream(stream) {
137
- return new import_stream.Stream(
144
+ loadAction() {
145
+ return new import_action.Action(
138
146
  this.getKwilClient(),
139
- this.getKwilSigner(),
140
- stream
147
+ this.getKwilSigner()
141
148
  );
142
149
  }
143
150
  /**
144
151
  * Loads a primitive stream.
145
- * @param stream - The locator of the primitive stream to load.
146
152
  * @returns An instance of IPrimitiveStream.
147
153
  */
148
- loadPrimitiveStream(stream) {
149
- return import_primitiveStream.PrimitiveStream.fromStream(this.loadStream(stream));
154
+ loadPrimitiveAction() {
155
+ return import_primitiveAction.PrimitiveAction.fromStream(this.loadAction());
150
156
  }
151
157
  /**
152
158
  * Loads a composed stream.
153
- * @param stream - The locator of the composed stream to load.
154
159
  * @returns An instance of IComposedStream.
155
160
  */
156
- loadComposedStream(stream) {
157
- return new import_composedStream.ComposedStream(
158
- this.getKwilClient(),
159
- this.getKwilSigner(),
160
- stream
161
- );
161
+ loadComposedAction() {
162
+ return import_composedAction.ComposedAction.fromStream(this.loadAction(), this.getNeonConnectionString());
162
163
  }
163
164
  /**
164
165
  * Creates a new stream locator.
@@ -180,11 +181,19 @@ var BaseTNClient = class {
180
181
  }
181
182
  /**
182
183
  * Returns all streams from the TN network.
183
- * @param owner - The owner of the streams. If not provided, all streams will be returned.
184
+ * @param input - The input parameters for listing streams.
184
185
  * @returns A promise that resolves to a list of stream locators.
185
186
  */
186
- async getAllStreams(owner) {
187
- return (0, import_listAllStreams.listAllStreams)(this.getKwilClient(), owner);
187
+ async getListStreams(input) {
188
+ return (0, import_listStreams.listStreams)(this.getKwilClient(), this.getKwilSigner(), input);
189
+ }
190
+ /**
191
+ * Returns the last write activity across streams.
192
+ * @param input - The input parameters for getting last transactions.
193
+ * @returns A promise that resolves to a list of last transactions.
194
+ */
195
+ async getLastTransactions(input) {
196
+ return (0, import_getLastTransactions.getLastTransactions)(this.getKwilClient(), this.getKwilSigner(), input);
188
197
  }
189
198
  /**
190
199
  * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/client.ts"],
4
- "sourcesContent": ["import { Client, KwilSigner, NodeKwil, WebKwil } from \"@kwilteam/kwil-js\";\nimport { KwilConfig } from \"@kwilteam/kwil-js/dist/api_client/config\";\nimport { Kwil } from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport { EthSigner } from \"@kwilteam/kwil-js/dist/core/builders\";\nimport { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { TxInfoReceipt } from \"@kwilteam/kwil-js/dist/core/txQuery\";\nimport { ComposedStream } from \"../contracts-api/composedStream\";\nimport { deployStream } from \"../contracts-api/deployStream\";\nimport { destroyStream } from \"../contracts-api/destroyStream\";\nimport { PrimitiveStream } from \"../contracts-api/primitiveStream\";\nimport { Stream } from \"../contracts-api/stream\";\nimport { StreamType } from \"../contracts-api/contractValues\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { listAllStreams } from \"./listAllStreams\";\n\nexport interface SignerInfo {\n // we need to have the address upfront to create the KwilSigner, instead of relying on the signer to return it asynchronously\n address: string;\n signer: EthSigner;\n}\n\nexport type TNClientOptions = {\n endpoint: string;\n signerInfo: SignerInfo;\n} & Omit<KwilConfig, \"kwilProvider\">;\n\nexport abstract class BaseTNClient<T extends EnvironmentType> {\n protected kwilClient: Kwil<T> | undefined;\n protected signerInfo: SignerInfo;\n\n protected constructor(options: TNClientOptions) {\n this.signerInfo = options.signerInfo;\n }\n\n /**\n * Waits for a transaction to be mined by TN.\n * @param txHash - The transaction hash to wait for.\n * @param timeout - The timeout in milliseconds.\n * @returns A promise that resolves to the transaction info receipt.\n */\n async waitForTx(txHash: string, timeout = 12000): Promise<TxInfoReceipt> {\n return new Promise<TxInfoReceipt>(async (resolve, reject) => {\n const interval = setInterval(async () => {\n const receipt = await this.getKwilClient()\n [\"txInfoClient\"](txHash)\n .catch(() => ({ data: undefined, status: undefined }));\n switch (receipt.status) {\n case 200:\n if (receipt.data?.tx_result.log === \"success\") {\n resolve(receipt.data);\n } else {\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n break;\n case undefined:\n break;\n default:\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n }, 1000);\n setTimeout(() => {\n clearInterval(interval);\n reject(new Error(\"Transaction failed: Timeout\"));\n }, timeout);\n });\n }\n\n /**\n * Returns the Kwil signer used by the client.\n * @returns An instance of KwilSigner.\n */\n getKwilSigner(): KwilSigner {\n return new KwilSigner(\n this.signerInfo.signer,\n this.address().getAddress(),\n );\n }\n\n /**\n * Returns the Kwil client used by the client.\n * @returns An instance of Kwil.\n * @throws If the Kwil client is not initialized.\n */\n getKwilClient(): Kwil<EnvironmentType> {\n if (!this.kwilClient) {\n throw new Error(\"Kwil client not initialized\");\n }\n return this.kwilClient;\n }\n\n /**\n * Deploys a new stream.\n * @param streamId - The ID of the stream to deploy.\n * @param streamType - The type of the stream.\n * @param synchronous - Whether the deployment should be synchronous.\n * @param contractVersion\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async deployStream(\n streamId: StreamId,\n streamType: StreamType,\n synchronous?: boolean,\n contractVersion?: number\n ): Promise<GenericResponse<TxReceipt>> {\n return await deployStream({\n streamId,\n streamType,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n contractVersion: contractVersion\n });\n }\n\n /**\n * Destroys a stream.\n * @param streamId - The ID of the stream to destroy.\n * @param synchronous - Whether the destruction should be synchronous.\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async destroyStream(\n streamId: StreamId,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await destroyStream({\n streamId,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Loads an already deployed stream, permitting its API usage.\n * @param stream - The locator of the stream to load.\n * @returns An instance of IStream.\n */\n loadStream(stream: StreamLocator): Stream {\n return new Stream(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n stream,\n );\n }\n\n /**\n * Loads a primitive stream.\n * @param stream - The locator of the primitive stream to load.\n * @returns An instance of IPrimitiveStream.\n */\n loadPrimitiveStream(stream: StreamLocator): PrimitiveStream {\n return PrimitiveStream.fromStream(this.loadStream(stream));\n }\n\n /**\n * Loads a composed stream.\n * @param stream - The locator of the composed stream to load.\n * @returns An instance of IComposedStream.\n */\n loadComposedStream(stream: StreamLocator): ComposedStream {\n return new ComposedStream(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n stream,\n );\n }\n\n /**\n * Creates a new stream locator.\n * @param streamId - The ID of the stream.\n * @returns A StreamLocator object.\n */\n ownStreamLocator(streamId: StreamId): StreamLocator {\n return {\n streamId,\n dataProvider: this.address(),\n };\n }\n\n /**\n * Returns the address of the signer used by the client.\n * @returns An instance of EthereumAddress.\n */\n address(): EthereumAddress {\n return new EthereumAddress(this.signerInfo.address);\n }\n\n /**\n * Returns all streams from the TN network.\n * @param owner - The owner of the streams. If not provided, all streams will be returned.\n * @returns A promise that resolves to a list of stream locators.\n */\n async getAllStreams(owner?: EthereumAddress): Promise<StreamLocator[]> {\n return listAllStreams(this.getKwilClient(), owner);\n }\n\n /**\n * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.\n * @param provider - The provider URL.\n * @returns A promise that resolves to the chain ID.\n */\n public static async getDefaultChainId(provider: string) {\n const kwilClient = new Client({\n kwilProvider: provider,\n });\n const chainInfo = await kwilClient[\"chainInfoClient\"]();\n return chainInfo.data?.chain_id;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Client, KwilSigner, NodeKwil, WebKwil } from \"@kwilteam/kwil-js\";\nimport { KwilConfig } from \"@kwilteam/kwil-js/dist/api_client/config\";\nimport { Kwil } from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport { EthSigner } from \"@kwilteam/kwil-js/dist/core/signature\";\nimport { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { TxInfoReceipt } from \"@kwilteam/kwil-js/dist/core/txQuery\";\nimport { ComposedAction } from \"../contracts-api/composedAction\";\nimport { deployStream } from \"../contracts-api/deployStream\";\nimport { deleteStream } from \"../contracts-api/deleteStream\";\nimport { PrimitiveAction } from \"../contracts-api/primitiveAction\";\nimport { Action } from \"../contracts-api/action\";\nimport { StreamType } from \"../contracts-api/contractValues\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { listStreams } from \"./listStreams\";\nimport { getLastTransactions } from \"./getLastTransactions\";\n\nexport interface SignerInfo {\n // we need to have the address upfront to create the KwilSigner, instead of relying on the signer to return it asynchronously\n address: string;\n signer: EthSigner;\n}\n\nexport type TNClientOptions = {\n endpoint: string;\n signerInfo: SignerInfo;\n neonConnectionString?: string;\n} & Omit<KwilConfig, \"kwilProvider\">;\n\nexport interface ListStreamsInput {\n dataProvider?: string;\n limit?: number;\n offset?: number;\n orderBy?: string;\n}\n\n/**\n * @param dataProvider optional address; when omitted or null, returns for all providers\n * @param limitSize max rows to return (default 6, max 100)\n */\nexport interface GetLastTransactionsInput {\n dataProvider?: string;\n limitSize?: number;\n}\n\nexport abstract class BaseTNClient<T extends EnvironmentType> {\n protected kwilClient: Kwil<T> | undefined;\n protected signerInfo: SignerInfo;\n protected neonConnectionString: string | undefined;\n\n protected constructor(options: TNClientOptions) {\n this.signerInfo = options.signerInfo;\n this.neonConnectionString = options.neonConnectionString;\n }\n\n /**\n * Waits for a transaction to be mined by TN.\n * @param txHash - The transaction hash to wait for.\n * @param timeout - The timeout in milliseconds.\n * @returns A promise that resolves to the transaction info receipt.\n */\n async waitForTx(txHash: string, timeout = 12000): Promise<TxInfoReceipt> {\n return new Promise<TxInfoReceipt>(async (resolve, reject) => {\n const interval = setInterval(async () => {\n const receipt = await this.getKwilClient()\n [\"txInfoClient\"](txHash)\n .catch(() => ({ data: undefined, status: undefined }));\n switch (receipt.status) {\n case 200:\n if (receipt.data?.tx_result?.log !== undefined && receipt.data?.tx_result?.log.includes(\"ERROR\")) {\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ))\n } else {\n resolve(receipt.data!);\n }\n break;\n case undefined:\n break;\n default:\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n }, 1000);\n setTimeout(() => {\n clearInterval(interval);\n reject(new Error(\"Transaction failed: Timeout\"));\n }, timeout);\n });\n }\n\n /**\n * Returns the Kwil signer used by the client.\n * @returns An instance of KwilSigner.\n */\n getKwilSigner(): KwilSigner {\n return new KwilSigner(\n this.signerInfo.signer,\n this.address().getAddress(),\n );\n }\n\n /**\n * Returns the Kwil client used by the client.\n * @returns An instance of Kwil.\n * @throws If the Kwil client is not initialized.\n */\n getKwilClient(): Kwil<EnvironmentType> {\n if (!this.kwilClient) {\n throw new Error(\"Kwil client not initialized\");\n }\n return this.kwilClient;\n }\n\n /**\n * Returns the Neon connection string used by the client.\n */\n getNeonConnectionString(): string | undefined {\n return this.neonConnectionString;\n }\n\n /**\n * Deploys a new stream.\n * @param streamId - The ID of the stream to deploy.\n * @param streamType - The type of the stream.\n * @param synchronous - Whether the deployment should be synchronous.\n * @param contractVersion\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async deployStream(\n streamId: StreamId,\n streamType: StreamType,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deployStream({\n streamId,\n streamType,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n neonConnectionString: this.getNeonConnectionString(),\n });\n }\n\n /**\n * Destroys a stream.\n * @param stream - The StreamLocator of the stream to destroy.\n * @param synchronous - Whether the destruction should be synchronous.\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async destroyStream(\n stream: StreamLocator,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deleteStream({\n stream,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Loads an already deployed stream, permitting its API usage.\n * @returns An instance of IStream.\n */\n loadAction(): Action {\n return new Action(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Loads a primitive stream.\n * @returns An instance of IPrimitiveStream.\n */\n loadPrimitiveAction(): PrimitiveAction {\n return PrimitiveAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads a composed stream.\n * @returns An instance of IComposedStream.\n */\n loadComposedAction(): ComposedAction {\n return ComposedAction.fromStream(this.loadAction(), this.getNeonConnectionString());\n }\n\n /**\n * Creates a new stream locator.\n * @param streamId - The ID of the stream.\n * @returns A StreamLocator object.\n */\n ownStreamLocator(streamId: StreamId): StreamLocator {\n return {\n streamId,\n dataProvider: this.address(),\n };\n }\n\n /**\n * Returns the address of the signer used by the client.\n * @returns An instance of EthereumAddress.\n */\n address(): EthereumAddress {\n return new EthereumAddress(this.signerInfo.address);\n }\n\n /**\n * Returns all streams from the TN network.\n * @param input - The input parameters for listing streams.\n * @returns A promise that resolves to a list of stream locators.\n */\n async getListStreams(input: ListStreamsInput): Promise<StreamLocator[]> {\n return listStreams(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Returns the last write activity across streams.\n * @param input - The input parameters for getting last transactions.\n * @returns A promise that resolves to a list of last transactions.\n */\n async getLastTransactions(input: GetLastTransactionsInput): Promise<any[]> {\n return getLastTransactions(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.\n * @param provider - The provider URL.\n * @returns A promise that resolves to the chain ID.\n */\n public static async getDefaultChainId(provider: string) {\n const kwilClient = new Client({\n kwilProvider: provider,\n });\n const chainInfo = await kwilClient[\"chainInfoClient\"]();\n return chainInfo.data?.chain_id;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/client/getLastTransactions.ts
21
+ var getLastTransactions_exports = {};
22
+ __export(getLastTransactions_exports, {
23
+ getLastTransactions: () => getLastTransactions
24
+ });
25
+ module.exports = __toCommonJS(getLastTransactions_exports);
26
+ var INDEXER_BASE = "https://indexer.infra.truf.network";
27
+ async function getLastTransactions(kwilClient, kwilSigner, input) {
28
+ const res = await kwilClient.call(
29
+ {
30
+ name: "get_last_transactions",
31
+ namespace: "main",
32
+ inputs: {
33
+ $data_provider: input.dataProvider ?? null,
34
+ $limit_size: input.limitSize ?? 6
35
+ }
36
+ },
37
+ kwilSigner
38
+ );
39
+ const rows = res.data?.result || [];
40
+ return Promise.all(
41
+ rows.map(async (r) => {
42
+ const url = `${INDEXER_BASE}/v0/chain/transactions?from-block=${r.created_at}&to-block=${r.created_at}&order=asc&limit=1`;
43
+ const resp = await fetch(url);
44
+ if (!resp.ok) {
45
+ throw new Error(`Indexer fetch failed: ${resp.status}`);
46
+ }
47
+ const json = await resp.json();
48
+ if (!json.ok || !json.data || json.data.length === 0) {
49
+ console.warn(`No transaction found at block ${r.created_at}`);
50
+ return {
51
+ blockHeight: r.created_at,
52
+ method: r.method,
53
+ sender: "(unknown)",
54
+ transactionHash: "(unknown)"
55
+ };
56
+ }
57
+ const tx = json.data[0];
58
+ return {
59
+ blockHeight: r.created_at,
60
+ method: r.method,
61
+ sender: tx.sender,
62
+ transactionHash: tx.hash
63
+ };
64
+ })
65
+ );
66
+ }
67
+ //# sourceMappingURL=getLastTransactions.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/client/getLastTransactions.ts"],
4
+ "sourcesContent": ["import { WebKwil, NodeKwil, KwilSigner } from \"@kwilteam/kwil-js\";\r\nimport { GetLastTransactionsInput } from \"./client\";\r\nimport { LastTransaction } from \"../types/transaction\";\r\n\r\nconst INDEXER_BASE = \"https://indexer.infra.truf.network\";\r\n\r\nexport async function getLastTransactions(\r\n kwilClient: WebKwil | NodeKwil,\r\n kwilSigner: KwilSigner,\r\n input: GetLastTransactionsInput\r\n): Promise<LastTransaction[]> {\r\n // 1) call your SQL action\r\n const res = await kwilClient.call(\r\n {\r\n name: \"get_last_transactions\",\r\n namespace: \"main\",\r\n inputs: {\r\n $data_provider: input.dataProvider ?? null,\r\n $limit_size: input.limitSize ?? 6,\r\n },\r\n },\r\n kwilSigner\r\n );\r\n\r\n const rows =\r\n (res.data?.result as { created_at: number; method: string }[]) || [];\r\n\r\n // 2) for each row, hit the indexer to grab sender & tx hash\r\n return Promise.all(\r\n rows.map(async (r) => {\r\n const url = `${INDEXER_BASE}/v0/chain/transactions`\r\n + `?from-block=${r.created_at}`\r\n + `&to-block=${r.created_at}`\r\n + `&order=asc&limit=1`;\r\n\r\n const resp = await fetch(url);\r\n if (!resp.ok) {\r\n throw new Error(`Indexer fetch failed: ${resp.status}`);\r\n }\r\n const json = await resp.json() as {\r\n ok: boolean;\r\n data: Array<{\r\n hash: string;\r\n sender: string;\r\n }> | null;\r\n };\r\n\r\n if (!json.ok || !json.data || json.data.length === 0) {\r\n console.warn(`No transaction found at block ${r.created_at}`);\r\n return {\r\n blockHeight: r.created_at,\r\n method: r.method,\r\n sender: \"(unknown)\",\r\n transactionHash: \"(unknown)\",\r\n };\r\n }\r\n\r\n const tx = json.data[0];\r\n return {\r\n blockHeight: r.created_at,\r\n method: r.method,\r\n sender: tx.sender,\r\n transactionHash: tx.hash,\r\n };\r\n })\r\n );\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAM,eAAe;AAErB,eAAsB,oBAClB,YACA,YACA,OAC0B;AAE1B,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,MACI,MAAM;AAAA,MACN,WAAW;AAAA,MACX,QAAQ;AAAA,QACJ,gBAAgB,MAAM,gBAAgB;AAAA,QACtC,aAAa,MAAM,aAAa;AAAA,MACpC;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,OACD,IAAI,MAAM,UAAuD,CAAC;AAGvE,SAAO,QAAQ;AAAA,IACX,KAAK,IAAI,OAAO,MAAM;AAClB,YAAM,MAAM,GAAG,YAAY,qCACN,EAAE,UAAU,aACd,EAAE,UAAU;AAG/B,YAAM,OAAO,MAAM,MAAM,GAAG;AAC5B,UAAI,CAAC,KAAK,IAAI;AACV,cAAM,IAAI,MAAM,yBAAyB,KAAK,MAAM,EAAE;AAAA,MAC1D;AACA,YAAM,OAAO,MAAM,KAAK,KAAK;AAQ7B,UAAI,CAAC,KAAK,MAAM,CAAC,KAAK,QAAQ,KAAK,KAAK,WAAW,GAAG;AAClD,gBAAQ,KAAK,iCAAiC,EAAE,UAAU,EAAE;AAC5D,eAAO;AAAA,UACH,aAAa,EAAE;AAAA,UACf,QAAQ,EAAE;AAAA,UACV,QAAQ;AAAA,UACR,iBAAiB;AAAA,QACrB;AAAA,MACJ;AAEA,YAAM,KAAK,KAAK,KAAK,CAAC;AACtB,aAAO;AAAA,QACH,aAAa,EAAE;AAAA,QACf,QAAQ,EAAE;AAAA,QACV,QAAQ,GAAG;AAAA,QACX,iBAAiB,GAAG;AAAA,MACxB;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/client/listStreams.ts
21
+ var listStreams_exports = {};
22
+ __export(listStreams_exports, {
23
+ listStreams: () => listStreams
24
+ });
25
+ module.exports = __toCommonJS(listStreams_exports);
26
+ var import_EthereumAddress = require("../util/EthereumAddress.cjs");
27
+ var import_StreamId = require("../util/StreamId.cjs");
28
+ async function listStreams(kwilClient, kwilSigner, input) {
29
+ const result = await kwilClient.call({
30
+ inputs: {
31
+ $data_provider: input.dataProvider,
32
+ $limit: input.limit,
33
+ $offset: input.offset,
34
+ $order_by: input.orderBy
35
+ },
36
+ name: "list_streams",
37
+ namespace: "main"
38
+ }, kwilSigner);
39
+ return await Promise.all(
40
+ (result.data?.result).map(async (database) => ({
41
+ streamId: await import_StreamId.StreamId.generate(database.stream_id),
42
+ dataProvider: new import_EthereumAddress.EthereumAddress(database.data_provider)
43
+ }))
44
+ );
45
+ }
46
+ //# sourceMappingURL=listStreams.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/client/listStreams.ts"],
4
+ "sourcesContent": ["import {StreamLocator} from \"../types/stream\";\nimport {EthereumAddress} from \"../util/EthereumAddress\";\nimport {StreamId} from \"../util/StreamId\";\nimport {Database} from \"@kwilteam/kwil-js/dist/core/database\";\nimport {ListStreamsInput} from \"./client\";\nimport {KwilSigner, NodeKwil, WebKwil} from \"@kwilteam/kwil-js\";\n\n/**\n * List all streams from the TN network.\n * @param kwilClient - The Kwil client.\n * @param kwilSigner - The Kwil signer.\n * @param input - The input parameters for listing streams.\n * @returns A list of stream locators.\n */\nexport async function listStreams(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n input: ListStreamsInput\n): Promise<StreamLocator[]> {\n const result = await kwilClient.call({\n inputs: {\n $data_provider: input.dataProvider,\n $limit: input.limit,\n $offset: input.offset,\n $order_by: input.orderBy,\n },\n name: \"list_streams\",\n namespace: \"main\",\n }, kwilSigner);\n\n return await Promise.all(\n (result.data?.result as {\n data_provider: string;\n stream_id: string;\n stream_type: string;\n created_at: number;\n }[]).map(async (database) => ({\n streamId: await StreamId.generate(database.stream_id),\n dataProvider: new EthereumAddress(database.data_provider),\n }))\n );\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,6BAA8B;AAC9B,sBAAuB;AAYvB,eAAsB,YACpB,YACA,YACA,OAC0B;AACxB,QAAM,SAAS,MAAM,WAAW,KAAK;AAAA,IACjC,QAAQ;AAAA,MACJ,gBAAgB,MAAM;AAAA,MACtB,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,WAAW,MAAM;AAAA,IACrB;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,EACf,GAAG,UAAU;AAEb,SAAO,MAAM,QAAQ;AAAA,KAChB,OAAO,MAAM,QAKT,IAAI,OAAO,cAAc;AAAA,MAC1B,UAAU,MAAM,yBAAS,SAAS,SAAS,SAAS;AAAA,MACpD,cAAc,IAAI,uCAAgB,SAAS,aAAa;AAAA,IAC5D,EAAE;AAAA,EACN;AACJ;",
6
+ "names": []
7
+ }