@cosmwasm/ts-codegen 0.30.1 → 0.31.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 (63) hide show
  1. package/README.md +36 -30
  2. package/main/builder/builder.js +41 -4
  3. package/main/generators/create-helpers.js +38 -0
  4. package/main/helpers/contractContextBase.js +8 -0
  5. package/main/helpers/contractsContextTSX.js +8 -0
  6. package/main/helpers/index.js +31 -0
  7. package/main/plugins/client.js +11 -6
  8. package/main/plugins/message-composer.js +10 -6
  9. package/main/plugins/msg-builder.js +1 -1
  10. package/main/plugins/plugin-base.js +9 -2
  11. package/main/plugins/provider-bundle.js +146 -0
  12. package/main/plugins/provider.js +170 -0
  13. package/main/plugins/react-query.js +1 -1
  14. package/main/plugins/recoil.js +1 -1
  15. package/main/plugins/types.js +1 -1
  16. package/main/utils/files.js +77 -0
  17. package/main/utils/unused.js +68 -0
  18. package/module/builder/builder.js +28 -2
  19. package/module/generators/create-helpers.js +25 -0
  20. package/module/helpers/contractContextBase.js +92 -0
  21. package/module/helpers/contractsContextTSX.js +73 -0
  22. package/module/helpers/index.js +2 -0
  23. package/module/plugins/client.js +13 -10
  24. package/module/plugins/message-composer.js +12 -10
  25. package/module/plugins/msg-builder.js +1 -1
  26. package/module/plugins/plugin-base.js +15 -8
  27. package/module/plugins/provider-bundle.js +65 -0
  28. package/module/plugins/provider.js +81 -0
  29. package/module/plugins/react-query.js +1 -1
  30. package/module/plugins/recoil.js +1 -1
  31. package/module/plugins/types.js +1 -1
  32. package/module/utils/files.js +44 -0
  33. package/module/utils/unused.js +45 -0
  34. package/package.json +3 -3
  35. package/src/builder/builder.ts +36 -1
  36. package/src/generators/create-helpers.ts +28 -0
  37. package/src/helpers/contractContextBase.ts +92 -0
  38. package/src/helpers/contractsContextTSX.ts +73 -0
  39. package/src/helpers/index.ts +2 -0
  40. package/src/plugins/client.ts +30 -14
  41. package/src/plugins/message-composer.ts +23 -14
  42. package/src/plugins/msg-builder.ts +1 -1
  43. package/src/plugins/plugin-base.ts +30 -20
  44. package/src/plugins/provider-bundle.ts +97 -0
  45. package/src/plugins/provider.ts +114 -0
  46. package/src/plugins/react-query.ts +1 -1
  47. package/src/plugins/recoil.ts +1 -1
  48. package/src/plugins/types.ts +1 -1
  49. package/src/utils/files.ts +73 -0
  50. package/src/utils/unused.ts +52 -0
  51. package/types/src/builder/builder.d.ts +7 -1
  52. package/types/src/generators/create-helpers.d.ts +3 -0
  53. package/types/src/helpers/contractContextBase.d.ts +1 -0
  54. package/types/src/helpers/contractsContextTSX.d.ts +1 -0
  55. package/types/src/helpers/index.d.ts +2 -0
  56. package/types/src/plugins/client.d.ts +4 -3
  57. package/types/src/plugins/message-composer.d.ts +4 -3
  58. package/types/src/plugins/plugin-base.d.ts +7 -3
  59. package/types/src/plugins/provider-bundle.d.ts +13 -0
  60. package/types/src/plugins/provider.d.ts +15 -0
  61. package/types/src/plugins/use-contracts.d.ts +12 -0
  62. package/types/src/utils/files.d.ts +3 -0
  63. package/types/src/utils/unused.d.ts +5 -0
@@ -0,0 +1,146 @@
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.ContractsProviderBundlePlugin = void 0;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _case = require("case");
27
+
28
+ var w = _interopRequireWildcard(require("wasm-ast-types"));
29
+
30
+ var _pluginBase = require("./plugin-base");
31
+
32
+ var _provider = require("./provider");
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
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
39
+
40
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
+
42
+ var ContractsProviderBundlePlugin = /*#__PURE__*/function (_BuilderPluginBase) {
43
+ (0, _inherits2["default"])(ContractsProviderBundlePlugin, _BuilderPluginBase);
44
+
45
+ var _super = _createSuper(ContractsProviderBundlePlugin);
46
+
47
+ function ContractsProviderBundlePlugin(opt) {
48
+ var _this;
49
+
50
+ (0, _classCallCheck2["default"])(this, ContractsProviderBundlePlugin);
51
+ _this = _super.call(this, opt);
52
+ _this.utils = {
53
+ CosmWasmClient: "@cosmjs/cosmwasm-stargate",
54
+ SigningCosmWasmClient: "@cosmjs/cosmwasm-stargate",
55
+ IQueryClientProvider: "__contractContextBase__",
56
+ ISigningClientProvider: "__contractContextBase__",
57
+ IMessageComposerProvider: "__contractContextBase__"
58
+ };
59
+ return _this;
60
+ }
61
+
62
+ (0, _createClass2["default"])(ContractsProviderBundlePlugin, [{
63
+ key: "initContext",
64
+ value: function initContext(contract, options) {
65
+ return new w.RenderContext(contract, options, this.builder.builderContext);
66
+ }
67
+ }, {
68
+ key: "doRender",
69
+ value: function () {
70
+ var _doRender = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, context) {
71
+ var _this$option, _this$option$useContr, _Object$keys;
72
+
73
+ var providerInfos, localname, body, _name, providerInfo, key, info;
74
+
75
+ return _regenerator["default"].wrap(function _callee$(_context) {
76
+ while (1) {
77
+ switch (_context.prev = _context.next) {
78
+ case 0:
79
+ if ((_this$option = this.option) !== null && _this$option !== void 0 && (_this$option$useContr = _this$option.useContracts) !== null && _this$option$useContr !== void 0 && _this$option$useContr.enabled) {
80
+ _context.next = 2;
81
+ break;
82
+ }
83
+
84
+ return _context.abrupt("return");
85
+
86
+ case 2:
87
+ providerInfos = context.getProviderInfos();
88
+
89
+ if ((_Object$keys = Object.keys(providerInfos)) !== null && _Object$keys !== void 0 && _Object$keys.length) {
90
+ _context.next = 5;
91
+ break;
92
+ }
93
+
94
+ return _context.abrupt("return");
95
+
96
+ case 5:
97
+ localname = "contractContextProviders.ts";
98
+ body = [];
99
+ context.addUtil("CosmWasmClient");
100
+ context.addUtil("SigningCosmWasmClient");
101
+ context.addUtil("IQueryClientProvider");
102
+ context.addUtil("ISigningClientProvider");
103
+ context.addUtil("IMessageComposerProvider");
104
+
105
+ for (_name in providerInfos) {
106
+ if (Object.prototype.hasOwnProperty.call(providerInfos, _name)) {
107
+ providerInfo = providerInfos[_name];
108
+
109
+ for (key in providerInfo) {
110
+ if (Object.prototype.hasOwnProperty.call(providerInfo, key)) {
111
+ info = providerInfo[key];
112
+ body.push(w.importStmt([info.classname], "./".concat(info.basename)));
113
+ }
114
+ }
115
+
116
+ body.push(w.importStmt([(0, _case.pascal)(_name)], "./".concat((0, _provider.GetLocalBaseNameByContractName)(_name))));
117
+ }
118
+ }
119
+
120
+ body.push(w.createIContractsContext(providerInfos));
121
+ body.push(w.createGettingProviders(providerInfos));
122
+ return _context.abrupt("return", [{
123
+ type: "plugin",
124
+ localname: localname,
125
+ body: body
126
+ }]);
127
+
128
+ case 16:
129
+ case "end":
130
+ return _context.stop();
131
+ }
132
+ }
133
+ }, _callee, this);
134
+ }));
135
+
136
+ function doRender(_x, _x2) {
137
+ return _doRender.apply(this, arguments);
138
+ }
139
+
140
+ return doRender;
141
+ }()
142
+ }]);
143
+ return ContractsProviderBundlePlugin;
144
+ }(_pluginBase.BuilderPluginBase);
145
+
146
+ exports.ContractsProviderBundlePlugin = ContractsProviderBundlePlugin;
@@ -0,0 +1,170 @@
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.GetLocalNameByContractName = exports.GetLocalBaseNameByContractName = exports.ContractsContextProviderPlugin = void 0;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _case = require("case");
27
+
28
+ var w = _interopRequireWildcard(require("wasm-ast-types"));
29
+
30
+ var _pluginBase = require("./plugin-base");
31
+
32
+ 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); }
33
+
34
+ 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; }
35
+
36
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
+
38
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
+
40
+ var GetLocalNameByContractName = function GetLocalNameByContractName(name) {
41
+ return "".concat((0, _case.pascal)(name), ".provider.ts");
42
+ };
43
+
44
+ exports.GetLocalNameByContractName = GetLocalNameByContractName;
45
+
46
+ var GetLocalBaseNameByContractName = function GetLocalBaseNameByContractName(name) {
47
+ return "".concat((0, _case.pascal)(name), ".provider");
48
+ };
49
+
50
+ exports.GetLocalBaseNameByContractName = GetLocalBaseNameByContractName;
51
+
52
+ var ContractsContextProviderPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
53
+ (0, _inherits2["default"])(ContractsContextProviderPlugin, _BuilderPluginBase);
54
+
55
+ var _super = _createSuper(ContractsContextProviderPlugin);
56
+
57
+ function ContractsContextProviderPlugin(opt) {
58
+ var _this;
59
+
60
+ (0, _classCallCheck2["default"])(this, ContractsContextProviderPlugin);
61
+ _this = _super.call(this, opt);
62
+ _this.utils = {
63
+ ContractBase: "__contractContextBase__",
64
+ IContractConstructor: "__contractContextBase__",
65
+ IEmptyClient: "__contractContextBase__"
66
+ };
67
+ return _this;
68
+ }
69
+
70
+ (0, _createClass2["default"])(ContractsContextProviderPlugin, [{
71
+ key: "initContext",
72
+ value: function initContext(contract, options) {
73
+ return new w.RenderContext(contract, options, this.builder.builderContext);
74
+ }
75
+ }, {
76
+ key: "doRender",
77
+ value: function () {
78
+ var _doRender = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, context) {
79
+ var _this$option, _this$option$useContr, _Object$keys;
80
+
81
+ var providerInfo, localname, needEmptyClientType, clientFile, clientClasses, body, signClientProviderInfo, queryClientProviderInfo, messageComposerProviderInfo;
82
+ return _regenerator["default"].wrap(function _callee$(_context) {
83
+ while (1) {
84
+ switch (_context.prev = _context.next) {
85
+ case 0:
86
+ if ((_this$option = this.option) !== null && _this$option !== void 0 && (_this$option$useContr = _this$option.useContracts) !== null && _this$option$useContr !== void 0 && _this$option$useContr.enabled) {
87
+ _context.next = 2;
88
+ break;
89
+ }
90
+
91
+ return _context.abrupt("return");
92
+
93
+ case 2:
94
+ providerInfo = context.getProviderInfos()[name];
95
+
96
+ if ((_Object$keys = Object.keys(providerInfo)) !== null && _Object$keys !== void 0 && _Object$keys.length) {
97
+ _context.next = 5;
98
+ break;
99
+ }
100
+
101
+ return _context.abrupt("return");
102
+
103
+ case 5:
104
+ context.addUtil("ContractBase");
105
+ context.addUtil("IContractConstructor");
106
+ localname = GetLocalNameByContractName(name);
107
+ needEmptyClientType = false;
108
+ clientFile = null;
109
+ clientClasses = [];
110
+ body = [];
111
+ signClientProviderInfo = providerInfo[w.PROVIDER_TYPES.SIGNING_CLIENT_TYPE];
112
+
113
+ if (signClientProviderInfo) {
114
+ clientFile = "./".concat(signClientProviderInfo.basename);
115
+ clientClasses.push(signClientProviderInfo.classname);
116
+ } else {
117
+ needEmptyClientType = true;
118
+ }
119
+
120
+ queryClientProviderInfo = providerInfo[w.PROVIDER_TYPES.QUERY_CLIENT_TYPE];
121
+
122
+ if (queryClientProviderInfo) {
123
+ clientFile = "./".concat(queryClientProviderInfo.basename);
124
+ clientClasses.push(queryClientProviderInfo.classname);
125
+ } else {
126
+ needEmptyClientType = true;
127
+ }
128
+
129
+ if (clientFile) {
130
+ body.push(w.importStmt(clientClasses, clientFile));
131
+ }
132
+
133
+ messageComposerProviderInfo = providerInfo[w.PROVIDER_TYPES.MESSAGE_COMPOSER_TYPE];
134
+
135
+ if (messageComposerProviderInfo) {
136
+ body.push(w.importStmt([messageComposerProviderInfo.classname], "./".concat(messageComposerProviderInfo.basename)));
137
+ } else {
138
+ needEmptyClientType = true;
139
+ }
140
+
141
+ if (needEmptyClientType) {
142
+ context.addUtil("IEmptyClient");
143
+ }
144
+
145
+ body.push(w.createProvider(name, providerInfo));
146
+ return _context.abrupt("return", [{
147
+ type: "plugin",
148
+ localname: localname,
149
+ body: body
150
+ }]);
151
+
152
+ case 22:
153
+ case "end":
154
+ return _context.stop();
155
+ }
156
+ }
157
+ }, _callee, this);
158
+ }));
159
+
160
+ function doRender(_x, _x2) {
161
+ return _doRender.apply(this, arguments);
162
+ }
163
+
164
+ return doRender;
165
+ }()
166
+ }]);
167
+ return ContractsContextProviderPlugin;
168
+ }(_pluginBase.BuilderPluginBase);
169
+
170
+ exports.ContractsContextProviderPlugin = ContractsContextProviderPlugin;
@@ -52,7 +52,7 @@ var ReactQueryPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
52
52
  (0, _createClass2["default"])(ReactQueryPlugin, [{
53
53
  key: "initContext",
54
54
  value: function initContext(contract, options) {
55
- return new w.RenderContext(contract, options);
55
+ return new w.RenderContext(contract, options, this.builder.builderContext);
56
56
  }
57
57
  }, {
58
58
  key: "doRender",
@@ -67,7 +67,7 @@ var RecoilPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
67
67
  (0, _createClass2["default"])(RecoilPlugin, [{
68
68
  key: "initContext",
69
69
  value: function initContext(contract, options) {
70
- return new w.RenderContext(contract, options);
70
+ return new w.RenderContext(contract, options, this.builder.builderContext);
71
71
  }
72
72
  }, {
73
73
  key: "doRender",
@@ -56,7 +56,7 @@ var TypesPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
56
56
  (0, _createClass2["default"])(TypesPlugin, [{
57
57
  key: "initContext",
58
58
  value: function initContext(contract, options) {
59
- return new _wasmAstTypes.RenderContext(contract, options);
59
+ return new _wasmAstTypes.RenderContext(contract, options, this.builder.builderContext);
60
60
  }
61
61
  }, {
62
62
  key: "doRender",
@@ -0,0 +1,77 @@
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.writeContentToFile = exports.writeAstToFile = void 0;
11
+
12
+ var t = _interopRequireWildcard(require("@babel/types"));
13
+
14
+ var _parser = require("@babel/parser");
15
+
16
+ var _mkdirp = require("mkdirp");
17
+
18
+ var _fs = require("fs");
19
+
20
+ var _path = require("path");
21
+
22
+ var _generator = _interopRequireDefault(require("@babel/generator"));
23
+
24
+ var _unused = require("./unused");
25
+
26
+ var _traverse = _interopRequireDefault(require("@babel/traverse"));
27
+
28
+ 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); }
29
+
30
+ 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; }
31
+
32
+ var writeAstToFile = function writeAstToFile(outPath, program, filename) {
33
+ var removeUnusedImports = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
34
+ var isTsDisable = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
35
+ var isEslintDisable = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
36
+ var ast = t.program(program);
37
+ var content = (0, _generator["default"])(ast).code;
38
+
39
+ if (removeUnusedImports) {
40
+ var plugins = ["typescript"];
41
+ var newAst = (0, _parser.parse)(content, {
42
+ sourceType: "module",
43
+ plugins: plugins
44
+ });
45
+ (0, _traverse["default"])(newAst, _unused.unused);
46
+ var content2 = (0, _generator["default"])(newAst).code;
47
+ writeContentToFile(outPath, content2, filename, isTsDisable, isEslintDisable);
48
+ } else {
49
+ writeContentToFile(outPath, content, filename, isTsDisable, isEslintDisable);
50
+ }
51
+ };
52
+
53
+ exports.writeAstToFile = writeAstToFile;
54
+
55
+ var writeContentToFile = function writeContentToFile(outPath, content, filename) {
56
+ var isTsDisable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
57
+ var isEslintDisable = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
58
+ var esLintPrefix = "";
59
+ var tsLintPrefix = "";
60
+ var nameWithoutPath = filename.replace(outPath, ""); // strip off leading slash
61
+
62
+ if (nameWithoutPath.startsWith("/")) nameWithoutPath = nameWithoutPath.replace(/^\//, "");
63
+
64
+ if (isTsDisable) {
65
+ tsLintPrefix = "//@ts-nocheck\n";
66
+ }
67
+
68
+ if (isEslintDisable) {
69
+ esLintPrefix = "/* eslint-disable */\n";
70
+ }
71
+
72
+ var text = tsLintPrefix + esLintPrefix + content;
73
+ (0, _mkdirp.sync)((0, _path.dirname)(filename));
74
+ (0, _fs.writeFileSync)(filename, text);
75
+ };
76
+
77
+ exports.writeContentToFile = writeContentToFile;
@@ -0,0 +1,68 @@
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.unused = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var t = _interopRequireWildcard(require("@babel/types"));
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ //@ts-nocheck
21
+ // https://github.com/chuyik/babel-plugin-danger-remove-unused-import
22
+ // https://github.com/chuyik/babel-plugin-danger-remove-unused-import/blob/c5454c21e94698a2464a12baa5590761932a71a8/License#L1
23
+ var unused = {
24
+ Program: {
25
+ exit: function exit(path) {
26
+ var UnRefBindings = new Map();
27
+
28
+ for (var _i = 0, _Object$entries = Object.entries(path.scope.bindings); _i < _Object$entries.length; _i++) {
29
+ var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
30
+ name = _Object$entries$_i[0],
31
+ binding = _Object$entries$_i[1];
32
+
33
+ if (!binding.path.parentPath || binding.kind !== 'module') continue;
34
+ var source = binding.path.parentPath.get('source');
35
+ var importName = source.node.value;
36
+ if (!t.isStringLiteral(source)) continue;
37
+ var key = "".concat(importName, "(").concat(source.node.loc && source.node.loc.start.line, ")");
38
+
39
+ if (!UnRefBindings.has(key)) {
40
+ UnRefBindings.set(key, binding);
41
+ }
42
+
43
+ if (binding.referenced) {
44
+ UnRefBindings.set(key, null);
45
+ } else {
46
+ var nodeType = binding.path.node.type;
47
+
48
+ if (nodeType === 'ImportSpecifier') {
49
+ binding.path.remove();
50
+ } else if (nodeType === 'ImportDefaultSpecifier') {
51
+ binding.path.remove();
52
+ } else if (nodeType === 'ImportNamespaceSpecifier') {
53
+ binding.path.remove();
54
+ } else if (binding.path.parentPath) {
55
+ binding.path.parentPath.remove();
56
+ }
57
+ }
58
+ }
59
+
60
+ UnRefBindings.forEach(function (binding, key) {
61
+ if (binding && binding.path.parentPath) {
62
+ binding.path.parentPath.remove();
63
+ }
64
+ });
65
+ }
66
+ }
67
+ };
68
+ exports.unused = unused;
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { defaultOptions } from "wasm-ast-types";
2
+ import { defaultOptions, BuilderContext } from "wasm-ast-types";
3
3
  import { header } from '../utils/header';
4
4
  import { join } from "path";
5
5
  import { writeFileSync } from 'fs';
@@ -17,6 +17,9 @@ import { MsgBuilderPlugin } from "../plugins/msg-builder";
17
17
  import { MessageComposerPlugin } from "../plugins/message-composer";
18
18
  import { ClientPlugin } from "../plugins/client";
19
19
  import { TypesPlugin } from "../plugins/types";
20
+ import { ContractsContextProviderPlugin } from "../plugins/provider";
21
+ import { createHelpers } from "../generators/create-helpers";
22
+ import { ContractsProviderBundlePlugin } from "../plugins/provider-bundle";
20
23
  const defaultOpts = {
21
24
  bundle: {
22
25
  enabled: true,
@@ -27,6 +30,7 @@ const defaultOpts = {
27
30
  ;
28
31
  ;
29
32
  ;
33
+ ;
30
34
 
31
35
  function getContract(contractOpt) {
32
36
  if (typeof contractOpt === 'string') {
@@ -46,7 +50,7 @@ function getContract(contractOpt) {
46
50
 
47
51
  export class TSBuilder {
48
52
  loadDefaultPlugins() {
49
- [].push.apply(this.plugins, [new TypesPlugin(this.options), new ClientPlugin(this.options), new MessageComposerPlugin(this.options), new ReactQueryPlugin(this.options), new RecoilPlugin(this.options), new MsgBuilderPlugin(this.options)]);
53
+ [].push.apply(this.plugins, [new TypesPlugin(this.options), new ClientPlugin(this.options), new MessageComposerPlugin(this.options), new ReactQueryPlugin(this.options), new RecoilPlugin(this.options), new MsgBuilderPlugin(this.options), new ContractsContextProviderPlugin(this.options)]);
50
54
  }
51
55
 
52
56
  constructor({
@@ -63,6 +67,8 @@ export class TSBuilder {
63
67
 
64
68
  _defineProperty(this, "plugins", []);
65
69
 
70
+ _defineProperty(this, "builderContext", new BuilderContext());
71
+
66
72
  _defineProperty(this, "files", []);
67
73
 
68
74
  this.contracts = contracts;
@@ -73,6 +79,8 @@ export class TSBuilder {
73
79
  if (plugins && plugins.length) {
74
80
  [].push.apply(this.plugins, plugins);
75
81
  }
82
+
83
+ this.plugins.forEach(plugin => plugin.setBuilder(this));
76
84
  }
77
85
 
78
86
  async build() {
@@ -106,7 +114,25 @@ export class TSBuilder {
106
114
  async after() {
107
115
  if (this.options.bundle.enabled) {
108
116
  this.bundle();
117
+ } //create useContracts bundle file
118
+
119
+
120
+ const contractsProviderBundlePlugin = new ContractsProviderBundlePlugin(this.options);
121
+ contractsProviderBundlePlugin.setBuilder(this);
122
+ let files = await contractsProviderBundlePlugin.render("", {
123
+ schemas: []
124
+ }, this.outPath);
125
+
126
+ if (files && files.length) {
127
+ [].push.apply(this.files, files);
109
128
  }
129
+
130
+ createHelpers({
131
+ outPath: this.outPath,
132
+ contracts: this.contracts,
133
+ options: this.options,
134
+ plugins: this.plugins
135
+ }, this.builderContext);
110
136
  }
111
137
 
112
138
  async bundle() {
@@ -0,0 +1,25 @@
1
+ import { join, dirname } from "path";
2
+ import { sync as mkdirp } from "mkdirp";
3
+ import pkg from "../../package.json";
4
+ import { writeContentToFile } from "../utils/files";
5
+ import { contractContextBase, contractsContextTSX } from "../helpers";
6
+ const version = process.env.NODE_ENV === "test" ? "latest" : pkg.version;
7
+ const header = `/**
8
+ * This file and any referenced files were automatically generated by ${pkg.name}@${version}
9
+ * DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain
10
+ * and run the transpile command or yarn proto command to regenerate this bundle.
11
+ */
12
+ \n`;
13
+
14
+ const write = (outPath, file, content) => {
15
+ const outFile = join(outPath, file);
16
+ mkdirp(dirname(outFile));
17
+ writeContentToFile(outPath, header + content, outFile);
18
+ };
19
+
20
+ export const createHelpers = (input, builderContext) => {
21
+ if (input.options?.useContracts?.enabled && Object.keys(builderContext.providers)?.length) {
22
+ write(input.outPath, "contractContextBase.ts", contractContextBase);
23
+ write(input.outPath, "contracts-context.tsx", contractsContextTSX);
24
+ }
25
+ };