@innet/server 2.0.0-alpha.30 → 2.0.0-alpha.32

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 CHANGED
@@ -3253,6 +3253,29 @@ export default (
3253
3253
  )
3254
3254
  ```
3255
3255
 
3256
+ #### deprecated
3257
+
3258
+ You can deprecate a field.
3259
+
3260
+ *src/app.tsx*
3261
+ ```typescript jsx
3262
+ export default (
3263
+ <server>
3264
+ <api>
3265
+ <endpoint method='post' path='/users'>
3266
+ <body>
3267
+ <object>
3268
+ <field key='name' />
3269
+ <field key='surname' />
3270
+ <field deprecated optional key='birthbay' />
3271
+ </object>
3272
+ </body>
3273
+ </endpoint>
3274
+ </api>
3275
+ </server>
3276
+ )
3277
+ ```
3278
+
3256
3279
  ## Run-Time
3257
3280
 
3258
3281
  Next elements relate to run-time action.
package/hooks/index.d.ts CHANGED
@@ -29,3 +29,4 @@ export * from './useServerPlugins';
29
29
  export * from './useObjectSchemaContext';
30
30
  export * from './useServerPort';
31
31
  export * from './useIsServerHttps';
32
+ export * from './useRequestHandler';
@@ -29,3 +29,4 @@ import './useServerPlugins/index.es6.js';
29
29
  import './useObjectSchemaContext/index.es6.js';
30
30
  import './useServerPort/index.es6.js';
31
31
  import './useIsServerHttps/index.es6.js';
32
+ import './useRequestHandler/index.es6.js';
package/hooks/index.js CHANGED
@@ -31,4 +31,5 @@ require('./useServerPlugins/index.js');
31
31
  require('./useObjectSchemaContext/index.js');
32
32
  require('./useServerPort/index.js');
33
33
  require('./useIsServerHttps/index.js');
34
+ require('./useRequestHandler/index.js');
34
35
 
@@ -14,7 +14,7 @@ function useNewSchema(schema = Object.create(null)) {
14
14
  else if (parentSchema.oneOf) {
15
15
  parentSchema.oneOf.push(schema);
16
16
  }
17
- else if (parentSchema.type) {
17
+ else if (parentSchema.type || '$ref' in parentSchema) {
18
18
  const oldSchema = Object.assign({}, parentSchema);
19
19
  for (const key in parentSchema) {
20
20
  // @ts-expect-error: FIXME
@@ -18,7 +18,7 @@ function useNewSchema(schema = Object.create(null)) {
18
18
  else if (parentSchema.oneOf) {
19
19
  parentSchema.oneOf.push(schema);
20
20
  }
21
- else if (parentSchema.type) {
21
+ else if (parentSchema.type || '$ref' in parentSchema) {
22
22
  const oldSchema = Object.assign({}, parentSchema);
23
23
  for (const key in parentSchema) {
24
24
  // @ts-expect-error: FIXME
@@ -0,0 +1 @@
1
+ export * from './useRequestHandler';
@@ -0,0 +1 @@
1
+ export { requestHandlerContext, useRequestHandler } from './useRequestHandler.es6.js';
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var useRequestHandler = require('./useRequestHandler.js');
6
+
7
+
8
+
9
+ exports.requestHandlerContext = useRequestHandler.requestHandlerContext;
10
+ exports.useRequestHandler = useRequestHandler.useRequestHandler;
@@ -0,0 +1,4 @@
1
+ import { type Handler } from 'innet';
2
+ import { Context } from '@innet/jsx';
3
+ export declare const requestHandlerContext: Context<Handler, Handler | undefined>;
4
+ export declare function useRequestHandler(): Handler;
@@ -0,0 +1,14 @@
1
+ import { Context, useContext } from '@innet/jsx';
2
+ import '../useThrow/index.es6.js';
3
+ import { useThrow } from '../useThrow/useThrow.es6.js';
4
+
5
+ const requestHandlerContext = new Context();
6
+ function useRequestHandler() {
7
+ const handler = useContext(requestHandlerContext);
8
+ if (!handler) {
9
+ useThrow('You cannot use useRequestHandler inside {type}, this hook can be used only in a request component');
10
+ }
11
+ return handler;
12
+ }
13
+
14
+ export { requestHandlerContext, useRequestHandler };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsx = require('@innet/jsx');
6
+ require('../useThrow/index.js');
7
+ var useThrow = require('../useThrow/useThrow.js');
8
+
9
+ const requestHandlerContext = new jsx.Context();
10
+ function useRequestHandler() {
11
+ const handler = jsx.useContext(requestHandlerContext);
12
+ if (!handler) {
13
+ useThrow.useThrow('You cannot use useRequestHandler inside {type}, this hook can be used only in a request component');
14
+ }
15
+ return handler;
16
+ }
17
+
18
+ exports.requestHandlerContext = requestHandlerContext;
19
+ exports.useRequestHandler = useRequestHandler;
package/index.es6.js CHANGED
@@ -115,3 +115,4 @@ export { serverPlugins, useServerPlugins } from './hooks/useServerPlugins/useSer
115
115
  export { objectSchemaContext, useObjectSchemaContext } from './hooks/useObjectSchemaContext/useObjectSchemaContext.es6.js';
116
116
  export { serverPortContext, useServerPort } from './hooks/useServerPort/useServerPort.es6.js';
117
117
  export { serverHttpsContext, useIsServerHttps } from './hooks/useIsServerHttps/useIsServerHttps.es6.js';
118
+ export { requestHandlerContext, useRequestHandler } from './hooks/useRequestHandler/useRequestHandler.es6.js';
package/index.js CHANGED
@@ -119,6 +119,7 @@ var useServerPlugins = require('./hooks/useServerPlugins/useServerPlugins.js');
119
119
  var useObjectSchemaContext = require('./hooks/useObjectSchemaContext/useObjectSchemaContext.js');
120
120
  var useServerPort = require('./hooks/useServerPort/useServerPort.js');
121
121
  var useIsServerHttps = require('./hooks/useIsServerHttps/useIsServerHttps.js');
122
+ var useRequestHandler = require('./hooks/useRequestHandler/useRequestHandler.js');
122
123
 
123
124
 
124
125
 
@@ -265,3 +266,5 @@ exports.serverPortContext = useServerPort.serverPortContext;
265
266
  exports.useServerPort = useServerPort.useServerPort;
266
267
  exports.serverHttpsContext = useIsServerHttps.serverHttpsContext;
267
268
  exports.useIsServerHttps = useIsServerHttps.useIsServerHttps;
269
+ exports.requestHandlerContext = useRequestHandler.requestHandlerContext;
270
+ exports.useRequestHandler = useRequestHandler.useRequestHandler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innet/server",
3
- "version": "2.0.0-alpha.30",
3
+ "version": "2.0.0-alpha.32",
4
4
  "description": "Create server-side application with innet",
5
5
  "main": "index.js",
6
6
  "module": "index.es6.js",
@@ -33,13 +33,15 @@ const response = () => {
33
33
  if ((_a = defaultResponse === null || defaultResponse === void 0 ? void 0 : defaultResponse.content) === null || _a === void 0 ? void 0 : _a[type]) {
34
34
  throw Error(`status ${status} and type ${type} for '${path}' already used`);
35
35
  }
36
- const schema = {};
36
+ const schema = status === 204 || !children ? undefined : {};
37
37
  const response = {
38
- content: Object.assign(Object.assign({}, defaultResponse === null || defaultResponse === void 0 ? void 0 : defaultResponse.content), { [type]: {
39
- schema,
40
- } }),
41
38
  description,
42
39
  };
40
+ if (schema) {
41
+ response.content = Object.assign(Object.assign({}, defaultResponse === null || defaultResponse === void 0 ? void 0 : defaultResponse.content), { [type]: {
42
+ schema,
43
+ } });
44
+ }
43
45
  operation.responses[status] = response;
44
46
  schemaContext.set(handler, schema);
45
47
  const rules = getOrAdd(endpoint, 'endpoint.rules', [{}, {}]);
@@ -41,13 +41,15 @@ const response = () => {
41
41
  if ((_a = defaultResponse === null || defaultResponse === void 0 ? void 0 : defaultResponse.content) === null || _a === void 0 ? void 0 : _a[type]) {
42
42
  throw Error(`status ${status} and type ${type} for '${path}' already used`);
43
43
  }
44
- const schema = {};
44
+ const schema = status === 204 || !children ? undefined : {};
45
45
  const response = {
46
- content: Object.assign(Object.assign({}, defaultResponse === null || defaultResponse === void 0 ? void 0 : defaultResponse.content), { [type]: {
47
- schema,
48
- } }),
49
46
  description,
50
47
  };
48
+ if (schema) {
49
+ response.content = Object.assign(Object.assign({}, defaultResponse === null || defaultResponse === void 0 ? void 0 : defaultResponse.content), { [type]: {
50
+ schema,
51
+ } });
52
+ }
51
53
  operation.responses[status] = response;
52
54
  useSchemaContext.schemaContext.set(handler, schema);
53
55
  const rules = getOrAdd.getOrAdd(endpoint, 'endpoint.rules', [{}, {}]);
@@ -12,6 +12,7 @@ import { serverPortContext } from '../../../hooks/useServerPort/useServerPort.es
12
12
  import { serverHttpsContext } from '../../../hooks/useIsServerHttps/useIsServerHttps.es6.js';
13
13
  import { Action } from '../../../utils/action/Action.es6.js';
14
14
  import { actionContext } from '../../../hooks/useAction/useAction.es6.js';
15
+ import { requestHandlerContext } from '../../../hooks/useRequestHandler/useRequestHandler.es6.js';
15
16
 
16
17
  // eslint-disable-next-line @typescript-eslint/no-var-requires
17
18
  const isInvalidPath = require('is-invalid-path');
@@ -55,6 +56,7 @@ const server = () => {
55
56
  const action = new Action(req, res);
56
57
  const requestHandler = Object.create(handler);
57
58
  actionContext.set(requestHandler, action);
59
+ requestHandlerContext.set(requestHandler, requestHandler);
58
60
  function server() {
59
61
  return __awaiter(this, void 0, void 0, function* () {
60
62
  for (const plugin of plugins) {
@@ -16,6 +16,7 @@ var useServerPort = require('../../../hooks/useServerPort/useServerPort.js');
16
16
  var useIsServerHttps = require('../../../hooks/useIsServerHttps/useIsServerHttps.js');
17
17
  var Action = require('../../../utils/action/Action.js');
18
18
  var useAction = require('../../../hooks/useAction/useAction.js');
19
+ var useRequestHandler = require('../../../hooks/useRequestHandler/useRequestHandler.js');
19
20
 
20
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
22
 
@@ -66,6 +67,7 @@ const server = () => {
66
67
  const action = new Action.Action(req, res);
67
68
  const requestHandler = Object.create(handler);
68
69
  useAction.actionContext.set(requestHandler, action);
70
+ useRequestHandler.requestHandlerContext.set(requestHandler, requestHandler);
69
71
  function server() {
70
72
  return tslib.__awaiter(this, void 0, void 0, function* () {
71
73
  for (const plugin of plugins) {
@@ -137,12 +137,17 @@ function generateTypes(docs, namespace = 'Api') {
137
137
  let multiple = false;
138
138
  const response = responses[key];
139
139
  result += ` ['${key}']: `;
140
- for (const type in response.content) {
141
- if (multiple) {
142
- result += ' | ';
140
+ if (!response.content) {
141
+ result += 'void';
142
+ }
143
+ else {
144
+ for (const type in response.content) {
145
+ if (multiple) {
146
+ result += ' | ';
147
+ }
148
+ result += generateSchemaTypes(response.content[type].schema, 10, '');
149
+ multiple = true;
143
150
  }
144
- result += generateSchemaTypes(response.content[type].schema, 10, '');
145
- multiple = true;
146
151
  }
147
152
  result += '\n';
148
153
  }
@@ -141,12 +141,17 @@ function generateTypes(docs, namespace = 'Api') {
141
141
  let multiple = false;
142
142
  const response = responses[key];
143
143
  result += ` ['${key}']: `;
144
- for (const type in response.content) {
145
- if (multiple) {
146
- result += ' | ';
144
+ if (!response.content) {
145
+ result += 'void';
146
+ }
147
+ else {
148
+ for (const type in response.content) {
149
+ if (multiple) {
150
+ result += ' | ';
151
+ }
152
+ result += generateSchemaTypes(response.content[type].schema, 10, '');
153
+ multiple = true;
147
154
  }
148
- result += generateSchemaTypes(response.content[type].schema, 10, '');
149
- multiple = true;
150
155
  }
151
156
  result += '\n';
152
157
  }