@innet/server 2.0.0-alpha.9 → 2.0.0-beta.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.
- package/README.md +1063 -445
- package/handler/handler.d.ts +23 -18
- package/handler/handler.es6.js +15 -14
- package/handler/handler.js +14 -13
- package/hooks/index.d.ts +6 -1
- package/hooks/index.es6.js +6 -1
- package/hooks/index.js +6 -1
- package/hooks/useAction/useAction.es6.js +1 -1
- package/hooks/useAction/useAction.js +1 -1
- package/hooks/useApi/useApi.d.ts +1 -3
- package/hooks/useClientIp/useClientIp.d.ts +1 -1
- package/hooks/useEndpoint/useEndpoint.d.ts +1 -1
- package/hooks/useEndpoint/useEndpoint.es6.js +3 -1
- package/hooks/useEndpoint/useEndpoint.js +3 -1
- package/hooks/useHeaders/useHeaders.d.ts +0 -1
- package/hooks/useIsServerHttps/index.d.ts +1 -0
- package/hooks/useIsServerHttps/index.es6.js +1 -0
- package/hooks/useIsServerHttps/index.js +10 -0
- package/hooks/useIsServerHttps/useIsServerHttps.d.ts +3 -0
- package/hooks/useIsServerHttps/useIsServerHttps.es6.js +14 -0
- package/hooks/useIsServerHttps/useIsServerHttps.js +19 -0
- package/hooks/useNewSchema/useNewSchema.es6.js +2 -2
- package/hooks/useNewSchema/useNewSchema.js +2 -2
- package/hooks/useObjectSchemaContext/index.d.ts +1 -0
- package/hooks/useObjectSchemaContext/index.es6.js +1 -0
- package/hooks/useObjectSchemaContext/index.js +10 -0
- package/hooks/useObjectSchemaContext/useObjectSchemaContext.d.ts +3 -0
- package/hooks/useObjectSchemaContext/useObjectSchemaContext.es6.js +14 -0
- package/hooks/useObjectSchemaContext/useObjectSchemaContext.js +19 -0
- package/hooks/useRequest/index.es6.js +1 -1
- package/hooks/useRequest/index.js +0 -1
- package/hooks/useRequest/useRequest.d.ts +1 -5
- package/hooks/useRequest/useRequest.es6.js +4 -4
- package/hooks/useRequest/useRequest.js +3 -4
- package/hooks/useRequestHandler/index.d.ts +1 -0
- package/hooks/useRequestHandler/index.es6.js +1 -0
- package/hooks/useRequestHandler/index.js +10 -0
- package/hooks/useRequestHandler/useRequestHandler.d.ts +4 -0
- package/hooks/useRequestHandler/useRequestHandler.es6.js +14 -0
- package/hooks/useRequestHandler/useRequestHandler.js +19 -0
- package/hooks/useResponse/index.es6.js +1 -1
- package/hooks/useResponse/index.js +0 -1
- package/hooks/useResponse/useResponse.d.ts +1 -5
- package/hooks/useResponse/useResponse.es6.js +4 -4
- package/hooks/useResponse/useResponse.js +3 -4
- package/hooks/useSchemaType/useSchemaType.d.ts +3 -2
- package/hooks/useSchemaType/useSchemaType.es6.js +16 -9
- package/hooks/useSchemaType/useSchemaType.js +16 -9
- package/hooks/useServer/useServer.d.ts +2 -3
- package/hooks/useServer/useServer.es6.js +3 -1
- package/hooks/useServer/useServer.js +3 -1
- package/hooks/useServerPlugin/index.d.ts +1 -0
- package/hooks/useServerPlugin/index.es6.js +1 -0
- package/hooks/useServerPlugin/index.js +9 -0
- package/hooks/useServerPlugin/useServerPlugin.d.ts +2 -0
- package/hooks/useServerPlugin/useServerPlugin.es6.js +13 -0
- package/hooks/useServerPlugin/useServerPlugin.js +17 -0
- package/hooks/useServerPlugins/index.d.ts +1 -0
- package/hooks/useServerPlugins/index.es6.js +1 -0
- package/hooks/useServerPlugins/index.js +10 -0
- package/hooks/useServerPlugins/useServerPlugins.d.ts +4 -0
- package/hooks/useServerPlugins/useServerPlugins.es6.js +14 -0
- package/hooks/useServerPlugins/useServerPlugins.js +19 -0
- package/hooks/useServerPort/index.d.ts +1 -0
- package/hooks/useServerPort/index.es6.js +1 -0
- package/hooks/useServerPort/index.js +10 -0
- package/hooks/useServerPort/useServerPort.d.ts +3 -0
- package/hooks/useServerPort/useServerPort.es6.js +14 -0
- package/hooks/useServerPort/useServerPort.js +19 -0
- package/index.es6.js +15 -9
- package/index.js +30 -14
- package/package.json +15 -16
- package/plugins/handler/serverFn/serverFn.es6.js +1 -1
- package/plugins/handler/serverFn/serverFn.js +1 -1
- package/plugins/main/api/api.d.ts +11 -8
- package/plugins/main/api/api.es6.js +112 -113
- package/plugins/main/api/api.js +111 -112
- package/plugins/main/body/body.d.ts +1 -0
- package/plugins/main/contact/contact.d.ts +2 -2
- package/plugins/main/endpoint/endpoint.d.ts +21 -15
- package/plugins/main/endpoint/endpoint.es6.js +11 -9
- package/plugins/main/endpoint/endpoint.js +10 -8
- package/plugins/main/host/host.d.ts +5 -5
- package/plugins/main/host/host.es6.js +3 -1
- package/plugins/main/host/host.js +3 -1
- package/plugins/main/index.d.ts +2 -2
- package/plugins/main/index.es6.js +2 -2
- package/plugins/main/index.js +2 -2
- package/plugins/main/license/license.d.ts +5 -5
- package/plugins/main/param/param.d.ts +12 -11
- package/plugins/main/param/param.es6.js +6 -7
- package/plugins/main/param/param.js +5 -6
- package/plugins/main/preset/index.d.ts +1 -0
- package/plugins/main/preset/index.es6.js +1 -0
- package/plugins/{utils/prod → main/preset}/index.js +2 -2
- package/plugins/main/preset/preset.d.ts +3 -0
- package/plugins/main/preset/preset.es6.js +13 -0
- package/plugins/{utils/dev/dev.js → main/preset/preset.js} +9 -6
- package/plugins/main/response/index.es6.js +1 -1
- package/plugins/main/response/index.js +1 -0
- package/plugins/main/response/response.d.ts +6 -1
- package/plugins/main/response/response.es6.js +28 -12
- package/plugins/main/response/response.js +27 -10
- package/plugins/main/return/index.d.ts +1 -0
- package/plugins/main/return/index.es6.js +1 -0
- package/plugins/main/return/index.js +9 -0
- package/plugins/main/return/return.d.ts +4 -0
- package/plugins/main/return/return.es6.js +10 -0
- package/plugins/main/return/return.js +14 -0
- package/plugins/main/server/server.d.ts +6 -6
- package/plugins/main/server/server.es6.js +40 -16
- package/plugins/main/server/server.js +39 -15
- package/plugins/main/tag/tag.d.ts +3 -2
- package/plugins/main/tag/tag.es6.js +6 -4
- package/plugins/main/tag/tag.js +5 -3
- package/plugins/main/variable/variable.d.ts +5 -5
- package/plugins/main/variable/variable.es6.js +4 -3
- package/plugins/main/variable/variable.js +4 -3
- package/plugins/request/cms/cms.d.ts +1 -0
- package/plugins/request/cms/cms.es6.js +3 -4
- package/plugins/request/cms/cms.js +2 -3
- package/plugins/request/cookie/cookie.d.ts +2 -2
- package/plugins/request/cookie/cookie.es6.js +1 -2
- package/plugins/request/cookie/cookie.js +1 -2
- package/plugins/request/error/error.d.ts +41 -40
- package/plugins/request/error/error.es6.js +47 -45
- package/plugins/request/error/error.js +46 -44
- package/plugins/request/file/file.d.ts +1 -0
- package/plugins/request/file/file.es6.js +4 -6
- package/plugins/request/file/file.js +3 -5
- package/plugins/request/header/header.es6.js +1 -1
- package/plugins/request/header/header.js +1 -1
- package/plugins/request/proxy/proxy.d.ts +3 -1
- package/plugins/request/proxy/proxy.es6.js +5 -2
- package/plugins/request/proxy/proxy.js +5 -2
- package/plugins/request/redirect/redirect.d.ts +8 -7
- package/plugins/request/redirect/redirect.es6.js +7 -7
- package/plugins/request/redirect/redirect.js +7 -7
- package/plugins/request/success/success.d.ts +8 -6
- package/plugins/request/success/success.es6.js +21 -11
- package/plugins/request/success/success.js +20 -10
- package/plugins/schema/any/any.d.ts +5 -0
- package/plugins/schema/any/any.es6.js +27 -0
- package/plugins/schema/any/any.js +31 -0
- package/plugins/schema/array/array.d.ts +1 -0
- package/plugins/schema/array/array.es6.js +2 -3
- package/plugins/schema/array/array.js +1 -2
- package/plugins/schema/binary/binary.d.ts +3 -3
- package/plugins/schema/date/date.d.ts +1 -1
- package/plugins/schema/date/date.es6.js +8 -4
- package/plugins/schema/date/date.js +8 -4
- package/plugins/schema/field/field.d.ts +2 -0
- package/plugins/schema/field/field.es6.js +8 -8
- package/plugins/schema/field/field.js +6 -6
- package/plugins/schema/index.d.ts +1 -0
- package/plugins/schema/index.es6.js +1 -0
- package/plugins/schema/index.js +1 -0
- package/plugins/schema/integer/integer.d.ts +3 -3
- package/plugins/schema/integer/integer.es6.js +8 -3
- package/plugins/schema/integer/integer.js +8 -3
- package/plugins/schema/number/number.d.ts +2 -2
- package/plugins/schema/number/number.es6.js +1 -2
- package/plugins/schema/number/number.js +1 -2
- package/plugins/schema/object/object.d.ts +1 -0
- package/plugins/schema/object/object.es6.js +19 -7
- package/plugins/schema/object/object.js +18 -6
- package/plugins/schema/string/string.d.ts +2 -2
- package/plugins/schema/string/string.es6.js +44 -31
- package/plugins/schema/string/string.js +44 -31
- package/plugins/schema/tuple/tuple.d.ts +1 -0
- package/plugins/schema/tuple/tuple.es6.js +4 -5
- package/plugins/schema/tuple/tuple.js +3 -4
- package/plugins/schema/uuid/uuid.es6.js +5 -3
- package/plugins/schema/uuid/uuid.js +5 -3
- package/plugins/utils/blacklist/blacklist.d.ts +5 -0
- package/plugins/utils/blacklist/blacklist.es6.js +17 -0
- package/plugins/utils/blacklist/blacklist.js +21 -0
- package/plugins/utils/blacklist/index.d.ts +1 -0
- package/plugins/utils/blacklist/index.es6.js +1 -0
- package/plugins/utils/blacklist/index.js +9 -0
- package/plugins/utils/dts/dts.d.ts +2 -1
- package/plugins/utils/dts/dts.es6.js +2 -2
- package/plugins/utils/dts/dts.js +2 -2
- package/plugins/utils/env/env.d.ts +7 -0
- package/plugins/utils/env/env.es6.js +11 -0
- package/plugins/utils/{prod/prod.js → env/env.js} +5 -4
- package/plugins/utils/env/index.d.ts +1 -0
- package/plugins/utils/env/index.es6.js +1 -0
- package/plugins/utils/{dev → env}/index.js +2 -2
- package/plugins/utils/index.d.ts +3 -2
- package/plugins/utils/index.es6.js +3 -2
- package/plugins/utils/index.js +3 -2
- package/plugins/utils/protection/protection.d.ts +4 -4
- package/plugins/utils/protection/protection.es6.js +13 -16
- package/plugins/utils/protection/protection.js +13 -16
- package/plugins/utils/swagger/swagger.es6.js +7 -5
- package/plugins/utils/swagger/swagger.js +7 -5
- package/plugins/utils/whitelist/index.d.ts +1 -0
- package/plugins/utils/whitelist/index.es6.js +1 -0
- package/plugins/utils/whitelist/index.js +9 -0
- package/plugins/utils/whitelist/whitelist.d.ts +5 -0
- package/plugins/utils/whitelist/whitelist.es6.js +19 -0
- package/plugins/utils/whitelist/whitelist.js +23 -0
- package/types.d.ts +15 -22
- package/utils/FileData/Bin.d.ts +13 -13
- package/utils/FileData/Bin.es6.js +2 -2
- package/utils/FileData/Bin.js +2 -2
- package/utils/action/Action.d.ts +13 -14
- package/utils/action/Action.es6.js +92 -92
- package/utils/action/Action.js +91 -91
- package/utils/dateFormat/dateFormat.d.ts +1 -1
- package/utils/dateFormat/dateFormat.es6.js +1 -1
- package/utils/dateFormat/dateFormat.js +1 -1
- package/utils/decorators/once/once.es6.js +1 -1
- package/utils/decorators/once/once.js +1 -1
- package/utils/generateTypes/generateTypes.d.ts +2 -2
- package/utils/generateTypes/generateTypes.es6.js +85 -25
- package/utils/generateTypes/generateTypes.js +85 -25
- package/utils/getEndpoint/getEndpoint.es6.js +2 -2
- package/utils/getEndpoint/getEndpoint.js +2 -2
- package/utils/getOrAdd/getOrAdd.d.ts +1 -1
- package/utils/httpOnStart/httpOnStart.d.ts +1 -1
- package/utils/httpOnStart/httpOnStart.es6.js +1 -1
- package/utils/httpOnStart/httpOnStart.js +1 -1
- package/utils/parseBody/parseBody.d.ts +0 -1
- package/utils/parseBody/parseBody.es6.js +13 -16
- package/utils/parseBody/parseBody.js +13 -16
- package/utils/parseFormBody/parseFormBody.d.ts +0 -1
- package/utils/parseFormBody/parseFormBody.es6.js +41 -41
- package/utils/parseFormBody/parseFormBody.js +41 -41
- package/utils/parseSearch/parseSearch.es6.js +4 -1
- package/utils/parseSearch/parseSearch.js +4 -1
- package/utils/rules/arrayOf/arrayOf.es6.js +1 -1
- package/utils/rules/arrayOf/arrayOf.js +1 -1
- package/utils/rules/bin/bin.es6.js +4 -1
- package/utils/rules/bin/bin.js +4 -1
- package/utils/rules/binaryAccept/binaryAccept.es6.js +5 -2
- package/utils/rules/binaryAccept/binaryAccept.js +5 -2
- package/utils/rules/dateTo/dateTo.d.ts +1 -1
- package/utils/rules/dateTo/dateTo.es6.js +4 -1
- package/utils/rules/dateTo/dateTo.js +4 -1
- package/utils/rules/helpers.d.ts +1 -1
- package/utils/rules/helpers.es6.js +4 -1
- package/utils/rules/helpers.js +4 -1
- package/utils/rules/index.d.ts +0 -1
- package/utils/rules/index.es6.js +0 -1
- package/utils/rules/index.js +0 -1
- package/utils/rules/int/int.es6.js +17 -4
- package/utils/rules/int/int.js +17 -4
- package/utils/rules/max/max.d.ts +1 -1
- package/utils/rules/max/max.es6.js +10 -4
- package/utils/rules/max/max.js +10 -4
- package/utils/rules/maxBin/maxBin.es6.js +5 -2
- package/utils/rules/maxBin/maxBin.js +5 -2
- package/utils/rules/maxDate/maxDate.es6.js +5 -1
- package/utils/rules/maxDate/maxDate.js +5 -1
- package/utils/rules/maxLength/maxLength.es6.js +5 -2
- package/utils/rules/maxLength/maxLength.js +5 -2
- package/utils/rules/min/min.d.ts +1 -1
- package/utils/rules/min/min.es6.js +10 -4
- package/utils/rules/min/min.js +10 -4
- package/utils/rules/minBin/minBin.es6.js +5 -2
- package/utils/rules/minBin/minBin.js +5 -2
- package/utils/rules/minDate/minDate.es6.js +5 -1
- package/utils/rules/minDate/minDate.js +5 -1
- package/utils/rules/minLength/minLength.es6.js +5 -2
- package/utils/rules/minLength/minLength.js +5 -2
- package/utils/rules/num/num.es6.js +4 -1
- package/utils/rules/num/num.js +4 -1
- package/utils/rules/objectOf/objectOf.d.ts +1 -1
- package/utils/rules/objectOf/objectOf.es6.js +16 -3
- package/utils/rules/objectOf/objectOf.js +16 -3
- package/utils/rules/pattern/pattern.d.ts +1 -1
- package/utils/rules/pattern/pattern.es6.js +6 -1
- package/utils/rules/pattern/pattern.js +6 -1
- package/utils/rules/tupleOf/tupleOf.es6.js +1 -1
- package/utils/rules/tupleOf/tupleOf.js +1 -1
- package/utils/rules/values/values.es6.js +5 -2
- package/utils/rules/values/values.js +5 -2
- package/utils/stringifySearch/stringifySearch.es6.js +4 -1
- package/utils/stringifySearch/stringifySearch.js +4 -1
- package/example/app/App/App.d.ts +0 -1
- package/example/app/App/index.d.ts +0 -1
- package/example/index.d.ts +0 -1
- package/example/requests/index.d.ts +0 -1
- package/example/requests/todo/AddTodo/AddTodo.d.ts +0 -1
- package/example/requests/todo/AddTodo/index.d.ts +0 -1
- package/example/requests/todo/DeleteTodo/DeleteTodo.d.ts +0 -1
- package/example/requests/todo/DeleteTodo/index.d.ts +0 -1
- package/example/requests/todo/EditTodo/EditTodo.d.ts +0 -1
- package/example/requests/todo/EditTodo/index.d.ts +0 -1
- package/example/requests/todo/GetTodo/GetTodo.d.ts +0 -1
- package/example/requests/todo/GetTodo/index.d.ts +0 -1
- package/example/requests/todo/GetTodos/GetTodos.d.ts +0 -1
- package/example/requests/todo/GetTodos/index.d.ts +0 -1
- package/example/requests/todo/index.d.ts +0 -5
- package/example/requests/todo/todos.d.ts +0 -1
- package/example/schemas/app/ListQueryParams/ListQueryParams.d.ts +0 -1
- package/example/schemas/app/ListQueryParams/index.d.ts +0 -1
- package/example/schemas/app/ListSchema/ListSchema.d.ts +0 -4
- package/example/schemas/app/ListSchema/index.d.ts +0 -1
- package/example/schemas/app/index.d.ts +0 -2
- package/example/schemas/index.d.ts +0 -2
- package/example/schemas/todo/TodoSchema/TodoSchema.d.ts +0 -4
- package/example/schemas/todo/TodoSchema/index.d.ts +0 -1
- package/example/schemas/todo/index.d.ts +0 -1
- package/example/tags/Todo/Todo.d.ts +0 -1
- package/example/tags/Todo/index.d.ts +0 -1
- package/example/tags/index.d.ts +0 -1
- package/hooks/useRequestPlugin/index.d.ts +0 -1
- package/hooks/useRequestPlugin/index.es6.js +0 -1
- package/hooks/useRequestPlugin/index.js +0 -9
- package/hooks/useRequestPlugin/useRequestPlugin.d.ts +0 -2
- package/hooks/useRequestPlugin/useRequestPlugin.es6.js +0 -13
- package/hooks/useRequestPlugin/useRequestPlugin.js +0 -17
- package/openApi.test.d.ts +0 -1
- package/plugins/main/fallback/fallback.d.ts +0 -4
- package/plugins/main/fallback/fallback.es6.js +0 -19
- package/plugins/main/fallback/fallback.js +0 -23
- package/plugins/main/fallback/index.d.ts +0 -1
- package/plugins/main/fallback/index.es6.js +0 -1
- package/plugins/main/fallback/index.js +0 -9
- package/plugins/main/request/index.d.ts +0 -1
- package/plugins/main/request/index.es6.js +0 -1
- package/plugins/main/request/index.js +0 -9
- package/plugins/main/request/request.d.ts +0 -4
- package/plugins/main/request/request.es6.js +0 -21
- package/plugins/main/request/request.js +0 -25
- package/plugins/utils/dev/dev.d.ts +0 -4
- package/plugins/utils/dev/dev.es6.js +0 -10
- package/plugins/utils/dev/index.d.ts +0 -1
- package/plugins/utils/dev/index.es6.js +0 -1
- package/plugins/utils/prod/index.d.ts +0 -1
- package/plugins/utils/prod/index.es6.js +0 -1
- package/plugins/utils/prod/prod.d.ts +0 -4
- package/plugins/utils/prod/prod.es6.js +0 -10
- package/utils/decorators/once/once.test.d.ts +0 -1
- package/utils/generateTypes/generateTypes.test.d.ts +0 -1
- package/utils/parseSearch/parseSearch.test.d.ts +0 -1
- package/utils/rules/any/any.d.ts +0 -1
- package/utils/rules/any/any.es6.js +0 -5
- package/utils/rules/any/any.js +0 -9
- /package/{utils/rules → plugins/schema}/any/index.d.ts +0 -0
- /package/{utils/rules → plugins/schema}/any/index.es6.js +0 -0
- /package/{utils/rules → plugins/schema}/any/index.js +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export interface ProtectionProps {
|
|
2
|
-
|
|
3
|
-
value?: string;
|
|
4
|
-
maxAge?: number;
|
|
5
|
-
excludeIp?: string | string[];
|
|
2
|
+
children?: any;
|
|
6
3
|
cookieKey?: string;
|
|
4
|
+
excludeIp?: string | string[];
|
|
5
|
+
maxAge?: number;
|
|
7
6
|
searchKey?: string;
|
|
7
|
+
value?: string;
|
|
8
8
|
}
|
|
9
9
|
export declare function protection(): void;
|
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
import { useProps } from '@innet/jsx';
|
|
2
2
|
import '../../../hooks/index.es6.js';
|
|
3
|
-
import {
|
|
3
|
+
import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
|
|
4
|
+
import { useAction } from '../../../hooks/useAction/useAction.es6.js';
|
|
4
5
|
|
|
5
6
|
function protection() {
|
|
6
|
-
const {
|
|
7
|
+
const { children, cookieKey = process.env.INNET_PROTECTION_COOKIE_KEY || 'protection', excludeIp = process.env.INNET_PROTECTED_IP, maxAge = Number(process.env.INNET_PROTECTION_MAX_AGE) || 365 * 24 * 60 * 60, searchKey = process.env.INNET_PROTECTION_SEARCH_KEY || 'protection', value = process.env.INNET_PROTECTION, } = useProps();
|
|
7
8
|
if (!value)
|
|
8
9
|
return;
|
|
9
10
|
const excludeIps = Array.isArray(excludeIp) ? excludeIp : excludeIp === null || excludeIp === void 0 ? void 0 : excludeIp.split(',');
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
11
|
+
useServerPlugin(() => {
|
|
12
|
+
const action = useAction();
|
|
13
|
+
if (!action.clientIp)
|
|
14
|
+
return children;
|
|
16
15
|
if (excludeIps === null || excludeIps === void 0 ? void 0 : excludeIps.includes(action.clientIp))
|
|
17
|
-
return
|
|
16
|
+
return;
|
|
18
17
|
const { [cookieKey]: cookieProtection } = action.cookies;
|
|
19
18
|
if (cookieProtection && cookieProtection === value)
|
|
20
|
-
return
|
|
19
|
+
return;
|
|
21
20
|
const { [searchKey]: searchProtection } = action.search;
|
|
22
21
|
if (searchProtection && searchProtection === value) {
|
|
23
22
|
action.setCookie(cookieKey, value, {
|
|
24
|
-
maxAge,
|
|
25
23
|
httpOnly: true,
|
|
26
|
-
|
|
24
|
+
maxAge,
|
|
27
25
|
path: '/',
|
|
26
|
+
secure: true,
|
|
28
27
|
});
|
|
29
|
-
return
|
|
28
|
+
return;
|
|
30
29
|
}
|
|
31
30
|
action.setCookie(cookieKey);
|
|
32
|
-
|
|
33
|
-
action.res.end();
|
|
34
|
-
return true;
|
|
31
|
+
return children;
|
|
35
32
|
});
|
|
36
33
|
}
|
|
37
34
|
|
|
@@ -4,38 +4,35 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var jsx = require('@innet/jsx');
|
|
6
6
|
require('../../../hooks/index.js');
|
|
7
|
-
var
|
|
7
|
+
var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
|
|
8
|
+
var useAction = require('../../../hooks/useAction/useAction.js');
|
|
8
9
|
|
|
9
10
|
function protection() {
|
|
10
|
-
const {
|
|
11
|
+
const { children, cookieKey = process.env.INNET_PROTECTION_COOKIE_KEY || 'protection', excludeIp = process.env.INNET_PROTECTED_IP, maxAge = Number(process.env.INNET_PROTECTION_MAX_AGE) || 365 * 24 * 60 * 60, searchKey = process.env.INNET_PROTECTION_SEARCH_KEY || 'protection', value = process.env.INNET_PROTECTION, } = jsx.useProps();
|
|
11
12
|
if (!value)
|
|
12
13
|
return;
|
|
13
14
|
const excludeIps = Array.isArray(excludeIp) ? excludeIp : excludeIp === null || excludeIp === void 0 ? void 0 : excludeIp.split(',');
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
15
|
+
useServerPlugin.useServerPlugin(() => {
|
|
16
|
+
const action = useAction.useAction();
|
|
17
|
+
if (!action.clientIp)
|
|
18
|
+
return children;
|
|
20
19
|
if (excludeIps === null || excludeIps === void 0 ? void 0 : excludeIps.includes(action.clientIp))
|
|
21
|
-
return
|
|
20
|
+
return;
|
|
22
21
|
const { [cookieKey]: cookieProtection } = action.cookies;
|
|
23
22
|
if (cookieProtection && cookieProtection === value)
|
|
24
|
-
return
|
|
23
|
+
return;
|
|
25
24
|
const { [searchKey]: searchProtection } = action.search;
|
|
26
25
|
if (searchProtection && searchProtection === value) {
|
|
27
26
|
action.setCookie(cookieKey, value, {
|
|
28
|
-
maxAge,
|
|
29
27
|
httpOnly: true,
|
|
30
|
-
|
|
28
|
+
maxAge,
|
|
31
29
|
path: '/',
|
|
30
|
+
secure: true,
|
|
32
31
|
});
|
|
33
|
-
return
|
|
32
|
+
return;
|
|
34
33
|
}
|
|
35
34
|
action.setCookie(cookieKey);
|
|
36
|
-
|
|
37
|
-
action.res.end();
|
|
38
|
-
return true;
|
|
35
|
+
return children;
|
|
39
36
|
});
|
|
40
37
|
}
|
|
41
38
|
|
|
@@ -2,14 +2,16 @@ import { useProps } from '@innet/jsx';
|
|
|
2
2
|
import '../../../hooks/index.es6.js';
|
|
3
3
|
import html from './swagger.html.es6.js';
|
|
4
4
|
import { useApi } from '../../../hooks/useApi/useApi.es6.js';
|
|
5
|
-
import {
|
|
5
|
+
import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
|
|
6
|
+
import { useAction } from '../../../hooks/useAction/useAction.es6.js';
|
|
6
7
|
|
|
7
8
|
const swagger = () => {
|
|
8
|
-
const { path = '/swagger-ui' } = useProps() || {};
|
|
9
|
-
const { docs, prefix } = useApi();
|
|
9
|
+
const { path = process.env.INNET_SWAGGER_PATH || '/swagger-ui', } = useProps() || {};
|
|
10
|
+
const { docs, prefix, } = useApi();
|
|
10
11
|
let swaggerResponse;
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
useServerPlugin(() => {
|
|
13
|
+
const action = useAction();
|
|
14
|
+
if (action.path === prefix + path) {
|
|
13
15
|
if (!swaggerResponse) {
|
|
14
16
|
swaggerResponse = html.replace('spec: {},', `spec: ${JSON.stringify(docs)},`);
|
|
15
17
|
}
|
|
@@ -6,14 +6,16 @@ var jsx = require('@innet/jsx');
|
|
|
6
6
|
require('../../../hooks/index.js');
|
|
7
7
|
var swagger$1 = require('./swagger.html.js');
|
|
8
8
|
var useApi = require('../../../hooks/useApi/useApi.js');
|
|
9
|
-
var
|
|
9
|
+
var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
|
|
10
|
+
var useAction = require('../../../hooks/useAction/useAction.js');
|
|
10
11
|
|
|
11
12
|
const swagger = () => {
|
|
12
|
-
const { path = '/swagger-ui' } = jsx.useProps() || {};
|
|
13
|
-
const { docs, prefix } = useApi.useApi();
|
|
13
|
+
const { path = process.env.INNET_SWAGGER_PATH || '/swagger-ui', } = jsx.useProps() || {};
|
|
14
|
+
const { docs, prefix, } = useApi.useApi();
|
|
14
15
|
let swaggerResponse;
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
useServerPlugin.useServerPlugin(() => {
|
|
17
|
+
const action = useAction.useAction();
|
|
18
|
+
if (action.path === prefix + path) {
|
|
17
19
|
if (!swaggerResponse) {
|
|
18
20
|
swaggerResponse = swagger$1["default"].replace('spec: {},', `spec: ${JSON.stringify(docs)},`);
|
|
19
21
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './whitelist';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { whitelist } from './whitelist.es6.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useProps } from '@innet/jsx';
|
|
2
|
+
import '../../../hooks/index.es6.js';
|
|
3
|
+
import { useServerPlugin } from '../../../hooks/useServerPlugin/useServerPlugin.es6.js';
|
|
4
|
+
import { useAction } from '../../../hooks/useAction/useAction.es6.js';
|
|
5
|
+
|
|
6
|
+
function whitelist() {
|
|
7
|
+
const { children, ip = process.env.INNET_WHITELIST_IP, } = useProps();
|
|
8
|
+
const ips = typeof ip === 'string' ? ip.split(',') : ip;
|
|
9
|
+
if (!ips)
|
|
10
|
+
return;
|
|
11
|
+
useServerPlugin(() => {
|
|
12
|
+
const action = useAction();
|
|
13
|
+
if (!action.clientIp || !ips.includes(action.clientIp)) {
|
|
14
|
+
return children;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { whitelist };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsx = require('@innet/jsx');
|
|
6
|
+
require('../../../hooks/index.js');
|
|
7
|
+
var useServerPlugin = require('../../../hooks/useServerPlugin/useServerPlugin.js');
|
|
8
|
+
var useAction = require('../../../hooks/useAction/useAction.js');
|
|
9
|
+
|
|
10
|
+
function whitelist() {
|
|
11
|
+
const { children, ip = process.env.INNET_WHITELIST_IP, } = jsx.useProps();
|
|
12
|
+
const ips = typeof ip === 'string' ? ip.split(',') : ip;
|
|
13
|
+
if (!ips)
|
|
14
|
+
return;
|
|
15
|
+
useServerPlugin.useServerPlugin(() => {
|
|
16
|
+
const action = useAction.useAction();
|
|
17
|
+
if (!action.clientIp || !ips.includes(action.clientIp)) {
|
|
18
|
+
return children;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.whitelist = whitelist;
|
package/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { Handler } from 'innet';
|
|
2
1
|
import type { OpenAPIV3_1 as API } from 'openapi-types';
|
|
3
2
|
import type { ApiErrorValue } from './constants';
|
|
4
|
-
import { type
|
|
3
|
+
import { type ServerPlugin } from './hooks';
|
|
5
4
|
import { type Rule, type RulesErrors } from './utils/rules';
|
|
6
5
|
export type TagObject = API.TagObject;
|
|
7
6
|
export type Document = API.Document;
|
|
@@ -16,60 +15,54 @@ export type ReferenceObject = API.ReferenceObject;
|
|
|
16
15
|
export type ParameterObject = API.ParameterObject;
|
|
17
16
|
export type RequestBodyObject = API.RequestBodyObject;
|
|
18
17
|
export type ObjectType = ArraySchemaObjectType | NonArraySchemaObjectType;
|
|
19
|
-
export type RefSchemaObject =
|
|
18
|
+
export type RefSchemaObject = ReferenceObject | SchemaObject;
|
|
20
19
|
export interface IValidationErrorData extends Record<string, any> {
|
|
21
20
|
error: RulesErrors;
|
|
22
21
|
}
|
|
23
22
|
export type ValidationErrorData = IValidationErrorData | undefined;
|
|
24
23
|
export interface EndpointRules {
|
|
25
|
-
|
|
26
|
-
search?: Rule;
|
|
24
|
+
body?: Rule;
|
|
27
25
|
cookie?: Rule;
|
|
28
26
|
header?: Rule;
|
|
29
|
-
|
|
27
|
+
path?: Rule;
|
|
30
28
|
response?: Rule;
|
|
29
|
+
search?: Rule;
|
|
31
30
|
}
|
|
32
31
|
export interface EndpointRulesMaps {
|
|
33
|
-
path?: Record<string, Rule>;
|
|
34
|
-
search?: Record<string, Rule>;
|
|
35
32
|
cookie?: Record<string, Rule>;
|
|
36
33
|
header?: Record<string, Rule>;
|
|
34
|
+
path?: Record<string, Rule>;
|
|
35
|
+
search?: Record<string, Rule>;
|
|
37
36
|
}
|
|
38
37
|
export interface Endpoint<I = unknown, O = unknown, E extends ApiErrorValue = ApiErrorValue, P extends InValidationErrorParam = InValidationErrorParam, D extends ValidationErrorData = ValidationErrorData> {
|
|
38
|
+
dynamic?: Endpoint<I, O, E, P, D>[];
|
|
39
39
|
key: string;
|
|
40
|
-
|
|
40
|
+
plugins: Set<ServerPlugin>;
|
|
41
41
|
rules?: EndpointRules;
|
|
42
42
|
rulesMaps?: EndpointRulesMaps;
|
|
43
|
-
handler?: Handler;
|
|
44
43
|
static?: Record<string, Endpoint<I, O, E, P, D>>;
|
|
45
|
-
dynamic?: Endpoint<I, O, E, P, D>[];
|
|
46
44
|
}
|
|
47
45
|
export type IntegerFormats = 'int32' | 'int64';
|
|
48
|
-
export type EndpointsMethods = '
|
|
49
|
-
export type InParam = '
|
|
50
|
-
export type InValidationErrorParam =
|
|
51
|
-
export type BodyType = 'application/x-www-form-urlencoded' | '
|
|
46
|
+
export type EndpointsMethods = 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace';
|
|
47
|
+
export type InParam = 'cookie' | 'header' | 'path' | 'query';
|
|
48
|
+
export type InValidationErrorParam = 'body' | InParam;
|
|
49
|
+
export type BodyType = 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data';
|
|
52
50
|
export type Endpoints<I = unknown, O = unknown, E extends ApiErrorValue = ApiErrorValue, P extends InValidationErrorParam = InValidationErrorParam, D extends ValidationErrorData = ValidationErrorData> = Partial<Record<EndpointsMethods, Endpoint<I, O, E, P, D>>>;
|
|
53
51
|
export interface SSL {
|
|
54
52
|
cert: string;
|
|
55
53
|
key: string;
|
|
56
54
|
}
|
|
57
55
|
export interface ServerStartParams {
|
|
58
|
-
port: number;
|
|
59
56
|
https: boolean;
|
|
57
|
+
port: number;
|
|
60
58
|
}
|
|
61
59
|
export interface BaseSchemaProps<T> {
|
|
62
60
|
default?: T;
|
|
61
|
+
description?: string;
|
|
63
62
|
example?: T;
|
|
64
63
|
examples?: T[];
|
|
65
|
-
description?: string;
|
|
66
64
|
ref?: string;
|
|
67
65
|
}
|
|
68
66
|
export interface ValuesSchemaProps<T> extends BaseSchemaProps<T> {
|
|
69
67
|
values?: T[];
|
|
70
68
|
}
|
|
71
|
-
export interface Fallback {
|
|
72
|
-
children: any;
|
|
73
|
-
handler: Handler;
|
|
74
|
-
}
|
|
75
|
-
export type RequestPlugin = (action: Action) => boolean | undefined;
|
package/utils/FileData/Bin.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export interface BinOptions {
|
|
2
|
+
disposition: string;
|
|
2
3
|
/**
|
|
3
4
|
* A field name of FormData request
|
|
4
5
|
*/
|
|
@@ -11,37 +12,36 @@ export interface BinOptions {
|
|
|
11
12
|
* Full path to the file on server, you MUST use it only on server side for the safe
|
|
12
13
|
*/
|
|
13
14
|
path: string;
|
|
14
|
-
/**
|
|
15
|
-
* MIME-type of the file
|
|
16
|
-
*/
|
|
17
|
-
type: string;
|
|
18
|
-
disposition: string;
|
|
19
15
|
/**
|
|
20
16
|
* The file size
|
|
21
17
|
*/
|
|
22
18
|
size: number;
|
|
23
|
-
}
|
|
24
|
-
export declare class Bin implements BinOptions {
|
|
25
19
|
/**
|
|
26
|
-
*
|
|
20
|
+
* MIME-type of the file
|
|
27
21
|
*/
|
|
28
|
-
|
|
22
|
+
type: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class Bin implements BinOptions {
|
|
25
|
+
disposition: string;
|
|
29
26
|
/**
|
|
30
27
|
* The extension of the origin file from originalFilename
|
|
31
28
|
*/
|
|
32
29
|
extension?: string;
|
|
33
|
-
type: string;
|
|
34
|
-
disposition: string;
|
|
35
30
|
fieldName: string;
|
|
31
|
+
/**
|
|
32
|
+
* A file name, without extension
|
|
33
|
+
*/
|
|
34
|
+
filename: string;
|
|
36
35
|
originalFilename: string;
|
|
37
36
|
path: string;
|
|
38
37
|
size: number;
|
|
38
|
+
type: string;
|
|
39
39
|
constructor(options: BinOptions);
|
|
40
40
|
toJSON(): {
|
|
41
41
|
$: string;
|
|
42
|
-
originalFilename: string;
|
|
43
|
-
type: string;
|
|
44
42
|
disposition: string;
|
|
43
|
+
originalFilename: string;
|
|
45
44
|
size: number;
|
|
45
|
+
type: string;
|
|
46
46
|
};
|
|
47
47
|
}
|
package/utils/FileData/Bin.js
CHANGED
|
@@ -12,10 +12,10 @@ class Bin {
|
|
|
12
12
|
toJSON() {
|
|
13
13
|
return {
|
|
14
14
|
$: 'binary',
|
|
15
|
-
originalFilename: this.originalFilename,
|
|
16
|
-
type: this.type,
|
|
17
15
|
disposition: this.disposition,
|
|
16
|
+
originalFilename: this.originalFilename,
|
|
18
17
|
size: this.size,
|
|
18
|
+
type: this.type,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
}
|
package/utils/action/Action.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { type CookieSerializeOptions } from 'cookie';
|
|
1
|
+
import { type Cookies, type SerializeOptions } from 'cookie';
|
|
3
2
|
import { type IncomingHttpHeaders, type IncomingMessage, type ServerResponse } from 'http';
|
|
4
3
|
import { type ParsedQs } from 'qs';
|
|
5
4
|
import { type BodyType } from '../../types';
|
|
@@ -12,21 +11,21 @@ export declare class Action {
|
|
|
12
11
|
#private;
|
|
13
12
|
readonly req: IncomingMessage;
|
|
14
13
|
readonly res: ServerResponse;
|
|
14
|
+
body?: object;
|
|
15
15
|
constructor(req: IncomingMessage, res: ServerResponse);
|
|
16
|
+
parseBody(): Promise<void>;
|
|
17
|
+
setCookie(name: string, value?: string, options?: SerializeOptions): void;
|
|
18
|
+
get bodyType(): BodyType | undefined;
|
|
19
|
+
get clientIp(): string | null;
|
|
20
|
+
get cookies(): Cookies;
|
|
21
|
+
set cookies(value: Record<string, string>);
|
|
22
|
+
get headers(): IncomingHttpHeaders;
|
|
23
|
+
set headers(value: IncomingHttpHeaders);
|
|
24
|
+
get originCookies(): Cookies;
|
|
25
|
+
get originHeaders(): IncomingHttpHeaders;
|
|
26
|
+
get originSearch(): ParsedQs;
|
|
16
27
|
get parsedUrl(): ParsedUrl;
|
|
17
28
|
get path(): string;
|
|
18
|
-
get originSearch(): ParsedQs;
|
|
19
29
|
get search(): ParsedQs;
|
|
20
30
|
set search(value: ParsedQs);
|
|
21
|
-
get originHeaders(): IncomingHttpHeaders;
|
|
22
|
-
get headers(): IncomingHttpHeaders;
|
|
23
|
-
set headers(value: IncomingHttpHeaders);
|
|
24
|
-
get originCookies(): Record<string, string>;
|
|
25
|
-
get cookies(): Record<string, string>;
|
|
26
|
-
set cookies(value: Record<string, string>);
|
|
27
|
-
get bodyType(): BodyType | undefined;
|
|
28
|
-
body?: object;
|
|
29
|
-
parseBody(): Promise<void>;
|
|
30
|
-
setCookie(name: string, value?: string, options?: CookieSerializeOptions): void;
|
|
31
|
-
get clientIp(): string | null;
|
|
32
31
|
}
|