@modern-js/server-utils 1.0.1 → 1.1.3-rc.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.
package/CHANGELOG.md CHANGED
@@ -1,14 +1,64 @@
1
1
  # @modern-js/server-utils
2
2
 
3
- ## 1.0.1
3
+ ## 1.1.3-rc.0
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - release 1.0.1
8
- - Updated dependencies [undefined]
9
- - @modern-js/babel-preset-lib@1.0.2
10
- - @modern-js/plugin@1.0.1
11
- - @modern-js/utils@1.0.1
7
+ - Updated dependencies [d927bc83]
8
+ - Updated dependencies [d73ff455]
9
+ - Updated dependencies [9c1ab865]
10
+ - Updated dependencies [d73ff455]
11
+ - Updated dependencies [d927bc83]
12
+ - Updated dependencies [d73ff455]
13
+ - Updated dependencies [d73ff455]
14
+ - Updated dependencies [d73ff455]
15
+ - @modern-js/utils@1.1.4-rc.0
16
+ - @modern-js/babel-preset-lib@1.1.3-rc.0
17
+ - @modern-js/plugin@1.1.2
18
+
19
+ ## 1.1.2
20
+
21
+ ### Patch Changes
22
+
23
+ - 085a6a58: refactor server plugin
24
+ - 085a6a58: refactor server plugin
25
+ - 085a6a58: refactor server conifg
26
+ - 085a6a58: support server runtime
27
+ - 085a6a58: feat: refactor server plugin
28
+ - Updated dependencies [085a6a58]
29
+ - Updated dependencies [085a6a58]
30
+ - Updated dependencies [085a6a58]
31
+ - Updated dependencies [d280ea33]
32
+ - Updated dependencies [085a6a58]
33
+ - Updated dependencies [085a6a58]
34
+ - @modern-js/utils@1.1.3
35
+
36
+ ## 1.1.1
37
+
38
+ ### Patch Changes
39
+
40
+ - b011e0c5: fix(babel): declare
41
+ - 0fa83663: support more .env files
42
+ - Updated dependencies [b011e0c5]
43
+ - Updated dependencies [0fa83663]
44
+ - Updated dependencies [f594fbc8]
45
+ - Updated dependencies [395beb1e]
46
+ - @modern-js/babel-preset-lib@1.1.1
47
+ - @modern-js/plugin@1.1.2
48
+ - @modern-js/utils@1.1.2
49
+
50
+ ## 1.1.0
51
+
52
+ ### Minor Changes
53
+
54
+ - 96119db2: Relese v1.1.0
55
+
56
+ ### Patch Changes
57
+
58
+ - Updated dependencies [96119db2]
59
+ - @modern-js/babel-preset-lib@1.1.0
60
+ - @modern-js/plugin@1.1.0
61
+ - @modern-js/utils@1.1.0
12
62
 
13
63
  ## 1.0.0
14
64
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,7 +1,6 @@
1
1
  export const createMiddlewareCollecter = () => {
2
2
  const webMiddlewares = [];
3
3
  const apiMiddlewares = [];
4
- const ssrMiddlewares = [];
5
4
 
6
5
  const addWebMiddleware = input => {
7
6
  webMiddlewares.push(input);
@@ -11,21 +10,15 @@ export const createMiddlewareCollecter = () => {
11
10
  apiMiddlewares.push(input);
12
11
  };
13
12
 
14
- const addSSRMiddleware = input => {
15
- ssrMiddlewares.push(input);
16
- };
17
-
18
13
  const getMiddlewares = () => ({
19
14
  web: webMiddlewares,
20
- api: apiMiddlewares,
21
- ssr: ssrMiddlewares
15
+ api: apiMiddlewares
22
16
  });
23
17
 
24
18
  return {
25
19
  getMiddlewares,
26
20
  addWebMiddleware,
27
- addAPIMiddleware,
28
- addSSRMiddleware
21
+ addAPIMiddleware
29
22
  };
30
23
  };
31
24
  export const hook = attacher => attacher;
@@ -33,9 +33,9 @@ Object.keys(_core).forEach(function (key) {
33
33
 
34
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
35
 
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
36
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
37
37
 
38
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
38
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
39
39
 
40
40
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
41
41
 
@@ -8,7 +8,6 @@ exports.hook = exports.createMiddlewareCollecter = void 0;
8
8
  const createMiddlewareCollecter = () => {
9
9
  const webMiddlewares = [];
10
10
  const apiMiddlewares = [];
11
- const ssrMiddlewares = [];
12
11
 
13
12
  const addWebMiddleware = input => {
14
13
  webMiddlewares.push(input);
@@ -18,21 +17,15 @@ const createMiddlewareCollecter = () => {
18
17
  apiMiddlewares.push(input);
19
18
  };
20
19
 
21
- const addSSRMiddleware = input => {
22
- ssrMiddlewares.push(input);
23
- };
24
-
25
20
  const getMiddlewares = () => ({
26
21
  web: webMiddlewares,
27
- api: apiMiddlewares,
28
- ssr: ssrMiddlewares
22
+ api: apiMiddlewares
29
23
  });
30
24
 
31
25
  return {
32
26
  getMiddlewares,
33
27
  addWebMiddleware,
34
- addAPIMiddleware,
35
- addSSRMiddleware
28
+ addAPIMiddleware
36
29
  };
37
30
  };
38
31
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,7 +1,6 @@
1
1
  export var createMiddlewareCollecter = function createMiddlewareCollecter() {
2
2
  var webMiddlewares = [];
3
3
  var apiMiddlewares = [];
4
- var ssrMiddlewares = [];
5
4
 
6
5
  var addWebMiddleware = function addWebMiddleware(input) {
7
6
  webMiddlewares.push(input);
@@ -11,23 +10,17 @@ export var createMiddlewareCollecter = function createMiddlewareCollecter() {
11
10
  apiMiddlewares.push(input);
12
11
  };
13
12
 
14
- var addSSRMiddleware = function addSSRMiddleware(input) {
15
- ssrMiddlewares.push(input);
16
- };
17
-
18
13
  var getMiddlewares = function getMiddlewares() {
19
14
  return {
20
15
  web: webMiddlewares,
21
- api: apiMiddlewares,
22
- ssr: ssrMiddlewares
16
+ api: apiMiddlewares
23
17
  };
24
18
  };
25
19
 
26
20
  return {
27
21
  getMiddlewares: getMiddlewares,
28
22
  addWebMiddleware: addWebMiddleware,
29
- addAPIMiddleware: addAPIMiddleware,
30
- addSSRMiddleware: addSSRMiddleware
23
+ addAPIMiddleware: addAPIMiddleware
31
24
  };
32
25
  };
33
26
  export var hook = function hook(attacher) {
@@ -1,13 +1,11 @@
1
1
  export declare type CollectMiddlewaresResult = {
2
2
  web: any[];
3
3
  api: any[];
4
- ssr: any[];
5
4
  };
6
5
  export declare const createMiddlewareCollecter: () => {
7
6
  getMiddlewares: () => CollectMiddlewaresResult;
8
7
  addWebMiddleware: (input: any) => void;
9
8
  addAPIMiddleware: (input: any) => void;
10
- addSSRMiddleware: (input: any) => void;
11
9
  };
12
10
  export declare type AttacherOptions = {
13
11
  addMiddleware: (...input: any[]) => void;
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.0.1",
14
+ "version": "1.1.3-rc.0",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -34,15 +34,15 @@
34
34
  "@babel/preset-env": "^7.15.0",
35
35
  "@babel/preset-typescript": "^7.15.0",
36
36
  "@babel/runtime": "^7",
37
- "@modern-js/babel-preset-lib": "^1.0.2",
38
- "@modern-js/plugin": "^1.0.1",
39
- "@modern-js/utils": "^1.0.1",
37
+ "@modern-js/babel-preset-lib": "^1.1.3-rc.0",
38
+ "@modern-js/plugin": "^1.1.2",
39
+ "@modern-js/utils": "^1.1.4-rc.0",
40
40
  "babel-plugin-module-resolver": "^4.1.0",
41
41
  "babel-plugin-transform-typescript-metadata": "^0.3.2",
42
42
  "json5": "^2.2.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@modern-js/core": "^1.0.1",
45
+ "@modern-js/core": "^1.1.4-rc.0",
46
46
  "@types/babel__core": "^7.1.15",
47
47
  "@types/jest": "^26",
48
48
  "@types/node": "^14",
@@ -50,8 +50,8 @@
50
50
  "@types/react-dom": "^17",
51
51
  "ts-jest": "^27.0.4",
52
52
  "typescript": "^4",
53
- "@modern-js/plugin-testing": "^1.0.2",
54
- "@modern-js/module-tools": "^1.0.2"
53
+ "@modern-js/plugin-testing": "^1.1.1",
54
+ "@modern-js/module-tools": "^1.1.1"
55
55
  },
56
56
  "sideEffects": false,
57
57
  "publishConfig": {
@@ -62,5 +62,6 @@
62
62
  "new": "modern new",
63
63
  "build": "modern build",
64
64
  "test": "modern test --passWithNoTests"
65
- }
65
+ },
66
+ "readme": "\n<p align=\"center\">\n <a href=\"https://modernjs.dev\" target=\"blank\"><img src=\"https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png\" width=\"300\" alt=\"Modern.js Logo\" /></a>\n</p>\n<p align=\"center\">\n现代 Web 工程体系\n <br/>\n <a href=\"https://modernjs.dev\" target=\"blank\">\n modernjs.dev\n </a>\n</p>\n<p align=\"center\">\n The meta-framework suite designed from scratch for frontend-focused modern web development\n</p>\n\n# Introduction\n\n> The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.\n\n- [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)\n\n## Getting Started\n\n- [Quick Start](https://modernjs.dev/docs/start)\n- [Guides](https://modernjs.dev/docs/guides)\n- [API References](https://modernjs.dev/docs/apis)\n\n## Contributing\n\n- [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md)\n"
66
67
  }
package/src/middleware.ts CHANGED
@@ -1,13 +1,11 @@
1
1
  export type CollectMiddlewaresResult = {
2
2
  web: any[];
3
3
  api: any[];
4
- ssr: any[];
5
4
  };
6
5
 
7
6
  export const createMiddlewareCollecter = () => {
8
7
  const webMiddlewares: any[] = [];
9
8
  const apiMiddlewares: any[] = [];
10
- const ssrMiddlewares: any[] = [];
11
9
 
12
10
  const addWebMiddleware = (input: any) => {
13
11
  webMiddlewares.push(input);
@@ -17,20 +15,14 @@ export const createMiddlewareCollecter = () => {
17
15
  apiMiddlewares.push(input);
18
16
  };
19
17
 
20
- const addSSRMiddleware = (input: any) => {
21
- ssrMiddlewares.push(input);
22
- };
23
-
24
18
  const getMiddlewares = (): CollectMiddlewaresResult => ({
25
19
  web: webMiddlewares,
26
20
  api: apiMiddlewares,
27
- ssr: ssrMiddlewares,
28
21
  });
29
22
  return {
30
23
  getMiddlewares,
31
24
  addWebMiddleware,
32
25
  addAPIMiddleware,
33
- addSSRMiddleware,
34
26
  };
35
27
  };
36
28
 
@@ -0,0 +1,174 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`babel resolveBabelConfig 1`] = `
4
+ Object {
5
+ "plugins": Array [
6
+ Array [
7
+ "/babel-plugin-macros/dist/index.js",
8
+ Object {
9
+ "twin": Object {
10
+ "preset": "styled-components",
11
+ },
12
+ },
13
+ ],
14
+ Array [
15
+ "/babel-plugin-import/lib/index.js",
16
+ Object {
17
+ "libraryDirectory": "es",
18
+ "libraryName": "antd",
19
+ "style": true,
20
+ },
21
+ "import-antd",
22
+ ],
23
+ Array [
24
+ "/babel-plugin-lodash/lib/index.js",
25
+ Object {
26
+ "id": Array [
27
+ "lodash",
28
+ "ramda",
29
+ ],
30
+ },
31
+ ],
32
+ Array [
33
+ "/@babel/plugin-proposal-decorators/lib/index.js",
34
+ Object {
35
+ "legacy": true,
36
+ },
37
+ ],
38
+ Array [
39
+ "/@babel/plugin-proposal-class-properties/lib/index.js",
40
+ Object {
41
+ "loose": true,
42
+ },
43
+ ],
44
+ Array [
45
+ "/@babel/plugin-proposal-private-methods/lib/index.js",
46
+ Object {
47
+ "loose": true,
48
+ },
49
+ ],
50
+ Array [
51
+ "/@babel/plugin-proposal-private-property-in-object/lib/index.js",
52
+ Object {
53
+ "loose": true,
54
+ },
55
+ ],
56
+ Array [
57
+ "/@babel/plugin-proposal-object-rest-spread/lib/index.js",
58
+ Object {
59
+ "useBuiltIns": true,
60
+ },
61
+ ],
62
+ Array [
63
+ "/@babel/plugin-transform-runtime/lib/index.js",
64
+ Object {
65
+ "corejs": false,
66
+ "helpers": false,
67
+ "regenerator": true,
68
+ "useESModules": false,
69
+ "version": "7.16.5",
70
+ },
71
+ ],
72
+ Array [
73
+ "/babel-plugin-transform-react-remove-prop-types/lib/index.js",
74
+ Object {
75
+ "removeImport": true,
76
+ },
77
+ ],
78
+ Array [
79
+ "/@babel/plugin-proposal-function-bind/lib/index.js",
80
+ ],
81
+ Array [
82
+ "/@babel/plugin-proposal-export-default-from/lib/index.js",
83
+ ],
84
+ Array [
85
+ "/@babel/plugin-proposal-export-namespace-from/lib/index.js",
86
+ ],
87
+ Array [
88
+ "/@babel/plugin-proposal-optional-chaining/lib/index.js",
89
+ ],
90
+ Array [
91
+ "/@babel/plugin-proposal-numeric-separator/lib/index.js",
92
+ ],
93
+ Array [
94
+ "/@babel/plugin-proposal-pipeline-operator/lib/index.js",
95
+ Object {
96
+ "proposal": "minimal",
97
+ },
98
+ ],
99
+ Array [
100
+ "/@babel/plugin-proposal-partial-application/lib/index.js",
101
+ ],
102
+ Array [
103
+ "/@babel/plugin-proposal-nullish-coalescing-operator/lib/index.js",
104
+ ],
105
+ Array [
106
+ "/babel-plugin-styled-components/lib/index.js",
107
+ Object {},
108
+ "styled-components",
109
+ ],
110
+ Array [
111
+ "/babel-plugin-transform-inline-environment-variables/lib/index.js",
112
+ Object {
113
+ "include": Array [],
114
+ },
115
+ ],
116
+ Array [
117
+ "/babel-plugin-module-resolver/lib/index.js",
118
+ Object {
119
+ "alias": Object {
120
+ "@/*": Array [
121
+ "./src/*",
122
+ ],
123
+ },
124
+ "extensions": Array [
125
+ ".ts",
126
+ ".tsx",
127
+ ".js",
128
+ ".jsx",
129
+ ".es",
130
+ ".es6",
131
+ ".mjs",
132
+ ],
133
+ "resolvePath": [Function],
134
+ "root": "/packages/server/utils/tests/fixtures/",
135
+ },
136
+ ],
137
+ Array [
138
+ "/babel-plugin-transform-typescript-metadata/lib/plugin.js",
139
+ ],
140
+ ],
141
+ "presets": Array [
142
+ Array [
143
+ "/@babel/preset-env/lib/index.js",
144
+ Object {
145
+ "bugfixes": true,
146
+ "modules": "commonjs",
147
+ "shippedProposals": false,
148
+ "targets": Array [
149
+ "chrome > 61",
150
+ "edge > 16",
151
+ "firefox > 60",
152
+ "safari > 11",
153
+ "ios_saf > 11",
154
+ ],
155
+ },
156
+ ],
157
+ Array [
158
+ "/@babel/preset-react/lib/index.js",
159
+ Object {
160
+ "runtime": "automatic",
161
+ },
162
+ ],
163
+ Array [
164
+ "/@babel/preset-typescript/lib/index.js",
165
+ Object {
166
+ "allExtensions": true,
167
+ "allowDeclareFields": true,
168
+ "allowNamespaces": true,
169
+ "isTSX": true,
170
+ },
171
+ ],
172
+ ],
173
+ }
174
+ `;
@@ -20,7 +20,7 @@ describe('babel', () => {
20
20
  expect.addSnapshotSerializer({
21
21
  test: val =>
22
22
  typeof val === 'string' &&
23
- (val.includes('modern-js') ||
23
+ (val.includes('modern.js') ||
24
24
  val.includes('node_modules') ||
25
25
  val.includes(root)),
26
26
  print: val =>
@@ -28,10 +28,10 @@ describe('babel', () => {
28
28
  typeof val === 'string'
29
29
  ? // eslint-disable-next-line no-nested-ternary
30
30
  val.includes('node_modules')
31
- ? `"${val.replace(/.+node_modules/, '')}"`
32
- : val.includes('modern-js')
33
- ? `"${val.replace(/.+modern-js/, '')}"`
34
- : `"${val.replace(root, '')}"`
31
+ ? `"${val.replace(/.+node_modules/, '').replace(/\\/g, '/')}"`
32
+ : val.includes('modern.js')
33
+ ? `"${val.replace(/.+modern\.js/, '').replace(/\\/g, '/')}"`
34
+ : `"${val.replace(root, '').replace(/\\/g, '/')}"`
35
35
  : (val as string),
36
36
  });
37
37