@clarigen/test 4.1.4 → 4.1.5

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/dist/index.cjs CHANGED
@@ -1,2 +1,180 @@
1
- let e=require(`@clarigen/core`),t=require(`yaml`);function n(t,n,r){let i=(0,e.cvToValue)(t,!0);if(!(0,e.isResponse)(i)&&n!==void 0)throw Error("Expected response when calling function, but not a response. Try using just `rov`");if((0,e.isResponse)(i)&&n!==void 0){let t=i,a=t.value;if(n&&!t.isOk){let t=``;if(r){let n=Object.entries((0,e.extractErrors)(r)).find(([e,t])=>t===a);n&&(t=` (${n[0]})`)}throw Error(`Tx result failed. Expected OK, received ERR ${String(a)}${t}.`)}if(n===!1&&t.isOk)throw Error(`Tx result failed. Expected ERR, received OK ${String(a)}.`);return a}return i}function r(t,n){let r=n===e.CoreNodeEventType.ContractEvent?`print_event`:n;return t.filter(e=>e.event===r)}function i({contractId:n,sender:r,args:i,functionName:a}){if(process.env.LOG_TX_CALLS){let o={"contract-call":{"contract-id":n,"expected-sender":r,parameters:i.map(t=>(0,e.cvToString)(t,`hex`)),method:a,cost:`10000000`}};console.log(`------------ DEPLOYMENT TX ------------`),console.log((0,t.stringify)(o,{indent:2})),console.log(`------------ END DEPLOYMENT TX ------------`)}}function a(e,t){let r=c(e,t),i=n(r.result,!0,e.contractAbi);return{...r,events:r.events,value:i}}function o(e,t){let r=c(e,t),i=n(r.result,!1,e.contractAbi);return{...r,events:r.events,value:i}}function s(e,t){let r=c(e,t),i=n(r.result,void 0,e.contractAbi);return{...r,events:r.events,value:i}}function c(e,t){let n=e.functionArgs,r=`${e.contractAddress}.${e.contractName}`,a;return a=e.function.access===`private`?simnet.callPrivateFn(r,e.function.name,n,t):simnet.callPublicFn(r,e.function.name,n,t),i({contractId:r,sender:t,args:n,functionName:e.function.name}),a}function l(e,t){let r=e.functionArgs,i=`${e.contractAddress}.${e.contractName}`,a=simnet.callReadOnlyFn(i,e.function.name,r,t??e.contractAddress),o=n(a.result,void 0,e.contractAbi);return{...a,events:a.events,value:o}}function u(e,t){return l(e,t).value}function d(e,t){let r=e.functionArgs,i=`${e.contractAddress}.${e.contractName}`,a=simnet.callReadOnlyFn(i,e.function.name,r,t??e.contractAddress),o=n(a.result,!0,e.contractAbi);return{...a,events:a.events,value:o}}function f(e,t){return d(e,t).value}function p(e,t){let r=e.functionArgs,i=`${e.contractAddress}.${e.contractName}`,a=simnet.callReadOnlyFn(i,e.function.name,r,t??e.contractAddress),o=n(a.result,!1,e.contractAbi);return{...a,events:a.events,value:o}}function m(e,t){return p(e,t).value}function h(t,n,r){let i=(0,e.mapFactory)(n,r);return(0,e.cvToValue)(simnet.getMapEntry(t,i.map.name,i.keyCV))}function g(t,n){return(0,e.cvToValue)(simnet.getDataVar(t,n.name))}const _={txOk:a,txErr:o,tx:s,ro:l,roOk:d,roErr:p,rov:u,rovOk:f,rovErr:m};async function v(e,t){await simnet.initSession(e??process.cwd(),t??`./Clarinet.toml`)}function y(t){if(!(0,e.isResponse)(t))throw Error(`Expected response, but got something else`);if(!t.isOk)throw Error(`Expected response to be OK, but got ERR ${t.value}`)}function b(t){if(!(0,e.isResponse)(t))throw Error(`Expected response, but got something else`);if(t.isOk)throw Error(`Expected response to be ERR, but got OK`)}exports.assertErr=b,exports.assertOk=y,exports.chain=_,exports.filterEvents=r,exports.makeNewSession=v,exports.mapGet=h,exports.ro=l,exports.roErr=p,exports.roOk=d,exports.rov=u,exports.rovErr=m,exports.rovOk=f,exports.tx=s,exports.txErr=o,exports.txOk=a,exports.validateResponse=n,exports.varGet=g;
1
+ let __clarigen_core = require("@clarigen/core");
2
+ let yaml = require("yaml");
3
+
4
+ //#region src/utils.ts
5
+ function validateResponse(result, expectOk, contractAbi) {
6
+ const value = (0, __clarigen_core.cvToValue)(result, true);
7
+ if (!(0, __clarigen_core.isResponse)(value) && typeof expectOk !== "undefined") throw new Error("Expected response when calling function, but not a response. Try using just `rov`");
8
+ if ((0, __clarigen_core.isResponse)(value) && typeof expectOk !== "undefined") {
9
+ const response = value;
10
+ const inner = response.value;
11
+ if (expectOk && !response.isOk) {
12
+ let errorCode = "";
13
+ if (contractAbi) {
14
+ const match = Object.entries((0, __clarigen_core.extractErrors)(contractAbi)).find(([_key, code]) => code === inner);
15
+ if (match) errorCode = ` (${match[0]})`;
16
+ }
17
+ throw new Error(`Tx result failed. Expected OK, received ERR ${String(inner)}${errorCode}.`);
18
+ }
19
+ if (expectOk === false && response.isOk) throw new Error(`Tx result failed. Expected ERR, received OK ${String(inner)}.`);
20
+ return inner;
21
+ }
22
+ return value;
23
+ }
24
+
25
+ //#endregion
26
+ //#region src/events.ts
27
+ function filterEvents(events, type) {
28
+ const typeString = type === __clarigen_core.CoreNodeEventType.ContractEvent ? "print_event" : type;
29
+ return events.filter((event) => event.event === typeString);
30
+ }
31
+
32
+ //#endregion
33
+ //#region src/index.ts
34
+ /** biome-ignore-all lint/style/useTrimStartEnd: suppressed */
35
+ function logTxCall({ contractId, sender, args, functionName }) {
36
+ if (process.env.LOG_TX_CALLS) {
37
+ const contractCallTx = { "contract-call": {
38
+ "contract-id": contractId,
39
+ "expected-sender": sender,
40
+ parameters: args.map((arg) => (0, __clarigen_core.cvToString)(arg, "hex")),
41
+ method: functionName,
42
+ cost: "10000000"
43
+ } };
44
+ console.log("------------ DEPLOYMENT TX ------------");
45
+ console.log((0, yaml.stringify)(contractCallTx, { indent: 2 }));
46
+ console.log("------------ END DEPLOYMENT TX ------------");
47
+ }
48
+ }
49
+ function txOk(tx$1, sender) {
50
+ const receipt = getTxReceipt(tx$1, sender);
51
+ const value = validateResponse(receipt.result, true, tx$1.contractAbi);
52
+ return {
53
+ ...receipt,
54
+ events: receipt.events,
55
+ value
56
+ };
57
+ }
58
+ function txErr(tx$1, sender) {
59
+ const receipt = getTxReceipt(tx$1, sender);
60
+ const value = validateResponse(receipt.result, false, tx$1.contractAbi);
61
+ return {
62
+ ...receipt,
63
+ events: receipt.events,
64
+ value
65
+ };
66
+ }
67
+ function tx(tx$1, sender) {
68
+ const receipt = getTxReceipt(tx$1, sender);
69
+ const value = validateResponse(receipt.result, void 0, tx$1.contractAbi);
70
+ return {
71
+ ...receipt,
72
+ events: receipt.events,
73
+ value
74
+ };
75
+ }
76
+ function getTxReceipt(tx$1, sender) {
77
+ const args = tx$1.functionArgs;
78
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
79
+ let receipt;
80
+ if (tx$1.function.access === "private") receipt = simnet.callPrivateFn(contractId, tx$1.function.name, args, sender);
81
+ else receipt = simnet.callPublicFn(contractId, tx$1.function.name, args, sender);
82
+ logTxCall({
83
+ contractId,
84
+ sender,
85
+ args,
86
+ functionName: tx$1.function.name
87
+ });
88
+ return receipt;
89
+ }
90
+ function ro(tx$1, sender) {
91
+ const args = tx$1.functionArgs;
92
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
93
+ const receipt = simnet.callReadOnlyFn(contractId, tx$1.function.name, args, sender ?? tx$1.contractAddress);
94
+ const value = validateResponse(receipt.result, void 0, tx$1.contractAbi);
95
+ return {
96
+ ...receipt,
97
+ events: receipt.events,
98
+ value
99
+ };
100
+ }
101
+ function rov(tx$1, sender) {
102
+ return ro(tx$1, sender).value;
103
+ }
104
+ function roOk(tx$1, sender) {
105
+ const args = tx$1.functionArgs;
106
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
107
+ const receipt = simnet.callReadOnlyFn(contractId, tx$1.function.name, args, sender ?? tx$1.contractAddress);
108
+ const value = validateResponse(receipt.result, true, tx$1.contractAbi);
109
+ return {
110
+ ...receipt,
111
+ events: receipt.events,
112
+ value
113
+ };
114
+ }
115
+ function rovOk(tx$1, sender) {
116
+ return roOk(tx$1, sender).value;
117
+ }
118
+ function roErr(tx$1, sender) {
119
+ const args = tx$1.functionArgs;
120
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
121
+ const receipt = simnet.callReadOnlyFn(contractId, tx$1.function.name, args, sender ?? tx$1.contractAddress);
122
+ const value = validateResponse(receipt.result, false, tx$1.contractAbi);
123
+ return {
124
+ ...receipt,
125
+ events: receipt.events,
126
+ value
127
+ };
128
+ }
129
+ function rovErr(tx$1, sender) {
130
+ return roErr(tx$1, sender).value;
131
+ }
132
+ function mapGet(contractId, map, key) {
133
+ const payload = (0, __clarigen_core.mapFactory)(map, key);
134
+ return (0, __clarigen_core.cvToValue)(simnet.getMapEntry(contractId, payload.map.name, payload.keyCV));
135
+ }
136
+ function varGet(contractId, variable) {
137
+ return (0, __clarigen_core.cvToValue)(simnet.getDataVar(contractId, variable.name));
138
+ }
139
+ const chain = {
140
+ txOk,
141
+ txErr,
142
+ tx,
143
+ ro,
144
+ roOk,
145
+ roErr,
146
+ rov,
147
+ rovOk,
148
+ rovErr
149
+ };
150
+ async function makeNewSession(cwd, manifestPath) {
151
+ await simnet.initSession(cwd ?? process.cwd(), manifestPath ?? "./Clarinet.toml");
152
+ }
153
+ function assertOk(response) {
154
+ if (!(0, __clarigen_core.isResponse)(response)) throw new Error("Expected response, but got something else");
155
+ if (!response.isOk) throw new Error(`Expected response to be OK, but got ERR ${response.value}`);
156
+ }
157
+ function assertErr(response) {
158
+ if (!(0, __clarigen_core.isResponse)(response)) throw new Error("Expected response, but got something else");
159
+ if (response.isOk) throw new Error("Expected response to be ERR, but got OK");
160
+ }
161
+
162
+ //#endregion
163
+ exports.assertErr = assertErr;
164
+ exports.assertOk = assertOk;
165
+ exports.chain = chain;
166
+ exports.filterEvents = filterEvents;
167
+ exports.makeNewSession = makeNewSession;
168
+ exports.mapGet = mapGet;
169
+ exports.ro = ro;
170
+ exports.roErr = roErr;
171
+ exports.roOk = roOk;
172
+ exports.rov = rov;
173
+ exports.rovErr = rovErr;
174
+ exports.rovOk = rovOk;
175
+ exports.tx = tx;
176
+ exports.txErr = txErr;
177
+ exports.txOk = txOk;
178
+ exports.validateResponse = validateResponse;
179
+ exports.varGet = varGet;
2
180
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["CoreNodeEventType","contractCallTx: ContractCallTransaction","tx","receipt: ParsedTransactionResult"],"sources":["../src/utils.ts","../src/events.ts","../src/index.ts"],"sourcesContent":["import {\n type Response,\n type TypedAbi,\n cvToValue,\n extractErrors,\n isResponse,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: allowed\nexport function validateResponse<T>(\n result: ClarityValue,\n expectOk?: boolean,\n contractAbi?: TypedAbi\n): T {\n const value = cvToValue<Response<T, T> | T>(result, true);\n\n if (!isResponse(value) && typeof expectOk !== 'undefined') {\n throw new Error(\n 'Expected response when calling function, but not a response. Try using just `rov`'\n );\n }\n\n if (isResponse(value) && typeof expectOk !== 'undefined') {\n const response = value;\n const inner = response.value;\n if (expectOk && !response.isOk) {\n // try and find a matching error code\n let errorCode = '';\n if (contractAbi) {\n const match = Object.entries(extractErrors(contractAbi)).find(\n ([_key, code]) => code === inner\n );\n if (match) {\n errorCode = ` (${match[0]})`;\n }\n }\n throw new Error(\n `Tx result failed. Expected OK, received ERR ${String(inner)}${errorCode}.`\n );\n }\n if (expectOk === false && response.isOk) {\n throw new Error(\n `Tx result failed. Expected ERR, received OK ${String(inner)}.`\n );\n }\n return inner;\n }\n return value as T;\n}\n","import {\n CoreNodeEventType,\n type SmartContractEvent as _SmartContractEvent,\n type StxTransferEvent as _StxTransferEvent,\n type StxBurnEvent as _StxBurnEvent,\n type StxMintEvent as _StxMintEvent,\n type StxLockEvent as _StxLockEvent,\n type FtBurnEvent as _FtBurnEvent,\n type FtMintEvent as _FtMintEvent,\n type FtTransferEvent as _FtTransferEvent,\n type NftBurnEvent as _NftBurnEvent,\n type NftMintEvent as _NftMintEvent,\n type NftTransferEvent as _NftTransferEvent,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\nexport type SmartContractEvent = {\n event: _SmartContractEvent['type'];\n data: Omit<_SmartContractEvent['contract_event'], 'value'> & {\n value: ClarityValue;\n };\n};\n\nexport type StxTransferEvent = {\n event: _StxTransferEvent['type'];\n data: _StxTransferEvent['stx_transfer_event'];\n};\n\nexport type StxBurnEvent = {\n event: _StxBurnEvent['type'];\n data: _StxBurnEvent['stx_burn_event'];\n};\n\nexport type StxLockEvent = {\n event: _StxLockEvent['type'];\n data: _StxLockEvent['stx_lock_event'];\n};\n\nexport type StxMintEvent = {\n event: _StxMintEvent['type'];\n data: _StxMintEvent['stx_mint_event'];\n};\n\nexport type FtBurnEvent = {\n event: _FtBurnEvent['type'];\n data: _FtBurnEvent['ft_burn_event'];\n};\n\nexport type FtMintEvent = {\n event: _FtMintEvent['type'];\n data: _FtMintEvent['ft_mint_event'];\n};\n\nexport type FtTransferEvent = {\n event: _FtTransferEvent['type'];\n data: _FtTransferEvent['ft_transfer_event'];\n};\n\nexport type NftBurnEvent = {\n event: _NftBurnEvent['type'];\n data: _NftBurnEvent['nft_burn_event'];\n};\n\nexport type NftMintEvent = {\n event: _NftMintEvent['type'];\n data: _NftMintEvent['nft_mint_event'];\n};\n\nexport type NftTransferEvent = {\n event: _NftTransferEvent['type'];\n data: _NftTransferEvent['nft_transfer_event'];\n};\n\nexport type CoreNodeEvent =\n | SmartContractEvent\n | StxTransferEvent\n | StxMintEvent\n | StxBurnEvent\n | StxLockEvent\n | FtTransferEvent\n | FtMintEvent\n | FtBurnEvent\n | NftTransferEvent\n | NftMintEvent\n | NftBurnEvent;\n\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.ContractEvent\n): SmartContractEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxTransferEvent\n): StxTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxMintEvent\n): StxMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxBurnEvent\n): StxBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxLockEvent\n): StxLockEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftTransferEvent\n): NftTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftMintEvent\n): NftMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftBurnEvent\n): NftBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtTransferEvent\n): FtTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtMintEvent\n): FtMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtBurnEvent\n): FtBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType\n): CoreNodeEvent[] {\n const typeString =\n type === CoreNodeEventType.ContractEvent ? 'print_event' : type;\n return events.filter((event) => event.event === typeString);\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n type ContractCallTyped,\n type ErrType,\n type OkType,\n type TypedAbiMap,\n type TypedAbiVariable,\n type UnknownArgs,\n cvToValue,\n mapFactory,\n type Response,\n cvToString,\n type ResponseOk,\n type ResponseErr,\n isResponse,\n} from '@clarigen/core';\nimport type { ContractCallTransaction } from '@clarigen/core/deployment';\nimport type { ParsedTransactionResult } from '@stacks/clarinet-sdk';\nimport { validateResponse } from './utils';\nimport type { CoreNodeEvent } from './events';\nimport { stringify } from 'yaml';\nimport type { ClarityValue } from '@stacks/transactions';\n// biome-ignore lint/performance/noBarrelFile: ignored using `--suppress`\nexport * from './events';\nexport * from './utils';\n\nexport type TransactionResult<R> = Omit<ParsedTransactionResult, 'events'> & {\n value: R;\n events: CoreNodeEvent[];\n};\n\nexport type AnyResponse = Response<unknown, unknown>;\n\nfunction logTxCall({\n contractId,\n sender,\n args,\n functionName,\n}: {\n contractId: string;\n sender: string;\n args: ClarityValue[];\n functionName: string;\n}) {\n if (process.env.LOG_TX_CALLS) {\n const contractCallTx: ContractCallTransaction = {\n 'contract-call': {\n 'contract-id': contractId,\n 'expected-sender': sender,\n parameters: args.map((arg) => cvToString(arg, 'hex')),\n method: functionName,\n cost: '10000000',\n },\n };\n console.log('------------ DEPLOYMENT TX ------------');\n console.log(stringify(contractCallTx, { indent: 2 }));\n console.log('------------ END DEPLOYMENT TX ------------');\n }\n}\n\nexport function txOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<OkType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function txErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<ErrType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function tx<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<R> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nfunction getTxReceipt<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): ParsedTransactionResult {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n let receipt: ParsedTransactionResult;\n if (tx.function.access === 'private') {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPrivateFn(contractId, tx.function.name, args, sender);\n } else {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n }\n logTxCall({ contractId, sender, args, functionName: tx.function.name });\n return receipt;\n}\n\nexport function ro<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<R> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rov<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): R {\n return ro(tx, sender).value;\n}\n\nexport function roOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<OkType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): OkType<R> {\n return roOk(tx, sender).value;\n}\n\nexport function roErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<ErrType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): ErrType<R> {\n return roErr(tx, sender).value;\n}\n\nexport function mapGet<Key, Val>(\n contractId: string,\n map: TypedAbiMap<Key, Val>,\n key: Key\n) {\n const payload = mapFactory(map, key);\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getMapEntry(\n contractId,\n payload.map.name,\n payload.keyCV\n );\n return cvToValue<Val | null>(result);\n}\n\nexport function varGet<T>(contractId: string, variable: TypedAbiVariable<T>) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getDataVar(contractId, variable.name);\n return cvToValue<T>(result);\n}\n\n// Helper export for previous Deno-based tests\nexport const chain = {\n txOk,\n txErr,\n tx,\n ro,\n roOk,\n roErr,\n rov,\n rovOk,\n rovErr,\n};\n\nexport async function makeNewSession(cwd?: string, manifestPath?: string) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n await simnet.initSession(\n cwd ?? process.cwd(),\n manifestPath ?? './Clarinet.toml'\n );\n}\n\nexport function assertOk<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseOk<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (!response.isOk) {\n throw new Error(\n `Expected response to be OK, but got ERR ${response.value}`\n );\n }\n}\n\nexport function assertErr<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseErr<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (response.isOk) {\n throw new Error('Expected response to be ERR, but got OK');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["CoreNodeEventType","contractCallTx: ContractCallTransaction","tx","receipt: ParsedTransactionResult"],"sources":["../src/utils.ts","../src/events.ts","../src/index.ts"],"sourcesContent":["import {\n type Response,\n type TypedAbi,\n cvToValue,\n extractErrors,\n isResponse,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: allowed\nexport function validateResponse<T>(\n result: ClarityValue,\n expectOk?: boolean,\n contractAbi?: TypedAbi\n): T {\n const value = cvToValue<Response<T, T> | T>(result, true);\n\n if (!isResponse(value) && typeof expectOk !== 'undefined') {\n throw new Error(\n 'Expected response when calling function, but not a response. Try using just `rov`'\n );\n }\n\n if (isResponse(value) && typeof expectOk !== 'undefined') {\n const response = value;\n const inner = response.value;\n if (expectOk && !response.isOk) {\n // try and find a matching error code\n let errorCode = '';\n if (contractAbi) {\n const match = Object.entries(extractErrors(contractAbi)).find(\n ([_key, code]) => code === inner\n );\n if (match) {\n errorCode = ` (${match[0]})`;\n }\n }\n throw new Error(\n `Tx result failed. Expected OK, received ERR ${String(inner)}${errorCode}.`\n );\n }\n if (expectOk === false && response.isOk) {\n throw new Error(\n `Tx result failed. Expected ERR, received OK ${String(inner)}.`\n );\n }\n return inner;\n }\n return value as T;\n}\n","import {\n CoreNodeEventType,\n type SmartContractEvent as _SmartContractEvent,\n type StxTransferEvent as _StxTransferEvent,\n type StxBurnEvent as _StxBurnEvent,\n type StxMintEvent as _StxMintEvent,\n type StxLockEvent as _StxLockEvent,\n type FtBurnEvent as _FtBurnEvent,\n type FtMintEvent as _FtMintEvent,\n type FtTransferEvent as _FtTransferEvent,\n type NftBurnEvent as _NftBurnEvent,\n type NftMintEvent as _NftMintEvent,\n type NftTransferEvent as _NftTransferEvent,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\nexport type SmartContractEvent = {\n event: _SmartContractEvent['type'];\n data: Omit<_SmartContractEvent['contract_event'], 'value'> & {\n value: ClarityValue;\n };\n};\n\nexport type StxTransferEvent = {\n event: _StxTransferEvent['type'];\n data: _StxTransferEvent['stx_transfer_event'];\n};\n\nexport type StxBurnEvent = {\n event: _StxBurnEvent['type'];\n data: _StxBurnEvent['stx_burn_event'];\n};\n\nexport type StxLockEvent = {\n event: _StxLockEvent['type'];\n data: _StxLockEvent['stx_lock_event'];\n};\n\nexport type StxMintEvent = {\n event: _StxMintEvent['type'];\n data: _StxMintEvent['stx_mint_event'];\n};\n\nexport type FtBurnEvent = {\n event: _FtBurnEvent['type'];\n data: _FtBurnEvent['ft_burn_event'];\n};\n\nexport type FtMintEvent = {\n event: _FtMintEvent['type'];\n data: _FtMintEvent['ft_mint_event'];\n};\n\nexport type FtTransferEvent = {\n event: _FtTransferEvent['type'];\n data: _FtTransferEvent['ft_transfer_event'];\n};\n\nexport type NftBurnEvent = {\n event: _NftBurnEvent['type'];\n data: _NftBurnEvent['nft_burn_event'];\n};\n\nexport type NftMintEvent = {\n event: _NftMintEvent['type'];\n data: _NftMintEvent['nft_mint_event'];\n};\n\nexport type NftTransferEvent = {\n event: _NftTransferEvent['type'];\n data: _NftTransferEvent['nft_transfer_event'];\n};\n\nexport type CoreNodeEvent =\n | SmartContractEvent\n | StxTransferEvent\n | StxMintEvent\n | StxBurnEvent\n | StxLockEvent\n | FtTransferEvent\n | FtMintEvent\n | FtBurnEvent\n | NftTransferEvent\n | NftMintEvent\n | NftBurnEvent;\n\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.ContractEvent\n): SmartContractEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxTransferEvent\n): StxTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxMintEvent\n): StxMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxBurnEvent\n): StxBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxLockEvent\n): StxLockEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftTransferEvent\n): NftTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftMintEvent\n): NftMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftBurnEvent\n): NftBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtTransferEvent\n): FtTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtMintEvent\n): FtMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtBurnEvent\n): FtBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType\n): CoreNodeEvent[] {\n const typeString =\n type === CoreNodeEventType.ContractEvent ? 'print_event' : type;\n return events.filter((event) => event.event === typeString);\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n type ContractCallTyped,\n type ErrType,\n type OkType,\n type TypedAbiMap,\n type TypedAbiVariable,\n type UnknownArgs,\n cvToValue,\n mapFactory,\n type Response,\n cvToString,\n type ResponseOk,\n type ResponseErr,\n isResponse,\n} from '@clarigen/core';\nimport type { ContractCallTransaction } from '@clarigen/core/deployment';\nimport type { ParsedTransactionResult } from '@stacks/clarinet-sdk';\nimport { validateResponse } from './utils';\nimport type { CoreNodeEvent } from './events';\nimport { stringify } from 'yaml';\nimport type { ClarityValue } from '@stacks/transactions';\n// biome-ignore lint/performance/noBarrelFile: ignored using `--suppress`\nexport * from './events';\nexport * from './utils';\n\nexport type TransactionResult<R> = Omit<ParsedTransactionResult, 'events'> & {\n value: R;\n events: CoreNodeEvent[];\n};\n\nexport type AnyResponse = Response<unknown, unknown>;\n\nfunction logTxCall({\n contractId,\n sender,\n args,\n functionName,\n}: {\n contractId: string;\n sender: string;\n args: ClarityValue[];\n functionName: string;\n}) {\n if (process.env.LOG_TX_CALLS) {\n const contractCallTx: ContractCallTransaction = {\n 'contract-call': {\n 'contract-id': contractId,\n 'expected-sender': sender,\n parameters: args.map((arg) => cvToString(arg, 'hex')),\n method: functionName,\n cost: '10000000',\n },\n };\n console.log('------------ DEPLOYMENT TX ------------');\n console.log(stringify(contractCallTx, { indent: 2 }));\n console.log('------------ END DEPLOYMENT TX ------------');\n }\n}\n\nexport function txOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<OkType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function txErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<ErrType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function tx<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<R> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nfunction getTxReceipt<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): ParsedTransactionResult {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n let receipt: ParsedTransactionResult;\n if (tx.function.access === 'private') {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPrivateFn(contractId, tx.function.name, args, sender);\n } else {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n }\n logTxCall({ contractId, sender, args, functionName: tx.function.name });\n return receipt;\n}\n\nexport function ro<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<R> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rov<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): R {\n return ro(tx, sender).value;\n}\n\nexport function roOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<OkType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): OkType<R> {\n return roOk(tx, sender).value;\n}\n\nexport function roErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<ErrType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): ErrType<R> {\n return roErr(tx, sender).value;\n}\n\nexport function mapGet<Key, Val>(\n contractId: string,\n map: TypedAbiMap<Key, Val>,\n key: Key\n) {\n const payload = mapFactory(map, key);\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getMapEntry(\n contractId,\n payload.map.name,\n payload.keyCV\n );\n return cvToValue<Val | null>(result);\n}\n\nexport function varGet<T>(contractId: string, variable: TypedAbiVariable<T>) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getDataVar(contractId, variable.name);\n return cvToValue<T>(result);\n}\n\n// Helper export for previous Deno-based tests\nexport const chain = {\n txOk,\n txErr,\n tx,\n ro,\n roOk,\n roErr,\n rov,\n rovOk,\n rovErr,\n};\n\nexport async function makeNewSession(cwd?: string, manifestPath?: string) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n await simnet.initSession(\n cwd ?? process.cwd(),\n manifestPath ?? './Clarinet.toml'\n );\n}\n\nexport function assertOk<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseOk<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (!response.isOk) {\n throw new Error(\n `Expected response to be OK, but got ERR ${response.value}`\n );\n }\n}\n\nexport function assertErr<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseErr<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (response.isOk) {\n throw new Error('Expected response to be ERR, but got OK');\n }\n}\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,164 @@
1
- import{CoreNodeEventType as e,cvToString as t,cvToValue as n,extractErrors as r,isResponse as i,mapFactory as a}from"@clarigen/core";import{stringify as o}from"yaml";function s(e,t,a){let o=n(e,!0);if(!i(o)&&t!==void 0)throw Error("Expected response when calling function, but not a response. Try using just `rov`");if(i(o)&&t!==void 0){let e=o,n=e.value;if(t&&!e.isOk){let e=``;if(a){let t=Object.entries(r(a)).find(([e,t])=>t===n);t&&(e=` (${t[0]})`)}throw Error(`Tx result failed. Expected OK, received ERR ${String(n)}${e}.`)}if(t===!1&&e.isOk)throw Error(`Tx result failed. Expected ERR, received OK ${String(n)}.`);return n}return o}function c(t,n){let r=n===e.ContractEvent?`print_event`:n;return t.filter(e=>e.event===r)}function l({contractId:e,sender:n,args:r,functionName:i}){if(process.env.LOG_TX_CALLS){let a={"contract-call":{"contract-id":e,"expected-sender":n,parameters:r.map(e=>t(e,`hex`)),method:i,cost:`10000000`}};console.log(`------------ DEPLOYMENT TX ------------`),console.log(o(a,{indent:2})),console.log(`------------ END DEPLOYMENT TX ------------`)}}function u(e,t){let n=p(e,t),r=s(n.result,!0,e.contractAbi);return{...n,events:n.events,value:r}}function d(e,t){let n=p(e,t),r=s(n.result,!1,e.contractAbi);return{...n,events:n.events,value:r}}function f(e,t){let n=p(e,t),r=s(n.result,void 0,e.contractAbi);return{...n,events:n.events,value:r}}function p(e,t){let n=e.functionArgs,r=`${e.contractAddress}.${e.contractName}`,i;return i=e.function.access===`private`?simnet.callPrivateFn(r,e.function.name,n,t):simnet.callPublicFn(r,e.function.name,n,t),l({contractId:r,sender:t,args:n,functionName:e.function.name}),i}function m(e,t){let n=e.functionArgs,r=`${e.contractAddress}.${e.contractName}`,i=simnet.callReadOnlyFn(r,e.function.name,n,t??e.contractAddress),a=s(i.result,void 0,e.contractAbi);return{...i,events:i.events,value:a}}function h(e,t){return m(e,t).value}function g(e,t){let n=e.functionArgs,r=`${e.contractAddress}.${e.contractName}`,i=simnet.callReadOnlyFn(r,e.function.name,n,t??e.contractAddress),a=s(i.result,!0,e.contractAbi);return{...i,events:i.events,value:a}}function _(e,t){return g(e,t).value}function v(e,t){let n=e.functionArgs,r=`${e.contractAddress}.${e.contractName}`,i=simnet.callReadOnlyFn(r,e.function.name,n,t??e.contractAddress),a=s(i.result,!1,e.contractAbi);return{...i,events:i.events,value:a}}function y(e,t){return v(e,t).value}function b(e,t,r){let i=a(t,r);return n(simnet.getMapEntry(e,i.map.name,i.keyCV))}function x(e,t){return n(simnet.getDataVar(e,t.name))}const S={txOk:u,txErr:d,tx:f,ro:m,roOk:g,roErr:v,rov:h,rovOk:_,rovErr:y};async function C(e,t){await simnet.initSession(e??process.cwd(),t??`./Clarinet.toml`)}function w(e){if(!i(e))throw Error(`Expected response, but got something else`);if(!e.isOk)throw Error(`Expected response to be OK, but got ERR ${e.value}`)}function T(e){if(!i(e))throw Error(`Expected response, but got something else`);if(e.isOk)throw Error(`Expected response to be ERR, but got OK`)}export{T as assertErr,w as assertOk,S as chain,c as filterEvents,C as makeNewSession,b as mapGet,m as ro,v as roErr,g as roOk,h as rov,y as rovErr,_ as rovOk,f as tx,d as txErr,u as txOk,s as validateResponse,x as varGet};
1
+ import { CoreNodeEventType, cvToString, cvToValue, extractErrors, isResponse, mapFactory } from "@clarigen/core";
2
+ import { stringify } from "yaml";
3
+
4
+ //#region src/utils.ts
5
+ function validateResponse(result, expectOk, contractAbi) {
6
+ const value = cvToValue(result, true);
7
+ if (!isResponse(value) && typeof expectOk !== "undefined") throw new Error("Expected response when calling function, but not a response. Try using just `rov`");
8
+ if (isResponse(value) && typeof expectOk !== "undefined") {
9
+ const response = value;
10
+ const inner = response.value;
11
+ if (expectOk && !response.isOk) {
12
+ let errorCode = "";
13
+ if (contractAbi) {
14
+ const match = Object.entries(extractErrors(contractAbi)).find(([_key, code]) => code === inner);
15
+ if (match) errorCode = ` (${match[0]})`;
16
+ }
17
+ throw new Error(`Tx result failed. Expected OK, received ERR ${String(inner)}${errorCode}.`);
18
+ }
19
+ if (expectOk === false && response.isOk) throw new Error(`Tx result failed. Expected ERR, received OK ${String(inner)}.`);
20
+ return inner;
21
+ }
22
+ return value;
23
+ }
24
+
25
+ //#endregion
26
+ //#region src/events.ts
27
+ function filterEvents(events, type) {
28
+ const typeString = type === CoreNodeEventType.ContractEvent ? "print_event" : type;
29
+ return events.filter((event) => event.event === typeString);
30
+ }
31
+
32
+ //#endregion
33
+ //#region src/index.ts
34
+ /** biome-ignore-all lint/style/useTrimStartEnd: suppressed */
35
+ function logTxCall({ contractId, sender, args, functionName }) {
36
+ if (process.env.LOG_TX_CALLS) {
37
+ const contractCallTx = { "contract-call": {
38
+ "contract-id": contractId,
39
+ "expected-sender": sender,
40
+ parameters: args.map((arg) => cvToString(arg, "hex")),
41
+ method: functionName,
42
+ cost: "10000000"
43
+ } };
44
+ console.log("------------ DEPLOYMENT TX ------------");
45
+ console.log(stringify(contractCallTx, { indent: 2 }));
46
+ console.log("------------ END DEPLOYMENT TX ------------");
47
+ }
48
+ }
49
+ function txOk(tx$1, sender) {
50
+ const receipt = getTxReceipt(tx$1, sender);
51
+ const value = validateResponse(receipt.result, true, tx$1.contractAbi);
52
+ return {
53
+ ...receipt,
54
+ events: receipt.events,
55
+ value
56
+ };
57
+ }
58
+ function txErr(tx$1, sender) {
59
+ const receipt = getTxReceipt(tx$1, sender);
60
+ const value = validateResponse(receipt.result, false, tx$1.contractAbi);
61
+ return {
62
+ ...receipt,
63
+ events: receipt.events,
64
+ value
65
+ };
66
+ }
67
+ function tx(tx$1, sender) {
68
+ const receipt = getTxReceipt(tx$1, sender);
69
+ const value = validateResponse(receipt.result, void 0, tx$1.contractAbi);
70
+ return {
71
+ ...receipt,
72
+ events: receipt.events,
73
+ value
74
+ };
75
+ }
76
+ function getTxReceipt(tx$1, sender) {
77
+ const args = tx$1.functionArgs;
78
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
79
+ let receipt;
80
+ if (tx$1.function.access === "private") receipt = simnet.callPrivateFn(contractId, tx$1.function.name, args, sender);
81
+ else receipt = simnet.callPublicFn(contractId, tx$1.function.name, args, sender);
82
+ logTxCall({
83
+ contractId,
84
+ sender,
85
+ args,
86
+ functionName: tx$1.function.name
87
+ });
88
+ return receipt;
89
+ }
90
+ function ro(tx$1, sender) {
91
+ const args = tx$1.functionArgs;
92
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
93
+ const receipt = simnet.callReadOnlyFn(contractId, tx$1.function.name, args, sender ?? tx$1.contractAddress);
94
+ const value = validateResponse(receipt.result, void 0, tx$1.contractAbi);
95
+ return {
96
+ ...receipt,
97
+ events: receipt.events,
98
+ value
99
+ };
100
+ }
101
+ function rov(tx$1, sender) {
102
+ return ro(tx$1, sender).value;
103
+ }
104
+ function roOk(tx$1, sender) {
105
+ const args = tx$1.functionArgs;
106
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
107
+ const receipt = simnet.callReadOnlyFn(contractId, tx$1.function.name, args, sender ?? tx$1.contractAddress);
108
+ const value = validateResponse(receipt.result, true, tx$1.contractAbi);
109
+ return {
110
+ ...receipt,
111
+ events: receipt.events,
112
+ value
113
+ };
114
+ }
115
+ function rovOk(tx$1, sender) {
116
+ return roOk(tx$1, sender).value;
117
+ }
118
+ function roErr(tx$1, sender) {
119
+ const args = tx$1.functionArgs;
120
+ const contractId = `${tx$1.contractAddress}.${tx$1.contractName}`;
121
+ const receipt = simnet.callReadOnlyFn(contractId, tx$1.function.name, args, sender ?? tx$1.contractAddress);
122
+ const value = validateResponse(receipt.result, false, tx$1.contractAbi);
123
+ return {
124
+ ...receipt,
125
+ events: receipt.events,
126
+ value
127
+ };
128
+ }
129
+ function rovErr(tx$1, sender) {
130
+ return roErr(tx$1, sender).value;
131
+ }
132
+ function mapGet(contractId, map, key) {
133
+ const payload = mapFactory(map, key);
134
+ return cvToValue(simnet.getMapEntry(contractId, payload.map.name, payload.keyCV));
135
+ }
136
+ function varGet(contractId, variable) {
137
+ return cvToValue(simnet.getDataVar(contractId, variable.name));
138
+ }
139
+ const chain = {
140
+ txOk,
141
+ txErr,
142
+ tx,
143
+ ro,
144
+ roOk,
145
+ roErr,
146
+ rov,
147
+ rovOk,
148
+ rovErr
149
+ };
150
+ async function makeNewSession(cwd, manifestPath) {
151
+ await simnet.initSession(cwd ?? process.cwd(), manifestPath ?? "./Clarinet.toml");
152
+ }
153
+ function assertOk(response) {
154
+ if (!isResponse(response)) throw new Error("Expected response, but got something else");
155
+ if (!response.isOk) throw new Error(`Expected response to be OK, but got ERR ${response.value}`);
156
+ }
157
+ function assertErr(response) {
158
+ if (!isResponse(response)) throw new Error("Expected response, but got something else");
159
+ if (response.isOk) throw new Error("Expected response to be ERR, but got OK");
160
+ }
161
+
162
+ //#endregion
163
+ export { assertErr, assertOk, chain, filterEvents, makeNewSession, mapGet, ro, roErr, roOk, rov, rovErr, rovOk, tx, txErr, txOk, validateResponse, varGet };
2
164
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["contractCallTx: ContractCallTransaction","tx","receipt: ParsedTransactionResult"],"sources":["../src/utils.ts","../src/events.ts","../src/index.ts"],"sourcesContent":["import {\n type Response,\n type TypedAbi,\n cvToValue,\n extractErrors,\n isResponse,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: allowed\nexport function validateResponse<T>(\n result: ClarityValue,\n expectOk?: boolean,\n contractAbi?: TypedAbi\n): T {\n const value = cvToValue<Response<T, T> | T>(result, true);\n\n if (!isResponse(value) && typeof expectOk !== 'undefined') {\n throw new Error(\n 'Expected response when calling function, but not a response. Try using just `rov`'\n );\n }\n\n if (isResponse(value) && typeof expectOk !== 'undefined') {\n const response = value;\n const inner = response.value;\n if (expectOk && !response.isOk) {\n // try and find a matching error code\n let errorCode = '';\n if (contractAbi) {\n const match = Object.entries(extractErrors(contractAbi)).find(\n ([_key, code]) => code === inner\n );\n if (match) {\n errorCode = ` (${match[0]})`;\n }\n }\n throw new Error(\n `Tx result failed. Expected OK, received ERR ${String(inner)}${errorCode}.`\n );\n }\n if (expectOk === false && response.isOk) {\n throw new Error(\n `Tx result failed. Expected ERR, received OK ${String(inner)}.`\n );\n }\n return inner;\n }\n return value as T;\n}\n","import {\n CoreNodeEventType,\n type SmartContractEvent as _SmartContractEvent,\n type StxTransferEvent as _StxTransferEvent,\n type StxBurnEvent as _StxBurnEvent,\n type StxMintEvent as _StxMintEvent,\n type StxLockEvent as _StxLockEvent,\n type FtBurnEvent as _FtBurnEvent,\n type FtMintEvent as _FtMintEvent,\n type FtTransferEvent as _FtTransferEvent,\n type NftBurnEvent as _NftBurnEvent,\n type NftMintEvent as _NftMintEvent,\n type NftTransferEvent as _NftTransferEvent,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\nexport type SmartContractEvent = {\n event: _SmartContractEvent['type'];\n data: Omit<_SmartContractEvent['contract_event'], 'value'> & {\n value: ClarityValue;\n };\n};\n\nexport type StxTransferEvent = {\n event: _StxTransferEvent['type'];\n data: _StxTransferEvent['stx_transfer_event'];\n};\n\nexport type StxBurnEvent = {\n event: _StxBurnEvent['type'];\n data: _StxBurnEvent['stx_burn_event'];\n};\n\nexport type StxLockEvent = {\n event: _StxLockEvent['type'];\n data: _StxLockEvent['stx_lock_event'];\n};\n\nexport type StxMintEvent = {\n event: _StxMintEvent['type'];\n data: _StxMintEvent['stx_mint_event'];\n};\n\nexport type FtBurnEvent = {\n event: _FtBurnEvent['type'];\n data: _FtBurnEvent['ft_burn_event'];\n};\n\nexport type FtMintEvent = {\n event: _FtMintEvent['type'];\n data: _FtMintEvent['ft_mint_event'];\n};\n\nexport type FtTransferEvent = {\n event: _FtTransferEvent['type'];\n data: _FtTransferEvent['ft_transfer_event'];\n};\n\nexport type NftBurnEvent = {\n event: _NftBurnEvent['type'];\n data: _NftBurnEvent['nft_burn_event'];\n};\n\nexport type NftMintEvent = {\n event: _NftMintEvent['type'];\n data: _NftMintEvent['nft_mint_event'];\n};\n\nexport type NftTransferEvent = {\n event: _NftTransferEvent['type'];\n data: _NftTransferEvent['nft_transfer_event'];\n};\n\nexport type CoreNodeEvent =\n | SmartContractEvent\n | StxTransferEvent\n | StxMintEvent\n | StxBurnEvent\n | StxLockEvent\n | FtTransferEvent\n | FtMintEvent\n | FtBurnEvent\n | NftTransferEvent\n | NftMintEvent\n | NftBurnEvent;\n\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.ContractEvent\n): SmartContractEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxTransferEvent\n): StxTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxMintEvent\n): StxMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxBurnEvent\n): StxBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxLockEvent\n): StxLockEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftTransferEvent\n): NftTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftMintEvent\n): NftMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftBurnEvent\n): NftBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtTransferEvent\n): FtTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtMintEvent\n): FtMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtBurnEvent\n): FtBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType\n): CoreNodeEvent[] {\n const typeString =\n type === CoreNodeEventType.ContractEvent ? 'print_event' : type;\n return events.filter((event) => event.event === typeString);\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n type ContractCallTyped,\n type ErrType,\n type OkType,\n type TypedAbiMap,\n type TypedAbiVariable,\n type UnknownArgs,\n cvToValue,\n mapFactory,\n type Response,\n cvToString,\n type ResponseOk,\n type ResponseErr,\n isResponse,\n} from '@clarigen/core';\nimport type { ContractCallTransaction } from '@clarigen/core/deployment';\nimport type { ParsedTransactionResult } from '@stacks/clarinet-sdk';\nimport { validateResponse } from './utils';\nimport type { CoreNodeEvent } from './events';\nimport { stringify } from 'yaml';\nimport type { ClarityValue } from '@stacks/transactions';\n// biome-ignore lint/performance/noBarrelFile: ignored using `--suppress`\nexport * from './events';\nexport * from './utils';\n\nexport type TransactionResult<R> = Omit<ParsedTransactionResult, 'events'> & {\n value: R;\n events: CoreNodeEvent[];\n};\n\nexport type AnyResponse = Response<unknown, unknown>;\n\nfunction logTxCall({\n contractId,\n sender,\n args,\n functionName,\n}: {\n contractId: string;\n sender: string;\n args: ClarityValue[];\n functionName: string;\n}) {\n if (process.env.LOG_TX_CALLS) {\n const contractCallTx: ContractCallTransaction = {\n 'contract-call': {\n 'contract-id': contractId,\n 'expected-sender': sender,\n parameters: args.map((arg) => cvToString(arg, 'hex')),\n method: functionName,\n cost: '10000000',\n },\n };\n console.log('------------ DEPLOYMENT TX ------------');\n console.log(stringify(contractCallTx, { indent: 2 }));\n console.log('------------ END DEPLOYMENT TX ------------');\n }\n}\n\nexport function txOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<OkType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function txErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<ErrType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function tx<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<R> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nfunction getTxReceipt<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): ParsedTransactionResult {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n let receipt: ParsedTransactionResult;\n if (tx.function.access === 'private') {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPrivateFn(contractId, tx.function.name, args, sender);\n } else {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n }\n logTxCall({ contractId, sender, args, functionName: tx.function.name });\n return receipt;\n}\n\nexport function ro<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<R> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rov<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): R {\n return ro(tx, sender).value;\n}\n\nexport function roOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<OkType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): OkType<R> {\n return roOk(tx, sender).value;\n}\n\nexport function roErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<ErrType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): ErrType<R> {\n return roErr(tx, sender).value;\n}\n\nexport function mapGet<Key, Val>(\n contractId: string,\n map: TypedAbiMap<Key, Val>,\n key: Key\n) {\n const payload = mapFactory(map, key);\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getMapEntry(\n contractId,\n payload.map.name,\n payload.keyCV\n );\n return cvToValue<Val | null>(result);\n}\n\nexport function varGet<T>(contractId: string, variable: TypedAbiVariable<T>) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getDataVar(contractId, variable.name);\n return cvToValue<T>(result);\n}\n\n// Helper export for previous Deno-based tests\nexport const chain = {\n txOk,\n txErr,\n tx,\n ro,\n roOk,\n roErr,\n rov,\n rovOk,\n rovErr,\n};\n\nexport async function makeNewSession(cwd?: string, manifestPath?: string) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n await simnet.initSession(\n cwd ?? process.cwd(),\n manifestPath ?? './Clarinet.toml'\n );\n}\n\nexport function assertOk<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseOk<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (!response.isOk) {\n throw new Error(\n `Expected response to be OK, but got ERR ${response.value}`\n );\n }\n}\n\nexport function assertErr<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseErr<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (response.isOk) {\n throw new Error('Expected response to be ERR, but got OK');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["contractCallTx: ContractCallTransaction","tx","receipt: ParsedTransactionResult"],"sources":["../src/utils.ts","../src/events.ts","../src/index.ts"],"sourcesContent":["import {\n type Response,\n type TypedAbi,\n cvToValue,\n extractErrors,\n isResponse,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: allowed\nexport function validateResponse<T>(\n result: ClarityValue,\n expectOk?: boolean,\n contractAbi?: TypedAbi\n): T {\n const value = cvToValue<Response<T, T> | T>(result, true);\n\n if (!isResponse(value) && typeof expectOk !== 'undefined') {\n throw new Error(\n 'Expected response when calling function, but not a response. Try using just `rov`'\n );\n }\n\n if (isResponse(value) && typeof expectOk !== 'undefined') {\n const response = value;\n const inner = response.value;\n if (expectOk && !response.isOk) {\n // try and find a matching error code\n let errorCode = '';\n if (contractAbi) {\n const match = Object.entries(extractErrors(contractAbi)).find(\n ([_key, code]) => code === inner\n );\n if (match) {\n errorCode = ` (${match[0]})`;\n }\n }\n throw new Error(\n `Tx result failed. Expected OK, received ERR ${String(inner)}${errorCode}.`\n );\n }\n if (expectOk === false && response.isOk) {\n throw new Error(\n `Tx result failed. Expected ERR, received OK ${String(inner)}.`\n );\n }\n return inner;\n }\n return value as T;\n}\n","import {\n CoreNodeEventType,\n type SmartContractEvent as _SmartContractEvent,\n type StxTransferEvent as _StxTransferEvent,\n type StxBurnEvent as _StxBurnEvent,\n type StxMintEvent as _StxMintEvent,\n type StxLockEvent as _StxLockEvent,\n type FtBurnEvent as _FtBurnEvent,\n type FtMintEvent as _FtMintEvent,\n type FtTransferEvent as _FtTransferEvent,\n type NftBurnEvent as _NftBurnEvent,\n type NftMintEvent as _NftMintEvent,\n type NftTransferEvent as _NftTransferEvent,\n} from '@clarigen/core';\nimport type { ClarityValue } from '@stacks/transactions';\n\nexport type SmartContractEvent = {\n event: _SmartContractEvent['type'];\n data: Omit<_SmartContractEvent['contract_event'], 'value'> & {\n value: ClarityValue;\n };\n};\n\nexport type StxTransferEvent = {\n event: _StxTransferEvent['type'];\n data: _StxTransferEvent['stx_transfer_event'];\n};\n\nexport type StxBurnEvent = {\n event: _StxBurnEvent['type'];\n data: _StxBurnEvent['stx_burn_event'];\n};\n\nexport type StxLockEvent = {\n event: _StxLockEvent['type'];\n data: _StxLockEvent['stx_lock_event'];\n};\n\nexport type StxMintEvent = {\n event: _StxMintEvent['type'];\n data: _StxMintEvent['stx_mint_event'];\n};\n\nexport type FtBurnEvent = {\n event: _FtBurnEvent['type'];\n data: _FtBurnEvent['ft_burn_event'];\n};\n\nexport type FtMintEvent = {\n event: _FtMintEvent['type'];\n data: _FtMintEvent['ft_mint_event'];\n};\n\nexport type FtTransferEvent = {\n event: _FtTransferEvent['type'];\n data: _FtTransferEvent['ft_transfer_event'];\n};\n\nexport type NftBurnEvent = {\n event: _NftBurnEvent['type'];\n data: _NftBurnEvent['nft_burn_event'];\n};\n\nexport type NftMintEvent = {\n event: _NftMintEvent['type'];\n data: _NftMintEvent['nft_mint_event'];\n};\n\nexport type NftTransferEvent = {\n event: _NftTransferEvent['type'];\n data: _NftTransferEvent['nft_transfer_event'];\n};\n\nexport type CoreNodeEvent =\n | SmartContractEvent\n | StxTransferEvent\n | StxMintEvent\n | StxBurnEvent\n | StxLockEvent\n | FtTransferEvent\n | FtMintEvent\n | FtBurnEvent\n | NftTransferEvent\n | NftMintEvent\n | NftBurnEvent;\n\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.ContractEvent\n): SmartContractEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxTransferEvent\n): StxTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxMintEvent\n): StxMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxBurnEvent\n): StxBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxLockEvent\n): StxLockEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftTransferEvent\n): NftTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftMintEvent\n): NftMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftBurnEvent\n): NftBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtTransferEvent\n): FtTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtMintEvent\n): FtMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtBurnEvent\n): FtBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType\n): CoreNodeEvent[] {\n const typeString =\n type === CoreNodeEventType.ContractEvent ? 'print_event' : type;\n return events.filter((event) => event.event === typeString);\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n type ContractCallTyped,\n type ErrType,\n type OkType,\n type TypedAbiMap,\n type TypedAbiVariable,\n type UnknownArgs,\n cvToValue,\n mapFactory,\n type Response,\n cvToString,\n type ResponseOk,\n type ResponseErr,\n isResponse,\n} from '@clarigen/core';\nimport type { ContractCallTransaction } from '@clarigen/core/deployment';\nimport type { ParsedTransactionResult } from '@stacks/clarinet-sdk';\nimport { validateResponse } from './utils';\nimport type { CoreNodeEvent } from './events';\nimport { stringify } from 'yaml';\nimport type { ClarityValue } from '@stacks/transactions';\n// biome-ignore lint/performance/noBarrelFile: ignored using `--suppress`\nexport * from './events';\nexport * from './utils';\n\nexport type TransactionResult<R> = Omit<ParsedTransactionResult, 'events'> & {\n value: R;\n events: CoreNodeEvent[];\n};\n\nexport type AnyResponse = Response<unknown, unknown>;\n\nfunction logTxCall({\n contractId,\n sender,\n args,\n functionName,\n}: {\n contractId: string;\n sender: string;\n args: ClarityValue[];\n functionName: string;\n}) {\n if (process.env.LOG_TX_CALLS) {\n const contractCallTx: ContractCallTransaction = {\n 'contract-call': {\n 'contract-id': contractId,\n 'expected-sender': sender,\n parameters: args.map((arg) => cvToString(arg, 'hex')),\n method: functionName,\n cost: '10000000',\n },\n };\n console.log('------------ DEPLOYMENT TX ------------');\n console.log(stringify(contractCallTx, { indent: 2 }));\n console.log('------------ END DEPLOYMENT TX ------------');\n }\n}\n\nexport function txOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<OkType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function txErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<ErrType<R>> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function tx<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<R> {\n const receipt = getTxReceipt(tx, sender);\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nfunction getTxReceipt<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender: string\n): ParsedTransactionResult {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n let receipt: ParsedTransactionResult;\n if (tx.function.access === 'private') {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPrivateFn(contractId, tx.function.name, args, sender);\n } else {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n }\n logTxCall({ contractId, sender, args, functionName: tx.function.name });\n return receipt;\n}\n\nexport function ro<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<R> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<R>(receipt.result, undefined, tx.contractAbi);\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rov<A extends UnknownArgs, R>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): R {\n return ro(tx, sender).value;\n}\n\nexport function roOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<OkType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<OkType<R>>(\n receipt.result,\n true,\n tx.contractAbi\n );\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovOk<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): OkType<R> {\n return roOk(tx, sender).value;\n}\n\nexport function roErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<ErrType<R>> {\n const args = tx.functionArgs;\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<ErrType<R>>(\n receipt.result,\n false,\n tx.contractAbi\n );\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n\n // return value;\n}\n\nexport function rovErr<A extends UnknownArgs, R extends AnyResponse>(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n tx: ContractCallTyped<A, R>,\n sender?: string\n): ErrType<R> {\n return roErr(tx, sender).value;\n}\n\nexport function mapGet<Key, Val>(\n contractId: string,\n map: TypedAbiMap<Key, Val>,\n key: Key\n) {\n const payload = mapFactory(map, key);\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getMapEntry(\n contractId,\n payload.map.name,\n payload.keyCV\n );\n return cvToValue<Val | null>(result);\n}\n\nexport function varGet<T>(contractId: string, variable: TypedAbiVariable<T>) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n const result = simnet.getDataVar(contractId, variable.name);\n return cvToValue<T>(result);\n}\n\n// Helper export for previous Deno-based tests\nexport const chain = {\n txOk,\n txErr,\n tx,\n ro,\n roOk,\n roErr,\n rov,\n rovOk,\n rovErr,\n};\n\nexport async function makeNewSession(cwd?: string, manifestPath?: string) {\n // biome-ignore lint/correctness/noUndeclaredVariables: ignored using `--suppress`\n await simnet.initSession(\n cwd ?? process.cwd(),\n manifestPath ?? './Clarinet.toml'\n );\n}\n\nexport function assertOk<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseOk<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (!response.isOk) {\n throw new Error(\n `Expected response to be OK, but got ERR ${response.value}`\n );\n }\n}\n\nexport function assertErr<T extends ResponseOk<O, E> | ResponseErr<O, E>, O, E>(\n response: T | unknown\n): asserts response is ResponseErr<O, E> {\n if (!isResponse(response)) {\n throw new Error('Expected response, but got something else');\n }\n if (response.isOk) {\n throw new Error('Expected response to be ERR, but got OK');\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.1.4",
2
+ "version": "4.1.5",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.cts",
5
5
  "main": "./dist/index.cjs",
@@ -38,7 +38,7 @@
38
38
  "@stacks/clarinet-sdk-wasm": "^3.9.2"
39
39
  },
40
40
  "dependencies": {
41
- "@clarigen/core": "4.1.4",
41
+ "@clarigen/core": "4.1.5",
42
42
  "@stacks/transactions": "7.2.0",
43
43
  "yaml": "^2.4.1"
44
44
  },