wasm-ast-types 0.5.0 → 0.6.1
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 → client/client.js} +54 -40
- package/main/client/index.js +18 -0
- package/main/client/test/ts-client.arrays.spec.js +25 -0
- package/main/client/test/ts-client.cw-named-groups.test.js +25 -0
- package/main/client/test/ts-client.cw-proposal-single.test.js +30 -0
- package/main/client/test/ts-client.empty-enums.spec.js +19 -0
- package/main/client/test/ts-client.sg721.spec.js +25 -0
- package/main/client/test/ts-client.spec.js +106 -0
- package/main/client/test/ts-client.vectis.spec.js +56 -0
- package/main/context/context.js +48 -0
- package/main/context/index.js +18 -0
- package/main/{messages.js → from-partial/from-partial.js} +17 -60
- package/main/from-partial/from-partial.spec.js +20 -0
- package/main/from-partial/index.js +18 -0
- package/main/index.js +34 -8
- package/main/react-query/index.js +18 -0
- package/main/{react-query.js → react-query/react-query.js} +39 -64
- package/main/{react-query.spec.js → react-query/react-query.spec.js} +33 -43
- package/main/recoil/index.js +18 -0
- package/main/{recoil.js → recoil/recoil.js} +7 -26
- package/main/{recoil.spec.js → recoil/recoil.spec.js} +9 -14
- package/main/utils/babel.spec.js +7 -15
- package/main/utils/index.js +13 -0
- package/main/utils/types.js +35 -33
- package/module/{wasm.js → client/client.js} +43 -33
- package/module/client/index.js +1 -0
- package/module/client/test/ts-client.arrays.spec.js +17 -0
- package/module/client/test/ts-client.cw-named-groups.test.js +17 -0
- package/module/client/test/ts-client.cw-proposal-single.test.js +21 -0
- package/module/client/test/ts-client.empty-enums.spec.js +11 -0
- package/module/client/test/ts-client.sg721.spec.js +17 -0
- package/module/client/test/ts-client.spec.js +85 -0
- package/module/client/test/ts-client.vectis.spec.js +44 -0
- package/module/context/context.js +25 -0
- package/module/context/index.js +1 -0
- package/module/{messages.js → from-partial/from-partial.js} +16 -57
- package/module/from-partial/from-partial.spec.js +12 -0
- package/module/from-partial/index.js +1 -0
- package/module/index.js +5 -3
- package/module/react-query/index.js +1 -0
- package/module/{react-query.js → react-query/react-query.js} +30 -49
- package/module/react-query/react-query.spec.js +53 -0
- package/module/recoil/index.js +1 -0
- package/module/{recoil.js → recoil/recoil.js} +6 -20
- package/module/recoil/recoil.spec.js +15 -0
- package/module/utils/babel.spec.js +1 -10
- package/module/utils/index.js +2 -1
- package/module/utils/types.js +33 -31
- package/package.json +26 -24
- package/types/src/client/client.d.ts +17 -0
- package/types/src/client/index.d.ts +1 -0
- package/types/src/client/test/ts-client.cw-named-groups.test.d.ts +1 -0
- package/types/src/client/test/ts-client.cw-proposal-single.test.d.ts +1 -0
- package/types/src/context/context.d.ts +20 -0
- package/types/src/context/index.d.ts +1 -0
- package/types/src/from-partial/from-partial.d.ts +4 -0
- package/types/src/from-partial/index.d.ts +1 -0
- package/types/src/index.d.ts +7 -0
- package/types/src/react-query/index.d.ts +1 -0
- package/types/src/react-query/react-query.d.ts +81 -0
- package/types/src/recoil/index.d.ts +1 -0
- package/types/{recoil.d.ts → src/recoil/recoil.d.ts} +5 -5
- package/types/{types.d.ts → src/types.d.ts} +17 -0
- package/types/{utils.d.ts → src/utils/babel.d.ts} +21 -1
- package/types/src/utils/index.d.ts +2 -0
- package/types/src/utils/types.d.ts +18 -0
- package/types/test-utils/index.d.ts +2 -0
- package/main/messages.spec.js +0 -24
- package/main/wasm.arrays.spec.js +0 -30
- package/main/wasm.cw-named-groups.test.js +0 -30
- package/main/wasm.cw-proposal-single.test.js +0 -32
- package/main/wasm.empty-enums.spec.js +0 -24
- package/main/wasm.sg721.spec.js +0 -30
- package/main/wasm.spec.js +0 -95
- package/main/wasm.vectis.spec.js +0 -53
- package/module/messages.spec.js +0 -18
- package/module/react-query.spec.js +0 -65
- package/module/recoil.spec.js +0 -22
- package/module/wasm.arrays.spec.js +0 -24
- package/module/wasm.cw-named-groups.test.js +0 -24
- package/module/wasm.cw-proposal-single.test.js +0 -25
- package/module/wasm.empty-enums.spec.js +0 -18
- package/module/wasm.sg721.spec.js +0 -24
- package/module/wasm.spec.js +0 -76
- package/module/wasm.vectis.spec.js +0 -43
- package/types/amino/amino-interfaces.d.ts +0 -6
- package/types/amino/from-amino.d.ts +0 -13
- package/types/amino/index.d.ts +0 -3
- package/types/amino/to-amino.d.ts +0 -11
- package/types/index.d.ts +0 -5
- package/types/messages.d.ts +0 -4
- package/types/react-query.d.ts +0 -70
- package/types/wasm.d.ts +0 -24
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import execute_msg_named_groups from '../../../../../__fixtures__/daodao/cw-named-groups/execute_msg.json';
|
|
2
|
+
import query_msg from '../../../../../__fixtures__/basic/query_msg.json';
|
|
3
|
+
import execute_msg from '../../../../../__fixtures__/basic/execute_msg_for__empty.json';
|
|
4
|
+
import approval_response from '../../../../../__fixtures__/basic/approval_response.json';
|
|
5
|
+
import all_nft_info_response from '../../../../../__fixtures__/basic/all_nft_info_response.json';
|
|
6
|
+
import approvals_response from '../../../../../__fixtures__/basic/approvals_response.json';
|
|
7
|
+
import collection_info_response from '../../../../../__fixtures__/basic/collection_info_response.json';
|
|
8
|
+
import contract_info_response from '../../../../../__fixtures__/basic/contract_info_response.json';
|
|
9
|
+
import instantiate_msg from '../../../../../__fixtures__/basic/instantiate_msg.json';
|
|
10
|
+
import nft_info_response from '../../../../../__fixtures__/basic/nft_info_response.json';
|
|
11
|
+
import num_tokens_response from '../../../../../__fixtures__/basic/num_tokens_response.json';
|
|
12
|
+
import operators_response from '../../../../../__fixtures__/basic/operators_response.json';
|
|
13
|
+
import owner_of_response from '../../../../../__fixtures__/basic/owner_of_response.json';
|
|
14
|
+
import tokens_response from '../../../../../__fixtures__/basic/tokens_response.json';
|
|
15
|
+
import { createQueryClass, createQueryInterface, createExecuteClass, createExecuteInterface, createTypeInterface } from '../client';
|
|
16
|
+
import { RenderContext } from '../../context';
|
|
17
|
+
import { expectCode } from '../../../test-utils';
|
|
18
|
+
it('approval_response', () => {
|
|
19
|
+
const ctx = new RenderContext(approval_response);
|
|
20
|
+
expectCode(createTypeInterface(ctx, approval_response));
|
|
21
|
+
});
|
|
22
|
+
it('all_nft_info_response', () => {
|
|
23
|
+
const ctx = new RenderContext(all_nft_info_response);
|
|
24
|
+
expectCode(createTypeInterface(ctx, all_nft_info_response));
|
|
25
|
+
});
|
|
26
|
+
it('approvals_response', () => {
|
|
27
|
+
const ctx = new RenderContext(approvals_response);
|
|
28
|
+
expectCode(createTypeInterface(ctx, approvals_response));
|
|
29
|
+
});
|
|
30
|
+
it('collection_info_response', () => {
|
|
31
|
+
const ctx = new RenderContext(collection_info_response);
|
|
32
|
+
expectCode(createTypeInterface(ctx, collection_info_response));
|
|
33
|
+
});
|
|
34
|
+
it('contract_info_response', () => {
|
|
35
|
+
const ctx = new RenderContext(contract_info_response);
|
|
36
|
+
expectCode(createTypeInterface(ctx, contract_info_response));
|
|
37
|
+
});
|
|
38
|
+
it('instantiate_msg', () => {
|
|
39
|
+
const ctx = new RenderContext(instantiate_msg);
|
|
40
|
+
expectCode(createTypeInterface(ctx, instantiate_msg));
|
|
41
|
+
});
|
|
42
|
+
it('nft_info_response', () => {
|
|
43
|
+
const ctx = new RenderContext(nft_info_response);
|
|
44
|
+
expectCode(createTypeInterface(ctx, nft_info_response));
|
|
45
|
+
});
|
|
46
|
+
it('num_tokens_response', () => {
|
|
47
|
+
const ctx = new RenderContext(num_tokens_response);
|
|
48
|
+
expectCode(createTypeInterface(ctx, num_tokens_response));
|
|
49
|
+
});
|
|
50
|
+
it('operators_response', () => {
|
|
51
|
+
const ctx = new RenderContext(operators_response);
|
|
52
|
+
expectCode(createTypeInterface(ctx, operators_response));
|
|
53
|
+
});
|
|
54
|
+
it('owner_of_response', () => {
|
|
55
|
+
const ctx = new RenderContext(owner_of_response);
|
|
56
|
+
expectCode(createTypeInterface(ctx, owner_of_response));
|
|
57
|
+
});
|
|
58
|
+
it('tokens_response', () => {
|
|
59
|
+
const ctx = new RenderContext(tokens_response);
|
|
60
|
+
expectCode(createTypeInterface(ctx, tokens_response));
|
|
61
|
+
});
|
|
62
|
+
it('query classes', () => {
|
|
63
|
+
const ctx = new RenderContext(query_msg);
|
|
64
|
+
expectCode(createQueryClass(ctx, 'SG721QueryClient', 'SG721ReadOnlyInstance', query_msg));
|
|
65
|
+
});
|
|
66
|
+
it('execute classes', () => {
|
|
67
|
+
const ctx = new RenderContext(execute_msg);
|
|
68
|
+
expectCode(createExecuteClass(ctx, 'SG721Client', 'SG721Instance', 'SG721QueryClient', execute_msg));
|
|
69
|
+
});
|
|
70
|
+
it('execute classes no extends', () => {
|
|
71
|
+
const ctx = new RenderContext(execute_msg);
|
|
72
|
+
expectCode(createExecuteClass(ctx, 'SG721Client', 'SG721Instance', null, execute_msg));
|
|
73
|
+
});
|
|
74
|
+
it('execute classes array types', () => {
|
|
75
|
+
const ctx = new RenderContext(execute_msg_named_groups);
|
|
76
|
+
expectCode(createExecuteClass(ctx, 'SG721Client', 'SG721Instance', null, execute_msg_named_groups));
|
|
77
|
+
});
|
|
78
|
+
it('execute interfaces no extends', () => {
|
|
79
|
+
const ctx = new RenderContext(execute_msg);
|
|
80
|
+
expectCode(createExecuteInterface(ctx, 'SG721Instance', null, execute_msg));
|
|
81
|
+
});
|
|
82
|
+
it('query interfaces', () => {
|
|
83
|
+
const ctx = new RenderContext(query_msg);
|
|
84
|
+
expectCode(createQueryInterface(ctx, 'SG721ReadOnlyInstance', query_msg));
|
|
85
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import cosmos_msg_for__empty from '../../../../../__fixtures__/vectis/govec/cosmos_msg_for__empty.json';
|
|
2
|
+
import execute_msg_for__empty from '../../../../../__fixtures__/vectis/govec/execute_msg_for__empty.json';
|
|
3
|
+
import can_execute_relay_response from '../../../../../__fixtures__/vectis/govec/can_execute_relay_response.json';
|
|
4
|
+
import info_response from '../../../../../__fixtures__/vectis/govec/info_response.json';
|
|
5
|
+
import relay_transaction from '../../../../../__fixtures__/vectis/govec/relay_transaction.json';
|
|
6
|
+
import { createQueryClass, createExecuteClass, createExecuteInterface, createTypeInterface } from '../client';
|
|
7
|
+
import { RenderContext } from '../../context';
|
|
8
|
+
import { expectCode } from '../../../test-utils';
|
|
9
|
+
it('cosmos_msg_for__empty', () => {
|
|
10
|
+
const ctx = new RenderContext(cosmos_msg_for__empty);
|
|
11
|
+
expectCode(createTypeInterface(ctx, cosmos_msg_for__empty));
|
|
12
|
+
});
|
|
13
|
+
it('execute_msg_for__empty', () => {
|
|
14
|
+
const ctx = new RenderContext(execute_msg_for__empty);
|
|
15
|
+
expectCode(createTypeInterface(ctx, execute_msg_for__empty));
|
|
16
|
+
});
|
|
17
|
+
it('can_execute_relay_response', () => {
|
|
18
|
+
const ctx = new RenderContext(can_execute_relay_response);
|
|
19
|
+
expectCode(createTypeInterface(ctx, can_execute_relay_response));
|
|
20
|
+
});
|
|
21
|
+
it('info_response', () => {
|
|
22
|
+
const ctx = new RenderContext(info_response);
|
|
23
|
+
expectCode(createTypeInterface(ctx, info_response));
|
|
24
|
+
});
|
|
25
|
+
it('relay_transaction', () => {
|
|
26
|
+
const ctx = new RenderContext(relay_transaction);
|
|
27
|
+
expectCode(createTypeInterface(ctx, relay_transaction));
|
|
28
|
+
});
|
|
29
|
+
it('query classes', () => {
|
|
30
|
+
const ctx = new RenderContext(cosmos_msg_for__empty);
|
|
31
|
+
expectCode(createQueryClass(ctx, 'SG721QueryClient', 'SG721ReadOnlyInstance', cosmos_msg_for__empty));
|
|
32
|
+
});
|
|
33
|
+
it('query classes', () => {
|
|
34
|
+
const ctx = new RenderContext(execute_msg_for__empty);
|
|
35
|
+
expectCode(createQueryClass(ctx, 'SG721QueryClient', 'SG721ReadOnlyInstance', execute_msg_for__empty));
|
|
36
|
+
});
|
|
37
|
+
it('execute classes array types', () => {
|
|
38
|
+
const ctx = new RenderContext(execute_msg_for__empty);
|
|
39
|
+
expectCode(createExecuteClass(ctx, 'SG721Client', 'SG721Instance', null, execute_msg_for__empty));
|
|
40
|
+
});
|
|
41
|
+
it('execute interfaces no extends', () => {
|
|
42
|
+
const ctx = new RenderContext(execute_msg_for__empty);
|
|
43
|
+
expectCode(createExecuteInterface(ctx, 'SG721Instance', null, execute_msg_for__empty));
|
|
44
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import deepmerge from "deepmerge"; /// Plugin Types
|
|
3
|
+
|
|
4
|
+
export const defaultOptions = {
|
|
5
|
+
reactQuery: {
|
|
6
|
+
optionalClient: false,
|
|
7
|
+
v4: false,
|
|
8
|
+
mutations: false,
|
|
9
|
+
camelize: true
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
export class RenderContext {
|
|
13
|
+
constructor(schema, options) {
|
|
14
|
+
_defineProperty(this, "schema", void 0);
|
|
15
|
+
|
|
16
|
+
this.schema = schema;
|
|
17
|
+
this.options = deepmerge(defaultOptions, options ?? {});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
refLookup($ref) {
|
|
21
|
+
const refName = $ref.replace('#/definitions/', '');
|
|
22
|
+
return this.schema.definitions?.[refName];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './context';
|
|
@@ -1,51 +1,26 @@
|
|
|
1
1
|
import * as t from '@babel/types';
|
|
2
2
|
import { camel } from 'case';
|
|
3
|
-
import { bindMethod, typedIdentifier, classDeclaration, classProperty, arrowFunctionExpression, getMessageProperties } from '
|
|
4
|
-
import { createTypedObjectParams } from '
|
|
5
|
-
import { identifier
|
|
3
|
+
import { bindMethod, typedIdentifier, classDeclaration, classProperty, arrowFunctionExpression, getMessageProperties } from '../utils';
|
|
4
|
+
import { createTypedObjectParams } from '../utils/types';
|
|
5
|
+
import { identifier } from '../utils/babel';
|
|
6
|
+
import { getWasmMethodArgs } from '../client/client';
|
|
6
7
|
|
|
7
|
-
const createWasmExecMethodPartial = jsonschema => {
|
|
8
|
+
const createWasmExecMethodPartial = (context, jsonschema) => {
|
|
8
9
|
const underscoreName = Object.keys(jsonschema.properties)[0];
|
|
9
10
|
const methodName = camel(underscoreName);
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
return t.objectProperty(t.identifier(prop), t.identifier(camel(prop)), false, prop === camel(prop));
|
|
14
|
-
});
|
|
15
|
-
const constantParams = [// t.assignmentPattern(
|
|
16
|
-
// identifier(
|
|
17
|
-
// 'fee',
|
|
18
|
-
// t.tsTypeAnnotation(
|
|
19
|
-
// t.tsUnionType(
|
|
20
|
-
// [
|
|
21
|
-
// t.tSNumberKeyword(),
|
|
22
|
-
// t.tsTypeReference(
|
|
23
|
-
// t.identifier('StdFee')
|
|
24
|
-
// ),
|
|
25
|
-
// t.tsLiteralType(
|
|
26
|
-
// t.stringLiteral('auto')
|
|
27
|
-
// )
|
|
28
|
-
// ]
|
|
29
|
-
// )
|
|
30
|
-
// ),
|
|
31
|
-
// false
|
|
32
|
-
// ),
|
|
33
|
-
// t.stringLiteral('auto')
|
|
34
|
-
// ),
|
|
35
|
-
// identifier('memo', t.tsTypeAnnotation(
|
|
36
|
-
// t.tsStringKeyword()
|
|
37
|
-
// ), true),
|
|
38
|
-
identifier('funds', t.tsTypeAnnotation(tsTypeOperator(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
|
11
|
+
const obj = createTypedObjectParams(context, jsonschema.properties[underscoreName]);
|
|
12
|
+
const args = getWasmMethodArgs(context, jsonschema.properties[underscoreName]);
|
|
13
|
+
const constantParams = [identifier('funds', t.tsTypeAnnotation(t.tsArrayType(t.tsTypeReference(t.identifier('Coin')))), true)];
|
|
39
14
|
return t.classProperty(t.identifier(methodName), arrowFunctionExpression(obj ? [// props
|
|
40
15
|
obj, ...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
|
|
41
16
|
t.tsTypeAnnotation(t.tsTypeReference(t.identifier('MsgExecuteContractEncodeObject'))), false));
|
|
42
17
|
};
|
|
43
18
|
|
|
44
|
-
export const createFromPartialClass = (className, implementsClassName, execMsg) => {
|
|
19
|
+
export const createFromPartialClass = (context, className, implementsClassName, execMsg) => {
|
|
45
20
|
const propertyNames = getMessageProperties(execMsg).map(method => Object.keys(method.properties)?.[0]).filter(Boolean);
|
|
46
21
|
const bindings = propertyNames.map(camel).map(bindMethod);
|
|
47
22
|
const methods = getMessageProperties(execMsg).map(schema => {
|
|
48
|
-
return createWasmExecMethodPartial(schema);
|
|
23
|
+
return createWasmExecMethodPartial(context, schema);
|
|
49
24
|
});
|
|
50
25
|
const blockStmt = [];
|
|
51
26
|
[].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'))), ...bindings]);
|
|
@@ -54,37 +29,21 @@ export const createFromPartialClass = (className, implementsClassName, execMsg)
|
|
|
54
29
|
classProperty('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword())), // constructor
|
|
55
30
|
t.classMethod('constructor', t.identifier('constructor'), [typedIdentifier('sender', t.tsTypeAnnotation(t.tsStringKeyword())), typedIdentifier('contractAddress', t.tsTypeAnnotation(t.tsStringKeyword()))], t.blockStatement(blockStmt)), ...methods], [t.tSExpressionWithTypeArguments(t.identifier(implementsClassName))], null));
|
|
56
31
|
};
|
|
57
|
-
export const createFromPartialInterface = (className, execMsg) => {
|
|
32
|
+
export const createFromPartialInterface = (context, className, execMsg) => {
|
|
58
33
|
const methods = getMessageProperties(execMsg).map(jsonschema => {
|
|
59
34
|
const underscoreName = Object.keys(jsonschema.properties)[0];
|
|
60
35
|
const methodName = camel(underscoreName);
|
|
61
|
-
return createPropertyFunctionWithObjectParamsForPartial(methodName, 'MsgExecuteContractEncodeObject', jsonschema.properties[underscoreName]);
|
|
36
|
+
return createPropertyFunctionWithObjectParamsForPartial(context, methodName, 'MsgExecuteContractEncodeObject', jsonschema.properties[underscoreName]);
|
|
62
37
|
});
|
|
63
38
|
const extendsAst = [];
|
|
64
39
|
return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(className), null, extendsAst, t.tSInterfaceBody([// contract address
|
|
65
40
|
t.tSPropertySignature(t.identifier('contractAddress'), t.tsTypeAnnotation(t.tsStringKeyword())), // contract address
|
|
66
41
|
t.tSPropertySignature(t.identifier('sender'), t.tsTypeAnnotation(t.tsStringKeyword())), ...methods])));
|
|
67
|
-
};
|
|
42
|
+
};
|
|
68
43
|
|
|
69
|
-
const createPropertyFunctionWithObjectParamsForPartial = (methodName, responseType, jsonschema) => {
|
|
70
|
-
const obj = createTypedObjectParams(jsonschema);
|
|
71
|
-
const fixedParams = [
|
|
72
|
-
// t.tsUnionType(
|
|
73
|
-
// [
|
|
74
|
-
// t.tsNumberKeyword(),
|
|
75
|
-
// t.tsTypeReference(
|
|
76
|
-
// t.identifier('StdFee')
|
|
77
|
-
// ),
|
|
78
|
-
// t.tsLiteralType(
|
|
79
|
-
// t.stringLiteral('auto')
|
|
80
|
-
// )
|
|
81
|
-
// ]
|
|
82
|
-
// )
|
|
83
|
-
// ), true),
|
|
84
|
-
// identifier('memo', t.tsTypeAnnotation(
|
|
85
|
-
// t.tsStringKeyword()
|
|
86
|
-
// ), true),
|
|
87
|
-
identifier('funds', t.tsTypeAnnotation(tsTypeOperator(t.tsArrayType(t.tsTypeReference(t.identifier('Coin'))), 'readonly')), true)];
|
|
44
|
+
const createPropertyFunctionWithObjectParamsForPartial = (context, methodName, responseType, jsonschema) => {
|
|
45
|
+
const obj = createTypedObjectParams(context, jsonschema);
|
|
46
|
+
const fixedParams = [identifier('funds', t.tsTypeAnnotation(t.tsArrayType(t.tsTypeReference(t.identifier('Coin')))), true)];
|
|
88
47
|
const func = {
|
|
89
48
|
type: 'TSFunctionType',
|
|
90
49
|
typeAnnotation: t.tsTypeAnnotation(t.tsTypeReference(t.identifier(responseType))),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import execute_msg from '../../../../__fixtures__/basic/execute_msg_for__empty.json';
|
|
2
|
+
import { createFromPartialClass, createFromPartialInterface } from './from-partial';
|
|
3
|
+
import { RenderContext } from '../context';
|
|
4
|
+
import { expectCode } from '../../test-utils';
|
|
5
|
+
it('execute classes', () => {
|
|
6
|
+
const ctx = new RenderContext(execute_msg);
|
|
7
|
+
expectCode(createFromPartialClass(ctx, 'SG721MessageComposer', 'SG721Message', execute_msg));
|
|
8
|
+
});
|
|
9
|
+
it('createFromPartialInterface', () => {
|
|
10
|
+
const ctx = new RenderContext(execute_msg);
|
|
11
|
+
expectCode(createFromPartialInterface(ctx, 'SG721Message', execute_msg));
|
|
12
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './from-partial';
|
package/module/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './utils';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './client';
|
|
3
|
+
export * from './context';
|
|
3
4
|
export * from './recoil';
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './react-query';
|
|
5
|
+
export * from './from-partial';
|
|
6
|
+
export * from './react-query';
|
|
7
|
+
export * from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './react-query';
|
|
@@ -1,29 +1,16 @@
|
|
|
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
|
-
|
|
7
1
|
import * as t from '@babel/types';
|
|
8
2
|
import { camel, pascal } from 'case';
|
|
9
|
-
import { callExpression, getMessageProperties, identifier, tsObjectPattern, tsPropertySignature } from '
|
|
10
|
-
import { omitTypeReference, optionalConditionalExpression, propertySignature, shorthandProperty, typeRefOrOptionalUnion } from '
|
|
11
|
-
import { getParamsTypeAnnotation, getPropertyType
|
|
12
|
-
import { FIXED_EXECUTE_PARAMS } from '
|
|
13
|
-
|
|
14
|
-
const DEFAULT_OPTIONS = {
|
|
15
|
-
optionalClient: false,
|
|
16
|
-
v4: false,
|
|
17
|
-
mutations: false
|
|
18
|
-
};
|
|
3
|
+
import { callExpression, getMessageProperties, identifier, tsObjectPattern, tsPropertySignature } from '../utils';
|
|
4
|
+
import { omitTypeReference, optionalConditionalExpression, propertySignature, shorthandProperty, typeRefOrOptionalUnion } from '../utils/babel';
|
|
5
|
+
import { getParamsTypeAnnotation, getPropertyType } from '../utils/types';
|
|
6
|
+
import { FIXED_EXECUTE_PARAMS } from '../client';
|
|
19
7
|
export const createReactQueryHooks = ({
|
|
8
|
+
context,
|
|
20
9
|
queryMsg,
|
|
21
10
|
contractName,
|
|
22
|
-
QueryClient
|
|
23
|
-
options = {}
|
|
11
|
+
QueryClient
|
|
24
12
|
}) => {
|
|
25
|
-
|
|
26
|
-
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
|
13
|
+
const options = context.options.reactQuery;
|
|
27
14
|
return getMessageProperties(queryMsg).reduce((m, schema) => {
|
|
28
15
|
const underscoreName = Object.keys(schema.properties)[0];
|
|
29
16
|
const methodName = camel(underscoreName);
|
|
@@ -33,33 +20,33 @@ export const createReactQueryHooks = ({
|
|
|
33
20
|
const getterKey = camel(`${contractName}${pascal(methodName)}`);
|
|
34
21
|
const jsonschema = schema.properties[underscoreName];
|
|
35
22
|
return [createReactQueryHookInterface({
|
|
23
|
+
context,
|
|
36
24
|
hookParamsTypeName,
|
|
37
25
|
responseType,
|
|
38
26
|
QueryClient,
|
|
39
27
|
jsonschema,
|
|
40
28
|
options
|
|
41
29
|
}), createReactQueryHook({
|
|
30
|
+
context,
|
|
42
31
|
methodName,
|
|
43
32
|
hookName,
|
|
44
33
|
hookParamsTypeName,
|
|
45
34
|
responseType,
|
|
46
35
|
hookKeyName: getterKey,
|
|
47
|
-
jsonschema
|
|
48
|
-
options
|
|
36
|
+
jsonschema
|
|
49
37
|
}), ...m];
|
|
50
38
|
}, []);
|
|
51
39
|
};
|
|
52
40
|
export const createReactQueryHook = ({
|
|
41
|
+
context,
|
|
53
42
|
hookName,
|
|
54
43
|
hookParamsTypeName,
|
|
55
44
|
responseType,
|
|
56
45
|
hookKeyName,
|
|
57
46
|
methodName,
|
|
58
|
-
jsonschema
|
|
59
|
-
options = {}
|
|
47
|
+
jsonschema
|
|
60
48
|
}) => {
|
|
61
|
-
|
|
62
|
-
options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);
|
|
49
|
+
const options = context.options.reactQuery;
|
|
63
50
|
const keys = Object.keys(jsonschema.properties ?? {});
|
|
64
51
|
let args = [];
|
|
65
52
|
|
|
@@ -98,6 +85,7 @@ export interface Cw4UpdateMembersMutation {
|
|
|
98
85
|
```
|
|
99
86
|
*/
|
|
100
87
|
export const createReactQueryMutationArgsInterface = ({
|
|
88
|
+
context,
|
|
101
89
|
ExecuteClient,
|
|
102
90
|
mutationHookParamsTypeName,
|
|
103
91
|
useMutationTypeParameter,
|
|
@@ -105,21 +93,11 @@ export const createReactQueryMutationArgsInterface = ({
|
|
|
105
93
|
}) => {
|
|
106
94
|
const typedUseMutationOptions = t.tsTypeReference(t.identifier('UseMutationOptions'), useMutationTypeParameter);
|
|
107
95
|
const body = [tsPropertySignature(t.identifier('client'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier(ExecuteClient))), false)];
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (!msgType && jsonschema?.$ref?.startsWith('#/definitions/')) {
|
|
111
|
-
let refName = jsonschema?.$ref;
|
|
112
|
-
|
|
113
|
-
if (/_for_[A-Z]/.test(refName)) {
|
|
114
|
-
refName = refName.replace(/_for_/, 'For');
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
msgType = t.tsTypeAnnotation(getTypeFromRef(refName));
|
|
118
|
-
}
|
|
96
|
+
const msgType = getParamsTypeAnnotation(context, jsonschema);
|
|
119
97
|
|
|
120
98
|
if (msgType) {
|
|
121
99
|
body.push(t.tsPropertySignature(t.identifier('msg'), msgType));
|
|
122
|
-
} // fee: number | StdFee | "auto" = "auto", memo?: string, funds?:
|
|
100
|
+
} // fee: number | StdFee | "auto" = "auto", memo?: string, funds?: Coin[]
|
|
123
101
|
|
|
124
102
|
|
|
125
103
|
const optionalArgs = t.tsPropertySignature(t.identifier('args'), t.tsTypeAnnotation(t.tsTypeLiteral(FIXED_EXECUTE_PARAMS.map(param => propertySignature(param.name, param.typeAnnotation, param.optional)))));
|
|
@@ -128,10 +106,10 @@ export const createReactQueryMutationArgsInterface = ({
|
|
|
128
106
|
return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(mutationHookParamsTypeName), null, [], t.tsInterfaceBody(body)));
|
|
129
107
|
};
|
|
130
108
|
export const createReactQueryMutationHooks = ({
|
|
109
|
+
context,
|
|
131
110
|
execMsg,
|
|
132
111
|
contractName,
|
|
133
|
-
ExecuteClient
|
|
134
|
-
options = {}
|
|
112
|
+
ExecuteClient
|
|
135
113
|
}) => {
|
|
136
114
|
// merge the user options with the defaults
|
|
137
115
|
return getMessageProperties(execMsg).reduce((m, schema) => {
|
|
@@ -150,11 +128,13 @@ export const createReactQueryMutationHooks = ({
|
|
|
150
128
|
|
|
151
129
|
const useMutationTypeParameter = generateMutationTypeParameter(mutationHookParamsTypeName, hasMsg);
|
|
152
130
|
return [createReactQueryMutationArgsInterface({
|
|
131
|
+
context,
|
|
153
132
|
mutationHookParamsTypeName,
|
|
154
133
|
ExecuteClient,
|
|
155
134
|
jsonschema,
|
|
156
135
|
useMutationTypeParameter
|
|
157
136
|
}), createReactQueryMutationHook({
|
|
137
|
+
context,
|
|
158
138
|
execMethodName,
|
|
159
139
|
mutationHookName,
|
|
160
140
|
mutationHookParamsTypeName,
|
|
@@ -186,6 +166,7 @@ export const useCw4UpdateMembersMutation = ({ client, options }: Omit<Cw4UpdateM
|
|
|
186
166
|
```
|
|
187
167
|
*/
|
|
188
168
|
export const createReactQueryMutationHook = ({
|
|
169
|
+
context,
|
|
189
170
|
mutationHookName,
|
|
190
171
|
mutationHookParamsTypeName,
|
|
191
172
|
execMethodName,
|
|
@@ -199,17 +180,17 @@ export const createReactQueryMutationHook = ({
|
|
|
199
180
|
), t.identifier('options')], useMutationTypeParameter))])));
|
|
200
181
|
};
|
|
201
182
|
export const createReactQueryHookInterface = ({
|
|
183
|
+
context,
|
|
202
184
|
QueryClient,
|
|
203
185
|
hookParamsTypeName,
|
|
204
186
|
responseType,
|
|
205
|
-
jsonschema
|
|
206
|
-
options = {}
|
|
187
|
+
jsonschema
|
|
207
188
|
}) => {
|
|
208
189
|
// merge the user options with the defaults
|
|
209
|
-
options =
|
|
190
|
+
const options = context.options.reactQuery;
|
|
210
191
|
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()])))]));
|
|
211
192
|
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([omitTypeReference(typedUseQueryOptions, "'queryKey' | 'queryFn' | 'initialData'"), t.tSTypeLiteral([t.tsPropertySignature(t.identifier('initialData?'), t.tsTypeAnnotation(t.tsUndefinedKeyword()))])]) : typedUseQueryOptions), true)];
|
|
212
|
-
const props = getProps(
|
|
193
|
+
const props = getProps(context, jsonschema);
|
|
213
194
|
|
|
214
195
|
if (props.length) {
|
|
215
196
|
body.push(t.tsPropertySignature(t.identifier('args'), t.tsTypeAnnotation(t.tsTypeLiteral(props))));
|
|
@@ -218,19 +199,19 @@ export const createReactQueryHookInterface = ({
|
|
|
218
199
|
return t.exportNamedDeclaration(t.tsInterfaceDeclaration(t.identifier(hookParamsTypeName), null, [], t.tsInterfaceBody(body)));
|
|
219
200
|
};
|
|
220
201
|
|
|
221
|
-
const getProps = (
|
|
202
|
+
const getProps = (context, jsonschema) => {
|
|
222
203
|
const keys = Object.keys(jsonschema.properties ?? {});
|
|
223
204
|
if (!keys.length) return [];
|
|
224
205
|
return keys.map(prop => {
|
|
225
206
|
const {
|
|
226
207
|
type,
|
|
227
208
|
optional
|
|
228
|
-
} = getPropertyType(jsonschema, prop);
|
|
229
|
-
return propertySignature(camelize ? camel(prop) : prop, t.tsTypeAnnotation(type), optional);
|
|
209
|
+
} = getPropertyType(context, jsonschema, prop);
|
|
210
|
+
return propertySignature(context.options.reactQuery.camelize ? camel(prop) : prop, t.tsTypeAnnotation(type), optional);
|
|
230
211
|
});
|
|
231
212
|
};
|
|
232
213
|
|
|
233
|
-
|
|
214
|
+
const generateUseQueryQueryKey = (hookKeyName, props, optionalClient) => {
|
|
234
215
|
const queryKey = [t.stringLiteral(hookKeyName), t.optionalMemberExpression(t.identifier('client'), t.identifier('contractAddress'), false, optionalClient)];
|
|
235
216
|
|
|
236
217
|
if (props.includes('args')) {
|
|
@@ -238,4 +219,4 @@ function generateUseQueryQueryKey(hookKeyName, props, optionalClient) {
|
|
|
238
219
|
}
|
|
239
220
|
|
|
240
221
|
return queryKey;
|
|
241
|
-
}
|
|
222
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
import query_msg from '../../../../__fixtures__/basic/query_msg.json';
|
|
3
|
+
import execute_msg from '../../../../__fixtures__/basic/execute_msg_for__empty.json';
|
|
4
|
+
import { RenderContext } from '../context';
|
|
5
|
+
import { createReactQueryHooks, createReactQueryMutationHooks } from './react-query';
|
|
6
|
+
import { expectCode } from '../../test-utils';
|
|
7
|
+
const execCtx = new RenderContext(execute_msg);
|
|
8
|
+
const queryCtx = new RenderContext(query_msg);
|
|
9
|
+
it('createReactQueryHooks', () => {
|
|
10
|
+
expectCode(t.program(createReactQueryHooks({
|
|
11
|
+
context: queryCtx,
|
|
12
|
+
queryMsg: query_msg,
|
|
13
|
+
contractName: 'Sg721',
|
|
14
|
+
QueryClient: 'Sg721QueryClient'
|
|
15
|
+
})));
|
|
16
|
+
expectCode(t.program(createReactQueryHooks({
|
|
17
|
+
context: new RenderContext(query_msg, {
|
|
18
|
+
reactQuery: {
|
|
19
|
+
optionalClient: true
|
|
20
|
+
}
|
|
21
|
+
}),
|
|
22
|
+
queryMsg: query_msg,
|
|
23
|
+
contractName: 'Sg721',
|
|
24
|
+
QueryClient: 'Sg721QueryClient'
|
|
25
|
+
})));
|
|
26
|
+
expectCode(t.program(createReactQueryHooks({
|
|
27
|
+
context: new RenderContext(query_msg, {
|
|
28
|
+
reactQuery: {
|
|
29
|
+
v4: true
|
|
30
|
+
}
|
|
31
|
+
}),
|
|
32
|
+
queryMsg: query_msg,
|
|
33
|
+
contractName: 'Sg721',
|
|
34
|
+
QueryClient: 'Sg721QueryClient'
|
|
35
|
+
})));
|
|
36
|
+
expectCode(t.program(createReactQueryHooks({
|
|
37
|
+
context: new RenderContext(query_msg, {
|
|
38
|
+
reactQuery: {
|
|
39
|
+
optionalClient: true,
|
|
40
|
+
v4: true
|
|
41
|
+
}
|
|
42
|
+
}),
|
|
43
|
+
queryMsg: query_msg,
|
|
44
|
+
contractName: 'Sg721',
|
|
45
|
+
QueryClient: 'Sg721QueryClient'
|
|
46
|
+
})));
|
|
47
|
+
expectCode(t.program(createReactQueryMutationHooks({
|
|
48
|
+
context: execCtx,
|
|
49
|
+
execMsg: execute_msg,
|
|
50
|
+
contractName: 'Sg721',
|
|
51
|
+
ExecuteClient: 'Sg721Client'
|
|
52
|
+
})));
|
|
53
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './recoil';
|
|
@@ -1,31 +1,17 @@
|
|
|
1
1
|
import * as t from '@babel/types';
|
|
2
2
|
import { camel, pascal } from 'case';
|
|
3
|
-
import { callExpression, getMessageProperties } from '
|
|
4
|
-
export const
|
|
5
|
-
const underscoreName = Object.keys(jsonschema.properties)[0];
|
|
6
|
-
const methodName = camel(underscoreName);
|
|
7
|
-
const responseType = pascal(`${methodName}Response`);
|
|
8
|
-
const properties = jsonschema.properties[underscoreName].properties ?? {};
|
|
9
|
-
|
|
10
|
-
if (Object.keys(properties).length > 0) {} else {}
|
|
11
|
-
};
|
|
12
|
-
export const createRecoilSelector = (keyPrefix, QueryClient, methodName) => {
|
|
13
|
-
// const propertyNames = getMessageProperties(queryMsg)
|
|
14
|
-
// .map(method => Object.keys(method.properties)?.[0])
|
|
15
|
-
// .filter(Boolean);
|
|
16
|
-
// const methods = getMessageProperties(queryMsg)
|
|
17
|
-
// .map(schema => createWasmRecoilMethod(schema))
|
|
3
|
+
import { callExpression, getMessageProperties } from '../utils';
|
|
4
|
+
export const createRecoilSelector = (context, keyPrefix, QueryClient, methodName) => {
|
|
18
5
|
const selectorName = camel(`${methodName}Selector`);
|
|
19
6
|
const responseType = pascal(`${methodName}Response`);
|
|
20
7
|
const getterKey = camel(`${keyPrefix}${pascal(methodName)}`);
|
|
21
|
-
return t.exportNamedDeclaration(t.variableDeclaration('const', [t.variableDeclarator(t.identifier(selectorName), callExpression(t.identifier('selectorFamily'), [t.objectExpression([t.objectProperty(t.identifier('key'), t.stringLiteral(getterKey)), t.objectProperty(t.identifier('get'), t.arrowFunctionExpression([t.objectPattern([t.objectProperty(t.identifier('params'), t.identifier('params'), false, true), t.restElement(t.identifier('queryClientParams'))])], t.arrowFunctionExpression([t.objectPattern([t.objectProperty(t.identifier('get'), t.identifier('get'), false, true)])], t.blockStatement([t.variableDeclaration('const', [t.variableDeclarator(t.identifier('client'), t.callExpression(t.identifier('get'), [t.callExpression(t.identifier('queryClient'), [t.identifier('queryClientParams')])]))]), t.returnStatement(t.awaitExpression(t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), [
|
|
22
|
-
t.spreadElement(t.identifier('params'))])))]), true)))])], t.tsTypeParameterInstantiation([t.tsTypeReference(t.identifier(responseType)), t.tsIntersectionType([t.tsTypeReference(t.identifier('QueryClientParams')), t.tsTypeLiteral([t.tsPropertySignature(t.identifier('params'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Parameters'), t.tsTypeParameterInstantiation([t.tsIndexedAccessType(t.tsTypeReference(t.identifier(QueryClient)), t.tsLiteralType(t.stringLiteral(methodName)))]))))])])])))]));
|
|
8
|
+
return t.exportNamedDeclaration(t.variableDeclaration('const', [t.variableDeclarator(t.identifier(selectorName), callExpression(t.identifier('selectorFamily'), [t.objectExpression([t.objectProperty(t.identifier('key'), t.stringLiteral(getterKey)), t.objectProperty(t.identifier('get'), t.arrowFunctionExpression([t.objectPattern([t.objectProperty(t.identifier('params'), t.identifier('params'), false, true), t.restElement(t.identifier('queryClientParams'))])], t.arrowFunctionExpression([t.objectPattern([t.objectProperty(t.identifier('get'), t.identifier('get'), false, true)])], t.blockStatement([t.variableDeclaration('const', [t.variableDeclarator(t.identifier('client'), t.callExpression(t.identifier('get'), [t.callExpression(t.identifier('queryClient'), [t.identifier('queryClientParams')])]))]), t.returnStatement(t.awaitExpression(t.callExpression(t.memberExpression(t.identifier('client'), t.identifier(methodName)), [t.spreadElement(t.identifier('params'))])))]), true)))])], t.tsTypeParameterInstantiation([t.tsTypeReference(t.identifier(responseType)), t.tsIntersectionType([t.tsTypeReference(t.identifier('QueryClientParams')), t.tsTypeLiteral([t.tsPropertySignature(t.identifier('params'), t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Parameters'), t.tsTypeParameterInstantiation([t.tsIndexedAccessType(t.tsTypeReference(t.identifier(QueryClient)), t.tsLiteralType(t.stringLiteral(methodName)))]))))])])])))]));
|
|
23
9
|
};
|
|
24
|
-
export const createRecoilSelectors = (keyPrefix, QueryClient, queryMsg) => {
|
|
10
|
+
export const createRecoilSelectors = (context, keyPrefix, QueryClient, queryMsg) => {
|
|
25
11
|
return getMessageProperties(queryMsg).map(schema => {
|
|
26
12
|
const underscoreName = Object.keys(schema.properties)[0];
|
|
27
13
|
const methodName = camel(underscoreName);
|
|
28
|
-
return createRecoilSelector(keyPrefix, QueryClient, methodName);
|
|
14
|
+
return createRecoilSelector(context, keyPrefix, QueryClient, methodName);
|
|
29
15
|
});
|
|
30
16
|
};
|
|
31
17
|
export const createRecoilQueryClientType = () => ({
|
|
@@ -52,7 +38,7 @@ export const createRecoilQueryClientType = () => ({
|
|
|
52
38
|
}]
|
|
53
39
|
}
|
|
54
40
|
});
|
|
55
|
-
export const createRecoilQueryClient = (keyPrefix, QueryClient) => {
|
|
41
|
+
export const createRecoilQueryClient = (context, keyPrefix, QueryClient) => {
|
|
56
42
|
const getterKey = camel(`${keyPrefix}${'QueryClient'}`);
|
|
57
43
|
return t.exportNamedDeclaration(t.variableDeclaration('const', [t.variableDeclarator(t.identifier('queryClient'), callExpression(t.identifier('selectorFamily'), [t.objectExpression([t.objectProperty(t.identifier('key'), t.stringLiteral(getterKey)), t.objectProperty(t.identifier('get'), t.arrowFunctionExpression([t.objectPattern([t.objectProperty(t.identifier('contractAddress'), t.identifier('contractAddress'), false, true)])], t.arrowFunctionExpression([t.objectPattern([t.objectProperty(t.identifier('get'), t.identifier('get'), false, true)])], t.blockStatement([t.variableDeclaration('const', [t.variableDeclarator(t.identifier('client'), t.callExpression(t.identifier('get'), [t.identifier('cosmWasmClient')]))]), t.returnStatement(t.newExpression(t.identifier(QueryClient), [t.identifier('client'), t.identifier('contractAddress')]))]), false)))])], t.tsTypeParameterInstantiation([t.tsTypeReference(t.identifier(QueryClient)), t.tsTypeReference(t.identifier('QueryClientParams'))])))]));
|
|
58
44
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
import query_msg from '../../../../__fixtures__/basic/query_msg.json';
|
|
3
|
+
import { createRecoilSelector, createRecoilSelectors, createRecoilQueryClient } from './recoil';
|
|
4
|
+
import { RenderContext } from '../context';
|
|
5
|
+
import { expectCode } from '../../test-utils';
|
|
6
|
+
const ctx = new RenderContext(query_msg);
|
|
7
|
+
it('selector', () => {
|
|
8
|
+
expectCode(createRecoilSelector(ctx, 'SG721', 'SG721QueryClient', 'governanceModules'));
|
|
9
|
+
});
|
|
10
|
+
it('selectors', () => {
|
|
11
|
+
expectCode(t.program(createRecoilSelectors(ctx, 'SG721', 'SG721QueryClient', query_msg)));
|
|
12
|
+
});
|
|
13
|
+
it('client', () => {
|
|
14
|
+
expectCode(createRecoilQueryClient(ctx, 'SG721', 'SG721QueryClient'));
|
|
15
|
+
});
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { importStmt } from './babel';
|
|
2
|
-
import generate from '@babel/generator';
|
|
3
2
|
import * as t from '@babel/types';
|
|
4
3
|
import { bindMethod, typedIdentifier, promiseTypeAnnotation, classDeclaration, classProperty, arrowFunctionExpression } from './babel';
|
|
5
|
-
|
|
6
|
-
const expectCode = ast => {
|
|
7
|
-
expect(generate(ast).code).toMatchSnapshot();
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const printCode = ast => {
|
|
11
|
-
console.log(generate(ast).code);
|
|
12
|
-
};
|
|
13
|
-
|
|
4
|
+
import { expectCode } from '../../test-utils';
|
|
14
5
|
it('top import', async () => {
|
|
15
6
|
expectCode(importStmt(['CosmWasmClient', 'ExecuteResult', 'SigningCosmWasmClient'], '@cosmjs/cosmwasm-stargate'));
|
|
16
7
|
});
|
package/module/utils/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from './babel';
|
|
1
|
+
export * from './babel';
|
|
2
|
+
export * from './types';
|