hide-a-bed 7.0.0-beta.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
1
  {
2
- "arrowParens": "avoid",
3
- "semi": false,
2
+ "$schema": "./node_modules/oxfmt/configuration_schema.json",
4
3
  "singleQuote": true,
4
+ "semi": false,
5
5
  "trailingComma": "none",
6
- "printWidth": 100
6
+ "arrowParens": "avoid",
7
+ "ignorePatterns": []
7
8
  }
package/.oxlintrc.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "./node_modules/oxlint/configuration_schema.json",
3
+ "plugins": ["typescript"],
4
+ "ignorePatterns": ["dist/", "node_modules/", "docs/", "types/"],
5
+ "rules": {
6
+ "@typescript-eslint/ban-ts-comment": [
7
+ "error",
8
+ {
9
+ "ts-expect-error": "allow-with-description",
10
+ "ts-ignore": "allow-with-description",
11
+ "ts-nocheck": "allow-with-description",
12
+ "ts-check": false
13
+ }
14
+ ],
15
+ "@typescript-eslint/no-explicit-any": "error",
16
+ "no-unused-vars": [
17
+ "error",
18
+ {
19
+ "ignoreRestSiblings": true
20
+ }
21
+ ]
22
+ },
23
+ "overrides": [
24
+ {
25
+ "files": ["**/*.test.{js,ts,mjs,mts}"],
26
+ "rules": {
27
+ "@typescript-eslint/no-explicit-any": "off"
28
+ }
29
+ }
30
+ ]
31
+ }
package/README.md CHANGED
@@ -779,6 +779,21 @@ const config = {
779
779
  }
780
780
  ```
781
781
 
782
+ `bindConfig()` and `withRetry()` now perform a single built-in retry for transient `401` and `403` responses before surfacing the error.
783
+
784
+ ### withRetry
785
+
786
+ `withRetry(fn, options)` wraps an async function and retries based on the built-in retry rules.
787
+
788
+ ```javascript
789
+ import { withRetry, get } from 'hide-a-bed'
790
+
791
+ const getWithCustomRetry = withRetry(id => get({ couch: 'http://localhost:5984/mydb' }, id), {
792
+ maxRetries: 2,
793
+ initialDelay: 250
794
+ })
795
+ ```
796
+
782
797
  ### Migration Note
783
798
 
784
799
  `needleOpts` has been removed from the main `client` package. If you were passing transport-specific `needle` options through `config.needleOpts`, remove that configuration when upgrading. If you used `needleOpts.username` or `needleOpts.password`, move them to `config.auth.username` and `config.auth.password`. Couch URLs with embedded credentials are no longer supported and will fail validation. The package now uses native `fetch` internally and only supports the documented top-level config fields above.
@@ -279,6 +279,12 @@ const isSuccessStatusCode = (profile, statusCode) => {
279
279
  return SUCCESS_STATUS_CODES[profile].includes(statusCode);
280
280
  };
281
281
 
282
+ //#endregion
283
+ //#region types/types.utils.ts
284
+ function isObject(value) {
285
+ return typeof value === "object" && value !== null;
286
+ }
287
+
282
288
  //#endregion
283
289
  //#region impl/utils/errors.mts
284
290
  const RETRYABLE_STATUS_CODES = new Set([
@@ -310,6 +316,14 @@ const getNestedNetworkError = (value) => {
310
316
  const candidate = value;
311
317
  return isNetworkError(candidate.cause) ? candidate.cause : null;
312
318
  };
319
+ const hasStatusCode = (error) => {
320
+ return isObject(error) && "statusCode" in error && typeof error.statusCode === "number";
321
+ };
322
+ const isTransientAuthError = (error, attempt) => {
323
+ if (!hasStatusCode(error)) return false;
324
+ if (attempt > 0) return false;
325
+ return error.statusCode === 401 || error.statusCode === 403;
326
+ };
313
327
  /**
314
328
  * Shared base class for operational errors thrown by hide-a-bed.
315
329
  *
@@ -520,6 +534,9 @@ function isConflictError(err) {
520
534
 
521
535
  //#endregion
522
536
  //#region impl/retry.mts
537
+ const shouldRetryError = (error, attempt) => {
538
+ return error instanceof RetryableError || isTransientAuthError(error, attempt);
539
+ };
523
540
  /**
524
541
  * Wrap an async-capable function with retry semantics that respect {@link RetryableError}.
525
542
  * @typeParam Fn - The function signature to decorate with retry handling.
@@ -534,7 +551,7 @@ function withRetry(fn, options = {}) {
534
551
  for (let attempt = 0; attempt <= maxRetries; attempt++) try {
535
552
  return await fn(...args);
536
553
  } catch (error) {
537
- if (!(error instanceof RetryableError)) throw error;
554
+ if (!shouldRetryError(error, attempt)) throw error;
538
555
  if (attempt === maxRetries) throw error;
539
556
  await (0, node_timers_promises.setTimeout)(Math.min(delay, maxDelay));
540
557
  delay *= backoffFactor;
@@ -1451,7 +1468,7 @@ const patchDangerously = async (configInput, id, properties) => {
1451
1468
  return result;
1452
1469
  } catch (err) {
1453
1470
  if (!(err instanceof Error)) throw err;
1454
- if (!(err instanceof ConflictError) && !(err instanceof RetryableError)) throw err;
1471
+ if (!(err instanceof ConflictError || shouldRetryError(err, attempts))) throw err;
1455
1472
  lastError = err;
1456
1473
  attempts++;
1457
1474
  if (attempts > maxRetries) {
@@ -247,6 +247,12 @@ const isSuccessStatusCode = (profile, statusCode) => {
247
247
  return SUCCESS_STATUS_CODES[profile].includes(statusCode);
248
248
  };
249
249
 
250
+ //#endregion
251
+ //#region types/types.utils.ts
252
+ function isObject(value) {
253
+ return typeof value === "object" && value !== null;
254
+ }
255
+
250
256
  //#endregion
251
257
  //#region impl/utils/errors.mts
252
258
  const RETRYABLE_STATUS_CODES = new Set([
@@ -278,6 +284,14 @@ const getNestedNetworkError = (value) => {
278
284
  const candidate = value;
279
285
  return isNetworkError(candidate.cause) ? candidate.cause : null;
280
286
  };
287
+ const hasStatusCode = (error) => {
288
+ return isObject(error) && "statusCode" in error && typeof error.statusCode === "number";
289
+ };
290
+ const isTransientAuthError = (error, attempt) => {
291
+ if (!hasStatusCode(error)) return false;
292
+ if (attempt > 0) return false;
293
+ return error.statusCode === 401 || error.statusCode === 403;
294
+ };
281
295
  /**
282
296
  * Shared base class for operational errors thrown by hide-a-bed.
283
297
  *
@@ -488,6 +502,9 @@ function isConflictError(err) {
488
502
 
489
503
  //#endregion
490
504
  //#region impl/retry.mts
505
+ const shouldRetryError = (error, attempt) => {
506
+ return error instanceof RetryableError || isTransientAuthError(error, attempt);
507
+ };
491
508
  /**
492
509
  * Wrap an async-capable function with retry semantics that respect {@link RetryableError}.
493
510
  * @typeParam Fn - The function signature to decorate with retry handling.
@@ -502,7 +519,7 @@ function withRetry(fn, options = {}) {
502
519
  for (let attempt = 0; attempt <= maxRetries; attempt++) try {
503
520
  return await fn(...args);
504
521
  } catch (error) {
505
- if (!(error instanceof RetryableError)) throw error;
522
+ if (!shouldRetryError(error, attempt)) throw error;
506
523
  if (attempt === maxRetries) throw error;
507
524
  await setTimeout$1(Math.min(delay, maxDelay));
508
525
  delay *= backoffFactor;
@@ -1419,7 +1436,7 @@ const patchDangerously = async (configInput, id, properties) => {
1419
1436
  return result;
1420
1437
  } catch (err) {
1421
1438
  if (!(err instanceof Error)) throw err;
1422
- if (!(err instanceof ConflictError) && !(err instanceof RetryableError)) throw err;
1439
+ if (!(err instanceof ConflictError || shouldRetryError(err, attempts))) throw err;
1423
1440
  lastError = err;
1424
1441
  attempts++;
1425
1442
  if (attempts > maxRetries) {
@@ -1,3 +1,4 @@
1
+ // oxlint-disable typescript/no-explicit-any
1
2
  import type z from 'zod'
2
3
  import { CouchConfig, type CouchConfigInput } from '../schema/config.mts'
3
4
  import { withRetry } from './retry.mts'
@@ -81,11 +82,7 @@ export const bindConfig = (config: CouchConfigInput): BoundInstance => {
81
82
  * @param config The CouchDB configuration
82
83
  * @returns The bound function, possibly wrapped with retry logic
83
84
  */
84
- export function getBoundWithRetry<
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
- TBound extends (...args: any[]) => Promise<any>
87
- >(
88
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ export function getBoundWithRetry<TBound extends (...args: any[]) => Promise<any>>(
89
86
  func: (config: CouchConfig, ...args: any[]) => Promise<any>,
90
87
  config: CouchConfig
91
88
  ) {
package/impl/bulkGet.mts CHANGED
@@ -257,7 +257,7 @@ export async function bulkGetDictionary<DocSchema extends StandardSchemaV1 = typ
257
257
 
258
258
  const doc = row.doc
259
259
  const docId =
260
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
+ // oxlint-disable-next-line @typescript-eslint/no-explicit-any
261
261
  typeof (doc as any)?._id === 'string' ? (doc as any)._id : row.id
262
262
 
263
263
  if (!docId) {
package/impl/patch.mts CHANGED
@@ -4,7 +4,8 @@ import { createLogger } from './utils/logger.mts'
4
4
  import { setTimeout } from 'node:timers/promises'
5
5
  import { CouchConfig, type CouchConfigInput } from '../schema/config.mts'
6
6
  import { z } from 'zod'
7
- import { ConflictError, HideABedError, OperationError, RetryableError } from './utils/errors.mts'
7
+ import { ConflictError, HideABedError, OperationError } from './utils/errors.mts'
8
+ import { shouldRetryError } from './retry.mts'
8
9
 
9
10
  const PatchProperties = z
10
11
  .looseObject({
@@ -106,7 +107,9 @@ export const patchDangerously = async (
106
107
  throw err
107
108
  }
108
109
 
109
- if (!(err instanceof ConflictError) && !(err instanceof RetryableError)) {
110
+ const shouldRetry = err instanceof ConflictError || shouldRetryError(err, attempts)
111
+
112
+ if (!shouldRetry) {
110
113
  throw err
111
114
  }
112
115
 
package/impl/retry.mts CHANGED
@@ -1,5 +1,9 @@
1
1
  import { setTimeout } from 'node:timers/promises'
2
- import { RetryableError } from './utils/errors.mts'
2
+ import { isTransientAuthError, RetryableError } from './utils/errors.mts'
3
+
4
+ export const shouldRetryError = (error: unknown, attempt: number) => {
5
+ return error instanceof RetryableError || isTransientAuthError(error, attempt)
6
+ }
3
7
 
4
8
  /**
5
9
  * Settings that control how retry attempts are scheduled.
@@ -32,7 +36,7 @@ type MaybePromise<T> = PromiseLike<T> | T
32
36
  * @param options Retry tuning parameters.
33
37
  * @returns A function mirroring `fn` that automatically retries on {@link RetryableError}.
34
38
  */
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ // oxlint-disable-next-line typescript/no-explicit-any
36
40
  export function withRetry<Fn extends (...args: any[]) => MaybePromise<any>>(
37
41
  fn: Fn,
38
42
  options: RetryOptions = {}
@@ -47,7 +51,7 @@ export function withRetry<Fn extends (...args: any[]) => MaybePromise<any>>(
47
51
  const result = await fn(...args)
48
52
  return result
49
53
  } catch (error) {
50
- if (!(error instanceof RetryableError)) {
54
+ if (!shouldRetryError(error, attempt)) {
51
55
  throw error
52
56
  }
53
57
 
@@ -31,7 +31,7 @@ export type WatchHandle = {
31
31
  export function watchDocs(
32
32
  configInput: CouchConfigInput,
33
33
  docIds: string | string[],
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+ // oxlint-disable-next-line @typescript-eslint/no-explicit-any
35
35
  onChange: (change: any) => void,
36
36
  optionsInput: WatchOptionsInput = {}
37
37
  ): WatchHandle {
@@ -1,5 +1,6 @@
1
1
  import { getCouchError, getReason } from './response.mts'
2
2
  import type { StandardSchemaV1 } from '../../types/standard-schema.ts'
3
+ import { isObject } from '../../types/types.utils.ts'
3
4
 
4
5
  /**
5
6
  * Represents a network-level error emitted by Node.js or HTTP client libraries.
@@ -80,6 +81,17 @@ const getNestedNetworkError = (
80
81
  return isNetworkError(candidate.cause) ? candidate.cause : null
81
82
  }
82
83
 
84
+ export const hasStatusCode = (error: unknown): error is { statusCode: number } => {
85
+ return isObject(error) && 'statusCode' in error && typeof error.statusCode === 'number'
86
+ }
87
+
88
+ export const isTransientAuthError = (error: unknown, attempt: number) => {
89
+ if (!hasStatusCode(error)) return false
90
+ if (attempt > 0) return false
91
+
92
+ return error.statusCode === 401 || error.statusCode === 403
93
+ }
94
+
83
95
  /**
84
96
  * Shared structured fields available on hide-a-bed operational errors.
85
97
  *
@@ -1,4 +1,4 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
1
+ /* oxlint-disable @typescript-eslint/no-explicit-any */
2
2
  import { ViewRow } from '../../schema/couch/couch.output.schema.ts'
3
3
  import type { StandardSchemaV1 } from '../../types/standard-schema.ts'
4
4
  import { z } from 'zod'
@@ -167,7 +167,7 @@ export class QueryBuilder {
167
167
 
168
168
  type AssertViewOptionsCovered =
169
169
  Exclude<keyof ViewOptions, keyof QueryBuilder> extends never ? true : never
170
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
170
+ // oxlint-disable-next-line @typescript-eslint/no-unused-vars
171
171
  const _assertViewOptionsCovered: AssertViewOptionsCovered = true
172
172
 
173
173
  export const createQuery = (): QueryBuilder => new QueryBuilder()
@@ -1,4 +1,4 @@
1
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1
+ // oxlint-disable-next-line @typescript-eslint/ban-ts-comment
2
2
  // @ts-nocheck
3
3
  import { EventEmitter } from 'events'
4
4
 
package/package.json CHANGED
@@ -1,7 +1,21 @@
1
1
  {
2
2
  "name": "hide-a-bed",
3
- "version": "7.0.0-beta.1",
3
+ "version": "7.0.0",
4
4
  "description": "An abstraction over couchdb calls that includes easy mock/stubs with pouchdb",
5
+ "keywords": [
6
+ "couchdb",
7
+ "test"
8
+ ],
9
+ "homepage": "https://github.com/ryanramage/hide-a-bed#readme",
10
+ "bugs": {
11
+ "url": "https://github.com/ryanramage/hide-a-bed/issues"
12
+ },
13
+ "license": "ISC",
14
+ "author": "ryan ramage",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/ryanramage/hide-a-bed.git"
18
+ },
5
19
  "type": "module",
6
20
  "main": "./dist/cjs/index.cjs",
7
21
  "module": "./dist/esm/index.mjs",
@@ -18,6 +32,9 @@
18
32
  "default": "./dist/esm/index.mjs"
19
33
  }
20
34
  },
35
+ "publishConfig": {
36
+ "registry": "https://registry.npmjs.org/"
37
+ },
21
38
  "scripts": {
22
39
  "clean": "rm -rf types/output && rm -rf dist && (find . -name \"log.txt\" -type f -delete || true)",
23
40
  "build": "npm run clean && tsc && tsdown",
@@ -25,30 +42,16 @@
25
42
  "dev": "typedoc --watch ./index.mts & npx -y serve ./docs",
26
43
  "test": "node --test --test-global-setup ./test/setup.mts",
27
44
  "test:watch": "node --test --watch --test-global-setup ./test/setup.mts",
28
- "lint": "eslint .",
29
- "lint:fix": "eslint . --fix",
30
- "format": "prettier --write .",
31
- "format:check": "prettier --check .",
45
+ "lint": "oxlint .",
46
+ "lint:fix": "oxlint --fix .",
47
+ "format": "oxfmt --write .",
48
+ "format:check": "oxfmt --check .",
32
49
  "typecheck": "tsc --noEmit",
33
50
  "typecheck:watch": "tsc --noEmit --watch",
34
51
  "prepublishOnly": "npm run build",
35
- "validate": "npm run format && npm run lint && npm run typecheck",
52
+ "validate": "npm run format:check && npm run lint && npm run typecheck",
36
53
  "full": "npm run lint:fix && npm run build && npm run clean"
37
54
  },
38
- "repository": {
39
- "type": "git",
40
- "url": "git+https://github.com/ryanramage/hide-a-bed.git"
41
- },
42
- "keywords": [
43
- "couchdb",
44
- "test"
45
- ],
46
- "author": "ryan ramage",
47
- "license": "ISC",
48
- "bugs": {
49
- "url": "https://github.com/ryanramage/hide-a-bed/issues"
50
- },
51
- "homepage": "https://github.com/ryanramage/hide-a-bed#readme",
52
55
  "dependencies": {
53
56
  "stream-chain": "3.4.0",
54
57
  "stream-json": "1.9.1",
@@ -56,20 +59,14 @@
56
59
  "zod": "4.2.1"
57
60
  },
58
61
  "devDependencies": {
59
- "@eslint/js": "9.39.2",
60
62
  "@types/node": "24.12.0",
61
63
  "@types/stream-json": "1.7.8",
62
- "eslint": "9.39.2",
63
- "globals": "16.5.0",
64
+ "oxfmt": "0.41.0",
65
+ "oxlint": "1.56.0",
64
66
  "pouchdb-server": "4.2.0",
65
- "prettier": "3.7.4",
66
67
  "tsdown": "0.18.1",
67
68
  "typedoc": "0.28.15",
68
- "typescript": "5.9.3",
69
- "typescript-eslint": "8.50.1"
70
- },
71
- "publishConfig": {
72
- "registry": "https://registry.npmjs.org/"
69
+ "typescript": "5.9.3"
73
70
  },
74
71
  "volta": {
75
72
  "node": "24.12.0",
@@ -1 +1 @@
1
- {"version":3,"file":"bindConfig.d.mts","sourceRoot":"","sources":["../../../impl/bindConfig.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bindConfig.d.mts","sourceRoot":"","sources":["../../../impl/bindConfig.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"patch.d.mts","sourceRoot":"","sources":["../../../impl/patch.mts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,eAAe;;iBAIiB,CAAA;AAEtC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,GAChB,aAAa,gBAAgB,EAC7B,IAAI,MAAM,EACV,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;EAwB7C,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,GAC3B,aAAa,gBAAgB,EAC7B,IAAI,MAAM,EACV,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EA8DpC,CAAA"}
1
+ {"version":3,"file":"patch.d.mts","sourceRoot":"","sources":["../../../impl/patch.mts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,QAAA,MAAM,eAAe;;iBAIiB,CAAA;AAEtC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,GAChB,aAAa,gBAAgB,EAC7B,IAAI,MAAM,EACV,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;EAwB7C,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,GAC3B,aAAa,gBAAgB,EAC7B,IAAI,MAAM,EACV,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAgEpC,CAAA"}
@@ -1,3 +1,4 @@
1
+ export declare const shouldRetryError: (error: unknown, attempt: number) => boolean;
1
2
  /**
2
3
  * Settings that control how retry attempts are scheduled.
3
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.mts","sourceRoot":"","sources":["../../../impl/retry.mts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,KAAK,YAAY,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAEzC;;;;;;GAMG;AAEH,wBAAgB,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,YAAY,CAAC,GAAG,CAAC,EACxE,EAAE,EAAE,EAAE,EACN,OAAO,GAAE,YAAiB,GACzB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CA2B/D"}
1
+ {"version":3,"file":"retry.d.mts","sourceRoot":"","sources":["../../../impl/retry.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,EAAE,SAAS,MAAM,YAE/D,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,KAAK,YAAY,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAEzC;;;;;;GAMG;AAEH,wBAAgB,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,YAAY,CAAC,GAAG,CAAC,EACxE,EAAE,EAAE,EAAE,EACN,OAAO,GAAE,YAAiB,GACzB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CA2B/D"}
@@ -16,6 +16,10 @@ export interface NetworkError {
16
16
  }
17
17
  export type ErrorCategory = 'conflict' | 'network' | 'not_found' | 'operation' | 'retryable' | 'validation' | 'transaction';
18
18
  export type ErrorOperation = 'get' | 'getAtRev' | 'getDBInfo' | 'patch' | 'patchDangerously' | 'put' | 'query' | 'queryStream' | 'remove' | 'request' | 'watchDocs';
19
+ export declare const hasStatusCode: (error: unknown) => error is {
20
+ statusCode: number;
21
+ };
22
+ export declare const isTransientAuthError: (error: unknown, attempt: number) => boolean;
19
23
  /**
20
24
  * Shared structured fields available on hide-a-bed operational errors.
21
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../../../../impl/utils/errors.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,aAAa,CAAA;AAEjB,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,UAAU,GACV,WAAW,GACX,OAAO,GACP,kBAAkB,GAClB,KAAK,GACL,OAAO,GACP,aAAa,GACb,QAAQ,GACR,SAAS,GACT,WAAW,CAAA;AAsCf;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,aAAa,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;gBAEhB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;CAW3D;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,OAAO,CAAC,oBAAoB,CAAC,EAC7B,UAAU,GAAG,WAAW,CACzB,GAAG;IACF,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAE5C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG;QACjF,OAAO,CAAC,EAAE,MAAM,CAAA;KACZ;CAcT;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,aAAa;gBAE5C,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG;QACjF,OAAO,CAAC,EAAE,MAAM,CAAA;KACZ;CAcT;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,aAAa;gBAE7C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,GAAG;QACvE,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,WAAW,GAAG,aAAa,CAAC,CAAA;KAC1D;CAcT;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;gBAErC,OAAO,EAAE,sBAAsB;CAc5C;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,aAAa;gBAE7C,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC,GAAG;QACtF,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,CAAC,CAAA;KACtD;IAeR;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,IAAI,MAAM;IAKlF;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,GAAE,cAA0B,GAAG,KAAK;CAgBtF;AAED,KAAK,oBAAoB,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,cAAc,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAYD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,cAAc,EACd,KAAK,EACL,eAAe,EACf,SAAS,EACT,UAAU,EACX,EAAE,oBAAoB,GAAG,aAAa,CAwCtC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKrD"}
1
+ {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../../../../impl/utils/errors.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function isObject(value: unknown): value is Record<string, unknown>;
2
+ export declare function isError(value: unknown): value is Error;
3
+ //# sourceMappingURL=types.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.utils.d.ts","sourceRoot":"","sources":["../../types.utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD"}
@@ -0,0 +1,7 @@
1
+ export function isObject(value: unknown): value is Record<string, unknown> {
2
+ return typeof value === 'object' && value !== null
3
+ }
4
+
5
+ export function isError(value: unknown): value is Error {
6
+ return value instanceof Error
7
+ }
package/eslint.config.js DELETED
@@ -1,20 +0,0 @@
1
- import js from '@eslint/js'
2
- import globals from 'globals'
3
- import tseslint from 'typescript-eslint'
4
- import { defineConfig, globalIgnores } from 'eslint/config'
5
-
6
- export default defineConfig([
7
- globalIgnores(['dist/', 'node_modules/', 'docs/', 'types/']),
8
- {
9
- files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
10
- plugins: { js },
11
- extends: ['js/recommended'],
12
- languageOptions: { globals: globals.browser }
13
- },
14
- tseslint.configs.recommended,
15
- {
16
- rules: {
17
- '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }]
18
- }
19
- }
20
- ])
@@ -1,3 +0,0 @@
1
- declare const _default: import("eslint/config").Config[];
2
- export default _default;
3
- //# sourceMappingURL=eslint.config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eslint.config.d.ts","sourceRoot":"","sources":["../../eslint.config.js"],"names":[],"mappings":""}