@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
package/README.md CHANGED
@@ -36,7 +36,6 @@ The quickest and easiest way to interact with CosmWasm Contracts. `@cosmwasm/ts-
36
36
  - [React Query](#react-query)
37
37
  - [Recoil](#recoil)
38
38
  - [Message Composer](#message-composer)
39
- - [Msg Builder](#msg-builder)
40
39
  - [Bundles](#bundles)
41
40
  - [CLI Usage and Examples](#cli-usage-and-examples)
42
41
  - [Advanced Usage](#advanced-usage)
@@ -121,7 +120,7 @@ codegen({
121
120
  messageComposer: {
122
121
  enabled: false
123
122
  },
124
- msgBuilder: {
123
+ msgBuilder: {
125
124
  enabled: false
126
125
  }
127
126
  }
@@ -137,11 +136,11 @@ Typescript types and interfaces are generated in separate files so they can be i
137
136
 
138
137
  #### Types Options
139
138
 
140
- | option | description |
141
- | ----------------------------- | --------------------------------------------------- |
142
- | `types.enabled` | enable type generation |
143
- | `types.aliasExecuteMsg` | generate a type alias based on the contract name |
144
- | `types.aliasEntryPoints` | generate type aliases for the entry points based on the contract name |
139
+ | option | description |
140
+ | ------------------------ | ---------------------------------------------------- |
141
+ | `types.enabled` | enable type generation |
142
+ | `types.aliasExecuteMsg` | generate a type alias based on the contract name |
143
+ | `types.aliasEntryPoints` | generate type aliases for the entry points based on the contract name |
145
144
 
146
145
  ### Client
147
146
 
@@ -174,15 +173,15 @@ Generate [react-query v3](https://react-query-v3.tanstack.com/) or [react-query
174
173
 
175
174
  #### React Query Options
176
175
 
177
- | option | description |
178
- | ---------------------------- | ---------------------------------------------------------------------------- |
179
- | `reactQuery.enabled` | enable the react-query plugin |
180
- | `reactQuery.optionalClient` | allows contract client to be undefined as the component renders |
181
- | `reactQuery.queryKeys` | generates a const queryKeys object for use with invalidations and set values |
182
- | `reactQuery.queryFactory` | generates a const queryFactory object for useQueries and prefetchQueries use |
183
- | `reactQuery.version` | `v4` uses `@tanstack/react-query` and `v3` uses `react-query` |
184
- | `reactQuery.mutations` | also generate mutations |
185
- | `reactQuery.camelize` | use camelCase style for property names |
176
+ | option | description |
177
+ | --------------------------- | --------------------------------------------------------------------------- |
178
+ | `reactQuery.enabled` | enable the react-query plugin |
179
+ | `reactQuery.optionalClient` | allows contract client to be undefined as the component renders |
180
+ | `reactQuery.queryKeys` | generates a const queryKeys object for use with invalidations and set values |
181
+ | `reactQuery.queryFactory` | generates a const queryFactory object for useQueries and prefetchQueries use |
182
+ | `reactQuery.version` | `v4` uses `@tanstack/react-query` and `v3` uses `react-query` |
183
+ | `reactQuery.mutations` | also generate mutations |
184
+ | `reactQuery.camelize` | use camelCase style for property names |
186
185
 
187
186
 
188
187
  #### React Query via CLI
@@ -232,9 +231,9 @@ cosmwasm-ts-codegen generate \
232
231
 
233
232
  #### Recoil Options
234
233
 
235
- | option | description |
236
- | ------------------------------ | ------------------------------------------------------------------- |
237
- | `recoil.enabled` | enable the recoil plugin |
234
+ | option | description |
235
+ | ------------------------------ | ------------------------------------------------------------------- |
236
+ | `recoil.enabled` | enable the recoil plugin |
238
237
 
239
238
  ### Message Composer
240
239
 
@@ -253,9 +252,9 @@ cosmwasm-ts-codegen generate \
253
252
  ```
254
253
  #### Message Composer Options
255
254
 
256
- | option | description |
257
- | ------------------------------ | ------------------------------------------------------------------- |
258
- | `messageComposer.enabled` | enable the messageComposer plugin |
255
+ | option | description |
256
+ | ------------------------------ | ------------------------------------------------------------------- |
257
+ | `messageComposer.enabled` | enable the messageComposer plugin |
259
258
 
260
259
  ### Msg Builder
261
260
 
@@ -275,7 +274,7 @@ cosmwasm-ts-codegen generate \
275
274
  #### Message Composer Options
276
275
 
277
276
  | option | description |
278
- -------------| ------------------------------ | ------------------------------------------------------------------- |
277
+ |------------ | ------------------------------ | ------------------------------------------------------------------- |
279
278
  | `msgBuilder.enabled` | enable the msgBilder plugin |
280
279
 
281
280
 
@@ -293,11 +292,11 @@ const { CwAdminFactoryClient } = contracts.CwAdminFactory;
293
292
  ```
294
293
  #### Bundler Options
295
294
 
296
- | option | description |
297
- | --------------------- | -------------------------------------------------------------------------------- |
298
- | `bundle.enabled` | enable the bundler plugin |
299
- | `bundle.scope` | name of the scope, defaults to `contracts` (you can use `.` to make more scopes) |
300
- | `bundle.bundleFile` | name of the bundle file |
295
+ | option | description |
296
+ | --------------------- | -------------------------------------------------------------------------------- |
297
+ | `bundle.enabled` | enable the bundler plugin |
298
+ | `bundle.scope` | name of the scope, defaults to `contracts` (you can use `.` to make more scopes) |
299
+ | `bundle.bundleFile` | name of the bundle file |
301
300
 
302
301
  ### CLI Usage and Examples
303
302
 
@@ -416,6 +415,10 @@ https://gist.github.com/pyramation/a9520ccf131177b1841e02a97d7d3731
416
415
 
417
416
  https://gist.github.com/pyramation/43320e8b952751a0bd5a77dbc5b601f4
418
417
 
418
+ - `cosmwasm-ts-codegen generate --plugin msg-builder`
419
+
420
+ https://gist.github.com/adairrr/b394e62beb9856b0351883f776650f26
421
+
419
422
 
420
423
  ### JSON Schema
421
424
 
@@ -507,8 +510,11 @@ See the [docs](https://github.com/CosmWasm/ts-codegen/blob/main/packages/wasm-as
507
510
  Checkout these related projects:
508
511
 
509
512
  * [@osmonauts/telescope](https://github.com/osmosis-labs/telescope) a "babel for the Cosmos", Telescope is a TypeScript Transpiler for Cosmos Protobufs.
510
- * [chain-registry](https://github.com/cosmology-tech/chain-registry) Cosmos chain registry and chain info.
511
- * [cosmos-kit](https://github.com/cosmology-tech/cosmos-kit) A wallet connector for the Cosmos.
513
+ * [chain-registry](https://github.com/cosmology-tech/chain-registry) an npm module for the official Cosmos chain-registry.
514
+ * [cosmos-kit](https://github.com/cosmology-tech/cosmos-kit) A wallet connector for the Cosmos ⚛️
515
+ * [create-cosmos-app](https://github.com/cosmology-tech/create-cosmos-app) set up a modern Cosmos app by running one command.
516
+ * [starship](https://github.com/cosmology-tech/starship) a k8s-based unified development environment for Cosmos Ecosystem
517
+
512
518
  ## Credits
513
519
 
514
520
  🛠 Built by Cosmology — if you like our tools, please consider delegating to [our validator ⚛️](https://cosmology.tech/validator)
@@ -55,6 +55,12 @@ var _client = require("../plugins/client");
55
55
 
56
56
  var _types2 = require("../plugins/types");
57
57
 
58
+ var _provider = require("../plugins/provider");
59
+
60
+ var _createHelpers = require("../generators/create-helpers");
61
+
62
+ var _providerBundle = require("../plugins/provider-bundle");
63
+
58
64
  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); }
59
65
 
60
66
  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; }
@@ -75,6 +81,7 @@ var defaultOpts = {
75
81
  ;
76
82
  ;
77
83
  ;
84
+ ;
78
85
 
79
86
  function getContract(contractOpt) {
80
87
  if (typeof contractOpt === 'string') {
@@ -94,6 +101,8 @@ function getContract(contractOpt) {
94
101
 
95
102
  var TSBuilder = /*#__PURE__*/function () {
96
103
  function TSBuilder(_ref) {
104
+ var _this = this;
105
+
97
106
  var contracts = _ref.contracts,
98
107
  outPath = _ref.outPath,
99
108
  options = _ref.options,
@@ -103,6 +112,7 @@ var TSBuilder = /*#__PURE__*/function () {
103
112
  (0, _defineProperty2["default"])(this, "outPath", void 0);
104
113
  (0, _defineProperty2["default"])(this, "options", void 0);
105
114
  (0, _defineProperty2["default"])(this, "plugins", []);
115
+ (0, _defineProperty2["default"])(this, "builderContext", new _wasmAstTypes.BuilderContext());
106
116
  (0, _defineProperty2["default"])(this, "files", []);
107
117
  this.contracts = contracts;
108
118
  this.outPath = outPath;
@@ -112,12 +122,16 @@ var TSBuilder = /*#__PURE__*/function () {
112
122
  if (plugins && plugins.length) {
113
123
  [].push.apply(this.plugins, plugins);
114
124
  }
125
+
126
+ this.plugins.forEach(function (plugin) {
127
+ return plugin.setBuilder(_this);
128
+ });
115
129
  }
116
130
 
117
131
  (0, _createClass2["default"])(TSBuilder, [{
118
132
  key: "loadDefaultPlugins",
119
133
  value: function loadDefaultPlugins() {
120
- [].push.apply(this.plugins, [new _types2.TypesPlugin(this.options), new _client.ClientPlugin(this.options), new _messageComposer.MessageComposerPlugin(this.options), new _reactQuery.ReactQueryPlugin(this.options), new _recoil.RecoilPlugin(this.options), new _msgBuilder.MsgBuilderPlugin(this.options)]);
134
+ [].push.apply(this.plugins, [new _types2.TypesPlugin(this.options), new _client.ClientPlugin(this.options), new _messageComposer.MessageComposerPlugin(this.options), new _reactQuery.ReactQueryPlugin(this.options), new _recoil.RecoilPlugin(this.options), new _msgBuilder.MsgBuilderPlugin(this.options), new _provider.ContractsContextProviderPlugin(this.options)]);
121
135
  }
122
136
  }, {
123
137
  key: "build",
@@ -289,15 +303,38 @@ var TSBuilder = /*#__PURE__*/function () {
289
303
  key: "after",
290
304
  value: function () {
291
305
  var _after = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
306
+ var contractsProviderBundlePlugin, files;
292
307
  return _regenerator["default"].wrap(function _callee4$(_context4) {
293
308
  while (1) {
294
309
  switch (_context4.prev = _context4.next) {
295
310
  case 0:
296
311
  if (this.options.bundle.enabled) {
297
312
  this.bundle();
313
+ } //create useContracts bundle file
314
+
315
+
316
+ contractsProviderBundlePlugin = new _providerBundle.ContractsProviderBundlePlugin(this.options);
317
+ contractsProviderBundlePlugin.setBuilder(this);
318
+ _context4.next = 5;
319
+ return contractsProviderBundlePlugin.render("", {
320
+ schemas: []
321
+ }, this.outPath);
322
+
323
+ case 5:
324
+ files = _context4.sent;
325
+
326
+ if (files && files.length) {
327
+ [].push.apply(this.files, files);
298
328
  }
299
329
 
300
- case 1:
330
+ (0, _createHelpers.createHelpers)({
331
+ outPath: this.outPath,
332
+ contracts: this.contracts,
333
+ options: this.options,
334
+ plugins: this.plugins
335
+ }, this.builderContext);
336
+
337
+ case 8:
301
338
  case "end":
302
339
  return _context4.stop();
303
340
  }
@@ -318,7 +355,7 @@ var TSBuilder = /*#__PURE__*/function () {
318
355
  var _this$options$bundle$,
319
356
  _this$options,
320
357
  _this$options$bundle,
321
- _this = this,
358
+ _this2 = this,
322
359
  _this$options2,
323
360
  _this$options2$bundle;
324
361
 
@@ -334,7 +371,7 @@ var TSBuilder = /*#__PURE__*/function () {
334
371
  bundleVariables = {};
335
372
  importPaths = [];
336
373
  allFiles.forEach(function (file) {
337
- (0, _bundler.createFileBundle)("".concat(_this.options.bundle.scope, ".").concat(file.contract), file.filename, bundlePath, importPaths, bundleVariables);
374
+ (0, _bundler.createFileBundle)("".concat(_this2.options.bundle.scope, ".").concat(file.contract), file.filename, bundlePath, importPaths, bundleVariables);
338
375
  });
339
376
  ast = (0, _bundler.recursiveModuleBundle)(bundleVariables);
340
377
  code = (0, _generator["default"])(t.program([].concat(importPaths, (0, _toConsumableArray2["default"])(ast)))).code;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createHelpers = void 0;
9
+
10
+ var _path = require("path");
11
+
12
+ var _mkdirp = require("mkdirp");
13
+
14
+ var _package = _interopRequireDefault(require("../../package.json"));
15
+
16
+ var _files = require("../utils/files");
17
+
18
+ var _helpers = require("../helpers");
19
+
20
+ var version = process.env.NODE_ENV === "test" ? "latest" : _package["default"].version;
21
+ var header = "/**\n* This file and any referenced files were automatically generated by ".concat(_package["default"].name, "@").concat(version, "\n* DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain\n* and run the transpile command or yarn proto command to regenerate this bundle.\n*/\n\n");
22
+
23
+ var write = function write(outPath, file, content) {
24
+ var outFile = (0, _path.join)(outPath, file);
25
+ (0, _mkdirp.sync)((0, _path.dirname)(outFile));
26
+ (0, _files.writeContentToFile)(outPath, header + content, outFile);
27
+ };
28
+
29
+ var createHelpers = function createHelpers(input, builderContext) {
30
+ var _input$options, _input$options$useCon, _Object$keys;
31
+
32
+ if ((_input$options = input.options) !== null && _input$options !== void 0 && (_input$options$useCon = _input$options.useContracts) !== null && _input$options$useCon !== void 0 && _input$options$useCon.enabled && (_Object$keys = Object.keys(builderContext.providers)) !== null && _Object$keys !== void 0 && _Object$keys.length) {
33
+ write(input.outPath, "contractContextBase.ts", _helpers.contractContextBase);
34
+ write(input.outPath, "contracts-context.tsx", _helpers.contractsContextTSX);
35
+ }
36
+ };
37
+
38
+ exports.createHelpers = createHelpers;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.contractContextBase = void 0;
7
+ var contractContextBase = "\nimport {\n CosmWasmClient,\n SigningCosmWasmClient,\n} from '@cosmjs/cosmwasm-stargate';\n\nexport interface IContractConstructor {\n address: string | undefined;\n cosmWasmClient: CosmWasmClient | undefined;\n signingCosmWasmClient: SigningCosmWasmClient | undefined;\n}\n\nexport const NO_SINGING_ERROR_MESSAGE = 'signingCosmWasmClient not connected';\n\nexport const NO_COSMWASW_CLIENT_ERROR_MESSAGE = 'cosmWasmClient not connected';\n\nexport const NO_ADDRESS_ERROR_MESSAGE = \"address doesn't exist\";\n\nexport const NO_SIGNING_CLIENT_ERROR_MESSAGE =\n 'Signing client is not generated. Please check ts-codegen config';\n\nexport const NO_QUERY_CLIENT_ERROR_MESSAGE =\n 'Query client is not generated. Please check ts-codegen config';\n\nexport const NO_MESSAGE_COMPOSER_ERROR_MESSAGE =\n 'Message composer client is not generated. Please check ts-codegen config';\n\n/**\n * a placeholder for non-generated classes\n */\nexport interface IEmptyClient {}\n\nexport interface ISigningClientProvider<T> {\n getSigningClient(contractAddr: string): T;\n}\n\nexport interface IQueryClientProvider<T> {\n getQueryClient(contractAddr: string): T;\n}\n\nexport interface IMessageComposerProvider<T> {\n getMessageComposer(contractAddr: string): T;\n}\n\nexport class ContractBase<\n TSign = IEmptyClient,\n TQuery = IEmptyClient,\n TMsgComposer = IEmptyClient\n> {\n constructor(\n protected address: string | undefined,\n protected cosmWasmClient: CosmWasmClient | undefined,\n protected signingCosmWasmClient: SigningCosmWasmClient | undefined,\n private TSign?: new (\n client: SigningCosmWasmClient,\n sender: string,\n contractAddress: string\n ) => TSign,\n private TQuery?: new (\n client: CosmWasmClient,\n contractAddress: string\n ) => TQuery,\n private TMsgComposer?: new (\n sender: string,\n contractAddress: string\n ) => TMsgComposer\n ) {}\n\n public getSigningClient(contractAddr: string): TSign {\n if (!this.signingCosmWasmClient) throw new Error(NO_SINGING_ERROR_MESSAGE);\n if (!this.address) throw new Error(NO_ADDRESS_ERROR_MESSAGE);\n if (!this.TSign) throw new Error(NO_SIGNING_CLIENT_ERROR_MESSAGE);\n return new this.TSign(\n this.signingCosmWasmClient,\n this.address,\n contractAddr\n );\n }\n\n public getQueryClient(contractAddr: string): TQuery {\n if (!this.cosmWasmClient) throw new Error(NO_COSMWASW_CLIENT_ERROR_MESSAGE);\n if (!this.TQuery) throw new Error(NO_QUERY_CLIENT_ERROR_MESSAGE);\n return new this.TQuery(this.cosmWasmClient, contractAddr);\n }\n\n public getMessageComposer(contractAddr: string): TMsgComposer {\n if (!this.address) throw new Error(NO_ADDRESS_ERROR_MESSAGE);\n if (!this.TMsgComposer) throw new Error(NO_MESSAGE_COMPOSER_ERROR_MESSAGE);\n return new this.TMsgComposer(this.address, contractAddr);\n }\n}\n";
8
+ exports.contractContextBase = contractContextBase;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.contractsContextTSX = void 0;
7
+ var contractsContextTSX = "\nimport React, { useEffect, useMemo, useRef, useState, useContext } from 'react';\nimport {\n CosmWasmClient,\n SigningCosmWasmClient,\n} from '@cosmjs/cosmwasm-stargate';\n\nimport { IContractsContext, getProviders } from './contractContextProviders';\n\ninterface ContractsConfig {\n address: string | undefined;\n getCosmWasmClient: () => Promise<CosmWasmClient>;\n getSigningCosmWasmClient: () => Promise<SigningCosmWasmClient>;\n}\n\nconst ContractsContext = React.createContext<IContractsContext | null>(null);\n\nexport const ContractsProvider = ({\n children,\n contractsConfig,\n}: {\n children: React.ReactNode;\n contractsConfig: ContractsConfig;\n}) => {\n const [cosmWasmClient, setCosmWasmClient] = useState<CosmWasmClient>();\n const [signingCosmWasmClient, setSigningCosmWasmClient] =\n useState<SigningCosmWasmClient>();\n\n const { address, getCosmWasmClient, getSigningCosmWasmClient } =\n contractsConfig;\n\n const prevAddressRef = useRef<string | undefined>(address);\n\n const contracts: IContractsContext = useMemo(() => {\n return getProviders(address, cosmWasmClient, signingCosmWasmClient);\n }, [address, cosmWasmClient, signingCosmWasmClient]);\n\n useEffect(() => {\n const connectSigningCwClient = async () => {\n if (address && prevAddressRef.current !== address) {\n const signingCosmWasmClient = await getSigningCosmWasmClient();\n setSigningCosmWasmClient(signingCosmWasmClient);\n } else if (!address) {\n setSigningCosmWasmClient(undefined);\n }\n prevAddressRef.current = address;\n };\n connectSigningCwClient();\n }, [address, getSigningCosmWasmClient]);\n\n useEffect(() => {\n const connectCosmWasmClient = async () => {\n const cosmWasmClient = await getCosmWasmClient();\n setCosmWasmClient(cosmWasmClient);\n };\n connectCosmWasmClient();\n }, [getCosmWasmClient]);\n\n return (\n <ContractsContext.Provider value={contracts}>\n {children}\n </ContractsContext.Provider>\n );\n};\n\nexport const useContracts = () => {\n const contracts = useContext(ContractsContext);\n if (contracts === null) {\n throw new Error('useContracts must be used within a ContractsProvider');\n }\n return contracts;\n};\n";
8
+ exports.contractsContextTSX = contractsContextTSX;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _contractContextBase = require("./contractContextBase");
8
+
9
+ Object.keys(_contractContextBase).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _contractContextBase[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _contractContextBase[key];
16
+ }
17
+ });
18
+ });
19
+
20
+ var _contractsContextTSX = require("./contractsContextTSX");
21
+
22
+ Object.keys(_contractsContextTSX).forEach(function (key) {
23
+ if (key === "default" || key === "__esModule") return;
24
+ if (key in exports && exports[key] === _contractsContextTSX[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _contractsContextTSX[key];
29
+ }
30
+ });
31
+ });
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.ClientPlugin = void 0;
10
+ exports.TYPE = exports.ClientPlugin = void 0;
11
11
 
12
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
13
 
@@ -39,6 +39,9 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
39
39
 
40
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
41
 
42
+ var TYPE = "client";
43
+ exports.TYPE = TYPE;
44
+
42
45
  var ClientPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
43
46
  (0, _inherits2["default"])(ClientPlugin, _BuilderPluginBase);
44
47
 
@@ -52,7 +55,7 @@ var ClientPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
52
55
  (0, _createClass2["default"])(ClientPlugin, [{
53
56
  key: "initContext",
54
57
  value: function initContext(contract, options) {
55
- return new w.RenderContext(contract, options);
58
+ return new w.RenderContext(contract, options, this.builder.builderContext);
56
59
  }
57
60
  }, {
58
61
  key: "doRender",
@@ -74,8 +77,8 @@ var ClientPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
74
77
 
75
78
  case 3:
76
79
  schemas = context.contract.schemas;
77
- localname = (0, _case.pascal)(name) + '.client.ts';
78
- TypesFile = (0, _case.pascal)(name) + '.types';
80
+ localname = (0, _case.pascal)(name) + ".client.ts";
81
+ TypesFile = (0, _case.pascal)(name) + ".types";
79
82
  QueryMsg = (0, _utils.findQueryMsg)(schemas);
80
83
  ExecuteMsg = (0, _utils.findExecuteMsg)(schemas);
81
84
  _context.next = 10;
@@ -95,6 +98,7 @@ var ClientPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
95
98
  ReadOnlyInstance = (0, _case.pascal)("".concat(name, "ReadOnlyInterface"));
96
99
  body.push(w.createQueryInterface(context, ReadOnlyInstance, QueryMsg));
97
100
  body.push(w.createQueryClass(context, QueryClient, ReadOnlyInstance, QueryMsg));
101
+ context.addProviderInfo(name, w.PROVIDER_TYPES.QUERY_CLIENT_TYPE, QueryClient, localname);
98
102
  } // execute messages
99
103
 
100
104
 
@@ -106,16 +110,17 @@ var ClientPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
106
110
  Instance = (0, _case.pascal)("".concat(name, "Interface"));
107
111
  body.push(w.createExecuteInterface(context, Instance, this.option.client.execExtendsQuery ? ReadOnlyInstance : null, ExecuteMsg));
108
112
  body.push(w.createExecuteClass(context, Client, Instance, this.option.client.execExtendsQuery ? QueryClient : null, ExecuteMsg));
113
+ context.addProviderInfo(name, w.PROVIDER_TYPES.SIGNING_CLIENT_TYPE, Client, localname);
109
114
  }
110
115
  }
111
116
 
112
- if (typeHash.hasOwnProperty('Coin')) {
117
+ if (typeHash.hasOwnProperty("Coin")) {
113
118
  // @ts-ignore
114
119
  delete context.utils.Coin;
115
120
  }
116
121
 
117
122
  return _context.abrupt("return", [{
118
- type: 'client',
123
+ type: TYPE,
119
124
  localname: localname,
120
125
  body: body
121
126
  }]);
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.MessageComposerPlugin = void 0;
10
+ exports.TYPE = exports.MessageComposerPlugin = void 0;
11
11
 
12
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
13
 
@@ -39,6 +39,9 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
39
39
 
40
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
41
 
42
+ var TYPE = "message-composer";
43
+ exports.TYPE = TYPE;
44
+
42
45
  var MessageComposerPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
43
46
  (0, _inherits2["default"])(MessageComposerPlugin, _BuilderPluginBase);
44
47
 
@@ -52,7 +55,7 @@ var MessageComposerPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
52
55
  (0, _createClass2["default"])(MessageComposerPlugin, [{
53
56
  key: "initContext",
54
57
  value: function initContext(contract, options) {
55
- return new w.RenderContext(contract, options);
58
+ return new w.RenderContext(contract, options, this.builder.builderContext);
56
59
  }
57
60
  }, {
58
61
  key: "doRender",
@@ -74,8 +77,8 @@ var MessageComposerPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
74
77
 
75
78
  case 3:
76
79
  schemas = context.contract.schemas;
77
- localname = (0, _case.pascal)(name) + '.message-composer.ts';
78
- TypesFile = (0, _case.pascal)(name) + '.types';
80
+ localname = (0, _case.pascal)(name) + ".message-composer.ts";
81
+ TypesFile = (0, _case.pascal)(name) + ".types";
79
82
  ExecuteMsg = (0, _utils.findExecuteMsg)(schemas);
80
83
  _context.next = 9;
81
84
  return (0, _utils.findAndParseTypes)(schemas);
@@ -93,16 +96,17 @@ var MessageComposerPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
93
96
  Interface = (0, _case.pascal)("".concat(name, "Message"));
94
97
  body.push(w.createMessageComposerInterface(context, Interface, ExecuteMsg));
95
98
  body.push(w.createMessageComposerClass(context, TheClass, Interface, ExecuteMsg));
99
+ context.addProviderInfo(name, w.PROVIDER_TYPES.MESSAGE_COMPOSER_TYPE, TheClass, localname);
96
100
  }
97
101
  }
98
102
 
99
- if (typeHash.hasOwnProperty('Coin')) {
103
+ if (typeHash.hasOwnProperty("Coin")) {
100
104
  // @ts-ignore
101
105
  delete context.utils.Coin;
102
106
  }
103
107
 
104
108
  return _context.abrupt("return", [{
105
- type: 'message-composer',
109
+ type: TYPE,
106
110
  localname: localname,
107
111
  body: body
108
112
  }]);
@@ -52,7 +52,7 @@ var MsgBuilderPlugin = /*#__PURE__*/function (_BuilderPluginBase) {
52
52
  (0, _createClass2["default"])(MsgBuilderPlugin, [{
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",
@@ -41,14 +41,21 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
41
41
  * BuilderPluginBase enable ts-codegen users implement their own plugins by only implement a few functions.
42
42
  */
43
43
  var BuilderPluginBase = /*#__PURE__*/function () {
44
- function BuilderPluginBase(opt) {
44
+ function BuilderPluginBase(opt, builder) {
45
45
  (0, _classCallCheck2["default"])(this, BuilderPluginBase);
46
+ (0, _defineProperty2["default"])(this, "builder", void 0);
46
47
  (0, _defineProperty2["default"])(this, "option", void 0);
47
48
  (0, _defineProperty2["default"])(this, "utils", void 0);
48
49
  this.option = opt;
50
+ this.builder = builder;
49
51
  }
50
52
 
51
53
  (0, _createClass2["default"])(BuilderPluginBase, [{
54
+ key: "setBuilder",
55
+ value: function setBuilder(builder) {
56
+ this.builder = builder;
57
+ }
58
+ }, {
52
59
  key: "render",
53
60
  value: function () {
54
61
  var _render = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(name, contractInfo, outPath) {
@@ -85,7 +92,7 @@ var BuilderPluginBase = /*#__PURE__*/function () {
85
92
 
86
93
  case 9:
87
94
  return _context.abrupt("return", results.map(function (result) {
88
- var imports = context.getImports(_this.utils);
95
+ var imports = context.getImports(_this.utils, result.localname);
89
96
  var code = _header.header + (0, _generator["default"])(t.program([].concat((0, _toConsumableArray2["default"])(imports), (0, _toConsumableArray2["default"])(result.body)))).code;
90
97
  (0, _mkdirp.sync)(outPath);
91
98
  var filename = (0, _path.join)(outPath, result.localname);