add dev mode to smart-contracts, make notifications external accessable, make boot works
This commit is contained in:
@@ -637,6 +637,66 @@ export default class Blockchain {
|
||||
console.log('Новый пользователь: ', params)
|
||||
}
|
||||
|
||||
async addUser(
|
||||
params: RegistratorContract.Actions.AddUser.IAddUser,
|
||||
) {
|
||||
await this.update_pass_instance()
|
||||
console.dir(params, { depth: null })
|
||||
await this.api.transact(
|
||||
{
|
||||
actions: [
|
||||
{
|
||||
account: RegistratorContract.contractName.production,
|
||||
name: RegistratorContract.Actions.AddUser.actionName,
|
||||
authorization: [
|
||||
{
|
||||
actor: params.coopname,
|
||||
permission: 'active',
|
||||
},
|
||||
],
|
||||
data: params,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
blocksBehind: 3,
|
||||
expireSeconds: 30,
|
||||
},
|
||||
)
|
||||
|
||||
console.log('Добавлен пользователь: ', params.username)
|
||||
}
|
||||
|
||||
async changeKey(
|
||||
params: RegistratorContract.Actions.ChangeKey.IChangeKey,
|
||||
) {
|
||||
await this.update_pass_instance()
|
||||
console.dir(params, { depth: null })
|
||||
await this.api.transact(
|
||||
{
|
||||
actions: [
|
||||
{
|
||||
account: RegistratorContract.contractName.production,
|
||||
name: RegistratorContract.Actions.ChangeKey.actionName,
|
||||
authorization: [
|
||||
{
|
||||
actor: params.coopname,
|
||||
permission: 'active',
|
||||
},
|
||||
],
|
||||
data: params,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
blocksBehind: 3,
|
||||
expireSeconds: 30,
|
||||
},
|
||||
)
|
||||
|
||||
console.log('Изменён ключ для пользователя: ', params.username)
|
||||
}
|
||||
|
||||
async transfer(params: TokenContract.Actions.Transfer.ITransfer) {
|
||||
await this.update_pass_instance()
|
||||
console.dir(params, { depth: null })
|
||||
@@ -968,7 +1028,7 @@ export default class Blockchain {
|
||||
name: SovietContract.Actions.Boards.CreateBoard.actionName,
|
||||
authorization: [
|
||||
{
|
||||
actor: params.username,
|
||||
actor: params.coopname,
|
||||
permission: 'active',
|
||||
},
|
||||
],
|
||||
|
||||
@@ -135,9 +135,9 @@ export default {
|
||||
name: 'contributor',
|
||||
code_permissions_to: ['contributor'],
|
||||
},
|
||||
{
|
||||
name: provider_chairman,
|
||||
},
|
||||
// {
|
||||
// name: provider_chairman,
|
||||
// },
|
||||
{
|
||||
name: provider,
|
||||
code_permissions_to: ['registrator'],
|
||||
|
||||
@@ -335,6 +335,29 @@ export async function installInitialData(blockchain: Blockchain) {
|
||||
}
|
||||
catch (e) { console.log('vault is exist') }
|
||||
|
||||
console.log('Добавляем пайщика ant')
|
||||
|
||||
await blockchain.addUser({
|
||||
coopname: 'voskhod',
|
||||
referer: 'voskhod',
|
||||
username: 'ant',
|
||||
type: 'individual',
|
||||
created_at: '2025-01-15T10:00:00',
|
||||
initial: '100.0000 RUB',
|
||||
minimum: '200.0000 RUB',
|
||||
spread_initial: true,
|
||||
meta: 'Основатель кооператива ВОСХОД',
|
||||
})
|
||||
|
||||
console.log('Устанавливаем дефолтный публичный ключ для ant')
|
||||
|
||||
await blockchain.changeKey({
|
||||
coopname: 'voskhod',
|
||||
changer: 'voskhod',
|
||||
username: 'ant',
|
||||
public_key: config.default_public_key,
|
||||
})
|
||||
|
||||
console.log('Создаём совет')
|
||||
|
||||
await blockchain.createBoard({
|
||||
|
||||
@@ -3,8 +3,20 @@ project(coopenomics)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
# Распечатываем начальное значение BUILD_TARGET
|
||||
# Опция для тестового режима
|
||||
option(IS_TESTNET "Build for testnet" OFF)
|
||||
|
||||
# Определяем режим сборки
|
||||
if(IS_TESTNET)
|
||||
set(BUILD_MODE "TESTNET")
|
||||
else()
|
||||
set(BUILD_MODE "PRODUCTION")
|
||||
endif()
|
||||
|
||||
# Распечатываем информацию о сборке
|
||||
message(STATUS "=== BUILDING CONTRACTS IN ${BUILD_MODE} MODE ===")
|
||||
message(STATUS "Initial BUILD_TARGET=${BUILD_TARGET}")
|
||||
message(STATUS "IS_TESTNET=${IS_TESTNET}")
|
||||
|
||||
# Макрос для сборки контрактов с диагностическими сообщениями
|
||||
macro(add_contract_build name)
|
||||
@@ -12,12 +24,12 @@ macro(add_contract_build name)
|
||||
string(STRIP "${name}" NAME_STRIPPED)
|
||||
|
||||
if(NOT BUILD_TARGET_STRIPPED OR BUILD_TARGET_STRIPPED STREQUAL NAME_STRIPPED)
|
||||
message(STATUS "COMPILING ${name} CONTRACT")
|
||||
message(STATUS "COMPILING ${name} CONTRACT (IS_TESTNET=${IS_TESTNET})")
|
||||
ExternalProject_Add(
|
||||
${name}_contract
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/cpp/${name}
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/contracts/${name}
|
||||
CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=/cdt/build/lib/cmake/cdt/CDTWasmToolchain.cmake
|
||||
CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=/cdt/build/lib/cmake/cdt/CDTWasmToolchain.cmake -DIS_TESTNET=${IS_TESTNET}
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
mode="${1:-prod}"
|
||||
|
||||
if [ "$mode" = "test" ]; then
|
||||
is_testnet="ON"
|
||||
else
|
||||
is_testnet="OFF"
|
||||
fi
|
||||
|
||||
docker run --rm --name cdt \
|
||||
--volume "$(pwd):/project" \
|
||||
-w /project \
|
||||
dicoop/blockchain_v5.1.1:dev \
|
||||
/bin/bash -c "mkdir -p build && cd build && cmake -DBUILD_TARGET= -DTEST_TARGET= -DVERBOSE=ON -DBUILD_TESTS=OFF .. && make"
|
||||
/bin/bash -c "mkdir -p build && cd build && cmake -DBUILD_TARGET= -DTEST_TARGET= -DVERBOSE=ON -DBUILD_TESTS=OFF -DIS_TESTNET=$is_testnet .. && make"
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: $0 <contract>"
|
||||
echo "Usage: $0 <contract> [mode]"
|
||||
echo " mode: prod (default) or test"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
contract="$1"
|
||||
contract="${contract:-$1}"
|
||||
mode="${mode:-${2:-prod}}"
|
||||
|
||||
if [ "$mode" = "test" ]; then
|
||||
is_testnet="ON"
|
||||
else
|
||||
is_testnet="OFF"
|
||||
fi
|
||||
|
||||
docker run --rm --name cdt \
|
||||
--volume "$(pwd)/:/project" \
|
||||
-w /project/build \
|
||||
dicoop/blockchain_v5.1.1:dev \
|
||||
/bin/bash -c "cmake -DBUILD_TARGET='$contract' -DTEST_TARGET= -DVERBOSE=ON -DBUILD_TESTS=OFF .. && make"
|
||||
/bin/bash -c "cmake -DBUILD_TARGET='$contract' -DTEST_TARGET= -DVERBOSE=ON -DBUILD_TESTS=OFF -DIS_TESTNET=$is_testnet .. && make"
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(branch branch branch.cpp)
|
||||
target_compile_definitions(branch PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(branch PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -7,3 +7,8 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(capital capital capital.cpp)
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(capital PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
@@ -7,3 +7,8 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(contributor contributor contributor.cpp)
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(contributor PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
@@ -7,5 +7,9 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(draft draft draft.cpp)
|
||||
target_compile_definitions(draft PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(draft PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -7,5 +7,10 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(fund fund fund.cpp)
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(fund PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -7,5 +7,9 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(gateway gateway gateway.cpp)
|
||||
target_compile_definitions(gateway PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(gateway PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -7,4 +7,8 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(ledger ledger ledger.cpp)
|
||||
target_compile_definitions(ledger PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(ledger PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
@@ -230,6 +230,13 @@ static constexpr uint64_t _capital_program_id = 4;
|
||||
|
||||
static constexpr uint64_t _producers_percent = 900000; // 90%
|
||||
static constexpr uint64_t _fund_percent = 100000; // 10%
|
||||
|
||||
#ifdef IS_TESTNET
|
||||
static constexpr uint64_t MIN_SOVIET_MEMBERS_COUNT = 1; /*!< минимальное количество членов совета (тест) */
|
||||
#else
|
||||
static constexpr uint64_t MIN_SOVIET_MEMBERS_COUNT = 5; /*!< минимальное количество членов совета (прод) */
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
@@ -7,5 +7,9 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(loan loan loan.cpp)
|
||||
target_compile_definitions(loan PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(loan PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -7,5 +7,9 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(marketplace marketplace marketplace.cpp)
|
||||
target_compile_definitions(marketplace PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(marketplace PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -7,3 +7,8 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(meet meet meet.cpp)
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(meet PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
@@ -7,6 +7,10 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(registrator registrator registrator.cpp)
|
||||
target_compile_definitions(registrator PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(registrator PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
void registrator::changekey(eosio::name coopname, eosio::name changer, eosio::name username,
|
||||
eosio::public_key public_key)
|
||||
{
|
||||
require_auth(changer);
|
||||
require_auth(coopname);
|
||||
|
||||
auto cooperative = get_cooperative_or_fail(coopname);
|
||||
check_auth_or_fail(_registrator, coopname, changer, "changekey"_n);
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
std::vector<eosio::name> storages;
|
||||
storages.push_back(_provider);
|
||||
|
||||
accounts.emplace(_system, [&](auto &n)
|
||||
{
|
||||
n.type = "individual"_n;
|
||||
n.storages = storages;
|
||||
n.username = _provider_chairman;
|
||||
n.status = "active"_n;
|
||||
n.registrator = _system;
|
||||
n.referer = ""_n;
|
||||
n.registered_at = eosio::time_point_sec(eosio::current_time_point().sec_since_epoch());
|
||||
});
|
||||
// accounts.emplace(_system, [&](auto &n)
|
||||
// {
|
||||
// n.type = "individual"_n;
|
||||
// n.storages = storages;
|
||||
// n.username = _provider_chairman;
|
||||
// n.status = "active"_n;
|
||||
// n.registrator = _system;
|
||||
// n.referer = ""_n;
|
||||
// n.registered_at = eosio::time_point_sec(eosio::current_time_point().sec_since_epoch());
|
||||
// });
|
||||
|
||||
accounts.emplace(_system, [&](auto &n)
|
||||
{
|
||||
|
||||
@@ -22,11 +22,12 @@
|
||||
{
|
||||
require_auth(coopname);
|
||||
|
||||
auto cooperative = get_cooperative_or_fail(coopname);
|
||||
get_cooperative_or_fail(coopname);
|
||||
|
||||
eosio::check(_root_govern_symbol == initial.symbol, "Неверный символ");
|
||||
eosio::check(_root_govern_symbol == minimum.symbol, "Неверный символ");
|
||||
|
||||
eosio::check(created_at.sec_since_epoch() <= eosio::current_time_point().sec_since_epoch(), "Дата created_at должна быть в прошлом" );
|
||||
eosio::check(cooperative.initial.symbol == initial.symbol, "Неверный символ");
|
||||
eosio::check(cooperative.initial.symbol == minimum.symbol, "Неверный символ");
|
||||
|
||||
authority active_auth;
|
||||
active_auth.threshold = 1;
|
||||
|
||||
@@ -7,6 +7,10 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(soviet soviet soviet.cpp)
|
||||
target_compile_definitions(soviet PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(soviet PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -19,7 +19,7 @@ void soviet::createboard(eosio::name coopname, eosio::name username, eosio::name
|
||||
|
||||
check_auth_or_fail(_soviet, coopname, username, "createboard"_n);
|
||||
|
||||
eosio::name payer = username;
|
||||
eosio::name payer = coopname;
|
||||
|
||||
cooperatives2_index coops(_registrator, _registrator.value);
|
||||
auto org = coops.find(coopname.value);
|
||||
@@ -55,6 +55,7 @@ void soviet::createboard(eosio::name coopname, eosio::name username, eosio::name
|
||||
}
|
||||
|
||||
eosio::check(has_chairman, "Председатель кооператива должен быть указан в членах совета");
|
||||
eosio::check(members.size() >= MIN_SOVIET_MEMBERS_COUNT, "Количество членов совета должно быть не менее " + std::to_string(MIN_SOVIET_MEMBERS_COUNT));
|
||||
|
||||
addresses_index addresses(_soviet, coopname.value);
|
||||
address_data data;
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
add_contract(eosio.bios eosio.bios ${CMAKE_CURRENT_SOURCE_DIR}/src/eosio.bios.cpp)
|
||||
target_compile_definitions(eosio.bios PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(eosio.bios PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
target_include_directories(eosio.bios
|
||||
PUBLIC
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
add_contract(eosio.boot eosio.boot ${CMAKE_CURRENT_SOURCE_DIR}/src/eosio.boot.cpp)
|
||||
target_compile_definitions(eosio.boot PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(eosio.boot PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
target_include_directories(eosio.boot
|
||||
PUBLIC
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
add_contract(eosio.msig eosio.msig ${CMAKE_CURRENT_SOURCE_DIR}/src/eosio.msig.cpp)
|
||||
target_compile_definitions(eosio.msig PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(eosio.msig PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
target_include_directories(eosio.msig
|
||||
PUBLIC
|
||||
|
||||
@@ -12,7 +12,11 @@ add_contract(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/limit_auth_changes.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/block_info.cpp)
|
||||
|
||||
target_compile_definitions(eosio.system PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(eosio.system PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
if(SYSTEM_CONFIGURABLE_WASM_LIMITS)
|
||||
target_compile_definitions(eosio.system PUBLIC SYSTEM_CONFIGURABLE_WASM_LIMITS)
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
add_contract(eosio.token eosio.token ${CMAKE_CURRENT_SOURCE_DIR}/src/eosio.token.cpp)
|
||||
target_compile_definitions(eosio.token PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(eosio.token PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
target_include_directories(eosio.token
|
||||
PUBLIC
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
add_contract(eosio.wrap eosio.wrap ${CMAKE_CURRENT_SOURCE_DIR}/src/eosio.wrap.cpp)
|
||||
target_compile_definitions(eosio.wrap PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(eosio.wrap PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
target_include_directories(eosio.wrap
|
||||
PUBLIC
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
add_contract(sendinline sendinline ${CMAKE_CURRENT_SOURCE_DIR}/src/sendinline.cpp)
|
||||
target_compile_definitions(sendinline PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(sendinline PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
target_include_directories(sendinline PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
"$<TARGET_PROPERTY:eosio.system,INTERFACE_INCLUDE_DIRECTORIES>")
|
||||
|
||||
@@ -7,6 +7,10 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(test test test.cpp)
|
||||
target_compile_definitions(test PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(test PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -1,26 +1,10 @@
|
||||
#include "test.hpp"
|
||||
|
||||
#include "../lib/consts.hpp"
|
||||
/**
|
||||
* @brief Инициализирует тестовую запись
|
||||
*/
|
||||
void test::init(uint64_t record_id) {
|
||||
require_auth(get_self());
|
||||
|
||||
testrecords_index records(get_self(), get_self().value);
|
||||
|
||||
// Проверяем, что записи еще нет
|
||||
auto existing = records.find(record_id);
|
||||
eosio::check(existing == records.end(), "Запись уже существует");
|
||||
|
||||
// Создаем новую запись
|
||||
records.emplace(get_self(), [&](auto &r) {
|
||||
r.id = record_id;
|
||||
r.counter = 0;
|
||||
r.value = 100;
|
||||
r.status = "initialized";
|
||||
});
|
||||
|
||||
print("Инициализирована запись ID: ", record_id, " со значением: 100\n");
|
||||
print("MIN_SOVIET_MEMBERS_COUNT: ", MIN_SOVIET_MEMBERS_COUNT, "\n");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,5 +7,9 @@ find_package(cdt)
|
||||
|
||||
# Добавление контракта
|
||||
add_contract(wallet wallet wallet.cpp)
|
||||
target_compile_definitions(wallet PUBLIC IS_TESTNET=${IS_TESTNET})
|
||||
if(IS_TESTNET)
|
||||
target_compile_definitions(wallet PUBLIC IS_TESTNET=1)
|
||||
else()
|
||||
# Не определяем IS_TESTNET для продакшн режима
|
||||
endif()
|
||||
# target_include_directories( fund PUBLIC ${CMAKE_SOURCE_DIR}/include )
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build:all": "./build-all.sh",
|
||||
"build:all:test": "./build-all.sh test",
|
||||
"build:one": "./build.sh $1",
|
||||
"build:one:test": "contract=$1 mode=test ./build.sh",
|
||||
"enter": "./boot/scripts/enter.sh",
|
||||
"testnet": "git checkout testnet && git merge dev && lerna publish prerelease && git push && git checkout dev && git merge testnet",
|
||||
"production": "git checkout main && git merge -X theirs testnet && lerna publish --conventional-commits --conventional-graduate && git push && git checkout dev && git merge main",
|
||||
|
||||
@@ -6209,6 +6209,11 @@ type Mutation {
|
||||
"""
|
||||
supplyOnRequest(data: SupplyOnRequestInput!): Transaction!
|
||||
|
||||
"""
|
||||
Запустить воркфлоу уведомлений (только для председателя или server-secret)
|
||||
"""
|
||||
triggerNotificationWorkflow(data: TriggerNotificationWorkflowInput!): TriggerNotificationWorkflowResult!
|
||||
|
||||
"""Удалить расширение"""
|
||||
uninstallExtension(data: UninstallExtensionInput!): Boolean!
|
||||
|
||||
@@ -6239,6 +6244,11 @@ type Mutation {
|
||||
voteOnAnnualGeneralMeet(data: VoteOnAnnualGeneralMeetInput!): MeetAggregate!
|
||||
}
|
||||
|
||||
input NotificationWorkflowRecipientInput {
|
||||
"""Username получателя"""
|
||||
username: String!
|
||||
}
|
||||
|
||||
input NotifyOnAnnualGeneralMeetInput {
|
||||
coopname: String!
|
||||
meet_hash: String!
|
||||
@@ -8714,6 +8724,31 @@ type Transaction {
|
||||
transaction: JSON
|
||||
}
|
||||
|
||||
input TriggerNotificationWorkflowInput {
|
||||
"""Имя воркфлоу для запуска"""
|
||||
name: String!
|
||||
|
||||
"""Данные для шаблона уведомления"""
|
||||
payload: JSONObject
|
||||
|
||||
"""Получатели уведомления"""
|
||||
to: [NotificationWorkflowRecipientInput!]!
|
||||
}
|
||||
|
||||
type TriggerNotificationWorkflowResult {
|
||||
"""Статус подтверждения обработки"""
|
||||
acknowledged: Boolean!
|
||||
|
||||
"""Список ошибок (если есть)"""
|
||||
error: [String!]
|
||||
|
||||
"""Статус операции"""
|
||||
status: String!
|
||||
|
||||
"""ID транзакции"""
|
||||
transactionId: String!
|
||||
}
|
||||
|
||||
input UninstallExtensionInput {
|
||||
"""Фильтр по имени"""
|
||||
name: String!
|
||||
|
||||
@@ -44,7 +44,7 @@ q-layout(view='lHh LpR fff')
|
||||
template(v-for='action in rightDrawerActions', :key='action.id')
|
||||
component(:is='action.component', v-bind='action.props')
|
||||
|
||||
q-footer(v-if='!loggedIn && system.info.system_status !== "install"', :class='headerClass', bordered)
|
||||
q-footer(v-if='!loggedIn && system.info.system_status !== Zeus.SystemStatus.install && system.info.system_status !== Zeus.SystemStatus.initialized', :class='headerClass', bordered)
|
||||
ContactsFooter(:text='footerText')
|
||||
|
||||
q-page-container
|
||||
@@ -66,6 +66,7 @@ import { useDefaultLayoutLogic } from './useDefaultLayoutLogic';
|
||||
import { usePWAThemeColor } from 'src/shared/lib/composables/usePWAThemeColor';
|
||||
import { useRightDrawerReader } from 'src/shared/hooks/useRightDrawer';
|
||||
import { WindowLoader } from 'src/shared/ui/Loader';
|
||||
import { Zeus } from '@coopenomics/sdk';
|
||||
const desktop = useDesktopStore();
|
||||
const system = useSystemStore();
|
||||
const { rightDrawerActions } = useRightDrawerReader();
|
||||
|
||||
@@ -28,7 +28,8 @@ const logout = async () => {
|
||||
try {
|
||||
await logout();
|
||||
router.push({ name: 'signin' });
|
||||
window.location.reload();
|
||||
|
||||
// window.location.reload();
|
||||
} catch (e: any) {
|
||||
FailAlert('Ошибка при выходе: ' + e.message);
|
||||
}
|
||||
|
||||
@@ -3,3 +3,6 @@ export * as CreateWebPushSubscription from './createWebPushSubscription'
|
||||
|
||||
/** Деактивировать веб-пуш подписку по ID */
|
||||
export * as DeactivateWebPushSubscriptionById from './deactivateWebPushSubscriptionById'
|
||||
|
||||
/** Запустить воркфлоу уведомлений */
|
||||
export * as TriggerNotificationWorkflow from './triggerNotificationWorkflow'
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { rawTriggerNotificationWorkflowResultSelector } from '../../selectors/notification/triggerNotificationWorkflowResultSelector'
|
||||
import { $, type GraphQLTypes, type InputType, type ModelTypes, Selector } from '../../zeus/index'
|
||||
|
||||
export const name = 'triggerNotificationWorkflow'
|
||||
|
||||
/**
|
||||
* Запустить воркфлоу уведомлений
|
||||
*/
|
||||
export const mutation = Selector('Mutation')({
|
||||
[name]: [{ data: $('data', 'TriggerNotificationWorkflowInput!') }, rawTriggerNotificationWorkflowResultSelector],
|
||||
})
|
||||
|
||||
export interface IInput {
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
[key: string]: unknown
|
||||
|
||||
data: ModelTypes['TriggerNotificationWorkflowInput']
|
||||
}
|
||||
|
||||
export type IOutput = InputType<GraphQLTypes['Mutation'], typeof mutation>
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from './createSubscriptionResponseSelector'
|
||||
export * from './subscriptionStatsSelector'
|
||||
export * from './triggerNotificationWorkflowResultSelector'
|
||||
export * from './webPushSubscriptionSelector'
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
import type { MakeAllFieldsRequired } from '../../utils/MakeAllFieldsRequired'
|
||||
import { type ModelTypes, Selector, type ValueTypes } from '../../zeus/index'
|
||||
|
||||
// Селектор для TriggerNotificationWorkflowResult
|
||||
const rawTriggerNotificationWorkflowResultSelector = {
|
||||
transactionId: true,
|
||||
acknowledged: true,
|
||||
status: true,
|
||||
error: true,
|
||||
}
|
||||
|
||||
// Проверка валидности TriggerNotificationWorkflowResult
|
||||
const _validate: MakeAllFieldsRequired<ValueTypes['TriggerNotificationWorkflowResult']> = rawTriggerNotificationWorkflowResultSelector
|
||||
|
||||
export type triggerNotificationWorkflowResultModel = ModelTypes['TriggerNotificationWorkflowResult']
|
||||
export const triggerNotificationWorkflowResultSelector = Selector('TriggerNotificationWorkflowResult')(rawTriggerNotificationWorkflowResultSelector)
|
||||
export { rawTriggerNotificationWorkflowResultSelector }
|
||||
@@ -951,6 +951,9 @@ export const AllTypesProps: Record<string,any> = {
|
||||
supplyOnRequest:{
|
||||
data:"SupplyOnRequestInput"
|
||||
},
|
||||
triggerNotificationWorkflow:{
|
||||
data:"TriggerNotificationWorkflowInput"
|
||||
},
|
||||
uninstallExtension:{
|
||||
data:"UninstallExtensionInput"
|
||||
},
|
||||
@@ -978,6 +981,9 @@ export const AllTypesProps: Record<string,any> = {
|
||||
voteOnAnnualGeneralMeet:{
|
||||
data:"VoteOnAnnualGeneralMeetInput"
|
||||
}
|
||||
},
|
||||
NotificationWorkflowRecipientInput:{
|
||||
|
||||
},
|
||||
NotifyOnAnnualGeneralMeetInput:{
|
||||
notification:"AnnualGeneralMeetingNotificationSignedDocumentInput"
|
||||
@@ -1385,6 +1391,10 @@ export const AllTypesProps: Record<string,any> = {
|
||||
document:"AssetContributionActSignedDocumentInput"
|
||||
},
|
||||
SystemStatus: "enum" as const,
|
||||
TriggerNotificationWorkflowInput:{
|
||||
payload:"JSONObject",
|
||||
to:"NotificationWorkflowRecipientInput"
|
||||
},
|
||||
UninstallExtensionInput:{
|
||||
|
||||
},
|
||||
@@ -2737,6 +2747,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
startInstall:"StartInstallResult",
|
||||
startResetKey:"Boolean",
|
||||
supplyOnRequest:"Transaction",
|
||||
triggerNotificationWorkflow:"TriggerNotificationWorkflowResult",
|
||||
uninstallExtension:"Boolean",
|
||||
unpublishRequest:"Transaction",
|
||||
updateAccount:"Account",
|
||||
@@ -3194,6 +3205,12 @@ export const ReturnTypes: Record<string,any> = {
|
||||
signer:"JSON",
|
||||
transaction:"JSON"
|
||||
},
|
||||
TriggerNotificationWorkflowResult:{
|
||||
acknowledged:"Boolean",
|
||||
error:"String",
|
||||
status:"String",
|
||||
transactionId:"String"
|
||||
},
|
||||
UserAccount:{
|
||||
meta:"String",
|
||||
referer:"String",
|
||||
|
||||
@@ -5069,6 +5069,7 @@ signBySecretaryOnAnnualGeneralMeet?: [{ data: ValueTypes["SignBySecretaryOnAnnua
|
||||
startInstall?: [{ data: ValueTypes["StartInstallInput"] | Variable<any, string>},ValueTypes["StartInstallResult"]],
|
||||
startResetKey?: [{ data: ValueTypes["StartResetKeyInput"] | Variable<any, string>},boolean | `@${string}`],
|
||||
supplyOnRequest?: [{ data: ValueTypes["SupplyOnRequestInput"] | Variable<any, string>},ValueTypes["Transaction"]],
|
||||
triggerNotificationWorkflow?: [{ data: ValueTypes["TriggerNotificationWorkflowInput"] | Variable<any, string>},ValueTypes["TriggerNotificationWorkflowResult"]],
|
||||
uninstallExtension?: [{ data: ValueTypes["UninstallExtensionInput"] | Variable<any, string>},boolean | `@${string}`],
|
||||
unpublishRequest?: [{ data: ValueTypes["UnpublishRequestInput"] | Variable<any, string>},ValueTypes["Transaction"]],
|
||||
updateAccount?: [{ data: ValueTypes["UpdateAccountInput"] | Variable<any, string>},ValueTypes["Account"]],
|
||||
@@ -5080,6 +5081,10 @@ updateSystem?: [{ data: ValueTypes["Update"] | Variable<any, string>},ValueTypes
|
||||
voteOnAnnualGeneralMeet?: [{ data: ValueTypes["VoteOnAnnualGeneralMeetInput"] | Variable<any, string>},ValueTypes["MeetAggregate"]],
|
||||
__typename?: boolean | `@${string}`
|
||||
}>;
|
||||
["NotificationWorkflowRecipientInput"]: {
|
||||
/** Username получателя */
|
||||
username: string | Variable<any, string>
|
||||
};
|
||||
["NotifyOnAnnualGeneralMeetInput"]: {
|
||||
coopname: string | Variable<any, string>,
|
||||
meet_hash: string | Variable<any, string>,
|
||||
@@ -6773,6 +6778,25 @@ searchPrivateAccounts?: [{ data: ValueTypes["SearchPrivateAccountsInput"] | Vari
|
||||
/** Итоговая транзакция */
|
||||
transaction?:boolean | `@${string}`,
|
||||
__typename?: boolean | `@${string}`
|
||||
}>;
|
||||
["TriggerNotificationWorkflowInput"]: {
|
||||
/** Имя воркфлоу для запуска */
|
||||
name: string | Variable<any, string>,
|
||||
/** Данные для шаблона уведомления */
|
||||
payload?: ValueTypes["JSONObject"] | undefined | null | Variable<any, string>,
|
||||
/** Получатели уведомления */
|
||||
to: Array<ValueTypes["NotificationWorkflowRecipientInput"]> | Variable<any, string>
|
||||
};
|
||||
["TriggerNotificationWorkflowResult"]: AliasType<{
|
||||
/** Статус подтверждения обработки */
|
||||
acknowledged?:boolean | `@${string}`,
|
||||
/** Список ошибок (если есть) */
|
||||
error?:boolean | `@${string}`,
|
||||
/** Статус операции */
|
||||
status?:boolean | `@${string}`,
|
||||
/** ID транзакции */
|
||||
transactionId?:boolean | `@${string}`,
|
||||
__typename?: boolean | `@${string}`
|
||||
}>;
|
||||
["UninstallExtensionInput"]: {
|
||||
/** Фильтр по имени */
|
||||
@@ -11262,6 +11286,7 @@ signBySecretaryOnAnnualGeneralMeet?: [{ data: ResolverInputTypes["SignBySecretar
|
||||
startInstall?: [{ data: ResolverInputTypes["StartInstallInput"]},ResolverInputTypes["StartInstallResult"]],
|
||||
startResetKey?: [{ data: ResolverInputTypes["StartResetKeyInput"]},boolean | `@${string}`],
|
||||
supplyOnRequest?: [{ data: ResolverInputTypes["SupplyOnRequestInput"]},ResolverInputTypes["Transaction"]],
|
||||
triggerNotificationWorkflow?: [{ data: ResolverInputTypes["TriggerNotificationWorkflowInput"]},ResolverInputTypes["TriggerNotificationWorkflowResult"]],
|
||||
uninstallExtension?: [{ data: ResolverInputTypes["UninstallExtensionInput"]},boolean | `@${string}`],
|
||||
unpublishRequest?: [{ data: ResolverInputTypes["UnpublishRequestInput"]},ResolverInputTypes["Transaction"]],
|
||||
updateAccount?: [{ data: ResolverInputTypes["UpdateAccountInput"]},ResolverInputTypes["Account"]],
|
||||
@@ -11273,6 +11298,10 @@ updateSystem?: [{ data: ResolverInputTypes["Update"]},ResolverInputTypes["System
|
||||
voteOnAnnualGeneralMeet?: [{ data: ResolverInputTypes["VoteOnAnnualGeneralMeetInput"]},ResolverInputTypes["MeetAggregate"]],
|
||||
__typename?: boolean | `@${string}`
|
||||
}>;
|
||||
["NotificationWorkflowRecipientInput"]: {
|
||||
/** Username получателя */
|
||||
username: string
|
||||
};
|
||||
["NotifyOnAnnualGeneralMeetInput"]: {
|
||||
coopname: string,
|
||||
meet_hash: string,
|
||||
@@ -12968,6 +12997,25 @@ searchPrivateAccounts?: [{ data: ResolverInputTypes["SearchPrivateAccountsInput"
|
||||
/** Итоговая транзакция */
|
||||
transaction?:boolean | `@${string}`,
|
||||
__typename?: boolean | `@${string}`
|
||||
}>;
|
||||
["TriggerNotificationWorkflowInput"]: {
|
||||
/** Имя воркфлоу для запуска */
|
||||
name: string,
|
||||
/** Данные для шаблона уведомления */
|
||||
payload?: ResolverInputTypes["JSONObject"] | undefined | null,
|
||||
/** Получатели уведомления */
|
||||
to: Array<ResolverInputTypes["NotificationWorkflowRecipientInput"]>
|
||||
};
|
||||
["TriggerNotificationWorkflowResult"]: AliasType<{
|
||||
/** Статус подтверждения обработки */
|
||||
acknowledged?:boolean | `@${string}`,
|
||||
/** Список ошибок (если есть) */
|
||||
error?:boolean | `@${string}`,
|
||||
/** Статус операции */
|
||||
status?:boolean | `@${string}`,
|
||||
/** ID транзакции */
|
||||
transactionId?:boolean | `@${string}`,
|
||||
__typename?: boolean | `@${string}`
|
||||
}>;
|
||||
["UninstallExtensionInput"]: {
|
||||
/** Фильтр по имени */
|
||||
@@ -17503,6 +17551,8 @@ export type ModelTypes = {
|
||||
startResetKey: boolean,
|
||||
/** Подтвердить поставку имущества Поставщиком по заявке Заказчика и акту приёма-передачи */
|
||||
supplyOnRequest: ModelTypes["Transaction"],
|
||||
/** Запустить воркфлоу уведомлений (только для председателя или server-secret) */
|
||||
triggerNotificationWorkflow: ModelTypes["TriggerNotificationWorkflowResult"],
|
||||
/** Удалить расширение */
|
||||
uninstallExtension: boolean,
|
||||
/** Снять с публикации заявку */
|
||||
@@ -17521,6 +17571,10 @@ export type ModelTypes = {
|
||||
updateSystem: ModelTypes["SystemInfo"],
|
||||
/** Голосование на общем собрании пайщиков */
|
||||
voteOnAnnualGeneralMeet: ModelTypes["MeetAggregate"]
|
||||
};
|
||||
["NotificationWorkflowRecipientInput"]: {
|
||||
/** Username получателя */
|
||||
username: string
|
||||
};
|
||||
["NotifyOnAnnualGeneralMeetInput"]: {
|
||||
coopname: string,
|
||||
@@ -19190,6 +19244,24 @@ export type ModelTypes = {
|
||||
signer?: ModelTypes["JSON"] | undefined | null,
|
||||
/** Итоговая транзакция */
|
||||
transaction?: ModelTypes["JSON"] | undefined | null
|
||||
};
|
||||
["TriggerNotificationWorkflowInput"]: {
|
||||
/** Имя воркфлоу для запуска */
|
||||
name: string,
|
||||
/** Данные для шаблона уведомления */
|
||||
payload?: ModelTypes["JSONObject"] | undefined | null,
|
||||
/** Получатели уведомления */
|
||||
to: Array<ModelTypes["NotificationWorkflowRecipientInput"]>
|
||||
};
|
||||
["TriggerNotificationWorkflowResult"]: {
|
||||
/** Статус подтверждения обработки */
|
||||
acknowledged: boolean,
|
||||
/** Список ошибок (если есть) */
|
||||
error?: Array<string> | undefined | null,
|
||||
/** Статус операции */
|
||||
status: string,
|
||||
/** ID транзакции */
|
||||
transactionId: string
|
||||
};
|
||||
["UninstallExtensionInput"]: {
|
||||
/** Фильтр по имени */
|
||||
@@ -23819,6 +23891,8 @@ export type GraphQLTypes = {
|
||||
startResetKey: boolean,
|
||||
/** Подтвердить поставку имущества Поставщиком по заявке Заказчика и акту приёма-передачи */
|
||||
supplyOnRequest: GraphQLTypes["Transaction"],
|
||||
/** Запустить воркфлоу уведомлений (только для председателя или server-secret) */
|
||||
triggerNotificationWorkflow: GraphQLTypes["TriggerNotificationWorkflowResult"],
|
||||
/** Удалить расширение */
|
||||
uninstallExtension: boolean,
|
||||
/** Снять с публикации заявку */
|
||||
@@ -23837,6 +23911,10 @@ export type GraphQLTypes = {
|
||||
updateSystem: GraphQLTypes["SystemInfo"],
|
||||
/** Голосование на общем собрании пайщиков */
|
||||
voteOnAnnualGeneralMeet: GraphQLTypes["MeetAggregate"]
|
||||
};
|
||||
["NotificationWorkflowRecipientInput"]: {
|
||||
/** Username получателя */
|
||||
username: string
|
||||
};
|
||||
["NotifyOnAnnualGeneralMeetInput"]: {
|
||||
coopname: string,
|
||||
@@ -25582,6 +25660,25 @@ export type GraphQLTypes = {
|
||||
signer?: GraphQLTypes["JSON"] | undefined | null,
|
||||
/** Итоговая транзакция */
|
||||
transaction?: GraphQLTypes["JSON"] | undefined | null
|
||||
};
|
||||
["TriggerNotificationWorkflowInput"]: {
|
||||
/** Имя воркфлоу для запуска */
|
||||
name: string,
|
||||
/** Данные для шаблона уведомления */
|
||||
payload?: GraphQLTypes["JSONObject"] | undefined | null,
|
||||
/** Получатели уведомления */
|
||||
to: Array<GraphQLTypes["NotificationWorkflowRecipientInput"]>
|
||||
};
|
||||
["TriggerNotificationWorkflowResult"]: {
|
||||
__typename: "TriggerNotificationWorkflowResult",
|
||||
/** Статус подтверждения обработки */
|
||||
acknowledged: boolean,
|
||||
/** Список ошибок (если есть) */
|
||||
error?: Array<string> | undefined | null,
|
||||
/** Статус операции */
|
||||
status: string,
|
||||
/** ID транзакции */
|
||||
transactionId: string
|
||||
};
|
||||
["UninstallExtensionInput"]: {
|
||||
/** Фильтр по имени */
|
||||
@@ -26275,6 +26372,7 @@ type ZEUS_VARIABLES = {
|
||||
["MakeClearanceInput"]: ValueTypes["MakeClearanceInput"];
|
||||
["MetaDocumentInput"]: ValueTypes["MetaDocumentInput"];
|
||||
["ModerateRequestInput"]: ValueTypes["ModerateRequestInput"];
|
||||
["NotificationWorkflowRecipientInput"]: ValueTypes["NotificationWorkflowRecipientInput"];
|
||||
["NotifyOnAnnualGeneralMeetInput"]: ValueTypes["NotifyOnAnnualGeneralMeetInput"];
|
||||
["OpenProjectInput"]: ValueTypes["OpenProjectInput"];
|
||||
["OrganizationDetailsInput"]: ValueTypes["OrganizationDetailsInput"];
|
||||
@@ -26351,6 +26449,7 @@ type ZEUS_VARIABLES = {
|
||||
["SubmitVoteInput"]: ValueTypes["SubmitVoteInput"];
|
||||
["SupplyOnRequestInput"]: ValueTypes["SupplyOnRequestInput"];
|
||||
["SystemStatus"]: ValueTypes["SystemStatus"];
|
||||
["TriggerNotificationWorkflowInput"]: ValueTypes["TriggerNotificationWorkflowInput"];
|
||||
["UninstallExtensionInput"]: ValueTypes["UninstallExtensionInput"];
|
||||
["UnpublishRequestInput"]: ValueTypes["UnpublishRequestInput"];
|
||||
["Update"]: ValueTypes["Update"];
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
"build:lib": "lerna run build --scope @coopenomics/factory --scope @coopenomics/cooptypes",
|
||||
"build:contracts:all": "lerna run build:all --scope @coopenomics/contracts",
|
||||
"build:contract": "lerna run build:one --scope @coopenomics/contracts --",
|
||||
"build:contracts:all:test": "lerna run build:all:test --scope @coopenomics/contracts",
|
||||
"build:contract:test": "lerna run build:one:test --scope @coopenomics/contracts --",
|
||||
"dev:desktop": "lerna run dev --parallel --scope @coopenomics/desktop",
|
||||
"dev:backend": "lerna run dev --parallel --scope @coopenomics/parser --scope @coopenomics/controller",
|
||||
"dev:lib": "lerna run dev --parallel --scope @coopenomics/factory --scope cooptypes",
|
||||
|
||||
Reference in New Issue
Block a user