wasm-ast-types 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +129 -0
- package/main/react-query.js +149 -12
- package/main/react-query.spec.js +7 -0
- package/main/utils/babel.js +28 -2
- package/main/utils/types.js +77 -57
- package/main/wasm.js +7 -5
- package/module/react-query.js +126 -5
- package/module/react-query.spec.js +7 -1
- package/module/utils/babel.js +15 -0
- package/module/utils/types.js +59 -52
- package/module/wasm.js +4 -4
- package/package.json +2 -2
- package/types/react-query.d.ts +39 -1
package/README.md
CHANGED
@@ -1 +1,130 @@
|
|
1
1
|
# wasm-ast-types
|
2
|
+
|
3
|
+
## working with ASTs
|
4
|
+
|
5
|
+
### 1 edit the fixture
|
6
|
+
|
7
|
+
edit `./scripts/fixture.ts`, for example:
|
8
|
+
|
9
|
+
```js
|
10
|
+
// ./scripts/fixture.ts
|
11
|
+
export interface InstantiateMsg {
|
12
|
+
admin?: string | null;
|
13
|
+
members: Member[];
|
14
|
+
}
|
15
|
+
```
|
16
|
+
|
17
|
+
### 2 run AST generator
|
18
|
+
|
19
|
+
```
|
20
|
+
yarn test:ast
|
21
|
+
```
|
22
|
+
|
23
|
+
### 3 look at the JSON produced
|
24
|
+
|
25
|
+
```
|
26
|
+
code ./scripts/test-output.json
|
27
|
+
```
|
28
|
+
|
29
|
+
We use the npm module `ast-stringify` to strip out unneccesary props, and generate a JSON for reference.
|
30
|
+
|
31
|
+
You will see a `File` and `Program`... only concern yourself with the `body[]`:
|
32
|
+
|
33
|
+
```json
|
34
|
+
{
|
35
|
+
"type": "File",
|
36
|
+
"errors": [],
|
37
|
+
"program": {
|
38
|
+
"type": "Program",
|
39
|
+
"sourceType": "module",
|
40
|
+
"interpreter": null,
|
41
|
+
"body": [
|
42
|
+
{
|
43
|
+
"type": "ExportNamedDeclaration",
|
44
|
+
"exportKind": "type",
|
45
|
+
"specifiers": [],
|
46
|
+
"source": null,
|
47
|
+
"declaration": {
|
48
|
+
"type": "TSInterfaceDeclaration",
|
49
|
+
"id": {
|
50
|
+
"type": "Identifier",
|
51
|
+
"name": "InstantiateMsg"
|
52
|
+
},
|
53
|
+
"body": {
|
54
|
+
"type": "TSInterfaceBody",
|
55
|
+
"body": [
|
56
|
+
{
|
57
|
+
"type": "TSPropertySignature",
|
58
|
+
"key": {
|
59
|
+
"type": "Identifier",
|
60
|
+
"name": "admin"
|
61
|
+
},
|
62
|
+
"computed": false,
|
63
|
+
"optional": true,
|
64
|
+
"typeAnnotation": {
|
65
|
+
"type": "TSTypeAnnotation",
|
66
|
+
"typeAnnotation": {
|
67
|
+
"type": "TSUnionType",
|
68
|
+
"types": [
|
69
|
+
{
|
70
|
+
"type": "TSStringKeyword"
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"type": "TSNullKeyword"
|
74
|
+
}
|
75
|
+
]
|
76
|
+
}
|
77
|
+
}
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"type": "TSPropertySignature",
|
81
|
+
"key": {
|
82
|
+
"type": "Identifier",
|
83
|
+
"name": "members"
|
84
|
+
},
|
85
|
+
"computed": false,
|
86
|
+
"typeAnnotation": {
|
87
|
+
"type": "TSTypeAnnotation",
|
88
|
+
"typeAnnotation": {
|
89
|
+
"type": "TSArrayType",
|
90
|
+
"elementType": {
|
91
|
+
"type": "TSTypeReference",
|
92
|
+
"typeName": {
|
93
|
+
"type": "Identifier",
|
94
|
+
"name": "Member"
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
]
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
],
|
105
|
+
"directives": []
|
106
|
+
},
|
107
|
+
"comments": []
|
108
|
+
}
|
109
|
+
```
|
110
|
+
|
111
|
+
### 4 code with `@babel/types` using the JSON as a reference
|
112
|
+
|
113
|
+
NOTE: 4 continued ideally you should be writing a test with your generator!
|
114
|
+
|
115
|
+
```js
|
116
|
+
import * as t from '@babel/types';
|
117
|
+
|
118
|
+
export const createNewGenerator = () => {
|
119
|
+
return t.exportNamedDeclaration(
|
120
|
+
t.tsInterfaceDeclaration(
|
121
|
+
t.identifier('InstantiateMsg'),
|
122
|
+
null,
|
123
|
+
[],
|
124
|
+
t.tsInterfaceBody([
|
125
|
+
// ... more code ...
|
126
|
+
])
|
127
|
+
)
|
128
|
+
);
|
129
|
+
};
|
130
|
+
```
|
package/main/react-query.js
CHANGED
@@ -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.createReactQueryHooks = exports.createReactQueryHookInterface = exports.createReactQueryHook = void 0;
|
10
|
+
exports.createReactQueryMutationHooks = exports.createReactQueryMutationHook = exports.createReactQueryMutationArgsInterface = exports.createReactQueryHooks = exports.createReactQueryHookInterface = exports.createReactQueryHook = void 0;
|
11
11
|
|
12
12
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
13
13
|
|
@@ -23,6 +23,8 @@ var _babel = require("./utils/babel");
|
|
23
23
|
|
24
24
|
var _types2 = require("./utils/types");
|
25
25
|
|
26
|
+
var _wasm = require("./wasm");
|
27
|
+
|
26
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); }
|
27
29
|
|
28
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; }
|
@@ -33,7 +35,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
33
35
|
|
34
36
|
var DEFAULT_OPTIONS = {
|
35
37
|
optionalClient: false,
|
36
|
-
v4: false
|
38
|
+
v4: false,
|
39
|
+
mutations: false
|
37
40
|
};
|
38
41
|
|
39
42
|
var createReactQueryHooks = function createReactQueryHooks(_ref) {
|
@@ -108,17 +111,151 @@ var createReactQueryHook = function createReactQueryHook(_ref2) {
|
|
108
111
|
|
109
112
|
exports.createReactQueryHook = createReactQueryHook;
|
110
113
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
114
|
+
/**
|
115
|
+
* Example:
|
116
|
+
```
|
117
|
+
export interface Cw4UpdateMembersMutation {
|
118
|
+
client: Cw4GroupClient
|
119
|
+
args: {
|
120
|
+
tokenId: string
|
121
|
+
remove: string[]
|
122
|
+
}
|
123
|
+
options?: Omit<
|
124
|
+
UseMutationOptions<ExecuteResult, Error, Pick<Cw4UpdateMembersMutation, 'args'>>,
|
125
|
+
'mutationFn'
|
126
|
+
>
|
127
|
+
}
|
128
|
+
```
|
129
|
+
*/
|
130
|
+
var createReactQueryMutationArgsInterface = function createReactQueryMutationArgsInterface(_ref3) {
|
131
|
+
var _jsonschema$$ref;
|
132
|
+
|
133
|
+
var ExecuteClient = _ref3.ExecuteClient,
|
134
|
+
mutationHookParamsTypeName = _ref3.mutationHookParamsTypeName,
|
135
|
+
useMutationTypeParameter = _ref3.useMutationTypeParameter,
|
136
|
+
jsonschema = _ref3.jsonschema;
|
137
|
+
var typedUseMutationOptions = t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter);
|
138
|
+
var body = [(0, _utils.tsPropertySignature)(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(ExecuteClient))), false)];
|
139
|
+
var msgType = (0, _types2.getParamsTypeAnnotation)(jsonschema); // TODO: this should not have to be done manually.
|
140
|
+
|
141
|
+
if (!msgType && jsonschema !== null && jsonschema !== void 0 && (_jsonschema$$ref = jsonschema.$ref) !== null && _jsonschema$$ref !== void 0 && _jsonschema$$ref.startsWith('#/definitions/')) {
|
142
|
+
var refName = jsonschema === null || jsonschema === void 0 ? void 0 : jsonschema.$ref;
|
143
|
+
|
144
|
+
if (/_for_[A-Z]/.test(refName)) {
|
145
|
+
refName = refName.replace(/_for_/, 'For');
|
146
|
+
}
|
147
|
+
|
148
|
+
msgType = t.tsTypeAnnotation((0, _types2.getTypeFromRef)(refName));
|
149
|
+
}
|
150
|
+
|
151
|
+
if (msgType) {
|
152
|
+
body.push(t.tsPropertySignature(t.identifier('msg'), msgType));
|
153
|
+
} // fee: number | StdFee | "auto" = "auto", memo?: string, funds?: readonly Coin[]
|
154
|
+
|
155
|
+
|
156
|
+
var optionalArgs = t.tsPropertySignature(t.identifier('args'), t.tsTypeAnnotation(t.tsTypeLiteral(_wasm.FIXED_EXECUTE_PARAMS.map(function (param) {
|
157
|
+
return (0, _babel.propertySignature)(param.name, param.typeAnnotation, param.optional);
|
158
|
+
}))));
|
159
|
+
optionalArgs.optional = true;
|
160
|
+
body.push(optionalArgs);
|
161
|
+
return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(mutationHookParamsTypeName), null, [], t.tsInterfaceBody(body)));
|
162
|
+
};
|
163
|
+
|
164
|
+
exports.createReactQueryMutationArgsInterface = createReactQueryMutationArgsInterface;
|
165
|
+
|
166
|
+
var createReactQueryMutationHooks = function createReactQueryMutationHooks(_ref4) {
|
167
|
+
var execMsg = _ref4.execMsg,
|
168
|
+
contractName = _ref4.contractName,
|
169
|
+
ExecuteClient = _ref4.ExecuteClient,
|
170
|
+
_ref4$options = _ref4.options,
|
171
|
+
options = _ref4$options === void 0 ? {} : _ref4$options;
|
172
|
+
// merge the user options with the defaults
|
173
|
+
return (0, _utils.getMessageProperties)(execMsg).reduce(function (m, schema) {
|
174
|
+
var _jsonschema$propertie2, _Object$keys;
|
175
|
+
|
176
|
+
// update_members
|
177
|
+
var execMethodUnderscoreName = Object.keys(schema.properties)[0]; // updateMembers
|
178
|
+
|
179
|
+
var execMethodName = (0, _case.camel)(execMethodUnderscoreName); // Cw20UpdateMembersMutation
|
180
|
+
|
181
|
+
var mutationHookParamsTypeName = "".concat((0, _case.pascal)(contractName)).concat((0, _case.pascal)(execMethodName), "Mutation"); // useCw20UpdateMembersMutation
|
182
|
+
|
183
|
+
var mutationHookName = "use".concat(mutationHookParamsTypeName);
|
184
|
+
var jsonschema = schema.properties[execMethodUnderscoreName];
|
185
|
+
var properties = (_jsonschema$propertie2 = jsonschema.properties) !== null && _jsonschema$propertie2 !== void 0 ? _jsonschema$propertie2 : {}; // TODO: there should be a better way to do this
|
186
|
+
|
187
|
+
var hasMsg = !!((_Object$keys = Object.keys(properties)) !== null && _Object$keys !== void 0 && _Object$keys.length || jsonschema !== null && jsonschema !== void 0 && jsonschema.$ref); // <ExecuteResult, Error, Cw4UpdateMembersMutation>
|
188
|
+
|
189
|
+
var useMutationTypeParameter = generateMutationTypeParameter(mutationHookParamsTypeName, hasMsg);
|
190
|
+
return [createReactQueryMutationArgsInterface({
|
191
|
+
mutationHookParamsTypeName: mutationHookParamsTypeName,
|
192
|
+
ExecuteClient: ExecuteClient,
|
193
|
+
jsonschema: jsonschema,
|
194
|
+
useMutationTypeParameter: useMutationTypeParameter
|
195
|
+
}), createReactQueryMutationHook({
|
196
|
+
execMethodName: execMethodName,
|
197
|
+
mutationHookName: mutationHookName,
|
198
|
+
mutationHookParamsTypeName: mutationHookParamsTypeName,
|
199
|
+
hasMsg: hasMsg,
|
200
|
+
useMutationTypeParameter: useMutationTypeParameter
|
201
|
+
})].concat((0, _toConsumableArray2["default"])(m));
|
202
|
+
}, []);
|
203
|
+
};
|
204
|
+
/**
|
205
|
+
* Generates the mutation type parameter. If args exist, we use a pick. If not, we just return the params type.
|
206
|
+
*/
|
207
|
+
|
208
|
+
|
209
|
+
exports.createReactQueryMutationHooks = createReactQueryMutationHooks;
|
210
|
+
|
211
|
+
function generateMutationTypeParameter(mutationHookParamsTypeName, hasArgs) {
|
212
|
+
return t.tsTypeParameterInstantiation([// Data
|
213
|
+
t.tSTypeReference(t.identifier('ExecuteResult')), // Error
|
214
|
+
t.tsTypeReference(t.identifier('Error')), // Variables
|
215
|
+
t.tsTypeReference(t.identifier(mutationHookParamsTypeName))]);
|
216
|
+
}
|
217
|
+
|
218
|
+
/**
|
219
|
+
*
|
220
|
+
* Example:
|
221
|
+
```
|
222
|
+
export const useCw4UpdateMembersMutation = ({ client, options }: Omit<Cw4UpdateMembersMutation, 'args'>) =>
|
223
|
+
useMutation<ExecuteResult, Error, Pick<Cw4UpdateMembersMutation, 'args'>>(
|
224
|
+
({ args }) => client.updateMembers(args),
|
225
|
+
options
|
226
|
+
)
|
227
|
+
```
|
228
|
+
*/
|
229
|
+
var createReactQueryMutationHook = function createReactQueryMutationHook(_ref5) {
|
230
|
+
var mutationHookName = _ref5.mutationHookName,
|
231
|
+
mutationHookParamsTypeName = _ref5.mutationHookParamsTypeName,
|
232
|
+
execMethodName = _ref5.execMethodName,
|
233
|
+
useMutationTypeParameter = _ref5.useMutationTypeParameter,
|
234
|
+
hasMsg = _ref5.hasMsg;
|
235
|
+
var useMutationFunctionArgs = [(0, _babel.shorthandProperty)('client')];
|
236
|
+
if (hasMsg) useMutationFunctionArgs.push((0, _babel.shorthandProperty)('msg'));
|
237
|
+
useMutationFunctionArgs.push(t.objectProperty(t.identifier('args'), t.assignmentPattern(t.objectPattern(_wasm.FIXED_EXECUTE_PARAMS.map(function (param) {
|
238
|
+
return (0, _babel.shorthandProperty)(param.name);
|
239
|
+
})), t.objectExpression([]))));
|
240
|
+
return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(mutationHookName), [(0, _utils.identifier)('options', t.tsTypeAnnotation((0, _babel.omitTypeReference)(t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter), 'mutationFn')), true)], t.blockStatement([t.returnStatement((0, _utils.callExpression)(t.identifier('useMutation'), [t.arrowFunctionExpression([t.objectPattern(useMutationFunctionArgs)], t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(execMethodName)), (hasMsg ? [t.identifier('msg')] : []).concat(_wasm.FIXED_EXECUTE_PARAMS.map(function (param) {
|
241
|
+
return t.identifier(param.name);
|
242
|
+
}))), false // not async
|
243
|
+
), t.identifier('options')], useMutationTypeParameter))])));
|
244
|
+
};
|
245
|
+
|
246
|
+
exports.createReactQueryMutationHook = createReactQueryMutationHook;
|
247
|
+
|
248
|
+
var createReactQueryHookInterface = function createReactQueryHookInterface(_ref6) {
|
249
|
+
var QueryClient = _ref6.QueryClient,
|
250
|
+
hookParamsTypeName = _ref6.hookParamsTypeName,
|
251
|
+
responseType = _ref6.responseType,
|
252
|
+
jsonschema = _ref6.jsonschema,
|
253
|
+
_ref6$options = _ref6.options,
|
254
|
+
options = _ref6$options === void 0 ? {} : _ref6$options;
|
118
255
|
// merge the user options with the defaults
|
119
256
|
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
120
257
|
var typedUseQueryOptions = t.tsTypeReference(t.identifier('UseQueryOptions'), t.tsTypeParameterInstantiation([(0, _babel.typeRefOrOptionalUnion)(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))]));
|
121
|
-
var body = [(0, _utils.tsPropertySignature)(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), (0, _utils.tsPropertySignature)(t.identifier('options'), t.tsTypeAnnotation(options.v4 ? t.tSIntersectionType([
|
258
|
+
var body = [(0, _utils.tsPropertySignature)(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), (0, _utils.tsPropertySignature)(t.identifier('options'), t.tsTypeAnnotation(options.v4 ? t.tSIntersectionType([(0, _babel.omitTypeReference)(typedUseQueryOptions, "'queryKey' | 'queryFn' | 'initialData'"), t.tSTypeLiteral([t.tsPropertySignature(t.identifier('initialData?'), t.tsTypeAnnotation(t.tsUndefinedKeyword()))])]) : typedUseQueryOptions), true)];
|
122
259
|
var props = getProps(jsonschema, true);
|
123
260
|
|
124
261
|
if (props.length) {
|
@@ -131,9 +268,9 @@ var createReactQueryHookInterface = function createReactQueryHookInterface(_ref3
|
|
131
268
|
exports.createReactQueryHookInterface = createReactQueryHookInterface;
|
132
269
|
|
133
270
|
var getProps = function getProps(jsonschema, camelize) {
|
134
|
-
var _jsonschema$
|
271
|
+
var _jsonschema$propertie3;
|
135
272
|
|
136
|
-
var keys = Object.keys((_jsonschema$
|
273
|
+
var keys = Object.keys((_jsonschema$propertie3 = jsonschema.properties) !== null && _jsonschema$propertie3 !== void 0 ? _jsonschema$propertie3 : {});
|
137
274
|
if (!keys.length) return [];
|
138
275
|
return keys.map(function (prop) {
|
139
276
|
var _getPropertyType = (0, _types2.getPropertyType)(jsonschema, prop),
|
package/main/react-query.spec.js
CHANGED
@@ -10,6 +10,8 @@ var t = _interopRequireWildcard(require("@babel/types"));
|
|
10
10
|
|
11
11
|
var _query_msg = _interopRequireDefault(require("./../../../__fixtures__/basic/query_msg.json"));
|
12
12
|
|
13
|
+
var _execute_msg_for__empty = _interopRequireDefault(require("./../../../__fixtures__/basic/execute_msg_for__empty.json"));
|
14
|
+
|
13
15
|
var _reactQuery = require("./react-query");
|
14
16
|
|
15
17
|
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); }
|
@@ -69,4 +71,9 @@ it('createReactQueryHooks', function () {
|
|
69
71
|
v4: true
|
70
72
|
}
|
71
73
|
})));
|
74
|
+
expectCode(t.program((0, _reactQuery.createReactQueryMutationHooks)({
|
75
|
+
execMsg: _execute_msg_for__empty["default"],
|
76
|
+
contractName: 'Sg721',
|
77
|
+
ExecuteClient: 'Sg721Client'
|
78
|
+
})));
|
72
79
|
});
|
package/main/utils/babel.js
CHANGED
@@ -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.typedIdentifier = exports.typeRefOrOptionalUnion = exports.tsTypeOperator = exports.tsPropertySignature = exports.tsObjectPattern = exports.shorthandProperty = exports.recursiveNamespace = exports.propertySignature = exports.promiseTypeAnnotation = exports.optionalConditionalExpression = exports.memberExpressionOrIdentifierSnake = exports.memberExpressionOrIdentifier = exports.importStmt = exports.importAminoMsg = exports.identifier = exports.getMessageProperties = exports.getFieldDimensionality = exports.classProperty = exports.classDeclaration = exports.callExpression = exports.bindMethod = exports.arrowFunctionExpression = exports.arrayTypeNDimensions = exports.FieldTypeAsts = void 0;
|
10
|
+
exports.typedIdentifier = exports.typeRefOrOptionalUnion = exports.tsTypeOperator = exports.tsPropertySignature = exports.tsObjectPattern = exports.shorthandProperty = exports.recursiveNamespace = exports.propertySignature = exports.promiseTypeAnnotation = exports.pickTypeReference = exports.parameterizedTypeReference = exports.optionalConditionalExpression = exports.omitTypeReference = exports.memberExpressionOrIdentifierSnake = exports.memberExpressionOrIdentifier = exports.importStmt = exports.importAminoMsg = exports.identifier = exports.getMessageProperties = exports.getFieldDimensionality = exports.classProperty = exports.classDeclaration = exports.callExpression = exports.bindMethod = exports.arrowFunctionExpression = exports.arrayTypeNDimensions = exports.FieldTypeAsts = void 0;
|
11
11
|
|
12
12
|
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
|
13
13
|
|
@@ -21,6 +21,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
21
21
|
|
22
22
|
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; }
|
23
23
|
|
24
|
+
// t.TSPropertySignature - kind?
|
24
25
|
var propertySignature = function propertySignature(name, typeAnnotation) {
|
25
26
|
var optional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
26
27
|
return {
|
@@ -279,4 +280,29 @@ var typeRefOrOptionalUnion = function typeRefOrOptionalUnion(identifier) {
|
|
279
280
|
return optional ? t.tsUnionType([typeReference, t.tsUndefinedKeyword()]) : typeReference;
|
280
281
|
};
|
281
282
|
|
282
|
-
exports.typeRefOrOptionalUnion = typeRefOrOptionalUnion;
|
283
|
+
exports.typeRefOrOptionalUnion = typeRefOrOptionalUnion;
|
284
|
+
|
285
|
+
var parameterizedTypeReference = function parameterizedTypeReference(identifier, from, omit) {
|
286
|
+
return t.tsTypeReference(t.identifier(identifier), t.tsTypeParameterInstantiation([from, typeof omit === 'string' ? t.tsLiteralType(t.stringLiteral(omit)) : t.tsUnionType(omit.map(function (o) {
|
287
|
+
return t.tsLiteralType(t.stringLiteral(o));
|
288
|
+
}))]));
|
289
|
+
};
|
290
|
+
/**
|
291
|
+
* omitTypeReference(t.tsTypeReference(t.identifier('Cw4UpdateMembersMutation'),),'args').....
|
292
|
+
* Omit<Cw4UpdateMembersMutation, 'args'>
|
293
|
+
*/
|
294
|
+
|
295
|
+
|
296
|
+
exports.parameterizedTypeReference = parameterizedTypeReference;
|
297
|
+
|
298
|
+
var omitTypeReference = function omitTypeReference(from, omit) {
|
299
|
+
return parameterizedTypeReference('Omit', from, omit);
|
300
|
+
};
|
301
|
+
|
302
|
+
exports.omitTypeReference = omitTypeReference;
|
303
|
+
|
304
|
+
var pickTypeReference = function pickTypeReference(from, pick) {
|
305
|
+
return parameterizedTypeReference('Pick', from, pick);
|
306
|
+
};
|
307
|
+
|
308
|
+
exports.pickTypeReference = pickTypeReference;
|
package/main/utils/types.js
CHANGED
@@ -7,7 +7,9 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
8
8
|
value: true
|
9
9
|
});
|
10
|
-
exports.
|
10
|
+
exports.getParamsTypeAnnotation = exports.createTypedObjectParams = void 0;
|
11
|
+
exports.getPropertySignatureFromProp = getPropertySignatureFromProp;
|
12
|
+
exports.getTypeFromRef = exports.getType = exports.getPropertyType = void 0;
|
11
13
|
|
12
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
13
15
|
|
@@ -51,6 +53,8 @@ var getTypeFromRef = function getTypeFromRef($ref) {
|
|
51
53
|
}
|
52
54
|
};
|
53
55
|
|
56
|
+
exports.getTypeFromRef = getTypeFromRef;
|
57
|
+
|
54
58
|
var getArrayTypeFromRef = function getArrayTypeFromRef($ref) {
|
55
59
|
return t.tsArrayType(getTypeFromRef($ref));
|
56
60
|
};
|
@@ -183,79 +187,95 @@ var getPropertyType = function getPropertyType(schema, prop) {
|
|
183
187
|
|
184
188
|
exports.getPropertyType = getPropertyType;
|
185
189
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
var typedParams = keys.map(function (prop) {
|
193
|
-
if (jsonschema.properties[prop].type === 'object') {
|
194
|
-
if (jsonschema.properties[prop].title) {
|
195
|
-
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(jsonschema.properties[prop].title))));
|
196
|
-
} else {
|
197
|
-
throw new Error('createTypedObjectParams() contact maintainer');
|
198
|
-
}
|
190
|
+
function getPropertySignatureFromProp(jsonschema, prop, camelize) {
|
191
|
+
if (jsonschema.properties[prop].type === 'object') {
|
192
|
+
if (jsonschema.properties[prop].title) {
|
193
|
+
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(jsonschema.properties[prop].title))));
|
194
|
+
} else {
|
195
|
+
throw new Error('createTypedObjectParams() contact maintainer');
|
199
196
|
}
|
197
|
+
}
|
200
198
|
|
201
|
-
|
202
|
-
|
199
|
+
if (Array.isArray(jsonschema.properties[prop].allOf)) {
|
200
|
+
var _jsonschema$required;
|
203
201
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
202
|
+
var isOptional = !((_jsonschema$required = jsonschema.required) !== null && _jsonschema$required !== void 0 && _jsonschema$required.includes(prop));
|
203
|
+
var unionTypes = jsonschema.properties[prop].allOf.map(function (el) {
|
204
|
+
if (el.title) return el.title;
|
205
|
+
if (el.$ref) return getTypeStrFromRef(el.$ref);
|
206
|
+
return el.type;
|
207
|
+
});
|
208
|
+
var uniqUnionTypes = (0, _toConsumableArray2["default"])(new Set(unionTypes));
|
211
209
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
210
|
+
if (uniqUnionTypes.length === 1) {
|
211
|
+
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(uniqUnionTypes[0]))), isOptional);
|
212
|
+
} else {
|
213
|
+
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(t.tsUnionType(uniqUnionTypes.map(function (typ) {
|
214
|
+
return t.tsTypeReference(t.identifier(typ));
|
215
|
+
}))), isOptional);
|
216
|
+
}
|
217
|
+
} else if (Array.isArray(jsonschema.properties[prop].oneOf)) {
|
218
|
+
var _jsonschema$required2;
|
221
219
|
|
222
|
-
|
220
|
+
var _isOptional = !((_jsonschema$required2 = jsonschema.required) !== null && _jsonschema$required2 !== void 0 && _jsonschema$required2.includes(prop));
|
223
221
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
222
|
+
var _unionTypes = jsonschema.properties[prop].oneOf.map(function (el) {
|
223
|
+
if (el.title) return el.title;
|
224
|
+
if (el.$ref) return getTypeStrFromRef(el.$ref);
|
225
|
+
return el.type;
|
226
|
+
});
|
229
227
|
|
230
|
-
|
228
|
+
var _uniqUnionTypes = (0, _toConsumableArray2["default"])(new Set(_unionTypes));
|
231
229
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
}
|
230
|
+
if (_uniqUnionTypes.length === 1) {
|
231
|
+
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(_uniqUnionTypes[0]))), _isOptional);
|
232
|
+
} else {
|
233
|
+
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(t.tsUnionType(_uniqUnionTypes.map(function (typ) {
|
234
|
+
return t.tsTypeReference(t.identifier(typ));
|
235
|
+
}))), _isOptional);
|
239
236
|
}
|
237
|
+
}
|
240
238
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
239
|
+
try {
|
240
|
+
getPropertyType(jsonschema, prop);
|
241
|
+
} catch (e) {
|
242
|
+
console.log(e);
|
243
|
+
console.log(jsonschema, prop);
|
244
|
+
}
|
245
|
+
|
246
|
+
var _getPropertyType = getPropertyType(jsonschema, prop),
|
247
|
+
type = _getPropertyType.type,
|
248
|
+
optional = _getPropertyType.optional;
|
247
249
|
|
248
|
-
|
249
|
-
|
250
|
-
optional = _getPropertyType.optional;
|
250
|
+
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(type), optional);
|
251
|
+
}
|
251
252
|
|
252
|
-
|
253
|
+
var getParamsTypeAnnotation = function getParamsTypeAnnotation(jsonschema) {
|
254
|
+
var _jsonschema$propertie;
|
255
|
+
|
256
|
+
var camelize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
257
|
+
var keys = Object.keys((_jsonschema$propertie = jsonschema.properties) !== null && _jsonschema$propertie !== void 0 ? _jsonschema$propertie : {});
|
258
|
+
if (!keys.length) return undefined;
|
259
|
+
var typedParams = keys.map(function (prop) {
|
260
|
+
return getPropertySignatureFromProp(jsonschema, prop, camelize);
|
253
261
|
});
|
262
|
+
return t.tsTypeAnnotation(t.tsTypeLiteral((0, _toConsumableArray2["default"])(typedParams)));
|
263
|
+
};
|
264
|
+
|
265
|
+
exports.getParamsTypeAnnotation = getParamsTypeAnnotation;
|
266
|
+
|
267
|
+
var createTypedObjectParams = function createTypedObjectParams(jsonschema) {
|
268
|
+
var _jsonschema$propertie2;
|
269
|
+
|
270
|
+
var camelize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
271
|
+
var keys = Object.keys((_jsonschema$propertie2 = jsonschema.properties) !== null && _jsonschema$propertie2 !== void 0 ? _jsonschema$propertie2 : {});
|
272
|
+
if (!keys.length) return; // const typedParams = keys.map(prop => getPropertySignatureFromProp(jsonschema, prop, camelize));
|
273
|
+
|
254
274
|
var params = keys.map(function (prop) {
|
255
275
|
return t.objectProperty(camelize ? t.identifier((0, _case.camel)(prop)) : t.identifier(prop), camelize ? t.identifier((0, _case.camel)(prop)) : t.identifier(prop), false, true);
|
256
276
|
});
|
257
277
|
var obj = t.objectPattern((0, _toConsumableArray2["default"])(params));
|
258
|
-
obj.typeAnnotation =
|
278
|
+
obj.typeAnnotation = getParamsTypeAnnotation(jsonschema, camelize);
|
259
279
|
return obj;
|
260
280
|
};
|
261
281
|
|
package/main/wasm.js
CHANGED
@@ -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.createWasmQueryMethod = exports.createWasmExecMethod = exports.createTypeOrInterface = exports.createTypeInterface = exports.createQueryInterface = exports.createQueryClass = exports.createPropertyFunctionWithObjectParamsForExec = exports.createPropertyFunctionWithObjectParams = exports.createExecuteInterface = exports.createExecuteClass = void 0;
|
10
|
+
exports.createWasmQueryMethod = exports.createWasmExecMethod = exports.createTypeOrInterface = exports.createTypeInterface = exports.createQueryInterface = exports.createQueryClass = exports.createPropertyFunctionWithObjectParamsForExec = exports.createPropertyFunctionWithObjectParams = exports.createExecuteInterface = exports.createExecuteClass = exports.FIXED_EXECUTE_PARAMS = exports.CONSTANT_EXEC_PARAMS = void 0;
|
11
11
|
|
12
12
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
13
13
|
|
@@ -60,6 +60,8 @@ var createQueryClass = function createQueryClass(className, implementsClassName,
|
|
60
60
|
};
|
61
61
|
|
62
62
|
exports.createQueryClass = createQueryClass;
|
63
|
+
var CONSTANT_EXEC_PARAMS = [t.assignmentPattern((0, _babel.identifier)('fee', t.tsTypeAnnotation(t.tsUnionType([t.tSNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), false), t.stringLiteral('auto')), (0, _babel.identifier)('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), (0, _babel.identifier)('funds', t.tsTypeAnnotation((0, _babel.tsTypeOperator)(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
64
|
+
exports.CONSTANT_EXEC_PARAMS = CONSTANT_EXEC_PARAMS;
|
63
65
|
|
64
66
|
var createWasmExecMethod = function createWasmExecMethod(jsonschema) {
|
65
67
|
var _jsonschema$propertie2;
|
@@ -71,9 +73,8 @@ var createWasmExecMethod = function createWasmExecMethod(jsonschema) {
|
|
71
73
|
var args = Object.keys(properties).map(function (prop) {
|
72
74
|
return t.objectProperty(t.identifier(prop), t.identifier((0, _case.camel)(prop)), false, prop === (0, _case.camel)(prop));
|
73
75
|
});
|
74
|
-
var constantParams = [t.assignmentPattern((0, _babel.identifier)('fee', t.tsTypeAnnotation(t.tsUnionType([t.tSNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), false), t.stringLiteral('auto')), (0, _babel.identifier)('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), (0, _babel.identifier)('funds', t.tsTypeAnnotation((0, _babel.tsTypeOperator)(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
75
76
|
return t.classProperty(t.identifier(methodName), (0, _utils.arrowFunctionExpression)(obj ? [// props
|
76
|
-
obj].concat(
|
77
|
+
obj].concat(CONSTANT_EXEC_PARAMS) : CONSTANT_EXEC_PARAMS, t.blockStatement([t.returnStatement(t.awaitExpression(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('execute')), [t.memberExpression(t.thisExpression(), t.identifier('sender')), t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.objectExpression([t.objectProperty(t.identifier(underscoreName), t.objectExpression((0, _toConsumableArray2["default"])(args)))]), t.identifier('fee'), t.identifier('memo'), t.identifier('funds')])))]), // return type
|
77
78
|
t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tSTypeReference(t.identifier('ExecuteResult'))]))), true));
|
78
79
|
};
|
79
80
|
|
@@ -132,14 +133,15 @@ var createPropertyFunctionWithObjectParams = function createPropertyFunctionWith
|
|
132
133
|
};
|
133
134
|
|
134
135
|
exports.createPropertyFunctionWithObjectParams = createPropertyFunctionWithObjectParams;
|
136
|
+
var FIXED_EXECUTE_PARAMS = [(0, _babel.identifier)('fee', t.tsTypeAnnotation(t.tsUnionType([t.tsNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), true), (0, _babel.identifier)('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), (0, _babel.identifier)('funds', t.tsTypeAnnotation((0, _babel.tsTypeOperator)(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
137
|
+
exports.FIXED_EXECUTE_PARAMS = FIXED_EXECUTE_PARAMS;
|
135
138
|
|
136
139
|
var createPropertyFunctionWithObjectParamsForExec = function createPropertyFunctionWithObjectParamsForExec(methodName, responseType, jsonschema) {
|
137
140
|
var obj = (0, _types2.createTypedObjectParams)(jsonschema);
|
138
|
-
var fixedParams = [(0, _babel.identifier)('fee', t.tsTypeAnnotation(t.tsUnionType([t.tsNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), true), (0, _babel.identifier)('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), (0, _babel.identifier)('funds', t.tsTypeAnnotation((0, _babel.tsTypeOperator)(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
139
141
|
var func = {
|
140
142
|
type: 'TSFunctionType',
|
141
143
|
typeAnnotation: (0, _utils.promiseTypeAnnotation)(responseType),
|
142
|
-
parameters: obj ? [obj].concat(
|
144
|
+
parameters: obj ? [obj].concat(FIXED_EXECUTE_PARAMS) : FIXED_EXECUTE_PARAMS
|
143
145
|
};
|
144
146
|
return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
|
145
147
|
};
|
package/module/react-query.js
CHANGED
@@ -6,12 +6,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
6
6
|
|
7
7
|
import * as t from '@babel/types';
|
8
8
|
import { camel, pascal } from 'case';
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import { getPropertyType } from './utils/types';
|
9
|
+
import { callExpression, getMessageProperties, identifier, tsObjectPattern, tsPropertySignature } from './utils';
|
10
|
+
import { omitTypeReference, optionalConditionalExpression, propertySignature, shorthandProperty, typeRefOrOptionalUnion } from './utils/babel';
|
11
|
+
import { getParamsTypeAnnotation, getPropertyType, getTypeFromRef } from './utils/types';
|
12
|
+
import { FIXED_EXECUTE_PARAMS } from './wasm'; // TODO: this mutations boolean is not actually used here and only at a higher level
|
13
|
+
|
12
14
|
const DEFAULT_OPTIONS = {
|
13
15
|
optionalClient: false,
|
14
|
-
v4: false
|
16
|
+
v4: false,
|
17
|
+
mutations: false
|
15
18
|
};
|
16
19
|
export const createReactQueryHooks = ({
|
17
20
|
queryMsg,
|
@@ -77,6 +80,124 @@ export const createReactQueryHook = ({
|
|
77
80
|
})], t.tsTypeAnnotation(t.tsTypeReference(t.identifier(hookParamsTypeName))))], t.blockStatement([t.returnStatement(callExpression(t.identifier('useQuery'), [t.arrayExpression(generateUseQueryQueryKey(hookKeyName, props, options.optionalClient)), t.arrowFunctionExpression([], optionalConditionalExpression(t.identifier('client'), t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), args), t.identifier('undefined'), options.optionalClient), false), options.optionalClient ? t.objectExpression([t.spreadElement(t.identifier('options')), t.objectProperty(t.identifier('enabled'), t.logicalExpression('&&', t.unaryExpression('!', t.unaryExpression('!', t.identifier('client'))), t.conditionalExpression( // explicitly check for undefined
|
78
81
|
t.binaryExpression('!=', t.optionalMemberExpression(t.identifier('options'), t.identifier('enabled'), false, true), t.identifier('undefined')), t.memberExpression(t.identifier('options'), t.identifier('enabled')), t.booleanLiteral(true))))]) : t.identifier('options')], t.tsTypeParameterInstantiation([typeRefOrOptionalUnion(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))])))])));
|
79
82
|
};
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Example:
|
86
|
+
```
|
87
|
+
export interface Cw4UpdateMembersMutation {
|
88
|
+
client: Cw4GroupClient
|
89
|
+
args: {
|
90
|
+
tokenId: string
|
91
|
+
remove: string[]
|
92
|
+
}
|
93
|
+
options?: Omit<
|
94
|
+
UseMutationOptions<ExecuteResult, Error, Pick<Cw4UpdateMembersMutation, 'args'>>,
|
95
|
+
'mutationFn'
|
96
|
+
>
|
97
|
+
}
|
98
|
+
```
|
99
|
+
*/
|
100
|
+
export const createReactQueryMutationArgsInterface = ({
|
101
|
+
ExecuteClient,
|
102
|
+
mutationHookParamsTypeName,
|
103
|
+
useMutationTypeParameter,
|
104
|
+
jsonschema
|
105
|
+
}) => {
|
106
|
+
const typedUseMutationOptions = t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter);
|
107
|
+
const body = [tsPropertySignature(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(ExecuteClient))), false)];
|
108
|
+
let msgType = getParamsTypeAnnotation(jsonschema); // TODO: this should not have to be done manually.
|
109
|
+
|
110
|
+
if (!msgType && jsonschema?.$ref?.startsWith('#/definitions/')) {
|
111
|
+
let refName = jsonschema?.$ref;
|
112
|
+
|
113
|
+
if (/_for_[A-Z]/.test(refName)) {
|
114
|
+
refName = refName.replace(/_for_/, 'For');
|
115
|
+
}
|
116
|
+
|
117
|
+
msgType = t.tsTypeAnnotation(getTypeFromRef(refName));
|
118
|
+
}
|
119
|
+
|
120
|
+
if (msgType) {
|
121
|
+
body.push(t.tsPropertySignature(t.identifier('msg'), msgType));
|
122
|
+
} // fee: number | StdFee | "auto" = "auto", memo?: string, funds?: readonly Coin[]
|
123
|
+
|
124
|
+
|
125
|
+
const optionalArgs = t.tsPropertySignature(t.identifier('args'), t.tsTypeAnnotation(t.tsTypeLiteral(FIXED_EXECUTE_PARAMS.map(param => propertySignature(param.name, param.typeAnnotation, param.optional)))));
|
126
|
+
optionalArgs.optional = true;
|
127
|
+
body.push(optionalArgs);
|
128
|
+
return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(mutationHookParamsTypeName), null, [], t.tsInterfaceBody(body)));
|
129
|
+
};
|
130
|
+
export const createReactQueryMutationHooks = ({
|
131
|
+
execMsg,
|
132
|
+
contractName,
|
133
|
+
ExecuteClient,
|
134
|
+
options = {}
|
135
|
+
}) => {
|
136
|
+
// merge the user options with the defaults
|
137
|
+
return getMessageProperties(execMsg).reduce((m, schema) => {
|
138
|
+
// update_members
|
139
|
+
const execMethodUnderscoreName = Object.keys(schema.properties)[0]; // updateMembers
|
140
|
+
|
141
|
+
const execMethodName = camel(execMethodUnderscoreName); // Cw20UpdateMembersMutation
|
142
|
+
|
143
|
+
const mutationHookParamsTypeName = `${pascal(contractName)}${pascal(execMethodName)}Mutation`; // useCw20UpdateMembersMutation
|
144
|
+
|
145
|
+
const mutationHookName = `use${mutationHookParamsTypeName}`;
|
146
|
+
const jsonschema = schema.properties[execMethodUnderscoreName];
|
147
|
+
const properties = jsonschema.properties ?? {}; // TODO: there should be a better way to do this
|
148
|
+
|
149
|
+
const hasMsg = !!(Object.keys(properties)?.length || jsonschema?.$ref); // <ExecuteResult, Error, Cw4UpdateMembersMutation>
|
150
|
+
|
151
|
+
const useMutationTypeParameter = generateMutationTypeParameter(mutationHookParamsTypeName, hasMsg);
|
152
|
+
return [createReactQueryMutationArgsInterface({
|
153
|
+
mutationHookParamsTypeName,
|
154
|
+
ExecuteClient,
|
155
|
+
jsonschema,
|
156
|
+
useMutationTypeParameter
|
157
|
+
}), createReactQueryMutationHook({
|
158
|
+
execMethodName,
|
159
|
+
mutationHookName,
|
160
|
+
mutationHookParamsTypeName,
|
161
|
+
hasMsg,
|
162
|
+
useMutationTypeParameter
|
163
|
+
}), ...m];
|
164
|
+
}, []);
|
165
|
+
};
|
166
|
+
/**
|
167
|
+
* Generates the mutation type parameter. If args exist, we use a pick. If not, we just return the params type.
|
168
|
+
*/
|
169
|
+
|
170
|
+
function generateMutationTypeParameter(mutationHookParamsTypeName, hasArgs) {
|
171
|
+
return t.tsTypeParameterInstantiation([// Data
|
172
|
+
t.tSTypeReference(t.identifier('ExecuteResult')), // Error
|
173
|
+
t.tsTypeReference(t.identifier('Error')), // Variables
|
174
|
+
t.tsTypeReference(t.identifier(mutationHookParamsTypeName))]);
|
175
|
+
}
|
176
|
+
|
177
|
+
/**
|
178
|
+
*
|
179
|
+
* Example:
|
180
|
+
```
|
181
|
+
export const useCw4UpdateMembersMutation = ({ client, options }: Omit<Cw4UpdateMembersMutation, 'args'>) =>
|
182
|
+
useMutation<ExecuteResult, Error, Pick<Cw4UpdateMembersMutation, 'args'>>(
|
183
|
+
({ args }) => client.updateMembers(args),
|
184
|
+
options
|
185
|
+
)
|
186
|
+
```
|
187
|
+
*/
|
188
|
+
export const createReactQueryMutationHook = ({
|
189
|
+
mutationHookName,
|
190
|
+
mutationHookParamsTypeName,
|
191
|
+
execMethodName,
|
192
|
+
useMutationTypeParameter,
|
193
|
+
hasMsg
|
194
|
+
}) => {
|
195
|
+
const useMutationFunctionArgs = [shorthandProperty('client')];
|
196
|
+
if (hasMsg) useMutationFunctionArgs.push(shorthandProperty('msg'));
|
197
|
+
useMutationFunctionArgs.push(t.objectProperty(t.identifier('args'), t.assignmentPattern(t.objectPattern(FIXED_EXECUTE_PARAMS.map(param => shorthandProperty(param.name))), t.objectExpression([]))));
|
198
|
+
return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(mutationHookName), [identifier('options', t.tsTypeAnnotation(omitTypeReference(t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter), 'mutationFn')), true)], t.blockStatement([t.returnStatement(callExpression(t.identifier('useMutation'), [t.arrowFunctionExpression([t.objectPattern(useMutationFunctionArgs)], t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(execMethodName)), (hasMsg ? [t.identifier('msg')] : []).concat(FIXED_EXECUTE_PARAMS.map(param => t.identifier(param.name)))), false // not async
|
199
|
+
), t.identifier('options')], useMutationTypeParameter))])));
|
200
|
+
};
|
80
201
|
export const createReactQueryHookInterface = ({
|
81
202
|
QueryClient,
|
82
203
|
hookParamsTypeName,
|
@@ -87,7 +208,7 @@ export const createReactQueryHookInterface = ({
|
|
87
208
|
// merge the user options with the defaults
|
88
209
|
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
89
210
|
const typedUseQueryOptions = t.tsTypeReference(t.identifier('UseQueryOptions'), t.tsTypeParameterInstantiation([typeRefOrOptionalUnion(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))]));
|
90
|
-
const body = [tsPropertySignature(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), tsPropertySignature(t.identifier('options'), t.tsTypeAnnotation(options.v4 ? t.tSIntersectionType([
|
211
|
+
const body = [tsPropertySignature(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), tsPropertySignature(t.identifier('options'), t.tsTypeAnnotation(options.v4 ? t.tSIntersectionType([omitTypeReference(typedUseQueryOptions, "'queryKey' | 'queryFn' | 'initialData'"), t.tSTypeLiteral([t.tsPropertySignature(t.identifier('initialData?'), t.tsTypeAnnotation(t.tsUndefinedKeyword()))])]) : typedUseQueryOptions), true)];
|
91
212
|
const props = getProps(jsonschema, true);
|
92
213
|
|
93
214
|
if (props.length) {
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import generate from '@babel/generator';
|
2
2
|
import * as t from '@babel/types';
|
3
3
|
import query_msg from './../../../__fixtures__/basic/query_msg.json';
|
4
|
-
import
|
4
|
+
import execute_msg from './../../../__fixtures__/basic/execute_msg_for__empty.json';
|
5
|
+
import { createReactQueryHooks, createReactQueryMutationHooks } from './react-query';
|
5
6
|
|
6
7
|
const expectCode = ast => {
|
7
8
|
expect(generate(ast).code).toMatchSnapshot();
|
@@ -56,4 +57,9 @@ it('createReactQueryHooks', () => {
|
|
56
57
|
v4: true
|
57
58
|
}
|
58
59
|
})));
|
60
|
+
expectCode(t.program(createReactQueryMutationHooks({
|
61
|
+
execMsg: execute_msg,
|
62
|
+
contractName: 'Sg721',
|
63
|
+
ExecuteClient: 'Sg721Client'
|
64
|
+
})));
|
59
65
|
});
|
package/module/utils/babel.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import * as t from '@babel/types';
|
2
2
|
import { snake } from "case";
|
3
|
+
// t.TSPropertySignature - kind?
|
3
4
|
export const propertySignature = (name, typeAnnotation, optional = false) => {
|
4
5
|
return {
|
5
6
|
type: 'TSPropertySignature',
|
@@ -164,4 +165,18 @@ export const optionalConditionalExpression = (test, expression, alternate, optio
|
|
164
165
|
export const typeRefOrOptionalUnion = (identifier, optional = false) => {
|
165
166
|
const typeReference = t.tsTypeReference(identifier);
|
166
167
|
return optional ? t.tsUnionType([typeReference, t.tsUndefinedKeyword()]) : typeReference;
|
168
|
+
};
|
169
|
+
export const parameterizedTypeReference = (identifier, from, omit) => {
|
170
|
+
return t.tsTypeReference(t.identifier(identifier), t.tsTypeParameterInstantiation([from, typeof omit === 'string' ? t.tsLiteralType(t.stringLiteral(omit)) : t.tsUnionType(omit.map(o => t.tsLiteralType(t.stringLiteral(o))))]));
|
171
|
+
};
|
172
|
+
/**
|
173
|
+
* omitTypeReference(t.tsTypeReference(t.identifier('Cw4UpdateMembersMutation'),),'args').....
|
174
|
+
* Omit<Cw4UpdateMembersMutation, 'args'>
|
175
|
+
*/
|
176
|
+
|
177
|
+
export const omitTypeReference = (from, omit) => {
|
178
|
+
return parameterizedTypeReference('Omit', from, omit);
|
179
|
+
};
|
180
|
+
export const pickTypeReference = (from, pick) => {
|
181
|
+
return parameterizedTypeReference('Pick', from, pick);
|
167
182
|
};
|
package/module/utils/types.js
CHANGED
@@ -16,7 +16,7 @@ const getTypeStrFromRef = $ref => {
|
|
16
16
|
}
|
17
17
|
};
|
18
18
|
|
19
|
-
const getTypeFromRef = $ref => {
|
19
|
+
export const getTypeFromRef = $ref => {
|
20
20
|
switch ($ref) {
|
21
21
|
case '#/definitions/Binary':
|
22
22
|
return t.tsTypeReference(t.identifier('Binary'));
|
@@ -150,65 +150,72 @@ export const getPropertyType = (schema, prop) => {
|
|
150
150
|
optional
|
151
151
|
};
|
152
152
|
};
|
153
|
-
export
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(jsonschema.properties[prop].title))));
|
160
|
-
} else {
|
161
|
-
throw new Error('createTypedObjectParams() contact maintainer');
|
162
|
-
}
|
153
|
+
export function getPropertySignatureFromProp(jsonschema, prop, camelize) {
|
154
|
+
if (jsonschema.properties[prop].type === 'object') {
|
155
|
+
if (jsonschema.properties[prop].title) {
|
156
|
+
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(jsonschema.properties[prop].title))));
|
157
|
+
} else {
|
158
|
+
throw new Error('createTypedObjectParams() contact maintainer');
|
163
159
|
}
|
160
|
+
}
|
164
161
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
}
|
179
|
-
} else if (Array.isArray(jsonschema.properties[prop].oneOf)) {
|
180
|
-
const isOptional = !jsonschema.required?.includes(prop);
|
181
|
-
const unionTypes = jsonschema.properties[prop].oneOf.map(el => {
|
182
|
-
if (el.title) return el.title;
|
183
|
-
if (el.$ref) return getTypeStrFromRef(el.$ref);
|
184
|
-
return el.type;
|
185
|
-
});
|
186
|
-
const uniqUnionTypes = [...new Set(unionTypes)];
|
187
|
-
|
188
|
-
if (uniqUnionTypes.length === 1) {
|
189
|
-
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(uniqUnionTypes[0]))), isOptional);
|
190
|
-
} else {
|
191
|
-
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsUnionType(uniqUnionTypes.map(typ => t.tsTypeReference(t.identifier(typ))))), isOptional);
|
192
|
-
}
|
162
|
+
if (Array.isArray(jsonschema.properties[prop].allOf)) {
|
163
|
+
const isOptional = !jsonschema.required?.includes(prop);
|
164
|
+
const unionTypes = jsonschema.properties[prop].allOf.map(el => {
|
165
|
+
if (el.title) return el.title;
|
166
|
+
if (el.$ref) return getTypeStrFromRef(el.$ref);
|
167
|
+
return el.type;
|
168
|
+
});
|
169
|
+
const uniqUnionTypes = [...new Set(unionTypes)];
|
170
|
+
|
171
|
+
if (uniqUnionTypes.length === 1) {
|
172
|
+
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(uniqUnionTypes[0]))), isOptional);
|
173
|
+
} else {
|
174
|
+
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsUnionType(uniqUnionTypes.map(typ => t.tsTypeReference(t.identifier(typ))))), isOptional);
|
193
175
|
}
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
176
|
+
} else if (Array.isArray(jsonschema.properties[prop].oneOf)) {
|
177
|
+
const isOptional = !jsonschema.required?.includes(prop);
|
178
|
+
const unionTypes = jsonschema.properties[prop].oneOf.map(el => {
|
179
|
+
if (el.title) return el.title;
|
180
|
+
if (el.$ref) return getTypeStrFromRef(el.$ref);
|
181
|
+
return el.type;
|
182
|
+
});
|
183
|
+
const uniqUnionTypes = [...new Set(unionTypes)];
|
184
|
+
|
185
|
+
if (uniqUnionTypes.length === 1) {
|
186
|
+
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsTypeReference(t.identifier(uniqUnionTypes[0]))), isOptional);
|
187
|
+
} else {
|
188
|
+
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(t.tsUnionType(uniqUnionTypes.map(typ => t.tsTypeReference(t.identifier(typ))))), isOptional);
|
200
189
|
}
|
190
|
+
}
|
191
|
+
|
192
|
+
try {
|
193
|
+
getPropertyType(jsonschema, prop);
|
194
|
+
} catch (e) {
|
195
|
+
console.log(e);
|
196
|
+
console.log(jsonschema, prop);
|
197
|
+
}
|
198
|
+
|
199
|
+
const {
|
200
|
+
type,
|
201
|
+
optional
|
202
|
+
} = getPropertyType(jsonschema, prop);
|
203
|
+
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(type), optional);
|
204
|
+
}
|
205
|
+
export const getParamsTypeAnnotation = (jsonschema, camelize = true) => {
|
206
|
+
const keys = Object.keys(jsonschema.properties ?? {});
|
207
|
+
if (!keys.length) return undefined;
|
208
|
+
const typedParams = keys.map(prop => getPropertySignatureFromProp(jsonschema, prop, camelize));
|
209
|
+
return t.tsTypeAnnotation(t.tsTypeLiteral([...typedParams]));
|
210
|
+
};
|
211
|
+
export const createTypedObjectParams = (jsonschema, camelize = true) => {
|
212
|
+
const keys = Object.keys(jsonschema.properties ?? {});
|
213
|
+
if (!keys.length) return; // const typedParams = keys.map(prop => getPropertySignatureFromProp(jsonschema, prop, camelize));
|
201
214
|
|
202
|
-
const {
|
203
|
-
type,
|
204
|
-
optional
|
205
|
-
} = getPropertyType(jsonschema, prop);
|
206
|
-
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(type), optional);
|
207
|
-
});
|
208
215
|
const params = keys.map(prop => {
|
209
216
|
return t.objectProperty(camelize ? t.identifier(camel(prop)) : t.identifier(prop), camelize ? t.identifier(camel(prop)) : t.identifier(prop), false, true);
|
210
217
|
});
|
211
218
|
const obj = t.objectPattern([...params]);
|
212
|
-
obj.typeAnnotation =
|
219
|
+
obj.typeAnnotation = getParamsTypeAnnotation(jsonschema, camelize);
|
213
220
|
return obj;
|
214
221
|
};
|
package/module/wasm.js
CHANGED
@@ -27,6 +27,7 @@ export const createQueryClass = (className, implementsClassName, queryMsg) => {
|
|
27
27
|
t.classMethod('constructor', t.identifier('constructor'), [typedIdentifier('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('CosmWasmClient')))), typedIdentifier('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([// client/contract set
|
28
28
|
t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('client'))), t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.identifier('contractAddress'))), ...bindings])), ...methods], [t.tSExpressionWithTypeArguments(t.identifier(implementsClassName))]));
|
29
29
|
};
|
30
|
+
export const CONSTANT_EXEC_PARAMS = [t.assignmentPattern(identifier('fee', t.tsTypeAnnotation(t.tsUnionType([t.tSNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), false), t.stringLiteral('auto')), identifier('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), identifier('funds', t.tsTypeAnnotation(tsTypeOperator(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
30
31
|
export const createWasmExecMethod = jsonschema => {
|
31
32
|
const underscoreName = Object.keys(jsonschema.properties)[0];
|
32
33
|
const methodName = camel(underscoreName);
|
@@ -35,9 +36,8 @@ export const createWasmExecMethod = jsonschema => {
|
|
35
36
|
const args = Object.keys(properties).map(prop => {
|
36
37
|
return t.objectProperty(t.identifier(prop), t.identifier(camel(prop)), false, prop === camel(prop));
|
37
38
|
});
|
38
|
-
const constantParams = [t.assignmentPattern(identifier('fee', t.tsTypeAnnotation(t.tsUnionType([t.tSNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), false), t.stringLiteral('auto')), identifier('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), identifier('funds', t.tsTypeAnnotation(tsTypeOperator(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
39
39
|
return t.classProperty(t.identifier(methodName), arrowFunctionExpression(obj ? [// props
|
40
|
-
obj, ...
|
40
|
+
obj, ...CONSTANT_EXEC_PARAMS] : CONSTANT_EXEC_PARAMS, t.blockStatement([t.returnStatement(t.awaitExpression(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('execute')), [t.memberExpression(t.thisExpression(), t.identifier('sender')), t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.objectExpression([t.objectProperty(t.identifier(underscoreName), t.objectExpression([...args]))]), t.identifier('fee'), t.identifier('memo'), t.identifier('funds')])))]), // return type
|
41
41
|
t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tSTypeReference(t.identifier('ExecuteResult'))]))), true));
|
42
42
|
};
|
43
43
|
export const createExecuteClass = (className, implementsClassName, extendsClassName, execMsg) => {
|
@@ -81,13 +81,13 @@ export const createPropertyFunctionWithObjectParams = (methodName, responseType,
|
|
81
81
|
};
|
82
82
|
return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
|
83
83
|
};
|
84
|
+
export const FIXED_EXECUTE_PARAMS = [identifier('fee', t.tsTypeAnnotation(t.tsUnionType([t.tsNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), true), identifier('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), identifier('funds', t.tsTypeAnnotation(tsTypeOperator(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
84
85
|
export const createPropertyFunctionWithObjectParamsForExec = (methodName, responseType, jsonschema) => {
|
85
86
|
const obj = createTypedObjectParams(jsonschema);
|
86
|
-
const fixedParams = [identifier('fee', t.tsTypeAnnotation(t.tsUnionType([t.tsNumberKeyword(), t.tsTypeReference(t.identifier('StdFee')), t.tsLiteralType(t.stringLiteral('auto'))])), true), identifier('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true), identifier('funds', t.tsTypeAnnotation(tsTypeOperator(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
87
87
|
const func = {
|
88
88
|
type: 'TSFunctionType',
|
89
89
|
typeAnnotation: promiseTypeAnnotation(responseType),
|
90
|
-
parameters: obj ? [obj, ...
|
90
|
+
parameters: obj ? [obj, ...FIXED_EXECUTE_PARAMS] : FIXED_EXECUTE_PARAMS
|
91
91
|
};
|
92
92
|
return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
|
93
93
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "wasm-ast-types",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.5.0",
|
4
4
|
"description": "CosmWasm TypeScript AST generation",
|
5
5
|
"author": "Dan Lynch <pyramation@gmail.com>",
|
6
6
|
"homepage": "https://github.com/pyramation/cosmwasm-typescript-gen/tree/master/packages/wasm-ast-types#readme",
|
@@ -84,5 +84,5 @@
|
|
84
84
|
"ast-stringify": "0.1.0",
|
85
85
|
"case": "1.6.3"
|
86
86
|
},
|
87
|
-
"gitHead": "
|
87
|
+
"gitHead": "871479982969e89f40b75ca5c85e8bed34a824da"
|
88
88
|
}
|
package/types/react-query.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as t from '@babel/types';
|
2
|
-
import { QueryMsg } from './types';
|
2
|
+
import { QueryMsg, ExecuteMsg } from './types';
|
3
3
|
|
4
4
|
interface ReactQueryHooks {
|
5
5
|
queryMsg: QueryMsg
|
@@ -19,6 +19,7 @@ interface ReactQueryHookQuery {
|
|
19
19
|
export declare interface ReactQueryOptions {
|
20
20
|
optionalClient?: boolean
|
21
21
|
v4?: boolean
|
22
|
+
mutations?: boolean
|
22
23
|
}
|
23
24
|
export declare const createReactQueryHooks: ({ queryMsg, contractName, QueryClient, options }: ReactQueryHooks) => any;
|
24
25
|
export declare const createReactQueryHook: ({ hookName, hookParamsTypeName, responseType, hookKeyName, methodName, jsonschema }: ReactQueryHookQuery) => t.ExportNamedDeclaration;
|
@@ -29,4 +30,41 @@ interface ReactQueryHookQueryInterface {
|
|
29
30
|
jsonschema: any;
|
30
31
|
}
|
31
32
|
export declare const createReactQueryHookInterface: ({ QueryClient, hookParamsTypeName, responseType, jsonschema }: ReactQueryHookQueryInterface) => t.ExportNamedDeclaration;
|
33
|
+
|
34
|
+
interface ReactQueryMutationHooks {
|
35
|
+
execMsg: ExecuteMsg
|
36
|
+
contractName: string
|
37
|
+
ExecuteClient: string
|
38
|
+
options?: ReactQueryOptions
|
39
|
+
}
|
40
|
+
export declare const createReactQueryMutationHooks: ({ execMsg, contractName, ExecuteClient, options }: ReactQueryMutationHooks) => any
|
41
|
+
|
42
|
+
interface ReactQueryMutationHook {
|
43
|
+
mutationHookName: string;
|
44
|
+
mutationHookParamsTypeName: string;
|
45
|
+
execMethodName: string;
|
46
|
+
execArgs: t.ObjectProperty[]
|
47
|
+
options?: ReactQueryOptions
|
48
|
+
}
|
49
|
+
|
50
|
+
export declare const createReactQueryMutationHook: ({
|
51
|
+
mutationHookName,
|
52
|
+
mutationHookParamsTypeName,
|
53
|
+
execMethodName,
|
54
|
+
execArgs,
|
55
|
+
options,
|
56
|
+
}: ReactQueryMutationHook) => any
|
57
|
+
|
58
|
+
interface ReactQueryMutationHookInterface {
|
59
|
+
ExecuteClient: string
|
60
|
+
mutationHookParamsTypeName: string;
|
61
|
+
jsonschema: any
|
62
|
+
}
|
63
|
+
|
64
|
+
export declare const createReactQueryMutationArgsInterface: ({
|
65
|
+
ExecuteClient,
|
66
|
+
mutationHookParamsTypeName,
|
67
|
+
jsonschema
|
68
|
+
}: ReactQueryMutationHookInterface) => t.ExportNamedDeclaration;
|
69
|
+
|
32
70
|
export { };
|