kiriminaja 0.1.4 → 0.1.6

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 CHANGED
@@ -4,31 +4,26 @@
4
4
  [![npm downloads](https://img.shields.io/npm/dw/kiriminaja)](https://www.npmjs.com/package/kiriminaja)
5
5
  [![license](https://img.shields.io/github/license/kiriminaja/node)](LICENSE)
6
6
 
7
+ Framework-agnostic JavaScript/TypeScript SDK for the [KiriminAja](https://kiriminaja.com) logistics API. Works with Node.js, Bun, Deno, and any runtime that supports the Fetch API — including Nuxt/Nitro via the included h3 adapter.
8
+
7
9
  ## Requirements
8
10
 
9
- - Node.js 18+ (has built-in `fetch`), or provide `fetch` via `KiriminAja.init({ fetch })`
11
+ - Node.js 18+, Bun, or Deno (built-in `fetch`); or pass a custom `fetch` via `KiriminAja.init({ fetch })`
10
12
 
11
13
  ## Installation
12
14
 
13
15
  ```bash
14
16
  npm install kiriminaja
17
+ # yarn add kiriminaja
18
+ # pnpm add kiriminaja
19
+ # bun add kiriminaja
15
20
  ```
16
21
 
17
- ```bash
18
- yarn add kiriminaja
19
- ```
20
-
21
- ```bash
22
- pnpm add kiriminaja
23
- ```
24
-
25
- ```bash
26
- bun add kiriminaja
27
- ```
22
+ ---
28
23
 
29
- ## Setup
24
+ ## Quick Start
30
25
 
31
- Initialize once, then use any endpoint.
26
+ Call `KiriminAja.init()` once at app startup, then call any service method anywhere.
32
27
 
33
28
  ```ts
34
29
  import KiriminAja, { KAEnv } from "kiriminaja";
@@ -37,56 +32,233 @@ KiriminAja.init({
37
32
  env: KAEnv.SANDBOX, // or KAEnv.PRODUCTION
38
33
  apiKey: process.env.KIRIMINAJA_API_KEY,
39
34
  });
35
+
36
+ // Use any service
37
+ const provinces = await KiriminAja.address.provinces();
40
38
  ```
41
39
 
42
- If you need to override the base URL:
40
+ ---
41
+
42
+ ## Init Options
43
+
44
+ | Option | Type | Default | Description |
45
+ | --------- | ----------- | ------------------ | ------------------------------------- |
46
+ | `env` | `KAEnv` | `KAEnv.SANDBOX` | Target environment |
47
+ | `apiKey` | `string` | — | Your KiriminAja API key |
48
+ | `baseUrl` | `string` | Derived from `env` | Override the base URL |
49
+ | `fetch` | `FetchLike` | `globalThis.fetch` | Custom fetch (polyfill / test mock) |
50
+ | `headers` | `object` | — | Extra headers sent with every request |
43
51
 
44
52
  ```ts
53
+ // Custom base URL
45
54
  KiriminAja.init({
46
55
  baseUrl: "https://tdev.kiriminaja.com",
47
56
  apiKey: process.env.KIRIMINAJA_API_KEY,
48
57
  });
58
+
59
+ // Node.js < 18 — bring your own fetch
60
+ import fetch from "node-fetch";
61
+ KiriminAja.init({ apiKey: "...", fetch });
49
62
  ```
50
63
 
51
- If you are on Node.js < 18, pass a `fetch` implementation:
64
+ ---
65
+
66
+ ## Services
67
+
68
+ ### Address
52
69
 
53
70
  ```ts
54
- import KiriminAja from "kiriminaja";
71
+ // List all provinces
72
+ await KiriminAja.address.provinces();
55
73
 
56
- KiriminAja.init({
57
- apiKey: process.env.KIRIMINAJA_API_KEY,
58
- fetch, // provide your own fetch polyfill
74
+ // Cities in a province (provinsi_id)
75
+ await KiriminAja.address.cities(5);
76
+
77
+ // Districts in a city (kabupaten_id)
78
+ await KiriminAja.address.districts(12);
79
+
80
+ // Sub-districts in a district (kecamatan_id)
81
+ await KiriminAja.address.subDistricts(77);
82
+
83
+ // Search districts by name
84
+ await KiriminAja.address.districtsByName("jakarta");
85
+ ```
86
+
87
+ ---
88
+
89
+ ### Coverage Area & Pricing
90
+
91
+ ```ts
92
+ // Express shipping rates
93
+ await KiriminAja.coverageArea.pricingExpress({
94
+ origin: 1,
95
+ destination: 2,
96
+ weight: 1000, // grams
97
+ item_value: 50000,
98
+ insurance: 0,
99
+ courier: ["jne", "jnt"],
100
+ });
101
+
102
+ // Instant (same-day) rates
103
+ await KiriminAja.coverageArea.pricingInstant({
104
+ service: ["instant"],
105
+ item_price: 10000,
106
+ origin: { lat: -6.2, long: 106.8, address: "Jl. Sudirman No.1" },
107
+ destination: { lat: -6.21, long: 106.81, address: "Jl. Thamrin No.5" },
108
+ weight: 1000,
109
+ vehicle: "bike",
110
+ timezone: "Asia/Jakarta",
59
111
  });
60
112
  ```
61
113
 
62
- ## Usage
114
+ ---
63
115
 
64
- Coverage area:
116
+ ### Order — Express
65
117
 
66
118
  ```ts
67
- const provinces = await KiriminAja.address.provinces();
68
- const cities = await KiriminAja.address.cities(5);
119
+ // Track by AWB
120
+ await KiriminAja.order.express.track("AWB123456");
121
+
122
+ // Cancel
123
+ await KiriminAja.order.express.cancel("AWB123456", "Customer request");
124
+
125
+ // Request pickup (v5)
126
+ await KiriminAja.order.express.requestPickupV5(payload);
127
+
128
+ // Request pickup (v6.1)
129
+ await KiriminAja.order.express.requestPickupV61(payload);
69
130
  ```
70
131
 
71
- Order:
132
+ ---
133
+
134
+ ### Order — Instant
72
135
 
73
136
  ```ts
74
- const tracking = await KiriminAja.order.express.track("ORDER_ID");
75
- const instantTracking = await KiriminAja.order.instant.track("ORDER_ID");
137
+ // Create instant pickup
138
+ await KiriminAja.order.instant.create(payload);
139
+
140
+ // Find a new driver for an existing order
141
+ await KiriminAja.order.instant.findNewDriver(orderId);
142
+
143
+ // Cancel instant order
144
+ await KiriminAja.order.instant.cancel(orderId);
145
+
146
+ // Track instant order
147
+ await KiriminAja.order.instant.track(orderId);
76
148
  ```
77
149
 
78
- ## Development
150
+ ---
79
151
 
80
- To install dependencies:
152
+ ### Courier
81
153
 
82
- ```bash
83
- bun install
154
+ ```ts
155
+ // List available couriers
156
+ await KiriminAja.courier.list();
157
+
158
+ // Courier groups
159
+ await KiriminAja.courier.group();
160
+
161
+ // Courier detail
162
+ await KiriminAja.courier.detail(courierId);
163
+
164
+ // Update whitelist services
165
+ await KiriminAja.courier.setWhitelistServices(payload);
84
166
  ```
85
167
 
86
- To run:
168
+ ---
87
169
 
88
- ```bash
89
- bun run index.ts
170
+ ### Pickup Schedules
171
+
172
+ ```ts
173
+ await KiriminAja.pickup.schedules();
90
174
  ```
91
175
 
92
- This project was created using `bun init` in bun v1.3.3. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
176
+ ---
177
+
178
+ ### Payment
179
+
180
+ ```ts
181
+ await KiriminAja.payment.getPayment(orderId);
182
+ ```
183
+
184
+ ---
185
+
186
+ ## Nuxt / Nitro (h3 Adapter)
187
+
188
+ The `kiriminaja/adapters/h3` sub-package wraps `init()` into a Nitro server plugin and provides a `useKiriminAja()` composable for event handlers — no extra dependencies required.
189
+
190
+ ### 1. Add your API key to runtime config
191
+
192
+ ```ts
193
+ // nuxt.config.ts
194
+ export default defineNuxtConfig({
195
+ runtimeConfig: {
196
+ kiriminajaApiKey: process.env.KIRIMINAJA_API_KEY,
197
+ },
198
+ });
199
+ ```
200
+
201
+ ### 2. Create a server plugin
202
+
203
+ ```ts
204
+ // server/plugins/kiriminaja.ts
205
+ import { defineKiriminAjaPlugin, KAEnv } from "kiriminaja/adapters/h3";
206
+
207
+ export default defineKiriminAjaPlugin(() => ({
208
+ apiKey: useRuntimeConfig().kiriminajaApiKey,
209
+ env: KAEnv.PRODUCTION,
210
+ }));
211
+ ```
212
+
213
+ > Pass a **factory function** (as above) when you need `useRuntimeConfig()` — it is called lazily when the plugin boots, not at import time. A plain options object also works if you read the key from `process.env` directly.
214
+
215
+ ### 3. Use in server routes
216
+
217
+ ```ts
218
+ // server/api/rates.post.ts
219
+ import { useKiriminAja } from "kiriminaja/adapters/h3";
220
+
221
+ export default defineEventHandler(async (event) => {
222
+ const body = await readBody(event);
223
+ const { coverageArea } = useKiriminAja();
224
+ return coverageArea.pricingExpress(body);
225
+ });
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Per-user / Per-request API Keys
231
+
232
+ If each user has their own KiriminAja API key, pass it directly to `useKiriminAja({ apiKey })`. No wrapper function needed — the key is scoped to that call and its entire async chain via `AsyncLocalStorage` internally, so concurrent requests are fully isolated.
233
+
234
+ ```ts
235
+ // server/api/rates.post.ts
236
+ import { useKiriminAja } from "kiriminaja/adapters/h3";
237
+
238
+ export default defineEventHandler(async (event) => {
239
+ const user = await requireAuthUser(event);
240
+ const body = await readBody(event);
241
+
242
+ const { coverageArea } = useKiriminAja({ apiKey: user.kiriminajaApiKey });
243
+ return coverageArea.pricingExpress(body);
244
+ });
245
+ ```
246
+
247
+ Works on nested namespaces too:
248
+
249
+ ```ts
250
+ const { order } = useKiriminAja({ apiKey: user.kiriminajaApiKey });
251
+ await order.express.track("AWB123");
252
+ ```
253
+
254
+ Calls made without `{ apiKey }` fall back to the key set in `defineKiriminAjaPlugin`.
255
+
256
+ ---
257
+
258
+ ## Development
259
+
260
+ ```bash
261
+ bun install # install dependencies
262
+ bun test # run tests
263
+ bun run build # compile to dist/
264
+ ```
@@ -0,0 +1,120 @@
1
+ import { type InitOptions } from "../config/client.js";
2
+ import { KAEnv } from "../config/api.js";
3
+ export { KAEnv };
4
+ /**
5
+ * Creates a Nitro/h3 server plugin that initializes the KiriminAja SDK.
6
+ *
7
+ * Accepts either a plain options object or a factory function — use the
8
+ * factory form when you need to read Nuxt runtime config lazily (i.e. inside
9
+ * the plugin callback where `useRuntimeConfig()` is available).
10
+ *
11
+ * @example Plain options (shared API key)
12
+ * ```ts
13
+ * // server/plugins/kiriminaja.ts
14
+ * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'
15
+ *
16
+ * export default defineKiriminAjaPlugin({
17
+ * apiKey: process.env.KIRIMINAJA_API_KEY,
18
+ * env: KAEnv.PRODUCTION,
19
+ * })
20
+ * ```
21
+ *
22
+ * @example With Nuxt runtime config
23
+ * ```ts
24
+ * // server/plugins/kiriminaja.ts
25
+ * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'
26
+ * import { useRuntimeConfig } from '#imports'
27
+ *
28
+ * export default defineKiriminAjaPlugin(() => ({
29
+ * apiKey: useRuntimeConfig().kiriminajaApiKey,
30
+ * env: KAEnv.PRODUCTION,
31
+ * }))
32
+ * ```
33
+ */
34
+ export declare const defineKiriminAjaPlugin: (options: InitOptions | (() => InitOptions)) => () => void;
35
+ export type UseKiriminAjaOptions = {
36
+ apiKey?: string;
37
+ };
38
+ /**
39
+ * Returns the KiriminAja service methods for use inside Nitro/h3 event
40
+ * handlers or Nuxt server routes.
41
+ *
42
+ * - **No arguments** — uses the API key configured via `defineKiriminAjaPlugin`.
43
+ * - **`{ apiKey }`** — overrides the Authorization header for every service
44
+ * call made on the returned object. Safe for concurrent requests; each call
45
+ * runs in its own `AsyncLocalStorage` context so keys never bleed across
46
+ * requests.
47
+ *
48
+ * The SDK **must** have been initialized (via `defineKiriminAjaPlugin`) before
49
+ * any service method is called.
50
+ *
51
+ * @example Shared API key (from plugin)
52
+ * ```ts
53
+ * // server/api/rates.post.ts
54
+ * import { useKiriminAja } from 'kiriminaja/adapters/h3'
55
+ *
56
+ * export default defineEventHandler(async (event) => {
57
+ * const { coverageArea } = useKiriminAja()
58
+ * const body = await readBody(event)
59
+ * return coverageArea.pricingExpress(body)
60
+ * })
61
+ * ```
62
+ *
63
+ * @example Per-user API key
64
+ * ```ts
65
+ * // server/api/rates.post.ts
66
+ * import { useKiriminAja } from 'kiriminaja/adapters/h3'
67
+ *
68
+ * export default defineEventHandler(async (event) => {
69
+ * const user = await requireAuthUser(event)
70
+ * const body = await readBody(event)
71
+ * const { coverageArea } = useKiriminAja({ apiKey: user.kiriminajaApiKey })
72
+ * return coverageArea.pricingExpress(body)
73
+ * })
74
+ * ```
75
+ */
76
+ export declare const useKiriminAja: (options?: UseKiriminAjaOptions) => {
77
+ address: {
78
+ provinces: () => Promise<import("../types/coverage-area.responses.js").ProvinceListResponse>;
79
+ cities: (provinsiId: number) => Promise<import("../types/coverage-area.responses.js").CityListResponse>;
80
+ districts: (kabupatenId: number) => Promise<import("../types/coverage-area.responses.js").DistrictListResponse>;
81
+ subDistricts: (kecamatanId: number) => Promise<import("../types/coverage-area.responses.js").SubDistrictListResponse>;
82
+ districtsByName: (search: string) => Promise<import("../types/coverage-area.responses.js").DistrictByNameResponse>;
83
+ };
84
+ coverageArea: {
85
+ pricingExpress: <T = unknown>(payload: import("../services/coverage-area/pricing-express.js").PricingExpressPayload) => Promise<import("../types/api-response.js").KAResponse<unknown>>;
86
+ pricingInstant: <T = unknown>(payload: import("../services/coverage-area/pricing-instant.js").PricingInstantPayload) => Promise<import("../types/api-response.js").KAResponse<unknown>>;
87
+ provinces: () => Promise<import("../types/coverage-area.responses.js").ProvinceListResponse>;
88
+ cities: (provinsiId: number) => Promise<import("../types/coverage-area.responses.js").CityListResponse>;
89
+ districts: (kabupatenId: number) => Promise<import("../types/coverage-area.responses.js").DistrictListResponse>;
90
+ subDistricts: (kecamatanId: number) => Promise<import("../types/coverage-area.responses.js").SubDistrictListResponse>;
91
+ districtsByName: (search: string) => Promise<import("../types/coverage-area.responses.js").DistrictByNameResponse>;
92
+ };
93
+ order: {
94
+ express: {
95
+ track: (orderId: string) => Promise<import("../types/order.responses.js").ExpressTrackingResponse>;
96
+ cancel: (awb: string, reason: string) => Promise<import("../types/order.responses.js").CancelExpressOrderResponse>;
97
+ requestPickupV5: (payload: unknown) => Promise<import("../types/api-response.js").KAResponse<unknown>>;
98
+ requestPickupV61: (payload: unknown) => Promise<import("../types/api-response.js").KAResponse<unknown>>;
99
+ };
100
+ instant: {
101
+ create: (payload: unknown) => Promise<unknown>;
102
+ findNewDriver: (orderId: string) => Promise<unknown>;
103
+ cancel: (orderId: string) => Promise<import("../types/order.responses.js").CancelInstantOrderResponse>;
104
+ track: (orderId: string) => Promise<import("../types/order.responses.js").InstantTrackingResponse>;
105
+ };
106
+ };
107
+ pickup: {
108
+ schedules: () => Promise<import("../types/pickup.responses.js").PickupSchedulesResponse>;
109
+ };
110
+ payment: {
111
+ getPayment: (paymentId: string) => Promise<import("../types/payment.responses.js").GetPaymentResponse>;
112
+ };
113
+ courier: {
114
+ list: () => Promise<import("../types/courier.js").CourierListResponse>;
115
+ group: () => Promise<import("../types/courier.js").CourierGroupResponse>;
116
+ detail: (courierCode: string) => Promise<import("../types/courier.js").CourierDetailResponse>;
117
+ setWhitelistServices: (services: string[]) => Promise<import("../types/courier.js").SetCourierPreferenceResponse>;
118
+ };
119
+ };
120
+ //# sourceMappingURL=h3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h3.d.ts","sourceRoot":"","sources":["../../src/adapters/h3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,sBAAsB,GAC/B,SAAS,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,eAM7C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,aAAa,GAAI,UAAU,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM3D,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { init, getConfig } from "../config/client.js";
2
+ import { services } from "../services/index.js";
3
+ import { KAEnv } from "../config/api.js";
4
+ export { KAEnv };
5
+ /**
6
+ * Creates a Nitro/h3 server plugin that initializes the KiriminAja SDK.
7
+ *
8
+ * Accepts either a plain options object or a factory function — use the
9
+ * factory form when you need to read Nuxt runtime config lazily (i.e. inside
10
+ * the plugin callback where `useRuntimeConfig()` is available).
11
+ *
12
+ * @example Plain options (shared API key)
13
+ * ```ts
14
+ * // server/plugins/kiriminaja.ts
15
+ * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'
16
+ *
17
+ * export default defineKiriminAjaPlugin({
18
+ * apiKey: process.env.KIRIMINAJA_API_KEY,
19
+ * env: KAEnv.PRODUCTION,
20
+ * })
21
+ * ```
22
+ *
23
+ * @example With Nuxt runtime config
24
+ * ```ts
25
+ * // server/plugins/kiriminaja.ts
26
+ * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'
27
+ * import { useRuntimeConfig } from '#imports'
28
+ *
29
+ * export default defineKiriminAjaPlugin(() => ({
30
+ * apiKey: useRuntimeConfig().kiriminajaApiKey,
31
+ * env: KAEnv.PRODUCTION,
32
+ * }))
33
+ * ```
34
+ */
35
+ export const defineKiriminAjaPlugin = (options) => {
36
+ return () => {
37
+ const resolved = typeof options === "function" ? options() : options;
38
+ init(resolved);
39
+ };
40
+ };
41
+ /**
42
+ * Returns the KiriminAja service methods for use inside Nitro/h3 event
43
+ * handlers or Nuxt server routes.
44
+ *
45
+ * - **No arguments** — uses the API key configured via `defineKiriminAjaPlugin`.
46
+ * - **`{ apiKey }`** — overrides the Authorization header for every service
47
+ * call made on the returned object. Safe for concurrent requests; each call
48
+ * runs in its own `AsyncLocalStorage` context so keys never bleed across
49
+ * requests.
50
+ *
51
+ * The SDK **must** have been initialized (via `defineKiriminAjaPlugin`) before
52
+ * any service method is called.
53
+ *
54
+ * @example Shared API key (from plugin)
55
+ * ```ts
56
+ * // server/api/rates.post.ts
57
+ * import { useKiriminAja } from 'kiriminaja/adapters/h3'
58
+ *
59
+ * export default defineEventHandler(async (event) => {
60
+ * const { coverageArea } = useKiriminAja()
61
+ * const body = await readBody(event)
62
+ * return coverageArea.pricingExpress(body)
63
+ * })
64
+ * ```
65
+ *
66
+ * @example Per-user API key
67
+ * ```ts
68
+ * // server/api/rates.post.ts
69
+ * import { useKiriminAja } from 'kiriminaja/adapters/h3'
70
+ *
71
+ * export default defineEventHandler(async (event) => {
72
+ * const user = await requireAuthUser(event)
73
+ * const body = await readBody(event)
74
+ * const { coverageArea } = useKiriminAja({ apiKey: user.kiriminajaApiKey })
75
+ * return coverageArea.pricingExpress(body)
76
+ * })
77
+ * ```
78
+ */
79
+ export const useKiriminAja = (options) => {
80
+ if (options?.apiKey) {
81
+ const current = getConfig();
82
+ init({ ...current, apiKey: options.apiKey });
83
+ }
84
+ return services;
85
+ };
86
+ //# sourceMappingURL=h3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h3.js","sourceRoot":"","sources":["../../src/adapters/h3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAoB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAA0C,EAC5C,EAAE;IACA,OAAO,GAAG,EAAE;QACR,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC,CAAC;AACN,CAAC,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA8B,EAAE,EAAE;IAC5D,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiriminaja",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "module": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",
@@ -12,6 +12,10 @@
12
12
  ".": {
13
13
  "types": "./dist/index.d.ts",
14
14
  "import": "./dist/index.js"
15
+ },
16
+ "./adapters/h3": {
17
+ "types": "./dist/adapters/h3.d.ts",
18
+ "import": "./dist/adapters/h3.js"
15
19
  }
16
20
  },
17
21
  "files": [
@@ -21,6 +25,7 @@
21
25
  ],
22
26
  "devDependencies": {
23
27
  "@types/bun": "^1.3.11",
28
+ "@types/node": "^25.5.0",
24
29
  "changelogen": "^0.6.2",
25
30
  "typescript": "^6.0.0"
26
31
  },