Skip to content

Commit 949d128

Browse files
authored
Merge pull request #1 from kobzarvs/fix/prevent-duplication-identifiers
Fix/prevent duplication identifiers
2 parents c2256d9 + dcb14c0 commit 949d128

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

rollup.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const handlebarsPlugin = () => ({
3737
escapeComment: true,
3838
escapeDescription: true,
3939
camelCase: true,
40+
onceInList: true,
4041
},
4142
});
4243
return `export default ${templateSpec};`;

src/templates/partials/parameters.hbs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,25 @@
22
{{#if @root.useOptions~}}
33
{
44
{{#each parameters}}
5-
{{{name}}}{{#if default}} = {{{default}}}{{/if}},
5+
{{#onceInList ../parameters name}}
6+
{{{name}}}{{#if default}} = {{{default}}}{{/if}},
7+
{{/onceInList}}
68
{{/each}}
79
}: {
810
{{#each parameters}}
9-
{{#ifdef description deprecated}}
10-
/**
11-
{{#if description}}
12-
* {{{escapeComment description}}}
13-
{{/if}}
14-
{{#if deprecated}}
15-
* @deprecated
16-
{{/if}}
17-
*/
18-
{{/ifdef}}
19-
{{{name}}}{{>isRequired}}: {{>type}},
11+
{{#onceInList ../parameters name}}
12+
{{#ifdef description deprecated}}
13+
/**
14+
{{#if description}}
15+
* {{{escapeComment description}}}
16+
{{/if}}
17+
{{#if deprecated}}
18+
* @deprecated
19+
{{/if}}
20+
*/
21+
{{/ifdef}}
22+
{{{name}}}{{>isRequired}}: {{>type}},
23+
{{/onceInList}}
2024
{{/each}}
2125
}
2226
{{~else}}

src/utils/registerHandlebarHelpers.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { EOL } from 'os';
44

55
import type { Enum } from '../client/interfaces/Enum';
66
import type { Model } from '../client/interfaces/Model';
7+
import { OperationParameter } from '../client/interfaces/OperationParameter';
78
import type { HttpClient } from '../HttpClient';
89
import { unique } from './unique';
910

@@ -104,4 +105,17 @@ export const registerHandlebarHelpers = (root: {
104105
Handlebars.registerHelper('camelCase', function (value: string): string {
105106
return camelCase(value);
106107
});
108+
109+
Handlebars.registerHelper(
110+
'onceInList',
111+
function (this: any, list: OperationParameter[], name: string, options: Handlebars.HelperOptions): string {
112+
const firstIndex = list.findIndex(param => param.name === name);
113+
114+
if (firstIndex === options.data.index || !list.slice(firstIndex + 1).some(param => param.name === name)) {
115+
return options.fn(this);
116+
} else {
117+
return options.inverse(this);
118+
}
119+
}
120+
);
107121
};

0 commit comments

Comments
 (0)