@innet/server 2.0.0-beta.16 → 2.0.0-beta.18
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 +26 -0
- package/utils/generateTypes/generateTypes.es6.js +18 -20
- package/utils/generateTypes/generateTypes.js +18 -20
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,28 @@ export interface ValuesSchemaProps<T> extends BaseSchemaProps<T> {
|
|
|
74
75
|
value?: T;
|
|
75
76
|
values?: SchemaValues<T>;
|
|
76
77
|
}
|
|
78
|
+
export interface Bin {
|
|
79
|
+
disposition: string;
|
|
80
|
+
extension?: string;
|
|
81
|
+
fieldName: string;
|
|
82
|
+
filename: string;
|
|
83
|
+
originalFilename: string;
|
|
84
|
+
path: string;
|
|
85
|
+
size: number;
|
|
86
|
+
type: string;
|
|
87
|
+
}
|
|
88
|
+
export type TResponse = Record<ResponseStatus, unknown>;
|
|
89
|
+
export interface TEndpoint {
|
|
90
|
+
body?: unknown;
|
|
91
|
+
cookies?: Record<string, string>;
|
|
92
|
+
headers?: Record<string, string>;
|
|
93
|
+
params?: Record<string, unknown>;
|
|
94
|
+
response?: Record<string, TResponse>;
|
|
95
|
+
search?: Record<string, unknown>;
|
|
96
|
+
}
|
|
97
|
+
export interface ApiEndpoints {
|
|
98
|
+
[key: string]: TEndpoint;
|
|
99
|
+
}
|
|
100
|
+
export interface ApiSchemas {
|
|
101
|
+
[key: string]: unknown;
|
|
102
|
+
}
|
|
@@ -97,24 +97,15 @@ function generateSchemaTypes(schema, spaces = 2, lastChar = '\n') {
|
|
|
97
97
|
}
|
|
98
98
|
function generateTypes(docs, namespace = 'Api') {
|
|
99
99
|
var _a;
|
|
100
|
-
let result = `
|
|
101
|
-
|
|
102
|
-
filename: string
|
|
103
|
-
fieldName: string
|
|
104
|
-
originalFilename: string
|
|
105
|
-
path: string
|
|
106
|
-
type: string
|
|
107
|
-
disposition: string
|
|
108
|
-
size: number
|
|
109
|
-
extension?: string
|
|
110
|
-
}
|
|
100
|
+
let result = `import { Bin } from '@innet/server'
|
|
101
|
+
declare namespace ${namespace} {
|
|
111
102
|
`;
|
|
112
103
|
const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
113
104
|
const paths = docs.paths;
|
|
114
105
|
if (schemas) {
|
|
115
|
-
result += '
|
|
106
|
+
result += ' export interface Schemas {\n';
|
|
116
107
|
for (const name in schemas) {
|
|
117
|
-
result += `
|
|
108
|
+
result += ` ${name}: ${generateSchemaTypes(schemas[name], 6)}`;
|
|
118
109
|
}
|
|
119
110
|
result += ' }\n';
|
|
120
111
|
}
|
|
@@ -143,23 +134,23 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
143
134
|
params[param.in] += ` ${param.name}${splitter} ${generateSchemaTypes(param.schema)}`;
|
|
144
135
|
}
|
|
145
136
|
if (params.path) {
|
|
146
|
-
result += `
|
|
137
|
+
result += ` params: {\n${params.path} }\n`;
|
|
147
138
|
}
|
|
148
139
|
if (params.query) {
|
|
149
|
-
result += `
|
|
140
|
+
result += ` search: {\n${params.query} }\n`;
|
|
150
141
|
}
|
|
151
142
|
if (params.header) {
|
|
152
|
-
result += `
|
|
143
|
+
result += ` headers: {\n${params.header} }\n`;
|
|
153
144
|
}
|
|
154
145
|
if (params.cookie) {
|
|
155
|
-
result += `
|
|
146
|
+
result += ` cookies: {\n${params.cookie} }\n`;
|
|
156
147
|
}
|
|
157
148
|
}
|
|
158
149
|
if (requestBody) {
|
|
159
|
-
result += `
|
|
150
|
+
result += ` body: ${generateSchemaTypes(requestBody.content['multipart/form-data'].schema, 8)}`;
|
|
160
151
|
}
|
|
161
152
|
if (responses) {
|
|
162
|
-
result += '
|
|
153
|
+
result += ' response: {\n';
|
|
163
154
|
for (const key in responses) {
|
|
164
155
|
let multiple = false;
|
|
165
156
|
const response = responses[key];
|
|
@@ -183,7 +174,14 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
183
174
|
result += ' }\n';
|
|
184
175
|
}
|
|
185
176
|
}
|
|
186
|
-
|
|
177
|
+
const body = result + ' }\n}';
|
|
178
|
+
return `${body}
|
|
179
|
+
|
|
180
|
+
declare module '@innet/server' {
|
|
181
|
+
interface ApiEndpoints extends ${namespace}.Endpoints {}
|
|
182
|
+
interface ApiSchemas extends ${namespace}.Schemas {}
|
|
183
|
+
}
|
|
184
|
+
`;
|
|
187
185
|
}
|
|
188
186
|
|
|
189
187
|
export { generateSchemaTypes, generateTypes };
|
|
@@ -101,24 +101,15 @@ function generateSchemaTypes(schema, spaces = 2, lastChar = '\n') {
|
|
|
101
101
|
}
|
|
102
102
|
function generateTypes(docs, namespace = 'Api') {
|
|
103
103
|
var _a;
|
|
104
|
-
let result = `
|
|
105
|
-
|
|
106
|
-
filename: string
|
|
107
|
-
fieldName: string
|
|
108
|
-
originalFilename: string
|
|
109
|
-
path: string
|
|
110
|
-
type: string
|
|
111
|
-
disposition: string
|
|
112
|
-
size: number
|
|
113
|
-
extension?: string
|
|
114
|
-
}
|
|
104
|
+
let result = `import { Bin } from '@innet/server'
|
|
105
|
+
declare namespace ${namespace} {
|
|
115
106
|
`;
|
|
116
107
|
const schemas = (_a = docs.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
117
108
|
const paths = docs.paths;
|
|
118
109
|
if (schemas) {
|
|
119
|
-
result += '
|
|
110
|
+
result += ' export interface Schemas {\n';
|
|
120
111
|
for (const name in schemas) {
|
|
121
|
-
result += `
|
|
112
|
+
result += ` ${name}: ${generateSchemaTypes(schemas[name], 6)}`;
|
|
122
113
|
}
|
|
123
114
|
result += ' }\n';
|
|
124
115
|
}
|
|
@@ -147,23 +138,23 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
147
138
|
params[param.in] += ` ${param.name}${splitter} ${generateSchemaTypes(param.schema)}`;
|
|
148
139
|
}
|
|
149
140
|
if (params.path) {
|
|
150
|
-
result += `
|
|
141
|
+
result += ` params: {\n${params.path} }\n`;
|
|
151
142
|
}
|
|
152
143
|
if (params.query) {
|
|
153
|
-
result += `
|
|
144
|
+
result += ` search: {\n${params.query} }\n`;
|
|
154
145
|
}
|
|
155
146
|
if (params.header) {
|
|
156
|
-
result += `
|
|
147
|
+
result += ` headers: {\n${params.header} }\n`;
|
|
157
148
|
}
|
|
158
149
|
if (params.cookie) {
|
|
159
|
-
result += `
|
|
150
|
+
result += ` cookies: {\n${params.cookie} }\n`;
|
|
160
151
|
}
|
|
161
152
|
}
|
|
162
153
|
if (requestBody) {
|
|
163
|
-
result += `
|
|
154
|
+
result += ` body: ${generateSchemaTypes(requestBody.content['multipart/form-data'].schema, 8)}`;
|
|
164
155
|
}
|
|
165
156
|
if (responses) {
|
|
166
|
-
result += '
|
|
157
|
+
result += ' response: {\n';
|
|
167
158
|
for (const key in responses) {
|
|
168
159
|
let multiple = false;
|
|
169
160
|
const response = responses[key];
|
|
@@ -187,7 +178,14 @@ function generateTypes(docs, namespace = 'Api') {
|
|
|
187
178
|
result += ' }\n';
|
|
188
179
|
}
|
|
189
180
|
}
|
|
190
|
-
|
|
181
|
+
const body = result + ' }\n}';
|
|
182
|
+
return `${body}
|
|
183
|
+
|
|
184
|
+
declare module '@innet/server' {
|
|
185
|
+
interface ApiEndpoints extends ${namespace}.Endpoints {}
|
|
186
|
+
interface ApiSchemas extends ${namespace}.Schemas {}
|
|
187
|
+
}
|
|
188
|
+
`;
|
|
191
189
|
}
|
|
192
190
|
|
|
193
191
|
exports.generateSchemaTypes = generateSchemaTypes;
|