@cosmwasm/ts-codegen 0.30.1 → 0.31.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ };