@tact-lang/emulator
Advanced tools
Comparing version 2.1.1 to 3.0.0
@@ -71,3 +71,2 @@ /// <reference types="node" /> | ||
private getModule; | ||
private getInstance; | ||
} |
@@ -13,3 +13,3 @@ "use strict"; | ||
}; | ||
var _EmulatorBindings_lock, _EmulatorBindings_instances, _EmulatorBindings_module, _EmulatorBindings_errLogs; | ||
var _EmulatorBindings_lock, _EmulatorBindings_module, _EmulatorBindings_errLogs; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -20,4 +20,4 @@ exports.EmulatorBindings = void 0; | ||
// WASM bindings | ||
const createModule = require(__dirname + '/../../wasm/emulator-emscripten'); | ||
const wasmBinaryPack = require(__dirname + '/../../wasm/emulator-emscripten.wasm.js'); | ||
const createModule = require('./wasm/emulator-emscripten'); | ||
const wasmBinaryPack = require('./wasm/emulator-emscripten.wasm.js'); | ||
const wasmBinary = Buffer.from(wasmBinaryPack.wasmBinary, 'base64'); | ||
@@ -34,3 +34,2 @@ const writeToCString = (mod, data) => { | ||
_EmulatorBindings_lock.set(this, new teslabot_1.AsyncLock()); | ||
_EmulatorBindings_instances.set(this, new Map()); | ||
_EmulatorBindings_module.set(this, null); | ||
@@ -129,3 +128,3 @@ _EmulatorBindings_errLogs.set(this, []); | ||
let module = await this.getModule(); | ||
let instance = this.getInstance(module, args.config, args.verbosity); | ||
// let instance = this.getInstance(module, args.config, args.verbosity); | ||
// Params | ||
@@ -140,4 +139,5 @@ const params = { | ||
let res = this.invoke(module, '_emulate', [ | ||
instance, | ||
args.config.toBoc().toString('base64'), | ||
args.libs ? args.libs.toBoc().toString('base64') : 0, | ||
args.verbosity, | ||
args.shardAccount.toBoc().toString('base64'), | ||
@@ -194,16 +194,5 @@ args.message.toBoc().toString('base64'), | ||
} | ||
getInstance(module, config, verbosity) { | ||
// Check if instance already exists | ||
let key = config.hash().toString('hex') + ':' + verbosity; | ||
if (__classPrivateFieldGet(this, _EmulatorBindings_instances, "f").has(key)) { | ||
return __classPrivateFieldGet(this, _EmulatorBindings_instances, "f").get(key); | ||
} | ||
// Create instance | ||
let emulator = this.invoke(module, '_create_emulator', [config.toBoc().toString('base64'), verbosity]); | ||
__classPrivateFieldGet(this, _EmulatorBindings_instances, "f").set(key, emulator); | ||
return emulator; | ||
} | ||
} | ||
exports.EmulatorBindings = EmulatorBindings; | ||
_EmulatorBindings_lock = new WeakMap(), _EmulatorBindings_instances = new WeakMap(), _EmulatorBindings_module = new WeakMap(), _EmulatorBindings_errLogs = new WeakMap(); | ||
_EmulatorBindings_lock = new WeakMap(), _EmulatorBindings_module = new WeakMap(), _EmulatorBindings_errLogs = new WeakMap(); | ||
function prepareLogs(errors, stdout, vmLogs) { | ||
@@ -210,0 +199,0 @@ let logs = ''; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const ton_core_1 = require("ton-core"); | ||
const testAddress_1 = require("../utils/testAddress"); | ||
const randomAddress_1 = require("../utils/randomAddress"); | ||
const ContractExecutor_1 = require("./ContractExecutor"); | ||
@@ -28,3 +28,3 @@ const ContractSystem_1 = require("./ContractSystem"); | ||
type: 'internal', | ||
src: (0, testAddress_1.testAddress)('address-1'), | ||
src: (0, randomAddress_1.randomAddress)('address-1'), | ||
dest: contract.address, | ||
@@ -31,0 +31,0 @@ value: { coins: (0, ton_core_1.toNano)(1) }, |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const ContractSystem_1 = require("./ContractSystem"); | ||
const testAddress_1 = require("../utils/testAddress"); | ||
const randomAddress_1 = require("../utils/randomAddress"); | ||
const ton_core_1 = require("ton-core"); | ||
@@ -11,3 +11,3 @@ describe('ContractSystem', () => { | ||
let treasure = system.treasure('treasure'); | ||
let unknownAddress = (0, testAddress_1.testAddress)('unknown'); | ||
let unknownAddress = (0, randomAddress_1.randomAddress)('unknown'); | ||
let tracker = system.track(treasure.address); | ||
@@ -14,0 +14,0 @@ let logs = system.log(treasure.address); |
export { ContractSystem } from './emulator/ContractSystem'; | ||
export { ContractExecutor } from './emulator/ContractExecutor'; | ||
export { testAddress, testExternalAddress } from './utils/testAddress'; | ||
export { randomAddress, randomExternalAddress } from './utils/randomAddress'; | ||
export { testKey } from './utils/testKey'; | ||
@@ -5,0 +5,0 @@ export { Treasure } from './treasure/Treasure'; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Logger = exports.Tracker = exports.testKey = exports.testExternalAddress = exports.testAddress = exports.ContractExecutor = exports.ContractSystem = void 0; | ||
exports.Logger = exports.Tracker = exports.testKey = exports.randomExternalAddress = exports.randomAddress = exports.ContractExecutor = exports.ContractSystem = void 0; | ||
// Contract system | ||
@@ -9,5 +9,5 @@ var ContractSystem_1 = require("./emulator/ContractSystem"); | ||
Object.defineProperty(exports, "ContractExecutor", { enumerable: true, get: function () { return ContractExecutor_1.ContractExecutor; } }); | ||
var testAddress_1 = require("./utils/testAddress"); | ||
Object.defineProperty(exports, "testAddress", { enumerable: true, get: function () { return testAddress_1.testAddress; } }); | ||
Object.defineProperty(exports, "testExternalAddress", { enumerable: true, get: function () { return testAddress_1.testExternalAddress; } }); | ||
var randomAddress_1 = require("./utils/randomAddress"); | ||
Object.defineProperty(exports, "randomAddress", { enumerable: true, get: function () { return randomAddress_1.randomAddress; } }); | ||
Object.defineProperty(exports, "randomExternalAddress", { enumerable: true, get: function () { return randomAddress_1.randomExternalAddress; } }); | ||
var testKey_1 = require("./utils/testKey"); | ||
@@ -14,0 +14,0 @@ Object.defineProperty(exports, "testKey", { enumerable: true, get: function () { return testKey_1.testKey; } }); |
{ | ||
"name": "@tact-lang/emulator", | ||
"version": "2.1.1", | ||
"version": "3.0.0", | ||
"main": "dist/index.js", | ||
@@ -5,0 +5,0 @@ "repository": "https://github.com/tact-lang/tact-emulator.git", |
@@ -8,3 +8,3 @@ # TON Emulator | ||
```bash | ||
yarn add @tact-lange/emulator ton-core ton-crypto | ||
yarn add @tact-lang/emulator ton-core ton-crypto | ||
``` | ||
@@ -15,3 +15,4 @@ | ||
```typescript | ||
import { ContractSystem } from '@tact-lange/emulator'; | ||
import { ContractSystem, randomAddress } from '@tact-lang/emulator'; | ||
import { WalletContractV4 } from 'ton'; | ||
@@ -31,3 +32,3 @@ // Contract System is a virtual environment that emulates the TON blockchain | ||
// Create a random unknown address that would be treated as unititialized contract | ||
let unknownAddress = testAddress('some-unknown-seed'); // This seed is used to generate deterministic address | ||
let unknownAddress = randomAddress('some-unknown-seed'); // This seed is used to generate deterministic address | ||
@@ -34,0 +35,0 @@ // Send an empty message to the unknown address |
@@ -5,4 +5,4 @@ import { AsyncLock } from "teslabot"; | ||
// WASM bindings | ||
const createModule: (options: any) => Promise<any> = require(__dirname + '/../../wasm/emulator-emscripten'); | ||
const wasmBinaryPack = require(__dirname + '/../../wasm/emulator-emscripten.wasm.js'); | ||
const createModule: (options: any) => Promise<any> = require('./wasm/emulator-emscripten'); | ||
const wasmBinaryPack = require('./wasm/emulator-emscripten.wasm.js'); | ||
const wasmBinary = Buffer.from(wasmBinaryPack.wasmBinary, 'base64'); | ||
@@ -115,3 +115,2 @@ | ||
#lock = new AsyncLock(); | ||
#instances = new Map<string, Pointer>(); | ||
#module: any = null; | ||
@@ -196,3 +195,3 @@ #errLogs: string[] = []; | ||
let module = await this.getModule(); | ||
let instance = this.getInstance(module, args.config, args.verbosity); | ||
// let instance = this.getInstance(module, args.config, args.verbosity); | ||
@@ -209,4 +208,5 @@ // Params | ||
let res = this.invoke(module, '_emulate', [ | ||
instance, | ||
args.config.toBoc().toString('base64'), | ||
args.libs ? args.libs.toBoc().toString('base64') : 0, | ||
args.verbosity, | ||
args.shardAccount.toBoc().toString('base64'), | ||
@@ -287,16 +287,2 @@ args.message.toBoc().toString('base64'), | ||
} | ||
private getInstance(module: any, config: Cell, verbosity: number): Pointer { | ||
// Check if instance already exists | ||
let key = config.hash().toString('hex') + ':' + verbosity; | ||
if (this.#instances.has(key)) { | ||
return this.#instances.get(key); | ||
} | ||
// Create instance | ||
let emulator = this.invoke(module, '_create_emulator', [config.toBoc().toString('base64'), verbosity]); | ||
this.#instances.set(key, emulator); | ||
return emulator; | ||
} | ||
} | ||
@@ -303,0 +289,0 @@ |
import { beginCell, Cell, toNano } from "ton-core"; | ||
import { testAddress } from "../utils/testAddress"; | ||
import { randomAddress } from "../utils/randomAddress"; | ||
import { ContractExecutor } from "./ContractExecutor"; | ||
@@ -29,3 +29,3 @@ import { ContractSystem } from "./ContractSystem"; | ||
type: 'internal', | ||
src: testAddress('address-1'), | ||
src: randomAddress('address-1'), | ||
dest: contract.address, | ||
@@ -32,0 +32,0 @@ value: { coins: toNano(1) }, |
import { ContractSystem } from "./ContractSystem"; | ||
import { testAddress } from "../utils/testAddress"; | ||
import { randomAddress } from "../utils/randomAddress"; | ||
import { beginCell, toNano } from "ton-core"; | ||
@@ -11,3 +11,3 @@ | ||
let treasure = system.treasure('treasure'); | ||
let unknownAddress = testAddress('unknown'); | ||
let unknownAddress = randomAddress('unknown'); | ||
let tracker = system.track(treasure.address); | ||
@@ -14,0 +14,0 @@ let logs = system.log(treasure.address); |
// Contract system | ||
export { ContractSystem } from './emulator/ContractSystem'; | ||
export { ContractExecutor } from './emulator/ContractExecutor'; | ||
export { testAddress, testExternalAddress } from './utils/testAddress' | ||
export { randomAddress, randomExternalAddress } from './utils/randomAddress' | ||
export { testKey } from './utils/testKey'; | ||
@@ -6,0 +6,0 @@ export { Treasure } from './treasure/Treasure'; |
Sorry, the diff of this file is not supported yet
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
5794983
55
4
65
3344