wasm-ast-types 0.2.3 → 0.2.6

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/index.js CHANGED
@@ -43,6 +43,19 @@ Object.keys(_recoil).forEach(function (key) {
43
43
  });
44
44
  });
45
45
 
46
+ var _messages = require("./messages");
47
+
48
+ Object.keys(_messages).forEach(function (key) {
49
+ if (key === "default" || key === "__esModule") return;
50
+ if (key in exports && exports[key] === _messages[key]) return;
51
+ Object.defineProperty(exports, key, {
52
+ enumerable: true,
53
+ get: function get() {
54
+ return _messages[key];
55
+ }
56
+ });
57
+ });
58
+
46
59
  var _reactQuery = require("./react-query");
47
60
 
48
61
  Object.keys(_reactQuery).forEach(function (key) {
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.createFromPartialInterface = exports.createFromPartialClass = void 0;
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var t = _interopRequireWildcard(require("@babel/types"));
15
+
16
+ var _case = require("case");
17
+
18
+ var _utils = require("./utils");
19
+
20
+ var _types2 = require("./utils/types");
21
+
22
+ var _babel = require("./utils/babel");
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ var createWasmExecMethodPartial = function createWasmExecMethodPartial(jsonschema) {
29
+ var _jsonschema$propertie;
30
+
31
+ var underscoreName = Object.keys(jsonschema.properties)[0];
32
+ var methodName = (0, _case.camel)(underscoreName);
33
+ var properties = (_jsonschema$propertie = jsonschema.properties[underscoreName].properties) !== null && _jsonschema$propertie !== void 0 ? _jsonschema$propertie : {};
34
+ var obj = createTypedObjectParams(jsonschema.properties[underscoreName]);
35
+ var args = Object.keys(properties).map(function (prop) {
36
+ return t.objectProperty(t.identifier(prop), t.identifier((0, _case.camel)(prop)), false, prop === (0, _case.camel)(prop));
37
+ });
38
+ var constantParams = [// t.assignmentPattern(
39
+ // identifier(
40
+ // 'fee',
41
+ // t.tsTypeAnnotation(
42
+ // t.tsUnionType(
43
+ // [
44
+ // t.tSNumberKeyword(),
45
+ // t.tsTypeReference(
46
+ // t.identifier('StdFee')
47
+ // ),
48
+ // t.tsLiteralType(
49
+ // t.stringLiteral('auto')
50
+ // )
51
+ // ]
52
+ // )
53
+ // ),
54
+ // false
55
+ // ),
56
+ // t.stringLiteral('auto')
57
+ // ),
58
+ // identifier('memo', t.tsTypeAnnotation(
59
+ // t.tsStringKeyword()
60
+ // ), true),
61
+ (0, _babel.identifier)('funds', t.tsTypeAnnotation((0, _babel.tsTypeOperator)(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
62
+ return t.classProperty(t.identifier(methodName), (0, _utils.arrowFunctionExpression)(obj ? [// props
63
+ obj].concat(constantParams) : constantParams, t.blockStatement([t.returnStatement(t.objectExpression([t.objectProperty(t.identifier('typeUrl'), t.stringLiteral('/cosmwasm.wasm.v1.MsgExecuteContract')), t.objectProperty(t.identifier('value'), t.callExpression(t.memberExpression(t.identifier('MsgExecuteContract'), t.identifier('fromPartial')), [t.objectExpression([t.objectProperty(t.identifier('sender'), t.memberExpression(t.thisExpression(), t.identifier('sender'))), t.objectProperty(t.identifier('contract'), t.memberExpression(t.thisExpression(), t.identifier('contractAddress'))), t.objectProperty(t.identifier('msg'), t.callExpression(t.identifier('toUtf8'), [t.callExpression(t.memberExpression(t.identifier('JSON'), t.identifier('stringify')), [t.objectExpression([t.objectProperty(t.identifier(underscoreName), t.objectExpression(args))])])])), t.objectProperty(t.identifier('funds'), t.identifier('funds'), false, true)])]))]))]), // return type
64
+ t.tsTypeAnnotation(t.tsTypeReference(t.identifier('MsgExecuteContractEncodeObject'))), false));
65
+ };
66
+
67
+ var createFromPartialClass = function createFromPartialClass(className, implementsClassName, execMsg) {
68
+ var propertyNames = (0, _utils.getMessageProperties)(execMsg).map(function (method) {
69
+ var _Object$keys;
70
+
71
+ return (_Object$keys = Object.keys(method.properties)) === null || _Object$keys === void 0 ? void 0 : _Object$keys[0];
72
+ }).filter(Boolean);
73
+ var bindings = propertyNames.map(_case.camel).map(_utils.bindMethod);
74
+ var methods = (0, _utils.getMessageProperties)(execMsg).map(function (schema) {
75
+ return createWasmExecMethodPartial(schema);
76
+ });
77
+ var blockStmt = [];
78
+ [].push.apply(blockStmt, [t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.thisExpression(), t.identifier('sender')), t.identifier('sender'))), t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.identifier('contractAddress')))].concat((0, _toConsumableArray2["default"])(bindings)));
79
+ return t.exportNamedDeclaration((0, _utils.classDeclaration)(className, [// sender
80
+ (0, _utils.classProperty)('sender', t.tsTypeAnnotation(t.tsStringKeyword())), // contractAddress
81
+ (0, _utils.classProperty)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword())), // constructor
82
+ t.classMethod('constructor', t.identifier('constructor'), [(0, _utils.typedIdentifier)('sender', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement(blockStmt))].concat((0, _toConsumableArray2["default"])(methods)), [t.tSExpressionWithTypeArguments(t.identifier(implementsClassName))], null));
83
+ };
84
+
85
+ exports.createFromPartialClass = createFromPartialClass;
86
+
87
+ var createFromPartialInterface = function createFromPartialInterface(className, execMsg) {
88
+ var methods = (0, _utils.getMessageProperties)(execMsg).map(function (jsonschema) {
89
+ var underscoreName = Object.keys(jsonschema.properties)[0];
90
+ var methodName = (0, _case.camel)(underscoreName);
91
+ return createPropertyFunctionWithObjectParamsForPartial(methodName, 'MsgExecuteContractEncodeObject', jsonschema.properties[underscoreName]);
92
+ });
93
+ var extendsAst = [];
94
+ return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(className), null, extendsAst, t.tSInterfaceBody([// contract address
95
+ t.tSPropertySignature(t.identifier('contractAddress'), t.tsTypeAnnotation(t.tsStringKeyword())), // contract address
96
+ t.tSPropertySignature(t.identifier('sender'), t.tsTypeAnnotation(t.tsStringKeyword()))].concat((0, _toConsumableArray2["default"])(methods)))));
97
+ }; // MARKED AS NOT DRY
98
+
99
+
100
+ exports.createFromPartialInterface = createFromPartialInterface;
101
+
102
+ var createTypedObjectParams = function createTypedObjectParams(jsonschema) {
103
+ var _jsonschema$propertie2;
104
+
105
+ var camelize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
106
+ var keys = Object.keys((_jsonschema$propertie2 = jsonschema.properties) !== null && _jsonschema$propertie2 !== void 0 ? _jsonschema$propertie2 : {});
107
+ if (!keys.length) return;
108
+ var typedParams = keys.map(function (prop) {
109
+ var _getPropertyType = (0, _types2.getPropertyType)(jsonschema, prop),
110
+ type = _getPropertyType.type,
111
+ optional = _getPropertyType.optional;
112
+
113
+ return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(type), optional);
114
+ });
115
+ var params = keys.map(function (prop) {
116
+ 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);
117
+ });
118
+ var obj = t.objectPattern((0, _toConsumableArray2["default"])(params));
119
+ obj.typeAnnotation = t.tsTypeAnnotation(t.tsTypeLiteral((0, _toConsumableArray2["default"])(typedParams)));
120
+ return obj;
121
+ };
122
+
123
+ var createPropertyFunctionWithObjectParamsForPartial = function createPropertyFunctionWithObjectParamsForPartial(methodName, responseType, jsonschema) {
124
+ var obj = createTypedObjectParams(jsonschema);
125
+ var fixedParams = [// identifier('fee', t.tsTypeAnnotation(
126
+ // t.tsUnionType(
127
+ // [
128
+ // t.tsNumberKeyword(),
129
+ // t.tsTypeReference(
130
+ // t.identifier('StdFee')
131
+ // ),
132
+ // t.tsLiteralType(
133
+ // t.stringLiteral('auto')
134
+ // )
135
+ // ]
136
+ // )
137
+ // ), true),
138
+ // identifier('memo', t.tsTypeAnnotation(
139
+ // t.tsStringKeyword()
140
+ // ), true),
141
+ (0, _babel.identifier)('funds', t.tsTypeAnnotation((0, _babel.tsTypeOperator)(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
142
+ var func = {
143
+ type: 'TSFunctionType',
144
+ typeAnnotation: t.tsTypeAnnotation(t.tsTypeReference(t.identifier(responseType))),
145
+ parameters: obj ? [obj].concat(fixedParams) : fixedParams
146
+ };
147
+ return t.tSPropertySignature(t.identifier(methodName), t.tsTypeAnnotation(func));
148
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _generator = _interopRequireDefault(require("@babel/generator"));
6
+
7
+ var _execute_msg_for__empty = _interopRequireDefault(require("./../../../__fixtures__/basic/execute_msg_for__empty.json"));
8
+
9
+ var _messages = require("./messages");
10
+
11
+ var expectCode = function expectCode(ast) {
12
+ expect((0, _generator["default"])(ast).code).toMatchSnapshot();
13
+ };
14
+
15
+ var printCode = function printCode(ast) {
16
+ console.log((0, _generator["default"])(ast).code);
17
+ };
18
+
19
+ it('execute classes', function () {
20
+ expectCode((0, _messages.createFromPartialClass)('SG721MessageComposer', 'SG721Message', _execute_msg_for__empty["default"]));
21
+ });
22
+ it('createFromPartialInterface', function () {
23
+ expectCode((0, _messages.createFromPartialInterface)('SG721Message', _execute_msg_for__empty["default"]));
24
+ });
@@ -17,7 +17,9 @@ var _case = require("case");
17
17
 
18
18
  var _utils = require("./utils");
19
19
 
20
- var _wasm = require("./wasm");
20
+ var _babel = require("./utils/babel");
21
+
22
+ var _types2 = require("./utils/types");
21
23
 
22
24
  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); }
23
25
 
@@ -104,10 +106,10 @@ var getProps = function getProps(jsonschema, camelize) {
104
106
  var keys = Object.keys((_jsonschema$propertie2 = jsonschema.properties) !== null && _jsonschema$propertie2 !== void 0 ? _jsonschema$propertie2 : {});
105
107
  if (!keys.length) return [];
106
108
  return keys.map(function (prop) {
107
- var _getPropertyType = (0, _wasm.getPropertyType)(jsonschema, prop),
109
+ var _getPropertyType = (0, _types2.getPropertyType)(jsonschema, prop),
108
110
  type = _getPropertyType.type,
109
111
  optional = _getPropertyType.optional;
110
112
 
111
- return (0, _wasm.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(type), optional);
113
+ return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(type), optional);
112
114
  });
113
115
  };
@@ -8,7 +8,7 @@ var _generator = _interopRequireDefault(require("@babel/generator"));
8
8
 
9
9
  var t = _interopRequireWildcard(require("@babel/types"));
10
10
 
11
- var _query_msg = _interopRequireDefault(require("./__fixtures__/schema/query_msg.json"));
11
+ var _query_msg = _interopRequireDefault(require("./../../../__fixtures__/basic/query_msg.json"));
12
12
 
13
13
  var _reactQuery = require("./react-query");
14
14
 
@@ -8,7 +8,7 @@ var _generator = _interopRequireDefault(require("@babel/generator"));
8
8
 
9
9
  var t = _interopRequireWildcard(require("@babel/types"));
10
10
 
11
- var _query_msg = _interopRequireDefault(require("./__fixtures__/schema/query_msg.json"));
11
+ var _query_msg = _interopRequireDefault(require("./../../../__fixtures__/basic/query_msg.json"));
12
12
 
13
13
  var _recoil = require("./recoil");
14
14
 
@@ -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.tsPropertySignature = exports.tsObjectPattern = exports.shorthandProperty = exports.recursiveNamespace = exports.promiseTypeAnnotation = exports.memberExpressionOrIdentifierSnake = exports.memberExpressionOrIdentifier = exports.importStmt = exports.importAminoMsg = exports.getMessageProperties = exports.getFieldDimensionality = exports.classProperty = exports.classDeclaration = exports.callExpression = exports.bindMethod = exports.arrowFunctionExpression = exports.arrayTypeNDimensions = exports.FieldTypeAsts = void 0;
10
+ exports.typedIdentifier = exports.tsTypeOperator = exports.tsPropertySignature = exports.tsObjectPattern = exports.shorthandProperty = exports.recursiveNamespace = exports.propertySignature = exports.promiseTypeAnnotation = 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,36 @@ 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
+ var propertySignature = function propertySignature(name, typeAnnotation) {
25
+ var optional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
26
+ return {
27
+ type: 'TSPropertySignature',
28
+ key: t.identifier(name),
29
+ typeAnnotation: typeAnnotation,
30
+ optional: optional
31
+ };
32
+ };
33
+
34
+ exports.propertySignature = propertySignature;
35
+
36
+ var identifier = function identifier(name, typeAnnotation) {
37
+ var optional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
38
+ var type = t.identifier(name);
39
+ type.typeAnnotation = typeAnnotation;
40
+ type.optional = optional;
41
+ return type;
42
+ };
43
+
44
+ exports.identifier = identifier;
45
+
46
+ var tsTypeOperator = function tsTypeOperator(typeAnnotation, operator) {
47
+ var obj = t.tsTypeOperator(typeAnnotation);
48
+ obj.operator = operator;
49
+ return obj;
50
+ };
51
+
52
+ exports.tsTypeOperator = tsTypeOperator;
53
+
24
54
  var getMessageProperties = function getMessageProperties(msg) {
25
55
  if (msg.anyOf) return msg.anyOf;
26
56
  if (msg.oneOf) return msg.oneOf;
@@ -8,7 +8,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
8
8
 
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
 
11
- var _utils = require("./utils");
11
+ var _babel = require("./babel");
12
12
 
13
13
  var _generator = _interopRequireDefault(require("@babel/generator"));
14
14
 
@@ -31,7 +31,7 @@ it('top import', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_
31
31
  while (1) {
32
32
  switch (_context.prev = _context.next) {
33
33
  case 0:
34
- expectCode((0, _utils.importStmt)(['CosmWasmClient', 'ExecuteResult', 'SigningCosmWasmClient'], '@cosmjs/cosmwasm-stargate'));
34
+ expectCode((0, _babel.importStmt)(['CosmWasmClient', 'ExecuteResult', 'SigningCosmWasmClient'], '@cosmjs/cosmwasm-stargate'));
35
35
 
36
36
  case 1:
37
37
  case "end":
@@ -46,10 +46,10 @@ it('interfaces', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_
46
46
  switch (_context2.prev = _context2.next) {
47
47
  case 0:
48
48
  expectCode(t.program([t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier('SG721ReadOnlyInstance'), null, [], t.tSInterfaceBody([t.tSPropertySignature(t.identifier('contractAddress'), t.tsTypeAnnotation(t.tsStringKeyword())), // methods
49
- t.tSPropertySignature(t.identifier('tokens'), t.tsTypeAnnotation(t.tsFunctionType(null, [(0, _utils.typedIdentifier)('owner', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('startAfter', t.tsTypeAnnotation(t.tsStringKeyword()), true), (0, _utils.typedIdentifier)('limit', t.tsTypeAnnotation(t.tsStringKeyword()), true)], (0, _utils.promiseTypeAnnotation)('TokensResponse'))))]))), // extends
49
+ t.tSPropertySignature(t.identifier('tokens'), t.tsTypeAnnotation(t.tsFunctionType(null, [(0, _babel.typedIdentifier)('owner', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _babel.typedIdentifier)('startAfter', t.tsTypeAnnotation(t.tsStringKeyword()), true), (0, _babel.typedIdentifier)('limit', t.tsTypeAnnotation(t.tsStringKeyword()), true)], (0, _babel.promiseTypeAnnotation)('TokensResponse'))))]))), // extends
50
50
  t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier('SG721Instance'), null, [t.tSExpressionWithTypeArguments(t.identifier('SG721ReadOnlyInstance'))], t.tSInterfaceBody([// contract address
51
51
  t.tSPropertySignature(t.identifier('contractAddress'), t.tsTypeAnnotation(t.tsStringKeyword())), // METHOD
52
- t.tSPropertySignature(t.identifier('mint'), t.tsTypeAnnotation(t.tsFunctionType(null, [(0, _utils.typedIdentifier)('sender', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('anotherProp', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('prop3', t.tsTypeAnnotation(t.tsStringKeyword()))], (0, _utils.promiseTypeAnnotation)('ExecuteResult'))))])))]));
52
+ t.tSPropertySignature(t.identifier('mint'), t.tsTypeAnnotation(t.tsFunctionType(null, [(0, _babel.typedIdentifier)('sender', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _babel.typedIdentifier)('anotherProp', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _babel.typedIdentifier)('prop3', t.tsTypeAnnotation(t.tsStringKeyword()))], (0, _babel.promiseTypeAnnotation)('ExecuteResult'))))])))]));
53
53
 
54
54
  case 1:
55
55
  case "end":
@@ -63,15 +63,15 @@ it('readonly classes', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PUR
63
63
  while (1) {
64
64
  switch (_context3.prev = _context3.next) {
65
65
  case 0:
66
- expectCode(t.program([t.exportNamedDeclaration((0, _utils.classDeclaration)('SG721QueryClient', [// client
67
- (0, _utils.classProperty)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('CosmWasmClient')))), // contractAddress
68
- (0, _utils.classProperty)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword())), // constructor
69
- t.classMethod('constructor', t.identifier('constructor'), [(0, _utils.typedIdentifier)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('CosmWasmClient')))), (0, _utils.typedIdentifier)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([// client/contract set
66
+ expectCode(t.program([t.exportNamedDeclaration((0, _babel.classDeclaration)('SG721QueryClient', [// client
67
+ (0, _babel.classProperty)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('CosmWasmClient')))), // contractAddress
68
+ (0, _babel.classProperty)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword())), // constructor
69
+ t.classMethod('constructor', t.identifier('constructor'), [(0, _babel.typedIdentifier)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('CosmWasmClient')))), (0, _babel.typedIdentifier)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([// client/contract set
70
70
  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
71
- (0, _utils.bindMethod)('approval'), (0, _utils.bindMethod)('otherProp'), (0, _utils.bindMethod)('hello'), (0, _utils.bindMethod)('mintme')])), // methods:
72
- t.classProperty(t.identifier('approval'), (0, _utils.arrowFunctionExpression)([// props
73
- (0, _utils.typedIdentifier)('owner', t.tsTypeAnnotation(t.tsStringKeyword())), //
74
- (0, _utils.typedIdentifier)('spender', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([t.returnStatement(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('queryContractSmart')), [t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.objectExpression([// props
71
+ (0, _babel.bindMethod)('approval'), (0, _babel.bindMethod)('otherProp'), (0, _babel.bindMethod)('hello'), (0, _babel.bindMethod)('mintme')])), // methods:
72
+ t.classProperty(t.identifier('approval'), (0, _babel.arrowFunctionExpression)([// props
73
+ (0, _babel.typedIdentifier)('owner', t.tsTypeAnnotation(t.tsStringKeyword())), //
74
+ (0, _babel.typedIdentifier)('spender', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([t.returnStatement(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('queryContractSmart')), [t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.objectExpression([// props
75
75
  t.objectProperty(t.identifier('owner'), t.identifier('owner'), false, true), t.objectProperty(t.identifier('spender'), t.identifier('spender'), false, true)])]))]), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tSTypeReference(t.identifier('ApprovalResponse'))]))), true))], [t.tSExpressionWithTypeArguments(t.identifier('SG721ReadOnlyInstance'))]))]));
76
76
 
77
77
  case 1:
@@ -86,15 +86,15 @@ it('mutation classes', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PUR
86
86
  while (1) {
87
87
  switch (_context4.prev = _context4.next) {
88
88
  case 0:
89
- expectCode(t.program([t.exportNamedDeclaration((0, _utils.classDeclaration)('SG721Client', [// client
90
- (0, _utils.classProperty)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('SigningCosmWasmClient')))), // contractAddress
91
- (0, _utils.classProperty)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword())), // constructor
92
- t.classMethod('constructor', t.identifier('constructor'), [(0, _utils.typedIdentifier)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('SigningCosmWasmClient')))), (0, _utils.typedIdentifier)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([// super()
89
+ expectCode(t.program([t.exportNamedDeclaration((0, _babel.classDeclaration)('SG721Client', [// client
90
+ (0, _babel.classProperty)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('SigningCosmWasmClient')))), // contractAddress
91
+ (0, _babel.classProperty)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword())), // constructor
92
+ t.classMethod('constructor', t.identifier('constructor'), [(0, _babel.typedIdentifier)('client', t.tsTypeAnnotation(t.tsTypeReference(t.identifier('SigningCosmWasmClient')))), (0, _babel.typedIdentifier)('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([// super()
93
93
  t.expressionStatement(t.callExpression(t["super"](), [t.identifier('client'), t.identifier('contractAddress')])), // client/contract set
94
94
  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
95
- (0, _utils.bindMethod)('approval'), (0, _utils.bindMethod)('otherProp'), (0, _utils.bindMethod)('hello'), (0, _utils.bindMethod)('mintme')])), // methods:
96
- t.classProperty(t.identifier('mint'), (0, _utils.arrowFunctionExpression)([// props
97
- (0, _utils.typedIdentifier)('sender', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('tokenId', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('owner', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _utils.typedIdentifier)('token_uri', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([t.returnStatement(t.awaitExpression(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('execute')), [t.identifier('sender'), t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.objectExpression([t.objectProperty(t.identifier('mint'), t.objectExpression([t.objectProperty(t.identifier('token_id'), t.identifier('tokenId')), t.objectProperty(t.identifier('owner'), t.identifier('owner')), t.objectProperty(t.identifier('token_uri'), t.identifier('token_uri')), t.objectProperty(t.identifier('expression'), t.objectExpression([]))]))]), t.stringLiteral('auto')])))]), // return type
95
+ (0, _babel.bindMethod)('approval'), (0, _babel.bindMethod)('otherProp'), (0, _babel.bindMethod)('hello'), (0, _babel.bindMethod)('mintme')])), // methods:
96
+ t.classProperty(t.identifier('mint'), (0, _babel.arrowFunctionExpression)([// props
97
+ (0, _babel.typedIdentifier)('sender', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _babel.typedIdentifier)('tokenId', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _babel.typedIdentifier)('owner', t.tsTypeAnnotation(t.tsStringKeyword())), (0, _babel.typedIdentifier)('token_uri', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement([t.returnStatement(t.awaitExpression(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier('client')), t.identifier('execute')), [t.identifier('sender'), t.memberExpression(t.thisExpression(), t.identifier('contractAddress')), t.objectExpression([t.objectProperty(t.identifier('mint'), t.objectExpression([t.objectProperty(t.identifier('token_id'), t.identifier('tokenId')), t.objectProperty(t.identifier('owner'), t.identifier('owner')), t.objectProperty(t.identifier('token_uri'), t.identifier('token_uri')), t.objectProperty(t.identifier('expression'), t.objectExpression([]))]))]), t.stringLiteral('auto')])))]), // return type
98
98
  t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tSTypeReference(t.identifier('ExecuteResult'))]))), true))], [t.tSExpressionWithTypeArguments(t.identifier('SG721ReadOnlyInstance'))], t.identifier('SG721QueryClient')))]));
99
99
 
100
100
  case 1:
@@ -107,6 +107,6 @@ it('mutation classes', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PUR
107
107
  it('object parms', function () {
108
108
  var obj = t.objectPattern([t.objectProperty(t.identifier('includeExpired'), t.identifier('includeExpired'), false, true), t.objectProperty(t.identifier('tokenId'), t.identifier('tokenId'), false, true)]);
109
109
  obj.typeAnnotation = t.tsTypeAnnotation(t.tsTypeLiteral([t.tsPropertySignature(t.identifier('includeExpired'), t.tsTypeAnnotation(t.tsBooleanKeyword())), t.tsPropertySignature(t.identifier('tokenId'), t.tsTypeAnnotation(t.tsStringKeyword()))]));
110
- expectCode(t.program([t.expressionStatement(t.assignmentExpression('=', t.identifier('ownerOf'), (0, _utils.arrowFunctionExpression)([obj], t.blockStatement([// body
110
+ expectCode(t.program([t.expressionStatement(t.assignmentExpression('=', t.identifier('ownerOf'), (0, _babel.arrowFunctionExpression)([obj], t.blockStatement([// body
111
111
  ], []), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([t.tsTypeReference(t.identifier('OwnerOfResponse'))]))))))]));
112
112
  });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _babel = require("./babel");
8
+
9
+ Object.keys(_babel).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _babel[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _babel[key];
16
+ }
17
+ });
18
+ });
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.getType = exports.getPropertyType = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var t = _interopRequireWildcard(require("@babel/types"));
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ var getTypeFromRef = function getTypeFromRef($ref) {
21
+ switch ($ref) {
22
+ case '#/definitions/Binary':
23
+ return t.tsTypeReference(t.identifier('Binary'));
24
+
25
+ default:
26
+ if ($ref.startsWith('#/definitions/')) {
27
+ return t.tsTypeReference(t.identifier($ref.replace('#/definitions/', '')));
28
+ }
29
+
30
+ throw new Error('what is $ref: ' + $ref);
31
+ }
32
+ };
33
+
34
+ var getArrayTypeFromRef = function getArrayTypeFromRef($ref) {
35
+ return t.tsArrayType(getTypeFromRef($ref));
36
+ };
37
+
38
+ var getArrayTypeFromType = function getArrayTypeFromType(type) {
39
+ return t.tsArrayType(getType(type));
40
+ };
41
+
42
+ var getType = function getType(type) {
43
+ switch (type) {
44
+ case 'string':
45
+ return t.tsStringKeyword();
46
+
47
+ case 'boolean':
48
+ return t.tSBooleanKeyword();
49
+
50
+ case 'integer':
51
+ return t.tsNumberKeyword();
52
+
53
+ default:
54
+ throw new Error('contact maintainers [unknown type]: ' + type);
55
+ }
56
+ };
57
+
58
+ exports.getType = getType;
59
+
60
+ var getPropertyType = function getPropertyType(schema, prop) {
61
+ var _schema$properties, _schema$required, _schema$required2;
62
+
63
+ var props = (_schema$properties = schema.properties) !== null && _schema$properties !== void 0 ? _schema$properties : {};
64
+ var info = props[prop];
65
+ var type = null;
66
+ var optional = (_schema$required = schema.required) === null || _schema$required === void 0 ? void 0 : _schema$required.includes(prop);
67
+
68
+ if (info.allOf && info.allOf.length === 1) {
69
+ info = info.allOf[0];
70
+ }
71
+
72
+ if (typeof info.$ref === 'string') {
73
+ type = getTypeFromRef(info.$ref);
74
+ }
75
+
76
+ if (Array.isArray(info.anyOf)) {
77
+ // assuming 2nd is null, but let's check to ensure
78
+ if (info.anyOf.length !== 2) {
79
+ throw new Error('case not handled by transpiler. contact maintainers.');
80
+ }
81
+
82
+ var _info$anyOf = (0, _slicedToArray2["default"])(info.anyOf, 2),
83
+ nullableType = _info$anyOf[0],
84
+ nullType = _info$anyOf[1];
85
+
86
+ if ((nullType === null || nullType === void 0 ? void 0 : nullType.type) !== 'null') {
87
+ throw new Error('case not handled by transpiler. contact maintainers.');
88
+ }
89
+
90
+ type = getTypeFromRef(nullableType === null || nullableType === void 0 ? void 0 : nullableType.$ref);
91
+ optional = true;
92
+ }
93
+
94
+ if (typeof info.type === 'string') {
95
+ if (info.type === 'array') {
96
+ if (info.items.$ref) {
97
+ type = getArrayTypeFromRef(info.items.$ref);
98
+ } else {
99
+ type = getArrayTypeFromType(info.items.type);
100
+ }
101
+ } else {
102
+ type = getType(info.type);
103
+ }
104
+ }
105
+
106
+ if (Array.isArray(info.type)) {
107
+ // assuming 2nd is null, but let's check to ensure
108
+ if (info.type.length !== 2) {
109
+ throw new Error('please report this to maintainers (field type): ' + JSON.stringify(info, null, 2));
110
+ }
111
+
112
+ var _info$type = (0, _slicedToArray2["default"])(info.type, 2),
113
+ _nullableType = _info$type[0],
114
+ _nullType = _info$type[1];
115
+
116
+ if (_nullType !== 'null') {
117
+ throw new Error('please report this to maintainers (field type): ' + JSON.stringify(info, null, 2));
118
+ }
119
+
120
+ if (_nullableType === 'array') {
121
+ type = t.tsArrayType(getType(info.items.type));
122
+ } else {
123
+ type = getType(_nullableType);
124
+ }
125
+
126
+ optional = true;
127
+ }
128
+
129
+ if (!type) {
130
+ throw new Error('cannot find type for ' + JSON.stringify(info));
131
+ }
132
+
133
+ if ((_schema$required2 = schema.required) !== null && _schema$required2 !== void 0 && _schema$required2.includes(prop)) {
134
+ optional = false;
135
+ }
136
+
137
+ return {
138
+ type: type,
139
+ optional: optional
140
+ };
141
+ };
142
+
143
+ exports.getPropertyType = getPropertyType;