@subql/common-solana 1.1.0 → 1.1.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.
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.validateDiscriminators = validateDiscriminators;
9
9
  exports.generateIDLInterfaces = generateIDLInterfaces;
10
10
  const node_assert_1 = __importDefault(require("node:assert"));
11
+ const promises_1 = require("node:fs/promises");
11
12
  const node_path_1 = __importDefault(require("node:path"));
12
13
  const renderers_js_1 = require("@codama/renderers-js");
13
14
  const types_solana_1 = require("@subql/types-solana");
@@ -60,6 +61,7 @@ async function generateIDLInterfaces(dataSources, projectPath, renderTemplate) {
60
61
  const idl = await (0, idl_1.parseIdlFromFile)(idlPath);
61
62
  const output = node_path_1.default.join(projectPath, CODAMA_PATH, name);
62
63
  await idl.accept((0, renderers_js_1.renderVisitor)(output, { useGranularImports: true }));
64
+ await fixTypeImports(output);
63
65
  const instructionNames = idl.getRoot().program.instructions.map((inst) => (0, codama_1.pascalCase)(inst.name));
64
66
  await renderTemplate(INSTRUCTION_TEMPLATE_TS, node_path_1.default.join(projectPath, IDL_PATH, `${name}.ts`), {
65
67
  props: {
@@ -70,4 +72,30 @@ async function generateIDLInterfaces(dataSources, projectPath, renderTemplate) {
70
72
  console.log(`* IDL ${name} generated`);
71
73
  }
72
74
  }
75
+ /**
76
+ * @codama/renderers.js@1.3.5 has a bug where useGranularImports is not applied to types
77
+ * It could be fixed by adding the option to this line https://github.com/codama-idl/codama/blob/d2372b07668e4ce288c4354e0be0379853c1df4a/packages/renderers-js/src/getRenderMapVisitor.ts#L220
78
+ * But there has been a large refactor since this release so its being patched here for now.
79
+ */
80
+ async function fixTypeImports(output) {
81
+ for await (const path of (0, promises_1.glob)(`${output}/types/*.ts`)) {
82
+ const content = await (0, promises_1.readFile)(path, 'utf8');
83
+ const updated = content.replace(`import {
84
+ combineCodec,
85
+ getEnumDecoder,
86
+ getEnumEncoder,
87
+ type FixedSizeCodec,
88
+ type FixedSizeDecoder,
89
+ type FixedSizeEncoder,
90
+ } from '@solana/kit';`, `import {
91
+ combineCodec,
92
+ getEnumDecoder,
93
+ getEnumEncoder,
94
+ type FixedSizeCodec,
95
+ type FixedSizeDecoder,
96
+ type FixedSizeEncoder,
97
+ } from '@solana/codecs';`);
98
+ await (0, promises_1.writeFile)(path, updated);
99
+ }
100
+ }
73
101
  //# sourceMappingURL=codegen.js.map
@@ -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, {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"]}
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 {glob, readFile, writeFile} from 'node:fs/promises';\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 await fixTypeImports(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\n/**\n * @codama/renderers.js@1.3.5 has a bug where useGranularImports is not applied to types\n * It could be fixed by adding the option to this line https://github.com/codama-idl/codama/blob/d2372b07668e4ce288c4354e0be0379853c1df4a/packages/renderers-js/src/getRenderMapVisitor.ts#L220\n * But there has been a large refactor since this release so its being patched here for now.\n */\nasync function fixTypeImports(output: string): Promise<void> {\n for await (const path of glob(`${output}/types/*.ts`)) {\n const content = await readFile(path, 'utf8');\n const updated = content.replace(\n `import {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';`,\n `import {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/codecs';`\n );\n await writeFile(path, updated);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subql/common-solana",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf dist && tsc -b",