From 4a1fd14481e502af9d6d8ef5ddb7fa4e874959e2 Mon Sep 17 00:00:00 2001 From: Serhii Volovyk Date: Tue, 30 Aug 2022 12:29:17 +0300 Subject: [PATCH] babel plugin logic fixed --- lib/build-tools/near-bindgen-exporter.js | 15 ++++++++++----- src/build-tools/near-bindgen-exporter.js | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/build-tools/near-bindgen-exporter.js b/lib/build-tools/near-bindgen-exporter.js index 0909e209..501abdfc 100644 --- a/lib/build-tools/near-bindgen-exporter.js +++ b/lib/build-tools/near-bindgen-exporter.js @@ -27,19 +27,24 @@ export default function () { path.insertAfter(t.exportNamedDeclaration(t.functionDeclaration(t.identifier(method), [], t.blockStatement([ // const _state = Counter._getState(); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_state'), t.callExpression(t.memberExpression(classId, t.identifier('_getState')), []))]), - contractMethods[method] == 'initialize' ? - // if (_state) { throw new Error('Counter already initialized'); } + contractMethods[method] === 'initialize' ? + // if (_state) { throw new Error('Contract already initialized'); } t.ifStatement(t.identifier('_state'), t.throwStatement(t.newExpression(t.identifier('Error'), [t.stringLiteral('Contract already initialized')]))) : t.emptyStatement(), + contractMethods[method] === 'call' || contractMethods[method] === 'view' ? + // if (!_state) { throw new Error('Contract must be initialized'); } + t.ifStatement(t.unaryExpression('!', t.identifier('_state')), t.throwStatement(t.newExpression(t.identifier('Error'), [t.stringLiteral('Contract must be initialized')]))) + : t.emptyStatement(), // let _contract = Counter._create(); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_contract'), t.callExpression(t.memberExpression(classId, t.identifier('_create')), []))]), - // Object.assign(_contract, state); - t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('assign')), [t.identifier('_contract'), t.identifier('_state')])), + contractMethods[method] === 'call' || contractMethods[method] === 'view' ? + // if (_state) { Object.assign(_contract, state); } + t.ifStatement(t.identifier('_state'), t.blockStatement([t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('assign')), [t.identifier('_contract'), t.identifier('_state')]))])) : t.emptyStatement(), // let _args = Counter._getArgs(); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_args'), t.callExpression(t.memberExpression(classId, t.identifier('_getArgs')), []))]), // let _result = _contract.method(args); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_result'), t.callExpression(t.memberExpression(t.identifier('_contract'), t.identifier(method)), [t.identifier('_args')]))]), - contractMethods[method] == 'initialize' || contractMethods[method] == 'call' ? + contractMethods[method] === 'initialize' || contractMethods[method] === 'call' ? // _contract._saveToStorage(); t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('_contract'), t.identifier('_saveToStorage')), [])) : t.emptyStatement(), diff --git a/src/build-tools/near-bindgen-exporter.js b/src/build-tools/near-bindgen-exporter.js index e97922d0..c49bd9d8 100644 --- a/src/build-tools/near-bindgen-exporter.js +++ b/src/build-tools/near-bindgen-exporter.js @@ -27,19 +27,24 @@ export default function () { path.insertAfter(t.exportNamedDeclaration(t.functionDeclaration(t.identifier(method), [], t.blockStatement([ // const _state = Counter._getState(); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_state'), t.callExpression(t.memberExpression(classId, t.identifier('_getState')), []))]), - contractMethods[method] == 'initialize' ? - // if (_state) { throw new Error('Counter already initialized'); } + contractMethods[method] === 'initialize' ? + // if (_state) { throw new Error('Contract already initialized'); } t.ifStatement(t.identifier('_state'), t.throwStatement(t.newExpression(t.identifier('Error'), [t.stringLiteral('Contract already initialized')]))) : t.emptyStatement(), + contractMethods[method] === 'call' || contractMethods[method] === 'view' ? + // if (!_state) { throw new Error('Contract must be initialized'); } + t.ifStatement(t.unaryExpression('!', t.identifier('_state')), t.throwStatement(t.newExpression(t.identifier('Error'), [t.stringLiteral('Contract must be initialized')]))) + : t.emptyStatement(), // let _contract = Counter._create(); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_contract'), t.callExpression(t.memberExpression(classId, t.identifier('_create')), []))]), - // Object.assign(_contract, state); - t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('assign')), [t.identifier('_contract'), t.identifier('_state')])), + contractMethods[method] === 'call' || contractMethods[method] === 'view' ? + // if (_state) { Object.assign(_contract, state); } + t.ifStatement(t.identifier('_state'), t.blockStatement([t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('assign')), [t.identifier('_contract'), t.identifier('_state')]))])) : t.emptyStatement(), // let _args = Counter._getArgs(); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_args'), t.callExpression(t.memberExpression(classId, t.identifier('_getArgs')), []))]), // let _result = _contract.method(args); t.variableDeclaration('let', [t.variableDeclarator(t.identifier('_result'), t.callExpression(t.memberExpression(t.identifier('_contract'), t.identifier(method)), [t.identifier('_args')]))]), - contractMethods[method] == 'initialize' || contractMethods[method] == 'call' ? + contractMethods[method] === 'initialize' || contractMethods[method] === 'call' ? // _contract._saveToStorage(); t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('_contract'), t.identifier('_saveToStorage')), [])) : t.emptyStatement(),