Skip to content

Commit 671505b

Browse files
committed
more readable generic templates, fix generic propgation
1 parent 8d7966f commit 671505b

File tree

6 files changed

+46
-11
lines changed

6 files changed

+46
-11
lines changed

playground/javascript/node/search.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,27 @@ dotenv.config({ path: '../../.env' });
77
const appId = process.env.ALGOLIA_APPLICATION_ID || '**** APP_ID *****';
88
const apiKey = process.env.ALGOLIA_SEARCH_KEY || '**** SEARCH_API_KEY *****';
99

10-
const searchIndex = process.env.SEARCH_INDEX || 'test_index';
10+
const indexName = process.env.SEARCH_INDEX || 'test_index';
1111
const searchQuery = process.env.SEARCH_QUERY || 'test_query';
1212

1313
// Init client with appId and apiKey
1414
const client = searchClient(appId, apiKey);
1515

1616
client.addAlgoliaAgent('Node playground', '0.0.1');
1717

18+
type TObject = {
19+
name: string;
20+
};
21+
1822
async function testSearch() {
1923
try {
20-
const res = await client.search<{ name: string }>({ requests: [{ indexName: searchIndex, query: searchQuery }] });
24+
const res = await client.search<TObject>({
25+
requests: [{ indexName, query: searchQuery }],
26+
});
27+
28+
await client.browse({ indexName });
29+
30+
await client.searchSingleIndex({ indexName, searchParams: {} });
2131

2232
console.log(`[OK]`, res.results[0].hits![0].name);
2333
} catch (e: any) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{{! possible data types of a parameter }}
2+
{{#isEnum}}
3+
{{classname}}{{{nameInCamelCase}}}{{#isArray}}[]{{/isArray}}
4+
{{/isEnum}}
5+
{{^isEnum}}
6+
{{#x-propagated-generic}}
7+
{{> client/model/types/dataTypeGeneric}}
8+
{{/x-propagated-generic}}
9+
{{^x-propagated-generic}}
10+
{{#x-has-child-generic}}
11+
{{> client/model/types/dataTypeGeneric}}
12+
{{/x-has-child-generic}}
13+
{{^x-has-child-generic}}
14+
{{{dataType}}}
15+
{{/x-has-child-generic}}
16+
{{/x-propagated-generic}}
17+
{{#isNullable}}
18+
| null
19+
{{/isNullable}}
20+
{{/isEnum}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#complexType}}{{{.}}}<T>{{/complexType}}{{^complexType}}T{{/complexType}}{{#isArray}}[]{{/isArray}}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{{! parameter that is generic and have a default value }}
2+
{{#vendorExtensions.x-has-child-generic}}
3+
<T = Record<string, any>>
4+
{{/vendorExtensions.x-has-child-generic}}
5+
{{#vendorExtensions.x-is-generic}}
6+
<T = Record<string, any>>
7+
{{/vendorExtensions.x-is-generic}}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{{! Parameter that is generic and propagates it to its child }}
2+
{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}}

templates/javascript/clients/model.mustache

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,20 @@ import { {{classname}} } from '{{filename}}';
1111
/**
1212
* {{{description}}}
1313
*/{{/description}}
14-
export type {{classname}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}} = {{#composedSchemas.oneOf}}{{{dataType}}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}} {{^-last}}|{{/-last}} {{/composedSchemas.oneOf}}
15-
{{#composedSchemas.allOf}}{{{dataType}}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}} {{^-last}}&{{/-last}} {{/composedSchemas.allOf}};
14+
export type {{classname}}{{> client/model/types/isGeneric}} = {{#composedSchemas.oneOf}}{{{dataType}}}{{> client/model/types/propagateGeneric}} {{^-last}}|{{/-last}} {{/composedSchemas.oneOf}}{{#composedSchemas.allOf}}{{{dataType}}}{{> client/model/types/propagateGeneric}} {{^-last}}&{{/-last}} {{/composedSchemas.allOf}};
1615
{{/interfaces.size}}{{^interfaces.size}}
1716
{{#description}}
1817
/**
1918
* {{{description}}}
2019
*/{{/description}}{{^isEnum}}
21-
export type {{classname}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}{{#vendorExtensions.x-has-child-generic}}<T>{{/vendorExtensions.x-has-child-generic}} = {{^vendorExtensions.x-is-generic}}{{#parent}}{{{.}}} & {{/parent}}{{/vendorExtensions.x-is-generic}}{{#vendorExtensions.x-is-generic}}T & {{/vendorExtensions.x-is-generic}} {
20+
export type {{classname}}{{> client/model/types/isGeneric}} = {{^vendorExtensions.x-is-generic}}{{#parent}}{{{.}}} & {{/parent}}{{/vendorExtensions.x-is-generic}}{{#vendorExtensions.x-is-generic}}T & {{/vendorExtensions.x-is-generic}} {
2221
{{#vendorExtensions}}
2322
{{#vars}}{{#description}}
2423
/**
2524
* {{{description}}}
2625
*/{{/description}}
27-
{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{classname}}{{{nameInCamelCase}}}{{#isArray}}[]{{/isArray}}{{/isEnum}}
28-
{{^isEnum}}{{#x-propagated-generic}}{{{complexType}}}<T>{{#isArray}}[]{{/isArray}}{{/x-propagated-generic}}
29-
{{^x-propagated-generic}}
30-
{{#x-has-child-generic}}{{{complexType}}}<T>{{#isArray}}[]{{/isArray}}{{/x-has-child-generic}}
31-
{{^x-has-child-generic}}{{{dataType}}}{{/x-has-child-generic}}
32-
{{/x-propagated-generic}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}};{{/vars}}
26+
{{name}}{{^required}}?{{/required}}: {{> client/model/types/dataType}} ;
27+
{{/vars}}
3328
} {{#x-is-SearchForHitsOptions}} & { facet?: never; maxFacetHits?: never; facetQuery?: never }; {{/x-is-SearchForHitsOptions}}
3429
{{/vendorExtensions}}
3530
{{/isEnum}}

0 commit comments

Comments
 (0)