diff --git a/src/interfaces/superjson/superjson.schema.json b/src/interfaces/superjson/superjson.schema.json index e2451d4..c94c7b0 100644 --- a/src/interfaces/superjson/superjson.schema.json +++ b/src/interfaces/superjson/superjson.schema.json @@ -64,6 +64,29 @@ ], "type": "object" }, + { + "additionalProperties": false, + "properties": { + "kind": { + "enum": [ + "simple" + ], + "type": "string" + }, + "maxContiguousRetries": { + "minimum": 0, + "type": "integer" + }, + "requestTimeout": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, { "additionalProperties": false, "properties": { @@ -110,6 +133,10 @@ "minimum": 0, "type": "integer" }, + "openTime": { + "minimum": 0, + "type": "integer" + }, "requestTimeout": { "minimum": 0, "type": "integer" @@ -123,7 +150,8 @@ { "enum": [ "circuit-breaker", - "none" + "none", + "simple" ], "type": "string" } @@ -173,6 +201,29 @@ ], "type": "object" }, + { + "additionalProperties": false, + "properties": { + "kind": { + "enum": [ + "simple" + ], + "type": "string" + }, + "maxContiguousRetries": { + "minimum": 0, + "type": "integer" + }, + "requestTimeout": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, { "additionalProperties": false, "properties": { @@ -219,6 +270,10 @@ "minimum": 0, "type": "integer" }, + "openTime": { + "minimum": 0, + "type": "integer" + }, "requestTimeout": { "minimum": 0, "type": "integer" @@ -232,7 +287,8 @@ { "enum": [ "circuit-breaker", - "none" + "none", + "simple" ], "type": "string" } @@ -333,6 +389,29 @@ ], "type": "object" }, + { + "additionalProperties": false, + "properties": { + "kind": { + "enum": [ + "simple" + ], + "type": "string" + }, + "maxContiguousRetries": { + "minimum": 0, + "type": "integer" + }, + "requestTimeout": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, { "additionalProperties": false, "properties": { @@ -379,6 +458,10 @@ "minimum": 0, "type": "integer" }, + "openTime": { + "minimum": 0, + "type": "integer" + }, "requestTimeout": { "minimum": 0, "type": "integer" @@ -392,7 +475,8 @@ { "enum": [ "circuit-breaker", - "none" + "none", + "simple" ], "type": "string" } @@ -442,6 +526,29 @@ ], "type": "object" }, + { + "additionalProperties": false, + "properties": { + "kind": { + "enum": [ + "simple" + ], + "type": "string" + }, + "maxContiguousRetries": { + "minimum": 0, + "type": "integer" + }, + "requestTimeout": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, { "additionalProperties": false, "properties": { @@ -488,6 +595,10 @@ "minimum": 0, "type": "integer" }, + "openTime": { + "minimum": 0, + "type": "integer" + }, "requestTimeout": { "minimum": 0, "type": "integer" @@ -501,7 +612,8 @@ { "enum": [ "circuit-breaker", - "none" + "none", + "simple" ], "type": "string" } diff --git a/src/interfaces/superjson/superjson.ts b/src/interfaces/superjson/superjson.ts index ace5ccf..ebb1767 100644 --- a/src/interfaces/superjson/superjson.ts +++ b/src/interfaces/superjson/superjson.ts @@ -21,6 +21,7 @@ export type UriPath = string; // Retry policy export enum OnFail { NONE = 'none', + SIMPLE = 'simple', CIRCUIT_BREAKER = 'circuit-breaker', } @@ -28,15 +29,45 @@ export enum BackoffKind { EXPONENTIAL = 'exponential', } +export type BackoffPolicy = + | BackoffKind.EXPONENTIAL + | { + kind: BackoffKind.EXPONENTIAL; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + start?: number | undefined; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + factor?: number | undefined; + }; + /** * RetryPolicy per usecase values. */ export type RetryPolicy = | OnFail.NONE - | OnFail.CIRCUIT_BREAKER | { kind: OnFail.NONE; } + | OnFail.SIMPLE + | { + kind: OnFail.SIMPLE; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + maxContiguousRetries?: number | undefined; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + requestTimeout?: number | undefined; + } + | OnFail.CIRCUIT_BREAKER | { kind: OnFail.CIRCUIT_BREAKER; /** @@ -44,33 +75,50 @@ export type RetryPolicy = * @TJS-type integer **/ maxContiguousRetries?: number | undefined; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + openTime?: number | undefined; /** * @TJS-minimum 0 * @TJS-type integer **/ requestTimeout?: number | undefined; - backoff?: - | BackoffKind.EXPONENTIAL - | { - kind: BackoffKind.EXPONENTIAL; - /** - * @TJS-minimum 0 - * @TJS-type integer - **/ - start?: number | undefined; - /** - * @TJS-minimum 0 - * @TJS-type integer - **/ - factor?: number | undefined; - } - | undefined; + backoff?: BackoffPolicy | undefined; }; +export type NormalizedBackoffPolicy = { + kind: BackoffKind.EXPONENTIAL; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + start?: number | undefined; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + factor?: number | undefined; +}; + export type NormalizedRetryPolicy = | { kind: OnFail.NONE; } + | { + kind: OnFail.SIMPLE; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + maxContiguousRetries?: number | undefined; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + requestTimeout?: number | undefined; + } | { kind: OnFail.CIRCUIT_BREAKER; /** @@ -78,26 +126,17 @@ export type NormalizedRetryPolicy = * @TJS-type integer **/ maxContiguousRetries?: number | undefined; + /** + * @TJS-minimum 0 + * @TJS-type integer + **/ + openTime?: number | undefined; /** * @TJS-minimum 0 * @TJS-type integer **/ requestTimeout?: number | undefined; - backoff?: - | { - kind: BackoffKind.EXPONENTIAL; - /** - * @TJS-minimum 0 - * @TJS-type integer - **/ - start?: number | undefined; - /** - * @TJS-minimum 0 - * @TJS-type integer - **/ - factor?: number | undefined; - } - | undefined; + backoff: NormalizedBackoffPolicy; }; /**