kiriminaja 0.1.5 → 0.1.7

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.
Files changed (155) hide show
  1. package/README.md +28 -0
  2. package/dist/adapters/h3.cjs +302 -0
  3. package/dist/adapters/h3.cjs.map +1 -0
  4. package/dist/adapters/h3.d.ts +25 -3
  5. package/dist/adapters/h3.d.ts.map +1 -1
  6. package/dist/adapters/h3.mjs +298 -0
  7. package/dist/adapters/h3.mjs.map +1 -0
  8. package/dist/config/client.d.ts +1 -1
  9. package/dist/config/client.d.ts.map +1 -1
  10. package/dist/index.cjs +296 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.ts +27 -27
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.mjs +291 -0
  15. package/dist/index.mjs.map +1 -0
  16. package/dist/services/address/city.d.ts +1 -1
  17. package/dist/services/address/city.d.ts.map +1 -1
  18. package/dist/services/address/district-by-name.d.ts +1 -1
  19. package/dist/services/address/district-by-name.d.ts.map +1 -1
  20. package/dist/services/address/district.d.ts +1 -1
  21. package/dist/services/address/district.d.ts.map +1 -1
  22. package/dist/services/address/index.d.ts +5 -5
  23. package/dist/services/address/province.d.ts +1 -1
  24. package/dist/services/address/province.d.ts.map +1 -1
  25. package/dist/services/address/sub-district.d.ts +1 -1
  26. package/dist/services/address/sub-district.d.ts.map +1 -1
  27. package/dist/services/courier/detail.d.ts +1 -1
  28. package/dist/services/courier/detail.d.ts.map +1 -1
  29. package/dist/services/courier/group.d.ts +1 -1
  30. package/dist/services/courier/group.d.ts.map +1 -1
  31. package/dist/services/courier/index.d.ts +4 -4
  32. package/dist/services/courier/list.d.ts +1 -1
  33. package/dist/services/courier/list.d.ts.map +1 -1
  34. package/dist/services/courier/set-whitelist-services.d.ts +1 -1
  35. package/dist/services/courier/set-whitelist-services.d.ts.map +1 -1
  36. package/dist/services/coverage-area/index.d.ts +7 -7
  37. package/dist/services/coverage-area/pricing-express.d.ts +1 -1
  38. package/dist/services/coverage-area/pricing-express.d.ts.map +1 -1
  39. package/dist/services/coverage-area/pricing-instant.d.ts +1 -1
  40. package/dist/services/coverage-area/pricing-instant.d.ts.map +1 -1
  41. package/dist/services/index.d.ts +24 -24
  42. package/dist/services/order/express/cancel.d.ts +1 -1
  43. package/dist/services/order/express/cancel.d.ts.map +1 -1
  44. package/dist/services/order/express/request-pickup-v5.d.ts +1 -1
  45. package/dist/services/order/express/request-pickup-v5.d.ts.map +1 -1
  46. package/dist/services/order/express/request-pickup-v61.d.ts +1 -1
  47. package/dist/services/order/express/request-pickup-v61.d.ts.map +1 -1
  48. package/dist/services/order/express/track.d.ts +1 -1
  49. package/dist/services/order/express/track.d.ts.map +1 -1
  50. package/dist/services/order/express.d.ts +4 -4
  51. package/dist/services/order/express.d.ts.map +1 -1
  52. package/dist/services/order/index.d.ts +6 -6
  53. package/dist/services/order/instant/cancel.d.ts +1 -1
  54. package/dist/services/order/instant/cancel.d.ts.map +1 -1
  55. package/dist/services/order/instant/track.d.ts +1 -1
  56. package/dist/services/order/instant/track.d.ts.map +1 -1
  57. package/dist/services/order/instant.d.ts +4 -4
  58. package/dist/services/order/instant.d.ts.map +1 -1
  59. package/dist/services/payment/get-payment.d.ts +1 -1
  60. package/dist/services/payment/get-payment.d.ts.map +1 -1
  61. package/dist/services/payment/index.d.ts +1 -1
  62. package/dist/services/pickup/index.d.ts +1 -1
  63. package/dist/services/pickup/schedules.d.ts +1 -1
  64. package/dist/services/pickup/schedules.d.ts.map +1 -1
  65. package/dist/types/address.d.ts +7 -0
  66. package/dist/types/address.d.ts.map +1 -0
  67. package/dist/types/api-response.d.ts +12 -0
  68. package/dist/types/api-response.d.ts.map +1 -0
  69. package/dist/types/courier.d.ts +39 -0
  70. package/dist/types/courier.d.ts.map +1 -0
  71. package/dist/types/coverage-area.d.ts +22 -0
  72. package/dist/types/coverage-area.d.ts.map +1 -0
  73. package/dist/types/coverage-area.responses.d.ts +19 -0
  74. package/dist/types/coverage-area.responses.d.ts.map +1 -0
  75. package/dist/types/order.responses.d.ts +146 -0
  76. package/dist/types/order.responses.d.ts.map +1 -0
  77. package/dist/types/payment.responses.d.ts +46 -0
  78. package/dist/types/payment.responses.d.ts.map +1 -0
  79. package/dist/types/pickup.responses.d.ts +11 -0
  80. package/dist/types/pickup.responses.d.ts.map +1 -0
  81. package/dist/types/region.d.ts +5 -0
  82. package/dist/types/region.d.ts.map +1 -0
  83. package/dist/types/response.d.ts +7 -0
  84. package/dist/types/response.d.ts.map +1 -0
  85. package/package.json +14 -8
  86. package/dist/adapters/h3.js +0 -61
  87. package/dist/adapters/h3.js.map +0 -1
  88. package/dist/config/api.js +0 -10
  89. package/dist/config/api.js.map +0 -1
  90. package/dist/config/client.js +0 -24
  91. package/dist/config/client.js.map +0 -1
  92. package/dist/http/request.js +0 -53
  93. package/dist/http/request.js.map +0 -1
  94. package/dist/index.js +0 -11
  95. package/dist/index.js.map +0 -1
  96. package/dist/services/address/city.js +0 -7
  97. package/dist/services/address/city.js.map +0 -1
  98. package/dist/services/address/district-by-name.js +0 -7
  99. package/dist/services/address/district-by-name.js.map +0 -1
  100. package/dist/services/address/district.js +0 -7
  101. package/dist/services/address/district.js.map +0 -1
  102. package/dist/services/address/index.js +0 -13
  103. package/dist/services/address/index.js.map +0 -1
  104. package/dist/services/address/province.js +0 -5
  105. package/dist/services/address/province.js.map +0 -1
  106. package/dist/services/address/sub-district.js +0 -7
  107. package/dist/services/address/sub-district.js.map +0 -1
  108. package/dist/services/courier/detail.js +0 -5
  109. package/dist/services/courier/detail.js.map +0 -1
  110. package/dist/services/courier/group.js +0 -3
  111. package/dist/services/courier/group.js.map +0 -1
  112. package/dist/services/courier/index.js +0 -11
  113. package/dist/services/courier/index.js.map +0 -1
  114. package/dist/services/courier/list.js +0 -3
  115. package/dist/services/courier/list.js.map +0 -1
  116. package/dist/services/courier/set-whitelist-services.js +0 -5
  117. package/dist/services/courier/set-whitelist-services.js.map +0 -1
  118. package/dist/services/coverage-area/index.js +0 -9
  119. package/dist/services/coverage-area/index.js.map +0 -1
  120. package/dist/services/coverage-area/pricing-express.js +0 -5
  121. package/dist/services/coverage-area/pricing-express.js.map +0 -1
  122. package/dist/services/coverage-area/pricing-instant.js +0 -5
  123. package/dist/services/coverage-area/pricing-instant.js.map +0 -1
  124. package/dist/services/index.js +0 -15
  125. package/dist/services/index.js.map +0 -1
  126. package/dist/services/order/express/cancel.js +0 -9
  127. package/dist/services/order/express/cancel.js.map +0 -1
  128. package/dist/services/order/express/request-pickup-v5.js +0 -3
  129. package/dist/services/order/express/request-pickup-v5.js.map +0 -1
  130. package/dist/services/order/express/request-pickup-v61.js +0 -3
  131. package/dist/services/order/express/request-pickup-v61.js.map +0 -1
  132. package/dist/services/order/express/track.js +0 -5
  133. package/dist/services/order/express/track.js.map +0 -1
  134. package/dist/services/order/express.js +0 -5
  135. package/dist/services/order/express.js.map +0 -1
  136. package/dist/services/order/index.js +0 -17
  137. package/dist/services/order/index.js.map +0 -1
  138. package/dist/services/order/instant/cancel.js +0 -3
  139. package/dist/services/order/instant/cancel.js.map +0 -1
  140. package/dist/services/order/instant/create.js +0 -3
  141. package/dist/services/order/instant/create.js.map +0 -1
  142. package/dist/services/order/instant/find-new-driver.js +0 -5
  143. package/dist/services/order/instant/find-new-driver.js.map +0 -1
  144. package/dist/services/order/instant/track.js +0 -3
  145. package/dist/services/order/instant/track.js.map +0 -1
  146. package/dist/services/order/instant.js +0 -5
  147. package/dist/services/order/instant.js.map +0 -1
  148. package/dist/services/payment/get-payment.js +0 -5
  149. package/dist/services/payment/get-payment.js.map +0 -1
  150. package/dist/services/payment/index.js +0 -5
  151. package/dist/services/payment/index.js.map +0 -1
  152. package/dist/services/pickup/index.js +0 -5
  153. package/dist/services/pickup/index.js.map +0 -1
  154. package/dist/services/pickup/schedules.js +0 -3
  155. package/dist/services/pickup/schedules.js.map +0 -1
package/README.md CHANGED
@@ -227,6 +227,34 @@ export default defineEventHandler(async (event) => {
227
227
 
228
228
  ---
229
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
+
230
258
  ## Development
231
259
 
232
260
  ```bash
@@ -0,0 +1,302 @@
1
+ 'use strict';
2
+
3
+ // src/config/api.ts
4
+ var KAEnv = /* @__PURE__ */ ((KAEnv2) => {
5
+ KAEnv2["SANDBOX"] = "sandbox";
6
+ KAEnv2["PRODUCTION"] = "production";
7
+ return KAEnv2;
8
+ })(KAEnv || {});
9
+ var KA_ENV_URL = {
10
+ ["sandbox" /* SANDBOX */]: "https://tdev.kiriminaja.com",
11
+ ["production" /* PRODUCTION */]: "https://client.kiriminaja.com"
12
+ };
13
+
14
+ // src/config/client.ts
15
+ var singletonConfig;
16
+ var init = ({
17
+ env = "sandbox" /* SANDBOX */,
18
+ baseUrl,
19
+ apiKey,
20
+ fetch: fetchImpl,
21
+ headers
22
+ } = {}) => {
23
+ const resolvedFetch = fetchImpl ?? globalThis.fetch;
24
+ if (!resolvedFetch) {
25
+ throw new Error(
26
+ "Global fetch is not available. Provide Init({ fetch }) or use a runtime with fetch (Node 18+/Bun)."
27
+ );
28
+ }
29
+ const resolvedBaseUrl = baseUrl ?? KA_ENV_URL[env];
30
+ singletonConfig = {
31
+ env,
32
+ baseUrl: resolvedBaseUrl,
33
+ apiKey,
34
+ fetch: resolvedFetch,
35
+ headers
36
+ };
37
+ return singletonConfig;
38
+ };
39
+ var getConfig = () => {
40
+ if (!singletonConfig) {
41
+ throw new Error(
42
+ "KiriminAja.Init() must be called before using any API methods."
43
+ );
44
+ }
45
+ return singletonConfig;
46
+ };
47
+
48
+ // src/http/request.ts
49
+ var buildUrl = (path, baseUrl) => {
50
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
51
+ return new URL(normalizedPath, baseUrl);
52
+ };
53
+ var requestJson = async (path, options = {}) => {
54
+ const config = getConfig();
55
+ const url = buildUrl(path, config.baseUrl);
56
+ if (options.query) {
57
+ for (const [key, value] of Object.entries(options.query)) {
58
+ if (value === void 0 || value === null) continue;
59
+ url.searchParams.set(key, String(value));
60
+ }
61
+ }
62
+ const method = options.method ?? "POST";
63
+ const hasJsonBody = options.body !== void 0 && method !== "GET" && method !== "DELETE";
64
+ const headers = new Headers();
65
+ headers.set("Accept", "application/json");
66
+ if (hasJsonBody) headers.set("Content-Type", "application/json");
67
+ if (config.apiKey) headers.set("Authorization", `Bearer ${config.apiKey}`);
68
+ if (config.headers) {
69
+ new Headers(config.headers).forEach((value, key) => {
70
+ headers.set(key, value);
71
+ });
72
+ }
73
+ if (options.headers) {
74
+ for (const [key, value] of Object.entries(options.headers)) {
75
+ headers.set(key, value);
76
+ }
77
+ }
78
+ const response = await config.fetch(url.toString(), {
79
+ method,
80
+ headers,
81
+ ...hasJsonBody ? { body: JSON.stringify(options.body) } : {}
82
+ });
83
+ if (!response.ok) {
84
+ throw new Error(
85
+ `Request failed: ${response.status} ${response.statusText}`
86
+ );
87
+ }
88
+ return await response.json();
89
+ };
90
+ var postJson = async (path, body, options = {}) => {
91
+ return requestJson(path, { ...options, method: "POST", body });
92
+ };
93
+ var getJson = async (path, options = {}) => {
94
+ return requestJson(path, { ...options, method: "GET" });
95
+ };
96
+ var deleteJson = async (path, options = {}) => {
97
+ return requestJson(path, { ...options, method: "DELETE" });
98
+ };
99
+
100
+ // src/services/address/province.ts
101
+ var getProvinces = () => {
102
+ return postJson("/api/mitra/province");
103
+ };
104
+
105
+ // src/services/address/city.ts
106
+ var getCities = (provinsiId) => {
107
+ return postJson("/api/mitra/city", {
108
+ provinsi_id: provinsiId
109
+ });
110
+ };
111
+
112
+ // src/services/address/district.ts
113
+ var getDistricts = (kabupatenId) => {
114
+ return postJson("/api/mitra/kecamatan", {
115
+ kabupaten_id: kabupatenId
116
+ });
117
+ };
118
+
119
+ // src/services/address/sub-district.ts
120
+ var getSubDistricts = (kecamatanId) => {
121
+ return postJson("/api/mitra/kelurahan", {
122
+ kecamatan_id: kecamatanId
123
+ });
124
+ };
125
+
126
+ // src/services/address/district-by-name.ts
127
+ var getDistrictsByName = (search) => {
128
+ return postJson(
129
+ "/api/mitra/v2/get_address_by_name",
130
+ {
131
+ search
132
+ }
133
+ );
134
+ };
135
+
136
+ // src/services/address/index.ts
137
+ var address = {
138
+ provinces: getProvinces,
139
+ cities: getCities,
140
+ districts: getDistricts,
141
+ subDistricts: getSubDistricts,
142
+ districtsByName: getDistrictsByName
143
+ };
144
+
145
+ // src/services/coverage-area/pricing-express.ts
146
+ var getPricingExpress = (payload) => {
147
+ return postJson(
148
+ "/api/mitra/v6.1/shipping_price",
149
+ payload
150
+ );
151
+ };
152
+
153
+ // src/services/coverage-area/pricing-instant.ts
154
+ var getPricingInstant = (payload) => {
155
+ return postJson(
156
+ "/api/mitra/v4/instant/pricing",
157
+ payload
158
+ );
159
+ };
160
+
161
+ // src/services/coverage-area/index.ts
162
+ var coverageArea = {
163
+ ...address,
164
+ pricingExpress: getPricingExpress,
165
+ pricingInstant: getPricingInstant
166
+ };
167
+
168
+ // src/services/order/express/cancel.ts
169
+ var cancelExpressOrder = (awb, reason) => requestJson("/api/mitra/v3/cancel_shipment", {
170
+ method: "POST",
171
+ query: {
172
+ awb,
173
+ reason
174
+ }
175
+ });
176
+
177
+ // src/services/order/express/request-pickup-v5.ts
178
+ var requestPickupV5 = (payload) => postJson("/api/mitra/v5/request_pickup", payload);
179
+
180
+ // src/services/order/express/request-pickup-v61.ts
181
+ var requestPickupV61 = (payload) => postJson("/api/mitra/v6.1/request_pickup", payload);
182
+
183
+ // src/services/order/express/track.ts
184
+ var trackExpressOrder = (orderId) => postJson("/api/mitra/tracking", {
185
+ order_id: orderId
186
+ });
187
+
188
+ // src/services/order/instant/cancel.ts
189
+ var cancelInstantOrder = (orderId) => deleteJson(
190
+ `/api/mitra/v4/instant/pickup/void/${orderId}`
191
+ );
192
+
193
+ // src/services/order/instant/create.ts
194
+ var createInstantPickup = (payload) => postJson(
195
+ "/api/mitra/v4/instant/pickup/request",
196
+ payload
197
+ );
198
+
199
+ // src/services/order/instant/find-new-driver.ts
200
+ var findNewInstantDriver = (orderId) => postJson(
201
+ "/api/mitra/v4/instant/pickup/find-new-driver",
202
+ {
203
+ order_id: orderId
204
+ }
205
+ );
206
+
207
+ // src/services/order/instant/track.ts
208
+ var trackInstantOrder = (orderId) => getJson(
209
+ `/api/mitra/v4/instant/tracking/${orderId}`
210
+ );
211
+
212
+ // src/services/order/index.ts
213
+ var order = {
214
+ express: {
215
+ track: trackExpressOrder,
216
+ cancel: cancelExpressOrder,
217
+ requestPickupV5,
218
+ requestPickupV61
219
+ },
220
+ instant: {
221
+ create: createInstantPickup,
222
+ findNewDriver: findNewInstantDriver,
223
+ cancel: cancelInstantOrder,
224
+ track: trackInstantOrder
225
+ }
226
+ };
227
+
228
+ // src/services/pickup/schedules.ts
229
+ var getPickupSchedules = () => postJson("/api/mitra/v2/schedules");
230
+
231
+ // src/services/pickup/index.ts
232
+ var pickup = {
233
+ schedules: getPickupSchedules
234
+ };
235
+
236
+ // src/services/payment/get-payment.ts
237
+ var getPayment = (paymentId) => postJson("/api/mitra/v2/get_payment", {
238
+ payment_id: paymentId
239
+ });
240
+
241
+ // src/services/payment/index.ts
242
+ var payment = {
243
+ getPayment
244
+ };
245
+
246
+ // src/services/courier/detail.ts
247
+ var getCourierDetail = (courierCode) => postJson("/api/mitra/courier_services", {
248
+ courier_code: courierCode
249
+ });
250
+
251
+ // src/services/courier/group.ts
252
+ var getCourierGroups = () => postJson("/api/mitra/couriers_group");
253
+
254
+ // src/services/courier/list.ts
255
+ var listCouriers = () => postJson("/api/mitra/couriers");
256
+
257
+ // src/services/courier/set-whitelist-services.ts
258
+ var setWhitelistServices = (services2) => postJson(
259
+ "/api/mitra/v3/set_whitelist_services",
260
+ {
261
+ services: services2
262
+ }
263
+ );
264
+
265
+ // src/services/courier/index.ts
266
+ var courier = {
267
+ list: listCouriers,
268
+ group: getCourierGroups,
269
+ detail: getCourierDetail,
270
+ setWhitelistServices
271
+ };
272
+
273
+ // src/services/index.ts
274
+ var services = {
275
+ address,
276
+ coverageArea,
277
+ order,
278
+ pickup,
279
+ payment,
280
+ courier
281
+ };
282
+
283
+ // src/adapters/h3.ts
284
+ var defineKiriminAjaPlugin = (options) => {
285
+ return () => {
286
+ const resolved = typeof options === "function" ? options() : options;
287
+ init(resolved);
288
+ };
289
+ };
290
+ var useKiriminAja = (options) => {
291
+ if (options?.apiKey) {
292
+ const current = getConfig();
293
+ init({ ...current, apiKey: options.apiKey });
294
+ }
295
+ return services;
296
+ };
297
+
298
+ exports.KAEnv = KAEnv;
299
+ exports.defineKiriminAjaPlugin = defineKiriminAjaPlugin;
300
+ exports.useKiriminAja = useKiriminAja;
301
+ //# sourceMappingURL=h3.cjs.map
302
+ //# sourceMappingURL=h3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/config/api.ts","../../src/config/client.ts","../../src/http/request.ts","../../src/services/address/province.ts","../../src/services/address/city.ts","../../src/services/address/district.ts","../../src/services/address/sub-district.ts","../../src/services/address/district-by-name.ts","../../src/services/address/index.ts","../../src/services/coverage-area/pricing-express.ts","../../src/services/coverage-area/pricing-instant.ts","../../src/services/coverage-area/index.ts","../../src/services/order/express/cancel.ts","../../src/services/order/express/request-pickup-v5.ts","../../src/services/order/express/request-pickup-v61.ts","../../src/services/order/express/track.ts","../../src/services/order/instant/cancel.ts","../../src/services/order/instant/create.ts","../../src/services/order/instant/find-new-driver.ts","../../src/services/order/instant/track.ts","../../src/services/order/index.ts","../../src/services/pickup/schedules.ts","../../src/services/pickup/index.ts","../../src/services/payment/get-payment.ts","../../src/services/payment/index.ts","../../src/services/courier/detail.ts","../../src/services/courier/group.ts","../../src/services/courier/list.ts","../../src/services/courier/set-whitelist-services.ts","../../src/services/courier/index.ts","../../src/services/index.ts","../../src/adapters/h3.ts"],"names":["KAEnv","services"],"mappings":"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","file":"h3.cjs","sourcesContent":["export enum KAEnv {\n SANDBOX = \"sandbox\",\n PRODUCTION = \"production\",\n}\n\nexport const KA_ENV_URL: Record<KAEnv, string> = {\n [KAEnv.SANDBOX]: \"https://tdev.kiriminaja.com\",\n [KAEnv.PRODUCTION]: \"https://client.kiriminaja.com\",\n};\n","import { KA_ENV_URL, KAEnv } from \"./api.js\";\n\nexport type FetchLike = (\n input: Parameters<typeof fetch>[0],\n init?: Parameters<typeof fetch>[1],\n) => ReturnType<typeof fetch>;\n\nexport type HeadersInitLike =\n | Record<string, string>\n | Array<[string, string]>\n | Parameters<typeof fetch>[1];\n\nexport type InitOptions = {\n env?: KAEnv;\n baseUrl?: string;\n apiKey?: string;\n fetch?: FetchLike;\n headers?: HeadersInitLike;\n};\n\nexport type ClientConfig = {\n env: KAEnv;\n baseUrl: string;\n apiKey?: string;\n fetch: FetchLike;\n headers?: HeadersInitLike;\n};\n\nlet singletonConfig: ClientConfig | undefined;\n\nexport const init = ({\n env = KAEnv.SANDBOX,\n baseUrl,\n apiKey,\n fetch: fetchImpl,\n headers,\n}: InitOptions = {}): ClientConfig => {\n const resolvedFetch = fetchImpl ?? (globalThis as Record<string, unknown>).fetch as FetchLike | undefined;\n if (!resolvedFetch) {\n throw new Error(\n \"Global fetch is not available. Provide Init({ fetch }) or use a runtime with fetch (Node 18+/Bun).\",\n );\n }\n\n const resolvedBaseUrl = baseUrl ?? KA_ENV_URL[env];\n singletonConfig = {\n env,\n baseUrl: resolvedBaseUrl,\n apiKey,\n fetch: resolvedFetch,\n headers,\n };\n\n return singletonConfig;\n};\n\nexport const getConfig = (): ClientConfig => {\n if (!singletonConfig) {\n throw new Error(\n \"KiriminAja.Init() must be called before using any API methods.\",\n );\n }\n return singletonConfig;\n};\n","import { getConfig } from \"../config/client.js\";\n\ntype RequestMethod = \"GET\" | \"POST\" | \"DELETE\";\n\ntype RequestOptions = {\n method?: RequestMethod;\n query?: Record<string, string | number | boolean | undefined | null>;\n body?: unknown;\n headers?: Record<string, string>;\n};\n\nconst buildUrl = (path: string, baseUrl: string) => {\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n return new URL(normalizedPath, baseUrl);\n};\n\nexport const requestJson = async <T>(\n path: string,\n options: RequestOptions = {},\n): Promise<T> => {\n const config = getConfig();\n const url = buildUrl(path, config.baseUrl);\n\n if (options.query) {\n for (const [key, value] of Object.entries(options.query)) {\n if (value === undefined || value === null) continue;\n url.searchParams.set(key, String(value));\n }\n }\n\n const method: RequestMethod = options.method ?? \"POST\";\n const hasJsonBody =\n options.body !== undefined && method !== \"GET\" && method !== \"DELETE\";\n\n const headers = new Headers();\n headers.set(\"Accept\", \"application/json\");\n if (hasJsonBody) headers.set(\"Content-Type\", \"application/json\");\n if (config.apiKey) headers.set(\"Authorization\", `Bearer ${config.apiKey}`);\n\n if (config.headers) {\n new Headers(config.headers as any).forEach((value, key) => {\n headers.set(key, value);\n });\n }\n\n if (options.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n headers.set(key, value);\n }\n }\n\n const response = await config.fetch(url.toString(), {\n method,\n headers,\n ...(hasJsonBody ? { body: JSON.stringify(options.body) } : {}),\n });\n\n if (!response.ok) {\n throw new Error(\n `Request failed: ${response.status} ${response.statusText}`,\n );\n }\n\n return (await response.json()) as T;\n};\n\nexport const postJson = async <T>(\n path: string,\n body?: unknown,\n options: Omit<RequestOptions, \"method\" | \"body\"> = {},\n): Promise<T> => {\n return requestJson<T>(path, { ...options, method: \"POST\", body });\n};\n\nexport const getJson = async <T>(\n path: string,\n options: Omit<RequestOptions, \"method\" | \"body\"> = {},\n): Promise<T> => {\n return requestJson<T>(path, { ...options, method: \"GET\" });\n};\n\nexport const deleteJson = async <T>(\n path: string,\n options: Omit<RequestOptions, \"method\" | \"body\"> = {},\n): Promise<T> => {\n return requestJson<T>(path, { ...options, method: \"DELETE\" });\n};\n","import type { ProvinceListResponse } from \"../../types/coverage-area.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getProvinces = () => {\n return postJson<ProvinceListResponse>(\"/api/mitra/province\");\n};\n","import type { CityListResponse } from \"../../types/coverage-area.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getCities = (provinsiId: number) => {\n return postJson<CityListResponse>(\"/api/mitra/city\", {\n provinsi_id: provinsiId,\n });\n};\n","import type { DistrictListResponse } from \"../../types/coverage-area.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getDistricts = (kabupatenId: number) => {\n return postJson<DistrictListResponse>(\"/api/mitra/kecamatan\", {\n kabupaten_id: kabupatenId,\n });\n};\n","import type { SubDistrictListResponse } from \"../../types/coverage-area.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getSubDistricts = (kecamatanId: number) => {\n return postJson<SubDistrictListResponse>(\"/api/mitra/kelurahan\", {\n kecamatan_id: kecamatanId,\n });\n};\n","import type { DistrictByNameResponse } from \"../../types/coverage-area.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getDistrictsByName = (search: string) => {\n return postJson<DistrictByNameResponse>(\n \"/api/mitra/v2/get_address_by_name\",\n {\n search,\n },\n );\n};\n","import { getProvinces } from \"./province.js\";\nimport { getCities } from \"./city.js\";\nimport { getDistricts } from \"./district.js\";\nimport { getSubDistricts } from \"./sub-district.js\";\nimport { getDistrictsByName } from \"./district-by-name.js\";\n\nexport const address = {\n provinces: getProvinces,\n cities: getCities,\n districts: getDistricts,\n subDistricts: getSubDistricts,\n districtsByName: getDistrictsByName,\n};\n","import type { KAResponse } from \"../../types/api-response.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport type PricingExpressPayload = {\n origin: number;\n destination: number;\n weight: number;\n item_value: string | number;\n insurance: number;\n courier: string[];\n};\n\nexport const getPricingExpress = <T = unknown>(\n payload: PricingExpressPayload,\n) => {\n return postJson<KAResponse<unknown>>(\n \"/api/mitra/v6.1/shipping_price\",\n payload,\n );\n};\n","import type { KAResponse } from \"../../types/api-response.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport type PricingInstantPayload = {\n service: string[];\n item_price: number;\n origin: {\n lat: number;\n long: number;\n address: string;\n };\n destination: {\n lat: number;\n long: number;\n address: string;\n };\n weight: number;\n vehicle: string;\n timezone: string;\n};\n\nexport const getPricingInstant = <T = unknown>(\n payload: PricingInstantPayload,\n) => {\n return postJson<KAResponse<unknown>>(\n \"/api/mitra/v4/instant/pricing\",\n payload,\n );\n};\n","import { getPricingExpress } from \"./pricing-express.js\";\nimport { getPricingInstant } from \"./pricing-instant.js\";\nimport { address } from \"../address/index.js\";\n\nexport const coverageArea = {\n ...address,\n pricingExpress: getPricingExpress,\n pricingInstant: getPricingInstant,\n};\n","import type { CancelExpressOrderResponse } from \"../../../types/order.responses.js\";\nimport { requestJson } from \"../../../http/request.js\";\n\nexport const cancelExpressOrder = (awb: string, reason: string) =>\n requestJson<CancelExpressOrderResponse>(\"/api/mitra/v3/cancel_shipment\", {\n method: \"POST\",\n query: {\n awb,\n reason,\n },\n });\n","import type { KAResponse } from \"../../../types/api-response.js\";\nimport { postJson } from \"../../../http/request.js\";\n\nexport const requestPickupV5 = (payload: unknown) =>\n postJson<KAResponse<unknown>>(\"/api/mitra/v5/request_pickup\", payload);\n","import type { KAResponse } from \"../../../types/api-response.js\";\nimport { postJson } from \"../../../http/request.js\";\n\nexport const requestPickupV61 = (payload: unknown) =>\n postJson<KAResponse<unknown>>(\"/api/mitra/v6.1/request_pickup\", payload);\n","import type { ExpressTrackingResponse } from \"../../../types/order.responses.js\";\nimport { postJson } from \"../../../http/request.js\";\n\nexport const trackExpressOrder = (orderId: string) =>\n postJson<ExpressTrackingResponse>(\"/api/mitra/tracking\", {\n order_id: orderId,\n });\n","import type { CancelInstantOrderResponse } from \"../../../types/order.responses.js\";\nimport { deleteJson } from \"../../../http/request.js\";\n\nexport const cancelInstantOrder = (orderId: string) =>\n deleteJson<CancelInstantOrderResponse>(\n `/api/mitra/v4/instant/pickup/void/${orderId}`,\n );\n","import type { CreateInstantPickupResponse } from \"../../../types/order.responses.js\";\nimport { postJson } from \"../../../http/request.js\";\n\nexport const createInstantPickup = (payload: unknown) =>\n postJson<CreateInstantPickupResponse>(\n \"/api/mitra/v4/instant/pickup/request\",\n payload,\n );\n","import type { FindNewInstantDriverResponse } from \"../../../types/order.responses.js\";\nimport { postJson } from \"../../../http/request.js\";\n\nexport const findNewInstantDriver = (orderId: string) =>\n postJson<FindNewInstantDriverResponse>(\n \"/api/mitra/v4/instant/pickup/find-new-driver\",\n {\n order_id: orderId,\n },\n );\n","import type { InstantTrackingResponse } from \"../../../types/order.responses.js\";\nimport { getJson } from \"../../../http/request.js\";\n\nexport const trackInstantOrder = (orderId: string) =>\n getJson<InstantTrackingResponse>(\n `/api/mitra/v4/instant/tracking/${orderId}`,\n );\n","import {\n cancelExpressOrder,\n requestPickupV5,\n requestPickupV61,\n trackExpressOrder,\n} from \"./express.js\";\nimport {\n cancelInstantOrder,\n createInstantPickup,\n findNewInstantDriver,\n trackInstantOrder,\n} from \"./instant.js\";\n\nexport const order = {\n express: {\n track: trackExpressOrder,\n cancel: cancelExpressOrder,\n requestPickupV5,\n requestPickupV61,\n },\n instant: {\n create: createInstantPickup,\n findNewDriver: findNewInstantDriver,\n cancel: cancelInstantOrder,\n track: trackInstantOrder,\n },\n};\n","import type { PickupSchedulesResponse } from \"../../types/pickup.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getPickupSchedules = () =>\n postJson<PickupSchedulesResponse>(\"/api/mitra/v2/schedules\");\n","import { getPickupSchedules } from \"./schedules.js\";\n\nexport const pickup = {\n schedules: getPickupSchedules,\n};\n","import type { GetPaymentResponse } from \"../../types/payment.responses.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getPayment = (paymentId: string) =>\n postJson<GetPaymentResponse>(\"/api/mitra/v2/get_payment\", {\n payment_id: paymentId,\n });\n","import { getPayment } from \"./get-payment.js\";\n\nexport const payment = {\n getPayment,\n};\n","import type { CourierDetailResponse } from \"../../types/courier.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getCourierDetail = (courierCode: string) =>\n postJson<CourierDetailResponse>(\"/api/mitra/courier_services\", {\n courier_code: courierCode,\n });\n","import type { CourierGroupResponse } from \"../../types/courier.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const getCourierGroups = () =>\n postJson<CourierGroupResponse>(\"/api/mitra/couriers_group\");\n","import type { CourierListResponse } from \"../../types/courier.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const listCouriers = () =>\n postJson<CourierListResponse>(\"/api/mitra/couriers\");\n","import type { SetCourierPreferenceResponse } from \"../../types/courier.js\";\nimport { postJson } from \"../../http/request.js\";\n\nexport const setWhitelistServices = (services: string[]) =>\n postJson<SetCourierPreferenceResponse>(\n \"/api/mitra/v3/set_whitelist_services\",\n {\n services,\n },\n );\n","import { getCourierDetail } from \"./detail.js\";\nimport { getCourierGroups } from \"./group.js\";\nimport { listCouriers } from \"./list.js\";\nimport { setWhitelistServices } from \"./set-whitelist-services.js\";\n\nexport const courier = {\n list: listCouriers,\n group: getCourierGroups,\n detail: getCourierDetail,\n setWhitelistServices,\n};\n","import { address } from \"./address/index.js\";\nimport { coverageArea } from \"./coverage-area/index.js\";\nimport { order } from \"./order/index.js\";\nimport { pickup } from \"./pickup/index.js\";\nimport { payment } from \"./payment/index.js\";\nimport { courier } from \"./courier/index.js\";\n\nexport const services = {\n address,\n coverageArea,\n order,\n pickup,\n payment,\n courier,\n};\n","import { init, getConfig, type InitOptions } from \"../config/client.js\";\nimport { services } from \"../services/index.js\";\nimport { KAEnv } from \"../config/api.js\";\n\nexport { KAEnv };\n\n/**\n * Creates a Nitro/h3 server plugin that initializes the KiriminAja SDK.\n *\n * Accepts either a plain options object or a factory function — use the\n * factory form when you need to read Nuxt runtime config lazily (i.e. inside\n * the plugin callback where `useRuntimeConfig()` is available).\n *\n * @example Plain options (shared API key)\n * ```ts\n * // server/plugins/kiriminaja.ts\n * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'\n *\n * export default defineKiriminAjaPlugin({\n * apiKey: process.env.KIRIMINAJA_API_KEY,\n * env: KAEnv.PRODUCTION,\n * })\n * ```\n *\n * @example With Nuxt runtime config\n * ```ts\n * // server/plugins/kiriminaja.ts\n * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'\n * import { useRuntimeConfig } from '#imports'\n *\n * export default defineKiriminAjaPlugin(() => ({\n * apiKey: useRuntimeConfig().kiriminajaApiKey,\n * env: KAEnv.PRODUCTION,\n * }))\n * ```\n */\nexport const defineKiriminAjaPlugin = (\n options: InitOptions | (() => InitOptions),\n) => {\n return () => {\n const resolved = typeof options === \"function\" ? options() : options;\n init(resolved);\n };\n};\n\nexport type UseKiriminAjaOptions = {\n apiKey?: string;\n};\n\n/**\n * Returns the KiriminAja service methods for use inside Nitro/h3 event\n * handlers or Nuxt server routes.\n *\n * - **No arguments** — uses the API key configured via `defineKiriminAjaPlugin`.\n * - **`{ apiKey }`** — overrides the Authorization header for every service\n * call made on the returned object. Safe for concurrent requests; each call\n * runs in its own `AsyncLocalStorage` context so keys never bleed across\n * requests.\n *\n * The SDK **must** have been initialized (via `defineKiriminAjaPlugin`) before\n * any service method is called.\n *\n * @example Shared API key (from plugin)\n * ```ts\n * // server/api/rates.post.ts\n * import { useKiriminAja } from 'kiriminaja/adapters/h3'\n *\n * export default defineEventHandler(async (event) => {\n * const { coverageArea } = useKiriminAja()\n * const body = await readBody(event)\n * return coverageArea.pricingExpress(body)\n * })\n * ```\n *\n * @example Per-user API key\n * ```ts\n * // server/api/rates.post.ts\n * import { useKiriminAja } from 'kiriminaja/adapters/h3'\n *\n * export default defineEventHandler(async (event) => {\n * const user = await requireAuthUser(event)\n * const body = await readBody(event)\n * const { coverageArea } = useKiriminAja({ apiKey: user.kiriminajaApiKey })\n * return coverageArea.pricingExpress(body)\n * })\n * ```\n */\nexport const useKiriminAja = (options?: UseKiriminAjaOptions) => {\n if (options?.apiKey) {\n const current = getConfig();\n init({ ...current, apiKey: options.apiKey });\n }\n return services;\n};\n"]}
@@ -8,7 +8,7 @@ export { KAEnv };
8
8
  * factory form when you need to read Nuxt runtime config lazily (i.e. inside
9
9
  * the plugin callback where `useRuntimeConfig()` is available).
10
10
  *
11
- * @example Plain options
11
+ * @example Plain options (shared API key)
12
12
  * ```ts
13
13
  * // server/plugins/kiriminaja.ts
14
14
  * import { defineKiriminAjaPlugin, KAEnv } from 'kiriminaja/adapters/h3'
@@ -32,14 +32,23 @@ export { KAEnv };
32
32
  * ```
33
33
  */
34
34
  export declare const defineKiriminAjaPlugin: (options: InitOptions | (() => InitOptions)) => () => void;
35
+ export type UseKiriminAjaOptions = {
36
+ apiKey?: string;
37
+ };
35
38
  /**
36
39
  * Returns the KiriminAja service methods for use inside Nitro/h3 event
37
40
  * handlers or Nuxt server routes.
38
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
+ *
39
48
  * The SDK **must** have been initialized (via `defineKiriminAjaPlugin`) before
40
49
  * any service method is called.
41
50
  *
42
- * @example
51
+ * @example Shared API key (from plugin)
43
52
  * ```ts
44
53
  * // server/api/rates.post.ts
45
54
  * import { useKiriminAja } from 'kiriminaja/adapters/h3'
@@ -50,8 +59,21 @@ export declare const defineKiriminAjaPlugin: (options: InitOptions | (() => Init
50
59
  * return coverageArea.pricingExpress(body)
51
60
  * })
52
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
+ * ```
53
75
  */
54
- export declare const useKiriminAja: () => {
76
+ export declare const useKiriminAja: (options?: UseKiriminAjaOptions) => {
55
77
  address: {
56
78
  provinces: () => Promise<import("../types/coverage-area.responses.js").ProvinceListResponse>;
57
79
  cities: (provinsiId: number) => Promise<import("../types/coverage-area.responses.js").CityListResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"h3.d.ts","sourceRoot":"","sources":["../../src/adapters/h3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7D,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;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiB,CAAC"}
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"}