@trufnetwork/sdk-js 0.0.0-dev-20241126103246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +13 -0
- package/README.md +95 -0
- package/dist/cjs/client/browserClient.cjs +39 -0
- package/dist/cjs/client/browserClient.cjs.map +7 -0
- package/dist/cjs/client/client.cjs +200 -0
- package/dist/cjs/client/client.cjs.map +7 -0
- package/dist/cjs/client/client.test.cjs +32 -0
- package/dist/cjs/client/client.test.cjs.map +7 -0
- package/dist/cjs/client/listAllStreams.cjs +51 -0
- package/dist/cjs/client/listAllStreams.cjs.map +7 -0
- package/dist/cjs/client/nodeClient.cjs +39 -0
- package/dist/cjs/client/nodeClient.cjs.map +7 -0
- package/dist/cjs/contracts/composed_stream_template.json +1638 -0
- package/dist/cjs/contracts/contractsContent.cjs +53 -0
- package/dist/cjs/contracts/contractsContent.cjs.map +7 -0
- package/dist/cjs/contracts/primitive_stream_template.json +952 -0
- package/dist/cjs/contracts-api/composedStream.cjs +137 -0
- package/dist/cjs/contracts-api/composedStream.cjs.map +7 -0
- package/dist/cjs/contracts-api/contractValues.cjs +66 -0
- package/dist/cjs/contracts-api/contractValues.cjs.map +7 -0
- package/dist/cjs/contracts-api/deployStream.cjs +55 -0
- package/dist/cjs/contracts-api/deployStream.cjs.map +7 -0
- package/dist/cjs/contracts-api/destroyStream.cjs +45 -0
- package/dist/cjs/contracts-api/destroyStream.cjs.map +7 -0
- package/dist/cjs/contracts-api/primitiveStream.cjs +86 -0
- package/dist/cjs/contracts-api/primitiveStream.cjs.map +7 -0
- package/dist/cjs/contracts-api/stream.cjs +379 -0
- package/dist/cjs/contracts-api/stream.cjs.map +7 -0
- package/dist/cjs/index.browser.cjs +29 -0
- package/dist/cjs/index.browser.cjs.map +7 -0
- package/dist/cjs/index.cjs +31 -0
- package/dist/cjs/index.cjs.map +7 -0
- package/dist/cjs/index.common.cjs +39 -0
- package/dist/cjs/index.common.cjs.map +7 -0
- package/dist/cjs/index.node.cjs +29 -0
- package/dist/cjs/index.node.cjs.map +7 -0
- package/dist/cjs/types/other.cjs +19 -0
- package/dist/cjs/types/other.cjs.map +7 -0
- package/dist/cjs/types/stream.cjs +19 -0
- package/dist/cjs/types/stream.cjs.map +7 -0
- package/dist/cjs/util/EthereumAddress.cjs +108 -0
- package/dist/cjs/util/EthereumAddress.cjs.map +7 -0
- package/dist/cjs/util/StreamId.cjs +77 -0
- package/dist/cjs/util/StreamId.cjs.map +7 -0
- package/dist/cjs/util/head.cjs +30 -0
- package/dist/cjs/util/head.cjs.map +7 -0
- package/dist/cjs/util/visibility.cjs +42 -0
- package/dist/cjs/util/visibility.cjs.map +7 -0
- package/dist/esm/client/browserClient.mjs +18 -0
- package/dist/esm/client/browserClient.mjs.map +7 -0
- package/dist/esm/client/client.mjs +183 -0
- package/dist/esm/client/client.mjs.map +7 -0
- package/dist/esm/client/client.test.mjs +30 -0
- package/dist/esm/client/client.test.mjs.map +7 -0
- package/dist/esm/client/listAllStreams.mjs +30 -0
- package/dist/esm/client/listAllStreams.mjs.map +7 -0
- package/dist/esm/client/nodeClient.mjs +18 -0
- package/dist/esm/client/nodeClient.mjs.map +7 -0
- package/dist/esm/contracts/composed_stream_template.json +1638 -0
- package/dist/esm/contracts/contractsContent.mjs +21 -0
- package/dist/esm/contracts/contractsContent.mjs.map +7 -0
- package/dist/esm/contracts/primitive_stream_template.json +952 -0
- package/dist/esm/contracts-api/composedStream.mjs +116 -0
- package/dist/esm/contracts-api/composedStream.mjs.map +7 -0
- package/dist/esm/contracts-api/contractValues.mjs +45 -0
- package/dist/esm/contracts-api/contractValues.mjs.map +7 -0
- package/dist/esm/contracts-api/deployStream.mjs +37 -0
- package/dist/esm/contracts-api/deployStream.mjs.map +7 -0
- package/dist/esm/contracts-api/destroyStream.mjs +24 -0
- package/dist/esm/contracts-api/destroyStream.mjs.map +7 -0
- package/dist/esm/contracts-api/primitiveStream.mjs +65 -0
- package/dist/esm/contracts-api/primitiveStream.mjs.map +7 -0
- package/dist/esm/contracts-api/stream.mjs +367 -0
- package/dist/esm/contracts-api/stream.mjs.map +7 -0
- package/dist/esm/index.browser.mjs +7 -0
- package/dist/esm/index.browser.mjs.map +7 -0
- package/dist/esm/index.common.mjs +18 -0
- package/dist/esm/index.common.mjs.map +7 -0
- package/dist/esm/index.mjs +9 -0
- package/dist/esm/index.mjs.map +7 -0
- package/dist/esm/index.node.mjs +7 -0
- package/dist/esm/index.node.mjs.map +7 -0
- package/dist/esm/types/other.mjs +1 -0
- package/dist/esm/types/other.mjs.map +7 -0
- package/dist/esm/types/stream.mjs +1 -0
- package/dist/esm/types/stream.mjs.map +7 -0
- package/dist/esm/util/EthereumAddress.mjs +90 -0
- package/dist/esm/util/EthereumAddress.mjs.map +7 -0
- package/dist/esm/util/StreamId.mjs +59 -0
- package/dist/esm/util/StreamId.mjs.map +7 -0
- package/dist/esm/util/head.mjs +9 -0
- package/dist/esm/util/head.mjs.map +7 -0
- package/dist/esm/util/visibility.mjs +21 -0
- package/dist/esm/util/visibility.mjs.map +7 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/client/browserClient.d.ts +7 -0
- package/dist/types/client/browserClient.d.ts.map +1 -0
- package/dist/types/client/client.d.ts +103 -0
- package/dist/types/client/client.d.ts.map +1 -0
- package/dist/types/client/client.test.d.ts +2 -0
- package/dist/types/client/client.test.d.ts.map +1 -0
- package/dist/types/client/listAllStreams.d.ts +14 -0
- package/dist/types/client/listAllStreams.d.ts.map +1 -0
- package/dist/types/client/nodeClient.d.ts +7 -0
- package/dist/types/client/nodeClient.d.ts.map +1 -0
- package/dist/types/contracts/contractsContent.d.ts +4 -0
- package/dist/types/contracts/contractsContent.d.ts.map +1 -0
- package/dist/types/contracts-api/composedStream.d.ts +57 -0
- package/dist/types/contracts-api/composedStream.d.ts.map +1 -0
- package/dist/types/contracts-api/contractValues.d.ts +49 -0
- package/dist/types/contracts-api/contractValues.d.ts.map +1 -0
- package/dist/types/contracts-api/deployStream.d.ts +23 -0
- package/dist/types/contracts-api/deployStream.d.ts.map +1 -0
- package/dist/types/contracts-api/destroyStream.d.ts +27 -0
- package/dist/types/contracts-api/destroyStream.d.ts.map +1 -0
- package/dist/types/contracts-api/primitiveStream.d.ts +39 -0
- package/dist/types/contracts-api/primitiveStream.d.ts.map +1 -0
- package/dist/types/contracts-api/stream.d.ts +135 -0
- package/dist/types/contracts-api/stream.d.ts.map +1 -0
- package/dist/types/index.browser.d.ts +3 -0
- package/dist/types/index.browser.d.ts.map +1 -0
- package/dist/types/index.common.d.ts +16 -0
- package/dist/types/index.common.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.node.d.ts +3 -0
- package/dist/types/index.node.d.ts.map +1 -0
- package/dist/types/types/other.d.ts +2 -0
- package/dist/types/types/other.d.ts.map +1 -0
- package/dist/types/types/stream.d.ts +13 -0
- package/dist/types/types/stream.d.ts.map +1 -0
- package/dist/types/util/EthereumAddress.d.ts +14 -0
- package/dist/types/util/EthereumAddress.d.ts.map +1 -0
- package/dist/types/util/StreamId.d.ts +13 -0
- package/dist/types/util/StreamId.d.ts.map +1 -0
- package/dist/types/util/head.d.ts +3 -0
- package/dist/types/util/head.d.ts.map +1 -0
- package/dist/types/util/visibility.d.ts +10 -0
- package/dist/types/util/visibility.d.ts.map +1 -0
- package/package.json +82 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2024 Tru Labs Inc.
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# TN SDK JS
|
|
2
|
+
|
|
3
|
+
The TN SDK provides developers with tools to interact with the Truf Network, a decentralized platform for publishing, composing, and consuming economic data streams.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
- Node.js 18 or later
|
|
9
|
+
|
|
10
|
+
### Installation
|
|
11
|
+
```bash
|
|
12
|
+
npm install @trufnetwork/sdk-js
|
|
13
|
+
# or your preferred package manager
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Environment-specific Usage
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
// For Node.js applications
|
|
20
|
+
import { NodeTNClient } from "@trufnetwork/sdk-js";
|
|
21
|
+
|
|
22
|
+
// For browser applications
|
|
23
|
+
import { BrowserTNClient } from "@trufnetwork/sdk-js";
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Example Usage
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { NodeTNClient, StreamId } from "@trufnetwork/sdk-js";
|
|
30
|
+
|
|
31
|
+
// Initialize client
|
|
32
|
+
const client = new NodeTNClient({
|
|
33
|
+
endpoint: "https://staging.tsn.truflation.com",
|
|
34
|
+
signerInfo: {
|
|
35
|
+
address: wallet.address,
|
|
36
|
+
signer: wallet, // Any object that implements signMessage
|
|
37
|
+
},
|
|
38
|
+
chainId: "tsn-1", // or use NodeTNClient.getDefaultChainId()
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Deploy and initialize a stream
|
|
42
|
+
const streamId = await StreamId.generate("my-data-stream");
|
|
43
|
+
await client.deployStream(streamId, "primitive", true);
|
|
44
|
+
|
|
45
|
+
const stream = client.loadPrimitiveStream({
|
|
46
|
+
streamId,
|
|
47
|
+
dataProvider: client.address(),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// here simplified, you might need to wait for the tx using client.waitForTx
|
|
51
|
+
await stream.initializeStream();
|
|
52
|
+
|
|
53
|
+
// Insert data, simplified
|
|
54
|
+
await stream.insertRecords([
|
|
55
|
+
{ dateValue: "2024-01-01", value: "100.5" }
|
|
56
|
+
]);
|
|
57
|
+
|
|
58
|
+
// Read data
|
|
59
|
+
const data = await stream.getRecord({
|
|
60
|
+
dateFrom: "2024-01-01",
|
|
61
|
+
dateTo: "2024-01-01",
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For a complete working example:
|
|
66
|
+
- Check our [TN SDK Demo Repository](https://github.com/truflation/tsn-sdk-demo)
|
|
67
|
+
- Try the [Live Demo on CodeSandbox](https://codesandbox.io/p/devbox/m2r3tt?file=%2Fsrc%2Froutes%2F%2Bpage.svelte)
|
|
68
|
+
- Try reading from [a Truflation Stream on CodeSandbox with NodeJS](https://codesandbox.io/p/devbox/rtm7mn?file=%2Findex.ts%3A22%2C11)
|
|
69
|
+
|
|
70
|
+
## Stream Types
|
|
71
|
+
|
|
72
|
+
TN supports two main types of streams:
|
|
73
|
+
|
|
74
|
+
- **Primitive Streams**: Direct data sources from providers
|
|
75
|
+
- **Composed Streams**: Aggregate data from multiple streams using weights
|
|
76
|
+
|
|
77
|
+
More information about TN components can be found in the [Js TN-SDK Documentation](https://github.com/trufnetwork/sdk-js/blob/main/docs/api-reference.md).
|
|
78
|
+
|
|
79
|
+
## Documentation
|
|
80
|
+
|
|
81
|
+
- [Getting Started](./docs/getting-started.md)
|
|
82
|
+
- [Core Concepts](./docs/core-concepts.md)
|
|
83
|
+
- [API Reference](./docs/api-reference.md)
|
|
84
|
+
|
|
85
|
+
## Staging Network
|
|
86
|
+
|
|
87
|
+
A staging network is available at https://staging.tsn.truflation.com for testing and experimentation.
|
|
88
|
+
|
|
89
|
+
## Support
|
|
90
|
+
|
|
91
|
+
For support, please [open an issue](https://github.com/trufnetwork/sdk-js/issues).
|
|
92
|
+
|
|
93
|
+
## License
|
|
94
|
+
|
|
95
|
+
Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE.md) for details.
|
|
@@ -0,0 +1,39 @@
|
|
|
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/browserClient.ts
|
|
21
|
+
var browserClient_exports = {};
|
|
22
|
+
__export(browserClient_exports, {
|
|
23
|
+
BrowserTNClient: () => BrowserTNClient,
|
|
24
|
+
default: () => browserClient_default
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(browserClient_exports);
|
|
27
|
+
var import_kwil_js = require("@kwilteam/kwil-js");
|
|
28
|
+
var import_client = require("./client.cjs");
|
|
29
|
+
var BrowserTNClient = class extends import_client.BaseTNClient {
|
|
30
|
+
constructor(options) {
|
|
31
|
+
super(options);
|
|
32
|
+
this.kwilClient = new import_kwil_js.WebKwil({
|
|
33
|
+
...options,
|
|
34
|
+
kwilProvider: options.endpoint
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var browserClient_default = BrowserTNClient;
|
|
39
|
+
//# sourceMappingURL=browserClient.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/client/browserClient.ts"],
|
|
4
|
+
"sourcesContent": ["import { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { WebKwil } from \"@kwilteam/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class BrowserTNClient extends BaseTNClient<EnvironmentType.BROWSER> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new WebKwil({\n ...options,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default BrowserTNClient;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAwB;AACxB,oBAA8C;AAEvC,IAAM,kBAAN,cAA8B,2BAAsC;AAAA,EACzE,YAAY,SAA0B;AACpC,UAAM,OAAO;AACb,SAAK,aAAa,IAAI,uBAAQ;AAAA,MAC5B,GAAG;AAAA,MACH,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAEA,IAAO,wBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
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/client.ts
|
|
21
|
+
var client_exports = {};
|
|
22
|
+
__export(client_exports, {
|
|
23
|
+
BaseTNClient: () => BaseTNClient
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(client_exports);
|
|
26
|
+
var import_kwil_js = require("@kwilteam/kwil-js");
|
|
27
|
+
var import_composedStream = require("../contracts-api/composedStream.cjs");
|
|
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");
|
|
32
|
+
var import_EthereumAddress = require("../util/EthereumAddress.cjs");
|
|
33
|
+
var import_listAllStreams = require("./listAllStreams.cjs");
|
|
34
|
+
var BaseTNClient = class {
|
|
35
|
+
kwilClient;
|
|
36
|
+
signerInfo;
|
|
37
|
+
constructor(options) {
|
|
38
|
+
this.signerInfo = options.signerInfo;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Waits for a transaction to be mined by TN.
|
|
42
|
+
* @param txHash - The transaction hash to wait for.
|
|
43
|
+
* @param timeout - The timeout in milliseconds.
|
|
44
|
+
* @returns A promise that resolves to the transaction info receipt.
|
|
45
|
+
*/
|
|
46
|
+
async waitForTx(txHash, timeout = 12e3) {
|
|
47
|
+
return new Promise(async (resolve, reject) => {
|
|
48
|
+
const interval = setInterval(async () => {
|
|
49
|
+
const receipt = await this.getKwilClient()["txInfoClient"](txHash).catch(() => ({ data: void 0, status: void 0 }));
|
|
50
|
+
switch (receipt.status) {
|
|
51
|
+
case 200:
|
|
52
|
+
if (receipt.data?.tx_result.log === "success") {
|
|
53
|
+
resolve(receipt.data);
|
|
54
|
+
} else {
|
|
55
|
+
reject(
|
|
56
|
+
new Error(
|
|
57
|
+
`Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
case void 0:
|
|
63
|
+
break;
|
|
64
|
+
default:
|
|
65
|
+
reject(
|
|
66
|
+
new Error(
|
|
67
|
+
`Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`
|
|
68
|
+
)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
}, 1e3);
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
clearInterval(interval);
|
|
74
|
+
reject(new Error("Transaction failed: Timeout"));
|
|
75
|
+
}, timeout);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns the Kwil signer used by the client.
|
|
80
|
+
* @returns An instance of KwilSigner.
|
|
81
|
+
*/
|
|
82
|
+
getKwilSigner() {
|
|
83
|
+
return new import_kwil_js.KwilSigner(
|
|
84
|
+
this.signerInfo.signer,
|
|
85
|
+
this.address().getAddress()
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns the Kwil client used by the client.
|
|
90
|
+
* @returns An instance of Kwil.
|
|
91
|
+
* @throws If the Kwil client is not initialized.
|
|
92
|
+
*/
|
|
93
|
+
getKwilClient() {
|
|
94
|
+
if (!this.kwilClient) {
|
|
95
|
+
throw new Error("Kwil client not initialized");
|
|
96
|
+
}
|
|
97
|
+
return this.kwilClient;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Deploys a new stream.
|
|
101
|
+
* @param streamId - The ID of the stream to deploy.
|
|
102
|
+
* @param streamType - The type of the stream.
|
|
103
|
+
* @param synchronous - Whether the deployment should be synchronous.
|
|
104
|
+
* @returns A promise that resolves to a generic response containing the transaction receipt.
|
|
105
|
+
*/
|
|
106
|
+
async deployStream(streamId, streamType, synchronous) {
|
|
107
|
+
return await (0, import_deployStream.deployStream)({
|
|
108
|
+
streamId,
|
|
109
|
+
streamType,
|
|
110
|
+
synchronous,
|
|
111
|
+
kwilClient: this.getKwilClient(),
|
|
112
|
+
kwilSigner: this.getKwilSigner()
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Destroys a stream.
|
|
117
|
+
* @param streamId - The ID of the stream to destroy.
|
|
118
|
+
* @param synchronous - Whether the destruction should be synchronous.
|
|
119
|
+
* @returns A promise that resolves to a generic response containing the transaction receipt.
|
|
120
|
+
*/
|
|
121
|
+
async destroyStream(streamId, synchronous) {
|
|
122
|
+
return await (0, import_destroyStream.destroyStream)({
|
|
123
|
+
streamId,
|
|
124
|
+
synchronous,
|
|
125
|
+
kwilClient: this.getKwilClient(),
|
|
126
|
+
kwilSigner: this.getKwilSigner()
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Loads an already deployed stream, permitting its API usage.
|
|
131
|
+
* @param stream - The locator of the stream to load.
|
|
132
|
+
* @returns An instance of IStream.
|
|
133
|
+
*/
|
|
134
|
+
loadStream(stream) {
|
|
135
|
+
return new import_stream.Stream(
|
|
136
|
+
this.getKwilClient(),
|
|
137
|
+
this.getKwilSigner(),
|
|
138
|
+
stream
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Loads a primitive stream.
|
|
143
|
+
* @param stream - The locator of the primitive stream to load.
|
|
144
|
+
* @returns An instance of IPrimitiveStream.
|
|
145
|
+
*/
|
|
146
|
+
loadPrimitiveStream(stream) {
|
|
147
|
+
return import_primitiveStream.PrimitiveStream.fromStream(this.loadStream(stream));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Loads a composed stream.
|
|
151
|
+
* @param stream - The locator of the composed stream to load.
|
|
152
|
+
* @returns An instance of IComposedStream.
|
|
153
|
+
*/
|
|
154
|
+
loadComposedStream(stream) {
|
|
155
|
+
return new import_composedStream.ComposedStream(
|
|
156
|
+
this.getKwilClient(),
|
|
157
|
+
this.getKwilSigner(),
|
|
158
|
+
stream
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Creates a new stream locator.
|
|
163
|
+
* @param streamId - The ID of the stream.
|
|
164
|
+
* @returns A StreamLocator object.
|
|
165
|
+
*/
|
|
166
|
+
ownStreamLocator(streamId) {
|
|
167
|
+
return {
|
|
168
|
+
streamId,
|
|
169
|
+
dataProvider: this.address()
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Returns the address of the signer used by the client.
|
|
174
|
+
* @returns An instance of EthereumAddress.
|
|
175
|
+
*/
|
|
176
|
+
address() {
|
|
177
|
+
return new import_EthereumAddress.EthereumAddress(this.signerInfo.address);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Returns all streams from the TN network.
|
|
181
|
+
* @param owner - The owner of the streams. If not provided, all streams will be returned.
|
|
182
|
+
* @returns A promise that resolves to a list of stream locators.
|
|
183
|
+
*/
|
|
184
|
+
async getAllStreams(owner) {
|
|
185
|
+
return (0, import_listAllStreams.listAllStreams)(this.getKwilClient(), owner);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.
|
|
189
|
+
* @param provider - The provider URL.
|
|
190
|
+
* @returns A promise that resolves to the chain ID.
|
|
191
|
+
*/
|
|
192
|
+
static async getDefaultChainId(provider) {
|
|
193
|
+
const kwilClient = new import_kwil_js.Client({
|
|
194
|
+
kwilProvider: provider
|
|
195
|
+
});
|
|
196
|
+
const chainInfo = await kwilClient["chainInfoClient"]();
|
|
197
|
+
return chainInfo.data?.chain_id;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=client.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 * @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 });\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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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// src/client/client.test.ts
|
|
4
|
+
var import_vitest = require("vitest");
|
|
5
|
+
var import_ethers = require("ethers");
|
|
6
|
+
var import_nodeClient = require("./nodeClient.cjs");
|
|
7
|
+
import_vitest.describe.sequential("Client", { timeout: 3e4 }, () => {
|
|
8
|
+
import_vitest.it.skipIf(process.env.CI);
|
|
9
|
+
const wallet = new import_ethers.ethers.Wallet(
|
|
10
|
+
"0x0000000000000000000000000000000000000000000000000000000000000001"
|
|
11
|
+
);
|
|
12
|
+
(0, import_vitest.it)("should create a client", async () => {
|
|
13
|
+
const chainId = await import_nodeClient.NodeTNClient.getDefaultChainId(
|
|
14
|
+
"http://localhost:8484"
|
|
15
|
+
);
|
|
16
|
+
if (!chainId) {
|
|
17
|
+
throw new Error("Chain id not found");
|
|
18
|
+
}
|
|
19
|
+
const client = new import_nodeClient.NodeTNClient({
|
|
20
|
+
endpoint: "http://localhost:8484",
|
|
21
|
+
signerInfo: {
|
|
22
|
+
address: wallet.address,
|
|
23
|
+
signer: wallet
|
|
24
|
+
},
|
|
25
|
+
chainId
|
|
26
|
+
});
|
|
27
|
+
const kwilClient = client.getKwilClient();
|
|
28
|
+
const chainInfo = await kwilClient.chainInfo();
|
|
29
|
+
(0, import_vitest.expect)(chainInfo.data?.chain_id).toBeDefined();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=client.test.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/client/client.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { describe, expect, it } from \"vitest\";\nimport { ethers } from \"ethers\";\nimport { NodeTNClient } from \"./nodeClient\";\n\ndescribe.sequential(\"Client\", { timeout: 30000 }, () => {\n // Skip in CI, because it needs a local node\n it.skipIf(process.env.CI);\n\n const wallet = new ethers.Wallet(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n );\n it(\"should create a client\", async () => {\n const chainId = await NodeTNClient.getDefaultChainId(\n \"http://localhost:8484\",\n );\n if (!chainId) {\n throw new Error(\"Chain id not found\");\n }\n const client = new NodeTNClient({\n endpoint: \"http://localhost:8484\",\n signerInfo: {\n address: wallet.address,\n signer: wallet,\n },\n chainId,\n });\n const kwilClient = client.getKwilClient();\n const chainInfo = await kwilClient.chainInfo();\n expect(chainInfo.data?.chain_id).toBeDefined();\n });\n});\n"],
|
|
5
|
+
"mappings": ";;;AAAA,oBAAqC;AACrC,oBAAuB;AACvB,wBAA6B;AAE7B,uBAAS,WAAW,UAAU,EAAE,SAAS,IAAM,GAAG,MAAM;AAEtD,mBAAG,OAAO,QAAQ,IAAI,EAAE;AAExB,QAAM,SAAS,IAAI,qBAAO;AAAA,IACxB;AAAA,EACF;AACA,wBAAG,0BAA0B,YAAY;AACvC,UAAM,UAAU,MAAM,+BAAa;AAAA,MACjC;AAAA,IACF;AACA,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACtC;AACA,UAAM,SAAS,IAAI,+BAAa;AAAA,MAC9B,UAAU;AAAA,MACV,YAAY;AAAA,QACV,SAAS,OAAO;AAAA,QAChB,QAAQ;AAAA,MACV;AAAA,MACA;AAAA,IACF,CAAC;AACD,UAAM,aAAa,OAAO,cAAc;AACxC,UAAM,YAAY,MAAM,WAAW,UAAU;AAC7C,8BAAO,UAAU,MAAM,QAAQ,EAAE,YAAY;AAAA,EAC/C,CAAC;AACH,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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/listAllStreams.ts
|
|
21
|
+
var listAllStreams_exports = {};
|
|
22
|
+
__export(listAllStreams_exports, {
|
|
23
|
+
isStream: () => isStream,
|
|
24
|
+
listAllStreams: () => listAllStreams
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(listAllStreams_exports);
|
|
27
|
+
var import_EthereumAddress = require("../util/EthereumAddress.cjs");
|
|
28
|
+
var import_StreamId = require("../util/StreamId.cjs");
|
|
29
|
+
async function listAllStreams(kwilClient, owner) {
|
|
30
|
+
const databases = await kwilClient.listDatabases(owner?.getAddress());
|
|
31
|
+
const schemas = await Promise.all(
|
|
32
|
+
databases.data?.map(async (database) => {
|
|
33
|
+
const schema = await kwilClient.getSchema(database.dbid);
|
|
34
|
+
if (schema.status === 200 && schema.data && isStream(schema.data)) {
|
|
35
|
+
return schema.data;
|
|
36
|
+
}
|
|
37
|
+
return void 0;
|
|
38
|
+
}) ?? []
|
|
39
|
+
);
|
|
40
|
+
return schemas.filter((schema) => schema !== void 0).map((schema) => ({
|
|
41
|
+
streamId: import_StreamId.StreamId.fromString(schema.name).throw(),
|
|
42
|
+
dataProvider: import_EthereumAddress.EthereumAddress.fromBytes(schema.owner).throw()
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
var isStream = (schema) => {
|
|
46
|
+
const requiredProcedures = ["get_index", "get_record", "get_metadata"];
|
|
47
|
+
return requiredProcedures.every(
|
|
48
|
+
(procedure) => schema.procedures.some((p) => p.name === procedure)
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=listAllStreams.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/client/listAllStreams.ts"],
|
|
4
|
+
"sourcesContent": ["import { Kwil } from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { Database } from \"@kwilteam/kwil-js/dist/core/database\";\n\n/**\n * List all streams from the TN network.\n * @param kwilClient - The Kwil client.\n * @param owner - The owner of the streams. If not provided, all streams will be returned.\n * @returns A list of stream locators.\n */\nexport async function listAllStreams(\n kwilClient: Kwil<EnvironmentType>,\n owner?: EthereumAddress,\n): Promise<StreamLocator[]> {\n const databases = await kwilClient.listDatabases(owner?.getAddress());\n const schemas = await Promise.all(\n databases.data?.map(async (database) => {\n const schema = await kwilClient.getSchema(database.dbid);\n if (schema.status === 200 && schema.data && isStream(schema.data)) {\n return schema.data;\n }\n return undefined;\n }) ?? [],\n );\n return schemas\n .filter((schema) => schema !== undefined)\n .map((schema) => ({\n streamId: StreamId.fromString(schema.name).throw(),\n dataProvider: EthereumAddress.fromBytes(schema.owner).throw(),\n }));\n}\n\nexport const isStream = (schema: Database) => {\n const requiredProcedures = [\"get_index\", \"get_record\", \"get_metadata\"];\n return requiredProcedures.every((procedure) =>\n schema.procedures.some((p) => p.name === procedure),\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,6BAAgC;AAChC,sBAAyB;AASzB,eAAsB,eACpB,YACA,OAC0B;AAC1B,QAAM,YAAY,MAAM,WAAW,cAAc,OAAO,WAAW,CAAC;AACpE,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,UAAU,MAAM,IAAI,OAAO,aAAa;AACtC,YAAM,SAAS,MAAM,WAAW,UAAU,SAAS,IAAI;AACvD,UAAI,OAAO,WAAW,OAAO,OAAO,QAAQ,SAAS,OAAO,IAAI,GAAG;AACjE,eAAO,OAAO;AAAA,MAChB;AACA,aAAO;AAAA,IACT,CAAC,KAAK,CAAC;AAAA,EACT;AACA,SAAO,QACJ,OAAO,CAAC,WAAW,WAAW,MAAS,EACvC,IAAI,CAAC,YAAY;AAAA,IAChB,UAAU,yBAAS,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,IACjD,cAAc,uCAAgB,UAAU,OAAO,KAAK,EAAE,MAAM;AAAA,EAC9D,EAAE;AACN;AAEO,IAAM,WAAW,CAAC,WAAqB;AAC5C,QAAM,qBAAqB,CAAC,aAAa,cAAc,cAAc;AACrE,SAAO,mBAAmB;AAAA,IAAM,CAAC,cAC/B,OAAO,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,SAAS;AAAA,EACpD;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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/nodeClient.ts
|
|
21
|
+
var nodeClient_exports = {};
|
|
22
|
+
__export(nodeClient_exports, {
|
|
23
|
+
NodeTNClient: () => NodeTNClient,
|
|
24
|
+
default: () => nodeClient_default
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(nodeClient_exports);
|
|
27
|
+
var import_kwil_js = require("@kwilteam/kwil-js");
|
|
28
|
+
var import_client = require("./client.cjs");
|
|
29
|
+
var NodeTNClient = class extends import_client.BaseTNClient {
|
|
30
|
+
constructor(options) {
|
|
31
|
+
super(options);
|
|
32
|
+
this.kwilClient = new import_kwil_js.NodeKwil({
|
|
33
|
+
...options,
|
|
34
|
+
kwilProvider: options.endpoint
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var nodeClient_default = NodeTNClient;
|
|
39
|
+
//# sourceMappingURL=nodeClient.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/client/nodeClient.ts"],
|
|
4
|
+
"sourcesContent": ["import { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { NodeKwil } from \"@kwilteam/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class NodeTNClient extends BaseTNClient<EnvironmentType.NODE> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new NodeKwil({\n ...options,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default NodeTNClient;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAyB;AACzB,oBAA8C;AAEvC,IAAM,eAAN,cAA2B,2BAAmC;AAAA,EACnE,YAAY,SAA0B;AACpC,UAAM,OAAO;AACb,SAAK,aAAa,IAAI,wBAAS;AAAA,MAC7B,GAAG;AAAA,MACH,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAEA,IAAO,qBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|