@dedot/codegen 0.0.1-next.41a5fa17.16 → 0.0.1-next.49d80ab2.3

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.
Files changed (149) hide show
  1. package/{generator → chaintypes/generator}/ApiGen.d.ts +13 -13
  2. package/chaintypes/generator/ConstsGen.d.ts +4 -0
  3. package/{generator → chaintypes/generator}/ConstsGen.js +6 -6
  4. package/{generator → chaintypes/generator}/ErrorsGen.d.ts +1 -1
  5. package/{generator → chaintypes/generator}/ErrorsGen.js +10 -10
  6. package/{generator → chaintypes/generator}/EventsGen.d.ts +1 -1
  7. package/{generator → chaintypes/generator}/EventsGen.js +10 -10
  8. package/chaintypes/generator/IndexGen.d.ts +5 -0
  9. package/chaintypes/generator/IndexGen.js +17 -0
  10. package/chaintypes/generator/JsonRpcGen.d.ts +8 -0
  11. package/chaintypes/generator/JsonRpcGen.js +55 -0
  12. package/chaintypes/generator/QueryGen.d.ts +5 -0
  13. package/{generator → chaintypes/generator}/QueryGen.js +27 -18
  14. package/chaintypes/generator/RuntimeApisGen.d.ts +9 -0
  15. package/{generator → chaintypes/generator}/RuntimeApisGen.js +95 -20
  16. package/{generator → chaintypes/generator}/TxGen.d.ts +1 -1
  17. package/{generator → chaintypes/generator}/TxGen.js +17 -15
  18. package/chaintypes/generator/TypesGen.d.ts +11 -0
  19. package/chaintypes/generator/TypesGen.js +55 -0
  20. package/{generator → chaintypes/generator}/index.d.ts +1 -1
  21. package/{generator → chaintypes/generator}/index.js +1 -1
  22. package/chaintypes/index.d.ts +3 -0
  23. package/chaintypes/index.js +49 -0
  24. package/chaintypes/templates/consts.hbs +7 -0
  25. package/chaintypes/templates/errors.hbs +7 -0
  26. package/chaintypes/templates/events.hbs +7 -0
  27. package/chaintypes/templates/index.hbs +27 -0
  28. package/chaintypes/templates/json-rpc.hbs +5 -0
  29. package/chaintypes/templates/query.hbs +7 -0
  30. package/chaintypes/templates/runtime.hbs +8 -0
  31. package/chaintypes/templates/tx.hbs +9 -0
  32. package/{cjs → chaintypes}/templates/types.hbs +1 -1
  33. package/cjs/{generator → chaintypes/generator}/ConstsGen.js +7 -7
  34. package/cjs/{generator → chaintypes/generator}/ErrorsGen.js +10 -10
  35. package/cjs/{generator → chaintypes/generator}/EventsGen.js +10 -10
  36. package/cjs/chaintypes/generator/IndexGen.js +21 -0
  37. package/cjs/chaintypes/generator/JsonRpcGen.js +59 -0
  38. package/cjs/{generator → chaintypes/generator}/QueryGen.js +28 -19
  39. package/cjs/{generator → chaintypes/generator}/RuntimeApisGen.js +97 -22
  40. package/cjs/{generator → chaintypes/generator}/TxGen.js +17 -15
  41. package/cjs/chaintypes/generator/TypesGen.js +59 -0
  42. package/cjs/{generator → chaintypes/generator}/index.js +1 -1
  43. package/cjs/chaintypes/index.js +77 -0
  44. package/cjs/chaintypes/templates/consts.hbs +7 -0
  45. package/cjs/chaintypes/templates/errors.hbs +7 -0
  46. package/cjs/chaintypes/templates/events.hbs +7 -0
  47. package/cjs/chaintypes/templates/index.hbs +27 -0
  48. package/cjs/chaintypes/templates/json-rpc.hbs +5 -0
  49. package/cjs/chaintypes/templates/query.hbs +7 -0
  50. package/cjs/chaintypes/templates/runtime.hbs +8 -0
  51. package/cjs/chaintypes/templates/tx.hbs +9 -0
  52. package/{templates → cjs/chaintypes/templates}/types.hbs +1 -1
  53. package/cjs/index.js +4 -62
  54. package/cjs/{generator/TypesGen.js → shared/BaseTypesGen.js} +112 -166
  55. package/cjs/{generator → shared}/TypeImports.js +29 -3
  56. package/cjs/shared/index.js +19 -0
  57. package/cjs/{generator → shared}/known-codecs.js +24 -5
  58. package/cjs/typink/generator/ConstructorQueryGen.js +24 -0
  59. package/cjs/typink/generator/ConstructorTxGen.js +24 -0
  60. package/cjs/typink/generator/IndexGen.js +24 -0
  61. package/cjs/typink/generator/QueryGen.js +72 -0
  62. package/cjs/typink/generator/TxGen.js +25 -0
  63. package/cjs/typink/generator/TypesGen.js +28 -0
  64. package/cjs/typink/generator/index.js +22 -0
  65. package/cjs/typink/index.js +37 -0
  66. package/cjs/typink/templates/constructor-query.hbs +7 -0
  67. package/cjs/typink/templates/constructor-tx.hbs +7 -0
  68. package/cjs/typink/templates/index.hbs +14 -0
  69. package/cjs/typink/templates/query.hbs +7 -0
  70. package/cjs/typink/templates/tx.hbs +7 -0
  71. package/cjs/typink/templates/types.hbs +5 -0
  72. package/cjs/{generator/utils.js → utils.js} +4 -4
  73. package/index.d.ts +2 -4
  74. package/index.js +2 -48
  75. package/package.json +15 -17
  76. package/{generator/TypesGen.d.ts → shared/BaseTypesGen.d.ts} +12 -11
  77. package/{generator/TypesGen.js → shared/BaseTypesGen.js} +109 -163
  78. package/{generator → shared}/TypeImports.d.ts +12 -1
  79. package/{generator → shared}/TypeImports.js +29 -3
  80. package/shared/index.d.ts +3 -0
  81. package/shared/index.js +3 -0
  82. package/{generator → shared}/known-codecs.d.ts +1 -1
  83. package/{generator → shared}/known-codecs.js +22 -3
  84. package/typink/generator/ConstructorQueryGen.d.ts +6 -0
  85. package/typink/generator/ConstructorQueryGen.js +20 -0
  86. package/typink/generator/ConstructorTxGen.d.ts +6 -0
  87. package/typink/generator/ConstructorTxGen.js +20 -0
  88. package/typink/generator/IndexGen.d.ts +6 -0
  89. package/typink/generator/IndexGen.js +20 -0
  90. package/typink/generator/QueryGen.d.ts +12 -0
  91. package/typink/generator/QueryGen.js +68 -0
  92. package/typink/generator/TxGen.d.ts +6 -0
  93. package/typink/generator/TxGen.js +21 -0
  94. package/typink/generator/TypesGen.d.ts +7 -0
  95. package/typink/generator/TypesGen.js +24 -0
  96. package/typink/generator/index.d.ts +6 -0
  97. package/typink/generator/index.js +6 -0
  98. package/typink/index.d.ts +2 -0
  99. package/typink/index.js +30 -0
  100. package/typink/templates/constructor-query.hbs +7 -0
  101. package/typink/templates/constructor-tx.hbs +7 -0
  102. package/typink/templates/index.hbs +14 -0
  103. package/typink/templates/query.hbs +7 -0
  104. package/typink/templates/tx.hbs +7 -0
  105. package/typink/templates/types.hbs +5 -0
  106. package/{generator/utils.d.ts → utils.d.ts} +1 -1
  107. package/{generator/utils.js → utils.js} +4 -4
  108. package/cjs/genSupportedChainTypes.js +0 -83
  109. package/cjs/generator/IndexGen.js +0 -18
  110. package/cjs/generator/RpcGen.js +0 -175
  111. package/cjs/generator/known-types.js +0 -33
  112. package/cjs/packageInfo.js +0 -5
  113. package/cjs/templates/consts.hbs +0 -7
  114. package/cjs/templates/errors.hbs +0 -7
  115. package/cjs/templates/events.hbs +0 -7
  116. package/cjs/templates/index.hbs +0 -22
  117. package/cjs/templates/query.hbs +0 -7
  118. package/cjs/templates/rpc.hbs +0 -7
  119. package/cjs/templates/runtime.hbs +0 -8
  120. package/cjs/templates/tx.hbs +0 -9
  121. package/cjs/types.js +0 -2
  122. package/genSupportedChainTypes.d.ts +0 -1
  123. package/genSupportedChainTypes.js +0 -78
  124. package/generator/ConstsGen.d.ts +0 -4
  125. package/generator/IndexGen.d.ts +0 -6
  126. package/generator/IndexGen.js +0 -14
  127. package/generator/QueryGen.d.ts +0 -5
  128. package/generator/RpcGen.d.ts +0 -10
  129. package/generator/RpcGen.js +0 -171
  130. package/generator/RuntimeApisGen.d.ts +0 -9
  131. package/generator/known-types.d.ts +0 -6
  132. package/generator/known-types.js +0 -30
  133. package/packageInfo.d.ts +0 -4
  134. package/packageInfo.js +0 -2
  135. package/templates/consts.hbs +0 -7
  136. package/templates/errors.hbs +0 -7
  137. package/templates/events.hbs +0 -7
  138. package/templates/index.hbs +0 -22
  139. package/templates/query.hbs +0 -7
  140. package/templates/rpc.hbs +0 -7
  141. package/templates/runtime.hbs +0 -8
  142. package/templates/tx.hbs +0 -9
  143. package/types.d.ts +0 -6
  144. package/types.js +0 -1
  145. /package/{generator → chaintypes/generator}/ApiGen.js +0 -0
  146. /package/cjs/{generator → chaintypes/generator}/ApiGen.js +0 -0
  147. /package/cjs/{generator/dirname.js → dirname.js} +0 -0
  148. /package/{generator/dirname.d.ts → dirname.d.ts} +0 -0
  149. /package/{generator/dirname.js → dirname.js} +0 -0
@@ -1,21 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RuntimeApisGen = void 0;
4
- const specs_1 = require("@dedot/specs");
5
- const utils_js_1 = require("./utils.js");
4
+ const runtime_specs_1 = require("@dedot/runtime-specs");
6
5
  const utils_1 = require("@dedot/utils");
7
- const RpcGen_js_1 = require("./RpcGen.js");
8
- class RuntimeApisGen extends RpcGen_js_1.RpcGen {
6
+ const index_js_1 = require("../../shared/index.js");
7
+ const utils_js_1 = require("../../utils.js");
8
+ const ApiGen_js_1 = require("./ApiGen.js");
9
+ class RuntimeApisGen extends ApiGen_js_1.ApiGen {
9
10
  typesGen;
10
11
  runtimeApis;
11
12
  constructor(typesGen, runtimeApis) {
12
- super(typesGen, []);
13
+ super(typesGen);
13
14
  this.typesGen = typesGen;
14
15
  this.runtimeApis = runtimeApis;
15
16
  }
16
- generate() {
17
+ generate(useSubPaths = false) {
17
18
  this.typesGen.clearCache();
18
- this.typesGen.typeImports.addKnownType('GenericRuntimeApis', 'GenericRuntimeApiMethod');
19
+ this.typesGen.typeImports.addKnownType('GenericRuntimeApis', 'GenericRuntimeApiMethod', 'RpcVersion');
19
20
  let runtimeCallsOut = '';
20
21
  if (this.metadata.apis.length > 0) {
21
22
  this.metadata.apis.forEach((runtimeApi) => {
@@ -24,7 +25,7 @@ class RuntimeApisGen extends RpcGen_js_1.RpcGen {
24
25
  runtimeCallsOut += `${(0, utils_1.stringCamelCase)(runtimeApiName)}: {
25
26
  ${methods.map((method) => this.#generateMethodDef(runtimeApiName, method)).join('\n')}
26
27
 
27
- ${(0, utils_js_1.commentBlock)('Generic runtime api call')}[method: string]: GenericRuntimeApiMethod
28
+ ${(0, utils_js_1.commentBlock)('Generic runtime api call')}[method: string]: GenericRuntimeApiMethod<Rv>
28
29
  }`;
29
30
  });
30
31
  }
@@ -41,12 +42,12 @@ class RuntimeApisGen extends RpcGen_js_1.RpcGen {
41
42
  }))
42
43
  .join('\n')}
43
44
 
44
- ${(0, utils_js_1.commentBlock)('Generic runtime api call')}[method: string]: GenericRuntimeApiMethod
45
+ ${(0, utils_js_1.commentBlock)('Generic runtime api call')}[method: string]: GenericRuntimeApiMethod<Rv>
45
46
  }`;
46
47
  });
47
48
  }
48
- const importTypes = this.typesGen.typeImports.toImports();
49
- const template = (0, utils_js_1.compileTemplate)('runtime.hbs');
49
+ const importTypes = this.typesGen.typeImports.toImports({ useSubPaths });
50
+ const template = (0, utils_js_1.compileTemplate)('chaintypes/templates/runtime.hbs');
50
51
  return (0, utils_js_1.beautifySourceCode)(template({ importTypes, runtimeCallsOut }));
51
52
  }
52
53
  #isOptionalType(type) {
@@ -59,25 +60,25 @@ class RuntimeApisGen extends RpcGen_js_1.RpcGen {
59
60
  const { docs = [], params, type, runtimeApiName, methodName } = spec;
60
61
  const callName = `${runtimeApiName}_${(0, utils_1.stringSnakeCase)(methodName)}`;
61
62
  const defaultDocs = [`@callname: ${callName}`];
62
- this.addTypeImport(type, false);
63
- params.forEach(({ type }) => this.addTypeImport(type));
63
+ this.#addTypeImport(type, false);
64
+ params.forEach(({ type }) => this.#addTypeImport(type));
64
65
  const typedParams = params.map((param, idx) => ({
65
66
  ...param,
66
67
  isOptional: this.#isOptionalParam(params, param.type, idx),
67
- plainType: this.getGeneratedTypeName(param.type),
68
+ plainType: this.#getGeneratedTypeName(param.type),
68
69
  }));
69
70
  const paramsOut = typedParams
70
71
  .map(({ name, isOptional, plainType }) => `${(0, utils_1.stringCamelCase)(name)}${isOptional ? '?' : ''}: ${plainType}`)
71
72
  .join(', ');
72
- const typeOut = this.getGeneratedTypeName(type, false);
73
- return `${(0, utils_js_1.commentBlock)(docs, '\n', defaultDocs, typedParams.map(({ plainType, name }) => `@param {${plainType}} ${name}`))}${methodName}: GenericRuntimeApiMethod<(${paramsOut}) => Promise<${typeOut}>>`;
73
+ const typeOut = this.#getGeneratedTypeName(type, false);
74
+ return `${(0, utils_js_1.commentBlock)(docs, '\n', defaultDocs, typedParams.map(({ plainType, name }) => `@param {${plainType}} ${name}`))}${methodName}: GenericRuntimeApiMethod<Rv, (${paramsOut}) => Promise<${typeOut}>>`;
74
75
  }
75
76
  #generateMethodDef(runtimeApiName, methodDef) {
76
77
  const { name: methodName, inputs, output, docs } = methodDef;
77
78
  const callName = `${runtimeApiName}_${(0, utils_1.stringSnakeCase)(methodName)}`;
78
79
  const defaultDocs = [`@callname: ${callName}`];
79
80
  const typeOut = this.typesGen.generateType(output, 1, true);
80
- this.addTypeImport(typeOut, false);
81
+ this.#addTypeImport(typeOut, false);
81
82
  const typedInputs = inputs
82
83
  .map((input, idx) => ({
83
84
  ...input,
@@ -87,14 +88,14 @@ class RuntimeApisGen extends RpcGen_js_1.RpcGen {
87
88
  ...input,
88
89
  isOptional: this.#isOptionalParam(inputs, input.type, idx),
89
90
  }));
90
- this.addTypeImport(typedInputs.map((t) => t.type));
91
+ this.#addTypeImport(typedInputs.map((t) => t.type));
91
92
  const paramsOut = typedInputs
92
93
  .map(({ name, type, isOptional }) => `${(0, utils_1.stringCamelCase)(name)}${isOptional ? '?' : ''}: ${type}`)
93
94
  .join(', ');
94
- return `${(0, utils_js_1.commentBlock)(docs, '\n', defaultDocs, typedInputs.map(({ type, name }) => `@param {${type}} ${name}`))}${(0, utils_1.stringCamelCase)(methodName)}: GenericRuntimeApiMethod<(${paramsOut}) => Promise<${typeOut}>>`;
95
+ return `${(0, utils_js_1.commentBlock)(docs, '\n', defaultDocs, typedInputs.map(({ type, name }) => `@param {${type}} ${name}`))}${(0, utils_1.stringCamelCase)(methodName)}: GenericRuntimeApiMethod<Rv, (${paramsOut}) => Promise<${typeOut}>>`;
95
96
  }
96
97
  #targetRuntimeApiSpecs() {
97
- const specs = this.runtimeApis.map(([runtimeApiHash, version]) => {
98
+ const specs = Object.entries(this.runtimeApis).map(([runtimeApiHash, version]) => {
98
99
  const runtimeApiSpec = this.#findRuntimeApiSpec(runtimeApiHash, version);
99
100
  if (!runtimeApiSpec)
100
101
  return;
@@ -111,8 +112,82 @@ class RuntimeApisGen extends RpcGen_js_1.RpcGen {
111
112
  }, []);
112
113
  }
113
114
  #findRuntimeApiSpec = (runtimeApiHash, version) => {
114
- const runtimeApiName = (0, specs_1.getRuntimeApiNames)().find((one) => (0, utils_1.calcRuntimeApiHash)(one) === runtimeApiHash);
115
- return (0, specs_1.getRuntimeApiSpecs)().find((one) => one.runtimeApiName === runtimeApiName && one.version === version);
115
+ const runtimeApiName = (0, runtime_specs_1.getRuntimeApiNames)().find((one) => (0, utils_1.calcRuntimeApiHash)(one) === runtimeApiHash);
116
+ return (0, runtime_specs_1.getRuntimeApiSpecs)().find((one) => one.runtimeApiName === runtimeApiName && one.version === version);
116
117
  };
118
+ // TODO check typeIn, typeOut if param type, or rpc type isScale
119
+ #addTypeImport(type, toTypeIn = true) {
120
+ if (Array.isArray(type)) {
121
+ type.forEach((one) => this.#addTypeImport(one, toTypeIn));
122
+ return;
123
+ }
124
+ type = type.trim();
125
+ if ((0, utils_js_1.isNativeType)(type)) {
126
+ return;
127
+ }
128
+ // Handle generic wrapper types
129
+ const matchArray = type.match(utils_js_1.WRAPPER_TYPE_REGEX);
130
+ if (matchArray) {
131
+ const [_, $1, $2] = matchArray;
132
+ this.#addTypeImport($1, toTypeIn);
133
+ if ($2.match(utils_js_1.WRAPPER_TYPE_REGEX) || $2.match(utils_js_1.TUPLE_TYPE_REGEX)) {
134
+ this.#addTypeImport($2, toTypeIn);
135
+ }
136
+ else {
137
+ this.#addTypeImport($2.split(','), toTypeIn);
138
+ }
139
+ return;
140
+ }
141
+ // Check tuple type
142
+ if (type.match(utils_js_1.TUPLE_TYPE_REGEX)) {
143
+ this.#addTypeImport(type.slice(1, -1).split(','), toTypeIn);
144
+ return;
145
+ }
146
+ if (type.includes(' | ')) {
147
+ this.#addTypeImport(type.split(' | ').map((one) => one.trim()), toTypeIn);
148
+ return;
149
+ }
150
+ try {
151
+ const codecType = this.#getCodecType(type, toTypeIn);
152
+ if ((0, utils_js_1.isNativeType)(codecType))
153
+ return;
154
+ this.typesGen.typeImports.addCodecType(codecType);
155
+ return;
156
+ }
157
+ catch (e) { }
158
+ this.typesGen.addTypeImport(type);
159
+ }
160
+ #getGeneratedTypeName(type, toTypeIn = true) {
161
+ try {
162
+ const matchArray = type.match(utils_js_1.WRAPPER_TYPE_REGEX);
163
+ if (matchArray) {
164
+ const [_, $1, $2] = matchArray;
165
+ const wrapperTypeName = this.#getCodecType($1, toTypeIn);
166
+ if ($2.match(utils_js_1.WRAPPER_TYPE_REGEX) || $2.match(utils_js_1.TUPLE_TYPE_REGEX)) {
167
+ return `${wrapperTypeName}<${this.#getGeneratedTypeName($2, toTypeIn)}>`;
168
+ }
169
+ const innerTypeNames = $2
170
+ .split(',')
171
+ .map((one) => this.#getGeneratedTypeName(one.trim(), toTypeIn))
172
+ .join(', ');
173
+ return `${wrapperTypeName}<${innerTypeNames}>`;
174
+ }
175
+ else if (type.match(utils_js_1.TUPLE_TYPE_REGEX)) {
176
+ const innerTypeNames = type
177
+ .slice(1, -1)
178
+ .split(',')
179
+ .map((one) => this.#getGeneratedTypeName(one.trim(), toTypeIn))
180
+ .join(', ');
181
+ return `[${innerTypeNames}]`;
182
+ }
183
+ return this.#getCodecType(type, toTypeIn);
184
+ }
185
+ catch (e) { }
186
+ return type;
187
+ }
188
+ #getCodecType(type, toTypeIn = true) {
189
+ const { typeIn, typeOut } = (0, index_js_1.findKnownCodecType)(type);
190
+ return toTypeIn ? typeIn : typeOut;
191
+ }
117
192
  }
118
193
  exports.RuntimeApisGen = RuntimeApisGen;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TxGen = void 0;
4
- const index_js_1 = require("../generator/index.js");
5
4
  const utils_1 = require("@dedot/utils");
6
- const utils_js_1 = require("./utils.js");
5
+ const utils_js_1 = require("../../utils.js");
6
+ const index_js_1 = require("../generator/index.js");
7
7
  class TxGen extends index_js_1.ApiGen {
8
- generate() {
8
+ generate(useSubPaths = false) {
9
9
  const { pallets, types } = this.metadata;
10
10
  this.typesGen.clearCache();
11
- this.typesGen.typeImports.addKnownType('GenericChainTx', 'GenericTxCall', 'ISubmittableExtrinsic', 'ISubmittableResult', 'IRuntimeTxCall');
11
+ this.typesGen.typeImports.addKnownType('GenericChainTx', 'GenericTxCall', 'ISubmittableExtrinsic', 'ISubmittableResult', 'IRuntimeTxCall', 'RpcVersion', 'RpcV2', 'ISubmittableExtrinsicLegacy', 'TransactionStatusLegacy', 'TransactionStatusV2');
12
12
  const { callTypeId, addressTypeId, signatureTypeId } = this.metadata.extrinsic;
13
13
  const callTypeIn = this.typesGen.generateType(callTypeId, 1);
14
14
  const addressTypeIn = this.typesGen.generateType(addressTypeId, 1);
@@ -20,11 +20,11 @@ class TxGen extends index_js_1.ApiGen {
20
20
  for (let pallet of pallets) {
21
21
  if (pallet.calls === undefined)
22
22
  continue;
23
- const { type } = types[pallet.calls];
24
- if (type.tag !== 'Enum')
23
+ const { typeDef } = types[pallet.calls];
24
+ if (typeDef.type !== 'Enum')
25
25
  continue;
26
- const isFlatEnum = type.value.members.every((m) => m.fields.length === 0);
27
- const typedTxs = type.value.members
26
+ const isFlatEnum = typeDef.value.members.every((m) => m.fields.length === 0);
27
+ const typedTxs = typeDef.value.members
28
28
  .map((one) => ({
29
29
  functionName: (0, utils_1.stringCamelCase)(one.name),
30
30
  params: one.fields.map((f) => ({
@@ -44,22 +44,24 @@ class TxGen extends index_js_1.ApiGen {
44
44
  txDefsOut += (0, utils_js_1.commentBlock)(`Pallet \`${pallet.name}\`'s transaction calls`);
45
45
  txDefsOut += `${(0, utils_1.stringCamelCase)(pallet.name)}: {
46
46
  ${typedTxs
47
- .map(({ functionName, params, docs, callInput }) => `${(0, utils_js_1.commentBlock)(docs, '\n', params.map((p) => `@param {${p.type}} ${p.normalizedName} ${p.docs}`))}${functionName}: GenericTxCall<(${params.map((p) => `${p.normalizedName}: ${p.type}`).join(', ')}) => ChainSubmittableExtrinsic<${callInput}>>`)
47
+ .map(({ functionName, params, docs, callInput }) => `${(0, utils_js_1.commentBlock)(docs, '\n', params.map((p) => `@param {${p.type}} ${p.normalizedName} ${p.docs}`))}${functionName}: GenericTxCall<Rv, (${params.map((p) => `${p.normalizedName}: ${p.type}`).join(', ')}) => ChainSubmittableExtrinsic<Rv, ${callInput}>>`)
48
48
  .join(',\n')}
49
49
 
50
- ${(0, utils_js_1.commentBlock)('Generic pallet tx call')}[callName: string]: GenericTxCall<TxCall>,
50
+ ${(0, utils_js_1.commentBlock)('Generic pallet tx call')}[callName: string]: GenericTxCall<Rv, TxCall<Rv>>,
51
51
  },`;
52
52
  }
53
- const importTypes = this.typesGen.typeImports.toImports();
53
+ const importTypes = this.typesGen.typeImports.toImports({ useSubPaths });
54
54
  // TODO make explicit separate type for Extra
55
55
  const defTypes = `
56
- export type ChainSubmittableExtrinsic<T extends IRuntimeTxCall = ${callTypeIn}> =
56
+ export type ChainSubmittableExtrinsic<Rv extends RpcVersion, T extends IRuntimeTxCall = ${callTypeIn}> =
57
57
  Extrinsic<${addressTypeIn}, T, ${signatureTypeIn}, any[]> &
58
- ISubmittableExtrinsic<ISubmittableResult<FrameSystemEventRecord>>
58
+ (Rv extends RpcV2
59
+ ? ISubmittableExtrinsic<ISubmittableResult<FrameSystemEventRecord, TransactionStatusV2>>
60
+ : ISubmittableExtrinsicLegacy<ISubmittableResult<FrameSystemEventRecord, TransactionStatusLegacy>>)
59
61
 
60
- export type TxCall = (...args: any[]) => ChainSubmittableExtrinsic;
62
+ export type TxCall<Rv extends RpcVersion> = (...args: any[]) => ChainSubmittableExtrinsic<Rv>;
61
63
  `;
62
- const template = (0, utils_js_1.compileTemplate)('tx.hbs');
64
+ const template = (0, utils_js_1.compileTemplate)('chaintypes/templates/tx.hbs');
63
65
  return (0, utils_js_1.beautifySourceCode)(template({ importTypes, defTypes, txDefsOut }));
64
66
  }
65
67
  #normalizeParamName(name) {
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypesGen = void 0;
4
+ const codecs_1 = require("@dedot/codecs");
5
+ const index_js_1 = require("../../shared/index.js");
6
+ const utils_js_1 = require("../../utils.js");
7
+ // Skip generate types for these
8
+ // as we do have native types for them
9
+ const SKIP_TYPES = [
10
+ 'BoundedBTreeMap',
11
+ 'BoundedBTreeSet',
12
+ 'BoundedVec',
13
+ 'Box',
14
+ 'BTreeMap',
15
+ 'BTreeSet',
16
+ 'Cow',
17
+ 'Option',
18
+ 'Range',
19
+ 'RangeInclusive',
20
+ 'Result',
21
+ 'WeakBoundedVec',
22
+ 'WrapperKeepOpaque',
23
+ 'WrapperOpaque',
24
+ ];
25
+ class TypesGen extends index_js_1.BaseTypesGen {
26
+ metadata;
27
+ registry;
28
+ constructor(metadata) {
29
+ super(metadata.types);
30
+ this.metadata = metadata;
31
+ this.skipTypes = SKIP_TYPES;
32
+ this.registry = new codecs_1.PortableRegistry(this.metadata);
33
+ this.includedTypes = this.includeTypes();
34
+ }
35
+ generate(useSubPaths = false) {
36
+ this.clearCache();
37
+ let defTypeOut = '';
38
+ Object.values(this.includedTypes)
39
+ .filter(({ skip, knownType }) => !(skip || knownType))
40
+ .forEach(({ name, nameOut, id, docs }) => {
41
+ defTypeOut += `${(0, utils_js_1.commentBlock)(docs)}export type ${nameOut} = ${this.generateType(id, 0, true)};\n\n`;
42
+ if (this.shouldGenerateTypeIn(id)) {
43
+ defTypeOut += `export type ${name} = ${this.generateType(id)};\n\n`;
44
+ }
45
+ });
46
+ const importTypes = this.typeImports.toImports({ excludeModules: ['./types'], useSubPaths });
47
+ const template = (0, utils_js_1.compileTemplate)('chaintypes/templates/types.hbs');
48
+ return (0, utils_js_1.beautifySourceCode)(template({ importTypes, defTypeOut }));
49
+ }
50
+ shouldGenerateTypeIn(id) {
51
+ const { callTypeId } = this.metadata.extrinsic;
52
+ const palletCallTypeIds = this.registry.getFieldTypeIdsFromEnum(callTypeId);
53
+ return callTypeId === id || palletCallTypeIds.includes(id);
54
+ }
55
+ getEnumOptions(typeId) {
56
+ return this.registry.getEnumOptions(typeId);
57
+ }
58
+ }
59
+ exports.TypesGen = TypesGen;
@@ -18,7 +18,7 @@ __exportStar(require("./TypesGen.js"), exports);
18
18
  __exportStar(require("./ApiGen.js"), exports);
19
19
  __exportStar(require("./ConstsGen.js"), exports);
20
20
  __exportStar(require("./QueryGen.js"), exports);
21
- __exportStar(require("./RpcGen.js"), exports);
21
+ __exportStar(require("./JsonRpcGen.js"), exports);
22
22
  __exportStar(require("./IndexGen.js"), exports);
23
23
  __exportStar(require("./ErrorsGen.js"), exports);
24
24
  __exportStar(require("./EventsGen.js"), exports);
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.generateTypes = exports.generateTypesFromEndpoint = void 0;
27
+ const api_1 = require("@dedot/api");
28
+ const providers_1 = require("@dedot/providers");
29
+ const utils_1 = require("@dedot/utils");
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const index_js_1 = require("./generator/index.js");
33
+ async function generateTypesFromEndpoint(chain, endpoint, outDir, extension = 'd.ts', useSubPaths = false) {
34
+ const api = await api_1.LegacyClient.new(new providers_1.WsProvider(endpoint));
35
+ const { methods } = await api.rpc.rpc_methods();
36
+ const apis = api.runtimeVersion.apis || {};
37
+ if (!chain) {
38
+ chain = (0, utils_1.stringCamelCase)(api.runtimeVersion.specName || 'local');
39
+ }
40
+ await generateTypes(chain, api.metadata.latest, methods, apis, outDir, extension, useSubPaths);
41
+ await api.disconnect();
42
+ }
43
+ exports.generateTypesFromEndpoint = generateTypesFromEndpoint;
44
+ async function generateTypes(chain, metadata, rpcMethods, runtimeApis, outDir = '.', extension = 'd.ts', useSubPaths = false) {
45
+ const dirPath = path.resolve(outDir, chain);
46
+ const defTypesFileName = path.join(dirPath, `types.${extension}`);
47
+ const constsTypesFileName = path.join(dirPath, `consts.${extension}`);
48
+ const queryTypesFileName = path.join(dirPath, `query.${extension}`);
49
+ const jsonRpcFileName = path.join(dirPath, `json-rpc.${extension}`);
50
+ const indexFileName = path.join(dirPath, `index.${extension}`);
51
+ const errorsFileName = path.join(dirPath, `errors.${extension}`);
52
+ const eventsFileName = path.join(dirPath, `events.${extension}`);
53
+ const runtimeApisFileName = path.join(dirPath, `runtime.${extension}`);
54
+ const txFileName = path.join(dirPath, `tx.${extension}`);
55
+ if (!fs.existsSync(dirPath)) {
56
+ fs.mkdirSync(dirPath, { recursive: true });
57
+ }
58
+ const typesGen = new index_js_1.TypesGen(metadata);
59
+ const constsGen = new index_js_1.ConstsGen(typesGen);
60
+ const queryGen = new index_js_1.QueryGen(typesGen);
61
+ const jsonRpcGen = new index_js_1.JsonRpcGen(typesGen, rpcMethods);
62
+ const indexGen = new index_js_1.IndexGen(chain);
63
+ const errorsGen = new index_js_1.ErrorsGen(typesGen);
64
+ const eventsGen = new index_js_1.EventsGen(typesGen);
65
+ const runtimeApisGen = new index_js_1.RuntimeApisGen(typesGen, runtimeApis);
66
+ const txGen = new index_js_1.TxGen(typesGen);
67
+ fs.writeFileSync(defTypesFileName, await typesGen.generate(useSubPaths));
68
+ fs.writeFileSync(errorsFileName, await errorsGen.generate(useSubPaths));
69
+ fs.writeFileSync(eventsFileName, await eventsGen.generate(useSubPaths));
70
+ fs.writeFileSync(jsonRpcFileName, await jsonRpcGen.generate(useSubPaths));
71
+ fs.writeFileSync(queryTypesFileName, await queryGen.generate(useSubPaths));
72
+ fs.writeFileSync(constsTypesFileName, await constsGen.generate(useSubPaths));
73
+ fs.writeFileSync(txFileName, await txGen.generate(useSubPaths));
74
+ fs.writeFileSync(indexFileName, await indexGen.generate(useSubPaths));
75
+ fs.writeFileSync(runtimeApisFileName, await runtimeApisGen.generate(useSubPaths));
76
+ }
77
+ exports.generateTypes = generateTypes;
@@ -0,0 +1,7 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ export interface ChainConsts<Rv extends RpcVersion> extends GenericChainConsts<Rv> {
6
+ {{{ defTypeOut }}}
7
+ }
@@ -0,0 +1,7 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ export interface ChainErrors<Rv extends RpcVersion> extends GenericChainErrors<Rv> {
6
+ {{{ defTypeOut }}}
7
+ }
@@ -0,0 +1,7 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ export interface ChainEvents<Rv extends RpcVersion> extends GenericChainEvents<Rv> {
6
+ {{{ defTypeOut }}}
7
+ }
@@ -0,0 +1,27 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{importTypes}}}
4
+ import { ChainConsts } from './consts';
5
+ import { ChainStorage } from './query';
6
+ import { ChainJsonRpcApis } from './json-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 Versioned{{{interfaceName}}}Api<Rv extends RpcVersion> extends GenericSubstrateApi<Rv> {
15
+ rpc: ChainJsonRpcApis<Rv>;
16
+ consts: ChainConsts<Rv>;
17
+ query: ChainStorage<Rv>;
18
+ errors: ChainErrors<Rv>;
19
+ events: ChainEvents<Rv>;
20
+ call: RuntimeApis<Rv>;
21
+ tx: ChainTx<Rv>;
22
+ }
23
+
24
+ export interface {{{interfaceName}}}Api {
25
+ legacy: Versioned{{{interfaceName}}}Api<RpcLegacy>;
26
+ v2: Versioned{{{interfaceName}}}Api<RpcV2>;
27
+ }
@@ -0,0 +1,5 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ export type ChainJsonRpcApis<Rv extends RpcVersion> = Pick<JsonRpcApis, {{{jsonRpcMethods}}}> & GenericJsonRpcApis<Rv>;
@@ -0,0 +1,7 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ export interface ChainStorage<Rv extends RpcVersion> extends GenericChainStorage<Rv> {
6
+ {{{ defTypeOut }}}
7
+ }
@@ -0,0 +1,8 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ export interface RuntimeApis<Rv extends RpcVersion> extends GenericRuntimeApis<Rv> {
6
+ {{{ runtimeCallsOut }}}
7
+ }
8
+
@@ -0,0 +1,9 @@
1
+ // Generated by dedot cli
2
+
3
+ {{{ importTypes }}}
4
+
5
+ {{{ defTypes }}}
6
+
7
+ export interface ChainTx<Rv extends RpcVersion> extends GenericChainTx<Rv, TxCall<Rv>> {
8
+ {{{ txDefsOut }}}
9
+ }
@@ -1,4 +1,4 @@
1
- // Generated by @dedot/codegen
1
+ // Generated by dedot cli
2
2
 
3
3
  {{{ importTypes }}}
4
4
 
package/cjs/index.js CHANGED
@@ -10,67 +10,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
15
  };
25
16
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.generateTypes = exports.generateTypesFromChain = void 0;
27
- const dedot_1 = require("dedot");
28
- const fs = __importStar(require("fs"));
29
- const path = __importStar(require("path"));
30
- const index_js_1 = require("./generator/index.js");
31
- const utils_1 = require("@dedot/utils");
32
- async function generateTypesFromChain(network, endpoint, outDir) {
33
- const api = await dedot_1.Dedot.create(endpoint);
34
- const { methods } = await api.rpc.rpc.methods();
35
- const apis = api.runtimeVersion?.apis || [];
36
- if (!network.chain) {
37
- network.chain = (0, utils_1.stringCamelCase)(api.runtimeVersion?.specName || api.runtimeChain || 'local');
38
- }
39
- await generateTypes(network, api.metadataLatest, methods, apis, outDir);
40
- await api.disconnect();
41
- }
42
- exports.generateTypesFromChain = generateTypesFromChain;
43
- async function generateTypes(network, metadata, rpcMethods, runtimeApis, outDir = '.') {
44
- const dirPath = path.resolve(outDir, network.chain);
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
- if (!fs.existsSync(dirPath)) {
55
- fs.mkdirSync(dirPath, { recursive: true });
56
- }
57
- const typesGen = new index_js_1.TypesGen(metadata);
58
- const constsGen = new index_js_1.ConstsGen(typesGen);
59
- const queryGen = new index_js_1.QueryGen(typesGen);
60
- const rpcGen = new index_js_1.RpcGen(typesGen, rpcMethods);
61
- const indexGen = new index_js_1.IndexGen(network);
62
- const errorsGen = new index_js_1.ErrorsGen(typesGen);
63
- const eventsGen = new index_js_1.EventsGen(typesGen);
64
- const runtimeApisGen = new index_js_1.RuntimeApisGen(typesGen, runtimeApis);
65
- const txGen = new index_js_1.TxGen(typesGen);
66
- fs.writeFileSync(defTypesFileName, await typesGen.generate());
67
- fs.writeFileSync(errorsFileName, await errorsGen.generate());
68
- fs.writeFileSync(eventsFileName, await eventsGen.generate());
69
- fs.writeFileSync(rpcCallsFileName, await rpcGen.generate());
70
- fs.writeFileSync(queryTypesFileName, await queryGen.generate());
71
- fs.writeFileSync(constsTypesFileName, await constsGen.generate());
72
- fs.writeFileSync(txFileName, await txGen.generate());
73
- fs.writeFileSync(indexFileName, await indexGen.generate());
74
- fs.writeFileSync(runtimeApisFileName, await runtimeApisGen.generate());
75
- }
76
- exports.generateTypes = generateTypes;
17
+ __exportStar(require("./chaintypes/index.js"), exports);
18
+ __exportStar(require("./typink/index.js"), exports);