@randajan/api-kit 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +36 -9
- package/dist/cjs/client/index.cjs +167 -70
- package/dist/cjs/client/index.cjs.map +4 -4
- package/dist/cjs/index.cjs +172 -71
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/server/index.cjs +30 -13
- package/dist/cjs/server/index.cjs.map +2 -2
- package/dist/esm/{chunk-7BZD3LXK.js → chunk-72RXZFQZ.js} +7 -3
- package/dist/esm/{chunk-7BZD3LXK.js.map → chunk-72RXZFQZ.js.map} +2 -2
- package/dist/esm/{chunk-SH4YE24H.js → chunk-7K2N7A5V.js} +33 -13
- package/dist/esm/chunk-7K2N7A5V.js.map +7 -0
- package/dist/esm/chunk-CYUBH2V3.js +280 -0
- package/dist/esm/chunk-CYUBH2V3.js.map +7 -0
- package/dist/esm/client/index.mjs +2 -2
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/server/index.mjs +2 -2
- package/package.json +3 -2
- package/dist/esm/chunk-NBHSDY72.js +0 -195
- package/dist/esm/chunk-NBHSDY72.js.map +0 -7
- package/dist/esm/chunk-SH4YE24H.js.map +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
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) {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iCAAC,SAAU,MAAK,MAAO,qBAAoB,aAAc,oIAAmI,SAAU,SAAQ,QAAS,EAAC,MAAO,aAAY,OAAQ,qBAAoB,KAAM,wCAAuC,GAAE,KAAM,eAAc,MAAO,OAAM,MAAO,KAAK,KAAM,EAAC,MAAO,yBAAwB,MAAO,OAAM,EAAC;;;ACAvZ,mBAA4B;;;ACErB,IAAM,SAAS,CAAC,GAAG,GAAG,QAAM;AAC/B,MAAI,CAAC,KAAK,CAAC,GAAG;AAAE,WAAO;AAAA,EAAK;AAC5B,MAAI,CAAC,GAAG;AAAE,WAAO,EAAC,GAAG,EAAC;AAAA,EAAG;AACzB,MAAI,CAAC,GAAG;AAAE,WAAO,EAAC,GAAG,EAAC;AAAA,EAAG;AACzB,SAAO,EAAC,GAAG,GAAG,GAAG,EAAC;AACtB;AAEO,IAAM,QAAQ,OAAG,KAAK,OAAO,KAAK,OAAO,CAAC;AAC1C,IAAM,SAAS,CAAC,GAAG,GAAG,MAAI,OAAK;AAClC,MAAI,MAAM,CAAC;AAAG,MAAI,MAAM,CAAC;AACzB,SAAQ,KAAK,IAAK,IAAE,MAAI,IAAI,IAAE;AAClC;AAEO,IAAM,OAAO,SAAK,OAAO,QAAQ;AACjC,IAAM,OAAO,SAAK,KAAK,GAAG,IAAI,IAAI,IAAI;AACtC,IAAM,SAAS,SAAK,eAAe;AACnC,IAAM,QAAQ,SAAK,eAAe;;;ADblC,IAAM,WAAN,MAAM,kBAAiB,MAAM;AAAA,EAEhC,OAAO,OAAO,MAAM,SAAS;
|
|
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, httpStatusCode=400, remoteStack=undefined) {\r\n return new ApiError(code, message, httpStatusCode, remoteStack);\r\n }\r\n\r\n static is(any) { return any instanceof ApiError; }\r\n\r\n static to(code, any, httpStatusCode=500) {\r\n if (ApiError.is(any)) { return any; }\r\n \r\n const msg = toStr(any?.message || any) || \"Unknown\";\r\n const apierr = ApiError.create(code, msg, httpStatusCode);\r\n return solid(apierr, \"stack\", any?.stack);\r\n }\r\n\r\n constructor(code, message, httpStatusCode=400, remoteStack=undefined) {\r\n super(message);\r\n\r\n safe(this, {}, \"code\", (t, f)=>mrgStr(t, f, \".\"));\r\n solid(this, \"httpStatusCode\", httpStatusCode ?? 400, true);\r\n solid(this, \"remoteStack\", remoteStack);\r\n\r\n this.rise(code);\r\n }\r\n\r\n rise(code=0) {\r\n this.code = (code || 0);\r\n return this;\r\n }\r\n\r\n exposeStack(exposeStack=true) {\r\n solid(this, \"_exposeStack\", !!exposeStack, false, true);\r\n return this;\r\n }\r\n\r\n toJSON() {\r\n const { message, stack, _exposeStack } = this;\r\n const body = {message, ...this};\r\n if (_exposeStack) { body.stack = stack; }\r\n else { delete body.stack; }\r\n return body;\r\n }\r\n\r\n toString() {\r\n const { message, code } = this;\r\n return message + (code == null ? \"\" : ` (${code})`);\r\n }\r\n\r\n}\r\n", "\r\n\r\nexport const mrgObj = (a, b, def)=>{\r\n if (!a && !b) { return def; }\r\n if (!a) { return {...b}; }\r\n if (!b) { return {...a}; }\r\n return {...a, ...b};\r\n}\r\n\r\nexport const toStr = s=>s == null ? \"\" : String(s);\r\nexport const mrgStr = (a, b, sep=\"\")=>{\r\n a = toStr(a); b = toStr(b);\r\n return (a && b) ? a+sep+b : a+b;\r\n};\r\n\r\nexport const isFn = any=>typeof any === \"function\";\r\nexport const doFn = any=>isFn(any) ? any() : any;\r\nexport const isProm = any=>any instanceof Promise;\r\nexport const isErr = any=>any instanceof Error;\r\n", "import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "\r\n\r\n\r\nexport class Functionable extends Function {\r\n constructor(self) {\r\n super();\r\n return Object.setPrototypeOf(self, this);\r\n }\r\n}", "const enumerable = true;\r\nconst lockObject = o=>{\r\n if (typeof o !== \"object\") { return o; }\r\n\r\n const r = {};\r\n for (const i in o) {\r\n const descriptor = { enumerable };\r\n let val = o[i];\r\n if (val instanceof Array) { descriptor.get = _=>[...val]; }\r\n else { descriptor.value = lockObject(val); }\r\n Object.defineProperty(r, i, descriptor);\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport const info = lockObject(__slib_info);\r\nexport default info;", "import { solids } from \"@randajan/props\";\r\nimport { isFn, toStr } from \"./tool\";\r\nimport { info } from \"@randajan/simple-lib/info\";\r\n\r\n\r\nexport const start = (opt)=>{\r\n if (opt.timestamp) { return opt.startAt = Date.now(); }\r\n}\r\n\r\nconst endTime = (body, startAt)=>{\r\n if (!startAt) { return; }\r\n\r\n const endAt = Date.now();\r\n const time = {\r\n startAt,\r\n endAt,\r\n run:endAt-startAt\r\n }\r\n\r\n if (body.time) {\r\n time.srvRun = body.time.run;\r\n time.netIn = body.time.startAt - startAt;\r\n time.netOut = endAt - body.time.endAt;\r\n }\r\n\r\n body.time = solids({}, time);\r\n}\r\n\r\nexport const end = (body, opt)=>{\r\n const hasError = !!body.error;\r\n\r\n endTime(body, opt.startAt);\r\n\r\n if (!hasError){\r\n if (isFn(opt.onOk)) { opt.onOk(body, opt); }\r\n } else {\r\n if (isFn(opt.onError)) { opt.onError(body, opt); }\r\n if (opt.throwError || opt.resultOnly) { throw body.error; }\r\n }\r\n\r\n return opt.resultOnly ? body.result : Object.freeze(body);\r\n}\r\n\r\nexport const diffVersion = (version)=>{\r\n const v1 = toStr(info.version);\r\n const v2 = toStr(version);\r\n\r\n if (v1 === v2) { return }\r\n \r\n const f1 = v1.split(\".\");\r\n const f2 = v2.split(\".\");\r\n\r\n if (f1[0] !== f2[0]) { return \"major\"; }\r\n if (f1[1] !== f2[1]) { return \"minor\"; }\r\n if (f1[2] !== f2[2]) { return \"patch\"; }\r\n}\r\n", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import info from \"@randajan/simple-lib/info\";\r\nimport { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\n\r\nconst apiExit = (resp, opt)=>{\r\n const { exposeStack } = opt;\r\n\r\n resp.statusCode = 200;\r\n\r\n if (resp.error) {\r\n resp.error = ApiError.to(0, resp.error, 500).rise(1).rise(opt.code);\r\n resp.statusCode = resp.error.httpStatusCode;\r\n resp.error.exposeStack(!!exposeStack);\r\n }\n\n resp[info.name] = info.version;\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); }\n return resp.then((resp)=>apiExit(resp, opt));\r\n}\n", "import { isFn } from \"./tool\"\r\n\r\n\r\n\r\n\r\nexport const createTrait = (trait)=>{\r\n if (!trait) { return opt=>opt; }\r\n if (isFn(trait)) { return trait; }\r\n throw new Error(\"config.trait should be a function\");\r\n}\r\n\r\nexport const configTrait = (config)=>{\r\n config.trait = createTrait(config.trait);\r\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_props", "import_props", "resp"]
|
|
7
7
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
isProm,
|
|
10
10
|
mrgObj,
|
|
11
11
|
start
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7K2N7A5V.js";
|
|
13
13
|
|
|
14
14
|
// src/server/class/Api.js
|
|
15
15
|
import { solid } from "@randajan/props";
|
|
@@ -41,8 +41,12 @@ var tryFn = (any) => {
|
|
|
41
41
|
|
|
42
42
|
// src/server/class/static.js
|
|
43
43
|
var apiExit = (resp, opt) => {
|
|
44
|
+
const { exposeStack } = opt;
|
|
45
|
+
resp.statusCode = 200;
|
|
44
46
|
if (resp.error) {
|
|
45
|
-
resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
|
|
47
|
+
resp.error = ApiError.to(0, resp.error, 500).rise(1).rise(opt.code);
|
|
48
|
+
resp.statusCode = resp.error.httpStatusCode;
|
|
49
|
+
resp.error.exposeStack(!!exposeStack);
|
|
46
50
|
}
|
|
47
51
|
resp[info_default.name] = info_default.version;
|
|
48
52
|
return end(resp, opt);
|
|
@@ -90,4 +94,4 @@ export {
|
|
|
90
94
|
createApi,
|
|
91
95
|
server_default
|
|
92
96
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-72RXZFQZ.js.map
|
|
@@ -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\
|
|
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;
|
|
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
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
1
7
|
// <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.
|
|
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" } };
|
|
3
9
|
|
|
4
10
|
// src/arc/class/ApiError.js
|
|
5
11
|
import { safe, solid } from "@randajan/props";
|
|
@@ -30,32 +36,44 @@ var isErr = (any) => any instanceof Error;
|
|
|
30
36
|
|
|
31
37
|
// src/arc/class/ApiError.js
|
|
32
38
|
var ApiError = class _ApiError extends Error {
|
|
33
|
-
static create(code, message) {
|
|
34
|
-
return new _ApiError(code, message);
|
|
39
|
+
static create(code, message, httpStatusCode = 400, remoteStack = void 0) {
|
|
40
|
+
return new _ApiError(code, message, httpStatusCode, remoteStack);
|
|
35
41
|
}
|
|
36
42
|
static is(any) {
|
|
37
43
|
return any instanceof _ApiError;
|
|
38
44
|
}
|
|
39
|
-
static to(code, any) {
|
|
45
|
+
static to(code, any, httpStatusCode = 500) {
|
|
40
46
|
if (_ApiError.is(any)) {
|
|
41
47
|
return any;
|
|
42
48
|
}
|
|
43
49
|
const msg = toStr(any?.message || any) || "Unknown";
|
|
44
|
-
const apierr = _ApiError.create(code, msg);
|
|
45
|
-
return solid(apierr, "stack", any
|
|
50
|
+
const apierr = _ApiError.create(code, msg, httpStatusCode);
|
|
51
|
+
return solid(apierr, "stack", any?.stack);
|
|
46
52
|
}
|
|
47
|
-
constructor(code, message) {
|
|
53
|
+
constructor(code, message, httpStatusCode = 400, remoteStack = void 0) {
|
|
48
54
|
super(message);
|
|
49
55
|
safe(this, {}, "code", (t, f) => mrgStr(t, f, "."));
|
|
56
|
+
solid(this, "httpStatusCode", httpStatusCode ?? 400, true);
|
|
57
|
+
solid(this, "remoteStack", remoteStack);
|
|
50
58
|
this.rise(code);
|
|
51
59
|
}
|
|
52
60
|
rise(code = 0) {
|
|
53
61
|
this.code = code || 0;
|
|
54
62
|
return this;
|
|
55
63
|
}
|
|
64
|
+
exposeStack(exposeStack = true) {
|
|
65
|
+
solid(this, "_exposeStack", !!exposeStack, false, true);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
56
68
|
toJSON() {
|
|
57
|
-
const { message } = this;
|
|
58
|
-
|
|
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;
|
|
59
77
|
}
|
|
60
78
|
toString() {
|
|
61
79
|
const { message, code } = this;
|
|
@@ -132,7 +150,9 @@ var endTime = (body, startAt) => {
|
|
|
132
150
|
body.time = solids({}, time);
|
|
133
151
|
};
|
|
134
152
|
var end = (body, opt) => {
|
|
135
|
-
|
|
153
|
+
const hasError = !!body.error;
|
|
154
|
+
endTime(body, opt.startAt);
|
|
155
|
+
if (!hasError) {
|
|
136
156
|
if (isFn(opt.onOk)) {
|
|
137
157
|
opt.onOk(body, opt);
|
|
138
158
|
}
|
|
@@ -140,11 +160,10 @@ var end = (body, opt) => {
|
|
|
140
160
|
if (isFn(opt.onError)) {
|
|
141
161
|
opt.onError(body, opt);
|
|
142
162
|
}
|
|
143
|
-
if (opt.throwError) {
|
|
163
|
+
if (opt.throwError || opt.resultOnly) {
|
|
144
164
|
throw body.error;
|
|
145
165
|
}
|
|
146
166
|
}
|
|
147
|
-
endTime(body, opt.startAt);
|
|
148
167
|
return opt.resultOnly ? body.result : Object.freeze(body);
|
|
149
168
|
};
|
|
150
169
|
var diffVersion = (version) => {
|
|
@@ -167,6 +186,7 @@ var diffVersion = (version) => {
|
|
|
167
186
|
};
|
|
168
187
|
|
|
169
188
|
export {
|
|
189
|
+
__export,
|
|
170
190
|
mrgObj,
|
|
171
191
|
mrgStr,
|
|
172
192
|
isFn,
|
|
@@ -182,4 +202,4 @@ export {
|
|
|
182
202
|
createTrait,
|
|
183
203
|
configTrait
|
|
184
204
|
};
|
|
185
|
-
//# sourceMappingURL=chunk-
|
|
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": ";;;;;;;AAAA,iCAAC,SAAU,MAAK,MAAO,qBAAoB,aAAc,oIAAmI,SAAU,SAAQ,QAAS,EAAC,MAAO,aAAY,OAAQ,qBAAoB,KAAM,wCAAuC,GAAE,KAAM,eAAc,MAAO,OAAM,MAAO,KAAK,KAAM,EAAC,MAAO,yBAAwB,MAAO,OAAM,EAAC;;;ACAvZ,SAAS,MAAM,aAAa;;;ACErB,IAAM,SAAS,CAAC,GAAG,GAAG,QAAM;AAC/B,MAAI,CAAC,KAAK,CAAC,GAAG;AAAE,WAAO;AAAA,EAAK;AAC5B,MAAI,CAAC,GAAG;AAAE,WAAO,EAAC,GAAG,EAAC;AAAA,EAAG;AACzB,MAAI,CAAC,GAAG;AAAE,WAAO,EAAC,GAAG,EAAC;AAAA,EAAG;AACzB,SAAO,EAAC,GAAG,GAAG,GAAG,EAAC;AACtB;AAEO,IAAM,QAAQ,OAAG,KAAK,OAAO,KAAK,OAAO,CAAC;AAC1C,IAAM,SAAS,CAAC,GAAG,GAAG,MAAI,OAAK;AAClC,MAAI,MAAM,CAAC;AAAG,MAAI,MAAM,CAAC;AACzB,SAAQ,KAAK,IAAK,IAAE,MAAI,IAAI,IAAE;AAClC;AAEO,IAAM,OAAO,SAAK,OAAO,QAAQ;AACjC,IAAM,OAAO,SAAK,KAAK,GAAG,IAAI,IAAI,IAAI;AACtC,IAAM,SAAS,SAAK,eAAe;AACnC,IAAM,QAAQ,SAAK,eAAe;;;ADblC,IAAM,WAAN,MAAM,kBAAiB,MAAM;AAAA,EAEhC,OAAO,OAAO,MAAM,SAAS,iBAAe,KAAK,cAAY,QAAW;AACpE,WAAO,IAAI,UAAS,MAAM,SAAS,gBAAgB,WAAW;AAAA,EAClE;AAAA,EAEA,OAAO,GAAG,KAAK;AAAE,WAAO,eAAe;AAAA,EAAU;AAAA,EAEjD,OAAO,GAAG,MAAM,KAAK,iBAAe,KAAK;AACrC,QAAI,UAAS,GAAG,GAAG,GAAG;AAAE,aAAO;AAAA,IAAK;AAEpC,UAAM,MAAM,MAAM,KAAK,WAAW,GAAG,KAAK;AAC1C,UAAM,SAAS,UAAS,OAAO,MAAM,KAAK,cAAc;AACxD,WAAO,MAAM,QAAQ,SAAS,KAAK,KAAK;AAAA,EAC5C;AAAA,EAEA,YAAY,MAAM,SAAS,iBAAe,KAAK,cAAY,QAAW;AAClE,UAAM,OAAO;AAEb,SAAK,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,MAAI,OAAO,GAAG,GAAG,GAAG,CAAC;AAChD,UAAM,MAAM,kBAAkB,kBAAkB,KAAK,IAAI;AACzD,UAAM,MAAM,eAAe,WAAW;AAEtC,SAAK,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,KAAK,OAAK,GAAG;AACT,SAAK,OAAQ,QAAQ;AACrB,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,cAAY,MAAM;AAC1B,UAAM,MAAM,gBAAgB,CAAC,CAAC,aAAa,OAAO,IAAI;AACtD,WAAO;AAAA,EACX;AAAA,EAEA,SAAS;AACL,UAAM,EAAE,SAAS,OAAO,aAAa,IAAI;AACzC,UAAM,OAAO,EAAC,SAAS,GAAG,KAAI;AAC9B,QAAI,cAAc;AAAE,WAAK,QAAQ;AAAA,IAAO,OACnC;AAAE,aAAO,KAAK;AAAA,IAAO;AAC1B,WAAO;AAAA,EACX;AAAA,EAEA,WAAW;AACP,UAAM,EAAE,SAAS,KAAK,IAAI;AAC1B,WAAO,WAAW,QAAQ,OAAO,KAAK,KAAK,IAAI;AAAA,EACnD;AAEJ;;;AEnDO,IAAM,eAAN,cAA2B,SAAS;AAAA,EACvC,YAAY,MAAM;AACd,UAAM;AACN,WAAO,OAAO,eAAe,MAAM,IAAI;AAAA,EAC3C;AACJ;;;ACHO,IAAM,cAAc,CAAC,UAAQ;AAChC,MAAI,CAAC,OAAO;AAAE,WAAO,SAAK;AAAA,EAAK;AAC/B,MAAI,KAAK,KAAK,GAAG;AAAE,WAAO;AAAA,EAAO;AACjC,QAAM,IAAI,MAAM,mCAAmC;AACvD;AAEO,IAAM,cAAc,CAAC,WAAS;AACjC,SAAO,QAAQ,YAAY,OAAO,KAAK;AAC3C;;;ACbA,IAAM,aAAa;AACnB,IAAM,aAAa,CAAA,MAAG;AAClB,MAAI,OAAO,MAAM,UAAU;AAAE,WAAO;EAAG;AAEvC,QAAM,IAAI,CAAC;AACX,aAAW,KAAK,GAAG;AACf,UAAM,aAAa,EAAE,WAAW;AAChC,QAAI,MAAM,EAAE,CAAC;AACb,QAAI,eAAe,OAAO;AAAE,iBAAW,MAAM,CAAA,MAAG,CAAC,GAAG,GAAG;IAAG,OACrD;AAAE,iBAAW,QAAQ,WAAW,GAAG;IAAG;AAC3C,WAAO,eAAe,GAAG,GAAG,UAAU;EAC1C;AAEA,SAAO;AACX;AAEO,IAAM,OAAO,WAAW,wBAAW;AAC1C,IAAO,eAAQ;;;ACjBf,SAAS,cAAc;AAKhB,IAAM,QAAQ,CAAC,QAAM;AACxB,MAAI,IAAI,WAAW;AAAE,WAAO,IAAI,UAAU,KAAK,IAAI;AAAA,EAAG;AAC1D;AAEA,IAAM,UAAU,CAAC,MAAM,YAAU;AAC7B,MAAI,CAAC,SAAS;AAAE;AAAA,EAAQ;AAExB,QAAM,QAAQ,KAAK,IAAI;AACvB,QAAM,OAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA,KAAI,QAAM;AAAA,EACd;AAEA,MAAI,KAAK,MAAM;AACX,SAAK,SAAS,KAAK,KAAK;AACxB,SAAK,QAAQ,KAAK,KAAK,UAAU;AACjC,SAAK,SAAS,QAAQ,KAAK,KAAK;AAAA,EACpC;AAEA,OAAK,OAAO,OAAO,CAAC,GAAG,IAAI;AAC/B;AAEO,IAAM,MAAM,CAAC,MAAM,QAAM;AAC5B,QAAM,WAAW,CAAC,CAAC,KAAK;AAExB,UAAQ,MAAM,IAAI,OAAO;AAEzB,MAAI,CAAC,UAAS;AACV,QAAI,KAAK,IAAI,IAAI,GAAG;AAAE,UAAI,KAAK,MAAM,GAAG;AAAA,IAAG;AAAA,EAC/C,OAAO;AACH,QAAI,KAAK,IAAI,OAAO,GAAG;AAAE,UAAI,QAAQ,MAAM,GAAG;AAAA,IAAG;AACjD,QAAI,IAAI,cAAc,IAAI,YAAY;AAAE,YAAM,KAAK;AAAA,IAAO;AAAA,EAC9D;AAEA,SAAO,IAAI,aAAa,KAAK,SAAS,OAAO,OAAO,IAAI;AAC5D;AAEO,IAAM,cAAc,CAAC,YAAU;AAClC,QAAM,KAAK,MAAM,KAAK,OAAO;AAC7B,QAAM,KAAK,MAAM,OAAO;AAExB,MAAI,OAAO,IAAI;AAAE;AAAA,EAAO;AAExB,QAAM,KAAK,GAAG,MAAM,GAAG;AACvB,QAAM,KAAK,GAAG,MAAM,GAAG;AAEvB,MAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG;AAAE,WAAO;AAAA,EAAS;AACvC,MAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG;AAAE,WAAO;AAAA,EAAS;AACvC,MAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG;AAAE,WAAO;AAAA,EAAS;AAC3C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiError,
|
|
3
|
+
Functionable,
|
|
4
|
+
__export,
|
|
5
|
+
configTrait,
|
|
6
|
+
createTrait,
|
|
7
|
+
diffVersion,
|
|
8
|
+
end,
|
|
9
|
+
info_default,
|
|
10
|
+
isFn,
|
|
11
|
+
mrgObj,
|
|
12
|
+
mrgStr,
|
|
13
|
+
start
|
|
14
|
+
} from "./chunk-7K2N7A5V.js";
|
|
15
|
+
|
|
16
|
+
// src/client/class/static.js
|
|
17
|
+
import { solid } from "@randajan/props";
|
|
18
|
+
|
|
19
|
+
// src/arc/url.js
|
|
20
|
+
var _regexp = /^https?:\/\//i;
|
|
21
|
+
var buildUrl = (inputUrl, params) => {
|
|
22
|
+
if (!params) {
|
|
23
|
+
return inputUrl;
|
|
24
|
+
}
|
|
25
|
+
const hasHost = _regexp.test(inputUrl);
|
|
26
|
+
const url = new URL(inputUrl, hasHost ? void 0 : "http://thisisonlyplaceholder.xyz");
|
|
27
|
+
url.hash = "";
|
|
28
|
+
for (const [key, value] of Object.entries(params)) {
|
|
29
|
+
if (value != null) {
|
|
30
|
+
url.searchParams.append(key, value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
;
|
|
34
|
+
return hasHost ? url.toString() : url.pathname + url.search;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// src/arc/types/kinds/json.js
|
|
38
|
+
var json_exports = {};
|
|
39
|
+
__export(json_exports, {
|
|
40
|
+
decode: () => decode,
|
|
41
|
+
encode: () => encode,
|
|
42
|
+
mime: () => mime
|
|
43
|
+
});
|
|
44
|
+
var mime = "application/json";
|
|
45
|
+
var decode = (body) => JSON.parse(body);
|
|
46
|
+
var encode = (body) => JSON.stringify(body);
|
|
47
|
+
|
|
48
|
+
// src/arc/types/kinds/form.js
|
|
49
|
+
var form_exports = {};
|
|
50
|
+
__export(form_exports, {
|
|
51
|
+
decode: () => decode2,
|
|
52
|
+
encode: () => encode2,
|
|
53
|
+
mime: () => mime2
|
|
54
|
+
});
|
|
55
|
+
var mime2 = "application/x-www-form-urlencoded";
|
|
56
|
+
var decode2 = (body) => Object.fromEntries(new URLSearchParams(body));
|
|
57
|
+
var encode2 = (body) => new URLSearchParams(body);
|
|
58
|
+
|
|
59
|
+
// src/arc/types/index.js
|
|
60
|
+
var types = { json: json_exports, form: form_exports };
|
|
61
|
+
var getType = (typeName) => {
|
|
62
|
+
if (!typeName) {
|
|
63
|
+
return json_exports;
|
|
64
|
+
}
|
|
65
|
+
const type = types[typeName];
|
|
66
|
+
if (type) {
|
|
67
|
+
return type;
|
|
68
|
+
}
|
|
69
|
+
throw new Error(`Unknow config.type '${typeName}'. Must be one of: '${[...Object.keys(types)].join("', '")}'`);
|
|
70
|
+
};
|
|
71
|
+
var encodeBody = (opt) => {
|
|
72
|
+
const type = getType(opt.requestType || opt.type);
|
|
73
|
+
opt.headers["Content-Type"] = type.mime;
|
|
74
|
+
opt.body = type.encode(opt.body);
|
|
75
|
+
};
|
|
76
|
+
var attachBodyDecoder = (opt) => {
|
|
77
|
+
const type = getType(opt.responseType || opt.type);
|
|
78
|
+
opt.headers["Accept"] = type.mime;
|
|
79
|
+
opt.decodeBody = type.decode;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// src/client/class/static.js
|
|
83
|
+
var prepareOpt = (url, opt, method) => {
|
|
84
|
+
start(opt);
|
|
85
|
+
opt.url = buildUrl(mrgStr(opt.url, url), opt.query);
|
|
86
|
+
if (method) {
|
|
87
|
+
opt.method = method;
|
|
88
|
+
}
|
|
89
|
+
if (opt.body) {
|
|
90
|
+
encodeBody(opt);
|
|
91
|
+
}
|
|
92
|
+
attachBodyDecoder(opt);
|
|
93
|
+
const hasTimeout = opt.timeout > 0;
|
|
94
|
+
if (opt.abortable || hasTimeout) {
|
|
95
|
+
opt.abortController = new AbortController();
|
|
96
|
+
opt.signal = opt.abortController.signal;
|
|
97
|
+
}
|
|
98
|
+
if (hasTimeout) {
|
|
99
|
+
opt.timeoutId = setTimeout(() => opt.abortController?.abort(ApiError.create(1, "Timeout", 408)), opt.timeout);
|
|
100
|
+
}
|
|
101
|
+
if (isFn(opt.trait)) {
|
|
102
|
+
opt = opt.trait(opt) || opt;
|
|
103
|
+
}
|
|
104
|
+
return opt;
|
|
105
|
+
};
|
|
106
|
+
var localReject = (opt, error) => {
|
|
107
|
+
const { httpStatusCode } = error;
|
|
108
|
+
error.rise(0).rise(opt.code || 0);
|
|
109
|
+
return end({ isOk: false, isRemote: false, isApiKit: false, statusCode: httpStatusCode, error }, opt);
|
|
110
|
+
};
|
|
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) => {
|
|
115
|
+
try {
|
|
116
|
+
return await resp.text();
|
|
117
|
+
} catch {
|
|
118
|
+
throw unreadableError(resp);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
var decodeText = (text, opt, resp) => {
|
|
122
|
+
try {
|
|
123
|
+
return opt.decodeBody(text);
|
|
124
|
+
} catch {
|
|
125
|
+
throw unreadableError(resp);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
var resolveEmpty = (resp) => {
|
|
129
|
+
if (!resp.ok && resp.status !== 304) {
|
|
130
|
+
return foreignError(resp);
|
|
131
|
+
}
|
|
132
|
+
return { result: null, isApiKit: false };
|
|
133
|
+
};
|
|
134
|
+
var resolveApiKit = (raw, opt) => {
|
|
135
|
+
const apv = raw[info_default.name];
|
|
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);
|
|
140
|
+
}
|
|
141
|
+
if (diff === "minor") {
|
|
142
|
+
console.warn(msg);
|
|
143
|
+
}
|
|
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;
|
|
183
|
+
if (opt.parseHeaders) {
|
|
184
|
+
body.headers = Object.freeze(Object.fromEntries(resp.headers.entries()));
|
|
185
|
+
}
|
|
186
|
+
return end(body, opt);
|
|
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
|
+
};
|
|
204
|
+
var fetchResolve = (_fetch, url, opt, method) => {
|
|
205
|
+
const prom = fetchExe(_fetch, prepareOpt(url, opt, method));
|
|
206
|
+
if (opt.timeoutId) {
|
|
207
|
+
prom.finally((_) => clearTimeout(opt.timeoutId));
|
|
208
|
+
}
|
|
209
|
+
if (!opt.abortable) {
|
|
210
|
+
return prom;
|
|
211
|
+
}
|
|
212
|
+
return solid(prom, "abort", (_) => opt.abortController?.abort(ApiError.create(2, "Aborted", 499)));
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
// src/client/class/Fetch.js
|
|
216
|
+
import { solid as solid2 } from "@randajan/props";
|
|
217
|
+
|
|
218
|
+
// src/client/tool.js
|
|
219
|
+
var mrgQuery = (opt) => mrgObj(opt?.params, opt?.query);
|
|
220
|
+
var mrgOpt = (a, b) => {
|
|
221
|
+
const opt = mrgObj(a, b);
|
|
222
|
+
opt.body = mrgObj(a?.body, b?.body);
|
|
223
|
+
opt.query = mrgObj(mrgQuery(a), mrgQuery(b));
|
|
224
|
+
opt.headers = mrgObj(a?.headers, b?.headers, {});
|
|
225
|
+
return opt;
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
// src/client/class/Fetch.js
|
|
229
|
+
var Fetch = class _Fetch extends Functionable {
|
|
230
|
+
static create(config = {}) {
|
|
231
|
+
return new _Fetch(config);
|
|
232
|
+
}
|
|
233
|
+
constructor(config = {}) {
|
|
234
|
+
const _fetch = config.fetch || globalThis.fetch;
|
|
235
|
+
if (!_fetch) {
|
|
236
|
+
throw new Error("Missing fetch function. Please provide it inconfig");
|
|
237
|
+
}
|
|
238
|
+
configTrait(config);
|
|
239
|
+
config.parseBody = createTrait(config.parseBody);
|
|
240
|
+
delete config.fetch;
|
|
241
|
+
super((url, opt, method) => fetchResolve(_fetch, url, mrgOpt(config, opt), method));
|
|
242
|
+
Object.freeze(config);
|
|
243
|
+
solid2(this, "config", config);
|
|
244
|
+
}
|
|
245
|
+
extend(config) {
|
|
246
|
+
return new _Fetch(mrgOpt(this.config, config));
|
|
247
|
+
}
|
|
248
|
+
get(url, opt) {
|
|
249
|
+
return this(url, opt, "GET");
|
|
250
|
+
}
|
|
251
|
+
post(url, opt) {
|
|
252
|
+
return this(url, opt, "POST");
|
|
253
|
+
}
|
|
254
|
+
put(url, opt) {
|
|
255
|
+
return this(url, opt, "PUT");
|
|
256
|
+
}
|
|
257
|
+
delete(url, opt) {
|
|
258
|
+
return this(url, opt, "DELETE");
|
|
259
|
+
}
|
|
260
|
+
patch(url, opt) {
|
|
261
|
+
return this(url, opt, "PATCH");
|
|
262
|
+
}
|
|
263
|
+
head(url, opt) {
|
|
264
|
+
return this(url, opt, "HEAD");
|
|
265
|
+
}
|
|
266
|
+
options(url, opt) {
|
|
267
|
+
return this(url, opt, "OPTIONS");
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
// src/client/index.js
|
|
272
|
+
var createFetch = Fetch.create;
|
|
273
|
+
var client_default = createFetch;
|
|
274
|
+
|
|
275
|
+
export {
|
|
276
|
+
Fetch,
|
|
277
|
+
createFetch,
|
|
278
|
+
client_default
|
|
279
|
+
};
|
|
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": ";;;;;;;;;;;;;;;;AACA,SAAS,aAAa;;;ACDtB,IAAI,UAAU;AACP,IAAM,WAAW,CAAC,UAAU,WAAS;AACxC,MAAI,CAAC,QAAQ;AAAE,WAAO;AAAA,EAAU;AAEhC,QAAM,UAAU,QAAQ,KAAK,QAAQ;AACrC,QAAM,MAAM,IAAI,IAAI,UAAU,UAAU,SAAY,kCAAkC;AACtF,MAAI,OAAO;AAEX,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAC/C,QAAI,SAAS,MAAM;AAAE,UAAI,aAAa,OAAO,KAAK,KAAK;AAAA,IAAG;AAAA,EAC9D;AAAC;AAED,SAAO,UAAU,IAAI,SAAS,IAAI,IAAI,WAAW,IAAI;AACzD;;;ACbA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,OAAO;AACb,IAAM,SAAS,UAAM,KAAK,MAAM,IAAI;AACpC,IAAM,SAAS,UAAM,KAAK,UAAU,IAAI;;;ACJ/C;AAAA;AAAA,gBAAAA;AAAA,EAAA,cAAAC;AAAA,EAAA,YAAAC;AAAA;AAEO,IAAMC,QAAO;AACb,IAAMC,UAAS,UAAM,OAAO,YAAY,IAAI,gBAAgB,IAAI,CAAC;AACjE,IAAMC,UAAS,UAAM,IAAI,gBAAgB,IAAI;;;ACApD,IAAM,QAAQ,EAAE,oBAAM,mBAAK;AAC3B,IAAM,UAAU,CAAC,aAAW;AACxB,MAAI,CAAC,UAAU;AAAE,WAAO;AAAA,EAAM;AAC9B,QAAM,OAAO,MAAM,QAAQ;AAC3B,MAAI,MAAM;AAAE,WAAO;AAAA,EAAM;AACzB,QAAM,IAAI,MAAM,uBAAuB,QAAQ,uBAAuB,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG;AACjH;AAGO,IAAM,aAAa,CAAC,QAAM;AAC7B,QAAM,OAAO,QAAQ,IAAI,eAAe,IAAI,IAAI;AAEhD,MAAI,QAAQ,cAAc,IAAI,KAAK;AACnC,MAAI,OAAO,KAAK,OAAO,IAAI,IAAI;AACnC;AAEO,IAAM,oBAAoB,CAAC,QAAM;AACpC,QAAM,OAAO,QAAQ,IAAI,gBAAgB,IAAI,IAAI;AAEjD,MAAI,QAAQ,QAAQ,IAAI,KAAK;AAC7B,MAAI,aAAa,KAAK;AAC1B;;;AJjBA,IAAM,aAAa,CAAC,KAAK,KAAK,WAAS;AACnC,QAAM,GAAG;AAET,MAAI,MAAM,SAAU,OAAO,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK;AAEnD,MAAI,QAAQ;AAAE,QAAI,SAAS;AAAA,EAAQ;AAEnC,MAAI,IAAI,MAAM;AAAE,eAAW,GAAG;AAAA,EAAG;AAEjC,oBAAkB,GAAG;AAErB,QAAM,aAAa,IAAI,UAAU;AACjC,MAAI,IAAI,aAAa,YAAY;AAC7B,QAAI,kBAAkB,IAAI,gBAAgB;AAC1C,QAAI,SAAS,IAAI,gBAAgB;AAAA,EACrC;AAEA,MAAI,YAAY;AACZ,QAAI,YAAY,WAAW,MAAM,IAAI,iBAAiB,MAAM,SAAS,OAAO,GAAG,WAAW,GAAG,CAAC,GAAG,IAAI,OAAO;AAAA,EAChH;AAEA,MAAI,KAAK,IAAI,KAAK,GAAG;AAAE,UAAM,IAAI,MAAM,GAAG,KAAK;AAAA,EAAK;AAEpD,SAAO;AACX;AAEA,IAAM,cAAc,CAAC,KAAK,UAAQ;AAC9B,QAAM,EAAE,eAAe,IAAI;AAE3B,QAAM,KAAK,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC;AAEhC,SAAO,IAAI,EAAE,MAAK,OAAO,UAAS,OAAO,UAAS,OAAO,YAAY,gBAAgB,MAAM,GAAG,GAAG;AACrG;AAEA,IAAM,cAAc,CAAC,EAAE,QAAQ,WAAW,MAAI,SAAS,OAAO,GAAG,cAAc,QAAQ,MAAM;AAC7F,IAAM,kBAAkB,UAAM,KAAK,KAAK,SAAS,OAAO,GAAG,cAAc,GAAG,IAAI,YAAY,IAAI;AAChG,IAAM,eAAe,WAAO,EAAE,UAAS,OAAO,OAAM,YAAY,IAAI,EAAE;AAEtE,IAAM,WAAW,OAAM,SAAM;AACzB,MAAI;AAAE,WAAO,MAAM,KAAK,KAAK;AAAA,EAAG,QAC1B;AAAE,UAAM,gBAAgB,IAAI;AAAA,EAAG;AACzC;AAEA,IAAM,aAAa,CAAC,MAAM,KAAK,SAAO;AAClC,MAAI;AAAE,WAAO,IAAI,WAAW,IAAI;AAAA,EAAG,QAC7B;AAAE,UAAM,gBAAgB,IAAI;AAAA,EAAG;AACzC;AAEA,IAAM,eAAe,UAAM;AACvB,MAAI,CAAC,KAAK,MAAM,KAAK,WAAW,KAAK;AAAE,WAAO,aAAa,IAAI;AAAA,EAAG;AAClE,SAAO,EAAE,QAAO,MAAM,UAAS,MAAM;AACzC;AAEA,IAAM,gBAAgB,CAAC,KAAK,QAAM;AAC9B,QAAM,MAAM,IAAI,aAAK,IAAI;AACzB,QAAM,OAAO,YAAY,GAAG;AAC5B,QAAM,MAAM,8BAA8B,IAAI,2BAA2B,IAAI,GAAG,cAAc,GAAG,iBAAiB,aAAK,OAAO;AAE9H,MAAI,SAAS,SAAS;AAAE,YAAQ,MAAM,GAAG;AAAA,EAAG;AAC5C,MAAI,SAAS,SAAS;AAAE,YAAQ,KAAK,GAAG;AAAA,EAAG;AAE3C,MAAI,WAAW;AACf,SAAO;AACX;AAEA,IAAM,iBAAiB,CAAC,KAAK,KAAK,SAAO;AACrC,MAAI,CAAC,KAAK,IAAI;AAAE,WAAO,aAAa,IAAI;AAAA,EAAG;AAE3C,QAAM,OAAO,EAAE,UAAS,MAAM;AAE9B,MAAI;AAAE,SAAK,SAAS,IAAI,UAAU,GAAG;AAAA,EAAG,SAClC,KAAK;AAAE,SAAK,QAAQ,IAAI,WAAW;AAAA,EAAK;AAE9C,SAAO;AACX;AAEA,IAAM,iBAAiB,CAAC,KAAK,KAAK,SAAO;AACrC,MAAI,MAAM,aAAK,IAAI,GAAG;AAAE,WAAO,cAAc,KAAK,GAAG;AAAA,EAAG;AACxD,SAAO,eAAe,KAAK,KAAK,IAAI;AACxC;AAEA,IAAM,iBAAiB,CAAC,MAAM,KAAK,SAAO;AACtC,MAAI,CAAC,KAAK,SAAS,SAAS,GAAG,KAAK,KAAK,GAAG;AAAE;AAAA,EAAQ;AAEtD,QAAM,EAAE,MAAM,SAAS,OAAO,eAAe,IAAI,KAAK;AACtD,OAAK,QAAQ,SAAS;AAAA,IAClB,QAAQ,OAAO,IAAI,QAAQ,GAAG,OAAO,GAAG;AAAA,IACxC,WAAW,KAAK;AAAA,IAChB,kBAAkB,KAAK,cAAc,KAAK;AAAA,IAC1C;AAAA,EACJ;AACJ;AAEA,IAAM,gBAAgB,CAAC,MAAM,KAAK,SAAO;AACrC,iBAAe,MAAM,KAAK,IAAI;AAE9B,OAAK,OAAO,CAAC,KAAK;AAClB,OAAK,WAAW;AAChB,OAAK,WAAW,CAAC,CAAC,KAAK;AACvB,OAAK,aAAa,KAAK,cAAc,KAAK,OAAO,kBAAkB,KAAK;AAExE,MAAI,IAAI,cAAc;AAClB,SAAK,UAAU,OAAO,OAAO,OAAO,YAAY,KAAK,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3E;AAEA,SAAO,IAAI,MAAM,GAAG;AACxB;AAEA,IAAM,eAAe,CAAC,KAAK,MAAM,UAAQ,cAAc,EAAE,UAAS,OAAO,MAAM,GAAG,KAAK,IAAI;AAE3F,IAAM,WAAW,OAAO,QAAQ,QAAQ;AAEpC,MAAI,MAAM;AAEV,MAAI;AAAE,WAAO,MAAM,OAAO,IAAI,KAAK,GAAG;AAAA,EAAG,SAClC,KAAK;AAAE,WAAO,YAAY,KAAK,SAAS,GAAG,GAAG,IAAI,MAAM,SAAS,GAAG,GAAG,UAAU,GAAG,CAAC;AAAA,EAAG;AAE/F,MAAI;AACA,UAAM,OAAO,MAAM,SAAS,IAAI;AAChC,WAAO,OAAO,eAAe,WAAW,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,aAAa,IAAI;AAAA,EAC5F,SAAS,KAAK;AACV,WAAO,aAAa,KAAK,MAAM,SAAS,GAAG,GAAG,IAAI,MAAM,SAAS,GAAG,GAAG,KAAK,GAAG,CAAC;AAAA,EACpF;AAEA,SAAO,cAAc,MAAM,KAAK,IAAI;AACxC;AAEO,IAAM,eAAe,CAAC,QAAQ,KAAK,KAAK,WAAS;AACpD,QAAM,OAAO,SAAS,QAAQ,WAAW,KAAK,KAAK,MAAM,CAAC;AAE1D,MAAI,IAAI,WAAW;AAAE,SAAK,QAAQ,OAAG,aAAa,IAAI,SAAS,CAAC;AAAA,EAAG;AACnE,MAAI,CAAC,IAAI,WAAW;AAAE,WAAO;AAAA,EAAM;AAEnC,SAAO,MAAM,MAAM,SAAS,OAAG,IAAI,iBAAiB,MAAM,SAAS,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;AACjG;;;AK5IA,SAAS,SAAAC,cAAa;;;ACAtB,IAAM,WAAW,SAAK,OAAO,KAAK,QAAQ,KAAK,KAAK;AAE7C,IAAM,SAAS,CAAC,GAAG,MAAI;AAC1B,QAAM,MAAM,OAAO,GAAG,CAAC;AAEvB,MAAI,OAAO,OAAO,GAAG,MAAM,GAAG,IAAI;AAClC,MAAI,QAAQ,OAAO,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAC3C,MAAI,UAAU,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;AAE/C,SAAO;AACX;;;ADNO,IAAM,QAAN,MAAM,eAAc,aAAa;AAAA,EAEpC,OAAO,OAAO,SAAO,CAAC,GAAG;AAAE,WAAO,IAAI,OAAM,MAAM;AAAA,EAAE;AAAA,EAEpD,YAAY,SAAS,CAAC,GAAG;AAErB,UAAM,SAAS,OAAO,SAAS,WAAW;AAE1C,QAAI,CAAC,QAAQ;AAAE,YAAM,IAAI,MAAM,oDAAoD;AAAA,IAAG;AAEtF,gBAAY,MAAM;AAClB,WAAO,YAAY,YAAY,OAAO,SAAS;AAE/C,WAAO,OAAO;AAEd,UAAM,CAAC,KAAK,KAAK,WAAU,aAAa,QAAQ,KAAK,OAAO,QAAQ,GAAG,GAAG,MAAM,CAAC;AAEjF,WAAO,OAAO,MAAM;AACpB,IAAAC,OAAM,MAAM,UAAU,MAAM;AAAA,EAChC;AAAA,EAEA,OAAO,QAAQ;AAAE,WAAO,IAAI,OAAM,OAAO,KAAK,QAAQ,MAAM,CAAC;AAAA,EAAG;AAAA,EAEhE,IAAI,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,KAAK;AAAA,EAAG;AAAA,EAC9C,KAAK,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,MAAM;AAAA,EAAG;AAAA,EAChD,IAAI,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,KAAK;AAAA,EAAG;AAAA,EAC9C,OAAO,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,QAAQ;AAAA,EAAG;AAAA,EACpD,MAAM,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,OAAO;AAAA,EAAG;AAAA,EAClD,KAAK,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,MAAM;AAAA,EAAG;AAAA,EAChD,QAAQ,KAAK,KAAK;AAAE,WAAO,KAAK,KAAK,KAAK,SAAS;AAAA,EAAG;AAC1D;;;AEjCO,IAAM,cAAc,MAAM;AACjC,IAAO,iBAAQ;",
|
|
6
|
+
"names": ["decode", "encode", "mime", "mime", "decode", "encode", "solid", "solid"]
|
|
7
|
+
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Fetch,
|
|
3
3
|
client_default
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CYUBH2V3.js";
|
|
5
5
|
import {
|
|
6
6
|
Api,
|
|
7
7
|
server_default
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-72RXZFQZ.js";
|
|
9
9
|
import {
|
|
10
10
|
ApiError
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-7K2N7A5V.js";
|
|
12
12
|
export {
|
|
13
13
|
Api,
|
|
14
14
|
ApiError,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@randajan/api-kit",
|
|
3
|
-
"version": "
|
|
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",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"peerDependencies": {},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@randajan/simple-lib": "^3.0
|
|
26
|
+
"@randajan/simple-lib": "^3.3.0",
|
|
27
|
+
"body-parser": "^2.2.0",
|
|
27
28
|
"cors": "^2.8.5",
|
|
28
29
|
"express": "^4.21.2"
|
|
29
30
|
},
|