@metaplex-foundation/kinobi 0.14.0 → 0.15.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.
- package/dist/cjs/renderers/rust/GetRustTypeManifestVisitor.js +16 -5
- package/dist/cjs/renderers/rust/GetRustTypeManifestVisitor.js.map +1 -1
- package/dist/cjs/renderers/rust/templates/accountsMod.njk +2 -2
- package/dist/cjs/renderers/rust/templates/accountsPage.njk +33 -28
- package/dist/cjs/renderers/rust/templates/definedTypesMod.njk +2 -2
- package/dist/cjs/renderers/rust/templates/errorsMod.njk +1 -1
- package/dist/cjs/renderers/rust/templates/errorsPage.njk +1 -1
- package/dist/cjs/renderers/rust/templates/instructionsCpiPage.njk +62 -9
- package/dist/cjs/renderers/rust/templates/instructionsCpiPageBuilder.njk +55 -26
- package/dist/cjs/renderers/rust/templates/instructionsMod.njk +61 -2
- package/dist/cjs/renderers/rust/templates/instructionsPage.njk +24 -18
- package/dist/cjs/renderers/rust/templates/instructionsPageBuilder.njk +47 -19
- package/dist/cjs/renderers/rust/templates/programsMod.njk +2 -2
- package/package.json +1 -1
- package/src/renderers/rust/GetRustTypeManifestVisitor.ts +20 -5
- package/src/renderers/rust/templates/accountsMod.njk +2 -2
- package/src/renderers/rust/templates/accountsPage.njk +33 -28
- package/src/renderers/rust/templates/definedTypesMod.njk +2 -2
- package/src/renderers/rust/templates/errorsMod.njk +1 -1
- package/src/renderers/rust/templates/errorsPage.njk +1 -1
- package/src/renderers/rust/templates/instructionsCpiPage.njk +62 -9
- package/src/renderers/rust/templates/instructionsCpiPageBuilder.njk +55 -26
- package/src/renderers/rust/templates/instructionsMod.njk +61 -2
- package/src/renderers/rust/templates/instructionsPage.njk +24 -18
- package/src/renderers/rust/templates/instructionsPageBuilder.njk +47 -19
- package/src/renderers/rust/templates/programsMod.njk +2 -2
|
@@ -48,7 +48,9 @@ class GetRustTypeManifestVisitor {
|
|
|
48
48
|
this.parentName = null;
|
|
49
49
|
return {
|
|
50
50
|
...manifest,
|
|
51
|
-
type:
|
|
51
|
+
type: '#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]\n' +
|
|
52
|
+
'#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]\n' +
|
|
53
|
+
`${manifest.type}`,
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
56
|
visitAccountData(accountData) {
|
|
@@ -92,8 +94,12 @@ class GetRustTypeManifestVisitor {
|
|
|
92
94
|
}
|
|
93
95
|
return {
|
|
94
96
|
...manifest,
|
|
95
|
-
type: `#[derive(${traits.join(', ')})]\n
|
|
96
|
-
|
|
97
|
+
type: `#[derive(${traits.join(', ')})]\n` +
|
|
98
|
+
'#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]\n' +
|
|
99
|
+
`${manifest.type}`,
|
|
100
|
+
nestedStructs: manifest.nestedStructs.map((struct) => `#[derive(${traits.join(', ')})]\n` +
|
|
101
|
+
'#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]\n' +
|
|
102
|
+
`${struct}`),
|
|
97
103
|
};
|
|
98
104
|
}
|
|
99
105
|
visitError() {
|
|
@@ -262,11 +268,16 @@ class GetRustTypeManifestVisitor {
|
|
|
262
268
|
this.nestedStruct = originalNestedStruct;
|
|
263
269
|
const fieldName = (0, shared_1.snakeCase)(structFieldType.name);
|
|
264
270
|
const docblock = this.createDocblock(structFieldType.docs);
|
|
271
|
+
let derive = '';
|
|
272
|
+
if (fieldManifest.type === 'Pubkey') {
|
|
273
|
+
derive =
|
|
274
|
+
'#[cfg_attr(feature = "serde", serde(with = "serde_with::As::<serde_with::DisplayFromStr>"))]\n';
|
|
275
|
+
}
|
|
265
276
|
return {
|
|
266
277
|
...fieldManifest,
|
|
267
278
|
type: this.inlineStruct
|
|
268
|
-
? `${docblock}${fieldName}: ${fieldManifest.type},`
|
|
269
|
-
: `${docblock}pub ${fieldName}: ${fieldManifest.type},`,
|
|
279
|
+
? `${docblock}${derive}${fieldName}: ${fieldManifest.type},`
|
|
280
|
+
: `${docblock}${derive}pub ${fieldName}: ${fieldManifest.type},`,
|
|
270
281
|
};
|
|
271
282
|
}
|
|
272
283
|
visitTupleType(tupleType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetRustTypeManifestVisitor.js","sourceRoot":"","sources":["../../../../src/renderers/rust/GetRustTypeManifestVisitor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,mDAAqC;AACrC,yCAAqD;AACrD,6CAAgD;AAChD,mDAAgD;AAQhD,MAAa,0BAA0B;IAAvC;QACS,eAAU,GAAkB,IAAI,CAAC;QAEjC,iBAAY,GAAY,KAAK,CAAC;QAE7B,iBAAY,GAAY,KAAK,CAAC;IA8ZxC,CAAC;IA5ZC,SAAS;QACP,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAA0B;QACrC,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO;YACL,GAAG,QAAQ;YACX,IAAI,EAAE,6EAA6E,QAAQ,CAAC,IAAI,EAAE;SACnG,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,WAAkC;QACjD,OAAO,IAAA,gBAAK,EAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB,CAAC,WAAkC;QACjD,OAAO,IAAA,gBAAK,EAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB;QACrB,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,wBAAwB,CACtB,mBAAkD;QAElD,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yBAAyB,CACvB,oBAAoD;QAEpD,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,WAAkC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG;YACb,gBAAgB;YAChB,kBAAkB;YAClB,OAAO;YACP,OAAO;YACP,IAAI;YACJ,WAAW;SACZ,CAAC;QACF,MAAM,YAAY,GAChB,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;YACtC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,YAAY,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;SACnC;QACD,OAAO;YACL,GAAG,QAAQ;YACX,IAAI,EAAE,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE;YACzD,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,CACvC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CACzD;SACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,SAA8B;QAC3C,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEnD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACnC,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG;aACzD,CAAC;SACH;QAED,IACE,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YAClC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YACtC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EACrC;YACA,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,GAAG;aACnC,CAAC;SACH;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YACvC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACzD,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,gBAAgB,aAAa,CAAC,IAAI,GAAG;aAC5C,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,aAAa,CAAC,QAA4B;QACxC,MAAM,qBAAqB,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,UAAU,GACd,QAAQ,CAAC,UAAU,KAAK,WAAW;YACjC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI,6BAAa,EAAE,CAAC,GAAG,CAC9B,GAAG,UAAU,KAAK,qBAAqB,EAAE,CAC1C;YACD,IAAI,EAAE,qBAAqB;YAC3B,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAA4B;QACxC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE;YACf,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,gBAAK,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,YAAY,IAAA,mBAAU,EAAC,UAAU,CAAC,OAAO,YAAY,KAAK;SACjE,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,oBAAoD;QAEpD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,GAAG,IAAI,GAAG;YAChB,OAAO,EAAE,IAAI,6BAAa,EAAE;YAC5B,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,0BAA0B,CACxB,qBAAsD;QAEtD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;QAE3C,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QACxD,MAAM,YAAY,GAAG,IAAA,gBAAK,EAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QAErC,OAAO;YACL,GAAG,YAAY;YACf,IAAI,EAAE,GAAG,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG;SACtC,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,oBAAoD;QAEpD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;QAE3C,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QACxD,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QAErC,OAAO;YACL,GAAG,aAAa;YAChB,IAAI,EAAE,GAAG,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG;SACtC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAA0B;QACrC,MAAM,GAAG,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACxD,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,WAAW,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG;SAC5C,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEpD,IACE,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI;YACjC,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EACjC;YACA,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,UAAU,aAAa,CAAC,IAAI,GAAG;aACtC,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,YAAY,CAAC,OAA0B;QACrC,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACvD,OAAO;YACL,GAAG,aAAa;YAChB,IAAI,EAAE,WAAW,aAAa,CAAC,IAAI,GAAG;SACvC,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE;YACf,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAK,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;gBACL,GAAG,cAAc;gBACjB,IAAI,EAAE,IAAA,mBAAU,EAAC,UAAU,CAAC;gBAC5B,aAAa,EAAE;oBACb,GAAG,cAAc,CAAC,aAAa;oBAC/B,cAAc,IAAA,mBAAU,EAAC,UAAU,CAAC,OAAO,UAAU,KAAK;iBAC3D;aACF,CAAC;SACH;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,KAAK,EAAE,CAAC;SAC3D;QAED,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,cAAc,IAAA,mBAAU,EAAC,UAAU,CAAC,OAAO,UAAU,KAAK;SACjE,CAAC;IACJ,CAAC;IAED,oBAAoB,CAClB,eAA0C;QAE1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/C,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/C,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,UAAU;YACb,IAAA,mBAAU,EAAC,kBAAkB,CAAC,GAAG,IAAA,mBAAU,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE3D,OAAO;YACL,GAAG,aAAa;YAChB,IAAI,EAAE,IAAI,CAAC,YAAY;gBACrB,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAS,KAAK,aAAa,CAAC,IAAI,GAAG;gBACnD,CAAC,CAAC,GAAG,QAAQ,OAAO,SAAS,KAAK,aAAa,CAAC,IAAI,GAAG;SAC1D,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,SAA8B;QAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,gBAAK,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAC1D,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAA4B;QACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YAClE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,6BAAa,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;SAC1E;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,SAA8B;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,EAAE,SAAS,CAAC,IAAI;SACrB,CAAC,CAAC;QAEH,OAAO,IAAA,gBAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE;YAC9B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,sBAAsB,CACpB,iBAA8C;QAE9C,OAAO,IAAA,gBAAK,EAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,6BAAa,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC;YAClE,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,IACE,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YACnC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YACvC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EACtC;YACA,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACpC,OAAO;gBACL,IAAI,EAAE,QAAQ,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG;gBACtC,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YACxC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAES,cAAc,CACtB,SAA6B;QAE7B,OAAO;YACL,OAAO,EAAE,IAAI,6BAAa,EAAE,CAAC,SAAS,CACpC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CACrC;YACD,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;SACzD,CAAC;IACJ,CAAC;IAES,cAAc,CAAC,IAAc;QACrC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC9C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;CACF;AAnaD,gEAmaC"}
|
|
1
|
+
{"version":3,"file":"GetRustTypeManifestVisitor.js","sourceRoot":"","sources":["../../../../src/renderers/rust/GetRustTypeManifestVisitor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,mDAAqC;AACrC,yCAAqD;AACrD,6CAAgD;AAChD,mDAAgD;AAQhD,MAAa,0BAA0B;IAAvC;QACS,eAAU,GAAkB,IAAI,CAAC;QAEjC,iBAAY,GAAY,KAAK,CAAC;QAE7B,iBAAY,GAAY,KAAK,CAAC;IA6axC,CAAC;IA3aC,SAAS;QACP,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAA0B;QACrC,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO;YACL,GAAG,QAAQ;YACX,IAAI,EACF,4EAA4E;gBAC5E,gFAAgF;gBAChF,GAAG,QAAQ,CAAC,IAAI,EAAE;SACrB,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,WAAkC;QACjD,OAAO,IAAA,gBAAK,EAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB,CAAC,WAAkC;QACjD,OAAO,IAAA,gBAAK,EAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB;QACrB,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,wBAAwB,CACtB,mBAAkD;QAElD,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yBAAyB,CACvB,oBAAoD;QAEpD,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,WAAkC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG;YACb,gBAAgB;YAChB,kBAAkB;YAClB,OAAO;YACP,OAAO;YACP,IAAI;YACJ,WAAW;SACZ,CAAC;QACF,MAAM,YAAY,GAChB,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;YACtC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,YAAY,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;SACnC;QACD,OAAO;YACL,GAAG,QAAQ;YACX,IAAI,EACF,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnC,gFAAgF;gBAChF,GAAG,QAAQ,CAAC,IAAI,EAAE;YACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,CACvC,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnC,gFAAgF;gBAChF,GAAG,MAAM,EAAE,CACd;SACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,SAA8B;QAC3C,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEnD,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACnC,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG;aACzD,CAAC;SACH;QAED,IACE,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YAClC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YACtC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EACrC;YACA,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,GAAG;aACnC,CAAC;SACH;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YACvC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACzD,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,gBAAgB,aAAa,CAAC,IAAI,GAAG;aAC5C,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,aAAa,CAAC,QAA4B;QACxC,MAAM,qBAAqB,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,UAAU,GACd,QAAQ,CAAC,UAAU,KAAK,WAAW;YACjC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI,6BAAa,EAAE,CAAC,GAAG,CAC9B,GAAG,UAAU,KAAK,qBAAqB,EAAE,CAC1C;YACD,IAAI,EAAE,qBAAqB;YAC3B,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAA4B;QACxC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE;YACf,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,gBAAK,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,YAAY,IAAA,mBAAU,EAAC,UAAU,CAAC,OAAO,YAAY,KAAK;SACjE,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,oBAAoD;QAEpD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,GAAG,IAAI,GAAG;YAChB,OAAO,EAAE,IAAI,6BAAa,EAAE;YAC5B,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,0BAA0B,CACxB,qBAAsD;QAEtD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;QAE3C,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QACxD,MAAM,YAAY,GAAG,IAAA,gBAAK,EAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QAErC,OAAO;YACL,GAAG,YAAY;YACf,IAAI,EAAE,GAAG,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG;SACtC,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,oBAAoD;QAEpD,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;QAE3C,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAU,EAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QACxD,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QAErC,OAAO;YACL,GAAG,aAAa;YAChB,IAAI,EAAE,GAAG,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG;SACtC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAA0B;QACrC,MAAM,GAAG,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACxD,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,WAAW,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG;SAC5C,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEpD,IACE,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI;YACjC,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EACjC;YACA,OAAO;gBACL,GAAG,aAAa;gBAChB,IAAI,EAAE,UAAU,aAAa,CAAC,IAAI,GAAG;aACtC,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,YAAY,CAAC,OAA0B;QACrC,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACvD,OAAO;YACL,GAAG,aAAa;YAChB,IAAI,EAAE,WAAW,aAAa,CAAC,IAAI,GAAG;SACvC,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE;YACf,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAK,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;gBACL,GAAG,cAAc;gBACjB,IAAI,EAAE,IAAA,mBAAU,EAAC,UAAU,CAAC;gBAC5B,aAAa,EAAE;oBACb,GAAG,cAAc,CAAC,aAAa;oBAC/B,cAAc,IAAA,mBAAU,EAAC,UAAU,CAAC,OAAO,UAAU,KAAK;iBAC3D;aACF,CAAC;SACH;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,KAAK,EAAE,CAAC;SAC3D;QAED,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,cAAc,IAAA,mBAAU,EAAC,UAAU,CAAC,OAAO,UAAU,KAAK;SACjE,CAAC;IACJ,CAAC;IAED,oBAAoB,CAClB,eAA0C;QAE1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/C,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/C,IAAI,CAAC,kBAAkB,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,UAAU;YACb,IAAA,mBAAU,EAAC,kBAAkB,CAAC,GAAG,IAAA,mBAAU,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE;YACnC,MAAM;gBACJ,gGAAgG,CAAC;SACpG;QAED,OAAO;YACL,GAAG,aAAa;YAChB,IAAI,EAAE,IAAI,CAAC,YAAY;gBACrB,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,KAAK,aAAa,CAAC,IAAI,GAAG;gBAC5D,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,OAAO,SAAS,KAAK,aAAa,CAAC,IAAI,GAAG;SACnE,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,SAA8B;QAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,gBAAK,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO;YACL,GAAG,cAAc;YACjB,IAAI,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;SAC1D,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAA4B;QACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YAClE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,6BAAa,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;SAC1E;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,SAA8B;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,EAAE,SAAS,CAAC,IAAI;SACrB,CAAC,CAAC;QAEH,OAAO,IAAA,gBAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE;YAC9B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,sBAAsB,CACpB,iBAA8C;QAE9C,OAAO,IAAA,gBAAK,EAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,6BAAa,EAAE,CAAC,GAAG,CAAC,gCAAgC,CAAC;YAClE,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,UAAgC;QAC9C,IACE,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YACnC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YACvC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,EACtC;YACA,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACpC,OAAO;gBACL,IAAI,EAAE,QAAQ,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG;gBACtC,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YACxC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,IAAI,6BAAa,EAAE;gBAC5B,aAAa,EAAE,EAAE;aAClB,CAAC;SACH;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAES,cAAc,CACtB,SAA6B;QAE7B,OAAO;YACL,OAAO,EAAE,IAAI,6BAAa,EAAE,CAAC,SAAS,CACpC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CACrC;YACD,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;SACzD,CAAC;IACJ,CAAC;IAES,cAAc,CAAC,IAAc;QACrC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC9C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;CACF;AAlbD,gEAkbC"}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
{% block main %}
|
|
4
4
|
|
|
5
5
|
{% for account in accountsToExport | sort(false, false, 'name') %}
|
|
6
|
-
pub mod {{ account.name | snakeCase }};
|
|
6
|
+
pub(crate) mod {{ account.name | snakeCase }};
|
|
7
7
|
{% endfor %}
|
|
8
8
|
|
|
9
9
|
{% for account in accountsToExport | sort(false, false, 'name') %}
|
|
10
|
-
pub use self::{{ account.name | snakeCase }}::*;
|
|
10
|
+
pub use self::{{ account.name | snakeCase }}::*;
|
|
11
11
|
{% endfor %}
|
|
12
12
|
|
|
13
13
|
{% endblock %}
|
|
@@ -12,25 +12,23 @@
|
|
|
12
12
|
{{ nestedStruct }}
|
|
13
13
|
{% endfor %}
|
|
14
14
|
|
|
15
|
-
{% if account.size != null or seeds.length > 0 %}
|
|
16
15
|
impl {{ account.name | pascalCase }} {
|
|
17
16
|
{% if account.size != null %}
|
|
18
17
|
pub const LEN: usize = {{ account.size }};
|
|
19
18
|
{% endif %}
|
|
20
19
|
|
|
21
20
|
{% if seeds.length > 0 %}
|
|
22
|
-
pub fn
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
solana_program::pubkey::Pubkey::find_program_address(
|
|
21
|
+
pub fn create_pda(
|
|
22
|
+
{% if hasVariableSeeds %}
|
|
23
|
+
{% for seed in seeds %}
|
|
24
|
+
{% if seed.kind === 'variable' %}
|
|
25
|
+
{{ seed.name | snakeCase }}: {{ seed.typeManifest.type }},
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% endfor %}
|
|
28
|
+
{% endif %}
|
|
29
|
+
bump: u8,
|
|
30
|
+
) -> Result<solana_program::pubkey::Pubkey, solana_program::pubkey::PubkeyError> {
|
|
31
|
+
solana_program::pubkey::Pubkey::create_program_address(
|
|
34
32
|
&[
|
|
35
33
|
{% for seed in seeds %}
|
|
36
34
|
{% if seed.kind === 'programId' %}
|
|
@@ -43,21 +41,24 @@ impl {{ account.name | pascalCase }} {
|
|
|
43
41
|
{{ seed.name | snakeCase }}.to_string().as_ref(),
|
|
44
42
|
{% endif %}
|
|
45
43
|
{% endfor %}
|
|
44
|
+
&[bump],
|
|
46
45
|
],
|
|
47
46
|
&crate::{{ program.name | snakeCase | upper }}_ID,
|
|
48
47
|
)
|
|
49
48
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
{%
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
49
|
+
|
|
50
|
+
pub fn find_pda(
|
|
51
|
+
{% if hasVariableSeeds %}
|
|
52
|
+
{% for seed in seeds %}
|
|
53
|
+
{% if seed.kind == 'variable' and seed.type.kind == 'publicKeyTypeNode' %}
|
|
54
|
+
{{ seed.name | snakeCase }}: &{{ seed.typeManifest.type }},
|
|
55
|
+
{% elif seed.kind === 'variable' %}
|
|
56
|
+
{{ seed.name | snakeCase }}: {{ seed.typeManifest.type }},
|
|
57
|
+
{% endif %}
|
|
58
|
+
{% endfor %}
|
|
59
|
+
{% endif %}
|
|
60
|
+
) -> (solana_program::pubkey::Pubkey, u8) {
|
|
61
|
+
solana_program::pubkey::Pubkey::find_program_address(
|
|
61
62
|
&[
|
|
62
63
|
{% for seed in seeds %}
|
|
63
64
|
{% if seed.kind === 'programId' %}
|
|
@@ -70,19 +71,23 @@ impl {{ account.name | pascalCase }} {
|
|
|
70
71
|
{{ seed.name | snakeCase }}.to_string().as_ref(),
|
|
71
72
|
{% endif %}
|
|
72
73
|
{% endfor %}
|
|
73
|
-
&[bump],
|
|
74
74
|
],
|
|
75
75
|
&crate::{{ program.name | snakeCase | upper }}_ID,
|
|
76
76
|
)
|
|
77
77
|
}
|
|
78
78
|
{% endif %}
|
|
79
|
+
|
|
80
|
+
#[inline(always)]
|
|
81
|
+
pub fn from_bytes(data: &[u8]) -> Result<Self, std::io::Error> {
|
|
82
|
+
let mut data = data;
|
|
83
|
+
Self::deserialize(&mut data)
|
|
84
|
+
}
|
|
79
85
|
}
|
|
80
|
-
{% endif %}
|
|
81
86
|
|
|
82
|
-
impl<'a> TryFrom<&
|
|
87
|
+
impl<'a> TryFrom<&solana_program::account_info::AccountInfo<'a>> for {{ account.name | pascalCase }} {
|
|
83
88
|
type Error = std::io::Error;
|
|
84
89
|
|
|
85
|
-
fn try_from(account_info: &
|
|
90
|
+
fn try_from(account_info: &solana_program::account_info::AccountInfo<'a>) -> Result<Self, Self::Error> {
|
|
86
91
|
let mut data: &[u8] = &(*account_info.data).borrow();
|
|
87
92
|
Self::deserialize(&mut data)
|
|
88
93
|
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
{% block main %}
|
|
4
4
|
|
|
5
5
|
{% for definedType in definedTypesToExport | sort(false, false, 'name') %}
|
|
6
|
-
pub mod {{ definedType.name | snakeCase }};
|
|
6
|
+
pub(crate) mod {{ definedType.name | snakeCase }};
|
|
7
7
|
{% endfor %}
|
|
8
8
|
|
|
9
9
|
{% for definedType in definedTypesToExport | sort(false, false, 'name') %}
|
|
10
|
-
pub use self::{{ definedType.name | snakeCase }}::*;
|
|
10
|
+
pub use self::{{ definedType.name | snakeCase }}::*;
|
|
11
11
|
{% endfor %}
|
|
12
12
|
|
|
13
13
|
{% endblock %}
|
|
@@ -8,7 +8,7 @@ use thiserror::Error;
|
|
|
8
8
|
#[derive(Clone, Debug, Eq, Error, FromPrimitive, PartialEq)]
|
|
9
9
|
pub enum {{ program.name | pascalCase }}Error {
|
|
10
10
|
{% for error in errors | sort(false, false, 'code') %}
|
|
11
|
-
/// 0x{{ error.code.toString(16) | upper }} - {{ error.message }}
|
|
11
|
+
/// {{ error.code }} (0x{{ error.code.toString(16) | upper }}) - {{ error.message }}
|
|
12
12
|
#[error("{{ error.message }}")]
|
|
13
13
|
{{ error.name | pascalCase }},
|
|
14
14
|
{% endfor %}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
|
+
/// `{{ instruction.name | snakeCase }}` CPI accounts.
|
|
2
|
+
pub struct {{ instruction.name | pascalCase }}CpiAccounts<'a, 'b> {
|
|
3
|
+
{% for account in instruction.accounts %}
|
|
4
|
+
{% if account.docs.length > 0 %}
|
|
5
|
+
{{ macros.docblock(account.docs) }}
|
|
6
|
+
{% endif %}
|
|
7
|
+
|
|
8
|
+
{% if account.isSigner === 'either' %}
|
|
9
|
+
{% set type = '(&\'b solana_program::account_info::AccountInfo<\'a>, bool)' %}
|
|
10
|
+
{% else %}
|
|
11
|
+
{% set type = '&\'b solana_program::account_info::AccountInfo<\'a>' %}
|
|
12
|
+
{% endif %}
|
|
13
|
+
|
|
14
|
+
{% if account.isOptional %}
|
|
15
|
+
pub {{ account.name | snakeCase }}: Option<{{ type }}>,
|
|
16
|
+
{% else %}
|
|
17
|
+
pub {{ account.name | snakeCase }}: {{ type }},
|
|
18
|
+
{% endif %}
|
|
19
|
+
{% endfor %}
|
|
20
|
+
}
|
|
21
|
+
|
|
1
22
|
/// `{{ instruction.name | snakeCase }}` CPI instruction.
|
|
2
|
-
pub struct {{ instruction.name | pascalCase }}Cpi<'a> {
|
|
23
|
+
pub struct {{ instruction.name | pascalCase }}Cpi<'a, 'b> {
|
|
3
24
|
/// The program to invoke.
|
|
4
|
-
pub __program: &'
|
|
25
|
+
pub __program: &'b solana_program::account_info::AccountInfo<'a>,
|
|
5
26
|
{% for account in instruction.accounts %}
|
|
6
27
|
{% if account.docs.length > 0 %}
|
|
7
28
|
{{ macros.docblock(account.docs) }}
|
|
8
29
|
{% endif %}
|
|
9
30
|
|
|
10
31
|
{% if account.isSigner === 'either' %}
|
|
11
|
-
{% set type = '(&\'
|
|
32
|
+
{% set type = '(&\'b solana_program::account_info::AccountInfo<\'a>, bool)' %}
|
|
12
33
|
{% else %}
|
|
13
|
-
{% set type = '&\'
|
|
34
|
+
{% set type = '&\'b solana_program::account_info::AccountInfo<\'a>' %}
|
|
14
35
|
{% endif %}
|
|
15
36
|
|
|
16
37
|
{% if account.isOptional %}
|
|
@@ -25,14 +46,44 @@ pub struct {{ instruction.name | pascalCase }}Cpi<'a> {
|
|
|
25
46
|
{% endif %}
|
|
26
47
|
}
|
|
27
48
|
|
|
28
|
-
impl<'a> {{ instruction.name | pascalCase }}Cpi<'a> {
|
|
49
|
+
impl<'a, 'b> {{ instruction.name | pascalCase }}Cpi<'a, 'b> {
|
|
50
|
+
pub fn new(
|
|
51
|
+
program: &'b solana_program::account_info::AccountInfo<'a>,
|
|
52
|
+
accounts: {{ instruction.name | pascalCase }}CpiAccounts<'a, 'b>,
|
|
53
|
+
{% if hasArgs %}
|
|
54
|
+
args: {{ instruction.name | pascalCase }}InstructionArgs,
|
|
55
|
+
{% endif %}
|
|
56
|
+
) -> Self {
|
|
57
|
+
Self {
|
|
58
|
+
__program: program,
|
|
59
|
+
{% for account in instruction.accounts %}
|
|
60
|
+
{{ account.name | snakeCase }}: accounts.{{ account.name | snakeCase }},
|
|
61
|
+
{% endfor %}
|
|
62
|
+
{% if hasArgs %}
|
|
63
|
+
__args: args,
|
|
64
|
+
{% endif %}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
#[inline(always)]
|
|
29
68
|
pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult {
|
|
30
|
-
self.
|
|
69
|
+
self.invoke_signed_with_remaining_accounts(&[], &[])
|
|
70
|
+
}
|
|
71
|
+
#[inline(always)]
|
|
72
|
+
pub fn invoke_with_remaining_accounts(&self, remaining_accounts: &[super::InstructionAccountInfo<'a, '_>]) -> solana_program::entrypoint::ProgramResult {
|
|
73
|
+
self.invoke_signed_with_remaining_accounts(&[], remaining_accounts)
|
|
74
|
+
}
|
|
75
|
+
#[inline(always)]
|
|
76
|
+
pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program::entrypoint::ProgramResult {
|
|
77
|
+
self.invoke_signed_with_remaining_accounts(signers_seeds, &[])
|
|
31
78
|
}
|
|
32
79
|
#[allow(clippy::clone_on_copy)]
|
|
33
80
|
#[allow(clippy::vec_init_then_push)]
|
|
34
|
-
pub fn
|
|
35
|
-
|
|
81
|
+
pub fn invoke_signed_with_remaining_accounts(
|
|
82
|
+
&self,
|
|
83
|
+
signers_seeds: &[&[&[u8]]],
|
|
84
|
+
remaining_accounts: &[super::InstructionAccountInfo<'a, '_>]
|
|
85
|
+
) -> solana_program::entrypoint::ProgramResult {
|
|
86
|
+
let mut accounts = Vec::with_capacity({{ instruction.accounts.length }} + remaining_accounts.len());
|
|
36
87
|
{% for account in instruction.accounts %}
|
|
37
88
|
{% if account.isSigner === 'either' %}
|
|
38
89
|
{% if account.isOptional and instruction.optionalAccountStrategy === 'programId' %}
|
|
@@ -88,6 +139,7 @@ impl<'a> {{ instruction.name | pascalCase }}Cpi<'a> {
|
|
|
88
139
|
{% endif %}
|
|
89
140
|
{% endif %}
|
|
90
141
|
{% endfor %}
|
|
142
|
+
remaining_accounts.iter().for_each(|remaining_account| accounts.push(remaining_account.to_account_meta()));
|
|
91
143
|
let {{ 'mut ' if hasArgs }}data = {{ instruction.name | pascalCase }}InstructionData::new().try_to_vec().unwrap();
|
|
92
144
|
{% if hasArgs %}
|
|
93
145
|
let mut args = self.__args.try_to_vec().unwrap();
|
|
@@ -99,7 +151,7 @@ impl<'a> {{ instruction.name | pascalCase }}Cpi<'a> {
|
|
|
99
151
|
accounts,
|
|
100
152
|
data,
|
|
101
153
|
};
|
|
102
|
-
let mut account_infos = Vec::with_capacity({{ instruction.accounts.length }} + 1);
|
|
154
|
+
let mut account_infos = Vec::with_capacity({{ instruction.accounts.length }} + 1 + remaining_accounts.len());
|
|
103
155
|
account_infos.push(self.__program.clone());
|
|
104
156
|
{% for account in instruction.accounts %}
|
|
105
157
|
{% if account.isOptional %}
|
|
@@ -110,6 +162,7 @@ impl<'a> {{ instruction.name | pascalCase }}Cpi<'a> {
|
|
|
110
162
|
account_infos.push(self.{{ account.name | snakeCase }}{{ '.0' if account.isSigner === 'either' }}.clone());
|
|
111
163
|
{% endif %}
|
|
112
164
|
{% endfor %}
|
|
165
|
+
remaining_accounts.iter().for_each(|remaining_account| account_infos.push(remaining_account.account_info().clone()));
|
|
113
166
|
|
|
114
167
|
if signers_seeds.is_empty() {
|
|
115
168
|
solana_program::program::invoke(&instruction, &account_infos)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/// `{{ instruction.name | snakeCase }}` CPI instruction builder.
|
|
2
|
-
pub struct {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
3
|
-
instruction: Box<{{ instruction.name | pascalCase }}CpiBuilderInstruction<'a>>,
|
|
2
|
+
pub struct {{ instruction.name | pascalCase }}CpiBuilder<'a, 'b> {
|
|
3
|
+
instruction: Box<{{ instruction.name | pascalCase }}CpiBuilderInstruction<'a, 'b>>,
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
impl<'a> {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
7
|
-
pub fn new(program: &'
|
|
6
|
+
impl<'a, 'b> {{ instruction.name | pascalCase }}CpiBuilder<'a, 'b> {
|
|
7
|
+
pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self {
|
|
8
8
|
let instruction = Box::new({{ instruction.name | pascalCase }}CpiBuilderInstruction {
|
|
9
9
|
__program: program,
|
|
10
10
|
{% for account in instruction.accounts %}
|
|
@@ -15,6 +15,7 @@ impl<'a> {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
|
15
15
|
{{ arg.name | snakeCase }}: None,
|
|
16
16
|
{% endif %}
|
|
17
17
|
{% endfor %}
|
|
18
|
+
__remaining_accounts: Vec::new(),
|
|
18
19
|
});
|
|
19
20
|
Self { instruction }
|
|
20
21
|
}
|
|
@@ -22,11 +23,23 @@ impl<'a> {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
|
22
23
|
{{'/// `[optional account]`\n' if account.isOptional }}
|
|
23
24
|
{{- macros.docblock(account.docs) -}}
|
|
24
25
|
#[inline(always)]
|
|
25
|
-
pub fn {{ account.name | snakeCase }}(&mut self, {{ account.name | snakeCase }}:
|
|
26
|
-
{% if account.
|
|
27
|
-
|
|
26
|
+
pub fn {{ account.name | snakeCase }}(&mut self, {{ account.name | snakeCase }}: {{ "Option<&'b solana_program::account_info::AccountInfo<'a>>" if account.isOptional else "&'b solana_program::account_info::AccountInfo<'a>" }}{{ ', as_signer: bool' if account.isSigner === 'either' }}) -> &mut Self {
|
|
27
|
+
{% if account.isOptional %}
|
|
28
|
+
{% if account.isSigner === 'either' %}
|
|
29
|
+
if let Some({{ account.name | snakeCase }}) = {{ account.name | snakeCase }} {
|
|
30
|
+
self.instruction.{{ account.name | snakeCase }} = Some(({{ account.name | snakeCase }}, as_signer));
|
|
31
|
+
} else {
|
|
32
|
+
self.instruction.{{ account.name | snakeCase }} = None;
|
|
33
|
+
}
|
|
34
|
+
{% else %}
|
|
35
|
+
self.instruction.{{ account.name | snakeCase }} = {{ account.name | snakeCase }};
|
|
36
|
+
{% endif %}
|
|
28
37
|
{% else %}
|
|
29
|
-
|
|
38
|
+
{% if account.isSigner === 'either' %}
|
|
39
|
+
self.instruction.{{ account.name | snakeCase }} = Some(({{ account.name | snakeCase }}, as_signer));
|
|
40
|
+
{% else %}
|
|
41
|
+
self.instruction.{{ account.name | snakeCase }} = Some({{ account.name | snakeCase }});
|
|
42
|
+
{% endif %}
|
|
30
43
|
{% endif %}
|
|
31
44
|
self
|
|
32
45
|
}
|
|
@@ -43,8 +56,23 @@ impl<'a> {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
|
43
56
|
}
|
|
44
57
|
{% endif %}
|
|
45
58
|
{% endfor %}
|
|
59
|
+
#[inline(always)]
|
|
60
|
+
pub fn add_remaining_account(&mut self, account: super::InstructionAccountInfo<'a,'b>) -> &mut Self {
|
|
61
|
+
self.instruction.__remaining_accounts.push(account);
|
|
62
|
+
self
|
|
63
|
+
}
|
|
64
|
+
#[inline(always)]
|
|
65
|
+
pub fn add_remaining_accounts(&mut self, accounts: &[super::InstructionAccountInfo<'a, 'b>]) -> &mut Self {
|
|
66
|
+
self.instruction.__remaining_accounts.extend_from_slice(accounts);
|
|
67
|
+
self
|
|
68
|
+
}
|
|
69
|
+
#[inline(always)]
|
|
70
|
+
pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult {
|
|
71
|
+
self.invoke_signed(&[])
|
|
72
|
+
}
|
|
46
73
|
#[allow(clippy::clone_on_copy)]
|
|
47
|
-
|
|
74
|
+
#[allow(clippy::vec_init_then_push)]
|
|
75
|
+
pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program::entrypoint::ProgramResult {
|
|
48
76
|
{% if hasArgs %}
|
|
49
77
|
let args = {{ instruction.name | pascalCase }}InstructionArgs {
|
|
50
78
|
{% for arg in instructionArgs %}
|
|
@@ -62,8 +90,7 @@ impl<'a> {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
|
62
90
|
{% endfor %}
|
|
63
91
|
};
|
|
64
92
|
{% endif %}
|
|
65
|
-
|
|
66
|
-
{{ instruction.name | pascalCase }}Cpi {
|
|
93
|
+
let instruction = {{ instruction.name | pascalCase }}Cpi {
|
|
67
94
|
__program: self.instruction.__program,
|
|
68
95
|
{% for account in instruction.accounts %}
|
|
69
96
|
{{ account.name | snakeCase }}: self.instruction.{{ account.name | snakeCase }}{{ '.expect(\"' + account.name | snakeCase + ' is not set\")' if not account.isOptional }},
|
|
@@ -71,22 +98,24 @@ impl<'a> {{ instruction.name | pascalCase }}CpiBuilder<'a> {
|
|
|
71
98
|
{% if hasArgs %}
|
|
72
99
|
__args: args,
|
|
73
100
|
{% endif %}
|
|
74
|
-
}
|
|
101
|
+
};
|
|
102
|
+
instruction.invoke_signed_with_remaining_accounts(signers_seeds, &self.instruction.__remaining_accounts)
|
|
75
103
|
}
|
|
76
104
|
}
|
|
77
105
|
|
|
78
|
-
struct {{ instruction.name | pascalCase }}CpiBuilderInstruction<'a> {
|
|
79
|
-
__program: &'
|
|
80
|
-
{% for account in instruction.accounts %}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
{% endfor %}
|
|
87
|
-
{% for arg in instructionArgs %}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
{% endfor %}
|
|
106
|
+
struct {{ instruction.name | pascalCase }}CpiBuilderInstruction<'a, 'b> {
|
|
107
|
+
__program: &'b solana_program::account_info::AccountInfo<'a>,
|
|
108
|
+
{% for account in instruction.accounts %}
|
|
109
|
+
{% if account.isSigner === 'either' %}
|
|
110
|
+
{{ account.name | snakeCase }}: Option<(&'b solana_program::account_info::AccountInfo<'a>, bool)>,
|
|
111
|
+
{% else %}
|
|
112
|
+
{{ account.name | snakeCase }}: Option<&'b solana_program::account_info::AccountInfo<'a>>,
|
|
113
|
+
{% endif %}
|
|
114
|
+
{% endfor %}
|
|
115
|
+
{% for arg in instructionArgs %}
|
|
116
|
+
{% if not arg.default %}
|
|
117
|
+
{{ arg.name | snakeCase }}: {{ arg.type if arg.innerOptionType else 'Option<' + arg.type + '>' }},
|
|
118
|
+
{% endif %}
|
|
119
|
+
{% endfor %}
|
|
120
|
+
__remaining_accounts: Vec<super::InstructionAccountInfo<'a, 'b>>,
|
|
92
121
|
}
|
|
@@ -3,11 +3,70 @@
|
|
|
3
3
|
{% block main %}
|
|
4
4
|
|
|
5
5
|
{% for instruction in instructionsToExport | sort(false, false, 'name') %}
|
|
6
|
-
pub mod {{ instruction.name | snakeCase }};
|
|
6
|
+
pub(crate) mod {{ instruction.name | snakeCase }};
|
|
7
7
|
{% endfor %}
|
|
8
8
|
|
|
9
9
|
{% for instruction in instructionsToExport | sort(false, false, 'name') %}
|
|
10
|
-
pub use self::{{ instruction.name | snakeCase }}::*;
|
|
10
|
+
pub use self::{{ instruction.name | snakeCase }}::*;
|
|
11
11
|
{% endfor %}
|
|
12
12
|
|
|
13
|
+
#[derive(Clone, Copy)]
|
|
14
|
+
pub enum InstructionAccount {
|
|
15
|
+
Readonly(solana_program::pubkey::Pubkey),
|
|
16
|
+
ReadonlySigner(solana_program::pubkey::Pubkey),
|
|
17
|
+
Writable(solana_program::pubkey::Pubkey),
|
|
18
|
+
WritableSigner(solana_program::pubkey::Pubkey),
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
impl InstructionAccount {
|
|
22
|
+
pub fn to_account_meta(&self) -> solana_program::instruction::AccountMeta {
|
|
23
|
+
let (pubkey, writable, signer) = match self {
|
|
24
|
+
InstructionAccount::Readonly(pubkey) => (pubkey, false, false),
|
|
25
|
+
InstructionAccount::ReadonlySigner(pubkey) => (pubkey, false, true),
|
|
26
|
+
InstructionAccount::Writable(pubkey) => (pubkey, true, false),
|
|
27
|
+
InstructionAccount::WritableSigner(pubkey) => (pubkey, true, true),
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
if writable {
|
|
31
|
+
solana_program::instruction::AccountMeta::new(*pubkey, signer)
|
|
32
|
+
} else {
|
|
33
|
+
solana_program::instruction::AccountMeta::new_readonly(*pubkey, signer)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#[derive(Clone, Copy)]
|
|
39
|
+
pub enum InstructionAccountInfo<'a, 'b> {
|
|
40
|
+
Readonly(&'b solana_program::account_info::AccountInfo<'a>),
|
|
41
|
+
ReadonlySigner(&'b solana_program::account_info::AccountInfo<'a>),
|
|
42
|
+
Writable(&'b solana_program::account_info::AccountInfo<'a>),
|
|
43
|
+
WritableSigner(&'b solana_program::account_info::AccountInfo<'a>),
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
impl<'a, 'b> InstructionAccountInfo<'a, 'b> {
|
|
47
|
+
pub fn to_account_meta(&self) -> solana_program::instruction::AccountMeta {
|
|
48
|
+
let (pubkey, writable, signer) = match self {
|
|
49
|
+
InstructionAccountInfo::Readonly(account_info) => (account_info.key, false, false),
|
|
50
|
+
InstructionAccountInfo::ReadonlySigner(account_info) => (account_info.key, false, true),
|
|
51
|
+
InstructionAccountInfo::Writable(account_info) => (account_info.key, true, false),
|
|
52
|
+
InstructionAccountInfo::WritableSigner(account_info) => (account_info.key, true, true),
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
if writable {
|
|
56
|
+
solana_program::instruction::AccountMeta::new(*pubkey, signer)
|
|
57
|
+
} else {
|
|
58
|
+
solana_program::instruction::AccountMeta::new_readonly(*pubkey, signer)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
pub fn account_info(&self) -> &'b solana_program::account_info::AccountInfo<'a> {
|
|
62
|
+
match self {
|
|
63
|
+
InstructionAccountInfo::Readonly(account_info)
|
|
64
|
+
| InstructionAccountInfo::ReadonlySigner(account_info)
|
|
65
|
+
| InstructionAccountInfo::Writable(account_info)
|
|
66
|
+
| InstructionAccountInfo::WritableSigner(account_info)
|
|
67
|
+
=> account_info,
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
13
72
|
{% endblock %}
|
|
@@ -7,29 +7,32 @@
|
|
|
7
7
|
|
|
8
8
|
/// Accounts.
|
|
9
9
|
pub struct {{ instruction.name | pascalCase }} {
|
|
10
|
-
{% for account in instruction.accounts %}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
{% for account in instruction.accounts %}
|
|
11
|
+
{% if account.docs.length > 0 %}
|
|
12
|
+
{{ macros.docblock(account.docs) }}
|
|
13
|
+
{% endif %}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
{% if account.isSigner === 'either' %}
|
|
16
|
+
{% set type = '(solana_program::pubkey::Pubkey, bool)' %}
|
|
17
|
+
{% else %}
|
|
18
|
+
{% set type = 'solana_program::pubkey::Pubkey' %}
|
|
19
|
+
{% endif %}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{% endfor %}
|
|
21
|
+
{% if account.isOptional %}
|
|
22
|
+
pub {{ account.name | snakeCase }}: Option<{{ type }}>,
|
|
23
|
+
{% else %}
|
|
24
|
+
pub {{ account.name | snakeCase }}: {{ type }},
|
|
25
|
+
{% endif %}
|
|
26
|
+
{% endfor %}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
impl {{ instruction.name | pascalCase }} {
|
|
30
|
-
#[allow(clippy::vec_init_then_push)]
|
|
31
30
|
pub fn instruction(&self{{ ', args: ' + instruction.name | pascalCase + 'InstructionArgs' if hasArgs }}) -> solana_program::instruction::Instruction {
|
|
32
|
-
|
|
31
|
+
self.instruction_with_remaining_accounts({{ 'args, ' if hasArgs }}&[])
|
|
32
|
+
}
|
|
33
|
+
#[allow(clippy::vec_init_then_push)]
|
|
34
|
+
pub fn instruction_with_remaining_accounts(&self{{ ', args: ' + instruction.name | pascalCase + 'InstructionArgs' if hasArgs }}, remaining_accounts: &[super::InstructionAccount]) -> solana_program::instruction::Instruction {
|
|
35
|
+
let mut accounts = Vec::with_capacity({{ instruction.accounts.length }} + remaining_accounts.len());
|
|
33
36
|
{% for account in instruction.accounts %}
|
|
34
37
|
{% if account.isSigner === 'either' %}
|
|
35
38
|
{% if account.isOptional %}
|
|
@@ -89,6 +92,7 @@ impl {{ instruction.name | pascalCase }} {
|
|
|
89
92
|
{% endif %}
|
|
90
93
|
{% endif %}
|
|
91
94
|
{% endfor %}
|
|
95
|
+
remaining_accounts.iter().for_each(|remaining_account| accounts.push(remaining_account.to_account_meta()));
|
|
92
96
|
let {{ 'mut ' if hasArgs }}data = {{ instruction.name | pascalCase }}InstructionData::new().try_to_vec().unwrap();
|
|
93
97
|
{% if hasArgs %}
|
|
94
98
|
let mut args = args.try_to_vec().unwrap();
|
|
@@ -125,7 +129,8 @@ impl {{ instruction.name | pascalCase }}InstructionData {
|
|
|
125
129
|
}
|
|
126
130
|
|
|
127
131
|
{% if hasArgs %}
|
|
128
|
-
#[derive(BorshSerialize, BorshDeserialize, Debug)]
|
|
132
|
+
#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
|
|
133
|
+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
|
129
134
|
pub struct {{ instruction.name | pascalCase }}InstructionArgs {
|
|
130
135
|
{% for arg in instructionArgs %}
|
|
131
136
|
{% if not arg.default %}
|
|
@@ -137,6 +142,7 @@ pub struct {{ instruction.name | pascalCase }}InstructionArgs {
|
|
|
137
142
|
|
|
138
143
|
{% for nestedStruct in typeManifest.nestedStructs %}
|
|
139
144
|
#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
|
|
145
|
+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
|
140
146
|
{{ nestedStruct }}
|
|
141
147
|
{% endfor %}
|
|
142
148
|
|