UNPKG

@cosmwasm/ts-codegen

Version:

@cosmwasm/ts-codegen converts your CosmWasm smart contracts into dev-friendly TypeScript classes so you can focus on shipping code.

175 lines (174 loc) 4.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = __importDefault(require("../index")); const prompt_1 = require("../utils/prompt"); exports.default = async (argv) => { const questions = [ { _: true, type: 'path', name: 'schema', message: 'which directory contains the the Rust contracts?', default: './schema' }, { _: true, type: 'path', name: 'out', message: 'where is the output directory?', default: './ts' }, { _: true, type: 'string', name: 'name', message: 'contract name?' }, { type: 'checkbox', name: 'plugin', message: 'which plugins?', choices: [ 'client', 'recoil', 'react-query', 'message-composer' ] }, { type: 'confirm', name: 'bundle', message: 'enable bundle?', default: true } ]; if (argv.typesOnly) { argv.plugin = 'types'; } let { schema, out, name, plugin, bundle } = await (0, prompt_1.prompt)(questions, argv); if (!Array.isArray(plugin)) plugin = [plugin]; ///////// REACT QUERY const questions2 = []; if (plugin.includes('react-query')) { // @ts-ignore [].push.apply(questions2, [ { type: 'confirm', name: 'optionalClient', message: 'optionalClient?', default: false }, { type: 'list', name: 'version', message: 'which react-query version?', default: 'v4', choices: ['v3', 'v4'] }, { type: 'confirm', name: 'queryKeys', message: 'queryKeys?', default: false }, ]); } ; const { optionalClient, version, queryKeys } = await (0, prompt_1.prompt)(questions2, argv); const questions3 = []; if (version === 'v4') { [].push.apply(questions3, [ // currently we only support v4 for useMutation { type: 'confirm', name: 'mutations', message: 'Generate useMutation hooks?', default: false } ]); } ; const { mutations } = await (0, prompt_1.prompt)(questions3, argv); const queryFactoryQuestions = []; if (queryKeys) { [].push.apply(queryFactoryQuestions, [ // Only can use queryFactory if queryKeys is enabled { type: 'confirm', name: 'queryFactory', message: 'queryFactory? ', default: false } ]); } ; const { queryFactory } = await (0, prompt_1.prompt)(queryFactoryQuestions, argv); ///////// END REACT QUERY ///////// BUNDLE const questions4 = []; if (bundle) { [].push.apply(questions4, [ { type: 'string', name: 'bundleFile', message: 'bundleFile?', default: 'index.ts' }, { type: 'string', name: 'bundleScope', message: 'bundleScope?', default: 'contracts' } ]); } ; const { bundleFile, bundleScope } = await (0, prompt_1.prompt)(questions4, argv); ///////// END BUNDLE const options = { types: { enabled: true }, client: { enabled: plugin.includes('client') || plugin.includes('recoil') || plugin.includes('react-query') }, reactQuery: { enabled: plugin.includes('react-query'), optionalClient, queryKeys, version, mutations, queryFactory }, recoil: { enabled: plugin.includes('recoil'), }, messageComposer: { enabled: plugin.includes('message-composer') }, messageBuilder: { enabled: plugin.includes('message-builder') }, bundle: { enabled: bundle, scope: bundleScope, bundleFile } }; await (0, index_1.default)({ contracts: [ { name, dir: schema } ], outPath: out, options }); };