@tramvai/cli 2.59.4 → 2.61.1

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,7 +1,8 @@
1
- import type { LazyComponentWrapper, NestedLayoutComponent, PageComponent } from '@tramvai/react';
1
+ import type { ErrorBoundaryComponent, LazyComponentWrapper, NestedLayoutComponent, PageComponent } from '@tramvai/react';
2
2
  declare const _default: {
3
3
  routes: Record<string, LazyComponentWrapper<PageComponent>>;
4
4
  pages: Record<string, LazyComponentWrapper<PageComponent>>;
5
5
  layouts: Record<string, LazyComponentWrapper<NestedLayoutComponent>>;
6
+ errorBoundaries: Record<string, LazyComponentWrapper<ErrorBoundaryComponent>>;
6
7
  };
7
8
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/external/pages.ts"],"names":[],"mappings":";;AAEA,oDAAoD;AACpD,kBAAe;IACb,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;CAKZ,CAAC"}
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/external/pages.ts"],"names":[],"mappings":";;AAOA,oDAAoD;AACpD,kBAAe;IACb,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;CAMZ,CAAC"}
@@ -72,6 +72,14 @@ exports.default = (configManager) => (config) => {
72
72
  .use(webpack_1.default.DefinePlugin, [
73
73
  Object.assign(Object.assign({}, configManager.build.configurations.definePlugin[env]), { 'process.env.APP_ID': JSON.stringify(configManager.name || 'common'), 'process.env.APP_VERSION': JSON.stringify(process.env.APP_VERSION), 'process.env.ENABLE_DEVTOOLS': process.env.ENABLE_DEVTOOLS || configManager.env === 'development', 'process.env.DISABLE_EXTERNAL_SCRIPTS': process.env.DISABLE_EXTERNAL_SCRIPTS || false }),
74
74
  ]);
75
+ // TODO: remove after dropping support for node@14
76
+ if (configManager.buildType === 'server') {
77
+ config.plugin('node-performance').use(webpack_1.default.ProvidePlugin, [
78
+ {
79
+ performance: ['perf_hooks', 'performance'],
80
+ },
81
+ ]);
82
+ }
75
83
  return config;
76
84
  };
77
85
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/library/webpack/common/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/library/webpack/common/main.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,11 @@ const path_1 = tslib_1.__importDefault(require("path"));
5
5
  const fs_readdir_recursive_1 = tslib_1.__importDefault(require("fs-readdir-recursive"));
6
6
  const fs_1 = tslib_1.__importDefault(require("fs"));
7
7
  const LAYOUT_FILENAME = '_layout.tsx';
8
+ const ERROR_BOUNDARY_FILENAME = '_error.tsx';
8
9
  function default_1() {
9
10
  const { fileSystemPages, rootDir, root, extensions } = this.getOptions();
10
11
  const fsLayouts = [];
12
+ const fsErrorBoundaries = [];
11
13
  this.cacheable(false);
12
14
  const filesToPages = ({ pagesRootDirectory, isRoutes = false, }) => {
13
15
  const pagesDir = path_1.default.resolve(rootDir, root, pagesRootDirectory);
@@ -25,11 +27,17 @@ function default_1() {
25
27
  // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage" */ '/tramvai-app/src/pages/MainPage'))
26
28
  fsPages.push(`'${pageComponentName}': lazy(() => import(/* webpackChunkName: "${pageComponentChunkName}" */ '${pageComponentPath}'))`);
27
29
  if (isRoutes) {
28
- const layoutPath = path_1.default.join(path_1.default.dirname(pageComponentPath), LAYOUT_FILENAME);
30
+ const pageDirname = path_1.default.dirname(pageComponentPath);
31
+ const layoutPath = path_1.default.join(pageDirname, LAYOUT_FILENAME);
32
+ const errorBoundaryPath = path_1.default.join(pageDirname, ERROR_BOUNDARY_FILENAME);
29
33
  if (fs_1.default.existsSync(layoutPath)) {
30
- // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage_layout" */ '/tramvai-app/src/pages/MainPage_layout'))
34
+ // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage__layout" */ '/tramvai-app/src/pages/MainPage_layout'))
31
35
  fsLayouts.push(`'${pageComponentName}': lazy(() => import(/* webpackChunkName: "${pageComponentChunkName}__layout" */ '${layoutPath.replace('.tsx', '')}'))`);
32
36
  }
37
+ if (fs_1.default.existsSync(errorBoundaryPath)) {
38
+ // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage__errorBoundary" */ '/tramvai-app/src/pages/MainPage_errorBoundary'))
39
+ fsErrorBoundaries.push(`'${pageComponentName}': lazy(() => import(/* webpackChunkName: "${pageComponentChunkName}__errorBoundary" */ '${errorBoundaryPath.replace('.tsx', '')}'))`);
40
+ }
33
41
  }
34
42
  }
35
43
  }
@@ -48,17 +56,20 @@ function default_1() {
48
56
  : [];
49
57
  const code = `import { lazy } from '@tramvai/react';
50
58
 
51
- export default {
52
- routes: {
53
- ${fsRoutes.join(',\n')}
54
- },
55
- pages: {
56
- ${fsPages.join(',\n')}
57
- },
58
- layouts: {
59
- ${fsLayouts.join(',\n')}
60
- },
61
- }`;
59
+ export default {
60
+ routes: {
61
+ ${fsRoutes.join(',\n')}
62
+ },
63
+ pages: {
64
+ ${fsPages.join(',\n')}
65
+ },
66
+ layouts: {
67
+ ${fsLayouts.join(',\n')}
68
+ },
69
+ errorBoundaries: {
70
+ ${fsErrorBoundaries.join(',\n')}
71
+ },
72
+ }`;
62
73
  return code;
63
74
  }
64
75
  exports.default = default_1;
@@ -1 +1 @@
1
- {"version":3,"file":"pagesResolve.js","sourceRoot":"","sources":["../../../../src/library/webpack/loaders/pagesResolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pagesResolve.js","sourceRoot":"","sources":["../../../../src/library/webpack/loaders/pagesResolve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/cli",
3
- "version": "2.59.4",
3
+ "version": "2.61.1",
4
4
  "description": "Cli инструмент для сборки и запуска приложений",
5
5
  "files": [
6
6
  "src",
@@ -68,7 +68,7 @@
68
68
  "@tinkoff/request-plugin-protocol-http": "^0.11.6",
69
69
  "@tinkoff/utils": "^2.1.3",
70
70
  "@tramvai/build": "3.0.7",
71
- "@tramvai/react": "2.59.4",
71
+ "@tramvai/react": "2.61.1",
72
72
  "@tramvai/tools-check-versions": "0.4.7",
73
73
  "@tramvai/tools-migrate": "0.6.8",
74
74
  "ajv": "^6.12.6",
@@ -123,6 +123,7 @@ describe('@tramvai/cli start command', () => {
123
123
  },
124
124
  pages: {},
125
125
  layouts: {},
126
+ errorBoundaries: {},
126
127
  });
127
128
  });
128
129
 
@@ -1,4 +1,9 @@
1
- import type { LazyComponentWrapper, NestedLayoutComponent, PageComponent } from '@tramvai/react';
1
+ import type {
2
+ ErrorBoundaryComponent,
3
+ LazyComponentWrapper,
4
+ NestedLayoutComponent,
5
+ PageComponent,
6
+ } from '@tramvai/react';
2
7
 
3
8
  // eslint-disable-next-line import/no-default-export
4
9
  export default {
@@ -9,4 +14,5 @@ export default {
9
14
  routes: Record<string, LazyComponentWrapper<PageComponent>>;
10
15
  pages: Record<string, LazyComponentWrapper<PageComponent>>;
11
16
  layouts: Record<string, LazyComponentWrapper<NestedLayoutComponent>>;
17
+ errorBoundaries: Record<string, LazyComponentWrapper<ErrorBoundaryComponent>>;
12
18
  };
@@ -96,5 +96,14 @@ export default (configManager: ConfigManager) => (config: Config) => {
96
96
  },
97
97
  ]);
98
98
 
99
+ // TODO: remove after dropping support for node@14
100
+ if (configManager.buildType === 'server') {
101
+ config.plugin('node-performance').use(webpack.ProvidePlugin, [
102
+ {
103
+ performance: ['perf_hooks', 'performance'],
104
+ },
105
+ ]);
106
+ }
107
+
99
108
  return config;
100
109
  };
@@ -3,10 +3,12 @@ import readDir from 'fs-readdir-recursive';
3
3
  import fs from 'fs';
4
4
 
5
5
  const LAYOUT_FILENAME = '_layout.tsx';
6
+ const ERROR_BOUNDARY_FILENAME = '_error.tsx';
6
7
 
7
8
  export default function () {
8
9
  const { fileSystemPages, rootDir, root, extensions } = this.getOptions();
9
10
  const fsLayouts = [];
11
+ const fsErrorBoundaries = [];
10
12
 
11
13
  this.cacheable(false);
12
14
 
@@ -40,10 +42,13 @@ export default function () {
40
42
  );
41
43
 
42
44
  if (isRoutes) {
43
- const layoutPath = path.join(path.dirname(pageComponentPath), LAYOUT_FILENAME);
45
+ const pageDirname = path.dirname(pageComponentPath);
46
+
47
+ const layoutPath = path.join(pageDirname, LAYOUT_FILENAME);
48
+ const errorBoundaryPath = path.join(pageDirname, ERROR_BOUNDARY_FILENAME);
44
49
 
45
50
  if (fs.existsSync(layoutPath)) {
46
- // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage_layout" */ '/tramvai-app/src/pages/MainPage_layout'))
51
+ // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage__layout" */ '/tramvai-app/src/pages/MainPage_layout'))
47
52
  fsLayouts.push(
48
53
  `'${pageComponentName}': lazy(() => import(/* webpackChunkName: "${pageComponentChunkName}__layout" */ '${layoutPath.replace(
49
54
  '.tsx',
@@ -51,6 +56,16 @@ export default function () {
51
56
  )}'))`
52
57
  );
53
58
  }
59
+
60
+ if (fs.existsSync(errorBoundaryPath)) {
61
+ // @example '@/pages/MainPage': lazy(() => import(/* webpackChunkName: "@_pages_MainPage__errorBoundary" */ '/tramvai-app/src/pages/MainPage_errorBoundary'))
62
+ fsErrorBoundaries.push(
63
+ `'${pageComponentName}': lazy(() => import(/* webpackChunkName: "${pageComponentChunkName}__errorBoundary" */ '${errorBoundaryPath.replace(
64
+ '.tsx',
65
+ ''
66
+ )}'))`
67
+ );
68
+ }
54
69
  }
55
70
  }
56
71
  }
@@ -72,17 +87,20 @@ export default function () {
72
87
 
73
88
  const code = `import { lazy } from '@tramvai/react';
74
89
 
75
- export default {
76
- routes: {
77
- ${fsRoutes.join(',\n')}
78
- },
79
- pages: {
80
- ${fsPages.join(',\n')}
81
- },
82
- layouts: {
83
- ${fsLayouts.join(',\n')}
84
- },
85
- }`;
90
+ export default {
91
+ routes: {
92
+ ${fsRoutes.join(',\n')}
93
+ },
94
+ pages: {
95
+ ${fsPages.join(',\n')}
96
+ },
97
+ layouts: {
98
+ ${fsLayouts.join(',\n')}
99
+ },
100
+ errorBoundaries: {
101
+ ${fsErrorBoundaries.join(',\n')}
102
+ },
103
+ }`;
86
104
 
87
105
  return code;
88
106
  }