@polkadot-api/metadata-builders 0.3.1 → 0.3.2

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/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as scale from '@polkadot-api/substrate-bindings';
2
- import { StringRecord, V14, V15, Codec } from '@polkadot-api/substrate-bindings';
2
+ import { StringRecord, V14Lookup, V14, V15, Codec } from '@polkadot-api/substrate-bindings';
3
3
 
4
4
  type MetadataPrimitives = "bool" | "char" | "str" | "u8" | "u16" | "u32" | "u64" | "u128" | "u256" | "i8" | "i16" | "i32" | "i64" | "i128" | "i256";
5
5
  type PrimitiveVar = {
@@ -68,106 +68,7 @@ type Var = TerminalVar | ComposedVar;
68
68
  type LookupEntry = {
69
69
  id: number;
70
70
  } & Var;
71
- declare const getLookupFn: (lookupData: {
72
- id: number;
73
- path: string[];
74
- params: {
75
- name: string;
76
- type: number | undefined;
77
- }[];
78
- def: {
79
- tag: "composite";
80
- value: {
81
- name: string | undefined;
82
- type: number;
83
- typeName: string | undefined;
84
- docs: string[];
85
- }[];
86
- } | {
87
- tag: "variant";
88
- value: {
89
- name: string;
90
- fields: {
91
- name: string | undefined;
92
- type: number;
93
- typeName: string | undefined;
94
- docs: string[];
95
- }[];
96
- index: number;
97
- docs: string[];
98
- }[];
99
- } | {
100
- tag: "sequence";
101
- value: number;
102
- } | {
103
- tag: "array";
104
- value: {
105
- len: number;
106
- type: number;
107
- };
108
- } | {
109
- tag: "tuple";
110
- value: number[];
111
- } | {
112
- tag: "primitive";
113
- value: {
114
- tag: "bool";
115
- value: undefined;
116
- } | {
117
- tag: "char";
118
- value: undefined;
119
- } | {
120
- tag: "str";
121
- value: undefined;
122
- } | {
123
- tag: "u8";
124
- value: undefined;
125
- } | {
126
- tag: "u16";
127
- value: undefined;
128
- } | {
129
- tag: "u32";
130
- value: undefined;
131
- } | {
132
- tag: "u64";
133
- value: undefined;
134
- } | {
135
- tag: "u128";
136
- value: undefined;
137
- } | {
138
- tag: "u256";
139
- value: undefined;
140
- } | {
141
- tag: "i8";
142
- value: undefined;
143
- } | {
144
- tag: "i16";
145
- value: undefined;
146
- } | {
147
- tag: "i32";
148
- value: undefined;
149
- } | {
150
- tag: "i64";
151
- value: undefined;
152
- } | {
153
- tag: "i128";
154
- value: undefined;
155
- } | {
156
- tag: "i256";
157
- value: undefined;
158
- };
159
- } | {
160
- tag: "compact";
161
- value: number;
162
- } | {
163
- tag: "bitSequence";
164
- value: {
165
- bitStoreType: number;
166
- bitOrderType: number;
167
- };
168
- };
169
- docs: string[];
170
- }[]) => (id: number) => LookupEntry;
71
+ declare const getLookupFn: (lookupData: V14Lookup) => (id: number) => LookupEntry;
171
72
 
172
73
  declare const getDynamicBuilder: (metadata: V14 | V15) => {
173
74
  buildDefinition: (id: number) => Codec<any>;
@@ -176,21 +77,15 @@ declare const getDynamicBuilder: (metadata: V14 | V15) => {
176
77
  fallback: unknown;
177
78
  enc: (...args: any[]) => string;
178
79
  dec: scale.Decoder<unknown>;
179
- keyDecoder: (value: string) => any[];
80
+ keyDecoder: (value: string) => { [K in keyof scale.EncoderWithHash<any>[]]: scale.EncoderWithHash<any>[][K] extends scale.EncoderWithHash<infer V> ? V : unknown; };
180
81
  };
181
82
  buildEvent: (pallet: string, name: string) => {
182
83
  codec: Codec<any>;
183
- location: [
184
- number,
185
- number
186
- ];
84
+ location: [number, number];
187
85
  };
188
86
  buildError: (pallet: string, name: string) => {
189
87
  codec: Codec<any>;
190
- location: [
191
- number,
192
- number
193
- ];
88
+ location: [number, number];
194
89
  };
195
90
  buildRuntimeCall: (api: string, method: string) => {
196
91
  args: Codec<any[]>;
@@ -198,10 +93,7 @@ declare const getDynamicBuilder: (metadata: V14 | V15) => {
198
93
  };
199
94
  buildCall: (pallet: string, name: string) => {
200
95
  codec: Codec<any>;
201
- location: [
202
- number,
203
- number
204
- ];
96
+ location: [number, number];
205
97
  };
206
98
  buildConstant: (pallet: string, constantName: string) => Codec<any>;
207
99
  ss58Prefix: number | undefined;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as scale from '@polkadot-api/substrate-bindings';
2
- import { StringRecord, V14, V15, Codec } from '@polkadot-api/substrate-bindings';
2
+ import { StringRecord, V14Lookup, V14, V15, Codec } from '@polkadot-api/substrate-bindings';
3
3
 
4
4
  type MetadataPrimitives = "bool" | "char" | "str" | "u8" | "u16" | "u32" | "u64" | "u128" | "u256" | "i8" | "i16" | "i32" | "i64" | "i128" | "i256";
5
5
  type PrimitiveVar = {
@@ -68,106 +68,7 @@ type Var = TerminalVar | ComposedVar;
68
68
  type LookupEntry = {
69
69
  id: number;
70
70
  } & Var;
71
- declare const getLookupFn: (lookupData: {
72
- id: number;
73
- path: string[];
74
- params: {
75
- name: string;
76
- type: number | undefined;
77
- }[];
78
- def: {
79
- tag: "composite";
80
- value: {
81
- name: string | undefined;
82
- type: number;
83
- typeName: string | undefined;
84
- docs: string[];
85
- }[];
86
- } | {
87
- tag: "variant";
88
- value: {
89
- name: string;
90
- fields: {
91
- name: string | undefined;
92
- type: number;
93
- typeName: string | undefined;
94
- docs: string[];
95
- }[];
96
- index: number;
97
- docs: string[];
98
- }[];
99
- } | {
100
- tag: "sequence";
101
- value: number;
102
- } | {
103
- tag: "array";
104
- value: {
105
- len: number;
106
- type: number;
107
- };
108
- } | {
109
- tag: "tuple";
110
- value: number[];
111
- } | {
112
- tag: "primitive";
113
- value: {
114
- tag: "bool";
115
- value: undefined;
116
- } | {
117
- tag: "char";
118
- value: undefined;
119
- } | {
120
- tag: "str";
121
- value: undefined;
122
- } | {
123
- tag: "u8";
124
- value: undefined;
125
- } | {
126
- tag: "u16";
127
- value: undefined;
128
- } | {
129
- tag: "u32";
130
- value: undefined;
131
- } | {
132
- tag: "u64";
133
- value: undefined;
134
- } | {
135
- tag: "u128";
136
- value: undefined;
137
- } | {
138
- tag: "u256";
139
- value: undefined;
140
- } | {
141
- tag: "i8";
142
- value: undefined;
143
- } | {
144
- tag: "i16";
145
- value: undefined;
146
- } | {
147
- tag: "i32";
148
- value: undefined;
149
- } | {
150
- tag: "i64";
151
- value: undefined;
152
- } | {
153
- tag: "i128";
154
- value: undefined;
155
- } | {
156
- tag: "i256";
157
- value: undefined;
158
- };
159
- } | {
160
- tag: "compact";
161
- value: number;
162
- } | {
163
- tag: "bitSequence";
164
- value: {
165
- bitStoreType: number;
166
- bitOrderType: number;
167
- };
168
- };
169
- docs: string[];
170
- }[]) => (id: number) => LookupEntry;
71
+ declare const getLookupFn: (lookupData: V14Lookup) => (id: number) => LookupEntry;
171
72
 
172
73
  declare const getDynamicBuilder: (metadata: V14 | V15) => {
173
74
  buildDefinition: (id: number) => Codec<any>;
@@ -176,21 +77,15 @@ declare const getDynamicBuilder: (metadata: V14 | V15) => {
176
77
  fallback: unknown;
177
78
  enc: (...args: any[]) => string;
178
79
  dec: scale.Decoder<unknown>;
179
- keyDecoder: (value: string) => any[];
80
+ keyDecoder: (value: string) => { [K in keyof scale.EncoderWithHash<any>[]]: scale.EncoderWithHash<any>[][K] extends scale.EncoderWithHash<infer V> ? V : unknown; };
180
81
  };
181
82
  buildEvent: (pallet: string, name: string) => {
182
83
  codec: Codec<any>;
183
- location: [
184
- number,
185
- number
186
- ];
84
+ location: [number, number];
187
85
  };
188
86
  buildError: (pallet: string, name: string) => {
189
87
  codec: Codec<any>;
190
- location: [
191
- number,
192
- number
193
- ];
88
+ location: [number, number];
194
89
  };
195
90
  buildRuntimeCall: (api: string, method: string) => {
196
91
  args: Codec<any[]>;
@@ -198,10 +93,7 @@ declare const getDynamicBuilder: (metadata: V14 | V15) => {
198
93
  };
199
94
  buildCall: (pallet: string, name: string) => {
200
95
  codec: Codec<any>;
201
- location: [
202
- number,
203
- number
204
- ];
96
+ location: [number, number];
205
97
  };
206
98
  buildConstant: (pallet: string, constantName: string) => Codec<any>;
207
99
  ss58Prefix: number | undefined;
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ module.exports = __toCommonJS(src_exports);
38
38
 
39
39
  // src/lookups.ts
40
40
  var isBytes = (value, nBytes) => value.type === "array" && value.len === nBytes && value.value.type === "primitive" && value.value.value === "u8";
41
+ var _void = { type: "void" };
41
42
  var getLookupFn = (lookupData) => {
42
43
  const lookups = /* @__PURE__ */ new Map();
43
44
  const from = /* @__PURE__ */ new Set();
@@ -73,7 +74,7 @@ var getLookupFn = (lookupData) => {
73
74
  const getLookupEntryDef = withCache2((id) => {
74
75
  const { def, path, params } = lookupData[id];
75
76
  if (def.tag === "composite") {
76
- if (def.value.length === 0) return { type: "void" };
77
+ if (def.value.length === 0) return _void;
77
78
  if (def.value.length === 1) {
78
79
  const inner = getLookupEntryDef(def.value[0].type);
79
80
  if (isAccountId32SearchOn && path.at(-1) === "AccountId32" && isBytes(inner, 32)) {
@@ -86,24 +87,7 @@ var getLookupFn = (lookupData) => {
86
87
  }
87
88
  return inner;
88
89
  }
89
- let allKey = true;
90
- const values = {};
91
- const innerDocs = {};
92
- def.value.forEach((x, idx) => {
93
- allKey = allKey && !!x.name;
94
- const key = x.name || idx;
95
- values[key] = getLookupEntryDef(x.type);
96
- innerDocs[key] = x.docs;
97
- });
98
- return allKey ? {
99
- type: "struct",
100
- value: values,
101
- innerDocs
102
- } : {
103
- type: "tuple",
104
- value: Object.values(values),
105
- innerDocs: Object.values(innerDocs)
106
- };
90
+ return getComplexVar(def.value);
107
91
  }
108
92
  if (def.tag === "variant") {
109
93
  if (path.length === 1 && path[0] === "Option" && params.length === 1 && params[0].name === "T") {
@@ -126,14 +110,14 @@ var getLookupFn = (lookupData) => {
126
110
  }
127
111
  };
128
112
  }
129
- if (def.value.length === 0) return { type: "void" };
113
+ if (def.value.length === 0) return _void;
130
114
  const enumValue = {};
131
115
  const enumDocs = {};
132
116
  def.value.forEach((x) => {
133
117
  const key = x.name;
134
118
  enumDocs[key] = x.docs;
135
119
  if (x.fields.length === 0) {
136
- enumValue[key] = { type: "void", idx: x.index };
120
+ enumValue[key] = { ..._void, idx: x.index };
137
121
  return;
138
122
  }
139
123
  if (x.fields.length === 1 && !x.fields[0].name) {
@@ -144,38 +128,7 @@ var getLookupFn = (lookupData) => {
144
128
  };
145
129
  return;
146
130
  }
147
- let allKey = true;
148
- const values = {};
149
- const innerDocs = {};
150
- x.fields.forEach((x2, idx) => {
151
- allKey = allKey && !!x2.name;
152
- const key2 = x2.name || idx;
153
- values[key2] = getLookupEntryDef(x2.type);
154
- innerDocs[key2] = x2.docs;
155
- });
156
- if (allKey) {
157
- enumValue[key] = {
158
- type: "struct",
159
- value: values,
160
- innerDocs,
161
- idx: x.index
162
- };
163
- } else {
164
- const valuesArr = Object.values(values);
165
- const innerDocsArr = Object.values(innerDocs);
166
- const areAllSame = valuesArr.every((v) => v.id === valuesArr[0].id);
167
- enumValue[key] = areAllSame && innerDocsArr.every((doc) => doc.length === 0) ? {
168
- type: "array",
169
- value: valuesArr[0],
170
- len: valuesArr.length,
171
- idx: x.index
172
- } : {
173
- type: "tuple",
174
- value: valuesArr,
175
- innerDocs: innerDocsArr,
176
- idx: x.index
177
- };
178
- }
131
+ enumValue[key] = { ...getComplexVar(x.fields), idx: x.index };
179
132
  });
180
133
  return {
181
134
  type: "enum",
@@ -183,43 +136,26 @@ var getLookupFn = (lookupData) => {
183
136
  innerDocs: enumDocs
184
137
  };
185
138
  }
186
- if (def.tag === "sequence") {
187
- const value = getLookupEntryDef(def.value);
139
+ if (def.tag === "sequence")
188
140
  return {
189
141
  type: "sequence",
190
- value
142
+ value: getLookupEntryDef(def.value)
191
143
  };
192
- }
193
144
  if (def.tag === "array") {
194
145
  const { len } = def.value;
195
146
  const value = getLookupEntryDef(def.value.type);
196
- if (len === 0) return { type: "void" };
197
- if (len === 1) return value;
198
- return {
147
+ return !len || value.type === "void" ? _void : len > 0 ? {
199
148
  type: "array",
200
149
  value,
201
150
  len: def.value.len
202
- };
151
+ } : value;
203
152
  }
204
153
  if (def.tag === "tuple") {
205
- if (def.value.length === 0) return { type: "void" };
206
- if (def.value.length === 1)
207
- return getLookupEntryDef(def.value[0]);
208
- const value = def.value.map((x) => getLookupEntryDef(x));
209
- const innerDocs = def.value.map((x) => lookupData[x].docs);
210
- const areAllSame = value.every((v) => v.id === value[0].id);
211
- if (areAllSame && innerDocs.every((doc) => doc.length === 0)) {
212
- return {
213
- type: "array",
214
- value: value[0],
215
- len: value.length
216
- };
217
- }
218
- return {
219
- type: "tuple",
220
- value,
221
- innerDocs
222
- };
154
+ if (def.value.length === 0) return _void;
155
+ return def.value.length > 1 ? getArrayOrTuple(
156
+ def.value.map((x) => getLookupEntryDef(x)),
157
+ def.value.map((x) => lookupData[x].docs)
158
+ ) : getLookupEntryDef(def.value[0]);
223
159
  }
224
160
  if (def.tag === "primitive") {
225
161
  return {
@@ -240,6 +176,40 @@ var getLookupFn = (lookupData) => {
240
176
  type: def.tag
241
177
  };
242
178
  });
179
+ const getComplexVar = (input) => {
180
+ let allKey = true;
181
+ const values = {};
182
+ const innerDocs = {};
183
+ input.forEach((x, idx) => {
184
+ allKey = allKey && !!x.name;
185
+ const key = x.name || idx;
186
+ const value = getLookupEntryDef(x.type);
187
+ if (value.type !== "void") {
188
+ values[key] = value;
189
+ innerDocs[key] = x.docs;
190
+ }
191
+ });
192
+ return allKey ? {
193
+ type: "struct",
194
+ value: values,
195
+ innerDocs
196
+ } : getArrayOrTuple(Object.values(values), Object.values(innerDocs));
197
+ };
198
+ const getArrayOrTuple = (values, innerDocs) => {
199
+ if (values.every((v) => v.id === values[0].id) && innerDocs.every((doc) => !doc.length)) {
200
+ const [value] = values;
201
+ return value.type === "void" ? _void : {
202
+ type: "array",
203
+ value: values[0],
204
+ len: values.length
205
+ };
206
+ }
207
+ return {
208
+ type: "tuple",
209
+ value: values,
210
+ innerDocs
211
+ };
212
+ };
243
213
  return getLookupEntryDef;
244
214
  };
245
215
 
@@ -267,12 +237,16 @@ var withCache = (fn, onEnterCircular, onExitCircular) => (input, cache, stack, .
267
237
  // src/dynamic-builder.ts
268
238
  var import_utils = require("@polkadot-api/utils");
269
239
  var _bytes = scale.Bin();
240
+ var bigCompact = scale.createCodec(
241
+ scale.compact[0],
242
+ scale.enhanceDecoder(scale.compact[1], BigInt)
243
+ );
270
244
  var _buildCodec = (input, cache, stack, _accountId) => {
271
245
  if (input.type === "primitive") return scale[input.value];
272
246
  if (input.type === "void") return scale._void;
273
247
  if (input.type === "AccountId32") return _accountId;
274
248
  if (input.type === "AccountId20") return scale.ethAccount;
275
- if (input.type === "compact") return scale.compact;
249
+ if (input.type === "compact") return input.isBig ? bigCompact : scale.compact;
276
250
  if (input.type === "bitSequence") return scale.bitSequence;
277
251
  const buildNextCodec = (nextInput) => buildCodec(nextInput, cache, stack, _accountId);
278
252
  const buildVector = (inner2, len) => {