@pezkuwi/typegen 16.5.5 → 16.5.6

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 (193) hide show
  1. package/LICENSE +201 -0
  2. package/augment.js +2 -0
  3. package/bundle.js +2 -0
  4. package/cjs/augment.d.ts +2 -0
  5. package/cjs/augment.js +4 -0
  6. package/cjs/bundle.d.ts +2 -0
  7. package/cjs/bundle.js +7 -0
  8. package/cjs/extractChain.js +44 -0
  9. package/cjs/fromChain.js +95 -0
  10. package/cjs/fromDefs.js +82 -0
  11. package/cjs/generate/consts.js +91 -0
  12. package/cjs/generate/errors.js +59 -0
  13. package/cjs/generate/events.js +139 -0
  14. package/cjs/generate/index.js +23 -0
  15. package/cjs/generate/interfaceRegistry.js +64 -0
  16. package/cjs/generate/lookup.js +240 -0
  17. package/cjs/generate/query.js +140 -0
  18. package/cjs/generate/rpc.js +115 -0
  19. package/cjs/generate/runtime.js +233 -0
  20. package/{build → cjs}/generate/tsDef.d.ts +1 -1
  21. package/cjs/generate/tsDef.js +254 -0
  22. package/cjs/generate/tx.js +121 -0
  23. package/cjs/generate/types.js +16 -0
  24. package/cjs/index.js +5 -0
  25. package/cjs/interfacesTs.js +28 -0
  26. package/cjs/metadataMd.js +652 -0
  27. package/cjs/package.json +3 -0
  28. package/cjs/packageDetect.js +8 -0
  29. package/cjs/packageInfo.js +4 -0
  30. package/cjs/util/assert.js +15 -0
  31. package/cjs/util/derived.js +128 -0
  32. package/cjs/util/docs.js +10 -0
  33. package/cjs/util/file.js +33 -0
  34. package/{build → cjs}/util/formatting.d.ts +1 -1
  35. package/cjs/util/formatting.js +237 -0
  36. package/cjs/util/imports.js +126 -0
  37. package/{build → cjs}/util/index.d.ts +1 -0
  38. package/cjs/util/index.js +39 -0
  39. package/cjs/util/initMeta.js +22 -0
  40. package/cjs/util/register.js +10 -0
  41. package/cjs/util/wsMeta.js +60 -0
  42. package/extractChain.d.ts +1 -0
  43. package/extractChain.js +40 -0
  44. package/fromChain.d.ts +1 -0
  45. package/fromChain.js +91 -0
  46. package/fromDefs.d.ts +1 -0
  47. package/fromDefs.js +78 -0
  48. package/generate/consts.d.ts +5 -0
  49. package/generate/consts.js +87 -0
  50. package/generate/errors.d.ts +4 -0
  51. package/generate/errors.js +55 -0
  52. package/generate/events.d.ts +5 -0
  53. package/generate/events.js +135 -0
  54. package/{src/generate/index.ts → generate/index.d.ts} +0 -3
  55. package/generate/index.js +10 -0
  56. package/generate/interfaceRegistry.d.ts +4 -0
  57. package/generate/interfaceRegistry.js +59 -0
  58. package/generate/lookup.d.ts +4 -0
  59. package/generate/lookup.js +235 -0
  60. package/generate/query.d.ts +5 -0
  61. package/generate/query.js +136 -0
  62. package/generate/rpc.d.ts +6 -0
  63. package/generate/rpc.js +110 -0
  64. package/generate/runtime.d.ts +7 -0
  65. package/generate/runtime.js +228 -0
  66. package/generate/tsDef.d.ts +16 -0
  67. package/generate/tsDef.js +246 -0
  68. package/generate/tx.d.ts +5 -0
  69. package/generate/tx.js +117 -0
  70. package/generate/types.d.ts +12 -0
  71. package/generate/types.js +13 -0
  72. package/index.d.ts +2 -0
  73. package/index.js +2 -0
  74. package/interfacesTs.d.ts +1 -0
  75. package/interfacesTs.js +24 -0
  76. package/metadataMd.d.ts +1 -0
  77. package/metadataMd.js +648 -0
  78. package/package.json +520 -24
  79. package/packageDetect.d.ts +1 -0
  80. package/{src/packageDetect.ts → packageDetect.js} +0 -8
  81. package/packageInfo.d.ts +6 -0
  82. package/packageInfo.js +1 -0
  83. package/scripts/{polkadot-types-chain-info.mjs → pezkuwi-types-chain-info.mjs} +1 -1
  84. package/scripts/{polkadot-types-from-chain.mjs → pezkuwi-types-from-chain.mjs} +1 -1
  85. package/scripts/{polkadot-types-from-defs.mjs → pezkuwi-types-from-defs.mjs} +1 -1
  86. package/{build/scripts/polkadot-types-internal-interfaces.mjs → scripts/pezkuwi-types-internal-interfaces.mjs} +1 -1
  87. package/{build/scripts/polkadot-types-internal-metadata.mjs → scripts/pezkuwi-types-internal-metadata.mjs} +1 -1
  88. package/{src/templates → templates}/calls.hbs +2 -2
  89. package/{src/templates → templates}/consts.hbs +2 -2
  90. package/{src/templates → templates}/errors.hbs +2 -2
  91. package/{src/templates → templates}/events.hbs +2 -2
  92. package/{src/templates → templates}/interfaceRegistry.hbs +2 -2
  93. package/{src/templates → templates}/lookup/types.hbs +2 -2
  94. package/{src/templates → templates}/query.hbs +2 -2
  95. package/{src/templates → templates}/rpc.hbs +2 -2
  96. package/{src/templates → templates}/tx.hbs +2 -2
  97. package/util/assert.d.ts +2 -0
  98. package/util/assert.js +10 -0
  99. package/util/derived.d.ts +4 -0
  100. package/util/derived.js +125 -0
  101. package/util/docs.d.ts +1 -0
  102. package/util/docs.js +6 -0
  103. package/util/file.d.ts +2 -0
  104. package/util/file.js +28 -0
  105. package/util/formatting.d.ts +11 -0
  106. package/util/formatting.js +230 -0
  107. package/util/imports.d.ts +23 -0
  108. package/util/imports.js +121 -0
  109. package/{src/util/index.ts → util/index.d.ts} +6 -8
  110. package/util/index.js +34 -0
  111. package/util/initMeta.d.ts +12 -0
  112. package/util/initMeta.js +19 -0
  113. package/util/register.d.ts +4 -0
  114. package/util/register.js +7 -0
  115. package/util/wsMeta.d.ts +4 -0
  116. package/util/wsMeta.js +55 -0
  117. package/build/scripts/polkadot-types-chain-info.mjs +0 -7
  118. package/build/scripts/polkadot-types-from-chain.mjs +0 -7
  119. package/build/scripts/polkadot-types-from-defs.mjs +0 -7
  120. package/scripts/polkadot-types-internal-interfaces.mjs +0 -7
  121. package/scripts/polkadot-types-internal-metadata.mjs +0 -7
  122. package/src/augment.ts +0 -5
  123. package/src/bundle.ts +0 -5
  124. package/src/extractChain.ts +0 -54
  125. package/src/fromChain.ts +0 -123
  126. package/src/fromDefs.ts +0 -106
  127. package/src/generate/consts.ts +0 -112
  128. package/src/generate/errors.ts +0 -75
  129. package/src/generate/events.ts +0 -165
  130. package/src/generate/interfaceRegistry.ts +0 -85
  131. package/src/generate/lookup.ts +0 -294
  132. package/src/generate/query.ts +0 -169
  133. package/src/generate/rpc.ts +0 -158
  134. package/src/generate/runtime.ts +0 -284
  135. package/src/generate/tsDef.ts +0 -321
  136. package/src/generate/tx.ts +0 -152
  137. package/src/generate/types.ts +0 -26
  138. package/src/index.ts +0 -6
  139. package/src/interfacesTs.ts +0 -35
  140. package/src/metadataMd.ts +0 -844
  141. package/src/packageInfo.ts +0 -6
  142. package/src/util/assert.ts +0 -18
  143. package/src/util/derived.spec.ts +0 -58
  144. package/src/util/derived.ts +0 -133
  145. package/src/util/docs.ts +0 -13
  146. package/src/util/file.ts +0 -42
  147. package/src/util/formatting.spec.ts +0 -30
  148. package/src/util/formatting.ts +0 -295
  149. package/src/util/imports.ts +0 -164
  150. package/src/util/initMeta.ts +0 -37
  151. package/src/util/register.ts +0 -12
  152. package/src/util/wsMeta.ts +0 -70
  153. package/tsconfig.build.json +0 -28
  154. package/tsconfig.build.tsbuildinfo +0 -1
  155. package/tsconfig.scripts.json +0 -19
  156. package/tsconfig.spec.json +0 -17
  157. /package/{build/augment.d.ts → augment.d.ts} +0 -0
  158. /package/{build/bundle.d.ts → bundle.d.ts} +0 -0
  159. /package/{build → cjs}/extractChain.d.ts +0 -0
  160. /package/{build → cjs}/fromChain.d.ts +0 -0
  161. /package/{build → cjs}/fromDefs.d.ts +0 -0
  162. /package/{build → cjs}/generate/consts.d.ts +0 -0
  163. /package/{build → cjs}/generate/errors.d.ts +0 -0
  164. /package/{build → cjs}/generate/events.d.ts +0 -0
  165. /package/{build → cjs}/generate/index.d.ts +0 -0
  166. /package/{build → cjs}/generate/interfaceRegistry.d.ts +0 -0
  167. /package/{build → cjs}/generate/lookup.d.ts +0 -0
  168. /package/{build → cjs}/generate/query.d.ts +0 -0
  169. /package/{build → cjs}/generate/rpc.d.ts +0 -0
  170. /package/{build → cjs}/generate/runtime.d.ts +0 -0
  171. /package/{build → cjs}/generate/tx.d.ts +0 -0
  172. /package/{build → cjs}/generate/types.d.ts +0 -0
  173. /package/{build → cjs}/index.d.ts +0 -0
  174. /package/{build → cjs}/interfacesTs.d.ts +0 -0
  175. /package/{build → cjs}/metadataMd.d.ts +0 -0
  176. /package/{build → cjs}/packageDetect.d.ts +0 -0
  177. /package/{build → cjs}/packageInfo.d.ts +0 -0
  178. /package/{build → cjs}/util/assert.d.ts +0 -0
  179. /package/{build → cjs}/util/derived.d.ts +0 -0
  180. /package/{build → cjs}/util/docs.d.ts +0 -0
  181. /package/{build → cjs}/util/file.d.ts +0 -0
  182. /package/{build → cjs}/util/imports.d.ts +0 -0
  183. /package/{build → cjs}/util/initMeta.d.ts +0 -0
  184. /package/{build → cjs}/util/register.d.ts +0 -0
  185. /package/{build → cjs}/util/wsMeta.d.ts +0 -0
  186. /package/{src/templates → templates}/docs.hbs +0 -0
  187. /package/{src/templates → templates}/header.hbs +0 -0
  188. /package/{src/templates → templates}/lookup/defs-named.hbs +0 -0
  189. /package/{src/templates → templates}/lookup/defs.hbs +0 -0
  190. /package/{src/templates → templates}/lookup/index.hbs +0 -0
  191. /package/{src/templates → templates}/tsDef/index.hbs +0 -0
  192. /package/{src/templates → templates}/tsDef/moduleTypes.hbs +0 -0
  193. /package/{src/templates → templates}/tsDef/types.hbs +0 -0
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDefaultEvents = generateDefaultEvents;
4
+ const tslib_1 = require("tslib");
5
+ const handlebars_1 = tslib_1.__importDefault(require("handlebars"));
6
+ const defaultDefs = tslib_1.__importStar(require("@pezkuwi/types/interfaces/definitions"));
7
+ const definitions_1 = tslib_1.__importDefault(require("@pezkuwi/types-augment/lookup/definitions"));
8
+ const util_1 = require("@pezkuwi/util");
9
+ const index_js_1 = require("../util/index.js");
10
+ const lookup_js_1 = require("./lookup.js");
11
+ const types_js_1 = require("./types.js");
12
+ const generateForMetaTemplate = handlebars_1.default.compile((0, index_js_1.readTemplate)('events'));
13
+ const ALIAS = [
14
+ 'symbol',
15
+ 'break',
16
+ 'case',
17
+ 'catch',
18
+ 'class',
19
+ 'const',
20
+ 'continue',
21
+ 'debugger',
22
+ 'default',
23
+ 'delete',
24
+ 'do',
25
+ 'else',
26
+ 'export',
27
+ 'extends',
28
+ 'false',
29
+ 'finally',
30
+ 'for',
31
+ 'function',
32
+ 'if',
33
+ 'import',
34
+ 'in',
35
+ 'instanceof',
36
+ 'new',
37
+ 'null',
38
+ 'return',
39
+ 'static',
40
+ 'super',
41
+ 'switch',
42
+ 'this',
43
+ 'throw',
44
+ 'true',
45
+ 'try',
46
+ 'typeof',
47
+ 'var',
48
+ 'void',
49
+ 'while',
50
+ 'with',
51
+ 'yield'
52
+ ];
53
+ /** @internal */
54
+ function generateForMeta(meta, dest, extraTypes, isStrict, customLookupDefinitions) {
55
+ (0, index_js_1.writeFile)(dest, () => {
56
+ const allTypes = {
57
+ '@pezkuwi/types-augment': {
58
+ lookup: {
59
+ ...definitions_1.default,
60
+ ...customLookupDefinitions
61
+ }
62
+ },
63
+ '@pezkuwi/types/interfaces': defaultDefs,
64
+ ...extraTypes
65
+ };
66
+ const imports = (0, index_js_1.createImports)(allTypes);
67
+ const allDefs = Object.entries(allTypes).reduce((defs, [path, obj]) => {
68
+ return Object.entries(obj).reduce((defs, [key, value]) => ({ ...defs, [`${path}/${key}`]: value }), defs);
69
+ }, {});
70
+ const { lookup, pallets, registry } = meta.asLatest;
71
+ const usedTypes = new Set([]);
72
+ const modules = pallets
73
+ .filter(({ events }) => events.isSome)
74
+ .map((data) => {
75
+ const name = data.name;
76
+ const events = data.events.unwrap();
77
+ const deprecationInfo = events.deprecationInfo.toJSON();
78
+ return {
79
+ items: lookup.getSiType(events.type).def.asVariant.variants
80
+ .map(({ docs, fields, index, name }) => {
81
+ const rawStatus = deprecationInfo?.[index.toNumber()];
82
+ if (rawStatus) {
83
+ const deprecationVariantInfo = meta.registry.createTypeUnsafe('VariantDeprecationInfoV16', [rawStatus]);
84
+ const deprecationNotice = (0, types_js_1.getDeprecationNotice)(deprecationVariantInfo, name.toString());
85
+ const notice = docs.length ? ['', deprecationNotice] : [deprecationNotice];
86
+ docs.push(...notice.map((text) => meta.registry.createType('Text', text)));
87
+ }
88
+ const args = fields
89
+ .map(({ type }) => lookup.getTypeDef(type))
90
+ .map((typeDef) => {
91
+ const arg = (0, index_js_1.rebrandTypeName)(typeDef.lookupName || '') || (0, index_js_1.formatType)(registry, allDefs, typeDef, imports);
92
+ // Add the type to the list of used types
93
+ if (!(imports.primitiveTypes[arg])) {
94
+ usedTypes.add(arg);
95
+ }
96
+ return arg;
97
+ });
98
+ const names = fields
99
+ .map(({ name }) => registry.lookup.sanitizeField(name)[0])
100
+ .filter((n) => !!n);
101
+ (0, index_js_1.setImports)(allDefs, imports, args);
102
+ return {
103
+ docs,
104
+ name: name.toString(),
105
+ type: names.length !== 0 && names.length === args.length
106
+ ? `[${names.map((n, i) => `${ALIAS.includes(n) ? `${n}_` : n}: ${args[i]}`).join(', ')}], { ${names.map((n, i) => `${n}: ${args[i]}`).join(', ')} }`
107
+ : `[${args.join(', ')}]`
108
+ };
109
+ })
110
+ .sort(index_js_1.compareName),
111
+ name: (0, util_1.stringCamelCase)(name)
112
+ };
113
+ })
114
+ .sort(index_js_1.compareName);
115
+ // filter out the unused lookup types from imports
116
+ (0, lookup_js_1.ignoreUnusedLookups)([...usedTypes], imports);
117
+ return generateForMetaTemplate({
118
+ headerType: 'chain',
119
+ imports,
120
+ isStrict,
121
+ modules,
122
+ types: [
123
+ ...Object.keys(imports.localTypes).sort().map((packagePath) => ({
124
+ file: packagePath.replace('@pezkuwi/types-augment', '@pezkuwi/types'),
125
+ types: Object.keys(imports.localTypes[packagePath])
126
+ })),
127
+ {
128
+ file: '@pezkuwi/api-base/types',
129
+ types: ['ApiTypes', 'AugmentedEvent']
130
+ }
131
+ ]
132
+ });
133
+ });
134
+ }
135
+ /** @internal */
136
+ function generateDefaultEvents(dest, data, extraTypes = {}, isStrict = false, customLookupDefinitions) {
137
+ const { metadata } = (0, index_js_1.initMeta)(data, extraTypes);
138
+ return generateForMeta(metadata, dest, extraTypes, isStrict, customLookupDefinitions);
139
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDefaultTx = exports.generateDefaultTsDef = exports.generateDefaultRuntime = exports.generateDefaultRpc = exports.generateDefaultQuery = exports.generateDefaultLookup = exports.generateDefaultInterface = exports.generateDefaultEvents = exports.generateDefaultErrors = exports.generateDefaultConsts = void 0;
4
+ var consts_js_1 = require("./consts.js");
5
+ Object.defineProperty(exports, "generateDefaultConsts", { enumerable: true, get: function () { return consts_js_1.generateDefaultConsts; } });
6
+ var errors_js_1 = require("./errors.js");
7
+ Object.defineProperty(exports, "generateDefaultErrors", { enumerable: true, get: function () { return errors_js_1.generateDefaultErrors; } });
8
+ var events_js_1 = require("./events.js");
9
+ Object.defineProperty(exports, "generateDefaultEvents", { enumerable: true, get: function () { return events_js_1.generateDefaultEvents; } });
10
+ var interfaceRegistry_js_1 = require("./interfaceRegistry.js");
11
+ Object.defineProperty(exports, "generateDefaultInterface", { enumerable: true, get: function () { return interfaceRegistry_js_1.generateDefaultInterface; } });
12
+ var lookup_js_1 = require("./lookup.js");
13
+ Object.defineProperty(exports, "generateDefaultLookup", { enumerable: true, get: function () { return lookup_js_1.generateDefaultLookup; } });
14
+ var query_js_1 = require("./query.js");
15
+ Object.defineProperty(exports, "generateDefaultQuery", { enumerable: true, get: function () { return query_js_1.generateDefaultQuery; } });
16
+ var rpc_js_1 = require("./rpc.js");
17
+ Object.defineProperty(exports, "generateDefaultRpc", { enumerable: true, get: function () { return rpc_js_1.generateDefaultRpc; } });
18
+ var runtime_js_1 = require("./runtime.js");
19
+ Object.defineProperty(exports, "generateDefaultRuntime", { enumerable: true, get: function () { return runtime_js_1.generateDefaultRuntime; } });
20
+ var tsDef_js_1 = require("./tsDef.js");
21
+ Object.defineProperty(exports, "generateDefaultTsDef", { enumerable: true, get: function () { return tsDef_js_1.generateDefaultTsDef; } });
22
+ var tx_js_1 = require("./tx.js");
23
+ Object.defineProperty(exports, "generateDefaultTx", { enumerable: true, get: function () { return tx_js_1.generateDefaultTx; } });
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateInterfaceTypes = generateInterfaceTypes;
4
+ exports.generateDefaultInterface = generateDefaultInterface;
5
+ const tslib_1 = require("tslib");
6
+ const handlebars_1 = tslib_1.__importDefault(require("handlebars"));
7
+ const codec_1 = require("@pezkuwi/types/codec");
8
+ const create_1 = require("@pezkuwi/types/create");
9
+ const defaultDefinitions = tslib_1.__importStar(require("@pezkuwi/types/interfaces/definitions"));
10
+ const defaultPrimitives = tslib_1.__importStar(require("@pezkuwi/types/primitive"));
11
+ const index_js_1 = require("../util/index.js");
12
+ const primitiveClasses = {
13
+ ...defaultPrimitives,
14
+ Json: codec_1.Json,
15
+ Raw: codec_1.Raw
16
+ };
17
+ const generateInterfaceTypesTemplate = handlebars_1.default.compile((0, index_js_1.readTemplate)('interfaceRegistry'));
18
+ /** @internal */
19
+ function generateInterfaceTypes(importDefinitions, dest) {
20
+ const registry = new create_1.TypeRegistry();
21
+ (0, index_js_1.writeFile)(dest, () => {
22
+ Object.entries(importDefinitions).reduce((acc, def) => Object.assign(acc, def), {});
23
+ const imports = (0, index_js_1.createImports)(importDefinitions);
24
+ const definitions = imports.definitions;
25
+ const items = [];
26
+ // first we create imports for our known classes from the API
27
+ Object
28
+ .keys(primitiveClasses)
29
+ .filter((name) => !name.includes('Generic'))
30
+ .forEach((primitiveName) => {
31
+ (0, index_js_1.setImports)(definitions, imports, [primitiveName]);
32
+ items.push(primitiveName);
33
+ });
34
+ const existingTypes = {};
35
+ // ensure we have everything registered since we will get the definition
36
+ // form the available types (so any unknown should show after this)
37
+ Object.values(definitions).forEach(({ types }) => {
38
+ registry.register(types);
39
+ });
40
+ // create imports for everything that we have available
41
+ Object.values(definitions).forEach(({ types }) => {
42
+ (0, index_js_1.setImports)(definitions, imports, Object.keys(types));
43
+ const uniqueTypes = Object.keys(types).filter((type) => !existingTypes[type]);
44
+ uniqueTypes.forEach((type) => {
45
+ existingTypes[type] = true;
46
+ items.push(type);
47
+ });
48
+ });
49
+ return generateInterfaceTypesTemplate({
50
+ headerType: 'defs',
51
+ imports,
52
+ items: items.sort((a, b) => a.localeCompare(b)),
53
+ types: [
54
+ ...Object.keys(imports.localTypes).sort().map((packagePath) => ({
55
+ file: packagePath,
56
+ types: Object.keys(imports.localTypes[packagePath])
57
+ }))
58
+ ]
59
+ });
60
+ });
61
+ }
62
+ function generateDefaultInterface() {
63
+ generateInterfaceTypes({ '@pezkuwi/types/interfaces': defaultDefinitions }, 'packages/types-augment/src/registry/interfaces.ts');
64
+ }
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDefaultLookup = generateDefaultLookup;
4
+ exports.ignoreUnusedLookups = ignoreUnusedLookups;
5
+ const tslib_1 = require("tslib");
6
+ const handlebars_1 = tslib_1.__importDefault(require("handlebars"));
7
+ const node_path_1 = tslib_1.__importDefault(require("node:path"));
8
+ const defaultDefinitions = tslib_1.__importStar(require("@pezkuwi/types/interfaces/definitions"));
9
+ const asset_hub_dicle_hex_1 = tslib_1.__importDefault(require("@pezkuwi/types-support/metadata/v15/asset-hub-dicle-hex"));
10
+ const asset_hub_pezkuwi_hex_1 = tslib_1.__importDefault(require("@pezkuwi/types-support/metadata/v15/asset-hub-pezkuwi-hex"));
11
+ const dicle_hex_1 = tslib_1.__importDefault(require("@pezkuwi/types-support/metadata/v15/dicle-hex"));
12
+ const pezkuwi_hex_1 = tslib_1.__importDefault(require("@pezkuwi/types-support/metadata/v15/pezkuwi-hex"));
13
+ const bizinikiwi_hex_1 = tslib_1.__importDefault(require("@pezkuwi/types-support/metadata/v15/bizinikiwi-hex"));
14
+ const util_1 = require("@pezkuwi/util");
15
+ const index_js_1 = require("../util/index.js");
16
+ const tsDef_js_1 = require("./tsDef.js");
17
+ function deepRebrandTypeDef(typeDef, isTopLevel = true) {
18
+ const rebrandedLookupName = typeDef.lookupName ? (0, index_js_1.rebrandTypeName)(typeDef.lookupName) : typeDef.lookupName;
19
+ const rebranded = {
20
+ ...typeDef,
21
+ type: (0, index_js_1.rebrandTypeName)(typeDef.type),
22
+ // For top-level types: set name from lookupName (mimics original: typeDef.name = typeDef.lookupName)
23
+ // For sub types (enum variants, struct fields): preserve the original name (field/variant name)
24
+ name: isTopLevel ? (rebrandedLookupName || typeDef.name) : typeDef.name,
25
+ lookupName: rebrandedLookupName,
26
+ lookupNameRoot: typeDef.lookupNameRoot ? (0, index_js_1.rebrandTypeName)(typeDef.lookupNameRoot) : typeDef.lookupNameRoot
27
+ };
28
+ // Recursively rebrand sub types (mark as not top-level)
29
+ if (typeDef.sub) {
30
+ if (Array.isArray(typeDef.sub)) {
31
+ rebranded.sub = typeDef.sub.map((s) => deepRebrandTypeDef(s, false));
32
+ }
33
+ else {
34
+ rebranded.sub = deepRebrandTypeDef(typeDef.sub, false);
35
+ }
36
+ }
37
+ return rebranded;
38
+ }
39
+ const WITH_TYPEDEF = false;
40
+ const generateLookupDefsTmpl = handlebars_1.default.compile((0, index_js_1.readTemplate)('lookup/defs'));
41
+ const generateLookupDefsNamedTmpl = handlebars_1.default.compile((0, index_js_1.readTemplate)('lookup/defs-named'));
42
+ const generateLookupIndexTmpl = handlebars_1.default.compile((0, index_js_1.readTemplate)('lookup/index'));
43
+ const generateLookupTypesTmpl = handlebars_1.default.compile((0, index_js_1.readTemplate)('lookup/types'));
44
+ const generateRegistryTmpl = handlebars_1.default.compile((0, index_js_1.readTemplate)('interfaceRegistry'));
45
+ function generateParamType(registry, { name, type }) {
46
+ if (type.isSome) {
47
+ const link = registry.lookup.types[type.unwrap().toNumber()];
48
+ if (link.type.path.length) {
49
+ return generateTypeDocs(registry, null, link.type.path, link.type.params);
50
+ }
51
+ }
52
+ return name.toString();
53
+ }
54
+ function generateTypeDocs(registry, id, path, params) {
55
+ return `${id ? `${registry.createLookupType(id)}${path.length ? ': ' : ''}` : ''}${path.map((p) => p.toString()).join('::')}${params.length ? `<${params.map((p) => generateParamType(registry, p)).join(', ')}>` : ''}`;
56
+ }
57
+ function formatObject(lines) {
58
+ const max = lines.length - 1;
59
+ return [
60
+ '{',
61
+ ...lines.map((l, index) => (l.endsWith(',') || l.endsWith('{') || index === max || lines[index + 1].endsWith('}') || lines[index + 1].endsWith('}'))
62
+ ? l
63
+ : `${l},`),
64
+ '}'
65
+ ];
66
+ }
67
+ function expandSet(parsed) {
68
+ return formatObject(Object.entries(parsed).reduce((all, [k, v]) => {
69
+ all.push(`${k}: ${v}`);
70
+ return all;
71
+ }, []));
72
+ }
73
+ function expandObject(parsed) {
74
+ if (parsed._set) {
75
+ return expandSet(parsed._set);
76
+ }
77
+ return formatObject(Object.entries(parsed).reduce((all, [k, v]) => {
78
+ const inner = (0, util_1.isString)(v)
79
+ ? expandType(v)
80
+ : Array.isArray(v)
81
+ ? [`[${v.map((e) => `'${e}'`).join(', ')}]`]
82
+ : expandObject(v);
83
+ inner.forEach((l, index) => {
84
+ all.push(`${index === 0
85
+ ? `${k}: ${l}`
86
+ : `${l}`}`);
87
+ });
88
+ return all;
89
+ }, []));
90
+ }
91
+ function expandType(encoded) {
92
+ if (!encoded.startsWith('{')) {
93
+ return [`'${(0, index_js_1.rebrandTypeName)(encoded)}'`];
94
+ }
95
+ return expandObject(JSON.parse(encoded));
96
+ }
97
+ function expandDefToString({ lookupNameRoot, type }, indent) {
98
+ if (lookupNameRoot) {
99
+ return `'${(0, index_js_1.rebrandTypeName)(lookupNameRoot)}'`;
100
+ }
101
+ const lines = expandType(type);
102
+ let inc = 0;
103
+ return lines.map((l, index) => {
104
+ let r;
105
+ if (l.endsWith('{')) {
106
+ r = index === 0
107
+ ? l
108
+ : `${' '.padStart(indent + inc)}${l}`;
109
+ inc += 2;
110
+ }
111
+ else {
112
+ if (l.endsWith('},') || l.endsWith('}')) {
113
+ inc -= 2;
114
+ }
115
+ r = index === 0
116
+ ? l
117
+ : `${' '.padStart(indent + inc)}${l}`;
118
+ }
119
+ return r;
120
+ }).join('\n');
121
+ }
122
+ function getFilteredTypes(lookup, exclude = []) {
123
+ const named = lookup.types.filter(({ id }) => !!lookup.getTypeDef(id).lookupName);
124
+ const names = named.map(({ id }) => lookup.getName(id));
125
+ return named
126
+ .filter((_, index) => !names.some((n, iindex) => index > iindex &&
127
+ n === names[index]))
128
+ .map((p) => [p, lookup.getTypeDef(p.id)])
129
+ .filter(([, typeDef]) => !exclude.includes(typeDef.lookupName || '<invalid>'));
130
+ }
131
+ function generateLookupDefs(registry, filtered, destDir, subPath) {
132
+ (0, index_js_1.writeFile)(node_path_1.default.join(destDir, `${subPath || 'definitions'}.ts`), () => {
133
+ const all = filtered.map(([{ id, type: { params, path } }, typeDef]) => {
134
+ const typeLookup = registry.createLookupType(id);
135
+ const def = expandDefToString(typeDef, subPath ? 2 : 4);
136
+ return {
137
+ docs: [
138
+ generateTypeDocs(registry, id, path, params),
139
+ WITH_TYPEDEF
140
+ ? `@typeDef ${(0, util_1.stringify)(typeDef)}`
141
+ : null
142
+ ].filter((d) => !!d),
143
+ type: { def, typeLookup, typeName: typeDef.lookupName ? (0, index_js_1.rebrandTypeName)(typeDef.lookupName) : undefined }
144
+ };
145
+ });
146
+ const max = all.length - 1;
147
+ return (subPath ? generateLookupDefsNamedTmpl : generateLookupDefsTmpl)({
148
+ defs: all.map(({ docs, type }, i) => {
149
+ const { def, typeLookup, typeName } = type;
150
+ return {
151
+ defs: [
152
+ [typeName || typeLookup, `${def}${i !== max ? ',' : ''}`]
153
+ ].map(([n, t]) => `${n}: ${t}`),
154
+ docs
155
+ };
156
+ }),
157
+ headerType: 'defs'
158
+ });
159
+ });
160
+ }
161
+ function generateLookupTypes(registry, filtered, destDir, subPath) {
162
+ const imports = {
163
+ ...(0, index_js_1.createImports)({ '@pezkuwi/types/interfaces': defaultDefinitions }, { types: {} }),
164
+ interfaces: []
165
+ };
166
+ const items = filtered
167
+ .map(([, typeDef]) => {
168
+ // Deep rebrand the type names (including nested sub types) before generating interfaces
169
+ const rebranded = deepRebrandTypeDef(typeDef);
170
+ return rebranded.lookupNameRoot && rebranded.lookupName
171
+ ? (0, index_js_1.exportInterface)(rebranded.lookupIndex, rebranded.lookupName, rebranded.lookupNameRoot)
172
+ : tsDef_js_1.typeEncoders[rebranded.info](registry, imports.definitions, rebranded, imports);
173
+ })
174
+ .filter((t) => !!t)
175
+ .map((t) => t.replace(/\nexport /, '\n'));
176
+ (0, index_js_1.writeFile)(node_path_1.default.join(destDir, `types${subPath ? `-${subPath}` : ''}.ts`), () => generateLookupTypesTmpl({
177
+ headerType: 'defs',
178
+ imports,
179
+ items: items.map((l) => l
180
+ .split('\n')
181
+ .map((l) => l.length ? ` ${l}` : '')
182
+ .join('\n')),
183
+ types: [
184
+ ...Object.keys(imports.localTypes).sort().map((packagePath) => ({
185
+ file: packagePath,
186
+ types: Object.keys(imports.localTypes[packagePath])
187
+ }))
188
+ ]
189
+ }), true);
190
+ (0, index_js_1.writeFile)(node_path_1.default.join(destDir, 'index.ts'), () => generateLookupIndexTmpl({ headerType: 'defs' }), true);
191
+ }
192
+ function generateRegistry(_registry, filtered, destDir, subPath) {
193
+ (0, index_js_1.writeFile)(node_path_1.default.join(destDir, `${subPath}.ts`), () => {
194
+ const items = filtered
195
+ .map(([, { lookupName }]) => lookupName ? (0, index_js_1.rebrandTypeName)(lookupName) : lookupName)
196
+ .filter((n) => !!n)
197
+ .sort()
198
+ .reduce((all, n) => all.includes(n) ? all : all.concat(n), []);
199
+ const imports = (0, index_js_1.createImports)({}, { types: {} });
200
+ imports.lookupTypes = items.reduce((all, n) => ({ ...all, [n]: true }), {});
201
+ return generateRegistryTmpl({
202
+ headerType: 'defs',
203
+ imports,
204
+ items,
205
+ types: []
206
+ });
207
+ }, true);
208
+ }
209
+ function generateLookup(destDir, entries) {
210
+ entries.reduce((exclude, [subPath, staticMeta]) => {
211
+ const { lookup, registry } = (0, index_js_1.initMeta)(staticMeta).metadata.asLatest;
212
+ const filtered = getFilteredTypes(lookup, exclude);
213
+ generateLookupDefs(registry, filtered, destDir, subPath);
214
+ generateLookupTypes(registry, filtered, destDir, subPath);
215
+ generateRegistry(registry, filtered, destDir, subPath === 'lookup' ? 'registry' : `../registry/${subPath}`);
216
+ return exclude.concat(...filtered
217
+ .map(([, typeDef]) => typeDef.lookupName)
218
+ .filter((n) => !!n));
219
+ }, []);
220
+ }
221
+ function generateDefaultLookup(destDir = 'packages/types-augment/src/lookup', staticData) {
222
+ generateLookup(destDir, staticData
223
+ ? [['lookup', staticData]]
224
+ : [
225
+ ['bizinikiwi', bizinikiwi_hex_1.default],
226
+ ['pezkuwi', pezkuwi_hex_1.default],
227
+ ['dicle', dicle_hex_1.default],
228
+ ['assetHubPezkuwi', asset_hub_pezkuwi_hex_1.default],
229
+ ['assetHubDicle', asset_hub_dicle_hex_1.default]
230
+ ]);
231
+ }
232
+ function ignoreUnusedLookups(usedTypes, imports) {
233
+ const usedStringified = usedTypes.toString();
234
+ const [lookupKey, typeDefinitions] = Object.entries(imports.localTypes).find(([typeModule, _]) => typeModule.includes('/lookup')) || ['', {}];
235
+ Object.keys(typeDefinitions).forEach((typeDef) => {
236
+ if (!(usedStringified.includes(typeDef))) {
237
+ delete (imports.localTypes[lookupKey])[typeDef];
238
+ }
239
+ });
240
+ }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDefaultQuery = generateDefaultQuery;
4
+ const tslib_1 = require("tslib");
5
+ const handlebars_1 = tslib_1.__importDefault(require("handlebars"));
6
+ const defaultDefs = tslib_1.__importStar(require("@pezkuwi/types/interfaces/definitions"));
7
+ const util_1 = require("@pezkuwi/types/util");
8
+ const definitions_1 = tslib_1.__importDefault(require("@pezkuwi/types-augment/lookup/definitions"));
9
+ const util_2 = require("@pezkuwi/util");
10
+ const index_js_1 = require("../util/index.js");
11
+ const lookup_js_1 = require("./lookup.js");
12
+ const types_js_1 = require("./types.js");
13
+ const generateForMetaTemplate = handlebars_1.default.compile((0, index_js_1.readTemplate)('query'));
14
+ /** @internal */
15
+ function entrySignature(lookup, allDefs, registry, section, storageEntry, imports) {
16
+ try {
17
+ const outputType = lookup.getTypeDef((0, util_1.unwrapStorageSi)(storageEntry.type));
18
+ if (storageEntry.type.isPlain) {
19
+ const typeDef = lookup.getTypeDef(storageEntry.type.asPlain);
20
+ (0, index_js_1.setImports)(allDefs, imports, [
21
+ (0, index_js_1.rebrandTypeName)(typeDef.lookupName || typeDef.type),
22
+ storageEntry.modifier.isOptional
23
+ ? 'Option'
24
+ : null
25
+ ]);
26
+ return [storageEntry.modifier.isOptional, '', '', (0, index_js_1.formatType)(registry, allDefs, outputType, imports)];
27
+ }
28
+ else if (storageEntry.type.isMap) {
29
+ const { hashers, key, value } = storageEntry.type.asMap;
30
+ const keyDefs = hashers.length === 1
31
+ ? [lookup.getTypeDef(key)]
32
+ : lookup.getSiType(key).def.asTuple.map((k) => lookup.getTypeDef(k));
33
+ const similarTypes = keyDefs.map((k) => (0, index_js_1.getSimilarTypes)(registry, allDefs, k.lookupName || k.type, imports));
34
+ const keyTypes = similarTypes.map((t) => t.join(' | '));
35
+ const defValue = lookup.getTypeDef(value);
36
+ (0, index_js_1.setImports)(allDefs, imports, [
37
+ ...similarTypes.reduce((all, t) => all.concat(t), []),
38
+ storageEntry.modifier.isOptional
39
+ ? 'Option'
40
+ : null,
41
+ (0, index_js_1.rebrandTypeName)(defValue.lookupName || defValue.type)
42
+ ]);
43
+ return [
44
+ storageEntry.modifier.isOptional,
45
+ keyDefs.map((k) => (0, index_js_1.formatType)(registry, allDefs, k.lookupName || k.type, imports)).join(', '),
46
+ keyTypes.map((t, i) => `arg${keyTypes.length === 1 ? '' : (i + 1)}: ${t}`).join(', '),
47
+ (0, index_js_1.rebrandTypeName)(outputType.lookupName || '') || (0, index_js_1.formatType)(registry, allDefs, outputType, imports)
48
+ ];
49
+ }
50
+ throw new Error(`Expected Plain or Map type, found ${storageEntry.type.type}`);
51
+ }
52
+ catch (error) {
53
+ throw new Error(`entrySignature: Cannot create signature for query ${section}.${storageEntry.name.toString()}:: ${error.message}`);
54
+ }
55
+ }
56
+ /** @internal */
57
+ function generateForMeta(registry, meta, dest, extraTypes, isStrict, customLookupDefinitions) {
58
+ (0, index_js_1.writeFile)(dest, () => {
59
+ const allTypes = {
60
+ '@pezkuwi/types-augment': {
61
+ lookup: {
62
+ ...definitions_1.default,
63
+ ...customLookupDefinitions
64
+ }
65
+ },
66
+ '@pezkuwi/types/interfaces': defaultDefs,
67
+ ...extraTypes
68
+ };
69
+ const imports = (0, index_js_1.createImports)(allTypes);
70
+ const allDefs = Object.entries(allTypes).reduce((defs, [path, obj]) => {
71
+ return Object.entries(obj).reduce((defs, [key, value]) => ({ ...defs, [`${path}/${key}`]: value }), defs);
72
+ }, {});
73
+ const { lookup, pallets } = meta.asLatest;
74
+ const usedTypes = new Set([]);
75
+ const modules = pallets
76
+ .filter(({ storage }) => storage.isSome)
77
+ .map(({ name, storage }) => {
78
+ const items = storage.unwrap().items
79
+ .map((storageEntry) => {
80
+ const { deprecationInfo, docs, name } = storageEntry;
81
+ const [isOptional, args, params, _returnType] = entrySignature(lookup, allDefs, registry, name.toString(), storageEntry, imports);
82
+ if (!deprecationInfo.isNotDeprecated) {
83
+ const deprecationNotice = (0, types_js_1.getDeprecationNotice)(deprecationInfo, (0, util_2.stringCamelCase)(name));
84
+ const items = docs.length
85
+ ? ['', deprecationNotice]
86
+ : [deprecationNotice];
87
+ docs.push(...items.map((text) => registry.createType('Text', text)));
88
+ }
89
+ // Add the type and args to the list of used types
90
+ if (!(imports.primitiveTypes[_returnType])) {
91
+ usedTypes.add(_returnType);
92
+ }
93
+ if (!(imports.primitiveTypes[args])) {
94
+ usedTypes.add(args);
95
+ }
96
+ const returnType = isOptional
97
+ ? `Option<${_returnType}>`
98
+ : _returnType;
99
+ return {
100
+ args,
101
+ docs,
102
+ entryType: 'AugmentedQuery',
103
+ name: (0, util_2.stringCamelCase)(storageEntry.name),
104
+ params,
105
+ returnType
106
+ };
107
+ })
108
+ .sort(index_js_1.compareName);
109
+ return {
110
+ items,
111
+ name: (0, util_2.stringCamelCase)(name)
112
+ };
113
+ })
114
+ .sort(index_js_1.compareName);
115
+ imports.typesTypes['Observable'] = true;
116
+ // filter out the unused lookup types from imports
117
+ (0, lookup_js_1.ignoreUnusedLookups)([...usedTypes], imports);
118
+ return generateForMetaTemplate({
119
+ headerType: 'chain',
120
+ imports,
121
+ isStrict,
122
+ modules,
123
+ types: [
124
+ ...Object.keys(imports.localTypes).sort().map((packagePath) => ({
125
+ file: packagePath.replace('@pezkuwi/types-augment', '@pezkuwi/types'),
126
+ types: Object.keys(imports.localTypes[packagePath])
127
+ })),
128
+ {
129
+ file: '@pezkuwi/api-base/types',
130
+ types: ['ApiTypes', 'AugmentedQuery', 'QueryableStorageEntry']
131
+ }
132
+ ]
133
+ });
134
+ });
135
+ }
136
+ /** @internal */
137
+ function generateDefaultQuery(dest, data, extraTypes = {}, isStrict = false, customLookupDefinitions) {
138
+ const { metadata, registry } = (0, index_js_1.initMeta)(data, extraTypes);
139
+ return generateForMeta(registry, metadata, dest, extraTypes, isStrict, customLookupDefinitions);
140
+ }