@polkadot-api/compare-runtimes 0.0.1 → 0.2.1
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/esm/compare-runtimes.mjs +55 -22
- package/dist/esm/compare-runtimes.mjs.map +1 -1
- package/dist/esm/mapped-metadata.mjs +10 -1
- package/dist/esm/mapped-metadata.mjs.map +1 -1
- package/dist/esm/shallow-diff.mjs +9 -0
- package/dist/esm/shallow-diff.mjs.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.js +72 -22
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { mapLookupToTypedef, entryPointsAreCompatible, runtimeCallEntryPoint, storageEntryPoint, singleValueEntryPoint, enumValueEntryPointNode, voidEntryPointNode } from '@polkadot-api/metadata-compatibility';
|
|
2
|
-
import { getMappedMetadata } from './mapped-metadata.mjs';
|
|
3
|
-
import { unifyMetadata, decAnyMetadata } from '@polkadot-api/substrate-bindings';
|
|
4
1
|
import { getLookupFn } from '@polkadot-api/metadata-builders';
|
|
2
|
+
import { mapLookupToTypedef, entryPointsAreCompatible, singleValueEntryPoint, runtimeCallEntryPoint, storageEntryPoint, enumValueEntryPointNode, voidEntryPointNode } from '@polkadot-api/metadata-compatibility';
|
|
3
|
+
import { unifyMetadata, decAnyMetadata } from '@polkadot-api/substrate-bindings';
|
|
4
|
+
import { getMappedMetadata } from './mapped-metadata.mjs';
|
|
5
5
|
import { shallowDiff } from './shallow-diff.mjs';
|
|
6
|
+
import { mapObject } from '@polkadot-api/utils';
|
|
6
7
|
|
|
7
8
|
const getEnumEntry = (entry, side) => {
|
|
8
9
|
const node = enumValueEntryPointNode(entry);
|
|
@@ -19,7 +20,11 @@ const getMetadataHelpers = (rawMetadata) => {
|
|
|
19
20
|
const metadataMaps = getMappedMetadata(metadata, lookupFn);
|
|
20
21
|
return { lookupFn, getTypeDefNode, metadataMaps };
|
|
21
22
|
};
|
|
22
|
-
const minCompatLevel = (
|
|
23
|
+
const minCompatLevel = (results) => Math.min(results.args.level, results.values.level);
|
|
24
|
+
const compatLevel = (results) => ({
|
|
25
|
+
args: results.args.level,
|
|
26
|
+
values: results.values.level
|
|
27
|
+
});
|
|
23
28
|
const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
24
29
|
const [prev, next] = [prevMetadata, nextMetadata].map(getMetadataHelpers);
|
|
25
30
|
const cache = /* @__PURE__ */ new Map();
|
|
@@ -64,6 +69,26 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
64
69
|
)
|
|
65
70
|
};
|
|
66
71
|
};
|
|
72
|
+
const compareExtension = (name) => {
|
|
73
|
+
const prevExtensions = prev.metadataMaps.extensions[name];
|
|
74
|
+
const newExtensions = next.metadataMaps.extensions[name];
|
|
75
|
+
return {
|
|
76
|
+
kind: "extension",
|
|
77
|
+
name,
|
|
78
|
+
compat: mapObject(
|
|
79
|
+
prevExtensions,
|
|
80
|
+
(type, key) => minCompatLevel(
|
|
81
|
+
entryPointsAreCompatible(
|
|
82
|
+
singleValueEntryPoint(type),
|
|
83
|
+
prev.getTypeDefNode,
|
|
84
|
+
singleValueEntryPoint(newExtensions[key]),
|
|
85
|
+
next.getTypeDefNode,
|
|
86
|
+
cache
|
|
87
|
+
)
|
|
88
|
+
)
|
|
89
|
+
)
|
|
90
|
+
};
|
|
91
|
+
};
|
|
67
92
|
const compareStorage = (pallet, name) => {
|
|
68
93
|
const a = prev.metadataMaps.pallets[pallet].storage.get(name);
|
|
69
94
|
const b = next.metadataMaps.pallets[pallet].storage.get(name);
|
|
@@ -71,12 +96,14 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
71
96
|
kind: "storage",
|
|
72
97
|
pallet,
|
|
73
98
|
name,
|
|
74
|
-
compat:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
99
|
+
compat: compatLevel(
|
|
100
|
+
entryPointsAreCompatible(
|
|
101
|
+
storageEntryPoint(a),
|
|
102
|
+
prev.getTypeDefNode,
|
|
103
|
+
storageEntryPoint(b),
|
|
104
|
+
next.getTypeDefNode,
|
|
105
|
+
cache
|
|
106
|
+
)
|
|
80
107
|
)
|
|
81
108
|
};
|
|
82
109
|
};
|
|
@@ -87,12 +114,14 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
87
114
|
kind: "view",
|
|
88
115
|
pallet,
|
|
89
116
|
name,
|
|
90
|
-
compat:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
117
|
+
compat: compatLevel(
|
|
118
|
+
entryPointsAreCompatible(
|
|
119
|
+
runtimeCallEntryPoint(a),
|
|
120
|
+
prev.getTypeDefNode,
|
|
121
|
+
runtimeCallEntryPoint(b),
|
|
122
|
+
next.getTypeDefNode,
|
|
123
|
+
cache
|
|
124
|
+
)
|
|
96
125
|
)
|
|
97
126
|
};
|
|
98
127
|
};
|
|
@@ -103,12 +132,14 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
103
132
|
kind: "api",
|
|
104
133
|
group,
|
|
105
134
|
name,
|
|
106
|
-
compat:
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
135
|
+
compat: compatLevel(
|
|
136
|
+
entryPointsAreCompatible(
|
|
137
|
+
runtimeCallEntryPoint(a),
|
|
138
|
+
prev.getTypeDefNode,
|
|
139
|
+
runtimeCallEntryPoint(b),
|
|
140
|
+
next.getTypeDefNode,
|
|
141
|
+
cache
|
|
142
|
+
)
|
|
112
143
|
)
|
|
113
144
|
};
|
|
114
145
|
};
|
|
@@ -125,6 +156,8 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
125
156
|
return compareViewFn(x.pallet, x.name);
|
|
126
157
|
case "api":
|
|
127
158
|
return compareRuntimeApi(x.group, x.name);
|
|
159
|
+
case "extension":
|
|
160
|
+
throw compareExtension(x.name);
|
|
128
161
|
default:
|
|
129
162
|
return compareEnumEntries(x);
|
|
130
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-runtimes.mjs","sources":["../../src/compare-runtimes.ts"],"sourcesContent":["import {\n CompatibilityLevel,\n entryPointsAreCompatible,\n enumValueEntryPointNode,\n mapLookupToTypedef,\n runtimeCallEntryPoint,\n singleValueEntryPoint,\n storageEntryPoint,\n TypedefNode,\n voidEntryPointNode,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { EnumEntry, getMappedMetadata } from \"./mapped-metadata\"\nimport { decAnyMetadata, unifyMetadata } from \"@polkadot-api/substrate-bindings\"\nimport { getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport { ComparedChange, Output } from \"./public-types\"\nimport { shallowDiff } from \"./shallow-diff\"\n\nconst getEnumEntry = (entry: EnumEntry, side: \"args\" | \"values\") => {\n const node = enumValueEntryPointNode(entry)\n return {\n args: side === \"args\" ? node : voidEntryPointNode,\n values: side === \"args\" ? voidEntryPointNode : node,\n }\n}\n\nconst getMetadataHelpers = (rawMetadata: Uint8Array) => {\n const metadata = unifyMetadata(decAnyMetadata(rawMetadata))\n const lookupFn = getLookupFn(metadata)\n const typeNodesCache: (TypedefNode | null)[] = []\n const getTypeDefNode = (id: number) =>\n (typeNodesCache[id] ||= mapLookupToTypedef(lookupFn(id)))\n const metadataMaps = getMappedMetadata(metadata, lookupFn)\n\n return { lookupFn, getTypeDefNode, metadataMaps }\n}\n\nconst minCompatLevel = (levels: {\n args: CompatibilityLevel\n values: CompatibilityLevel\n}) => Math.min(levels.args, levels.values)\n\nexport const compareRuntimes = (\n prevMetadata: Uint8Array,\n nextMetadata: Uint8Array,\n): Output => {\n const [prev, next] = [prevMetadata, nextMetadata].map(getMetadataHelpers)\n\n const cache = new Map()\n const compareEnumEntries = ({\n kind,\n pallet,\n name,\n }: {\n kind: \"call\" | \"event\" | \"error\"\n pallet: string\n name: string\n }): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]![kind].get(name)!\n const b = next.metadataMaps.pallets[pallet]![kind].get(name)!\n const argsOrValues = kind === \"call\" ? \"args\" : \"values\"\n\n return {\n kind,\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n getEnumEntry(a, argsOrValues),\n prev.getTypeDefNode,\n getEnumEntry(b, argsOrValues),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareConst = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.const.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.const.get(name)!\n\n return {\n kind: \"const\",\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n singleValueEntryPoint(a.type),\n prev.getTypeDefNode,\n singleValueEntryPoint(b.type),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareStorage = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.storage.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.storage.get(name)!\n\n return {\n kind: \"storage\",\n pallet,\n name,\n compat: entryPointsAreCompatible(\n storageEntryPoint(a),\n prev.getTypeDefNode,\n storageEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n }\n }\n\n const compareViewFn = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.view.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.view.get(name)!\n\n return {\n kind: \"view\",\n pallet,\n name,\n compat: entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n }\n }\n\n const compareRuntimeApi = (group: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.api[group]!.get(name)!\n const b = next.metadataMaps.api[group]!.get(name)!\n\n return {\n kind: \"api\",\n group,\n name,\n compat: entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n }\n }\n\n const added = shallowDiff(prev.metadataMaps, next.metadataMaps, \"added\")\n const removed = shallowDiff(next.metadataMaps, prev.metadataMaps, \"added\")\n const commonApis = shallowDiff(prev.metadataMaps, next.metadataMaps, \"kept\")\n\n const kept = commonApis.map((x) => {\n switch (x.kind) {\n case \"const\":\n return compareConst(x.pallet, x.name)\n case \"storage\":\n return compareStorage(x.pallet, x.name)\n case \"view\":\n return compareViewFn(x.pallet, x.name)\n case \"api\":\n return compareRuntimeApi(x.group, x.name)\n default:\n return compareEnumEntries(x as any)\n }\n })\n\n return { added, removed, kept }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compare-runtimes.mjs","sources":["../../src/compare-runtimes.ts"],"sourcesContent":["import { getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport {\n CompatibilityResult,\n entryPointsAreCompatible,\n enumValueEntryPointNode,\n mapLookupToTypedef,\n runtimeCallEntryPoint,\n singleValueEntryPoint,\n storageEntryPoint,\n TypedefNode,\n voidEntryPointNode,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { decAnyMetadata, unifyMetadata } from \"@polkadot-api/substrate-bindings\"\nimport { EnumEntry, getMappedMetadata } from \"./mapped-metadata\"\nimport { ComparedChange, Output } from \"./public-types\"\nimport { shallowDiff } from \"./shallow-diff\"\nimport { mapObject } from \"@polkadot-api/utils\"\n\nconst getEnumEntry = (entry: EnumEntry, side: \"args\" | \"values\") => {\n const node = enumValueEntryPointNode(entry)\n return {\n args: side === \"args\" ? node : voidEntryPointNode,\n values: side === \"args\" ? voidEntryPointNode : node,\n }\n}\n\nconst getMetadataHelpers = (rawMetadata: Uint8Array) => {\n const metadata = unifyMetadata(decAnyMetadata(rawMetadata))\n const lookupFn = getLookupFn(metadata)\n const typeNodesCache: (TypedefNode | null)[] = []\n const getTypeDefNode = (id: number) =>\n (typeNodesCache[id] ||= mapLookupToTypedef(lookupFn(id)))\n const metadataMaps = getMappedMetadata(metadata, lookupFn)\n\n return { lookupFn, getTypeDefNode, metadataMaps }\n}\n\nconst minCompatLevel = (results: {\n args: CompatibilityResult\n values: CompatibilityResult\n}) => Math.min(results.args.level, results.values.level)\nconst compatLevel = (results: {\n args: CompatibilityResult\n values: CompatibilityResult\n}) => ({\n args: results.args.level,\n values: results.values.level,\n})\n\nexport const compareRuntimes = (\n prevMetadata: Uint8Array,\n nextMetadata: Uint8Array,\n): Output => {\n const [prev, next] = [prevMetadata, nextMetadata].map(getMetadataHelpers)\n\n const cache = new Map()\n const compareEnumEntries = ({\n kind,\n pallet,\n name,\n }: {\n kind: \"call\" | \"event\" | \"error\"\n pallet: string\n name: string\n }): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]![kind].get(name)!\n const b = next.metadataMaps.pallets[pallet]![kind].get(name)!\n const argsOrValues = kind === \"call\" ? \"args\" : \"values\"\n\n return {\n kind,\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n getEnumEntry(a, argsOrValues),\n prev.getTypeDefNode,\n getEnumEntry(b, argsOrValues),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareConst = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.const.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.const.get(name)!\n\n return {\n kind: \"const\",\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n singleValueEntryPoint(a.type),\n prev.getTypeDefNode,\n singleValueEntryPoint(b.type),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareExtension = (name: string): ComparedChange => {\n const prevExtensions = prev.metadataMaps.extensions[name]\n const newExtensions = next.metadataMaps.extensions[name]\n\n return {\n kind: \"extension\",\n name,\n compat: mapObject(prevExtensions, (type, key) =>\n minCompatLevel(\n entryPointsAreCompatible(\n singleValueEntryPoint(type),\n prev.getTypeDefNode,\n singleValueEntryPoint(newExtensions[key]),\n next.getTypeDefNode,\n cache,\n ),\n ),\n ),\n }\n }\n\n const compareStorage = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.storage.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.storage.get(name)!\n\n return {\n kind: \"storage\",\n pallet,\n name,\n compat: compatLevel(\n entryPointsAreCompatible(\n storageEntryPoint(a),\n prev.getTypeDefNode,\n storageEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareViewFn = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.view.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.view.get(name)!\n\n return {\n kind: \"view\",\n pallet,\n name,\n compat: compatLevel(\n entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareRuntimeApi = (group: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.api[group]!.get(name)!\n const b = next.metadataMaps.api[group]!.get(name)!\n\n return {\n kind: \"api\",\n group,\n name,\n compat: compatLevel(\n entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const added = shallowDiff(prev.metadataMaps, next.metadataMaps, \"added\")\n const removed = shallowDiff(next.metadataMaps, prev.metadataMaps, \"added\")\n const commonApis = shallowDiff(prev.metadataMaps, next.metadataMaps, \"kept\")\n\n const kept = commonApis.map((x) => {\n switch (x.kind) {\n case \"const\":\n return compareConst(x.pallet, x.name)\n case \"storage\":\n return compareStorage(x.pallet, x.name)\n case \"view\":\n return compareViewFn(x.pallet, x.name)\n case \"api\":\n return compareRuntimeApi(x.group, x.name)\n case \"extension\":\n throw compareExtension(x.name)\n default:\n return compareEnumEntries(x as any)\n }\n })\n\n return { added, removed, kept }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,16 @@ const getMappedMetadata = (metadata, lookupFn) => {
|
|
|
50
50
|
new Map(x.methods.map((m) => [m.name, m]))
|
|
51
51
|
])
|
|
52
52
|
);
|
|
53
|
-
return {
|
|
53
|
+
return {
|
|
54
|
+
pallets,
|
|
55
|
+
api,
|
|
56
|
+
extensions: Object.fromEntries(
|
|
57
|
+
metadata.extrinsic.signedExtensions.map(({ identifier, ...rest2 }) => [
|
|
58
|
+
identifier,
|
|
59
|
+
rest2
|
|
60
|
+
])
|
|
61
|
+
)
|
|
62
|
+
};
|
|
54
63
|
};
|
|
55
64
|
|
|
56
65
|
export { getMappedMetadata };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapped-metadata.mjs","sources":["../../src/mapped-metadata.ts"],"sourcesContent":["import { LookupEntry } from \"@polkadot-api/metadata-builders\"\nimport { UnifiedMetadata } from \"@polkadot-api/substrate-bindings\"\nimport type {\n StructVar,\n ArrayVar,\n TupleVar,\n VoidVar,\n} from \"@polkadot-api/metadata-builders\"\nimport { mapObject } from \"@polkadot-api/utils\"\n\nexport type EnumEntry = (\n | VoidVar\n | TupleVar\n | StructVar\n | ArrayVar\n | {\n type: \"lookupEntry\"\n value: LookupEntry\n }\n) & {\n idx: number\n}\n\nexport type MetadataMaps = {\n pallets: Record<\n string,\n {\n storage: Map<\n string,\n NonNullable<\n UnifiedMetadata[\"pallets\"][number][\"storage\"]\n >[\"items\"][number]\n >\n event: Map<string, EnumEntry>\n error: Map<string, EnumEntry>\n call: Map<string, EnumEntry>\n const: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"constants\"]>[number]\n >\n view: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"viewFns\"]>[number]\n >\n }\n >\n api: Record<\n string,\n Map<string, NonNullable<UnifiedMetadata[\"apis\"][number][\"methods\"][number]>>\n >\n}\n\nconst buildVariants = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n) =>\n Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [error, event, call] = [\n \"errors\" as const,\n \"events\" as const,\n \"calls\" as const,\n ].map((variantType) => {\n try {\n const lookup = lookupFn(palletEntry[variantType]!.type)\n if (lookup.type !== \"enum\") throw null\n return new Map(Object.entries(lookup.value))\n } catch {\n return new Map()\n }\n })\n return [palletEntry.name, { error, event, call }]\n }),\n )\n\nexport const getMappedMetadata = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n): MetadataMaps => {\n const palletVariants = buildVariants(metadata, lookupFn)\n const rest = Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [constants, view] = [\"constants\" as const, \"viewFns\" as const].map(\n (entryType) => new Map(palletEntry[entryType].map((x) => [x.name, x])),\n )\n return [palletEntry.name, { const: constants, view }]\n }),\n ) as Record<string, Pick<MetadataMaps[\"pallets\"][string], \"const\" | \"view\">>\n const storage = Object.fromEntries(\n metadata.pallets.map((palletEntry) => [\n palletEntry.name,\n new Map((palletEntry.storage?.items || []).map((x) => [x.name, x])),\n ]),\n ) as Record<string, MetadataMaps[\"pallets\"][string][\"storage\"]>\n\n const pallets: MetadataMaps[\"pallets\"] = mapObject(\n palletVariants,\n ({ error, event, call }, key) => ({\n error,\n event,\n call,\n storage: storage[key],\n ...rest[key],\n }),\n )\n\n const api: MetadataMaps[\"api\"] = Object.fromEntries(\n metadata.apis.map((x) => [\n x.name,\n new Map(x.methods.map((m) => [m.name, m])),\n ]),\n )\n\n return {
|
|
1
|
+
{"version":3,"file":"mapped-metadata.mjs","sources":["../../src/mapped-metadata.ts"],"sourcesContent":["import { LookupEntry } from \"@polkadot-api/metadata-builders\"\nimport { UnifiedMetadata } from \"@polkadot-api/substrate-bindings\"\nimport type {\n StructVar,\n ArrayVar,\n TupleVar,\n VoidVar,\n} from \"@polkadot-api/metadata-builders\"\nimport { mapObject } from \"@polkadot-api/utils\"\n\nexport type EnumEntry = (\n | VoidVar\n | TupleVar\n | StructVar\n | ArrayVar\n | {\n type: \"lookupEntry\"\n value: LookupEntry\n }\n) & {\n idx: number\n}\n\nexport type MetadataMaps = {\n pallets: Record<\n string,\n {\n storage: Map<\n string,\n NonNullable<\n UnifiedMetadata[\"pallets\"][number][\"storage\"]\n >[\"items\"][number]\n >\n event: Map<string, EnumEntry>\n error: Map<string, EnumEntry>\n call: Map<string, EnumEntry>\n const: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"constants\"]>[number]\n >\n view: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"viewFns\"]>[number]\n >\n }\n >\n api: Record<\n string,\n Map<string, NonNullable<UnifiedMetadata[\"apis\"][number][\"methods\"][number]>>\n >\n extensions: Record<string, { type: number; additionalSigned: number }>\n}\n\nconst buildVariants = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n) =>\n Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [error, event, call] = [\n \"errors\" as const,\n \"events\" as const,\n \"calls\" as const,\n ].map((variantType) => {\n try {\n const lookup = lookupFn(palletEntry[variantType]!.type)\n if (lookup.type !== \"enum\") throw null\n return new Map(Object.entries(lookup.value))\n } catch {\n return new Map()\n }\n })\n return [palletEntry.name, { error, event, call }]\n }),\n )\n\nexport const getMappedMetadata = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n): MetadataMaps => {\n const palletVariants = buildVariants(metadata, lookupFn)\n const rest = Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [constants, view] = [\"constants\" as const, \"viewFns\" as const].map(\n (entryType) => new Map(palletEntry[entryType].map((x) => [x.name, x])),\n )\n return [palletEntry.name, { const: constants, view }]\n }),\n ) as Record<string, Pick<MetadataMaps[\"pallets\"][string], \"const\" | \"view\">>\n const storage = Object.fromEntries(\n metadata.pallets.map((palletEntry) => [\n palletEntry.name,\n new Map((palletEntry.storage?.items || []).map((x) => [x.name, x])),\n ]),\n ) as Record<string, MetadataMaps[\"pallets\"][string][\"storage\"]>\n\n const pallets: MetadataMaps[\"pallets\"] = mapObject(\n palletVariants,\n ({ error, event, call }, key) => ({\n error,\n event,\n call,\n storage: storage[key],\n ...rest[key],\n }),\n )\n\n const api: MetadataMaps[\"api\"] = Object.fromEntries(\n metadata.apis.map((x) => [\n x.name,\n new Map(x.methods.map((m) => [m.name, m])),\n ]),\n )\n\n return {\n pallets,\n api,\n extensions: Object.fromEntries(\n metadata.extrinsic.signedExtensions.map(({ identifier, ...rest }) => [\n identifier,\n rest,\n ]),\n ),\n }\n}\n"],"names":["rest"],"mappings":"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"}
|
|
@@ -33,6 +33,15 @@ const shallowDiff = (prev, next, type) => {
|
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
|
+
Object.keys(next.extensions).forEach((name) => {
|
|
37
|
+
const isInPrev = !!prev.extensions[name];
|
|
38
|
+
if (type === "added" ? !isInPrev : isInPrev) {
|
|
39
|
+
result.push({
|
|
40
|
+
kind: "extension",
|
|
41
|
+
name
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
36
45
|
return result;
|
|
37
46
|
};
|
|
38
47
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shallow-diff.mjs","sources":["../../src/shallow-diff.ts"],"sourcesContent":["import { MetadataMaps } from \"./mapped-metadata\"\nimport { Change } from \"./public-types\"\n\nexport const shallowDiff = (\n prev: MetadataMaps,\n next: MetadataMaps,\n type: \"added\" | \"kept\",\n): Array<Change> => {\n const result: Array<Change> = []\n Object.entries(next.pallets).forEach(([palletName, data]) => {\n ;[\n \"const\" as const,\n \"storage\" as const,\n \"call\" as const,\n \"event\" as const,\n \"error\" as const,\n \"view\" as const,\n ].forEach((x) => {\n ;[...data[x as \"storage\"].keys()].forEach((key) => {\n const isInPrev = prev.pallets[palletName]?.[x as \"storage\"].has(key)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: x,\n pallet: palletName,\n name: key,\n })\n }\n })\n })\n })\n\n Object.entries(next.api).forEach(([apiGroup, val]) => {\n ;[...val.keys()].forEach((x) => {\n const isInPrev = prev.api[apiGroup]?.has(x)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: \"api\",\n group: apiGroup,\n name: x,\n })\n }\n })\n })\n\n return result\n}\n"],"names":[],"mappings":"AAGO,MAAM,WAAc,GAAA,CACzB,IACA,EAAA,IAAA,EACA,IACkB,KAAA;AAClB,EAAA,MAAM,SAAwB,EAAC;AAC/B,EAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,UAAY,EAAA,IAAI,CAAM,KAAA;AAC1D,IAAA;AAAA,MACC,OAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAE,OAAQ,CAAA,CAAC,CAAM,KAAA;AACd,MAAC,CAAA,GAAG,KAAK,CAAc,CAAA,CAAE,MAAM,CAAA,CAAE,OAAQ,CAAA,CAAC,GAAQ,KAAA;AACjD,QAAM,MAAA,QAAA,GAAW,KAAK,OAAQ,CAAA,UAAU,IAAI,CAAc,CAAA,CAAE,IAAI,GAAG,CAAA;AACnE,QAAA,IAAI,IAAS,KAAA,OAAA,GAAU,CAAC,QAAA,GAAW,QAAU,EAAA;AAC3C,UAAA,MAAA,CAAO,IAAK,CAAA;AAAA,YACV,IAAM,EAAA,CAAA;AAAA,YACN,MAAQ,EAAA,UAAA;AAAA,YACR,IAAM,EAAA;AAAA,WACP,CAAA;AAAA;AACH,OACD,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AAED,EAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA,CAAE,QAAQ,CAAC,CAAC,QAAU,EAAA,GAAG,CAAM,KAAA;AACnD,IAAA,CAAC,GAAG,GAAI,CAAA,IAAA,EAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AAC9B,MAAA,MAAM,WAAW,IAAK,CAAA,GAAA,CAAI,QAAQ,CAAA,EAAG,IAAI,CAAC,CAAA;AAC1C,MAAA,IAAI,IAAS,KAAA,OAAA,GAAU,CAAC,QAAA,GAAW,QAAU,EAAA;AAC3C,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,IAAM,EAAA,KAAA;AAAA,UACN,KAAO,EAAA,QAAA;AAAA,UACP,IAAM,EAAA;AAAA,SACP,CAAA;AAAA;AACH,KACD,CAAA;AAAA,GACF,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"shallow-diff.mjs","sources":["../../src/shallow-diff.ts"],"sourcesContent":["import { MetadataMaps } from \"./mapped-metadata\"\nimport { Change } from \"./public-types\"\n\nexport const shallowDiff = (\n prev: MetadataMaps,\n next: MetadataMaps,\n type: \"added\" | \"kept\",\n): Array<Change> => {\n const result: Array<Change> = []\n Object.entries(next.pallets).forEach(([palletName, data]) => {\n ;[\n \"const\" as const,\n \"storage\" as const,\n \"call\" as const,\n \"event\" as const,\n \"error\" as const,\n \"view\" as const,\n ].forEach((x) => {\n ;[...data[x as \"storage\"].keys()].forEach((key) => {\n const isInPrev = prev.pallets[palletName]?.[x as \"storage\"].has(key)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: x,\n pallet: palletName,\n name: key,\n })\n }\n })\n })\n })\n\n Object.entries(next.api).forEach(([apiGroup, val]) => {\n ;[...val.keys()].forEach((x) => {\n const isInPrev = prev.api[apiGroup]?.has(x)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: \"api\",\n group: apiGroup,\n name: x,\n })\n }\n })\n })\n\n Object.keys(next.extensions).forEach((name) => {\n const isInPrev = !!prev.extensions[name]\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: \"extension\",\n name,\n })\n }\n })\n\n return result\n}\n"],"names":[],"mappings":"AAGO,MAAM,WAAc,GAAA,CACzB,IACA,EAAA,IAAA,EACA,IACkB,KAAA;AAClB,EAAA,MAAM,SAAwB,EAAC;AAC/B,EAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,UAAY,EAAA,IAAI,CAAM,KAAA;AAC1D,IAAA;AAAA,MACC,OAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAE,OAAQ,CAAA,CAAC,CAAM,KAAA;AACd,MAAC,CAAA,GAAG,KAAK,CAAc,CAAA,CAAE,MAAM,CAAA,CAAE,OAAQ,CAAA,CAAC,GAAQ,KAAA;AACjD,QAAM,MAAA,QAAA,GAAW,KAAK,OAAQ,CAAA,UAAU,IAAI,CAAc,CAAA,CAAE,IAAI,GAAG,CAAA;AACnE,QAAA,IAAI,IAAS,KAAA,OAAA,GAAU,CAAC,QAAA,GAAW,QAAU,EAAA;AAC3C,UAAA,MAAA,CAAO,IAAK,CAAA;AAAA,YACV,IAAM,EAAA,CAAA;AAAA,YACN,MAAQ,EAAA,UAAA;AAAA,YACR,IAAM,EAAA;AAAA,WACP,CAAA;AAAA;AACH,OACD,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AAED,EAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA,CAAE,QAAQ,CAAC,CAAC,QAAU,EAAA,GAAG,CAAM,KAAA;AACnD,IAAA,CAAC,GAAG,GAAI,CAAA,IAAA,EAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AAC9B,MAAA,MAAM,WAAW,IAAK,CAAA,GAAA,CAAI,QAAQ,CAAA,EAAG,IAAI,CAAC,CAAA;AAC1C,MAAA,IAAI,IAAS,KAAA,OAAA,GAAU,CAAC,QAAA,GAAW,QAAU,EAAA;AAC3C,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,IAAM,EAAA,KAAA;AAAA,UACN,KAAO,EAAA,QAAA;AAAA,UACP,IAAM,EAAA;AAAA,SACP,CAAA;AAAA;AACH,KACD,CAAA;AAAA,GACF,CAAA;AAED,EAAA,MAAA,CAAO,KAAK,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC7C,IAAA,MAAM,QAAW,GAAA,CAAC,CAAC,IAAA,CAAK,WAAW,IAAI,CAAA;AACvC,IAAA,IAAI,IAAS,KAAA,OAAA,GAAU,CAAC,QAAA,GAAW,QAAU,EAAA;AAC3C,MAAA,MAAA,CAAO,IAAK,CAAA;AAAA,QACV,IAAM,EAAA,WAAA;AAAA,QACN;AAAA,OACD,CAAA;AAAA;AACH,GACD,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,9 @@ type Change = {
|
|
|
9
9
|
kind: "api";
|
|
10
10
|
group: string;
|
|
11
11
|
name: string;
|
|
12
|
+
} | {
|
|
13
|
+
kind: "extension";
|
|
14
|
+
name: string;
|
|
12
15
|
};
|
|
13
16
|
type ComparedChange = {
|
|
14
17
|
kind: "call" | "event" | "error" | "const";
|
|
@@ -31,6 +34,13 @@ type ComparedChange = {
|
|
|
31
34
|
args: CompatibilityLevel;
|
|
32
35
|
values: CompatibilityLevel;
|
|
33
36
|
};
|
|
37
|
+
} | {
|
|
38
|
+
kind: "extension";
|
|
39
|
+
name: string;
|
|
40
|
+
compat: {
|
|
41
|
+
type: CompatibilityLevel;
|
|
42
|
+
additionalSigned: CompatibilityLevel;
|
|
43
|
+
};
|
|
34
44
|
};
|
|
35
45
|
type Output = {
|
|
36
46
|
added: Array<Change>;
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var metadataBuilders = require('@polkadot-api/metadata-builders');
|
|
3
4
|
var metadataCompatibility = require('@polkadot-api/metadata-compatibility');
|
|
4
|
-
var utils = require('@polkadot-api/utils');
|
|
5
5
|
var substrateBindings = require('@polkadot-api/substrate-bindings');
|
|
6
|
-
var
|
|
6
|
+
var utils = require('@polkadot-api/utils');
|
|
7
7
|
|
|
8
8
|
const buildVariants = (metadata, lookupFn) => Object.fromEntries(
|
|
9
9
|
metadata.pallets.map((palletEntry) => {
|
|
@@ -55,7 +55,16 @@ const getMappedMetadata = (metadata, lookupFn) => {
|
|
|
55
55
|
new Map(x.methods.map((m) => [m.name, m]))
|
|
56
56
|
])
|
|
57
57
|
);
|
|
58
|
-
return {
|
|
58
|
+
return {
|
|
59
|
+
pallets,
|
|
60
|
+
api,
|
|
61
|
+
extensions: Object.fromEntries(
|
|
62
|
+
metadata.extrinsic.signedExtensions.map(({ identifier, ...rest2 }) => [
|
|
63
|
+
identifier,
|
|
64
|
+
rest2
|
|
65
|
+
])
|
|
66
|
+
)
|
|
67
|
+
};
|
|
59
68
|
};
|
|
60
69
|
|
|
61
70
|
const shallowDiff = (prev, next, type) => {
|
|
@@ -93,6 +102,15 @@ const shallowDiff = (prev, next, type) => {
|
|
|
93
102
|
}
|
|
94
103
|
});
|
|
95
104
|
});
|
|
105
|
+
Object.keys(next.extensions).forEach((name) => {
|
|
106
|
+
const isInPrev = !!prev.extensions[name];
|
|
107
|
+
if (type === "added" ? !isInPrev : isInPrev) {
|
|
108
|
+
result.push({
|
|
109
|
+
kind: "extension",
|
|
110
|
+
name
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
});
|
|
96
114
|
return result;
|
|
97
115
|
};
|
|
98
116
|
|
|
@@ -111,7 +129,11 @@ const getMetadataHelpers = (rawMetadata) => {
|
|
|
111
129
|
const metadataMaps = getMappedMetadata(metadata, lookupFn);
|
|
112
130
|
return { lookupFn, getTypeDefNode, metadataMaps };
|
|
113
131
|
};
|
|
114
|
-
const minCompatLevel = (
|
|
132
|
+
const minCompatLevel = (results) => Math.min(results.args.level, results.values.level);
|
|
133
|
+
const compatLevel = (results) => ({
|
|
134
|
+
args: results.args.level,
|
|
135
|
+
values: results.values.level
|
|
136
|
+
});
|
|
115
137
|
const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
116
138
|
const [prev, next] = [prevMetadata, nextMetadata].map(getMetadataHelpers);
|
|
117
139
|
const cache = /* @__PURE__ */ new Map();
|
|
@@ -156,6 +178,26 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
156
178
|
)
|
|
157
179
|
};
|
|
158
180
|
};
|
|
181
|
+
const compareExtension = (name) => {
|
|
182
|
+
const prevExtensions = prev.metadataMaps.extensions[name];
|
|
183
|
+
const newExtensions = next.metadataMaps.extensions[name];
|
|
184
|
+
return {
|
|
185
|
+
kind: "extension",
|
|
186
|
+
name,
|
|
187
|
+
compat: utils.mapObject(
|
|
188
|
+
prevExtensions,
|
|
189
|
+
(type, key) => minCompatLevel(
|
|
190
|
+
metadataCompatibility.entryPointsAreCompatible(
|
|
191
|
+
metadataCompatibility.singleValueEntryPoint(type),
|
|
192
|
+
prev.getTypeDefNode,
|
|
193
|
+
metadataCompatibility.singleValueEntryPoint(newExtensions[key]),
|
|
194
|
+
next.getTypeDefNode,
|
|
195
|
+
cache
|
|
196
|
+
)
|
|
197
|
+
)
|
|
198
|
+
)
|
|
199
|
+
};
|
|
200
|
+
};
|
|
159
201
|
const compareStorage = (pallet, name) => {
|
|
160
202
|
const a = prev.metadataMaps.pallets[pallet].storage.get(name);
|
|
161
203
|
const b = next.metadataMaps.pallets[pallet].storage.get(name);
|
|
@@ -163,12 +205,14 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
163
205
|
kind: "storage",
|
|
164
206
|
pallet,
|
|
165
207
|
name,
|
|
166
|
-
compat:
|
|
167
|
-
metadataCompatibility.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
208
|
+
compat: compatLevel(
|
|
209
|
+
metadataCompatibility.entryPointsAreCompatible(
|
|
210
|
+
metadataCompatibility.storageEntryPoint(a),
|
|
211
|
+
prev.getTypeDefNode,
|
|
212
|
+
metadataCompatibility.storageEntryPoint(b),
|
|
213
|
+
next.getTypeDefNode,
|
|
214
|
+
cache
|
|
215
|
+
)
|
|
172
216
|
)
|
|
173
217
|
};
|
|
174
218
|
};
|
|
@@ -179,12 +223,14 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
179
223
|
kind: "view",
|
|
180
224
|
pallet,
|
|
181
225
|
name,
|
|
182
|
-
compat:
|
|
183
|
-
metadataCompatibility.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
226
|
+
compat: compatLevel(
|
|
227
|
+
metadataCompatibility.entryPointsAreCompatible(
|
|
228
|
+
metadataCompatibility.runtimeCallEntryPoint(a),
|
|
229
|
+
prev.getTypeDefNode,
|
|
230
|
+
metadataCompatibility.runtimeCallEntryPoint(b),
|
|
231
|
+
next.getTypeDefNode,
|
|
232
|
+
cache
|
|
233
|
+
)
|
|
188
234
|
)
|
|
189
235
|
};
|
|
190
236
|
};
|
|
@@ -195,12 +241,14 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
195
241
|
kind: "api",
|
|
196
242
|
group,
|
|
197
243
|
name,
|
|
198
|
-
compat:
|
|
199
|
-
metadataCompatibility.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
244
|
+
compat: compatLevel(
|
|
245
|
+
metadataCompatibility.entryPointsAreCompatible(
|
|
246
|
+
metadataCompatibility.runtimeCallEntryPoint(a),
|
|
247
|
+
prev.getTypeDefNode,
|
|
248
|
+
metadataCompatibility.runtimeCallEntryPoint(b),
|
|
249
|
+
next.getTypeDefNode,
|
|
250
|
+
cache
|
|
251
|
+
)
|
|
204
252
|
)
|
|
205
253
|
};
|
|
206
254
|
};
|
|
@@ -217,6 +265,8 @@ const compareRuntimes = (prevMetadata, nextMetadata) => {
|
|
|
217
265
|
return compareViewFn(x.pallet, x.name);
|
|
218
266
|
case "api":
|
|
219
267
|
return compareRuntimeApi(x.group, x.name);
|
|
268
|
+
case "extension":
|
|
269
|
+
throw compareExtension(x.name);
|
|
220
270
|
default:
|
|
221
271
|
return compareEnumEntries(x);
|
|
222
272
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/mapped-metadata.ts","../src/shallow-diff.ts","../src/compare-runtimes.ts"],"sourcesContent":["import { LookupEntry } from \"@polkadot-api/metadata-builders\"\nimport { UnifiedMetadata } from \"@polkadot-api/substrate-bindings\"\nimport type {\n StructVar,\n ArrayVar,\n TupleVar,\n VoidVar,\n} from \"@polkadot-api/metadata-builders\"\nimport { mapObject } from \"@polkadot-api/utils\"\n\nexport type EnumEntry = (\n | VoidVar\n | TupleVar\n | StructVar\n | ArrayVar\n | {\n type: \"lookupEntry\"\n value: LookupEntry\n }\n) & {\n idx: number\n}\n\nexport type MetadataMaps = {\n pallets: Record<\n string,\n {\n storage: Map<\n string,\n NonNullable<\n UnifiedMetadata[\"pallets\"][number][\"storage\"]\n >[\"items\"][number]\n >\n event: Map<string, EnumEntry>\n error: Map<string, EnumEntry>\n call: Map<string, EnumEntry>\n const: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"constants\"]>[number]\n >\n view: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"viewFns\"]>[number]\n >\n }\n >\n api: Record<\n string,\n Map<string, NonNullable<UnifiedMetadata[\"apis\"][number][\"methods\"][number]>>\n >\n}\n\nconst buildVariants = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n) =>\n Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [error, event, call] = [\n \"errors\" as const,\n \"events\" as const,\n \"calls\" as const,\n ].map((variantType) => {\n try {\n const lookup = lookupFn(palletEntry[variantType]!.type)\n if (lookup.type !== \"enum\") throw null\n return new Map(Object.entries(lookup.value))\n } catch {\n return new Map()\n }\n })\n return [palletEntry.name, { error, event, call }]\n }),\n )\n\nexport const getMappedMetadata = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n): MetadataMaps => {\n const palletVariants = buildVariants(metadata, lookupFn)\n const rest = Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [constants, view] = [\"constants\" as const, \"viewFns\" as const].map(\n (entryType) => new Map(palletEntry[entryType].map((x) => [x.name, x])),\n )\n return [palletEntry.name, { const: constants, view }]\n }),\n ) as Record<string, Pick<MetadataMaps[\"pallets\"][string], \"const\" | \"view\">>\n const storage = Object.fromEntries(\n metadata.pallets.map((palletEntry) => [\n palletEntry.name,\n new Map((palletEntry.storage?.items || []).map((x) => [x.name, x])),\n ]),\n ) as Record<string, MetadataMaps[\"pallets\"][string][\"storage\"]>\n\n const pallets: MetadataMaps[\"pallets\"] = mapObject(\n palletVariants,\n ({ error, event, call }, key) => ({\n error,\n event,\n call,\n storage: storage[key],\n ...rest[key],\n }),\n )\n\n const api: MetadataMaps[\"api\"] = Object.fromEntries(\n metadata.apis.map((x) => [\n x.name,\n new Map(x.methods.map((m) => [m.name, m])),\n ]),\n )\n\n return { pallets, api }\n}\n","import { MetadataMaps } from \"./mapped-metadata\"\nimport { Change } from \"./public-types\"\n\nexport const shallowDiff = (\n prev: MetadataMaps,\n next: MetadataMaps,\n type: \"added\" | \"kept\",\n): Array<Change> => {\n const result: Array<Change> = []\n Object.entries(next.pallets).forEach(([palletName, data]) => {\n ;[\n \"const\" as const,\n \"storage\" as const,\n \"call\" as const,\n \"event\" as const,\n \"error\" as const,\n \"view\" as const,\n ].forEach((x) => {\n ;[...data[x as \"storage\"].keys()].forEach((key) => {\n const isInPrev = prev.pallets[palletName]?.[x as \"storage\"].has(key)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: x,\n pallet: palletName,\n name: key,\n })\n }\n })\n })\n })\n\n Object.entries(next.api).forEach(([apiGroup, val]) => {\n ;[...val.keys()].forEach((x) => {\n const isInPrev = prev.api[apiGroup]?.has(x)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: \"api\",\n group: apiGroup,\n name: x,\n })\n }\n })\n })\n\n return result\n}\n","import {\n CompatibilityLevel,\n entryPointsAreCompatible,\n enumValueEntryPointNode,\n mapLookupToTypedef,\n runtimeCallEntryPoint,\n singleValueEntryPoint,\n storageEntryPoint,\n TypedefNode,\n voidEntryPointNode,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { EnumEntry, getMappedMetadata } from \"./mapped-metadata\"\nimport { decAnyMetadata, unifyMetadata } from \"@polkadot-api/substrate-bindings\"\nimport { getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport { ComparedChange, Output } from \"./public-types\"\nimport { shallowDiff } from \"./shallow-diff\"\n\nconst getEnumEntry = (entry: EnumEntry, side: \"args\" | \"values\") => {\n const node = enumValueEntryPointNode(entry)\n return {\n args: side === \"args\" ? node : voidEntryPointNode,\n values: side === \"args\" ? voidEntryPointNode : node,\n }\n}\n\nconst getMetadataHelpers = (rawMetadata: Uint8Array) => {\n const metadata = unifyMetadata(decAnyMetadata(rawMetadata))\n const lookupFn = getLookupFn(metadata)\n const typeNodesCache: (TypedefNode | null)[] = []\n const getTypeDefNode = (id: number) =>\n (typeNodesCache[id] ||= mapLookupToTypedef(lookupFn(id)))\n const metadataMaps = getMappedMetadata(metadata, lookupFn)\n\n return { lookupFn, getTypeDefNode, metadataMaps }\n}\n\nconst minCompatLevel = (levels: {\n args: CompatibilityLevel\n values: CompatibilityLevel\n}) => Math.min(levels.args, levels.values)\n\nexport const compareRuntimes = (\n prevMetadata: Uint8Array,\n nextMetadata: Uint8Array,\n): Output => {\n const [prev, next] = [prevMetadata, nextMetadata].map(getMetadataHelpers)\n\n const cache = new Map()\n const compareEnumEntries = ({\n kind,\n pallet,\n name,\n }: {\n kind: \"call\" | \"event\" | \"error\"\n pallet: string\n name: string\n }): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]![kind].get(name)!\n const b = next.metadataMaps.pallets[pallet]![kind].get(name)!\n const argsOrValues = kind === \"call\" ? \"args\" : \"values\"\n\n return {\n kind,\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n getEnumEntry(a, argsOrValues),\n prev.getTypeDefNode,\n getEnumEntry(b, argsOrValues),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareConst = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.const.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.const.get(name)!\n\n return {\n kind: \"const\",\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n singleValueEntryPoint(a.type),\n prev.getTypeDefNode,\n singleValueEntryPoint(b.type),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareStorage = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.storage.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.storage.get(name)!\n\n return {\n kind: \"storage\",\n pallet,\n name,\n compat: entryPointsAreCompatible(\n storageEntryPoint(a),\n prev.getTypeDefNode,\n storageEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n }\n }\n\n const compareViewFn = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.view.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.view.get(name)!\n\n return {\n kind: \"view\",\n pallet,\n name,\n compat: entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n }\n }\n\n const compareRuntimeApi = (group: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.api[group]!.get(name)!\n const b = next.metadataMaps.api[group]!.get(name)!\n\n return {\n kind: \"api\",\n group,\n name,\n compat: entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n }\n }\n\n const added = shallowDiff(prev.metadataMaps, next.metadataMaps, \"added\")\n const removed = shallowDiff(next.metadataMaps, prev.metadataMaps, \"added\")\n const commonApis = shallowDiff(prev.metadataMaps, next.metadataMaps, \"kept\")\n\n const kept = commonApis.map((x) => {\n switch (x.kind) {\n case \"const\":\n return compareConst(x.pallet, x.name)\n case \"storage\":\n return compareStorage(x.pallet, x.name)\n case \"view\":\n return compareViewFn(x.pallet, x.name)\n case \"api\":\n return compareRuntimeApi(x.group, x.name)\n default:\n return compareEnumEntries(x as any)\n }\n })\n\n return { added, removed, kept }\n}\n"],"names":["mapObject","enumValueEntryPointNode","voidEntryPointNode","unifyMetadata","decAnyMetadata","getLookupFn","mapLookupToTypedef","entryPointsAreCompatible","singleValueEntryPoint","storageEntryPoint","runtimeCallEntryPoint"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/mapped-metadata.ts","../src/shallow-diff.ts","../src/compare-runtimes.ts"],"sourcesContent":["import { LookupEntry } from \"@polkadot-api/metadata-builders\"\nimport { UnifiedMetadata } from \"@polkadot-api/substrate-bindings\"\nimport type {\n StructVar,\n ArrayVar,\n TupleVar,\n VoidVar,\n} from \"@polkadot-api/metadata-builders\"\nimport { mapObject } from \"@polkadot-api/utils\"\n\nexport type EnumEntry = (\n | VoidVar\n | TupleVar\n | StructVar\n | ArrayVar\n | {\n type: \"lookupEntry\"\n value: LookupEntry\n }\n) & {\n idx: number\n}\n\nexport type MetadataMaps = {\n pallets: Record<\n string,\n {\n storage: Map<\n string,\n NonNullable<\n UnifiedMetadata[\"pallets\"][number][\"storage\"]\n >[\"items\"][number]\n >\n event: Map<string, EnumEntry>\n error: Map<string, EnumEntry>\n call: Map<string, EnumEntry>\n const: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"constants\"]>[number]\n >\n view: Map<\n string,\n NonNullable<UnifiedMetadata[\"pallets\"][number][\"viewFns\"]>[number]\n >\n }\n >\n api: Record<\n string,\n Map<string, NonNullable<UnifiedMetadata[\"apis\"][number][\"methods\"][number]>>\n >\n extensions: Record<string, { type: number; additionalSigned: number }>\n}\n\nconst buildVariants = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n) =>\n Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [error, event, call] = [\n \"errors\" as const,\n \"events\" as const,\n \"calls\" as const,\n ].map((variantType) => {\n try {\n const lookup = lookupFn(palletEntry[variantType]!.type)\n if (lookup.type !== \"enum\") throw null\n return new Map(Object.entries(lookup.value))\n } catch {\n return new Map()\n }\n })\n return [palletEntry.name, { error, event, call }]\n }),\n )\n\nexport const getMappedMetadata = (\n metadata: UnifiedMetadata,\n lookupFn: (id: number) => LookupEntry,\n): MetadataMaps => {\n const palletVariants = buildVariants(metadata, lookupFn)\n const rest = Object.fromEntries(\n metadata.pallets.map((palletEntry) => {\n const [constants, view] = [\"constants\" as const, \"viewFns\" as const].map(\n (entryType) => new Map(palletEntry[entryType].map((x) => [x.name, x])),\n )\n return [palletEntry.name, { const: constants, view }]\n }),\n ) as Record<string, Pick<MetadataMaps[\"pallets\"][string], \"const\" | \"view\">>\n const storage = Object.fromEntries(\n metadata.pallets.map((palletEntry) => [\n palletEntry.name,\n new Map((palletEntry.storage?.items || []).map((x) => [x.name, x])),\n ]),\n ) as Record<string, MetadataMaps[\"pallets\"][string][\"storage\"]>\n\n const pallets: MetadataMaps[\"pallets\"] = mapObject(\n palletVariants,\n ({ error, event, call }, key) => ({\n error,\n event,\n call,\n storage: storage[key],\n ...rest[key],\n }),\n )\n\n const api: MetadataMaps[\"api\"] = Object.fromEntries(\n metadata.apis.map((x) => [\n x.name,\n new Map(x.methods.map((m) => [m.name, m])),\n ]),\n )\n\n return {\n pallets,\n api,\n extensions: Object.fromEntries(\n metadata.extrinsic.signedExtensions.map(({ identifier, ...rest }) => [\n identifier,\n rest,\n ]),\n ),\n }\n}\n","import { MetadataMaps } from \"./mapped-metadata\"\nimport { Change } from \"./public-types\"\n\nexport const shallowDiff = (\n prev: MetadataMaps,\n next: MetadataMaps,\n type: \"added\" | \"kept\",\n): Array<Change> => {\n const result: Array<Change> = []\n Object.entries(next.pallets).forEach(([palletName, data]) => {\n ;[\n \"const\" as const,\n \"storage\" as const,\n \"call\" as const,\n \"event\" as const,\n \"error\" as const,\n \"view\" as const,\n ].forEach((x) => {\n ;[...data[x as \"storage\"].keys()].forEach((key) => {\n const isInPrev = prev.pallets[palletName]?.[x as \"storage\"].has(key)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: x,\n pallet: palletName,\n name: key,\n })\n }\n })\n })\n })\n\n Object.entries(next.api).forEach(([apiGroup, val]) => {\n ;[...val.keys()].forEach((x) => {\n const isInPrev = prev.api[apiGroup]?.has(x)\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: \"api\",\n group: apiGroup,\n name: x,\n })\n }\n })\n })\n\n Object.keys(next.extensions).forEach((name) => {\n const isInPrev = !!prev.extensions[name]\n if (type === \"added\" ? !isInPrev : isInPrev) {\n result.push({\n kind: \"extension\",\n name,\n })\n }\n })\n\n return result\n}\n","import { getLookupFn } from \"@polkadot-api/metadata-builders\"\nimport {\n CompatibilityResult,\n entryPointsAreCompatible,\n enumValueEntryPointNode,\n mapLookupToTypedef,\n runtimeCallEntryPoint,\n singleValueEntryPoint,\n storageEntryPoint,\n TypedefNode,\n voidEntryPointNode,\n} from \"@polkadot-api/metadata-compatibility\"\nimport { decAnyMetadata, unifyMetadata } from \"@polkadot-api/substrate-bindings\"\nimport { EnumEntry, getMappedMetadata } from \"./mapped-metadata\"\nimport { ComparedChange, Output } from \"./public-types\"\nimport { shallowDiff } from \"./shallow-diff\"\nimport { mapObject } from \"@polkadot-api/utils\"\n\nconst getEnumEntry = (entry: EnumEntry, side: \"args\" | \"values\") => {\n const node = enumValueEntryPointNode(entry)\n return {\n args: side === \"args\" ? node : voidEntryPointNode,\n values: side === \"args\" ? voidEntryPointNode : node,\n }\n}\n\nconst getMetadataHelpers = (rawMetadata: Uint8Array) => {\n const metadata = unifyMetadata(decAnyMetadata(rawMetadata))\n const lookupFn = getLookupFn(metadata)\n const typeNodesCache: (TypedefNode | null)[] = []\n const getTypeDefNode = (id: number) =>\n (typeNodesCache[id] ||= mapLookupToTypedef(lookupFn(id)))\n const metadataMaps = getMappedMetadata(metadata, lookupFn)\n\n return { lookupFn, getTypeDefNode, metadataMaps }\n}\n\nconst minCompatLevel = (results: {\n args: CompatibilityResult\n values: CompatibilityResult\n}) => Math.min(results.args.level, results.values.level)\nconst compatLevel = (results: {\n args: CompatibilityResult\n values: CompatibilityResult\n}) => ({\n args: results.args.level,\n values: results.values.level,\n})\n\nexport const compareRuntimes = (\n prevMetadata: Uint8Array,\n nextMetadata: Uint8Array,\n): Output => {\n const [prev, next] = [prevMetadata, nextMetadata].map(getMetadataHelpers)\n\n const cache = new Map()\n const compareEnumEntries = ({\n kind,\n pallet,\n name,\n }: {\n kind: \"call\" | \"event\" | \"error\"\n pallet: string\n name: string\n }): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]![kind].get(name)!\n const b = next.metadataMaps.pallets[pallet]![kind].get(name)!\n const argsOrValues = kind === \"call\" ? \"args\" : \"values\"\n\n return {\n kind,\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n getEnumEntry(a, argsOrValues),\n prev.getTypeDefNode,\n getEnumEntry(b, argsOrValues),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareConst = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.const.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.const.get(name)!\n\n return {\n kind: \"const\",\n pallet,\n name,\n compat: minCompatLevel(\n entryPointsAreCompatible(\n singleValueEntryPoint(a.type),\n prev.getTypeDefNode,\n singleValueEntryPoint(b.type),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareExtension = (name: string): ComparedChange => {\n const prevExtensions = prev.metadataMaps.extensions[name]\n const newExtensions = next.metadataMaps.extensions[name]\n\n return {\n kind: \"extension\",\n name,\n compat: mapObject(prevExtensions, (type, key) =>\n minCompatLevel(\n entryPointsAreCompatible(\n singleValueEntryPoint(type),\n prev.getTypeDefNode,\n singleValueEntryPoint(newExtensions[key]),\n next.getTypeDefNode,\n cache,\n ),\n ),\n ),\n }\n }\n\n const compareStorage = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.storage.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.storage.get(name)!\n\n return {\n kind: \"storage\",\n pallet,\n name,\n compat: compatLevel(\n entryPointsAreCompatible(\n storageEntryPoint(a),\n prev.getTypeDefNode,\n storageEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareViewFn = (pallet: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.pallets[pallet]!.view.get(name)!\n const b = next.metadataMaps.pallets[pallet]!.view.get(name)!\n\n return {\n kind: \"view\",\n pallet,\n name,\n compat: compatLevel(\n entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const compareRuntimeApi = (group: string, name: string): ComparedChange => {\n const a = prev.metadataMaps.api[group]!.get(name)!\n const b = next.metadataMaps.api[group]!.get(name)!\n\n return {\n kind: \"api\",\n group,\n name,\n compat: compatLevel(\n entryPointsAreCompatible(\n runtimeCallEntryPoint(a),\n prev.getTypeDefNode,\n runtimeCallEntryPoint(b),\n next.getTypeDefNode,\n cache,\n ),\n ),\n }\n }\n\n const added = shallowDiff(prev.metadataMaps, next.metadataMaps, \"added\")\n const removed = shallowDiff(next.metadataMaps, prev.metadataMaps, \"added\")\n const commonApis = shallowDiff(prev.metadataMaps, next.metadataMaps, \"kept\")\n\n const kept = commonApis.map((x) => {\n switch (x.kind) {\n case \"const\":\n return compareConst(x.pallet, x.name)\n case \"storage\":\n return compareStorage(x.pallet, x.name)\n case \"view\":\n return compareViewFn(x.pallet, x.name)\n case \"api\":\n return compareRuntimeApi(x.group, x.name)\n case \"extension\":\n throw compareExtension(x.name)\n default:\n return compareEnumEntries(x as any)\n }\n })\n\n return { added, removed, kept }\n}\n"],"names":["mapObject","rest","enumValueEntryPointNode","voidEntryPointNode","unifyMetadata","decAnyMetadata","getLookupFn","mapLookupToTypedef","entryPointsAreCompatible","singleValueEntryPoint","storageEntryPoint","runtimeCallEntryPoint"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polkadot-api/compare-runtimes",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"author": "Josep M Sobrepere (https://github.com/josepot)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"dist"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@polkadot-api/metadata-builders": "0.12.2",
|
|
39
38
|
"@polkadot-api/substrate-bindings": "0.14.0",
|
|
40
|
-
"@polkadot-api/metadata-compatibility": "0.
|
|
39
|
+
"@polkadot-api/metadata-compatibility": "0.3.0",
|
|
40
|
+
"@polkadot-api/metadata-builders": "0.12.2",
|
|
41
41
|
"@polkadot-api/utils": "0.2.0"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|