wasm-ast-types 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,6 +11,8 @@ exports.createReactQueryHooks = exports.createReactQueryHookInterface = exports.
11
11
 
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
14
16
  var t = _interopRequireWildcard(require("@babel/types"));
15
17
 
16
18
  var _case = require("case");
@@ -25,8 +27,13 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
27
 
26
28
  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
29
 
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
+
32
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
+
28
34
  var DEFAULT_OPTIONS = {
29
- optionalClient: false
35
+ optionalClient: false,
36
+ v4: false
30
37
  };
31
38
 
32
39
  var createReactQueryHooks = function createReactQueryHooks(_ref) {
@@ -34,7 +41,9 @@ var createReactQueryHooks = function createReactQueryHooks(_ref) {
34
41
  contractName = _ref.contractName,
35
42
  QueryClient = _ref.QueryClient,
36
43
  _ref$options = _ref.options,
37
- options = _ref$options === void 0 ? DEFAULT_OPTIONS : _ref$options;
44
+ options = _ref$options === void 0 ? {} : _ref$options;
45
+ // merge the user options with the defaults
46
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
38
47
  return (0, _utils.getMessageProperties)(queryMsg).reduce(function (m, schema) {
39
48
  var underscoreName = Object.keys(schema.properties)[0];
40
49
  var methodName = (0, _case.camel)(underscoreName);
@@ -73,7 +82,9 @@ var createReactQueryHook = function createReactQueryHook(_ref2) {
73
82
  methodName = _ref2.methodName,
74
83
  jsonschema = _ref2.jsonschema,
75
84
  _ref2$options = _ref2.options,
76
- options = _ref2$options === void 0 ? DEFAULT_OPTIONS : _ref2$options;
85
+ options = _ref2$options === void 0 ? {} : _ref2$options;
86
+ // merge the user options with the defaults
87
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
77
88
  var keys = Object.keys((_jsonschema$propertie = jsonschema.properties) !== null && _jsonschema$propertie !== void 0 ? _jsonschema$propertie : {});
78
89
  var args = [];
79
90
 
@@ -91,7 +102,8 @@ var createReactQueryHook = function createReactQueryHook(_ref2) {
91
102
 
92
103
  return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(hookName), [(0, _utils.tsObjectPattern)((0, _toConsumableArray2["default"])(props.map(function (prop) {
93
104
  return t.objectProperty(t.identifier(prop), t.identifier(prop), false, true);
94
- })), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(hookParamsTypeName))))], t.blockStatement([t.returnStatement((0, _utils.callExpression)(t.identifier('useQuery'), [t.arrayExpression([t.stringLiteral(hookKeyName), t.optionalMemberExpression(t.identifier('client'), t.identifier('contractAddress'), false, options.optionalClient)]), t.arrowFunctionExpression([], (0, _babel.optionalConditionalExpression)(t.identifier('client'), t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), args), t.identifier('undefined'), options.optionalClient), false), options.optionalClient ? t.objectExpression([t.spreadElement(t.identifier('options')), t.objectProperty(t.identifier('enabled'), t.logicalExpression('&&', t.unaryExpression('!', t.unaryExpression('!', t.identifier('client'))), t.optionalMemberExpression(t.identifier('options'), t.identifier('enabled'), false, true)))]) : t.identifier('options')], t.tsTypeParameterInstantiation([(0, _babel.typeRefOrOptionalUnion)(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))])))])));
105
+ })), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(hookParamsTypeName))))], t.blockStatement([t.returnStatement((0, _utils.callExpression)(t.identifier('useQuery'), [t.arrayExpression(generateUseQueryQueryKey(hookKeyName, props, options.optionalClient)), t.arrowFunctionExpression([], (0, _babel.optionalConditionalExpression)(t.identifier('client'), t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), args), t.identifier('undefined'), options.optionalClient), false), options.optionalClient ? t.objectExpression([t.spreadElement(t.identifier('options')), t.objectProperty(t.identifier('enabled'), t.logicalExpression('&&', t.unaryExpression('!', t.unaryExpression('!', t.identifier('client'))), t.conditionalExpression( // explicitly check for undefined
106
+ t.binaryExpression('!=', t.optionalMemberExpression(t.identifier('options'), t.identifier('enabled'), false, true), t.identifier('undefined')), t.memberExpression(t.identifier('options'), t.identifier('enabled')), t.booleanLiteral(true))))]) : t.identifier('options')], t.tsTypeParameterInstantiation([(0, _babel.typeRefOrOptionalUnion)(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))])))])));
95
107
  };
96
108
 
97
109
  exports.createReactQueryHook = createReactQueryHook;
@@ -102,8 +114,11 @@ var createReactQueryHookInterface = function createReactQueryHookInterface(_ref3
102
114
  responseType = _ref3.responseType,
103
115
  jsonschema = _ref3.jsonschema,
104
116
  _ref3$options = _ref3.options,
105
- options = _ref3$options === void 0 ? DEFAULT_OPTIONS : _ref3$options;
106
- var body = [(0, _utils.tsPropertySignature)(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), (0, _utils.tsPropertySignature)(t.identifier('options'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('UseQueryOptions'), t.tsTypeParameterInstantiation([(0, _babel.typeRefOrOptionalUnion)(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))]))), true)];
117
+ options = _ref3$options === void 0 ? {} : _ref3$options;
118
+ // merge the user options with the defaults
119
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
120
+ var typedUseQueryOptions = t.tsTypeReference(t.identifier('UseQueryOptions'), t.tsTypeParameterInstantiation([(0, _babel.typeRefOrOptionalUnion)(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))]));
121
+ var body = [(0, _utils.tsPropertySignature)(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), (0, _utils.tsPropertySignature)(t.identifier('options'), t.tsTypeAnnotation(options.v4 ? t.tSIntersectionType([t.tsTypeReference(t.identifier('Omit'), t.tsTypeParameterInstantiation([typedUseQueryOptions, t.tsLiteralType(t.stringLiteral("'queryKey' | 'queryFn' | 'initialData'"))])), t.tSTypeLiteral([t.tsPropertySignature(t.identifier('initialData?'), t.tsTypeAnnotation(t.tsUndefinedKeyword()))])]) : typedUseQueryOptions), true)];
107
122
  var props = getProps(jsonschema, true);
108
123
 
109
124
  if (props.length) {
@@ -127,4 +142,14 @@ var getProps = function getProps(jsonschema, camelize) {
127
142
 
128
143
  return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(type), optional);
129
144
  });
130
- };
145
+ };
146
+
147
+ function generateUseQueryQueryKey(hookKeyName, props, optionalClient) {
148
+ var queryKey = [t.stringLiteral(hookKeyName), t.optionalMemberExpression(t.identifier('client'), t.identifier('contractAddress'), false, optionalClient)];
149
+
150
+ if (props.includes('args')) {
151
+ queryKey.push(t.callExpression(t.memberExpression(t.identifier('JSON'), t.identifier('stringify')), [t.identifier('args')]));
152
+ }
153
+
154
+ return queryKey;
155
+ }
@@ -52,4 +52,21 @@ it('createReactQueryHooks', function () {
52
52
  optionalClient: true
53
53
  }
54
54
  })));
55
+ expectCode(t.program((0, _reactQuery.createReactQueryHooks)({
56
+ queryMsg: _query_msg["default"],
57
+ contractName: 'Sg721',
58
+ QueryClient: 'Sg721QueryClient',
59
+ options: {
60
+ v4: true
61
+ }
62
+ })));
63
+ expectCode(t.program((0, _reactQuery.createReactQueryHooks)({
64
+ queryMsg: _query_msg["default"],
65
+ contractName: 'Sg721',
66
+ QueryClient: 'Sg721QueryClient',
67
+ options: {
68
+ optionalClient: true,
69
+ v4: true
70
+ }
71
+ })));
55
72
  });
@@ -31,5 +31,5 @@ it('selectors', function () {
31
31
  expectCode(t.program((0, _recoil.createRecoilSelectors)('SG721', 'SG721QueryClient', _query_msg["default"])));
32
32
  });
33
33
  it('client', function () {
34
- printCode((0, _recoil.createRecoilQueryClient)('SG721', 'SG721QueryClient'));
34
+ expectCode((0, _recoil.createRecoilQueryClient)('SG721', 'SG721QueryClient'));
35
35
  });
@@ -1,17 +1,26 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+
1
7
  import * as t from '@babel/types';
2
8
  import { camel, pascal } from 'case';
3
9
  import { tsPropertySignature, tsObjectPattern, callExpression, getMessageProperties } from './utils';
4
10
  import { typeRefOrOptionalUnion, propertySignature, optionalConditionalExpression } from './utils/babel';
5
11
  import { getPropertyType } from './utils/types';
6
12
  const DEFAULT_OPTIONS = {
7
- optionalClient: false
13
+ optionalClient: false,
14
+ v4: false
8
15
  };
9
16
  export const createReactQueryHooks = ({
10
17
  queryMsg,
11
18
  contractName,
12
19
  QueryClient,
13
- options = DEFAULT_OPTIONS
20
+ options = {}
14
21
  }) => {
22
+ // merge the user options with the defaults
23
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
15
24
  return getMessageProperties(queryMsg).reduce((m, schema) => {
16
25
  const underscoreName = Object.keys(schema.properties)[0];
17
26
  const methodName = camel(underscoreName);
@@ -44,8 +53,10 @@ export const createReactQueryHook = ({
44
53
  hookKeyName,
45
54
  methodName,
46
55
  jsonschema,
47
- options = DEFAULT_OPTIONS
56
+ options = {}
48
57
  }) => {
58
+ // merge the user options with the defaults
59
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
49
60
  const keys = Object.keys(jsonschema.properties ?? {});
50
61
  let args = [];
51
62
 
@@ -63,16 +74,20 @@ export const createReactQueryHook = ({
63
74
 
64
75
  return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(hookName), [tsObjectPattern([...props.map(prop => {
65
76
  return t.objectProperty(t.identifier(prop), t.identifier(prop), false, true);
66
- })], t.tsTypeAnnotation(t.tsTypeReference(t.identifier(hookParamsTypeName))))], t.blockStatement([t.returnStatement(callExpression(t.identifier('useQuery'), [t.arrayExpression([t.stringLiteral(hookKeyName), t.optionalMemberExpression(t.identifier('client'), t.identifier('contractAddress'), false, options.optionalClient)]), t.arrowFunctionExpression([], optionalConditionalExpression(t.identifier('client'), t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), args), t.identifier('undefined'), options.optionalClient), false), options.optionalClient ? t.objectExpression([t.spreadElement(t.identifier('options')), t.objectProperty(t.identifier('enabled'), t.logicalExpression('&&', t.unaryExpression('!', t.unaryExpression('!', t.identifier('client'))), t.optionalMemberExpression(t.identifier('options'), t.identifier('enabled'), false, true)))]) : t.identifier('options')], t.tsTypeParameterInstantiation([typeRefOrOptionalUnion(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))])))])));
77
+ })], t.tsTypeAnnotation(t.tsTypeReference(t.identifier(hookParamsTypeName))))], t.blockStatement([t.returnStatement(callExpression(t.identifier('useQuery'), [t.arrayExpression(generateUseQueryQueryKey(hookKeyName, props, options.optionalClient)), t.arrowFunctionExpression([], optionalConditionalExpression(t.identifier('client'), t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), args), t.identifier('undefined'), options.optionalClient), false), options.optionalClient ? t.objectExpression([t.spreadElement(t.identifier('options')), t.objectProperty(t.identifier('enabled'), t.logicalExpression('&&', t.unaryExpression('!', t.unaryExpression('!', t.identifier('client'))), t.conditionalExpression( // explicitly check for undefined
78
+ t.binaryExpression('!=', t.optionalMemberExpression(t.identifier('options'), t.identifier('enabled'), false, true), t.identifier('undefined')), t.memberExpression(t.identifier('options'), t.identifier('enabled')), t.booleanLiteral(true))))]) : t.identifier('options')], t.tsTypeParameterInstantiation([typeRefOrOptionalUnion(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))])))])));
67
79
  };
68
80
  export const createReactQueryHookInterface = ({
69
81
  QueryClient,
70
82
  hookParamsTypeName,
71
83
  responseType,
72
84
  jsonschema,
73
- options = DEFAULT_OPTIONS
85
+ options = {}
74
86
  }) => {
75
- const body = [tsPropertySignature(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), tsPropertySignature(t.identifier('options'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('UseQueryOptions'), t.tsTypeParameterInstantiation([typeRefOrOptionalUnion(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))]))), true)];
87
+ // merge the user options with the defaults
88
+ options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
89
+ const typedUseQueryOptions = t.tsTypeReference(t.identifier('UseQueryOptions'), t.tsTypeParameterInstantiation([typeRefOrOptionalUnion(t.identifier(responseType), options.optionalClient), t.tsTypeReference(t.identifier('Error')), t.tsTypeReference(t.identifier(responseType)), t.tsArrayType(t.tsParenthesizedType(t.tsUnionType([t.tsStringKeyword(), t.tsUndefinedKeyword()])))]));
90
+ const body = [tsPropertySignature(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(QueryClient))), options.optionalClient), tsPropertySignature(t.identifier('options'), t.tsTypeAnnotation(options.v4 ? t.tSIntersectionType([t.tsTypeReference(t.identifier('Omit'), t.tsTypeParameterInstantiation([typedUseQueryOptions, t.tsLiteralType(t.stringLiteral("'queryKey' | 'queryFn' | 'initialData'"))])), t.tSTypeLiteral([t.tsPropertySignature(t.identifier('initialData?'), t.tsTypeAnnotation(t.tsUndefinedKeyword()))])]) : typedUseQueryOptions), true)];
76
91
  const props = getProps(jsonschema, true);
77
92
 
78
93
  if (props.length) {
@@ -92,4 +107,14 @@ const getProps = (jsonschema, camelize) => {
92
107
  } = getPropertyType(jsonschema, prop);
93
108
  return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(type), optional);
94
109
  });
95
- };
110
+ };
111
+
112
+ function generateUseQueryQueryKey(hookKeyName, props, optionalClient) {
113
+ const queryKey = [t.stringLiteral(hookKeyName), t.optionalMemberExpression(t.identifier('client'), t.identifier('contractAddress'), false, optionalClient)];
114
+
115
+ if (props.includes('args')) {
116
+ queryKey.push(t.callExpression(t.memberExpression(t.identifier('JSON'), t.identifier('stringify')), [t.identifier('args')]));
117
+ }
118
+
119
+ return queryKey;
120
+ }
@@ -39,4 +39,21 @@ it('createReactQueryHooks', () => {
39
39
  optionalClient: true
40
40
  }
41
41
  })));
42
+ expectCode(t.program(createReactQueryHooks({
43
+ queryMsg: query_msg,
44
+ contractName: 'Sg721',
45
+ QueryClient: 'Sg721QueryClient',
46
+ options: {
47
+ v4: true
48
+ }
49
+ })));
50
+ expectCode(t.program(createReactQueryHooks({
51
+ queryMsg: query_msg,
52
+ contractName: 'Sg721',
53
+ QueryClient: 'Sg721QueryClient',
54
+ options: {
55
+ optionalClient: true,
56
+ v4: true
57
+ }
58
+ })));
42
59
  });
@@ -18,5 +18,5 @@ it('selectors', () => {
18
18
  expectCode(t.program(createRecoilSelectors('SG721', 'SG721QueryClient', query_msg)));
19
19
  });
20
20
  it('client', () => {
21
- printCode(createRecoilQueryClient('SG721', 'SG721QueryClient'));
21
+ expectCode(createRecoilQueryClient('SG721', 'SG721QueryClient'));
22
22
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wasm-ast-types",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "CosmWasm TypeScript AST generation",
5
5
  "author": "Dan Lynch <pyramation@gmail.com>",
6
6
  "homepage": "https://github.com/pyramation/cosmwasm-typescript-gen/tree/master/packages/wasm-ast-types#readme",
@@ -84,5 +84,5 @@
84
84
  "ast-stringify": "0.1.0",
85
85
  "case": "1.6.3"
86
86
  },
87
- "gitHead": "b0312f7e16b8fd1c4892da6d91d3f7cf6c1bd49e"
87
+ "gitHead": "aafba6dadee2e5a14b304f0dd53858e8b509046d"
88
88
  }
@@ -18,6 +18,7 @@ interface ReactQueryHookQuery {
18
18
 
19
19
  export declare interface ReactQueryOptions {
20
20
  optionalClient?: boolean
21
+ v4?: boolean
21
22
  }
22
23
  export declare const createReactQueryHooks: ({ queryMsg, contractName, QueryClient, options }: ReactQueryHooks) => any;
23
24
  export declare const createReactQueryHook: ({ hookName, hookParamsTypeName, responseType, hookKeyName, methodName, jsonschema }: ReactQueryHookQuery) => t.ExportNamedDeclaration;