@polkadot-api/cli 0.19.5-canary.d38c3ed → 0.20.0

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.
@@ -1,4 +1,4 @@
1
- var version = "0.19.4";
1
+ var version = "0.20.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.js.map
@@ -318,7 +318,6 @@ async function compileCodegen(packageDir) {
318
318
  emitDeclarationOnly: true,
319
319
  target: "esnext",
320
320
  module: "esnext",
321
- moduleResolution: "node",
322
321
  resolveJsonModule: true,
323
322
  allowSyntheticDefaultImports: true,
324
323
  outDir
@@ -354,7 +353,9 @@ const generateIndex = async (path2, keys, publicTypes, metadatas) => {
354
353
  `export {`,
355
354
  publicTypes.join(", "),
356
355
  `} from './common-types';`,
357
- `const metadatas = {${Object.entries(metadatas).map(([codeHash, key]) => `["${codeHash}"]: ${key}`).join(",\n")}}`,
356
+ `const metadatas: Record<string, { getMetadata: () => Promise<Uint8Array> }> = {${Object.entries(
357
+ metadatas
358
+ ).map(([codeHash, key]) => `["${codeHash}"]: ${key}`).join(",\n")}}`,
358
359
  cacheMetadataStr,
359
360
  `export type WhitelistEntry = ${keys.map((key) => `${capitalize(key)}WhitelistEntry`).join(" | ")};`,
360
361
  `export type WhitelistEntriesByChain = Partial<{"*": WhitelistEntry[], ${keys.map((key) => `${key}: WhitelistEntry[]`).join(",\n")}}>`
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sources":["../../../../src/commands/generate.ts"],"sourcesContent":["import { getMetadata } from \"@/metadata\"\nimport { readPapiConfig } from \"@/papiConfig\"\nimport { cliVersion } from \"@/version\"\nimport {\n capitalize,\n generateInkTypes,\n generateMultipleDescriptors,\n generateSolTypes,\n type KnownTypes,\n} from \"@polkadot-api/codegen\"\nimport { getInkLookup } from \"@polkadot-api/ink-contracts\"\nimport {\n EntryPointCodec,\n TypedefCodec,\n} from \"@polkadot-api/metadata-compatibility\"\nimport {\n Binary,\n Blake2128,\n h64,\n HexString,\n Tuple,\n UnifiedMetadata,\n Vector,\n} from \"@polkadot-api/substrate-bindings\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport { spawn } from \"child_process\"\nimport { existsSync } from \"fs\"\nimport fsExists from \"fs.promises.exists\"\nimport fs, { mkdtemp, rm } from \"fs/promises\"\nimport { tmpdir } from \"os\"\nimport path, { join } from \"path\"\nimport process from \"process\"\nimport { readPackage } from \"read-pkg\"\nimport { rollup, RollupBuild } from \"rollup\"\nimport esbuild from \"rollup-plugin-esbuild\"\nimport tsc from \"tsc-prog\"\nimport { updatePackage } from \"write-package\"\nimport { detectPackageManager } from \"../packageManager\"\nimport { CommonOptions } from \"./commonOptions\"\n\nexport interface GenerateOptions extends CommonOptions {\n clientLibrary?: string\n}\n\nexport async function generate(opts: GenerateOptions) {\n if (process.env.PAPI_SKIP_GENERATE) {\n return\n }\n if (opts.whitelist) {\n console.error(\n \"The --whitelist option has been removed. The whitelist should be placed at `.papi/whitelist.ts`\",\n )\n process.exit(1)\n }\n\n const config = await readPapiConfig(opts.config)\n if (!config) {\n throw new Error(\"Can't find the Polkadot-API configuration\")\n }\n const sources = config.entries\n\n if (Object.keys(sources).length == 0) {\n console.log(\"No chains defined in config file\")\n }\n\n console.log(`Reading metadata`)\n const chains = await Promise.all(\n Object.entries(sources).map(async ([key, source]) => ({\n key,\n ...(await getMetadata(source))!,\n knownTypes: {},\n })),\n )\n\n const contracts = Object.fromEntries(\n await Promise.all(\n ([\"ink\", \"sol\"] as const).map(async (kind) => [\n kind,\n Object.fromEntries(\n await Promise.all(\n Object.entries(config[kind] ?? {}).map(async ([key, v]) => [\n key,\n toHex(Blake2128(Binary.fromText(await fs.readFile(v, \"utf-8\")))),\n ]),\n ),\n ),\n ]),\n ),\n )\n\n if (chains.length === 0) {\n console.log(\"No entries in polkadot-api.json. Nothing to generate.\")\n return\n }\n\n const whitelist = await readWhitelist(\".papi/whitelist.ts\")\n\n const descriptorsDir = join(process.cwd(), config.descriptorPath)\n if (await alreadyGenerated(descriptorsDir, chains, contracts, whitelist)) {\n console.log(\"Detected previous descriptors with no changes needed.\")\n return\n }\n\n console.log(`Generating descriptors`)\n await cleanDescriptorsPackage(config.descriptorPath)\n if (!config.options?.noDescriptorsPackage) {\n await addDescriptorsToPackageJson(config.descriptorPath)\n }\n\n const clientPath = opts.clientLibrary ?? \"polkadot-api\"\n\n const descriptorSrcDir = join(descriptorsDir, \"src\")\n const hash = await outputCodegen(\n chains,\n descriptorSrcDir,\n clientPath,\n whitelist,\n )\n\n if (config.ink || config.sol) {\n outputContractCodegen(config, descriptorSrcDir)\n }\n\n await replacePackageJson(descriptorsDir, hash)\n const cleanCodegen = await compileCodegen(descriptorsDir)\n if (cleanCodegen) {\n await tagGenerated(descriptorsDir, chains, contracts, whitelist)\n await fs.rm(descriptorSrcDir, { recursive: true })\n }\n if (!config.options?.noDescriptorsPackage) {\n await runInstall()\n await flushBundlerCache()\n }\n}\n\nasync function tagGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const filePath = join(descriptorsDir, \"generated.json\")\n\n await fs.writeFile(\n filePath,\n JSON.stringify({\n cliVersion,\n whitelist,\n chains: Object.fromEntries(\n chains.map(({ key, metadataRaw }) => [\n key,\n toHex(Blake2128(metadataRaw)),\n ]),\n ),\n contracts,\n }),\n )\n}\nasync function alreadyGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const generatedJsôn = join(descriptorsDir, \"generated.json\")\n if (!existsSync(generatedJsôn)) return false\n\n try {\n const generated = JSON.parse(\n await fs.readFile(generatedJsôn, {\n encoding: \"utf-8\",\n }),\n )\n if (\n (generated.whitelist ?? [\"*\"]).join(\",\") !=\n (whitelist ?? [\"*\"]).join(\",\") ||\n generated.cliVersion !== cliVersion\n )\n return false\n\n return (\n chains.length === Object.entries(generated.chains).length &&\n chains.every(({ key, metadataRaw }) => {\n const hash = toHex(Blake2128(metadataRaw))\n return hash === generated.chains[key]\n }) &&\n ([\"ink\", \"sol\"] as const).every(\n (kind) =>\n Object.entries(contracts[kind]).length ===\n Object.entries(generated.contracts[kind]).length &&\n Object.entries(contracts[kind]).every(\n ([k, hash]) => hash === generated.contracts[kind][k],\n ),\n )\n )\n } catch {\n return false\n }\n}\n\nasync function cleanDescriptorsPackage(path: string) {\n const descriptorsDir = join(process.cwd(), path)\n if (!existsSync(descriptorsDir)) {\n await fs.mkdir(descriptorsDir, { recursive: true })\n\n // We have to keep the package.json in git because otherwise npm install on a fresh repo would fail\n await fs.writeFile(\n join(descriptorsDir, \".gitignore\"),\n \"*\\n!.gitignore\\n!package.json\\n\",\n )\n }\n\n const distDir = join(descriptorsDir, \"dist\")\n if (existsSync(distDir)) {\n await fs.rm(distDir, { recursive: true })\n }\n}\n\nasync function addDescriptorsToPackageJson(path: string) {\n const [packageJson, protocol] = await Promise.all([\n readPackage(),\n getPackageProtocol(),\n ])\n\n const packageSource = `${protocol}:${path}`\n const currentSource = packageJson.dependencies?.[\"@polkadot-api/descriptors\"]\n if (currentSource !== packageSource) {\n await updatePackage({\n dependencies: {\n \"@polkadot-api/descriptors\": packageSource,\n },\n })\n }\n}\n\nasync function getPackageProtocol() {\n const { packageManager, version } = await detectPackageManager()\n\n switch (packageManager) {\n case \"yarn\":\n const yarnMajorVersion = Number(version.split(\".\").at(0))\n\n return yarnMajorVersion >= 2 ? \"portal\" : \"file\"\n default:\n return \"file\"\n }\n}\n\nasync function runInstall() {\n const { executable } = await detectPackageManager()\n console.log(`${executable} install`)\n const child = spawn(executable, [\"install\"], {\n stdio: \"inherit\",\n shell: true,\n env: {\n ...process.env,\n PAPI_SKIP_GENERATE: \"true\",\n },\n })\n await new Promise((resolve) => child.on(\"close\", resolve))\n}\n\nconst generateMetadataExportFile = (input: Uint8Array): string =>\n `const binMeta: string = \"${Buffer.from(input).toString(\"base64\")}\"; export default binMeta;`\n\nasync function outputCodegen(\n chains: Array<{\n key: string\n metadata: UnifiedMetadata\n metadataRaw: Uint8Array\n knownTypes: KnownTypes\n codeHash?: HexString\n genesis?: HexString\n }>,\n outputFolder: string,\n clientPath: string,\n whitelist: string[] | Record<string, string[]> | null,\n) {\n const {\n commonFileContent,\n descriptorsFileContent,\n descriptorTypesFiles,\n metadataTypes,\n typesFileContent,\n publicTypes,\n } = generateMultipleDescriptors(\n chains,\n {\n client: clientPath,\n metadataTypes: \"./metadataTypes\",\n types: \"./common-types\",\n descriptorValues: \"./descriptors\",\n common: \"./common\",\n },\n {\n whitelist: whitelist ?? undefined,\n },\n )\n\n const hash = h64(\n Binary.fromText(Array.from(metadataTypes.checksumToIdx.keys()).join(\"\")),\n )\n\n const EntryPointsCodec = Vector(EntryPointCodec)\n const TypedefsCodec = Vector(TypedefCodec)\n const TypesCodec = Tuple(EntryPointsCodec, TypedefsCodec)\n\n await fs.mkdir(outputFolder, { recursive: true })\n\n await fs.writeFile(path.join(outputFolder, \"common.ts\"), commonFileContent)\n // Going through base64 conversion instead of using binary loader because of esbuild issue\n // https://github.com/evanw/esbuild/issues/3894\n const metadataTypesBase64 = Buffer.from(\n TypesCodec.enc([metadataTypes.entryPoints, metadataTypes.typedefs]),\n ).toString(\"base64\")\n\n await fs.writeFile(\n path.join(outputFolder, \"metadataTypes.ts\"),\n `\nconst content = \"${metadataTypesBase64}\"\nexport default content\n `,\n )\n await fs.writeFile(\n path.join(outputFolder, \"descriptors.ts\"),\n descriptorsFileContent,\n )\n await fs.writeFile(\n path.join(outputFolder, \"common-types.ts\"),\n typesFileContent,\n )\n await Promise.all(\n chains\n .map((chain, i) => [\n fs.writeFile(\n join(outputFolder, `${chain.key}.ts`),\n descriptorTypesFiles[i].content,\n ),\n fs.writeFile(\n join(outputFolder, `${chain.key}_metadata.ts`),\n generateMetadataExportFile(chain.metadataRaw),\n ),\n ])\n .flat(),\n )\n\n await generateIndex(\n outputFolder,\n chains.map((chain) => chain.key),\n publicTypes,\n Object.fromEntries(\n chains.filter((x) => x.codeHash!!).map((x) => [x.codeHash, x.key]),\n ),\n )\n\n return hash\n}\n\nasync function outputContractCodegen(\n contracts: {\n ink?: Record<string, string>\n sol?: Record<string, string>\n },\n outputFolder: string,\n) {\n console.log(\"Generating smart contract types\")\n\n const contractsFolder = join(outputFolder, \"contracts\")\n if (!existsSync(contractsFolder))\n await fs.mkdir(contractsFolder, { recursive: true })\n\n const imports: string[] = []\n for (const [key, metadata] of Object.entries(contracts.ink ?? {})) {\n try {\n const types = generateInkTypes(\n getInkLookup(JSON.parse(await fs.readFile(metadata, \"utf-8\"))),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n for (const [key, metadata] of Object.entries(contracts.sol ?? {})) {\n try {\n const types = generateSolTypes(\n JSON.parse(await fs.readFile(metadata, \"utf-8\")),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n await fs.writeFile(\n join(contractsFolder, `index.ts`),\n imports.join(\"\\n\") + \"\\n\",\n )\n\n fs.appendFile(\n join(outputFolder, \"index.ts\"),\n `\n export * as contracts from './contracts';\n `,\n )\n}\n\nasync function compileCodegen(packageDir: string) {\n const srcDir = join(packageDir, \"src\")\n const outDir = join(packageDir, \"dist\")\n\n if (await fsExists(outDir)) {\n await fs.rm(outDir, { recursive: true })\n }\n\n const bundleSuccess = await bundleEsm(path.join(srcDir, \"index.ts\"), {\n dir: outDir,\n })\n\n // We need tsc to actually build the definitions file, and also perform the typecheck\n const program = tsc.createProgramFromConfig({\n basePath: srcDir,\n compilerOptions: {\n skipLibCheck: true,\n declaration: true,\n emitDeclarationOnly: true,\n target: \"esnext\",\n module: \"esnext\",\n moduleResolution: \"node\",\n resolveJsonModule: true,\n allowSyntheticDefaultImports: true,\n outDir,\n },\n })\n tsc.emit(program)\n\n const errors = [\n program.getGlobalDiagnostics(),\n program.getOptionsDiagnostics(),\n program.getSemanticDiagnostics(),\n program.getSyntacticDiagnostics(),\n program.getDeclarationDiagnostics(),\n program.getConfigFileParsingDiagnostics(),\n ].flat()\n\n return bundleSuccess && errors.length === 0\n}\n\nconst cacheMetadataStr = `\nexport const getMetadata: (codeHash: string) => Promise<Uint8Array | null> = async (\n codeHash: string\n)=> {\n try {\n return await metadatas[codeHash].getMetadata()\n } catch {}\n return null\n}`\n\nconst generateIndex = async (\n path: string,\n keys: string[],\n publicTypes: string[],\n metadatas: Record<string, string>,\n) => {\n const indexTs = [\n ...keys.flatMap((key) => [\n `import { default as ${key}, type ${capitalize(key)}WhitelistEntry } from \"./${key}\";`,\n `export { ${key} }`,\n `export type * from \"./${key}\";`,\n ]),\n `export {`,\n publicTypes.join(\", \"),\n `} from './common-types';`,\n `const metadatas = {${Object.entries(metadatas)\n .map(([codeHash, key]) => `[\"${codeHash}\"]: ${key}`)\n .join(\",\\n\")}}`,\n cacheMetadataStr,\n `export type WhitelistEntry = ${keys.map((key) => `${capitalize(key)}WhitelistEntry`).join(\" | \")};`,\n `export type WhitelistEntriesByChain = Partial<{\"*\": WhitelistEntry[], ${keys.map((key) => `${key}: WhitelistEntry[]`).join(\",\\n\")}}>`,\n ].join(\"\\n\")\n await fs.writeFile(join(path, \"index.ts\"), indexTs)\n}\n\nasync function replacePackageJson(descriptorsDir: string, version: bigint) {\n await fs.writeFile(\n join(descriptorsDir, \"package.json\"),\n `{\n \"version\": \"0.1.0-autogenerated.${version}\",\n \"name\": \"@polkadot-api/descriptors\",\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"browser\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"sideEffects\": false,\n \"peerDependencies\": {\n \"polkadot-api\": \">=2.0.0-rc.1\"\n }\n}\n`,\n )\n}\n\nasync function readWhitelist(filename: string): Promise<string[] | null> {\n if (!(await fsExists(filename))) {\n return null\n }\n\n const tmpDir = await mkdtemp(join(tmpdir(), \"papi-\"))\n try {\n await bundleEsm(filename, { file: join(tmpDir, \"index.js\") })\n const { whitelist } = await import(join(tmpDir, \"index.js\"))\n return whitelist\n } finally {\n await rm(tmpDir, { recursive: true }).catch(console.error)\n }\n}\n\nasync function flushBundlerCache() {\n try {\n const viteMetadata = join(\n process.cwd(),\n \"node_modules\",\n \".vite\",\n \"deps\",\n \"_metadata.json\",\n )\n if (await fsExists(viteMetadata)) {\n await rm(viteMetadata)\n }\n } catch (ex) {\n console.error(ex)\n }\n}\n\nconst isExternal = (id: string) => !id.startsWith(\".\") && !path.isAbsolute(id)\n\nconst scaleBinaryPlugin = () => ({\n name: \"scale-binary\",\n async load(id: string) {\n if (!id.endsWith(\".scale\")) return null\n const data = await fs.readFile(id)\n const base64 = Buffer.from(data).toString(\"base64\")\n return `const base64 = \"${base64}\";\\nexport default base64;`\n },\n})\n\nasync function bundleEsm(\n entry: string,\n output: { dir: string } | { file: string },\n) {\n let bundle: RollupBuild | undefined\n try {\n bundle = await rollup({\n input: entry,\n external: isExternal,\n plugins: [scaleBinaryPlugin(), esbuild({ target: \"es2022\" })],\n logLevel: \"silent\",\n })\n await bundle.write({\n ...output,\n format: \"es\",\n })\n return true\n } catch (ex) {\n console.error(ex)\n return false\n } finally {\n await bundle?.close()\n }\n}\n"],"names":["path"],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sources":["../../../../src/commands/generate.ts"],"sourcesContent":["import { getMetadata } from \"@/metadata\"\nimport { readPapiConfig } from \"@/papiConfig\"\nimport { cliVersion } from \"@/version\"\nimport {\n capitalize,\n generateInkTypes,\n generateMultipleDescriptors,\n generateSolTypes,\n type KnownTypes,\n} from \"@polkadot-api/codegen\"\nimport { getInkLookup } from \"@polkadot-api/ink-contracts\"\nimport {\n EntryPointCodec,\n TypedefCodec,\n} from \"@polkadot-api/metadata-compatibility\"\nimport {\n Binary,\n Blake2128,\n h64,\n HexString,\n Tuple,\n UnifiedMetadata,\n Vector,\n} from \"@polkadot-api/substrate-bindings\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport { spawn } from \"child_process\"\nimport { existsSync } from \"fs\"\nimport fsExists from \"fs.promises.exists\"\nimport fs, { mkdtemp, rm } from \"fs/promises\"\nimport { tmpdir } from \"os\"\nimport path, { join } from \"path\"\nimport process from \"process\"\nimport { readPackage } from \"read-pkg\"\nimport { rollup, RollupBuild } from \"rollup\"\nimport esbuild from \"rollup-plugin-esbuild\"\nimport tsc from \"tsc-prog\"\nimport { updatePackage } from \"write-package\"\nimport { detectPackageManager } from \"../packageManager\"\nimport { CommonOptions } from \"./commonOptions\"\n\nexport interface GenerateOptions extends CommonOptions {\n clientLibrary?: string\n}\n\nexport async function generate(opts: GenerateOptions) {\n if (process.env.PAPI_SKIP_GENERATE) {\n return\n }\n if (opts.whitelist) {\n console.error(\n \"The --whitelist option has been removed. The whitelist should be placed at `.papi/whitelist.ts`\",\n )\n process.exit(1)\n }\n\n const config = await readPapiConfig(opts.config)\n if (!config) {\n throw new Error(\"Can't find the Polkadot-API configuration\")\n }\n const sources = config.entries\n\n if (Object.keys(sources).length == 0) {\n console.log(\"No chains defined in config file\")\n }\n\n console.log(`Reading metadata`)\n const chains = await Promise.all(\n Object.entries(sources).map(async ([key, source]) => ({\n key,\n ...(await getMetadata(source))!,\n knownTypes: {},\n })),\n )\n\n const contracts = Object.fromEntries(\n await Promise.all(\n ([\"ink\", \"sol\"] as const).map(async (kind) => [\n kind,\n Object.fromEntries(\n await Promise.all(\n Object.entries(config[kind] ?? {}).map(async ([key, v]) => [\n key,\n toHex(Blake2128(Binary.fromText(await fs.readFile(v, \"utf-8\")))),\n ]),\n ),\n ),\n ]),\n ),\n )\n\n if (chains.length === 0) {\n console.log(\"No entries in polkadot-api.json. Nothing to generate.\")\n return\n }\n\n const whitelist = await readWhitelist(\".papi/whitelist.ts\")\n\n const descriptorsDir = join(process.cwd(), config.descriptorPath)\n if (await alreadyGenerated(descriptorsDir, chains, contracts, whitelist)) {\n console.log(\"Detected previous descriptors with no changes needed.\")\n return\n }\n\n console.log(`Generating descriptors`)\n await cleanDescriptorsPackage(config.descriptorPath)\n if (!config.options?.noDescriptorsPackage) {\n await addDescriptorsToPackageJson(config.descriptorPath)\n }\n\n const clientPath = opts.clientLibrary ?? \"polkadot-api\"\n\n const descriptorSrcDir = join(descriptorsDir, \"src\")\n const hash = await outputCodegen(\n chains,\n descriptorSrcDir,\n clientPath,\n whitelist,\n )\n\n if (config.ink || config.sol) {\n outputContractCodegen(config, descriptorSrcDir)\n }\n\n await replacePackageJson(descriptorsDir, hash)\n const cleanCodegen = await compileCodegen(descriptorsDir)\n if (cleanCodegen) {\n await tagGenerated(descriptorsDir, chains, contracts, whitelist)\n await fs.rm(descriptorSrcDir, { recursive: true })\n }\n if (!config.options?.noDescriptorsPackage) {\n await runInstall()\n await flushBundlerCache()\n }\n}\n\nasync function tagGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const filePath = join(descriptorsDir, \"generated.json\")\n\n await fs.writeFile(\n filePath,\n JSON.stringify({\n cliVersion,\n whitelist,\n chains: Object.fromEntries(\n chains.map(({ key, metadataRaw }) => [\n key,\n toHex(Blake2128(metadataRaw)),\n ]),\n ),\n contracts,\n }),\n )\n}\nasync function alreadyGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const generatedJsôn = join(descriptorsDir, \"generated.json\")\n if (!existsSync(generatedJsôn)) return false\n\n try {\n const generated = JSON.parse(\n await fs.readFile(generatedJsôn, {\n encoding: \"utf-8\",\n }),\n )\n if (\n (generated.whitelist ?? [\"*\"]).join(\",\") !=\n (whitelist ?? [\"*\"]).join(\",\") ||\n generated.cliVersion !== cliVersion\n )\n return false\n\n return (\n chains.length === Object.entries(generated.chains).length &&\n chains.every(({ key, metadataRaw }) => {\n const hash = toHex(Blake2128(metadataRaw))\n return hash === generated.chains[key]\n }) &&\n ([\"ink\", \"sol\"] as const).every(\n (kind) =>\n Object.entries(contracts[kind]).length ===\n Object.entries(generated.contracts[kind]).length &&\n Object.entries(contracts[kind]).every(\n ([k, hash]) => hash === generated.contracts[kind][k],\n ),\n )\n )\n } catch {\n return false\n }\n}\n\nasync function cleanDescriptorsPackage(path: string) {\n const descriptorsDir = join(process.cwd(), path)\n if (!existsSync(descriptorsDir)) {\n await fs.mkdir(descriptorsDir, { recursive: true })\n\n // We have to keep the package.json in git because otherwise npm install on a fresh repo would fail\n await fs.writeFile(\n join(descriptorsDir, \".gitignore\"),\n \"*\\n!.gitignore\\n!package.json\\n\",\n )\n }\n\n const distDir = join(descriptorsDir, \"dist\")\n if (existsSync(distDir)) {\n await fs.rm(distDir, { recursive: true })\n }\n}\n\nasync function addDescriptorsToPackageJson(path: string) {\n const [packageJson, protocol] = await Promise.all([\n readPackage(),\n getPackageProtocol(),\n ])\n\n const packageSource = `${protocol}:${path}`\n const currentSource = packageJson.dependencies?.[\"@polkadot-api/descriptors\"]\n if (currentSource !== packageSource) {\n await updatePackage({\n dependencies: {\n \"@polkadot-api/descriptors\": packageSource,\n },\n })\n }\n}\n\nasync function getPackageProtocol() {\n const { packageManager, version } = await detectPackageManager()\n\n switch (packageManager) {\n case \"yarn\":\n const yarnMajorVersion = Number(version.split(\".\").at(0))\n\n return yarnMajorVersion >= 2 ? \"portal\" : \"file\"\n default:\n return \"file\"\n }\n}\n\nasync function runInstall() {\n const { executable } = await detectPackageManager()\n console.log(`${executable} install`)\n const child = spawn(executable, [\"install\"], {\n stdio: \"inherit\",\n shell: true,\n env: {\n ...process.env,\n PAPI_SKIP_GENERATE: \"true\",\n },\n })\n await new Promise((resolve) => child.on(\"close\", resolve))\n}\n\nconst generateMetadataExportFile = (input: Uint8Array): string =>\n `const binMeta: string = \"${Buffer.from(input).toString(\"base64\")}\"; export default binMeta;`\n\nasync function outputCodegen(\n chains: Array<{\n key: string\n metadata: UnifiedMetadata\n metadataRaw: Uint8Array\n knownTypes: KnownTypes\n codeHash?: HexString\n genesis?: HexString\n }>,\n outputFolder: string,\n clientPath: string,\n whitelist: string[] | Record<string, string[]> | null,\n) {\n const {\n commonFileContent,\n descriptorsFileContent,\n descriptorTypesFiles,\n metadataTypes,\n typesFileContent,\n publicTypes,\n } = generateMultipleDescriptors(\n chains,\n {\n client: clientPath,\n metadataTypes: \"./metadataTypes\",\n types: \"./common-types\",\n descriptorValues: \"./descriptors\",\n common: \"./common\",\n },\n {\n whitelist: whitelist ?? undefined,\n },\n )\n\n const hash = h64(\n Binary.fromText(Array.from(metadataTypes.checksumToIdx.keys()).join(\"\")),\n )\n\n const EntryPointsCodec = Vector(EntryPointCodec)\n const TypedefsCodec = Vector(TypedefCodec)\n const TypesCodec = Tuple(EntryPointsCodec, TypedefsCodec)\n\n await fs.mkdir(outputFolder, { recursive: true })\n\n await fs.writeFile(path.join(outputFolder, \"common.ts\"), commonFileContent)\n // Going through base64 conversion instead of using binary loader because of esbuild issue\n // https://github.com/evanw/esbuild/issues/3894\n const metadataTypesBase64 = Buffer.from(\n TypesCodec.enc([metadataTypes.entryPoints, metadataTypes.typedefs]),\n ).toString(\"base64\")\n\n await fs.writeFile(\n path.join(outputFolder, \"metadataTypes.ts\"),\n `\nconst content = \"${metadataTypesBase64}\"\nexport default content\n `,\n )\n await fs.writeFile(\n path.join(outputFolder, \"descriptors.ts\"),\n descriptorsFileContent,\n )\n await fs.writeFile(\n path.join(outputFolder, \"common-types.ts\"),\n typesFileContent,\n )\n await Promise.all(\n chains\n .map((chain, i) => [\n fs.writeFile(\n join(outputFolder, `${chain.key}.ts`),\n descriptorTypesFiles[i].content,\n ),\n fs.writeFile(\n join(outputFolder, `${chain.key}_metadata.ts`),\n generateMetadataExportFile(chain.metadataRaw),\n ),\n ])\n .flat(),\n )\n\n await generateIndex(\n outputFolder,\n chains.map((chain) => chain.key),\n publicTypes,\n Object.fromEntries(\n chains.filter((x) => x.codeHash!!).map((x) => [x.codeHash, x.key]),\n ),\n )\n\n return hash\n}\n\nasync function outputContractCodegen(\n contracts: {\n ink?: Record<string, string>\n sol?: Record<string, string>\n },\n outputFolder: string,\n) {\n console.log(\"Generating smart contract types\")\n\n const contractsFolder = join(outputFolder, \"contracts\")\n if (!existsSync(contractsFolder))\n await fs.mkdir(contractsFolder, { recursive: true })\n\n const imports: string[] = []\n for (const [key, metadata] of Object.entries(contracts.ink ?? {})) {\n try {\n const types = generateInkTypes(\n getInkLookup(JSON.parse(await fs.readFile(metadata, \"utf-8\"))),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n for (const [key, metadata] of Object.entries(contracts.sol ?? {})) {\n try {\n const types = generateSolTypes(\n JSON.parse(await fs.readFile(metadata, \"utf-8\")),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n await fs.writeFile(\n join(contractsFolder, `index.ts`),\n imports.join(\"\\n\") + \"\\n\",\n )\n\n fs.appendFile(\n join(outputFolder, \"index.ts\"),\n `\n export * as contracts from './contracts';\n `,\n )\n}\n\nasync function compileCodegen(packageDir: string) {\n const srcDir = join(packageDir, \"src\")\n const outDir = join(packageDir, \"dist\")\n\n if (await fsExists(outDir)) {\n await fs.rm(outDir, { recursive: true })\n }\n\n const bundleSuccess = await bundleEsm(path.join(srcDir, \"index.ts\"), {\n dir: outDir,\n })\n\n // We need tsc to actually build the definitions file, and also perform the typecheck\n const program = tsc.createProgramFromConfig({\n basePath: srcDir,\n compilerOptions: {\n skipLibCheck: true,\n declaration: true,\n emitDeclarationOnly: true,\n target: \"esnext\",\n module: \"esnext\",\n resolveJsonModule: true,\n allowSyntheticDefaultImports: true,\n outDir,\n },\n })\n tsc.emit(program)\n\n const errors = [\n program.getGlobalDiagnostics(),\n program.getOptionsDiagnostics(),\n program.getSemanticDiagnostics(),\n program.getSyntacticDiagnostics(),\n program.getDeclarationDiagnostics(),\n program.getConfigFileParsingDiagnostics(),\n ].flat()\n\n return bundleSuccess && errors.length === 0\n}\n\nconst cacheMetadataStr = `\nexport const getMetadata: (codeHash: string) => Promise<Uint8Array | null> = async (\n codeHash: string\n)=> {\n try {\n return await metadatas[codeHash].getMetadata()\n } catch {}\n return null\n}`\n\nconst generateIndex = async (\n path: string,\n keys: string[],\n publicTypes: string[],\n metadatas: Record<string, string>,\n) => {\n const indexTs = [\n ...keys.flatMap((key) => [\n `import { default as ${key}, type ${capitalize(key)}WhitelistEntry } from \"./${key}\";`,\n `export { ${key} }`,\n `export type * from \"./${key}\";`,\n ]),\n `export {`,\n publicTypes.join(\", \"),\n `} from './common-types';`,\n `const metadatas: Record<string, { getMetadata: () => Promise<Uint8Array> }> = {${Object.entries(\n metadatas,\n )\n .map(([codeHash, key]) => `[\"${codeHash}\"]: ${key}`)\n .join(\",\\n\")}}`,\n cacheMetadataStr,\n `export type WhitelistEntry = ${keys.map((key) => `${capitalize(key)}WhitelistEntry`).join(\" | \")};`,\n `export type WhitelistEntriesByChain = Partial<{\"*\": WhitelistEntry[], ${keys.map((key) => `${key}: WhitelistEntry[]`).join(\",\\n\")}}>`,\n ].join(\"\\n\")\n await fs.writeFile(join(path, \"index.ts\"), indexTs)\n}\n\nasync function replacePackageJson(descriptorsDir: string, version: bigint) {\n await fs.writeFile(\n join(descriptorsDir, \"package.json\"),\n `{\n \"version\": \"0.1.0-autogenerated.${version}\",\n \"name\": \"@polkadot-api/descriptors\",\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"browser\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"sideEffects\": false,\n \"peerDependencies\": {\n \"polkadot-api\": \">=2.0.0-rc.1\"\n }\n}\n`,\n )\n}\n\nasync function readWhitelist(filename: string): Promise<string[] | null> {\n if (!(await fsExists(filename))) {\n return null\n }\n\n const tmpDir = await mkdtemp(join(tmpdir(), \"papi-\"))\n try {\n await bundleEsm(filename, { file: join(tmpDir, \"index.js\") })\n const { whitelist } = await import(join(tmpDir, \"index.js\"))\n return whitelist\n } finally {\n await rm(tmpDir, { recursive: true }).catch(console.error)\n }\n}\n\nasync function flushBundlerCache() {\n try {\n const viteMetadata = join(\n process.cwd(),\n \"node_modules\",\n \".vite\",\n \"deps\",\n \"_metadata.json\",\n )\n if (await fsExists(viteMetadata)) {\n await rm(viteMetadata)\n }\n } catch (ex) {\n console.error(ex)\n }\n}\n\nconst isExternal = (id: string) => !id.startsWith(\".\") && !path.isAbsolute(id)\n\nconst scaleBinaryPlugin = () => ({\n name: \"scale-binary\",\n async load(id: string) {\n if (!id.endsWith(\".scale\")) return null\n const data = await fs.readFile(id)\n const base64 = Buffer.from(data).toString(\"base64\")\n return `const base64 = \"${base64}\";\\nexport default base64;`\n },\n})\n\nasync function bundleEsm(\n entry: string,\n output: { dir: string } | { file: string },\n) {\n let bundle: RollupBuild | undefined\n try {\n bundle = await rollup({\n input: entry,\n external: isExternal,\n plugins: [scaleBinaryPlugin(), esbuild({ target: \"es2022\" })],\n logLevel: \"silent\",\n })\n await bundle.write({\n ...output,\n format: \"es\",\n })\n return true\n } catch (ex) {\n console.error(ex)\n return false\n } finally {\n await bundle?.close()\n }\n}\n"],"names":["path"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var version = "0.19.4";
1
+ var version = "0.20.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.js.map
@@ -318,7 +318,6 @@ async function compileCodegen(packageDir) {
318
318
  emitDeclarationOnly: true,
319
319
  target: "esnext",
320
320
  module: "esnext",
321
- moduleResolution: "node",
322
321
  resolveJsonModule: true,
323
322
  allowSyntheticDefaultImports: true,
324
323
  outDir
@@ -354,7 +353,9 @@ const generateIndex = async (path2, keys, publicTypes, metadatas) => {
354
353
  `export {`,
355
354
  publicTypes.join(", "),
356
355
  `} from './common-types';`,
357
- `const metadatas = {${Object.entries(metadatas).map(([codeHash, key]) => `["${codeHash}"]: ${key}`).join(",\n")}}`,
356
+ `const metadatas: Record<string, { getMetadata: () => Promise<Uint8Array> }> = {${Object.entries(
357
+ metadatas
358
+ ).map(([codeHash, key]) => `["${codeHash}"]: ${key}`).join(",\n")}}`,
358
359
  cacheMetadataStr,
359
360
  `export type WhitelistEntry = ${keys.map((key) => `${capitalize(key)}WhitelistEntry`).join(" | ")};`,
360
361
  `export type WhitelistEntriesByChain = Partial<{"*": WhitelistEntry[], ${keys.map((key) => `${key}: WhitelistEntry[]`).join(",\n")}}>`
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sources":["../../../src/commands/generate.ts"],"sourcesContent":["import { getMetadata } from \"@/metadata\"\nimport { readPapiConfig } from \"@/papiConfig\"\nimport { cliVersion } from \"@/version\"\nimport {\n capitalize,\n generateInkTypes,\n generateMultipleDescriptors,\n generateSolTypes,\n type KnownTypes,\n} from \"@polkadot-api/codegen\"\nimport { getInkLookup } from \"@polkadot-api/ink-contracts\"\nimport {\n EntryPointCodec,\n TypedefCodec,\n} from \"@polkadot-api/metadata-compatibility\"\nimport {\n Binary,\n Blake2128,\n h64,\n HexString,\n Tuple,\n UnifiedMetadata,\n Vector,\n} from \"@polkadot-api/substrate-bindings\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport { spawn } from \"child_process\"\nimport { existsSync } from \"fs\"\nimport fsExists from \"fs.promises.exists\"\nimport fs, { mkdtemp, rm } from \"fs/promises\"\nimport { tmpdir } from \"os\"\nimport path, { join } from \"path\"\nimport process from \"process\"\nimport { readPackage } from \"read-pkg\"\nimport { rollup, RollupBuild } from \"rollup\"\nimport esbuild from \"rollup-plugin-esbuild\"\nimport tsc from \"tsc-prog\"\nimport { updatePackage } from \"write-package\"\nimport { detectPackageManager } from \"../packageManager\"\nimport { CommonOptions } from \"./commonOptions\"\n\nexport interface GenerateOptions extends CommonOptions {\n clientLibrary?: string\n}\n\nexport async function generate(opts: GenerateOptions) {\n if (process.env.PAPI_SKIP_GENERATE) {\n return\n }\n if (opts.whitelist) {\n console.error(\n \"The --whitelist option has been removed. The whitelist should be placed at `.papi/whitelist.ts`\",\n )\n process.exit(1)\n }\n\n const config = await readPapiConfig(opts.config)\n if (!config) {\n throw new Error(\"Can't find the Polkadot-API configuration\")\n }\n const sources = config.entries\n\n if (Object.keys(sources).length == 0) {\n console.log(\"No chains defined in config file\")\n }\n\n console.log(`Reading metadata`)\n const chains = await Promise.all(\n Object.entries(sources).map(async ([key, source]) => ({\n key,\n ...(await getMetadata(source))!,\n knownTypes: {},\n })),\n )\n\n const contracts = Object.fromEntries(\n await Promise.all(\n ([\"ink\", \"sol\"] as const).map(async (kind) => [\n kind,\n Object.fromEntries(\n await Promise.all(\n Object.entries(config[kind] ?? {}).map(async ([key, v]) => [\n key,\n toHex(Blake2128(Binary.fromText(await fs.readFile(v, \"utf-8\")))),\n ]),\n ),\n ),\n ]),\n ),\n )\n\n if (chains.length === 0) {\n console.log(\"No entries in polkadot-api.json. Nothing to generate.\")\n return\n }\n\n const whitelist = await readWhitelist(\".papi/whitelist.ts\")\n\n const descriptorsDir = join(process.cwd(), config.descriptorPath)\n if (await alreadyGenerated(descriptorsDir, chains, contracts, whitelist)) {\n console.log(\"Detected previous descriptors with no changes needed.\")\n return\n }\n\n console.log(`Generating descriptors`)\n await cleanDescriptorsPackage(config.descriptorPath)\n if (!config.options?.noDescriptorsPackage) {\n await addDescriptorsToPackageJson(config.descriptorPath)\n }\n\n const clientPath = opts.clientLibrary ?? \"polkadot-api\"\n\n const descriptorSrcDir = join(descriptorsDir, \"src\")\n const hash = await outputCodegen(\n chains,\n descriptorSrcDir,\n clientPath,\n whitelist,\n )\n\n if (config.ink || config.sol) {\n outputContractCodegen(config, descriptorSrcDir)\n }\n\n await replacePackageJson(descriptorsDir, hash)\n const cleanCodegen = await compileCodegen(descriptorsDir)\n if (cleanCodegen) {\n await tagGenerated(descriptorsDir, chains, contracts, whitelist)\n await fs.rm(descriptorSrcDir, { recursive: true })\n }\n if (!config.options?.noDescriptorsPackage) {\n await runInstall()\n await flushBundlerCache()\n }\n}\n\nasync function tagGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const filePath = join(descriptorsDir, \"generated.json\")\n\n await fs.writeFile(\n filePath,\n JSON.stringify({\n cliVersion,\n whitelist,\n chains: Object.fromEntries(\n chains.map(({ key, metadataRaw }) => [\n key,\n toHex(Blake2128(metadataRaw)),\n ]),\n ),\n contracts,\n }),\n )\n}\nasync function alreadyGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const generatedJsôn = join(descriptorsDir, \"generated.json\")\n if (!existsSync(generatedJsôn)) return false\n\n try {\n const generated = JSON.parse(\n await fs.readFile(generatedJsôn, {\n encoding: \"utf-8\",\n }),\n )\n if (\n (generated.whitelist ?? [\"*\"]).join(\",\") !=\n (whitelist ?? [\"*\"]).join(\",\") ||\n generated.cliVersion !== cliVersion\n )\n return false\n\n return (\n chains.length === Object.entries(generated.chains).length &&\n chains.every(({ key, metadataRaw }) => {\n const hash = toHex(Blake2128(metadataRaw))\n return hash === generated.chains[key]\n }) &&\n ([\"ink\", \"sol\"] as const).every(\n (kind) =>\n Object.entries(contracts[kind]).length ===\n Object.entries(generated.contracts[kind]).length &&\n Object.entries(contracts[kind]).every(\n ([k, hash]) => hash === generated.contracts[kind][k],\n ),\n )\n )\n } catch {\n return false\n }\n}\n\nasync function cleanDescriptorsPackage(path: string) {\n const descriptorsDir = join(process.cwd(), path)\n if (!existsSync(descriptorsDir)) {\n await fs.mkdir(descriptorsDir, { recursive: true })\n\n // We have to keep the package.json in git because otherwise npm install on a fresh repo would fail\n await fs.writeFile(\n join(descriptorsDir, \".gitignore\"),\n \"*\\n!.gitignore\\n!package.json\\n\",\n )\n }\n\n const distDir = join(descriptorsDir, \"dist\")\n if (existsSync(distDir)) {\n await fs.rm(distDir, { recursive: true })\n }\n}\n\nasync function addDescriptorsToPackageJson(path: string) {\n const [packageJson, protocol] = await Promise.all([\n readPackage(),\n getPackageProtocol(),\n ])\n\n const packageSource = `${protocol}:${path}`\n const currentSource = packageJson.dependencies?.[\"@polkadot-api/descriptors\"]\n if (currentSource !== packageSource) {\n await updatePackage({\n dependencies: {\n \"@polkadot-api/descriptors\": packageSource,\n },\n })\n }\n}\n\nasync function getPackageProtocol() {\n const { packageManager, version } = await detectPackageManager()\n\n switch (packageManager) {\n case \"yarn\":\n const yarnMajorVersion = Number(version.split(\".\").at(0))\n\n return yarnMajorVersion >= 2 ? \"portal\" : \"file\"\n default:\n return \"file\"\n }\n}\n\nasync function runInstall() {\n const { executable } = await detectPackageManager()\n console.log(`${executable} install`)\n const child = spawn(executable, [\"install\"], {\n stdio: \"inherit\",\n shell: true,\n env: {\n ...process.env,\n PAPI_SKIP_GENERATE: \"true\",\n },\n })\n await new Promise((resolve) => child.on(\"close\", resolve))\n}\n\nconst generateMetadataExportFile = (input: Uint8Array): string =>\n `const binMeta: string = \"${Buffer.from(input).toString(\"base64\")}\"; export default binMeta;`\n\nasync function outputCodegen(\n chains: Array<{\n key: string\n metadata: UnifiedMetadata\n metadataRaw: Uint8Array\n knownTypes: KnownTypes\n codeHash?: HexString\n genesis?: HexString\n }>,\n outputFolder: string,\n clientPath: string,\n whitelist: string[] | Record<string, string[]> | null,\n) {\n const {\n commonFileContent,\n descriptorsFileContent,\n descriptorTypesFiles,\n metadataTypes,\n typesFileContent,\n publicTypes,\n } = generateMultipleDescriptors(\n chains,\n {\n client: clientPath,\n metadataTypes: \"./metadataTypes\",\n types: \"./common-types\",\n descriptorValues: \"./descriptors\",\n common: \"./common\",\n },\n {\n whitelist: whitelist ?? undefined,\n },\n )\n\n const hash = h64(\n Binary.fromText(Array.from(metadataTypes.checksumToIdx.keys()).join(\"\")),\n )\n\n const EntryPointsCodec = Vector(EntryPointCodec)\n const TypedefsCodec = Vector(TypedefCodec)\n const TypesCodec = Tuple(EntryPointsCodec, TypedefsCodec)\n\n await fs.mkdir(outputFolder, { recursive: true })\n\n await fs.writeFile(path.join(outputFolder, \"common.ts\"), commonFileContent)\n // Going through base64 conversion instead of using binary loader because of esbuild issue\n // https://github.com/evanw/esbuild/issues/3894\n const metadataTypesBase64 = Buffer.from(\n TypesCodec.enc([metadataTypes.entryPoints, metadataTypes.typedefs]),\n ).toString(\"base64\")\n\n await fs.writeFile(\n path.join(outputFolder, \"metadataTypes.ts\"),\n `\nconst content = \"${metadataTypesBase64}\"\nexport default content\n `,\n )\n await fs.writeFile(\n path.join(outputFolder, \"descriptors.ts\"),\n descriptorsFileContent,\n )\n await fs.writeFile(\n path.join(outputFolder, \"common-types.ts\"),\n typesFileContent,\n )\n await Promise.all(\n chains\n .map((chain, i) => [\n fs.writeFile(\n join(outputFolder, `${chain.key}.ts`),\n descriptorTypesFiles[i].content,\n ),\n fs.writeFile(\n join(outputFolder, `${chain.key}_metadata.ts`),\n generateMetadataExportFile(chain.metadataRaw),\n ),\n ])\n .flat(),\n )\n\n await generateIndex(\n outputFolder,\n chains.map((chain) => chain.key),\n publicTypes,\n Object.fromEntries(\n chains.filter((x) => x.codeHash!!).map((x) => [x.codeHash, x.key]),\n ),\n )\n\n return hash\n}\n\nasync function outputContractCodegen(\n contracts: {\n ink?: Record<string, string>\n sol?: Record<string, string>\n },\n outputFolder: string,\n) {\n console.log(\"Generating smart contract types\")\n\n const contractsFolder = join(outputFolder, \"contracts\")\n if (!existsSync(contractsFolder))\n await fs.mkdir(contractsFolder, { recursive: true })\n\n const imports: string[] = []\n for (const [key, metadata] of Object.entries(contracts.ink ?? {})) {\n try {\n const types = generateInkTypes(\n getInkLookup(JSON.parse(await fs.readFile(metadata, \"utf-8\"))),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n for (const [key, metadata] of Object.entries(contracts.sol ?? {})) {\n try {\n const types = generateSolTypes(\n JSON.parse(await fs.readFile(metadata, \"utf-8\")),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n await fs.writeFile(\n join(contractsFolder, `index.ts`),\n imports.join(\"\\n\") + \"\\n\",\n )\n\n fs.appendFile(\n join(outputFolder, \"index.ts\"),\n `\n export * as contracts from './contracts';\n `,\n )\n}\n\nasync function compileCodegen(packageDir: string) {\n const srcDir = join(packageDir, \"src\")\n const outDir = join(packageDir, \"dist\")\n\n if (await fsExists(outDir)) {\n await fs.rm(outDir, { recursive: true })\n }\n\n const bundleSuccess = await bundleEsm(path.join(srcDir, \"index.ts\"), {\n dir: outDir,\n })\n\n // We need tsc to actually build the definitions file, and also perform the typecheck\n const program = tsc.createProgramFromConfig({\n basePath: srcDir,\n compilerOptions: {\n skipLibCheck: true,\n declaration: true,\n emitDeclarationOnly: true,\n target: \"esnext\",\n module: \"esnext\",\n moduleResolution: \"node\",\n resolveJsonModule: true,\n allowSyntheticDefaultImports: true,\n outDir,\n },\n })\n tsc.emit(program)\n\n const errors = [\n program.getGlobalDiagnostics(),\n program.getOptionsDiagnostics(),\n program.getSemanticDiagnostics(),\n program.getSyntacticDiagnostics(),\n program.getDeclarationDiagnostics(),\n program.getConfigFileParsingDiagnostics(),\n ].flat()\n\n return bundleSuccess && errors.length === 0\n}\n\nconst cacheMetadataStr = `\nexport const getMetadata: (codeHash: string) => Promise<Uint8Array | null> = async (\n codeHash: string\n)=> {\n try {\n return await metadatas[codeHash].getMetadata()\n } catch {}\n return null\n}`\n\nconst generateIndex = async (\n path: string,\n keys: string[],\n publicTypes: string[],\n metadatas: Record<string, string>,\n) => {\n const indexTs = [\n ...keys.flatMap((key) => [\n `import { default as ${key}, type ${capitalize(key)}WhitelistEntry } from \"./${key}\";`,\n `export { ${key} }`,\n `export type * from \"./${key}\";`,\n ]),\n `export {`,\n publicTypes.join(\", \"),\n `} from './common-types';`,\n `const metadatas = {${Object.entries(metadatas)\n .map(([codeHash, key]) => `[\"${codeHash}\"]: ${key}`)\n .join(\",\\n\")}}`,\n cacheMetadataStr,\n `export type WhitelistEntry = ${keys.map((key) => `${capitalize(key)}WhitelistEntry`).join(\" | \")};`,\n `export type WhitelistEntriesByChain = Partial<{\"*\": WhitelistEntry[], ${keys.map((key) => `${key}: WhitelistEntry[]`).join(\",\\n\")}}>`,\n ].join(\"\\n\")\n await fs.writeFile(join(path, \"index.ts\"), indexTs)\n}\n\nasync function replacePackageJson(descriptorsDir: string, version: bigint) {\n await fs.writeFile(\n join(descriptorsDir, \"package.json\"),\n `{\n \"version\": \"0.1.0-autogenerated.${version}\",\n \"name\": \"@polkadot-api/descriptors\",\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"browser\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"sideEffects\": false,\n \"peerDependencies\": {\n \"polkadot-api\": \">=2.0.0-rc.1\"\n }\n}\n`,\n )\n}\n\nasync function readWhitelist(filename: string): Promise<string[] | null> {\n if (!(await fsExists(filename))) {\n return null\n }\n\n const tmpDir = await mkdtemp(join(tmpdir(), \"papi-\"))\n try {\n await bundleEsm(filename, { file: join(tmpDir, \"index.js\") })\n const { whitelist } = await import(join(tmpDir, \"index.js\"))\n return whitelist\n } finally {\n await rm(tmpDir, { recursive: true }).catch(console.error)\n }\n}\n\nasync function flushBundlerCache() {\n try {\n const viteMetadata = join(\n process.cwd(),\n \"node_modules\",\n \".vite\",\n \"deps\",\n \"_metadata.json\",\n )\n if (await fsExists(viteMetadata)) {\n await rm(viteMetadata)\n }\n } catch (ex) {\n console.error(ex)\n }\n}\n\nconst isExternal = (id: string) => !id.startsWith(\".\") && !path.isAbsolute(id)\n\nconst scaleBinaryPlugin = () => ({\n name: \"scale-binary\",\n async load(id: string) {\n if (!id.endsWith(\".scale\")) return null\n const data = await fs.readFile(id)\n const base64 = Buffer.from(data).toString(\"base64\")\n return `const base64 = \"${base64}\";\\nexport default base64;`\n },\n})\n\nasync function bundleEsm(\n entry: string,\n output: { dir: string } | { file: string },\n) {\n let bundle: RollupBuild | undefined\n try {\n bundle = await rollup({\n input: entry,\n external: isExternal,\n plugins: [scaleBinaryPlugin(), esbuild({ target: \"es2022\" })],\n logLevel: \"silent\",\n })\n await bundle.write({\n ...output,\n format: \"es\",\n })\n return true\n } catch (ex) {\n console.error(ex)\n return false\n } finally {\n await bundle?.close()\n }\n}\n"],"names":["path"],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sources":["../../../src/commands/generate.ts"],"sourcesContent":["import { getMetadata } from \"@/metadata\"\nimport { readPapiConfig } from \"@/papiConfig\"\nimport { cliVersion } from \"@/version\"\nimport {\n capitalize,\n generateInkTypes,\n generateMultipleDescriptors,\n generateSolTypes,\n type KnownTypes,\n} from \"@polkadot-api/codegen\"\nimport { getInkLookup } from \"@polkadot-api/ink-contracts\"\nimport {\n EntryPointCodec,\n TypedefCodec,\n} from \"@polkadot-api/metadata-compatibility\"\nimport {\n Binary,\n Blake2128,\n h64,\n HexString,\n Tuple,\n UnifiedMetadata,\n Vector,\n} from \"@polkadot-api/substrate-bindings\"\nimport { toHex } from \"@polkadot-api/utils\"\nimport { spawn } from \"child_process\"\nimport { existsSync } from \"fs\"\nimport fsExists from \"fs.promises.exists\"\nimport fs, { mkdtemp, rm } from \"fs/promises\"\nimport { tmpdir } from \"os\"\nimport path, { join } from \"path\"\nimport process from \"process\"\nimport { readPackage } from \"read-pkg\"\nimport { rollup, RollupBuild } from \"rollup\"\nimport esbuild from \"rollup-plugin-esbuild\"\nimport tsc from \"tsc-prog\"\nimport { updatePackage } from \"write-package\"\nimport { detectPackageManager } from \"../packageManager\"\nimport { CommonOptions } from \"./commonOptions\"\n\nexport interface GenerateOptions extends CommonOptions {\n clientLibrary?: string\n}\n\nexport async function generate(opts: GenerateOptions) {\n if (process.env.PAPI_SKIP_GENERATE) {\n return\n }\n if (opts.whitelist) {\n console.error(\n \"The --whitelist option has been removed. The whitelist should be placed at `.papi/whitelist.ts`\",\n )\n process.exit(1)\n }\n\n const config = await readPapiConfig(opts.config)\n if (!config) {\n throw new Error(\"Can't find the Polkadot-API configuration\")\n }\n const sources = config.entries\n\n if (Object.keys(sources).length == 0) {\n console.log(\"No chains defined in config file\")\n }\n\n console.log(`Reading metadata`)\n const chains = await Promise.all(\n Object.entries(sources).map(async ([key, source]) => ({\n key,\n ...(await getMetadata(source))!,\n knownTypes: {},\n })),\n )\n\n const contracts = Object.fromEntries(\n await Promise.all(\n ([\"ink\", \"sol\"] as const).map(async (kind) => [\n kind,\n Object.fromEntries(\n await Promise.all(\n Object.entries(config[kind] ?? {}).map(async ([key, v]) => [\n key,\n toHex(Blake2128(Binary.fromText(await fs.readFile(v, \"utf-8\")))),\n ]),\n ),\n ),\n ]),\n ),\n )\n\n if (chains.length === 0) {\n console.log(\"No entries in polkadot-api.json. Nothing to generate.\")\n return\n }\n\n const whitelist = await readWhitelist(\".papi/whitelist.ts\")\n\n const descriptorsDir = join(process.cwd(), config.descriptorPath)\n if (await alreadyGenerated(descriptorsDir, chains, contracts, whitelist)) {\n console.log(\"Detected previous descriptors with no changes needed.\")\n return\n }\n\n console.log(`Generating descriptors`)\n await cleanDescriptorsPackage(config.descriptorPath)\n if (!config.options?.noDescriptorsPackage) {\n await addDescriptorsToPackageJson(config.descriptorPath)\n }\n\n const clientPath = opts.clientLibrary ?? \"polkadot-api\"\n\n const descriptorSrcDir = join(descriptorsDir, \"src\")\n const hash = await outputCodegen(\n chains,\n descriptorSrcDir,\n clientPath,\n whitelist,\n )\n\n if (config.ink || config.sol) {\n outputContractCodegen(config, descriptorSrcDir)\n }\n\n await replacePackageJson(descriptorsDir, hash)\n const cleanCodegen = await compileCodegen(descriptorsDir)\n if (cleanCodegen) {\n await tagGenerated(descriptorsDir, chains, contracts, whitelist)\n await fs.rm(descriptorSrcDir, { recursive: true })\n }\n if (!config.options?.noDescriptorsPackage) {\n await runInstall()\n await flushBundlerCache()\n }\n}\n\nasync function tagGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const filePath = join(descriptorsDir, \"generated.json\")\n\n await fs.writeFile(\n filePath,\n JSON.stringify({\n cliVersion,\n whitelist,\n chains: Object.fromEntries(\n chains.map(({ key, metadataRaw }) => [\n key,\n toHex(Blake2128(metadataRaw)),\n ]),\n ),\n contracts,\n }),\n )\n}\nasync function alreadyGenerated(\n descriptorsDir: string,\n chains: {\n key: string\n metadataRaw: Uint8Array\n }[],\n contracts: Record<\"ink\" | \"sol\", Record<string, HexString>>,\n whitelist: string[] | null,\n) {\n const generatedJsôn = join(descriptorsDir, \"generated.json\")\n if (!existsSync(generatedJsôn)) return false\n\n try {\n const generated = JSON.parse(\n await fs.readFile(generatedJsôn, {\n encoding: \"utf-8\",\n }),\n )\n if (\n (generated.whitelist ?? [\"*\"]).join(\",\") !=\n (whitelist ?? [\"*\"]).join(\",\") ||\n generated.cliVersion !== cliVersion\n )\n return false\n\n return (\n chains.length === Object.entries(generated.chains).length &&\n chains.every(({ key, metadataRaw }) => {\n const hash = toHex(Blake2128(metadataRaw))\n return hash === generated.chains[key]\n }) &&\n ([\"ink\", \"sol\"] as const).every(\n (kind) =>\n Object.entries(contracts[kind]).length ===\n Object.entries(generated.contracts[kind]).length &&\n Object.entries(contracts[kind]).every(\n ([k, hash]) => hash === generated.contracts[kind][k],\n ),\n )\n )\n } catch {\n return false\n }\n}\n\nasync function cleanDescriptorsPackage(path: string) {\n const descriptorsDir = join(process.cwd(), path)\n if (!existsSync(descriptorsDir)) {\n await fs.mkdir(descriptorsDir, { recursive: true })\n\n // We have to keep the package.json in git because otherwise npm install on a fresh repo would fail\n await fs.writeFile(\n join(descriptorsDir, \".gitignore\"),\n \"*\\n!.gitignore\\n!package.json\\n\",\n )\n }\n\n const distDir = join(descriptorsDir, \"dist\")\n if (existsSync(distDir)) {\n await fs.rm(distDir, { recursive: true })\n }\n}\n\nasync function addDescriptorsToPackageJson(path: string) {\n const [packageJson, protocol] = await Promise.all([\n readPackage(),\n getPackageProtocol(),\n ])\n\n const packageSource = `${protocol}:${path}`\n const currentSource = packageJson.dependencies?.[\"@polkadot-api/descriptors\"]\n if (currentSource !== packageSource) {\n await updatePackage({\n dependencies: {\n \"@polkadot-api/descriptors\": packageSource,\n },\n })\n }\n}\n\nasync function getPackageProtocol() {\n const { packageManager, version } = await detectPackageManager()\n\n switch (packageManager) {\n case \"yarn\":\n const yarnMajorVersion = Number(version.split(\".\").at(0))\n\n return yarnMajorVersion >= 2 ? \"portal\" : \"file\"\n default:\n return \"file\"\n }\n}\n\nasync function runInstall() {\n const { executable } = await detectPackageManager()\n console.log(`${executable} install`)\n const child = spawn(executable, [\"install\"], {\n stdio: \"inherit\",\n shell: true,\n env: {\n ...process.env,\n PAPI_SKIP_GENERATE: \"true\",\n },\n })\n await new Promise((resolve) => child.on(\"close\", resolve))\n}\n\nconst generateMetadataExportFile = (input: Uint8Array): string =>\n `const binMeta: string = \"${Buffer.from(input).toString(\"base64\")}\"; export default binMeta;`\n\nasync function outputCodegen(\n chains: Array<{\n key: string\n metadata: UnifiedMetadata\n metadataRaw: Uint8Array\n knownTypes: KnownTypes\n codeHash?: HexString\n genesis?: HexString\n }>,\n outputFolder: string,\n clientPath: string,\n whitelist: string[] | Record<string, string[]> | null,\n) {\n const {\n commonFileContent,\n descriptorsFileContent,\n descriptorTypesFiles,\n metadataTypes,\n typesFileContent,\n publicTypes,\n } = generateMultipleDescriptors(\n chains,\n {\n client: clientPath,\n metadataTypes: \"./metadataTypes\",\n types: \"./common-types\",\n descriptorValues: \"./descriptors\",\n common: \"./common\",\n },\n {\n whitelist: whitelist ?? undefined,\n },\n )\n\n const hash = h64(\n Binary.fromText(Array.from(metadataTypes.checksumToIdx.keys()).join(\"\")),\n )\n\n const EntryPointsCodec = Vector(EntryPointCodec)\n const TypedefsCodec = Vector(TypedefCodec)\n const TypesCodec = Tuple(EntryPointsCodec, TypedefsCodec)\n\n await fs.mkdir(outputFolder, { recursive: true })\n\n await fs.writeFile(path.join(outputFolder, \"common.ts\"), commonFileContent)\n // Going through base64 conversion instead of using binary loader because of esbuild issue\n // https://github.com/evanw/esbuild/issues/3894\n const metadataTypesBase64 = Buffer.from(\n TypesCodec.enc([metadataTypes.entryPoints, metadataTypes.typedefs]),\n ).toString(\"base64\")\n\n await fs.writeFile(\n path.join(outputFolder, \"metadataTypes.ts\"),\n `\nconst content = \"${metadataTypesBase64}\"\nexport default content\n `,\n )\n await fs.writeFile(\n path.join(outputFolder, \"descriptors.ts\"),\n descriptorsFileContent,\n )\n await fs.writeFile(\n path.join(outputFolder, \"common-types.ts\"),\n typesFileContent,\n )\n await Promise.all(\n chains\n .map((chain, i) => [\n fs.writeFile(\n join(outputFolder, `${chain.key}.ts`),\n descriptorTypesFiles[i].content,\n ),\n fs.writeFile(\n join(outputFolder, `${chain.key}_metadata.ts`),\n generateMetadataExportFile(chain.metadataRaw),\n ),\n ])\n .flat(),\n )\n\n await generateIndex(\n outputFolder,\n chains.map((chain) => chain.key),\n publicTypes,\n Object.fromEntries(\n chains.filter((x) => x.codeHash!!).map((x) => [x.codeHash, x.key]),\n ),\n )\n\n return hash\n}\n\nasync function outputContractCodegen(\n contracts: {\n ink?: Record<string, string>\n sol?: Record<string, string>\n },\n outputFolder: string,\n) {\n console.log(\"Generating smart contract types\")\n\n const contractsFolder = join(outputFolder, \"contracts\")\n if (!existsSync(contractsFolder))\n await fs.mkdir(contractsFolder, { recursive: true })\n\n const imports: string[] = []\n for (const [key, metadata] of Object.entries(contracts.ink ?? {})) {\n try {\n const types = generateInkTypes(\n getInkLookup(JSON.parse(await fs.readFile(metadata, \"utf-8\"))),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n for (const [key, metadata] of Object.entries(contracts.sol ?? {})) {\n try {\n const types = generateSolTypes(\n JSON.parse(await fs.readFile(metadata, \"utf-8\")),\n )\n await fs.writeFile(join(contractsFolder, `${key}.ts`), types)\n imports.push(`export { descriptor as ${key} } from './${key}'`)\n } catch (ex) {\n console.error(\"Exception when generating descriptors for contract \" + key)\n console.error(ex)\n }\n }\n\n await fs.writeFile(\n join(contractsFolder, `index.ts`),\n imports.join(\"\\n\") + \"\\n\",\n )\n\n fs.appendFile(\n join(outputFolder, \"index.ts\"),\n `\n export * as contracts from './contracts';\n `,\n )\n}\n\nasync function compileCodegen(packageDir: string) {\n const srcDir = join(packageDir, \"src\")\n const outDir = join(packageDir, \"dist\")\n\n if (await fsExists(outDir)) {\n await fs.rm(outDir, { recursive: true })\n }\n\n const bundleSuccess = await bundleEsm(path.join(srcDir, \"index.ts\"), {\n dir: outDir,\n })\n\n // We need tsc to actually build the definitions file, and also perform the typecheck\n const program = tsc.createProgramFromConfig({\n basePath: srcDir,\n compilerOptions: {\n skipLibCheck: true,\n declaration: true,\n emitDeclarationOnly: true,\n target: \"esnext\",\n module: \"esnext\",\n resolveJsonModule: true,\n allowSyntheticDefaultImports: true,\n outDir,\n },\n })\n tsc.emit(program)\n\n const errors = [\n program.getGlobalDiagnostics(),\n program.getOptionsDiagnostics(),\n program.getSemanticDiagnostics(),\n program.getSyntacticDiagnostics(),\n program.getDeclarationDiagnostics(),\n program.getConfigFileParsingDiagnostics(),\n ].flat()\n\n return bundleSuccess && errors.length === 0\n}\n\nconst cacheMetadataStr = `\nexport const getMetadata: (codeHash: string) => Promise<Uint8Array | null> = async (\n codeHash: string\n)=> {\n try {\n return await metadatas[codeHash].getMetadata()\n } catch {}\n return null\n}`\n\nconst generateIndex = async (\n path: string,\n keys: string[],\n publicTypes: string[],\n metadatas: Record<string, string>,\n) => {\n const indexTs = [\n ...keys.flatMap((key) => [\n `import { default as ${key}, type ${capitalize(key)}WhitelistEntry } from \"./${key}\";`,\n `export { ${key} }`,\n `export type * from \"./${key}\";`,\n ]),\n `export {`,\n publicTypes.join(\", \"),\n `} from './common-types';`,\n `const metadatas: Record<string, { getMetadata: () => Promise<Uint8Array> }> = {${Object.entries(\n metadatas,\n )\n .map(([codeHash, key]) => `[\"${codeHash}\"]: ${key}`)\n .join(\",\\n\")}}`,\n cacheMetadataStr,\n `export type WhitelistEntry = ${keys.map((key) => `${capitalize(key)}WhitelistEntry`).join(\" | \")};`,\n `export type WhitelistEntriesByChain = Partial<{\"*\": WhitelistEntry[], ${keys.map((key) => `${key}: WhitelistEntry[]`).join(\",\\n\")}}>`,\n ].join(\"\\n\")\n await fs.writeFile(join(path, \"index.ts\"), indexTs)\n}\n\nasync function replacePackageJson(descriptorsDir: string, version: bigint) {\n await fs.writeFile(\n join(descriptorsDir, \"package.json\"),\n `{\n \"version\": \"0.1.0-autogenerated.${version}\",\n \"name\": \"@polkadot-api/descriptors\",\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.js\",\n \"browser\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"sideEffects\": false,\n \"peerDependencies\": {\n \"polkadot-api\": \">=2.0.0-rc.1\"\n }\n}\n`,\n )\n}\n\nasync function readWhitelist(filename: string): Promise<string[] | null> {\n if (!(await fsExists(filename))) {\n return null\n }\n\n const tmpDir = await mkdtemp(join(tmpdir(), \"papi-\"))\n try {\n await bundleEsm(filename, { file: join(tmpDir, \"index.js\") })\n const { whitelist } = await import(join(tmpDir, \"index.js\"))\n return whitelist\n } finally {\n await rm(tmpDir, { recursive: true }).catch(console.error)\n }\n}\n\nasync function flushBundlerCache() {\n try {\n const viteMetadata = join(\n process.cwd(),\n \"node_modules\",\n \".vite\",\n \"deps\",\n \"_metadata.json\",\n )\n if (await fsExists(viteMetadata)) {\n await rm(viteMetadata)\n }\n } catch (ex) {\n console.error(ex)\n }\n}\n\nconst isExternal = (id: string) => !id.startsWith(\".\") && !path.isAbsolute(id)\n\nconst scaleBinaryPlugin = () => ({\n name: \"scale-binary\",\n async load(id: string) {\n if (!id.endsWith(\".scale\")) return null\n const data = await fs.readFile(id)\n const base64 = Buffer.from(data).toString(\"base64\")\n return `const base64 = \"${base64}\";\\nexport default base64;`\n },\n})\n\nasync function bundleEsm(\n entry: string,\n output: { dir: string } | { file: string },\n) {\n let bundle: RollupBuild | undefined\n try {\n bundle = await rollup({\n input: entry,\n external: isExternal,\n plugins: [scaleBinaryPlugin(), esbuild({ target: \"es2022\" })],\n logLevel: \"silent\",\n })\n await bundle.write({\n ...output,\n format: \"es\",\n })\n return true\n } catch (ex) {\n console.error(ex)\n return false\n } finally {\n await bundle?.close()\n }\n}\n"],"names":["path"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkadot-api/cli",
3
- "version": "0.19.5-canary.d38c3ed",
3
+ "version": "0.20.0",
4
4
  "author": "Victor Oliva (https://github.com/voliva)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,29 +37,29 @@
37
37
  "fs.promises.exists": "^1.1.4",
38
38
  "ora": "^9.3.0",
39
39
  "read-pkg": "^10.1.0",
40
- "rxjs": "^7.8.2",
41
- "rollup": "^4.59.0",
40
+ "rollup": "^4.60.1",
42
41
  "rollup-plugin-esbuild": "^6.2.1",
42
+ "rxjs": "^7.8.2",
43
43
  "tsc-prog": "^2.3.0",
44
- "typescript": "^5.9.3",
44
+ "typescript": "^6.0.2",
45
45
  "write-package": "^7.2.0",
46
- "@polkadot-api/codegen": "0.22.2-canary.d38c3ed",
47
- "@polkadot-api/ink-contracts": "0.5.2-canary.d38c3ed",
48
- "@polkadot-api/json-rpc-provider": "0.1.1-canary.d38c3ed",
49
- "@polkadot-api/metadata-compatibility": "0.5.2-canary.d38c3ed",
50
- "@polkadot-api/known-chains": "0.10.2-canary.d38c3ed",
51
- "@polkadot-api/observable-client": "0.18.3-canary.d38c3ed",
52
- "@polkadot-api/sm-provider": "0.2.2-canary.d38c3ed",
53
- "@polkadot-api/substrate-bindings": "0.19.1-canary.d38c3ed",
54
- "@polkadot-api/substrate-client": "0.6.1-canary.d38c3ed",
55
- "@polkadot-api/smoldot": "0.3.17-canary.d38c3ed",
56
- "@polkadot-api/utils": "0.3.1-canary.d38c3ed",
57
- "@polkadot-api/ws-middleware": "0.2.4-canary.d38c3ed",
58
- "@polkadot-api/ws-provider": "0.8.2-canary.d38c3ed"
46
+ "@polkadot-api/codegen": "0.22.2",
47
+ "@polkadot-api/ink-contracts": "0.6.0",
48
+ "@polkadot-api/json-rpc-provider": "0.2.0",
49
+ "@polkadot-api/metadata-compatibility": "0.6.0",
50
+ "@polkadot-api/sm-provider": "0.3.0",
51
+ "@polkadot-api/observable-client": "0.18.3",
52
+ "@polkadot-api/known-chains": "0.11.0",
53
+ "@polkadot-api/smoldot": "0.4.0",
54
+ "@polkadot-api/utils": "0.4.0",
55
+ "@polkadot-api/ws-middleware": "0.3.0",
56
+ "@polkadot-api/substrate-client": "0.7.0",
57
+ "@polkadot-api/substrate-bindings": "0.20.0",
58
+ "@polkadot-api/ws-provider": "0.9.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@swc/core": "^1.15.18",
62
- "@polkadot-api/json-rpc-provider": "0.1.1-canary.d38c3ed"
61
+ "@swc/core": "^1.15.21",
62
+ "@polkadot-api/json-rpc-provider": "0.2.0"
63
63
  },
64
64
  "scripts": {
65
65
  "build-core": "tsc --noEmit && rollup -c",