@cosmwasm/ts-codegen 0.7.3 → 0.8.1

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 (71) hide show
  1. package/README.md +238 -59
  2. package/main/builder/builder.js +456 -0
  3. package/main/builder/index.js +18 -0
  4. package/main/bundler/bundler.js +74 -0
  5. package/main/bundler/index.js +18 -0
  6. package/main/cmds.js +3 -9
  7. package/main/commands/create-boilerplate.js +195 -0
  8. package/main/commands/generate.js +91 -16
  9. package/main/generators/{ts-client.js → client.js} +29 -23
  10. package/main/generators/{from-partial.js → message-composer.js} +29 -21
  11. package/main/generators/react-query.js +27 -21
  12. package/main/generators/recoil.js +31 -15
  13. package/main/generators/types.js +95 -0
  14. package/main/index.js +71 -17
  15. package/main/types.js +1 -0
  16. package/main/utils/schemas.js +5 -3
  17. package/module/builder/builder.js +178 -0
  18. package/module/builder/index.js +1 -0
  19. package/module/bundler/bundler.js +36 -0
  20. package/module/bundler/index.js +1 -0
  21. package/module/cmds.js +2 -6
  22. package/module/commands/create-boilerplate.js +116 -0
  23. package/module/commands/generate.js +82 -8
  24. package/module/generators/{ts-client.js → client.js} +21 -15
  25. package/module/generators/{from-partial.js → message-composer.js} +23 -17
  26. package/module/generators/react-query.js +20 -15
  27. package/module/generators/recoil.js +23 -9
  28. package/module/generators/types.js +40 -0
  29. package/module/index.js +12 -5
  30. package/module/types.js +1 -0
  31. package/module/utils/schemas.js +3 -2
  32. package/package.json +5 -3
  33. package/types/builder/builder.d.ts +39 -0
  34. package/types/builder/index.d.ts +1 -0
  35. package/types/bundler/bundler.d.ts +4 -0
  36. package/types/bundler/index.d.ts +1 -0
  37. package/types/commands/{from-partial.d.ts → client.d.ts} +0 -0
  38. package/types/commands/message-composer.d.ts +2 -0
  39. package/types/commands/types.d.ts +2 -0
  40. package/types/generators/client.d.ts +3 -0
  41. package/types/generators/message-composer.d.ts +3 -0
  42. package/types/generators/react-query.d.ts +2 -1
  43. package/types/generators/recoil.d.ts +2 -1
  44. package/types/generators/types.d.ts +3 -0
  45. package/types/index.d.ts +10 -5
  46. package/types/types.d.ts +1 -0
  47. package/types/utils/schemas.d.ts +8 -4
  48. package/main/commands/from-partial.js +0 -78
  49. package/main/commands/react-query.js +0 -98
  50. package/main/commands/recoil.js +0 -78
  51. package/main/utils/imports.js +0 -26
  52. package/module/commands/from-partial.js +0 -33
  53. package/module/commands/react-query.js +0 -54
  54. package/module/commands/recoil.js +0 -33
  55. package/module/utils/imports.js +0 -10
  56. package/types/clean.d.ts +0 -1
  57. package/types/cleanse.d.ts +0 -1
  58. package/types/commands/boilerplate.d.ts +0 -2
  59. package/types/cosmwasm-typescript-gen.d.ts +0 -2
  60. package/types/from-partial.d.ts +0 -2
  61. package/types/generate.d.ts +0 -2
  62. package/types/generators/from-partial.d.ts +0 -2
  63. package/types/generators/ts-client.d.ts +0 -2
  64. package/types/header.d.ts +0 -1
  65. package/types/imports.d.ts +0 -1
  66. package/types/parse.d.ts +0 -1
  67. package/types/prompt.d.ts +0 -3
  68. package/types/react-query.d.ts +0 -2
  69. package/types/recoil.d.ts +0 -2
  70. package/types/utils/imports.d.ts +0 -1
  71. package/types/utils.d.ts +0 -10
@@ -11,6 +11,8 @@ exports["default"] = void 0;
11
11
 
12
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
13
 
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
14
16
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
17
 
16
18
  var _case = require("case");
@@ -36,42 +38,56 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
36
38
  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
39
 
38
40
  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, context, code;
41
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, schemas, outPath, recoilOptions) {
42
+ var context, options, localname, ContractFile, TypesFile, QueryMsg, typeHash, QueryClient, ReadOnlyInstance, body, imports, code;
41
43
  return _regenerator["default"].wrap(function _callee$(_context) {
42
44
  while (1) {
43
45
  switch (_context.prev = _context.next) {
44
46
  case 0:
45
- RecoilFile = (0, _case.pascal)("".concat(name, "Contract")) + '.recoil.ts';
46
- Contract = (0, _case.pascal)("".concat(name, "Contract")) + '.ts';
47
+ context = new w.RenderContext((0, _utils.getDefinitionSchema)(schemas), {
48
+ recoil: recoilOptions !== null && recoilOptions !== void 0 ? recoilOptions : {}
49
+ });
50
+ options = context.options.recoil;
51
+ localname = (0, _case.pascal)(name) + '.recoil.ts';
52
+ ContractFile = (0, _case.pascal)(name) + '.client';
53
+ TypesFile = (0, _case.pascal)(name) + '.types';
47
54
  QueryMsg = (0, _utils.findQueryMsg)(schemas);
48
- _context.next = 5;
55
+ _context.next = 8;
49
56
  return (0, _utils.findAndParseTypes)(schemas);
50
57
 
51
- case 5:
58
+ case 8:
52
59
  typeHash = _context.sent;
53
60
  QueryClient = null;
54
61
  ReadOnlyInstance = null;
55
62
  body = [];
56
- body.push(w.importStmt(['selectorFamily'], 'recoil'));
57
63
  body.push(w.importStmt(['cosmWasmClient'], './chain'));
58
- body.push(w.importStmt(Object.keys(typeHash), "./".concat(Contract).replace(/\.ts$/, '')));
59
- context = new w.RenderContext((0, _utils.getDefinitionSchema)(schemas)); // query messages
64
+ body.push(w.importStmt(Object.keys(typeHash), "./".concat(TypesFile))); // query messages
60
65
 
61
66
  if (QueryMsg) {
62
67
  QueryClient = (0, _case.pascal)("".concat(name, "QueryClient"));
63
68
  ReadOnlyInstance = (0, _case.pascal)("".concat(name, "ReadOnlyInterface"));
64
- body.push(w.importStmt([QueryClient], "./".concat(Contract)));
69
+ body.push(w.importStmt([QueryClient], "./".concat(ContractFile)));
65
70
  body.push(w.createRecoilQueryClientType());
66
71
  body.push(w.createRecoilQueryClient(context, name, QueryClient));
67
72
  [].push.apply(body, w.createRecoilSelectors(context, name, QueryClient, QueryMsg));
68
73
  }
69
74
 
70
- code = _header.header + (0, _generator["default"])(t.program(body)).code;
71
- (0, _mkdirp.sync)(outPath);
72
- (0, _fs.writeFileSync)((0, _path.join)(outPath, RecoilFile), code);
75
+ if (typeHash.hasOwnProperty('Coin')) {
76
+ delete context.utils.Coin;
77
+ }
73
78
 
74
- case 17:
79
+ imports = context.getImports();
80
+ code = _header.header + (0, _generator["default"])(t.program([].concat((0, _toConsumableArray2["default"])(imports), body))).code;
81
+ (0, _mkdirp.sync)(outPath);
82
+ (0, _fs.writeFileSync)((0, _path.join)(outPath, localname), code);
83
+ return _context.abrupt("return", [{
84
+ type: 'recoil',
85
+ contract: name,
86
+ localname: localname,
87
+ filename: (0, _path.join)(outPath, localname)
88
+ }]);
89
+
90
+ case 21:
75
91
  case "end":
76
92
  return _context.stop();
77
93
  }
@@ -79,7 +95,7 @@ var _default = /*#__PURE__*/function () {
79
95
  }, _callee);
80
96
  }));
81
97
 
82
- return function (_x, _x2, _x3) {
98
+ return function (_x, _x2, _x3, _x4) {
83
99
  return _ref.apply(this, arguments);
84
100
  };
85
101
  }();
@@ -0,0 +1,95 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var _case = require("case");
19
+
20
+ var _header = require("../utils/header");
21
+
22
+ var _path = require("path");
23
+
24
+ var _mkdirp = require("mkdirp");
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 _clean = require("../utils/clean");
33
+
34
+ var _utils = require("../utils");
35
+
36
+ var _wasmAstTypes = require("wasm-ast-types");
37
+
38
+ 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); }
39
+
40
+ 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; }
41
+
42
+ var _default = /*#__PURE__*/function () {
43
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, schemas, outPath, tsTypesOptions) {
44
+ var context, options, localname, ExecuteMsg, typeHash, body, imports, code, filename;
45
+ return _regenerator["default"].wrap(function _callee$(_context) {
46
+ while (1) {
47
+ switch (_context.prev = _context.next) {
48
+ case 0:
49
+ context = new _wasmAstTypes.RenderContext((0, _utils.getDefinitionSchema)(schemas), {
50
+ tsClient: tsTypesOptions !== null && tsTypesOptions !== void 0 ? tsTypesOptions : {}
51
+ });
52
+ options = context.options.types;
53
+ localname = (0, _case.pascal)(name) + '.types.ts';
54
+ ExecuteMsg = (0, _utils.findExecuteMsg)(schemas);
55
+ _context.next = 6;
56
+ return (0, _utils.findAndParseTypes)(schemas);
57
+
58
+ case 6:
59
+ typeHash = _context.sent;
60
+ body = []; // TYPES
61
+
62
+ Object.values(typeHash).forEach(function (type) {
63
+ body.push((0, _clean.clean)(type));
64
+ }); // alias the ExecuteMsg
65
+
66
+ if (options.aliasExecuteMsg && ExecuteMsg) {
67
+ body.push(t.exportNamedDeclaration(t.tsTypeAliasDeclaration(t.identifier("".concat(name, "ExecuteMsg")), null, t.tsTypeReference(t.identifier('ExecuteMsg')))));
68
+ }
69
+
70
+ imports = context.getImports();
71
+ code = _header.header + (0, _generator["default"])(t.program([].concat((0, _toConsumableArray2["default"])(imports), body))).code;
72
+ (0, _mkdirp.sync)(outPath);
73
+ filename = (0, _path.join)(outPath, localname);
74
+ (0, _fs.writeFileSync)(filename, code);
75
+ return _context.abrupt("return", [{
76
+ type: 'type',
77
+ contract: name,
78
+ localname: localname,
79
+ filename: filename
80
+ }]);
81
+
82
+ case 16:
83
+ case "end":
84
+ return _context.stop();
85
+ }
86
+ }
87
+ }, _callee);
88
+ }));
89
+
90
+ return function (_x, _x2, _x3, _x4) {
91
+ return _ref.apply(this, arguments);
92
+ };
93
+ }();
94
+
95
+ exports["default"] = _default;
package/main/index.js CHANGED
@@ -6,39 +6,67 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  var _exportNames = {
9
- tsClient: true,
10
- fromPartial: true,
11
- reactQuery: true,
12
- recoil: true
9
+ generateTypes: true,
10
+ generateClient: true,
11
+ generateMessageComposer: true,
12
+ generateReactQuery: true,
13
+ generateRecoil: true
13
14
  };
14
- Object.defineProperty(exports, "fromPartial", {
15
+ exports["default"] = void 0;
16
+ Object.defineProperty(exports, "generateClient", {
15
17
  enumerable: true,
16
18
  get: function get() {
17
- return _fromPartial["default"];
19
+ return _client["default"];
18
20
  }
19
21
  });
20
- Object.defineProperty(exports, "reactQuery", {
22
+ Object.defineProperty(exports, "generateMessageComposer", {
23
+ enumerable: true,
24
+ get: function get() {
25
+ return _messageComposer["default"];
26
+ }
27
+ });
28
+ Object.defineProperty(exports, "generateReactQuery", {
21
29
  enumerable: true,
22
30
  get: function get() {
23
31
  return _reactQuery["default"];
24
32
  }
25
33
  });
26
- Object.defineProperty(exports, "recoil", {
34
+ Object.defineProperty(exports, "generateRecoil", {
27
35
  enumerable: true,
28
36
  get: function get() {
29
37
  return _recoil["default"];
30
38
  }
31
39
  });
32
- Object.defineProperty(exports, "tsClient", {
40
+ Object.defineProperty(exports, "generateTypes", {
33
41
  enumerable: true,
34
42
  get: function get() {
35
- return _tsClient["default"];
43
+ return _types["default"];
36
44
  }
37
45
  });
38
46
 
39
- var _tsClient = _interopRequireDefault(require("./generators/ts-client"));
47
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
48
+
49
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
50
+
51
+ var _builder = require("./builder");
52
+
53
+ Object.keys(_builder).forEach(function (key) {
54
+ if (key === "default" || key === "__esModule") return;
55
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
56
+ if (key in exports && exports[key] === _builder[key]) return;
57
+ Object.defineProperty(exports, key, {
58
+ enumerable: true,
59
+ get: function get() {
60
+ return _builder[key];
61
+ }
62
+ });
63
+ });
64
+
65
+ var _types = _interopRequireDefault(require("./generators/types"));
66
+
67
+ var _client = _interopRequireDefault(require("./generators/client"));
40
68
 
41
- var _fromPartial = _interopRequireDefault(require("./generators/from-partial"));
69
+ var _messageComposer = _interopRequireDefault(require("./generators/message-composer"));
42
70
 
43
71
  var _reactQuery = _interopRequireDefault(require("./generators/react-query"));
44
72
 
@@ -58,16 +86,42 @@ Object.keys(_utils).forEach(function (key) {
58
86
  });
59
87
  });
60
88
 
61
- var _imports = require("./utils/imports");
89
+ var _bundler = require("./bundler");
62
90
 
63
- Object.keys(_imports).forEach(function (key) {
91
+ Object.keys(_bundler).forEach(function (key) {
64
92
  if (key === "default" || key === "__esModule") return;
65
93
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
66
- if (key in exports && exports[key] === _imports[key]) return;
94
+ if (key in exports && exports[key] === _bundler[key]) return;
67
95
  Object.defineProperty(exports, key, {
68
96
  enumerable: true,
69
97
  get: function get() {
70
- return _imports[key];
98
+ return _bundler[key];
71
99
  }
72
100
  });
73
- });
101
+ });
102
+
103
+ var _default = /*#__PURE__*/function () {
104
+ var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(input) {
105
+ var builder;
106
+ return _regenerator["default"].wrap(function _callee$(_context) {
107
+ while (1) {
108
+ switch (_context.prev = _context.next) {
109
+ case 0:
110
+ builder = new _builder.TSBuilder(input);
111
+ _context.next = 3;
112
+ return builder.build();
113
+
114
+ case 3:
115
+ case "end":
116
+ return _context.stop();
117
+ }
118
+ }
119
+ }, _callee);
120
+ }));
121
+
122
+ return function (_x) {
123
+ return _ref.apply(this, arguments);
124
+ };
125
+ }();
126
+
127
+ exports["default"] = _default;
package/main/types.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";
@@ -27,15 +27,17 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
27
27
 
28
28
  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) { (0, _defineProperty2["default"])(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; }
29
29
 
30
+ ;
31
+
30
32
  var readSchemas = /*#__PURE__*/function () {
31
33
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
32
- var schemaDir, argv, _ref$clean, clean, fn, files, schemas;
34
+ var schemaDir, schemaOptions, _ref$clean, clean, fn, files, schemas;
33
35
 
34
36
  return _regenerator["default"].wrap(function _callee$(_context) {
35
37
  while (1) {
36
38
  switch (_context.prev = _context.next) {
37
39
  case 0:
38
- schemaDir = _ref.schemaDir, argv = _ref.argv, _ref$clean = _ref.clean, clean = _ref$clean === void 0 ? true : _ref$clean;
40
+ schemaDir = _ref.schemaDir, schemaOptions = _ref.schemaOptions, _ref$clean = _ref.clean, clean = _ref$clean === void 0 ? true : _ref$clean;
39
41
  fn = clean ? _cleanse.cleanse : function (str) {
40
42
  return str;
41
43
  };
@@ -44,7 +46,7 @@ var readSchemas = /*#__PURE__*/function () {
44
46
  return JSON.parse((0, _fs.readFileSync)(file, 'utf-8'));
45
47
  });
46
48
 
47
- if (!argv.packed) {
49
+ if (!(schemaOptions !== null && schemaOptions !== void 0 && schemaOptions.packed)) {
48
50
  _context.next = 8;
49
51
  break;
50
52
  }
@@ -0,0 +1,178 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ const _excluded = ["enabled"],
4
+ _excluded2 = ["enabled"],
5
+ _excluded3 = ["enabled"],
6
+ _excluded4 = ["enabled"],
7
+ _excluded5 = ["enabled"];
8
+ import { defaultOptions } from "wasm-ast-types";
9
+ import { header } from '../utils/header';
10
+ import { join } from "path";
11
+ import { writeFileSync } from 'fs';
12
+ import { sync as mkdirp } from "mkdirp";
13
+ import generateMessageComposer from '../generators/message-composer';
14
+ import generateTypes from '../generators/types';
15
+ import generateReactQuery from '../generators/react-query';
16
+ import generateRecoil from '../generators/recoil';
17
+ import generateClient from '../generators/client';
18
+ import { basename } from 'path';
19
+ import { readSchemas } from '../utils';
20
+ import deepmerge from 'deepmerge';
21
+ import { pascal } from "case";
22
+ import { createFileBundle, recursiveModuleBundle } from "../bundler";
23
+ import generate from '@babel/generator';
24
+ import * as t from '@babel/types';
25
+ const defaultOpts = {
26
+ bundle: {
27
+ enabled: true,
28
+ scope: 'contracts',
29
+ bundleFile: 'bundle.ts'
30
+ }
31
+ };
32
+ ;
33
+ ;
34
+ ;
35
+ export class TSBuilder {
36
+ constructor({
37
+ contracts,
38
+ outPath,
39
+ options
40
+ }) {
41
+ _defineProperty(this, "contracts", void 0);
42
+
43
+ _defineProperty(this, "outPath", void 0);
44
+
45
+ _defineProperty(this, "options", void 0);
46
+
47
+ _defineProperty(this, "files", []);
48
+
49
+ this.contracts = contracts;
50
+ this.outPath = outPath;
51
+ this.options = deepmerge(deepmerge(defaultOptions, defaultOpts), options ?? {});
52
+ }
53
+
54
+ getContracts() {
55
+ return this.contracts.map(contractOpt => {
56
+ if (typeof contractOpt === 'string') {
57
+ const name = basename(contractOpt);
58
+ const contractName = pascal(name);
59
+ return {
60
+ name: contractName,
61
+ dir: contractOpt
62
+ };
63
+ }
64
+
65
+ return {
66
+ name: pascal(contractOpt.name),
67
+ dir: contractOpt.dir
68
+ };
69
+ });
70
+ }
71
+
72
+ async renderTypes(contract) {
73
+ const _this$options$types = this.options.types,
74
+ {
75
+ enabled
76
+ } = _this$options$types,
77
+ options = _objectWithoutProperties(_this$options$types, _excluded);
78
+
79
+ if (!enabled) return;
80
+ const schemas = await readSchemas({
81
+ schemaDir: contract.dir
82
+ });
83
+ const files = await generateTypes(contract.name, schemas, this.outPath, options);
84
+ [].push.apply(this.files, files);
85
+ }
86
+
87
+ async renderClient(contract) {
88
+ const _this$options$client = this.options.client,
89
+ {
90
+ enabled
91
+ } = _this$options$client,
92
+ options = _objectWithoutProperties(_this$options$client, _excluded2);
93
+
94
+ if (!enabled) return;
95
+ const schemas = await readSchemas({
96
+ schemaDir: contract.dir
97
+ });
98
+ const files = await generateClient(contract.name, schemas, this.outPath, options);
99
+ [].push.apply(this.files, files);
100
+ }
101
+
102
+ async renderRecoil(contract) {
103
+ const _this$options$recoil = this.options.recoil,
104
+ {
105
+ enabled
106
+ } = _this$options$recoil,
107
+ options = _objectWithoutProperties(_this$options$recoil, _excluded3);
108
+
109
+ if (!enabled) return;
110
+ const schemas = await readSchemas({
111
+ schemaDir: contract.dir
112
+ });
113
+ const files = await generateRecoil(contract.name, schemas, this.outPath, options);
114
+ [].push.apply(this.files, files);
115
+ }
116
+
117
+ async renderReactQuery(contract) {
118
+ const _this$options$reactQu = this.options.reactQuery,
119
+ {
120
+ enabled
121
+ } = _this$options$reactQu,
122
+ options = _objectWithoutProperties(_this$options$reactQu, _excluded4);
123
+
124
+ if (!enabled) return;
125
+ const schemas = await readSchemas({
126
+ schemaDir: contract.dir
127
+ });
128
+ const files = await generateReactQuery(contract.name, schemas, this.outPath, options);
129
+ [].push.apply(this.files, files);
130
+ }
131
+
132
+ async renderMessageComposer(contract) {
133
+ const _this$options$message = this.options.messageComposer,
134
+ {
135
+ enabled
136
+ } = _this$options$message,
137
+ options = _objectWithoutProperties(_this$options$message, _excluded5);
138
+
139
+ if (!enabled) return;
140
+ const schemas = await readSchemas({
141
+ schemaDir: contract.dir
142
+ });
143
+ const files = await generateMessageComposer(contract.name, schemas, this.outPath, options);
144
+ [].push.apply(this.files, files);
145
+ }
146
+
147
+ async build() {
148
+ const contracts = this.getContracts();
149
+
150
+ for (let c = 0; c < contracts.length; c++) {
151
+ const contract = contracts[c];
152
+ await this.renderTypes(contract);
153
+ await this.renderClient(contract);
154
+ await this.renderMessageComposer(contract);
155
+ await this.renderReactQuery(contract);
156
+ await this.renderRecoil(contract);
157
+ }
158
+
159
+ if (this.options.bundle.enabled) {
160
+ this.bundle();
161
+ }
162
+ }
163
+
164
+ async bundle() {
165
+ const allFiles = this.files;
166
+ const bundleFile = this.options.bundle.bundleFile;
167
+ const bundleVariables = {};
168
+ const importPaths = [];
169
+ allFiles.forEach(file => {
170
+ createFileBundle(`${this.options.bundle.scope}.${file.contract}`, file.localname, bundleFile, importPaths, bundleVariables);
171
+ });
172
+ const ast = recursiveModuleBundle(bundleVariables);
173
+ const code = generate(t.program([...importPaths, ...ast])).code;
174
+ mkdirp(this.outPath);
175
+ writeFileSync(join(this.outPath, bundleFile), header + code);
176
+ }
177
+
178
+ }
@@ -0,0 +1 @@
1
+ export * from './builder';
@@ -0,0 +1,36 @@
1
+ import * as t from '@babel/types';
2
+ import * as dotty from 'dotty';
3
+ import { relative, dirname, extname } from 'path';
4
+ export const recursiveModuleBundle = obj => {
5
+ return Object.keys(obj).map(key => {
6
+ if (obj[key]?.__export) {
7
+ // e.g. abci
8
+ // 1. create variable for abci
9
+ // 2. splat ALL _0, parms into abci
10
+ // 3. export that variable
11
+ const nmspc = t.variableDeclaration('const', [t.variableDeclarator(t.identifier(key), t.objectExpression(Object.keys(obj[key]).filter(a => a !== '__export').filter(a => a.startsWith('_')).map(a => t.spreadElement(t.identifier(a)))))]);
12
+ const others = Object.keys(obj[key]).filter(a => a !== '__export').filter(a => !a.startsWith('_'));
13
+
14
+ if (others.length) {
15
+ throw new Error('namespace and package not supported, yet.');
16
+ } // return nmspc;
17
+
18
+
19
+ return t.exportNamedDeclaration(nmspc, []);
20
+ } else {
21
+ // you can make a namespace for obj[key]
22
+ // e.g. libs
23
+ return t.exportNamedDeclaration(t.tsModuleDeclaration(t.identifier(key), t.tsModuleBlock(recursiveModuleBundle(obj[key]))));
24
+ }
25
+ });
26
+ };
27
+ export const importNamespace = (ident, path) => t.importDeclaration([t.importNamespaceSpecifier(t.identifier(ident))], t.stringLiteral(path.replace(extname(path), '')));
28
+ let counter = 0;
29
+ export const createFileBundle = (pkg, filename, bundleFile, importPaths, bundleVariables) => {
30
+ let rel = relative(dirname(bundleFile), filename);
31
+ if (!rel.startsWith('.')) rel = `./${rel}`;
32
+ const variable = `_${counter++}`;
33
+ importPaths.push(importNamespace(variable, rel));
34
+ dotty.put(bundleVariables, pkg + '.__export', true);
35
+ dotty.put(bundleVariables, pkg + '.' + variable, true);
36
+ };
@@ -0,0 +1 @@
1
+ export * from './bundler';
package/module/cmds.js CHANGED
@@ -1,10 +1,6 @@
1
- import _from_partial from './commands/from-partial';
1
+ import _create_boilerplate from './commands/create-boilerplate';
2
2
  import _generate from './commands/generate';
3
- import _react_query from './commands/react-query';
4
- import _recoil from './commands/recoil';
5
3
  const Commands = {};
6
- Commands['from-partial'] = _from_partial;
4
+ Commands['create-boilerplate'] = _create_boilerplate;
7
5
  Commands['generate'] = _generate;
8
- Commands['react-query'] = _react_query;
9
- Commands['recoil'] = _recoil;
10
6
  export { Commands };