This is an automated email from the ASF dual-hosted git repository. ocket8888 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficcontrol-trafficops-types.git
commit e3f78d20f0a917e720e6e95f9966196726d7e83c Author: ocket8888 <[email protected]> AuthorDate: Wed Oct 12 20:02:17 2022 -0600 Make Topology Node typing more specific, expose it as a type --- package-lock.json | 4 ++-- package.json | 2 +- src/topology.ts | 36 ++++++++++++++++++++++++------------ 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index afed68c..0c380a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "trafficops-types", - "version": "3.1.0-beta-24", + "version": "3.1.0-beta-25", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "trafficops-types", - "version": "3.1.0-beta-24", + "version": "3.1.0-beta-25", "license": "GPL-3.0-or-later", "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.0.0", diff --git a/package.json b/package.json index bd51fff..632fa43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "trafficops-types", - "version": "3.1.0-beta-24", + "version": "3.1.0-beta-25", "description": "A library for dealing with Apache Traffic Control objects", "main": "dist/index.js", "scripts": { diff --git a/src/topology.ts b/src/topology.ts index 39c286a..18d832b 100644 --- a/src/topology.ts +++ b/src/topology.ts @@ -16,16 +16,34 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +/** + * A single node in a Topology, as it appears in requests. + */ +export interface RequestTopologyNode { + cachegroup: string; + parents?: [number, number] | [number] | [] | null; +} + +/** + * A singlenode in a Topology, as it appears in responses. + */ +export interface ResponseTopologyNode { + cachegroup: string; + parents: [number, number] | [number] | null; +} + +/** + * A generic Topology node, in the context of either a request or response. + */ +export type TopologyNode = RequestTopologyNode | ResponseTopologyNode; + /** * Represents a Topology as Traffic Ops requires it in requests to its API. */ export interface RequestTopology { description?: string | null; name: string; - nodes: Array<{ - cachegroup: string; - parents?: Array<number> | null; - }>; + nodes: Array<RequestTopologyNode>; } /** @@ -36,10 +54,7 @@ export interface RequestTopologyResponse { description: string; readonly lastUpdated: Date; name: string; - nodes: Array<{ - cachegroup: string; - parents: Array<number> | null; - }>; + nodes: Array<ResponseTopologyNode>; /** * @deprecated This field is included erroneously and will be removed in the * future. @@ -56,10 +71,7 @@ export interface ResponseTopology { description: string; readonly lastUpdated: Date; name: string; - nodes: Array<{ - cachegroup: string; - parents: Array<number>; - }>; + nodes: Array<ResponseTopologyNode>; } /**
