keq 2.0.0 → 2.0.2

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.
Files changed (91) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/esm/src/index.d.ts +1 -0
  3. package/dist/esm/src/index.js +1 -0
  4. package/dist/umd/src/constant.d.ts +1 -0
  5. package/dist/umd/src/constant.js +14 -0
  6. package/dist/umd/src/core.d.ts +28 -0
  7. package/dist/umd/src/core.js +125 -0
  8. package/dist/umd/src/exception/exception.d.ts +4 -0
  9. package/dist/umd/src/exception/exception.js +21 -0
  10. package/dist/umd/src/exception/invalid-arguments.exception.d.ts +4 -0
  11. package/dist/umd/src/exception/invalid-arguments.exception.js +20 -0
  12. package/dist/umd/src/exception/overwrite-array-body.exception.d.ts +4 -0
  13. package/dist/umd/src/exception/overwrite-array-body.exception.js +20 -0
  14. package/dist/umd/src/is/is-blob.d.ts +4 -0
  15. package/dist/umd/src/is/is-blob.js +32 -0
  16. package/dist/umd/src/is/is-browser.d.ts +1 -0
  17. package/dist/umd/src/is/is-browser.js +17 -0
  18. package/dist/umd/src/is/is-file.d.ts +1 -0
  19. package/dist/umd/src/is/is-file.js +21 -0
  20. package/dist/umd/src/is/is-form-data.d.ts +1 -0
  21. package/dist/umd/src/is/is-form-data.js +30 -0
  22. package/dist/umd/src/is/is-function.d.ts +1 -0
  23. package/dist/umd/src/is/is-function.js +17 -0
  24. package/dist/umd/src/is/is-headers.d.ts +1 -0
  25. package/dist/umd/src/is/is-headers.js +33 -0
  26. package/dist/umd/src/is/is-object.d.ts +1 -0
  27. package/dist/umd/src/is/is-object.js +17 -0
  28. package/dist/umd/src/is/is-string.d.ts +1 -0
  29. package/dist/umd/src/is/is-string.js +17 -0
  30. package/dist/umd/src/is/is-url-search-params.d.ts +1 -0
  31. package/dist/umd/src/is/is-url-search-params.js +36 -0
  32. package/dist/umd/src/keq.d.ts +70 -0
  33. package/dist/umd/src/keq.js +193 -0
  34. package/dist/umd/src/middleware.d.ts +2 -0
  35. package/dist/umd/src/middleware.js +27 -0
  36. package/dist/umd/src/middlewares/fetch-arguments-middleware.d.ts +2 -0
  37. package/dist/umd/src/middlewares/fetch-arguments-middleware.js +96 -0
  38. package/dist/umd/src/middlewares/fetch-middleware.d.ts +5 -0
  39. package/dist/umd/src/middlewares/fetch-middleware.js +29 -0
  40. package/dist/umd/src/middlewares/proxy-response-middleware.d.ts +2 -0
  41. package/dist/umd/src/middlewares/proxy-response-middleware.js +27 -0
  42. package/dist/umd/src/middlewares/retry-middleware.d.ts +2 -0
  43. package/dist/umd/src/middlewares/retry-middleware.js +51 -0
  44. package/dist/umd/src/router/keq-host-router.d.ts +7 -0
  45. package/dist/umd/src/router/keq-host-router.js +33 -0
  46. package/dist/umd/src/router/keq-location-router.d.ts +6 -0
  47. package/dist/umd/src/router/keq-location-router.js +32 -0
  48. package/dist/umd/src/router/keq-method-router.d.ts +8 -0
  49. package/dist/umd/src/router/keq-method-router.js +33 -0
  50. package/dist/umd/src/router/keq-module-router.d.ts +7 -0
  51. package/dist/umd/src/router/keq-module-router.js +37 -0
  52. package/dist/umd/src/router/keq-pathname-router.d.ts +7 -0
  53. package/dist/umd/src/router/keq-pathname-router.js +34 -0
  54. package/dist/umd/src/router/keq-router.d.ts +7 -0
  55. package/dist/umd/src/router/keq-router.js +24 -0
  56. package/dist/umd/src/types/keq-context.d.ts +41 -0
  57. package/dist/umd/src/types/keq-context.js +13 -0
  58. package/dist/umd/src/types/keq-middleware.d.ts +3 -0
  59. package/dist/umd/src/types/keq-middleware.js +12 -0
  60. package/dist/umd/src/types/keq-next.d.ts +1 -0
  61. package/dist/umd/src/types/keq-next.js +12 -0
  62. package/dist/umd/src/types/keq-options.d.ts +38 -0
  63. package/dist/umd/src/types/keq-options.js +12 -0
  64. package/dist/umd/src/types/keq-request-body.d.ts +1 -0
  65. package/dist/umd/src/types/keq-request-body.js +12 -0
  66. package/dist/umd/src/types/keq-request-init.d.ts +2 -0
  67. package/dist/umd/src/types/keq-request-init.js +12 -0
  68. package/dist/umd/src/types/keq-request-method.d.ts +1 -0
  69. package/dist/umd/src/types/keq-request-method.js +12 -0
  70. package/dist/umd/src/types/keq-request.d.ts +21 -0
  71. package/dist/umd/src/types/keq-request.js +12 -0
  72. package/dist/umd/src/types/keq-retry-delay.d.ts +2 -0
  73. package/dist/umd/src/types/keq-retry-delay.js +12 -0
  74. package/dist/umd/src/types/keq-retry-on.d.ts +2 -0
  75. package/dist/umd/src/types/keq-retry-on.js +12 -0
  76. package/dist/umd/src/types/router-map.d.ts +9 -0
  77. package/dist/umd/src/types/router-map.js +12 -0
  78. package/dist/umd/src/types/shorthand-content-type.d.ts +1 -0
  79. package/dist/umd/src/types/shorthand-content-type.js +12 -0
  80. package/dist/umd/src/util/assign-keq-request-body.d.ts +2 -0
  81. package/dist/umd/src/util/assign-keq-request-body.js +70 -0
  82. package/dist/umd/src/util/base64.d.ts +2 -0
  83. package/dist/umd/src/util/base64.js +15 -0
  84. package/dist/umd/src/util/clone.d.ts +1 -0
  85. package/dist/umd/src/util/clone.js +38 -0
  86. package/dist/umd/src/util/fix-content-type.d.ts +2 -0
  87. package/dist/umd/src/util/fix-content-type.js +35 -0
  88. package/dist/umd/src/util/shadow-clone.d.ts +4 -0
  89. package/dist/umd/src/util/shadow-clone.js +27 -0
  90. package/package.json +1 -1
  91. package/tsconfig.json +0 -1
@@ -0,0 +1,193 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./core", "./exception/exception", "./exception/invalid-arguments.exception", "./is/is-blob", "./is/is-file", "./is/is-form-data", "./is/is-headers", "./is/is-url-search-params", "./util/assign-keq-request-body", "./util/base64", "./util/fix-content-type"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Keq = void 0;
13
+ const core_1 = require("./core");
14
+ const exception_1 = require("./exception/exception");
15
+ const invalid_arguments_exception_1 = require("./exception/invalid-arguments.exception");
16
+ const is_blob_1 = require("./is/is-blob");
17
+ const is_file_1 = require("./is/is-file");
18
+ const is_form_data_1 = require("./is/is-form-data");
19
+ const is_headers_1 = require("./is/is-headers");
20
+ const is_url_search_params_1 = require("./is/is-url-search-params");
21
+ const assign_keq_request_body_1 = require("./util/assign-keq-request-body");
22
+ const base64_1 = require("./util/base64");
23
+ const fix_content_type_1 = require("./util/fix-content-type");
24
+ /**
25
+ * @description Keq 扩展 API,人性化的常用的API
26
+ */
27
+ class Keq extends core_1.Core {
28
+ use(...middlewares) {
29
+ return this.prependMiddlewares(...middlewares);
30
+ }
31
+ option(key, value = true) {
32
+ this.__options__[key] = value;
33
+ return this;
34
+ }
35
+ options(opts) {
36
+ for (const [key, value] of Object.entries(opts)) {
37
+ this.__options__[key] = value;
38
+ }
39
+ return this;
40
+ }
41
+ set(headersOrName, value) {
42
+ if ((0, is_headers_1.isHeaders)(headersOrName)) {
43
+ headersOrName.forEach((value, key) => {
44
+ this.requestContext.headers.set(key, value);
45
+ });
46
+ }
47
+ else if (typeof headersOrName === 'string' && value) {
48
+ this.requestContext.headers.set(headersOrName, value);
49
+ }
50
+ else if (typeof headersOrName === 'object') {
51
+ for (const [key, value] of Object.entries(headersOrName)) {
52
+ this.requestContext.headers.set(key, value);
53
+ }
54
+ }
55
+ return this;
56
+ }
57
+ query(key, value) {
58
+ if (typeof key === 'string' && Array.isArray(value)) {
59
+ for (const item of value) {
60
+ this.requestContext.url.searchParams.append(key, String(item));
61
+ }
62
+ }
63
+ else if (typeof key === 'string' && typeof value === 'string') {
64
+ this.requestContext.url.searchParams.append(key, value);
65
+ }
66
+ else if (typeof key === 'object') {
67
+ for (const [k, v] of Object.entries(key)) {
68
+ if (v === undefined)
69
+ continue;
70
+ this.query(k, v);
71
+ }
72
+ }
73
+ else {
74
+ throw new exception_1.Exception('please set query value');
75
+ }
76
+ return this;
77
+ }
78
+ params(key, value) {
79
+ if (typeof key === 'string') {
80
+ this.requestContext.routeParams[key] = String(value);
81
+ }
82
+ else if (typeof key === 'object') {
83
+ for (const [k, v] of Object.entries(key)) {
84
+ this.requestContext.routeParams[k] = String(v);
85
+ }
86
+ }
87
+ else {
88
+ throw new exception_1.Exception('please set params value');
89
+ }
90
+ return this;
91
+ }
92
+ /**
93
+ * Set request body
94
+ */
95
+ body(value) {
96
+ this.requestContext.body = value;
97
+ return this;
98
+ }
99
+ /**
100
+ * Setting the Content-Type
101
+ */
102
+ type(contentType) {
103
+ const type = (0, fix_content_type_1.fixContentType)(contentType);
104
+ this.set('Content-Type', type);
105
+ return this;
106
+ }
107
+ /**
108
+ * Http Basic Authentication
109
+ */
110
+ auth(username, password) {
111
+ this.set('Authorization', `Basic ${(0, base64_1.base64Encode)(`${username}:${password}`)}`);
112
+ return this;
113
+ }
114
+ setTypeIfEmpty(contentType) {
115
+ if (!this.requestContext.headers.has('Content-Type'))
116
+ void this.type(contentType);
117
+ }
118
+ /**
119
+ * set request body
120
+ */
121
+ send(value) {
122
+ this.requestContext.body = (0, assign_keq_request_body_1.assignKeqRequestBody)(this.requestContext.body, value);
123
+ if ((0, is_url_search_params_1.isUrlSearchParams)(value)) {
124
+ this.setTypeIfEmpty('form');
125
+ }
126
+ else if ((0, is_form_data_1.isFormData)(value)) {
127
+ this.setTypeIfEmpty('form-data');
128
+ }
129
+ else if (typeof value === 'object') {
130
+ this.setTypeIfEmpty('json');
131
+ }
132
+ return this;
133
+ }
134
+ field(arg1, arg2) {
135
+ if (typeof arg1 === 'object') {
136
+ this.requestContext.body = (0, assign_keq_request_body_1.assignKeqRequestBody)(this.requestContext.body, arg1);
137
+ }
138
+ else if (arg2) {
139
+ this.requestContext.body = (0, assign_keq_request_body_1.assignKeqRequestBody)(this.requestContext.body, { [arg1]: arg2 });
140
+ }
141
+ else {
142
+ throw new invalid_arguments_exception_1.InvalidArgumentsExceptions();
143
+ }
144
+ this.setTypeIfEmpty('form-data');
145
+ return this;
146
+ }
147
+ attach(key, value, arg3 = 'file') {
148
+ let file;
149
+ if ((0, is_blob_1.isBlob)(value)) {
150
+ const formData = new FormData();
151
+ formData.set(key, value, arg3);
152
+ file = formData.get(key);
153
+ }
154
+ else if ((0, is_file_1.isFile)(value)) {
155
+ file = value;
156
+ }
157
+ else if (value instanceof Buffer) {
158
+ file = new File([value], arg3);
159
+ }
160
+ else {
161
+ throw new invalid_arguments_exception_1.InvalidArgumentsExceptions();
162
+ }
163
+ this.requestContext.body = (0, assign_keq_request_body_1.assignKeqRequestBody)(this.requestContext.body, { [key]: file });
164
+ this.setTypeIfEmpty('form-dat');
165
+ return this;
166
+ }
167
+ /**
168
+ *
169
+ * @param retryTimes Max number of retries per call
170
+ * @param retryDelay Initial value used to calculate the retry in milliseconds (This is still randomized following the randomization factor)
171
+ * @param retryCallback Will be called after request failed
172
+ */
173
+ retry(retryTimes, retryDelay, retryOn) {
174
+ this.option('retryTimes', retryTimes);
175
+ this.option('retryDelay', retryDelay);
176
+ this.option('retryOn', retryOn);
177
+ return this;
178
+ }
179
+ redirect(mod) {
180
+ this.requestContext.redirect = mod;
181
+ return this;
182
+ }
183
+ credentials(mod) {
184
+ this.requestContext.credentials = mod;
185
+ return this;
186
+ }
187
+ mode(mod) {
188
+ this.requestContext.mode = mod;
189
+ return this;
190
+ }
191
+ }
192
+ exports.Keq = Keq;
193
+ });
@@ -0,0 +1,2 @@
1
+ import { KeqMiddleware } from './types/keq-middleware';
2
+ export declare function composeMiddleware(middlewares: KeqMiddleware[]): KeqMiddleware;
@@ -0,0 +1,27 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./exception/exception"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.composeMiddleware = void 0;
13
+ /* eslint-disable @typescript-eslint/no-empty-function */
14
+ const exception_1 = require("./exception/exception");
15
+ function composeMiddleware(middlewares) {
16
+ if (!middlewares.length) {
17
+ throw new exception_1.Exception('At least one middleware');
18
+ }
19
+ const middleware = middlewares
20
+ .reverse()
21
+ .reduce(function (prev, curr) {
22
+ return (ctx, next) => curr(ctx, () => prev(ctx, next));
23
+ });
24
+ return middleware;
25
+ }
26
+ exports.composeMiddleware = composeMiddleware;
27
+ });
@@ -0,0 +1,2 @@
1
+ import { KeqMiddleware } from '../types/keq-middleware';
2
+ export declare function fetchArgumentsMiddleware(): KeqMiddleware;
@@ -0,0 +1,96 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "path-to-regexp", "whatwg-url", "../exception/exception"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.fetchArgumentsMiddleware = void 0;
13
+ const path_to_regexp_1 = require("path-to-regexp");
14
+ const whatwg_url_1 = require("whatwg-url");
15
+ const exception_1 = require("../exception/exception");
16
+ function compileUrl(obj, routeParams) {
17
+ const url = new whatwg_url_1.URL(typeof obj === 'string' ? obj : obj.href);
18
+ try {
19
+ const toPath = (0, path_to_regexp_1.compile)(url.pathname, { encode: encodeURIComponent });
20
+ url.pathname = toPath(routeParams);
21
+ }
22
+ catch (e) {
23
+ throw new exception_1.Exception(`Cannot compile the params in ${url.pathname}, Because ${e?.message}.`);
24
+ }
25
+ return url.href;
26
+ }
27
+ function inferContentTypeByBody(body) {
28
+ if (!body)
29
+ return 'text/plain';
30
+ if (typeof body === 'object')
31
+ return 'application/json';
32
+ return 'application/x-www-form-urlencoded';
33
+ }
34
+ function compileBody(ctx) {
35
+ const request = ctx.request;
36
+ const body = request.body;
37
+ const contentType = request.headers.get('Content-Type');
38
+ if (contentType === 'application/json' && body) {
39
+ return typeof body === 'object' ? JSON.stringify(body) : body;
40
+ }
41
+ else if (contentType === 'application/x-www-form-urlencoded' && body) {
42
+ if (Array.isArray(body))
43
+ return;
44
+ const params = new URLSearchParams();
45
+ Object.entries(body).map(([key, value]) => {
46
+ if (Array.isArray(value)) {
47
+ for (const v of value) {
48
+ params.append(key, v);
49
+ }
50
+ }
51
+ else {
52
+ params.append(key, value);
53
+ }
54
+ });
55
+ return params;
56
+ }
57
+ else if (contentType === 'multipart/form-data') {
58
+ if (Array.isArray(ctx.request.body)) {
59
+ throw new exception_1.Exception('FormData cannot send array');
60
+ }
61
+ if (!ctx.request.body)
62
+ return;
63
+ const body = ctx.request.body;
64
+ const form = new FormData();
65
+ for (const [key, value] of Object.entries(body)) {
66
+ if (Array.isArray(value)) {
67
+ for (const v of value) {
68
+ form.append(key, v);
69
+ }
70
+ }
71
+ else {
72
+ form.append(key, value);
73
+ }
74
+ }
75
+ request.headers.delete('content-type');
76
+ return form;
77
+ }
78
+ }
79
+ function fetchArgumentsMiddleware() {
80
+ return async (ctx, next) => {
81
+ const request = ctx.request;
82
+ const url = compileUrl(request.url, request.routeParams);
83
+ if (!request.headers.has('Content-Type') && request.body) {
84
+ request.headers.set('Content-Type', inferContentTypeByBody(ctx.request.body));
85
+ }
86
+ const requestInit = {
87
+ method: request.method.toUpperCase(),
88
+ headers: request.headers,
89
+ body: compileBody(ctx),
90
+ };
91
+ ctx.fetchArguments = [url, requestInit];
92
+ await next();
93
+ };
94
+ }
95
+ exports.fetchArgumentsMiddleware = fetchArgumentsMiddleware;
96
+ });
@@ -0,0 +1,5 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ /**
3
+ * Send Request
4
+ */
5
+ export declare function fetchMiddleware(): KeqMiddleware;
@@ -0,0 +1,29 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "../exception/exception"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.fetchMiddleware = void 0;
13
+ const exception_1 = require("../exception/exception");
14
+ /**
15
+ * Send Request
16
+ */
17
+ function fetchMiddleware() {
18
+ return async (ctx) => {
19
+ const fetchArguments = ctx.fetchArguments;
20
+ if (!fetchArguments) {
21
+ throw new exception_1.Exception('fetchArguments is required');
22
+ }
23
+ const fetch = ctx.options.fetchAPI || globalThis.fetch;
24
+ const response = await fetch(...fetchArguments);
25
+ ctx.res = response;
26
+ };
27
+ }
28
+ exports.fetchMiddleware = fetchMiddleware;
29
+ });
@@ -0,0 +1,2 @@
1
+ import { KeqMiddleware } from '../types/keq-middleware';
2
+ export declare function proxyResponseMiddleware(): KeqMiddleware;
@@ -0,0 +1,27 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.proxyResponseMiddleware = void 0;
13
+ function proxyResponseMiddleware() {
14
+ return async (ctx, next) => {
15
+ await next();
16
+ const res = ctx.res;
17
+ if (res) {
18
+ Object.defineProperty(ctx, 'response', {
19
+ get() {
20
+ return res.clone();
21
+ },
22
+ });
23
+ }
24
+ };
25
+ }
26
+ exports.proxyResponseMiddleware = proxyResponseMiddleware;
27
+ });
@@ -0,0 +1,2 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ export declare function retryMiddleware(): KeqMiddleware;
@@ -0,0 +1,51 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.retryMiddleware = void 0;
13
+ function sleep(ms) {
14
+ return new Promise((resolve) => setTimeout(resolve, ms));
15
+ }
16
+ function retryMiddleware() {
17
+ return async (ctx, next) => {
18
+ const retryTimes = (Number(ctx.options.retryTimes) || 0) + 1;
19
+ const retryDelay = ctx.options.retryDelay || 10;
20
+ const retryOn = ctx.options.retryOn;
21
+ // Avoid multiple middleware from being added repeatedly
22
+ ctx.options = {
23
+ ...ctx.options,
24
+ retryTimes: undefined,
25
+ retryDelay: undefined,
26
+ retryOn: undefined,
27
+ };
28
+ for (let i = 0; i < retryTimes; i++) {
29
+ let err = null;
30
+ try {
31
+ await next();
32
+ }
33
+ catch (e) {
34
+ err = e;
35
+ }
36
+ if (i === retryTimes - 1)
37
+ break;
38
+ if (retryOn && retryOn(i, err, ctx) === false) {
39
+ break;
40
+ }
41
+ else if (!retryOn && !err) {
42
+ break;
43
+ }
44
+ const delay = typeof retryDelay === 'function' ? retryDelay(i, err, ctx) : retryDelay;
45
+ if (delay > 0)
46
+ await sleep(delay);
47
+ }
48
+ };
49
+ }
50
+ exports.retryMiddleware = retryMiddleware;
51
+ });
@@ -0,0 +1,7 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ import { KeqRouter } from './keq-router';
3
+ export declare class KeqHostRouter extends KeqRouter {
4
+ host: string;
5
+ constructor(host: string, middlewares: KeqMiddleware[]);
6
+ routes(): KeqMiddleware;
7
+ }
@@ -0,0 +1,33 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "../middleware", "./keq-router"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.KeqHostRouter = void 0;
13
+ const middleware_1 = require("../middleware");
14
+ const keq_router_1 = require("./keq-router");
15
+ class KeqHostRouter extends keq_router_1.KeqRouter {
16
+ host;
17
+ constructor(host, middlewares) {
18
+ super(middlewares);
19
+ this.host = host;
20
+ }
21
+ routes() {
22
+ return async (ctx, next) => {
23
+ if (ctx.request.url.host === this.host) {
24
+ await (0, middleware_1.composeMiddleware)(this.middlewares)(ctx, next);
25
+ }
26
+ else {
27
+ await next();
28
+ }
29
+ };
30
+ }
31
+ }
32
+ exports.KeqHostRouter = KeqHostRouter;
33
+ });
@@ -0,0 +1,6 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ import { KeqRouter } from './keq-router';
3
+ export declare class KeqLocationRouter extends KeqRouter {
4
+ constructor(middlewares: KeqMiddleware[]);
5
+ routes(): KeqMiddleware;
6
+ }
@@ -0,0 +1,32 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "../is/is-browser", "../middleware", "./keq-router"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.KeqLocationRouter = void 0;
13
+ const is_browser_1 = require("../is/is-browser");
14
+ const middleware_1 = require("../middleware");
15
+ const keq_router_1 = require("./keq-router");
16
+ class KeqLocationRouter extends keq_router_1.KeqRouter {
17
+ constructor(middlewares) {
18
+ super(middlewares);
19
+ }
20
+ routes() {
21
+ return async (ctx, next) => {
22
+ if ((0, is_browser_1.isBrowser)() && ctx.request.url.host === window.location.host) {
23
+ await (0, middleware_1.composeMiddleware)(this.middlewares)(ctx, next);
24
+ }
25
+ else {
26
+ await next();
27
+ }
28
+ };
29
+ }
30
+ }
31
+ exports.KeqLocationRouter = KeqLocationRouter;
32
+ });
@@ -0,0 +1,8 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ import { KeqRequestMethod } from "../types/keq-request-method";
3
+ import { KeqRouter } from './keq-router';
4
+ export declare class KeqMethodRouter extends KeqRouter {
5
+ method: string;
6
+ constructor(method: KeqRequestMethod, middlewares: KeqMiddleware[]);
7
+ routes(): KeqMiddleware;
8
+ }
@@ -0,0 +1,33 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "../middleware", "./keq-router"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.KeqMethodRouter = void 0;
13
+ const middleware_1 = require("../middleware");
14
+ const keq_router_1 = require("./keq-router");
15
+ class KeqMethodRouter extends keq_router_1.KeqRouter {
16
+ method;
17
+ constructor(method, middlewares) {
18
+ super(middlewares);
19
+ this.method = method;
20
+ }
21
+ routes() {
22
+ return async (ctx, next) => {
23
+ if (ctx.request.method.toLowerCase() === this.method) {
24
+ await (0, middleware_1.composeMiddleware)(this.middlewares)(ctx, next);
25
+ }
26
+ else {
27
+ await next();
28
+ }
29
+ };
30
+ }
31
+ }
32
+ exports.KeqMethodRouter = KeqMethodRouter;
33
+ });
@@ -0,0 +1,7 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ import { KeqRouter } from './keq-router';
3
+ export declare class KeqModuleRouter extends KeqRouter {
4
+ moduleName: string;
5
+ constructor(moduleName: string, middlewares: KeqMiddleware[]);
6
+ routes(): KeqMiddleware;
7
+ }
@@ -0,0 +1,37 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "../exception/exception", "../middleware", "./keq-router"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.KeqModuleRouter = void 0;
13
+ const exception_1 = require("../exception/exception");
14
+ const middleware_1 = require("../middleware");
15
+ const keq_router_1 = require("./keq-router");
16
+ class KeqModuleRouter extends keq_router_1.KeqRouter {
17
+ moduleName;
18
+ constructor(moduleName, middlewares) {
19
+ if (moduleName === '') {
20
+ throw new exception_1.Exception('Module name should not be empty');
21
+ }
22
+ super(middlewares);
23
+ this.moduleName = moduleName;
24
+ }
25
+ routes() {
26
+ return async (ctx, next) => {
27
+ if (ctx.options.module?.name === this.moduleName) {
28
+ await (0, middleware_1.composeMiddleware)(this.middlewares)(ctx, next);
29
+ }
30
+ else {
31
+ await next();
32
+ }
33
+ };
34
+ }
35
+ }
36
+ exports.KeqModuleRouter = KeqModuleRouter;
37
+ });
@@ -0,0 +1,7 @@
1
+ import { KeqMiddleware } from "../types/keq-middleware";
2
+ import { KeqRouter } from './keq-router';
3
+ export declare class KeqPathnameRouter extends KeqRouter {
4
+ pathname: string;
5
+ constructor(pathname: string, middlewares: KeqMiddleware[]);
6
+ routes(): KeqMiddleware;
7
+ }
@@ -0,0 +1,34 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "minimatch", "../middleware", "./keq-router"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.KeqPathnameRouter = void 0;
13
+ const minimatch_1 = require("minimatch");
14
+ const middleware_1 = require("../middleware");
15
+ const keq_router_1 = require("./keq-router");
16
+ class KeqPathnameRouter extends keq_router_1.KeqRouter {
17
+ pathname;
18
+ constructor(pathname, middlewares) {
19
+ super(middlewares);
20
+ this.pathname = pathname;
21
+ }
22
+ routes() {
23
+ return async (ctx, next) => {
24
+ if ((0, minimatch_1.minimatch)(ctx.request.url.pathname, this.pathname)) {
25
+ await (0, middleware_1.composeMiddleware)(this.middlewares)(ctx, next);
26
+ }
27
+ else {
28
+ await next();
29
+ }
30
+ };
31
+ }
32
+ }
33
+ exports.KeqPathnameRouter = KeqPathnameRouter;
34
+ });