wasm-ast-types 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -0
- package/main/react-query.js +178 -16
- package/main/react-query.spec.js +24 -0
- package/main/recoil.spec.js +1 -1
- package/main/utils/babel.js +28 -2
- package/main/utils/types.js +88 -62
- package/main/wasm.arrays.spec.js +30 -0
- package/main/wasm.js +7 -5
- package/module/react-query.js +156 -10
- package/module/react-query.spec.js +24 -1
- package/module/recoil.spec.js +1 -1
- package/module/utils/babel.js +15 -0
- package/module/utils/types.js +70 -57
- package/module/wasm.arrays.spec.js +24 -0
- package/module/wasm.js +4 -4
- package/package.json +2 -2
- package/types/react-query.d.ts +40 -1
package/README.md
CHANGED
@@ -1 +1,130 @@
|
|
1
1
|
# wasm-ast-types
|
2
|
+
|
3
|
+
## working with ASTs
|
4
|
+
|
5
|
+
### 1 edit the fixture
|
6
|
+
|
7
|
+
edit `./scripts/fixture.ts`, for example:
|
8
|
+
|
9
|
+
```js
|
10
|
+
// ./scripts/fixture.ts
|
11
|
+
export interface InstantiateMsg {
|
12
|
+
admin?: string | null;
|
13
|
+
members: Member[];
|
14
|
+
}
|
15
|
+
```
|
16
|
+
|
17
|
+
### 2 run AST generator
|
18
|
+
|
19
|
+
```
|
20
|
+
yarn test:ast
|
21
|
+
```
|
22
|
+
|
23
|
+
### 3 look at the JSON produced
|
24
|
+
|
25
|
+
```
|
26
|
+
code ./scripts/test-output.json
|
27
|
+
```
|
28
|
+
|
29
|
+
We use the npm module `ast-stringify` to strip out unneccesary props, and generate a JSON for reference.
|
30
|
+
|
31
|
+
You will see a `File` and `Program`... only concern yourself with the `body[]`:
|
32
|
+
|
33
|
+
```json
|
34
|
+
{
|
35
|
+
"type": "File",
|
36
|
+
"errors": [],
|
37
|
+
"program": {
|
38
|
+
"type": "Program",
|
39
|
+
"sourceType": "module",
|
40
|
+
"interpreter": null,
|
41
|
+
"body": [
|
42
|
+
{
|
43
|
+
"type": "ExportNamedDeclaration",
|
44
|
+
"exportKind": "type",
|
45
|
+
"specifiers": [],
|
46
|
+
"source": null,
|
47
|
+
"declaration": {
|
48
|
+
"type": "TSInterfaceDeclaration",
|
49
|
+
"id": {
|
50
|
+
"type": "Identifier",
|
51
|
+
"name": "InstantiateMsg"
|
52
|
+
},
|
53
|
+
"body": {
|
54
|
+
"type": "TSInterfaceBody",
|
55
|
+
"body": [
|
56
|
+
{
|
57
|
+
"type": "TSPropertySignature",
|
58
|
+
"key": {
|
59
|
+
"type": "Identifier",
|
60
|
+
"name": "admin"
|
61
|
+
},
|
62
|
+
"computed": false,
|
63
|
+
"optional": true,
|
64
|
+
"typeAnnotation": {
|
65
|
+
"type": "TSTypeAnnotation",
|
66
|
+
"typeAnnotation": {
|
67
|
+
"type": "TSUnionType",
|
68
|
+
"types": [
|
69
|
+
{
|
70
|
+
"type": "TSStringKeyword"
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"type": "TSNullKeyword"
|
74
|
+
}
|
75
|
+
]
|
76
|
+
}
|
77
|
+
}
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"type": "TSPropertySignature",
|
81
|
+
"key": {
|
82
|
+
"type": "Identifier",
|
83
|
+
"name": "members"
|
84
|
+
},
|
85
|
+
"computed": false,
|
86
|
+
"typeAnnotation": {
|
87
|
+
"type": "TSTypeAnnotation",
|
88
|
+
"typeAnnotation": {
|
89
|
+
"type": "TSArrayType",
|
90
|
+
"elementType": {
|
91
|
+
"type": "TSTypeReference",
|
92
|
+
"typeName": {
|
93
|
+
"type": "Identifier",
|
94
|
+
"name": "Member"
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
]
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
],
|
105
|
+
"directives": []
|
106
|
+
},
|
107
|
+
"comments": []
|
108
|
+
}
|
109
|
+
```
|
110
|
+
|
111
|
+
### 4 code with `@babel/types` using the JSON as a reference
|
112
|
+
|
113
|
+
NOTE: 4 continued ideally you should be writing a test with your generator!
|
114
|
+
|
115
|
+
```js
|
116
|
+
import * as t from '@babel/types';
|
117
|
+
|
118
|
+
export const createNewGenerator = () => {
|
119
|
+
return t.exportNamedDeclaration(
|
120
|
+
t.tsInterfaceDeclaration(
|
121
|
+
t.identifier('InstantiateMsg'),
|
122
|
+
null,
|
123
|
+
[],
|
124
|
+
t.tsInterfaceBody([
|
125
|
+
// ... more code ...
|
126
|
+
])
|
127
|
+
)
|
128
|
+
);
|
129
|
+
};
|
130
|
+
```
|
package/main/react-query.js
CHANGED
@@ -7,10 +7,12 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
8
8
|
value: true
|
9
9
|
});
|
10
|
-
exports.createReactQueryHooks = exports.createReactQueryHookInterface = exports.createReactQueryHook = void 0;
|
10
|
+
exports.createReactQueryMutationHooks = exports.createReactQueryMutationHook = exports.createReactQueryMutationArgsInterface = exports.createReactQueryHooks = exports.createReactQueryHookInterface = exports.createReactQueryHook = void 0;
|
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");
|
@@ -21,12 +23,20 @@ var _babel = require("./utils/babel");
|
|
21
23
|
|
22
24
|
var _types2 = require("./utils/types");
|
23
25
|
|
26
|
+
var _wasm = require("./wasm");
|
27
|
+
|
24
28
|
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
29
|
|
26
30
|
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
31
|
|
32
|
+
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; }
|
33
|
+
|
34
|
+
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; }
|
35
|
+
|
28
36
|
var DEFAULT_OPTIONS = {
|
29
|
-
optionalClient: false
|
37
|
+
optionalClient: false,
|
38
|
+
v4: false,
|
39
|
+
mutations: false
|
30
40
|
};
|
31
41
|
|
32
42
|
var createReactQueryHooks = function createReactQueryHooks(_ref) {
|
@@ -34,7 +44,9 @@ var createReactQueryHooks = function createReactQueryHooks(_ref) {
|
|
34
44
|
contractName = _ref.contractName,
|
35
45
|
QueryClient = _ref.QueryClient,
|
36
46
|
_ref$options = _ref.options,
|
37
|
-
options = _ref$options === void 0 ?
|
47
|
+
options = _ref$options === void 0 ? {} : _ref$options;
|
48
|
+
// merge the user options with the defaults
|
49
|
+
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
38
50
|
return (0, _utils.getMessageProperties)(queryMsg).reduce(function (m, schema) {
|
39
51
|
var underscoreName = Object.keys(schema.properties)[0];
|
40
52
|
var methodName = (0, _case.camel)(underscoreName);
|
@@ -73,7 +85,9 @@ var createReactQueryHook = function createReactQueryHook(_ref2) {
|
|
73
85
|
methodName = _ref2.methodName,
|
74
86
|
jsonschema = _ref2.jsonschema,
|
75
87
|
_ref2$options = _ref2.options,
|
76
|
-
options = _ref2$options === void 0 ?
|
88
|
+
options = _ref2$options === void 0 ? {} : _ref2$options;
|
89
|
+
// merge the user options with the defaults
|
90
|
+
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
77
91
|
var keys = Object.keys((_jsonschema$propertie = jsonschema.properties) !== null && _jsonschema$propertie !== void 0 ? _jsonschema$propertie : {});
|
78
92
|
var args = [];
|
79
93
|
|
@@ -91,19 +105,157 @@ var createReactQueryHook = function createReactQueryHook(_ref2) {
|
|
91
105
|
|
92
106
|
return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(hookName), [(0, _utils.tsObjectPattern)((0, _toConsumableArray2["default"])(props.map(function (prop) {
|
93
107
|
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(
|
108
|
+
})), 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
|
109
|
+
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
110
|
};
|
96
111
|
|
97
112
|
exports.createReactQueryHook = createReactQueryHook;
|
98
113
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
114
|
+
/**
|
115
|
+
* Example:
|
116
|
+
```
|
117
|
+
export interface Cw4UpdateMembersMutation {
|
118
|
+
client: Cw4GroupClient
|
119
|
+
args: {
|
120
|
+
tokenId: string
|
121
|
+
remove: string[]
|
122
|
+
}
|
123
|
+
options?: Omit<
|
124
|
+
UseMutationOptions<ExecuteResult, Error, Pick<Cw4UpdateMembersMutation, 'args'>>,
|
125
|
+
'mutationFn'
|
126
|
+
>
|
127
|
+
}
|
128
|
+
```
|
129
|
+
*/
|
130
|
+
var createReactQueryMutationArgsInterface = function createReactQueryMutationArgsInterface(_ref3) {
|
131
|
+
var _jsonschema$$ref;
|
132
|
+
|
133
|
+
var ExecuteClient = _ref3.ExecuteClient,
|
134
|
+
mutationHookParamsTypeName = _ref3.mutationHookParamsTypeName,
|
135
|
+
useMutationTypeParameter = _ref3.useMutationTypeParameter,
|
136
|
+
jsonschema = _ref3.jsonschema;
|
137
|
+
var typedUseMutationOptions = t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter);
|
138
|
+
var body = [(0, _utils.tsPropertySignature)(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(ExecuteClient))), false)];
|
139
|
+
var msgType = (0, _types2.getParamsTypeAnnotation)(jsonschema); // TODO: this should not have to be done manually.
|
140
|
+
|
141
|
+
if (!msgType && jsonschema !== null && jsonschema !== void 0 && (_jsonschema$$ref = jsonschema.$ref) !== null && _jsonschema$$ref !== void 0 && _jsonschema$$ref.startsWith('#/definitions/')) {
|
142
|
+
var refName = jsonschema === null || jsonschema === void 0 ? void 0 : jsonschema.$ref;
|
143
|
+
|
144
|
+
if (/_for_[A-Z]/.test(refName)) {
|
145
|
+
refName = refName.replace(/_for_/, 'For');
|
146
|
+
}
|
147
|
+
|
148
|
+
msgType = t.tsTypeAnnotation((0, _types2.getTypeFromRef)(refName));
|
149
|
+
}
|
150
|
+
|
151
|
+
if (msgType) {
|
152
|
+
body.push(t.tsPropertySignature(t.identifier('msg'), msgType));
|
153
|
+
} // fee: number | StdFee | "auto" = "auto", memo?: string, funds?: readonly Coin[]
|
154
|
+
|
155
|
+
|
156
|
+
var optionalArgs = t.tsPropertySignature(t.identifier('args'), t.tsTypeAnnotation(t.tsTypeLiteral(_wasm.FIXED_EXECUTE_PARAMS.map(function (param) {
|
157
|
+
return (0, _babel.propertySignature)(param.name, param.typeAnnotation, param.optional);
|
158
|
+
}))));
|
159
|
+
optionalArgs.optional = true;
|
160
|
+
body.push(optionalArgs);
|
161
|
+
return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(mutationHookParamsTypeName), null, [], t.tsInterfaceBody(body)));
|
162
|
+
};
|
163
|
+
|
164
|
+
exports.createReactQueryMutationArgsInterface = createReactQueryMutationArgsInterface;
|
165
|
+
|
166
|
+
var createReactQueryMutationHooks = function createReactQueryMutationHooks(_ref4) {
|
167
|
+
var execMsg = _ref4.execMsg,
|
168
|
+
contractName = _ref4.contractName,
|
169
|
+
ExecuteClient = _ref4.ExecuteClient,
|
170
|
+
_ref4$options = _ref4.options,
|
171
|
+
options = _ref4$options === void 0 ? {} : _ref4$options;
|
172
|
+
// merge the user options with the defaults
|
173
|
+
return (0, _utils.getMessageProperties)(execMsg).reduce(function (m, schema) {
|
174
|
+
var _jsonschema$propertie2, _Object$keys;
|
175
|
+
|
176
|
+
// update_members
|
177
|
+
var execMethodUnderscoreName = Object.keys(schema.properties)[0]; // updateMembers
|
178
|
+
|
179
|
+
var execMethodName = (0, _case.camel)(execMethodUnderscoreName); // Cw20UpdateMembersMutation
|
180
|
+
|
181
|
+
var mutationHookParamsTypeName = "".concat((0, _case.pascal)(contractName)).concat((0, _case.pascal)(execMethodName), "Mutation"); // useCw20UpdateMembersMutation
|
182
|
+
|
183
|
+
var mutationHookName = "use".concat(mutationHookParamsTypeName);
|
184
|
+
var jsonschema = schema.properties[execMethodUnderscoreName];
|
185
|
+
var properties = (_jsonschema$propertie2 = jsonschema.properties) !== null && _jsonschema$propertie2 !== void 0 ? _jsonschema$propertie2 : {}; // TODO: there should be a better way to do this
|
186
|
+
|
187
|
+
var hasMsg = !!((_Object$keys = Object.keys(properties)) !== null && _Object$keys !== void 0 && _Object$keys.length || jsonschema !== null && jsonschema !== void 0 && jsonschema.$ref); // <ExecuteResult, Error, Cw4UpdateMembersMutation>
|
188
|
+
|
189
|
+
var useMutationTypeParameter = generateMutationTypeParameter(mutationHookParamsTypeName, hasMsg);
|
190
|
+
return [createReactQueryMutationArgsInterface({
|
191
|
+
mutationHookParamsTypeName: mutationHookParamsTypeName,
|
192
|
+
ExecuteClient: ExecuteClient,
|
193
|
+
jsonschema: jsonschema,
|
194
|
+
useMutationTypeParameter: useMutationTypeParameter
|
195
|
+
}), createReactQueryMutationHook({
|
196
|
+
execMethodName: execMethodName,
|
197
|
+
mutationHookName: mutationHookName,
|
198
|
+
mutationHookParamsTypeName: mutationHookParamsTypeName,
|
199
|
+
hasMsg: hasMsg,
|
200
|
+
useMutationTypeParameter: useMutationTypeParameter
|
201
|
+
})].concat((0, _toConsumableArray2["default"])(m));
|
202
|
+
}, []);
|
203
|
+
};
|
204
|
+
/**
|
205
|
+
* Generates the mutation type parameter. If args exist, we use a pick. If not, we just return the params type.
|
206
|
+
*/
|
207
|
+
|
208
|
+
|
209
|
+
exports.createReactQueryMutationHooks = createReactQueryMutationHooks;
|
210
|
+
|
211
|
+
function generateMutationTypeParameter(mutationHookParamsTypeName, hasArgs) {
|
212
|
+
return t.tsTypeParameterInstantiation([// Data
|
213
|
+
t.tSTypeReference(t.identifier('ExecuteResult')), // Error
|
214
|
+
t.tsTypeReference(t.identifier('Error')), // Variables
|
215
|
+
t.tsTypeReference(t.identifier(mutationHookParamsTypeName))]);
|
216
|
+
}
|
217
|
+
|
218
|
+
/**
|
219
|
+
*
|
220
|
+
* Example:
|
221
|
+
```
|
222
|
+
export const useCw4UpdateMembersMutation = ({ client, options }: Omit<Cw4UpdateMembersMutation, 'args'>) =>
|
223
|
+
useMutation<ExecuteResult, Error, Pick<Cw4UpdateMembersMutation, 'args'>>(
|
224
|
+
({ args }) => client.updateMembers(args),
|
225
|
+
options
|
226
|
+
)
|
227
|
+
```
|
228
|
+
*/
|
229
|
+
var createReactQueryMutationHook = function createReactQueryMutationHook(_ref5) {
|
230
|
+
var mutationHookName = _ref5.mutationHookName,
|
231
|
+
mutationHookParamsTypeName = _ref5.mutationHookParamsTypeName,
|
232
|
+
execMethodName = _ref5.execMethodName,
|
233
|
+
useMutationTypeParameter = _ref5.useMutationTypeParameter,
|
234
|
+
hasMsg = _ref5.hasMsg;
|
235
|
+
var useMutationFunctionArgs = [(0, _babel.shorthandProperty)('client')];
|
236
|
+
if (hasMsg) useMutationFunctionArgs.push((0, _babel.shorthandProperty)('msg'));
|
237
|
+
useMutationFunctionArgs.push(t.objectProperty(t.identifier('args'), t.assignmentPattern(t.objectPattern(_wasm.FIXED_EXECUTE_PARAMS.map(function (param) {
|
238
|
+
return (0, _babel.shorthandProperty)(param.name);
|
239
|
+
})), t.objectExpression([]))));
|
240
|
+
return t.exportNamedDeclaration(t.functionDeclaration(t.identifier(mutationHookName), [(0, _utils.identifier)('options', t.tsTypeAnnotation((0, _babel.omitTypeReference)(t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter), 'mutationFn')), true)], t.blockStatement([t.returnStatement((0, _utils.callExpression)(t.identifier('useMutation'), [t.arrowFunctionExpression([t.objectPattern(useMutationFunctionArgs)], t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(execMethodName)), (hasMsg ? [t.identifier('msg')] : []).concat(_wasm.FIXED_EXECUTE_PARAMS.map(function (param) {
|
241
|
+
return t.identifier(param.name);
|
242
|
+
}))), false // not async
|
243
|
+
), t.identifier('options')], useMutationTypeParameter))])));
|
244
|
+
};
|
245
|
+
|
246
|
+
exports.createReactQueryMutationHook = createReactQueryMutationHook;
|
247
|
+
|
248
|
+
var createReactQueryHookInterface = function createReactQueryHookInterface(_ref6) {
|
249
|
+
var QueryClient = _ref6.QueryClient,
|
250
|
+
hookParamsTypeName = _ref6.hookParamsTypeName,
|
251
|
+
responseType = _ref6.responseType,
|
252
|
+
jsonschema = _ref6.jsonschema,
|
253
|
+
_ref6$options = _ref6.options,
|
254
|
+
options = _ref6$options === void 0 ? {} : _ref6$options;
|
255
|
+
// merge the user options with the defaults
|
256
|
+
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
257
|
+
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()])))]));
|
258
|
+
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([(0, _babel.omitTypeReference)(typedUseQueryOptions, "'queryKey' | 'queryFn' | 'initialData'"), t.tSTypeLiteral([t.tsPropertySignature(t.identifier('initialData?'), t.tsTypeAnnotation(t.tsUndefinedKeyword()))])]) : typedUseQueryOptions), true)];
|
107
259
|
var props = getProps(jsonschema, true);
|
108
260
|
|
109
261
|
if (props.length) {
|
@@ -116,9 +268,9 @@ var createReactQueryHookInterface = function createReactQueryHookInterface(_ref3
|
|
116
268
|
exports.createReactQueryHookInterface = createReactQueryHookInterface;
|
117
269
|
|
118
270
|
var getProps = function getProps(jsonschema, camelize) {
|
119
|
-
var _jsonschema$
|
271
|
+
var _jsonschema$propertie3;
|
120
272
|
|
121
|
-
var keys = Object.keys((_jsonschema$
|
273
|
+
var keys = Object.keys((_jsonschema$propertie3 = jsonschema.properties) !== null && _jsonschema$propertie3 !== void 0 ? _jsonschema$propertie3 : {});
|
122
274
|
if (!keys.length) return [];
|
123
275
|
return keys.map(function (prop) {
|
124
276
|
var _getPropertyType = (0, _types2.getPropertyType)(jsonschema, prop),
|
@@ -127,4 +279,14 @@ var getProps = function getProps(jsonschema, camelize) {
|
|
127
279
|
|
128
280
|
return (0, _babel.propertySignature)(camelize ? (0, _case.camel)(prop) : prop, t.tsTypeAnnotation(type), optional);
|
129
281
|
});
|
130
|
-
};
|
282
|
+
};
|
283
|
+
|
284
|
+
function generateUseQueryQueryKey(hookKeyName, props, optionalClient) {
|
285
|
+
var queryKey = [t.stringLiteral(hookKeyName), t.optionalMemberExpression(t.identifier('client'), t.identifier('contractAddress'), false, optionalClient)];
|
286
|
+
|
287
|
+
if (props.includes('args')) {
|
288
|
+
queryKey.push(t.callExpression(t.memberExpression(t.identifier('JSON'), t.identifier('stringify')), [t.identifier('args')]));
|
289
|
+
}
|
290
|
+
|
291
|
+
return queryKey;
|
292
|
+
}
|
package/main/react-query.spec.js
CHANGED
@@ -10,6 +10,8 @@ var t = _interopRequireWildcard(require("@babel/types"));
|
|
10
10
|
|
11
11
|
var _query_msg = _interopRequireDefault(require("./../../../__fixtures__/basic/query_msg.json"));
|
12
12
|
|
13
|
+
var _execute_msg_for__empty = _interopRequireDefault(require("./../../../__fixtures__/basic/execute_msg_for__empty.json"));
|
14
|
+
|
13
15
|
var _reactQuery = require("./react-query");
|
14
16
|
|
15
17
|
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); }
|
@@ -52,4 +54,26 @@ it('createReactQueryHooks', function () {
|
|
52
54
|
optionalClient: true
|
53
55
|
}
|
54
56
|
})));
|
57
|
+
expectCode(t.program((0, _reactQuery.createReactQueryHooks)({
|
58
|
+
queryMsg: _query_msg["default"],
|
59
|
+
contractName: 'Sg721',
|
60
|
+
QueryClient: 'Sg721QueryClient',
|
61
|
+
options: {
|
62
|
+
v4: true
|
63
|
+
}
|
64
|
+
})));
|
65
|
+
expectCode(t.program((0, _reactQuery.createReactQueryHooks)({
|
66
|
+
queryMsg: _query_msg["default"],
|
67
|
+
contractName: 'Sg721',
|
68
|
+
QueryClient: 'Sg721QueryClient',
|
69
|
+
options: {
|
70
|
+
optionalClient: true,
|
71
|
+
v4: true
|
72
|
+
}
|
73
|
+
})));
|
74
|
+
expectCode(t.program((0, _reactQuery.createReactQueryMutationHooks)({
|
75
|
+
execMsg: _execute_msg_for__empty["default"],
|
76
|
+
contractName: 'Sg721',
|
77
|
+
ExecuteClient: 'Sg721Client'
|
78
|
+
})));
|
55
79
|
});
|
package/main/recoil.spec.js
CHANGED
@@ -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
|
-
|
34
|
+
expectCode((0, _recoil.createRecoilQueryClient)('SG721', 'SG721QueryClient'));
|
35
35
|
});
|
package/main/utils/babel.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.typedIdentifier = exports.typeRefOrOptionalUnion = exports.tsTypeOperator = exports.tsPropertySignature = exports.tsObjectPattern = exports.shorthandProperty = exports.recursiveNamespace = exports.propertySignature = exports.promiseTypeAnnotation = exports.optionalConditionalExpression = 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;
|
10
|
+
exports.typedIdentifier = exports.typeRefOrOptionalUnion = exports.tsTypeOperator = exports.tsPropertySignature = exports.tsObjectPattern = exports.shorthandProperty = exports.recursiveNamespace = exports.propertySignature = exports.promiseTypeAnnotation = exports.pickTypeReference = exports.parameterizedTypeReference = exports.optionalConditionalExpression = exports.omitTypeReference = 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,7 @@ 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
|
+
// t.TSPropertySignature - kind?
|
24
25
|
var propertySignature = function propertySignature(name, typeAnnotation) {
|
25
26
|
var optional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
26
27
|
return {
|
@@ -279,4 +280,29 @@ var typeRefOrOptionalUnion = function typeRefOrOptionalUnion(identifier) {
|
|
279
280
|
return optional ? t.tsUnionType([typeReference, t.tsUndefinedKeyword()]) : typeReference;
|
280
281
|
};
|
281
282
|
|
282
|
-
exports.typeRefOrOptionalUnion = typeRefOrOptionalUnion;
|
283
|
+
exports.typeRefOrOptionalUnion = typeRefOrOptionalUnion;
|
284
|
+
|
285
|
+
var parameterizedTypeReference = function parameterizedTypeReference(identifier, from, omit) {
|
286
|
+
return t.tsTypeReference(t.identifier(identifier), t.tsTypeParameterInstantiation([from, typeof omit === 'string' ? t.tsLiteralType(t.stringLiteral(omit)) : t.tsUnionType(omit.map(function (o) {
|
287
|
+
return t.tsLiteralType(t.stringLiteral(o));
|
288
|
+
}))]));
|
289
|
+
};
|
290
|
+
/**
|
291
|
+
* omitTypeReference(t.tsTypeReference(t.identifier('Cw4UpdateMembersMutation'),),'args').....
|
292
|
+
* Omit<Cw4UpdateMembersMutation, 'args'>
|
293
|
+
*/
|
294
|
+
|
295
|
+
|
296
|
+
exports.parameterizedTypeReference = parameterizedTypeReference;
|
297
|
+
|
298
|
+
var omitTypeReference = function omitTypeReference(from, omit) {
|
299
|
+
return parameterizedTypeReference('Omit', from, omit);
|
300
|
+
};
|
301
|
+
|
302
|
+
exports.omitTypeReference = omitTypeReference;
|
303
|
+
|
304
|
+
var pickTypeReference = function pickTypeReference(from, pick) {
|
305
|
+
return parameterizedTypeReference('Pick', from, pick);
|
306
|
+
};
|
307
|
+
|
308
|
+
exports.pickTypeReference = pickTypeReference;
|