kiriminaja 0.1.6 → 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 (152) hide show
  1. package/dist/adapters/h3.cjs +302 -0
  2. package/dist/adapters/h3.cjs.map +1 -0
  3. package/dist/adapters/h3.mjs +298 -0
  4. package/dist/adapters/h3.mjs.map +1 -0
  5. package/dist/config/client.d.ts +1 -1
  6. package/dist/config/client.d.ts.map +1 -1
  7. package/dist/index.cjs +296 -0
  8. package/dist/index.cjs.map +1 -0
  9. package/dist/index.d.ts +27 -27
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.mjs +291 -0
  12. package/dist/index.mjs.map +1 -0
  13. package/dist/services/address/city.d.ts +1 -1
  14. package/dist/services/address/city.d.ts.map +1 -1
  15. package/dist/services/address/district-by-name.d.ts +1 -1
  16. package/dist/services/address/district-by-name.d.ts.map +1 -1
  17. package/dist/services/address/district.d.ts +1 -1
  18. package/dist/services/address/district.d.ts.map +1 -1
  19. package/dist/services/address/index.d.ts +5 -5
  20. package/dist/services/address/province.d.ts +1 -1
  21. package/dist/services/address/province.d.ts.map +1 -1
  22. package/dist/services/address/sub-district.d.ts +1 -1
  23. package/dist/services/address/sub-district.d.ts.map +1 -1
  24. package/dist/services/courier/detail.d.ts +1 -1
  25. package/dist/services/courier/detail.d.ts.map +1 -1
  26. package/dist/services/courier/group.d.ts +1 -1
  27. package/dist/services/courier/group.d.ts.map +1 -1
  28. package/dist/services/courier/index.d.ts +4 -4
  29. package/dist/services/courier/list.d.ts +1 -1
  30. package/dist/services/courier/list.d.ts.map +1 -1
  31. package/dist/services/courier/set-whitelist-services.d.ts +1 -1
  32. package/dist/services/courier/set-whitelist-services.d.ts.map +1 -1
  33. package/dist/services/coverage-area/index.d.ts +7 -7
  34. package/dist/services/coverage-area/pricing-express.d.ts +1 -1
  35. package/dist/services/coverage-area/pricing-express.d.ts.map +1 -1
  36. package/dist/services/coverage-area/pricing-instant.d.ts +1 -1
  37. package/dist/services/coverage-area/pricing-instant.d.ts.map +1 -1
  38. package/dist/services/index.d.ts +24 -24
  39. package/dist/services/order/express/cancel.d.ts +1 -1
  40. package/dist/services/order/express/cancel.d.ts.map +1 -1
  41. package/dist/services/order/express/request-pickup-v5.d.ts +1 -1
  42. package/dist/services/order/express/request-pickup-v5.d.ts.map +1 -1
  43. package/dist/services/order/express/request-pickup-v61.d.ts +1 -1
  44. package/dist/services/order/express/request-pickup-v61.d.ts.map +1 -1
  45. package/dist/services/order/express/track.d.ts +1 -1
  46. package/dist/services/order/express/track.d.ts.map +1 -1
  47. package/dist/services/order/express.d.ts +4 -4
  48. package/dist/services/order/express.d.ts.map +1 -1
  49. package/dist/services/order/index.d.ts +6 -6
  50. package/dist/services/order/instant/cancel.d.ts +1 -1
  51. package/dist/services/order/instant/cancel.d.ts.map +1 -1
  52. package/dist/services/order/instant/track.d.ts +1 -1
  53. package/dist/services/order/instant/track.d.ts.map +1 -1
  54. package/dist/services/order/instant.d.ts +4 -4
  55. package/dist/services/order/instant.d.ts.map +1 -1
  56. package/dist/services/payment/get-payment.d.ts +1 -1
  57. package/dist/services/payment/get-payment.d.ts.map +1 -1
  58. package/dist/services/payment/index.d.ts +1 -1
  59. package/dist/services/pickup/index.d.ts +1 -1
  60. package/dist/services/pickup/schedules.d.ts +1 -1
  61. package/dist/services/pickup/schedules.d.ts.map +1 -1
  62. package/dist/types/address.d.ts +7 -0
  63. package/dist/types/address.d.ts.map +1 -0
  64. package/dist/types/api-response.d.ts +12 -0
  65. package/dist/types/api-response.d.ts.map +1 -0
  66. package/dist/types/courier.d.ts +39 -0
  67. package/dist/types/courier.d.ts.map +1 -0
  68. package/dist/types/coverage-area.d.ts +22 -0
  69. package/dist/types/coverage-area.d.ts.map +1 -0
  70. package/dist/types/coverage-area.responses.d.ts +19 -0
  71. package/dist/types/coverage-area.responses.d.ts.map +1 -0
  72. package/dist/types/order.responses.d.ts +146 -0
  73. package/dist/types/order.responses.d.ts.map +1 -0
  74. package/dist/types/payment.responses.d.ts +46 -0
  75. package/dist/types/payment.responses.d.ts.map +1 -0
  76. package/dist/types/pickup.responses.d.ts +11 -0
  77. package/dist/types/pickup.responses.d.ts.map +1 -0
  78. package/dist/types/region.d.ts +5 -0
  79. package/dist/types/region.d.ts.map +1 -0
  80. package/dist/types/response.d.ts +7 -0
  81. package/dist/types/response.d.ts.map +1 -0
  82. package/package.json +13 -8
  83. package/dist/adapters/h3.js +0 -86
  84. package/dist/adapters/h3.js.map +0 -1
  85. package/dist/config/api.js +0 -10
  86. package/dist/config/api.js.map +0 -1
  87. package/dist/config/client.js +0 -24
  88. package/dist/config/client.js.map +0 -1
  89. package/dist/http/request.js +0 -53
  90. package/dist/http/request.js.map +0 -1
  91. package/dist/index.js +0 -11
  92. package/dist/index.js.map +0 -1
  93. package/dist/services/address/city.js +0 -7
  94. package/dist/services/address/city.js.map +0 -1
  95. package/dist/services/address/district-by-name.js +0 -7
  96. package/dist/services/address/district-by-name.js.map +0 -1
  97. package/dist/services/address/district.js +0 -7
  98. package/dist/services/address/district.js.map +0 -1
  99. package/dist/services/address/index.js +0 -13
  100. package/dist/services/address/index.js.map +0 -1
  101. package/dist/services/address/province.js +0 -5
  102. package/dist/services/address/province.js.map +0 -1
  103. package/dist/services/address/sub-district.js +0 -7
  104. package/dist/services/address/sub-district.js.map +0 -1
  105. package/dist/services/courier/detail.js +0 -5
  106. package/dist/services/courier/detail.js.map +0 -1
  107. package/dist/services/courier/group.js +0 -3
  108. package/dist/services/courier/group.js.map +0 -1
  109. package/dist/services/courier/index.js +0 -11
  110. package/dist/services/courier/index.js.map +0 -1
  111. package/dist/services/courier/list.js +0 -3
  112. package/dist/services/courier/list.js.map +0 -1
  113. package/dist/services/courier/set-whitelist-services.js +0 -5
  114. package/dist/services/courier/set-whitelist-services.js.map +0 -1
  115. package/dist/services/coverage-area/index.js +0 -9
  116. package/dist/services/coverage-area/index.js.map +0 -1
  117. package/dist/services/coverage-area/pricing-express.js +0 -5
  118. package/dist/services/coverage-area/pricing-express.js.map +0 -1
  119. package/dist/services/coverage-area/pricing-instant.js +0 -5
  120. package/dist/services/coverage-area/pricing-instant.js.map +0 -1
  121. package/dist/services/index.js +0 -15
  122. package/dist/services/index.js.map +0 -1
  123. package/dist/services/order/express/cancel.js +0 -9
  124. package/dist/services/order/express/cancel.js.map +0 -1
  125. package/dist/services/order/express/request-pickup-v5.js +0 -3
  126. package/dist/services/order/express/request-pickup-v5.js.map +0 -1
  127. package/dist/services/order/express/request-pickup-v61.js +0 -3
  128. package/dist/services/order/express/request-pickup-v61.js.map +0 -1
  129. package/dist/services/order/express/track.js +0 -5
  130. package/dist/services/order/express/track.js.map +0 -1
  131. package/dist/services/order/express.js +0 -5
  132. package/dist/services/order/express.js.map +0 -1
  133. package/dist/services/order/index.js +0 -17
  134. package/dist/services/order/index.js.map +0 -1
  135. package/dist/services/order/instant/cancel.js +0 -3
  136. package/dist/services/order/instant/cancel.js.map +0 -1
  137. package/dist/services/order/instant/create.js +0 -3
  138. package/dist/services/order/instant/create.js.map +0 -1
  139. package/dist/services/order/instant/find-new-driver.js +0 -5
  140. package/dist/services/order/instant/find-new-driver.js.map +0 -1
  141. package/dist/services/order/instant/track.js +0 -3
  142. package/dist/services/order/instant/track.js.map +0 -1
  143. package/dist/services/order/instant.js +0 -5
  144. package/dist/services/order/instant.js.map +0 -1
  145. package/dist/services/payment/get-payment.js +0 -5
  146. package/dist/services/payment/get-payment.js.map +0 -1
  147. package/dist/services/payment/index.js +0 -5
  148. package/dist/services/payment/index.js.map +0 -1
  149. package/dist/services/pickup/index.js +0 -5
  150. package/dist/services/pickup/index.js.map +0 -1
  151. package/dist/services/pickup/schedules.js +0 -3
  152. package/dist/services/pickup/schedules.js.map +0 -1
@@ -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"]}
@@ -0,0 +1,298 @@
1
+ // src/config/api.ts
2
+ var KAEnv = /* @__PURE__ */ ((KAEnv2) => {
3
+ KAEnv2["SANDBOX"] = "sandbox";
4
+ KAEnv2["PRODUCTION"] = "production";
5
+ return KAEnv2;
6
+ })(KAEnv || {});
7
+ var KA_ENV_URL = {
8
+ ["sandbox" /* SANDBOX */]: "https://tdev.kiriminaja.com",
9
+ ["production" /* PRODUCTION */]: "https://client.kiriminaja.com"
10
+ };
11
+
12
+ // src/config/client.ts
13
+ var singletonConfig;
14
+ var init = ({
15
+ env = "sandbox" /* SANDBOX */,
16
+ baseUrl,
17
+ apiKey,
18
+ fetch: fetchImpl,
19
+ headers
20
+ } = {}) => {
21
+ const resolvedFetch = fetchImpl ?? globalThis.fetch;
22
+ if (!resolvedFetch) {
23
+ throw new Error(
24
+ "Global fetch is not available. Provide Init({ fetch }) or use a runtime with fetch (Node 18+/Bun)."
25
+ );
26
+ }
27
+ const resolvedBaseUrl = baseUrl ?? KA_ENV_URL[env];
28
+ singletonConfig = {
29
+ env,
30
+ baseUrl: resolvedBaseUrl,
31
+ apiKey,
32
+ fetch: resolvedFetch,
33
+ headers
34
+ };
35
+ return singletonConfig;
36
+ };
37
+ var getConfig = () => {
38
+ if (!singletonConfig) {
39
+ throw new Error(
40
+ "KiriminAja.Init() must be called before using any API methods."
41
+ );
42
+ }
43
+ return singletonConfig;
44
+ };
45
+
46
+ // src/http/request.ts
47
+ var buildUrl = (path, baseUrl) => {
48
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
49
+ return new URL(normalizedPath, baseUrl);
50
+ };
51
+ var requestJson = async (path, options = {}) => {
52
+ const config = getConfig();
53
+ const url = buildUrl(path, config.baseUrl);
54
+ if (options.query) {
55
+ for (const [key, value] of Object.entries(options.query)) {
56
+ if (value === void 0 || value === null) continue;
57
+ url.searchParams.set(key, String(value));
58
+ }
59
+ }
60
+ const method = options.method ?? "POST";
61
+ const hasJsonBody = options.body !== void 0 && method !== "GET" && method !== "DELETE";
62
+ const headers = new Headers();
63
+ headers.set("Accept", "application/json");
64
+ if (hasJsonBody) headers.set("Content-Type", "application/json");
65
+ if (config.apiKey) headers.set("Authorization", `Bearer ${config.apiKey}`);
66
+ if (config.headers) {
67
+ new Headers(config.headers).forEach((value, key) => {
68
+ headers.set(key, value);
69
+ });
70
+ }
71
+ if (options.headers) {
72
+ for (const [key, value] of Object.entries(options.headers)) {
73
+ headers.set(key, value);
74
+ }
75
+ }
76
+ const response = await config.fetch(url.toString(), {
77
+ method,
78
+ headers,
79
+ ...hasJsonBody ? { body: JSON.stringify(options.body) } : {}
80
+ });
81
+ if (!response.ok) {
82
+ throw new Error(
83
+ `Request failed: ${response.status} ${response.statusText}`
84
+ );
85
+ }
86
+ return await response.json();
87
+ };
88
+ var postJson = async (path, body, options = {}) => {
89
+ return requestJson(path, { ...options, method: "POST", body });
90
+ };
91
+ var getJson = async (path, options = {}) => {
92
+ return requestJson(path, { ...options, method: "GET" });
93
+ };
94
+ var deleteJson = async (path, options = {}) => {
95
+ return requestJson(path, { ...options, method: "DELETE" });
96
+ };
97
+
98
+ // src/services/address/province.ts
99
+ var getProvinces = () => {
100
+ return postJson("/api/mitra/province");
101
+ };
102
+
103
+ // src/services/address/city.ts
104
+ var getCities = (provinsiId) => {
105
+ return postJson("/api/mitra/city", {
106
+ provinsi_id: provinsiId
107
+ });
108
+ };
109
+
110
+ // src/services/address/district.ts
111
+ var getDistricts = (kabupatenId) => {
112
+ return postJson("/api/mitra/kecamatan", {
113
+ kabupaten_id: kabupatenId
114
+ });
115
+ };
116
+
117
+ // src/services/address/sub-district.ts
118
+ var getSubDistricts = (kecamatanId) => {
119
+ return postJson("/api/mitra/kelurahan", {
120
+ kecamatan_id: kecamatanId
121
+ });
122
+ };
123
+
124
+ // src/services/address/district-by-name.ts
125
+ var getDistrictsByName = (search) => {
126
+ return postJson(
127
+ "/api/mitra/v2/get_address_by_name",
128
+ {
129
+ search
130
+ }
131
+ );
132
+ };
133
+
134
+ // src/services/address/index.ts
135
+ var address = {
136
+ provinces: getProvinces,
137
+ cities: getCities,
138
+ districts: getDistricts,
139
+ subDistricts: getSubDistricts,
140
+ districtsByName: getDistrictsByName
141
+ };
142
+
143
+ // src/services/coverage-area/pricing-express.ts
144
+ var getPricingExpress = (payload) => {
145
+ return postJson(
146
+ "/api/mitra/v6.1/shipping_price",
147
+ payload
148
+ );
149
+ };
150
+
151
+ // src/services/coverage-area/pricing-instant.ts
152
+ var getPricingInstant = (payload) => {
153
+ return postJson(
154
+ "/api/mitra/v4/instant/pricing",
155
+ payload
156
+ );
157
+ };
158
+
159
+ // src/services/coverage-area/index.ts
160
+ var coverageArea = {
161
+ ...address,
162
+ pricingExpress: getPricingExpress,
163
+ pricingInstant: getPricingInstant
164
+ };
165
+
166
+ // src/services/order/express/cancel.ts
167
+ var cancelExpressOrder = (awb, reason) => requestJson("/api/mitra/v3/cancel_shipment", {
168
+ method: "POST",
169
+ query: {
170
+ awb,
171
+ reason
172
+ }
173
+ });
174
+
175
+ // src/services/order/express/request-pickup-v5.ts
176
+ var requestPickupV5 = (payload) => postJson("/api/mitra/v5/request_pickup", payload);
177
+
178
+ // src/services/order/express/request-pickup-v61.ts
179
+ var requestPickupV61 = (payload) => postJson("/api/mitra/v6.1/request_pickup", payload);
180
+
181
+ // src/services/order/express/track.ts
182
+ var trackExpressOrder = (orderId) => postJson("/api/mitra/tracking", {
183
+ order_id: orderId
184
+ });
185
+
186
+ // src/services/order/instant/cancel.ts
187
+ var cancelInstantOrder = (orderId) => deleteJson(
188
+ `/api/mitra/v4/instant/pickup/void/${orderId}`
189
+ );
190
+
191
+ // src/services/order/instant/create.ts
192
+ var createInstantPickup = (payload) => postJson(
193
+ "/api/mitra/v4/instant/pickup/request",
194
+ payload
195
+ );
196
+
197
+ // src/services/order/instant/find-new-driver.ts
198
+ var findNewInstantDriver = (orderId) => postJson(
199
+ "/api/mitra/v4/instant/pickup/find-new-driver",
200
+ {
201
+ order_id: orderId
202
+ }
203
+ );
204
+
205
+ // src/services/order/instant/track.ts
206
+ var trackInstantOrder = (orderId) => getJson(
207
+ `/api/mitra/v4/instant/tracking/${orderId}`
208
+ );
209
+
210
+ // src/services/order/index.ts
211
+ var order = {
212
+ express: {
213
+ track: trackExpressOrder,
214
+ cancel: cancelExpressOrder,
215
+ requestPickupV5,
216
+ requestPickupV61
217
+ },
218
+ instant: {
219
+ create: createInstantPickup,
220
+ findNewDriver: findNewInstantDriver,
221
+ cancel: cancelInstantOrder,
222
+ track: trackInstantOrder
223
+ }
224
+ };
225
+
226
+ // src/services/pickup/schedules.ts
227
+ var getPickupSchedules = () => postJson("/api/mitra/v2/schedules");
228
+
229
+ // src/services/pickup/index.ts
230
+ var pickup = {
231
+ schedules: getPickupSchedules
232
+ };
233
+
234
+ // src/services/payment/get-payment.ts
235
+ var getPayment = (paymentId) => postJson("/api/mitra/v2/get_payment", {
236
+ payment_id: paymentId
237
+ });
238
+
239
+ // src/services/payment/index.ts
240
+ var payment = {
241
+ getPayment
242
+ };
243
+
244
+ // src/services/courier/detail.ts
245
+ var getCourierDetail = (courierCode) => postJson("/api/mitra/courier_services", {
246
+ courier_code: courierCode
247
+ });
248
+
249
+ // src/services/courier/group.ts
250
+ var getCourierGroups = () => postJson("/api/mitra/couriers_group");
251
+
252
+ // src/services/courier/list.ts
253
+ var listCouriers = () => postJson("/api/mitra/couriers");
254
+
255
+ // src/services/courier/set-whitelist-services.ts
256
+ var setWhitelistServices = (services2) => postJson(
257
+ "/api/mitra/v3/set_whitelist_services",
258
+ {
259
+ services: services2
260
+ }
261
+ );
262
+
263
+ // src/services/courier/index.ts
264
+ var courier = {
265
+ list: listCouriers,
266
+ group: getCourierGroups,
267
+ detail: getCourierDetail,
268
+ setWhitelistServices
269
+ };
270
+
271
+ // src/services/index.ts
272
+ var services = {
273
+ address,
274
+ coverageArea,
275
+ order,
276
+ pickup,
277
+ payment,
278
+ courier
279
+ };
280
+
281
+ // src/adapters/h3.ts
282
+ var defineKiriminAjaPlugin = (options) => {
283
+ return () => {
284
+ const resolved = typeof options === "function" ? options() : options;
285
+ init(resolved);
286
+ };
287
+ };
288
+ var useKiriminAja = (options) => {
289
+ if (options?.apiKey) {
290
+ const current = getConfig();
291
+ init({ ...current, apiKey: options.apiKey });
292
+ }
293
+ return services;
294
+ };
295
+
296
+ export { KAEnv, defineKiriminAjaPlugin, useKiriminAja };
297
+ //# sourceMappingURL=h3.mjs.map
298
+ //# sourceMappingURL=h3.mjs.map