@dedot/codegen 0.0.1-alpha.24 → 0.0.1-alpha.26
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/cjs/generator/RuntimeApisGen.js +13 -18
- package/cjs/generator/dirname.js +5 -0
- package/cjs/generator/utils.js +4 -9
- package/cjs/index.js +9 -9
- package/cjs/packageInfo.js +1 -1
- package/cjs/templates/consts.hbs +7 -0
- package/cjs/templates/errors.hbs +7 -0
- package/cjs/templates/events.hbs +7 -0
- package/cjs/templates/index.hbs +22 -0
- package/cjs/templates/query.hbs +7 -0
- package/cjs/templates/rpc.hbs +7 -0
- package/cjs/templates/runtime.hbs +8 -0
- package/cjs/templates/tx.hbs +9 -0
- package/cjs/templates/types.hbs +5 -0
- package/generator/RuntimeApisGen.js +13 -18
- package/generator/dirname.d.ts +1 -0
- package/generator/dirname.js +6 -0
- package/generator/utils.d.ts +0 -1
- package/generator/utils.js +3 -7
- package/index.js +9 -9
- package/package.json +10 -9
- package/packageInfo.js +1 -1
- package/templates/consts.hbs +7 -0
- package/templates/errors.hbs +7 -0
- package/templates/events.hbs +7 -0
- package/templates/index.hbs +22 -0
- package/templates/query.hbs +7 -0
- package/templates/rpc.hbs +7 -0
- package/templates/runtime.hbs +8 -0
- package/templates/tx.hbs +9 -0
- package/templates/types.hbs +5 -0
|
@@ -30,18 +30,20 @@ class RuntimeApisGen extends RpcGen_1.RpcGen {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
runtimeCallsOut += `${(0, util_1.stringCamelCase)(runtimeApiName)}: {
|
|
33
|
+
const specs = this.#targetRuntimeApiSpecs();
|
|
34
|
+
specs.forEach(({ methods, runtimeApiName, runtimeApiHash, version }) => {
|
|
35
|
+
runtimeCallsOut += (0, utils_1.commentBlock)(`@runtimeapi: ${runtimeApiName} - ${runtimeApiHash}`, `@version: ${version}`);
|
|
36
|
+
runtimeCallsOut += `${(0, util_1.stringCamelCase)(runtimeApiName)}: {
|
|
38
37
|
${Object.keys(methods)
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
.map((methodName) => this.#generateMethodDefFromSpec({
|
|
39
|
+
...methods[methodName],
|
|
40
|
+
runtimeApiName,
|
|
41
|
+
methodName,
|
|
42
|
+
}))
|
|
43
|
+
.join('\n')}
|
|
41
44
|
|
|
42
45
|
${(0, utils_1.commentBlock)('Generic runtime api call')}[method: string]: GenericRuntimeApiMethod
|
|
43
46
|
}`;
|
|
44
|
-
});
|
|
45
47
|
});
|
|
46
48
|
}
|
|
47
49
|
const importTypes = this.typesGen.typeImports.toImports();
|
|
@@ -92,7 +94,7 @@ class RuntimeApisGen extends RpcGen_1.RpcGen {
|
|
|
92
94
|
.join(', ');
|
|
93
95
|
return `${(0, utils_1.commentBlock)(docs, '\n', defaultDocs, typedInputs.map(({ type, name }) => `@param {${type}} ${name}`))}${(0, util_1.stringCamelCase)(methodName)}: GenericRuntimeApiMethod<(${paramsOut}) => Promise<${typeOut}>>`;
|
|
94
96
|
}
|
|
95
|
-
#
|
|
97
|
+
#targetRuntimeApiSpecs() {
|
|
96
98
|
const specs = this.runtimeApis.map(([runtimeApiHash, version]) => {
|
|
97
99
|
const runtimeApiSpec = (0, specs_1.findRuntimeApiSpec)(runtimeApiHash, version);
|
|
98
100
|
if (!runtimeApiSpec)
|
|
@@ -106,15 +108,8 @@ class RuntimeApisGen extends RpcGen_1.RpcGen {
|
|
|
106
108
|
if (!spec) {
|
|
107
109
|
return o;
|
|
108
110
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return o;
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
...o,
|
|
115
|
-
[moduleName]: o[moduleName] ? [...o[moduleName], spec] : [spec],
|
|
116
|
-
};
|
|
117
|
-
}, {});
|
|
111
|
+
return [...o, spec];
|
|
112
|
+
}, []);
|
|
118
113
|
}
|
|
119
114
|
}
|
|
120
115
|
exports.RuntimeApisGen = RuntimeApisGen;
|
package/cjs/generator/utils.js
CHANGED
|
@@ -26,12 +26,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.isReservedWord = exports.compileTemplate = exports.beautifySourceCode = exports.
|
|
29
|
+
exports.isReservedWord = exports.compileTemplate = exports.beautifySourceCode = exports.commentBlock = exports.TUPLE_TYPE_REGEX = exports.WRAPPER_TYPE_REGEX = void 0;
|
|
30
30
|
const fs = __importStar(require("fs"));
|
|
31
31
|
const handlebars_1 = __importDefault(require("handlebars"));
|
|
32
32
|
const path = __importStar(require("path"));
|
|
33
|
-
const process = __importStar(require("process"));
|
|
34
33
|
const prettier = __importStar(require("prettier"));
|
|
34
|
+
const dirname_1 = require("./dirname");
|
|
35
35
|
exports.WRAPPER_TYPE_REGEX = /^(\w+)<(.*)>$/;
|
|
36
36
|
exports.TUPLE_TYPE_REGEX = /^\[(.*)]$/;
|
|
37
37
|
const commentBlock = (...docs) => {
|
|
@@ -48,18 +48,13 @@ ${flatLines.map((line) => `* ${line.replaceAll(/\s+/g, ' ').trim()}`).join('\n')
|
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
exports.commentBlock = commentBlock;
|
|
51
|
-
const resolveFilePath = (relativePath) => {
|
|
52
|
-
relativePath = Array.isArray(relativePath) ? relativePath : [relativePath];
|
|
53
|
-
return path.resolve(process.cwd(), ...relativePath);
|
|
54
|
-
};
|
|
55
|
-
exports.resolveFilePath = resolveFilePath;
|
|
56
51
|
const beautifySourceCode = async (source) => {
|
|
57
|
-
const prettierOptions = await prettier.resolveConfig((0,
|
|
52
|
+
const prettierOptions = await prettier.resolveConfig(path.resolve((0, dirname_1.currentDirname)(), '../../../../.prettierrc.js'));
|
|
58
53
|
return prettier.format(source, { parser: 'babel-ts', ...prettierOptions });
|
|
59
54
|
};
|
|
60
55
|
exports.beautifySourceCode = beautifySourceCode;
|
|
61
56
|
const compileTemplate = (templateFileName) => {
|
|
62
|
-
const templateFilePath = (0,
|
|
57
|
+
const templateFilePath = path.resolve((0, dirname_1.currentDirname)(), `../templates/${templateFileName}`);
|
|
63
58
|
return handlebars_1.default.compile(fs.readFileSync(templateFilePath, 'utf8'));
|
|
64
59
|
};
|
|
65
60
|
exports.compileTemplate = compileTemplate;
|
package/cjs/index.js
CHANGED
|
@@ -42,15 +42,15 @@ async function generateTypesFromChain(network, endpoint, outDir) {
|
|
|
42
42
|
exports.generateTypesFromChain = generateTypesFromChain;
|
|
43
43
|
async function generateTypes(network, metadata, rpcMethods, runtimeApis, outDir = '.') {
|
|
44
44
|
const dirPath = path.resolve(outDir, network.chain);
|
|
45
|
-
const defTypesFileName = path.join(dirPath, `types.ts`);
|
|
46
|
-
const constsTypesFileName = path.join(dirPath, `consts.ts`);
|
|
47
|
-
const queryTypesFileName = path.join(dirPath, `query.ts`);
|
|
48
|
-
const rpcCallsFileName = path.join(dirPath, `rpc.ts`);
|
|
49
|
-
const indexFileName = path.join(dirPath, `index.ts`);
|
|
50
|
-
const errorsFileName = path.join(dirPath, `errors.ts`);
|
|
51
|
-
const eventsFileName = path.join(dirPath, `events.ts`);
|
|
52
|
-
const runtimeApisFileName = path.join(dirPath, `runtime.ts`);
|
|
53
|
-
const txFileName = path.join(dirPath, `tx.ts`);
|
|
45
|
+
const defTypesFileName = path.join(dirPath, `types.d.ts`);
|
|
46
|
+
const constsTypesFileName = path.join(dirPath, `consts.d.ts`);
|
|
47
|
+
const queryTypesFileName = path.join(dirPath, `query.d.ts`);
|
|
48
|
+
const rpcCallsFileName = path.join(dirPath, `rpc.d.ts`);
|
|
49
|
+
const indexFileName = path.join(dirPath, `index.d.ts`);
|
|
50
|
+
const errorsFileName = path.join(dirPath, `errors.d.ts`);
|
|
51
|
+
const eventsFileName = path.join(dirPath, `events.d.ts`);
|
|
52
|
+
const runtimeApisFileName = path.join(dirPath, `runtime.d.ts`);
|
|
53
|
+
const txFileName = path.join(dirPath, `tx.d.ts`);
|
|
54
54
|
if (!fs.existsSync(dirPath)) {
|
|
55
55
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
56
56
|
}
|
package/cjs/packageInfo.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
// THIS FILE IS AUTO-GENERATED, DO NOT EDIT!
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.packageInfo = void 0;
|
|
5
|
-
exports.packageInfo = { name: '@dedot/codegen', version: '0.0.1-alpha.
|
|
5
|
+
exports.packageInfo = { name: '@dedot/codegen', version: '0.0.1-alpha.25' };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Generated by @dedot/codegen
|
|
2
|
+
|
|
3
|
+
import { GenericSubstrateApi } from '@dedot/types';
|
|
4
|
+
import { ChainConsts } from './consts';
|
|
5
|
+
import { ChainStorage } from './query';
|
|
6
|
+
import { RpcCalls } from './rpc';
|
|
7
|
+
import { ChainErrors } from './errors';
|
|
8
|
+
import { ChainEvents } from './events';
|
|
9
|
+
import { RuntimeApis } from './runtime';
|
|
10
|
+
import { ChainTx } from './tx';
|
|
11
|
+
|
|
12
|
+
export * from './types';
|
|
13
|
+
|
|
14
|
+
export interface {{{interfaceName}}}Api extends GenericSubstrateApi {
|
|
15
|
+
rpc: RpcCalls;
|
|
16
|
+
consts: ChainConsts;
|
|
17
|
+
query: ChainStorage;
|
|
18
|
+
errors: ChainErrors;
|
|
19
|
+
events: ChainEvents;
|
|
20
|
+
call: RuntimeApis;
|
|
21
|
+
tx: ChainTx;
|
|
22
|
+
}
|
|
@@ -27,18 +27,20 @@ export class RuntimeApisGen extends RpcGen {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
else {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
runtimeCallsOut += `${stringCamelCase(runtimeApiName)}: {
|
|
30
|
+
const specs = this.#targetRuntimeApiSpecs();
|
|
31
|
+
specs.forEach(({ methods, runtimeApiName, runtimeApiHash, version }) => {
|
|
32
|
+
runtimeCallsOut += commentBlock(`@runtimeapi: ${runtimeApiName} - ${runtimeApiHash}`, `@version: ${version}`);
|
|
33
|
+
runtimeCallsOut += `${stringCamelCase(runtimeApiName)}: {
|
|
35
34
|
${Object.keys(methods)
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
.map((methodName) => this.#generateMethodDefFromSpec({
|
|
36
|
+
...methods[methodName],
|
|
37
|
+
runtimeApiName,
|
|
38
|
+
methodName,
|
|
39
|
+
}))
|
|
40
|
+
.join('\n')}
|
|
38
41
|
|
|
39
42
|
${commentBlock('Generic runtime api call')}[method: string]: GenericRuntimeApiMethod
|
|
40
43
|
}`;
|
|
41
|
-
});
|
|
42
44
|
});
|
|
43
45
|
}
|
|
44
46
|
const importTypes = this.typesGen.typeImports.toImports();
|
|
@@ -89,7 +91,7 @@ export class RuntimeApisGen extends RpcGen {
|
|
|
89
91
|
.join(', ');
|
|
90
92
|
return `${commentBlock(docs, '\n', defaultDocs, typedInputs.map(({ type, name }) => `@param {${type}} ${name}`))}${stringCamelCase(methodName)}: GenericRuntimeApiMethod<(${paramsOut}) => Promise<${typeOut}>>`;
|
|
91
93
|
}
|
|
92
|
-
#
|
|
94
|
+
#targetRuntimeApiSpecs() {
|
|
93
95
|
const specs = this.runtimeApis.map(([runtimeApiHash, version]) => {
|
|
94
96
|
const runtimeApiSpec = findRuntimeApiSpec(runtimeApiHash, version);
|
|
95
97
|
if (!runtimeApiSpec)
|
|
@@ -103,14 +105,7 @@ export class RuntimeApisGen extends RpcGen {
|
|
|
103
105
|
if (!spec) {
|
|
104
106
|
return o;
|
|
105
107
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return o;
|
|
109
|
-
}
|
|
110
|
-
return {
|
|
111
|
-
...o,
|
|
112
|
-
[moduleName]: o[moduleName] ? [...o[moduleName], spec] : [spec],
|
|
113
|
-
};
|
|
114
|
-
}, {});
|
|
108
|
+
return [...o, spec];
|
|
109
|
+
}, []);
|
|
115
110
|
}
|
|
116
111
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function currentDirname(): string;
|
package/generator/utils.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare const WRAPPER_TYPE_REGEX: RegExp;
|
|
2
2
|
export declare const TUPLE_TYPE_REGEX: RegExp;
|
|
3
3
|
export declare const commentBlock: (...docs: (string | string[])[]) => string;
|
|
4
|
-
export declare const resolveFilePath: (relativePath: string | string[]) => string;
|
|
5
4
|
export declare const beautifySourceCode: (source: string) => Promise<string>;
|
|
6
5
|
export declare const compileTemplate: (templateFileName: string) => HandlebarsTemplateDelegate<any>;
|
|
7
6
|
/**
|
package/generator/utils.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import handlebars from 'handlebars';
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import * as process from 'process';
|
|
5
4
|
import * as prettier from 'prettier';
|
|
5
|
+
import { currentDirname } from './dirname';
|
|
6
6
|
export const WRAPPER_TYPE_REGEX = /^(\w+)<(.*)>$/;
|
|
7
7
|
export const TUPLE_TYPE_REGEX = /^\[(.*)]$/;
|
|
8
8
|
export const commentBlock = (...docs) => {
|
|
@@ -18,16 +18,12 @@ ${flatLines.map((line) => `* ${line.replaceAll(/\s+/g, ' ').trim()}`).join('\n')
|
|
|
18
18
|
`;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
export const resolveFilePath = (relativePath) => {
|
|
22
|
-
relativePath = Array.isArray(relativePath) ? relativePath : [relativePath];
|
|
23
|
-
return path.resolve(process.cwd(), ...relativePath);
|
|
24
|
-
};
|
|
25
21
|
export const beautifySourceCode = async (source) => {
|
|
26
|
-
const prettierOptions = await prettier.resolveConfig(
|
|
22
|
+
const prettierOptions = await prettier.resolveConfig(path.resolve(currentDirname(), '../../../../.prettierrc.js'));
|
|
27
23
|
return prettier.format(source, { parser: 'babel-ts', ...prettierOptions });
|
|
28
24
|
};
|
|
29
25
|
export const compileTemplate = (templateFileName) => {
|
|
30
|
-
const templateFilePath =
|
|
26
|
+
const templateFilePath = path.resolve(currentDirname(), `../templates/${templateFileName}`);
|
|
31
27
|
return handlebars.compile(fs.readFileSync(templateFilePath, 'utf8'));
|
|
32
28
|
};
|
|
33
29
|
// TODO add more reserved words
|
package/index.js
CHANGED
|
@@ -15,15 +15,15 @@ export async function generateTypesFromChain(network, endpoint, outDir) {
|
|
|
15
15
|
}
|
|
16
16
|
export async function generateTypes(network, metadata, rpcMethods, runtimeApis, outDir = '.') {
|
|
17
17
|
const dirPath = path.resolve(outDir, network.chain);
|
|
18
|
-
const defTypesFileName = path.join(dirPath, `types.ts`);
|
|
19
|
-
const constsTypesFileName = path.join(dirPath, `consts.ts`);
|
|
20
|
-
const queryTypesFileName = path.join(dirPath, `query.ts`);
|
|
21
|
-
const rpcCallsFileName = path.join(dirPath, `rpc.ts`);
|
|
22
|
-
const indexFileName = path.join(dirPath, `index.ts`);
|
|
23
|
-
const errorsFileName = path.join(dirPath, `errors.ts`);
|
|
24
|
-
const eventsFileName = path.join(dirPath, `events.ts`);
|
|
25
|
-
const runtimeApisFileName = path.join(dirPath, `runtime.ts`);
|
|
26
|
-
const txFileName = path.join(dirPath, `tx.ts`);
|
|
18
|
+
const defTypesFileName = path.join(dirPath, `types.d.ts`);
|
|
19
|
+
const constsTypesFileName = path.join(dirPath, `consts.d.ts`);
|
|
20
|
+
const queryTypesFileName = path.join(dirPath, `query.d.ts`);
|
|
21
|
+
const rpcCallsFileName = path.join(dirPath, `rpc.d.ts`);
|
|
22
|
+
const indexFileName = path.join(dirPath, `index.d.ts`);
|
|
23
|
+
const errorsFileName = path.join(dirPath, `errors.d.ts`);
|
|
24
|
+
const eventsFileName = path.join(dirPath, `events.d.ts`);
|
|
25
|
+
const runtimeApisFileName = path.join(dirPath, `runtime.d.ts`);
|
|
26
|
+
const txFileName = path.join(dirPath, `tx.d.ts`);
|
|
27
27
|
if (!fs.existsSync(dirPath)) {
|
|
28
28
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
29
29
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dedot/codegen",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.26",
|
|
4
4
|
"description": "Generate types",
|
|
5
5
|
"author": "Thang X. Vu <thang@coongcrafts.io>",
|
|
6
6
|
"homepage": "https://github.com/dedotdev/dedot/tree/main/packages/codegen",
|
|
@@ -12,16 +12,17 @@
|
|
|
12
12
|
"main": "./cjs/index.js",
|
|
13
13
|
"type": "module",
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "tsc --project tsconfig.build.json && tsc --project tsconfig.build.cjs.json",
|
|
16
|
-
"clean": "rm -rf ./dist && rm -rf ./tsconfig.tsbuildinfo ./tsconfig.build.tsbuildinfo"
|
|
15
|
+
"build": "tsc --project tsconfig.build.json && tsc --project tsconfig.build.cjs.json && yarn copy",
|
|
16
|
+
"clean": "rm -rf ./dist && rm -rf ./tsconfig.tsbuildinfo ./tsconfig.build.tsbuildinfo",
|
|
17
|
+
"copy": "cp -R ./src/templates ./dist && cp -R ./src/templates ./dist/cjs"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
|
-
"@dedot/codecs": "0.0.1-alpha.
|
|
20
|
-
"@dedot/shape": "0.0.1-alpha.
|
|
21
|
-
"@dedot/specs": "0.0.1-alpha.
|
|
22
|
-
"@dedot/utils": "0.0.1-alpha.
|
|
20
|
+
"@dedot/codecs": "0.0.1-alpha.26",
|
|
21
|
+
"@dedot/shape": "0.0.1-alpha.26",
|
|
22
|
+
"@dedot/specs": "0.0.1-alpha.26",
|
|
23
|
+
"@dedot/utils": "0.0.1-alpha.26",
|
|
23
24
|
"@polkadot/util": "^12.6.2",
|
|
24
|
-
"dedot": "0.0.1-alpha.
|
|
25
|
+
"dedot": "0.0.1-alpha.26",
|
|
25
26
|
"handlebars": "^4.7.8",
|
|
26
27
|
"prettier": "^3.0.3"
|
|
27
28
|
},
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"directory": "dist"
|
|
31
32
|
},
|
|
32
33
|
"license": "Apache-2.0",
|
|
33
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "5b114a0d2359316f07654915f3c03b44761cac73",
|
|
34
35
|
"module": "./index.js",
|
|
35
36
|
"types": "./index.d.ts",
|
|
36
37
|
"exports": {
|
package/packageInfo.js
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Generated by @dedot/codegen
|
|
2
|
+
|
|
3
|
+
import { GenericSubstrateApi } from '@dedot/types';
|
|
4
|
+
import { ChainConsts } from './consts';
|
|
5
|
+
import { ChainStorage } from './query';
|
|
6
|
+
import { RpcCalls } from './rpc';
|
|
7
|
+
import { ChainErrors } from './errors';
|
|
8
|
+
import { ChainEvents } from './events';
|
|
9
|
+
import { RuntimeApis } from './runtime';
|
|
10
|
+
import { ChainTx } from './tx';
|
|
11
|
+
|
|
12
|
+
export * from './types';
|
|
13
|
+
|
|
14
|
+
export interface {{{interfaceName}}}Api extends GenericSubstrateApi {
|
|
15
|
+
rpc: RpcCalls;
|
|
16
|
+
consts: ChainConsts;
|
|
17
|
+
query: ChainStorage;
|
|
18
|
+
errors: ChainErrors;
|
|
19
|
+
events: ChainEvents;
|
|
20
|
+
call: RuntimeApis;
|
|
21
|
+
tx: ChainTx;
|
|
22
|
+
}
|
package/templates/tx.hbs
ADDED