summaryrefslogtreecommitdiffstats
path: root/src/errors.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/errors.ts')
-rw-r--r--src/errors.ts18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/errors.ts b/src/errors.ts
index 4e5dbb2..1a1e267 100644
--- a/src/errors.ts
+++ b/src/errors.ts
@@ -20,6 +20,8 @@
* @module
*/
+import type { Faixa } from "./models.js";
+
/**
* Base of every error this library throws. Catch it to handle any failure.
*
@@ -52,15 +54,29 @@ export class InvalidCEP extends CepisError {
*
* Never thrown by {@link Client.lookupMany}, which reports a missing CEP as
* `null` at its position instead.
+ *
+ * `faixa` says which municipality the CEP *would* belong to, when the number
+ * falls inside a band some municipality owns. It is context for the failure and
+ * nothing more — this is still a 404, and the CEP still does not exist.
*/
export class CEPNotFound extends CepisError {
/** The 8-digit CEP that was looked up. */
readonly cep: string;
+ /**
+ * The municipality the CEP would have belonged to, or `undefined` when it
+ * falls in a band no municipality owns.
+ *
+ * Read {@link Faixa} before using it: `cep_ini`/`cep_fim` are the CEPs that
+ * exist there, the range between them is sparse, and none of it makes the
+ * looked-up CEP valid.
+ */
+ readonly faixa?: Faixa;
- constructor(message: string, cep: string, options?: ErrorOptions) {
+ constructor(message: string, cep: string, faixa?: Faixa, options?: ErrorOptions) {
super(message, options);
this.name = "CEPNotFound";
this.cep = cep;
+ this.faixa = faixa;
}
}