@randajan/api-kit 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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] = info.version;\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { 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,aAAK;AACvB,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;",
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\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeStack } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = ApiError.to(0, resp.error, 500).rise(1).rise(opt.code);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeStack(!!exposeStack);\r\n }\n\n resp[info.name] = info.version;\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); }\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\n", "import { 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,QAAM,EAAE,YAAY,IAAI;AAExB,OAAK,aAAa;AAElB,MAAI,KAAK,OAAO;AACZ,SAAK,QAAQ,SAAS,GAAG,GAAG,KAAK,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AAClE,SAAK,aAAa,KAAK,MAAM;AAC7B,SAAK,MAAM,YAAY,CAAC,CAAC,WAAW;AAAA,EACxC;AAEA,OAAK,aAAK,IAAI,IAAI,aAAK;AAEvB,SAAO,IAAI,MAAM,GAAG;AACxB;AAEA,IAAM,WAAW,OAAO,KAAK,QAAM,QAAQ,MAAM,WAAW,GAAG,GAAG,GAAG;AAE9D,IAAM,aAAa,CAAC,KAAK,QAAM;AAClC,QAAM,GAAG;AAET,QAAM,IAAI,MAAM,GAAG,KAAK;AAExB,MAAI,IAAI,SAAS;AAAE,WAAO,SAAS,KAAK,GAAG;AAAA,EAAG;AAE9C,QAAM,OAAO,MAAM,GAAG;AACtB,MAAI,CAAC,OAAO,IAAI,GAAG;AAAE,WAAO,QAAQ,MAAM,GAAG;AAAA,EAAG;AAChD,SAAO,KAAK,KAAK,CAACA,UAAO,QAAQA,OAAM,GAAG,CAAC;AAC/C;;;AF7BO,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
6
  "names": ["resp"]
7
7
  }
@@ -5,7 +5,7 @@ var __export = (target, all) => {
5
5
  };
6
6
 
7
7
  // <define:__slib_info>
8
- var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.1.1", author: { name: "Jan Randa", email: "jnranda@gmail.com", url: "https://www.linkedin.com/in/randajan/" }, env: "development", mode: "web", port: 3e3, dir: { root: "C:\\dev\\lib\\api-kit", dist: "dist" } };
8
+ var define_slib_info_default = { isBuild: true, name: "@randajan/api-kit", description: "A lightweight wrapper around fetch that always returns a structured JSON response, handling errors and network issues gracefully", version: "1.2.0", author: { name: "Jan Randa", email: "jnranda@gmail.com", url: "https://www.linkedin.com/in/randajan/" }, env: "development", mode: "web", port: 3e3, dir: { root: "C:\\dev\\lib\\api-kit", dist: "dist" } };
9
9
 
10
10
  // src/arc/class/ApiError.js
11
11
  import { safe, solid } from "@randajan/props";
@@ -36,32 +36,44 @@ var isErr = (any) => any instanceof Error;
36
36
 
37
37
  // src/arc/class/ApiError.js
38
38
  var ApiError = class _ApiError extends Error {
39
- static create(code, message) {
40
- return new _ApiError(code, message);
39
+ static create(code, message, httpStatusCode = 400, remoteStack = void 0) {
40
+ return new _ApiError(code, message, httpStatusCode, remoteStack);
41
41
  }
42
42
  static is(any) {
43
43
  return any instanceof _ApiError;
44
44
  }
45
- static to(code, any) {
45
+ static to(code, any, httpStatusCode = 500) {
46
46
  if (_ApiError.is(any)) {
47
47
  return any;
48
48
  }
49
49
  const msg = toStr(any?.message || any) || "Unknown";
50
- const apierr = _ApiError.create(code, msg);
51
- return solid(apierr, "stack", any.stack, false);
50
+ const apierr = _ApiError.create(code, msg, httpStatusCode);
51
+ return solid(apierr, "stack", any?.stack);
52
52
  }
53
- constructor(code, message) {
53
+ constructor(code, message, httpStatusCode = 400, remoteStack = void 0) {
54
54
  super(message);
55
55
  safe(this, {}, "code", (t, f) => mrgStr(t, f, "."));
56
+ solid(this, "httpStatusCode", httpStatusCode ?? 400, true);
57
+ solid(this, "remoteStack", remoteStack);
56
58
  this.rise(code);
57
59
  }
58
60
  rise(code = 0) {
59
61
  this.code = code || 0;
60
62
  return this;
61
63
  }
64
+ exposeStack(exposeStack = true) {
65
+ solid(this, "_exposeStack", !!exposeStack, false, true);
66
+ return this;
67
+ }
62
68
  toJSON() {
63
- const { message } = this;
64
- return { message, ...this };
69
+ const { message, stack, _exposeStack } = this;
70
+ const body = { message, ...this };
71
+ if (_exposeStack) {
72
+ body.stack = stack;
73
+ } else {
74
+ delete body.stack;
75
+ }
76
+ return body;
65
77
  }
66
78
  toString() {
67
79
  const { message, code } = this;
@@ -138,7 +150,9 @@ var endTime = (body, startAt) => {
138
150
  body.time = solids({}, time);
139
151
  };
140
152
  var end = (body, opt) => {
141
- if (!body.error) {
153
+ const hasError = !!body.error;
154
+ endTime(body, opt.startAt);
155
+ if (!hasError) {
142
156
  if (isFn(opt.onOk)) {
143
157
  opt.onOk(body, opt);
144
158
  }
@@ -146,11 +160,10 @@ var end = (body, opt) => {
146
160
  if (isFn(opt.onError)) {
147
161
  opt.onError(body, opt);
148
162
  }
149
- if (opt.throwError) {
163
+ if (opt.throwError || opt.resultOnly) {
150
164
  throw body.error;
151
165
  }
152
166
  }
153
- endTime(body, opt.startAt);
154
167
  return opt.resultOnly ? body.result : Object.freeze(body);
155
168
  };
156
169
  var diffVersion = (version) => {
@@ -189,4 +202,4 @@ export {
189
202
  createTrait,
190
203
  configTrait
191
204
  };
192
- //# sourceMappingURL=chunk-HYSF3GMO.js.map
205
+ //# sourceMappingURL=chunk-7K2N7A5V.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, httpStatusCode=400, remoteStack=undefined) {\r\n return new ApiError(code, message, httpStatusCode, remoteStack);\r\n }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any, httpStatusCode=500) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg, httpStatusCode);\r\n return solid(apierr, \"stack\", any?.stack);\r\n }\r\n\r\n constructor(code, message, httpStatusCode=400, remoteStack=undefined) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n solid(this, \"httpStatusCode\", httpStatusCode ?? 400, true);\r\n solid(this, \"remoteStack\", remoteStack);\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n exposeStack(exposeStack=true) {\r\n solid(this, \"_exposeStack\", !!exposeStack, false, true);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, stack, _exposeStack } = this;\r\n const body = {message, ...this};\r\n if (_exposeStack) { body.stack = stack; }\r\n else { delete body.stack; }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}\r\n", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "\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 const hasError = !!body.error;\r\n\r\n endTime(body, opt.startAt);\r\n\r\n if (!hasError){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError || opt.resultOnly) { throw body.error; }\r\n }\r\n\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}\r\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -11,7 +11,7 @@ import {
11
11
  mrgObj,
12
12
  mrgStr,
13
13
  start
14
- } from "./chunk-HYSF3GMO.js";
14
+ } from "./chunk-7K2N7A5V.js";
15
15
 
16
16
  // src/client/class/static.js
17
17
  import { solid } from "@randajan/props";
@@ -96,72 +96,111 @@ var prepareOpt = (url, opt, method) => {
96
96
  opt.signal = opt.abortController.signal;
97
97
  }
98
98
  if (hasTimeout) {
99
- opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, "Timeout")), opt.timeout);
99
+ opt.timeoutId = setTimeout(() => opt.abortController?.abort(ApiError.create(1, "Timeout", 408)), opt.timeout);
100
100
  }
101
101
  if (isFn(opt.trait)) {
102
102
  opt = opt.trait(opt) || opt;
103
103
  }
104
104
  return opt;
105
105
  };
106
- var localReject = (opt, error, http) => {
107
- const { code } = error;
108
- if (code == 0) {
109
- http = 503;
110
- } else if (code == 1) {
111
- http = 408;
112
- } else if (code == 2) {
113
- http = 499;
114
- } else if (code == 3) {
115
- http = 415;
116
- } else if (!http) {
117
- http = 400;
118
- }
106
+ var localReject = (opt, error) => {
107
+ const { httpStatusCode } = error;
119
108
  error.rise(0).rise(opt.code || 0);
120
- return end({ ok: false, http, error }, opt);
109
+ return end({ isOk: false, isRemote: false, isApiKit: false, statusCode: httpStatusCode, error }, opt);
121
110
  };
122
- var fetchExe = async (_fetch, opt) => {
123
- let resp, raw, body;
111
+ var statusError = ({ status, statusText }) => ApiError.create(4, statusText || status, status);
112
+ var unreadableError = (resp) => resp.ok ? ApiError.create(3, "Unreadable", 415) : statusError(resp);
113
+ var foreignError = (resp) => ({ isApiKit: false, error: statusError(resp) });
114
+ var readText = async (resp) => {
124
115
  try {
125
- resp = await _fetch(opt.url, opt);
126
- } catch (err) {
127
- return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed"));
116
+ return await resp.text();
117
+ } catch {
118
+ throw unreadableError(resp);
128
119
  }
129
- const { ok, status, headers, statusText } = resp;
120
+ };
121
+ var decodeText = (text, opt, resp) => {
130
122
  try {
131
- raw = opt.decodeBody(await resp.text());
123
+ return opt.decodeBody(text);
132
124
  } catch {
133
- return localReject(opt, new ApiError(ok ? 3 : 4, ok ? "Unreadable" : statusText || status), status);
125
+ throw unreadableError(resp);
126
+ }
127
+ };
128
+ var resolveEmpty = (resp) => {
129
+ if (!resp.ok && resp.status !== 304) {
130
+ return foreignError(resp);
134
131
  }
132
+ return { result: null, isApiKit: false };
133
+ };
134
+ var resolveApiKit = (raw, opt) => {
135
135
  const apv = raw[info_default.name];
136
- if (apv) {
137
- body = raw;
138
- const diff = diffVersion(apv);
139
- const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info_default.version}'`;
140
- if (diff === "major") {
141
- console.error(msg);
142
- }
143
- if (diff === "minor") {
144
- console.warn(msg);
145
- }
146
- } else {
147
- body = {};
148
- try {
149
- body.result = opt.parseBody(raw);
150
- } catch (err) {
151
- body.error = err.message || err;
152
- }
136
+ const diff = diffVersion(apv);
137
+ const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info_default.version}'`;
138
+ if (diff === "major") {
139
+ console.error(msg);
153
140
  }
154
- if (body.error) {
155
- const { code, message } = body.error;
156
- body.error = new ApiError(code || mrgStr(opt.code || 0, "1.0", "."), message || body.error);
141
+ if (diff === "minor") {
142
+ console.warn(msg);
157
143
  }
158
- body.ok = !body.error;
159
- body.http = status;
144
+ raw.isApiKit = true;
145
+ return raw;
146
+ };
147
+ var resolveForeign = (raw, opt, resp) => {
148
+ if (!resp.ok) {
149
+ return foreignError(resp);
150
+ }
151
+ const body = { isApiKit: false };
152
+ try {
153
+ body.result = opt.parseBody(raw);
154
+ } catch (err) {
155
+ body.error = err.message || err;
156
+ }
157
+ return body;
158
+ };
159
+ var resolveDecoded = (raw, opt, resp) => {
160
+ if (raw?.[info_default.name]) {
161
+ return resolveApiKit(raw, opt);
162
+ }
163
+ return resolveForeign(raw, opt, resp);
164
+ };
165
+ var normalizeError = (body, opt, resp) => {
166
+ if (!body.error || ApiError.is(body.error)) {
167
+ return;
168
+ }
169
+ const { code, message, stack, httpStatusCode } = body.error;
170
+ body.error = ApiError.create(
171
+ code || mrgStr(opt.code || 0, "1.0", "."),
172
+ message || body.error,
173
+ httpStatusCode ?? body.statusCode ?? resp.status,
174
+ stack
175
+ );
176
+ };
177
+ var remoteResolve = (body, opt, resp) => {
178
+ normalizeError(body, opt, resp);
179
+ body.isOk = !body.error;
180
+ body.isRemote = true;
181
+ body.isApiKit = !!body.isApiKit;
182
+ body.statusCode = body.statusCode ?? body.error?.httpStatusCode ?? resp.status;
160
183
  if (opt.parseHeaders) {
161
- body.headers = Object.freeze(Object.fromEntries(headers.entries()));
184
+ body.headers = Object.freeze(Object.fromEntries(resp.headers.entries()));
162
185
  }
163
186
  return end(body, opt);
164
187
  };
188
+ var remoteReject = (opt, resp, error) => remoteResolve({ isApiKit: false, error }, opt, resp);
189
+ var fetchExe = async (_fetch, opt) => {
190
+ let resp, body;
191
+ try {
192
+ resp = await _fetch(opt.url, opt);
193
+ } catch (err) {
194
+ return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed", 503));
195
+ }
196
+ try {
197
+ const text = await readText(resp);
198
+ body = text ? resolveDecoded(decodeText(text, opt, resp), opt, resp) : resolveEmpty(resp);
199
+ } catch (err) {
200
+ return remoteReject(opt, resp, ApiError.is(err) ? err : ApiError.to(0, err, 500));
201
+ }
202
+ return remoteResolve(body, opt, resp);
203
+ };
165
204
  var fetchResolve = (_fetch, url, opt, method) => {
166
205
  const prom = fetchExe(_fetch, prepareOpt(url, opt, method));
167
206
  if (opt.timeoutId) {
@@ -170,17 +209,18 @@ var fetchResolve = (_fetch, url, opt, method) => {
170
209
  if (!opt.abortable) {
171
210
  return prom;
172
211
  }
173
- return solid(prom, "abort", (_) => opt.abortController?.abort(new ApiError(2, "Aborted")));
212
+ return solid(prom, "abort", (_) => opt.abortController?.abort(ApiError.create(2, "Aborted", 499)));
174
213
  };
175
214
 
176
215
  // src/client/class/Fetch.js
177
216
  import { solid as solid2 } from "@randajan/props";
178
217
 
179
218
  // src/client/tool.js
219
+ var mrgQuery = (opt) => mrgObj(opt?.params, opt?.query);
180
220
  var mrgOpt = (a, b) => {
181
221
  const opt = mrgObj(a, b);
182
222
  opt.body = mrgObj(a?.body, b?.body);
183
- opt.params = mrgObj(a?.params, b?.params);
223
+ opt.query = mrgObj(mrgQuery(a), mrgQuery(b));
184
224
  opt.headers = mrgObj(a?.headers, b?.headers, {});
185
225
  return opt;
186
226
  };
@@ -205,25 +245,25 @@ var Fetch = class _Fetch extends Functionable {
205
245
  extend(config) {
206
246
  return new _Fetch(mrgOpt(this.config, config));
207
247
  }
208
- async get(url, opt) {
248
+ get(url, opt) {
209
249
  return this(url, opt, "GET");
210
250
  }
211
- async post(url, opt) {
251
+ post(url, opt) {
212
252
  return this(url, opt, "POST");
213
253
  }
214
- async put(url, opt) {
254
+ put(url, opt) {
215
255
  return this(url, opt, "PUT");
216
256
  }
217
- async delete(url, opt) {
257
+ delete(url, opt) {
218
258
  return this(url, opt, "DELETE");
219
259
  }
220
- async patch(url, opt) {
260
+ patch(url, opt) {
221
261
  return this(url, opt, "PATCH");
222
262
  }
223
- async head(url, opt) {
263
+ head(url, opt) {
224
264
  return this(url, opt, "HEAD");
225
265
  }
226
- async options(url, opt) {
266
+ options(url, opt) {
227
267
  return this(url, opt, "OPTIONS");
228
268
  }
229
269
  };
@@ -237,4 +277,4 @@ export {
237
277
  createFetch,
238
278
  client_default
239
279
  };
240
- //# sourceMappingURL=chunk-C737ZROD.js.map
280
+ //# sourceMappingURL=chunk-CYUBH2V3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/client/class/static.js", "../../src/arc/url.js", "../../src/arc/types/kinds/json.js", "../../src/arc/types/kinds/form.js", "../../src/arc/types/index.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
+ "sourcesContent": ["import info from \"@randajan/simple-lib/info\";\nimport { solid } from \"@randajan/props\";\nimport { isFn, mrgStr } from \"../../arc/tool\";\nimport { ApiError } from \"../../arc/class/ApiError\";\nimport { buildUrl } from \"../../arc/url\";\nimport { diffVersion, end, start } from \"../../arc/main\";\nimport { attachBodyDecoder, encodeBody } from \"../../arc/types\";\n\nconst prepareOpt = (url, opt, method)=>{\n start(opt);\n\n opt.url = buildUrl( mrgStr(opt.url, url), opt.query);\n\n if (method) { opt.method = method; }\n\n if (opt.body) { encodeBody(opt); }\n\n attachBodyDecoder(opt);\n\n const hasTimeout = opt.timeout > 0;\n if (opt.abortable || hasTimeout) {\n opt.abortController = new AbortController();\n opt.signal = opt.abortController.signal;\n }\n\n if (hasTimeout) {\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(ApiError.create(1, \"Timeout\", 408)), opt.timeout);\n }\n\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\n\n return opt;\n}\n\nconst localReject = (opt, error)=>{\n const { httpStatusCode } = error;\n\n error.rise(0).rise(opt.code || 0);\n\n return end({ isOk:false, isRemote:false, isApiKit:false, statusCode: httpStatusCode, error }, opt);\n}\n\nconst statusError = ({ status, statusText })=>ApiError.create(4, statusText || status, status);\nconst unreadableError = resp=>resp.ok ? ApiError.create(3, \"Unreadable\", 415) : statusError(resp);\nconst foreignError = resp=>({ isApiKit:false, error:statusError(resp) });\n\nconst readText = async resp=>{\n try { return await resp.text(); }\n catch { throw unreadableError(resp); }\n}\n\nconst decodeText = (text, opt, resp)=>{\n try { return opt.decodeBody(text); }\n catch { throw unreadableError(resp); }\n}\n\nconst resolveEmpty = resp=>{\n if (!resp.ok && resp.status !== 304) { return foreignError(resp); }\n return { result:null, isApiKit:false };\n}\n\nconst resolveApiKit = (raw, opt)=>{\n const apv = raw[info.name];\n const diff = diffVersion(apv);\n const msg = `Detected @randajan/api-kit ${diff} version difference at '${opt.url}'. Server '${apv}' vs. client '${info.version}'`;\n\n if (diff === \"major\") { console.error(msg); }\n if (diff === \"minor\") { console.warn(msg); }\n\n raw.isApiKit = true;\n return raw;\n}\n\nconst resolveForeign = (raw, opt, resp)=>{\n if (!resp.ok) { return foreignError(resp); }\n\n const body = { isApiKit:false };\n\n try { body.result = opt.parseBody(raw); }\n catch(err) { body.error = err.message || err; }\n\n return body;\n}\n\nconst resolveDecoded = (raw, opt, resp)=>{\n if (raw?.[info.name]) { return resolveApiKit(raw, opt); }\n return resolveForeign(raw, opt, resp);\n}\n\nconst normalizeError = (body, opt, resp)=>{\n if (!body.error || ApiError.is(body.error)) { return; }\n\n const { code, message, stack, httpStatusCode } = body.error;\n body.error = ApiError.create(\n code || mrgStr(opt.code || 0, \"1.0\", \".\"),\n message || body.error,\n httpStatusCode ?? body.statusCode ?? resp.status,\n stack\n );\n}\n\nconst remoteResolve = (body, opt, resp)=>{\n normalizeError(body, opt, resp);\n\n body.isOk = !body.error;\n body.isRemote = true;\n body.isApiKit = !!body.isApiKit;\n body.statusCode = body.statusCode ?? body.error?.httpStatusCode ?? resp.status;\n\n if (opt.parseHeaders) {\n body.headers = Object.freeze(Object.fromEntries(resp.headers.entries()));\n }\n\n return end(body, opt);\n}\n\nconst remoteReject = (opt, resp, error)=>remoteResolve({ isApiKit:false, error }, opt, resp);\n\nconst fetchExe = async (_fetch, opt) => {\n\n let resp, body;\n\n try { resp = await _fetch(opt.url, opt); }\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\", 503)); }\n\n try {\n const text = await readText(resp);\n body = text ? resolveDecoded(decodeText(text, opt, resp), opt, resp) : resolveEmpty(resp);\n } catch (err) {\n return remoteReject(opt, resp, ApiError.is(err) ? err : ApiError.to(0, err, 500));\n }\n\n return remoteResolve(body, opt, resp);\n};\n\nexport const fetchResolve = (_fetch, url, opt, method)=>{\n const prom = fetchExe(_fetch, prepareOpt(url, opt, method));\n\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\n if (!opt.abortable) { return prom; }\n\n return solid(prom, \"abort\", _=>opt.abortController?.abort(ApiError.create(2, \"Aborted\", 499)));\n}\n", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "\r\n\r\nexport const mime = \"application/json\";\r\nexport const decode = body=>JSON.parse(body);\r\nexport const encode = body=>JSON.stringify(body);", "\r\n\r\nexport const mime = 'application/x-www-form-urlencoded';\r\nexport const decode = body=>Object.fromEntries(new URLSearchParams(body));\r\nexport const encode = body=>new URLSearchParams(body);\r\n\r\n", "import * as json from \"./kinds/json\";\r\nimport * as form from \"./kinds/form\";\r\n\r\n\r\nconst types = { json, form };\r\nconst getType = (typeName)=>{\r\n if (!typeName) { return json; }\r\n const type = types[typeName];\r\n if (type) { return type; }\r\n throw new Error(`Unknow config.type '${typeName}'. Must be one of: '${[...Object.keys(types)].join(\"', '\")}'`);\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\r\n const type = getType(opt.requestType || opt.type); \r\n \r\n opt.headers[\"Content-Type\"] = type.mime;\r\n opt.body = type.encode(opt.body);\r\n}\r\n\r\nexport const attachBodyDecoder = (opt)=>{\r\n const type = getType(opt.responseType || opt.type);\r\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n get(url, opt) { return this(url, opt, \"GET\"); }\r\n post(url, opt) { return this(url, opt, \"POST\"); }\r\n put(url, opt) { return this(url, opt, \"PUT\"); }\r\n delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\n\nconst mrgQuery = opt=>mrgObj(opt?.params, opt?.query);\n\nexport const mrgOpt = (a, b)=>{\n const opt = mrgObj(a, b);\n\n opt.body = mrgObj(a?.body, b?.body);\n opt.query = mrgObj(mrgQuery(a), mrgQuery(b));\n opt.headers = mrgObj(a?.headers, b?.headers, {});\n\n return opt;\n}\n", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["decode", "encode", "mime", "mime", "decode", "encode", "solid", "solid"]
7
+ }
@@ -2,10 +2,10 @@ import {
2
2
  Fetch,
3
3
  client_default,
4
4
  createFetch
5
- } from "../chunk-C737ZROD.js";
5
+ } from "../chunk-CYUBH2V3.js";
6
6
  import {
7
7
  ApiError
8
- } from "../chunk-HYSF3GMO.js";
8
+ } from "../chunk-7K2N7A5V.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-C737ZROD.js";
4
+ } from "./chunk-CYUBH2V3.js";
5
5
  import {
6
6
  Api,
7
7
  server_default
8
- } from "./chunk-R2VELUR6.js";
8
+ } from "./chunk-72RXZFQZ.js";
9
9
  import {
10
10
  ApiError
11
- } from "./chunk-HYSF3GMO.js";
11
+ } from "./chunk-7K2N7A5V.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-R2VELUR6.js";
5
+ } from "../chunk-72RXZFQZ.js";
6
6
  import {
7
7
  ApiError
8
- } from "../chunk-HYSF3GMO.js";
8
+ } from "../chunk-7K2N7A5V.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.2.0",
3
+ "version": "2.0.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/client/class/static.js", "../../src/arc/url.js", "../../src/arc/types/kinds/json.js", "../../src/arc/types/kinds/form.js", "../../src/arc/types/index.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
- "sourcesContent": ["import 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\nimport { attachBodyDecoder, encodeBody } from \"../../arc/types\";\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\r\n if (opt.body) { encodeBody(opt); }\r\n\r\n attachBodyDecoder(opt);\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 {\r\n raw = opt.decodeBody(await resp.text());\r\n } 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}", "\r\n\r\nexport const mime = \"application/json\";\r\nexport const decode = body=>JSON.parse(body);\r\nexport const encode = body=>JSON.stringify(body);", "\r\n\r\nexport const mime = 'application/x-www-form-urlencoded';\r\nexport const decode = body=>Object.fromEntries(new URLSearchParams(body));\r\nexport const encode = body=>new URLSearchParams(body);\r\n\r\n", "import * as json from \"./kinds/json\";\r\nimport * as form from \"./kinds/form\";\r\n\r\n\r\nconst types = { json, form };\r\nconst getType = (typeName)=>{\r\n if (!typeName) { return json; }\r\n const type = types[typeName];\r\n if (type) { return type; }\r\n throw new Error(`Unknow config.type '${typeName}'. Must be one of: '${[...Object.keys(types)].join(\"', '\")}'`);\r\n}\r\n\r\n\r\nexport const encodeBody = (opt)=>{\r\n const type = getType(opt.requestType || opt.type); \r\n \r\n opt.headers[\"Content-Type\"] = type.mime;\r\n opt.body = type.encode(opt.body);\r\n}\r\n\r\nexport const attachBodyDecoder = (opt)=>{\r\n const type = getType(opt.responseType || opt.type);\r\n\r\n opt.headers['Accept'] = type.mime;\r\n opt.decodeBody = type.decode;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait, createTrait } from \"../../arc/opt\";\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n config.parseBody = createTrait(config.parseBody);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n 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": ["decode", "encode", "mime", "mime", "decode", "encode", "solid", "solid"]
7
- }
@@ -1,7 +0,0 @@
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
- }