Files
composiohq__composio/ts/packages/ts-builders/src/ObjectValue.ts
Rahul Tarak 1d02d3e495 merge cli (#1649)
Co-authored-by: jkomyno <12381818+jkomyno@users.noreply.github.com>
2025-06-17 18:06:05 -07:00

61 lines
1.2 KiB
TypeScript

import { ValueBuilder } from './ValueBuilder';
import { PropertyValue } from './PropertyValue';
import type { Writer } from './Writer';
type ObjectTypeItem = PropertyValue;
export class ObjectValue extends ValueBuilder {
needsParenthesisWhenIndexed = true;
private items: ObjectTypeItem[] = [];
private inline = false;
add(item: ObjectTypeItem): this {
this.items.push(item);
return this;
}
addMultiple(items: ObjectTypeItem[]): this {
for (const item of items) {
this.add(item);
}
return this;
}
formatInline() {
this.inline = true;
return this;
}
write(writer: Writer): void {
if (this.items.length === 0) {
writer.write('{}');
} else if (this.inline) {
this.writeInline(writer);
} else {
this.writeMultiline(writer);
}
}
private writeMultiline(writer: Writer) {
writer
.writeLine('{')
.withIndent(() => {
for (const item of this.items) {
writer.write(item);
writer.write(',');
writer.newLine();
}
})
.write('}');
}
private writeInline(writer: Writer) {
writer.write('{ ').writeJoined(', ', this.items).write(' }');
}
}
export function objectValue() {
return new ObjectValue();
}