@innet/server 2.0.0-beta.16 → 2.0.0-beta.17
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/hooks/index.d.ts +1 -0
- package/hooks/index.es6.js +1 -0
- package/hooks/index.js +1 -0
- package/hooks/useData/index.d.ts +1 -0
- package/hooks/useData/index.es6.js +1 -0
- package/hooks/useData/index.js +9 -0
- package/hooks/useData/useData.d.ts +2 -0
- package/hooks/useData/useData.es6.js +23 -0
- package/hooks/useData/useData.js +27 -0
- package/index.es6.js +1 -0
- package/index.js +2 -0
- package/package.json +1 -1
- package/plugins/main/response/response.d.ts +2 -1
- package/types.d.ts +12 -0
- package/utils/generateTypes/generateTypes.es6.js +16 -9
- package/utils/generateTypes/generateTypes.js +16 -9
package/hooks/index.d.ts
CHANGED
package/hooks/index.es6.js
CHANGED
|
@@ -6,6 +6,7 @@ import './useBodyFile/index.es6.js';
|
|
|
6
6
|
import './useClientIp/index.es6.js';
|
|
7
7
|
import './useComponentName/index.es6.js';
|
|
8
8
|
import './useCookies/index.es6.js';
|
|
9
|
+
import './useData/index.es6.js';
|
|
9
10
|
import './useEffect/index.es6.js';
|
|
10
11
|
import './useEndpoint/index.es6.js';
|
|
11
12
|
import './useHeaders/index.es6.js';
|
package/hooks/index.js
CHANGED
|
@@ -8,6 +8,7 @@ require('./useBodyFile/index.js');
|
|
|
8
8
|
require('./useClientIp/index.js');
|
|
9
9
|
require('./useComponentName/index.js');
|
|
10
10
|
require('./useCookies/index.js');
|
|
11
|
+
require('./useData/index.js');
|
|
11
12
|
require('./useEffect/index.js');
|
|
12
13
|
require('./useEndpoint/index.js');
|
|
13
14
|
require('./useHeaders/index.js');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useData';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useData } from './useData.es6.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import '../useAction/index.es6.js';
|
|
2
|
+
import '../useEndpoint/index.es6.js';
|
|
3
|
+
import '../useThrow/index.es6.js';
|
|
4
|
+
import { useEndpoint } from '../useEndpoint/useEndpoint.es6.js';
|
|
5
|
+
import { useThrow } from '../useThrow/useThrow.es6.js';
|
|
6
|
+
import { useAction } from '../useAction/useAction.es6.js';
|
|
7
|
+
|
|
8
|
+
function useData(from, path) {
|
|
9
|
+
if (path) {
|
|
10
|
+
const endpoint = useEndpoint();
|
|
11
|
+
const endpointKey = `${endpoint.props.method.toUpperCase()}:${endpoint.props.path}`;
|
|
12
|
+
if (endpointKey !== path) {
|
|
13
|
+
useThrow(`<{type}> MUST be in <endpoint> of ${path}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const action = useAction();
|
|
17
|
+
if (!action) {
|
|
18
|
+
useThrow('<{type}> MUST be in <return> or <preset>');
|
|
19
|
+
}
|
|
20
|
+
return action[from];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { useData };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('../useAction/index.js');
|
|
6
|
+
require('../useEndpoint/index.js');
|
|
7
|
+
require('../useThrow/index.js');
|
|
8
|
+
var useEndpoint = require('../useEndpoint/useEndpoint.js');
|
|
9
|
+
var useThrow = require('../useThrow/useThrow.js');
|
|
10
|
+
var useAction = require('../useAction/useAction.js');
|
|
11
|
+
|
|
12
|
+
function useData(from, path) {
|
|
13
|
+
if (path) {
|
|
14
|
+
const endpoint = useEndpoint.useEndpoint();
|
|
15
|
+
const endpointKey = `${endpoint.props.method.toUpperCase()}:${endpoint.props.path}`;
|
|
16
|
+
if (endpointKey !== path) {
|
|
17
|
+
useThrow.useThrow(`<{type}> MUST be in <endpoint> of ${path}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const action = useAction.useAction();
|
|
21
|
+
if (!action) {
|
|
22
|
+
useThrow.useThrow('<{type}> MUST be in <return> or <preset>');
|
|
23
|
+
}
|
|
24
|
+
return action[from];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
exports.useData = useData;
|
package/index.es6.js
CHANGED
|
@@ -12,6 +12,7 @@ export { bodyFileContext, useBodyFile } from './hooks/useBodyFile/useBodyFile.es
|
|
|
12
12
|
export { useClientIp } from './hooks/useClientIp/useClientIp.es6.js';
|
|
13
13
|
export { useComponentName } from './hooks/useComponentName/useComponentName.es6.js';
|
|
14
14
|
export { useCookies } from './hooks/useCookies/useCookies.es6.js';
|
|
15
|
+
export { useData } from './hooks/useData/useData.es6.js';
|
|
15
16
|
export { useEffect } from './hooks/useEffect/useEffect.es6.js';
|
|
16
17
|
export { endpointContext, useEndpoint } from './hooks/useEndpoint/useEndpoint.es6.js';
|
|
17
18
|
export { useHeaders } from './hooks/useHeaders/useHeaders.es6.js';
|
package/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var useBodyFile = require('./hooks/useBodyFile/useBodyFile.js');
|
|
|
16
16
|
var useClientIp = require('./hooks/useClientIp/useClientIp.js');
|
|
17
17
|
var useComponentName = require('./hooks/useComponentName/useComponentName.js');
|
|
18
18
|
var useCookies = require('./hooks/useCookies/useCookies.js');
|
|
19
|
+
var useData = require('./hooks/useData/useData.js');
|
|
19
20
|
var useEffect = require('./hooks/useEffect/useEffect.js');
|
|
20
21
|
var useEndpoint = require('./hooks/useEndpoint/useEndpoint.js');
|
|
21
22
|
var useHeaders = require('./hooks/useHeaders/useHeaders.js');
|
|
@@ -144,6 +145,7 @@ exports.useBodyFile = useBodyFile.useBodyFile;
|
|
|
144
145
|
exports.useClientIp = useClientIp.useClientIp;
|
|
145
146
|
exports.useComponentName = useComponentName.useComponentName;
|
|
146
147
|
exports.useCookies = useCookies.useCookies;
|
|
148
|
+
exports.useData = useData.useData;
|
|
147
149
|
exports.useEffect = useEffect.useEffect;
|
|
148
150
|
exports.endpointContext = useEndpoint.endpointContext;
|
|
149
151
|
exports.useEndpoint = useEndpoint.useEndpoint;
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type HandlerPlugin } from 'innet';
|
|
2
2
|
import { type ErrorStatuses, type RedirectStatuses, type SuccessStatuses } from '../../request';
|
|
3
3
|
export type StatusKey = ErrorStatuses | RedirectStatuses | SuccessStatuses;
|
|
4
|
+
export type ResponseStatus = 'default' | `${1 | 2 | 3 | 4 | 5}XX` | StatusKey | number;
|
|
4
5
|
export interface ResponseProps {
|
|
5
6
|
children?: any;
|
|
6
7
|
/**
|
|
@@ -14,7 +15,7 @@ export interface ResponseProps {
|
|
|
14
15
|
* For example, 2XX represents all response codes between [200-299].
|
|
15
16
|
* Only the following range definitions are allowed: 1XX, 2XX, 3XX, 4XX, and 5XX.
|
|
16
17
|
* */
|
|
17
|
-
status?:
|
|
18
|
+
status?: ResponseStatus;
|
|
18
19
|
type?: string;
|
|
19
20
|
}
|
|
20
21
|
export declare const statuses: Record<StatusKey, number>;
|
package/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { OpenAPIV3_1 as API } from 'openapi-types';
|
|
2
2
|
import type { ApiErrorValue } from './constants';
|
|
3
3
|
import { type ServerPlugin } from './hooks';
|
|
4
|
+
import { type ResponseStatus } from './plugins';
|
|
4
5
|
import { type Rule, type RulesErrors } from './utils/rules';
|
|
5
6
|
export type TagObject = API.TagObject;
|
|
6
7
|
export type Document = API.Document;
|
|
@@ -74,3 +75,14 @@ export interface ValuesSchemaProps<T> extends BaseSchemaProps<T> {
|
|
|
74
75
|
value?: T;
|
|
75
76
|
values?: SchemaValues<T>;
|
|
76
77
|
}
|
|
78
|
+
export type TResponse = Record<ResponseStatus, unknown>;
|
|
79
|
+
export interface TEndpoint {
|
|
80
|
+
body?: unknown;
|
|
81
|
+
cookies?: Record<string, string>;
|
|
82
|
+
headers?: Record<string, string>;
|
|
83
|
+
params?: Record<string, unknown>;
|
|
84
|
+
response?: Record<string, TResponse>;
|
|
85
|
+
search?: Record<string, unknown>;
|
|
86
|
+
}
|
|
87
|
+
export type ApiEndpoints = Record<string, TEndpoint>;
|
|
88
|
+
export type ApiSchemas = Record<string, unknown>;
|
|
@@ -112,9 +112,9 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
112
112
|
const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
113
113
|
const paths = docs.paths;
|
|
114
114
|
if (schemas) {
|
|
115
|
-
result += '
|
|
115
|
+
result += ' export interface Schemas {\n';
|
|
116
116
|
for (const name in schemas) {
|
|
117
|
-
result += `
|
|
117
|
+
result += ` ${name}: ${generateSchemaTypes(schemas[name], 6)}`;
|
|
118
118
|
}
|
|
119
119
|
result += ' }\n';
|
|
120
120
|
}
|
|
@@ -143,23 +143,23 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
143
143
|
params[param.in] += ` ${param.name}${splitter} ${generateSchemaTypes(param.schema)}`;
|
|
144
144
|
}
|
|
145
145
|
if (params.path) {
|
|
146
|
-
result += `
|
|
146
|
+
result += ` params: {\n${params.path} }\n`;
|
|
147
147
|
}
|
|
148
148
|
if (params.query) {
|
|
149
|
-
result += `
|
|
149
|
+
result += ` search: {\n${params.query} }\n`;
|
|
150
150
|
}
|
|
151
151
|
if (params.header) {
|
|
152
|
-
result += `
|
|
152
|
+
result += ` headers: {\n${params.header} }\n`;
|
|
153
153
|
}
|
|
154
154
|
if (params.cookie) {
|
|
155
|
-
result += `
|
|
155
|
+
result += ` cookies: {\n${params.cookie} }\n`;
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
if (requestBody) {
|
|
159
|
-
result += `
|
|
159
|
+
result += ` body: ${generateSchemaTypes(requestBody.content['multipart/form-data'].schema, 8)}`;
|
|
160
160
|
}
|
|
161
161
|
if (responses) {
|
|
162
|
-
result += '
|
|
162
|
+
result += ' response: {\n';
|
|
163
163
|
for (const key in responses) {
|
|
164
164
|
let multiple = false;
|
|
165
165
|
const response = responses[key];
|
|
@@ -183,7 +183,14 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
183
183
|
result += ' }\n';
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
|
|
186
|
+
const body = result + ' }\n}';
|
|
187
|
+
return `${body}
|
|
188
|
+
|
|
189
|
+
declare module '@innet/server' {
|
|
190
|
+
type ApiEndpoints = ${namespace}.Endpoints
|
|
191
|
+
type ApiSchemas = ${namespace}.Schemas
|
|
192
|
+
}
|
|
193
|
+
`;
|
|
187
194
|
}
|
|
188
195
|
|
|
189
196
|
export { generateSchemaTypes, generateTypes };
|
|
@@ -116,9 +116,9 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
116
116
|
const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
117
117
|
const paths = docs.paths;
|
|
118
118
|
if (schemas) {
|
|
119
|
-
result += '
|
|
119
|
+
result += ' export interface Schemas {\n';
|
|
120
120
|
for (const name in schemas) {
|
|
121
|
-
result += `
|
|
121
|
+
result += ` ${name}: ${generateSchemaTypes(schemas[name], 6)}`;
|
|
122
122
|
}
|
|
123
123
|
result += ' }\n';
|
|
124
124
|
}
|
|
@@ -147,23 +147,23 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
147
147
|
params[param.in] += ` ${param.name}${splitter} ${generateSchemaTypes(param.schema)}`;
|
|
148
148
|
}
|
|
149
149
|
if (params.path) {
|
|
150
|
-
result += `
|
|
150
|
+
result += ` params: {\n${params.path} }\n`;
|
|
151
151
|
}
|
|
152
152
|
if (params.query) {
|
|
153
|
-
result += `
|
|
153
|
+
result += ` search: {\n${params.query} }\n`;
|
|
154
154
|
}
|
|
155
155
|
if (params.header) {
|
|
156
|
-
result += `
|
|
156
|
+
result += ` headers: {\n${params.header} }\n`;
|
|
157
157
|
}
|
|
158
158
|
if (params.cookie) {
|
|
159
|
-
result += `
|
|
159
|
+
result += ` cookies: {\n${params.cookie} }\n`;
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
if (requestBody) {
|
|
163
|
-
result += `
|
|
163
|
+
result += ` body: ${generateSchemaTypes(requestBody.content['multipart/form-data'].schema, 8)}`;
|
|
164
164
|
}
|
|
165
165
|
if (responses) {
|
|
166
|
-
result += '
|
|
166
|
+
result += ' response: {\n';
|
|
167
167
|
for (const key in responses) {
|
|
168
168
|
let multiple = false;
|
|
169
169
|
const response = responses[key];
|
|
@@ -187,7 +187,14 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
187
187
|
result += ' }\n';
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
const body = result + ' }\n}';
|
|
191
|
+
return `${body}
|
|
192
|
+
|
|
193
|
+
declare module '@innet/server' {
|
|
194
|
+
type ApiEndpoints = ${namespace}.Endpoints
|
|
195
|
+
type ApiSchemas = ${namespace}.Schemas
|
|
196
|
+
}
|
|
197
|
+
`;
|
|
191
198
|
}
|
|
192
199
|
|
|
193
200
|
exports.generateSchemaTypes = generateSchemaTypes;
|