wasm-ast-types 0.2.0 → 0.2.3

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/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.propertySignature = exports.getPropertyType = exports.createWasmQueryMethod = exports.createWasmExecMethod = exports.createTypedObjectParams = exports.createTypeOrInterface = exports.createTypeInterface = exports.createQueryInterface = exports.createQueryClass = exports.createPropertyFunctionWithObjectParams = exports.createExecuteInterface = exports.createExecuteClass = void 0;
10
+ exports.propertySignature = exports.identifier = exports.getPropertyType = exports.createWasmQueryMethod = exports.createWasmExecMethod = exports.createTypedObjectParams = exports.createTypeOrInterface = exports.createTypeInterface = exports.createQueryInterface = exports.createQueryClass = exports.createPropertyFunctionWithObjectParamsForExec = exports.createPropertyFunctionWithObjectParams = exports.createExecuteInterface = exports.createExecuteClass = void 0;
11
11
 
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
 
@@ -48,6 +48,16 @@ var getArrayTypeFromType = function getArrayTypeFromType(type) {
48
48
  return t.tsArrayType(getType(type));
49
49
  };
50
50
 
51
+ var identifier = function identifier(name, typeAnnotation) {
52
+ var optional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
53
+ var type = t.identifier(name);
54
+ type.typeAnnotation = typeAnnotation;
55
+ type.optional = optional;
56
+ return type;
57
+ };
58
+
59
+ exports.identifier = identifier;
60
+
51
61
  var getType = function getType(type) {
52
62
  switch (type) {
53
63
  case 'string':
@@ -180,6 +190,12 @@ var createQueryClass = function createQueryClass(className, implementsClassName,
180
190
 
181
191
  exports.createQueryClass = createQueryClass;
182
192
 
193
+ var tsTypeOperator = function tsTypeOperator(typeAnnotation, operator) {
194
+ var obj = t.tsTypeOperator(typeAnnotation);
195
+ obj.operator = operator;
196
+ return obj;
197
+ };
198
+
183
199
  var createWasmExecMethod = function createWasmExecMethod(jsonschema) {
184
200
  var _jsonschema$propertie2;
185
201
 
@@ -190,8 +206,9 @@ var createWasmExecMethod = function createWasmExecMethod(jsonschema) {
190
206
  var args = Object.keys(properties).map(function (prop) {
191
207
  return t.objectProperty(t.identifier(prop), t.identifier((0, _case.camel)(prop)), false, prop === (0, _case.camel)(prop));
192
208
  });
209
+ var 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)];
193
210
  return t.classProperty(t.identifier(methodName), (0, _utils.arrowFunctionExpression)(obj ? [// props
194
- obj] : [], 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.stringLiteral('auto')])))]), // return type
211
+ obj].concat(constantParams) : constantParams, 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
195
212
  t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tSTypeReference(t.identifier('ExecuteResult'))]))), true));
196
213
  };
197
214
 
@@ -229,7 +246,7 @@ var createExecuteInterface = function createExecuteInterface(className, extendsC
229
246
  var methods = (0, _utils.getMessageProperties)(execMsg).map(function (jsonschema) {
230
247
  var underscoreName = Object.keys(jsonschema.properties)[0];
231
248
  var methodName = (0, _case.camel)(underscoreName);
232
- return createPropertyFunctionWithObjectParams(methodName, 'ExecuteResult', jsonschema.properties[underscoreName]);
249
+ return createPropertyFunctionWithObjectParamsForExec(methodName, 'ExecuteResult', jsonschema.properties[underscoreName]);
233
250
  });
234
251
  var extendsAst = extendsClassName ? [t.tSExpressionWithTypeArguments(t.identifier(extendsClassName))] : [];
235
252
  return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(className), null, extendsAst, t.tSInterfaceBody([// contract address
@@ -294,12 +311,24 @@ var createPropertyFunctionWithObjectParams = function createPropertyFunctionWith
294
311
 
295
312
  exports.createPropertyFunctionWithObjectParams = createPropertyFunctionWithObjectParams;
296
313
 
314
+ var createPropertyFunctionWithObjectParamsForExec = function createPropertyFunctionWithObjectParamsForExec(methodName, responseType, jsonschema) {
315
+ var obj = createTypedObjectParams(jsonschema);
316
+ var 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)];
317
+ var func = {
318
+ type: 'TSFunctionType',
319
+ typeAnnotation: (0, _utils.promiseTypeAnnotation)(responseType),
320
+ parameters: obj ? [obj].concat(fixedParams) : fixedParams
321
+ };
322
+ return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
323
+ };
324
+
325
+ exports.createPropertyFunctionWithObjectParamsForExec = createPropertyFunctionWithObjectParamsForExec;
326
+
297
327
  var createQueryInterface = function createQueryInterface(className, queryMsg) {
298
328
  var methods = (0, _utils.getMessageProperties)(queryMsg).map(function (jsonschema) {
299
329
  var underscoreName = Object.keys(jsonschema.properties)[0];
300
330
  var methodName = (0, _case.camel)(underscoreName);
301
331
  var responseType = (0, _case.pascal)("".concat(methodName, "Response"));
302
- var obj = createTypedObjectParams(jsonschema.properties[underscoreName]);
303
332
  return createPropertyFunctionWithObjectParams(methodName, responseType, jsonschema.properties[underscoreName]);
304
333
  });
305
334
  return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(className), null, [], t.tSInterfaceBody([t.tSPropertySignature(t.identifier('contractAddress'), t.tsTypeAnnotation(t.tsStringKeyword()))].concat((0, _toConsumableArray2["default"])(methods)))));
package/module/wasm.js CHANGED
@@ -27,6 +27,13 @@ const getArrayTypeFromType = type => {
27
27
  return t.tsArrayType(getType(type));
28
28
  };
29
29
 
30
+ export const identifier = (name, typeAnnotation, optional = false) => {
31
+ const type = t.identifier(name);
32
+ type.typeAnnotation = typeAnnotation;
33
+ type.optional = optional;
34
+ return type;
35
+ };
36
+
30
37
  const getType = type => {
31
38
  switch (type) {
32
39
  case 'string':
@@ -138,6 +145,13 @@ export const createQueryClass = (className, implementsClassName, queryMsg) => {
138
145
  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
139
146
  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))]));
140
147
  };
148
+
149
+ const tsTypeOperator = (typeAnnotation, operator) => {
150
+ const obj = t.tsTypeOperator(typeAnnotation);
151
+ obj.operator = operator;
152
+ return obj;
153
+ };
154
+
141
155
  export const createWasmExecMethod = jsonschema => {
142
156
  const underscoreName = Object.keys(jsonschema.properties)[0];
143
157
  const methodName = camel(underscoreName);
@@ -146,8 +160,9 @@ export const createWasmExecMethod = jsonschema => {
146
160
  const args = Object.keys(properties).map(prop => {
147
161
  return t.objectProperty(t.identifier(prop), t.identifier(camel(prop)), false, prop === camel(prop));
148
162
  });
163
+ 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)];
149
164
  return t.classProperty(t.identifier(methodName), arrowFunctionExpression(obj ? [// props
150
- obj] : [], 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.stringLiteral('auto')])))]), // return type
165
+ obj, ...constantParams] : constantParams, 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
151
166
  t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tSTypeReference(t.identifier('ExecuteResult'))]))), true));
152
167
  };
153
168
  export const createExecuteClass = (className, implementsClassName, extendsClassName, execMsg) => {
@@ -175,7 +190,7 @@ export const createExecuteInterface = (className, extendsClassName, execMsg) =>
175
190
  const methods = getMessageProperties(execMsg).map(jsonschema => {
176
191
  const underscoreName = Object.keys(jsonschema.properties)[0];
177
192
  const methodName = camel(underscoreName);
178
- return createPropertyFunctionWithObjectParams(methodName, 'ExecuteResult', jsonschema.properties[underscoreName]);
193
+ return createPropertyFunctionWithObjectParamsForExec(methodName, 'ExecuteResult', jsonschema.properties[underscoreName]);
179
194
  });
180
195
  const extendsAst = extendsClassName ? [t.tSExpressionWithTypeArguments(t.identifier(extendsClassName))] : [];
181
196
  return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(className), null, extendsAst, t.tSInterfaceBody([// contract address
@@ -224,12 +239,21 @@ export const createPropertyFunctionWithObjectParams = (methodName, responseType,
224
239
  };
225
240
  return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
226
241
  };
242
+ export const createPropertyFunctionWithObjectParamsForExec = (methodName, responseType, jsonschema) => {
243
+ const obj = createTypedObjectParams(jsonschema);
244
+ 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)];
245
+ const func = {
246
+ type: 'TSFunctionType',
247
+ typeAnnotation: promiseTypeAnnotation(responseType),
248
+ parameters: obj ? [obj, ...fixedParams] : fixedParams
249
+ };
250
+ return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
251
+ };
227
252
  export const createQueryInterface = (className, queryMsg) => {
228
253
  const methods = getMessageProperties(queryMsg).map(jsonschema => {
229
254
  const underscoreName = Object.keys(jsonschema.properties)[0];
230
255
  const methodName = camel(underscoreName);
231
256
  const responseType = pascal(`${methodName}Response`);
232
- const obj = createTypedObjectParams(jsonschema.properties[underscoreName]);
233
257
  return createPropertyFunctionWithObjectParams(methodName, responseType, jsonschema.properties[underscoreName]);
234
258
  });
235
259
  return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(className), null, [], t.tSInterfaceBody([t.tSPropertySignature(t.identifier('contractAddress'), t.tsTypeAnnotation(t.tsStringKeyword())), ...methods])));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wasm-ast-types",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
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",
@@ -85,5 +85,5 @@
85
85
  "ast-stringify": "0.1.0",
86
86
  "case": "1.6.3"
87
87
  },
88
- "gitHead": "93a3bca65ba5aec086efeb3ae85950a346ddf0ff"
88
+ "gitHead": "e7cd5b9e8bc60161c28db9a74f3c372ddd0fc6b1"
89
89
  }