@randajan/api-kit 1.1.1 → 2.0.0
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/LICENSE +22 -0
- package/README.md +36 -9
- package/dist/cjs/client/index.cjs +167 -70
- package/dist/cjs/client/index.cjs.map +4 -4
- package/dist/cjs/index.cjs +172 -71
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/server/index.cjs +30 -13
- package/dist/cjs/server/index.cjs.map +2 -2
- package/dist/esm/{chunk-7BZD3LXK.js → chunk-72RXZFQZ.js} +7 -3
- package/dist/esm/{chunk-7BZD3LXK.js.map → chunk-72RXZFQZ.js.map} +2 -2
- package/dist/esm/{chunk-SH4YE24H.js → chunk-7K2N7A5V.js} +33 -13
- package/dist/esm/chunk-7K2N7A5V.js.map +7 -0
- package/dist/esm/chunk-CYUBH2V3.js +280 -0
- package/dist/esm/chunk-CYUBH2V3.js.map +7 -0
- package/dist/esm/client/index.mjs +2 -2
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/server/index.mjs +2 -2
- package/package.json +3 -2
- package/dist/esm/chunk-NBHSDY72.js +0 -195
- package/dist/esm/chunk-NBHSDY72.js.map +0 -7
- package/dist/esm/chunk-SH4YE24H.js.map +0 -7
package/dist/cjs/index.cjs
CHANGED
|
@@ -28,7 +28,7 @@ __export(index_exports, {
|
|
|
28
28
|
module.exports = __toCommonJS(index_exports);
|
|
29
29
|
|
|
30
30
|
// <define:__slib_info>
|
|
31
|
-
var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.
|
|
31
|
+
var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.2.0", author: { name: "Jan Randa", email: "jnranda@gmail.com", url: "https://www.linkedin.com/in/randajan/" }, env: "development", mode: "web", port: 3e3, dir: { root: "C:\\dev\\lib\\api-kit", dist: "dist" } };
|
|
32
32
|
|
|
33
33
|
// src/arc/class/ApiError.js
|
|
34
34
|
var import_props = require("@randajan/props");
|
|
@@ -59,32 +59,44 @@ var isErr = (any) => any instanceof Error;
|
|
|
59
59
|
|
|
60
60
|
// src/arc/class/ApiError.js
|
|
61
61
|
var ApiError = class _ApiError extends Error {
|
|
62
|
-
static create(code, message) {
|
|
63
|
-
return new _ApiError(code, message);
|
|
62
|
+
static create(code, message, httpStatusCode = 400, remoteStack = void 0) {
|
|
63
|
+
return new _ApiError(code, message, httpStatusCode, remoteStack);
|
|
64
64
|
}
|
|
65
65
|
static is(any) {
|
|
66
66
|
return any instanceof _ApiError;
|
|
67
67
|
}
|
|
68
|
-
static to(code, any) {
|
|
68
|
+
static to(code, any, httpStatusCode = 500) {
|
|
69
69
|
if (_ApiError.is(any)) {
|
|
70
70
|
return any;
|
|
71
71
|
}
|
|
72
72
|
const msg = toStr(any?.message || any) || "Unknown";
|
|
73
|
-
const apierr = _ApiError.create(code, msg);
|
|
74
|
-
return (0, import_props.solid)(apierr, "stack", any
|
|
73
|
+
const apierr = _ApiError.create(code, msg, httpStatusCode);
|
|
74
|
+
return (0, import_props.solid)(apierr, "stack", any?.stack);
|
|
75
75
|
}
|
|
76
|
-
constructor(code, message) {
|
|
76
|
+
constructor(code, message, httpStatusCode = 400, remoteStack = void 0) {
|
|
77
77
|
super(message);
|
|
78
78
|
(0, import_props.safe)(this, {}, "code", (t, f) => mrgStr(t, f, "."));
|
|
79
|
+
(0, import_props.solid)(this, "httpStatusCode", httpStatusCode ?? 400, true);
|
|
80
|
+
(0, import_props.solid)(this, "remoteStack", remoteStack);
|
|
79
81
|
this.rise(code);
|
|
80
82
|
}
|
|
81
83
|
rise(code = 0) {
|
|
82
84
|
this.code = code || 0;
|
|
83
85
|
return this;
|
|
84
86
|
}
|
|
87
|
+
exposeStack(exposeStack = true) {
|
|
88
|
+
(0, import_props.solid)(this, "_exposeStack", !!exposeStack, false, true);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
85
91
|
toJSON() {
|
|
86
|
-
const { message } = this;
|
|
87
|
-
|
|
92
|
+
const { message, stack, _exposeStack } = this;
|
|
93
|
+
const body = { message, ...this };
|
|
94
|
+
if (_exposeStack) {
|
|
95
|
+
body.stack = stack;
|
|
96
|
+
} else {
|
|
97
|
+
delete body.stack;
|
|
98
|
+
}
|
|
99
|
+
return body;
|
|
88
100
|
}
|
|
89
101
|
toString() {
|
|
90
102
|
const { message, code } = this;
|
|
@@ -150,7 +162,9 @@ var endTime = (body, startAt) => {
|
|
|
150
162
|
body.time = (0, import_props2.solids)({}, time);
|
|
151
163
|
};
|
|
152
164
|
var end = (body, opt) => {
|
|
153
|
-
|
|
165
|
+
const hasError = !!body.error;
|
|
166
|
+
endTime(body, opt.startAt);
|
|
167
|
+
if (!hasError) {
|
|
154
168
|
if (isFn(opt.onOk)) {
|
|
155
169
|
opt.onOk(body, opt);
|
|
156
170
|
}
|
|
@@ -158,11 +172,10 @@ var end = (body, opt) => {
|
|
|
158
172
|
if (isFn(opt.onError)) {
|
|
159
173
|
opt.onError(body, opt);
|
|
160
174
|
}
|
|
161
|
-
if (opt.throwError) {
|
|
175
|
+
if (opt.throwError || opt.resultOnly) {
|
|
162
176
|
throw body.error;
|
|
163
177
|
}
|
|
164
178
|
}
|
|
165
|
-
endTime(body, opt.startAt);
|
|
166
179
|
return opt.resultOnly ? body.result : Object.freeze(body);
|
|
167
180
|
};
|
|
168
181
|
var diffVersion = (version) => {
|
|
@@ -211,8 +224,12 @@ var tryFn = (any) => {
|
|
|
211
224
|
|
|
212
225
|
// src/server/class/static.js
|
|
213
226
|
var apiExit = (resp, opt) => {
|
|
227
|
+
const { exposeStack } = opt;
|
|
228
|
+
resp.statusCode = 200;
|
|
214
229
|
if (resp.error) {
|
|
215
|
-
resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
|
|
230
|
+
resp.error = ApiError.to(0, resp.error, 500).rise(1).rise(opt.code);
|
|
231
|
+
resp.statusCode = resp.error.httpStatusCode;
|
|
232
|
+
resp.error.exposeStack(!!exposeStack);
|
|
216
233
|
}
|
|
217
234
|
resp[info_default.name] = info_default.version;
|
|
218
235
|
return end(resp, opt);
|
|
@@ -290,6 +307,51 @@ var buildUrl = (inputUrl, params) => {
|
|
|
290
307
|
return hasHost ? url.toString() : url.pathname + url.search;
|
|
291
308
|
};
|
|
292
309
|
|
|
310
|
+
// src/arc/types/kinds/json.js
|
|
311
|
+
var json_exports = {};
|
|
312
|
+
__export(json_exports, {
|
|
313
|
+
decode: () => decode,
|
|
314
|
+
encode: () => encode,
|
|
315
|
+
mime: () => mime
|
|
316
|
+
});
|
|
317
|
+
var mime = "application/json";
|
|
318
|
+
var decode = (body) => JSON.parse(body);
|
|
319
|
+
var encode = (body) => JSON.stringify(body);
|
|
320
|
+
|
|
321
|
+
// src/arc/types/kinds/form.js
|
|
322
|
+
var form_exports = {};
|
|
323
|
+
__export(form_exports, {
|
|
324
|
+
decode: () => decode2,
|
|
325
|
+
encode: () => encode2,
|
|
326
|
+
mime: () => mime2
|
|
327
|
+
});
|
|
328
|
+
var mime2 = "application/x-www-form-urlencoded";
|
|
329
|
+
var decode2 = (body) => Object.fromEntries(new URLSearchParams(body));
|
|
330
|
+
var encode2 = (body) => new URLSearchParams(body);
|
|
331
|
+
|
|
332
|
+
// src/arc/types/index.js
|
|
333
|
+
var types = { json: json_exports, form: form_exports };
|
|
334
|
+
var getType = (typeName) => {
|
|
335
|
+
if (!typeName) {
|
|
336
|
+
return json_exports;
|
|
337
|
+
}
|
|
338
|
+
const type = types[typeName];
|
|
339
|
+
if (type) {
|
|
340
|
+
return type;
|
|
341
|
+
}
|
|
342
|
+
throw new Error(`Unknow config.type '${typeName}'. Must be one of: '${[...Object.keys(types)].join("', '")}'`);
|
|
343
|
+
};
|
|
344
|
+
var encodeBody = (opt) => {
|
|
345
|
+
const type = getType(opt.requestType || opt.type);
|
|
346
|
+
opt.headers["Content-Type"] = type.mime;
|
|
347
|
+
opt.body = type.encode(opt.body);
|
|
348
|
+
};
|
|
349
|
+
var attachBodyDecoder = (opt) => {
|
|
350
|
+
const type = getType(opt.responseType || opt.type);
|
|
351
|
+
opt.headers["Accept"] = type.mime;
|
|
352
|
+
opt.decodeBody = type.decode;
|
|
353
|
+
};
|
|
354
|
+
|
|
293
355
|
// src/client/class/static.js
|
|
294
356
|
var prepareOpt = (url, opt, method) => {
|
|
295
357
|
start(opt);
|
|
@@ -297,83 +359,121 @@ var prepareOpt = (url, opt, method) => {
|
|
|
297
359
|
if (method) {
|
|
298
360
|
opt.method = method;
|
|
299
361
|
}
|
|
300
|
-
opt.headers["Accept"] = "application/json";
|
|
301
362
|
if (opt.body) {
|
|
302
|
-
opt
|
|
303
|
-
opt.body = JSON.stringify(opt.body);
|
|
363
|
+
encodeBody(opt);
|
|
304
364
|
}
|
|
365
|
+
attachBodyDecoder(opt);
|
|
305
366
|
const hasTimeout = opt.timeout > 0;
|
|
306
367
|
if (opt.abortable || hasTimeout) {
|
|
307
368
|
opt.abortController = new AbortController();
|
|
308
369
|
opt.signal = opt.abortController.signal;
|
|
309
370
|
}
|
|
310
371
|
if (hasTimeout) {
|
|
311
|
-
opt.timeoutId = setTimeout(() => opt.abortController?.abort(
|
|
372
|
+
opt.timeoutId = setTimeout(() => opt.abortController?.abort(ApiError.create(1, "Timeout", 408)), opt.timeout);
|
|
312
373
|
}
|
|
313
374
|
if (isFn(opt.trait)) {
|
|
314
375
|
opt = opt.trait(opt) || opt;
|
|
315
376
|
}
|
|
316
377
|
return opt;
|
|
317
378
|
};
|
|
318
|
-
var localReject = (opt, error
|
|
319
|
-
const {
|
|
320
|
-
if (code == 0) {
|
|
321
|
-
http = 503;
|
|
322
|
-
} else if (code == 1) {
|
|
323
|
-
http = 408;
|
|
324
|
-
} else if (code == 2) {
|
|
325
|
-
http = 499;
|
|
326
|
-
} else if (code == 3) {
|
|
327
|
-
http = 415;
|
|
328
|
-
} else if (!http) {
|
|
329
|
-
http = 400;
|
|
330
|
-
}
|
|
379
|
+
var localReject = (opt, error) => {
|
|
380
|
+
const { httpStatusCode } = error;
|
|
331
381
|
error.rise(0).rise(opt.code || 0);
|
|
332
|
-
return end({
|
|
382
|
+
return end({ isOk: false, isRemote: false, isApiKit: false, statusCode: httpStatusCode, error }, opt);
|
|
333
383
|
};
|
|
334
|
-
var
|
|
335
|
-
|
|
384
|
+
var statusError = ({ status, statusText }) => ApiError.create(4, statusText || status, status);
|
|
385
|
+
var unreadableError = (resp) => resp.ok ? ApiError.create(3, "Unreadable", 415) : statusError(resp);
|
|
386
|
+
var foreignError = (resp) => ({ isApiKit: false, error: statusError(resp) });
|
|
387
|
+
var readText = async (resp) => {
|
|
336
388
|
try {
|
|
337
|
-
|
|
338
|
-
} catch
|
|
339
|
-
|
|
389
|
+
return await resp.text();
|
|
390
|
+
} catch {
|
|
391
|
+
throw unreadableError(resp);
|
|
340
392
|
}
|
|
341
|
-
|
|
393
|
+
};
|
|
394
|
+
var decodeText = (text, opt, resp) => {
|
|
342
395
|
try {
|
|
343
|
-
|
|
396
|
+
return opt.decodeBody(text);
|
|
344
397
|
} catch {
|
|
345
|
-
|
|
398
|
+
throw unreadableError(resp);
|
|
346
399
|
}
|
|
400
|
+
};
|
|
401
|
+
var resolveEmpty = (resp) => {
|
|
402
|
+
if (!resp.ok && resp.status !== 304) {
|
|
403
|
+
return foreignError(resp);
|
|
404
|
+
}
|
|
405
|
+
return { result: null, isApiKit: false };
|
|
406
|
+
};
|
|
407
|
+
var resolveApiKit = (raw, opt) => {
|
|
347
408
|
const apv = raw[info_default.name];
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
409
|
+
const diff = diffVersion(apv);
|
|
410
|
+
const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info_default.version}'`;
|
|
411
|
+
if (diff === "major") {
|
|
412
|
+
console.error(msg);
|
|
413
|
+
}
|
|
414
|
+
if (diff === "minor") {
|
|
415
|
+
console.warn(msg);
|
|
416
|
+
}
|
|
417
|
+
raw.isApiKit = true;
|
|
418
|
+
return raw;
|
|
419
|
+
};
|
|
420
|
+
var resolveForeign = (raw, opt, resp) => {
|
|
421
|
+
if (!resp.ok) {
|
|
422
|
+
return foreignError(resp);
|
|
423
|
+
}
|
|
424
|
+
const body = { isApiKit: false };
|
|
425
|
+
try {
|
|
426
|
+
body.result = opt.parseBody(raw);
|
|
427
|
+
} catch (err) {
|
|
428
|
+
body.error = err.message || err;
|
|
429
|
+
}
|
|
430
|
+
return body;
|
|
431
|
+
};
|
|
432
|
+
var resolveDecoded = (raw, opt, resp) => {
|
|
433
|
+
if (raw?.[info_default.name]) {
|
|
434
|
+
return resolveApiKit(raw, opt);
|
|
365
435
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
436
|
+
return resolveForeign(raw, opt, resp);
|
|
437
|
+
};
|
|
438
|
+
var normalizeError = (body, opt, resp) => {
|
|
439
|
+
if (!body.error || ApiError.is(body.error)) {
|
|
440
|
+
return;
|
|
369
441
|
}
|
|
370
|
-
|
|
371
|
-
body.
|
|
442
|
+
const { code, message, stack, httpStatusCode } = body.error;
|
|
443
|
+
body.error = ApiError.create(
|
|
444
|
+
code || mrgStr(opt.code || 0, "1.0", "."),
|
|
445
|
+
message || body.error,
|
|
446
|
+
httpStatusCode ?? body.statusCode ?? resp.status,
|
|
447
|
+
stack
|
|
448
|
+
);
|
|
449
|
+
};
|
|
450
|
+
var remoteResolve = (body, opt, resp) => {
|
|
451
|
+
normalizeError(body, opt, resp);
|
|
452
|
+
body.isOk = !body.error;
|
|
453
|
+
body.isRemote = true;
|
|
454
|
+
body.isApiKit = !!body.isApiKit;
|
|
455
|
+
body.statusCode = body.statusCode ?? body.error?.httpStatusCode ?? resp.status;
|
|
372
456
|
if (opt.parseHeaders) {
|
|
373
|
-
body.headers = Object.freeze(Object.fromEntries(headers.entries()));
|
|
457
|
+
body.headers = Object.freeze(Object.fromEntries(resp.headers.entries()));
|
|
374
458
|
}
|
|
375
459
|
return end(body, opt);
|
|
376
460
|
};
|
|
461
|
+
var remoteReject = (opt, resp, error) => remoteResolve({ isApiKit: false, error }, opt, resp);
|
|
462
|
+
var fetchExe = async (_fetch, opt) => {
|
|
463
|
+
let resp, body;
|
|
464
|
+
try {
|
|
465
|
+
resp = await _fetch(opt.url, opt);
|
|
466
|
+
} catch (err) {
|
|
467
|
+
return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed", 503));
|
|
468
|
+
}
|
|
469
|
+
try {
|
|
470
|
+
const text = await readText(resp);
|
|
471
|
+
body = text ? resolveDecoded(decodeText(text, opt, resp), opt, resp) : resolveEmpty(resp);
|
|
472
|
+
} catch (err) {
|
|
473
|
+
return remoteReject(opt, resp, ApiError.is(err) ? err : ApiError.to(0, err, 500));
|
|
474
|
+
}
|
|
475
|
+
return remoteResolve(body, opt, resp);
|
|
476
|
+
};
|
|
377
477
|
var fetchResolve = (_fetch, url, opt, method) => {
|
|
378
478
|
const prom = fetchExe(_fetch, prepareOpt(url, opt, method));
|
|
379
479
|
if (opt.timeoutId) {
|
|
@@ -382,17 +482,18 @@ var fetchResolve = (_fetch, url, opt, method) => {
|
|
|
382
482
|
if (!opt.abortable) {
|
|
383
483
|
return prom;
|
|
384
484
|
}
|
|
385
|
-
return (0, import_props4.solid)(prom, "abort", (_) => opt.abortController?.abort(
|
|
485
|
+
return (0, import_props4.solid)(prom, "abort", (_) => opt.abortController?.abort(ApiError.create(2, "Aborted", 499)));
|
|
386
486
|
};
|
|
387
487
|
|
|
388
488
|
// src/client/class/Fetch.js
|
|
389
489
|
var import_props5 = require("@randajan/props");
|
|
390
490
|
|
|
391
491
|
// src/client/tool.js
|
|
492
|
+
var mrgQuery = (opt) => mrgObj(opt?.params, opt?.query);
|
|
392
493
|
var mrgOpt = (a, b) => {
|
|
393
494
|
const opt = mrgObj(a, b);
|
|
394
495
|
opt.body = mrgObj(a?.body, b?.body);
|
|
395
|
-
opt.
|
|
496
|
+
opt.query = mrgObj(mrgQuery(a), mrgQuery(b));
|
|
396
497
|
opt.headers = mrgObj(a?.headers, b?.headers, {});
|
|
397
498
|
return opt;
|
|
398
499
|
};
|
|
@@ -417,25 +518,25 @@ var Fetch = class _Fetch extends Functionable {
|
|
|
417
518
|
extend(config) {
|
|
418
519
|
return new _Fetch(mrgOpt(this.config, config));
|
|
419
520
|
}
|
|
420
|
-
|
|
521
|
+
get(url, opt) {
|
|
421
522
|
return this(url, opt, "GET");
|
|
422
523
|
}
|
|
423
|
-
|
|
524
|
+
post(url, opt) {
|
|
424
525
|
return this(url, opt, "POST");
|
|
425
526
|
}
|
|
426
|
-
|
|
527
|
+
put(url, opt) {
|
|
427
528
|
return this(url, opt, "PUT");
|
|
428
529
|
}
|
|
429
|
-
|
|
530
|
+
delete(url, opt) {
|
|
430
531
|
return this(url, opt, "DELETE");
|
|
431
532
|
}
|
|
432
|
-
|
|
533
|
+
patch(url, opt) {
|
|
433
534
|
return this(url, opt, "PATCH");
|
|
434
535
|
}
|
|
435
|
-
|
|
536
|
+
head(url, opt) {
|
|
436
537
|
return this(url, opt, "HEAD");
|
|
437
538
|
}
|
|
438
|
-
|
|
539
|
+
options(url, opt) {
|
|
439
540
|
return this(url, opt, "OPTIONS");
|
|
440
541
|
}
|
|
441
542
|
};
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.js", "<define:__slib_info>", "../../src/arc/class/ApiError.js", "../../src/arc/tool.js", "../../src/server/class/Api.js", "../../src/arc/class/Functionable.js", "../../node_modules/@randajan/simple-lib/src/info/index.js", "../../src/arc/main.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/arc/opt.js", "../../src/server/index.js", "../../src/client/class/static.js", "../../src/arc/url.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
|
|
4
|
-
"sourcesContent": ["import { ApiError } from \"./arc/class/ApiError\";\r\nimport createApi, { Api } from \"./server\";\r\nimport createFetch, { Fetch } from \"./client\";\r\n\r\n\r\nexport {\r\n createApi,\r\n createFetch,\r\n Api,\r\n Fetch,\r\n ApiError\r\n}", "", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "\r\n\r\n\r\nexport class Functionable extends Function {\r\n constructor(self) {\r\n super();\r\n return Object.setPrototypeOf(self, this);\r\n }\r\n}", "const enumerable = true;\r\nconst lockObject = o=>{\r\n if (typeof o !== \"object\") { return o; }\r\n\r\n const r = {};\r\n for (const i in o) {\r\n const descriptor = { enumerable };\r\n let val = o[i];\r\n if (val instanceof Array) { descriptor.get = _=>[...val]; }\r\n else { descriptor.value = lockObject(val); }\r\n Object.defineProperty(r, i, descriptor);\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport const info = lockObject(__slib_info);\r\nexport default info;", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n resp[info.name] = info.version;\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { diffVersion, end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (url, opt, method)=>{\r\n start(opt);\r\n\r\n opt.url = buildUrl( mrgStr(opt.url, url), opt.query);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, opt) => {\r\n\r\n let resp, raw, body;\r\n\r\n try { resp = await _fetch(opt.url, opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { raw = await resp.json(); } catch {\r\n return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status);\r\n }\r\n \r\n const apv = raw[info.name];\r\n \r\n if (apv) {\r\n body = raw;\r\n const diff = diffVersion(apv);\r\n const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info.version}'`;\r\n if (diff === \"major\") { console.error(msg); }\r\n if (diff === \"minor\") { console.warn(msg); }\r\n } else {\r\n body = {};\r\n try { body.result = opt.parseBody(raw); }\r\n catch(err) { body.error = err.message || err; }\r\n }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n return end(body, opt);\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, prepareOpt(url, opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_props", "import_props", "resp", "import_props", "import_props"]
|
|
3
|
+
"sources": ["../../src/index.js", "<define:__slib_info>", "../../src/arc/class/ApiError.js", "../../src/arc/tool.js", "../../src/server/class/Api.js", "../../src/arc/class/Functionable.js", "../../node_modules/@randajan/simple-lib/src/info/index.js", "../../src/arc/main.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/arc/opt.js", "../../src/server/index.js", "../../src/client/class/static.js", "../../src/arc/url.js", "../../src/arc/types/kinds/json.js", "../../src/arc/types/kinds/form.js", "../../src/arc/types/index.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
|
|
4
|
+
"sourcesContent": ["import { ApiError } from \"./arc/class/ApiError\";\r\nimport createApi, { Api } from \"./server\";\r\nimport createFetch, { Fetch } from \"./client\";\r\n\r\n\r\nexport {\r\n createApi,\r\n createFetch,\r\n Api,\r\n Fetch,\r\n ApiError\r\n}", "", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message, httpStatusCode=400, remoteStack=undefined) {\r\n return new ApiError(code, message, httpStatusCode, remoteStack);\r\n }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any, httpStatusCode=500) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg, httpStatusCode);\r\n return solid(apierr, \"stack\", any?.stack);\r\n }\r\n\r\n constructor(code, message, httpStatusCode=400, remoteStack=undefined) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n solid(this, \"httpStatusCode\", httpStatusCode ?? 400, true);\r\n solid(this, \"remoteStack\", remoteStack);\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n exposeStack(exposeStack=true) {\r\n solid(this, \"_exposeStack\", !!exposeStack, false, true);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, stack, _exposeStack } = this;\r\n const body = {message, ...this};\r\n if (_exposeStack) { body.stack = stack; }\r\n else { delete body.stack; }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}\r\n", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "\r\n\r\n\r\nexport class Functionable extends Function {\r\n constructor(self) {\r\n super();\r\n return Object.setPrototypeOf(self, this);\r\n }\r\n}", "const enumerable = true;\r\nconst lockObject = o=>{\r\n if (typeof o !== \"object\") { return o; }\r\n\r\n const r = {};\r\n for (const i in o) {\r\n const descriptor = { enumerable };\r\n let val = o[i];\r\n if (val instanceof Array) { descriptor.get = _=>[...val]; }\r\n else { descriptor.value = lockObject(val); }\r\n Object.defineProperty(r, i, descriptor);\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport const info = lockObject(__slib_info);\r\nexport default info;", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n const hasError = !!body.error;\r\n\r\n endTime(body, opt.startAt);\r\n\r\n if (!hasError){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError || opt.resultOnly) { throw body.error; }\r\n }\r\n\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}\r\n", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeStack } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = ApiError.to(0, resp.error, 500).rise(1).rise(opt.code);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeStack(!!exposeStack);\r\n }\n\n resp[info.name] = info.version;\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); }\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\n", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}", "import info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { isFn, mrgStr } from \"../../arc/tool\";\nimport { ApiError } from \"../../arc/class/ApiError\";\nimport { buildUrl } from \"../../arc/url\";\nimport { diffVersion, end, start } from \"../../arc/main\";\nimport { attachBodyDecoder, encodeBody } from \"../../arc/types\";\n\nconst prepareOpt = (url, opt, method)=>{\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.query);\n\n if (method) { opt.method = method; }\n\n if (opt.body) { encodeBody(opt); }\n\n attachBodyDecoder(opt);\n\n const hasTimeout = opt.timeout > 0;\n if (opt.abortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(ApiError.create(1, \"Timeout\", 408)), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\n\nconst localReject = (opt, error)=>{\n const { httpStatusCode } = error;\n\n error.rise(0).rise(opt.code || 0);\n\n return end({ isOk:false, isRemote:false, isApiKit:false, statusCode: httpStatusCode, error }, opt);\n}\n\nconst statusError = ({ status, statusText })=>ApiError.create(4, statusText || status, status);\nconst unreadableError = resp=>resp.ok ? ApiError.create(3, \"Unreadable\", 415) : statusError(resp);\nconst foreignError = resp=>({ isApiKit:false, error:statusError(resp) });\n\nconst readText = async resp=>{\n try { return await resp.text(); }\n catch { throw unreadableError(resp); }\n}\n\nconst decodeText = (text, opt, resp)=>{\n try { return opt.decodeBody(text); }\n catch { throw unreadableError(resp); }\n}\n\nconst resolveEmpty = resp=>{\n if (!resp.ok && resp.status !== 304) { return foreignError(resp); }\n return { result:null, isApiKit:false };\n}\n\nconst resolveApiKit = (raw, opt)=>{\n const apv = raw[info.name];\n const diff = diffVersion(apv);\n const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info.version}'`;\n\n if (diff === \"major\") { console.error(msg); }\n if (diff === \"minor\") { console.warn(msg); }\n\n raw.isApiKit = true;\n return raw;\n}\n\nconst resolveForeign = (raw, opt, resp)=>{\n if (!resp.ok) { return foreignError(resp); }\n\n const body = { isApiKit:false };\n\n try { body.result = opt.parseBody(raw); }\n catch(err) { body.error = err.message || err; }\n\n return body;\n}\n\nconst resolveDecoded = (raw, opt, resp)=>{\n if (raw?.[info.name]) { return resolveApiKit(raw, opt); }\n return resolveForeign(raw, opt, resp);\n}\n\nconst normalizeError = (body, opt, resp)=>{\n if (!body.error || ApiError.is(body.error)) { return; }\n\n const { code, message, stack, httpStatusCode } = body.error;\n body.error = ApiError.create(\n code || mrgStr(opt.code || 0, \"1.0\", \".\"),\n message || body.error,\n httpStatusCode ?? body.statusCode ?? resp.status,\n stack\n );\n}\n\nconst remoteResolve = (body, opt, resp)=>{\n normalizeError(body, opt, resp);\n\n body.isOk = !body.error;\n body.isRemote = true;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = body.statusCode ?? body.error?.httpStatusCode ?? resp.status;\n\n if (opt.parseHeaders) {\n body.headers = Object.freeze(Object.fromEntries(resp.headers.entries()));\n }\n\n return end(body, opt);\n}\n\nconst remoteReject = (opt, resp, error)=>remoteResolve({ isApiKit:false, error }, opt, resp);\n\nconst fetchExe = async (_fetch, opt) => {\n\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\", 503)); }\n\n try {\n const text = await readText(resp);\n body = text ? resolveDecoded(decodeText(text, opt, resp), opt, resp) : resolveEmpty(resp);\n } catch (err) {\n return remoteReject(opt, resp, ApiError.is(err) ? err : ApiError.to(0, err, 500));\n }\n\n return remoteResolve(body, opt, resp);\n};\n\nexport const fetchResolve = (_fetch, url, opt, method)=>{\n const prom = fetchExe(_fetch, prepareOpt(url, opt, method));\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.abortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(ApiError.create(2, \"Aborted\", 499)));\n}\n", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "\r\n\r\nexport const mime = \"application/json\";\r\nexport const decode = body=>JSON.parse(body);\r\nexport const encode = body=>JSON.stringify(body);", "\r\n\r\nexport const mime = 'application/x-www-form-urlencoded';\r\nexport const decode = body=>Object.fromEntries(new URLSearchParams(body));\r\nexport const encode = body=>new URLSearchParams(body);\r\n\r\n", "import * as json from \"./kinds/json\";\r\nimport * as form from \"./kinds/form\";\r\n\r\n\r\nconst types = { json, form };\r\nconst getType = (typeName)=>{\r\n if (!typeName) { return json; }\r\n const type = types[typeName];\r\n if (type) { return type; }\r\n throw new Error(`Unknow config.type '${typeName}'. Must be one of: '${[...Object.keys(types)].join(\"', '\")}'`);\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\r\n const type = getType(opt.requestType || opt.type); \r\n \r\n opt.headers[\"Content-Type\"] = type.mime;\r\n opt.body = type.encode(opt.body);\r\n}\r\n\r\nexport const attachBodyDecoder = (opt)=>{\r\n const type = getType(opt.responseType || opt.type);\r\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n get(url, opt) { return this(url, opt, \"GET\"); }\r\n post(url, opt) { return this(url, opt, \"POST\"); }\r\n put(url, opt) { return this(url, opt, \"PUT\"); }\r\n delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\n\nconst mrgQuery = opt=>mrgObj(opt?.params, opt?.query);\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.query = mrgObj(mrgQuery(a), mrgQuery(b));\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_props", "import_props", "resp", "import_props", "decode", "encode", "mime", "mime", "decode", "encode", "import_props"]
|
|
7
7
|
}
|
|
@@ -27,7 +27,7 @@ __export(server_exports, {
|
|
|
27
27
|
module.exports = __toCommonJS(server_exports);
|
|
28
28
|
|
|
29
29
|
// <define:__slib_info>
|
|
30
|
-
var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.
|
|
30
|
+
var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.2.0", author: { name: "Jan Randa", email: "jnranda@gmail.com", url: "https://www.linkedin.com/in/randajan/" }, env: "development", mode: "web", port: 3e3, dir: { root: "C:\\dev\\lib\\api-kit", dist: "dist" } };
|
|
31
31
|
|
|
32
32
|
// src/arc/class/ApiError.js
|
|
33
33
|
var import_props = require("@randajan/props");
|
|
@@ -58,32 +58,44 @@ var isErr = (any) => any instanceof Error;
|
|
|
58
58
|
|
|
59
59
|
// src/arc/class/ApiError.js
|
|
60
60
|
var ApiError = class _ApiError extends Error {
|
|
61
|
-
static create(code, message) {
|
|
62
|
-
return new _ApiError(code, message);
|
|
61
|
+
static create(code, message, httpStatusCode = 400, remoteStack = void 0) {
|
|
62
|
+
return new _ApiError(code, message, httpStatusCode, remoteStack);
|
|
63
63
|
}
|
|
64
64
|
static is(any) {
|
|
65
65
|
return any instanceof _ApiError;
|
|
66
66
|
}
|
|
67
|
-
static to(code, any) {
|
|
67
|
+
static to(code, any, httpStatusCode = 500) {
|
|
68
68
|
if (_ApiError.is(any)) {
|
|
69
69
|
return any;
|
|
70
70
|
}
|
|
71
71
|
const msg = toStr(any?.message || any) || "Unknown";
|
|
72
|
-
const apierr = _ApiError.create(code, msg);
|
|
73
|
-
return (0, import_props.solid)(apierr, "stack", any
|
|
72
|
+
const apierr = _ApiError.create(code, msg, httpStatusCode);
|
|
73
|
+
return (0, import_props.solid)(apierr, "stack", any?.stack);
|
|
74
74
|
}
|
|
75
|
-
constructor(code, message) {
|
|
75
|
+
constructor(code, message, httpStatusCode = 400, remoteStack = void 0) {
|
|
76
76
|
super(message);
|
|
77
77
|
(0, import_props.safe)(this, {}, "code", (t, f) => mrgStr(t, f, "."));
|
|
78
|
+
(0, import_props.solid)(this, "httpStatusCode", httpStatusCode ?? 400, true);
|
|
79
|
+
(0, import_props.solid)(this, "remoteStack", remoteStack);
|
|
78
80
|
this.rise(code);
|
|
79
81
|
}
|
|
80
82
|
rise(code = 0) {
|
|
81
83
|
this.code = code || 0;
|
|
82
84
|
return this;
|
|
83
85
|
}
|
|
86
|
+
exposeStack(exposeStack = true) {
|
|
87
|
+
(0, import_props.solid)(this, "_exposeStack", !!exposeStack, false, true);
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
84
90
|
toJSON() {
|
|
85
|
-
const { message } = this;
|
|
86
|
-
|
|
91
|
+
const { message, stack, _exposeStack } = this;
|
|
92
|
+
const body = { message, ...this };
|
|
93
|
+
if (_exposeStack) {
|
|
94
|
+
body.stack = stack;
|
|
95
|
+
} else {
|
|
96
|
+
delete body.stack;
|
|
97
|
+
}
|
|
98
|
+
return body;
|
|
87
99
|
}
|
|
88
100
|
toString() {
|
|
89
101
|
const { message, code } = this;
|
|
@@ -149,7 +161,9 @@ var endTime = (body, startAt) => {
|
|
|
149
161
|
body.time = (0, import_props2.solids)({}, time);
|
|
150
162
|
};
|
|
151
163
|
var end = (body, opt) => {
|
|
152
|
-
|
|
164
|
+
const hasError = !!body.error;
|
|
165
|
+
endTime(body, opt.startAt);
|
|
166
|
+
if (!hasError) {
|
|
153
167
|
if (isFn(opt.onOk)) {
|
|
154
168
|
opt.onOk(body, opt);
|
|
155
169
|
}
|
|
@@ -157,11 +171,10 @@ var end = (body, opt) => {
|
|
|
157
171
|
if (isFn(opt.onError)) {
|
|
158
172
|
opt.onError(body, opt);
|
|
159
173
|
}
|
|
160
|
-
if (opt.throwError) {
|
|
174
|
+
if (opt.throwError || opt.resultOnly) {
|
|
161
175
|
throw body.error;
|
|
162
176
|
}
|
|
163
177
|
}
|
|
164
|
-
endTime(body, opt.startAt);
|
|
165
178
|
return opt.resultOnly ? body.result : Object.freeze(body);
|
|
166
179
|
};
|
|
167
180
|
|
|
@@ -192,8 +205,12 @@ var tryFn = (any) => {
|
|
|
192
205
|
|
|
193
206
|
// src/server/class/static.js
|
|
194
207
|
var apiExit = (resp, opt) => {
|
|
208
|
+
const { exposeStack } = opt;
|
|
209
|
+
resp.statusCode = 200;
|
|
195
210
|
if (resp.error) {
|
|
196
|
-
resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
|
|
211
|
+
resp.error = ApiError.to(0, resp.error, 500).rise(1).rise(opt.code);
|
|
212
|
+
resp.statusCode = resp.error.httpStatusCode;
|
|
213
|
+
resp.error.exposeStack(!!exposeStack);
|
|
197
214
|
}
|
|
198
215
|
resp[info_default.name] = info_default.version;
|
|
199
216
|
return end(resp, opt);
|