wasm-ast-types 0.26.4 → 1.0.0

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