@subql/common-solana 1.1.1 → 1.2.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.
- package/CHANGELOG.md +6 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/codegen/idl.d.ts +1 -0
- package/dist/codegen/idl.js +7 -0
- package/dist/codegen/idl.js.map +1 -1
- package/package.json +1 -1
package/dist/codegen/idl.d.ts
CHANGED
|
@@ -9,3 +9,4 @@ export declare function parseIdlFromFile(path: string): Promise<Codama>;
|
|
|
9
9
|
export declare function getBytesFromBytesValueNode(node: BytesValueNode): Uint8Array;
|
|
10
10
|
export declare function getInstructionDiscriminatorBytes(node: InstructionNode): Buffer;
|
|
11
11
|
export declare function findInstructionDiscriminatorByName(rootNode: RootNode, name: string): Buffer | undefined;
|
|
12
|
+
export declare function getDiscriminator(name: string): Uint8Array;
|
package/dist/codegen/idl.js
CHANGED
|
@@ -13,6 +13,8 @@ exports.parseIdlFromFile = parseIdlFromFile;
|
|
|
13
13
|
exports.getBytesFromBytesValueNode = getBytesFromBytesValueNode;
|
|
14
14
|
exports.getInstructionDiscriminatorBytes = getInstructionDiscriminatorBytes;
|
|
15
15
|
exports.findInstructionDiscriminatorByName = findInstructionDiscriminatorByName;
|
|
16
|
+
exports.getDiscriminator = getDiscriminator;
|
|
17
|
+
const node_crypto_1 = require("node:crypto");
|
|
16
18
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
17
19
|
const nodes_from_anchor_1 = require("@codama/nodes-from-anchor");
|
|
18
20
|
const codecs_strings_1 = require("@solana/codecs-strings");
|
|
@@ -85,4 +87,9 @@ function findInstructionDiscriminatorByName(rootNode, name) {
|
|
|
85
87
|
return undefined;
|
|
86
88
|
}
|
|
87
89
|
}
|
|
90
|
+
// Discriminator are the first 8 bytes of the sha256 over the event's name
|
|
91
|
+
function getDiscriminator(name) {
|
|
92
|
+
const hash = (0, node_crypto_1.createHash)('sha256').update(`event:${name}`).digest();
|
|
93
|
+
return new Uint8Array(hash.subarray(0, 8));
|
|
94
|
+
}
|
|
88
95
|
//# sourceMappingURL=idl.js.map
|
package/dist/codegen/idl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idl.js","sourceRoot":"","sources":["../../src/codegen/idl.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;
|
|
1
|
+
{"version":3,"file":"idl.js","sourceRoot":"","sources":["../../src/codegen/idl.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 {createHash} from 'node:crypto';\nimport fs from 'node:fs';\nimport {AnchorIdl, IdlV01, rootNodeFromAnchor} from '@codama/nodes-from-anchor';\nimport {getBase16Encoder, getBase58Encoder, getBase64Encoder, getUtf8Encoder} from '@solana/codecs-strings';\nimport {BytesValueNode, InstructionNode, RootNode, Codama, createFromRoot, camelCase} from 'codama';\n\nexport type Idl = AnchorIdl | RootNode;\n\nexport function isAnchorIdl(idl: Idl): idl is AnchorIdl {\n return !isRootNode(idl);\n}\n\nexport function isAnchorIdlV01(idl: Idl): idl is IdlV01 {\n return isAnchorIdl(idl) && (idl.metadata as {spec?: string}).spec === '0.1.0';\n}\n\nexport function isRootNode(idl: Idl): idl is RootNode {\n return !!(idl as RootNode).program?.publicKey;\n}\n\nexport function parseIdl(idl: Idl): Codama {\n let codama = createFromRoot(rootNodeFromAnchor(idl as AnchorIdl));\n // Check if the idl was an anchor idl\n if (codama.getRoot().program.publicKey === '') {\n codama = createFromRoot(idl as RootNode);\n }\n\n return codama;\n}\n\nexport async function parseIdlFromFile(path: string): Promise<Codama> {\n const idlStr = await fs.promises.readFile(path, 'utf-8');\n const idlJSON = JSON.parse(idlStr);\n\n return parseIdl(idlJSON);\n}\n\nexport function getBytesFromBytesValueNode(node: BytesValueNode): Uint8Array {\n switch (node.encoding) {\n case 'utf8':\n return getUtf8Encoder().encode(node.data) as Uint8Array;\n case 'base16':\n return getBase16Encoder().encode(node.data) as Uint8Array;\n case 'base58':\n return getBase58Encoder().encode(node.data) as Uint8Array;\n case 'base64':\n default:\n return getBase64Encoder().encode(node.data) as Uint8Array;\n }\n}\n\nexport function getInstructionDiscriminatorBytes(node: InstructionNode): Buffer {\n const discArg = node.arguments.find((arg) => arg.name === 'discriminator');\n if (!discArg) {\n throw new Error(`Instruction ${node.name} does not have a discriminator`);\n }\n\n // TODO what about other types of discriminators or ones that are larger than 1 byte?\n switch (discArg.defaultValue?.kind) {\n case 'numberValueNode':\n return Buffer.from([discArg.defaultValue.number]);\n case 'bytesValueNode':\n return Buffer.from(getBytesFromBytesValueNode(discArg.defaultValue));\n case undefined:\n break;\n default:\n throw new Error(`Unable to handle unknown discriminator type ${discArg.defaultValue?.kind}`);\n }\n\n throw new Error(`Unable to find discriminator for instruction ${node.name}`);\n}\n\nexport function findInstructionDiscriminatorByName(rootNode: RootNode, name: string): Buffer | undefined {\n const inst = rootNode.program.instructions.find((inst) => inst.name === name || inst.name === camelCase(name));\n if (!inst) {\n return undefined;\n }\n\n try {\n return getInstructionDiscriminatorBytes(inst);\n } catch (e) {\n // logger.debug(\n // `Failed to get discriminator for instruction ${inst.name}: ${e}`,\n // );\n return undefined;\n }\n}\n\n// Discriminator are the first 8 bytes of the sha256 over the event's name\nexport function getDiscriminator(name: string): Uint8Array {\n const hash = createHash('sha256').update(`event:${name}`).digest();\n return new Uint8Array(hash.subarray(0, 8));\n}\n"]}
|