Skip to content

Commit 8d51891

Browse files
authored
Use latest RenderMap type from renderers-core (#61)
1 parent 11c230e commit 8d51891

File tree

11 files changed

+85
-74
lines changed

11 files changed

+85
-74
lines changed

.changeset/wicked-needles-thank.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@codama/renderers-rust': patch
3+
---
4+
5+
Use latest RenderMap type from renderers-core

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@
4141
"test:unit": "vitest run"
4242
},
4343
"dependencies": {
44-
"@codama/errors": "^1.3.7",
45-
"@codama/nodes": "^1.3.7",
46-
"@codama/renderers-core": "^1.2.2",
47-
"@codama/visitors-core": "^1.3.7",
44+
"@codama/errors": "^1.4.1",
45+
"@codama/nodes": "^1.4.1",
46+
"@codama/renderers-core": "^1.3.0",
47+
"@codama/visitors-core": "^1.4.1",
4848
"@solana/codecs-strings": "^5.0.0",
4949
"nunjucks": "^3.2.4"
5050
},
5151
"devDependencies": {
52-
"@codama/nodes-from-anchor": "^1.2.9",
52+
"@codama/nodes-from-anchor": "^1.3.3",
5353
"@changesets/changelog-github": "^0.5.1",
5454
"@changesets/cli": "^2.29.7",
5555
"@solana/eslint-config-solana": "^5.0.0",

pnpm-lock.yaml

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/getRenderMapVisitor.ts

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,8 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
113113
imports.mergeWith(seedsImports);
114114
}
115115

116-
return createRenderMap(
117-
`accounts/${snakeCase(node.name)}.rs`,
118-
render('accountsPage.njk', {
116+
return createRenderMap(`accounts/${snakeCase(node.name)}.rs`, {
117+
content: render('accountsPage.njk', {
119118
account: node,
120119
anchorTraits,
121120
constantSeeds,
@@ -130,21 +129,20 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
130129
seeds,
131130
typeManifest,
132131
}),
133-
);
132+
});
134133
},
135134

136135
visitDefinedType(node) {
137136
const typeManifest = visit(node, typeManifestVisitor);
138137
const imports = new ImportMap().mergeWithManifest(typeManifest);
139138

140-
return createRenderMap(
141-
`types/${snakeCase(node.name)}.rs`,
142-
render('definedTypesPage.njk', {
139+
return createRenderMap(`types/${snakeCase(node.name)}.rs`, {
140+
content: render('definedTypesPage.njk', {
143141
definedType: node,
144142
imports: imports.remove(`generatedTypes::${pascalCase(node.name)}`).toString(dependencyMap),
145143
typeManifest,
146144
}),
147-
);
145+
});
148146
},
149147

150148
visitInstruction(node) {
@@ -235,9 +233,8 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
235233
const dataTraits = getTraitsFromNode(node);
236234
imports.mergeWith(dataTraits.imports);
237235

238-
return createRenderMap(
239-
`instructions/${snakeCase(node.name)}.rs`,
240-
render('instructionsPage.njk', {
236+
return createRenderMap(`instructions/${snakeCase(node.name)}.rs`, {
237+
content: render('instructionsPage.njk', {
241238
dataTraits: dataTraits.render,
242239
discriminatorConstants: discriminatorConstants.render,
243240
hasArgs,
@@ -251,7 +248,7 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
251248
program,
252249
typeManifest,
253250
}),
254-
);
251+
});
255252
},
256253

257254
visitProgram(node, { self }) {
@@ -266,15 +263,13 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
266263

267264
// Errors.
268265
if (node.errors.length > 0) {
269-
renders = addToRenderMap(
270-
renders,
271-
`errors/${snakeCase(node.name)}.rs`,
272-
render('errorsPage.njk', {
266+
renders = addToRenderMap(renders, `errors/${snakeCase(node.name)}.rs`, {
267+
content: render('errorsPage.njk', {
273268
errors: node.errors,
274269
imports: new ImportMap().toString(dependencyMap),
275270
program: node,
276271
}),
277-
);
272+
});
278273
}
279274

280275
program = null;
@@ -306,15 +301,22 @@ export function getRenderMapVisitor(options: GetRenderMapOptions = {}) {
306301
return mergeRenderMaps([
307302
createRenderMap({
308303
['accounts/mod.rs']:
309-
accountsToExport.length > 0 ? render('accountsMod.njk', ctx) : undefined,
310-
['errors/mod.rs']: programsToExport.length > 0 ? render('errorsMod.njk', ctx) : undefined,
304+
accountsToExport.length > 0 ? { content: render('accountsMod.njk', ctx) } : undefined,
305+
['errors/mod.rs']:
306+
programsToExport.length > 0 ? { content: render('errorsMod.njk', ctx) } : undefined,
311307
['instructions/mod.rs']:
312-
instructionsToExport.length > 0 ? render('instructionsMod.njk', ctx) : undefined,
313-
['mod.rs']: render('rootMod.njk', ctx),
314-
['programs.rs']: programsToExport.length > 0 ? render('programsMod.njk', ctx) : undefined,
315-
['shared.rs']: accountsToExport.length > 0 ? render('sharedPage.njk', ctx) : undefined,
308+
instructionsToExport.length > 0
309+
? { content: render('instructionsMod.njk', ctx) }
310+
: undefined,
311+
['mod.rs']: { content: render('rootMod.njk', ctx) },
312+
['programs.rs']:
313+
programsToExport.length > 0 ? { content: render('programsMod.njk', ctx) } : undefined,
314+
['shared.rs']:
315+
accountsToExport.length > 0 ? { content: render('sharedPage.njk', ctx) } : undefined,
316316
['types/mod.rs']:
317-
definedTypesToExport.length > 0 ? render('definedTypesMod.njk', ctx) : undefined,
317+
definedTypesToExport.length > 0
318+
? { content: render('definedTypesMod.njk', ctx) }
319+
: undefined,
318320
}),
319321
...getAllPrograms(node).map(p => visit(p, self)),
320322
]);

test/accountsPage.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ test('it renders a byte array seed used on an account', () => {
4545

4646
// Then we expect the following identifier and reference to the byte array
4747
// as a parameters to be rendered.
48-
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs'), [
48+
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs').content, [
4949
`byte_array_seed: [u8; 32],`,
5050
`&byte_array_seed,`,
5151
]);
@@ -74,7 +74,7 @@ test('it renders an empty array of seeds for seedless PDAs', () => {
7474

7575
// Then we expect the following identifier and reference to the byte array
7676
// as a parameters to be rendered.
77-
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs'), [/pub fn find_pda\(/, /&\[\s*\]/]);
77+
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs').content, [/pub fn find_pda\(/, /&\[\s*\]/]);
7878
});
7979

8080
test('it renders constant PDA seeds as prefix consts', () => {
@@ -99,7 +99,7 @@ test('it renders constant PDA seeds as prefix consts', () => {
9999
const renderMap = visit(node, getRenderMapVisitor());
100100

101101
// Then we expect the following const helpers for constant seeds.
102-
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs'), [
102+
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs').content, [
103103
'/// 0. `TestAccount::PREFIX.0`',
104104
'/// 1. my_account (`Pubkey`)',
105105
'/// 2. `TestAccount::PREFIX.1`',
@@ -131,7 +131,7 @@ test('it renders anchor traits impl', () => {
131131
const renderMap = visit(node, getRenderMapVisitor());
132132

133133
// Then we expect the following Anchor traits impl.
134-
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs'), [
134+
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs').content, [
135135
'#[cfg(feature = "anchor")]',
136136
'impl anchor_lang::AccountDeserialize for TestAccount',
137137
'impl anchor_lang::AccountSerialize for TestAccount {}',
@@ -163,7 +163,7 @@ test('it renders fetch functions', () => {
163163
const renderMap = visit(node, getRenderMapVisitor());
164164

165165
// Then we expect the following fetch functions to be rendered.
166-
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs'), [
166+
codeContains(getFromRenderMap(renderMap, 'accounts/test_account.rs').content, [
167167
'pub fn fetch_test_account',
168168
'pub fn fetch_maybe_test_account',
169169
'pub fn fetch_all_test_account',
@@ -195,7 +195,7 @@ test('it renders account without anchor traits', () => {
195195
const renderMap = visit(node, getRenderMapVisitor({ anchorTraits: false }));
196196

197197
// Then we do not expect Anchor traits.
198-
codeDoesNotContains(getFromRenderMap(renderMap, 'accounts/test_account.rs'), [
198+
codeDoesNotContains(getFromRenderMap(renderMap, 'accounts/test_account.rs').content, [
199199
'#[cfg(feature = "anchor")]',
200200
'#[cfg(feature = "anchor-idl-build")]',
201201
]);

test/definedTypesPage.test.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ test('it renders a prefix string on a defined type', () => {
3939
const renderMap = visit(node, getRenderMapVisitor());
4040

4141
// Then we expect the following use and identifier to be rendered.
42-
codeContains(getFromRenderMap(renderMap, 'types/blob.rs'), [
42+
codeContains(getFromRenderMap(renderMap, 'types/blob.rs').content, [
4343
`use kaigan::types::U8PrefixString;`,
4444
`content_type: U8PrefixString,`,
4545
]);
@@ -62,7 +62,7 @@ test('it renders a scalar enum with Copy derive', () => {
6262
const renderMap = visit(node, getRenderMapVisitor());
6363

6464
// Then we expect the following use and identifier to be rendered.
65-
codeContains(getFromRenderMap(renderMap, 'types/tag.rs'), [`#[derive(`, `Copy`, `pub enum Tag`]);
65+
codeContains(getFromRenderMap(renderMap, 'types/tag.rs').content, [`#[derive(`, `Copy`, `pub enum Tag`]);
6666
});
6767

6868
test('it renders a non-scalar enum without Copy derive', () => {
@@ -93,7 +93,10 @@ test('it renders a non-scalar enum without Copy derive', () => {
9393
const renderMap = visit(node, getRenderMapVisitor());
9494

9595
// Then we expect the following use and identifier to be rendered.
96-
codeContains(getFromRenderMap(renderMap, 'types/tag_with_struct.rs'), [`#[derive(`, `pub enum TagWithStruct`]);
96+
codeContains(getFromRenderMap(renderMap, 'types/tag_with_struct.rs').content, [
97+
`#[derive(`,
98+
`pub enum TagWithStruct`,
99+
]);
97100
// And we expect the Copy derive to be missing.
98-
codeDoesNotContains(getFromRenderMap(renderMap, 'types/tag_with_struct.rs'), `Copy`);
101+
codeDoesNotContains(getFromRenderMap(renderMap, 'types/tag_with_struct.rs').content, `Copy`);
99102
});

test/errorsPage.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ test('it renders codes for errors', () => {
2929
const renderMap = visit(node, getRenderMapVisitor());
3030

3131
// Then we expect the following errors with codes.
32-
codeContains(getFromRenderMap(renderMap, 'errors/spl_token.rs'), [
32+
codeContains(getFromRenderMap(renderMap, 'errors/spl_token.rs').content, [
3333
`InvalidInstruction = 0x1770,`,
3434
`InvalidProgram = 0x1B58,`,
3535
]);

test/instructionsPage.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ test('it renders a public instruction data struct', () => {
1818
const renderMap = visit(node, getRenderMapVisitor());
1919

2020
// Then we expect the following pub struct.
21-
codeContains(getFromRenderMap(renderMap, 'instructions/mint_tokens.rs'), [
21+
codeContains(getFromRenderMap(renderMap, 'instructions/mint_tokens.rs').content, [
2222
`pub struct MintTokensInstructionData`,
2323
`pub fn new(`,
2424
]);
@@ -46,7 +46,7 @@ test('it renders an instruction with a remainder str', () => {
4646
const renderMap = visit(node, getRenderMapVisitor());
4747

4848
// Then we expect the following pub struct.
49-
codeContains(getFromRenderMap(renderMap, 'instructions/add_memo.rs'), [
49+
codeContains(getFromRenderMap(renderMap, 'instructions/add_memo.rs').content, [
5050
`use kaigan::types::RemainderStr`,
5151
`pub memo: RemainderStr`,
5252
]);
@@ -64,7 +64,7 @@ test('it renders a default impl for instruction data struct', () => {
6464
const renderMap = visit(node, getRenderMapVisitor());
6565

6666
// Then we expect the following Default trait to be implemented.
67-
codeContains(getFromRenderMap(renderMap, 'instructions/mint_tokens.rs'), [
67+
codeContains(getFromRenderMap(renderMap, 'instructions/mint_tokens.rs').content, [
6868
`impl Default for MintTokensInstructionData`,
6969
`fn default(`,
7070
]);

test/types/array.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ test('it exports short vecs', () => {
2525
const renderMap = visit(node, getRenderMapVisitor());
2626

2727
// Then we expect a short vec to be exported.
28-
codeContains(getFromRenderMap(renderMap, 'types/my_short_vec.rs'), [
28+
codeContains(getFromRenderMap(renderMap, 'types/my_short_vec.rs').content, [
2929
/pub type MyShortVec = ShortVec<Pubkey>;/,
3030
/use solana_pubkey::Pubkey/,
3131
/use solana_short_vec::ShortVec/,
3232
]);
33-
codeDoesNotContains(getFromRenderMap(renderMap, 'types/my_short_vec.rs'), [
33+
codeDoesNotContains(getFromRenderMap(renderMap, 'types/my_short_vec.rs').content, [
3434
/use borsh::BorshSerialize/,
3535
/use borsh::BorshDeserialize/,
3636
]);
@@ -52,7 +52,7 @@ test('it exports short vecs as struct fields', () => {
5252
const renderMap = visit(node, getRenderMapVisitor());
5353

5454
// Then we expect a short vec to be exported as a struct field.
55-
codeContains(getFromRenderMap(renderMap, 'types/my_short_vec.rs'), [
55+
codeContains(getFromRenderMap(renderMap, 'types/my_short_vec.rs').content, [
5656
/pub value: ShortVec<Pubkey>,/,
5757
/use solana_pubkey::Pubkey/,
5858
/use solana_short_vec::ShortVec/,

test/types/number.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ test('it exports short u16 numbers', () => {
1717
const renderMap = visit(node, getRenderMapVisitor());
1818

1919
// Then we expect a short u16 to be exported.
20-
codeContains(getFromRenderMap(renderMap, 'types/my_short_u16.rs'), [
20+
codeContains(getFromRenderMap(renderMap, 'types/my_short_u16.rs').content, [
2121
/pub type MyShortU16 = ShortU16/,
2222
/use solana_short_vec::ShortU16/,
2323
]);
24-
codeDoesNotContains(getFromRenderMap(renderMap, 'types/my_short_u16.rs'), [
24+
codeDoesNotContains(getFromRenderMap(renderMap, 'types/my_short_u16.rs').content, [
2525
/use borsh::BorshSerialize/,
2626
/use borsh::BorshDeserialize/,
2727
]);
@@ -38,7 +38,7 @@ test('it exports short u16 numbers as struct fields', () => {
3838
const renderMap = visit(node, getRenderMapVisitor());
3939

4040
// Then we expect a short u16 to be exported as a struct field.
41-
codeContains(getFromRenderMap(renderMap, 'types/my_short_u16.rs'), [
41+
codeContains(getFromRenderMap(renderMap, 'types/my_short_u16.rs').content, [
4242
/pub value: ShortU16/,
4343
/use solana_short_vec::ShortU16/,
4444
]);

0 commit comments

Comments
 (0)