@dotdm/cdm 0.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.
- package/dist/cdm.d.ts +21 -0
- package/dist/cdm.d.ts.map +1 -0
- package/dist/cdm.js +93 -0
- package/dist/cdm.js.map +1 -0
- package/dist/codegen.d.ts +6 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +90 -0
- package/dist/codegen.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/resolver.d.ts +3 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +35 -0
- package/dist/resolver.js.map +1 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/wrap.d.ts +12 -0
- package/dist/wrap.d.ts.map +1 -0
- package/dist/wrap.js +70 -0
- package/dist/wrap.js.map +1 -0
- package/package.json +37 -0
package/dist/cdm.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PolkadotClient, HexString } from "polkadot-api";
|
|
2
|
+
import type { InkSdk } from "@polkadot-api/sdk-ink";
|
|
3
|
+
import type { CdmContract, CdmContracts, CdmOptions } from "./types";
|
|
4
|
+
export declare class Cdm {
|
|
5
|
+
private cdmJson;
|
|
6
|
+
private cdmJsonPath;
|
|
7
|
+
private targetHash;
|
|
8
|
+
private _client;
|
|
9
|
+
private _inkSdk;
|
|
10
|
+
private ownsClient;
|
|
11
|
+
private defaultOrigin?;
|
|
12
|
+
private defaultSigner?;
|
|
13
|
+
constructor(options?: CdmOptions);
|
|
14
|
+
get client(): PolkadotClient;
|
|
15
|
+
get inkSdk(): InkSdk;
|
|
16
|
+
getContract<K extends string & keyof CdmContracts>(library: K): CdmContract<CdmContracts[K]>;
|
|
17
|
+
getAddress(library: string): HexString;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function createCdm(options?: CdmOptions): Cdm;
|
|
21
|
+
//# sourceMappingURL=cdm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdm.d.ts","sourceRoot":"","sources":["../src/cdm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAA8B,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErE,qBAAa,GAAG;IACZ,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,aAAa,CAAC,CAAiB;gBAE3B,OAAO,CAAC,EAAE,UAAU;IA4BhC,IAAI,MAAM,IAAI,cAAc,CAQ3B;IAED,IAAI,MAAM,IAAI,MAAM,CAKnB;IAED,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAsB5F,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAUtC,OAAO,IAAI,IAAI;CAOlB;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,GAAG,CAEnD"}
|
package/dist/cdm.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createClient } from "polkadot-api";
|
|
2
|
+
import { getWsProvider } from "polkadot-api/ws-provider/node";
|
|
3
|
+
import { withPolkadotSdkCompat } from "polkadot-api/polkadot-sdk-compat";
|
|
4
|
+
import { createInkSdk } from "@polkadot-api/sdk-ink";
|
|
5
|
+
import { readCdmJson } from "@dotdm/contracts";
|
|
6
|
+
import { resolveContract } from "./resolver";
|
|
7
|
+
import { wrapContract } from "./wrap";
|
|
8
|
+
export class Cdm {
|
|
9
|
+
cdmJson;
|
|
10
|
+
cdmJsonPath;
|
|
11
|
+
targetHash;
|
|
12
|
+
_client = null;
|
|
13
|
+
_inkSdk = null;
|
|
14
|
+
ownsClient = false;
|
|
15
|
+
defaultOrigin;
|
|
16
|
+
defaultSigner;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
// Read cdm.json
|
|
19
|
+
const result = readCdmJson(options?.cdmJsonPath);
|
|
20
|
+
if (!result) {
|
|
21
|
+
throw new Error("cdm.json not found. Run 'cdm install' first.");
|
|
22
|
+
}
|
|
23
|
+
this.cdmJson = result.cdmJson;
|
|
24
|
+
this.cdmJsonPath = result.cdmJsonPath;
|
|
25
|
+
// Determine target hash
|
|
26
|
+
if (options?.targetHash) {
|
|
27
|
+
this.targetHash = options.targetHash;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Use first target in cdm.json
|
|
31
|
+
const targets = Object.keys(this.cdmJson.targets);
|
|
32
|
+
if (targets.length === 0)
|
|
33
|
+
throw new Error("No targets found in cdm.json");
|
|
34
|
+
this.targetHash = targets[0];
|
|
35
|
+
}
|
|
36
|
+
if (options?.client) {
|
|
37
|
+
this._client = options.client;
|
|
38
|
+
this.ownsClient = false;
|
|
39
|
+
}
|
|
40
|
+
this.defaultOrigin = options?.defaultOrigin;
|
|
41
|
+
this.defaultSigner = options?.defaultSigner;
|
|
42
|
+
}
|
|
43
|
+
get client() {
|
|
44
|
+
if (!this._client) {
|
|
45
|
+
const target = this.cdmJson.targets[this.targetHash];
|
|
46
|
+
if (!target)
|
|
47
|
+
throw new Error(`Target ${this.targetHash} not found in cdm.json`);
|
|
48
|
+
this._client = createClient(withPolkadotSdkCompat(getWsProvider(target["asset-hub"])));
|
|
49
|
+
this.ownsClient = true;
|
|
50
|
+
}
|
|
51
|
+
return this._client;
|
|
52
|
+
}
|
|
53
|
+
get inkSdk() {
|
|
54
|
+
if (!this._inkSdk) {
|
|
55
|
+
this._inkSdk = createInkSdk(this.client);
|
|
56
|
+
}
|
|
57
|
+
return this._inkSdk;
|
|
58
|
+
}
|
|
59
|
+
getContract(library) {
|
|
60
|
+
const deps = this.cdmJson.dependencies[this.targetHash];
|
|
61
|
+
if (!deps || !(library in deps)) {
|
|
62
|
+
throw new Error(`Contract "${library}" not found in cdm.json dependencies for target ${this.targetHash}`);
|
|
63
|
+
}
|
|
64
|
+
const version = deps[library];
|
|
65
|
+
const resolved = resolveContract(this.targetHash, library, version);
|
|
66
|
+
const descriptor = { abi: resolved.abi };
|
|
67
|
+
const papiContract = this.inkSdk.getContract(descriptor, resolved.address);
|
|
68
|
+
return wrapContract(papiContract, resolved.abi, {
|
|
69
|
+
origin: this.defaultOrigin,
|
|
70
|
+
signer: this.defaultSigner,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
getAddress(library) {
|
|
74
|
+
const deps = this.cdmJson.dependencies[this.targetHash];
|
|
75
|
+
if (!deps || !(library in deps)) {
|
|
76
|
+
throw new Error(`Contract "${library}" not found in cdm.json dependencies`);
|
|
77
|
+
}
|
|
78
|
+
const version = deps[library];
|
|
79
|
+
const resolved = resolveContract(this.targetHash, library, version);
|
|
80
|
+
return resolved.address;
|
|
81
|
+
}
|
|
82
|
+
destroy() {
|
|
83
|
+
if (this.ownsClient && this._client) {
|
|
84
|
+
this._client.destroy();
|
|
85
|
+
this._client = null;
|
|
86
|
+
}
|
|
87
|
+
this._inkSdk = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export function createCdm(options) {
|
|
91
|
+
return new Cdm(options);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=cdm.js.map
|
package/dist/cdm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdm.js","sourceRoot":"","sources":["../src/cdm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,SAAS,CAAC;AAmElD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,QAAQ,EAAE,CAAA;CAAE,EAAE,GAAG,MAAM,CA6B/F"}
|
package/dist/codegen.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
function mapSolidityType(param) {
|
|
2
|
+
const t = param.type;
|
|
3
|
+
// Array types
|
|
4
|
+
if (t.endsWith("[]")) {
|
|
5
|
+
const inner = { ...param, type: t.slice(0, -2) };
|
|
6
|
+
return `${mapSolidityType(inner)}[]`;
|
|
7
|
+
}
|
|
8
|
+
// Fixed-size arrays like uint256[3]
|
|
9
|
+
const fixedArrayMatch = t.match(/^(.+)\[(\d+)\]$/);
|
|
10
|
+
if (fixedArrayMatch) {
|
|
11
|
+
const inner = { ...param, type: fixedArrayMatch[1] };
|
|
12
|
+
return `${mapSolidityType(inner)}[]`;
|
|
13
|
+
}
|
|
14
|
+
// Tuple
|
|
15
|
+
if (t === "tuple" && param.components) {
|
|
16
|
+
const fields = param.components.map((c) => `${c.name}: ${mapSolidityType(c)}`);
|
|
17
|
+
return `{ ${fields.join("; ")} }`;
|
|
18
|
+
}
|
|
19
|
+
// Unsigned integers
|
|
20
|
+
if (/^uint(8|16|32)$/.test(t))
|
|
21
|
+
return "number";
|
|
22
|
+
if (/^uint\d*$/.test(t))
|
|
23
|
+
return "bigint"; // uint64, uint128, uint256, uint (=uint256)
|
|
24
|
+
// Signed integers
|
|
25
|
+
if (/^int(8|16|32)$/.test(t))
|
|
26
|
+
return "number";
|
|
27
|
+
if (/^int\d*$/.test(t))
|
|
28
|
+
return "bigint";
|
|
29
|
+
// Address
|
|
30
|
+
if (t === "address")
|
|
31
|
+
return "HexString";
|
|
32
|
+
// Bytes
|
|
33
|
+
if (t === "bytes")
|
|
34
|
+
return "Binary";
|
|
35
|
+
const bytesMatch = t.match(/^bytes(\d+)$/);
|
|
36
|
+
if (bytesMatch)
|
|
37
|
+
return `FixedSizeBinary<${bytesMatch[1]}>`;
|
|
38
|
+
// Boolean
|
|
39
|
+
if (t === "bool")
|
|
40
|
+
return "boolean";
|
|
41
|
+
// String
|
|
42
|
+
if (t === "string")
|
|
43
|
+
return "string";
|
|
44
|
+
// Fallback
|
|
45
|
+
return "unknown";
|
|
46
|
+
}
|
|
47
|
+
function generateMethodResponseType(outputs) {
|
|
48
|
+
if (!outputs || outputs.length === 0)
|
|
49
|
+
return "undefined";
|
|
50
|
+
if (outputs.length === 1)
|
|
51
|
+
return mapSolidityType(outputs[0]);
|
|
52
|
+
// Multiple outputs -> tuple-like object
|
|
53
|
+
const fields = outputs.map((o, i) => {
|
|
54
|
+
const name = o.name || `_${i}`;
|
|
55
|
+
return `${name}: ${mapSolidityType(o)}`;
|
|
56
|
+
});
|
|
57
|
+
return `{ ${fields.join("; ")} }`;
|
|
58
|
+
}
|
|
59
|
+
function generateMethodArgsType(inputs) {
|
|
60
|
+
if (inputs.length === 0)
|
|
61
|
+
return "[]";
|
|
62
|
+
const parts = inputs.map((p) => `${p.name}: ${mapSolidityType(p)}`);
|
|
63
|
+
return `[${parts.join(", ")}]`;
|
|
64
|
+
}
|
|
65
|
+
export function generateContractTypes(contracts) {
|
|
66
|
+
const lines = [
|
|
67
|
+
"// Auto-generated by cdm install -- do not edit",
|
|
68
|
+
'import type { HexString, Binary, FixedSizeBinary } from "polkadot-api";',
|
|
69
|
+
"",
|
|
70
|
+
'declare module "@dotdm/cdm" {',
|
|
71
|
+
" interface CdmContracts {",
|
|
72
|
+
];
|
|
73
|
+
for (const contract of contracts) {
|
|
74
|
+
const methods = contract.abi.filter((e) => e.type === "function" && e.name);
|
|
75
|
+
lines.push(` "${contract.library}": {`);
|
|
76
|
+
lines.push(" methods: {");
|
|
77
|
+
for (const method of methods) {
|
|
78
|
+
const args = generateMethodArgsType(method.inputs);
|
|
79
|
+
const response = generateMethodResponseType(method.outputs);
|
|
80
|
+
lines.push(` ${method.name}: { args: ${args}; response: ${response} };`);
|
|
81
|
+
}
|
|
82
|
+
lines.push(" };");
|
|
83
|
+
lines.push(" };");
|
|
84
|
+
}
|
|
85
|
+
lines.push(" }");
|
|
86
|
+
lines.push("}");
|
|
87
|
+
lines.push("");
|
|
88
|
+
return lines.join("\n");
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Cdm, createCdm } from "./cdm";
|
|
2
|
+
export { resolveContract } from "./resolver";
|
|
3
|
+
export { generateContractTypes } from "./codegen";
|
|
4
|
+
export type { CdmContract, CdmContracts, CdmContractDef, CdmOptions, QueryResult, TxOpts, TxResult, ResolvedContract, AbiEntry, AbiParam, } from "./types";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EACR,WAAW,EACX,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,GACX,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAY,MAAM,SAAS,CAAC;AAE1D,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,QAAQ,GAC3B,gBAAgB,CAiClB"}
|
package/dist/resolver.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { readFileSync, existsSync, realpathSync } from "fs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { getCdmRoot, getContractDir, resolveContractAbiPath } from "@dotdm/contracts";
|
|
4
|
+
export function resolveContract(targetHash, library, version) {
|
|
5
|
+
// If version is "latest", resolve the symlink
|
|
6
|
+
let resolvedVersion;
|
|
7
|
+
if (version === "latest") {
|
|
8
|
+
const latestLink = resolve(getCdmRoot(), targetHash, "contracts", library, "latest");
|
|
9
|
+
if (!existsSync(latestLink)) {
|
|
10
|
+
throw new Error(`No "latest" symlink found for ${library} in target ${targetHash}`);
|
|
11
|
+
}
|
|
12
|
+
const realPath = realpathSync(latestLink);
|
|
13
|
+
resolvedVersion = parseInt(realPath.split("/").pop(), 10);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
resolvedVersion = version;
|
|
17
|
+
}
|
|
18
|
+
const contractDir = getContractDir(targetHash, library, resolvedVersion);
|
|
19
|
+
if (!existsSync(contractDir)) {
|
|
20
|
+
throw new Error(`Contract ${library}@${resolvedVersion} not found in ${contractDir}`);
|
|
21
|
+
}
|
|
22
|
+
const infoPath = resolve(contractDir, "info.json");
|
|
23
|
+
const info = JSON.parse(readFileSync(infoPath, "utf-8"));
|
|
24
|
+
const abiPath = resolveContractAbiPath(targetHash, library, resolvedVersion);
|
|
25
|
+
const abi = JSON.parse(readFileSync(abiPath, "utf-8"));
|
|
26
|
+
return {
|
|
27
|
+
name: info.name,
|
|
28
|
+
address: info.address,
|
|
29
|
+
abi,
|
|
30
|
+
abiPath,
|
|
31
|
+
version: info.version,
|
|
32
|
+
metadataCid: info.metadataCid,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGtF,MAAM,UAAU,eAAe,CAC3B,UAAkB,EAClB,OAAe,EACf,OAA0B;IAE1B,8CAA8C;IAC9C,IAAI,eAAuB,CAAC;IAC5B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,cAAc,UAAU,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACJ,eAAe,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,IAAI,eAAe,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAe,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnE,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG;QACH,OAAO;QACP,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;KAChC,CAAC;AACN,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { PolkadotSigner, SS58String } from "polkadot-api";
|
|
2
|
+
export interface CdmContractDef {
|
|
3
|
+
methods: Record<string, {
|
|
4
|
+
args: any[];
|
|
5
|
+
response: any;
|
|
6
|
+
}>;
|
|
7
|
+
}
|
|
8
|
+
export interface CdmContracts {
|
|
9
|
+
}
|
|
10
|
+
export interface QueryResult<T> {
|
|
11
|
+
success: boolean;
|
|
12
|
+
value: T;
|
|
13
|
+
gasRequired?: bigint;
|
|
14
|
+
}
|
|
15
|
+
export interface TxOpts {
|
|
16
|
+
signer?: PolkadotSigner;
|
|
17
|
+
}
|
|
18
|
+
export interface TxResult {
|
|
19
|
+
txHash: string;
|
|
20
|
+
blockHash: string;
|
|
21
|
+
ok: boolean;
|
|
22
|
+
events: unknown[];
|
|
23
|
+
}
|
|
24
|
+
export type CdmContract<C extends CdmContractDef> = {
|
|
25
|
+
[K in keyof C["methods"]]: {
|
|
26
|
+
query: (...args: C["methods"][K]["args"]) => Promise<QueryResult<C["methods"][K]["response"]>>;
|
|
27
|
+
tx: (...args: [...C["methods"][K]["args"], opts?: TxOpts]) => Promise<TxResult>;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export interface CdmOptions {
|
|
31
|
+
cdmJsonPath?: string;
|
|
32
|
+
targetHash?: string;
|
|
33
|
+
client?: import("polkadot-api").PolkadotClient;
|
|
34
|
+
defaultOrigin?: SS58String;
|
|
35
|
+
defaultSigner?: PolkadotSigner;
|
|
36
|
+
}
|
|
37
|
+
export interface ResolvedContract {
|
|
38
|
+
name: string;
|
|
39
|
+
address: string;
|
|
40
|
+
abi: AbiEntry[];
|
|
41
|
+
abiPath: string;
|
|
42
|
+
version: number;
|
|
43
|
+
metadataCid: string;
|
|
44
|
+
}
|
|
45
|
+
export interface AbiParam {
|
|
46
|
+
name: string;
|
|
47
|
+
type: string;
|
|
48
|
+
components?: AbiParam[];
|
|
49
|
+
}
|
|
50
|
+
export interface AbiEntry {
|
|
51
|
+
type: string;
|
|
52
|
+
name?: string;
|
|
53
|
+
inputs: AbiParam[];
|
|
54
|
+
outputs?: AbiParam[];
|
|
55
|
+
stateMutability?: string;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAsC,UAAU,EAAE,MAAM,cAAc,CAAC;AAGnG,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;CAC3D;AAID,MAAM,WAAW,YAAY;CAAG;AAGhC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,MAAM;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;CAC3B;AAGD,MAAM,WAAW,QAAQ;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;CACrB;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,IAAI;KAC/C,CAAC,IAAI,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG;QACvB,KAAK,EAAE,CACH,GAAG,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KACnF;CACJ,CAAC;AAGF,MAAM,WAAW,UAAU;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,cAAc,EAAE,cAAc,CAAC;IAC/C,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,aAAa,CAAC,EAAE,cAAc,CAAC;CAClC;AAGD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/wrap.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SS58String, PolkadotSigner } from "polkadot-api";
|
|
2
|
+
import type { AbiEntry, QueryResult, TxResult } from "./types";
|
|
3
|
+
type PapiInkContract = any;
|
|
4
|
+
export declare function wrapContract(papiContract: PapiInkContract, abi: AbiEntry[], defaults: {
|
|
5
|
+
origin?: SS58String;
|
|
6
|
+
signer?: PolkadotSigner;
|
|
7
|
+
}): Record<string, {
|
|
8
|
+
query: (...args: any[]) => Promise<QueryResult<any>>;
|
|
9
|
+
tx: (...args: any[]) => Promise<TxResult>;
|
|
10
|
+
}>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=wrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAU,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEvE,KAAK,eAAe,GAAG,GAAG,CAAC;AAkC3B,wBAAgB,YAAY,CACxB,YAAY,EAAE,eAAe,EAC7B,GAAG,EAAE,QAAQ,EAAE,EACf,QAAQ,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,GAC3D,MAAM,CACL,MAAM,EACN;IACI,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7C,CACJ,CAmDA"}
|
package/dist/wrap.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
function buildMethodArgMap(abi) {
|
|
2
|
+
const map = {};
|
|
3
|
+
for (const entry of abi) {
|
|
4
|
+
if (entry.type === "function" && entry.name) {
|
|
5
|
+
map[entry.name] = entry.inputs.map((p) => p.name);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return map;
|
|
9
|
+
}
|
|
10
|
+
function positionalToNamed(argNames, values) {
|
|
11
|
+
const data = {};
|
|
12
|
+
for (let i = 0; i < argNames.length; i++) {
|
|
13
|
+
data[argNames[i]] = values[i];
|
|
14
|
+
}
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
// Check if last arg is an overrides object (not a regular positional arg)
|
|
18
|
+
function extractOverrides(argNames, args) {
|
|
19
|
+
if (args.length > argNames.length && args.length > 0) {
|
|
20
|
+
const last = args[args.length - 1];
|
|
21
|
+
if (last && typeof last === "object" && !Array.isArray(last)) {
|
|
22
|
+
return { positionalArgs: args.slice(0, -1), overrides: last };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return { positionalArgs: args };
|
|
26
|
+
}
|
|
27
|
+
export function wrapContract(papiContract, abi, defaults) {
|
|
28
|
+
const methodArgs = buildMethodArgMap(abi);
|
|
29
|
+
return new Proxy({}, {
|
|
30
|
+
get(_, methodName) {
|
|
31
|
+
if (typeof methodName !== "string")
|
|
32
|
+
return undefined;
|
|
33
|
+
const argNames = methodArgs[methodName];
|
|
34
|
+
if (!argNames)
|
|
35
|
+
return undefined;
|
|
36
|
+
return {
|
|
37
|
+
query: async (...args) => {
|
|
38
|
+
const { positionalArgs, overrides } = extractOverrides(argNames, args);
|
|
39
|
+
const data = positionalToNamed(argNames, positionalArgs);
|
|
40
|
+
const origin = overrides?.origin ?? defaults.origin;
|
|
41
|
+
if (!origin)
|
|
42
|
+
throw new Error("No origin provided for query. Pass { origin } or set defaultOrigin.");
|
|
43
|
+
const result = await papiContract.query(methodName, { origin, data });
|
|
44
|
+
return {
|
|
45
|
+
success: result.success,
|
|
46
|
+
value: result.success ? result.value.response : undefined,
|
|
47
|
+
gasRequired: result.value?.gasRequired,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
tx: async (...args) => {
|
|
51
|
+
const { positionalArgs, overrides } = extractOverrides(argNames, args);
|
|
52
|
+
const data = positionalToNamed(argNames, positionalArgs);
|
|
53
|
+
const signer = overrides?.signer ?? defaults.signer;
|
|
54
|
+
if (!signer)
|
|
55
|
+
throw new Error("No signer provided for tx. Pass { signer } or set defaultSigner.");
|
|
56
|
+
const origin = defaults.origin;
|
|
57
|
+
const tx = papiContract.send(methodName, { data, origin: origin ?? "" });
|
|
58
|
+
const result = await tx.signAndSubmit(signer);
|
|
59
|
+
return {
|
|
60
|
+
txHash: result.txHash,
|
|
61
|
+
blockHash: result.block?.hash ?? "",
|
|
62
|
+
ok: result.ok,
|
|
63
|
+
events: result.events ?? [],
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=wrap.js.map
|
package/dist/wrap.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.js","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dotdm/cdm",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./codegen": {
|
|
13
|
+
"types": "./dist/codegen.d.ts",
|
|
14
|
+
"import": "./dist/codegen.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@polkadot-api/sdk-ink": "^0.6.2",
|
|
25
|
+
"polkadot-api": "^1.23.3",
|
|
26
|
+
"@dotdm/contracts": "0.1.0",
|
|
27
|
+
"@dotdm/env": "0.1.0"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^24.10.1",
|
|
31
|
+
"typescript": "^5.9.3"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc -p tsconfig.json",
|
|
35
|
+
"clean": "rm -rf dist"
|
|
36
|
+
}
|
|
37
|
+
}
|