vasku
Version:
TVM-Solidity contract development framework
78 lines (77 loc) • 3.52 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAndSetDefaults = void 0;
const joi_1 = __importDefault(require("joi"));
const giverLabels_1 = require("./types/giverLabels");
const defaults = {
compile: {
compiler: 'latest',
linker: 'latest',
include: ['**/*.tsol', '**/*.sol'],
exclude: ['**/interface/*', '**/interfaces/*']
},
networks: {
local: {
endpoints: ['http://localhost'],
giver: giverLabels_1.GIVER.se.v3
}
},
se: {
version: 'latest',
instance: 'default',
port: 8080,
dbPort: 'none'
},
paths: {
build: 'build',
cache: 'cache',
contracts: 'contracts',
keys: 'keys',
tests: 'tests',
scripts: 'scripts'
},
timeout: 60000
};
function validateAndSetDefaults(config) {
const schema = joi_1.default.object({
compile: joi_1.default.object({
compiler: joi_1.default.string().default(defaults.compile.compiler),
linker: joi_1.default.string().default(defaults.compile.linker),
include: joi_1.default.array().items(joi_1.default.string()).default(defaults.compile.include),
exclude: joi_1.default.array().items(joi_1.default.string()).default(defaults.compile.exclude)
}).default(defaults.compile),
networks: joi_1.default.object().pattern(joi_1.default.string(), joi_1.default.alternatives(joi_1.default.object({
endpoints: joi_1.default.array().items(joi_1.default.string()).default(defaults.networks.local.endpoints),
giver: joi_1.default.string().valid(...giverLabels_1.SE_GIVERS).default(defaults.networks.local.giver)
}), joi_1.default.object({
endpoints: joi_1.default.array().items(joi_1.default.string()).required(),
giver: joi_1.default.string().valid(...giverLabels_1.GIVERS).required(),
keys: joi_1.default.object({
name: joi_1.default.any(),
file: joi_1.default.any()
})
})).default(defaults.networks.local)),
se: joi_1.default.object({
version: joi_1.default.string().default(defaults.se.version),
image: joi_1.default.string().allow(''),
container: joi_1.default.string().allow(''),
port: joi_1.default.number().integer().default(defaults.se.port),
dbPort: joi_1.default.alternatives(joi_1.default.number().integer(), joi_1.default.string()).default(defaults.se.dbPort),
instance: joi_1.default.string().default(defaults.se.instance)
}).default(defaults.se),
paths: joi_1.default.object({
build: joi_1.default.string().default(defaults.paths.build),
cache: joi_1.default.string().default(defaults.paths.cache),
contracts: joi_1.default.string().default(defaults.paths.contracts),
keys: joi_1.default.string().default(defaults.paths.keys),
tests: joi_1.default.string().default(defaults.paths.tests),
scripts: joi_1.default.string().default(defaults.paths.scripts)
}).default(defaults.paths),
timeout: joi_1.default.number().default(defaults.timeout)
});
return schema.validate(config);
}
exports.validateAndSetDefaults = validateAndSetDefaults;