Skip to content

Commit 0f9a4f2

Browse files
authored
Fix imports for nested arrays of oneOfs, and also fix templating with a reserved keyword (#1805)
1 parent 775b239 commit 0f9a4f2

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

.generator/src/generator/openapi.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,10 @@ def get_references_for_model(model, model_name):
270270
result.append(get_name(definition) + "Item")
271271
if "items" in definition["items"]:
272272
name = get_name(definition["items"])
273+
if definition["items"]["items"]:
274+
nested_name = get_name(definition["items"]["items"])
275+
if nested_name:
276+
result.append(nested_name)
273277
if name:
274278
result.append(name + "Item")
275279
elif definition.get("properties") and top_name:

features/support/templating.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,69 @@
11
import { UnparsedObject } from "../../packages/datadog-api-client-common/util";
22

3+
const RESERVED_KEYWORDS = [
4+
"abstract",
5+
"await",
6+
"boolean",
7+
"break",
8+
"byte",
9+
"case",
10+
"catch",
11+
"char",
12+
"class",
13+
"const",
14+
"continue",
15+
"debugger",
16+
"default",
17+
"delete",
18+
"do",
19+
"double",
20+
"else",
21+
"enum",
22+
"export",
23+
"extends",
24+
"false",
25+
"final",
26+
"finally",
27+
"float",
28+
"for",
29+
"function",
30+
"goto",
31+
"if",
32+
"implements",
33+
"import",
34+
"in",
35+
"instanceof",
36+
"int",
37+
"interface",
38+
"let",
39+
"long",
40+
"native",
41+
"new",
42+
"null",
43+
"package",
44+
"private",
45+
"protected",
46+
"public",
47+
"return",
48+
"short",
49+
"static",
50+
"super",
51+
"switch",
52+
"synchronized",
53+
"this",
54+
"throw",
55+
"transient",
56+
"true",
57+
"try",
58+
"typeof",
59+
"var",
60+
"void",
61+
"volatile",
62+
"while",
63+
"with",
64+
"yield",
65+
]
66+
367
declare global {
468
interface String {
569
templated(data: { [key: string]: any }): string;
@@ -72,6 +136,8 @@ function pathLookup(data: any, dottedPath: string): any {
72136
result = value[part.toAttributeName()];
73137
} else if (value instanceof UnparsedObject && part in value["_data"]) {
74138
result = value["_data"][part];
139+
} else if (RESERVED_KEYWORDS.includes(part) && "_"+part in value) {
140+
result = value["_"+part];
75141
} else {
76142
throw new Error(
77143
`${part} not found in ${JSON.stringify(

0 commit comments

Comments
 (0)