From 447812bac7f841da1dfad12b7bfd87c2efce84ba Mon Sep 17 00:00:00 2001
From: Sindre Sorhus <sindresorhus@gmail.com>
Date: Mon, 21 Feb 2022 13:01:22 +0700
Subject: [PATCH] Expose the spinner `interval` as a getter

Fixes #202
---
 index.d.ts |  7 +++++++
 index.js   | 10 +++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/index.d.ts b/index.d.ts
index b35bba4..4139d37 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -179,6 +179,13 @@ export interface Ora {
 	*/
 	indent: number;
 
+	/**
+	The interval between each frame.
+
+	The interval is decided by the chosen spinner.
+	*/
+	readonly interval: number;
+
 	/**
 	Start the spinner.
 
diff --git a/index.js b/index.js
index cd99162..df3a8ce 100644
--- a/index.js
+++ b/index.js
@@ -119,7 +119,7 @@ class Ora {
 
 		this.color = this.options.color;
 		this.hideCursor = this.options.hideCursor !== false;
-		this.interval = this.options.interval || this.spinner.interval || 100;
+		this._interval = this.options.interval || this.spinner.interval || 100;
 		this.stream = this.options.stream;
 		this.id = undefined;
 		this.isEnabled = typeof this.options.isEnabled === 'boolean' ? this.options.isEnabled : isInteractive({stream: this.stream});
@@ -149,10 +149,14 @@ class Ora {
 
 	_updateInterval(interval) {
 		if (interval !== undefined) {
-			this.interval = interval;
+			this._interval = interval;
 		}
 	}
 
+	get interval() {
+		return this._interval;
+	}
+
 	get spinner() {
 		return this._spinner;
 	}
@@ -330,7 +334,7 @@ class Ora {
 		}
 
 		this.render();
-		this.id = setInterval(this.render.bind(this), this.interval);
+		this.id = setInterval(this.render.bind(this), this._interval);
 
 		return this;
 	}