@subql/common-solana 1.0.2 → 1.1.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.
@@ -59,7 +59,7 @@ async function generateIDLInterfaces(dataSources, projectPath, renderTemplate) {
59
59
  const idlPath = node_path_1.default.join(projectPath, fileRef.file);
60
60
  const idl = await (0, idl_1.parseIdlFromFile)(idlPath);
61
61
  const output = node_path_1.default.join(projectPath, CODAMA_PATH, name);
62
- await idl.accept((0, renderers_js_1.renderVisitor)(output, {}));
62
+ await idl.accept((0, renderers_js_1.renderVisitor)(output, { useGranularImports: true }));
63
63
  const instructionNames = idl.getRoot().program.instructions.map((inst) => (0, codama_1.pascalCase)(inst.name));
64
64
  await renderTemplate(INSTRUCTION_TEMPLATE_TS, node_path_1.default.join(projectPath, IDL_PATH, `${name}.ts`), {
65
65
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/codegen/codegen.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport assert from 'node:assert';\nimport path from 'node:path';\nimport {renderVisitor} from '@codama/renderers-js';\nimport {SolanaDatasourceKind, SolanaHandlerKind, SubqlDatasource, SubqlRuntimeDatasource} from '@subql/types-solana';\nimport {pascalCase} from 'codama';\nimport {Data} from 'ejs';\nimport {parseIdlFromFile, findInstructionDiscriminatorByName} from './idl';\n\nconst INSTRUCTION_TEMPLATE_TS = path.resolve(__dirname, '../../templates/idl.ts.ejs');\nconst CODAMA_PATH = '/src/types/program-interfaces';\nconst IDL_PATH = '/src/types/handler-inputs';\n\nexport async function validateDiscriminators(\n dataSources: SubqlRuntimeDatasource[],\n projectPath: string\n): Promise<void> {\n const issues: string[] = [];\n\n for (const ds of dataSources) {\n for (const handler of ds.mapping.handlers) {\n if (!handler.filter) {\n break;\n }\n switch (handler.kind) {\n case SolanaHandlerKind.Instruction: {\n if (handler.filter.discriminator && handler.filter.programId) {\n const fileRef = ds.assets?.get(handler.filter.programId);\n if (!fileRef) {\n issues.push(`Datasource has a handler with a discriminator but no IDL file reference`);\n continue;\n }\n\n const idlPath = path.join(projectPath, fileRef.file);\n const idl = await parseIdlFromFile(idlPath);\n\n if (!findInstructionDiscriminatorByName(idl.getRoot(), handler.filter.discriminator)) {\n issues.push(\n `Datasource has a handler with a discriminator ${handler.filter.discriminator} but no matching instruction found in IDL`\n );\n }\n // TODO check discriminator in IDL\n }\n break;\n }\n default:\n /* Do nothing, there is nothing extra to validate*/\n }\n }\n }\n\n assert(issues.length === 0, issues.join('\\n'));\n}\n\nexport async function generateIDLInterfaces(\n dataSources: SubqlDatasource[],\n projectPath: string,\n renderTemplate: (templatePath: string, outputPath: string, templateData: Data) => Promise<void>\n): Promise<void> {\n // @subql/cli package calls this function with datasources as an array of objects\n dataSources = dataSources.map((d) => ({\n ...d,\n assets: d?.assets ? (d.assets instanceof Map ? d.assets : new Map(Object.entries(d.assets))) : undefined,\n })) as SubqlRuntimeDatasource[];\n\n const allAssets = new Map(\n dataSources.filter((ds) => ds.assets !== undefined).flatMap((ds) => Array.from(ds.assets!.entries()))\n );\n\n await validateDiscriminators(\n dataSources.filter((ds) => ds.kind === SolanaDatasourceKind.Runtime) as SubqlRuntimeDatasource[],\n projectPath\n );\n\n for (const [name, fileRef] of allAssets) {\n const idlPath = path.join(projectPath, fileRef.file);\n const idl = await parseIdlFromFile(idlPath);\n\n const output = path.join(projectPath, CODAMA_PATH, name);\n\n await idl.accept(renderVisitor(output, {}));\n\n const instructionNames = idl.getRoot().program.instructions.map((inst) => pascalCase(inst.name));\n\n await renderTemplate(INSTRUCTION_TEMPLATE_TS, path.join(projectPath, IDL_PATH, `${name}.ts`), {\n props: {\n name,\n instructions: instructionNames,\n },\n });\n\n console.log(`* IDL ${name} generated`);\n }\n}\n"]}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/codegen/codegen.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport assert from 'node:assert';\nimport path from 'node:path';\nimport {renderVisitor} from '@codama/renderers-js';\nimport {SolanaDatasourceKind, SolanaHandlerKind, SubqlDatasource, SubqlRuntimeDatasource} from '@subql/types-solana';\nimport {pascalCase} from 'codama';\nimport {Data} from 'ejs';\nimport {parseIdlFromFile, findInstructionDiscriminatorByName} from './idl';\n\nconst INSTRUCTION_TEMPLATE_TS = path.resolve(__dirname, '../../templates/idl.ts.ejs');\nconst CODAMA_PATH = '/src/types/program-interfaces';\nconst IDL_PATH = '/src/types/handler-inputs';\n\nexport async function validateDiscriminators(\n dataSources: SubqlRuntimeDatasource[],\n projectPath: string\n): Promise<void> {\n const issues: string[] = [];\n\n for (const ds of dataSources) {\n for (const handler of ds.mapping.handlers) {\n if (!handler.filter) {\n break;\n }\n switch (handler.kind) {\n case SolanaHandlerKind.Instruction: {\n if (handler.filter.discriminator && handler.filter.programId) {\n const fileRef = ds.assets?.get(handler.filter.programId);\n if (!fileRef) {\n issues.push(`Datasource has a handler with a discriminator but no IDL file reference`);\n continue;\n }\n\n const idlPath = path.join(projectPath, fileRef.file);\n const idl = await parseIdlFromFile(idlPath);\n\n if (!findInstructionDiscriminatorByName(idl.getRoot(), handler.filter.discriminator)) {\n issues.push(\n `Datasource has a handler with a discriminator ${handler.filter.discriminator} but no matching instruction found in IDL`\n );\n }\n // TODO check discriminator in IDL\n }\n break;\n }\n default:\n /* Do nothing, there is nothing extra to validate*/\n }\n }\n }\n\n assert(issues.length === 0, issues.join('\\n'));\n}\n\nexport async function generateIDLInterfaces(\n dataSources: SubqlDatasource[],\n projectPath: string,\n renderTemplate: (templatePath: string, outputPath: string, templateData: Data) => Promise<void>\n): Promise<void> {\n // @subql/cli package calls this function with datasources as an array of objects\n dataSources = dataSources.map((d) => ({\n ...d,\n assets: d?.assets ? (d.assets instanceof Map ? d.assets : new Map(Object.entries(d.assets))) : undefined,\n })) as SubqlRuntimeDatasource[];\n\n const allAssets = new Map(\n dataSources.filter((ds) => ds.assets !== undefined).flatMap((ds) => Array.from(ds.assets!.entries()))\n );\n\n await validateDiscriminators(\n dataSources.filter((ds) => ds.kind === SolanaDatasourceKind.Runtime) as SubqlRuntimeDatasource[],\n projectPath\n );\n\n for (const [name, fileRef] of allAssets) {\n const idlPath = path.join(projectPath, fileRef.file);\n const idl = await parseIdlFromFile(idlPath);\n\n const output = path.join(projectPath, CODAMA_PATH, name);\n\n await idl.accept(renderVisitor(output, {useGranularImports: true}));\n\n const instructionNames = idl.getRoot().program.instructions.map((inst) => pascalCase(inst.name));\n\n await renderTemplate(INSTRUCTION_TEMPLATE_TS, path.join(projectPath, IDL_PATH, `${name}.ts`), {\n props: {\n name,\n instructions: instructionNames,\n },\n });\n\n console.log(`* IDL ${name} generated`);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subql/common-solana",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf dist && tsc -b",
@@ -14,11 +14,11 @@
14
14
  "main": "dist/index.js",
15
15
  "license": "GPL-3.0",
16
16
  "dependencies": {
17
- "@codama/nodes-from-anchor": "^1.1.11",
18
- "@codama/renderers-js": "^1.2.10",
17
+ "@codama/nodes-from-anchor": "^1.2.6",
18
+ "@codama/renderers-js": "^1.3.5",
19
19
  "@subql/common": "^5.7.3",
20
- "@subql/types-solana": "1.0.2",
21
- "codama": "^1.2.11",
20
+ "@subql/types-solana": "1.1.0",
21
+ "codama": "^1.3.4",
22
22
  "js-yaml": "^4.1.0",
23
23
  "pino": "^6.13.3",
24
24
  "reflect-metadata": "^0.1.13"