@trufnetwork/sdk-js 0.2.2 → 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 (113) hide show
  1. package/README.md +91 -13
  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} +140 -159
  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} +137 -156
  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/action.d.ts +136 -0
  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/dist/types/util/visibility.d.ts.map +1 -1
  74. package/package.json +10 -6
  75. package/dist/cjs/client/listAllStreams.cjs +0 -51
  76. package/dist/cjs/client/listAllStreams.cjs.map +0 -7
  77. package/dist/cjs/contracts/composed_stream_template.json +0 -1638
  78. package/dist/cjs/contracts/composed_stream_template_unix.json +0 -2122
  79. package/dist/cjs/contracts/contractsContent.cjs +0 -65
  80. package/dist/cjs/contracts/contractsContent.cjs.map +0 -7
  81. package/dist/cjs/contracts/primitive_stream_template.json +0 -952
  82. package/dist/cjs/contracts/primitive_stream_template_unix.json +0 -1173
  83. package/dist/cjs/contracts-api/composedStream.cjs +0 -137
  84. package/dist/cjs/contracts-api/composedStream.cjs.map +0 -7
  85. package/dist/cjs/contracts-api/destroyStream.cjs.map +0 -7
  86. package/dist/cjs/contracts-api/primitiveStream.cjs +0 -86
  87. package/dist/cjs/contracts-api/primitiveStream.cjs.map +0 -7
  88. package/dist/cjs/contracts-api/stream.cjs.map +0 -7
  89. package/dist/esm/client/listAllStreams.mjs +0 -30
  90. package/dist/esm/client/listAllStreams.mjs.map +0 -7
  91. package/dist/esm/contracts/composed_stream_template.json +0 -1638
  92. package/dist/esm/contracts/composed_stream_template_unix.json +0 -2122
  93. package/dist/esm/contracts/contractsContent.mjs +0 -33
  94. package/dist/esm/contracts/contractsContent.mjs.map +0 -7
  95. package/dist/esm/contracts/primitive_stream_template.json +0 -952
  96. package/dist/esm/contracts/primitive_stream_template_unix.json +0 -1173
  97. package/dist/esm/contracts-api/composedStream.mjs +0 -116
  98. package/dist/esm/contracts-api/composedStream.mjs.map +0 -7
  99. package/dist/esm/contracts-api/destroyStream.mjs +0 -24
  100. package/dist/esm/contracts-api/destroyStream.mjs.map +0 -7
  101. package/dist/esm/contracts-api/primitiveStream.mjs +0 -65
  102. package/dist/esm/contracts-api/primitiveStream.mjs.map +0 -7
  103. package/dist/esm/contracts-api/stream.mjs.map +0 -7
  104. package/dist/types/client/listAllStreams.d.ts +0 -14
  105. package/dist/types/client/listAllStreams.d.ts.map +0 -1
  106. package/dist/types/contracts/contractsContent.d.ts +0 -6
  107. package/dist/types/contracts/contractsContent.d.ts.map +0 -1
  108. package/dist/types/contracts-api/composedStream.d.ts.map +0 -1
  109. package/dist/types/contracts-api/destroyStream.d.ts.map +0 -1
  110. package/dist/types/contracts-api/primitiveStream.d.ts +0 -39
  111. package/dist/types/contracts-api/primitiveStream.d.ts.map +0 -1
  112. package/dist/types/contracts-api/stream.d.ts +0 -142
  113. package/dist/types/contracts-api/stream.d.ts.map +0 -1
@@ -0,0 +1,183 @@
1
+ "use strict";
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 __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/contracts-api/composedAction.ts
31
+ var composedAction_exports = {};
32
+ __export(composedAction_exports, {
33
+ ComposedAction: () => ComposedAction,
34
+ ErrorStreamNotComposed: () => ErrorStreamNotComposed
35
+ });
36
+ module.exports = __toCommonJS(composedAction_exports);
37
+ var import_kwil_js = require("@kwilteam/kwil-js");
38
+ var import_EthereumAddress = require("../util/EthereumAddress.cjs");
39
+ var import_StreamId = require("../util/StreamId.cjs");
40
+ var import_action = require("./action.cjs");
41
+ var import_pg = __toESM(require("pg"), 1);
42
+ var DataType = import_kwil_js.Utils.DataType;
43
+ var { Pool } = import_pg.default;
44
+ var ErrorStreamNotComposed = "stream is not a composed stream";
45
+ var ComposedAction = class _ComposedAction extends import_action.Action {
46
+ neonConnectionString;
47
+ constructor(kwilClient, kwilSigner, neonConnectionString) {
48
+ super(kwilClient, kwilSigner);
49
+ this.neonConnectionString = neonConnectionString;
50
+ }
51
+ /**
52
+ * Returns the taxonomy of the stream
53
+ * @param params Parameters for describing taxonomies
54
+ * @returns A promise that resolves to the taxonomy
55
+ */
56
+ async describeTaxonomies(params) {
57
+ const result = await this.call(
58
+ "describe_taxonomies",
59
+ {
60
+ $data_provider: params.stream.dataProvider.getAddress(),
61
+ $stream_id: params.stream.streamId.getId(),
62
+ $latest_group_sequence: params.latestGroupSequence
63
+ }
64
+ );
65
+ return result.mapRight((records) => {
66
+ const taxonomyItems = records.reduce(
67
+ (acc, record) => {
68
+ const currentArray = acc.get(record.start_date.toString()) || [];
69
+ currentArray.push({
70
+ childStream: {
71
+ streamId: import_StreamId.StreamId.fromString(record.child_stream_id).throw(),
72
+ dataProvider: import_EthereumAddress.EthereumAddress.fromString(
73
+ record.child_data_provider
74
+ ).throw()
75
+ },
76
+ weight: record.weight
77
+ });
78
+ acc.set(record.start_date.toString(), currentArray);
79
+ return acc;
80
+ },
81
+ /* @__PURE__ */ new Map()
82
+ );
83
+ return Array.from(taxonomyItems.entries()).map(
84
+ ([startDate, taxonomyItems2]) => ({
85
+ stream: {
86
+ streamId: import_StreamId.StreamId.fromString(records[0].stream_id).throw(),
87
+ dataProvider: import_EthereumAddress.EthereumAddress.fromString(
88
+ records[0].data_provider
89
+ ).throw()
90
+ },
91
+ taxonomyItems: taxonomyItems2,
92
+ startDate: Number(startDate)
93
+ })
94
+ );
95
+ }).throw();
96
+ }
97
+ /**
98
+ * Sets the taxonomy of the stream
99
+ * @param taxonomy The taxonomy to set
100
+ * @returns A promise that resolves to the transaction receipt
101
+ */
102
+ async setTaxonomy(taxonomy) {
103
+ const childDataProviders = [];
104
+ const childStreamIds = [];
105
+ const weights = [];
106
+ for (const item of taxonomy.taxonomyItems) {
107
+ childDataProviders.push(item.childStream.dataProvider.getAddress());
108
+ childStreamIds.push(item.childStream.streamId.getId());
109
+ weights.push(item.weight.toString());
110
+ }
111
+ const txHash = await this.executeWithActionBody({
112
+ namespace: "main",
113
+ name: "insert_taxonomy",
114
+ inputs: [
115
+ {
116
+ $data_provider: taxonomy.stream.dataProvider.getAddress(),
117
+ $stream_id: taxonomy.stream.streamId.getId(),
118
+ $child_data_providers: childDataProviders,
119
+ $child_stream_ids: childStreamIds,
120
+ $weights: weights,
121
+ $start_date: taxonomy.startDate
122
+ }
123
+ ],
124
+ types: {
125
+ $data_provider: DataType.Text,
126
+ $stream_id: DataType.Text,
127
+ $child_data_providers: DataType.TextArray,
128
+ $child_stream_ids: DataType.TextArray,
129
+ $weights: DataType.NumericArray(36, 18),
130
+ $start_date: DataType.Int
131
+ }
132
+ });
133
+ if (this.neonConnectionString) {
134
+ const pool = new Pool({ connectionString: this.neonConnectionString });
135
+ const parentProvider = taxonomy.stream.dataProvider.getAddress().toLowerCase();
136
+ const parentStreamId = taxonomy.stream.streamId.getId();
137
+ const startDateText = String(taxonomy.startDate);
138
+ for (const item of taxonomy.taxonomyItems) {
139
+ const childProvider = item.childStream.dataProvider.getAddress().toLowerCase();
140
+ const childStreamId = item.childStream.streamId.getId();
141
+ const weight = item.weight;
142
+ await pool.query(
143
+ `INSERT INTO taxonomies
144
+ (parent_data_provider, parent_stream_id,
145
+ child_data_provider, child_stream_id,
146
+ weight, start_date)
147
+ VALUES ($1, $2, $3, $4, $5, $6)
148
+ ON CONFLICT ON CONSTRAINT unique_parent_child DO NOTHING`,
149
+ [
150
+ parentProvider,
151
+ parentStreamId,
152
+ childProvider,
153
+ childStreamId,
154
+ weight,
155
+ startDateText
156
+ ]
157
+ );
158
+ }
159
+ await pool.end();
160
+ console.log("Successfully inserted taxonomy into Explorer DB", {
161
+ parentStreamId,
162
+ childStreamId: childStreamIds,
163
+ weight: weights,
164
+ startDate: startDateText
165
+ });
166
+ }
167
+ return txHash;
168
+ }
169
+ /**
170
+ * Creates a ComposedStream from a base Stream
171
+ * @param stream The base stream to convert
172
+ * @param neonConnectionString The Neon connection string
173
+ * @returns A ComposedStream instance
174
+ */
175
+ static fromStream(stream, neonConnectionString) {
176
+ return new _ComposedAction(
177
+ stream["kwilClient"],
178
+ stream["kwilSigner"],
179
+ neonConnectionString
180
+ );
181
+ }
182
+ };
183
+ //# sourceMappingURL=composedAction.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/contracts-api/composedAction.ts"],
4
+ "sourcesContent": ["import {KwilSigner, NodeKwil, Utils, WebKwil} from \"@kwilteam/kwil-js\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { Action } from \"./action\";\nimport DataType = Utils.DataType;\nimport pg from \"pg\";\nconst { Pool } = pg;\n\nexport const ErrorStreamNotComposed = \"stream is not a composed stream\";\n\nexport interface TaxonomySet {\n stream: StreamLocator;\n taxonomyItems: TaxonomyItem[];\n startDate: number;\n}\n\nexport interface TaxonomyItem {\n childStream: StreamLocator;\n weight: string;\n}\n\nexport interface DescribeTaxonomiesParams {\n stream: StreamLocator;\n /**\n * if true, will return the latest version of the taxonomy only\n */\n latestGroupSequence: boolean;\n}\n\nexport class ComposedAction extends Action {\n protected neonConnectionString: string | undefined;\n\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n neonConnectionString?: string,\n ) {\n super(kwilClient, kwilSigner);\n this.neonConnectionString = neonConnectionString;\n }\n\n /**\n * Returns the taxonomy of the stream\n * @param params Parameters for describing taxonomies\n * @returns A promise that resolves to the taxonomy\n */\n public async describeTaxonomies(\n params: DescribeTaxonomiesParams,\n ): Promise<TaxonomySet[]> {\n type TaxonomyResult = {\n data_provider: string;\n stream_id: string;\n child_data_provider: string;\n child_stream_id: string;\n weight: string;\n created_at: number;\n group_sequence: number;\n start_date: number;\n }[];\n\n const result = await this.call<TaxonomyResult>(\n \"describe_taxonomies\",\n {\n $data_provider: params.stream.dataProvider.getAddress(),\n $stream_id: params.stream.streamId.getId(),\n $latest_group_sequence: params.latestGroupSequence,\n },\n );\n\n\n\n return result\n .mapRight((records) => {\n const taxonomyItems: Map<DateString, TaxonomyItem[]> = records.reduce(\n (acc, record) => {\n const currentArray = acc.get(record.start_date.toString()) || [];\n currentArray.push({\n childStream: {\n streamId: StreamId.fromString(record.child_stream_id).throw(),\n dataProvider: EthereumAddress.fromString(\n record.child_data_provider,\n ).throw(),\n },\n weight: record.weight,\n });\n acc.set(record.start_date.toString(), currentArray);\n return acc;\n },\n new Map<DateString, TaxonomyItem[]>(),\n );\n\n return Array.from(taxonomyItems.entries()).map(\n ([startDate, taxonomyItems]) => ({\n stream: {\n streamId: StreamId.fromString(records[0].stream_id).throw(),\n dataProvider: EthereumAddress.fromString(\n records[0].data_provider,\n ).throw(),\n },\n taxonomyItems,\n startDate: Number(startDate)\n }),\n );\n })\n .throw();\n }\n\n /**\n * Sets the taxonomy of the stream\n * @param taxonomy The taxonomy to set\n * @returns A promise that resolves to the transaction receipt\n */\n public async setTaxonomy(\n taxonomy: TaxonomySet,\n ): Promise<GenericResponse<TxReceipt>> {\n const childDataProviders: string[] = [];\n const childStreamIds: string[] = [];\n const weights: string[] = [];\n\n for (const item of taxonomy.taxonomyItems) {\n childDataProviders.push(item.childStream.dataProvider\n .getAddress());\n childStreamIds.push(item.childStream.streamId.getId());\n weights.push(item.weight.toString());\n }\n\n const txHash = await this.executeWithActionBody({\n namespace: \"main\",\n name: \"insert_taxonomy\",\n inputs: [\n {\n $data_provider: taxonomy.stream.dataProvider.getAddress(),\n $stream_id: taxonomy.stream.streamId.getId(),\n $child_data_providers: childDataProviders,\n $child_stream_ids: childStreamIds,\n $weights: weights,\n $start_date: taxonomy.startDate\n },\n ],\n types: {\n $data_provider: DataType.Text,\n $stream_id: DataType.Text,\n $child_data_providers: DataType.TextArray,\n $child_stream_ids: DataType.TextArray,\n $weights: DataType.NumericArray(36,18),\n $start_date: DataType.Int\n }});\n\n // Optional: insert into Postgres via neon connection if a connection string is provided\n if (this.neonConnectionString) {\n const pool = new Pool({ connectionString: this.neonConnectionString });\n\n // parent info comes from this.locator\n const parentProvider = taxonomy.stream.dataProvider.getAddress().toLowerCase();\n const parentStreamId = taxonomy.stream.streamId.getId();\n const startDateText = String(taxonomy.startDate);\n\n for (const item of taxonomy.taxonomyItems) {\n const childProvider = item.childStream.dataProvider.getAddress().toLowerCase();\n const childStreamId = item.childStream.streamId.getId();\n const weight = item.weight;\n\n await pool.query(\n `INSERT INTO taxonomies\n (parent_data_provider, parent_stream_id,\n child_data_provider, child_stream_id,\n weight, start_date)\n VALUES ($1, $2, $3, $4, $5, $6)\n ON CONFLICT ON CONSTRAINT unique_parent_child DO NOTHING`,\n [\n parentProvider,\n parentStreamId,\n childProvider,\n childStreamId,\n weight,\n startDateText,\n ],\n );\n }\n\n await pool.end();\n console.log(\"Successfully inserted taxonomy into Explorer DB\", {\n parentStreamId,\n childStreamId: childStreamIds,\n weight: weights,\n startDate: startDateText,\n });\n }\n\n\n return txHash;\n }\n\n /**\n * Creates a ComposedStream from a base Stream\n * @param stream The base stream to convert\n * @param neonConnectionString The Neon connection string\n * @returns A ComposedStream instance\n */\n public static fromStream(stream: Action, neonConnectionString?: string): ComposedAction {\n return new ComposedAction(\n stream[\"kwilClient\"],\n stream[\"kwilSigner\"],\n neonConnectionString,\n );\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["pg", "taxonomyItems"]
7
+ }
@@ -17,29 +17,29 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/contracts-api/destroyStream.ts
21
- var destroyStream_exports = {};
22
- __export(destroyStream_exports, {
23
- destroyStream: () => destroyStream
20
+ // src/contracts-api/deleteStream.ts
21
+ var deleteStream_exports = {};
22
+ __export(deleteStream_exports, {
23
+ deleteStream: () => deleteStream
24
24
  });
25
- module.exports = __toCommonJS(destroyStream_exports);
26
- var import_dbid = require("@kwilteam/kwil-js/dist/utils/dbid.js");
27
- async function destroyStream(input) {
28
- const dbid = (0, import_dbid.generateDBID)(
29
- input.kwilSigner.identifier,
30
- input.streamId.getId()
31
- );
25
+ module.exports = __toCommonJS(deleteStream_exports);
26
+ async function deleteStream(input) {
32
27
  try {
33
- const txReceipt = await input.kwilClient.drop(
28
+ return await input.kwilClient.execute(
34
29
  {
35
- dbid
30
+ description: `TN SDK - Deleting stream: ${input.stream.streamId.getId()} from data provider: ${input.stream.dataProvider.getAddress()}`,
31
+ inputs: [{
32
+ $data_provider: input.stream.dataProvider.getAddress(),
33
+ $stream_id: input.stream.streamId.getId()
34
+ }],
35
+ name: "delete_stream",
36
+ namespace: "main"
36
37
  },
37
38
  input.kwilSigner,
38
39
  input.synchronous
39
40
  );
40
- return txReceipt;
41
41
  } catch (error) {
42
- throw new Error(`Failed to destroy stream: ${error}`);
42
+ throw new Error(`Failed to delete stream: ${error}`);
43
43
  }
44
44
  }
45
- //# sourceMappingURL=destroyStream.cjs.map
45
+ //# sourceMappingURL=deleteStream.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/contracts-api/deleteStream.ts"],
4
+ "sourcesContent": ["import {StreamId} from \"../util/StreamId\";\nimport {Kwil} from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport {KwilSigner} from \"@kwilteam/kwil-js\";\nimport {TxReceipt} from \"@kwilteam/kwil-js/dist/core/tx\";\nimport {GenericResponse} from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport {StreamLocator} from \"../types/stream\";\n\n/**\n * Input parameters for destroying a stream.\n */\nexport interface DestroyStreamInput {\n stream: StreamLocator;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n}\n\n/**\n * Output after deleting a stream.\n */\nexport interface DeleteStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Delete a stream from TN.\n * @param input - The input parameters for destroying the stream.\n * @returns The transaction receipt of the destruction.\n */\nexport async function deleteStream(\n input: DestroyStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n return await input.kwilClient.execute({\n description: `TN SDK - Deleting stream: ${input.stream.streamId.getId()} from data provider: ${input.stream.dataProvider.getAddress()}`,\n inputs: [{\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId()\n }],\n name: \"delete_stream\",\n namespace: \"main\"\n },\n input.kwilSigner,\n input.synchronous,\n )} catch (error) {\n throw new Error(`Failed to delete stream: ${error}`);\n }\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BA,eAAsB,aACpB,OACqC;AACrC,MAAI;AACF,WAAO,MAAM,MAAM,WAAW;AAAA,MAAQ;AAAA,QAChC,aAAa,6BAA6B,MAAM,OAAO,SAAS,MAAM,CAAC,wBAAwB,MAAM,OAAO,aAAa,WAAW,CAAC;AAAA,QACrI,QAAQ,CAAC;AAAA,UACL,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,UACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QAC5C,CAAC;AAAA,QACD,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACN;AAAA,EAAC,SAAS,OAAO;AACrB,UAAM,IAAI,MAAM,4BAA4B,KAAK,EAAE;AAAA,EACrD;AACF;",
6
+ "names": []
7
+ }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
 
20
30
  // src/contracts-api/deployStream.ts
@@ -23,33 +33,40 @@ __export(deployStream_exports, {
23
33
  deployStream: () => deployStream
24
34
  });
25
35
  module.exports = __toCommonJS(deployStream_exports);
26
- var import_contractValues = require("./contractValues.cjs");
27
- var import_contractsContent = require("../contracts/contractsContent.cjs");
36
+ var import_pg = __toESM(require("pg"), 1);
37
+ var { Pool } = import_pg.default;
28
38
  async function deployStream(input) {
29
39
  try {
30
- const schema = await getContract(input.streamType, input.contractVersion);
31
- schema.name = input.streamId.getId();
32
- const txHash = await input.kwilClient.deploy(
40
+ const txHash = await input.kwilClient.execute(
33
41
  {
34
- schema,
42
+ namespace: "main",
43
+ inputs: [{
44
+ $stream_id: input.streamId.getId(),
45
+ $stream_type: input.streamType
46
+ }],
47
+ name: "create_stream",
35
48
  description: `TN SDK - Deploying ${input.streamType} stream: ${input.streamId.getId()}`
36
49
  },
37
50
  input.kwilSigner,
38
51
  input.synchronous
39
52
  );
53
+ if (input.neonConnectionString) {
54
+ console.log("Neon connection detected, attempting to insert into DB...");
55
+ const signer = input.kwilSigner.signer;
56
+ const dataProvider = signer.address.toLowerCase();
57
+ const pool = new Pool({ connectionString: input.neonConnectionString });
58
+ await pool.query(
59
+ `INSERT INTO streams (data_provider, stream_id, type, stream_name, display_name, categories, owner_wallet, geography, tags)
60
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
61
+ ON CONFLICT (data_provider, stream_id) DO NOTHING`,
62
+ [dataProvider, input.streamId.getId(), input.streamType, input.streamId.getName(), input.streamId.getName(), "{External}", dataProvider, "Global", "{External}"]
63
+ );
64
+ await pool.end();
65
+ console.log("successfully inserted into Explorer DB", input.streamId.getName());
66
+ }
40
67
  return txHash;
41
68
  } catch (error) {
42
69
  throw new Error(`Failed to deploy stream: ${error}`);
43
70
  }
44
71
  }
45
- async function getContract(streamType, contractVersion) {
46
- switch (streamType) {
47
- case import_contractValues.StreamType.Composed:
48
- return contractVersion === 2 ? import_contractsContent.composedStreamTemplateUnix : import_contractsContent.composedStreamTemplate;
49
- case import_contractValues.StreamType.Primitive:
50
- return contractVersion === 2 ? import_contractsContent.primitiveStreamTemplateUnix : import_contractsContent.primitiveStreamTemplate;
51
- default:
52
- throw new Error(`Unknown stream type: ${streamType}`);
53
- }
54
- }
55
72
  //# sourceMappingURL=deployStream.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/deployStream.ts"],
4
- "sourcesContent": ["import { StreamType } from \"./contractValues\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { Kwil } from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport { CompiledKuneiform } from \"@kwilteam/kwil-js/dist/core/payload\";\nimport {\n composedStreamTemplate,\n primitiveStreamTemplate,\n composedStreamTemplateUnix,\n primitiveStreamTemplateUnix\n} from \"../contracts/contractsContent\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { KwilSigner } from \"@kwilteam/kwil-js\";\nimport { StreamId } from \"../util/StreamId\";\n\nexport interface DeployStreamInput {\n streamId: StreamId;\n streamType: StreamType;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n contractVersion?: number;\n}\n\nexport interface DeployStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Deploys a stream to TN.\n * @param input - The input parameters for deploying the stream.\n * @returns The transaction hash of the deployment.\n */\nexport async function deployStream(\n input: DeployStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n const schema = await getContract(input.streamType, input.contractVersion);\n\n schema.name = input.streamId.getId();\n\n const txHash = await input.kwilClient.deploy(\n {\n schema,\n description: `TN SDK - Deploying ${input.streamType} stream: ${input.streamId.getId()}`,\n },\n input.kwilSigner,\n input.synchronous,\n );\n\n return txHash;\n } catch (error) {\n throw new Error(`Failed to deploy stream: ${error}`);\n }\n}\n\n/**\n * Returns the contract content based on the stream type.\n * @param streamType - The type of the stream.\n * @param contractVersion\n * @returns The contract content as a Uint8Array.\n */\nasync function getContract(streamType: StreamType, contractVersion?: number): Promise<CompiledKuneiform> {\n switch (streamType) {\n case StreamType.Composed:\n return contractVersion === 2 ? composedStreamTemplateUnix : composedStreamTemplate;\n case StreamType.Primitive:\n return contractVersion === 2 ? primitiveStreamTemplateUnix : primitiveStreamTemplate;\n default:\n throw new Error(`Unknown stream type: ${streamType}`);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA2B;AAI3B,8BAKO;AAuBP,eAAsB,aACpB,OACqC;AACrC,MAAI;AACF,UAAM,SAAS,MAAM,YAAY,MAAM,YAAY,MAAM,eAAe;AAExE,WAAO,OAAO,MAAM,SAAS,MAAM;AAEnC,UAAM,SAAS,MAAM,MAAM,WAAW;AAAA,MACpC;AAAA,QACE;AAAA,QACA,aAAa,sBAAsB,MAAM,UAAU,YAAY,MAAM,SAAS,MAAM,CAAC;AAAA,MACvF;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,4BAA4B,KAAK,EAAE;AAAA,EACrD;AACF;AAQA,eAAe,YAAY,YAAwB,iBAAsD;AACvG,UAAQ,YAAY;AAAA,IAClB,KAAK,iCAAW;AACd,aAAO,oBAAoB,IAAI,qDAA6B;AAAA,IAC9D,KAAK,iCAAW;AACd,aAAO,oBAAoB,IAAI,sDAA8B;AAAA,IAC/D;AACE,YAAM,IAAI,MAAM,wBAAwB,UAAU,EAAE;AAAA,EACxD;AACF;",
6
- "names": []
4
+ "sourcesContent": ["import {StreamType} from \"./contractValues\";\nimport {TxReceipt} from \"@kwilteam/kwil-js/dist/core/tx\";\nimport {Kwil} from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport {KwilSigner} from \"@kwilteam/kwil-js\";\nimport {GenericResponse} from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport {StreamId} from \"../util/StreamId\";\nimport pg from \"pg\";\nconst { Pool } = pg;\n\nexport interface DeployStreamInput {\n streamId: StreamId;\n streamType: StreamType;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n neonConnectionString?: string;\n}\n\nexport interface DeployStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Deploys a stream to TN.\n * @param input - The input parameters for deploying the stream.\n * @returns The transaction hash of the deployment.\n */\nexport async function deployStream(\n input: DeployStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n const txHash = await input.kwilClient.execute(\n {\n namespace: \"main\",\n inputs: [{\n $stream_id: input.streamId.getId(),\n $stream_type: input.streamType,\n }],\n name: \"create_stream\",\n description: `TN SDK - Deploying ${input.streamType} stream: ${input.streamId.getId()}`\n },\n input.kwilSigner,\n input.synchronous,\n );\n\n // Optional: insert into Postgres via neon connection\n if (input.neonConnectionString) {\n console.log(\"Neon connection detected, attempting to insert into DB...\");\n\n const signer: any = input.kwilSigner.signer;\n const dataProvider = signer.address.toLowerCase();\n\n const pool = new Pool({ connectionString: input.neonConnectionString });\n await pool.query(\n `INSERT INTO streams (data_provider, stream_id, type, stream_name, display_name, categories, owner_wallet, geography, tags)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)\n ON CONFLICT (data_provider, stream_id) DO NOTHING`,\n [dataProvider, input.streamId.getId(), input.streamType, input.streamId.getName(), input.streamId.getName(), '{External}', dataProvider, 'Global', '{External}'],\n );\n await pool.end();\n\n console.log(\"successfully inserted into Explorer DB\", input.streamId.getName());\n }\n\n return txHash;\n } catch (error) {\n throw new Error(`Failed to deploy stream: ${error}`);\n }\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,gBAAe;AACf,IAAM,EAAE,KAAK,IAAI,UAAAA;AAoBjB,eAAsB,aACpB,OACqC;AACrC,MAAI;AACA,UAAM,SAAS,MAAM,MAAM,WAAW;AAAA,MACpC;AAAA,QACI,WAAW;AAAA,QACX,QAAQ,CAAC;AAAA,UACL,YAAY,MAAM,SAAS,MAAM;AAAA,UACjC,cAAc,MAAM;AAAA,QACxB,CAAC;AAAA,QACD,MAAM;AAAA,QACN,aAAa,sBAAsB,MAAM,UAAU,YAAY,MAAM,SAAS,MAAM,CAAC;AAAA,MACzF;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAGA,QAAI,MAAM,sBAAsB;AAC9B,cAAQ,IAAI,2DAA2D;AAEvE,YAAM,SAAc,MAAM,WAAW;AACrC,YAAM,eAAe,OAAO,QAAQ,YAAY;AAEhD,YAAM,OAAO,IAAI,KAAK,EAAE,kBAAkB,MAAM,qBAAqB,CAAC;AACtE,YAAM,KAAK;AAAA,QACP;AAAA;AAAA;AAAA,QAGA,CAAC,cAAc,MAAM,SAAS,MAAM,GAAG,MAAM,YAAY,MAAM,SAAS,QAAQ,GAAG,MAAM,SAAS,QAAQ,GAAG,cAAc,cAAc,UAAU,YAAY;AAAA,MACnK;AACA,YAAM,KAAK,IAAI;AAEf,cAAQ,IAAI,0CAA0C,MAAM,SAAS,QAAQ,CAAC;AAAA,IAChF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,4BAA4B,KAAK,EAAE;AAAA,EACrD;AACF;",
6
+ "names": ["pg"]
7
7
  }
@@ -0,0 +1,92 @@
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/contracts-api/primitiveAction.ts
21
+ var primitiveAction_exports = {};
22
+ __export(primitiveAction_exports, {
23
+ PrimitiveAction: () => PrimitiveAction
24
+ });
25
+ module.exports = __toCommonJS(primitiveAction_exports);
26
+ var import_kwil_js = require("@kwilteam/kwil-js");
27
+ var import_action = require("./action.cjs");
28
+ var DataType = import_kwil_js.Utils.DataType;
29
+ var PrimitiveAction = class _PrimitiveAction extends import_action.Action {
30
+ constructor(kwilClient, kwilSigner) {
31
+ super(kwilClient, kwilSigner);
32
+ }
33
+ /**
34
+ * Insert a record into the stream
35
+ * @param input of a single record to insert
36
+ * @returns Transaction receipt
37
+ */
38
+ async insertRecord(input) {
39
+ return await this.executeWithActionBody({
40
+ namespace: "main",
41
+ name: "insert_record",
42
+ inputs: [{
43
+ $data_provider: input.stream.dataProvider.getAddress(),
44
+ $stream_id: input.stream.streamId.getId(),
45
+ $event_time: input.eventTime,
46
+ $value: input.value
47
+ }],
48
+ types: {
49
+ $data_provider: DataType.Text,
50
+ $stream_id: DataType.Text,
51
+ $event_time: DataType.Int,
52
+ $value: DataType.Numeric(36, 18)
53
+ }
54
+ });
55
+ }
56
+ /**
57
+ * Inserts records into the stream
58
+ * @param inputs Array of records to insert
59
+ * @param synchronous If true, the transaction will be executed synchronously
60
+ * @returns Transaction receipt
61
+ */
62
+ async insertRecords(inputs, synchronous) {
63
+ return await this.executeWithActionBody({
64
+ namespace: "main",
65
+ name: "insert_records",
66
+ inputs: inputs.map((input) => ({
67
+ $data_provider: input.stream.dataProvider.getAddress(),
68
+ $stream_id: input.stream.streamId.getId(),
69
+ $event_time: input.eventTime,
70
+ $value: input.value
71
+ })),
72
+ types: {
73
+ $data_provider: DataType.TextArray,
74
+ $stream_id: DataType.TextArray,
75
+ $event_time: DataType.IntArray,
76
+ $value: DataType.NumericArray(36, 18)
77
+ }
78
+ }, synchronous);
79
+ }
80
+ /**
81
+ * Creates a PrimitiveStream from a base Stream
82
+ * @param stream The base stream to convert
83
+ * @returns A Promise that resolves to a PrimitiveStream instance
84
+ */
85
+ static fromStream(stream) {
86
+ return new _PrimitiveAction(
87
+ stream["kwilClient"],
88
+ stream["kwilSigner"]
89
+ );
90
+ }
91
+ };
92
+ //# sourceMappingURL=primitiveAction.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/contracts-api/primitiveAction.ts"],
4
+ "sourcesContent": ["import {KwilSigner, NodeKwil, Utils, WebKwil} from \"@kwilteam/kwil-js\";\nimport {GenericResponse} from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport {TxReceipt} from \"@kwilteam/kwil-js/dist/core/tx\";\nimport {StreamType} from \"./contractValues\";\nimport {Action} from \"./action\";\nimport {StreamLocator} from \"../types/stream\";\nimport DataType = Utils.DataType;\n\nconst ErrorStreamNotPrimitive = \"stream is not a primitive stream\";\n\nexport class PrimitiveAction extends Action {\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n super(kwilClient, kwilSigner);\n }\n\n /**\n * Insert a record into the stream\n * @param input of a single record to insert\n * @returns Transaction receipt\n */\n public async insertRecord(\n input: InsertRecordInput,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithActionBody({\n namespace: 'main',\n name: 'insert_record',\n inputs: [{\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $event_time: input.eventTime,\n $value: input.value\n }],\n types: {\n $data_provider: DataType.Text,\n $stream_id: DataType.Text,\n $event_time: DataType.Int,\n $value: DataType.Numeric(36, 18)\n }\n })\n }\n\n /**\n * Inserts records into the stream\n * @param inputs Array of records to insert\n * @param synchronous If true, the transaction will be executed synchronously\n * @returns Transaction receipt\n */\n public async insertRecords(\n inputs: InsertRecordInput[],\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithActionBody({\n namespace: 'main',\n name: 'insert_records',\n inputs: inputs.map((input) => ({\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $event_time: input.eventTime,\n $value: input.value\n })),\n types: {\n $data_provider: DataType.TextArray,\n $stream_id: DataType.TextArray,\n $event_time: DataType.IntArray,\n $value: DataType.NumericArray(36, 18)\n }\n }, synchronous)\n }\n\n /**\n * Creates a PrimitiveStream from a base Stream\n * @param stream The base stream to convert\n * @returns A Promise that resolves to a PrimitiveStream instance\n */\n public static fromStream(stream: Action): PrimitiveAction {\n return new PrimitiveAction(\n stream[\"kwilClient\"],\n stream[\"kwilSigner\"],\n );\n }\n}\n\nexport interface InsertRecordInput {\n stream: StreamLocator;\n eventTime: number;\n // value is a string to support arbitrary precision\n value: string;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmD;AAInD,oBAAqB;AAErB,IAAO,WAAW,qBAAM;AAIjB,IAAM,kBAAN,MAAM,yBAAwB,qBAAO;AAAA,EAC1C,YACE,YACA,YACA;AACA,UAAM,YAAY,UAAU;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,aACT,OACmC;AACrC,WAAO,MAAM,KAAK,sBAAsB;AAAA,MAClC,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,QACP,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,aAAa,MAAM;AAAA,QACnB,QAAQ,MAAM;AAAA,MAChB,CAAC;AAAA,MACD,OAAO;AAAA,QACL,gBAAgB,SAAS;AAAA,QACzB,YAAY,SAAS;AAAA,QACrB,aAAa,SAAS;AAAA,QACtB,QAAQ,SAAS,QAAQ,IAAI,EAAE;AAAA,MACjC;AAAA,IACN,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,MAAa,cACT,QACA,aACmC;AACrC,WAAO,MAAM,KAAK,sBAAsB;AAAA,MACtC,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,QAC7B,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,aAAa,MAAM;AAAA,QACnB,QAAQ,MAAM;AAAA,MAChB,EAAE;AAAA,MACF,OAAO;AAAA,QACL,gBAAgB,SAAS;AAAA,QACzB,YAAY,SAAS;AAAA,QACrB,aAAa,SAAS;AAAA,QACtB,QAAQ,SAAS,aAAa,IAAI,EAAE;AAAA,MACtC;AAAA,IACF,GAAG,WAAW;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOF,OAAc,WAAW,QAAiC;AACxD,WAAO,IAAI;AAAA,MACP,OAAO,YAAY;AAAA,MACnB,OAAO,YAAY;AAAA,IACvB;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -20,10 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.common.ts
21
21
  var index_common_exports = {};
22
22
  __export(index_common_exports, {
23
- ComposedStream: () => import_composedStream.ComposedStream,
23
+ Action: () => import_action.Action,
24
+ ComposedAction: () => import_composedAction.ComposedAction,
24
25
  EthereumAddress: () => import_EthereumAddress.EthereumAddress,
25
- PrimitiveStream: () => import_primitiveStream.PrimitiveStream,
26
- Stream: () => import_stream.Stream,
26
+ PrimitiveAction: () => import_primitiveAction.PrimitiveAction,
27
27
  StreamId: () => import_StreamId.StreamId,
28
28
  StreamType: () => import_contractValues.StreamType,
29
29
  visibility: () => import_visibility.visibility
@@ -33,7 +33,7 @@ var import_StreamId = require("./util/StreamId.cjs");
33
33
  var import_EthereumAddress = require("./util/EthereumAddress.cjs");
34
34
  var import_visibility = require("./util/visibility.cjs");
35
35
  var import_contractValues = require("./contracts-api/contractValues.cjs");
36
- var import_stream = require("./contracts-api/stream.cjs");
37
- var import_primitiveStream = require("./contracts-api/primitiveStream.cjs");
38
- var import_composedStream = require("./contracts-api/composedStream.cjs");
36
+ var import_action = require("./contracts-api/action.cjs");
37
+ var import_primitiveAction = require("./contracts-api/primitiveAction.cjs");
38
+ var import_composedAction = require("./contracts-api/composedAction.cjs");
39
39
  //# sourceMappingURL=index.common.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.common.ts"],
4
- "sourcesContent": ["// Core client types\nexport type { TNClientOptions } from \"./client/client\";\nexport type { SignerInfo as EthProvider } from \"./client/client\";\n\n// Stream types and interfaces\nexport type { StreamLocator } from \"./types/stream\";\nexport type { StreamRecord } from \"./contracts-api/stream\";\nexport type { GetRecordInput, GetFirstRecordInput } from \"./contracts-api/stream\";\nexport type { InsertRecordInput } from \"./contracts-api/primitiveStream\";\nexport type { TaxonomySet, TaxonomyItem } from \"./contracts-api/composedStream\";\n\n// Utility types and classes\nexport { StreamId } from \"./util/StreamId\";\nexport { EthereumAddress } from \"./util/EthereumAddress\";\nexport { visibility } from \"./util/visibility\";\nexport type { VisibilityEnum } from \"./util/visibility\";\n\n// Stream type constants\nexport { StreamType } from \"./contracts-api/contractValues\";\n\n// Base classes\nexport { Stream } from \"./contracts-api/stream\";\nexport { PrimitiveStream } from \"./contracts-api/primitiveStream\";\nexport { ComposedStream } from \"./contracts-api/composedStream\";\n\n"],
4
+ "sourcesContent": ["// Core client types\nexport type { TNClientOptions } from \"./client/client\";\nexport type { SignerInfo as EthProvider } from \"./client/client\";\n\n// Stream types and interfaces\nexport type { StreamLocator } from \"./types/stream\";\nexport type { StreamRecord } from \"./contracts-api/action\";\nexport type { GetRecordInput, GetFirstRecordInput } from \"./contracts-api/action\";\nexport type { InsertRecordInput } from \"./contracts-api/primitiveAction\";\nexport type { TaxonomySet, TaxonomyItem } from \"./contracts-api/composedAction\";\n\n// Utility types and classes\nexport { StreamId } from \"./util/StreamId\";\nexport { EthereumAddress } from \"./util/EthereumAddress\";\nexport { visibility } from \"./util/visibility\";\nexport type { VisibilityEnum } from \"./util/visibility\";\n\n// Stream type constants\nexport { StreamType } from \"./contracts-api/contractValues\";\n\n// Base classes\nexport { Action } from \"./contracts-api/action\";\nexport { PrimitiveAction } from \"./contracts-api/primitiveAction\";\nexport { ComposedAction } from \"./contracts-api/composedAction\";\n\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,sBAAyB;AACzB,6BAAgC;AAChC,wBAA2B;AAI3B,4BAA2B;AAG3B,oBAAuB;AACvB,6BAAgC;AAChC,4BAA+B;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,19 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/types/transaction.ts
17
+ var transaction_exports = {};
18
+ module.exports = __toCommonJS(transaction_exports);
19
+ //# sourceMappingURL=transaction.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/transaction.ts"],
4
+ "sourcesContent": ["export interface LastTransaction {\r\n /** Block height */\r\n blockHeight: number;\r\n /** Which action was taken */\r\n method: string;\r\n /** Address that sent the on\u2010chain tx */\r\n sender: string;\r\n /** Hash of the on\u2010chain transaction */\r\n transactionHash: string;\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -30,7 +30,6 @@ var EthereumAddress = class _EthereumAddress {
30
30
  address;
31
31
  correctlyCreated = false;
32
32
  constructor(address) {
33
- address = address.toLowerCase();
34
33
  if (!address.startsWith("0x")) {
35
34
  address = "0x" + address;
36
35
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/EthereumAddress.ts"],
4
- "sourcesContent": ["import { ethers } from \"ethers\";\nimport { Either, left, right } from \"monads-io/either\";\n\nexport class EthereumAddress {\n private readonly address: string;\n private readonly correctlyCreated: boolean = false;\n\n constructor(address: string) {\n address = address.toLowerCase();\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n\n if (!this.validateEthereumAddress(address)) {\n throw new Error(\"Invalid Ethereum address\");\n }\n\n this.address = address;\n this.correctlyCreated = true;\n }\n\n private validateEthereumAddress(address: string): boolean {\n return /^(0x)?[0-9a-f]{40}$/i.test(address);\n }\n\n public getAddress(): string {\n if (!this.correctlyCreated) {\n throw new Error(\"EthereumAddress not correctly created\");\n }\n\n return this.address;\n }\n\n public getBytes(): Uint8Array {\n return new TextEncoder().encode(this.getAddress());\n }\n\n public toJSON(): string {\n return this.getAddress();\n }\n\n public static fromJSON(json: string): EthereumAddress {\n return new EthereumAddress(json);\n }\n\n public static fromBytes(bytes: Uint8Array): Either<Error, EthereumAddress> {\n try {\n return right(new EthereumAddress(ethers.hexlify(bytes)));\n } catch (e) {\n return left(e as Error);\n }\n }\n\n public static fromString(str: string): Either<Error, EthereumAddress> {\n try {\n return right(new EthereumAddress(str));\n } catch (e) {\n return left(e as Error);\n }\n }\n}\n\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n describe(\"EthereumAddress\", () => {\n it(\"should create a valid EthereumAddress with correct format\", () => {\n const address = new EthereumAddress(\n \"0x1234567890123456789012345678901234567890\",\n );\n expect(address.getAddress()).toBe(\n \"0x1234567890123456789012345678901234567890\",\n );\n });\n\n it(\"should throw an error for an invalid Ethereum address\", () => {\n expect(() => new EthereumAddress(\"invalid_address\")).toThrow(\n \"Invalid Ethereum address\",\n );\n });\n\n it(\"should enforce lowercase addresses\", () => {\n const mixedCaseAddress =\n \"0xaaBbccDdEeff1234567890123456789012345678\".toLowerCase();\n const address = new EthereumAddress(mixedCaseAddress);\n expect(address.getAddress()).toBe(\n \"0xaabbccddeeff1234567890123456789012345678\",\n );\n });\n\n it(\"should correctly serialize and deserialize to/from JSON\", () => {\n const originalAddress = \"0x1234567890123456789012345678901234567890\";\n const address = new EthereumAddress(originalAddress);\n const json = address.toJSON();\n const deserializedAddress = EthereumAddress.fromJSON(json);\n expect(deserializedAddress.getAddress()).toBe(originalAddress);\n });\n });\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AACvB,oBAAoC;AADpC;AAGO,IAAM,kBAAN,MAAM,iBAAgB;AAAA,EACV;AAAA,EACA,mBAA4B;AAAA,EAE7C,YAAY,SAAiB;AAC3B,cAAU,QAAQ,YAAY;AAC9B,QAAI,CAAC,QAAQ,WAAW,IAAI,GAAG;AAC7B,gBAAU,OAAO;AAAA,IACnB;AAEA,QAAI,CAAC,KAAK,wBAAwB,OAAO,GAAG;AAC1C,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAEA,SAAK,UAAU;AACf,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEQ,wBAAwB,SAA0B;AACxD,WAAO,uBAAuB,KAAK,OAAO;AAAA,EAC5C;AAAA,EAEO,aAAqB;AAC1B,QAAI,CAAC,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,WAAuB;AAC5B,WAAO,IAAI,YAAY,EAAE,OAAO,KAAK,WAAW,CAAC;AAAA,EACnD;AAAA,EAEO,SAAiB;AACtB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EAEA,OAAc,SAAS,MAA+B;AACpD,WAAO,IAAI,iBAAgB,IAAI;AAAA,EACjC;AAAA,EAEA,OAAc,UAAU,OAAmD;AACzE,QAAI;AACF,iBAAO,qBAAM,IAAI,iBAAgB,qBAAO,QAAQ,KAAK,CAAC,CAAC;AAAA,IACzD,SAAS,GAAG;AACV,iBAAO,oBAAK,CAAU;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,OAAc,WAAW,KAA6C;AACpE,QAAI;AACF,iBAAO,qBAAM,IAAI,iBAAgB,GAAG,CAAC;AAAA,IACvC,SAAS,GAAG;AACV,iBAAO,oBAAK,CAAU;AAAA,IACxB;AAAA,EACF;AACF;AAEA,IAAI,YAAY,QAAQ;AACtB,QAAM,EAAE,UAAU,IAAI,OAAO,IAAI,YAAY;AAC7C,WAAS,mBAAmB,MAAM;AAChC,OAAG,6DAA6D,MAAM;AACpE,YAAM,UAAU,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO,QAAQ,WAAW,CAAC,EAAE;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,yDAAyD,MAAM;AAChE,aAAO,MAAM,IAAI,gBAAgB,iBAAiB,CAAC,EAAE;AAAA,QACnD;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,sCAAsC,MAAM;AAC7C,YAAM,mBACJ,6CAA6C,YAAY;AAC3D,YAAM,UAAU,IAAI,gBAAgB,gBAAgB;AACpD,aAAO,QAAQ,WAAW,CAAC,EAAE;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,2DAA2D,MAAM;AAClE,YAAM,kBAAkB;AACxB,YAAM,UAAU,IAAI,gBAAgB,eAAe;AACnD,YAAM,OAAO,QAAQ,OAAO;AAC5B,YAAM,sBAAsB,gBAAgB,SAAS,IAAI;AACzD,aAAO,oBAAoB,WAAW,CAAC,EAAE,KAAK,eAAe;AAAA,IAC/D,CAAC;AAAA,EACH,CAAC;AACH;",
4
+ "sourcesContent": ["import { ethers } from \"ethers\";\nimport { Either, left, right } from \"monads-io/either\";\n\nexport class EthereumAddress {\n private readonly address: string;\n private readonly correctlyCreated: boolean = false;\n\n constructor(address: string) {\n if (!address.startsWith(\"0x\")) {\n address = \"0x\" + address;\n }\n\n if (!this.validateEthereumAddress(address)) {\n throw new Error(\"Invalid Ethereum address\");\n }\n\n this.address = address;\n this.correctlyCreated = true;\n }\n\n private validateEthereumAddress(address: string): boolean {\n return /^(0x)?[0-9a-f]{40}$/i.test(address);\n }\n\n public getAddress(): string {\n if (!this.correctlyCreated) {\n throw new Error(\"EthereumAddress not correctly created\");\n }\n\n return this.address;\n }\n\n public getBytes(): Uint8Array {\n return new TextEncoder().encode(this.getAddress());\n }\n\n public toJSON(): string {\n return this.getAddress();\n }\n\n public static fromJSON(json: string): EthereumAddress {\n return new EthereumAddress(json);\n }\n\n public static fromBytes(bytes: Uint8Array): Either<Error, EthereumAddress> {\n try {\n return right(new EthereumAddress(ethers.hexlify(bytes)));\n } catch (e) {\n return left(e as Error);\n }\n }\n\n public static fromString(str: string): Either<Error, EthereumAddress> {\n try {\n return right(new EthereumAddress(str));\n } catch (e) {\n return left(e as Error);\n }\n }\n}\n\nif (import.meta.vitest) {\n const { describe, it, expect } = import.meta.vitest;\n describe(\"EthereumAddress\", () => {\n it(\"should create a valid EthereumAddress with correct format\", () => {\n const address = new EthereumAddress(\n \"0x1234567890123456789012345678901234567890\",\n );\n expect(address.getAddress()).toBe(\n \"0x1234567890123456789012345678901234567890\",\n );\n });\n\n it(\"should throw an error for an invalid Ethereum address\", () => {\n expect(() => new EthereumAddress(\"invalid_address\")).toThrow(\n \"Invalid Ethereum address\",\n );\n });\n\n it(\"should enforce lowercase addresses\", () => {\n const mixedCaseAddress =\n \"0xaaBbccDdEeff1234567890123456789012345678\".toLowerCase();\n const address = new EthereumAddress(mixedCaseAddress);\n expect(address.getAddress()).toBe(\n \"0xaabbccddeeff1234567890123456789012345678\",\n );\n });\n\n it(\"should correctly serialize and deserialize to/from JSON\", () => {\n const originalAddress = \"0x1234567890123456789012345678901234567890\";\n const address = new EthereumAddress(originalAddress);\n const json = address.toJSON();\n const deserializedAddress = EthereumAddress.fromJSON(json);\n expect(deserializedAddress.getAddress()).toBe(originalAddress);\n });\n });\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AACvB,oBAAoC;AADpC;AAGO,IAAM,kBAAN,MAAM,iBAAgB;AAAA,EACV;AAAA,EACA,mBAA4B;AAAA,EAE7C,YAAY,SAAiB;AAC3B,QAAI,CAAC,QAAQ,WAAW,IAAI,GAAG;AAC7B,gBAAU,OAAO;AAAA,IACnB;AAEA,QAAI,CAAC,KAAK,wBAAwB,OAAO,GAAG;AAC1C,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAEA,SAAK,UAAU;AACf,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEQ,wBAAwB,SAA0B;AACxD,WAAO,uBAAuB,KAAK,OAAO;AAAA,EAC5C;AAAA,EAEO,aAAqB;AAC1B,QAAI,CAAC,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,WAAuB;AAC5B,WAAO,IAAI,YAAY,EAAE,OAAO,KAAK,WAAW,CAAC;AAAA,EACnD;AAAA,EAEO,SAAiB;AACtB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EAEA,OAAc,SAAS,MAA+B;AACpD,WAAO,IAAI,iBAAgB,IAAI;AAAA,EACjC;AAAA,EAEA,OAAc,UAAU,OAAmD;AACzE,QAAI;AACF,iBAAO,qBAAM,IAAI,iBAAgB,qBAAO,QAAQ,KAAK,CAAC,CAAC;AAAA,IACzD,SAAS,GAAG;AACV,iBAAO,oBAAK,CAAU;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,OAAc,WAAW,KAA6C;AACpE,QAAI;AACF,iBAAO,qBAAM,IAAI,iBAAgB,GAAG,CAAC;AAAA,IACvC,SAAS,GAAG;AACV,iBAAO,oBAAK,CAAU;AAAA,IACxB;AAAA,EACF;AACF;AAEA,IAAI,YAAY,QAAQ;AACtB,QAAM,EAAE,UAAU,IAAI,OAAO,IAAI,YAAY;AAC7C,WAAS,mBAAmB,MAAM;AAChC,OAAG,6DAA6D,MAAM;AACpE,YAAM,UAAU,IAAI;AAAA,QAClB;AAAA,MACF;AACA,aAAO,QAAQ,WAAW,CAAC,EAAE;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,yDAAyD,MAAM;AAChE,aAAO,MAAM,IAAI,gBAAgB,iBAAiB,CAAC,EAAE;AAAA,QACnD;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,sCAAsC,MAAM;AAC7C,YAAM,mBACJ,6CAA6C,YAAY;AAC3D,YAAM,UAAU,IAAI,gBAAgB,gBAAgB;AACpD,aAAO,QAAQ,WAAW,CAAC,EAAE;AAAA,QAC3B;AAAA,MACF;AAAA,IACF,CAAC;AAED,OAAG,2DAA2D,MAAM;AAClE,YAAM,kBAAkB;AACxB,YAAM,UAAU,IAAI,gBAAgB,eAAe;AACnD,YAAM,OAAO,QAAQ,OAAO;AAC5B,YAAM,sBAAsB,gBAAgB,SAAS,IAAI;AACzD,aAAO,oBAAoB,WAAW,CAAC,EAAE,KAAK,eAAe;AAAA,IAC/D,CAAC;AAAA,EACH,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -29,9 +29,11 @@ var import_meta = {};
29
29
  var StreamId = class _StreamId {
30
30
  id;
31
31
  correctlyCreated = false;
32
- constructor(id) {
32
+ name;
33
+ constructor(id, name) {
33
34
  this.id = id;
34
35
  this.correctlyCreated = true;
36
+ this.name = name;
35
37
  }
36
38
  getId() {
37
39
  if (!this.correctlyCreated) {
@@ -39,6 +41,9 @@ var StreamId = class _StreamId {
39
41
  }
40
42
  return this.id;
41
43
  }
44
+ getName() {
45
+ return this.name;
46
+ }
42
47
  validate() {
43
48
  return this.id.length === 32 && this.id.startsWith("st");
44
49
  }
@@ -54,7 +59,7 @@ var StreamId = class _StreamId {
54
59
  }
55
60
  const hash = await (0, import_crypto_hash.sha256)(s);
56
61
  const streamIdStr = "st" + hash.slice(0, 30);
57
- return new _StreamId(streamIdStr);
62
+ return new _StreamId(streamIdStr, s);
58
63
  }
59
64
  static fromString(s) {
60
65
  try {