@clarigen/test 1.0.4 → 1.0.16-alpha.1

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.d.ts CHANGED
@@ -1,94 +1,92 @@
1
- import { CoreNodeEvent, ResultAssets, Project, AllContracts, DeploymentsForContracts, ProjectFactory, Contracts, ContractFactory, ContractCall, Response, ContractCalls, ContractInstances, ResponseOk, ResponseErr } from '@clarigen/core';
2
- import { Costs, ClarinetAccount, NativeClarityBinProvider, ClarinetAccounts } from '@clarigen/native-bin';
3
- export { Allocation, createClarityBin, evalJson, executeJson } from '@clarigen/native-bin';
4
- import { ClarityValue, ResponseCV } from 'micro-stacks/clarity';
5
- import { StacksNetworkVersion } from 'micro-stacks/crypto';
6
- import { IntegerType } from 'micro-stacks/common';
1
+ import { SmartContractEvent as SmartContractEvent$1, StxTransferEvent as StxTransferEvent$1, StxBurnEvent as StxBurnEvent$1, StxLockEvent as StxLockEvent$1, StxMintEvent as StxMintEvent$1, FtBurnEvent as FtBurnEvent$1, FtMintEvent as FtMintEvent$1, FtTransferEvent as FtTransferEvent$1, NftBurnEvent as NftBurnEvent$1, NftMintEvent as NftMintEvent$1, NftTransferEvent as NftTransferEvent$1, CoreNodeEventType, UnknownArgs, ContractCallTyped, OkType, ErrType, TypedAbiMap, TypedAbiVariable } from '@clarigen/core';
2
+ import { Simnet, ParsedTransactionResult } from '@hirosystems/clarinet-sdk';
7
3
 
8
- interface ReadOnlyResult<T> {
9
- value: T;
10
- clarityValue: ClarityValue;
11
- logs: string[];
12
- costs: Costs;
13
- }
14
- interface PublicResultBase<T> {
15
- value: T;
16
- response: ResponseCV;
17
- isOk: boolean;
18
- logs: string[];
19
- costs: Costs;
20
- }
21
- interface PublicResultErr<T> extends PublicResultBase<T> {
22
- value: T;
23
- isOk: false;
24
- }
25
- interface PublicResultOk<T> extends PublicResultBase<T> {
26
- value: T;
27
- isOk: true;
28
- events: CoreNodeEvent[];
29
- assets: ResultAssets;
30
- prints: any[];
31
- }
32
- declare type PublicResult<R> = PublicResultOk<R> | PublicResultErr<R>;
33
-
34
- declare type Account = Omit<ClarinetAccount, 'balance'> & {
35
- balance: number;
4
+ type SmartContractEvent = {
5
+ event: SmartContractEvent$1['type'];
6
+ data: SmartContractEvent$1['contract_event'];
36
7
  };
37
- interface Simnet {
38
- accounts: {
39
- deployer: Account;
40
- [key: string]: Account;
41
- };
42
- deployment: {
43
- identifier: string;
44
- file: string;
45
- }[];
46
- }
47
- declare function testFactory<P extends Project<C, D>, C extends AllContracts, D extends DeploymentsForContracts<C>>(project: P): ProjectFactory<P, 'simnet'>;
48
-
49
- declare type Provider = NativeClarityBinProvider | {
50
- clarityBin: NativeClarityBinProvider;
8
+ type StxTransferEvent = {
9
+ event: StxTransferEvent$1['type'];
10
+ data: StxTransferEvent$1['stx_transfer_event'];
51
11
  };
52
- declare function getBlockHeight(provider: Provider): Promise<bigint>;
53
- declare function mineBlocks(_blocks: IntegerType, provider: Provider): Promise<void>;
54
- declare function getStxBalance(provider: Provider, account: string): Promise<bigint>;
55
-
56
- declare function setupCoverage(dir: string): Promise<string>;
57
- declare function finishCoverage(provider: NativeClarityBinProvider, dir: string): Promise<void>;
58
-
59
- declare function makeRandomAddress(version?: StacksNetworkVersion): string;
12
+ type StxBurnEvent = {
13
+ event: StxBurnEvent$1['type'];
14
+ data: StxBurnEvent$1['stx_burn_event'];
15
+ };
16
+ type StxLockEvent = {
17
+ event: StxLockEvent$1['type'];
18
+ data: StxLockEvent$1['stx_lock_event'];
19
+ };
20
+ type StxMintEvent = {
21
+ event: StxMintEvent$1['type'];
22
+ data: StxMintEvent$1['stx_mint_event'];
23
+ };
24
+ type FtBurnEvent = {
25
+ event: FtBurnEvent$1['type'];
26
+ data: FtBurnEvent$1['ft_burn_event'];
27
+ };
28
+ type FtMintEvent = {
29
+ event: FtMintEvent$1['type'];
30
+ data: FtMintEvent$1['ft_mint_event'];
31
+ };
32
+ type FtTransferEvent = {
33
+ event: FtTransferEvent$1['type'];
34
+ data: FtTransferEvent$1['ft_transfer_event'];
35
+ };
36
+ type NftBurnEvent = {
37
+ event: NftBurnEvent$1['type'];
38
+ data: NftBurnEvent$1['nft_burn_event'];
39
+ };
40
+ type NftMintEvent = {
41
+ event: NftMintEvent$1['type'];
42
+ data: NftMintEvent$1['nft_mint_event'];
43
+ };
44
+ type NftTransferEvent = {
45
+ event: NftTransferEvent$1['type'];
46
+ data: NftTransferEvent$1['nft_transfer_event'];
47
+ };
48
+ type CoreNodeEvent = SmartContractEvent | StxTransferEvent | StxMintEvent | StxBurnEvent | StxLockEvent | FtTransferEvent | FtMintEvent | FtBurnEvent | NftTransferEvent | NftMintEvent | NftBurnEvent;
49
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.ContractEvent): SmartContractEvent[];
50
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxTransferEvent): StxTransferEvent[];
51
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxMintEvent): StxMintEvent[];
52
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxBurnEvent): StxBurnEvent[];
53
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxLockEvent): StxLockEvent[];
54
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftTransferEvent): NftTransferEvent[];
55
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftMintEvent): NftMintEvent[];
56
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftBurnEvent): NftBurnEvent[];
57
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtTransferEvent): FtTransferEvent[];
58
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtMintEvent): FtMintEvent[];
59
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtBurnEvent): FtBurnEvent[];
60
60
 
61
- interface FromContractsOptions {
62
- accounts?: ClarinetAccounts;
63
- clarityBin?: NativeClarityBinProvider;
64
- coverageFolder?: string;
65
- clarinetPath?: string;
66
- }
67
- interface FromContracts<T extends Contracts<any>> {
68
- deployed: ContractInstances<T>;
69
- provider: TestProvider;
70
- }
71
- declare type OkType<T> = T extends ResponseOk<infer Ok, unknown> ? Ok : never;
72
- declare type ErrType<T> = T extends ResponseErr<unknown, infer Err> ? Err : never;
73
- declare class TestProvider {
74
- clarityBin: NativeClarityBinProvider;
75
- coverageFolder?: string;
76
- constructor(clarityBin: NativeClarityBinProvider);
77
- static fromContracts<T extends Contracts<any>>(contracts: T, options?: FromContractsOptions): Promise<FromContracts<T>>;
78
- static fromProject(simnet: Simnet, options?: FromContractsOptions): Promise<TestProvider>;
79
- static fromFactory(contracts: ContractFactory<AllContracts>, options?: FromContractsOptions): Promise<TestProvider>;
80
- ro<T>(tx: ContractCall<T>): Promise<ReadOnlyResult<T>>;
81
- rov<T>(tx: ContractCall<T>): Promise<T>;
82
- roOk<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<ReadOnlyResult<OkType<R>>>;
83
- roErr<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<ReadOnlyResult<ErrType<R>>>;
84
- rovOk<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<OkType<R>>;
85
- rovErr<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<ErrType<R>>;
86
- tx<R extends Response<unknown, unknown>>(tx: ContractCall<R>, senderAddress: string): Promise<PublicResult<R>>;
87
- txOk<R extends Response<unknown, unknown>>(tx: ContractCall<R>, senderAddress: string): Promise<PublicResultOk<OkType<R>>>;
88
- txErr<R extends Response<unknown, unknown>>(tx: ContractCall<R>, senderAddress: string): Promise<PublicResultErr<ErrType<R>>>;
89
- evalCode<T>(code: string, contractAddress?: string): Promise<ReadOnlyResult<T>>;
90
- eval<T>(code: string, contractAddress?: string): Promise<T>;
91
- mapGet<T extends ContractCalls.Map<any, Val>, Val>(map: T): Promise<Val | null>;
61
+ declare global {
62
+ let simnet: Simnet;
92
63
  }
64
+ type TransactionResult<R> = Omit<ParsedTransactionResult, 'events'> & {
65
+ value: R;
66
+ events: CoreNodeEvent[];
67
+ };
68
+ declare function txOk<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender: string): TransactionResult<OkType<R>>;
69
+ declare function txErr<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender: string): TransactionResult<ErrType<R>>;
70
+ declare function tx<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender: string): TransactionResult<R>;
71
+ declare function ro<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender?: string): TransactionResult<R>;
72
+ declare function rov<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender?: string): R;
73
+ declare function roOk<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender?: string): TransactionResult<OkType<R>>;
74
+ declare function rovOk<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender?: string): OkType<R>;
75
+ declare function roErr<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender?: string): TransactionResult<ErrType<R>>;
76
+ declare function rovErr<A extends UnknownArgs, R>(tx: ContractCallTyped<A, R>, sender?: string): ErrType<R>;
77
+ declare function mapGet<Key, Val>(contractId: string, map: TypedAbiMap<Key, Val>, key: Key): Val | null;
78
+ declare function varGet<T>(contractId: string, variable: TypedAbiVariable<T>): T;
79
+ declare const chain: {
80
+ txOk: typeof txOk;
81
+ txErr: typeof txErr;
82
+ tx: typeof tx;
83
+ ro: typeof ro;
84
+ roOk: typeof roOk;
85
+ roErr: typeof roErr;
86
+ rov: typeof rov;
87
+ rovOk: typeof rovOk;
88
+ rovErr: typeof rovErr;
89
+ };
90
+ declare function makeNewSession(cwd?: string, manifestPath?: string): Promise<void>;
93
91
 
94
- export { PublicResultErr, PublicResultOk, ReadOnlyResult, Simnet, TestProvider, finishCoverage, getBlockHeight, getStxBalance, makeRandomAddress, mineBlocks, setupCoverage, testFactory };
92
+ export { CoreNodeEvent, FtBurnEvent, FtMintEvent, FtTransferEvent, NftBurnEvent, NftMintEvent, NftTransferEvent, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TransactionResult, chain, filterEvents, makeNewSession, mapGet, ro, roErr, roOk, rov, rovErr, rovOk, tx, txErr, txOk, varGet };
package/dist/index.js CHANGED
@@ -1,443 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
-
21
- // src/index.ts
22
-
23
-
24
-
25
- var _nativebin = require('@clarigen/native-bin');
26
-
27
-
28
-
29
-
30
- var _core = require('@clarigen/core');
31
-
32
- // src/utils/index.ts
33
- var _crypto = require('micro-stacks/crypto');
34
- var _transactions = require('micro-stacks/transactions');
35
-
36
- // src/utils/util-contract.ts
37
- var _clarity = require('micro-stacks/clarity');
38
- var _path = require('path');
39
-
40
-
41
- var _common = require('micro-stacks/common');
42
- var UTIL_CONTRACT_ID = "ST000000000000000000002AMW42H.clarigen-test-utils";
43
- async function deployUtilContract(clarityBin) {
44
- let contractFilePath = _path.join.call(void 0, __dirname, "..", "..", "contracts", "test-utils.clar");
45
- if (__dirname.includes("dist")) {
46
- contractFilePath = _path.join.call(void 0, __dirname, "..", "contracts", "test-utils.clar");
47
- }
48
- await _nativebin.deployContract.call(void 0, {
49
- contractIdentifier: UTIL_CONTRACT_ID,
50
- provider: clarityBin,
51
- contractFilePath
52
- });
53
- }
54
- function getBin(provider) {
55
- return "clarityBin" in provider ? provider.clarityBin : provider;
56
- }
57
- async function getBlockHeight(provider) {
58
- const bin = getBin(provider);
59
- const { output_serialized } = await _nativebin.evalJson.call(void 0, {
60
- contractAddress: UTIL_CONTRACT_ID,
61
- functionName: "get-block-height",
62
- args: [],
63
- provider: bin
64
- });
65
- const outputCV = _clarity.hexToCV.call(void 0, output_serialized);
66
- const blockHeight = _core.cvToValue.call(void 0, outputCV);
67
- return blockHeight;
68
- }
69
- async function mineBlock(provider) {
70
- const bin = getBin(provider);
71
- await _nativebin.executeJson.call(void 0, {
72
- contractAddress: UTIL_CONTRACT_ID,
73
- functionName: "mine-block",
74
- args: [],
75
- provider: bin,
76
- senderAddress: "ST000000000000000000002AMW42H"
77
- });
78
- }
79
- async function mineBlocks(_blocks, provider) {
80
- const blocks = _common.intToBigInt.call(void 0, _blocks);
81
- for (let index = 0; index < blocks; index++) {
82
- await mineBlock(provider);
83
- }
84
- }
85
- async function getStxBalance(provider, account) {
86
- const bin = getBin(provider);
87
- const { output_serialized } = await _nativebin.evalJson.call(void 0, {
88
- contractAddress: UTIL_CONTRACT_ID,
89
- functionName: "get-stx-balance",
90
- args: [`'${account}`],
91
- provider: bin
92
- });
93
- const outputCV = _clarity.hexToCV.call(void 0, output_serialized);
94
- const balance = _core.cvToValue.call(void 0, outputCV);
95
- return balance;
96
- }
97
-
98
- // src/utils/coverage.ts
99
- var _promises = require('fs/promises');
100
-
101
- async function setupCoverage(dir) {
102
- const dirName = _path.resolve.call(void 0, process.cwd(), "coverage");
103
- try {
104
- await _promises.mkdir.call(void 0, dirName);
105
- } catch (error) {
106
- }
107
- const files = await _promises.readdir.call(void 0, dirName);
108
- const removals = files.map((file) => {
109
- return _promises.unlink.call(void 0, _path.join.call(void 0, dirName, file));
110
- });
111
- await Promise.all(removals);
112
- return dirName;
113
- }
114
- async function finishCoverage(provider, dir) {
115
- const lcovFile = _path.join.call(void 0, dir, "clarigen.lcov");
116
- await provider.runCommand(["make_lcov", dir, lcovFile]);
117
- }
118
-
119
- // src/utils/index.ts
120
- function makeRandomAddress(version = _crypto.StacksNetworkVersion.testnetP2PKH) {
121
- const privateKey = _transactions.makeRandomPrivKey.call(void 0, );
122
- const publicKey = _transactions.getPublicKeyFromStacksPrivateKey.call(void 0, privateKey);
123
- const address = _crypto.publicKeyToStxAddress.call(void 0, publicKey.data, version);
124
- return address;
125
- }
126
-
127
- // src/utils/pure.ts
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
- function getPrints(events) {
147
- return _core.filterEvents.call(void 0, events, _core.CoreNodeEventType.ContractEvent).map((e) => {
148
- const hex = e.contract_event.raw_value;
149
- const cv = _clarity.hexToCV.call(void 0, hex);
150
- return _core.cvToValue.call(void 0, cv);
151
- });
152
- }
153
- function formatArguments(args) {
154
- return args.map((arg) => _core.cvToString.call(void 0, arg));
155
- }
156
- function getIdentifier(tx2) {
157
- return `${tx2.contractAddress}.${tx2.contractName}`;
158
- }
159
- function getLogs(stderr) {
160
- if (stderr === "")
161
- return [];
162
- return stderr.split("\n").map((line) => line.slice(62));
163
- }
164
- function makeEvalResult(result) {
165
- const resultCV = _clarity.hexToCV.call(void 0, result.output_serialized);
166
- const value = _core.cvToValue.call(void 0, resultCV, true);
167
- return {
168
- value,
169
- clarityValue: resultCV,
170
- logs: getLogs(result.stderr),
171
- costs: result.costs
172
- };
173
- }
174
- async function ro({
175
- tx: tx2,
176
- bin,
177
- coverageFolder
178
- }) {
179
- const result = await _nativebin.evalJson.call(void 0, {
180
- functionName: tx2.function.name,
181
- args: formatArguments(tx2.functionArgs),
182
- contractAddress: getIdentifier(tx2),
183
- provider: bin,
184
- coverageFolder
185
- });
186
- return makeEvalResult(result);
187
- }
188
- async function evalCode({
189
- contractAddress,
190
- code,
191
- bin,
192
- coverageFolder
193
- }) {
194
- const result = await _nativebin.evalRaw.call(void 0, {
195
- contractAddress,
196
- code,
197
- provider: bin,
198
- coverageFolder
199
- });
200
- return makeEvalResult(result);
201
- }
202
- async function tx({
203
- tx: tx2,
204
- senderAddress,
205
- bin,
206
- coverageFolder
207
- }) {
208
- const result = await _nativebin.executeJson.call(void 0, {
209
- contractAddress: getIdentifier(tx2),
210
- senderAddress,
211
- provider: bin,
212
- functionName: tx2.function.name,
213
- args: formatArguments(tx2.functionArgs),
214
- coverageFolder
215
- });
216
- const resultCV = _clarity.hexToCV.call(void 0, result.output_serialized);
217
- const value = _core.cvToValue.call(void 0, resultCV);
218
- const resp = result.success ? _core.ok.call(void 0, value) : _core.err.call(void 0, value);
219
- const baseReturn = {
220
- logs: getLogs(result.stderr),
221
- costs: result.costs,
222
- value: resp
223
- };
224
- if (result.success) {
225
- return __spreadProps(__spreadValues({}, baseReturn), {
226
- isOk: true,
227
- response: _clarity.responseOkCV.call(void 0, resultCV),
228
- assets: result.assets,
229
- events: result.events,
230
- prints: getPrints(result.events)
231
- });
232
- }
233
- return __spreadProps(__spreadValues({}, baseReturn), {
234
- isOk: false,
235
- response: _clarity.responseErrorCV.call(void 0, resultCV)
236
- });
237
- }
238
- async function mapGet({
239
- map,
240
- bin
241
- }) {
242
- const code = `(map-get? ${map.map.name} ${_core.cvToString.call(void 0, map.key)})`;
243
- const result = await evalCode({
244
- contractAddress: getIdentifier(map),
245
- code,
246
- bin
247
- });
248
- return result.value;
249
- }
250
-
251
- // src/index.ts
252
-
253
-
254
- // src/utils/test-factory.ts
255
-
256
-
257
-
258
- function testFactory(project) {
259
- return _core.projectFactory.call(void 0, project, "simnet");
260
- }
261
-
262
- // src/index.ts
263
-
264
- var TestProvider = class {
265
- constructor(clarityBin) {
266
- this.clarityBin = clarityBin;
267
- }
268
- static async fromContracts(contracts, options = {}) {
269
- const clarityBin = options.clarityBin || await _nativebin.createClarityBin.call(void 0, {
270
- allocations: options.accounts
271
- });
272
- const instances = {};
273
- let coverageFolder = options.coverageFolder;
274
- if (process.env.CLARIGEN_COVERAGE) {
275
- coverageFolder = _path.resolve.call(void 0, process.cwd(), "coverage");
276
- }
277
- await deployUtilContract(clarityBin);
278
- for (const k in contracts) {
279
- if (Object.prototype.hasOwnProperty.call(contracts, k)) {
280
- const contract = contracts[k];
281
- const identifier = _core.getContractIdentifier.call(void 0, contract);
282
- await _nativebin.deployContract.call(void 0, {
283
- contractIdentifier: identifier,
284
- contractFilePath: contract.contractFile,
285
- provider: clarityBin,
286
- coverageFolder
287
- });
288
- const instance = contract.contract(contract.address, contract.name);
289
- instances[k] = {
290
- identifier: _core.getContractIdentifier.call(void 0, contract),
291
- contract: instance
292
- };
293
- }
294
- }
295
- const provider = new this(clarityBin);
296
- provider.coverageFolder = coverageFolder;
297
- return {
298
- deployed: instances,
299
- provider
300
- };
301
- }
302
- static async fromProject(simnet, options = {}) {
303
- const allocations = Object.fromEntries(Object.entries(simnet.accounts).map(([name, account]) => {
304
- return [name, __spreadProps(__spreadValues({}, account), { balance: BigInt(account.balance) })];
305
- }));
306
- const clarityBin = options.clarityBin || await _nativebin.createClarityBin.call(void 0, {
307
- allocations
308
- });
309
- let coverageFolder = options.coverageFolder;
310
- if (process.env.CLARIGEN_COVERAGE) {
311
- coverageFolder = _path.resolve.call(void 0, process.cwd(), "coverage");
312
- }
313
- await deployUtilContract(clarityBin);
314
- for (const contract of simnet.deployment) {
315
- let contractFilePath = contract.file;
316
- if (options.clarinetPath) {
317
- contractFilePath = _path.resolve.call(void 0, process.cwd(), options.clarinetPath, contractFilePath);
318
- }
319
- await _nativebin.deployContract.call(void 0, {
320
- contractIdentifier: contract.identifier,
321
- contractFilePath,
322
- provider: clarityBin,
323
- coverageFolder
324
- });
325
- }
326
- const provider = new this(clarityBin);
327
- provider.coverageFolder = coverageFolder;
328
- return provider;
329
- }
330
- static async fromFactory(contracts, options = {}) {
331
- const clarityBin = options.clarityBin || await _nativebin.createClarityBin.call(void 0, {
332
- allocations: options.accounts
333
- });
334
- let coverageFolder = options.coverageFolder;
335
- if (process.env.CLARIGEN_COVERAGE) {
336
- coverageFolder = _path.resolve.call(void 0, process.cwd(), "coverage");
337
- }
338
- await deployUtilContract(clarityBin);
339
- for (const k in contracts) {
340
- if (Object.prototype.hasOwnProperty.call(contracts, k)) {
341
- const contract = contracts[k];
342
- let contractFilePath = contract.contractFile;
343
- if (options.clarinetPath) {
344
- contractFilePath = _path.resolve.call(void 0, process.cwd(), options.clarinetPath, contractFilePath);
345
- }
346
- if (typeof contractFilePath === "undefined") {
347
- throw new Error("Cannot setup @clarigen/test - missing contract file.");
348
- }
349
- await _nativebin.deployContract.call(void 0, {
350
- contractIdentifier: contract.identifier,
351
- contractFilePath,
352
- provider: clarityBin,
353
- coverageFolder
354
- });
355
- }
356
- }
357
- const provider = new this(clarityBin);
358
- provider.coverageFolder = coverageFolder;
359
- return provider;
360
- }
361
- ro(tx2) {
362
- return ro({ tx: tx2, bin: this.clarityBin, coverageFolder: this.coverageFolder });
363
- }
364
- async rov(tx2) {
365
- const result = await this.ro(tx2);
366
- return result.value;
367
- }
368
- async roOk(tx2) {
369
- const result = await this.ro(tx2);
370
- const value = _core.expectOk.call(void 0, result.value);
371
- return __spreadProps(__spreadValues({}, result), {
372
- value
373
- });
374
- }
375
- async roErr(tx2) {
376
- const result = await this.ro(tx2);
377
- const value = _core.expectErr.call(void 0, result.value);
378
- return __spreadProps(__spreadValues({}, result), {
379
- value
380
- });
381
- }
382
- async rovOk(tx2) {
383
- return (await this.roOk(tx2)).value;
384
- }
385
- async rovErr(tx2) {
386
- return (await this.roErr(tx2)).value;
387
- }
388
- tx(tx2, senderAddress) {
389
- return tx({
390
- tx: tx2,
391
- senderAddress,
392
- bin: this.clarityBin,
393
- coverageFolder: this.coverageFolder
394
- });
395
- }
396
- async txOk(tx2, senderAddress) {
397
- const result = await this.tx(tx2, senderAddress);
398
- const value = _core.expectOk.call(void 0, result.value);
399
- if (!result.isOk)
400
- throw new Error(`Expected OK, received error: ${String(result.value)}`);
401
- return __spreadProps(__spreadValues({}, result), {
402
- value
403
- });
404
- }
405
- async txErr(tx2, senderAddress) {
406
- const result = await this.tx(tx2, senderAddress);
407
- const value = _core.expectErr.call(void 0, result.value);
408
- if (result.isOk)
409
- throw new Error(`Expected Err, received ok: ${String(result.value)}`);
410
- return __spreadProps(__spreadValues({}, result), {
411
- value
412
- });
413
- }
414
- evalCode(code, contractAddress = UTIL_CONTRACT_ID) {
415
- return evalCode({
416
- contractAddress,
417
- code,
418
- bin: this.clarityBin,
419
- coverageFolder: this.coverageFolder
420
- });
421
- }
422
- async eval(code, contractAddress = UTIL_CONTRACT_ID) {
423
- const result = await this.evalCode(code, contractAddress);
424
- return result.value;
425
- }
426
- mapGet(map) {
427
- return mapGet({ map, bin: this.clarityBin });
428
- }
429
- };
430
-
431
-
432
-
433
-
434
-
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
- exports.Allocation = _nativebin.Allocation; exports.TestProvider = TestProvider; exports.createClarityBin = _nativebin.createClarityBin; exports.evalJson = _nativebin.evalJson; exports.executeJson = _nativebin.executeJson; exports.finishCoverage = finishCoverage; exports.getBlockHeight = getBlockHeight; exports.getStxBalance = getStxBalance; exports.makeRandomAddress = makeRandomAddress; exports.mineBlocks = mineBlocks; exports.setupCoverage = setupCoverage; exports.testFactory = testFactory;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var C=Object.defineProperty,T=Object.defineProperties;var x=Object.getOwnPropertyDescriptors;var E=Object.getOwnPropertySymbols;var m=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var u=(t,e,n)=>e in t?C(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,i=(t,e)=>{for(var n in e||(e={}))m.call(e,n)&&u(t,n,e[n]);if(E)for(var n of E(e))N.call(e,n)&&u(t,n,e[n]);return t},v=(t,e)=>T(t,x(e));var _core = require('@clarigen/core');var _transactions = require('@stacks/transactions');var _clarity = require('micro-stacks/clarity');function s(t){return _transactions.deserializeCV.call(void 0, _clarity.serializeCV.call(void 0, t))}function p(t){return _clarity.deserializeCV.call(void 0, _transactions.serializeCV.call(void 0, t))}function c(t,e){let n=_core.cvToValue.call(void 0, p(t),!0);if(!n.hasOwnProperty("isOk")&&typeof e<"u")throw new Error("Expected response when calling function, but not a response. Try using just `tx` or `rov`");if(typeof e<"u"&&"isOk"in n){let o=n,r=o.value;if(e&&!o.isOk)throw new Error(`Tx result failed. Expected OK, received ERR ${r}.`);if(e===!1&&o.isOk)throw new Error(`Tx result failed. Expected ERR, received OK ${r}.`);return r}return n}function q(t,e){return t.filter(n=>n.event===e)}function M(t,e){let n=t.functionArgs.map(s),o=`${t.contractAddress}.${t.contractName}`,r=simnet.callPublicFn(o,t.function.name,n,e),a=c(r.result,!0);return v(i({},r),{events:r.events,value:a})}function F(t,e){let n=t.functionArgs.map(s),o=`${t.contractAddress}.${t.contractName}`,r=simnet.callPublicFn(o,t.function.name,n,e),a=c(r.result,!1);return v(i({},r),{events:r.events,value:a})}function V(t,e){let n=t.functionArgs.map(s),o=`${t.contractAddress}.${t.contractName}`,r=simnet.callPublicFn(o,t.function.name,n,e),a=c(r.result);return v(i({},r),{events:r.events,value:a})}function f(t,e){let n=t.functionArgs.map(s),o=`${t.contractAddress}.${t.contractName}`,r=simnet.callReadOnlyFn(o,t.function.name,n,_nullishCoalesce(e, () => (t.contractAddress))),a=c(r.result);return v(i({},r),{events:r.events,value:a})}function w(t,e){return f(t,e).value}function d(t,e){let n=t.functionArgs.map(s),o=`${t.contractAddress}.${t.contractName}`,r=simnet.callReadOnlyFn(o,t.function.name,n,_nullishCoalesce(e, () => (t.contractAddress))),a=c(r.result,!0);return v(i({},r),{events:r.events,value:a})}function B(t,e){return d(t,e).value}function y(t,e){let n=t.functionArgs.map(s),o=`${t.contractAddress}.${t.contractName}`,r=simnet.callReadOnlyFn(o,t.function.name,n,_nullishCoalesce(e, () => (t.contractAddress))),a=c(r.result,!1);return v(i({},r),{events:r.events,value:a})}function O(t,e){return y(t,e).value}function ot(t,e,n){let o=_core.mapFactory.call(void 0, e,n),r=simnet.getMapEntry(t,o.map.name,s(o.keyCV));return _core.cvToValue.call(void 0, p(r))}function at(t,e){let n=simnet.getDataVar(t,e.name);return _core.cvToValue.call(void 0, p(n))}var st={txOk:M,txErr:F,tx:V,ro:f,roOk:d,roErr:y,rov:w,rovOk:B,rovErr:O};async function it(t,e){await simnet.initSession(_nullishCoalesce(t, () => (process.cwd())),_nullishCoalesce(e, () => ("./Clarinet.toml")))}exports.chain = st; exports.filterEvents = q; exports.makeNewSession = it; exports.mapGet = ot; exports.ro = f; exports.roErr = y; exports.roOk = d; exports.rov = w; exports.rovErr = O; exports.rovOk = B; exports.tx = V; exports.txErr = F; exports.txOk = M; exports.varGet = at;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/events.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ContractCallTyped,\n ErrType,\n OkType,\n TypedAbiMap,\n TypedAbiVariable,\n UnknownArgs,\n cvToValue,\n mapFactory,\n rawClarityToValue,\n} from '@clarigen/core';\nimport { Simnet, ParsedTransactionResult } from '@hirosystems/clarinet-sdk';\nimport { cvConvertHiro, cvConvertMS, validateResponse } from './utils';\nimport { CoreNodeEvent } from './events';\nimport { ClarityType } from '@stacks/transactions';\nexport * from './events';\n\ndeclare global {\n let simnet: Simnet;\n}\n\nexport type TransactionResult<R> = Omit<ParsedTransactionResult, 'events'> & {\n value: R;\n events: CoreNodeEvent[];\n};\n\nexport function txOk<A extends UnknownArgs, R>(\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<OkType<R>> {\n const args = tx.functionArgs.map(cvConvertMS);\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n const receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n const value = validateResponse<OkType<R>>(receipt.result, true);\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>(\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<ErrType<R>> {\n const args = tx.functionArgs.map(cvConvertMS);\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n const receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n const value = validateResponse<ErrType<R>>(receipt.result, false);\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>(\n tx: ContractCallTyped<A, R>,\n sender: string\n): TransactionResult<R> {\n const args = tx.functionArgs.map(cvConvertMS);\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n const receipt = simnet.callPublicFn(contractId, tx.function.name, args, sender);\n const value = validateResponse<R>(receipt.result);\n\n return {\n ...receipt,\n events: receipt.events as unknown as CoreNodeEvent[],\n value,\n };\n}\n\nexport function ro<A extends UnknownArgs, R>(\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<R> {\n const args = tx.functionArgs.map(cvConvertMS);\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\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);\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>(tx: ContractCallTyped<A, R>, sender?: string): R {\n return ro(tx, sender).value;\n}\n\nexport function roOk<A extends UnknownArgs, R>(\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<OkType<R>> {\n const args = tx.functionArgs.map(cvConvertMS);\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<OkType<R>>(receipt.result, true);\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>(\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>(\n tx: ContractCallTyped<A, R>,\n sender?: string\n): TransactionResult<ErrType<R>> {\n const args = tx.functionArgs.map(cvConvertMS);\n const contractId = `${tx.contractAddress}.${tx.contractName}`;\n const receipt = simnet.callReadOnlyFn(\n contractId,\n tx.function.name,\n args,\n sender ?? tx.contractAddress\n );\n const value = validateResponse<ErrType<R>>(receipt.result, false);\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>(\n tx: ContractCallTyped<A, R>,\n sender?: string\n): ErrType<R> {\n return roErr(tx, sender).value;\n}\n\nexport function mapGet<Key, Val>(contractId: string, map: TypedAbiMap<Key, Val>, key: Key) {\n const payload = mapFactory(map, key);\n const result = simnet.getMapEntry(contractId, payload.map.name, cvConvertMS(payload.keyCV));\n return cvToValue<Val | null>(cvConvertHiro(result));\n}\n\nexport function varGet<T>(contractId: string, variable: TypedAbiVariable<T>) {\n const result = simnet.getDataVar(contractId, variable.name);\n return cvToValue<T>(cvConvertHiro(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 await simnet.initSession(cwd ?? process.cwd(), manifestPath ?? './Clarinet.toml');\n}\n","import { Response, cvToValue } from '@clarigen/core';\nimport {\n ClarityValue as HiroClarityValue,\n deserializeCV as deserializeCVHiro,\n serializeCV as serializeCVHiro,\n StandardPrincipalCV as HiroPrincipalCV,\n} from '@stacks/transactions';\nimport {\n ClarityValue as MSClarityValue,\n StandardPrincipalCV as MSPrincipalCV,\n serializeCV as serializeCVMS,\n deserializeCV as deserializeCVMS,\n ClarityAbiFunction,\n Address,\n ClarityType,\n} from 'micro-stacks/clarity';\n\nexport function cvConvertMS(value: MSClarityValue): HiroClarityValue {\n return deserializeCVHiro(serializeCVMS(value));\n}\n\nexport function cvConvertHiro(value: HiroClarityValue): MSClarityValue {\n return deserializeCVMS(serializeCVHiro(value));\n}\n\nexport function validateResponse<T>(result: HiroClarityValue, expectOk?: boolean): T {\n const value = cvToValue(cvConvertHiro(result), true);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n if (!value.hasOwnProperty('isOk') && typeof expectOk !== 'undefined') {\n throw new Error(\n `Expected response when calling function, but not a response. Try using just \\`tx\\` or \\`rov\\``\n );\n }\n if (typeof expectOk !== 'undefined' && 'isOk' in value) {\n const response = value as Response<unknown, unknown>;\n const inner = response.value;\n if (expectOk && !response.isOk) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Tx result failed. Expected OK, received ERR ${inner}.`);\n }\n if (expectOk === false && response.isOk) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Tx result failed. Expected ERR, received OK ${inner}.`);\n }\n return inner as T;\n }\n return value as T;\n}\n","import {\n CoreNodeEventType,\n SmartContractEvent as _SmartContractEvent,\n StxTransferEvent as _StxTransferEvent,\n StxBurnEvent as _StxBurnEvent,\n StxMintEvent as _StxMintEvent,\n StxLockEvent as _StxLockEvent,\n FtBurnEvent as _FtBurnEvent,\n FtMintEvent as _FtMintEvent,\n FtTransferEvent as _FtTransferEvent,\n NftBurnEvent as _NftBurnEvent,\n NftMintEvent as _NftMintEvent,\n NftTransferEvent as _NftTransferEvent,\n} from '@clarigen/core';\n\nexport type SmartContractEvent = {\n event: _SmartContractEvent['type'];\n data: _SmartContractEvent['contract_event'];\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(events: CoreNodeEvent[], type: CoreNodeEventType): CoreNodeEvent[] {\n return events.filter(event => event.event === type);\n}\n"]}