wasm-ast-types 0.21.0 → 0.23.0
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.
- package/main/client/client.js +4 -6
- package/main/context/imports.js +1 -1
- package/main/message-composer/message-composer.js +3 -5
- package/main/react-query/react-query.js +4 -11
- package/main/utils/babel.js +1 -0
- package/main/utils/constants.js +25 -0
- package/main/utils/index.js +22 -1
- package/module/client/client.js +3 -4
- package/module/context/imports.js +1 -1
- package/module/message-composer/message-composer.js +4 -5
- package/module/react-query/react-query.js +5 -6
- package/module/utils/babel.js +1 -0
- package/module/utils/constants.js +6 -0
- package/module/utils/index.js +3 -1
- package/package.json +2 -2
- package/src/client/client.ts +235 -323
- package/src/client/test/__snapshots__/ts-client.account-nfts.spec.ts.snap +45 -45
- package/src/client/test/__snapshots__/ts-client.arrays-ref.spec.ts.snap +42 -42
- package/src/client/test/__snapshots__/ts-client.arrays.spec.ts.snap +3 -3
- package/src/client/test/__snapshots__/ts-client.cw-named-groups.test.ts.snap +9 -9
- package/src/client/test/__snapshots__/ts-client.cw-proposal-single.test.ts.snap +27 -27
- package/src/client/test/__snapshots__/ts-client.issue-101.spec.ts.snap +6 -6
- package/src/client/test/__snapshots__/ts-client.issue-71.test.ts.snap +30 -30
- package/src/client/test/__snapshots__/ts-client.issue-98.test.ts.snap +9 -9
- package/src/client/test/__snapshots__/ts-client.issues.test.ts.snap +78 -78
- package/src/client/test/__snapshots__/ts-client.overrides.spec.ts.snap +80 -80
- package/src/client/test/__snapshots__/ts-client.sg721.spec.ts.snap +24 -24
- package/src/client/test/__snapshots__/ts-client.spec.ts.snap +46 -46
- package/src/client/test/__snapshots__/ts-client.vectis.spec.ts.snap +24 -24
- package/src/client/test/__snapshots__/ts-client.wager.spec.ts.snap +8 -8
- package/src/context/context.ts +2 -0
- package/src/context/imports.ts +1 -1
- package/src/message-composer/__snapshots__/message-composer.spec.ts.snap +30 -30
- package/src/message-composer/message-composer.ts +216 -267
- package/src/react-query/react-query.ts +28 -25
- package/src/utils/babel.ts +4 -3
- package/src/utils/constants.ts +30 -0
- package/src/utils/index.ts +2 -0
- package/types/context/context.d.ts +2 -0
package/src/client/client.ts
CHANGED
@@ -5,14 +5,21 @@ import {
|
|
5
5
|
bindMethod,
|
6
6
|
classDeclaration,
|
7
7
|
classProperty,
|
8
|
+
FIXED_EXECUTE_PARAMS,
|
8
9
|
getMessageProperties,
|
10
|
+
OPTIONAL_FUNDS_PARAM,
|
9
11
|
promiseTypeAnnotation,
|
10
12
|
typedIdentifier
|
11
13
|
} from '../utils';
|
12
14
|
|
13
15
|
import { ExecuteMsg, JSONSchema, QueryMsg } from '../types';
|
14
16
|
|
15
|
-
import {
|
17
|
+
import {
|
18
|
+
createTypedObjectParams,
|
19
|
+
getPropertyType,
|
20
|
+
getResponseType,
|
21
|
+
getType
|
22
|
+
} from '../utils/types';
|
16
23
|
import { RenderContext } from '../context';
|
17
24
|
import { identifier, propertySignature } from '../utils/babel';
|
18
25
|
|
@@ -21,66 +28,24 @@ export const CONSTANT_EXEC_PARAMS = [
|
|
21
28
|
identifier(
|
22
29
|
'fee',
|
23
30
|
t.tsTypeAnnotation(
|
24
|
-
t.tsUnionType(
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
),
|
30
|
-
t.tsLiteralType(
|
31
|
-
t.stringLiteral('auto')
|
32
|
-
)
|
33
|
-
]
|
34
|
-
)
|
31
|
+
t.tsUnionType([
|
32
|
+
t.tSNumberKeyword(),
|
33
|
+
t.tsTypeReference(t.identifier('StdFee')),
|
34
|
+
t.tsLiteralType(t.stringLiteral('auto'))
|
35
|
+
])
|
35
36
|
),
|
36
37
|
false
|
37
38
|
),
|
38
39
|
t.stringLiteral('auto')
|
39
40
|
),
|
40
|
-
identifier('memo', t.tsTypeAnnotation(
|
41
|
-
|
42
|
-
), true),
|
43
|
-
identifier('funds', t.tsTypeAnnotation(
|
44
|
-
t.tsArrayType(
|
45
|
-
t.tsTypeReference(
|
46
|
-
t.identifier('Coin')
|
47
|
-
)
|
48
|
-
)
|
49
|
-
), true)
|
50
|
-
];
|
51
|
-
|
52
|
-
export const FIXED_EXECUTE_PARAMS = [
|
53
|
-
identifier('fee', t.tsTypeAnnotation(
|
54
|
-
t.tsUnionType(
|
55
|
-
[
|
56
|
-
t.tsNumberKeyword(),
|
57
|
-
t.tsTypeReference(
|
58
|
-
t.identifier('StdFee')
|
59
|
-
),
|
60
|
-
t.tsLiteralType(
|
61
|
-
t.stringLiteral('auto')
|
62
|
-
)
|
63
|
-
]
|
64
|
-
)
|
65
|
-
), true),
|
66
|
-
identifier('memo', t.tsTypeAnnotation(
|
67
|
-
t.tsStringKeyword()
|
68
|
-
), true),
|
69
|
-
identifier('funds', t.tsTypeAnnotation(
|
70
|
-
t.tsArrayType(
|
71
|
-
t.tsTypeReference(
|
72
|
-
t.identifier('Coin')
|
73
|
-
)
|
74
|
-
)
|
75
|
-
), true)
|
41
|
+
identifier('memo', t.tsTypeAnnotation(t.tsStringKeyword()), true),
|
42
|
+
OPTIONAL_FUNDS_PARAM
|
76
43
|
];
|
77
44
|
|
78
|
-
|
79
45
|
export const createWasmQueryMethod = (
|
80
46
|
context: RenderContext,
|
81
47
|
jsonschema: any
|
82
48
|
) => {
|
83
|
-
|
84
49
|
const underscoreName = Object.keys(jsonschema.properties)[0];
|
85
50
|
const methodName = camel(underscoreName);
|
86
51
|
const responseType = getResponseType(context, underscoreName);
|
@@ -97,49 +62,44 @@ export const createWasmQueryMethod = (
|
|
97
62
|
|
98
63
|
const msgAction = t.identifier(underscoreName);
|
99
64
|
// If the param is an identifier, we can just use it as is
|
100
|
-
const msgActionValue =
|
65
|
+
const msgActionValue =
|
66
|
+
param?.type === 'Identifier'
|
67
|
+
? t.identifier(param.name)
|
68
|
+
: t.objectExpression(args);
|
101
69
|
|
102
70
|
return t.classProperty(
|
103
71
|
t.identifier(methodName),
|
104
72
|
arrowFunctionExpression(
|
105
73
|
param ? [param] : [],
|
106
|
-
t.blockStatement(
|
107
|
-
|
108
|
-
t.
|
109
|
-
t.
|
74
|
+
t.blockStatement([
|
75
|
+
t.returnStatement(
|
76
|
+
t.callExpression(
|
77
|
+
t.memberExpression(
|
78
|
+
t.memberExpression(t.thisExpression(), t.identifier('client')),
|
79
|
+
t.identifier('queryContractSmart')
|
80
|
+
),
|
81
|
+
[
|
110
82
|
t.memberExpression(
|
111
|
-
t.
|
112
|
-
|
113
|
-
t.identifier('client')
|
114
|
-
),
|
115
|
-
t.identifier('queryContractSmart')
|
83
|
+
t.thisExpression(),
|
84
|
+
t.identifier('contractAddress')
|
116
85
|
),
|
117
|
-
[
|
118
|
-
|
119
|
-
t.objectExpression([
|
120
|
-
t.objectProperty(msgAction, msgActionValue)
|
121
|
-
])
|
122
|
-
]
|
123
|
-
)
|
86
|
+
t.objectExpression([t.objectProperty(msgAction, msgActionValue)])
|
87
|
+
]
|
124
88
|
)
|
125
|
-
|
126
|
-
),
|
89
|
+
)
|
90
|
+
]),
|
127
91
|
t.tsTypeAnnotation(
|
128
92
|
t.tsTypeReference(
|
129
93
|
t.identifier('Promise'),
|
130
|
-
t.tsTypeParameterInstantiation(
|
131
|
-
|
132
|
-
|
133
|
-
t.identifier(responseType)
|
134
|
-
)
|
135
|
-
]
|
136
|
-
)
|
94
|
+
t.tsTypeParameterInstantiation([
|
95
|
+
t.tSTypeReference(t.identifier(responseType))
|
96
|
+
])
|
137
97
|
)
|
138
98
|
),
|
139
99
|
true
|
140
100
|
)
|
141
101
|
);
|
142
|
-
}
|
102
|
+
};
|
143
103
|
|
144
104
|
export const createQueryClass = (
|
145
105
|
context: RenderContext,
|
@@ -147,81 +107,78 @@ export const createQueryClass = (
|
|
147
107
|
implementsClassName: string,
|
148
108
|
queryMsg: QueryMsg
|
149
109
|
) => {
|
150
|
-
|
151
110
|
context.addUtil('CosmWasmClient');
|
152
111
|
|
153
112
|
const propertyNames = getMessageProperties(queryMsg)
|
154
|
-
.map(method => Object.keys(method.properties)?.[0])
|
113
|
+
.map((method) => Object.keys(method.properties)?.[0])
|
155
114
|
.filter(Boolean);
|
156
115
|
|
157
|
-
const bindings = propertyNames
|
158
|
-
.map(camel)
|
159
|
-
.map(bindMethod);
|
116
|
+
const bindings = propertyNames.map(camel).map(bindMethod);
|
160
117
|
|
161
|
-
const methods = getMessageProperties(queryMsg)
|
162
|
-
|
163
|
-
|
164
|
-
});
|
118
|
+
const methods = getMessageProperties(queryMsg).map((schema) => {
|
119
|
+
return createWasmQueryMethod(context, schema);
|
120
|
+
});
|
165
121
|
|
166
122
|
return t.exportNamedDeclaration(
|
167
|
-
classDeclaration(
|
123
|
+
classDeclaration(
|
124
|
+
className,
|
168
125
|
[
|
169
126
|
// client
|
170
|
-
classProperty(
|
171
|
-
|
172
|
-
|
127
|
+
classProperty(
|
128
|
+
'client',
|
129
|
+
t.tsTypeAnnotation(t.tsTypeReference(t.identifier('CosmWasmClient')))
|
130
|
+
),
|
173
131
|
|
174
132
|
// contractAddress
|
175
|
-
classProperty(
|
176
|
-
|
177
|
-
|
133
|
+
classProperty(
|
134
|
+
'contractAddress',
|
135
|
+
t.tsTypeAnnotation(t.tsStringKeyword())
|
136
|
+
),
|
178
137
|
|
179
138
|
// constructor
|
180
|
-
t.classMethod(
|
139
|
+
t.classMethod(
|
140
|
+
'constructor',
|
181
141
|
t.identifier('constructor'),
|
182
142
|
[
|
183
|
-
typedIdentifier(
|
184
|
-
|
185
|
-
|
143
|
+
typedIdentifier(
|
144
|
+
'client',
|
145
|
+
t.tsTypeAnnotation(
|
146
|
+
t.tsTypeReference(t.identifier('CosmWasmClient'))
|
147
|
+
)
|
148
|
+
),
|
149
|
+
typedIdentifier(
|
150
|
+
'contractAddress',
|
151
|
+
t.tsTypeAnnotation(t.tsStringKeyword())
|
152
|
+
)
|
186
153
|
],
|
187
|
-
t.blockStatement(
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
t.
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
t.expressionStatement(
|
202
|
-
t.assignmentExpression(
|
203
|
-
'=',
|
204
|
-
t.memberExpression(
|
205
|
-
t.thisExpression(),
|
206
|
-
t.identifier('contractAddress')
|
207
|
-
),
|
154
|
+
t.blockStatement([
|
155
|
+
// client/contract set
|
156
|
+
t.expressionStatement(
|
157
|
+
t.assignmentExpression(
|
158
|
+
'=',
|
159
|
+
t.memberExpression(t.thisExpression(), t.identifier('client')),
|
160
|
+
t.identifier('client')
|
161
|
+
)
|
162
|
+
),
|
163
|
+
t.expressionStatement(
|
164
|
+
t.assignmentExpression(
|
165
|
+
'=',
|
166
|
+
t.memberExpression(
|
167
|
+
t.thisExpression(),
|
208
168
|
t.identifier('contractAddress')
|
209
|
-
)
|
210
|
-
|
211
|
-
|
212
|
-
|
169
|
+
),
|
170
|
+
t.identifier('contractAddress')
|
171
|
+
)
|
172
|
+
),
|
213
173
|
|
214
|
-
|
215
|
-
)
|
174
|
+
...bindings
|
175
|
+
])
|
176
|
+
),
|
216
177
|
|
217
178
|
...methods
|
218
|
-
|
219
179
|
],
|
220
|
-
[
|
221
|
-
|
222
|
-
t.identifier(implementsClassName)
|
223
|
-
)
|
224
|
-
])
|
180
|
+
[t.tSExpressionWithTypeArguments(t.identifier(implementsClassName))]
|
181
|
+
)
|
225
182
|
);
|
226
183
|
};
|
227
184
|
|
@@ -236,16 +193,16 @@ export const getWasmMethodArgs = (
|
|
236
193
|
const obj = context.refLookup(jsonschema.$ref);
|
237
194
|
// properties
|
238
195
|
if (obj) {
|
239
|
-
keys = Object.keys(obj.properties ?? {})
|
196
|
+
keys = Object.keys(obj.properties ?? {});
|
240
197
|
}
|
241
198
|
|
242
199
|
// tuple struct or otherwise, use the name of the reference
|
243
200
|
if (!keys.length && obj?.oneOf) {
|
244
|
-
// TODO????? ADAIR
|
201
|
+
// TODO????? ADAIR
|
245
202
|
}
|
246
203
|
}
|
247
204
|
|
248
|
-
const args = keys.map(prop => {
|
205
|
+
const args = keys.map((prop) => {
|
249
206
|
return t.objectProperty(
|
250
207
|
t.identifier(prop),
|
251
208
|
t.identifier(camel(prop)),
|
@@ -261,7 +218,6 @@ export const createWasmExecMethod = (
|
|
261
218
|
context: RenderContext,
|
262
219
|
jsonschema: JSONSchema
|
263
220
|
) => {
|
264
|
-
|
265
221
|
context.addUtil('ExecuteResult');
|
266
222
|
context.addUtil('StdFee');
|
267
223
|
context.addUtil('Coin');
|
@@ -279,73 +235,59 @@ export const createWasmExecMethod = (
|
|
279
235
|
|
280
236
|
const msgAction = t.identifier(underscoreName);
|
281
237
|
// If the param is an identifier, we can just use it as is
|
282
|
-
const msgActionValue =
|
238
|
+
const msgActionValue =
|
239
|
+
param?.type === 'Identifier'
|
240
|
+
? t.identifier(param.name)
|
241
|
+
: t.objectExpression(args);
|
283
242
|
|
284
243
|
return t.classProperty(
|
285
244
|
t.identifier(methodName),
|
286
245
|
arrowFunctionExpression(
|
287
|
-
param
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
246
|
+
param
|
247
|
+
? [
|
248
|
+
// props
|
249
|
+
param,
|
250
|
+
...CONSTANT_EXEC_PARAMS
|
251
|
+
]
|
252
|
+
: CONSTANT_EXEC_PARAMS,
|
253
|
+
t.blockStatement([
|
254
|
+
t.returnStatement(
|
255
|
+
t.awaitExpression(
|
256
|
+
t.callExpression(
|
257
|
+
t.memberExpression(
|
258
|
+
t.memberExpression(t.thisExpression(), t.identifier('client')),
|
259
|
+
t.identifier('execute')
|
260
|
+
),
|
261
|
+
[
|
262
|
+
t.memberExpression(t.thisExpression(), t.identifier('sender')),
|
297
263
|
t.memberExpression(
|
298
|
-
t.
|
299
|
-
|
300
|
-
t.identifier('client')
|
301
|
-
),
|
302
|
-
t.identifier('execute')
|
264
|
+
t.thisExpression(),
|
265
|
+
t.identifier('contractAddress')
|
303
266
|
),
|
304
|
-
[
|
305
|
-
t.
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
t.identifier('contractAddress')
|
312
|
-
),
|
313
|
-
t.objectExpression(
|
314
|
-
[
|
315
|
-
t.objectProperty(
|
316
|
-
msgAction,
|
317
|
-
msgActionValue
|
318
|
-
)
|
319
|
-
|
320
|
-
]
|
321
|
-
),
|
322
|
-
t.identifier('fee'),
|
323
|
-
t.identifier('memo'),
|
324
|
-
t.identifier('funds')
|
325
|
-
]
|
326
|
-
)
|
267
|
+
t.objectExpression([
|
268
|
+
t.objectProperty(msgAction, msgActionValue)
|
269
|
+
]),
|
270
|
+
t.identifier('fee'),
|
271
|
+
t.identifier('memo'),
|
272
|
+
t.identifier('_funds')
|
273
|
+
]
|
327
274
|
)
|
328
275
|
)
|
329
|
-
|
330
|
-
),
|
276
|
+
)
|
277
|
+
]),
|
331
278
|
// return type
|
332
279
|
t.tsTypeAnnotation(
|
333
280
|
t.tsTypeReference(
|
334
281
|
t.identifier('Promise'),
|
335
|
-
t.tsTypeParameterInstantiation(
|
336
|
-
|
337
|
-
|
338
|
-
t.identifier('ExecuteResult')
|
339
|
-
)
|
340
|
-
]
|
341
|
-
)
|
282
|
+
t.tsTypeParameterInstantiation([
|
283
|
+
t.tSTypeReference(t.identifier('ExecuteResult'))
|
284
|
+
])
|
342
285
|
)
|
343
286
|
),
|
344
287
|
true
|
345
288
|
)
|
346
289
|
);
|
347
|
-
|
348
|
-
}
|
290
|
+
};
|
349
291
|
|
350
292
|
export const createExecuteClass = (
|
351
293
|
context: RenderContext,
|
@@ -354,33 +296,29 @@ export const createExecuteClass = (
|
|
354
296
|
extendsClassName: string | null,
|
355
297
|
execMsg: ExecuteMsg
|
356
298
|
) => {
|
357
|
-
|
358
299
|
context.addUtil('SigningCosmWasmClient');
|
359
300
|
|
360
301
|
const propertyNames = getMessageProperties(execMsg)
|
361
|
-
.map(method => Object.keys(method.properties)?.[0])
|
302
|
+
.map((method) => Object.keys(method.properties)?.[0])
|
362
303
|
.filter(Boolean);
|
363
304
|
|
364
|
-
const bindings = propertyNames
|
365
|
-
.map(camel)
|
366
|
-
.map(bindMethod);
|
305
|
+
const bindings = propertyNames.map(camel).map(bindMethod);
|
367
306
|
|
368
|
-
const methods = getMessageProperties(execMsg)
|
369
|
-
|
370
|
-
|
371
|
-
});
|
307
|
+
const methods = getMessageProperties(execMsg).map((schema) => {
|
308
|
+
return createWasmExecMethod(context, schema);
|
309
|
+
});
|
372
310
|
|
373
311
|
const blockStmt = [];
|
374
312
|
|
375
313
|
if (extendsClassName) {
|
376
|
-
blockStmt.push(
|
377
|
-
|
378
|
-
|
379
|
-
[
|
314
|
+
blockStmt.push(
|
315
|
+
// super()
|
316
|
+
t.expressionStatement(
|
317
|
+
t.callExpression(t.super(), [
|
380
318
|
t.identifier('client'),
|
381
319
|
t.identifier('contractAddress')
|
382
|
-
]
|
383
|
-
)
|
320
|
+
])
|
321
|
+
)
|
384
322
|
);
|
385
323
|
}
|
386
324
|
|
@@ -389,78 +327,85 @@ export const createExecuteClass = (
|
|
389
327
|
t.expressionStatement(
|
390
328
|
t.assignmentExpression(
|
391
329
|
'=',
|
392
|
-
t.memberExpression(
|
393
|
-
t.thisExpression(),
|
394
|
-
t.identifier('client')
|
395
|
-
),
|
330
|
+
t.memberExpression(t.thisExpression(), t.identifier('client')),
|
396
331
|
t.identifier('client')
|
397
332
|
)
|
398
333
|
),
|
399
334
|
t.expressionStatement(
|
400
335
|
t.assignmentExpression(
|
401
336
|
'=',
|
402
|
-
t.memberExpression(
|
403
|
-
t.thisExpression(),
|
404
|
-
t.identifier('sender')
|
405
|
-
),
|
337
|
+
t.memberExpression(t.thisExpression(), t.identifier('sender')),
|
406
338
|
t.identifier('sender')
|
407
339
|
)
|
408
340
|
),
|
409
341
|
t.expressionStatement(
|
410
342
|
t.assignmentExpression(
|
411
343
|
'=',
|
412
|
-
t.memberExpression(
|
413
|
-
t.thisExpression(),
|
414
|
-
t.identifier('contractAddress')
|
415
|
-
),
|
344
|
+
t.memberExpression(t.thisExpression(), t.identifier('contractAddress')),
|
416
345
|
t.identifier('contractAddress')
|
417
346
|
)
|
418
347
|
),
|
419
348
|
...bindings
|
420
349
|
]);
|
421
350
|
|
422
|
-
const noImplicitOverride =
|
351
|
+
const noImplicitOverride =
|
352
|
+
context.options.client.noImplicitOverride &&
|
353
|
+
extendsClassName &&
|
354
|
+
context.options.client.execExtendsQuery;
|
423
355
|
|
424
356
|
return t.exportNamedDeclaration(
|
425
|
-
classDeclaration(
|
357
|
+
classDeclaration(
|
358
|
+
className,
|
426
359
|
[
|
427
360
|
// client
|
428
|
-
classProperty(
|
429
|
-
|
430
|
-
|
361
|
+
classProperty(
|
362
|
+
'client',
|
363
|
+
t.tsTypeAnnotation(
|
364
|
+
t.tsTypeReference(t.identifier('SigningCosmWasmClient'))
|
365
|
+
),
|
366
|
+
false,
|
367
|
+
false,
|
368
|
+
noImplicitOverride
|
369
|
+
),
|
431
370
|
|
432
371
|
// sender
|
433
|
-
classProperty('sender', t.tsTypeAnnotation(
|
434
|
-
t.tsStringKeyword()
|
435
|
-
)),
|
372
|
+
classProperty('sender', t.tsTypeAnnotation(t.tsStringKeyword())),
|
436
373
|
|
437
374
|
// contractAddress
|
438
|
-
classProperty(
|
439
|
-
|
440
|
-
|
375
|
+
classProperty(
|
376
|
+
'contractAddress',
|
377
|
+
t.tsTypeAnnotation(t.tsStringKeyword()),
|
378
|
+
false,
|
379
|
+
false,
|
380
|
+
noImplicitOverride
|
381
|
+
),
|
441
382
|
|
442
383
|
// constructor
|
443
|
-
t.classMethod(
|
384
|
+
t.classMethod(
|
385
|
+
'constructor',
|
444
386
|
t.identifier('constructor'),
|
445
387
|
[
|
446
|
-
typedIdentifier(
|
388
|
+
typedIdentifier(
|
389
|
+
'client',
|
390
|
+
t.tsTypeAnnotation(
|
391
|
+
t.tsTypeReference(t.identifier('SigningCosmWasmClient'))
|
392
|
+
)
|
393
|
+
),
|
447
394
|
typedIdentifier('sender', t.tsTypeAnnotation(t.tsStringKeyword())),
|
448
|
-
typedIdentifier(
|
395
|
+
typedIdentifier(
|
396
|
+
'contractAddress',
|
397
|
+
t.tsTypeAnnotation(t.tsStringKeyword())
|
398
|
+
)
|
449
399
|
],
|
450
|
-
t.blockStatement(
|
451
|
-
|
452
|
-
)),
|
400
|
+
t.blockStatement(blockStmt)
|
401
|
+
),
|
453
402
|
...methods
|
454
403
|
],
|
455
|
-
[
|
456
|
-
t.tSExpressionWithTypeArguments(
|
457
|
-
t.identifier(implementsClassName)
|
458
|
-
)
|
459
|
-
],
|
404
|
+
[t.tSExpressionWithTypeArguments(t.identifier(implementsClassName))],
|
460
405
|
extendsClassName ? t.identifier(extendsClassName) : null
|
461
406
|
)
|
462
407
|
);
|
463
|
-
}
|
408
|
+
};
|
464
409
|
|
465
410
|
export const createExecuteInterface = (
|
466
411
|
context: RenderContext,
|
@@ -468,50 +413,41 @@ export const createExecuteInterface = (
|
|
468
413
|
extendsClassName: string | null,
|
469
414
|
execMsg: ExecuteMsg
|
470
415
|
) => {
|
416
|
+
const methods = getMessageProperties(execMsg).map((jsonschema) => {
|
417
|
+
const underscoreName = Object.keys(jsonschema.properties)[0];
|
418
|
+
const methodName = camel(underscoreName);
|
419
|
+
return createPropertyFunctionWithObjectParamsForExec(
|
420
|
+
context,
|
421
|
+
methodName,
|
422
|
+
'ExecuteResult',
|
423
|
+
jsonschema.properties[underscoreName]
|
424
|
+
);
|
425
|
+
});
|
471
426
|
|
472
|
-
const
|
473
|
-
.
|
474
|
-
|
475
|
-
const methodName = camel(underscoreName);
|
476
|
-
return createPropertyFunctionWithObjectParamsForExec(
|
477
|
-
context,
|
478
|
-
methodName,
|
479
|
-
'ExecuteResult',
|
480
|
-
jsonschema.properties[underscoreName]
|
481
|
-
);
|
482
|
-
});
|
483
|
-
|
484
|
-
const extendsAst = extendsClassName ? [t.tSExpressionWithTypeArguments(
|
485
|
-
t.identifier(extendsClassName)
|
486
|
-
)] : []
|
427
|
+
const extendsAst = extendsClassName
|
428
|
+
? [t.tSExpressionWithTypeArguments(t.identifier(extendsClassName))]
|
429
|
+
: [];
|
487
430
|
|
488
431
|
return t.exportNamedDeclaration(
|
489
432
|
t.tsInterfaceDeclaration(
|
490
433
|
t.identifier(className),
|
491
434
|
null,
|
492
435
|
extendsAst,
|
493
|
-
t.tSInterfaceBody(
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
t.
|
498
|
-
|
499
|
-
t.tsTypeAnnotation(
|
500
|
-
t.tsStringKeyword()
|
501
|
-
)
|
502
|
-
),
|
436
|
+
t.tSInterfaceBody([
|
437
|
+
// contract address
|
438
|
+
t.tSPropertySignature(
|
439
|
+
t.identifier('contractAddress'),
|
440
|
+
t.tsTypeAnnotation(t.tsStringKeyword())
|
441
|
+
),
|
503
442
|
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
)
|
510
|
-
),
|
443
|
+
// contract address
|
444
|
+
t.tSPropertySignature(
|
445
|
+
t.identifier('sender'),
|
446
|
+
t.tsTypeAnnotation(t.tsStringKeyword())
|
447
|
+
),
|
511
448
|
|
512
|
-
|
513
|
-
|
514
|
-
)
|
449
|
+
...methods
|
450
|
+
])
|
515
451
|
)
|
516
452
|
);
|
517
453
|
};
|
@@ -527,10 +463,8 @@ export const createPropertyFunctionWithObjectParams = (
|
|
527
463
|
const func = {
|
528
464
|
type: 'TSFunctionType',
|
529
465
|
typeAnnotation: promiseTypeAnnotation(responseType),
|
530
|
-
parameters: obj ? [
|
531
|
-
|
532
|
-
] : []
|
533
|
-
}
|
466
|
+
parameters: obj ? [obj] : []
|
467
|
+
};
|
534
468
|
|
535
469
|
return t.tSPropertySignature(
|
536
470
|
t.identifier(methodName),
|
@@ -547,7 +481,6 @@ export const createPropertyFunctionWithObjectParamsForExec = (
|
|
547
481
|
responseType: string,
|
548
482
|
jsonschema: JSONSchema
|
549
483
|
) => {
|
550
|
-
|
551
484
|
context.addUtil('Coin');
|
552
485
|
|
553
486
|
const obj = createTypedObjectParams(context, jsonschema);
|
@@ -555,12 +488,8 @@ export const createPropertyFunctionWithObjectParamsForExec = (
|
|
555
488
|
const func = {
|
556
489
|
type: 'TSFunctionType',
|
557
490
|
typeAnnotation: promiseTypeAnnotation(responseType),
|
558
|
-
parameters: obj ? [
|
559
|
-
|
560
|
-
...FIXED_EXECUTE_PARAMS
|
561
|
-
|
562
|
-
] : FIXED_EXECUTE_PARAMS
|
563
|
-
}
|
491
|
+
parameters: obj ? [obj, ...FIXED_EXECUTE_PARAMS] : FIXED_EXECUTE_PARAMS
|
492
|
+
};
|
564
493
|
|
565
494
|
return t.tSPropertySignature(
|
566
495
|
t.identifier(methodName),
|
@@ -576,47 +505,40 @@ export const createQueryInterface = (
|
|
576
505
|
className: string,
|
577
506
|
queryMsg: QueryMsg
|
578
507
|
) => {
|
579
|
-
const methods = getMessageProperties(queryMsg)
|
580
|
-
.
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
});
|
508
|
+
const methods = getMessageProperties(queryMsg).map((jsonschema) => {
|
509
|
+
const underscoreName = Object.keys(jsonschema.properties)[0];
|
510
|
+
const methodName = camel(underscoreName);
|
511
|
+
const responseType = getResponseType(context, underscoreName);
|
512
|
+
return createPropertyFunctionWithObjectParams(
|
513
|
+
context,
|
514
|
+
methodName,
|
515
|
+
responseType,
|
516
|
+
jsonschema.properties[underscoreName]
|
517
|
+
);
|
518
|
+
});
|
591
519
|
|
592
520
|
return t.exportNamedDeclaration(
|
593
521
|
t.tsInterfaceDeclaration(
|
594
522
|
t.identifier(className),
|
595
523
|
null,
|
596
524
|
[],
|
597
|
-
t.tSInterfaceBody(
|
598
|
-
|
599
|
-
t.
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
),
|
605
|
-
...methods
|
606
|
-
]
|
607
|
-
)
|
525
|
+
t.tSInterfaceBody([
|
526
|
+
t.tSPropertySignature(
|
527
|
+
t.identifier('contractAddress'),
|
528
|
+
t.tsTypeAnnotation(t.tsStringKeyword())
|
529
|
+
),
|
530
|
+
...methods
|
531
|
+
])
|
608
532
|
)
|
609
533
|
);
|
610
534
|
};
|
611
535
|
|
612
|
-
|
613
536
|
export const createTypeOrInterface = (
|
614
537
|
context: RenderContext,
|
615
538
|
Type: string,
|
616
539
|
jsonschema: JSONSchema
|
617
540
|
) => {
|
618
541
|
if (jsonschema.type !== 'object') {
|
619
|
-
|
620
542
|
if (!jsonschema.type) {
|
621
543
|
return t.exportNamedDeclaration(
|
622
544
|
t.tsTypeAliasDeclaration(
|
@@ -624,7 +546,7 @@ export const createTypeOrInterface = (
|
|
624
546
|
null,
|
625
547
|
t.tsTypeReference(t.identifier(jsonschema.title))
|
626
548
|
)
|
627
|
-
)
|
549
|
+
);
|
628
550
|
}
|
629
551
|
|
630
552
|
return t.exportNamedDeclaration(
|
@@ -635,14 +557,10 @@ export const createTypeOrInterface = (
|
|
635
557
|
)
|
636
558
|
);
|
637
559
|
}
|
638
|
-
const props = Object.keys(jsonschema.properties ?? {})
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
type
|
643
|
-
), optional);
|
644
|
-
});
|
645
|
-
|
560
|
+
const props = Object.keys(jsonschema.properties ?? {}).map((prop) => {
|
561
|
+
const { type, optional } = getPropertyType(context, jsonschema, prop);
|
562
|
+
return propertySignature(camel(prop), t.tsTypeAnnotation(type), optional);
|
563
|
+
});
|
646
564
|
|
647
565
|
return t.exportNamedDeclaration(
|
648
566
|
t.tsInterfaceDeclaration(
|
@@ -651,12 +569,10 @@ export const createTypeOrInterface = (
|
|
651
569
|
[],
|
652
570
|
t.tsInterfaceBody(
|
653
571
|
// @ts-ignore:next-line
|
654
|
-
[
|
655
|
-
...props
|
656
|
-
]
|
572
|
+
[...props]
|
657
573
|
)
|
658
574
|
)
|
659
|
-
)
|
575
|
+
);
|
660
576
|
};
|
661
577
|
|
662
578
|
export const createTypeInterface = (
|
@@ -664,9 +580,5 @@ export const createTypeInterface = (
|
|
664
580
|
jsonschema: JSONSchema
|
665
581
|
) => {
|
666
582
|
const Type = jsonschema.title;
|
667
|
-
return createTypeOrInterface(
|
668
|
-
context,
|
669
|
-
Type,
|
670
|
-
jsonschema
|
671
|
-
);
|
583
|
+
return createTypeOrInterface(context, Type, jsonschema);
|
672
584
|
};
|