@randajan/api-kit 1.0.6 → 1.0.7

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.
@@ -0,0 +1,91 @@
1
+ import {
2
+ ApiError,
3
+ Functionable,
4
+ configTrait,
5
+ doFn,
6
+ end,
7
+ isErr,
8
+ isProm,
9
+ mrgObj,
10
+ start
11
+ } from "./chunk-LZFXWDYE.js";
12
+
13
+ // src/server/class/Api.js
14
+ import { solid } from "@randajan/props";
15
+
16
+ // src/server/tool.js
17
+ var wrapResult = (r) => ({ [isErr(r) ? "error" : "result"]: r });
18
+ var wrapError = (error) => ({ error });
19
+ var tryFnSync = (any) => {
20
+ try {
21
+ return wrapResult(doFn(any));
22
+ } catch (error) {
23
+ return { error };
24
+ }
25
+ };
26
+ var tryFnAsync = async (any) => {
27
+ try {
28
+ return wrapResult(await doFn(any));
29
+ } catch (error) {
30
+ return { error };
31
+ }
32
+ };
33
+ var tryFn = (any) => {
34
+ const r = tryFnSync(any);
35
+ if (!isProm(r.result)) {
36
+ return r;
37
+ }
38
+ return r.result.then(wrapResult).catch(wrapError);
39
+ };
40
+
41
+ // src/server/class/static.js
42
+ var apiExit = (resp, opt) => {
43
+ if (resp.error) {
44
+ resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
45
+ }
46
+ return end(resp, opt);
47
+ };
48
+ var apiAsync = async (exe, opt) => apiExit(await tryFnAsync(exe), opt);
49
+ var apiResolve = (exe, opt) => {
50
+ start(opt);
51
+ opt = opt.trait(opt) || opt;
52
+ if (opt.isAsync) {
53
+ return apiAsync(exe, opt);
54
+ }
55
+ const resp = tryFn(exe);
56
+ if (!isProm(resp)) {
57
+ return apiExit(resp, opt);
58
+ }
59
+ return resp.then((resp2) => apiExit(resp2, opt));
60
+ };
61
+
62
+ // src/server/class/Api.js
63
+ var Api = class extends Functionable {
64
+ static create(config = {}) {
65
+ return new Api(config);
66
+ }
67
+ constructor(config = {}) {
68
+ configTrait(config);
69
+ super((exe, opt) => apiResolve(exe, mrgObj(config, opt)));
70
+ Object.freeze(config);
71
+ solid(this, "config", config);
72
+ }
73
+ code(code, exe, opt = {}) {
74
+ opt.code = code;
75
+ return this(exe, opt);
76
+ }
77
+ extend(config) {
78
+ return new Api(mrgObj(this.config, config));
79
+ }
80
+ };
81
+
82
+ // src/server/index.js
83
+ var createApi = Api.create;
84
+ var server_default = createApi;
85
+
86
+ export {
87
+ Api,
88
+ createApi,
89
+ server_default
90
+ };
91
+ //# sourceMappingURL=chunk-4LG3747U.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/server/class/Api.js", "../src/server/tool.js", "../src/server/class/static.js", "../src/server/index.js"],
4
+ "sourcesContent": ["import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\n//options: code, isAsync, timestamp, trait, onError, throwError\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\nexport const createApi = Api.create;\r\nexport default createApi;\r\nexport {\r\n Api,\r\n ApiError\r\n}"],
5
+ "mappings": ";;;;;;;;;;;;;AAAA,SAAS,aAAa;;;ACEtB,IAAM,aAAa,QAAI,EAAC,CAAC,MAAM,CAAC,IAAI,UAAU,QAAQ,GAAE,EAAC;AACzD,IAAM,YAAY,YAAQ,EAAC,MAAK;AAEzB,IAAM,YAAY,SAAK;AAC1B,MAAI;AAAE,WAAO,WAAW,KAAK,GAAG,CAAC;AAAA,EAAG,SAC9B,OAAN;AAAe,WAAO,EAAC,MAAK;AAAA,EAAG;AACnC;AAEO,IAAM,aAAa,OAAM,QAAK;AACjC,MAAI;AAAE,WAAO,WAAW,MAAM,KAAK,GAAG,CAAC;AAAA,EAAG,SACpC,OAAN;AAAe,WAAO,EAAC,MAAK;AAAA,EAAG;AACnC;AAEO,IAAM,QAAQ,SAAK;AACtB,QAAM,IAAI,UAAU,GAAG;AACvB,MAAI,CAAC,OAAO,EAAE,MAAM,GAAG;AAAE,WAAO;AAAA,EAAG;AACnC,SAAO,EAAE,OAAO,KAAK,UAAU,EAAE,MAAM,SAAS;AACpD;;;ACbA,IAAM,UAAU,CAAC,MAAM,QAAM;AACzB,MAAI,KAAK,OAAO;AAAE,SAAK,QAAQ,SAAS,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AAAA,EAAG;AAElF,SAAO,IAAI,MAAM,GAAG;AACxB;AAEA,IAAM,WAAW,OAAO,KAAK,QAAM,QAAQ,MAAM,WAAW,GAAG,GAAG,GAAG;AAE9D,IAAM,aAAa,CAAC,KAAK,QAAM;AAClC,QAAM,GAAG;AAET,QAAM,IAAI,MAAM,GAAG,KAAK;AAExB,MAAI,IAAI,SAAS;AAAE,WAAO,SAAS,KAAK,GAAG;AAAA,EAAG;AAE9C,QAAM,OAAO,MAAM,GAAG;AACtB,MAAI,CAAC,OAAO,IAAI,GAAG;AAAE,WAAO,QAAQ,MAAM,GAAG;AAAA,EAAG;AAChD,SAAO,KAAK,KAAK,CAACA,UAAO,QAAQA,OAAM,GAAG,CAAC;AAC/C;;;AFhBO,IAAM,MAAN,cAAkB,aAAa;AAAA,EAElC,OAAO,OAAO,SAAO,CAAC,GAAG;AAAE,WAAO,IAAI,IAAI,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,IAAI,OAAO,KAAK,QAAQ,MAAM,CAAC;AAAA,EAAG;AAClE;;;AGzBO,IAAM,YAAY,IAAI;AAC7B,IAAO,iBAAQ;",
6
+ "names": ["resp"]
7
+ }
@@ -0,0 +1,171 @@
1
+ import {
2
+ ApiError,
3
+ Functionable,
4
+ configTrait,
5
+ end,
6
+ isFn,
7
+ mrgObj,
8
+ mrgStr,
9
+ start
10
+ } from "./chunk-LZFXWDYE.js";
11
+
12
+ // src/client/class/static.js
13
+ import { solid } from "@randajan/props";
14
+
15
+ // src/arc/url.js
16
+ var _regexp = /^https?:\/\//i;
17
+ var buildUrl = (inputUrl, params) => {
18
+ if (!params) {
19
+ return inputUrl;
20
+ }
21
+ const hasHost = _regexp.test(inputUrl);
22
+ const url = new URL(inputUrl, hasHost ? void 0 : "http://thisisonlyplaceholder.xyz");
23
+ url.hash = "";
24
+ for (const [key, value] of Object.entries(params)) {
25
+ if (value != null) {
26
+ url.searchParams.append(key, value);
27
+ }
28
+ }
29
+ ;
30
+ return hasHost ? url.toString() : url.pathname + url.search;
31
+ };
32
+
33
+ // src/client/class/static.js
34
+ var prepareOpt = (opt, method) => {
35
+ start(opt);
36
+ if (method) {
37
+ opt.method = method;
38
+ }
39
+ opt.headers["Accept"] = "application/json";
40
+ if (opt.body) {
41
+ opt.headers["Content-Type"] = "application/json";
42
+ opt.body = JSON.stringify(opt.body);
43
+ }
44
+ const hasTimeout = opt.timeout > 0;
45
+ if (opt.abortable || hasTimeout) {
46
+ opt.abortController = new AbortController();
47
+ opt.signal = opt.abortController.signal;
48
+ }
49
+ if (hasTimeout) {
50
+ opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, "Timeout")), opt.timeout);
51
+ }
52
+ if (isFn(opt.trait)) {
53
+ opt = opt.trait(opt) || opt;
54
+ }
55
+ return opt;
56
+ };
57
+ var localReject = (opt, error, http) => {
58
+ const { code } = error;
59
+ if (code == 0) {
60
+ http = 503;
61
+ } else if (code == 1) {
62
+ http = 408;
63
+ } else if (code == 2) {
64
+ http = 499;
65
+ } else if (code == 3) {
66
+ http = 415;
67
+ } else if (!http) {
68
+ http = 400;
69
+ }
70
+ error.rise(0).rise(opt.code || 0);
71
+ return end({ ok: false, http, error }, opt);
72
+ };
73
+ var fetchExe = async (_fetch, url, opt) => {
74
+ let resp, body;
75
+ try {
76
+ resp = await _fetch(buildUrl(mrgStr(opt.url, url), opt.query), opt);
77
+ } catch (err) {
78
+ return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed"));
79
+ }
80
+ const { ok, status, headers, statusText } = resp;
81
+ try {
82
+ body = await resp.json();
83
+ } catch {
84
+ return localReject(opt, new ApiError(ok ? 3 : 4, ok ? "Unreadable" : statusText || status), status);
85
+ }
86
+ if (body.error) {
87
+ const { code, message } = body.error;
88
+ body.error = new ApiError(code || mrgStr(opt.code || 0, "1.0", "."), message || body.error);
89
+ }
90
+ body.ok = !body.error;
91
+ body.http = status;
92
+ if (opt.parseHeaders) {
93
+ body.headers = Object.freeze(Object.fromEntries(headers.entries()));
94
+ }
95
+ return end(body, opt);
96
+ };
97
+ var fetchResolve = (_fetch, url, opt, method) => {
98
+ const prom = fetchExe(_fetch, url, prepareOpt(opt, method));
99
+ if (opt.timeoutId) {
100
+ prom.finally((_) => clearTimeout(opt.timeoutId));
101
+ }
102
+ if (!opt.abortable) {
103
+ return prom;
104
+ }
105
+ return solid(prom, "abort", (_) => opt.abortController?.abort(new ApiError(2, "Aborted")));
106
+ };
107
+
108
+ // src/client/class/Fetch.js
109
+ import { solid as solid2 } from "@randajan/props";
110
+
111
+ // src/client/tool.js
112
+ var mrgOpt = (a, b) => {
113
+ const opt = mrgObj(a, b);
114
+ opt.body = mrgObj(a?.body, b?.body);
115
+ opt.params = mrgObj(a?.params, b?.params);
116
+ opt.headers = mrgObj(a?.headers, b?.headers, {});
117
+ return opt;
118
+ };
119
+
120
+ // src/client/class/Fetch.js
121
+ var Fetch = class extends Functionable {
122
+ static create(config = {}) {
123
+ return new Fetch(config);
124
+ }
125
+ constructor(config = {}) {
126
+ const _fetch = config.fetch || globalThis.fetch;
127
+ if (!_fetch) {
128
+ throw new Error("Missing fetch function. Please provide it inconfig");
129
+ }
130
+ configTrait(config);
131
+ delete config.fetch;
132
+ super((url, opt, method) => fetchResolve(_fetch, url, mrgOpt(config, opt), method));
133
+ Object.freeze(config);
134
+ solid2(this, "config", config);
135
+ }
136
+ extend(config) {
137
+ return new Fetch(mrgOpt(this.config, config));
138
+ }
139
+ async get(url, opt) {
140
+ return this(url, opt, "GET");
141
+ }
142
+ async post(url, opt) {
143
+ return this(url, opt, "POST");
144
+ }
145
+ async put(url, opt) {
146
+ return this(url, opt, "PUT");
147
+ }
148
+ async delete(url, opt) {
149
+ return this(url, opt, "DELETE");
150
+ }
151
+ async patch(url, opt) {
152
+ return this(url, opt, "PATCH");
153
+ }
154
+ async head(url, opt) {
155
+ return this(url, opt, "HEAD");
156
+ }
157
+ async options(url, opt) {
158
+ return this(url, opt, "OPTIONS");
159
+ }
160
+ };
161
+
162
+ // src/client/index.js
163
+ var createFetch = Fetch.create;
164
+ var client_default = createFetch;
165
+
166
+ export {
167
+ Fetch,
168
+ createFetch,
169
+ client_default
170
+ };
171
+ //# sourceMappingURL=chunk-5D7BPZNX.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/class/static.js", "../src/arc/url.js", "../src/client/class/Fetch.js", "../src/client/tool.js", "../src/client/index.js"],
4
+ "sourcesContent": ["import { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (opt, method)=>{\r\n start(opt);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, url, opt) => {\r\n\r\n let resp, body;\r\n\r\n try { resp = await _fetch(buildUrl( mrgStr(opt.url, url), opt.query), opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { body = await resp.json(); }\r\n catch { return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status); }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n return end(body, opt);\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, url, prepareOpt(opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\n//config: code, url, fetch, query, parseHeaders, trait, timestamp, onError\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport const createFetch = Fetch.create;\nexport default createFetch;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["solid", "solid"]
7
+ }
@@ -132,9 +132,9 @@ export {
132
132
  isProm,
133
133
  isErr,
134
134
  ApiError,
135
+ Functionable,
135
136
  start,
136
137
  end,
137
- Functionable,
138
138
  configTrait
139
139
  };
140
- //# sourceMappingURL=chunk-DCQX5SJT.js.map
140
+ //# sourceMappingURL=chunk-LZFXWDYE.js.map
@@ -1,169 +1,15 @@
1
1
  import {
2
- ApiError,
3
- Functionable,
4
- configTrait,
5
- end,
6
- isFn,
7
- mrgObj,
8
- mrgStr,
9
- start
10
- } from "../chunk-DCQX5SJT.js";
11
-
12
- // src/client/class/static.js
13
- import { solid } from "@randajan/props";
14
-
15
- // src/arc/url.js
16
- var _regexp = /^https?:\/\//i;
17
- var buildUrl = (inputUrl, params) => {
18
- if (!params) {
19
- return inputUrl;
20
- }
21
- const hasHost = _regexp.test(inputUrl);
22
- const url = new URL(inputUrl, hasHost ? void 0 : "http://thisisonlyplaceholder.xyz");
23
- url.hash = "";
24
- for (const [key, value] of Object.entries(params)) {
25
- if (value != null) {
26
- url.searchParams.append(key, value);
27
- }
28
- }
29
- ;
30
- return hasHost ? url.toString() : url.pathname + url.search;
31
- };
32
-
33
- // src/client/class/static.js
34
- var prepareOpt = (opt, method) => {
35
- start(opt);
36
- if (method) {
37
- opt.method = method;
38
- }
39
- opt.headers["Accept"] = "application/json";
40
- if (opt.body) {
41
- opt.headers["Content-Type"] = "application/json";
42
- opt.body = JSON.stringify(opt.body);
43
- }
44
- const hasTimeout = opt.timeout > 0;
45
- if (opt.abortable || hasTimeout) {
46
- opt.abortController = new AbortController();
47
- opt.signal = opt.abortController.signal;
48
- }
49
- if (hasTimeout) {
50
- opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, "Timeout")), opt.timeout);
51
- }
52
- if (isFn(opt.trait)) {
53
- opt = opt.trait(opt) || opt;
54
- }
55
- return opt;
56
- };
57
- var localReject = (opt, error, http) => {
58
- const { code } = error;
59
- if (code == 0) {
60
- http = 503;
61
- } else if (code == 1) {
62
- http = 408;
63
- } else if (code == 2) {
64
- http = 499;
65
- } else if (code == 3) {
66
- http = 415;
67
- } else if (!http) {
68
- http = 400;
69
- }
70
- error.rise(0).rise(opt.code || 0);
71
- return end({ ok: false, http, error }, opt);
72
- };
73
- var fetchExe = async (_fetch, url, opt) => {
74
- let resp, body;
75
- try {
76
- resp = await _fetch(buildUrl(mrgStr(opt.url, url), opt.query), opt);
77
- } catch (err) {
78
- return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, "Failed"));
79
- }
80
- const { ok, status, headers, statusText } = resp;
81
- try {
82
- body = await resp.json();
83
- } catch {
84
- return localReject(opt, new ApiError(ok ? 3 : 4, ok ? "Unreadable" : statusText || status), status);
85
- }
86
- if (body.error) {
87
- const { code, message } = body.error;
88
- body.error = new ApiError(code || mrgStr(opt.code || 0, "1.0", "."), message || body.error);
89
- }
90
- body.ok = !body.error;
91
- body.http = status;
92
- if (opt.parseHeaders) {
93
- body.headers = Object.freeze(Object.fromEntries(headers.entries()));
94
- }
95
- return end(body, opt);
96
- };
97
- var fetchResolve = (_fetch, url, opt, method) => {
98
- const prom = fetchExe(_fetch, url, prepareOpt(opt, method));
99
- if (opt.timeoutId) {
100
- prom.finally((_) => clearTimeout(opt.timeoutId));
101
- }
102
- if (!opt.abortable) {
103
- return prom;
104
- }
105
- return solid(prom, "abort", (_) => opt.abortController?.abort(new ApiError(2, "Aborted")));
106
- };
107
-
108
- // src/client/class/Fetch.js
109
- import { solid as solid2 } from "@randajan/props";
110
-
111
- // src/client/tool.js
112
- var mrgOpt = (a, b) => {
113
- const opt = mrgObj(a, b);
114
- opt.body = mrgObj(a?.body, b?.body);
115
- opt.params = mrgObj(a?.params, b?.params);
116
- opt.headers = mrgObj(a?.headers, b?.headers, {});
117
- return opt;
118
- };
119
-
120
- // src/client/class/Fetch.js
121
- var Fetch = class extends Functionable {
122
- static create(config = {}) {
123
- return new Fetch(config);
124
- }
125
- constructor(config = {}) {
126
- const _fetch = config.fetch || globalThis.fetch;
127
- if (!_fetch) {
128
- throw new Error("Missing fetch function. Please provide it inconfig");
129
- }
130
- configTrait(config);
131
- delete config.fetch;
132
- super((url, opt, method) => fetchResolve(_fetch, url, mrgOpt(config, opt), method));
133
- Object.freeze(config);
134
- solid2(this, "config", config);
135
- }
136
- extend(config) {
137
- return new Fetch(mrgOpt(this.config, config));
138
- }
139
- async get(url, opt) {
140
- return this(url, opt, "GET");
141
- }
142
- async post(url, opt) {
143
- return this(url, opt, "POST");
144
- }
145
- async put(url, opt) {
146
- return this(url, opt, "PUT");
147
- }
148
- async delete(url, opt) {
149
- return this(url, opt, "DELETE");
150
- }
151
- async patch(url, opt) {
152
- return this(url, opt, "PATCH");
153
- }
154
- async head(url, opt) {
155
- return this(url, opt, "HEAD");
156
- }
157
- async options(url, opt) {
158
- return this(url, opt, "OPTIONS");
159
- }
160
- };
161
-
162
- // src/client/index.js
163
- var client_default = Fetch.create;
2
+ Fetch,
3
+ client_default,
4
+ createFetch
5
+ } from "../chunk-5D7BPZNX.js";
6
+ import {
7
+ ApiError
8
+ } from "../chunk-LZFXWDYE.js";
164
9
  export {
165
10
  ApiError,
166
11
  Fetch,
12
+ createFetch,
167
13
  client_default as default
168
14
  };
169
15
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/client/class/static.js", "../../src/arc/url.js", "../../src/client/class/Fetch.js", "../../src/client/tool.js", "../../src/client/index.js"],
4
- "sourcesContent": ["import { solid } from \"@randajan/props\";\r\nimport { isFn, mrgStr } from \"../../arc/tool\";\r\nimport { ApiError } from \"../../arc/class/ApiError\";\r\nimport { buildUrl } from \"../../arc/url\";\r\nimport { end, start } from \"../../arc/main\";\r\n\r\nconst prepareOpt = (opt, method)=>{\r\n start(opt);\r\n\r\n if (method) { opt.method = method; }\r\n opt.headers['Accept'] = 'application/json';\r\n\r\n if (opt.body) {\r\n opt.headers[\"Content-Type\"] = \"application/json\";\r\n opt.body = JSON.stringify(opt.body);\r\n }\r\n\r\n const hasTimeout = opt.timeout > 0;\r\n if (opt.abortable || hasTimeout) {\r\n opt.abortController = new AbortController();\r\n opt.signal = opt.abortController.signal;\r\n }\r\n\r\n if (hasTimeout) {\r\n opt.timeoutId = setTimeout(() => opt.abortController?.abort(new ApiError(1, \"Timeout\")), opt.timeout);\r\n }\r\n\r\n if (isFn(opt.trait)) { opt = opt.trait(opt) || opt; }\r\n\r\n return opt;\r\n}\r\n\r\nconst localReject = (opt, error, http)=>{\r\n const { code } = error;\r\n\r\n if (code == 0) { http = 503 } //failed\r\n else if (code == 1) { http = 408; } //timeout\r\n else if (code == 2) { http = 499; } //aborted\r\n else if (code == 3) { http = 415; } //unreadable\r\n else if (!http) { http = 400; }\r\n\r\n error.rise(0).rise(opt.code || 0);\r\n\r\n return end({ ok:false, http, error }, opt);\r\n}\r\n\r\nconst fetchExe = async (_fetch, url, opt) => {\r\n\r\n let resp, body;\r\n\r\n try { resp = await _fetch(buildUrl( mrgStr(opt.url, url), opt.query), opt); }\r\n catch (err) { return localReject(opt, ApiError.is(err) ? err : ApiError.to(0, \"Failed\")); }\r\n\r\n const { ok, status, headers, statusText } = resp;\r\n\r\n try { body = await resp.json(); }\r\n catch { return localReject(opt, new ApiError(ok?3:4, ok?\"Unreadable\" : (statusText || status)), status); }\r\n\r\n if (body.error) {\r\n const { code, message } = body.error;\r\n body.error = new ApiError(code || mrgStr(opt.code || 0, \"1.0\", \".\"), message || body.error );\r\n }\r\n\r\n body.ok = !body.error;\r\n body.http = status;\r\n\r\n if (opt.parseHeaders) {\r\n body.headers = Object.freeze(Object.fromEntries(headers.entries()));\r\n }\r\n \r\n return end(body, opt);\r\n};\r\n\r\nexport const fetchResolve = (_fetch, url, opt, method)=>{\r\n const prom = fetchExe(_fetch, url, prepareOpt(opt, method));\r\n\r\n if (opt.timeoutId) { prom.finally(_=>clearTimeout(opt.timeoutId)); }\r\n if (!opt.abortable) { return prom; }\r\n\r\n return solid(prom, \"abort\", _=>opt.abortController?.abort(new ApiError(2, \"Aborted\")));\r\n}", "let _regexp = /^https?:\\/\\//i;\r\nexport const buildUrl = (inputUrl, params)=>{\r\n if (!params) { return inputUrl; }\r\n\r\n const hasHost = _regexp.test(inputUrl);\r\n const url = new URL(inputUrl, hasHost ? undefined : \"http://thisisonlyplaceholder.xyz\");\r\n url.hash = \"\";\r\n\r\n for (const [key, value] of Object.entries(params)) {\r\n if (value != null) { url.searchParams.append(key, value); }\r\n };\r\n\r\n return hasHost ? url.toString() : url.pathname + url.search;\r\n}", "import { fetchResolve } from \"./static\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { solid } from \"@randajan/props\";\r\nimport { mrgOpt } from \"../tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\n//config: code, url, fetch, query, parseHeaders, trait, timestamp, onError\r\n\r\nexport class Fetch extends Functionable {\r\n\r\n static create(config={}) { return new Fetch(config) }\r\n\r\n constructor(config = {}) {\r\n \r\n const _fetch = config.fetch || globalThis.fetch;\r\n\r\n if (!_fetch) { throw new Error(\"Missing fetch function. Please provide it inconfig\"); }\r\n\r\n configTrait(config);\r\n\r\n delete config.fetch;\r\n\r\n super((url, opt, method) =>fetchResolve(_fetch, url, mrgOpt(config, opt), method));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n extend(config) { return new Fetch(mrgOpt(this.config, config)); }\r\n\r\n async get(url, opt) { return this(url, opt, \"GET\"); }\r\n async post(url, opt) { return this(url, opt, \"POST\"); }\r\n async put(url, opt) { return this(url, opt, \"PUT\"); }\r\n async delete(url, opt) { return this(url, opt, \"DELETE\"); }\r\n async patch(url, opt) { return this(url, opt, \"PATCH\"); }\r\n async head(url, opt) { return this(url, opt, \"HEAD\"); }\r\n async options(url, opt) { return this(url, opt, \"OPTIONS\"); }\r\n}", "import { mrgObj } from \"../arc/tool\";\r\n\r\nexport const mrgOpt = (a, b)=>{\r\n const opt = mrgObj(a, b);\r\n\r\n opt.body = mrgObj(a?.body, b?.body);\r\n opt.params = mrgObj(a?.params, b?.params);\r\n opt.headers = mrgObj(a?.headers, b?.headers, {});\r\n\r\n return opt;\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\nimport { Fetch } from \"./class/Fetch\";\n\nexport default Fetch.create;\n\nexport {\n Fetch,\n ApiError\n}\n"],
5
- "mappings": "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",
6
- "names": ["solid", "solid"]
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
7
  }
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ import {
2
+ Fetch,
3
+ client_default
4
+ } from "./chunk-5D7BPZNX.js";
5
+ import {
6
+ Api,
7
+ server_default
8
+ } from "./chunk-4LG3747U.js";
9
+ import {
10
+ ApiError
11
+ } from "./chunk-LZFXWDYE.js";
12
+ export {
13
+ Api,
14
+ ApiError,
15
+ Fetch,
16
+ server_default as createApi,
17
+ client_default as createFetch
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,89 +1,15 @@
1
1
  import {
2
- ApiError,
3
- Functionable,
4
- configTrait,
5
- doFn,
6
- end,
7
- isErr,
8
- isProm,
9
- mrgObj,
10
- start
11
- } from "../chunk-DCQX5SJT.js";
12
-
13
- // src/server/class/Api.js
14
- import { solid } from "@randajan/props";
15
-
16
- // src/server/tool.js
17
- var wrapResult = (r) => ({ [isErr(r) ? "error" : "result"]: r });
18
- var wrapError = (error) => ({ error });
19
- var tryFnSync = (any) => {
20
- try {
21
- return wrapResult(doFn(any));
22
- } catch (error) {
23
- return { error };
24
- }
25
- };
26
- var tryFnAsync = async (any) => {
27
- try {
28
- return wrapResult(await doFn(any));
29
- } catch (error) {
30
- return { error };
31
- }
32
- };
33
- var tryFn = (any) => {
34
- const r = tryFnSync(any);
35
- if (!isProm(r.result)) {
36
- return r;
37
- }
38
- return r.result.then(wrapResult).catch(wrapError);
39
- };
40
-
41
- // src/server/class/static.js
42
- var apiExit = (resp, opt) => {
43
- if (resp.error) {
44
- resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code);
45
- }
46
- return end(resp, opt);
47
- };
48
- var apiAsync = async (exe, opt) => apiExit(await tryFnAsync(exe), opt);
49
- var apiResolve = (exe, opt) => {
50
- start(opt);
51
- opt = opt.trait(opt) || opt;
52
- if (opt.isAsync) {
53
- return apiAsync(exe, opt);
54
- }
55
- const resp = tryFn(exe);
56
- if (!isProm(resp)) {
57
- return apiExit(resp, opt);
58
- }
59
- return resp.then((resp2) => apiExit(resp2, opt));
60
- };
61
-
62
- // src/server/class/Api.js
63
- var Api = class extends Functionable {
64
- static create(config = {}) {
65
- return new Api(config);
66
- }
67
- constructor(config = {}) {
68
- configTrait(config);
69
- super((exe, opt) => apiResolve(exe, mrgObj(config, opt)));
70
- Object.freeze(config);
71
- solid(this, "config", config);
72
- }
73
- code(code, exe, opt = {}) {
74
- opt.code = code;
75
- return this(exe, opt);
76
- }
77
- extend(config) {
78
- return new Api(mrgObj(this.config, config));
79
- }
80
- };
81
-
82
- // src/server/index.js
83
- var server_default = Api.create;
2
+ Api,
3
+ createApi,
4
+ server_default
5
+ } from "../chunk-4LG3747U.js";
6
+ import {
7
+ ApiError
8
+ } from "../chunk-LZFXWDYE.js";
84
9
  export {
85
10
  Api,
86
11
  ApiError,
12
+ createApi,
87
13
  server_default as default
88
14
  };
89
15
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/server/class/Api.js", "../../src/server/tool.js", "../../src/server/class/static.js", "../../src/server/index.js"],
4
- "sourcesContent": ["import { solid } from \"@randajan/props\";\r\nimport { Functionable } from \"../../arc/class/Functionable\";\r\nimport { apiResolve } from \"./static\";\r\nimport { mrgObj } from \"../../arc/tool\";\r\nimport { configTrait } from \"../../arc/opt\";\r\n\r\n//options: code, isAsync, timestamp, trait, onError, throwError\r\n\r\nexport class Api extends Functionable {\r\n\r\n static create(config={}) { return new Api(config); }\r\n\r\n constructor(config={}) {\r\n\r\n configTrait(config);\r\n \r\n super((exe, opt)=>apiResolve(exe, mrgObj(config, opt)));\r\n\r\n Object.freeze(config);\r\n solid(this, \"config\", config);\r\n }\r\n\r\n code(code, exe, opt={}) {\r\n opt.code = code;\r\n return this(exe, opt);\r\n }\r\n\r\n extend(config) { return new Api(mrgObj(this.config, config)); }\r\n}", "import { doFn, isErr, isProm } from \"../arc/tool\";\r\n\r\nconst wrapResult = r=>({[isErr(r) ? \"error\" : \"result\"]:r});\r\nconst wrapError = error=>({error});\r\n\r\nexport const tryFnSync = any=>{\r\n try { return wrapResult(doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFnAsync = async any=>{\r\n try { return wrapResult(await doFn(any)); }\r\n catch(error) { return {error}; }\r\n}\r\n\r\nexport const tryFn = any=>{\r\n const r = tryFnSync(any);\r\n if (!isProm(r.result)) { return r; }\r\n return r.result.then(wrapResult).catch(wrapError);\r\n}", "import { ApiError } from \"../../arc/class/ApiError\"\r\nimport { start, end } from \"../../arc/main\";\r\nimport { isFn, isProm } from \"../../arc/tool\";\r\nimport { tryFn, tryFnAsync } from \"../tool\";\r\n\r\n\r\nconst apiExit = (resp, opt)=>{\r\n if (resp.error) { resp.error = ApiError.to(0, resp.error).rise(1).rise(opt.code); }\r\n\r\n return end(resp, opt);\r\n}\r\n\r\nconst apiAsync = async (exe, opt)=>apiExit(await tryFnAsync(exe), opt);\r\n\r\nexport const apiResolve = (exe, opt)=>{\r\n start(opt);\r\n\r\n opt = opt.trait(opt) || opt;\r\n\r\n if (opt.isAsync) { return apiAsync(exe, opt); }\r\n\r\n const resp = tryFn(exe);\r\n if (!isProm(resp)) { return apiExit(resp, opt); } \r\n return resp.then((resp)=>apiExit(resp, opt));\r\n}", "import { ApiError } from \"../arc/class/ApiError\";\r\nimport { Api } from \"./class/Api\";\r\n\r\n\r\n\r\nexport default Api.create;\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,OAAN;AAAe,WAAO,EAAC,MAAK;AAAA,EAAG;AACnC;AAEO,IAAM,aAAa,OAAM,QAAK;AACjC,MAAI;AAAE,WAAO,WAAW,MAAM,KAAK,GAAG,CAAC;AAAA,EAAG,SACpC,OAAN;AAAe,WAAO,EAAC,MAAK;AAAA,EAAG;AACnC;AAEO,IAAM,QAAQ,SAAK;AACtB,QAAM,IAAI,UAAU,GAAG;AACvB,MAAI,CAAC,OAAO,EAAE,MAAM,GAAG;AAAE,WAAO;AAAA,EAAG;AACnC,SAAO,EAAE,OAAO,KAAK,UAAU,EAAE,MAAM,SAAS;AACpD;;;ACbA,IAAM,UAAU,CAAC,MAAM,QAAM;AACzB,MAAI,KAAK,OAAO;AAAE,SAAK,QAAQ,SAAS,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AAAA,EAAG;AAElF,SAAO,IAAI,MAAM,GAAG;AACxB;AAEA,IAAM,WAAW,OAAO,KAAK,QAAM,QAAQ,MAAM,WAAW,GAAG,GAAG,GAAG;AAE9D,IAAM,aAAa,CAAC,KAAK,QAAM;AAClC,QAAM,GAAG;AAET,QAAM,IAAI,MAAM,GAAG,KAAK;AAExB,MAAI,IAAI,SAAS;AAAE,WAAO,SAAS,KAAK,GAAG;AAAA,EAAG;AAE9C,QAAM,OAAO,MAAM,GAAG;AACtB,MAAI,CAAC,OAAO,IAAI,GAAG;AAAE,WAAO,QAAQ,MAAM,GAAG;AAAA,EAAG;AAChD,SAAO,KAAK,KAAK,CAACA,UAAO,QAAQA,OAAM,GAAG,CAAC;AAC/C;;;AFhBO,IAAM,MAAN,cAAkB,aAAa;AAAA,EAElC,OAAO,OAAO,SAAO,CAAC,GAAG;AAAE,WAAO,IAAI,IAAI,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,IAAI,OAAO,KAAK,QAAQ,MAAM,CAAC;AAAA,EAAG;AAClE;;;AGvBA,IAAO,iBAAQ,IAAI;",
6
- "names": ["resp"]
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
7
  }
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@randajan/api-kit",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
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",
7
- "main": "dist/server/index.js",
8
- "module": "dist/server/index.js",
7
+ "main": "dist/index.js",
8
+ "module": "dist//index.js",
9
9
  "exports": {
10
+ ".": "./dist/index.js",
10
11
  "./server": "./dist/server/index.js",
11
12
  "./client": "./dist/client/index.js"
12
13
  },