Skip to content

Commit e19cacd

Browse files
feat: [AH-781]: Support allOf, oneOf keys along with properties key and update join condition for allOf and oneOf (#37)
* feat: [AH-781]: Support allOf, oneOf keys along with properties key. And update join condition for allOf and oneOf * feat: [AH-781]: update package version and fix prettier check
1 parent 6747255 commit e19cacd

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

packages/cli/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@harnessio/oats-cli",
3-
"version": "2.3.0",
3+
"version": "3.0.0",
44
"license": "MIT",
55
"type": "module",
66
"repository": {

packages/cli/src/codegen.mts

+21-20
Original file line numberDiff line numberDiff line change
@@ -199,46 +199,47 @@ export function createObject(
199199
originalRef: string,
200200
components: IComponentsObject = {},
201201
): ICodeWithMetadata {
202+
const code: string[] = [];
203+
const dependencies: string[] = [];
204+
const imports: string[] = [];
205+
202206
if (isReferenceObject(item)) {
203207
return createReferenceNode(item.$ref, originalRef);
204208
}
205209

206-
if (Array.isArray(item.allOf)) {
207-
const code: string[] = [];
208-
const dependencies: string[] = [];
209-
const imports: string[] = [];
210-
210+
if (Array.isArray(item.allOf) && item.allOf.length) {
211+
const allOfCode: string[] = [];
211212
item.allOf.forEach((entry) => {
212213
const resolvedValue = resolveValue(entry, originalRef);
213-
code.push(resolvedValue.code);
214+
allOfCode.push(resolvedValue.code);
214215
dependencies.push(...resolvedValue.dependencies);
215216
imports.push(...resolvedValue.imports);
216217
});
217-
218-
return { code: code.join(' | '), dependencies, imports: uniq(imports) };
218+
code.push(`(${allOfCode.join(' & ')})`);
219219
}
220220

221-
if (Array.isArray(item.oneOf)) {
222-
const code: string[] = [];
223-
const dependencies: string[] = [];
224-
const imports: string[] = [];
225-
221+
if (Array.isArray(item.oneOf) && item.oneOf.length) {
222+
const oneOfCode: string[] = [];
226223
item.oneOf.forEach((entry) => {
227224
const resolvedValue = resolveValue(entry, originalRef);
228-
code.push(resolvedValue.code);
225+
oneOfCode.push(resolvedValue.code);
229226
dependencies.push(...resolvedValue.dependencies);
230227
imports.push(...resolvedValue.imports);
231228
});
232-
233-
return { code: code.join(' & '), dependencies, imports: uniq(imports) };
229+
code.push(`(${oneOfCode.join(' | ')})`);
234230
}
235231

236-
const props = createObjectProperties(item, originalRef, components);
232+
if (item.type || has(item, 'properties') || has(item, 'additionalProperties')) {
233+
const props = createObjectProperties(item, originalRef, components);
234+
code.push(liquid.renderSync(OBJECT_TEMPLATE, { props }));
235+
dependencies.push(...props.flatMap((p) => p.dependencies));
236+
imports.push(...props.flatMap((p) => p.imports));
237+
}
237238

238239
return {
239-
code: liquid.renderSync(OBJECT_TEMPLATE, { props }),
240-
imports: uniq(props.flatMap((p) => p.imports)),
241-
dependencies: uniq(props.flatMap((p) => p.dependencies)),
240+
code: code.join(' & '),
241+
imports: uniq(imports),
242+
dependencies: uniq(dependencies),
242243
};
243244
}
244245

0 commit comments

Comments
 (0)