@dedot/codegen 0.15.2 → 0.15.3-next.65898ecf.10
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/chaintypes/generator/ApiGen.d.ts +1 -1
- package/chaintypes/generator/IndexGen.d.ts +3 -1
- package/chaintypes/generator/IndexGen.js +31 -6
- package/chaintypes/index.js +2 -2
- package/chaintypes/templates/index.hbs +9 -0
- package/cjs/chaintypes/generator/IndexGen.js +31 -6
- package/cjs/chaintypes/index.js +2 -2
- package/cjs/chaintypes/templates/index.hbs +9 -0
- package/package.json +10 -10
|
@@ -248,5 +248,5 @@ export declare abstract class ApiGen {
|
|
|
248
248
|
}>;
|
|
249
249
|
};
|
|
250
250
|
};
|
|
251
|
-
get registry(): import("@dedot/codecs").PortableRegistry
|
|
251
|
+
get registry(): import("@dedot/codecs").PortableRegistry<import("@dedot/types").GenericSubstrateApi<import("@dedot/types").RpcVersion>>;
|
|
252
252
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { SubstrateRuntimeVersion } from '@dedot/api';
|
|
2
|
+
import { TypesGen } from './TypesGen.js';
|
|
2
3
|
export declare class IndexGen {
|
|
3
4
|
readonly interfaceName: string;
|
|
4
5
|
readonly runtimeVersion: SubstrateRuntimeVersion;
|
|
5
|
-
|
|
6
|
+
readonly typesGen: TypesGen;
|
|
7
|
+
constructor(interfaceName: string, runtimeVersion: SubstrateRuntimeVersion, typesGen: TypesGen);
|
|
6
8
|
generate(useSubPaths?: boolean): Promise<string>;
|
|
7
9
|
}
|
|
@@ -1,22 +1,47 @@
|
|
|
1
|
-
import { TypeImports } from '../../shared/index.js';
|
|
2
1
|
import { beautifySourceCode, commentBlock, compileTemplate } from '../../utils.js';
|
|
3
2
|
export class IndexGen {
|
|
4
3
|
interfaceName;
|
|
5
4
|
runtimeVersion;
|
|
6
|
-
|
|
5
|
+
typesGen;
|
|
6
|
+
constructor(interfaceName, runtimeVersion, typesGen) {
|
|
7
7
|
this.interfaceName = interfaceName;
|
|
8
8
|
this.runtimeVersion = runtimeVersion;
|
|
9
|
+
this.typesGen = typesGen;
|
|
9
10
|
}
|
|
10
11
|
async generate(useSubPaths = false) {
|
|
11
12
|
const interfaceName = this.interfaceName;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
// Clear cache and setup type imports
|
|
14
|
+
this.typesGen.clearCache();
|
|
15
|
+
this.typesGen.typeImports.addKnownType('GenericSubstrateApi', 'GenericChainTypes', 'RpcLegacy', 'RpcV2', 'RpcVersion');
|
|
16
|
+
// Extract type IDs from metadata.extrinsic
|
|
17
|
+
const { callTypeId, addressTypeId, signatureTypeId, signedExtensions } = this.typesGen.metadata.extrinsic;
|
|
18
|
+
// Generate proper TypeScript types using typeOut format (0, true)
|
|
19
|
+
const runtimeCallType = this.typesGen.generateType(callTypeId, 1, true);
|
|
20
|
+
const addressType = this.typesGen.generateType(addressTypeId, 1, true);
|
|
21
|
+
const signatureType = this.typesGen.generateType(signatureTypeId, 1, true);
|
|
22
|
+
// Generate Extra type from signed extensions
|
|
23
|
+
let extraType = 'any[]'; // Default fallback
|
|
24
|
+
if (signedExtensions && signedExtensions.length > 0) {
|
|
25
|
+
const signedExtensionTypes = signedExtensions.map(({ typeId }) => this.typesGen.generateType(typeId, 1, true));
|
|
26
|
+
extraType = `[${signedExtensionTypes.join(', ')}]`;
|
|
27
|
+
}
|
|
28
|
+
// Add generated types to imports
|
|
29
|
+
const generatedTypes = [runtimeCallType, addressType, signatureType, extraType];
|
|
30
|
+
this.typesGen.addTypeImport(generatedTypes);
|
|
31
|
+
const importTypes = this.typesGen.typeImports.toImports({ useSubPaths });
|
|
15
32
|
const interfaceDocs = commentBlock([
|
|
16
33
|
`@name: ${interfaceName}`, // prettier-end-here
|
|
17
34
|
`@specVersion: ${this.runtimeVersion.specVersion}`,
|
|
18
35
|
]);
|
|
19
36
|
const template = compileTemplate('chaintypes/templates/index.hbs');
|
|
20
|
-
return beautifySourceCode(template({
|
|
37
|
+
return beautifySourceCode(template({
|
|
38
|
+
interfaceName,
|
|
39
|
+
interfaceDocs,
|
|
40
|
+
importTypes,
|
|
41
|
+
addressType,
|
|
42
|
+
signatureType,
|
|
43
|
+
runtimeCallType,
|
|
44
|
+
extraType,
|
|
45
|
+
}));
|
|
21
46
|
}
|
|
22
47
|
}
|
package/chaintypes/index.js
CHANGED
|
@@ -33,12 +33,12 @@ export async function generateTypes(chain, metadata, rpcMethods, runtimeVersion,
|
|
|
33
33
|
const constsGen = new ConstsGen(typesGen);
|
|
34
34
|
const queryGen = new QueryGen(typesGen);
|
|
35
35
|
const jsonRpcGen = new JsonRpcGen(typesGen, rpcMethods);
|
|
36
|
-
const indexGen = new IndexGen(interfaceName, runtimeVersion);
|
|
37
36
|
const errorsGen = new ErrorsGen(typesGen);
|
|
38
37
|
const eventsGen = new EventsGen(typesGen);
|
|
39
38
|
const runtimeApisGen = new RuntimeApisGen(typesGen, runtimeVersion.apis);
|
|
40
39
|
const txGen = new TxGen(typesGen);
|
|
41
40
|
const viewFunctionGen = new ViewFunctionsGen(typesGen);
|
|
41
|
+
const indexGen = new IndexGen(interfaceName, runtimeVersion, typesGen);
|
|
42
42
|
fs.writeFileSync(defTypesFileName, await typesGen.generate(useSubPaths));
|
|
43
43
|
fs.writeFileSync(errorsFileName, await errorsGen.generate(useSubPaths));
|
|
44
44
|
fs.writeFileSync(eventsFileName, await eventsGen.generate(useSubPaths));
|
|
@@ -46,8 +46,8 @@ export async function generateTypes(chain, metadata, rpcMethods, runtimeVersion,
|
|
|
46
46
|
fs.writeFileSync(queryTypesFileName, await queryGen.generate(useSubPaths));
|
|
47
47
|
fs.writeFileSync(constsTypesFileName, await constsGen.generate(useSubPaths));
|
|
48
48
|
fs.writeFileSync(txFileName, await txGen.generate(useSubPaths));
|
|
49
|
-
fs.writeFileSync(indexFileName, await indexGen.generate(useSubPaths));
|
|
50
49
|
fs.writeFileSync(runtimeApisFileName, await runtimeApisGen.generate(useSubPaths));
|
|
51
50
|
fs.writeFileSync(viewFunctionsFileName, await viewFunctionGen.generate(useSubPaths));
|
|
51
|
+
fs.writeFileSync(indexFileName, await indexGen.generate(useSubPaths));
|
|
52
52
|
return { interfaceName, outputFolder: dirPath };
|
|
53
53
|
}
|
|
@@ -12,6 +12,13 @@ import { ChainTx } from './tx.js';
|
|
|
12
12
|
|
|
13
13
|
export * from './types.js';
|
|
14
14
|
|
|
15
|
+
interface ChainTypes extends GenericChainTypes {
|
|
16
|
+
Address: {{{addressType}}};
|
|
17
|
+
Signature: {{{signatureType}}};
|
|
18
|
+
RuntimeCall: {{{runtimeCallType}}};
|
|
19
|
+
Extra: {{{extraType}}};
|
|
20
|
+
}
|
|
21
|
+
|
|
15
22
|
export interface Versioned{{{interfaceName}}}<Rv extends RpcVersion> extends GenericSubstrateApi<Rv> {
|
|
16
23
|
rpc: ChainJsonRpcApis<Rv>;
|
|
17
24
|
consts: ChainConsts<Rv>;
|
|
@@ -21,6 +28,8 @@ export interface Versioned{{{interfaceName}}}<Rv extends RpcVersion> extends Gen
|
|
|
21
28
|
call: RuntimeApis<Rv>;
|
|
22
29
|
view: ChainViewFunctions<Rv>;
|
|
23
30
|
tx: ChainTx<Rv>;
|
|
31
|
+
|
|
32
|
+
types: ChainTypes;
|
|
24
33
|
}
|
|
25
34
|
|
|
26
35
|
{{interfaceDocs}}export interface {{{interfaceName}}} {
|
|
@@ -1,26 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IndexGen = void 0;
|
|
4
|
-
const index_js_1 = require("../../shared/index.js");
|
|
5
4
|
const utils_js_1 = require("../../utils.js");
|
|
6
5
|
class IndexGen {
|
|
7
6
|
interfaceName;
|
|
8
7
|
runtimeVersion;
|
|
9
|
-
|
|
8
|
+
typesGen;
|
|
9
|
+
constructor(interfaceName, runtimeVersion, typesGen) {
|
|
10
10
|
this.interfaceName = interfaceName;
|
|
11
11
|
this.runtimeVersion = runtimeVersion;
|
|
12
|
+
this.typesGen = typesGen;
|
|
12
13
|
}
|
|
13
14
|
async generate(useSubPaths = false) {
|
|
14
15
|
const interfaceName = this.interfaceName;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
// Clear cache and setup type imports
|
|
17
|
+
this.typesGen.clearCache();
|
|
18
|
+
this.typesGen.typeImports.addKnownType('GenericSubstrateApi', 'GenericChainTypes', 'RpcLegacy', 'RpcV2', 'RpcVersion');
|
|
19
|
+
// Extract type IDs from metadata.extrinsic
|
|
20
|
+
const { callTypeId, addressTypeId, signatureTypeId, signedExtensions } = this.typesGen.metadata.extrinsic;
|
|
21
|
+
// Generate proper TypeScript types using typeOut format (0, true)
|
|
22
|
+
const runtimeCallType = this.typesGen.generateType(callTypeId, 1, true);
|
|
23
|
+
const addressType = this.typesGen.generateType(addressTypeId, 1, true);
|
|
24
|
+
const signatureType = this.typesGen.generateType(signatureTypeId, 1, true);
|
|
25
|
+
// Generate Extra type from signed extensions
|
|
26
|
+
let extraType = 'any[]'; // Default fallback
|
|
27
|
+
if (signedExtensions && signedExtensions.length > 0) {
|
|
28
|
+
const signedExtensionTypes = signedExtensions.map(({ typeId }) => this.typesGen.generateType(typeId, 1, true));
|
|
29
|
+
extraType = `[${signedExtensionTypes.join(', ')}]`;
|
|
30
|
+
}
|
|
31
|
+
// Add generated types to imports
|
|
32
|
+
const generatedTypes = [runtimeCallType, addressType, signatureType, extraType];
|
|
33
|
+
this.typesGen.addTypeImport(generatedTypes);
|
|
34
|
+
const importTypes = this.typesGen.typeImports.toImports({ useSubPaths });
|
|
18
35
|
const interfaceDocs = (0, utils_js_1.commentBlock)([
|
|
19
36
|
`@name: ${interfaceName}`, // prettier-end-here
|
|
20
37
|
`@specVersion: ${this.runtimeVersion.specVersion}`,
|
|
21
38
|
]);
|
|
22
39
|
const template = (0, utils_js_1.compileTemplate)('chaintypes/templates/index.hbs');
|
|
23
|
-
return (0, utils_js_1.beautifySourceCode)(template({
|
|
40
|
+
return (0, utils_js_1.beautifySourceCode)(template({
|
|
41
|
+
interfaceName,
|
|
42
|
+
interfaceDocs,
|
|
43
|
+
importTypes,
|
|
44
|
+
addressType,
|
|
45
|
+
signatureType,
|
|
46
|
+
runtimeCallType,
|
|
47
|
+
extraType,
|
|
48
|
+
}));
|
|
24
49
|
}
|
|
25
50
|
}
|
|
26
51
|
exports.IndexGen = IndexGen;
|
package/cjs/chaintypes/index.js
CHANGED
|
@@ -60,12 +60,12 @@ async function generateTypes(chain, metadata, rpcMethods, runtimeVersion, outDir
|
|
|
60
60
|
const constsGen = new index_js_1.ConstsGen(typesGen);
|
|
61
61
|
const queryGen = new index_js_1.QueryGen(typesGen);
|
|
62
62
|
const jsonRpcGen = new index_js_1.JsonRpcGen(typesGen, rpcMethods);
|
|
63
|
-
const indexGen = new index_js_1.IndexGen(interfaceName, runtimeVersion);
|
|
64
63
|
const errorsGen = new index_js_1.ErrorsGen(typesGen);
|
|
65
64
|
const eventsGen = new index_js_1.EventsGen(typesGen);
|
|
66
65
|
const runtimeApisGen = new index_js_1.RuntimeApisGen(typesGen, runtimeVersion.apis);
|
|
67
66
|
const txGen = new index_js_1.TxGen(typesGen);
|
|
68
67
|
const viewFunctionGen = new index_js_1.ViewFunctionsGen(typesGen);
|
|
68
|
+
const indexGen = new index_js_1.IndexGen(interfaceName, runtimeVersion, typesGen);
|
|
69
69
|
fs.writeFileSync(defTypesFileName, await typesGen.generate(useSubPaths));
|
|
70
70
|
fs.writeFileSync(errorsFileName, await errorsGen.generate(useSubPaths));
|
|
71
71
|
fs.writeFileSync(eventsFileName, await eventsGen.generate(useSubPaths));
|
|
@@ -73,9 +73,9 @@ async function generateTypes(chain, metadata, rpcMethods, runtimeVersion, outDir
|
|
|
73
73
|
fs.writeFileSync(queryTypesFileName, await queryGen.generate(useSubPaths));
|
|
74
74
|
fs.writeFileSync(constsTypesFileName, await constsGen.generate(useSubPaths));
|
|
75
75
|
fs.writeFileSync(txFileName, await txGen.generate(useSubPaths));
|
|
76
|
-
fs.writeFileSync(indexFileName, await indexGen.generate(useSubPaths));
|
|
77
76
|
fs.writeFileSync(runtimeApisFileName, await runtimeApisGen.generate(useSubPaths));
|
|
78
77
|
fs.writeFileSync(viewFunctionsFileName, await viewFunctionGen.generate(useSubPaths));
|
|
78
|
+
fs.writeFileSync(indexFileName, await indexGen.generate(useSubPaths));
|
|
79
79
|
return { interfaceName, outputFolder: dirPath };
|
|
80
80
|
}
|
|
81
81
|
exports.generateTypes = generateTypes;
|
|
@@ -12,6 +12,13 @@ import { ChainTx } from './tx.js';
|
|
|
12
12
|
|
|
13
13
|
export * from './types.js';
|
|
14
14
|
|
|
15
|
+
interface ChainTypes extends GenericChainTypes {
|
|
16
|
+
Address: {{{addressType}}};
|
|
17
|
+
Signature: {{{signatureType}}};
|
|
18
|
+
RuntimeCall: {{{runtimeCallType}}};
|
|
19
|
+
Extra: {{{extraType}}};
|
|
20
|
+
}
|
|
21
|
+
|
|
15
22
|
export interface Versioned{{{interfaceName}}}<Rv extends RpcVersion> extends GenericSubstrateApi<Rv> {
|
|
16
23
|
rpc: ChainJsonRpcApis<Rv>;
|
|
17
24
|
consts: ChainConsts<Rv>;
|
|
@@ -21,6 +28,8 @@ export interface Versioned{{{interfaceName}}}<Rv extends RpcVersion> extends Gen
|
|
|
21
28
|
call: RuntimeApis<Rv>;
|
|
22
29
|
view: ChainViewFunctions<Rv>;
|
|
23
30
|
tx: ChainTx<Rv>;
|
|
31
|
+
|
|
32
|
+
types: ChainTypes;
|
|
24
33
|
}
|
|
25
34
|
|
|
26
35
|
{{interfaceDocs}}export interface {{{interfaceName}}} {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dedot/codegen",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.3-next.65898ecf.10+65898ecf",
|
|
4
4
|
"description": "Generate types",
|
|
5
5
|
"author": "Thang X. Vu <thang@dedot.dev>",
|
|
6
6
|
"homepage": "https://dedot.dev",
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
"copy": "cp -R ./src/chaintypes/templates ./dist/chaintypes && cp -R ./src/chaintypes/templates ./dist/cjs/chaintypes && cp -R ./src/typink/templates ./dist/typink && cp -R ./src/typink/templates ./dist/cjs/typink"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@dedot/api": "0.15.
|
|
22
|
-
"@dedot/codecs": "0.15.
|
|
23
|
-
"@dedot/contracts": "0.15.
|
|
24
|
-
"@dedot/providers": "0.15.
|
|
25
|
-
"@dedot/runtime-specs": "0.15.
|
|
26
|
-
"@dedot/shape": "0.15.
|
|
27
|
-
"@dedot/types": "0.15.
|
|
28
|
-
"@dedot/utils": "0.15.
|
|
21
|
+
"@dedot/api": "0.15.3-next.65898ecf.10+65898ecf",
|
|
22
|
+
"@dedot/codecs": "0.15.3-next.65898ecf.10+65898ecf",
|
|
23
|
+
"@dedot/contracts": "0.15.3-next.65898ecf.10+65898ecf",
|
|
24
|
+
"@dedot/providers": "0.15.3-next.65898ecf.10+65898ecf",
|
|
25
|
+
"@dedot/runtime-specs": "0.15.3-next.65898ecf.10+65898ecf",
|
|
26
|
+
"@dedot/shape": "0.15.3-next.65898ecf.10+65898ecf",
|
|
27
|
+
"@dedot/types": "0.15.3-next.65898ecf.10+65898ecf",
|
|
28
|
+
"@dedot/utils": "0.15.3-next.65898ecf.10+65898ecf",
|
|
29
29
|
"handlebars": "^4.7.8",
|
|
30
30
|
"prettier": "^3.5.3"
|
|
31
31
|
},
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"node": ">=18"
|
|
38
38
|
},
|
|
39
39
|
"license": "Apache-2.0",
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "65898ecf2226162fc6632d3f4f64ad5fe1179643",
|
|
41
41
|
"module": "./index.js",
|
|
42
42
|
"types": "./index.d.ts",
|
|
43
43
|
"exports": {
|