@innet/server 1.4.4 → 1.5.0

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.
@@ -1,8 +1,9 @@
1
1
  import html from '@innet/html';
2
+ import { context, ContextProps, slot, SlotProps, slots, SlotsProps } from '@innet/jsx';
2
3
  import { switchAsync, SwitchProps } from '@innet/switch';
3
4
  import { arrayAsync, async } from '@innet/utils';
4
5
  import { serverFn } from '../experimental/serverFn';
5
- import { cms, CmsProps, cookie, CookieProps, error, ErrorProps, file, FileProps, header, HeaderProps, proxy, ProxyProps, redirect, RedirectProps, router, RouterProps, success, SuccessProps } from '../plugins';
6
+ import { cms, CmsProps, cookie, CookieProps, error, ErrorProps, file, FileProps, header, HeaderProps, proxy, ProxyProps, redirect, RedirectProps, router, RouterProps, success, SuccessProps, validation, ValidationProps } from '../plugins';
6
7
  import { server, ServerProps } from '../server';
7
8
  export declare const arrayPlugins: (typeof arrayAsync)[];
8
9
  export declare const JSXPlugins: {
@@ -18,6 +19,10 @@ export declare const JSXPlugins: {
18
19
  file: typeof file;
19
20
  proxy: typeof proxy;
20
21
  redirect: typeof redirect;
22
+ validation: typeof validation;
23
+ context: typeof context;
24
+ slot: typeof slot;
25
+ slots: typeof slots;
21
26
  };
22
27
  export declare const fnPlugins: (typeof serverFn)[];
23
28
  export declare const objectPlugins: ((handler: any) => import("innet").PluginHandler)[];
@@ -37,6 +42,10 @@ declare global {
37
42
  file: FileProps;
38
43
  switch: SwitchProps;
39
44
  proxy: ProxyProps;
45
+ validation: ValidationProps<any>;
46
+ context: ContextProps;
47
+ slot: SlotProps;
48
+ slots: SlotsProps;
40
49
  }
41
50
  }
42
51
  }
@@ -1,6 +1,6 @@
1
1
  import { createHandler } from 'innet';
2
2
  import html from '@innet/html';
3
- import { jsxPlugins, jsxComponent } from '@innet/jsx';
3
+ import { jsxPlugins, jsxComponent, context, slot, slots } from '@innet/jsx';
4
4
  import { switchAsync } from '@innet/switch';
5
5
  import { promise, array, object, fn, arrayAsync, arrayClear, arraySingleLess, async } from '@innet/utils';
6
6
  import { serverFn } from '../experimental/serverFn/serverFn.es6.js';
@@ -13,6 +13,7 @@ import { cms } from '../plugins/cms/cms.es6.js';
13
13
  import { file } from '../plugins/file/file.es6.js';
14
14
  import { proxy } from '../plugins/proxy/proxy.es6.js';
15
15
  import { redirect } from '../plugins/redirect/redirect.es6.js';
16
+ import { validation } from '../plugins/validation/validation.es6.js';
16
17
  import { server } from '../server/server.es6.js';
17
18
 
18
19
  const arrayPlugins = [
@@ -33,6 +34,10 @@ const JSXPlugins = {
33
34
  file,
34
35
  proxy,
35
36
  redirect,
37
+ validation,
38
+ context,
39
+ slot,
40
+ slots,
36
41
  };
37
42
  const fnPlugins = [
38
43
  serverFn,
@@ -17,6 +17,7 @@ var cms = require('../plugins/cms/cms.js');
17
17
  var file = require('../plugins/file/file.js');
18
18
  var proxy = require('../plugins/proxy/proxy.js');
19
19
  var redirect = require('../plugins/redirect/redirect.js');
20
+ var validation = require('../plugins/validation/validation.js');
20
21
  var server = require('../server/server.js');
21
22
 
22
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -41,6 +42,10 @@ var JSXPlugins = {
41
42
  file: file.file,
42
43
  proxy: proxy.proxy,
43
44
  redirect: redirect.redirect,
45
+ validation: validation.validation,
46
+ context: jsx.context,
47
+ slot: jsx.slot,
48
+ slots: jsx.slots,
44
49
  };
45
50
  var fnPlugins = [
46
51
  serverFn.serverFn,
package/index.es6.js CHANGED
@@ -9,6 +9,7 @@ export { cms } from './plugins/cms/cms.es6.js';
9
9
  export { file } from './plugins/file/file.es6.js';
10
10
  export { proxy } from './plugins/proxy/proxy.es6.js';
11
11
  export { redirect, redirectStatuses } from './plugins/redirect/redirect.es6.js';
12
+ export { validation } from './plugins/validation/validation.es6.js';
12
13
  export { ACTION, Action, URL_PARSER, useAction } from './action/Action/Action.es6.js';
13
14
  export { parseSearch } from './utils/parseSearch/parseSearch.es6.js';
14
15
  export { stringifySearch } from './utils/stringifySearch/stringifySearch.es6.js';
package/index.js CHANGED
@@ -13,6 +13,7 @@ var cms = require('./plugins/cms/cms.js');
13
13
  var file = require('./plugins/file/file.js');
14
14
  var proxy = require('./plugins/proxy/proxy.js');
15
15
  var redirect = require('./plugins/redirect/redirect.js');
16
+ var validation = require('./plugins/validation/validation.js');
16
17
  var Action = require('./action/Action/Action.js');
17
18
  var parseSearch = require('./utils/parseSearch/parseSearch.js');
18
19
  var stringifySearch = require('./utils/stringifySearch/stringifySearch.js');
@@ -42,6 +43,7 @@ exports.file = file.file;
42
43
  exports.proxy = proxy.proxy;
43
44
  exports.redirect = redirect.redirect;
44
45
  exports.redirectStatuses = redirect.redirectStatuses;
46
+ exports.validation = validation.validation;
45
47
  exports.ACTION = Action.ACTION;
46
48
  exports.Action = Action.Action;
47
49
  exports.URL_PARSER = Action.URL_PARSER;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@innet/server",
3
- "version": "1.4.4",
3
+ "version": "1.5.0",
4
4
  "description": "Create server-side application with innet",
5
5
  "main": "index.js",
6
6
  "module": "index.es6.js",
@@ -22,21 +22,21 @@
22
22
  },
23
23
  "homepage": "https://github.com/d8corp/innet-server",
24
24
  "dependencies": {
25
- "@cantinc/utils": "^1.0.1",
25
+ "@cantinc/utils": "^1.2.4",
26
26
  "@innet/html": "^1.0.1",
27
- "@innet/jsx": "^1.0.4",
27
+ "@innet/jsx": "^1.1.0",
28
28
  "@innet/switch": "^1.0.0",
29
29
  "@innet/utils": "^1.1.1",
30
30
  "@types/cookie": "^0.5.1",
31
31
  "@types/qs": "^6.9.7",
32
32
  "cookie": "^0.5.0",
33
33
  "http-proxy": "^1.18.1",
34
- "innet": "^1.0.0",
34
+ "innet": "^1.0.1",
35
35
  "is-invalid-path": "^1.0.2",
36
36
  "mime": "^3.0.0",
37
37
  "multiparty": "^4.2.3",
38
38
  "qs": "^6.11.0",
39
39
  "tslib": "^2.4.0",
40
- "watch-state": "^3.4.4"
40
+ "watch-state": "^3.4.5"
41
41
  }
42
42
  }
@@ -7,3 +7,4 @@ export * from './cms';
7
7
  export * from './file';
8
8
  export * from './proxy';
9
9
  export * from './redirect';
10
+ export * from './validation';
@@ -7,3 +7,4 @@ export { cms } from './cms/cms.es6.js';
7
7
  export { file } from './file/file.es6.js';
8
8
  export { proxy } from './proxy/proxy.es6.js';
9
9
  export { redirect, redirectStatuses } from './redirect/redirect.es6.js';
10
+ export { validation } from './validation/validation.es6.js';
package/plugins/index.js CHANGED
@@ -11,6 +11,7 @@ var cms = require('./cms/cms.js');
11
11
  var file = require('./file/file.js');
12
12
  var proxy = require('./proxy/proxy.js');
13
13
  var redirect = require('./redirect/redirect.js');
14
+ var validation = require('./validation/validation.js');
14
15
 
15
16
 
16
17
 
@@ -29,3 +30,4 @@ exports.file = file.file;
29
30
  exports.proxy = proxy.proxy;
30
31
  exports.redirect = redirect.redirect;
31
32
  exports.redirectStatuses = redirect.redirectStatuses;
33
+ exports.validation = validation.validation;
@@ -0,0 +1 @@
1
+ export * from './validation';
@@ -0,0 +1 @@
1
+ export { validation } from './validation.es6.js';
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var validation = require('./validation.js');
6
+
7
+
8
+
9
+ exports.validation = validation.validation;
@@ -0,0 +1,14 @@
1
+ import { ValidationMap, ValidationResponse } from '@cantinc/utils';
2
+ import { Resources } from '../../action';
3
+ export interface ValidationProps<T> {
4
+ map: ValidationMap<T>;
5
+ resource?: Resources;
6
+ }
7
+ export interface ValidationJsxElement<T> {
8
+ props: ValidationProps<T>;
9
+ children?: any;
10
+ }
11
+ export interface ValidationContext {
12
+ handleError: (e: ValidationResponse<any>) => any;
13
+ }
14
+ export declare function validation<T extends object, E extends object>({ props, children }: ValidationJsxElement<T>, handler: any): Promise<any>;
@@ -0,0 +1,31 @@
1
+ import { validation as validation$1 } from '@cantinc/utils';
2
+ import { Context } from '@innet/jsx';
3
+ import { ACTION } from '../../action/Action/Action.es6.js';
4
+
5
+ const validationContext = new Context({
6
+ handleError: () => { },
7
+ });
8
+ function validation({ props, children }, handler) {
9
+ const action = handler[ACTION];
10
+ if (!action) {
11
+ throw Error('`validation` should be inside `server`');
12
+ }
13
+ const { map, resource } = props;
14
+ const run = () => {
15
+ const data = action[resource];
16
+ if (!data)
17
+ throw Error(`cannot find ${resource} in action`);
18
+ return validation$1(map, data).then(e => {
19
+ if (e) {
20
+ return validationContext.get(handler).handleError(e);
21
+ }
22
+ return children;
23
+ });
24
+ };
25
+ if (resource === 'body' || resource === 'files') {
26
+ return action.parseBody().then(run);
27
+ }
28
+ return run();
29
+ }
30
+
31
+ export { validation };
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@cantinc/utils');
6
+ var jsx = require('@innet/jsx');
7
+ var Action = require('../../action/Action/Action.js');
8
+
9
+ var validationContext = new jsx.Context({
10
+ handleError: function () { },
11
+ });
12
+ function validation(_a, handler) {
13
+ var props = _a.props, children = _a.children;
14
+ var action = handler[Action.ACTION];
15
+ if (!action) {
16
+ throw Error('`validation` should be inside `server`');
17
+ }
18
+ var map = props.map, resource = props.resource;
19
+ var run = function () {
20
+ var data = action[resource];
21
+ if (!data)
22
+ throw Error("cannot find ".concat(resource, " in action"));
23
+ return utils.validation(map, data).then(function (e) {
24
+ if (e) {
25
+ return validationContext.get(handler).handleError(e);
26
+ }
27
+ return children;
28
+ });
29
+ };
30
+ if (resource === 'body' || resource === 'files') {
31
+ return action.parseBody().then(run);
32
+ }
33
+ return run();
34
+ }
35
+
36
+ exports.validation = validation;