@randajan/api-kit 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,7 +27,7 @@ __export(client_exports, {
27
27
  module.exports = __toCommonJS(client_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: "2.0.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" } };
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: "3.0.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/FetchError.js
33
33
  var import_props = require("@randajan/props");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/index.js", "<define:__slib_info>", "../../../src/arc/class/FetchError.js", "../../../src/arc/tool.js", "../../../node_modules/@randajan/simple-lib/src/info/index.js", "../../../src/client/class/static.js", "../../../src/arc/opt.js", "../../../src/arc/class/HttpError.js", "../../../src/arc/types/kinds/json.js", "../../../src/arc/types/kinds/form.js", "../../../src/arc/types/index.js", "../../../src/client/url.js", "../../../src/client/tool.js", "../../../src/arc/class/Functionable.js", "../../../src/client/class/Fetch.js"],
4
- "sourcesContent": ["import { FetchError } from \"../arc/class/FetchError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n FetchError\n}\n", "", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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", "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 info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { end } from \"../../arc/opt\";\nimport { diffVersion, abortError, decodeText, failedError, normalizeClientError, parseHeaders, prepareOpt, readText, reconstructApiError, statusError } from \"../tool\";\nimport { FetchError } from \"../../arc/class/FetchError\";\n\n\nconst localReject = (err, opt)=>({ error:normalizeClientError(FetchError.is(err) ? err : failedError(err), opt) });\nconst remoteReject = (err, opt)=>({ isRemote:true, error:normalizeClientError(err, opt) });\n\nconst remoteResolve = async (resp, opt)=>{\n const text = await readText(resp);\n\n //empty response\n if (!text) {\n if (resp.ok || resp.status === 304) { return { isRemote:true }; }\n throw statusError(resp);\n }\n\n const body = decodeText(resp, opt, text);\n const ver = body?.[info.name];\n\n //foreign response\n if (!ver) {\n if (resp.ok) { return { isRemote:true, result:body } }\n throw statusError(resp);\n }\n\n //apikit response\n body.isRemote = true;\n body.isApiKit = true;\n body.apiKitDiff = diffVersion(ver);\n body.error = reconstructApiError(body.error);\n\n return body;\n}\n\n\nconst fetchBody = async (_fetch, opt) => {\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { body = localReject(err, opt); }\n\n try { body = body || await remoteResolve(resp, opt); }\n catch (err) { body = remoteReject(err, opt); }\n\n const err = body.error;\n\n body.isOk = !err;\n body.isRemote = !!body.isRemote;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = err?.httpStatusCode || resp?.status;\n body.headers = parseHeaders(resp, opt);\n\n body = end(body, opt);\n\n return opt.resultOnly ? body.result : body;\n};\n\n\nexport const executeFetch = (_fetch, url, opt, method)=>{\n opt = prepareOpt(url, opt, method);\n\n const prom = fetchBody(_fetch, opt);\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.isAbortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(abortError()));\n}\n", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\r\n", "import { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\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\nimport { isFn } from \"../tool\";\r\n\r\n\r\nconst _types = { json, form };\r\n\r\nconst joinTypeNames = (types={})=>{\n const native = Object.keys(_types);\n const custom = typeof types === \"object\" ? Object.keys(types) : [];\n\n return `'${[...(new Set([...native, ...custom]))].join(\"', '\")}'`;\n}\n\r\n\r\nconst getType = (propertyName, reqFnName, opt)=>{\r\n const tn = (opt[propertyName] || opt.type);\r\n if (!tn) { return json; }\r\n\r\n const customType = opt.types?.[tn];\r\n const type = customType || _types[tn];\n\n if (!type) {\n throw new Error(`Unknown config.${propertyName} '${tn}'. Must be one of: ${joinTypeNames(opt.types)}`);\n }\n\n if (!customType) { return type; }\n\n if (!type.mime || typeof type.mime !== \"string\") {\r\n throw new Error(`Type definition '${tn}' requires 'mime' to be a string`);\r\n }\r\n\r\n if (!isFn(type[reqFnName])) { throw new Error(`Type definition '${tn}' requires '${reqFnName}' to be a function`); }\r\n\r\n return type;\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\n const type = getType(\"requestType\", \"encode\", opt);\n\n opt.headers[\"Content-Type\"] = type.mime;\n opt.body = type.encode(opt.body);\n}\n\nexport const attachBodyDecoder = (opt)=>{\n const type = getType(\"responseType\", \"decode\", opt);\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}\n", "let _regexp = /^https?:\\/\\//i;\r\n\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 { info } from \"@randajan/simple-lib/info\";\nimport { FetchError } from \"../arc/class/FetchError\";\nimport { HttpError } from \"../arc/class/HttpError\";\nimport { start } from \"../arc/opt\";\nimport { isFn, mrgObj, mrgStr, toStr } from \"../arc/tool\";\nimport { attachBodyDecoder, encodeBody } from \"../arc/types\";\nimport { buildUrl } from \"./url\";\n\nexport const diffVersion = (version)=>{\n const v1 = toStr(info.version);\n const v2 = toStr(version);\n\n if (v1 === v2) { return }\n\n const f1 = v1.split(\".\");\n const f2 = v2.split(\".\");\n\n if (f1[0] !== f2[0]) { return \"major\"; }\n if (f1[1] !== f2[1]) { return \"minor\"; }\n if (f1[2] !== f2[2]) { return \"patch\"; }\n}\n\n\nexport const failedError = cause=>FetchError.code(1, \"Failed\", { cause });\nexport const timeoutError = _=>FetchError.code(2, \"Timeout\");\nexport const abortError = _=>FetchError.code(3, \"Aborted\");\nexport const statusError = resp=>HttpError.code(4, resp.statusText, resp.status, { exposeCause:true });\nexport const unreadableError = (resp, cause)=>resp.ok ? FetchError.code(5, \"Unreadable\", { cause }) : statusError(resp);\nexport const undecodableError = (resp, cause, detail)=>resp.ok ? FetchError.code(6, \"Undecodable\", { cause, detail }) : statusError(resp);\n\nexport const parseHeaders = (resp, opt)=>{\n if (!resp || !opt.parseHeaders) { return; }\n return Object.freeze(Object.fromEntries(resp.headers.entries()));\n}\n\nexport const readText = async resp=>{\n try { return await resp.text(); }\n catch(err) { throw unreadableError(resp, err); }\n}\n\nexport const decodeText = (resp, opt, text)=>{\n try { return opt.decodeBody(text); }\n catch(err) { throw undecodableError(resp, err, text); }\n}\n\nexport const normalizeClientError = (any, opt)=>{\n let err = any;\n\n if (!FetchError.is(err)) {\n let custom = isFn(opt.normalizeError);\n if (custom) {\n try { err = opt.normalizeError(err, opt); }\n catch { custom = false; }\n }\n if (!custom || !FetchError.is(err)) {\n err = FetchError.code(0, \"Unknown\", { cause:any });\n }\n }\n\n return err.rise(0).rise(0);\n}\n\nexport const reconstructApiError = (remoteErr)=>{\n if (!remoteErr) { return; }\n const { message, code, httpStatusCode, cause, detail } = remoteErr;\n return HttpError.code(code, message, httpStatusCode, { cause, detail, exposeCause:true });\n}\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.params = mrgObj(a?.params, b?.params);\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n\nexport const prepareOpt = (url, opt, method)=>{\n\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.params);\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.isAbortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(timeoutError()), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\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}", "import { executeFetch } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\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 in config\"); }\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>executeFetch(_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}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { FetchError } from \"../arc/class/FetchError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n FetchError\n}\n", "", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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\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", "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 info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { end } from \"../../arc/opt\";\nimport { diffVersion, abortError, decodeText, failedError, normalizeClientError, parseHeaders, prepareOpt, readText, reconstructApiError, statusError } from \"../tool\";\nimport { FetchError } from \"../../arc/class/FetchError\";\n\n\nconst localReject = (err, opt)=>({ error:normalizeClientError(FetchError.is(err) ? err : failedError(err), opt) });\nconst remoteReject = (err, opt)=>({ isRemote:true, error:normalizeClientError(err, opt) });\n\nconst remoteResolve = async (resp, opt)=>{\n const text = await readText(resp);\n\n //empty response\n if (!text) {\n if (resp.ok || resp.status === 304) { return { isRemote:true }; }\n throw statusError(resp);\n }\n\n const body = decodeText(resp, opt, text);\n const ver = body?.[info.name];\n\n //foreign response\n if (!ver) {\n if (resp.ok) { return { isRemote:true, result:body } }\n throw statusError(resp);\n }\n\n //apikit response\n body.isRemote = true;\n body.isApiKit = true;\n body.apiKitDiff = diffVersion(ver);\n body.error = reconstructApiError(body.error);\n\n return body;\n}\n\n\nconst fetchBody = async (_fetch, opt) => {\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { body = localReject(err, opt); }\n\n try { body = body || await remoteResolve(resp, opt); }\n catch (err) { body = remoteReject(err, opt); }\n\n const err = body.error;\n\n body.isOk = !err;\n body.isRemote = !!body.isRemote;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = err?.httpStatusCode || resp?.status;\n body.headers = parseHeaders(resp, opt);\n\n body = end(body, opt);\n\n return opt.resultOnly ? body.result : body;\n};\n\n\nexport const executeFetch = (_fetch, url, opt, method)=>{\n opt = prepareOpt(url, opt, method);\n\n const prom = fetchBody(_fetch, opt);\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.isAbortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(abortError()));\n}\n", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\r\n", "import { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\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\nimport { isFn } from \"../tool\";\r\n\r\n\r\nconst _types = { json, form };\r\n\r\nconst joinTypeNames = (types={})=>{\n const native = Object.keys(_types);\n const custom = typeof types === \"object\" ? Object.keys(types) : [];\n\n return `'${[...(new Set([...native, ...custom]))].join(\"', '\")}'`;\n}\n\r\n\r\nconst getType = (propertyName, reqFnName, opt)=>{\r\n const tn = (opt[propertyName] || opt.type);\r\n if (!tn) { return json; }\r\n\r\n const customType = opt.types?.[tn];\r\n const type = customType || _types[tn];\n\n if (!type) {\n throw new Error(`Unknown config.${propertyName} '${tn}'. Must be one of: ${joinTypeNames(opt.types)}`);\n }\n\n if (!customType) { return type; }\n\n if (!type.mime || typeof type.mime !== \"string\") {\r\n throw new Error(`Type definition '${tn}' requires 'mime' to be a string`);\r\n }\r\n\r\n if (!isFn(type[reqFnName])) { throw new Error(`Type definition '${tn}' requires '${reqFnName}' to be a function`); }\r\n\r\n return type;\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\n const type = getType(\"requestType\", \"encode\", opt);\n\n opt.headers[\"Content-Type\"] = type.mime;\n opt.body = type.encode(opt.body);\n}\n\nexport const attachBodyDecoder = (opt)=>{\n const type = getType(\"responseType\", \"decode\", opt);\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}\n", "let _regexp = /^https?:\\/\\//i;\r\n\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 { info } from \"@randajan/simple-lib/info\";\nimport { FetchError } from \"../arc/class/FetchError\";\nimport { HttpError } from \"../arc/class/HttpError\";\nimport { start } from \"../arc/opt\";\nimport { isFn, mrgObj, mrgStr, toStr } from \"../arc/tool\";\nimport { attachBodyDecoder, encodeBody } from \"../arc/types\";\nimport { buildUrl } from \"./url\";\n\nexport const diffVersion = (version)=>{\n const v1 = toStr(info.version);\n const v2 = toStr(version);\n\n if (v1 === v2) { return }\n\n const f1 = v1.split(\".\");\n const f2 = v2.split(\".\");\n\n if (f1[0] !== f2[0]) { return \"major\"; }\n if (f1[1] !== f2[1]) { return \"minor\"; }\n if (f1[2] !== f2[2]) { return \"patch\"; }\n}\n\n\nexport const failedError = cause=>FetchError.code(1, \"Failed\", { cause });\nexport const timeoutError = _=>FetchError.code(2, \"Timeout\");\nexport const abortError = _=>FetchError.code(3, \"Aborted\");\nexport const statusError = resp=>HttpError.code(4, resp.statusText, resp.status, { exposeCause:true });\nexport const unreadableError = (resp, cause)=>resp.ok ? FetchError.code(5, \"Unreadable\", { cause }) : statusError(resp);\nexport const undecodableError = (resp, cause, detail)=>resp.ok ? FetchError.code(6, \"Undecodable\", { cause, detail }) : statusError(resp);\n\nexport const parseHeaders = (resp, opt)=>{\n if (!resp || !opt.parseHeaders) { return; }\n return Object.freeze(Object.fromEntries(resp.headers.entries()));\n}\n\nexport const readText = async resp=>{\n try { return await resp.text(); }\n catch(err) { throw unreadableError(resp, err); }\n}\n\nexport const decodeText = (resp, opt, text)=>{\n try { return opt.decodeBody(text); }\n catch(err) { throw undecodableError(resp, err, text); }\n}\n\nexport const normalizeClientError = (any, opt)=>{\n let err = any;\n\n if (!FetchError.is(err)) {\n let custom = isFn(opt.normalizeError);\n if (custom) {\n try { err = opt.normalizeError(err, opt); }\n catch { custom = false; }\n }\n if (!custom || !FetchError.is(err)) {\n err = FetchError.code(0, \"Unknown\", { cause:any });\n }\n }\n\n return err.rise(0).rise(0);\n}\n\nexport const reconstructApiError = (remoteErr)=>{\n if (!remoteErr) { return; }\n const { message, code, httpStatusCode, cause, detail } = remoteErr;\n return HttpError.code(code, message, httpStatusCode, { cause, detail, exposeCause:true });\n}\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.params = mrgObj(a?.params, b?.params);\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n\nexport const prepareOpt = (url, opt, method)=>{\n\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.params);\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.isAbortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(timeoutError()), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\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}", "import { executeFetch } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\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 in config\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>executeFetch(_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}\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["message", "import_props", "import_props", "import_props", "message", "decode", "encode", "mime", "mime", "decode", "encode", "err", "import_props"]
7
7
  }
@@ -29,7 +29,7 @@ __export(index_exports, {
29
29
  module.exports = __toCommonJS(index_exports);
30
30
 
31
31
  // <define:__slib_info>
32
- 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: "2.0.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
+ 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: "3.0.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" } };
33
33
 
34
34
  // src/arc/class/FetchError.js
35
35
  var import_props = require("@randajan/props");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.js", "<define:__slib_info>", "../../src/arc/class/FetchError.js", "../../src/arc/tool.js", "../../src/arc/class/HttpError.js", "../../src/server/class/Api.js", "../../src/arc/class/Functionable.js", "../../node_modules/@randajan/simple-lib/src/info/index.js", "../../src/arc/opt.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/server/index.js", "../../src/client/class/static.js", "../../src/arc/types/kinds/json.js", "../../src/arc/types/kinds/form.js", "../../src/arc/types/index.js", "../../src/client/url.js", "../../src/client/tool.js", "../../src/client/class/Fetch.js", "../../src/client/index.js"],
4
- "sourcesContent": ["\r\nimport { FetchError } from \"./arc/class/FetchError\";\r\nimport { HttpError } from \"./arc/class/HttpError\";\r\n\r\n\r\nimport createApi, { Api } from \"./server\";\r\nimport createFetch, { Fetch } from \"./client\";\r\n\r\n\r\n\r\n\r\nexport {\r\n createApi,\r\n createFetch,\r\n Api,\r\n Fetch,\r\n FetchError,\r\n HttpError\r\n}", "", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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 { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\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 } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\r\n", "import { HttpError } from \"../arc/class/HttpError\";\r\nimport { doFn, isErr, isFn, 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}\r\n\r\n\r\nexport const normalizeServerError = (any, opt)=>{\r\n let err = any;\r\n\r\n if (!HttpError.is(err)) {\r\n let custom = isFn(opt.normalizeError);\r\n if (custom) {\r\n try { err = opt.normalizeError(err, opt); }\r\n catch { custom = false; }\r\n }\r\n if (!custom || !HttpError.is(err)) {\r\n err = HttpError.code(0, \"Unknown\", 500, { cause:any });\r\n }\r\n }\r\n\r\n return err.rise(1).rise(opt.code);\r\n}\r\n", "import info from \"@randajan/simple-lib/info\";\r\nimport { start, end } from \"../../arc/opt\";\r\nimport { isProm } from \"../../arc/tool\";\r\nimport { normalizeServerError, tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeCause } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = normalizeServerError(resp.error, opt);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeCause(!!exposeCause);\r\n }\r\n\r\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); }\r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\r\n", "import { HttpError } from \"../arc/class/HttpError\";\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 HttpError\r\n}", "import info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { end } from \"../../arc/opt\";\nimport { diffVersion, abortError, decodeText, failedError, normalizeClientError, parseHeaders, prepareOpt, readText, reconstructApiError, statusError } from \"../tool\";\nimport { FetchError } from \"../../arc/class/FetchError\";\n\n\nconst localReject = (err, opt)=>({ error:normalizeClientError(FetchError.is(err) ? err : failedError(err), opt) });\nconst remoteReject = (err, opt)=>({ isRemote:true, error:normalizeClientError(err, opt) });\n\nconst remoteResolve = async (resp, opt)=>{\n const text = await readText(resp);\n\n //empty response\n if (!text) {\n if (resp.ok || resp.status === 304) { return { isRemote:true }; }\n throw statusError(resp);\n }\n\n const body = decodeText(resp, opt, text);\n const ver = body?.[info.name];\n\n //foreign response\n if (!ver) {\n if (resp.ok) { return { isRemote:true, result:body } }\n throw statusError(resp);\n }\n\n //apikit response\n body.isRemote = true;\n body.isApiKit = true;\n body.apiKitDiff = diffVersion(ver);\n body.error = reconstructApiError(body.error);\n\n return body;\n}\n\n\nconst fetchBody = async (_fetch, opt) => {\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { body = localReject(err, opt); }\n\n try { body = body || await remoteResolve(resp, opt); }\n catch (err) { body = remoteReject(err, opt); }\n\n const err = body.error;\n\n body.isOk = !err;\n body.isRemote = !!body.isRemote;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = err?.httpStatusCode || resp?.status;\n body.headers = parseHeaders(resp, opt);\n\n body = end(body, opt);\n\n return opt.resultOnly ? body.result : body;\n};\n\n\nexport const executeFetch = (_fetch, url, opt, method)=>{\n opt = prepareOpt(url, opt, method);\n\n const prom = fetchBody(_fetch, opt);\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.isAbortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(abortError()));\n}\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\nimport { isFn } from \"../tool\";\r\n\r\n\r\nconst _types = { json, form };\r\n\r\nconst joinTypeNames = (types={})=>{\n const native = Object.keys(_types);\n const custom = typeof types === \"object\" ? Object.keys(types) : [];\n\n return `'${[...(new Set([...native, ...custom]))].join(\"', '\")}'`;\n}\n\r\n\r\nconst getType = (propertyName, reqFnName, opt)=>{\r\n const tn = (opt[propertyName] || opt.type);\r\n if (!tn) { return json; }\r\n\r\n const customType = opt.types?.[tn];\r\n const type = customType || _types[tn];\n\n if (!type) {\n throw new Error(`Unknown config.${propertyName} '${tn}'. Must be one of: ${joinTypeNames(opt.types)}`);\n }\n\n if (!customType) { return type; }\n\n if (!type.mime || typeof type.mime !== \"string\") {\r\n throw new Error(`Type definition '${tn}' requires 'mime' to be a string`);\r\n }\r\n\r\n if (!isFn(type[reqFnName])) { throw new Error(`Type definition '${tn}' requires '${reqFnName}' to be a function`); }\r\n\r\n return type;\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\n const type = getType(\"requestType\", \"encode\", opt);\n\n opt.headers[\"Content-Type\"] = type.mime;\n opt.body = type.encode(opt.body);\n}\n\nexport const attachBodyDecoder = (opt)=>{\n const type = getType(\"responseType\", \"decode\", opt);\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}\n", "let _regexp = /^https?:\\/\\//i;\r\n\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 { info } from \"@randajan/simple-lib/info\";\nimport { FetchError } from \"../arc/class/FetchError\";\nimport { HttpError } from \"../arc/class/HttpError\";\nimport { start } from \"../arc/opt\";\nimport { isFn, mrgObj, mrgStr, toStr } from \"../arc/tool\";\nimport { attachBodyDecoder, encodeBody } from \"../arc/types\";\nimport { buildUrl } from \"./url\";\n\nexport const diffVersion = (version)=>{\n const v1 = toStr(info.version);\n const v2 = toStr(version);\n\n if (v1 === v2) { return }\n\n const f1 = v1.split(\".\");\n const f2 = v2.split(\".\");\n\n if (f1[0] !== f2[0]) { return \"major\"; }\n if (f1[1] !== f2[1]) { return \"minor\"; }\n if (f1[2] !== f2[2]) { return \"patch\"; }\n}\n\n\nexport const failedError = cause=>FetchError.code(1, \"Failed\", { cause });\nexport const timeoutError = _=>FetchError.code(2, \"Timeout\");\nexport const abortError = _=>FetchError.code(3, \"Aborted\");\nexport const statusError = resp=>HttpError.code(4, resp.statusText, resp.status, { exposeCause:true });\nexport const unreadableError = (resp, cause)=>resp.ok ? FetchError.code(5, \"Unreadable\", { cause }) : statusError(resp);\nexport const undecodableError = (resp, cause, detail)=>resp.ok ? FetchError.code(6, \"Undecodable\", { cause, detail }) : statusError(resp);\n\nexport const parseHeaders = (resp, opt)=>{\n if (!resp || !opt.parseHeaders) { return; }\n return Object.freeze(Object.fromEntries(resp.headers.entries()));\n}\n\nexport const readText = async resp=>{\n try { return await resp.text(); }\n catch(err) { throw unreadableError(resp, err); }\n}\n\nexport const decodeText = (resp, opt, text)=>{\n try { return opt.decodeBody(text); }\n catch(err) { throw undecodableError(resp, err, text); }\n}\n\nexport const normalizeClientError = (any, opt)=>{\n let err = any;\n\n if (!FetchError.is(err)) {\n let custom = isFn(opt.normalizeError);\n if (custom) {\n try { err = opt.normalizeError(err, opt); }\n catch { custom = false; }\n }\n if (!custom || !FetchError.is(err)) {\n err = FetchError.code(0, \"Unknown\", { cause:any });\n }\n }\n\n return err.rise(0).rise(0);\n}\n\nexport const reconstructApiError = (remoteErr)=>{\n if (!remoteErr) { return; }\n const { message, code, httpStatusCode, cause, detail } = remoteErr;\n return HttpError.code(code, message, httpStatusCode, { cause, detail, exposeCause:true });\n}\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.params = mrgObj(a?.params, b?.params);\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n\nexport const prepareOpt = (url, opt, method)=>{\n\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.params);\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.isAbortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(timeoutError()), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\n", "import { executeFetch } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\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 in config\"); }\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>executeFetch(_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}\n", "import { FetchError } from \"../arc/class/FetchError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n FetchError\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["\r\nimport { FetchError } from \"./arc/class/FetchError\";\r\nimport { HttpError } from \"./arc/class/HttpError\";\r\n\r\n\r\nimport createApi, { Api } from \"./server\";\r\nimport createFetch, { Fetch } from \"./client\";\r\n\r\n\r\n\r\n\r\nexport {\r\n createApi,\r\n createFetch,\r\n Api,\r\n Fetch,\r\n FetchError,\r\n HttpError\r\n}", "", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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\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 { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\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 } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\r\n", "import { HttpError } from \"../arc/class/HttpError\";\r\nimport { doFn, isErr, isFn, 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}\r\n\r\n\r\nexport const normalizeServerError = (any, opt)=>{\r\n let err = any;\r\n\r\n if (!HttpError.is(err)) {\r\n let custom = isFn(opt.normalizeError);\r\n if (custom) {\r\n try { err = opt.normalizeError(err, opt); }\r\n catch { custom = false; }\r\n }\r\n if (!custom || !HttpError.is(err)) {\r\n err = HttpError.code(0, \"Unknown\", 500, { cause:any });\r\n }\r\n }\r\n\r\n return err.rise(1).rise(opt.code);\r\n}\r\n", "import info from \"@randajan/simple-lib/info\";\r\nimport { start, end } from \"../../arc/opt\";\r\nimport { isProm } from \"../../arc/tool\";\r\nimport { normalizeServerError, tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeCause } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = normalizeServerError(resp.error, opt);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeCause(!!exposeCause);\r\n }\r\n\r\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); }\r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\r\n", "import { HttpError } from \"../arc/class/HttpError\";\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 HttpError\r\n}", "import info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { end } from \"../../arc/opt\";\nimport { diffVersion, abortError, decodeText, failedError, normalizeClientError, parseHeaders, prepareOpt, readText, reconstructApiError, statusError } from \"../tool\";\nimport { FetchError } from \"../../arc/class/FetchError\";\n\n\nconst localReject = (err, opt)=>({ error:normalizeClientError(FetchError.is(err) ? err : failedError(err), opt) });\nconst remoteReject = (err, opt)=>({ isRemote:true, error:normalizeClientError(err, opt) });\n\nconst remoteResolve = async (resp, opt)=>{\n const text = await readText(resp);\n\n //empty response\n if (!text) {\n if (resp.ok || resp.status === 304) { return { isRemote:true }; }\n throw statusError(resp);\n }\n\n const body = decodeText(resp, opt, text);\n const ver = body?.[info.name];\n\n //foreign response\n if (!ver) {\n if (resp.ok) { return { isRemote:true, result:body } }\n throw statusError(resp);\n }\n\n //apikit response\n body.isRemote = true;\n body.isApiKit = true;\n body.apiKitDiff = diffVersion(ver);\n body.error = reconstructApiError(body.error);\n\n return body;\n}\n\n\nconst fetchBody = async (_fetch, opt) => {\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { body = localReject(err, opt); }\n\n try { body = body || await remoteResolve(resp, opt); }\n catch (err) { body = remoteReject(err, opt); }\n\n const err = body.error;\n\n body.isOk = !err;\n body.isRemote = !!body.isRemote;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = err?.httpStatusCode || resp?.status;\n body.headers = parseHeaders(resp, opt);\n\n body = end(body, opt);\n\n return opt.resultOnly ? body.result : body;\n};\n\n\nexport const executeFetch = (_fetch, url, opt, method)=>{\n opt = prepareOpt(url, opt, method);\n\n const prom = fetchBody(_fetch, opt);\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.isAbortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(abortError()));\n}\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\nimport { isFn } from \"../tool\";\r\n\r\n\r\nconst _types = { json, form };\r\n\r\nconst joinTypeNames = (types={})=>{\n const native = Object.keys(_types);\n const custom = typeof types === \"object\" ? Object.keys(types) : [];\n\n return `'${[...(new Set([...native, ...custom]))].join(\"', '\")}'`;\n}\n\r\n\r\nconst getType = (propertyName, reqFnName, opt)=>{\r\n const tn = (opt[propertyName] || opt.type);\r\n if (!tn) { return json; }\r\n\r\n const customType = opt.types?.[tn];\r\n const type = customType || _types[tn];\n\n if (!type) {\n throw new Error(`Unknown config.${propertyName} '${tn}'. Must be one of: ${joinTypeNames(opt.types)}`);\n }\n\n if (!customType) { return type; }\n\n if (!type.mime || typeof type.mime !== \"string\") {\r\n throw new Error(`Type definition '${tn}' requires 'mime' to be a string`);\r\n }\r\n\r\n if (!isFn(type[reqFnName])) { throw new Error(`Type definition '${tn}' requires '${reqFnName}' to be a function`); }\r\n\r\n return type;\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\n const type = getType(\"requestType\", \"encode\", opt);\n\n opt.headers[\"Content-Type\"] = type.mime;\n opt.body = type.encode(opt.body);\n}\n\nexport const attachBodyDecoder = (opt)=>{\n const type = getType(\"responseType\", \"decode\", opt);\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}\n", "let _regexp = /^https?:\\/\\//i;\r\n\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 { info } from \"@randajan/simple-lib/info\";\nimport { FetchError } from \"../arc/class/FetchError\";\nimport { HttpError } from \"../arc/class/HttpError\";\nimport { start } from \"../arc/opt\";\nimport { isFn, mrgObj, mrgStr, toStr } from \"../arc/tool\";\nimport { attachBodyDecoder, encodeBody } from \"../arc/types\";\nimport { buildUrl } from \"./url\";\n\nexport const diffVersion = (version)=>{\n const v1 = toStr(info.version);\n const v2 = toStr(version);\n\n if (v1 === v2) { return }\n\n const f1 = v1.split(\".\");\n const f2 = v2.split(\".\");\n\n if (f1[0] !== f2[0]) { return \"major\"; }\n if (f1[1] !== f2[1]) { return \"minor\"; }\n if (f1[2] !== f2[2]) { return \"patch\"; }\n}\n\n\nexport const failedError = cause=>FetchError.code(1, \"Failed\", { cause });\nexport const timeoutError = _=>FetchError.code(2, \"Timeout\");\nexport const abortError = _=>FetchError.code(3, \"Aborted\");\nexport const statusError = resp=>HttpError.code(4, resp.statusText, resp.status, { exposeCause:true });\nexport const unreadableError = (resp, cause)=>resp.ok ? FetchError.code(5, \"Unreadable\", { cause }) : statusError(resp);\nexport const undecodableError = (resp, cause, detail)=>resp.ok ? FetchError.code(6, \"Undecodable\", { cause, detail }) : statusError(resp);\n\nexport const parseHeaders = (resp, opt)=>{\n if (!resp || !opt.parseHeaders) { return; }\n return Object.freeze(Object.fromEntries(resp.headers.entries()));\n}\n\nexport const readText = async resp=>{\n try { return await resp.text(); }\n catch(err) { throw unreadableError(resp, err); }\n}\n\nexport const decodeText = (resp, opt, text)=>{\n try { return opt.decodeBody(text); }\n catch(err) { throw undecodableError(resp, err, text); }\n}\n\nexport const normalizeClientError = (any, opt)=>{\n let err = any;\n\n if (!FetchError.is(err)) {\n let custom = isFn(opt.normalizeError);\n if (custom) {\n try { err = opt.normalizeError(err, opt); }\n catch { custom = false; }\n }\n if (!custom || !FetchError.is(err)) {\n err = FetchError.code(0, \"Unknown\", { cause:any });\n }\n }\n\n return err.rise(0).rise(0);\n}\n\nexport const reconstructApiError = (remoteErr)=>{\n if (!remoteErr) { return; }\n const { message, code, httpStatusCode, cause, detail } = remoteErr;\n return HttpError.code(code, message, httpStatusCode, { cause, detail, exposeCause:true });\n}\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.params = mrgObj(a?.params, b?.params);\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n\nexport const prepareOpt = (url, opt, method)=>{\n\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.params);\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.isAbortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(timeoutError()), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\n", "import { executeFetch } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\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 in config\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>executeFetch(_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}\r\n", "import { FetchError } from \"../arc/class/FetchError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n FetchError\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["message", "import_props", "message", "import_props", "import_props", "resp", "import_props", "decode", "encode", "mime", "mime", "decode", "encode", "err", "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: "2.0.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" } };
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: "3.0.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/HttpError.js
33
33
  var import_props2 = require("@randajan/props");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/server/index.js", "<define:__slib_info>", "../../../src/arc/class/HttpError.js", "../../../src/arc/class/FetchError.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/opt.js", "../../../src/server/tool.js", "../../../src/server/class/static.js"],
4
- "sourcesContent": ["import { HttpError } from \"../arc/class/HttpError\";\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 HttpError\r\n}", "", "import { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\r\n", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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 } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\r\n", "import { HttpError } from \"../arc/class/HttpError\";\r\nimport { doFn, isErr, isFn, 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}\r\n\r\n\r\nexport const normalizeServerError = (any, opt)=>{\r\n let err = any;\r\n\r\n if (!HttpError.is(err)) {\r\n let custom = isFn(opt.normalizeError);\r\n if (custom) {\r\n try { err = opt.normalizeError(err, opt); }\r\n catch { custom = false; }\r\n }\r\n if (!custom || !HttpError.is(err)) {\r\n err = HttpError.code(0, \"Unknown\", 500, { cause:any });\r\n }\r\n }\r\n\r\n return err.rise(1).rise(opt.code);\r\n}\r\n", "import info from \"@randajan/simple-lib/info\";\r\nimport { start, end } from \"../../arc/opt\";\r\nimport { isProm } from \"../../arc/tool\";\r\nimport { normalizeServerError, tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeCause } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = normalizeServerError(resp.error, opt);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeCause(!!exposeCause);\r\n }\r\n\r\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); }\r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iCAAC,SAAU,MAAK,MAAO,qBAAoB,aAAc,oIAAmI,SAAU,SAAQ,QAAS,EAAC,MAAO,aAAY,OAAQ,qBAAoB,KAAM,wCAAuC,GAAE,KAAM,eAAc,MAAO,OAAM,MAAO,KAAK,KAAM,EAAC,MAAO,yBAAwB,MAAO,OAAM,EAAC;;;ACAvZ,IAAAA,gBAAqB;;;ACArB,mBAAqB;;;ACEd,IAAM,SAAS,CAAC,GAAG,GAAG,QAAM;AAC/B,MAAI,CAAC,KAAK,CAAC,GAAG;AAAE,WAAO;AAAA,EAAK;AAC5B,MAAI,CAAC,GAAG;AAAE,WAAO,EAAC,GAAG,EAAC;AAAA,EAAG;AACzB,MAAI,CAAC,GAAG;AAAE,WAAO,EAAC,GAAG,EAAC;AAAA,EAAG;AACzB,SAAO,EAAC,GAAG,GAAG,GAAG,EAAC;AACtB;AAEO,IAAM,QAAQ,OAAG,KAAK,OAAO,KAAK,OAAO,CAAC;AAC1C,IAAM,SAAS,CAAC,GAAG,GAAG,MAAI,OAAK;AAClC,MAAI,MAAM,CAAC;AAAG,MAAI,MAAM,CAAC;AACzB,SAAQ,KAAK,IAAK,IAAE,MAAI,IAAI,IAAE;AAClC;AAEO,IAAM,OAAO,SAAK,OAAO,QAAQ;AACjC,IAAM,OAAO,SAAK,KAAK,GAAG,IAAI,IAAI,IAAI;AACtC,IAAM,SAAS,SAAK,eAAe;AACnC,IAAM,QAAQ,SAAK,eAAe;;;ADdlC,IAAM,aAAN,MAAM,oBAAmB,MAAM;AAAA,EAElC,OAAO,GAAG,KAAK;AAAE,WAAO,OAAO,eAAe;AAAA,EAAY;AAAA,EAE1D,OAAO,KAAK,MAAM,SAAS,MAAI,CAAC,GAAG;AAC/B,QAAI,OAAO;AACX,WAAO,IAAI,YAAW,SAAS,GAAG;AAAA,EACtC;AAAA,EAEA,YAAY,SAAS,UAAQ,CAAC,GAAG;AAC7B,UAAM,EAAE,MAAM,GAAG,IAAI,IAAK,WAAW,CAAC;AACtC,UAAM,SAAS,GAAG;AAElB,2BAAK,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,MAAI,OAAO,GAAG,GAAG,GAAG,CAAC;AAEhD,SAAK,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,KAAK,MAAM;AACP,QAAI,QAAQ,MAAM;AAAE,aAAO;AAAA,IAAM;AACjC,SAAK,OAAO;AACZ,WAAO;AAAA,EACX;AAAA,EAEA,SAAS;AACL,UAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,UAAM,OAAO,EAAE,SAAS,GAAG,KAAK;AAChC,QAAI,OAAO;AACP,YAAM,EAAE,SAAAC,UAAS,MAAM,IAAI;AAC3B,WAAK,QAAQ,EAAE,SAAAA,UAAS,MAAM;AAAA,IACjC;AACD,WAAO;AAAA,EACX;AAAA,EAEA,WAAW;AACP,UAAM,EAAE,SAAS,KAAK,IAAI;AAC1B,WAAO,WAAW,QAAQ,OAAO,KAAK,KAAK,IAAI;AAAA,EACnD;AAEJ;;;ADtCO,IAAM,YAAN,MAAM,mBAAkB,WAAW;AAAA,EAEtC,OAAO,GAAG,KAAK;AAAE,WAAO,OAAO,eAAe;AAAA,EAAW;AAAA,EAEzD,OAAO,KAAK,MAAM,SAAS,iBAAe,KAAK,MAAI,CAAC,GAAG;AACnD,QAAI,OAAO;AACX,WAAO,IAAI,WAAU,SAAS,gBAAgB,GAAG;AAAA,EACrD;AAAA,EAEA,YAAY,SAAS,iBAAe,KAAK,UAAQ,CAAC,GAAG;AACjD,UAAM,EAAE,QAAQ,aAAa,GAAG,IAAI,IAAK,WAAW,CAAC;AACrD,UAAM,OAAO,kBAAkB;AAE/B,UAAM,MAAM,WAAW,QAAQ,IAAI;AAEnC,UAAM,KAAK,GAAG;AAEd,4BAAK,MAAM,CAAC,GAAG,gBAAgB,OAAG,CAAC,CAAC,GAAG,QAAW,KAAK;AAEvD,SAAK,SAAS;AACd,SAAK,iBAAiB;AACtB,SAAK,eAAe;AAAA,EACxB;AAAA,EAEA,YAAY,cAAY,MAAM;AAC1B,SAAK,eAAe;AACpB,WAAO;AAAA,EACX;AAAA,EAEA,SAAS;AACL,UAAM,EAAE,SAAS,OAAO,aAAa,IAAI;AACzC,UAAM,OAAO,EAAC,SAAS,GAAG,KAAI;AAC9B,QAAI,gBAAgB,OAAO;AAEvB,YAAM,EAAE,SAAAC,UAAS,MAAM,IAAI;AAC3B,WAAK,QAAQ,EAAE,SAAAA,UAAS,OAAO,GAAG,MAAM;AAAA,IAC3C;AACD,WAAO;AAAA,EACX;AAAA,EAEA,WAAW;AACP,UAAM,EAAE,eAAe,IAAI;AAC3B,WAAO,MAAM,SAAS,IAAI,KAAK,cAAc;AAAA,EACjD;AAEJ;;;AGlDA,IAAAC,gBAAsB;;;ACGf,IAAM,eAAN,cAA2B,SAAS;AAAA,EACvC,YAAY,MAAM;AACd,UAAM;AACN,WAAO,OAAO,eAAe,MAAM,IAAI;AAAA,EAC3C;AACJ;;;ACRA,IAAM,aAAa;AACnB,IAAM,aAAa,CAAA,MAAG;AAClB,MAAI,OAAO,MAAM,UAAU;AAAE,WAAO;EAAG;AAEvC,QAAM,IAAI,CAAC;AACX,aAAW,KAAK,GAAG;AACf,UAAM,aAAa,EAAE,WAAW;AAChC,QAAI,MAAM,EAAE,CAAC;AACb,QAAI,eAAe,OAAO;AAAE,iBAAW,MAAM,CAAA,MAAG,CAAC,GAAG,GAAG;IAAG,OACrD;AAAE,iBAAW,QAAQ,WAAW,GAAG;IAAG;AAC3C,WAAO,eAAe,GAAG,GAAG,UAAU;EAC1C;AAEA,SAAO;AACX;AAEO,IAAM,OAAO,WAAW,wBAAW;AAC1C,IAAO,eAAQ;;;ACjBf,IAAAC,gBAAuB;AAIhB,IAAM,QAAQ,CAAC,QAAM;AACxB,MAAI,IAAI,WAAW;AAAE,WAAO,IAAI,UAAU,KAAK,IAAI;AAAA,EAAG;AAC1D;AAEA,IAAM,UAAU,CAAC,MAAM,YAAU;AAC7B,MAAI,CAAC,SAAS;AAAE;AAAA,EAAQ;AAExB,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,OAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA,KAAI,QAAM;AAAA,EACd;AAEA,MAAI,KAAK,MAAM;AACX,SAAK,SAAS,KAAK,KAAK;AACxB,SAAK,QAAQ,KAAK,KAAK,UAAU;AACjC,SAAK,SAAS,QAAQ,KAAK,KAAK;AAAA,EACpC;AAEA,OAAK,WAAO,sBAAO,CAAC,GAAG,IAAI;AAC/B;AAEO,IAAM,MAAM,CAAC,MAAM,QAAM;AAC5B,QAAM,WAAW,CAAC,CAAC,KAAK;AAExB,UAAQ,MAAM,IAAI,OAAO;AAEzB,MAAI,CAAC,UAAS;AACV,QAAI,KAAK,IAAI,IAAI,GAAG;AAAE,UAAI,KAAK,MAAM,GAAG;AAAA,IAAG;AAAA,EAC/C,OAAO;AACH,QAAI,KAAK,IAAI,OAAO,GAAG;AAAE,UAAI,QAAQ,MAAM,GAAG;AAAA,IAAG;AACjD,QAAI,IAAI,YAAY;AAAE,YAAM,KAAK;AAAA,IAAO;AAAA,EAC5C;AAEA,SAAO,OAAO,OAAO,IAAI;AAC7B;AAEO,IAAM,cAAc,CAAC,UAAQ;AAChC,MAAI,CAAC,OAAO;AAAE,WAAO,SAAK;AAAA,EAAK;AAC/B,MAAI,KAAK,KAAK,GAAG;AAAE,WAAO;AAAA,EAAO;AACjC,QAAM,IAAI,MAAM,mCAAmC;AACvD;AAEO,IAAM,cAAc,CAAC,WAAS;AACjC,SAAO,QAAQ,YAAY,OAAO,KAAK;AAC3C;;;AC/CA,IAAM,aAAa,QAAI,EAAC,CAAC,MAAM,CAAC,IAAI,UAAU,QAAQ,GAAE,EAAC;AACzD,IAAM,YAAY,YAAQ,EAAC,MAAK;AAEzB,IAAM,YAAY,SAAK;AAC1B,MAAI;AAAE,WAAO,WAAW,KAAK,GAAG,CAAC;AAAA,EAAG,SAC9B,OAAO;AAAE,WAAO,EAAC,MAAK;AAAA,EAAG;AACnC;AAEO,IAAM,aAAa,OAAM,QAAK;AACjC,MAAI;AAAE,WAAO,WAAW,MAAM,KAAK,GAAG,CAAC;AAAA,EAAG,SACpC,OAAO;AAAE,WAAO,EAAC,MAAK;AAAA,EAAG;AACnC;AAEO,IAAM,QAAQ,SAAK;AACtB,QAAM,IAAI,UAAU,GAAG;AACvB,MAAI,CAAC,OAAO,EAAE,MAAM,GAAG;AAAE,WAAO;AAAA,EAAG;AACnC,SAAO,EAAE,OAAO,KAAK,UAAU,EAAE,MAAM,SAAS;AACpD;AAGO,IAAM,uBAAuB,CAAC,KAAK,QAAM;AAC5C,MAAI,MAAM;AAEV,MAAI,CAAC,UAAU,GAAG,GAAG,GAAG;AACpB,QAAI,SAAS,KAAK,IAAI,cAAc;AACpC,QAAI,QAAQ;AACR,UAAI;AAAE,cAAM,IAAI,eAAe,KAAK,GAAG;AAAA,MAAG,QACpC;AAAE,iBAAS;AAAA,MAAO;AAAA,IAC5B;AACA,QAAI,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,GAAG;AAC9B,YAAM,UAAU,KAAK,GAAG,WAAW,KAAK,EAAE,OAAM,IAAI,CAAC;AAAA,IAC1D;AAAA,EACJ;AAEA,SAAO,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AACpC;;;AC/BA,IAAM,UAAU,CAAC,MAAM,QAAM;AACzB,QAAM,EAAE,YAAY,IAAI;AAExB,OAAK,aAAa;AAElB,MAAI,KAAK,OAAO;AACZ,SAAK,QAAQ,qBAAqB,KAAK,OAAO,GAAG;AACjD,SAAK,aAAa,KAAK,MAAM;AAC7B,SAAK,MAAM,YAAY,CAAC,CAAC,WAAW;AAAA,EACxC;AAEA,OAAK,aAAK,IAAI,IAAI,aAAK;AAEvB,SAAO,IAAI,MAAM,GAAG;AACxB;AAEA,IAAM,WAAW,OAAO,KAAK,QAAM,QAAQ,MAAM,WAAW,GAAG,GAAG,GAAG;AAE9D,IAAM,aAAa,CAAC,KAAK,QAAM;AAClC,QAAM,GAAG;AAET,QAAM,IAAI,MAAM,GAAG,KAAK;AAExB,MAAI,IAAI,SAAS;AAAE,WAAO,SAAS,KAAK,GAAG;AAAA,EAAG;AAE9C,QAAM,OAAO,MAAM,GAAG;AACtB,MAAI,CAAC,OAAO,IAAI,GAAG;AAAE,WAAO,QAAQ,MAAM,GAAG;AAAA,EAAG;AAChD,SAAO,KAAK,KAAK,CAACC,UAAO,QAAQA,OAAM,GAAG,CAAC;AAC/C;;;AL7BO,IAAM,MAAN,MAAM,aAAY,aAAa;AAAA,EAElC,OAAO,OAAO,SAAO,CAAC,GAAG;AAAE,WAAO,IAAI,KAAI,MAAM;AAAA,EAAG;AAAA,EAEnD,YAAY,SAAO,CAAC,GAAG;AAEnB,gBAAY,MAAM;AAElB,UAAM,CAAC,KAAK,QAAM,WAAW,KAAK,OAAO,QAAQ,GAAG,CAAC,CAAC;AAEtD,WAAO,OAAO,MAAM;AACpB,6BAAM,MAAM,UAAU,MAAM;AAAA,EAChC;AAAA,EAEA,KAAK,MAAM,KAAK,MAAI,CAAC,GAAG;AACpB,QAAI,OAAO;AACX,WAAO,KAAK,KAAK,GAAG;AAAA,EACxB;AAAA,EAEA,OAAO,QAAQ;AAAE,WAAO,IAAI,KAAI,OAAO,KAAK,QAAQ,MAAM,CAAC;AAAA,EAAG;AAClE;;;ALvBO,IAAM,YAAY,IAAI;AAC7B,IAAO,iBAAQ;",
4
+ "sourcesContent": ["import { HttpError } from \"../arc/class/HttpError\";\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 HttpError\r\n}", "", "import { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\r\n", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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\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 } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\r\n", "import { HttpError } from \"../arc/class/HttpError\";\r\nimport { doFn, isErr, isFn, 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}\r\n\r\n\r\nexport const normalizeServerError = (any, opt)=>{\r\n let err = any;\r\n\r\n if (!HttpError.is(err)) {\r\n let custom = isFn(opt.normalizeError);\r\n if (custom) {\r\n try { err = opt.normalizeError(err, opt); }\r\n catch { custom = false; }\r\n }\r\n if (!custom || !HttpError.is(err)) {\r\n err = HttpError.code(0, \"Unknown\", 500, { cause:any });\r\n }\r\n }\r\n\r\n return err.rise(1).rise(opt.code);\r\n}\r\n", "import info from \"@randajan/simple-lib/info\";\r\nimport { start, end } from \"../../arc/opt\";\r\nimport { isProm } from \"../../arc/tool\";\r\nimport { normalizeServerError, tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeCause } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = normalizeServerError(resp.error, opt);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeCause(!!exposeCause);\r\n }\r\n\r\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); }\r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_props", "message", "message", "import_props", "import_props", "resp"]
7
7
  }
@@ -10,7 +10,7 @@ import {
10
10
  isProm,
11
11
  mrgObj,
12
12
  start
13
- } from "./chunk-K7ZQO3VB.js";
13
+ } from "./chunk-ZSJH7BQI.js";
14
14
 
15
15
  // src/server/class/Api.js
16
16
  import { solid } from "@randajan/props";
@@ -112,4 +112,4 @@ export {
112
112
  createApi,
113
113
  server_default
114
114
  };
115
- //# sourceMappingURL=chunk-IUVT7Q4N.js.map
115
+ //# sourceMappingURL=chunk-OQFXJL6I.js.map
@@ -12,7 +12,7 @@ import {
12
12
  mrgStr,
13
13
  start,
14
14
  toStr
15
- } from "./chunk-K7ZQO3VB.js";
15
+ } from "./chunk-ZSJH7BQI.js";
16
16
 
17
17
  // src/client/class/static.js
18
18
  import { solid } from "@randajan/props";
@@ -306,4 +306,4 @@ export {
306
306
  createFetch,
307
307
  client_default
308
308
  };
309
- //# sourceMappingURL=chunk-4NYBELZF.js.map
309
+ //# sourceMappingURL=chunk-VHRZDEWF.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/client/class/static.js", "../../src/arc/types/kinds/json.js", "../../src/arc/types/kinds/form.js", "../../src/arc/types/index.js", "../../src/client/url.js", "../../src/client/tool.js", "../../src/client/class/Fetch.js", "../../src/client/index.js"],
4
- "sourcesContent": ["import info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { end } from \"../../arc/opt\";\nimport { diffVersion, abortError, decodeText, failedError, normalizeClientError, parseHeaders, prepareOpt, readText, reconstructApiError, statusError } from \"../tool\";\nimport { FetchError } from \"../../arc/class/FetchError\";\n\n\nconst localReject = (err, opt)=>({ error:normalizeClientError(FetchError.is(err) ? err : failedError(err), opt) });\nconst remoteReject = (err, opt)=>({ isRemote:true, error:normalizeClientError(err, opt) });\n\nconst remoteResolve = async (resp, opt)=>{\n const text = await readText(resp);\n\n //empty response\n if (!text) {\n if (resp.ok || resp.status === 304) { return { isRemote:true }; }\n throw statusError(resp);\n }\n\n const body = decodeText(resp, opt, text);\n const ver = body?.[info.name];\n\n //foreign response\n if (!ver) {\n if (resp.ok) { return { isRemote:true, result:body } }\n throw statusError(resp);\n }\n\n //apikit response\n body.isRemote = true;\n body.isApiKit = true;\n body.apiKitDiff = diffVersion(ver);\n body.error = reconstructApiError(body.error);\n\n return body;\n}\n\n\nconst fetchBody = async (_fetch, opt) => {\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { body = localReject(err, opt); }\n\n try { body = body || await remoteResolve(resp, opt); }\n catch (err) { body = remoteReject(err, opt); }\n\n const err = body.error;\n\n body.isOk = !err;\n body.isRemote = !!body.isRemote;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = err?.httpStatusCode || resp?.status;\n body.headers = parseHeaders(resp, opt);\n\n body = end(body, opt);\n\n return opt.resultOnly ? body.result : body;\n};\n\n\nexport const executeFetch = (_fetch, url, opt, method)=>{\n opt = prepareOpt(url, opt, method);\n\n const prom = fetchBody(_fetch, opt);\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.isAbortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(abortError()));\n}\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\nimport { isFn } from \"../tool\";\r\n\r\n\r\nconst _types = { json, form };\r\n\r\nconst joinTypeNames = (types={})=>{\n const native = Object.keys(_types);\n const custom = typeof types === \"object\" ? Object.keys(types) : [];\n\n return `'${[...(new Set([...native, ...custom]))].join(\"', '\")}'`;\n}\n\r\n\r\nconst getType = (propertyName, reqFnName, opt)=>{\r\n const tn = (opt[propertyName] || opt.type);\r\n if (!tn) { return json; }\r\n\r\n const customType = opt.types?.[tn];\r\n const type = customType || _types[tn];\n\n if (!type) {\n throw new Error(`Unknown config.${propertyName} '${tn}'. Must be one of: ${joinTypeNames(opt.types)}`);\n }\n\n if (!customType) { return type; }\n\n if (!type.mime || typeof type.mime !== \"string\") {\r\n throw new Error(`Type definition '${tn}' requires 'mime' to be a string`);\r\n }\r\n\r\n if (!isFn(type[reqFnName])) { throw new Error(`Type definition '${tn}' requires '${reqFnName}' to be a function`); }\r\n\r\n return type;\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\n const type = getType(\"requestType\", \"encode\", opt);\n\n opt.headers[\"Content-Type\"] = type.mime;\n opt.body = type.encode(opt.body);\n}\n\nexport const attachBodyDecoder = (opt)=>{\n const type = getType(\"responseType\", \"decode\", opt);\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}\n", "let _regexp = /^https?:\\/\\//i;\r\n\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 { info } from \"@randajan/simple-lib/info\";\nimport { FetchError } from \"../arc/class/FetchError\";\nimport { HttpError } from \"../arc/class/HttpError\";\nimport { start } from \"../arc/opt\";\nimport { isFn, mrgObj, mrgStr, toStr } from \"../arc/tool\";\nimport { attachBodyDecoder, encodeBody } from \"../arc/types\";\nimport { buildUrl } from \"./url\";\n\nexport const diffVersion = (version)=>{\n const v1 = toStr(info.version);\n const v2 = toStr(version);\n\n if (v1 === v2) { return }\n\n const f1 = v1.split(\".\");\n const f2 = v2.split(\".\");\n\n if (f1[0] !== f2[0]) { return \"major\"; }\n if (f1[1] !== f2[1]) { return \"minor\"; }\n if (f1[2] !== f2[2]) { return \"patch\"; }\n}\n\n\nexport const failedError = cause=>FetchError.code(1, \"Failed\", { cause });\nexport const timeoutError = _=>FetchError.code(2, \"Timeout\");\nexport const abortError = _=>FetchError.code(3, \"Aborted\");\nexport const statusError = resp=>HttpError.code(4, resp.statusText, resp.status, { exposeCause:true });\nexport const unreadableError = (resp, cause)=>resp.ok ? FetchError.code(5, \"Unreadable\", { cause }) : statusError(resp);\nexport const undecodableError = (resp, cause, detail)=>resp.ok ? FetchError.code(6, \"Undecodable\", { cause, detail }) : statusError(resp);\n\nexport const parseHeaders = (resp, opt)=>{\n if (!resp || !opt.parseHeaders) { return; }\n return Object.freeze(Object.fromEntries(resp.headers.entries()));\n}\n\nexport const readText = async resp=>{\n try { return await resp.text(); }\n catch(err) { throw unreadableError(resp, err); }\n}\n\nexport const decodeText = (resp, opt, text)=>{\n try { return opt.decodeBody(text); }\n catch(err) { throw undecodableError(resp, err, text); }\n}\n\nexport const normalizeClientError = (any, opt)=>{\n let err = any;\n\n if (!FetchError.is(err)) {\n let custom = isFn(opt.normalizeError);\n if (custom) {\n try { err = opt.normalizeError(err, opt); }\n catch { custom = false; }\n }\n if (!custom || !FetchError.is(err)) {\n err = FetchError.code(0, \"Unknown\", { cause:any });\n }\n }\n\n return err.rise(0).rise(0);\n}\n\nexport const reconstructApiError = (remoteErr)=>{\n if (!remoteErr) { return; }\n const { message, code, httpStatusCode, cause, detail } = remoteErr;\n return HttpError.code(code, message, httpStatusCode, { cause, detail, exposeCause:true });\n}\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.params = mrgObj(a?.params, b?.params);\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n\nexport const prepareOpt = (url, opt, method)=>{\n\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.params);\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.isAbortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(timeoutError()), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\n", "import { executeFetch } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\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 in config\"); }\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>executeFetch(_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}\n", "import { FetchError } from \"../arc/class/FetchError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n FetchError\n}\n"],
4
+ "sourcesContent": ["import info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { end } from \"../../arc/opt\";\nimport { diffVersion, abortError, decodeText, failedError, normalizeClientError, parseHeaders, prepareOpt, readText, reconstructApiError, statusError } from \"../tool\";\nimport { FetchError } from \"../../arc/class/FetchError\";\n\n\nconst localReject = (err, opt)=>({ error:normalizeClientError(FetchError.is(err) ? err : failedError(err), opt) });\nconst remoteReject = (err, opt)=>({ isRemote:true, error:normalizeClientError(err, opt) });\n\nconst remoteResolve = async (resp, opt)=>{\n const text = await readText(resp);\n\n //empty response\n if (!text) {\n if (resp.ok || resp.status === 304) { return { isRemote:true }; }\n throw statusError(resp);\n }\n\n const body = decodeText(resp, opt, text);\n const ver = body?.[info.name];\n\n //foreign response\n if (!ver) {\n if (resp.ok) { return { isRemote:true, result:body } }\n throw statusError(resp);\n }\n\n //apikit response\n body.isRemote = true;\n body.isApiKit = true;\n body.apiKitDiff = diffVersion(ver);\n body.error = reconstructApiError(body.error);\n\n return body;\n}\n\n\nconst fetchBody = async (_fetch, opt) => {\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { body = localReject(err, opt); }\n\n try { body = body || await remoteResolve(resp, opt); }\n catch (err) { body = remoteReject(err, opt); }\n\n const err = body.error;\n\n body.isOk = !err;\n body.isRemote = !!body.isRemote;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = err?.httpStatusCode || resp?.status;\n body.headers = parseHeaders(resp, opt);\n\n body = end(body, opt);\n\n return opt.resultOnly ? body.result : body;\n};\n\n\nexport const executeFetch = (_fetch, url, opt, method)=>{\n opt = prepareOpt(url, opt, method);\n\n const prom = fetchBody(_fetch, opt);\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.isAbortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(abortError()));\n}\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\nimport { isFn } from \"../tool\";\r\n\r\n\r\nconst _types = { json, form };\r\n\r\nconst joinTypeNames = (types={})=>{\n const native = Object.keys(_types);\n const custom = typeof types === \"object\" ? Object.keys(types) : [];\n\n return `'${[...(new Set([...native, ...custom]))].join(\"', '\")}'`;\n}\n\r\n\r\nconst getType = (propertyName, reqFnName, opt)=>{\r\n const tn = (opt[propertyName] || opt.type);\r\n if (!tn) { return json; }\r\n\r\n const customType = opt.types?.[tn];\r\n const type = customType || _types[tn];\n\n if (!type) {\n throw new Error(`Unknown config.${propertyName} '${tn}'. Must be one of: ${joinTypeNames(opt.types)}`);\n }\n\n if (!customType) { return type; }\n\n if (!type.mime || typeof type.mime !== \"string\") {\r\n throw new Error(`Type definition '${tn}' requires 'mime' to be a string`);\r\n }\r\n\r\n if (!isFn(type[reqFnName])) { throw new Error(`Type definition '${tn}' requires '${reqFnName}' to be a function`); }\r\n\r\n return type;\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\n const type = getType(\"requestType\", \"encode\", opt);\n\n opt.headers[\"Content-Type\"] = type.mime;\n opt.body = type.encode(opt.body);\n}\n\nexport const attachBodyDecoder = (opt)=>{\n const type = getType(\"responseType\", \"decode\", opt);\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}\n", "let _regexp = /^https?:\\/\\//i;\r\n\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 { info } from \"@randajan/simple-lib/info\";\nimport { FetchError } from \"../arc/class/FetchError\";\nimport { HttpError } from \"../arc/class/HttpError\";\nimport { start } from \"../arc/opt\";\nimport { isFn, mrgObj, mrgStr, toStr } from \"../arc/tool\";\nimport { attachBodyDecoder, encodeBody } from \"../arc/types\";\nimport { buildUrl } from \"./url\";\n\nexport const diffVersion = (version)=>{\n const v1 = toStr(info.version);\n const v2 = toStr(version);\n\n if (v1 === v2) { return }\n\n const f1 = v1.split(\".\");\n const f2 = v2.split(\".\");\n\n if (f1[0] !== f2[0]) { return \"major\"; }\n if (f1[1] !== f2[1]) { return \"minor\"; }\n if (f1[2] !== f2[2]) { return \"patch\"; }\n}\n\n\nexport const failedError = cause=>FetchError.code(1, \"Failed\", { cause });\nexport const timeoutError = _=>FetchError.code(2, \"Timeout\");\nexport const abortError = _=>FetchError.code(3, \"Aborted\");\nexport const statusError = resp=>HttpError.code(4, resp.statusText, resp.status, { exposeCause:true });\nexport const unreadableError = (resp, cause)=>resp.ok ? FetchError.code(5, \"Unreadable\", { cause }) : statusError(resp);\nexport const undecodableError = (resp, cause, detail)=>resp.ok ? FetchError.code(6, \"Undecodable\", { cause, detail }) : statusError(resp);\n\nexport const parseHeaders = (resp, opt)=>{\n if (!resp || !opt.parseHeaders) { return; }\n return Object.freeze(Object.fromEntries(resp.headers.entries()));\n}\n\nexport const readText = async resp=>{\n try { return await resp.text(); }\n catch(err) { throw unreadableError(resp, err); }\n}\n\nexport const decodeText = (resp, opt, text)=>{\n try { return opt.decodeBody(text); }\n catch(err) { throw undecodableError(resp, err, text); }\n}\n\nexport const normalizeClientError = (any, opt)=>{\n let err = any;\n\n if (!FetchError.is(err)) {\n let custom = isFn(opt.normalizeError);\n if (custom) {\n try { err = opt.normalizeError(err, opt); }\n catch { custom = false; }\n }\n if (!custom || !FetchError.is(err)) {\n err = FetchError.code(0, \"Unknown\", { cause:any });\n }\n }\n\n return err.rise(0).rise(0);\n}\n\nexport const reconstructApiError = (remoteErr)=>{\n if (!remoteErr) { return; }\n const { message, code, httpStatusCode, cause, detail } = remoteErr;\n return HttpError.code(code, message, httpStatusCode, { cause, detail, exposeCause:true });\n}\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.params = mrgObj(a?.params, b?.params);\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n\nexport const prepareOpt = (url, opt, method)=>{\n\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.params);\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.isAbortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(timeoutError()), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\n", "import { executeFetch } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\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 in config\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>executeFetch(_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}\r\n", "import { FetchError } from \"../arc/class/FetchError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n FetchError\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["decode", "encode", "mime", "mime", "decode", "encode", "err", "solid", "solid"]
7
7
  }
@@ -5,7 +5,7 @@ var __export = (target, all) => {
5
5
  };
6
6
 
7
7
  // <define:__slib_info>
8
- 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: "2.0.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" } };
8
+ 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: "3.0.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" } };
9
9
 
10
10
  // src/arc/class/FetchError.js
11
11
  import { safe } from "@randajan/props";
@@ -212,4 +212,4 @@ export {
212
212
  end,
213
213
  configTrait
214
214
  };
215
- //# sourceMappingURL=chunk-K7ZQO3VB.js.map
215
+ //# sourceMappingURL=chunk-ZSJH7BQI.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["<define:__slib_info>", "../../src/arc/class/FetchError.js", "../../src/arc/tool.js", "../../src/arc/class/HttpError.js", "../../src/arc/class/Functionable.js", "../../src/arc/opt.js", "../../node_modules/@randajan/simple-lib/src/info/index.js"],
4
- "sourcesContent": ["", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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 { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\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}", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\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;"],
5
- "mappings": "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",
4
+ "sourcesContent": ["", "import { safe } from \"@randajan/props\";\r\nimport { mrgStr } from \"../tool\";\r\n\r\n\r\nexport class FetchError extends Error {\r\n\r\n static is(any) { return any && any instanceof FetchError; }\r\n\r\n static code(code, message, opt={}) {\r\n opt.code = code;\r\n return new FetchError(message, opt);\r\n }\r\n\r\n constructor(message, options={}) {\r\n const { code, ...opt } = (options || {});\r\n super(message, opt);\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) {\r\n if (code == null) { return this; }\r\n this.code = code;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause } = this;\r\n const body = { message, ...this };\r\n if (cause) {\r\n const { message, stack } = cause;\r\n body.cause = { message, stack };\r\n }\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\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 { safe } from \"@randajan/props\";\r\nimport { FetchError } from \"./FetchError\";\r\n\r\n\r\n\r\nexport class HttpError extends FetchError {\r\n\r\n static is(any) { return any && any instanceof HttpError; }\r\n\r\n static code(code, message, httpStatusCode=400, opt={}) {\r\n opt.code = code;\r\n return new HttpError(message, httpStatusCode, opt);\r\n }\r\n\r\n constructor(message, httpStatusCode=400, options={}) {\r\n const { detail, exposeCause, ...opt } = (options || {});\r\n const http = httpStatusCode ?? 400;\r\n\r\n const msg = message || `HTTP:${http}`;\r\n\r\n super(msg, opt);\r\n\r\n safe(this, {}, \"_exposeCause\", t=>!!t, undefined, false);\r\n\r\n this.detail = detail;\r\n this.httpStatusCode = http;\r\n this._exposeCause = exposeCause;\r\n }\r\n\r\n exposeCause(exposeCause=true) {\r\n this._exposeCause = exposeCause;\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, cause, _exposeCause } = this;\r\n const body = {message, ...this};\r\n if (_exposeCause && cause) {\r\n\r\n const { message, stack } = cause;\r\n body.cause = { message, stack, ...cause };\r\n }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { httpStatusCode } = this;\r\n return super.toString() + ` [${httpStatusCode}]`;\r\n }\r\n\r\n}\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}", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timetrack) { 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) { throw body.error; }\r\n }\r\n\r\n return Object.freeze(body);\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}\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;"],
5
+ "mappings": "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",
6
6
  "names": ["message", "safe", "safe", "message"]
7
7
  }
@@ -2,10 +2,10 @@ import {
2
2
  Fetch,
3
3
  client_default,
4
4
  createFetch
5
- } from "../chunk-4NYBELZF.js";
5
+ } from "../chunk-VHRZDEWF.js";
6
6
  import {
7
7
  FetchError
8
- } from "../chunk-K7ZQO3VB.js";
8
+ } from "../chunk-ZSJH7BQI.js";
9
9
  export {
10
10
  Fetch,
11
11
  FetchError,
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  Fetch,
3
3
  client_default
4
- } from "./chunk-4NYBELZF.js";
4
+ } from "./chunk-VHRZDEWF.js";
5
5
  import {
6
6
  Api,
7
7
  server_default
8
- } from "./chunk-IUVT7Q4N.js";
8
+ } from "./chunk-OQFXJL6I.js";
9
9
  import {
10
10
  FetchError,
11
11
  HttpError
12
- } from "./chunk-K7ZQO3VB.js";
12
+ } from "./chunk-ZSJH7BQI.js";
13
13
  export {
14
14
  Api,
15
15
  Fetch,
@@ -2,10 +2,10 @@ import {
2
2
  Api,
3
3
  createApi,
4
4
  server_default
5
- } from "../chunk-IUVT7Q4N.js";
5
+ } from "../chunk-OQFXJL6I.js";
6
6
  import {
7
7
  HttpError
8
- } from "../chunk-K7ZQO3VB.js";
8
+ } from "../chunk-ZSJH7BQI.js";
9
9
  export {
10
10
  Api,
11
11
  HttpError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@randajan/api-kit",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully",
5
5
  "repository": "randajan/api-kit",
6
6
  "type": "module",