@butterbase/sdk 2.3.1 → 2.3.3

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.
@@ -0,0 +1,8 @@
1
+ export declare class ButterbaseError extends Error {
2
+ readonly code: string;
3
+ readonly status: number;
4
+ readonly remediation?: string;
5
+ readonly details?: unknown;
6
+ constructor(message: string, code: string, status: number, remediation?: string, details?: unknown);
7
+ }
8
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAQnG"}
@@ -0,0 +1,15 @@
1
+ export class ButterbaseError extends Error {
2
+ code;
3
+ status;
4
+ remediation;
5
+ details;
6
+ constructor(message, code, status, remediation, details) {
7
+ super(message);
8
+ this.name = 'ButterbaseError';
9
+ this.code = code;
10
+ this.status = status;
11
+ this.remediation = remediation;
12
+ this.details = details;
13
+ }
14
+ }
15
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAS;IACb,MAAM,CAAS;IACf,WAAW,CAAU;IACrB,OAAO,CAAW;IAE3B,YAAY,OAAe,EAAE,IAAY,EAAE,MAAc,EAAE,WAAoB,EAAE,OAAiB;QAChG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -1,10 +1,6 @@
1
- export declare class ButterbaseError extends Error {
2
- readonly code: string;
3
- readonly status: number;
4
- readonly remediation?: string;
5
- readonly details?: unknown;
6
- constructor(message: string, code: string, status: number, remediation?: string, details?: unknown);
7
- }
1
+ import { ButterbaseError } from './base.js';
2
+ import { KvError, KvAuthError, KvForbiddenError, KvNotFoundError, KvKeyInvalidError, KvConnectionError, KvQuotaExceededError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, KvValueTooLargeError, KvCasMismatchError, KvExposeConflictError } from './kv.js';
3
+ export { ButterbaseError };
8
4
  export declare class AuthError extends ButterbaseError {
9
5
  constructor(m: string, c: string, s: number, r?: string, d?: unknown);
10
6
  }
@@ -20,6 +16,9 @@ export declare class QuotaError extends ButterbaseError {
20
16
  export declare class NetworkError extends ButterbaseError {
21
17
  constructor(m: string, c?: string, s?: number, r?: string, d?: unknown);
22
18
  }
19
+ export { KvError, KvAuthError, KvForbiddenError, KvNotFoundError, KvKeyInvalidError, KvConnectionError, KvQuotaExceededError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, KvValueTooLargeError, KvCasMismatchError, KvExposeConflictError, };
20
+ type ErrCls = new (m: string, c: string, s: number, r?: string, d?: unknown) => ButterbaseError;
21
+ export declare function classifyByCode(code: string): ErrCls | null;
23
22
  /**
24
23
  * Parse a backend response into a typed ButterbaseError subclass.
25
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAQnG;AAED,qBAAa,SAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAAsD;AACjL,qBAAa,eAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAA4D;AACvL,qBAAa,aAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAA0D;AACrL,qBAAa,UAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAAuD;AAClL,qBAAa,YAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAwB,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAAyD;AA+B1M;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,eAAe,CAe5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAC7F,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,oBAAoB,EAC3G,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,EAChE,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,qBAAa,SAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAAsD;AACjL,qBAAa,eAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAA4D;AACvL,qBAAa,aAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAA0D;AACrL,qBAAa,UAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAAuD;AAClL,qBAAa,YAAgB,SAAQ,eAAe;gBAAe,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAwB,EAAE,CAAC,GAAE,MAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO;CAAyD;AAG1M,OAAO,EACL,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAC7F,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,oBAAoB,EAC3G,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,GAChE,CAAC;AAEF,KAAK,MAAM,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,eAAe,CAAC;AA4BhG,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1D;AAWD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,eAAe,CAe5E"}
@@ -1,18 +1,7 @@
1
1
  import { ErrorCodes, isAgentFriendlyError } from '@butterbase/shared';
2
- export class ButterbaseError extends Error {
3
- code;
4
- status;
5
- remediation;
6
- details;
7
- constructor(message, code, status, remediation, details) {
8
- super(message);
9
- this.name = 'ButterbaseError';
10
- this.code = code;
11
- this.status = status;
12
- this.remediation = remediation;
13
- this.details = details;
14
- }
15
- }
2
+ import { ButterbaseError } from './base.js';
3
+ import { KvError, KvAuthError, KvForbiddenError, KvNotFoundError, KvKeyInvalidError, KvConnectionError, KvQuotaExceededError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, KvValueTooLargeError, KvCasMismatchError, KvExposeConflictError, } from './kv.js';
4
+ export { ButterbaseError };
16
5
  export class AuthError extends ButterbaseError {
17
6
  constructor(m, c, s, r, d) { super(m, c, s, r, d); this.name = 'AuthError'; }
18
7
  }
@@ -28,6 +17,8 @@ export class QuotaError extends ButterbaseError {
28
17
  export class NetworkError extends ButterbaseError {
29
18
  constructor(m, c = 'NETWORK_ERROR', s = 0, r, d) { super(m, c, s, r, d); this.name = 'NetworkError'; }
30
19
  }
20
+ // Re-export KV error classes
21
+ export { KvError, KvAuthError, KvForbiddenError, KvNotFoundError, KvKeyInvalidError, KvConnectionError, KvQuotaExceededError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, KvValueTooLargeError, KvCasMismatchError, KvExposeConflictError, };
31
22
  // Exact code → class
32
23
  const EXACT = {
33
24
  [ErrorCodes.AUTH_INVALID_API_KEY]: AuthError,
@@ -35,9 +26,30 @@ const EXACT = {
35
26
  [ErrorCodes.AUTH_INSUFFICIENT_PERMISSIONS]: AuthError,
36
27
  [ErrorCodes.RESOURCE_NOT_FOUND]: NotFoundError,
37
28
  };
38
- function classifyByCode(code) {
29
+ // KV code → class
30
+ const KV_CODE_TO_CLASS = {
31
+ KV_UNAUTHORIZED: KvAuthError,
32
+ KV_FORBIDDEN: KvForbiddenError,
33
+ KV_NOT_FOUND: KvNotFoundError,
34
+ KV_KEY_INVALID: KvKeyInvalidError,
35
+ KV_CONNECTION: KvConnectionError,
36
+ KV_VALUE_TOO_LARGE: KvValueTooLargeError,
37
+ KV_CAS_MISMATCH: KvCasMismatchError,
38
+ KV_EXPOSE_CONFLICT: KvExposeConflictError,
39
+ // lowercase quota codes from the control-api preHandler (Task 5)
40
+ kv_rate_limited: KvQuotaExceededError,
41
+ kv_credits_exhausted: KvQuotaExceededError,
42
+ kv_storage_full: KvQuotaExceededError,
43
+ kv_keys_exhausted: KvQuotaExceededError,
44
+ value_too_large: KvValueTooLargeError,
45
+ };
46
+ export function classifyByCode(code) {
39
47
  if (EXACT[code])
40
48
  return EXACT[code];
49
+ if (KV_CODE_TO_CLASS[code])
50
+ return KV_CODE_TO_CLASS[code];
51
+ if (code.startsWith('KV_') || code.startsWith('kv_'))
52
+ return KvError;
41
53
  if (code.startsWith('AUTH_'))
42
54
  return AuthError;
43
55
  if (code.startsWith('VALIDATION_'))
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { ButterbaseError } from './base.js';
2
+ export declare class KvError extends ButterbaseError {
3
+ constructor(message: string, code?: string, status?: number, remediation?: string, details?: unknown);
4
+ }
5
+ export declare class KvAuthError extends KvError {
6
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
7
+ }
8
+ export declare class KvForbiddenError extends KvError {
9
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
10
+ }
11
+ export declare class KvNotFoundError extends KvError {
12
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
13
+ }
14
+ export declare class KvKeyInvalidError extends KvError {
15
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
16
+ }
17
+ export declare class KvConnectionError extends KvError {
18
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
19
+ }
20
+ export declare class KvCasMismatchError extends KvError {
21
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
22
+ }
23
+ export declare class KvExposeConflictError extends KvError {
24
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
25
+ }
26
+ export declare class KvValueTooLargeError extends KvError {
27
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
28
+ }
29
+ /** Parent / legacy alias for quota-class KV errors. */
30
+ export declare class KvQuotaExceededError extends KvError {
31
+ constructor(m?: string, c?: string, s?: number, r?: string, d?: unknown);
32
+ }
33
+ /** HTTP 429 – kv_rate_limited */
34
+ export declare class KvRateLimitedError extends KvQuotaExceededError {
35
+ /** Seconds the caller should wait before retrying. */
36
+ readonly retryAfterSec: number;
37
+ constructor(retryAfterSec?: number, m?: string);
38
+ }
39
+ /** HTTP 402 – kv_credits_exhausted */
40
+ export declare class KvCreditsExhaustedError extends KvQuotaExceededError {
41
+ constructor(m?: string);
42
+ }
43
+ /** HTTP 507 – kv_storage_full */
44
+ export declare class KvStorageFullError extends KvQuotaExceededError {
45
+ /** Bytes currently used. */
46
+ readonly usedBytes: number;
47
+ /** Storage cap in bytes. */
48
+ readonly capBytes: number;
49
+ constructor(usedBytes?: number, capBytes?: number, m?: string);
50
+ }
51
+ /** HTTP 507 – kv_keys_exhausted */
52
+ export declare class KvKeysExhaustedError extends KvQuotaExceededError {
53
+ /** Current key count. */
54
+ readonly keys: number;
55
+ /** Maximum allowed keys. */
56
+ readonly cap: number;
57
+ constructor(keys?: number, cap?: number, m?: string);
58
+ }
59
+ //# sourceMappingURL=kv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../../src/errors/kv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import { ButterbaseError } from './base.js';
2
+ export class KvError extends ButterbaseError {
3
+ constructor(message, code = 'KV_ERROR', status = 500, remediation, details) {
4
+ super(message, code, status, remediation, details);
5
+ this.name = 'KvError';
6
+ }
7
+ }
8
+ export class KvAuthError extends KvError {
9
+ constructor(m = 'unauthorized', c = 'KV_UNAUTHORIZED', s = 401, r, d) {
10
+ super(m, c, s, r, d);
11
+ this.name = 'KvAuthError';
12
+ }
13
+ }
14
+ export class KvForbiddenError extends KvError {
15
+ constructor(m = 'forbidden', c = 'KV_FORBIDDEN', s = 403, r, d) {
16
+ super(m, c, s, r, d);
17
+ this.name = 'KvForbiddenError';
18
+ }
19
+ }
20
+ export class KvNotFoundError extends KvError {
21
+ constructor(m = 'not found', c = 'KV_NOT_FOUND', s = 404, r, d) {
22
+ super(m, c, s, r, d);
23
+ this.name = 'KvNotFoundError';
24
+ }
25
+ }
26
+ export class KvKeyInvalidError extends KvError {
27
+ constructor(m = 'invalid key', c = 'KV_KEY_INVALID', s = 400, r, d) {
28
+ super(m, c, s, r, d);
29
+ this.name = 'KvKeyInvalidError';
30
+ }
31
+ }
32
+ export class KvConnectionError extends KvError {
33
+ constructor(m = 'connection error', c = 'KV_CONNECTION', s = 503, r, d) {
34
+ super(m, c, s, r, d);
35
+ this.name = 'KvConnectionError';
36
+ }
37
+ }
38
+ // Reserved for a future stricter-CAS endpoint that returns 409 on mismatch.
39
+ // Today the kv-gateway returns 200 {swapped:false} for normal CAS, so callers
40
+ // should use the boolean return from KvShim.cas(); this error is not thrown yet.
41
+ export class KvCasMismatchError extends KvError {
42
+ constructor(m = 'cas mismatch', c = 'KV_CAS_MISMATCH', s = 409, r, d) {
43
+ super(m, c, s, r, d);
44
+ this.name = 'KvCasMismatchError';
45
+ }
46
+ }
47
+ export class KvExposeConflictError extends KvError {
48
+ constructor(m = 'expose pattern conflicts with existing rule', c = 'KV_EXPOSE_CONFLICT', s = 409, r, d) {
49
+ super(m, c, s, r, d);
50
+ this.name = 'KvExposeConflictError';
51
+ }
52
+ }
53
+ export class KvValueTooLargeError extends KvError {
54
+ constructor(m = 'value too large', c = 'KV_VALUE_TOO_LARGE', s = 413, r, d) {
55
+ super(m, c, s, r, d);
56
+ this.name = 'KvValueTooLargeError';
57
+ }
58
+ }
59
+ /** Parent / legacy alias for quota-class KV errors. */
60
+ export class KvQuotaExceededError extends KvError {
61
+ constructor(m = 'quota exceeded', c = 'KV_QUOTA_EXCEEDED', s = 429, r, d) {
62
+ super(m, c, s, r, d);
63
+ this.name = 'KvQuotaExceededError';
64
+ }
65
+ }
66
+ /** HTTP 429 – kv_rate_limited */
67
+ export class KvRateLimitedError extends KvQuotaExceededError {
68
+ /** Seconds the caller should wait before retrying. */
69
+ retryAfterSec;
70
+ constructor(retryAfterSec = 0, m) {
71
+ super(m ?? `rate limited; retry after ${retryAfterSec}s`, 'kv_rate_limited', 429);
72
+ this.name = 'KvRateLimitedError';
73
+ this.retryAfterSec = retryAfterSec;
74
+ }
75
+ }
76
+ /** HTTP 402 – kv_credits_exhausted */
77
+ export class KvCreditsExhaustedError extends KvQuotaExceededError {
78
+ constructor(m) {
79
+ super(m ?? 'credits exhausted; please top up your account', 'kv_credits_exhausted', 402);
80
+ this.name = 'KvCreditsExhaustedError';
81
+ }
82
+ }
83
+ /** HTTP 507 – kv_storage_full */
84
+ export class KvStorageFullError extends KvQuotaExceededError {
85
+ /** Bytes currently used. */
86
+ usedBytes;
87
+ /** Storage cap in bytes. */
88
+ capBytes;
89
+ constructor(usedBytes = 0, capBytes = 0, m) {
90
+ super(m ?? `storage full (${usedBytes} / ${capBytes} bytes used)`, 'kv_storage_full', 507);
91
+ this.name = 'KvStorageFullError';
92
+ this.usedBytes = usedBytes;
93
+ this.capBytes = capBytes;
94
+ }
95
+ }
96
+ /** HTTP 507 – kv_keys_exhausted */
97
+ export class KvKeysExhaustedError extends KvQuotaExceededError {
98
+ /** Current key count. */
99
+ keys;
100
+ /** Maximum allowed keys. */
101
+ cap;
102
+ constructor(keys = 0, cap = 0, m) {
103
+ super(m ?? `key limit reached (${keys} / ${cap} keys)`, 'kv_keys_exhausted', 507);
104
+ this.name = 'KvKeysExhaustedError';
105
+ this.keys = keys;
106
+ this.cap = cap;
107
+ }
108
+ }
109
+ //# sourceMappingURL=kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.js","sourceRoot":"","sources":["../../src/errors/kv.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export { QueryBuilder } from './lib/query-builder.js';
3
3
  export { InsertBuilder, UpdateBuilder, DeleteBuilder } from './lib/mutation-builders.js';
4
4
  export { computeLockfileHash, type LockfileResult, type FileReader } from './lib/lockfile-hash.js';
5
5
  export { consumeSse, type SseEvent } from './lib/sse.js';
6
+ export { defineKvConfig, type KvConfigInput, type KvExposeRule, type KvRole } from './kv-config.js';
6
7
  export { AuthClient } from './auth/auth-client.js';
7
8
  export { StorageClient } from './storage/storage-client.js';
8
9
  export { FunctionsClient } from './functions/functions-client.js';
@@ -27,7 +28,7 @@ export { AdminEdgeSsrClient } from './admin/edge-ssr-client.js';
27
28
  export { AdminMigrationsClient } from './admin/migrations-client.js';
28
29
  export { AdminPlatformBillingClient } from './admin/platform-billing-client.js';
29
30
  export { RealtimeClient } from './realtime/realtime-client.js';
30
- export { ButterbaseError, AuthError, ValidationError, NotFoundError, QuotaError, NetworkError, parseApiError, } from './errors/index.js';
31
+ export { ButterbaseError, AuthError, ValidationError, NotFoundError, QuotaError, NetworkError, parseApiError, KvError, KvAuthError, KvForbiddenError, KvNotFoundError, KvKeyInvalidError, KvConnectionError, KvCasMismatchError, KvExposeConflictError, KvValueTooLargeError, KvQuotaExceededError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, } from './errors/index.js';
31
32
  export { ErrorCodes, isAgentFriendlyError, } from '@butterbase/shared';
32
33
  export type { ErrorCode, AgentFriendlyError } from '@butterbase/shared';
33
34
  export { parseRegions, loadRegionConfig, butterbaseRegionToFlyRegion, } from '@butterbase/shared';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,8 @@ export { InsertBuilder, UpdateBuilder, DeleteBuilder } from './lib/mutation-buil
7
7
  // Utility helpers
8
8
  export { computeLockfileHash } from './lib/lockfile-hash.js';
9
9
  export { consumeSse } from './lib/sse.js';
10
+ // KV config helper
11
+ export { defineKvConfig } from './kv-config.js';
10
12
  // Client modules
11
13
  export { AuthClient } from './auth/auth-client.js';
12
14
  export { StorageClient } from './storage/storage-client.js';
@@ -35,7 +37,9 @@ export { AdminPlatformBillingClient } from './admin/platform-billing-client.js';
35
37
  // Realtime client
36
38
  export { RealtimeClient } from './realtime/realtime-client.js';
37
39
  // Error types
38
- export { ButterbaseError, AuthError, ValidationError, NotFoundError, QuotaError, NetworkError, parseApiError, } from './errors/index.js';
40
+ export { ButterbaseError, AuthError, ValidationError, NotFoundError, QuotaError, NetworkError, parseApiError,
41
+ // KV error classes
42
+ KvError, KvAuthError, KvForbiddenError, KvNotFoundError, KvKeyInvalidError, KvConnectionError, KvCasMismatchError, KvExposeConflictError, KvValueTooLargeError, KvQuotaExceededError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, } from './errors/index.js';
39
43
  // Shared package re-exports
40
44
  export { ErrorCodes, isAgentFriendlyError, } from '@butterbase/shared';
41
45
  export { parseRegions, loadRegionConfig, butterbaseRegionToFlyRegion, } from '@butterbase/shared';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE5E,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEzF,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAwC,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAEzD,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,cAAc;AACd,OAAO,EACL,eAAe,EACf,SAAS,EACT,eAAe,EACf,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,4BAA4B;AAC5B,OAAO,EACL,UAAU,EACV,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAE5B,sBAAsB;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type KvRole = 'public' | 'authed' | 'owner' | 'deny';
2
+ export interface KvExposeRule {
3
+ pattern: string;
4
+ read: KvRole;
5
+ write: KvRole;
6
+ }
7
+ export interface KvConfigInput {
8
+ expose: KvExposeRule[];
9
+ }
10
+ export declare function defineKvConfig(config: KvConfigInput): KvConfigInput;
11
+ //# sourceMappingURL=kv-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-config.d.ts","sourceRoot":"","sources":["../src/kv-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAEnE"}
@@ -0,0 +1,4 @@
1
+ export function defineKvConfig(config) {
2
+ return config;
3
+ }
4
+ //# sourceMappingURL=kv-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-config.js","sourceRoot":"","sources":["../src/kv-config.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/kv.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ export type Role = 'public' | 'authed' | 'owner' | 'deny';
2
+ export interface KvShim {
3
+ get<T = unknown>(key: string, opts?: {
4
+ touch?: boolean;
5
+ }): Promise<T | null>;
6
+ set(key: string, value: unknown, opts?: {
7
+ ttl?: number | null;
8
+ ephemeral?: boolean;
9
+ }): Promise<void>;
10
+ del(key: string): Promise<number>;
11
+ incr(key: string, by?: number): Promise<number>;
12
+ decr(key: string, by?: number): Promise<number>;
13
+ setnx(key: string, value: unknown, opts?: {
14
+ ttl?: number | null;
15
+ ephemeral?: boolean;
16
+ }): Promise<boolean>;
17
+ setex(key: string, value: unknown, ttl: number, opts?: {
18
+ ephemeral?: boolean;
19
+ }): Promise<void>;
20
+ cas(key: string, expected: unknown, next: unknown): Promise<boolean>;
21
+ exists(key: string): Promise<boolean>;
22
+ ttl(key: string): Promise<number | null>;
23
+ expire(key: string, ttl: number | null): Promise<boolean>;
24
+ mget<T = unknown>(keys: string[]): Promise<(T | null)[]>;
25
+ mset(entries: Record<string, unknown>, opts?: {
26
+ ttl?: number | null;
27
+ }): Promise<void>;
28
+ expose(pattern: string, opts: {
29
+ read: Role;
30
+ write: Role;
31
+ }): Promise<void>;
32
+ unexpose(pattern: string): Promise<number>;
33
+ listRules(): Promise<Array<{
34
+ pattern: string;
35
+ read: Role;
36
+ write: Role;
37
+ order: number;
38
+ }>>;
39
+ }
40
+ export interface MakeKvOptions {
41
+ appId: string;
42
+ apiKey: string;
43
+ baseUrl: string;
44
+ fetch?: typeof fetch;
45
+ }
46
+ export declare function makeKv(opts: MakeKvOptions): KvShim;
47
+ //# sourceMappingURL=kv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.d.ts","sourceRoot":"","sources":["../src/kv.ts"],"names":[],"mappings":"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"}
package/dist/kv.js ADDED
@@ -0,0 +1,170 @@
1
+ // packages/sdk/src/kv.ts
2
+ import { KvError, KvKeyInvalidError, KvAuthError, KvForbiddenError, KvConnectionError, KvCasMismatchError, KvExposeConflictError, KvValueTooLargeError, KvRateLimitedError, KvCreditsExhaustedError, KvStorageFullError, KvKeysExhaustedError, } from './errors/kv.js';
3
+ export function makeKv(opts) {
4
+ const f = opts.fetch ?? fetch;
5
+ const root = `${opts.baseUrl}/v1/${opts.appId}/kv`;
6
+ const headers = {
7
+ authorization: `Bearer ${opts.apiKey}`,
8
+ 'content-type': 'application/json',
9
+ };
10
+ async function call(method, pathSuffix, body) {
11
+ return f(`${root}/${pathSuffix}`, {
12
+ method,
13
+ headers,
14
+ body: body === undefined ? undefined : JSON.stringify(body),
15
+ });
16
+ }
17
+ function throwForStatus(res, body) {
18
+ const msg = body?.message ?? `kv error (status ${res.status})`;
19
+ if (res.status === 400)
20
+ throw new KvKeyInvalidError(msg);
21
+ if (res.status === 401)
22
+ throw new KvAuthError(msg);
23
+ if (res.status === 402)
24
+ throw new KvCreditsExhaustedError(msg);
25
+ if (res.status === 403)
26
+ throw new KvForbiddenError(msg);
27
+ if (res.status === 409) {
28
+ if (body?.error === 'KV_EXPOSE_CONFLICT')
29
+ throw new KvExposeConflictError(msg);
30
+ throw new KvCasMismatchError(msg); // reserved for future strict-CAS mode
31
+ }
32
+ if (res.status === 413)
33
+ throw new KvValueTooLargeError(msg);
34
+ if (res.status === 429)
35
+ throw new KvRateLimitedError(body?.retry_after ?? 0, msg);
36
+ if (res.status === 503)
37
+ throw new KvConnectionError(msg);
38
+ if (res.status === 507) {
39
+ if (body?.error === 'kv_storage_full') {
40
+ throw new KvStorageFullError(body?.used_bytes ?? 0, body?.cap_bytes ?? 0, msg);
41
+ }
42
+ if (body?.error === 'kv_keys_exhausted') {
43
+ throw new KvKeysExhaustedError(body?.keys ?? 0, body?.cap ?? 0, msg);
44
+ }
45
+ // Unknown 507 — fall through to generic KvError
46
+ }
47
+ throw new KvError(msg, body?.error ?? 'KV_ERROR', res.status);
48
+ }
49
+ return {
50
+ async get(key, opts) {
51
+ const path = opts?.touch === true ? `${key}?touch=true` : key;
52
+ const res = await call('GET', path);
53
+ if (res.status === 404)
54
+ return null;
55
+ if (!res.ok)
56
+ throwForStatus(res, await res.json().catch(() => null));
57
+ return (await res.json()).value;
58
+ },
59
+ async set(key, value, opts) {
60
+ const body = { value };
61
+ if (opts?.ttl !== undefined)
62
+ body.ttl = opts.ttl;
63
+ if (opts?.ephemeral !== undefined)
64
+ body.ephemeral = opts.ephemeral;
65
+ const res = await call('PUT', key, body);
66
+ if (!res.ok && res.status !== 204)
67
+ throwForStatus(res, await res.json().catch(() => null));
68
+ },
69
+ async del(key) {
70
+ const res = await call('DELETE', key);
71
+ if (!res.ok)
72
+ throwForStatus(res, await res.json().catch(() => null));
73
+ return (await res.json()).deleted;
74
+ },
75
+ async incr(key, by) {
76
+ const body = by !== undefined ? { by } : {};
77
+ const res = await call('POST', `${key}/incr`, body);
78
+ if (!res.ok)
79
+ throwForStatus(res, await res.json().catch(() => null));
80
+ return (await res.json()).value;
81
+ },
82
+ async decr(key, by) {
83
+ const body = by !== undefined ? { by } : {};
84
+ const res = await call('POST', `${key}/decr`, body);
85
+ if (!res.ok)
86
+ throwForStatus(res, await res.json().catch(() => null));
87
+ return (await res.json()).value;
88
+ },
89
+ async setnx(key, value, opts) {
90
+ const body = { value };
91
+ if (opts?.ttl !== undefined)
92
+ body.ttl = opts.ttl;
93
+ if (opts?.ephemeral !== undefined)
94
+ body.ephemeral = opts.ephemeral;
95
+ const res = await call('POST', `${key}/setnx`, body);
96
+ if (res.status === 201)
97
+ return true;
98
+ if (res.status === 200)
99
+ return false;
100
+ throwForStatus(res, await res.json().catch(() => null));
101
+ },
102
+ async setex(key, value, ttl, opts) {
103
+ return this.set(key, value, { ttl, ephemeral: opts?.ephemeral });
104
+ },
105
+ async cas(key, expected, next) {
106
+ const res = await call('POST', `${key}/cas`, { expected, next });
107
+ if (!res.ok)
108
+ throwForStatus(res, await res.json().catch(() => null));
109
+ return (await res.json()).swapped;
110
+ },
111
+ async exists(key) {
112
+ const res = await call('GET', `${key}/exists`);
113
+ if (!res.ok)
114
+ throwForStatus(res, await res.json().catch(() => null));
115
+ return (await res.json()).exists;
116
+ },
117
+ async ttl(key) {
118
+ const res = await call('GET', `${key}/ttl`);
119
+ if (res.status === 404)
120
+ return null;
121
+ if (!res.ok)
122
+ throwForStatus(res, await res.json().catch(() => null));
123
+ return (await res.json()).ttl;
124
+ },
125
+ async expire(key, ttl) {
126
+ const res = await call('POST', `${key}/expire`, { ttl });
127
+ if (!res.ok)
128
+ throwForStatus(res, await res.json().catch(() => null));
129
+ return (await res.json()).ok;
130
+ },
131
+ async mget(keys) {
132
+ const ops = keys.map((key) => ({ op: 'get', key }));
133
+ const res = await call('POST', '_batch', { ops });
134
+ if (!res.ok)
135
+ throwForStatus(res, await res.json().catch(() => null));
136
+ const { results } = await res.json();
137
+ return results.map((r) => {
138
+ if ('error' in r)
139
+ return null;
140
+ if ('value' in r)
141
+ return r.value;
142
+ throw new KvError('unexpected batch result shape', 'KV_BATCH_SHAPE', 500);
143
+ });
144
+ },
145
+ async mset(entries, opts) {
146
+ // Uses parallel PUTs — gateway batch does not honor ttl/ephemeral for set ops.
147
+ await Promise.all(Object.entries(entries).map(([key, value]) => this.set(key, value, opts)));
148
+ },
149
+ async expose(pattern, opts) {
150
+ const res = await call('PUT', `_expose/${encodeURIComponent(pattern)}`, opts);
151
+ if (res.status === 204)
152
+ return;
153
+ if (!res.ok)
154
+ throwForStatus(res, await res.json().catch(() => null));
155
+ },
156
+ async unexpose(pattern) {
157
+ const res = await call('DELETE', `_expose/${encodeURIComponent(pattern)}`);
158
+ if (!res.ok)
159
+ throwForStatus(res, await res.json().catch(() => null));
160
+ return (await res.json()).deleted;
161
+ },
162
+ async listRules() {
163
+ const res = await call('GET', '_expose');
164
+ if (!res.ok)
165
+ throwForStatus(res, await res.json().catch(() => null));
166
+ return (await res.json()).rules;
167
+ },
168
+ };
169
+ }
170
+ //# sourceMappingURL=kv.js.map
package/dist/kv.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv.js","sourceRoot":"","sources":["../src/kv.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,17 @@
1
1
  {
2
2
  "name": "@butterbase/sdk",
3
- "version": "2.3.1",
3
+ "version": "2.3.3",
4
4
  "description": "Universal TypeScript SDK for Butterbase",
5
+ "license": "Apache-2.0",
6
+ "homepage": "https://butterbase.ai",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/NetGPT-Inc/butterbase-oss",
10
+ "directory": "packages/sdk"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
5
15
  "type": "module",
6
16
  "main": "./dist/index.js",
7
17
  "types": "./dist/index.d.ts",
@@ -15,8 +25,8 @@
15
25
  "dist"
16
26
  ],
17
27
  "scripts": {
18
- "build": "tsc",
19
- "dev": "tsc --watch",
28
+ "build": "tsc -b",
29
+ "dev": "tsc -b --watch",
20
30
  "test": "vitest run"
21
31
  },
22
32
  "keywords": [
@@ -28,7 +38,7 @@
28
38
  "storage"
29
39
  ],
30
40
  "dependencies": {
31
- "@butterbase/shared": "*"
41
+ "@butterbase/shared": "^0.2.1"
32
42
  },
33
43
  "devDependencies": {
34
44
  "typescript": "^5.7.0",