// Copyright 2017-2022 @polkadot/networks authors & contributors // SPDX-License-Identifier: Apache-2.0 import fs from 'fs'; import fetch from 'node-fetch'; import { substrateRegistry } from '../build/defaults.js'; const substrateRegistryRepo = substrateRegistry .replace('raw.githubusercontent.com', 'github.com') .split('main')[0]; function outputField (k, v) { if (typeof v === 'string') { return `'${v}'`; } else if (Array.isArray(v)) { // new format is [] to indicate optionality return (['decimals', 'symbols'].includes(k) && !v.length) ? null : `[${v.map((v) => outputField(k, v)).join(', ')}]`; } return v; } async function getSubstrateRegistry () { const original = await fetch(substrateRegistry); const json = await original.json(); return json.registry .map((e) => ` {\n${Object .entries(e) .sort(([a], [b]) => a.localeCompare(b)) .map(([k, v]) => ` ${k}: ${outputField(k, v)}`) .join(',\n')}\n }` ) .join(',\n'); } getSubstrateRegistry() .then((entries) => { fs.writeFileSync('packages/networks/src/substrate.ts', `// Copyright 2017-2022 @polkadot/networks authors & contributors // SPDX-License-Identifier: Apache-2.0 // // Auto-generated by yarn networks:sync (via scripts/fromSubstrate.mjs) // // This file should never be edited manually. Rather the process is as follow - // // - make a PR to the upstream registry found at ${substrateRegistryRepo} // - ensure the PR gets merged // - yarn networks:sync in this repo to sync // // Any manual changes to this file will make CI cron checks fail and will be // lost when the registry is updated alongside the above sync. // import type { KnownSubstrate } from './types'; export const knownSubstrate: KnownSubstrate[] = [\n${entries}\n]; `); console.log('Completed.'); process.exit(0); }) .catch((error) => { console.error('Error:', error.message); process.exit(-1); });