@cosmwasm/ts-codegen 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +89 -0
  2. package/main/clean.js +62 -0
  3. package/main/cleanse.js +89 -0
  4. package/main/cli.js +69 -0
  5. package/main/cmds.js +26 -0
  6. package/main/commands/boilerplate.js +195 -0
  7. package/main/commands/from-partial.js +74 -0
  8. package/main/commands/generate.js +74 -0
  9. package/main/commands/react-query.js +74 -0
  10. package/main/commands/recoil.js +74 -0
  11. package/main/cosmwasm-typescript-gen.js +28 -0
  12. package/main/file.js +47 -0
  13. package/main/from-partial.js +92 -0
  14. package/main/generate.js +109 -0
  15. package/main/header.js +14 -0
  16. package/main/index.js +59 -0
  17. package/main/parse.js +49 -0
  18. package/main/prompt.js +118 -0
  19. package/main/react-query.js +83 -0
  20. package/main/recoil.js +86 -0
  21. package/main/utils.js +123 -0
  22. package/module/clean.js +49 -0
  23. package/module/cleanse.js +76 -0
  24. package/module/cli.js +20 -0
  25. package/module/cmds.js +12 -0
  26. package/module/commands/boilerplate.js +116 -0
  27. package/module/commands/from-partial.js +33 -0
  28. package/module/commands/generate.js +33 -0
  29. package/module/commands/react-query.js +33 -0
  30. package/module/commands/recoil.js +33 -0
  31. package/module/cosmwasm-typescript-gen.js +8 -0
  32. package/module/file.js +21 -0
  33. package/module/from-partial.js +41 -0
  34. package/module/generate.js +57 -0
  35. package/module/header.js +8 -0
  36. package/module/index.js +5 -0
  37. package/module/parse.js +37 -0
  38. package/module/prompt.js +68 -0
  39. package/module/react-query.js +31 -0
  40. package/module/recoil.js +34 -0
  41. package/module/utils.js +52 -0
  42. package/package.json +95 -0
  43. package/types/clean.d.ts +1 -0
  44. package/types/cli.d.ts +1 -0
  45. package/types/cmds.d.ts +1 -0
  46. package/types/commands/boilerplate.d.ts +2 -0
  47. package/types/commands/from-partial.d.ts +2 -0
  48. package/types/commands/generate.d.ts +2 -0
  49. package/types/commands/react-query.d.ts +2 -0
  50. package/types/commands/recoil.d.ts +2 -0
  51. package/types/cosmwasm-typescript-gen.d.ts +2 -0
  52. package/types/file.d.ts +2 -0
  53. package/types/from-partial.d.ts +2 -0
  54. package/types/generate.d.ts +2 -0
  55. package/types/header.d.ts +1 -0
  56. package/types/index.d.ts +5 -0
  57. package/types/parse.d.ts +1 -0
  58. package/types/prompt.d.ts +3 -0
  59. package/types/react-query.d.ts +2 -0
  60. package/types/recoil.d.ts +2 -0
  61. package/types/utils.d.ts +4 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _case = require("case");
17
+
18
+ var _header = require("./header");
19
+
20
+ var _path = require("path");
21
+
22
+ var _mkdirp = require("mkdirp");
23
+
24
+ var w = _interopRequireWildcard(require("wasm-ast-types"));
25
+
26
+ var t = _interopRequireWildcard(require("@babel/types"));
27
+
28
+ var _fs = require("fs");
29
+
30
+ var _generator = _interopRequireDefault(require("@babel/generator"));
31
+
32
+ var _utils = require("./utils");
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ var _default = /*#__PURE__*/function () {
39
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, schemas, outPath) {
40
+ var RecoilFile, Contract, QueryMsg, typeHash, QueryClient, ReadOnlyInstance, body, code;
41
+ return _regenerator["default"].wrap(function _callee$(_context) {
42
+ while (1) {
43
+ switch (_context.prev = _context.next) {
44
+ case 0:
45
+ RecoilFile = (0, _case.pascal)("".concat(name, "Contract")) + '.react-query.ts';
46
+ Contract = (0, _case.pascal)("".concat(name, "Contract")) + '.ts';
47
+ QueryMsg = (0, _utils.findQueryMsg)(schemas);
48
+ _context.next = 5;
49
+ return (0, _utils.findAndParseTypes)(schemas);
50
+
51
+ case 5:
52
+ typeHash = _context.sent;
53
+ QueryClient = null;
54
+ ReadOnlyInstance = null;
55
+ body = [];
56
+ body.push(w.importStmt(['useQuery', 'UseQueryOptions'], 'react-query'));
57
+ body.push(w.importStmt(Object.keys(typeHash), "./".concat(Contract).replace(/\.ts$/, ''))); // query messages
58
+
59
+ if (QueryMsg) {
60
+ QueryClient = (0, _case.pascal)("".concat(name, "QueryClient"));
61
+ ReadOnlyInstance = (0, _case.pascal)("".concat(name, "ReadOnlyInterface"));
62
+ body.push(w.importStmt([QueryClient], "./".concat(Contract)));
63
+ [].push.apply(body, w.createReactQueryHooks(QueryMsg, name, QueryClient));
64
+ }
65
+
66
+ code = _header.header + (0, _generator["default"])(t.program(body)).code;
67
+ (0, _mkdirp.sync)(outPath);
68
+ (0, _fs.writeFileSync)((0, _path.join)(outPath, RecoilFile), code);
69
+
70
+ case 15:
71
+ case "end":
72
+ return _context.stop();
73
+ }
74
+ }
75
+ }, _callee);
76
+ }));
77
+
78
+ return function (_x, _x2, _x3) {
79
+ return _ref.apply(this, arguments);
80
+ };
81
+ }();
82
+
83
+ exports["default"] = _default;
package/main/recoil.js ADDED
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _case = require("case");
17
+
18
+ var _header = require("./header");
19
+
20
+ var _path = require("path");
21
+
22
+ var _mkdirp = require("mkdirp");
23
+
24
+ var w = _interopRequireWildcard(require("wasm-ast-types"));
25
+
26
+ var t = _interopRequireWildcard(require("@babel/types"));
27
+
28
+ var _fs = require("fs");
29
+
30
+ var _generator = _interopRequireDefault(require("@babel/generator"));
31
+
32
+ var _utils = require("./utils");
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ var _default = /*#__PURE__*/function () {
39
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, schemas, outPath) {
40
+ var RecoilFile, Contract, QueryMsg, typeHash, QueryClient, ReadOnlyInstance, body, code;
41
+ return _regenerator["default"].wrap(function _callee$(_context) {
42
+ while (1) {
43
+ switch (_context.prev = _context.next) {
44
+ case 0:
45
+ RecoilFile = (0, _case.pascal)("".concat(name, "Contract")) + '.recoil.ts';
46
+ Contract = (0, _case.pascal)("".concat(name, "Contract")) + '.ts';
47
+ QueryMsg = (0, _utils.findQueryMsg)(schemas);
48
+ _context.next = 5;
49
+ return (0, _utils.findAndParseTypes)(schemas);
50
+
51
+ case 5:
52
+ typeHash = _context.sent;
53
+ QueryClient = null;
54
+ ReadOnlyInstance = null;
55
+ body = [];
56
+ body.push(w.importStmt(['selectorFamily'], 'recoil'));
57
+ body.push(w.importStmt(['cosmWasmClient'], './chain'));
58
+ body.push(w.importStmt(Object.keys(typeHash), "./".concat(Contract).replace(/\.ts$/, ''))); // query messages
59
+
60
+ if (QueryMsg) {
61
+ QueryClient = (0, _case.pascal)("".concat(name, "QueryClient"));
62
+ ReadOnlyInstance = (0, _case.pascal)("".concat(name, "ReadOnlyInterface"));
63
+ body.push(w.importStmt([QueryClient], "./".concat(Contract)));
64
+ body.push(w.createRecoilQueryClientType());
65
+ body.push(w.createRecoilQueryClient(name, QueryClient));
66
+ [].push.apply(body, w.createRecoilSelectors(name, QueryClient, QueryMsg));
67
+ }
68
+
69
+ code = _header.header + (0, _generator["default"])(t.program(body)).code;
70
+ (0, _mkdirp.sync)(outPath);
71
+ (0, _fs.writeFileSync)((0, _path.join)(outPath, RecoilFile), code);
72
+
73
+ case 16:
74
+ case "end":
75
+ return _context.stop();
76
+ }
77
+ }
78
+ }, _callee);
79
+ }));
80
+
81
+ return function (_x, _x2, _x3) {
82
+ return _ref.apply(this, arguments);
83
+ };
84
+ }();
85
+
86
+ exports["default"] = _default;
package/main/utils.js ADDED
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.readSchemas = exports.findQueryMsg = exports.findExecuteMsg = exports.findAndParseTypes = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _glob = require("glob");
15
+
16
+ var _fs = require("fs");
17
+
18
+ var _cleanse = require("./cleanse");
19
+
20
+ var _jsonSchemaToTypescript = require("json-schema-to-typescript");
21
+
22
+ var _parse = require("./parse");
23
+
24
+ var readSchemas = function readSchemas(_ref) {
25
+ var schemaDir = _ref.schemaDir,
26
+ argv = _ref.argv,
27
+ _ref$clean = _ref.clean,
28
+ clean = _ref$clean === void 0 ? true : _ref$clean;
29
+ var fn = clean ? _cleanse.cleanse : function (str) {
30
+ return str;
31
+ };
32
+ var files = (0, _glob.sync)(schemaDir + '/**/*.json');
33
+ var schemas = files.map(function (file) {
34
+ return JSON.parse((0, _fs.readFileSync)(file, 'utf-8'));
35
+ });
36
+
37
+ if (argv.packed) {
38
+ if (schemas.length !== 1) {
39
+ throw new Error('packed option only supports one file');
40
+ }
41
+
42
+ return Object.values(fn(schemas[0]));
43
+ }
44
+
45
+ return fn(schemas);
46
+ };
47
+
48
+ exports.readSchemas = readSchemas;
49
+
50
+ var findQueryMsg = function findQueryMsg(schemas) {
51
+ var QueryMsg = schemas.find(function (schema) {
52
+ return schema.title === 'QueryMsg';
53
+ });
54
+ return QueryMsg;
55
+ };
56
+
57
+ exports.findQueryMsg = findQueryMsg;
58
+
59
+ var findExecuteMsg = function findExecuteMsg(schemas) {
60
+ var ExecuteMsg = schemas.find(function (schema) {
61
+ return schema.title === 'ExecuteMsg' || schema.title === 'ExecuteMsg_for_Empty' || // if cleanse is used, this is never
62
+ schema.title === 'ExecuteMsgForEmpty';
63
+ });
64
+ return ExecuteMsg;
65
+ };
66
+
67
+ exports.findExecuteMsg = findExecuteMsg;
68
+
69
+ var findAndParseTypes = /*#__PURE__*/function () {
70
+ var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(schemas) {
71
+ var Types, allTypes, typ, _i, _Object$keys, key, result, typeHash;
72
+
73
+ return _regenerator["default"].wrap(function _callee$(_context) {
74
+ while (1) {
75
+ switch (_context.prev = _context.next) {
76
+ case 0:
77
+ Types = schemas;
78
+ allTypes = [];
79
+ _context.t0 = _regenerator["default"].keys(Types);
80
+
81
+ case 3:
82
+ if ((_context.t1 = _context.t0()).done) {
83
+ _context.next = 12;
84
+ break;
85
+ }
86
+
87
+ typ = _context.t1.value;
88
+
89
+ if (Types[typ].definitions) {
90
+ for (_i = 0, _Object$keys = Object.keys(Types[typ].definitions); _i < _Object$keys.length; _i++) {
91
+ key = _Object$keys[_i];
92
+ // set title
93
+ Types[typ].definitions[key].title = key;
94
+ }
95
+ }
96
+
97
+ _context.next = 8;
98
+ return (0, _jsonSchemaToTypescript.compile)(Types[typ], Types[typ].title);
99
+
100
+ case 8:
101
+ result = _context.sent;
102
+ allTypes.push(result);
103
+ _context.next = 3;
104
+ break;
105
+
106
+ case 12:
107
+ typeHash = (0, _parse.parser)(allTypes);
108
+ return _context.abrupt("return", typeHash);
109
+
110
+ case 14:
111
+ case "end":
112
+ return _context.stop();
113
+ }
114
+ }
115
+ }, _callee);
116
+ }));
117
+
118
+ return function findAndParseTypes(_x) {
119
+ return _ref2.apply(this, arguments);
120
+ };
121
+ }();
122
+
123
+ exports.findAndParseTypes = findAndParseTypes;
@@ -0,0 +1,49 @@
1
+ export const clean = obj => {
2
+ var copy; // Handle the 3 simple types, and null or undefined
3
+
4
+ if (null == obj || 'object' != typeof obj) return obj; // Handle Date
5
+
6
+ if (obj instanceof Date) {
7
+ copy = new Date();
8
+ copy.setTime(obj.getTime());
9
+ return copy;
10
+ } // Handle Array
11
+
12
+
13
+ if (obj instanceof Array) {
14
+ copy = [];
15
+
16
+ for (var i = 0, len = obj.length; i < len; i++) {
17
+ copy[i] = clean(obj[i]);
18
+ }
19
+
20
+ return copy;
21
+ } // Handle Object
22
+
23
+
24
+ if (obj instanceof Object || typeof obj === 'object') {
25
+ copy = {};
26
+
27
+ for (var attr in obj) {
28
+ if (obj.hasOwnProperty(attr)) {
29
+ switch (attr) {
30
+ case 'leadingComments':
31
+ case 'trailingComments':
32
+ case 'loc':
33
+ case 'start':
34
+ case 'end':
35
+ break;
36
+
37
+ default:
38
+ copy[attr] = clean(obj[attr]);
39
+ }
40
+ } else {
41
+ copy[attr] = clean(obj[attr]);
42
+ }
43
+ }
44
+
45
+ return copy;
46
+ }
47
+
48
+ throw new Error("Unable to copy obj! Its type isn't supported.");
49
+ };
@@ -0,0 +1,76 @@
1
+ const cleanFor = str => {
2
+ /*
3
+ 1. look at first char after _for_
4
+ 2. ONLY if you find capitals after, modify it
5
+ */
6
+ if (/_for_[A-Z]/.test(str)) {
7
+ return str.replace(/_for_/, 'For');
8
+ }
9
+
10
+ return str;
11
+ };
12
+
13
+ export const cleanse = obj => {
14
+ var copy; // Handle the 3 simple types, and null or undefined
15
+
16
+ if (null == obj || 'object' != typeof obj) return obj; // Handle Date
17
+
18
+ if (obj instanceof Date) {
19
+ copy = new Date();
20
+ copy.setTime(obj.getTime());
21
+ return copy;
22
+ } // Handle Array
23
+
24
+
25
+ if (obj instanceof Array) {
26
+ copy = [];
27
+
28
+ for (var i = 0, len = obj.length; i < len; i++) {
29
+ copy[i] = cleanse(obj[i]);
30
+ }
31
+
32
+ return copy;
33
+ } // Handle Object
34
+
35
+
36
+ if (obj instanceof Object || typeof obj === 'object') {
37
+ copy = {}; // https://github.com/CosmWasm/cosmwasm-typescript-gen/issues/27
38
+
39
+ if (Array.isArray(obj.enum) && obj.enum.length === 0) {
40
+ delete obj.enum;
41
+
42
+ if (!obj.type) {
43
+ obj.type = 'string';
44
+ }
45
+ }
46
+
47
+ for (var attr in obj) {
48
+ if (obj.hasOwnProperty(attr)) {
49
+ if (/_for_/.test(attr)) {
50
+ copy[cleanFor(attr)] = cleanse(obj[attr]);
51
+ } else {
52
+ switch (attr) {
53
+ case 'title':
54
+ case '$ref':
55
+ if (typeof obj[attr] === 'string') {
56
+ copy[attr] = cleanse(cleanFor(obj[attr]));
57
+ } else {
58
+ copy[attr] = cleanse(obj[attr]);
59
+ }
60
+
61
+ break;
62
+
63
+ default:
64
+ copy[attr] = cleanse(obj[attr]);
65
+ }
66
+ }
67
+ } else {
68
+ copy[attr] = cleanse(obj[attr]);
69
+ }
70
+ }
71
+
72
+ return copy;
73
+ }
74
+
75
+ throw new Error("Unable to copy obj! Its type isn't supported.");
76
+ };
package/module/cli.js ADDED
@@ -0,0 +1,20 @@
1
+ import { prompt } from './prompt';
2
+ import { Commands as commands } from './cmds';
3
+ const question = [{
4
+ _: true,
5
+ type: 'fuzzy',
6
+ name: 'cmd',
7
+ message: 'what do you want to do?',
8
+ choices: Object.keys(commands)
9
+ }];
10
+ export const cli = async argv => {
11
+ var {
12
+ cmd
13
+ } = await prompt(question, argv);
14
+
15
+ if (typeof commands[cmd] === 'function') {
16
+ await commands[cmd](argv);
17
+ } else {
18
+ console.log('command not found.');
19
+ }
20
+ };
package/module/cmds.js ADDED
@@ -0,0 +1,12 @@
1
+ import _boilerplate from './commands/boilerplate';
2
+ import _from_partial from './commands/from-partial';
3
+ import _generate from './commands/generate';
4
+ import _react_query from './commands/react-query';
5
+ import _recoil from './commands/recoil';
6
+ const Commands = {};
7
+ Commands['boilerplate'] = _boilerplate;
8
+ Commands['from-partial'] = _from_partial;
9
+ Commands['generate'] = _generate;
10
+ Commands['react-query'] = _react_query;
11
+ Commands['recoil'] = _recoil;
12
+ export { Commands };
@@ -0,0 +1,116 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+
7
+ import * as shell from 'shelljs';
8
+ import { prompt } from '../prompt';
9
+ import dargs from 'dargs';
10
+
11
+ const glob = require('glob').sync;
12
+
13
+ const fs = require('fs');
14
+
15
+ const path = require('path');
16
+
17
+ const repo = 'git@github.com:pyramation/tmpl-cosmwasm-module.git';
18
+ export default (async argv => {
19
+ if (!shell.which('git')) {
20
+ shell.echo('Sorry, this script requires git');
21
+ return shell.exit(1);
22
+ }
23
+
24
+ const {
25
+ name
26
+ } = await prompt([{
27
+ type: 'string',
28
+ name: 'name',
29
+ message: 'Enter your new module name'
30
+ }], argv);
31
+ shell.exec(`git clone ${repo} ${name}`);
32
+ shell.cd(name);
33
+ const questions = JSON.parse(fs.readFileSync(`.questions.json`));
34
+ const fullname = shell.exec('git config --global user.name', {
35
+ silent: true
36
+ }).trim();
37
+ const email = shell.exec('git config --global user.email', {
38
+ silent: true
39
+ }).trim(); // @__USERNAME__/__MODULENAME__
40
+ // __PACKAGE_IDENTIFIER__
41
+
42
+ const args = dargs(_objectSpread(_objectSpread({
43
+ _: []
44
+ }, argv), {}, {
45
+ __MODULENAME__: name,
46
+ __USERFULLNAME__: fullname,
47
+ __USEREMAIL__: email
48
+ }), {
49
+ allowCamelCase: true
50
+ });
51
+ const results = await prompt(questions, args);
52
+ let scopedResults;
53
+ const license = await prompt([{
54
+ name: '__LICENSE__',
55
+ message: 'Which license?',
56
+ choices: ['MIT', 'closed'],
57
+ type: 'list',
58
+ required: true
59
+ }], []);
60
+
61
+ if (results.__ACCESS__ === 'public') {
62
+ scopedResults = await prompt([{
63
+ type: 'confirm',
64
+ name: 'scoped',
65
+ message: 'use npm scopes?',
66
+ required: true
67
+ }], []);
68
+ }
69
+
70
+ const files = [].concat(glob(process.cwd() + '/**/.*')).concat(glob(process.cwd() + '/**/*'));
71
+
72
+ for (let i = 0; i < files.length; i++) {
73
+ const templateFile = files[i];
74
+ if (fs.lstatSync(templateFile).isDirectory()) continue;
75
+ let content = fs.readFileSync(templateFile).toString();
76
+
77
+ if (path.basename(templateFile) === 'LICENSE' && license.__LICENSE__ === 'closed') {
78
+ content = `Copyright (c) 2022 __USERFULLNAME__ <__USEREMAIL__> - All Rights Reserved
79
+ Unauthorized copying via any medium is strictly prohibited
80
+ Proprietary and confidential`;
81
+ }
82
+
83
+ Object.keys(results).forEach(key => {
84
+ if (/^__/.test(key)) {
85
+ content = content.replace(new RegExp(key, 'g'), results[key]);
86
+ }
87
+ });
88
+
89
+ if (results.__ACCESS__ === 'public') {
90
+ if (scopedResults.scoped) {
91
+ content = content.replace(/__PACKAGE_IDENTIFIER__/g, `@${results.__USERNAME__}/${results.__MODULENAME__}`);
92
+ } else {
93
+ content = content.replace(/__PACKAGE_IDENTIFIER__/g, `${results.__MODULENAME__}`);
94
+ }
95
+ } else {
96
+ content = content.replace(/__PACKAGE_IDENTIFIER__/g, `@${results.__USERNAME__}/${results.__MODULENAME__}`);
97
+ }
98
+
99
+ if (path.basename(templateFile) === 'README.md') {
100
+ content = `# ${results.__MODULENAME__}`;
101
+ }
102
+
103
+ fs.writeFileSync(templateFile, content);
104
+ }
105
+
106
+ shell.rm('-rf', '.git');
107
+ shell.rm('-rf', '.questions.json');
108
+ console.log(`
109
+
110
+ |||
111
+ (o o)
112
+ ooO--(_)--Ooo-
113
+
114
+ ✨ Great work!
115
+ `);
116
+ });
@@ -0,0 +1,33 @@
1
+ import { prompt } from '../prompt';
2
+ import fromPartial from '../from-partial';
3
+ import { readSchemas } from '../utils';
4
+ export default (async argv => {
5
+ const questions = [{
6
+ _: true,
7
+ type: 'path',
8
+ name: 'schema',
9
+ message: 'which directory contains the the Rust contracts?',
10
+ default: './schema'
11
+ }, {
12
+ _: true,
13
+ type: 'path',
14
+ name: 'out',
15
+ message: 'where is the output directory?',
16
+ default: './ts'
17
+ }, {
18
+ _: true,
19
+ type: 'string',
20
+ name: 'name',
21
+ message: 'contract name?'
22
+ }];
23
+ const {
24
+ schema,
25
+ out,
26
+ name
27
+ } = await prompt(questions, argv);
28
+ const schemas = readSchemas({
29
+ schemaDir: schema,
30
+ argv
31
+ });
32
+ await fromPartial(name, schemas, out);
33
+ });
@@ -0,0 +1,33 @@
1
+ import { prompt } from '../prompt';
2
+ import cosmscript from '../generate';
3
+ import { readSchemas } from '../utils';
4
+ export default (async argv => {
5
+ const questions = [{
6
+ _: true,
7
+ type: 'path',
8
+ name: 'schema',
9
+ message: 'which directory contains the the Rust contracts?',
10
+ default: './schema'
11
+ }, {
12
+ _: true,
13
+ type: 'path',
14
+ name: 'out',
15
+ message: 'where is the output directory?',
16
+ default: './ts'
17
+ }, {
18
+ _: true,
19
+ type: 'string',
20
+ name: 'name',
21
+ message: 'contract name?'
22
+ }];
23
+ const {
24
+ schema,
25
+ out,
26
+ name
27
+ } = await prompt(questions, argv);
28
+ const schemas = readSchemas({
29
+ schemaDir: schema,
30
+ argv
31
+ });
32
+ await cosmscript(name, schemas, out);
33
+ });
@@ -0,0 +1,33 @@
1
+ import { prompt } from '../prompt';
2
+ import reactQuery from '../react-query';
3
+ import { readSchemas } from '../utils';
4
+ export default (async argv => {
5
+ const questions = [{
6
+ _: true,
7
+ type: 'path',
8
+ name: 'schema',
9
+ message: 'which directory contains the the Rust contracts?',
10
+ default: './schema'
11
+ }, {
12
+ _: true,
13
+ type: 'path',
14
+ name: 'out',
15
+ message: 'where is the output directory?',
16
+ default: './ts'
17
+ }, {
18
+ _: true,
19
+ type: 'string',
20
+ name: 'name',
21
+ message: 'contract name?'
22
+ }];
23
+ const {
24
+ schema,
25
+ out,
26
+ name
27
+ } = await prompt(questions, argv);
28
+ const schemas = readSchemas({
29
+ schemaDir: schema,
30
+ argv
31
+ });
32
+ await reactQuery(name, schemas, out);
33
+ });