@elyonar/einvoice-js 0.1.0 → 0.2.1
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.
- package/README.md +38 -19
- package/dist/cjs/client/http-client.d.ts +60 -8
- package/dist/cjs/client/http-client.d.ts.map +1 -1
- package/dist/cjs/client/http-client.js +24 -4
- package/dist/cjs/client/http-client.js.map +1 -1
- package/dist/cjs/einvoice.d.ts +26 -6
- package/dist/cjs/einvoice.d.ts.map +1 -1
- package/dist/cjs/einvoice.js +26 -6
- package/dist/cjs/einvoice.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/esm/client/http-client.d.ts +60 -8
- package/dist/esm/client/http-client.d.ts.map +1 -1
- package/dist/esm/client/http-client.js +24 -4
- package/dist/esm/client/http-client.js.map +1 -1
- package/dist/esm/einvoice.d.ts +26 -6
- package/dist/esm/einvoice.d.ts.map +1 -1
- package/dist/esm/einvoice.js +26 -6
- package/dist/esm/einvoice.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# @elyonar/einvoice-js
|
|
2
2
|
|
|
3
|
-
Official TypeScript/JavaScript SDK for the
|
|
3
|
+
Official TypeScript/JavaScript SDK for the E-Invoice platform — streamlining electronic invoicing and tax compliance.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@elyonar/einvoice-js)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
8
|
## Features
|
|
9
9
|
|
|
10
|
-
-
|
|
11
|
-
- First-class TypeScript support with
|
|
12
|
-
- Automatic retry with exponential backoff and jitter
|
|
13
|
-
- Rate limit handling with `Retry-After` support
|
|
14
|
-
-
|
|
15
|
-
- Zero
|
|
16
|
-
- Dual ESM
|
|
17
|
-
- Node.js 18+ support
|
|
10
|
+
- **Complete API coverage** — Invoices, sellers, buyers, and billing management
|
|
11
|
+
- **Type-safe** — First-class TypeScript support with comprehensive type definitions
|
|
12
|
+
- **Resilient** — Automatic retry with exponential backoff and jitter
|
|
13
|
+
- **Rate limit aware** — Smart handling with `Retry-After` support
|
|
14
|
+
- **Secure webhooks** — HMAC-SHA256 signature verification with replay protection
|
|
15
|
+
- **Zero dependencies** — Uses native `fetch`, `crypto`, and `AbortController`
|
|
16
|
+
- **Dual builds** — ESM and CommonJS for maximum compatibility
|
|
17
|
+
- **Modern** — Node.js 18+ support with environment auto-detection
|
|
18
18
|
|
|
19
19
|
## Installation
|
|
20
20
|
|
|
@@ -27,6 +27,7 @@ npm install @elyonar/einvoice-js
|
|
|
27
27
|
```typescript
|
|
28
28
|
import { EInvoice } from '@elyonar/einvoice-js';
|
|
29
29
|
|
|
30
|
+
// Minimal setup - environment auto-detected from API key
|
|
30
31
|
const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
31
32
|
|
|
32
33
|
// Create an invoice
|
|
@@ -48,23 +49,41 @@ console.log(result.data.jobId); // 'job_abc123'
|
|
|
48
49
|
|
|
49
50
|
## Configuration
|
|
50
51
|
|
|
52
|
+
The SDK works out of the box with intelligent defaults:
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// That's it! Environment auto-detected from API key
|
|
56
|
+
const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Environment auto-detection:**
|
|
60
|
+
- `sk_test_*` → Local development (`https://local-api.einvoice.ng`)
|
|
61
|
+
- `sk_live_*` → Production (`https://gateway.einvoice.ng`)
|
|
62
|
+
|
|
63
|
+
**Built-in resilience:**
|
|
64
|
+
- Automatic retry with exponential backoff (3 attempts)
|
|
65
|
+
- Smart rate limit handling
|
|
66
|
+
- 30-second default timeout
|
|
67
|
+
|
|
68
|
+
### Custom Configuration (Optional)
|
|
69
|
+
|
|
70
|
+
Override defaults only when needed:
|
|
71
|
+
|
|
51
72
|
```typescript
|
|
52
73
|
const client = new EInvoice({
|
|
53
|
-
apiKey: 'sk_live_...',
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
74
|
+
apiKey: 'sk_live_...',
|
|
75
|
+
options: {
|
|
76
|
+
baseUrl: 'https://custom-region.api.einvoice.ng', // Override auto-detection
|
|
77
|
+
timeout: 60000, // 60s for slow networks
|
|
78
|
+
},
|
|
58
79
|
});
|
|
59
80
|
```
|
|
60
81
|
|
|
61
82
|
| Option | Type | Default | Description |
|
|
62
83
|
|--------|------|---------|-------------|
|
|
63
|
-
| `apiKey` | `string` | — | **Required.**
|
|
64
|
-
| `baseUrl` | `string` |
|
|
65
|
-
| `timeout` | `number` | `30000` | Request timeout
|
|
66
|
-
| `maxRetries` | `number` | `3` | Max retries for 5xx/429 errors |
|
|
67
|
-
| `retryBaseDelay` | `number` | `1000` | Base delay for exponential backoff (ms) |
|
|
84
|
+
| `apiKey` | `string` | — | **Required.** API key (auto-detects environment) |
|
|
85
|
+
| `options.baseUrl` | `string` | Auto-detected | Override API gateway URL |
|
|
86
|
+
| `options.timeout` | `number` | `30000` | Request timeout (ms) |
|
|
68
87
|
|
|
69
88
|
## API Reference
|
|
70
89
|
|
|
@@ -1,28 +1,74 @@
|
|
|
1
1
|
import type { ApiResponse, RequestOptions as PerRequestOptions } from '../types/common.js';
|
|
2
|
+
/**
|
|
3
|
+
* Retry configuration for failed requests.
|
|
4
|
+
*/
|
|
5
|
+
export interface RetryConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Maximum number of retry attempts for failed requests.
|
|
8
|
+
* Only 5xx errors and 429 rate limits are retried.
|
|
9
|
+
* @default 3
|
|
10
|
+
*/
|
|
11
|
+
maxAttempts?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Base delay for exponential backoff (in milliseconds).
|
|
14
|
+
* @default 1000
|
|
15
|
+
*/
|
|
16
|
+
baseDelay?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* HTTP client options for configuring request behavior.
|
|
20
|
+
*/
|
|
21
|
+
export interface HttpClientOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Base URL of the API gateway.
|
|
24
|
+
* @default 'https://api.einvoice.ng'
|
|
25
|
+
*/
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Request timeout in milliseconds.
|
|
29
|
+
* @default 30000
|
|
30
|
+
*/
|
|
31
|
+
timeout?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Retry configuration for failed requests.
|
|
34
|
+
*/
|
|
35
|
+
retry?: RetryConfig;
|
|
36
|
+
/**
|
|
37
|
+
* Default headers to include in all requests.
|
|
38
|
+
* These can be overridden on a per-request basis.
|
|
39
|
+
*/
|
|
40
|
+
headers?: Record<string, string>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Main SDK configuration.
|
|
44
|
+
*/
|
|
2
45
|
export interface HttpClientConfig {
|
|
3
46
|
/**
|
|
4
47
|
* API key for authentication. Must start with `sk_live_` or `sk_test_`.
|
|
5
48
|
*/
|
|
6
49
|
apiKey: string;
|
|
7
50
|
/**
|
|
8
|
-
*
|
|
9
|
-
|
|
51
|
+
* HTTP client options for configuring request behavior.
|
|
52
|
+
*/
|
|
53
|
+
options?: HttpClientOptions;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use `options.baseUrl` instead.
|
|
56
|
+
* Base URL of the API gateway.
|
|
10
57
|
*/
|
|
11
58
|
baseUrl?: string;
|
|
12
59
|
/**
|
|
60
|
+
* @deprecated Use `options.timeout` instead.
|
|
13
61
|
* Request timeout in milliseconds.
|
|
14
|
-
* @default 30000
|
|
15
62
|
*/
|
|
16
63
|
timeout?: number;
|
|
17
64
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* @default 3
|
|
65
|
+
* @deprecated Use `options.retry.maxAttempts` instead.
|
|
66
|
+
* Maximum number of retry attempts.
|
|
21
67
|
*/
|
|
22
68
|
maxRetries?: number;
|
|
23
69
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
70
|
+
* @deprecated Use `options.retry.baseDelay` instead.
|
|
71
|
+
* Base delay for exponential backoff.
|
|
26
72
|
*/
|
|
27
73
|
retryBaseDelay?: number;
|
|
28
74
|
}
|
|
@@ -39,7 +85,13 @@ export declare class HttpClient {
|
|
|
39
85
|
private readonly timeout;
|
|
40
86
|
private readonly maxRetries;
|
|
41
87
|
private readonly retryBaseDelay;
|
|
88
|
+
private readonly defaultHeaders;
|
|
42
89
|
constructor(config: HttpClientConfig);
|
|
90
|
+
/**
|
|
91
|
+
* Determine the default base URL based on the API key prefix.
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
private getDefaultBaseUrl;
|
|
43
95
|
/**
|
|
44
96
|
* Make an authenticated HTTP request to the E-Invoice API.
|
|
45
97
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAY3F,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAY3F;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAM5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;gBAE5C,MAAM,EAAE,gBAAgB;IAqBpC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YA2D5D,OAAO;IAiCrB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -11,15 +11,34 @@ class HttpClient {
|
|
|
11
11
|
timeout;
|
|
12
12
|
maxRetries;
|
|
13
13
|
retryBaseDelay;
|
|
14
|
+
defaultHeaders;
|
|
14
15
|
constructor(config) {
|
|
15
16
|
if (!config.apiKey) {
|
|
16
17
|
throw new errors_js_1.EInvoiceConfigError('API key is required. Pass `apiKey` to the client constructor.');
|
|
17
18
|
}
|
|
18
|
-
this.baseUrl = (config.baseUrl ?? 'https://api.einvoice.ng').replace(/\/$/, '');
|
|
19
19
|
this.apiKey = config.apiKey;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
// Support both new nested structure and legacy flat structure
|
|
21
|
+
// Priority: options.* > flat properties > defaults
|
|
22
|
+
const opts = config.options ?? {};
|
|
23
|
+
// Auto-detect baseUrl from API key prefix (test vs live)
|
|
24
|
+
const defaultBaseUrl = this.getDefaultBaseUrl(config.apiKey);
|
|
25
|
+
this.baseUrl = (opts.baseUrl ?? config.baseUrl ?? defaultBaseUrl).replace(/\/$/, '');
|
|
26
|
+
this.timeout = opts.timeout ?? config.timeout ?? 30_000;
|
|
27
|
+
this.maxRetries = opts.retry?.maxAttempts ?? config.maxRetries ?? 3;
|
|
28
|
+
this.retryBaseDelay = opts.retry?.baseDelay ?? config.retryBaseDelay ?? 1000;
|
|
29
|
+
this.defaultHeaders = opts.headers ?? {};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Determine the default base URL based on the API key prefix.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
getDefaultBaseUrl(apiKey) {
|
|
36
|
+
// If API key starts with sk_test_, use local development environment
|
|
37
|
+
if (apiKey.startsWith('sk_test_')) {
|
|
38
|
+
return 'https://local-api.einvoice.ng';
|
|
39
|
+
}
|
|
40
|
+
// Default to production gateway for live keys or any other format
|
|
41
|
+
return 'https://gateway.einvoice.ng';
|
|
23
42
|
}
|
|
24
43
|
/**
|
|
25
44
|
* Make an authenticated HTTP request to the E-Invoice API.
|
|
@@ -73,6 +92,7 @@ class HttpClient {
|
|
|
73
92
|
'Authorization': `Bearer ${this.apiKey}`,
|
|
74
93
|
'Content-Type': 'application/json',
|
|
75
94
|
'Accept': 'application/json',
|
|
95
|
+
...this.defaultHeaders,
|
|
76
96
|
...options.requestOptions?.headers,
|
|
77
97
|
};
|
|
78
98
|
const controller = new AbortController();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":";;;AACA,4CAKsB;
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/einvoice.d.ts
CHANGED
|
@@ -7,11 +7,14 @@ import { BillingService } from './services/billing.js';
|
|
|
7
7
|
* The main E-Invoice SDK client.
|
|
8
8
|
*
|
|
9
9
|
* Provides access to all E-Invoice platform APIs through typed service objects.
|
|
10
|
+
* The SDK automatically detects the environment from your API key and configures
|
|
11
|
+
* sensible defaults for timeout, retries, and rate limiting.
|
|
10
12
|
*
|
|
11
13
|
* @example
|
|
12
14
|
* ```ts
|
|
13
15
|
* import { EInvoice } from '@elyonar/einvoice-js';
|
|
14
16
|
*
|
|
17
|
+
* // Minimal setup - environment auto-detected from API key
|
|
15
18
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
16
19
|
*
|
|
17
20
|
* // Invoices
|
|
@@ -25,6 +28,18 @@ import { BillingService } from './services/billing.js';
|
|
|
25
28
|
* // Billing
|
|
26
29
|
* const balance = await client.billing.getAccount();
|
|
27
30
|
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* // Custom configuration (optional)
|
|
35
|
+
* const client = new EInvoice({
|
|
36
|
+
* apiKey: 'sk_live_...',
|
|
37
|
+
* options: {
|
|
38
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
39
|
+
* timeout: 60000,
|
|
40
|
+
* },
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
28
43
|
*/
|
|
29
44
|
export declare class EInvoice {
|
|
30
45
|
/** @internal */
|
|
@@ -48,19 +63,24 @@ export declare class EInvoice {
|
|
|
48
63
|
/**
|
|
49
64
|
* Create a new E-Invoice SDK client.
|
|
50
65
|
*
|
|
51
|
-
*
|
|
66
|
+
* The SDK automatically detects the environment from your API key:
|
|
67
|
+
* - `sk_test_*` → Local development environment
|
|
68
|
+
* - `sk_live_*` → Production environment
|
|
69
|
+
*
|
|
70
|
+
* @param config - Client configuration. Only `apiKey` is required.
|
|
52
71
|
*
|
|
53
72
|
* @example
|
|
54
73
|
* ```ts
|
|
55
|
-
* // Minimal
|
|
74
|
+
* // Minimal - that's all you need!
|
|
56
75
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
57
76
|
*
|
|
58
|
-
* //
|
|
77
|
+
* // Custom configuration (optional)
|
|
59
78
|
* const client = new EInvoice({
|
|
60
79
|
* apiKey: 'sk_live_...',
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
80
|
+
* options: {
|
|
81
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
82
|
+
* timeout: 60000,
|
|
83
|
+
* },
|
|
64
84
|
* });
|
|
65
85
|
* ```
|
|
66
86
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"einvoice.d.ts","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"einvoice.d.ts","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,QAAQ;IACnB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;OAEG;IACH,SAAgB,QAAQ,EAAE,cAAc,CAAC;IAEzC;;OAEG;IACH,SAAgB,OAAO,EAAE,aAAa,CAAC;IAEvC;;OAEG;IACH,SAAgB,MAAM,EAAE,YAAY,CAAC;IAErC;;OAEG;IACH,SAAgB,OAAO,EAAE,cAAc,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,MAAM,EAAE,gBAAgB;CAQrC"}
|
package/dist/cjs/einvoice.js
CHANGED
|
@@ -10,11 +10,14 @@ const billing_js_1 = require("./services/billing.js");
|
|
|
10
10
|
* The main E-Invoice SDK client.
|
|
11
11
|
*
|
|
12
12
|
* Provides access to all E-Invoice platform APIs through typed service objects.
|
|
13
|
+
* The SDK automatically detects the environment from your API key and configures
|
|
14
|
+
* sensible defaults for timeout, retries, and rate limiting.
|
|
13
15
|
*
|
|
14
16
|
* @example
|
|
15
17
|
* ```ts
|
|
16
18
|
* import { EInvoice } from '@elyonar/einvoice-js';
|
|
17
19
|
*
|
|
20
|
+
* // Minimal setup - environment auto-detected from API key
|
|
18
21
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
19
22
|
*
|
|
20
23
|
* // Invoices
|
|
@@ -28,6 +31,18 @@ const billing_js_1 = require("./services/billing.js");
|
|
|
28
31
|
* // Billing
|
|
29
32
|
* const balance = await client.billing.getAccount();
|
|
30
33
|
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* // Custom configuration (optional)
|
|
38
|
+
* const client = new EInvoice({
|
|
39
|
+
* apiKey: 'sk_live_...',
|
|
40
|
+
* options: {
|
|
41
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
42
|
+
* timeout: 60000,
|
|
43
|
+
* },
|
|
44
|
+
* });
|
|
45
|
+
* ```
|
|
31
46
|
*/
|
|
32
47
|
class EInvoice {
|
|
33
48
|
/** @internal */
|
|
@@ -51,19 +66,24 @@ class EInvoice {
|
|
|
51
66
|
/**
|
|
52
67
|
* Create a new E-Invoice SDK client.
|
|
53
68
|
*
|
|
54
|
-
*
|
|
69
|
+
* The SDK automatically detects the environment from your API key:
|
|
70
|
+
* - `sk_test_*` → Local development environment
|
|
71
|
+
* - `sk_live_*` → Production environment
|
|
72
|
+
*
|
|
73
|
+
* @param config - Client configuration. Only `apiKey` is required.
|
|
55
74
|
*
|
|
56
75
|
* @example
|
|
57
76
|
* ```ts
|
|
58
|
-
* // Minimal
|
|
77
|
+
* // Minimal - that's all you need!
|
|
59
78
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
60
79
|
*
|
|
61
|
-
* //
|
|
80
|
+
* // Custom configuration (optional)
|
|
62
81
|
* const client = new EInvoice({
|
|
63
82
|
* apiKey: 'sk_live_...',
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
83
|
+
* options: {
|
|
84
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
85
|
+
* timeout: 60000,
|
|
86
|
+
* },
|
|
67
87
|
* });
|
|
68
88
|
* ```
|
|
69
89
|
*/
|
package/dist/cjs/einvoice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"einvoice.js","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":";;;AAAA,4DAAqD;AAErD,wDAAwD;AACxD,sDAAsD;AACtD,oDAAoD;AACpD,sDAAuD;AAEvD
|
|
1
|
+
{"version":3,"file":"einvoice.js","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":";;;AAAA,4DAAqD;AAErD,wDAAwD;AACxD,sDAAsD;AACtD,oDAAoD;AACpD,sDAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,QAAQ;IACnB,gBAAgB;IACC,UAAU,CAAa;IAExC;;OAEG;IACa,QAAQ,CAAiB;IAEzC;;OAEG;IACa,OAAO,CAAgB;IAEvC;;OAEG;IACa,MAAM,CAAe;IAErC;;OAEG;IACa,OAAO,CAAiB;IAExC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,MAAwB;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,2BAAU,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,GAAG,IAAI,4BAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,0BAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,2BAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;CACF;AAxDD,4BAwDC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { SellerService } from './services/sellers.js';
|
|
|
4
4
|
export { BuyerService } from './services/buyers.js';
|
|
5
5
|
export { BillingService } from './services/billing.js';
|
|
6
6
|
export { HttpClient } from './client/http-client.js';
|
|
7
|
-
export type { HttpClientConfig } from './client/http-client.js';
|
|
7
|
+
export type { HttpClientConfig, HttpClientOptions, RetryConfig } from './client/http-client.js';
|
|
8
8
|
export { EInvoiceError, EInvoiceApiError, EInvoiceRateLimitError, EInvoiceTimeoutError, EInvoiceConfigError, EInvoiceWebhookError, } from './errors.js';
|
|
9
9
|
export { verifyWebhook } from './webhooks/verify.js';
|
|
10
10
|
export type { VerifyWebhookOptions } from './webhooks/verify.js';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKhG,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,YAAY,EAEV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EAGd,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EAGnB,SAAS,EACT,WAAW,EACX,qBAAqB,EACrB,MAAM,EACN,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EAGZ,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAGpB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,28 +1,74 @@
|
|
|
1
1
|
import type { ApiResponse, RequestOptions as PerRequestOptions } from '../types/common.js';
|
|
2
|
+
/**
|
|
3
|
+
* Retry configuration for failed requests.
|
|
4
|
+
*/
|
|
5
|
+
export interface RetryConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Maximum number of retry attempts for failed requests.
|
|
8
|
+
* Only 5xx errors and 429 rate limits are retried.
|
|
9
|
+
* @default 3
|
|
10
|
+
*/
|
|
11
|
+
maxAttempts?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Base delay for exponential backoff (in milliseconds).
|
|
14
|
+
* @default 1000
|
|
15
|
+
*/
|
|
16
|
+
baseDelay?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* HTTP client options for configuring request behavior.
|
|
20
|
+
*/
|
|
21
|
+
export interface HttpClientOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Base URL of the API gateway.
|
|
24
|
+
* @default 'https://api.einvoice.ng'
|
|
25
|
+
*/
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Request timeout in milliseconds.
|
|
29
|
+
* @default 30000
|
|
30
|
+
*/
|
|
31
|
+
timeout?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Retry configuration for failed requests.
|
|
34
|
+
*/
|
|
35
|
+
retry?: RetryConfig;
|
|
36
|
+
/**
|
|
37
|
+
* Default headers to include in all requests.
|
|
38
|
+
* These can be overridden on a per-request basis.
|
|
39
|
+
*/
|
|
40
|
+
headers?: Record<string, string>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Main SDK configuration.
|
|
44
|
+
*/
|
|
2
45
|
export interface HttpClientConfig {
|
|
3
46
|
/**
|
|
4
47
|
* API key for authentication. Must start with `sk_live_` or `sk_test_`.
|
|
5
48
|
*/
|
|
6
49
|
apiKey: string;
|
|
7
50
|
/**
|
|
8
|
-
*
|
|
9
|
-
|
|
51
|
+
* HTTP client options for configuring request behavior.
|
|
52
|
+
*/
|
|
53
|
+
options?: HttpClientOptions;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use `options.baseUrl` instead.
|
|
56
|
+
* Base URL of the API gateway.
|
|
10
57
|
*/
|
|
11
58
|
baseUrl?: string;
|
|
12
59
|
/**
|
|
60
|
+
* @deprecated Use `options.timeout` instead.
|
|
13
61
|
* Request timeout in milliseconds.
|
|
14
|
-
* @default 30000
|
|
15
62
|
*/
|
|
16
63
|
timeout?: number;
|
|
17
64
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* @default 3
|
|
65
|
+
* @deprecated Use `options.retry.maxAttempts` instead.
|
|
66
|
+
* Maximum number of retry attempts.
|
|
21
67
|
*/
|
|
22
68
|
maxRetries?: number;
|
|
23
69
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
70
|
+
* @deprecated Use `options.retry.baseDelay` instead.
|
|
71
|
+
* Base delay for exponential backoff.
|
|
26
72
|
*/
|
|
27
73
|
retryBaseDelay?: number;
|
|
28
74
|
}
|
|
@@ -39,7 +85,13 @@ export declare class HttpClient {
|
|
|
39
85
|
private readonly timeout;
|
|
40
86
|
private readonly maxRetries;
|
|
41
87
|
private readonly retryBaseDelay;
|
|
88
|
+
private readonly defaultHeaders;
|
|
42
89
|
constructor(config: HttpClientConfig);
|
|
90
|
+
/**
|
|
91
|
+
* Determine the default base URL based on the API key prefix.
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
private getDefaultBaseUrl;
|
|
43
95
|
/**
|
|
44
96
|
* Make an authenticated HTTP request to the E-Invoice API.
|
|
45
97
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAY3F,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAY3F;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAM5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;gBAE5C,MAAM,EAAE,gBAAgB;IAqBpC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YA2D5D,OAAO;IAiCrB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -8,15 +8,34 @@ export class HttpClient {
|
|
|
8
8
|
timeout;
|
|
9
9
|
maxRetries;
|
|
10
10
|
retryBaseDelay;
|
|
11
|
+
defaultHeaders;
|
|
11
12
|
constructor(config) {
|
|
12
13
|
if (!config.apiKey) {
|
|
13
14
|
throw new EInvoiceConfigError('API key is required. Pass `apiKey` to the client constructor.');
|
|
14
15
|
}
|
|
15
|
-
this.baseUrl = (config.baseUrl ?? 'https://api.einvoice.ng').replace(/\/$/, '');
|
|
16
16
|
this.apiKey = config.apiKey;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
// Support both new nested structure and legacy flat structure
|
|
18
|
+
// Priority: options.* > flat properties > defaults
|
|
19
|
+
const opts = config.options ?? {};
|
|
20
|
+
// Auto-detect baseUrl from API key prefix (test vs live)
|
|
21
|
+
const defaultBaseUrl = this.getDefaultBaseUrl(config.apiKey);
|
|
22
|
+
this.baseUrl = (opts.baseUrl ?? config.baseUrl ?? defaultBaseUrl).replace(/\/$/, '');
|
|
23
|
+
this.timeout = opts.timeout ?? config.timeout ?? 30_000;
|
|
24
|
+
this.maxRetries = opts.retry?.maxAttempts ?? config.maxRetries ?? 3;
|
|
25
|
+
this.retryBaseDelay = opts.retry?.baseDelay ?? config.retryBaseDelay ?? 1000;
|
|
26
|
+
this.defaultHeaders = opts.headers ?? {};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Determine the default base URL based on the API key prefix.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
getDefaultBaseUrl(apiKey) {
|
|
33
|
+
// If API key starts with sk_test_, use local development environment
|
|
34
|
+
if (apiKey.startsWith('sk_test_')) {
|
|
35
|
+
return 'https://local-api.einvoice.ng';
|
|
36
|
+
}
|
|
37
|
+
// Default to production gateway for live keys or any other format
|
|
38
|
+
return 'https://gateway.einvoice.ng';
|
|
20
39
|
}
|
|
21
40
|
/**
|
|
22
41
|
* Make an authenticated HTTP request to the E-Invoice API.
|
|
@@ -70,6 +89,7 @@ export class HttpClient {
|
|
|
70
89
|
'Authorization': `Bearer ${this.apiKey}`,
|
|
71
90
|
'Content-Type': 'application/json',
|
|
72
91
|
'Accept': 'application/json',
|
|
92
|
+
...this.defaultHeaders,
|
|
73
93
|
...options.requestOptions?.headers,
|
|
74
94
|
};
|
|
75
95
|
const controller = new AbortController();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/client/http-client.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/einvoice.d.ts
CHANGED
|
@@ -7,11 +7,14 @@ import { BillingService } from './services/billing.js';
|
|
|
7
7
|
* The main E-Invoice SDK client.
|
|
8
8
|
*
|
|
9
9
|
* Provides access to all E-Invoice platform APIs through typed service objects.
|
|
10
|
+
* The SDK automatically detects the environment from your API key and configures
|
|
11
|
+
* sensible defaults for timeout, retries, and rate limiting.
|
|
10
12
|
*
|
|
11
13
|
* @example
|
|
12
14
|
* ```ts
|
|
13
15
|
* import { EInvoice } from '@elyonar/einvoice-js';
|
|
14
16
|
*
|
|
17
|
+
* // Minimal setup - environment auto-detected from API key
|
|
15
18
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
16
19
|
*
|
|
17
20
|
* // Invoices
|
|
@@ -25,6 +28,18 @@ import { BillingService } from './services/billing.js';
|
|
|
25
28
|
* // Billing
|
|
26
29
|
* const balance = await client.billing.getAccount();
|
|
27
30
|
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* // Custom configuration (optional)
|
|
35
|
+
* const client = new EInvoice({
|
|
36
|
+
* apiKey: 'sk_live_...',
|
|
37
|
+
* options: {
|
|
38
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
39
|
+
* timeout: 60000,
|
|
40
|
+
* },
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
28
43
|
*/
|
|
29
44
|
export declare class EInvoice {
|
|
30
45
|
/** @internal */
|
|
@@ -48,19 +63,24 @@ export declare class EInvoice {
|
|
|
48
63
|
/**
|
|
49
64
|
* Create a new E-Invoice SDK client.
|
|
50
65
|
*
|
|
51
|
-
*
|
|
66
|
+
* The SDK automatically detects the environment from your API key:
|
|
67
|
+
* - `sk_test_*` → Local development environment
|
|
68
|
+
* - `sk_live_*` → Production environment
|
|
69
|
+
*
|
|
70
|
+
* @param config - Client configuration. Only `apiKey` is required.
|
|
52
71
|
*
|
|
53
72
|
* @example
|
|
54
73
|
* ```ts
|
|
55
|
-
* // Minimal
|
|
74
|
+
* // Minimal - that's all you need!
|
|
56
75
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
57
76
|
*
|
|
58
|
-
* //
|
|
77
|
+
* // Custom configuration (optional)
|
|
59
78
|
* const client = new EInvoice({
|
|
60
79
|
* apiKey: 'sk_live_...',
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
80
|
+
* options: {
|
|
81
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
82
|
+
* timeout: 60000,
|
|
83
|
+
* },
|
|
64
84
|
* });
|
|
65
85
|
* ```
|
|
66
86
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"einvoice.d.ts","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"einvoice.d.ts","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,QAAQ;IACnB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;OAEG;IACH,SAAgB,QAAQ,EAAE,cAAc,CAAC;IAEzC;;OAEG;IACH,SAAgB,OAAO,EAAE,aAAa,CAAC;IAEvC;;OAEG;IACH,SAAgB,MAAM,EAAE,YAAY,CAAC;IAErC;;OAEG;IACH,SAAgB,OAAO,EAAE,cAAc,CAAC;IAExC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,MAAM,EAAE,gBAAgB;CAQrC"}
|
package/dist/esm/einvoice.js
CHANGED
|
@@ -7,11 +7,14 @@ import { BillingService } from './services/billing.js';
|
|
|
7
7
|
* The main E-Invoice SDK client.
|
|
8
8
|
*
|
|
9
9
|
* Provides access to all E-Invoice platform APIs through typed service objects.
|
|
10
|
+
* The SDK automatically detects the environment from your API key and configures
|
|
11
|
+
* sensible defaults for timeout, retries, and rate limiting.
|
|
10
12
|
*
|
|
11
13
|
* @example
|
|
12
14
|
* ```ts
|
|
13
15
|
* import { EInvoice } from '@elyonar/einvoice-js';
|
|
14
16
|
*
|
|
17
|
+
* // Minimal setup - environment auto-detected from API key
|
|
15
18
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
16
19
|
*
|
|
17
20
|
* // Invoices
|
|
@@ -25,6 +28,18 @@ import { BillingService } from './services/billing.js';
|
|
|
25
28
|
* // Billing
|
|
26
29
|
* const balance = await client.billing.getAccount();
|
|
27
30
|
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* // Custom configuration (optional)
|
|
35
|
+
* const client = new EInvoice({
|
|
36
|
+
* apiKey: 'sk_live_...',
|
|
37
|
+
* options: {
|
|
38
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
39
|
+
* timeout: 60000,
|
|
40
|
+
* },
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
28
43
|
*/
|
|
29
44
|
export class EInvoice {
|
|
30
45
|
/** @internal */
|
|
@@ -48,19 +63,24 @@ export class EInvoice {
|
|
|
48
63
|
/**
|
|
49
64
|
* Create a new E-Invoice SDK client.
|
|
50
65
|
*
|
|
51
|
-
*
|
|
66
|
+
* The SDK automatically detects the environment from your API key:
|
|
67
|
+
* - `sk_test_*` → Local development environment
|
|
68
|
+
* - `sk_live_*` → Production environment
|
|
69
|
+
*
|
|
70
|
+
* @param config - Client configuration. Only `apiKey` is required.
|
|
52
71
|
*
|
|
53
72
|
* @example
|
|
54
73
|
* ```ts
|
|
55
|
-
* // Minimal
|
|
74
|
+
* // Minimal - that's all you need!
|
|
56
75
|
* const client = new EInvoice({ apiKey: 'sk_test_...' });
|
|
57
76
|
*
|
|
58
|
-
* //
|
|
77
|
+
* // Custom configuration (optional)
|
|
59
78
|
* const client = new EInvoice({
|
|
60
79
|
* apiKey: 'sk_live_...',
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
80
|
+
* options: {
|
|
81
|
+
* baseUrl: 'https://custom-region.api.einvoice.ng',
|
|
82
|
+
* timeout: 60000,
|
|
83
|
+
* },
|
|
64
84
|
* });
|
|
65
85
|
* ```
|
|
66
86
|
*/
|
package/dist/esm/einvoice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"einvoice.js","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"einvoice.js","sourceRoot":"","sources":["../../src/einvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,QAAQ;IACnB,gBAAgB;IACC,UAAU,CAAa;IAExC;;OAEG;IACa,QAAQ,CAAiB;IAEzC;;OAEG;IACa,OAAO,CAAgB;IAEvC;;OAEG;IACa,MAAM,CAAe;IAErC;;OAEG;IACa,OAAO,CAAiB;IAExC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,MAAwB;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;CACF"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { SellerService } from './services/sellers.js';
|
|
|
4
4
|
export { BuyerService } from './services/buyers.js';
|
|
5
5
|
export { BillingService } from './services/billing.js';
|
|
6
6
|
export { HttpClient } from './client/http-client.js';
|
|
7
|
-
export type { HttpClientConfig } from './client/http-client.js';
|
|
7
|
+
export type { HttpClientConfig, HttpClientOptions, RetryConfig } from './client/http-client.js';
|
|
8
8
|
export { EInvoiceError, EInvoiceApiError, EInvoiceRateLimitError, EInvoiceTimeoutError, EInvoiceConfigError, EInvoiceWebhookError, } from './errors.js';
|
|
9
9
|
export { verifyWebhook } from './webhooks/verify.js';
|
|
10
10
|
export type { VerifyWebhookOptions } from './webhooks/verify.js';
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKhG,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,YAAY,EAEV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EAGd,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EAGnB,SAAS,EACT,WAAW,EACX,qBAAqB,EACrB,MAAM,EACN,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EAGZ,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAGpB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elyonar/einvoice-js",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "Official TypeScript/JavaScript SDK for the E-Invoice
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Official TypeScript/JavaScript SDK for the E-Invoice platform — streamlining electronic invoicing and tax compliance",
|
|
5
5
|
"author": "Elyonar <dev@elyonar.com>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -68,13 +68,14 @@
|
|
|
68
68
|
"keywords": [
|
|
69
69
|
"einvoice",
|
|
70
70
|
"e-invoice",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
71
|
+
"electronic-invoice",
|
|
72
|
+
"tax-compliance",
|
|
73
73
|
"tax",
|
|
74
74
|
"invoice",
|
|
75
75
|
"billing",
|
|
76
76
|
"sdk",
|
|
77
|
-
"api-client"
|
|
77
|
+
"api-client",
|
|
78
|
+
"typescript"
|
|
78
79
|
],
|
|
79
80
|
"repository": {
|
|
80
81
|
"type": "git",
|