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>;
 }
 
 /**

Reply via email to