Skip to content

Commit

Permalink
Fixes doc comments from PR review.
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew Omondi committed Mar 20, 2024
1 parent b0ac754 commit 47be78f
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 14 deletions.
18 changes: 16 additions & 2 deletions packages/abstractions/src/serialization/untypedArray.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
import { isUntypedNode, UntypedNode } from "./untypedNode";

/** Defines an interface for defining an untyped array. */
export interface UntypedArray extends UntypedNode {
/**
* Gets the value of the UntypedNode as an array of UntypedNodes.
*/
getValue(): UntypedNode[];
}

/**
* Type guard to assert that an UntypedNode instance is an UntypedArray.
* @param node The UntypedNode to check.
* @return boolean indicating if the node is an UntypedArray.
*/
export function isUntypedArray(node: UntypedNode): node is UntypedArray {
const proposedNode = node as UntypedArray;
return (
Expand All @@ -13,9 +22,14 @@ export function isUntypedArray(node: UntypedNode): node is UntypedArray {
);
}

/**
* Factory to create an UntypedArray from an array of UntypedNodes.
* @param value The value to create from.
* @return The created UntypedArray.
*/
export function createUntypedArray(value: UntypedNode[]): UntypedArray {
return {
value: value,
getValue: () => value as UntypedNode[],
getValue: () => value as UntypedNode[],
};
}
}
18 changes: 16 additions & 2 deletions packages/abstractions/src/serialization/untypedBoolean.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
import { UntypedNode } from "./untypedNode";

/** Defines an interface for defining an untyped boolean. */
export interface UntypedBoolean extends UntypedNode {
/**
* Gets the value of the UntypedNode as a boolean value.
*/
getValue(): boolean;
}

/**
* Type guard to assert that an UntypedNode instance is an UntypedBoolean.
* @param node The UntypedNode to check.
* @return boolean indicating if the node is an UntypedBoolean.
*/
export function isUntypedBoolean(node: UntypedNode): node is UntypedBoolean {
const proposedNode = node as UntypedBoolean;
return proposedNode && typeof proposedNode.value === "boolean";
}

/**
* Factory to create an UntypedBoolean from a boolean.
* @param value The boolean value to create from.
* @return The created UntypedBoolean.
*/
export function createUntypedBoolean(value: boolean): UntypedBoolean {
return {
value: value,
getValue: () => value as boolean,
getValue: () => value as boolean,
};
}
}
23 changes: 22 additions & 1 deletion packages/abstractions/src/serialization/untypedNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,40 @@ import type { Parsable } from "./parsable";
import type { ParseNode } from "./parseNode";
import type { SerializationWriter } from "./serializationWriter";

/** Defines the base interface for defining an untyped node. */
export interface UntypedNode extends Parsable {
getValue(): any
/**
* Gets the value of the UntypedNode.
*/
getValue(): any;
/**
* The value represented by the UntypedNode.
*/
value?: any;
}

/**
* Factory to create an UntypedNode from a string during deserialization.
*/
export function createUntypedNodeFromDiscriminatorValue(
_parseNode: ParseNode | undefined,
): (instance?: Parsable) => Record<string, (node: ParseNode) => void> {
return deserializeIntoUntypedNode;
}

/**
* Type guard to assert that an object instance is an UntypedNode.
* @param node The object to check.
* @return boolean indicating if the node is an UntypedNode.
*/
export function isUntypedNode(node: any): node is UntypedNode {
const potentialNode = node as UntypedNode;
return potentialNode && potentialNode.getValue !== undefined;
}

/**
* The deserialization implementation for UntypedNode.
*/
export function deserializeIntoUntypedNode(
untypedNode: Partial<UntypedNode> | undefined = {},
): Record<string, (node: ParseNode) => void> {
Expand All @@ -32,6 +50,9 @@ export function deserializeIntoUntypedNode(
};
}

/**
* The serialization implementation for UntypedNode.
*/
export function serializeUntypedNode(
_writer: SerializationWriter,
_errorDetails: Partial<UntypedNode> | undefined = {},
Expand Down
15 changes: 14 additions & 1 deletion packages/abstractions/src/serialization/untypedNull.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
import { UntypedNode } from "./untypedNode";

/** Defines the interface for defining an untyped null value. */
export interface UntypedNull extends UntypedNode {
/**
* Gets the value of the UntypedNode as null.
*/
getValue(): null;
}

/**
* Type guard to assert that an object instance is an UntypedNull.
* @param node The object to check.
* @return boolean indicating if the node is an UntypedNull.
*/
export function isUntypedNull(node: UntypedNode): node is UntypedNull {
return node.value === null;
}

/**
* Factory to create an UntypedNull from a boolean.
* @return The created UntypedNull.
*/
export function createUntypedNull(): UntypedNull {
return {
value: null,
getValue: () => null,
getValue: () => null,
};
}
18 changes: 16 additions & 2 deletions packages/abstractions/src/serialization/untypedNumber.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
import { UntypedNode } from "./untypedNode";

/** Defines the interface for defining an untyped number value. */
export interface UntypedNumber extends UntypedNode {
/**
* Gets the value of the UntypedNode as a number.
*/
getValue(): number;
}

/**
* Type guard to assert that an object instance is an UntypedNumber.
* @param node The object to check.
* @return boolean indicating if the node is an UntypedNumber.
*/
export function isUntypedNumber(node: UntypedNode): node is UntypedNumber {
const proposedNode = node as UntypedNumber;
return proposedNode && typeof proposedNode.value === "number";
}

/**
* Factory to create an UntypedNumber from a number.
* @param value The number value to create from.
* @return The created UntypedNumber.
*/
export function createUntypedNumber(value: number): UntypedNumber {
return {
value: value,
getValue: () => value as number,
getValue: () => value as number,
};
}
}
24 changes: 20 additions & 4 deletions packages/abstractions/src/serialization/untypedObject.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
import { isUntypedNode, UntypedNode } from "./untypedNode";

/** Defines the interface for defining an untyped object value. */
export interface UntypedObject extends UntypedNode {
getValue(): Record<string, UntypedNode> ;
/**
* Gets the value of the UntypedNode as a Record<string, UntypedNode>.
*/
getValue(): Record<string, UntypedNode>;
}

/**
* Type guard to assert that an object instance is an UntypedObject.
* @param node The object to check.
* @return boolean indicating if the node is an UntypedObject.
*/
export function isUntypedObject(node: UntypedNode): node is UntypedObject {
const proposedNode = node as UntypedObject;
return (
Expand All @@ -14,9 +23,16 @@ export function isUntypedObject(node: UntypedNode): node is UntypedObject {
);
}

export function createUntypedObject(value: Record<string, UntypedNode>): UntypedObject {
/**
* Factory to create an UntypedObject from a Record<string, UntypedNode>.
* @param value The Record<string, UntypedNode> value to create from.
* @return The created UntypedObject.
*/
export function createUntypedObject(
value: Record<string, UntypedNode>,
): UntypedObject {
return {
value: value,
getValue: () => value as Record<string, UntypedNode>,
getValue: () => value as Record<string, UntypedNode>,
};
}
}
18 changes: 16 additions & 2 deletions packages/abstractions/src/serialization/untypedString.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
import { UntypedNode } from "./untypedNode";

/** Defines the interface for defining an untyped string value. */
export interface UntypedString extends UntypedNode {
/**
* Gets the value of the UntypedNode as a Record<string, UntypedNode>.
*/
getValue(): string;
}

/**
* Type guard to assert that an object instance is an UntypedString.
* @param node The object to check.
* @return boolean indicating if the node is an UntypedString.
*/
export function isUntypedString(node: UntypedNode): node is UntypedString {
const proposedNode = node as UntypedString;
return proposedNode && typeof proposedNode.value === "string";
}

/**
* Factory to create an UntypedString from a string.
* @param value The string value to create from.
* @return The created UntypedString.
*/
export function createUntypedString(value: string): UntypedString {
return {
value: value,
getValue: () => value as string,
getValue: () => value as string,
};
}
}

0 comments on commit 47be78f

Please sign in to comment.