@randajan/api-kit 1.0.11 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,6 +42,7 @@ const apiFetch = createFetch({
42
42
  parseHeaders:false, //if true it will parse response headers
43
43
  resultOnly:false, //if true it will return only result
44
44
  timestamp:false, //if true it will calculate timestamps
45
+ parseBody:(body)=>body, //custom parser for non api-kit server fetches only
45
46
  trait:(opt)=>opt,
46
47
  onOk:(resp, opt)=>{},
47
48
  onError:(resp, opt)=>{ },
@@ -26,6 +26,9 @@ __export(client_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(client_exports);
28
28
 
29
+ // <define:__slib_info>
30
+ var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.0.12", 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
+
29
32
  // src/arc/class/ApiError.js
30
33
  var import_props = require("@randajan/props");
31
34
 
@@ -85,6 +88,28 @@ var ApiError = class _ApiError extends Error {
85
88
  }
86
89
  };
87
90
 
91
+ // node_modules/@randajan/simple-lib/dist/chunk-XM4YD4K6.js
92
+ var enumerable = true;
93
+ var lockObject = (o) => {
94
+ if (typeof o !== "object") {
95
+ return o;
96
+ }
97
+ const r = {};
98
+ for (const i in o) {
99
+ const descriptor = { enumerable };
100
+ let val = o[i];
101
+ if (val instanceof Array) {
102
+ descriptor.get = (_) => [...val];
103
+ } else {
104
+ descriptor.value = lockObject(val);
105
+ }
106
+ Object.defineProperty(r, i, descriptor);
107
+ }
108
+ return r;
109
+ };
110
+ var info = lockObject(define_slib_info_default);
111
+ var info_default = info;
112
+
88
113
  // src/client/class/static.js
89
114
  var import_props3 = require("@randajan/props");
90
115
 
@@ -144,12 +169,31 @@ var end = (body, opt) => {
144
169
  }
145
170
  }
146
171
  endTime(body, opt.startAt);
147
- return Object.freeze(body);
172
+ return opt.resultOnly ? body.result : Object.freeze(body);
173
+ };
174
+ var diffVersion = (version) => {
175
+ const v1 = toStr(info.version);
176
+ const v2 = toStr(version);
177
+ if (v1 === v2) {
178
+ return;
179
+ }
180
+ const f1 = v1.split(".");
181
+ const f2 = v2.split(".");
182
+ if (f1[0] !== f2[0]) {
183
+ return "major";
184
+ }
185
+ if (f1[1] !== f2[1]) {
186
+ return "minor";
187
+ }
188
+ if (f1[2] !== f2[2]) {
189
+ return "patch";
190
+ }
148
191
  };
149
192
 
150
193
  // src/client/class/static.js
151
- var prepareOpt = (opt, method) => {
194
+ var prepareOpt = (url, opt, method) => {
152
195
  start(opt);
196
+ opt.url = buildUrl(mrgStr(opt.url, url), opt.query);
153
197
  if (method) {
154
198
  opt.method = method;
155
199
  }
@@ -187,19 +231,38 @@ var localReject = (opt, error, http) => {
187
231
  error.rise(0).rise(opt.code || 0);
188
232
  return end({ ok: false, http, error }, opt);
189
233
  };
190
- var fetchExe = async (_fetch, url, opt) => {
191
- let resp, body;
234
+ var fetchExe = async (_fetch, opt) => {
235
+ let resp, raw, body;
192
236
  try {
193
- resp = await _fetch(buildUrl(mrgStr(opt.url, url), opt.query), opt);
237
+ resp = await _fetch(opt.url, opt);
194
238
  } catch (err) {
195
239
  return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed"));
196
240
  }
197
241
  const { ok, status, headers, statusText } = resp;
198
242
  try {
199
- body = await resp.json();
243
+ raw = await resp.json();
200
244
  } catch {
201
245
  return localReject(opt, new ApiError(ok ? 3 : 4, ok ? "Unreadable" : statusText || status), status);
202
246
  }
247
+ const apv = raw[info_default.name];
248
+ if (apv) {
249
+ body = raw;
250
+ const diff = diffVersion(apv);
251
+ const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info_default.version}'`;
252
+ if (diff === "major") {
253
+ console.error(msg);
254
+ }
255
+ if (diff === "minor") {
256
+ console.warn(msg);
257
+ }
258
+ } else {
259
+ body = {};
260
+ try {
261
+ body.result = opt.parseBody(raw);
262
+ } catch (err) {
263
+ body.error = err.message || err;
264
+ }
265
+ }
203
266
  if (body.error) {
204
267
  const { code, message } = body.error;
205
268
  body.error = new ApiError(code || mrgStr(opt.code || 0, "1.0", "."), message || body.error);
@@ -209,11 +272,10 @@ var fetchExe = async (_fetch, url, opt) => {
209
272
  if (opt.parseHeaders) {
210
273
  body.headers = Object.freeze(Object.fromEntries(headers.entries()));
211
274
  }
212
- const r = end(body, opt);
213
- return opt.resultOnly ? r.result : r;
275
+ return end(body, opt);
214
276
  };
215
277
  var fetchResolve = (_fetch, url, opt, method) => {
216
- const prom = fetchExe(_fetch, url, prepareOpt(opt, method));
278
+ const prom = fetchExe(_fetch, prepareOpt(url, opt, method));
217
279
  if (opt.timeoutId) {
218
280
  prom.finally((_) => clearTimeout(opt.timeoutId));
219
281
  }
@@ -268,6 +330,7 @@ var Fetch = class _Fetch extends Functionable {
268
330
  throw new Error("Missing fetch function. Please provide it inconfig");
269
331
  }
270
332
  configTrait(config);
333
+ config.parseBody = createTrait(config.parseBody);
271
334
  delete config.fetch;
272
335
  super((url, opt, method) => fetchResolve(_fetch, url, mrgOpt(config, opt), method));
273
336
  Object.freeze(config);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/client/index.js", "../../../src/arc/class/ApiError.js", "../../../src/arc/tool.js", "../../../src/client/class/static.js", "../../../src/arc/url.js", "../../../src/arc/main.js", "../../../src/arc/class/Functionable.js", "../../../src/client/class/Fetch.js", "../../../src/client/tool.js", "../../../src/arc/opt.js"],
4
- "sourcesContent": ["import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;", "import { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (opt, method)=>{\r\n start(opt);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, url, opt) => {\r\n\r\n let resp, body;\r\n\r\n try { resp = await _fetch(buildUrl( mrgStr(opt.url, url), opt.query), opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { body = await resp.json(); }\r\n catch { return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status); }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n const r = end(body, opt);\r\n return opt.resultOnly ? r.result : r;\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, url, prepareOpt(opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return Object.freeze(body);\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 { fetchResolve } 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\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}"],
5
- "mappings": "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",
3
+ "sources": ["../../../src/client/index.js", "<define:__slib_info>", "../../../src/arc/class/ApiError.js", "../../../src/arc/tool.js", "../../../node_modules/@randajan/simple-lib/src/info/index.js", "../../../src/client/class/static.js", "../../../src/arc/url.js", "../../../src/arc/main.js", "../../../src/arc/class/Functionable.js", "../../../src/client/class/Fetch.js", "../../../src/client/tool.js", "../../../src/arc/opt.js"],
4
+ "sourcesContent": ["import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n", "", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "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\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { diffVersion, end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (url, opt, method)=>{\r\n start(opt);\r\n\r\n opt.url = buildUrl( mrgStr(opt.url, url), opt.query);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, opt) => {\r\n\r\n let resp, raw, body;\r\n\r\n try { resp = await _fetch(opt.url, opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { raw = await resp.json(); } catch {\r\n return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status);\r\n }\r\n \r\n const apv = raw[info.name];\r\n \r\n if (apv) {\r\n body = raw;\r\n const diff = diffVersion(apv);\r\n const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info.version}'`;\r\n if (diff === \"major\") { console.error(msg); }\r\n if (diff === \"minor\") { console.warn(msg); }\r\n } else {\r\n body = {};\r\n try { body.result = opt.parseBody(raw); }\r\n catch(err) { body.error = err.message || err; }\r\n }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n return end(body, opt);\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, prepareOpt(url, opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}", "\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 { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}"],
5
+ "mappings": "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",
6
6
  "names": ["import_props", "import_props", "import_props"]
7
7
  }
@@ -27,6 +27,9 @@ __export(index_exports, {
27
27
  });
28
28
  module.exports = __toCommonJS(index_exports);
29
29
 
30
+ // <define:__slib_info>
31
+ var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.0.12", 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
+
30
33
  // src/arc/class/ApiError.js
31
34
  var import_props = require("@randajan/props");
32
35
 
@@ -100,6 +103,28 @@ var Functionable = class extends Function {
100
103
  }
101
104
  };
102
105
 
106
+ // node_modules/@randajan/simple-lib/dist/chunk-XM4YD4K6.js
107
+ var enumerable = true;
108
+ var lockObject = (o) => {
109
+ if (typeof o !== "object") {
110
+ return o;
111
+ }
112
+ const r = {};
113
+ for (const i in o) {
114
+ const descriptor = { enumerable };
115
+ let val = o[i];
116
+ if (val instanceof Array) {
117
+ descriptor.get = (_) => [...val];
118
+ } else {
119
+ descriptor.value = lockObject(val);
120
+ }
121
+ Object.defineProperty(r, i, descriptor);
122
+ }
123
+ return r;
124
+ };
125
+ var info = lockObject(define_slib_info_default);
126
+ var info_default = info;
127
+
103
128
  // src/arc/main.js
104
129
  var import_props2 = require("@randajan/props");
105
130
  var start = (opt) => {
@@ -138,7 +163,25 @@ var end = (body, opt) => {
138
163
  }
139
164
  }
140
165
  endTime(body, opt.startAt);
141
- return Object.freeze(body);
166
+ return opt.resultOnly ? body.result : Object.freeze(body);
167
+ };
168
+ var diffVersion = (version) => {
169
+ const v1 = toStr(info.version);
170
+ const v2 = toStr(version);
171
+ if (v1 === v2) {
172
+ return;
173
+ }
174
+ const f1 = v1.split(".");
175
+ const f2 = v2.split(".");
176
+ if (f1[0] !== f2[0]) {
177
+ return "major";
178
+ }
179
+ if (f1[1] !== f2[1]) {
180
+ return "minor";
181
+ }
182
+ if (f1[2] !== f2[2]) {
183
+ return "patch";
184
+ }
142
185
  };
143
186
 
144
187
  // src/server/tool.js
@@ -171,6 +214,7 @@ var apiExit = (resp, opt) => {
171
214
  if (resp.error) {
172
215
  resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
173
216
  }
217
+ resp[info_default.name] = "1.0.0";
174
218
  return end(resp, opt);
175
219
  };
176
220
  var apiAsync = async (exe, opt) => apiExit(await tryFnAsync(exe), opt);
@@ -247,8 +291,9 @@ var buildUrl = (inputUrl, params) => {
247
291
  };
248
292
 
249
293
  // src/client/class/static.js
250
- var prepareOpt = (opt, method) => {
294
+ var prepareOpt = (url, opt, method) => {
251
295
  start(opt);
296
+ opt.url = buildUrl(mrgStr(opt.url, url), opt.query);
252
297
  if (method) {
253
298
  opt.method = method;
254
299
  }
@@ -286,19 +331,38 @@ var localReject = (opt, error, http) => {
286
331
  error.rise(0).rise(opt.code || 0);
287
332
  return end({ ok: false, http, error }, opt);
288
333
  };
289
- var fetchExe = async (_fetch, url, opt) => {
290
- let resp, body;
334
+ var fetchExe = async (_fetch, opt) => {
335
+ let resp, raw, body;
291
336
  try {
292
- resp = await _fetch(buildUrl(mrgStr(opt.url, url), opt.query), opt);
337
+ resp = await _fetch(opt.url, opt);
293
338
  } catch (err) {
294
339
  return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed"));
295
340
  }
296
341
  const { ok, status, headers, statusText } = resp;
297
342
  try {
298
- body = await resp.json();
343
+ raw = await resp.json();
299
344
  } catch {
300
345
  return localReject(opt, new ApiError(ok ? 3 : 4, ok ? "Unreadable" : statusText || status), status);
301
346
  }
347
+ const apv = raw[info_default.name];
348
+ if (apv) {
349
+ body = raw;
350
+ const diff = diffVersion(apv);
351
+ const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info_default.version}'`;
352
+ if (diff === "major") {
353
+ console.error(msg);
354
+ }
355
+ if (diff === "minor") {
356
+ console.warn(msg);
357
+ }
358
+ } else {
359
+ body = {};
360
+ try {
361
+ body.result = opt.parseBody(raw);
362
+ } catch (err) {
363
+ body.error = err.message || err;
364
+ }
365
+ }
302
366
  if (body.error) {
303
367
  const { code, message } = body.error;
304
368
  body.error = new ApiError(code || mrgStr(opt.code || 0, "1.0", "."), message || body.error);
@@ -308,11 +372,10 @@ var fetchExe = async (_fetch, url, opt) => {
308
372
  if (opt.parseHeaders) {
309
373
  body.headers = Object.freeze(Object.fromEntries(headers.entries()));
310
374
  }
311
- const r = end(body, opt);
312
- return opt.resultOnly ? r.result : r;
375
+ return end(body, opt);
313
376
  };
314
377
  var fetchResolve = (_fetch, url, opt, method) => {
315
- const prom = fetchExe(_fetch, url, prepareOpt(opt, method));
378
+ const prom = fetchExe(_fetch, prepareOpt(url, opt, method));
316
379
  if (opt.timeoutId) {
317
380
  prom.finally((_) => clearTimeout(opt.timeoutId));
318
381
  }
@@ -345,6 +408,7 @@ var Fetch = class _Fetch extends Functionable {
345
408
  throw new Error("Missing fetch function. Please provide it inconfig");
346
409
  }
347
410
  configTrait(config);
411
+ config.parseBody = createTrait(config.parseBody);
348
412
  delete config.fetch;
349
413
  super((url, opt, method) => fetchResolve(_fetch, url, mrgOpt(config, opt), method));
350
414
  Object.freeze(config);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/index.js", "../../src/arc/class/ApiError.js", "../../src/arc/tool.js", "../../src/server/class/Api.js", "../../src/arc/class/Functionable.js", "../../src/arc/main.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/arc/opt.js", "../../src/server/index.js", "../../src/client/class/static.js", "../../src/arc/url.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
- "sourcesContent": ["import { ApiError } from \"./arc/class/ApiError\";\r\nimport createApi, { Api } from \"./server\";\r\nimport createFetch, { Fetch } from \"./client\";\r\n\r\n\r\nexport {\r\n createApi,\r\n createFetch,\r\n Api,\r\n Fetch,\r\n ApiError\r\n}", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;", "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}", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return Object.freeze(body);\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}", "import { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (opt, method)=>{\r\n start(opt);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, url, opt) => {\r\n\r\n let resp, body;\r\n\r\n try { resp = await _fetch(buildUrl( mrgStr(opt.url, url), opt.query), opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { body = await resp.json(); }\r\n catch { return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status); }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n const r = end(body, opt);\r\n return opt.resultOnly ? r.result : r;\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, url, prepareOpt(opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../src/index.js", "<define:__slib_info>", "../../src/arc/class/ApiError.js", "../../src/arc/tool.js", "../../src/server/class/Api.js", "../../src/arc/class/Functionable.js", "../../node_modules/@randajan/simple-lib/src/info/index.js", "../../src/arc/main.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/arc/opt.js", "../../src/server/index.js", "../../src/client/class/static.js", "../../src/arc/url.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
+ "sourcesContent": ["import { ApiError } from \"./arc/class/ApiError\";\r\nimport createApi, { Api } from \"./server\";\r\nimport createFetch, { Fetch } from \"./client\";\r\n\r\n\r\nexport {\r\n createApi,\r\n createFetch,\r\n Api,\r\n Fetch,\r\n ApiError\r\n}", "", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "\r\n\r\n\r\nexport class Functionable extends Function {\r\n constructor(self) {\r\n super();\r\n return Object.setPrototypeOf(self, this);\r\n }\r\n}", "const enumerable = true;\r\nconst lockObject = o=>{\r\n if (typeof o !== \"object\") { return o; }\r\n\r\n const r = {};\r\n for (const i in o) {\r\n const descriptor = { enumerable };\r\n let val = o[i];\r\n if (val instanceof Array) { descriptor.get = _=>[...val]; }\r\n else { descriptor.value = lockObject(val); }\r\n Object.defineProperty(r, i, descriptor);\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport const info = lockObject(__slib_info);\r\nexport default info;", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n resp[info.name] = \"1.0.0\";\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { diffVersion, end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (url, opt, method)=>{\r\n start(opt);\r\n\r\n opt.url = buildUrl( mrgStr(opt.url, url), opt.query);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, opt) => {\r\n\r\n let resp, raw, body;\r\n\r\n try { resp = await _fetch(opt.url, opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { raw = await resp.json(); } catch {\r\n return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status);\r\n }\r\n \r\n const apv = raw[info.name];\r\n \r\n if (apv) {\r\n body = raw;\r\n const diff = diffVersion(apv);\r\n const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info.version}'`;\r\n if (diff === \"major\") { console.error(msg); }\r\n if (diff === \"minor\") { console.warn(msg); }\r\n } else {\r\n body = {};\r\n try { body.result = opt.parseBody(raw); }\r\n catch(err) { body.error = err.message || err; }\r\n }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n return end(body, opt);\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, prepareOpt(url, opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_props", "import_props", "resp", "import_props", "import_props"]
7
7
  }
@@ -26,6 +26,9 @@ __export(server_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(server_exports);
28
28
 
29
+ // <define:__slib_info>
30
+ var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.0.12", 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
+
29
32
  // src/arc/class/ApiError.js
30
33
  var import_props = require("@randajan/props");
31
34
 
@@ -99,6 +102,28 @@ var Functionable = class extends Function {
99
102
  }
100
103
  };
101
104
 
105
+ // node_modules/@randajan/simple-lib/dist/chunk-XM4YD4K6.js
106
+ var enumerable = true;
107
+ var lockObject = (o) => {
108
+ if (typeof o !== "object") {
109
+ return o;
110
+ }
111
+ const r = {};
112
+ for (const i in o) {
113
+ const descriptor = { enumerable };
114
+ let val = o[i];
115
+ if (val instanceof Array) {
116
+ descriptor.get = (_) => [...val];
117
+ } else {
118
+ descriptor.value = lockObject(val);
119
+ }
120
+ Object.defineProperty(r, i, descriptor);
121
+ }
122
+ return r;
123
+ };
124
+ var info = lockObject(define_slib_info_default);
125
+ var info_default = info;
126
+
102
127
  // src/arc/main.js
103
128
  var import_props2 = require("@randajan/props");
104
129
  var start = (opt) => {
@@ -137,7 +162,7 @@ var end = (body, opt) => {
137
162
  }
138
163
  }
139
164
  endTime(body, opt.startAt);
140
- return Object.freeze(body);
165
+ return opt.resultOnly ? body.result : Object.freeze(body);
141
166
  };
142
167
 
143
168
  // src/server/tool.js
@@ -170,6 +195,7 @@ var apiExit = (resp, opt) => {
170
195
  if (resp.error) {
171
196
  resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
172
197
  }
198
+ resp[info_default.name] = "1.0.0";
173
199
  return end(resp, opt);
174
200
  };
175
201
  var apiAsync = async (exe, opt) => apiExit(await tryFnAsync(exe), opt);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/server/index.js", "../../../src/arc/class/ApiError.js", "../../../src/arc/tool.js", "../../../src/server/class/Api.js", "../../../src/arc/class/Functionable.js", "../../../src/arc/main.js", "../../../src/server/tool.js", "../../../src/server/class/static.js", "../../../src/arc/opt.js"],
4
- "sourcesContent": ["import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;", "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}", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return Object.freeze(body);\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}"],
5
- "mappings": "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",
3
+ "sources": ["../../../src/server/index.js", "<define:__slib_info>", "../../../src/arc/class/ApiError.js", "../../../src/arc/tool.js", "../../../src/server/class/Api.js", "../../../src/arc/class/Functionable.js", "../../../node_modules/@randajan/simple-lib/src/info/index.js", "../../../src/arc/main.js", "../../../src/server/tool.js", "../../../src/server/class/static.js", "../../../src/arc/opt.js"],
4
+ "sourcesContent": ["import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}", "", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "\r\n\r\n\r\nexport class Functionable extends Function {\r\n constructor(self) {\r\n super();\r\n return Object.setPrototypeOf(self, this);\r\n }\r\n}", "const enumerable = true;\r\nconst lockObject = o=>{\r\n if (typeof o !== \"object\") { return o; }\r\n\r\n const r = {};\r\n for (const i in o) {\r\n const descriptor = { enumerable };\r\n let val = o[i];\r\n if (val instanceof Array) { descriptor.get = _=>[...val]; }\r\n else { descriptor.value = lockObject(val); }\r\n Object.defineProperty(r, i, descriptor);\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport const info = lockObject(__slib_info);\r\nexport default info;", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n resp[info.name] = \"1.0.0\";\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}"],
5
+ "mappings": "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",
6
6
  "names": ["import_props", "import_props", "resp"]
7
7
  }
@@ -1,3 +1,6 @@
1
+ // <define:__slib_info>
2
+ var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.0.12", 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" } };
3
+
1
4
  // src/arc/class/ApiError.js
2
5
  import { safe, solid } from "@randajan/props";
3
6
 
@@ -82,6 +85,28 @@ var configTrait = (config) => {
82
85
  config.trait = createTrait(config.trait);
83
86
  };
84
87
 
88
+ // node_modules/@randajan/simple-lib/dist/chunk-XM4YD4K6.js
89
+ var enumerable = true;
90
+ var lockObject = (o) => {
91
+ if (typeof o !== "object") {
92
+ return o;
93
+ }
94
+ const r = {};
95
+ for (const i in o) {
96
+ const descriptor = { enumerable };
97
+ let val = o[i];
98
+ if (val instanceof Array) {
99
+ descriptor.get = (_) => [...val];
100
+ } else {
101
+ descriptor.value = lockObject(val);
102
+ }
103
+ Object.defineProperty(r, i, descriptor);
104
+ }
105
+ return r;
106
+ };
107
+ var info = lockObject(define_slib_info_default);
108
+ var info_default = info;
109
+
85
110
  // src/arc/main.js
86
111
  import { solids } from "@randajan/props";
87
112
  var start = (opt) => {
@@ -120,7 +145,25 @@ var end = (body, opt) => {
120
145
  }
121
146
  }
122
147
  endTime(body, opt.startAt);
123
- return Object.freeze(body);
148
+ return opt.resultOnly ? body.result : Object.freeze(body);
149
+ };
150
+ var diffVersion = (version) => {
151
+ const v1 = toStr(info.version);
152
+ const v2 = toStr(version);
153
+ if (v1 === v2) {
154
+ return;
155
+ }
156
+ const f1 = v1.split(".");
157
+ const f2 = v2.split(".");
158
+ if (f1[0] !== f2[0]) {
159
+ return "major";
160
+ }
161
+ if (f1[1] !== f2[1]) {
162
+ return "minor";
163
+ }
164
+ if (f1[2] !== f2[2]) {
165
+ return "patch";
166
+ }
124
167
  };
125
168
 
126
169
  export {
@@ -132,8 +175,11 @@ export {
132
175
  isErr,
133
176
  ApiError,
134
177
  Functionable,
178
+ info_default,
135
179
  start,
136
180
  end,
181
+ diffVersion,
182
+ createTrait,
137
183
  configTrait
138
184
  };
139
- //# sourceMappingURL=chunk-7YT3426Q.js.map
185
+ //# sourceMappingURL=chunk-DQZXHS7N.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["<define:__slib_info>", "../../src/arc/class/ApiError.js", "../../src/arc/tool.js", "../../src/arc/class/Functionable.js", "../../src/arc/opt.js", "../../node_modules/@randajan/simple-lib/src/info/index.js", "../../src/arc/main.js"],
4
+ "sourcesContent": ["", "import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "\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 { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}", "const enumerable = true;\r\nconst lockObject = o=>{\r\n if (typeof o !== \"object\") { return o; }\r\n\r\n const r = {};\r\n for (const i in o) {\r\n const descriptor = { enumerable };\r\n let val = o[i];\r\n if (val instanceof Array) { descriptor.get = _=>[...val]; }\r\n else { descriptor.value = lockObject(val); }\r\n Object.defineProperty(r, i, descriptor);\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport const info = lockObject(__slib_info);\r\nexport default info;", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -2,12 +2,15 @@ import {
2
2
  ApiError,
3
3
  Functionable,
4
4
  configTrait,
5
+ createTrait,
6
+ diffVersion,
5
7
  end,
8
+ info_default,
6
9
  isFn,
7
10
  mrgObj,
8
11
  mrgStr,
9
12
  start
10
- } from "./chunk-7YT3426Q.js";
13
+ } from "./chunk-DQZXHS7N.js";
11
14
 
12
15
  // src/client/class/static.js
13
16
  import { solid } from "@randajan/props";
@@ -31,8 +34,9 @@ var buildUrl = (inputUrl, params) => {
31
34
  };
32
35
 
33
36
  // src/client/class/static.js
34
- var prepareOpt = (opt, method) => {
37
+ var prepareOpt = (url, opt, method) => {
35
38
  start(opt);
39
+ opt.url = buildUrl(mrgStr(opt.url, url), opt.query);
36
40
  if (method) {
37
41
  opt.method = method;
38
42
  }
@@ -70,19 +74,38 @@ var localReject = (opt, error, http) => {
70
74
  error.rise(0).rise(opt.code || 0);
71
75
  return end({ ok: false, http, error }, opt);
72
76
  };
73
- var fetchExe = async (_fetch, url, opt) => {
74
- let resp, body;
77
+ var fetchExe = async (_fetch, opt) => {
78
+ let resp, raw, body;
75
79
  try {
76
- resp = await _fetch(buildUrl(mrgStr(opt.url, url), opt.query), opt);
80
+ resp = await _fetch(opt.url, opt);
77
81
  } catch (err) {
78
82
  return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed"));
79
83
  }
80
84
  const { ok, status, headers, statusText } = resp;
81
85
  try {
82
- body = await resp.json();
86
+ raw = await resp.json();
83
87
  } catch {
84
88
  return localReject(opt, new ApiError(ok ? 3 : 4, ok ? "Unreadable" : statusText || status), status);
85
89
  }
90
+ const apv = raw[info_default.name];
91
+ if (apv) {
92
+ body = raw;
93
+ const diff = diffVersion(apv);
94
+ const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info_default.version}'`;
95
+ if (diff === "major") {
96
+ console.error(msg);
97
+ }
98
+ if (diff === "minor") {
99
+ console.warn(msg);
100
+ }
101
+ } else {
102
+ body = {};
103
+ try {
104
+ body.result = opt.parseBody(raw);
105
+ } catch (err) {
106
+ body.error = err.message || err;
107
+ }
108
+ }
86
109
  if (body.error) {
87
110
  const { code, message } = body.error;
88
111
  body.error = new ApiError(code || mrgStr(opt.code || 0, "1.0", "."), message || body.error);
@@ -92,11 +115,10 @@ var fetchExe = async (_fetch, url, opt) => {
92
115
  if (opt.parseHeaders) {
93
116
  body.headers = Object.freeze(Object.fromEntries(headers.entries()));
94
117
  }
95
- const r = end(body, opt);
96
- return opt.resultOnly ? r.result : r;
118
+ return end(body, opt);
97
119
  };
98
120
  var fetchResolve = (_fetch, url, opt, method) => {
99
- const prom = fetchExe(_fetch, url, prepareOpt(opt, method));
121
+ const prom = fetchExe(_fetch, prepareOpt(url, opt, method));
100
122
  if (opt.timeoutId) {
101
123
  prom.finally((_) => clearTimeout(opt.timeoutId));
102
124
  }
@@ -129,6 +151,7 @@ var Fetch = class _Fetch extends Functionable {
129
151
  throw new Error("Missing fetch function. Please provide it inconfig");
130
152
  }
131
153
  configTrait(config);
154
+ config.parseBody = createTrait(config.parseBody);
132
155
  delete config.fetch;
133
156
  super((url, opt, method) => fetchResolve(_fetch, url, mrgOpt(config, opt), method));
134
157
  Object.freeze(config);
@@ -169,4 +192,4 @@ export {
169
192
  createFetch,
170
193
  client_default
171
194
  };
172
- //# sourceMappingURL=chunk-PHRMZY2L.js.map
195
+ //# sourceMappingURL=chunk-HTEDNII2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/client/class/static.js", "../../src/arc/url.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
+ "sourcesContent": ["import info from \"@randajan/simple-lib/info\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { diffVersion, end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (url, opt, method)=>{\r\n start(opt);\r\n\r\n opt.url = buildUrl( mrgStr(opt.url, url), opt.query);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, opt) => {\r\n\r\n let resp, raw, body;\r\n\r\n try { resp = await _fetch(opt.url, opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { raw = await resp.json(); } catch {\r\n return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status);\r\n }\r\n \r\n const apv = raw[info.name];\r\n \r\n if (apv) {\r\n body = raw;\r\n const diff = diffVersion(apv);\r\n const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info.version}'`;\r\n if (diff === \"major\") { console.error(msg); }\r\n if (diff === \"minor\") { console.warn(msg); }\r\n } else {\r\n body = {};\r\n try { body.result = opt.parseBody(raw); }\r\n catch(err) { body.error = err.message || err; }\r\n }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n return end(body, opt);\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, prepareOpt(url, opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["solid", "solid"]
7
+ }
@@ -4,11 +4,12 @@ import {
4
4
  configTrait,
5
5
  doFn,
6
6
  end,
7
+ info_default,
7
8
  isErr,
8
9
  isProm,
9
10
  mrgObj,
10
11
  start
11
- } from "./chunk-7YT3426Q.js";
12
+ } from "./chunk-DQZXHS7N.js";
12
13
 
13
14
  // src/server/class/Api.js
14
15
  import { solid } from "@randajan/props";
@@ -43,6 +44,7 @@ var apiExit = (resp, opt) => {
43
44
  if (resp.error) {
44
45
  resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
45
46
  }
47
+ resp[info_default.name] = "1.0.0";
46
48
  return end(resp, opt);
47
49
  };
48
50
  var apiAsync = async (exe, opt) => apiExit(await tryFnAsync(exe), opt);
@@ -88,4 +90,4 @@ export {
88
90
  createApi,
89
91
  server_default
90
92
  };
91
- //# sourceMappingURL=chunk-FINTZKAV.js.map
93
+ //# sourceMappingURL=chunk-SEVUH7X3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/server/class/Api.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/server/index.js"],
4
+ "sourcesContent": ["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}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n resp[info.name] = \"1.0.0\";\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA,SAAS,aAAa;;;ACEtB,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;;;ACZA,IAAM,UAAU,CAAC,MAAM,QAAM;AACzB,MAAI,KAAK,OAAO;AAAE,SAAK,QAAQ,SAAS,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AAAA,EAAG;AAClF,OAAK,aAAK,IAAI,IAAI;AAClB,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,CAACA,UAAO,QAAQA,OAAM,GAAG,CAAC;AAC/C;;;AFnBO,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,UAAM,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;;;AGvBO,IAAM,YAAY,IAAI;AAC7B,IAAO,iBAAQ;",
6
+ "names": ["resp"]
7
+ }
@@ -2,10 +2,10 @@ import {
2
2
  Fetch,
3
3
  client_default,
4
4
  createFetch
5
- } from "../chunk-PHRMZY2L.js";
5
+ } from "../chunk-HTEDNII2.js";
6
6
  import {
7
7
  ApiError
8
- } from "../chunk-7YT3426Q.js";
8
+ } from "../chunk-DQZXHS7N.js";
9
9
  export {
10
10
  ApiError,
11
11
  Fetch,
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  Fetch,
3
3
  client_default
4
- } from "./chunk-PHRMZY2L.js";
4
+ } from "./chunk-HTEDNII2.js";
5
5
  import {
6
6
  Api,
7
7
  server_default
8
- } from "./chunk-FINTZKAV.js";
8
+ } from "./chunk-SEVUH7X3.js";
9
9
  import {
10
10
  ApiError
11
- } from "./chunk-7YT3426Q.js";
11
+ } from "./chunk-DQZXHS7N.js";
12
12
  export {
13
13
  Api,
14
14
  ApiError,
@@ -2,10 +2,10 @@ import {
2
2
  Api,
3
3
  createApi,
4
4
  server_default
5
- } from "../chunk-FINTZKAV.js";
5
+ } from "../chunk-SEVUH7X3.js";
6
6
  import {
7
7
  ApiError
8
- } from "../chunk-7YT3426Q.js";
8
+ } from "../chunk-DQZXHS7N.js";
9
9
  export {
10
10
  Api,
11
11
  ApiError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@randajan/api-kit",
3
- "version": "1.0.11",
3
+ "version": "1.1.0",
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",
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/arc/class/ApiError.js", "../../src/arc/tool.js", "../../src/arc/class/Functionable.js", "../../src/arc/opt.js", "../../src/arc/main.js"],
4
- "sourcesContent": ["import { safe, solid } from \"@randajan/props\";\r\nimport { mrgStr, toStr } from \"../tool\";\r\n\r\n\r\n\r\nexport class ApiError extends Error {\r\n\r\n static create(code, message) { return new ApiError(code, message); }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg);\r\n return solid(apierr, \"stack\", any.stack, false);\r\n }\r\n\r\n constructor(code, message) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message } = this;\r\n return {message, ...this};\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;", "\r\n\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 { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}", "import { solids } from \"@randajan/props\";\r\nimport { isFn } from \"./tool\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n if (!body.error){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError) { throw body.error; }\r\n }\r\n\r\n endTime(body, opt.startAt);\r\n return Object.freeze(body);\r\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/server/class/Api.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/server/index.js"],
4
- "sourcesContent": ["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}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}"],
5
- "mappings": ";;;;;;;;;;;;;AAAA,SAAS,aAAa;;;ACEtB,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;;;ACbA,IAAM,UAAU,CAAC,MAAM,QAAM;AACzB,MAAI,KAAK,OAAO;AAAE,SAAK,QAAQ,SAAS,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AAAA,EAAG;AAElF,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,CAACA,UAAO,QAAQA,OAAM,GAAG,CAAC;AAC/C;;;AFlBO,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,UAAM,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;;;AGvBO,IAAM,YAAY,IAAI;AAC7B,IAAO,iBAAQ;",
6
- "names": ["resp"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/client/class/static.js", "../../src/arc/url.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
- "sourcesContent": ["import { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (opt, method)=>{\r\n start(opt);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, url, opt) => {\r\n\r\n let resp, body;\r\n\r\n try { resp = await _fetch(buildUrl( mrgStr(opt.url, url), opt.query), opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { body = await resp.json(); }\r\n catch { return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status); }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n const r = end(body, opt);\r\n return opt.resultOnly ? r.result : r;\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, url, prepareOpt(opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
- "mappings": "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",
6
- "names": ["solid", "solid"]
7
- }