UNPKG

6.74 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const node_blockchain_1 = require("@neo-one/node-blockchain");
5const node_neo_settings_1 = require("@neo-one/node-neo-settings");
6const node_storage_levelup_1 = require("@neo-one/node-storage-levelup");
7const node_vm_1 = require("@neo-one/node-vm");
8const levelup_1 = tslib_1.__importDefault(require("levelup"));
9const memdown_1 = tslib_1.__importDefault(require("memdown"));
10const compile_1 = require("./compile");
11const utils_1 = require("./utils");
12exports.EXECUTE_OPTIONS_DEFAULT = {
13 prelude: Buffer.alloc(0, 0),
14 ignoreWarnings: false
15};
16exports.executeScript = async (monitor, context, sourceFile, { prelude = Buffer.alloc(0, 0), ignoreWarnings = false } = exports.EXECUTE_OPTIONS_DEFAULT) => {
17 const blockchain = await node_blockchain_1.Blockchain.create({
18 settings: node_neo_settings_1.test(),
19 storage: node_storage_levelup_1.storage({
20 context: {
21 messageMagic: node_neo_settings_1.test().messageMagic
22 },
23 db: levelup_1.default(memdown_1.default())
24 }),
25 vm: node_vm_1.vm,
26 monitor
27 });
28 const { code: compiledCode, sourceMap } = await compile_1.compile({
29 context,
30 sourceFile
31 });
32 utils_1.throwOnDiagnosticErrorOrWarning(context.diagnostics, ignoreWarnings);
33 const receipt = await blockchain.invokeScript(Buffer.concat([prelude, compiledCode]), monitor);
34 return {
35 receipt: {
36 result: receipt.result.serializeJSON(blockchain.serializeJSONContext),
37 actions: receipt.actions.map(action => action.serializeJSON(blockchain.serializeJSONContext))
38 },
39 sourceMap
40 };
41};
42
43//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4ZWN1dGVTY3JpcHQudHMiXSwibmFtZXMiOlsiRVhFQ1VURV9PUFRJT05TX0RFRkFVTFQiLCJwcmVsdWRlIiwiQnVmZmVyIiwiYWxsb2MiLCJpZ25vcmVXYXJuaW5ncyIsImV4ZWN1dGVTY3JpcHQiLCJtb25pdG9yIiwiY29udGV4dCIsInNvdXJjZUZpbGUiLCJibG9ja2NoYWluIiwiQmxvY2tjaGFpbiIsImNyZWF0ZSIsInNldHRpbmdzIiwidGVzdE5ldCIsInN0b3JhZ2UiLCJtZXNzYWdlTWFnaWMiLCJkYiIsIkxldmVsVXAiLCJNZW1Eb3duIiwidm0iLCJjb2RlIiwiY29tcGlsZWRDb2RlIiwic291cmNlTWFwIiwiY29tcGlsZSIsInRocm93T25EaWFnbm9zdGljRXJyb3JPcldhcm5pbmciLCJkaWFnbm9zdGljcyIsInJlY2VpcHQiLCJpbnZva2VTY3JpcHQiLCJjb25jYXQiLCJyZXN1bHQiLCJzZXJpYWxpemVKU09OIiwic2VyaWFsaXplSlNPTkNvbnRleHQiLCJhY3Rpb25zIiwibWFwIiwiYWN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7QUFFQSw4REFBQTtBQUNBLGtFQUFBO0FBQ0Esd0VBQUE7QUFDQSw4Q0FBQTtBQUNBLDhEQUFBO0FBQ0EsOERBQUE7QUFHQSx1Q0FBQTtBQUVBLG1DQUFBO0FBT2FBLFFBQUFBLHVCQUF1QixHQUFHO0lBQ3JDQyxPQUFPLEVBQUVDLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBaEIsQ0FENEI7SUFFckNDLGNBQWMsRUFBRSxLQUFBO0NBRlgsQ0FBQTtBQUtNQyxRQUFBQSxhQUFhLEdBQUcsS0FBQSxFQUMzQkMsT0FEMkIsRUFFM0JDLE9BRjJCLEVBRzNCQyxVQUgyQixFQUkzQixFQUFFUCxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLENBQWIsRUFBZ0IsQ0FBaEIsQ0FBWixFQUFnQ0MsY0FBYyxHQUFHLEtBQUEsS0FBMEJKLCtCQUpoRCxFQUFBLEVBQUE7SUFNM0IsTUFBTVMsVUFBVSxHQUFHLE1BQU1DLDRCQUFVLENBQUNDLE1BQVgsQ0FBa0I7UUFDekNDLFFBQVEsRUFBRUMsd0JBQU8sRUFEd0I7UUFFekNDLE9BQU8sRUFBRUEsOEJBQU8sQ0FBQztZQUNmUCxPQUFPLEVBQUU7Z0JBQUVRLFlBQVksRUFBRUYsd0JBQU8sRUFBQSxDQUFHRSxZQUFBQTthQURwQjtZQUVmQyxFQUFFLEVBQUVDLGlCQUFPLENBQUNDLGlCQUFPLEVBQVIsQ0FBQTtTQUZHLENBRnlCO1FBTXpDQyxFQU55QyxFQU16Q0EsWUFOeUM7UUFPekNiLE9BQUFBO0tBUHVCLENBQXpCLENBQUE7SUFTQSxNQUFNLEVBQUVjLElBQUksRUFBRUMsWUFBUixFQUFzQkMsU0FBQUEsRUFBdEIsR0FBb0MsTUFBTUMsaUJBQU8sQ0FBQztRQUFFaEIsT0FBRjtRQUFXQyxVQUFBQTtLQUFaLENBQXZELENBQUE7SUFFQWdCLHVDQUErQixDQUFDakIsT0FBTyxDQUFDa0IsV0FBVCxFQUFzQnJCLGNBQXRCLENBQS9CLENBQUE7SUFFQSxNQUFNc0IsT0FBTyxHQUFHLE1BQU1qQixVQUFVLENBQUNrQixZQUFYLENBQXdCekIsTUFBTSxDQUFDMEIsTUFBUCxDQUFjLENBQUMzQixPQUFELEVBQVVvQixZQUFWLENBQWQsQ0FBeEIsRUFBZ0VmLE9BQWhFLENBQXRCLENBQUE7SUFFQSxPQUFPO1FBQ0xvQixPQUFPLEVBQUU7WUFDUEcsTUFBTSxFQUFFSCxPQUFPLENBQUNHLE1BQVIsQ0FBZUMsYUFBZixDQUE2QnJCLFVBQVUsQ0FBQ3NCLG9CQUF4QyxDQUREO1lBRVBDLE9BQU8sRUFBRU4sT0FBTyxDQUFDTSxPQUFSLENBQWdCQyxHQUFoQixDQUFxQkMsTUFBRCxDQUFBLEVBQUEsQ0FBWUEsTUFBTSxDQUFDSixhQUFQLENBQXFCckIsVUFBVSxDQUFDc0Isb0JBQWhDLENBQWhDLENBQUE7U0FITjtRQUtMVCxTQUFBQTtLQUxGLENBQUE7QUFPRCxDQTVCTSxDQUFBIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2V4ZWN1dGVTY3JpcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWxsUmVjZWlwdEpTT04gfSBmcm9tICdAbmVvLW9uZS9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBNb25pdG9yIH0gZnJvbSAnQG5lby1vbmUvbW9uaXRvcic7XG5pbXBvcnQgeyBCbG9ja2NoYWluIH0gZnJvbSAnQG5lby1vbmUvbm9kZS1ibG9ja2NoYWluJztcbmltcG9ydCB7IHRlc3QgYXMgdGVzdE5ldCB9IGZyb20gJ0BuZW8tb25lL25vZGUtbmVvLXNldHRpbmdzJztcbmltcG9ydCB7IHN0b3JhZ2UgfSBmcm9tICdAbmVvLW9uZS9ub2RlLXN0b3JhZ2UtbGV2ZWx1cCc7XG5pbXBvcnQgeyB2bSB9IGZyb20gJ0BuZW8tb25lL25vZGUtdm0nO1xuaW1wb3J0IExldmVsVXAgZnJvbSAnbGV2ZWx1cCc7XG5pbXBvcnQgTWVtRG93biBmcm9tICdtZW1kb3duJztcbmltcG9ydCB7IFJhd1NvdXJjZU1hcCB9IGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZSc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9Db250ZXh0JztcbmltcG9ydCB7IHRocm93T25EaWFnbm9zdGljRXJyb3JPcldhcm5pbmcgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHByZWx1ZGU/OiBCdWZmZXI7XG4gIHJlYWRvbmx5IGlnbm9yZVdhcm5pbmdzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IEVYRUNVVEVfT1BUSU9OU19ERUZBVUxUID0ge1xuICBwcmVsdWRlOiBCdWZmZXIuYWxsb2MoMCwgMCksXG4gIGlnbm9yZVdhcm5pbmdzOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjb25zdCBleGVjdXRlU2NyaXB0ID0gYXN5bmMgKFxuICBtb25pdG9yOiBNb25pdG9yLFxuICBjb250ZXh0OiBDb250ZXh0LFxuICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLFxuICB7IHByZWx1ZGUgPSBCdWZmZXIuYWxsb2MoMCwgMCksIGlnbm9yZVdhcm5pbmdzID0gZmFsc2UgfTogRXhlY3V0ZU9wdGlvbnMgPSBFWEVDVVRFX09QVElPTlNfREVGQVVMVCxcbik6IFByb21pc2U8eyByZWFkb25seSByZWNlaXB0OiBDYWxsUmVjZWlwdEpTT047IHJlYWRvbmx5IHNvdXJjZU1hcDogUmF3U291cmNlTWFwIH0+ID0+IHtcbiAgY29uc3QgYmxvY2tjaGFpbiA9IGF3YWl0IEJsb2NrY2hhaW4uY3JlYXRlKHtcbiAgICBzZXR0aW5nczogdGVzdE5ldCgpLFxuICAgIHN0b3JhZ2U6IHN0b3JhZ2Uoe1xuICAgICAgY29udGV4dDogeyBtZXNzYWdlTWFnaWM6IHRlc3ROZXQoKS5tZXNzYWdlTWFnaWMgfSxcbiAgICAgIGRiOiBMZXZlbFVwKE1lbURvd24oKSksXG4gICAgfSksXG4gICAgdm0sXG4gICAgbW9uaXRvcixcbiAgfSk7XG4gIGNvbnN0IHsgY29kZTogY29tcGlsZWRDb2RlLCBzb3VyY2VNYXAgfSA9IGF3YWl0IGNvbXBpbGUoeyBjb250ZXh0LCBzb3VyY2VGaWxlIH0pO1xuXG4gIHRocm93T25EaWFnbm9zdGljRXJyb3JPcldhcm5pbmcoY29udGV4dC5kaWFnbm9zdGljcywgaWdub3JlV2FybmluZ3MpO1xuXG4gIGNvbnN0IHJlY2VpcHQgPSBhd2FpdCBibG9ja2NoYWluLmludm9rZVNjcmlwdChCdWZmZXIuY29uY2F0KFtwcmVsdWRlLCBjb21waWxlZENvZGVdKSwgbW9uaXRvcik7XG5cbiAgcmV0dXJuIHtcbiAgICByZWNlaXB0OiB7XG4gICAgICByZXN1bHQ6IHJlY2VpcHQucmVzdWx0LnNlcmlhbGl6ZUpTT04oYmxvY2tjaGFpbi5zZXJpYWxpemVKU09OQ29udGV4dCksXG4gICAgICBhY3Rpb25zOiByZWNlaXB0LmFjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi5zZXJpYWxpemVKU09OKGJsb2NrY2hhaW4uc2VyaWFsaXplSlNPTkNvbnRleHQpKSxcbiAgICB9LFxuICAgIHNvdXJjZU1hcCxcbiAgfTtcbn07XG4iXX0=