@teambit/react 0.0.598 → 0.0.599

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.
Files changed (36) hide show
  1. package/apps/web/default-bundler.ts +0 -0
  2. package/apps/web/plugins/index.ts +1 -0
  3. package/apps/web/plugins/prerender.ts +13 -0
  4. package/apps/web/react-app-options.ts +54 -0
  5. package/apps/web/react.app-type.ts +22 -0
  6. package/apps/web/react.application.ts +118 -0
  7. package/dist/apps/web/default-bundler.d.ts +0 -0
  8. package/dist/apps/web/default-bundler.js +3 -0
  9. package/dist/{react-app-options.js.map → apps/web/default-bundler.js.map} +0 -0
  10. package/dist/apps/web/plugins/index.d.ts +1 -0
  11. package/dist/apps/web/plugins/index.js +23 -0
  12. package/dist/apps/web/plugins/index.js.map +1 -0
  13. package/dist/apps/web/plugins/prerender.d.ts +1 -0
  14. package/dist/apps/web/plugins/prerender.js +45 -0
  15. package/dist/apps/web/plugins/prerender.js.map +1 -0
  16. package/dist/{react-app-options.d.ts → apps/web/react-app-options.d.ts} +10 -10
  17. package/dist/apps/web/react-app-options.js +13 -0
  18. package/dist/apps/web/react-app-options.js.map +1 -0
  19. package/dist/{react.app-type.d.ts → apps/web/react.app-type.d.ts} +1 -1
  20. package/dist/{react.app-type.js → apps/web/react.app-type.js} +3 -1
  21. package/dist/apps/web/react.app-type.js.map +1 -0
  22. package/dist/apps/web/react.application.d.ts +26 -0
  23. package/dist/{react.application.js → apps/web/react.application.js} +66 -37
  24. package/dist/apps/web/react.application.js.map +1 -0
  25. package/dist/index.d.ts +1 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/react.main.runtime.d.ts +0 -5
  28. package/dist/react.main.runtime.js +4 -23
  29. package/dist/react.main.runtime.js.map +1 -1
  30. package/package-tar/teambit-react-0.0.599.tgz +0 -0
  31. package/package.json +33 -33
  32. package/dist/react-app-options.js +0 -3
  33. package/dist/react.app-type.js.map +0 -1
  34. package/dist/react.application.d.ts +0 -18
  35. package/dist/react.application.js.map +0 -1
  36. package/package-tar/teambit-react-0.0.598.tgz +0 -0
File without changes
@@ -0,0 +1 @@
1
+ export { prerenderSPAPlugin } from './prerender';
@@ -0,0 +1,13 @@
1
+ import { join } from 'path';
2
+ import PrerenderSPAPlugin from '@dreysolano/prerender-spa-plugin';
3
+
4
+ export const prerenderSPAPlugin = (prerenderRoutes: string[], staticDir: string) => {
5
+ return new PrerenderSPAPlugin({
6
+ staticDir,
7
+ routes: prerenderRoutes,
8
+ postProcess(renderedRoute: any) {
9
+ renderedRoute.outputPath = join(staticDir, `${renderedRoute.originalRoute}.html`);
10
+ return renderedRoute;
11
+ },
12
+ });
13
+ };
@@ -0,0 +1,54 @@
1
+ import { Bundler, DevServer } from '@teambit/bundler';
2
+ import { DeployContext } from '@teambit/application';
3
+ import { Capsule } from '@teambit/isolator';
4
+ import { WebpackConfigTransformer } from '@teambit/webpack';
5
+
6
+ export type ReactAppOptions = {
7
+ /**
8
+ * name of the application.
9
+ */
10
+ name: string;
11
+
12
+ /**
13
+ * path to entry files of the application.
14
+ */
15
+ entry: string[];
16
+
17
+ /**
18
+ * use server-side rendering for the app.
19
+ */
20
+ ssr?: boolean;
21
+
22
+ /**
23
+ * instance of bundler to use. default is Webpack.
24
+ */
25
+ bundler?: Bundler;
26
+
27
+ /**
28
+ * instance of dev server to use. default is Webpack.
29
+ */
30
+ devServer?: DevServer;
31
+
32
+ /**
33
+ * set webpack transformers
34
+ */
35
+ webpackTransformers?: WebpackConfigTransformer[];
36
+
37
+ /**
38
+ * decide whether to prerender your app. accepts an array of routes. if none, prerender would not apply.
39
+ * e.g ['/plugins', '/learn', '/docs/quick-start]
40
+ */
41
+ prerender?: {
42
+ routes?: string[];
43
+ };
44
+
45
+ /**
46
+ * deploy function.
47
+ */
48
+ deploy?: (context: DeployContext, Capsule: Capsule) => Promise<void>;
49
+
50
+ /**
51
+ * ranges of ports to use to run the app server.
52
+ */
53
+ portRange?: number[];
54
+ };
@@ -0,0 +1,22 @@
1
+ import { ApplicationType } from '@teambit/application';
2
+ import { ReactAppOptions } from './react-app-options';
3
+ import { ReactApp } from './react.application';
4
+ import { ReactEnv } from '../../react.env';
5
+
6
+ export class ReactAppType implements ApplicationType<ReactAppOptions> {
7
+ constructor(readonly name: string, private reactEnv: ReactEnv) {}
8
+
9
+ createApp(options: ReactAppOptions) {
10
+ return new ReactApp(
11
+ options.name,
12
+ options.entry,
13
+ options.portRange || [3000, 4000],
14
+ this.reactEnv,
15
+ options.prerender?.routes,
16
+ options.bundler,
17
+ options.devServer,
18
+ options.webpackTransformers,
19
+ options.deploy
20
+ );
21
+ }
22
+ }
@@ -0,0 +1,118 @@
1
+ import { join, basename } from 'path';
2
+ import { Capsule } from '@teambit/isolator';
3
+ import { Application, AppContext, AppBuildResult, DeployContext } from '@teambit/application';
4
+ import { ArtifactDefinition, BuildContext } from '@teambit/builder';
5
+ import { Bundler, DevServer, BundlerResult, BundlerContext, DevServerContext } from '@teambit/bundler';
6
+ import { Port } from '@teambit/toolbox.network.get-port';
7
+ import { WebpackConfigTransformer } from '@teambit/webpack';
8
+ import { ReactEnv } from '../../react.env';
9
+ import { prerenderSPAPlugin } from './plugins';
10
+
11
+ export class ReactApp implements Application {
12
+ constructor(
13
+ readonly name: string,
14
+ readonly entry: string[],
15
+ readonly portRange: number[],
16
+ private reactEnv: ReactEnv,
17
+ readonly prerenderRoutes?: string[],
18
+ readonly bundler?: Bundler,
19
+ readonly devServer?: DevServer,
20
+ readonly transformers?: WebpackConfigTransformer[],
21
+ readonly deploy?: (context: DeployContext, capsule: Capsule) => Promise<void>
22
+ ) {}
23
+
24
+ readonly applicationType = 'react-common-js';
25
+ async run(context: AppContext): Promise<number> {
26
+ const [from, to] = this.portRange;
27
+ const port = await Port.getPort(from, to);
28
+ if (this.devServer) {
29
+ await this.devServer.listen(port);
30
+ return port;
31
+ }
32
+ const devServerContext = this.getDevServerContext(context);
33
+ const devServer = this.reactEnv.getDevServer(devServerContext, [
34
+ (configMutator) => {
35
+ configMutator.addTopLevel('devServer', {
36
+ historyApiFallback: {
37
+ index: '/index.html',
38
+ disableDotRule: true,
39
+ },
40
+ });
41
+
42
+ if (!configMutator.raw.output) configMutator.raw.output = {};
43
+ configMutator.raw.output.publicPath = '/';
44
+
45
+ return configMutator;
46
+ },
47
+ ]);
48
+ await devServer.listen(port);
49
+ return port;
50
+ }
51
+
52
+ async build(context: BuildContext, capsule: Capsule): Promise<AppBuildResult> {
53
+ const bundler = await this.getBundler(context, capsule);
54
+ const bundlerResult = await bundler.run();
55
+ const artifacts: ArtifactDefinition[] = this.getBlobPatterns(bundlerResult);
56
+ const deployContext: AppBuildResult = Object.assign(context, { artifacts });
57
+ return deployContext;
58
+ }
59
+
60
+ private getBlobPatterns(bundlerResults: BundlerResult[]) {
61
+ const _globs = bundlerResults.map((result) => {
62
+ if (!result.outputPath) return undefined;
63
+ return {
64
+ name: 'CommonJS',
65
+ globPatterns: [`${this.getPublicDir()}/**`],
66
+ };
67
+ });
68
+ return _globs.filter((glob) => !!glob) as ArtifactDefinition[];
69
+ }
70
+
71
+ private getBundler(context: BuildContext, capsule: Capsule) {
72
+ if (this.bundler) return this.bundler;
73
+ return this.getDefaultBundler(context, capsule);
74
+ }
75
+ private async getDefaultBundler(context: BuildContext, capsule: Capsule) {
76
+ const reactEnv: ReactEnv = context.env;
77
+ const publicDir = this.getPublicDir();
78
+ const outputPath = join(capsule.path, publicDir);
79
+ const { distDir } = reactEnv.getCompiler();
80
+ const entries = this.entry.map((entry) => require.resolve(`${capsule.path}/${distDir}/${basename(entry)}`));
81
+ const staticDir = join(outputPath, 'public');
82
+
83
+ const bundlerContext: BundlerContext = Object.assign(context, {
84
+ targets: [
85
+ {
86
+ components: [capsule?.component],
87
+ entries,
88
+ outputPath,
89
+ },
90
+ ],
91
+ entry: [],
92
+ rootPath: '/',
93
+ });
94
+
95
+ const bundler: Bundler = await reactEnv.getBundler(bundlerContext, [
96
+ (configMutator) => {
97
+ if (this.transformers?.length) configMutator.addPlugin(this.transformers);
98
+ configMutator.addTopLevel('output', { path: staticDir, publicPath: `/` });
99
+ if (this.prerenderRoutes) configMutator.addPlugin(prerenderSPAPlugin(this.prerenderRoutes, staticDir));
100
+ return configMutator;
101
+ },
102
+ ]);
103
+ return bundler;
104
+ }
105
+
106
+ private getPublicDir() {
107
+ return join(this.applicationType, this.name);
108
+ }
109
+
110
+ private getDevServerContext(context: AppContext): DevServerContext {
111
+ return Object.assign(context, {
112
+ entry: this.entry,
113
+ rootPath: '',
114
+ publicPath: `public/${this.name}`,
115
+ title: this.name,
116
+ });
117
+ }
118
+ }
File without changes
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=default-bundler.js.map
@@ -0,0 +1 @@
1
+ export { prerenderSPAPlugin } from './prerender';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "prerenderSPAPlugin", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _prerender().prerenderSPAPlugin;
10
+ }
11
+ });
12
+
13
+ function _prerender() {
14
+ const data = require("./prerender");
15
+
16
+ _prerender = function () {
17
+ return data;
18
+ };
19
+
20
+ return data;
21
+ }
22
+
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export { prerenderSPAPlugin } from './prerender';\n"]}
@@ -0,0 +1 @@
1
+ export declare const prerenderSPAPlugin: (prerenderRoutes: string[], staticDir: string) => any;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.prerenderSPAPlugin = void 0;
9
+
10
+ function _path() {
11
+ const data = require("path");
12
+
13
+ _path = function () {
14
+ return data;
15
+ };
16
+
17
+ return data;
18
+ }
19
+
20
+ function _prerenderSpaPlugin() {
21
+ const data = _interopRequireDefault(require("@dreysolano/prerender-spa-plugin"));
22
+
23
+ _prerenderSpaPlugin = function () {
24
+ return data;
25
+ };
26
+
27
+ return data;
28
+ }
29
+
30
+ const prerenderSPAPlugin = (prerenderRoutes, staticDir) => {
31
+ return new (_prerenderSpaPlugin().default)({
32
+ staticDir,
33
+ routes: prerenderRoutes,
34
+
35
+ postProcess(renderedRoute) {
36
+ renderedRoute.outputPath = (0, _path().join)(staticDir, `${renderedRoute.originalRoute}.html`);
37
+ return renderedRoute;
38
+ }
39
+
40
+ });
41
+ };
42
+
43
+ exports.prerenderSPAPlugin = prerenderSPAPlugin;
44
+
45
+ //# sourceMappingURL=prerender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["prerender.ts"],"names":["prerenderSPAPlugin","prerenderRoutes","staticDir","PrerenderSPAPlugin","routes","postProcess","renderedRoute","outputPath","originalRoute"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,kBAAkB,GAAG,CAACC,eAAD,EAA4BC,SAA5B,KAAkD;AAClF,SAAO,KAAIC,6BAAJ,EAAuB;AAC5BD,IAAAA,SAD4B;AAE5BE,IAAAA,MAAM,EAAEH,eAFoB;;AAG5BI,IAAAA,WAAW,CAACC,aAAD,EAAqB;AAC9BA,MAAAA,aAAa,CAACC,UAAd,GAA2B,kBAAKL,SAAL,EAAiB,GAAEI,aAAa,CAACE,aAAc,OAA/C,CAA3B;AACA,aAAOF,aAAP;AACD;;AAN2B,GAAvB,CAAP;AAQD,CATM","sourcesContent":["import { join } from 'path';\nimport PrerenderSPAPlugin from '@dreysolano/prerender-spa-plugin';\n\nexport const prerenderSPAPlugin = (prerenderRoutes: string[], staticDir: string) => {\n return new PrerenderSPAPlugin({\n staticDir,\n routes: prerenderRoutes,\n postProcess(renderedRoute: any) {\n renderedRoute.outputPath = join(staticDir, `${renderedRoute.originalRoute}.html`);\n return renderedRoute;\n },\n });\n};\n"]}
@@ -1,9 +1,7 @@
1
1
  import { Bundler, DevServer } from '@teambit/bundler';
2
2
  import { DeployContext } from '@teambit/application';
3
3
  import { Capsule } from '@teambit/isolator';
4
- export interface ReactAppDeployContext extends DeployContext {
5
- publicDir: string;
6
- }
4
+ import { WebpackConfigTransformer } from '@teambit/webpack';
7
5
  export declare type ReactAppOptions = {
8
6
  /**
9
7
  * name of the application.
@@ -26,18 +24,20 @@ export declare type ReactAppOptions = {
26
24
  */
27
25
  devServer?: DevServer;
28
26
  /**
29
- * decide whether to prerender your app. accepts an array of routes. if none, prerender would not apply.
27
+ * set webpack transformers
30
28
  */
31
- prerender?: string[];
29
+ webpackTransformers?: WebpackConfigTransformer[];
32
30
  /**
33
- * deploy function.
31
+ * decide whether to prerender your app. accepts an array of routes. if none, prerender would not apply.
32
+ * e.g ['/plugins', '/learn', '/docs/quick-start]
34
33
  */
35
- deploy?: (context: ReactAppDeployContext, capsule: Capsule) => Promise<void>;
34
+ prerender?: {
35
+ routes?: string[];
36
+ };
36
37
  /**
37
- * prerender routes of application (will create static file for the route)
38
- * e.g ['/plugins', '/learn', '/docs/quick-start]
38
+ * deploy function.
39
39
  */
40
- prerenderRoutes?: string[];
40
+ deploy?: (context: DeployContext, Capsule: Capsule) => Promise<void>;
41
41
  /**
42
42
  * ranges of ports to use to run the app server.
43
43
  */
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ function _isolator() {
4
+ const data = require("@teambit/isolator");
5
+
6
+ _isolator = function () {
7
+ return data;
8
+ };
9
+
10
+ return data;
11
+ }
12
+
13
+ //# sourceMappingURL=react-app-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["react-app-options.ts"],"names":[],"mappings":";;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["import { Bundler, DevServer } from '@teambit/bundler';\nimport { DeployContext } from '@teambit/application';\nimport { Capsule } from '@teambit/isolator';\nimport { WebpackConfigTransformer } from '@teambit/webpack';\n\nexport type ReactAppOptions = {\n /**\n * name of the application.\n */\n name: string;\n\n /**\n * path to entry files of the application.\n */\n entry: string[];\n\n /**\n * use server-side rendering for the app.\n */\n ssr?: boolean;\n\n /**\n * instance of bundler to use. default is Webpack.\n */\n bundler?: Bundler;\n\n /**\n * instance of dev server to use. default is Webpack.\n */\n devServer?: DevServer;\n\n /**\n * set webpack transformers\n */\n webpackTransformers?: WebpackConfigTransformer[];\n\n /**\n * decide whether to prerender your app. accepts an array of routes. if none, prerender would not apply.\n * e.g ['/plugins', '/learn', '/docs/quick-start]\n */\n prerender?: {\n routes?: string[];\n };\n\n /**\n * deploy function.\n */\n deploy?: (context: DeployContext, Capsule: Capsule) => Promise<void>;\n\n /**\n * ranges of ports to use to run the app server.\n */\n portRange?: number[];\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { ApplicationType } from '@teambit/application';
2
- import { ReactEnv } from './react.env';
3
2
  import { ReactAppOptions } from './react-app-options';
4
3
  import { ReactApp } from './react.application';
4
+ import { ReactEnv } from '../../react.env';
5
5
  export declare class ReactAppType implements ApplicationType<ReactAppOptions> {
6
6
  readonly name: string;
7
7
  private reactEnv;
@@ -22,7 +22,9 @@ class ReactAppType {
22
22
  }
23
23
 
24
24
  createApp(options) {
25
- return new (_react().ReactApp)(options.name, options.entry, options.portRange || [3000, 4000], this.reactEnv, options.deploy, options.prerenderRoutes);
25
+ var _options$prerender;
26
+
27
+ return new (_react().ReactApp)(options.name, options.entry, options.portRange || [3000, 4000], this.reactEnv, (_options$prerender = options.prerender) === null || _options$prerender === void 0 ? void 0 : _options$prerender.routes, options.bundler, options.devServer, options.webpackTransformers, options.deploy);
26
28
  }
27
29
 
28
30
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["react.app-type.ts"],"names":["ReactAppType","constructor","name","reactEnv","createApp","options","ReactApp","entry","portRange","prerender","routes","bundler","devServer","webpackTransformers","deploy"],"mappings":";;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGO,MAAMA,YAAN,CAA+D;AACpEC,EAAAA,WAAW,CAAUC,IAAV,EAAgCC,QAAhC,EAAoD;AAAA,SAA1CD,IAA0C,GAA1CA,IAA0C;AAAA,SAApBC,QAAoB,GAApBA,QAAoB;AAAE;;AAEjEC,EAAAA,SAAS,CAACC,OAAD,EAA2B;AAAA;;AAClC,WAAO,KAAIC,iBAAJ,EACLD,OAAO,CAACH,IADH,EAELG,OAAO,CAACE,KAFH,EAGLF,OAAO,CAACG,SAAR,IAAqB,CAAC,IAAD,EAAO,IAAP,CAHhB,EAIL,KAAKL,QAJA,wBAKLE,OAAO,CAACI,SALH,uDAKL,mBAAmBC,MALd,EAMLL,OAAO,CAACM,OANH,EAOLN,OAAO,CAACO,SAPH,EAQLP,OAAO,CAACQ,mBARH,EASLR,OAAO,CAACS,MATH,CAAP;AAWD;;AAfmE","sourcesContent":["import { ApplicationType } from '@teambit/application';\nimport { ReactAppOptions } from './react-app-options';\nimport { ReactApp } from './react.application';\nimport { ReactEnv } from '../../react.env';\n\nexport class ReactAppType implements ApplicationType<ReactAppOptions> {\n constructor(readonly name: string, private reactEnv: ReactEnv) {}\n\n createApp(options: ReactAppOptions) {\n return new ReactApp(\n options.name,\n options.entry,\n options.portRange || [3000, 4000],\n this.reactEnv,\n options.prerender?.routes,\n options.bundler,\n options.devServer,\n options.webpackTransformers,\n options.deploy\n );\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { Capsule } from '@teambit/isolator';
2
+ import { Application, AppContext, AppBuildResult, DeployContext } from '@teambit/application';
3
+ import { BuildContext } from '@teambit/builder';
4
+ import { Bundler, DevServer } from '@teambit/bundler';
5
+ import { WebpackConfigTransformer } from '@teambit/webpack';
6
+ import { ReactEnv } from '../../react.env';
7
+ export declare class ReactApp implements Application {
8
+ readonly name: string;
9
+ readonly entry: string[];
10
+ readonly portRange: number[];
11
+ private reactEnv;
12
+ readonly prerenderRoutes?: string[] | undefined;
13
+ readonly bundler?: Bundler | undefined;
14
+ readonly devServer?: DevServer | undefined;
15
+ readonly transformers?: WebpackConfigTransformer[] | undefined;
16
+ readonly deploy?: ((context: DeployContext, capsule: Capsule) => Promise<void>) | undefined;
17
+ constructor(name: string, entry: string[], portRange: number[], reactEnv: ReactEnv, prerenderRoutes?: string[] | undefined, bundler?: Bundler | undefined, devServer?: DevServer | undefined, transformers?: WebpackConfigTransformer[] | undefined, deploy?: ((context: DeployContext, capsule: Capsule) => Promise<void>) | undefined);
18
+ readonly applicationType = "react-common-js";
19
+ run(context: AppContext): Promise<number>;
20
+ build(context: BuildContext, capsule: Capsule): Promise<AppBuildResult>;
21
+ private getBlobPatterns;
22
+ private getBundler;
23
+ private getDefaultBundler;
24
+ private getPublicDir;
25
+ private getDevServerContext;
26
+ }
@@ -21,30 +21,30 @@ function _defineProperty2() {
21
21
  return data;
22
22
  }
23
23
 
24
- function _prerenderSpaPlugin() {
25
- const data = _interopRequireDefault(require("@dreysolano/prerender-spa-plugin"));
24
+ function _path() {
25
+ const data = require("path");
26
26
 
27
- _prerenderSpaPlugin = function () {
27
+ _path = function () {
28
28
  return data;
29
29
  };
30
30
 
31
31
  return data;
32
32
  }
33
33
 
34
- function _path() {
35
- const data = require("path");
34
+ function _toolboxNetwork() {
35
+ const data = require("@teambit/toolbox.network.get-port");
36
36
 
37
- _path = function () {
37
+ _toolboxNetwork = function () {
38
38
  return data;
39
39
  };
40
40
 
41
41
  return data;
42
42
  }
43
43
 
44
- function _toolboxNetwork() {
45
- const data = require("@teambit/toolbox.network.get-port");
44
+ function _plugins() {
45
+ const data = require("./plugins");
46
46
 
47
- _toolboxNetwork = function () {
47
+ _plugins = function () {
48
48
  return data;
49
49
  };
50
50
 
@@ -52,17 +52,28 @@ function _toolboxNetwork() {
52
52
  }
53
53
 
54
54
  class ReactApp {
55
- constructor(name, entry, portRange, reactEnv, deploy, prerenderRoutes) {
55
+ constructor(name, entry, portRange, reactEnv, prerenderRoutes, bundler, devServer, transformers, deploy) {
56
56
  this.name = name;
57
57
  this.entry = entry;
58
58
  this.portRange = portRange;
59
59
  this.reactEnv = reactEnv;
60
- this.deploy = deploy;
61
60
  this.prerenderRoutes = prerenderRoutes;
62
- (0, _defineProperty2().default)(this, "applicationType", 'react');
61
+ this.bundler = bundler;
62
+ this.devServer = devServer;
63
+ this.transformers = transformers;
64
+ this.deploy = deploy;
65
+ (0, _defineProperty2().default)(this, "applicationType", 'react-common-js');
63
66
  }
64
67
 
65
68
  async run(context) {
69
+ const [from, to] = this.portRange;
70
+ const port = await _toolboxNetwork().Port.getPort(from, to);
71
+
72
+ if (this.devServer) {
73
+ await this.devServer.listen(port);
74
+ return port;
75
+ }
76
+
66
77
  const devServerContext = this.getDevServerContext(context);
67
78
  const devServer = this.reactEnv.getDevServer(devServerContext, [configMutator => {
68
79
  configMutator.addTopLevel('devServer', {
@@ -75,23 +86,49 @@ class ReactApp {
75
86
  configMutator.raw.output.publicPath = '/';
76
87
  return configMutator;
77
88
  }]);
78
- const [from, to] = this.portRange;
79
- const port = await _toolboxNetwork().Port.getPort(from, to);
80
89
  await devServer.listen(port);
81
90
  return port;
82
91
  }
83
92
 
84
- async build(context, aspectId, appCapsule) {
93
+ async build(context, capsule) {
94
+ const bundler = await this.getBundler(context, capsule);
95
+ const bundlerResult = await bundler.run();
96
+ const artifacts = this.getBlobPatterns(bundlerResult);
97
+ const deployContext = Object.assign(context, {
98
+ artifacts
99
+ });
100
+ return deployContext;
101
+ }
102
+
103
+ getBlobPatterns(bundlerResults) {
104
+ const _globs = bundlerResults.map(result => {
105
+ if (!result.outputPath) return undefined;
106
+ return {
107
+ name: 'CommonJS',
108
+ globPatterns: [`${this.getPublicDir()}/**`]
109
+ };
110
+ });
111
+
112
+ return _globs.filter(glob => !!glob);
113
+ }
114
+
115
+ getBundler(context, capsule) {
116
+ if (this.bundler) return this.bundler;
117
+ return this.getDefaultBundler(context, capsule);
118
+ }
119
+
120
+ async getDefaultBundler(context, capsule) {
85
121
  const reactEnv = context.env;
86
- const publicDir = (0, _path().join)('applications', this.name, 'build');
87
- const outputPath = (0, _path().join)(appCapsule.path, publicDir);
122
+ const publicDir = this.getPublicDir();
123
+ const outputPath = (0, _path().join)(capsule.path, publicDir);
88
124
  const {
89
125
  distDir
90
126
  } = reactEnv.getCompiler();
91
- const entries = this.entry.map(entry => require.resolve(`${appCapsule.path}/${distDir}/${(0, _path().basename)(entry)}`));
127
+ const entries = this.entry.map(entry => require.resolve(`${capsule.path}/${distDir}/${(0, _path().basename)(entry)}`));
128
+ const staticDir = (0, _path().join)(outputPath, 'public');
92
129
  const bundlerContext = Object.assign(context, {
93
130
  targets: [{
94
- components: [appCapsule === null || appCapsule === void 0 ? void 0 : appCapsule.component],
131
+ components: [capsule === null || capsule === void 0 ? void 0 : capsule.component],
95
132
  entries,
96
133
  outputPath
97
134
  }],
@@ -99,29 +136,21 @@ class ReactApp {
99
136
  rootPath: '/'
100
137
  });
101
138
  const bundler = await reactEnv.getBundler(bundlerContext, [configMutator => {
139
+ var _this$transformers;
140
+
141
+ if ((_this$transformers = this.transformers) !== null && _this$transformers !== void 0 && _this$transformers.length) configMutator.addPlugin(this.transformers);
102
142
  configMutator.addTopLevel('output', {
103
- path: (0, _path().join)(outputPath, 'public'),
143
+ path: staticDir,
104
144
  publicPath: `/`
105
145
  });
106
- configMutator.addPlugin(new (_prerenderSpaPlugin().default)({
107
- staticDir: (0, _path().join)(outputPath, 'public'),
108
- routes: this.prerenderRoutes,
109
-
110
- postProcess(renderedRoute) {
111
- renderedRoute.outputPath = (0, _path().join)(outputPath, 'public', `${renderedRoute.originalRoute}.html`);
112
- return renderedRoute;
113
- }
114
-
115
- }));
146
+ if (this.prerenderRoutes) configMutator.addPlugin((0, _plugins().prerenderSPAPlugin)(this.prerenderRoutes, staticDir));
116
147
  return configMutator;
117
148
  }]);
118
- await bundler.run();
119
- const deployContext = Object.assign(context, {
120
- applicationType: this.applicationType,
121
- aspectId,
122
- publicDir: (0, _path().join)(appCapsule.path, publicDir, 'public')
123
- });
124
- return deployContext;
149
+ return bundler;
150
+ }
151
+
152
+ getPublicDir() {
153
+ return (0, _path().join)(this.applicationType, this.name);
125
154
  }
126
155
 
127
156
  getDevServerContext(context) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["react.application.ts"],"names":["ReactApp","constructor","name","entry","portRange","reactEnv","prerenderRoutes","bundler","devServer","transformers","deploy","run","context","from","to","port","Port","getPort","listen","devServerContext","getDevServerContext","getDevServer","configMutator","addTopLevel","historyApiFallback","index","disableDotRule","raw","output","publicPath","build","capsule","getBundler","bundlerResult","artifacts","getBlobPatterns","deployContext","Object","assign","bundlerResults","_globs","map","result","outputPath","undefined","globPatterns","getPublicDir","filter","glob","getDefaultBundler","env","publicDir","path","distDir","getCompiler","entries","require","resolve","staticDir","bundlerContext","targets","components","component","rootPath","length","addPlugin","applicationType","title"],"mappings":"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","sourcesContent":["import { join, basename } from 'path';\nimport { Capsule } from '@teambit/isolator';\nimport { Application, AppContext, AppBuildResult, DeployContext } from '@teambit/application';\nimport { ArtifactDefinition, BuildContext } from '@teambit/builder';\nimport { Bundler, DevServer, BundlerResult, BundlerContext, DevServerContext } from '@teambit/bundler';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { WebpackConfigTransformer } from '@teambit/webpack';\nimport { ReactEnv } from '../../react.env';\nimport { prerenderSPAPlugin } from './plugins';\n\nexport class ReactApp implements Application {\n constructor(\n readonly name: string,\n readonly entry: string[],\n readonly portRange: number[],\n private reactEnv: ReactEnv,\n readonly prerenderRoutes?: string[],\n readonly bundler?: Bundler,\n readonly devServer?: DevServer,\n readonly transformers?: WebpackConfigTransformer[],\n readonly deploy?: (context: DeployContext, capsule: Capsule) => Promise<void>\n ) {}\n\n readonly applicationType = 'react-common-js';\n async run(context: AppContext): Promise<number> {\n const [from, to] = this.portRange;\n const port = await Port.getPort(from, to);\n if (this.devServer) {\n await this.devServer.listen(port);\n return port;\n }\n const devServerContext = this.getDevServerContext(context);\n const devServer = this.reactEnv.getDevServer(devServerContext, [\n (configMutator) => {\n configMutator.addTopLevel('devServer', {\n historyApiFallback: {\n index: '/index.html',\n disableDotRule: true,\n },\n });\n\n if (!configMutator.raw.output) configMutator.raw.output = {};\n configMutator.raw.output.publicPath = '/';\n\n return configMutator;\n },\n ]);\n await devServer.listen(port);\n return port;\n }\n\n async build(context: BuildContext, capsule: Capsule): Promise<AppBuildResult> {\n const bundler = await this.getBundler(context, capsule);\n const bundlerResult = await bundler.run();\n const artifacts: ArtifactDefinition[] = this.getBlobPatterns(bundlerResult);\n const deployContext: AppBuildResult = Object.assign(context, { artifacts });\n return deployContext;\n }\n\n private getBlobPatterns(bundlerResults: BundlerResult[]) {\n const _globs = bundlerResults.map((result) => {\n if (!result.outputPath) return undefined;\n return {\n name: 'CommonJS',\n globPatterns: [`${this.getPublicDir()}/**`],\n };\n });\n return _globs.filter((glob) => !!glob) as ArtifactDefinition[];\n }\n\n private getBundler(context: BuildContext, capsule: Capsule) {\n if (this.bundler) return this.bundler;\n return this.getDefaultBundler(context, capsule);\n }\n private async getDefaultBundler(context: BuildContext, capsule: Capsule) {\n const reactEnv: ReactEnv = context.env;\n const publicDir = this.getPublicDir();\n const outputPath = join(capsule.path, publicDir);\n const { distDir } = reactEnv.getCompiler();\n const entries = this.entry.map((entry) => require.resolve(`${capsule.path}/${distDir}/${basename(entry)}`));\n const staticDir = join(outputPath, 'public');\n\n const bundlerContext: BundlerContext = Object.assign(context, {\n targets: [\n {\n components: [capsule?.component],\n entries,\n outputPath,\n },\n ],\n entry: [],\n rootPath: '/',\n });\n\n const bundler: Bundler = await reactEnv.getBundler(bundlerContext, [\n (configMutator) => {\n if (this.transformers?.length) configMutator.addPlugin(this.transformers);\n configMutator.addTopLevel('output', { path: staticDir, publicPath: `/` });\n if (this.prerenderRoutes) configMutator.addPlugin(prerenderSPAPlugin(this.prerenderRoutes, staticDir));\n return configMutator;\n },\n ]);\n return bundler;\n }\n\n private getPublicDir() {\n return join(this.applicationType, this.name);\n }\n\n private getDevServerContext(context: AppContext): DevServerContext {\n return Object.assign(context, {\n entry: this.entry,\n rootPath: '',\n publicPath: `public/${this.name}`,\n title: this.name,\n });\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export type { ReactMain, UseWebpackModifiers, UseTypescriptModifiers } from './react.main.runtime';
2
2
  export type { ReactPreview } from './react.preview.runtime';
3
3
  export type { ReactEnv } from './react.env';
4
- export type { ReactAppOptions } from './react-app-options';
5
- export type { ReactAppDeployContext } from './react-app-options';
4
+ export type { ReactAppOptions } from './apps/web/react-app-options';
6
5
  export { ReactAspect, ReactAspect as default } from './react.aspect';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AASA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export type { ReactMain, UseWebpackModifiers, UseTypescriptModifiers } from './react.main.runtime';\nexport type { ReactPreview } from './react.preview.runtime';\nexport type { ReactEnv } from './react.env';\nexport type { ReactAppOptions } from './react-app-options';\nexport type { ReactAppDeployContext } from './react-app-options';\n// Re-export it to indicate for people that extends the react env that we are using it\n// Commented - make errors in safari - SyntaxError: Invalid regular expression: invalid group specifier name\n// export * as styleRegexps from '@teambit/modules.style-regexps';\n\nexport { ReactAspect, ReactAspect as default } from './react.aspect';\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAQA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA","sourcesContent":["export type { ReactMain, UseWebpackModifiers, UseTypescriptModifiers } from './react.main.runtime';\nexport type { ReactPreview } from './react.preview.runtime';\nexport type { ReactEnv } from './react.env';\nexport type { ReactAppOptions } from './apps/web/react-app-options';\n// Re-export it to indicate for people that extends the react env that we are using it\n// Commented - make errors in safari - SyntaxError: Invalid regular expression: invalid group specifier name\n// export * as styleRegexps from '@teambit/modules.style-regexps';\n\nexport { ReactAspect, ReactAspect as default } from './react.aspect';\n"]}
@@ -16,7 +16,6 @@ import { ApplicationMain } from '@teambit/application';
16
16
  import { ESLintMain, EslintConfigTransformer } from '@teambit/eslint';
17
17
  import { PrettierMain, PrettierConfigTransformer } from '@teambit/prettier';
18
18
  import { ReactEnv } from './react.env';
19
- import { ReactAppOptions } from './react-app-options';
20
19
  declare type ReactDeps = [
21
20
  EnvsMain,
22
21
  JestMain,
@@ -96,10 +95,6 @@ export declare class ReactMain {
96
95
  * override the build tsconfig.
97
96
  */
98
97
  overrideBuildTsConfig(tsconfig?: Record<string, any>, compilerOptions?: Partial<TsCompilerOptionsWithoutTsConfig>, tsModule?: any): EnvTransformer;
99
- /**
100
- * register a new React application.
101
- */
102
- registerReactApp(options: ReactAppOptions): this;
103
98
  /**
104
99
  * override the env's dev server and preview webpack configurations.
105
100
  * Replaces both overrideDevServerConfig and overridePreviewConfig
@@ -214,7 +214,7 @@ function _react2() {
214
214
  }
215
215
 
216
216
  function _react3() {
217
- const data = require("./react.app-type");
217
+ const data = require("./apps/web/react.app-type");
218
218
 
219
219
  _react3 = function () {
220
220
  return data;
@@ -234,19 +234,9 @@ function _react4() {
234
234
  }
235
235
 
236
236
  function _react5() {
237
- const data = require("./react.application");
238
-
239
- _react5 = function () {
240
- return data;
241
- };
242
-
243
- return data;
244
- }
245
-
246
- function _react6() {
247
237
  const data = require("./react.templates");
248
238
 
249
- _react6 = function () {
239
+ _react5 = function () {
250
240
  return data;
251
241
  };
252
242
 
@@ -368,15 +358,6 @@ class ReactMain {
368
358
  buildConfig: [transformer]
369
359
  }, tsModule);
370
360
  }
371
- /**
372
- * register a new React application.
373
- */
374
-
375
-
376
- registerReactApp(options) {
377
- this.application.registerApp(new (_react5().ReactApp)(options.name, options.entry, options.portRange || [3000, 4000], this.reactEnv, options.deploy));
378
- return this;
379
- }
380
361
  /**
381
362
  * override the env's dev server and preview webpack configurations.
382
363
  * Replaces both overrideDevServerConfig and overridePreviewConfig
@@ -575,8 +556,8 @@ class ReactMain {
575
556
  const react = new ReactMain(reactEnv, envs, application, workspace);
576
557
  graphql.register((0, _react4().reactSchema)(react));
577
558
  envs.registerEnv(reactEnv);
578
- generator.registerComponentTemplate(_react6().componentTemplates);
579
- generator.registerWorkspaceTemplate(_react6().workspaceTemplates);
559
+ generator.registerComponentTemplate(_react5().componentTemplates);
560
+ generator.registerWorkspaceTemplate(_react5().workspaceTemplates);
580
561
  application.registerAppType(new (_react3().ReactAppType)('react-app', reactEnv));
581
562
  return react;
582
563
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["react.main.runtime.ts"],"names":["ReactMain","constructor","reactEnv","envs","application","workspace","useTypescript","modifiers","tsModule","ts","overrides","devTransformers","devConfig","getCompiler","buildTransformers","buildConfig","buildPipeModifiers","tsModifier","transformers","module","getBuildPipe","override","overrideTsConfig","tsconfig","compilerOptions","transformer","configMutator","mergeTsConfig","raw","compileJs","compileJsx","types","addTypes","genericCompilerOptions","Object","assign","overrideDocsTemplate","templatePath","getDocsTemplate","overrideBuildTsConfig","registerReactApp","options","registerApp","ReactApp","name","entry","portRange","deploy","useWebpack","devServerTransformers","devServerConfig","getDevServer","context","getDevEnvId","envDefinition","id","previewTransformers","previewConfig","getBundler","useEslint","getLinter","usePrettier","getFormatter","overrideDevServerConfig","config","merge","overridePreviewConfig","overrideMounter","mounterPath","getMounter","compose","targetEnv","overrideJestConfig","jestConfigPath","jestModulePath","getTester","overrideBuildPipe","tasks","overrideCompilerTasks","pipeWithoutCompiler","filter","task","aspectId","CompilerAspect","overrideDependencies","dependencyPolicy","getDependencies","reactDeps","overrideCompiler","compiler","overrideEslintConfig","overridePackageJsonProps","props","getPackageJsonProps","getDocs","component","docsArray","state","_consumer","docs","abstract","description","filePath","properties","provider","jestAspect","tsAspect","webpack","graphql","pkg","tester","eslint","prettier","generator","ReactEnv","react","register","registerEnv","registerComponentTemplate","componentTemplates","registerWorkspaceTemplate","workspaceTemplates","registerAppType","ReactAppType","MainRuntime","EnvsAspect","JestAspect","TypescriptAspect","WebpackAspect","WorkspaceAspect","GraphqlAspect","PkgAspect","TesterAspect","ESLintAspect","PrettierAspect","ApplicationAspect","GeneratorAspect","ReactAspect","addRuntime"],"mappings":"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","sourcesContent":["import mergeDeepLeft from 'ramda/src/mergeDeepLeft';\nimport { omit } from 'lodash';\nimport { MainRuntime } from '@teambit/cli';\nimport type { CompilerMain } from '@teambit/compiler';\nimport { CompilerAspect, Compiler } from '@teambit/compiler';\nimport { BuildTask } from '@teambit/builder';\nimport { Component } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, EnvTransformer, Environment } from '@teambit/envs';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { JestMain } from '@teambit/jest';\nimport { JestAspect } from '@teambit/jest';\nimport type { PkgMain, PackageJsonProps } from '@teambit/pkg';\nimport { PkgAspect } from '@teambit/pkg';\nimport type { TesterMain } from '@teambit/tester';\nimport { TesterAspect } from '@teambit/tester';\nimport type { TypescriptMain, TsCompilerOptionsWithoutTsConfig, TsConfigTransformer } from '@teambit/typescript';\nimport { TypescriptAspect } from '@teambit/typescript';\nimport type { WebpackMain, Configuration, WebpackConfigTransformer } from '@teambit/webpack';\nimport { WebpackAspect } from '@teambit/webpack';\nimport { GeneratorAspect, GeneratorMain } from '@teambit/generator';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { DevServerContext, BundlerContext } from '@teambit/bundler';\nimport { VariantPolicyConfigObject } from '@teambit/dependency-resolver';\nimport ts from 'typescript';\nimport { ApplicationAspect, ApplicationMain } from '@teambit/application';\nimport { FormatterContext } from '@teambit/formatter';\nimport { LinterContext } from '@teambit/linter';\nimport { ESLintMain, ESLintAspect, EslintConfigTransformer } from '@teambit/eslint';\nimport { PrettierMain, PrettierAspect, PrettierConfigTransformer } from '@teambit/prettier';\nimport { ReactAspect } from './react.aspect';\nimport { ReactEnv } from './react.env';\nimport { ReactAppType } from './react.app-type';\nimport { reactSchema } from './react.graphql';\nimport { ReactAppOptions } from './react-app-options';\nimport { ReactApp } from './react.application';\nimport { componentTemplates, workspaceTemplates } from './react.templates';\n\ntype ReactDeps = [\n EnvsMain,\n JestMain,\n TypescriptMain,\n CompilerMain,\n WebpackMain,\n Workspace,\n GraphqlMain,\n PkgMain,\n TesterMain,\n ESLintMain,\n PrettierMain,\n ApplicationMain,\n GeneratorMain\n];\n\nexport type ReactMainConfig = {\n /**\n * configure the react env compiler.\n * can be configured to either TypeScript ('ts') or Babel ('babel').\n */\n compiler: 'babel' | 'ts';\n\n /**\n * configure the component tester.\n * can be either Jest ('jest') or Mocha ('mocha')\n */\n tester: 'jest' | 'mocha';\n\n /**\n * version of React to configure.\n */\n reactVersion: string;\n};\n\nexport type UseWebpackModifiers = {\n previewConfig?: WebpackConfigTransformer[];\n devServerConfig?: WebpackConfigTransformer[];\n};\n\nexport type UseTypescriptModifiers = {\n buildConfig?: TsConfigTransformer[];\n devConfig?: TsConfigTransformer[];\n};\n\nexport type UseEslintModifiers = {\n transformers: EslintConfigTransformer[];\n};\nexport type UsePrettierModifiers = {\n transformers: PrettierConfigTransformer[];\n};\n\nexport class ReactMain {\n constructor(\n /**\n * an instance of the React env.\n */\n readonly reactEnv: ReactEnv,\n\n private envs: EnvsMain,\n\n private application: ApplicationMain,\n\n private workspace: Workspace\n ) {}\n\n readonly env = this.reactEnv;\n\n /**\n * override the env's typescript config for both dev and build time.\n * Replaces both overrideTsConfig (devConfig) and overrideBuildTsConfig (buildConfig)\n */\n useTypescript(modifiers?: UseTypescriptModifiers, tsModule: any = ts) {\n const overrides: any = {};\n const devTransformers = modifiers?.devConfig;\n if (devTransformers) {\n overrides.getCompiler = () => this.reactEnv.getCompiler(devTransformers, tsModule);\n }\n const buildTransformers = modifiers?.buildConfig;\n if (buildTransformers) {\n const buildPipeModifiers = {\n tsModifier: {\n transformers: buildTransformers,\n module: tsModule,\n },\n };\n overrides.getBuildPipe = () => this.reactEnv.getBuildPipe(buildPipeModifiers);\n }\n return this.envs.override(overrides);\n }\n\n /**\n * @deprecated use useTypescript()\n * override the TS config of the React environment.\n * @param tsModule typeof `ts` module instance.\n */\n overrideTsConfig(\n tsconfig: Record<string, any> = {},\n compilerOptions: Partial<TsCompilerOptionsWithoutTsConfig> = {},\n tsModule: any = ts\n ) {\n const transformer: TsConfigTransformer = (configMutator) => {\n configMutator.mergeTsConfig(tsconfig);\n configMutator.raw.compileJs = compilerOptions.compileJs ?? configMutator.raw.compileJs;\n configMutator.raw.compileJsx = compilerOptions.compileJsx ?? configMutator.raw.compileJsx;\n if (compilerOptions.types) {\n configMutator.addTypes(compilerOptions.types);\n }\n const genericCompilerOptions = omit(compilerOptions, ['types', 'compileJs', 'compileJsx']);\n configMutator.raw = Object.assign(configMutator.raw, genericCompilerOptions);\n return configMutator;\n };\n // return this.envs.override({\n // getCompiler: () => this.reactEnv.getCompiler([transformer], tsModule),\n // });\n return this.useTypescript({ devConfig: [transformer] }, tsModule);\n }\n\n /**\n * Override the Bit documentation link. See docs: https://bit.dev/docs/docs/doc-templates\n */\n overrideDocsTemplate(templatePath: string) {\n return this.envs.override({\n getDocsTemplate: () => templatePath,\n });\n }\n\n /**\n * @deprecated use useTypescript()\n * override the build tsconfig.\n */\n overrideBuildTsConfig(\n tsconfig: Record<string, any> = {},\n compilerOptions: Partial<TsCompilerOptionsWithoutTsConfig> = {},\n tsModule: any = ts\n ) {\n const transformer: TsConfigTransformer = (configMutator) => {\n configMutator.mergeTsConfig(tsconfig);\n configMutator.raw.compileJs = compilerOptions.compileJs ?? configMutator.raw.compileJs;\n configMutator.raw.compileJsx = compilerOptions.compileJsx ?? configMutator.raw.compileJsx;\n if (compilerOptions.types) {\n configMutator.addTypes(compilerOptions.types);\n }\n const genericCompilerOptions = omit(compilerOptions, ['types', 'compileJs', 'compileJsx']);\n configMutator.raw = Object.assign(configMutator.raw, genericCompilerOptions);\n return configMutator;\n };\n // return this.envs.override({\n // getBuildPipe: () => this.reactEnv.getBuildPipe([transformer], tsModule),\n // });\n return this.useTypescript({ buildConfig: [transformer] }, tsModule);\n }\n\n /**\n * register a new React application.\n */\n registerReactApp(options: ReactAppOptions) {\n this.application.registerApp(\n new ReactApp(options.name, options.entry, options.portRange || [3000, 4000], this.reactEnv, options.deploy)\n );\n\n return this;\n }\n\n /**\n * override the env's dev server and preview webpack configurations.\n * Replaces both overrideDevServerConfig and overridePreviewConfig\n */\n useWebpack(modifiers?: UseWebpackModifiers): EnvTransformer {\n const overrides: any = {};\n const devServerTransformers = modifiers?.devServerConfig;\n if (devServerTransformers) {\n overrides.getDevServer = (context: DevServerContext) =>\n this.reactEnv.getDevServer(context, devServerTransformers);\n overrides.getDevEnvId = (context: DevServerContext) => this.reactEnv.getDevEnvId(context.envDefinition.id);\n }\n const previewTransformers = modifiers?.previewConfig;\n if (previewTransformers) {\n overrides.getBundler = (context: BundlerContext) => this.reactEnv.getBundler(context, previewTransformers);\n }\n return this.envs.override(overrides);\n }\n\n /**\n * An API to mutate the prettier config\n * @param modifiers\n * @returns\n */\n useEslint(modifiers?: UseEslintModifiers): EnvTransformer {\n const transformers = modifiers?.transformers || [];\n return this.envs.override({\n getLinter: (context: LinterContext) => this.reactEnv.getLinter(context, transformers),\n });\n }\n\n /**\n * An API to mutate the prettier config\n * @param modifiers\n * @returns\n */\n usePrettier(modifiers?: UsePrettierModifiers): EnvTransformer {\n const transformers = modifiers?.transformers || [];\n return this.envs.override({\n getFormatter: (context: FormatterContext) => this.reactEnv.getFormatter(context, transformers),\n });\n }\n\n /**\n * @deprecated use useWebpack()\n * override the dev server webpack config.\n */\n overrideDevServerConfig(config: Configuration) {\n const transformer: WebpackConfigTransformer = (configMutator) => {\n return configMutator.merge([config]);\n };\n\n return this.envs.override({\n getDevServer: (context: DevServerContext) => this.reactEnv.getDevServer(context, [transformer]),\n getDevEnvId: (context: DevServerContext) => this.reactEnv.getDevEnvId(context.envDefinition.id),\n });\n }\n\n /**\n * @deprecated use useWebpack()\n * override the preview webpack config.\n */\n overridePreviewConfig(config: Configuration) {\n const transformer: WebpackConfigTransformer = (configMutator) => {\n return configMutator.merge([config]);\n };\n return this.envs.override({\n getBundler: (context: BundlerContext) => this.reactEnv.getBundler(context, [transformer]),\n });\n }\n\n overrideMounter(mounterPath: string) {\n return this.envs.override({\n getMounter: () => {\n return mounterPath;\n },\n });\n }\n\n /**\n * create a new composition of the react environment.\n */\n compose(transformers: EnvTransformer[], targetEnv: Environment = {}) {\n return this.envs.compose(this.envs.merge(targetEnv, this.reactEnv), transformers);\n }\n\n /**\n * override the jest configuration.\n * @param jestConfigPath {typeof jest} absolute path to jest.config.json.\n * @param jestModulePath absolute path to jest\n */\n overrideJestConfig(jestConfigPath: string, jestModulePath?: string) {\n return this.envs.override({\n getTester: () => this.reactEnv.getTester(jestConfigPath, jestModulePath),\n });\n }\n\n /**\n * override the build pipeline of the component environment.\n */\n overrideBuildPipe(tasks: BuildTask[]) {\n return this.envs.override({\n getBuildPipe: () => tasks,\n });\n }\n\n /**\n * override the compiler tasks inside the build pipeline of the component environment.\n */\n overrideCompilerTasks(tasks: BuildTask[]) {\n const pipeWithoutCompiler = this.reactEnv.getBuildPipe().filter((task) => task.aspectId !== CompilerAspect.id);\n\n return this.envs.override({\n getBuildPipe: () => [...tasks, ...pipeWithoutCompiler],\n });\n }\n\n /**\n * override the dependency configuration of the component environment.\n */\n overrideDependencies(dependencyPolicy: VariantPolicyConfigObject) {\n return this.envs.override({\n getDependencies: async () => {\n const reactDeps = await this.reactEnv.getDependencies();\n return mergeDeepLeft(dependencyPolicy, reactDeps);\n },\n });\n }\n\n /**\n * override the workspace compiler.\n */\n overrideCompiler(compiler: Compiler) {\n return this.envs.override({\n getCompiler: () => {\n return compiler;\n },\n });\n }\n\n /**\n * TODO: @gilad we need to implement this.\n */\n overrideEslintConfig() {}\n\n /**\n * override the package json props of the component environment.\n */\n overridePackageJsonProps(props: PackageJsonProps) {\n return this.envs.override({\n getPackageJsonProps: () => {\n return {\n ...props,\n ...this.reactEnv.getPackageJsonProps(),\n };\n },\n });\n }\n\n /**\n * returns doc adjusted specifically for react components.\n */\n getDocs(component: Component) {\n const docsArray = component.state._consumer.docs;\n if (!docsArray || !docsArray[0]) {\n return null;\n }\n\n const docs = docsArray[0];\n\n return {\n abstract: docs.description,\n filePath: docs.filePath,\n properties: docs.properties,\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n JestAspect,\n TypescriptAspect,\n CompilerAspect,\n WebpackAspect,\n WorkspaceAspect,\n GraphqlAspect,\n PkgAspect,\n TesterAspect,\n ESLintAspect,\n PrettierAspect,\n ApplicationAspect,\n GeneratorAspect,\n ];\n\n static async provider(\n [\n envs,\n jestAspect,\n tsAspect,\n compiler,\n webpack,\n workspace,\n graphql,\n pkg,\n tester,\n eslint,\n prettier,\n application,\n generator,\n ]: ReactDeps,\n config: ReactMainConfig\n ) {\n const reactEnv = new ReactEnv(\n jestAspect,\n tsAspect,\n compiler,\n webpack,\n workspace,\n pkg,\n tester,\n config,\n eslint,\n prettier\n );\n const react = new ReactMain(reactEnv, envs, application, workspace);\n graphql.register(reactSchema(react));\n envs.registerEnv(reactEnv);\n generator.registerComponentTemplate(componentTemplates);\n generator.registerWorkspaceTemplate(workspaceTemplates);\n application.registerAppType(new ReactAppType('react-app', reactEnv));\n return react;\n }\n}\n\nReactAspect.addRuntime(ReactMain);\n"]}
1
+ {"version":3,"sources":["react.main.runtime.ts"],"names":["ReactMain","constructor","reactEnv","envs","application","workspace","useTypescript","modifiers","tsModule","ts","overrides","devTransformers","devConfig","getCompiler","buildTransformers","buildConfig","buildPipeModifiers","tsModifier","transformers","module","getBuildPipe","override","overrideTsConfig","tsconfig","compilerOptions","transformer","configMutator","mergeTsConfig","raw","compileJs","compileJsx","types","addTypes","genericCompilerOptions","Object","assign","overrideDocsTemplate","templatePath","getDocsTemplate","overrideBuildTsConfig","useWebpack","devServerTransformers","devServerConfig","getDevServer","context","getDevEnvId","envDefinition","id","previewTransformers","previewConfig","getBundler","useEslint","getLinter","usePrettier","getFormatter","overrideDevServerConfig","config","merge","overridePreviewConfig","overrideMounter","mounterPath","getMounter","compose","targetEnv","overrideJestConfig","jestConfigPath","jestModulePath","getTester","overrideBuildPipe","tasks","overrideCompilerTasks","pipeWithoutCompiler","filter","task","aspectId","CompilerAspect","overrideDependencies","dependencyPolicy","getDependencies","reactDeps","overrideCompiler","compiler","overrideEslintConfig","overridePackageJsonProps","props","getPackageJsonProps","getDocs","component","docsArray","state","_consumer","docs","abstract","description","filePath","properties","provider","jestAspect","tsAspect","webpack","graphql","pkg","tester","eslint","prettier","generator","ReactEnv","react","register","registerEnv","registerComponentTemplate","componentTemplates","registerWorkspaceTemplate","workspaceTemplates","registerAppType","ReactAppType","MainRuntime","EnvsAspect","JestAspect","TypescriptAspect","WebpackAspect","WorkspaceAspect","GraphqlAspect","PkgAspect","TesterAspect","ESLintAspect","PrettierAspect","ApplicationAspect","GeneratorAspect","ReactAspect","addRuntime"],"mappings":"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","sourcesContent":["import mergeDeepLeft from 'ramda/src/mergeDeepLeft';\nimport { omit } from 'lodash';\nimport { MainRuntime } from '@teambit/cli';\nimport type { CompilerMain } from '@teambit/compiler';\nimport { CompilerAspect, Compiler } from '@teambit/compiler';\nimport { BuildTask } from '@teambit/builder';\nimport { Component } from '@teambit/component';\nimport { EnvsAspect, EnvsMain, EnvTransformer, Environment } from '@teambit/envs';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { JestMain } from '@teambit/jest';\nimport { JestAspect } from '@teambit/jest';\nimport type { PkgMain, PackageJsonProps } from '@teambit/pkg';\nimport { PkgAspect } from '@teambit/pkg';\nimport type { TesterMain } from '@teambit/tester';\nimport { TesterAspect } from '@teambit/tester';\nimport type { TypescriptMain, TsCompilerOptionsWithoutTsConfig, TsConfigTransformer } from '@teambit/typescript';\nimport { TypescriptAspect } from '@teambit/typescript';\nimport type { WebpackMain, Configuration, WebpackConfigTransformer } from '@teambit/webpack';\nimport { WebpackAspect } from '@teambit/webpack';\nimport { GeneratorAspect, GeneratorMain } from '@teambit/generator';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { DevServerContext, BundlerContext } from '@teambit/bundler';\nimport { VariantPolicyConfigObject } from '@teambit/dependency-resolver';\nimport ts from 'typescript';\nimport { ApplicationAspect, ApplicationMain } from '@teambit/application';\nimport { FormatterContext } from '@teambit/formatter';\nimport { LinterContext } from '@teambit/linter';\nimport { ESLintMain, ESLintAspect, EslintConfigTransformer } from '@teambit/eslint';\nimport { PrettierMain, PrettierAspect, PrettierConfigTransformer } from '@teambit/prettier';\nimport { ReactAspect } from './react.aspect';\nimport { ReactEnv } from './react.env';\nimport { ReactAppType } from './apps/web/react.app-type';\nimport { reactSchema } from './react.graphql';\nimport { componentTemplates, workspaceTemplates } from './react.templates';\n\ntype ReactDeps = [\n EnvsMain,\n JestMain,\n TypescriptMain,\n CompilerMain,\n WebpackMain,\n Workspace,\n GraphqlMain,\n PkgMain,\n TesterMain,\n ESLintMain,\n PrettierMain,\n ApplicationMain,\n GeneratorMain\n];\n\nexport type ReactMainConfig = {\n /**\n * configure the react env compiler.\n * can be configured to either TypeScript ('ts') or Babel ('babel').\n */\n compiler: 'babel' | 'ts';\n\n /**\n * configure the component tester.\n * can be either Jest ('jest') or Mocha ('mocha')\n */\n tester: 'jest' | 'mocha';\n\n /**\n * version of React to configure.\n */\n reactVersion: string;\n};\n\nexport type UseWebpackModifiers = {\n previewConfig?: WebpackConfigTransformer[];\n devServerConfig?: WebpackConfigTransformer[];\n};\n\nexport type UseTypescriptModifiers = {\n buildConfig?: TsConfigTransformer[];\n devConfig?: TsConfigTransformer[];\n};\n\nexport type UseEslintModifiers = {\n transformers: EslintConfigTransformer[];\n};\nexport type UsePrettierModifiers = {\n transformers: PrettierConfigTransformer[];\n};\n\nexport class ReactMain {\n constructor(\n /**\n * an instance of the React env.\n */\n readonly reactEnv: ReactEnv,\n\n private envs: EnvsMain,\n\n private application: ApplicationMain,\n\n private workspace: Workspace\n ) {}\n\n readonly env = this.reactEnv;\n\n /**\n * override the env's typescript config for both dev and build time.\n * Replaces both overrideTsConfig (devConfig) and overrideBuildTsConfig (buildConfig)\n */\n useTypescript(modifiers?: UseTypescriptModifiers, tsModule: any = ts) {\n const overrides: any = {};\n const devTransformers = modifiers?.devConfig;\n if (devTransformers) {\n overrides.getCompiler = () => this.reactEnv.getCompiler(devTransformers, tsModule);\n }\n const buildTransformers = modifiers?.buildConfig;\n if (buildTransformers) {\n const buildPipeModifiers = {\n tsModifier: {\n transformers: buildTransformers,\n module: tsModule,\n },\n };\n overrides.getBuildPipe = () => this.reactEnv.getBuildPipe(buildPipeModifiers);\n }\n return this.envs.override(overrides);\n }\n\n /**\n * @deprecated use useTypescript()\n * override the TS config of the React environment.\n * @param tsModule typeof `ts` module instance.\n */\n overrideTsConfig(\n tsconfig: Record<string, any> = {},\n compilerOptions: Partial<TsCompilerOptionsWithoutTsConfig> = {},\n tsModule: any = ts\n ) {\n const transformer: TsConfigTransformer = (configMutator) => {\n configMutator.mergeTsConfig(tsconfig);\n configMutator.raw.compileJs = compilerOptions.compileJs ?? configMutator.raw.compileJs;\n configMutator.raw.compileJsx = compilerOptions.compileJsx ?? configMutator.raw.compileJsx;\n if (compilerOptions.types) {\n configMutator.addTypes(compilerOptions.types);\n }\n const genericCompilerOptions = omit(compilerOptions, ['types', 'compileJs', 'compileJsx']);\n configMutator.raw = Object.assign(configMutator.raw, genericCompilerOptions);\n return configMutator;\n };\n // return this.envs.override({\n // getCompiler: () => this.reactEnv.getCompiler([transformer], tsModule),\n // });\n return this.useTypescript({ devConfig: [transformer] }, tsModule);\n }\n\n /**\n * Override the Bit documentation link. See docs: https://bit.dev/docs/docs/doc-templates\n */\n overrideDocsTemplate(templatePath: string) {\n return this.envs.override({\n getDocsTemplate: () => templatePath,\n });\n }\n\n /**\n * @deprecated use useTypescript()\n * override the build tsconfig.\n */\n overrideBuildTsConfig(\n tsconfig: Record<string, any> = {},\n compilerOptions: Partial<TsCompilerOptionsWithoutTsConfig> = {},\n tsModule: any = ts\n ) {\n const transformer: TsConfigTransformer = (configMutator) => {\n configMutator.mergeTsConfig(tsconfig);\n configMutator.raw.compileJs = compilerOptions.compileJs ?? configMutator.raw.compileJs;\n configMutator.raw.compileJsx = compilerOptions.compileJsx ?? configMutator.raw.compileJsx;\n if (compilerOptions.types) {\n configMutator.addTypes(compilerOptions.types);\n }\n const genericCompilerOptions = omit(compilerOptions, ['types', 'compileJs', 'compileJsx']);\n configMutator.raw = Object.assign(configMutator.raw, genericCompilerOptions);\n return configMutator;\n };\n // return this.envs.override({\n // getBuildPipe: () => this.reactEnv.getBuildPipe([transformer], tsModule),\n // });\n return this.useTypescript({ buildConfig: [transformer] }, tsModule);\n }\n\n /**\n * override the env's dev server and preview webpack configurations.\n * Replaces both overrideDevServerConfig and overridePreviewConfig\n */\n useWebpack(modifiers?: UseWebpackModifiers): EnvTransformer {\n const overrides: any = {};\n const devServerTransformers = modifiers?.devServerConfig;\n if (devServerTransformers) {\n overrides.getDevServer = (context: DevServerContext) =>\n this.reactEnv.getDevServer(context, devServerTransformers);\n overrides.getDevEnvId = (context: DevServerContext) => this.reactEnv.getDevEnvId(context.envDefinition.id);\n }\n const previewTransformers = modifiers?.previewConfig;\n if (previewTransformers) {\n overrides.getBundler = (context: BundlerContext) => this.reactEnv.getBundler(context, previewTransformers);\n }\n return this.envs.override(overrides);\n }\n\n /**\n * An API to mutate the prettier config\n * @param modifiers\n * @returns\n */\n useEslint(modifiers?: UseEslintModifiers): EnvTransformer {\n const transformers = modifiers?.transformers || [];\n return this.envs.override({\n getLinter: (context: LinterContext) => this.reactEnv.getLinter(context, transformers),\n });\n }\n\n /**\n * An API to mutate the prettier config\n * @param modifiers\n * @returns\n */\n usePrettier(modifiers?: UsePrettierModifiers): EnvTransformer {\n const transformers = modifiers?.transformers || [];\n return this.envs.override({\n getFormatter: (context: FormatterContext) => this.reactEnv.getFormatter(context, transformers),\n });\n }\n\n /**\n * @deprecated use useWebpack()\n * override the dev server webpack config.\n */\n overrideDevServerConfig(config: Configuration) {\n const transformer: WebpackConfigTransformer = (configMutator) => {\n return configMutator.merge([config]);\n };\n\n return this.envs.override({\n getDevServer: (context: DevServerContext) => this.reactEnv.getDevServer(context, [transformer]),\n getDevEnvId: (context: DevServerContext) => this.reactEnv.getDevEnvId(context.envDefinition.id),\n });\n }\n\n /**\n * @deprecated use useWebpack()\n * override the preview webpack config.\n */\n overridePreviewConfig(config: Configuration) {\n const transformer: WebpackConfigTransformer = (configMutator) => {\n return configMutator.merge([config]);\n };\n return this.envs.override({\n getBundler: (context: BundlerContext) => this.reactEnv.getBundler(context, [transformer]),\n });\n }\n\n overrideMounter(mounterPath: string) {\n return this.envs.override({\n getMounter: () => {\n return mounterPath;\n },\n });\n }\n\n /**\n * create a new composition of the react environment.\n */\n compose(transformers: EnvTransformer[], targetEnv: Environment = {}) {\n return this.envs.compose(this.envs.merge(targetEnv, this.reactEnv), transformers);\n }\n\n /**\n * override the jest configuration.\n * @param jestConfigPath {typeof jest} absolute path to jest.config.json.\n * @param jestModulePath absolute path to jest\n */\n overrideJestConfig(jestConfigPath: string, jestModulePath?: string) {\n return this.envs.override({\n getTester: () => this.reactEnv.getTester(jestConfigPath, jestModulePath),\n });\n }\n\n /**\n * override the build pipeline of the component environment.\n */\n overrideBuildPipe(tasks: BuildTask[]) {\n return this.envs.override({\n getBuildPipe: () => tasks,\n });\n }\n\n /**\n * override the compiler tasks inside the build pipeline of the component environment.\n */\n overrideCompilerTasks(tasks: BuildTask[]) {\n const pipeWithoutCompiler = this.reactEnv.getBuildPipe().filter((task) => task.aspectId !== CompilerAspect.id);\n\n return this.envs.override({\n getBuildPipe: () => [...tasks, ...pipeWithoutCompiler],\n });\n }\n\n /**\n * override the dependency configuration of the component environment.\n */\n overrideDependencies(dependencyPolicy: VariantPolicyConfigObject) {\n return this.envs.override({\n getDependencies: async () => {\n const reactDeps = await this.reactEnv.getDependencies();\n return mergeDeepLeft(dependencyPolicy, reactDeps);\n },\n });\n }\n\n /**\n * override the workspace compiler.\n */\n overrideCompiler(compiler: Compiler) {\n return this.envs.override({\n getCompiler: () => {\n return compiler;\n },\n });\n }\n\n /**\n * TODO: @gilad we need to implement this.\n */\n overrideEslintConfig() {}\n\n /**\n * override the package json props of the component environment.\n */\n overridePackageJsonProps(props: PackageJsonProps) {\n return this.envs.override({\n getPackageJsonProps: () => {\n return {\n ...props,\n ...this.reactEnv.getPackageJsonProps(),\n };\n },\n });\n }\n\n /**\n * returns doc adjusted specifically for react components.\n */\n getDocs(component: Component) {\n const docsArray = component.state._consumer.docs;\n if (!docsArray || !docsArray[0]) {\n return null;\n }\n\n const docs = docsArray[0];\n\n return {\n abstract: docs.description,\n filePath: docs.filePath,\n properties: docs.properties,\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n JestAspect,\n TypescriptAspect,\n CompilerAspect,\n WebpackAspect,\n WorkspaceAspect,\n GraphqlAspect,\n PkgAspect,\n TesterAspect,\n ESLintAspect,\n PrettierAspect,\n ApplicationAspect,\n GeneratorAspect,\n ];\n\n static async provider(\n [\n envs,\n jestAspect,\n tsAspect,\n compiler,\n webpack,\n workspace,\n graphql,\n pkg,\n tester,\n eslint,\n prettier,\n application,\n generator,\n ]: ReactDeps,\n config: ReactMainConfig\n ) {\n const reactEnv = new ReactEnv(\n jestAspect,\n tsAspect,\n compiler,\n webpack,\n workspace,\n pkg,\n tester,\n config,\n eslint,\n prettier\n );\n const react = new ReactMain(reactEnv, envs, application, workspace);\n graphql.register(reactSchema(react));\n envs.registerEnv(reactEnv);\n generator.registerComponentTemplate(componentTemplates);\n generator.registerWorkspaceTemplate(workspaceTemplates);\n application.registerAppType(new ReactAppType('react-app', reactEnv));\n return react;\n }\n}\n\nReactAspect.addRuntime(ReactMain);\n"]}
package/package.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "name": "@teambit/react",
3
- "version": "0.0.598",
3
+ "version": "0.0.599",
4
4
  "homepage": "https://bit.dev/teambit/react/react",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.react",
8
8
  "name": "react",
9
- "version": "0.0.598"
9
+ "version": "0.0.599"
10
10
  },
11
11
  "dependencies": {
12
12
  "react-error-boundary": "^3.0.0",
13
- "@dreysolano/prerender-spa-plugin": "1.0.3",
14
13
  "@teambit/harmony": "0.2.11",
15
14
  "fs-extra": "10.0.0",
16
15
  "lodash": "4.17.21",
@@ -43,6 +42,7 @@
43
42
  "react-dev-utils": "11.0.4",
44
43
  "style-loader": "^2.0.0",
45
44
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.1",
45
+ "@dreysolano/prerender-spa-plugin": "1.0.3",
46
46
  "comment-json": "3.0.3",
47
47
  "react-refresh": "0.10.0",
48
48
  "@babel/runtime": "^7.12.18",
@@ -79,47 +79,47 @@
79
79
  "@teambit/react.instructions.react.adding-compositions": "0.0.6",
80
80
  "@teambit/react.instructions.react.adding-tests": "0.0.6",
81
81
  "@teambit/design.ui.pages.standalone-not-found-page": "0.0.355",
82
- "@teambit/preview": "0.0.598",
82
+ "@teambit/preview": "0.0.599",
83
83
  "@teambit/react.ui.error-fallback": "0.0.109",
84
84
  "@teambit/react.ui.loader-fallback": "0.0.88",
85
85
  "@teambit/compositions.ui.hooks.use-composition": "0.0.162",
86
86
  "@teambit/design.ui.input.option-button": "0.0.26",
87
87
  "@teambit/design.ui.tooltip": "0.0.352",
88
- "@teambit/application": "0.0.240",
89
- "@teambit/bundler": "0.0.598",
90
- "@teambit/isolator": "0.0.598",
91
- "@teambit/builder": "0.0.598",
92
- "@teambit/toolbox.network.get-port": "0.0.112",
93
- "@teambit/compiler": "0.0.598",
88
+ "@teambit/builder": "0.0.599",
89
+ "@teambit/bundler": "0.0.599",
90
+ "@teambit/compiler": "0.0.599",
94
91
  "@teambit/component.modules.component-url": "0.0.119",
95
- "@teambit/component": "0.0.598",
96
- "@teambit/envs": "0.0.598",
97
- "@teambit/eslint": "0.0.598",
98
- "@teambit/formatter": "0.0.149",
99
- "@teambit/jest": "0.0.598",
100
- "@teambit/linter": "0.0.598",
101
- "@teambit/pkg": "0.0.598",
102
- "@teambit/prettier": "0.0.149",
92
+ "@teambit/component": "0.0.599",
93
+ "@teambit/envs": "0.0.599",
94
+ "@teambit/eslint": "0.0.599",
95
+ "@teambit/formatter": "0.0.150",
96
+ "@teambit/jest": "0.0.599",
97
+ "@teambit/linter": "0.0.599",
98
+ "@teambit/pkg": "0.0.599",
99
+ "@teambit/prettier": "0.0.150",
103
100
  "@teambit/react.ui.highlighter.component-metadata.bit-component-meta": "0.0.20",
104
- "@teambit/schema": "0.0.598",
105
- "@teambit/tester": "0.0.598",
106
- "@teambit/typescript": "0.0.598",
107
- "@teambit/webpack": "0.0.598",
108
- "@teambit/workspace": "0.0.598",
109
- "@teambit/cli": "0.0.410",
110
- "@teambit/dependency-resolver": "0.0.598",
111
- "@teambit/generator": "0.0.598",
112
- "@teambit/graphql": "0.0.598",
101
+ "@teambit/schema": "0.0.599",
102
+ "@teambit/tester": "0.0.599",
103
+ "@teambit/typescript": "0.0.599",
104
+ "@teambit/webpack": "0.0.599",
105
+ "@teambit/workspace": "0.0.599",
106
+ "@teambit/application": "0.0.241",
107
+ "@teambit/cli": "0.0.411",
108
+ "@teambit/dependency-resolver": "0.0.599",
109
+ "@teambit/generator": "0.0.599",
110
+ "@teambit/graphql": "0.0.599",
113
111
  "@teambit/react.ui.highlighter-provider": "0.0.178",
114
- "@teambit/compositions": "0.0.598",
115
- "@teambit/ui": "0.0.598",
116
- "@teambit/react.eslint-config-bit-react": "0.0.489",
112
+ "@teambit/compositions": "0.0.599",
113
+ "@teambit/ui": "0.0.599",
114
+ "@teambit/react.eslint-config-bit-react": "0.0.490",
117
115
  "@teambit/mdx.modules.mdx-loader": "0.0.488",
118
116
  "@teambit/react.babel.bit-react-transformer": "0.0.494",
119
117
  "@teambit/webpack.modules.generate-style-loaders": "0.0.102",
120
118
  "@teambit/webpack.modules.style-regexps": "0.0.131",
121
119
  "@teambit/component-id": "0.0.398",
122
- "@teambit/config": "0.0.422"
120
+ "@teambit/isolator": "0.0.599",
121
+ "@teambit/toolbox.network.get-port": "0.0.112",
122
+ "@teambit/config": "0.0.423"
123
123
  },
124
124
  "devDependencies": {
125
125
  "@types/react": "^17.0.8",
@@ -137,7 +137,7 @@
137
137
  "@teambit/react.aspect-docs.react": "0.0.131"
138
138
  },
139
139
  "peerDependencies": {
140
- "@teambit/legacy": "1.0.197",
140
+ "@teambit/legacy": "1.0.198",
141
141
  "react-dom": "^16.8.0 || ^17.0.0",
142
142
  "react": "^16.8.0 || ^17.0.0"
143
143
  },
@@ -199,7 +199,7 @@
199
199
  "@types/jest": "^26.0.0"
200
200
  },
201
201
  "peerDependencies": {
202
- "@teambit/legacy": "1.0.197",
202
+ "@teambit/legacy": "1.0.198",
203
203
  "react-dom": "^16.8.0 || ^17.0.0",
204
204
  "react": "^16.8.0 || ^17.0.0"
205
205
  }
@@ -1,3 +0,0 @@
1
- "use strict";
2
-
3
- //# sourceMappingURL=react-app-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["react.app-type.ts"],"names":["ReactAppType","constructor","name","reactEnv","createApp","options","ReactApp","entry","portRange","deploy","prerenderRoutes"],"mappings":";;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,YAAN,CAA+D;AACpEC,EAAAA,WAAW,CAAUC,IAAV,EAAgCC,QAAhC,EAAoD;AAAA,SAA1CD,IAA0C,GAA1CA,IAA0C;AAAA,SAApBC,QAAoB,GAApBA,QAAoB;AAAE;;AAEjEC,EAAAA,SAAS,CAACC,OAAD,EAA2B;AAClC,WAAO,KAAIC,iBAAJ,EACLD,OAAO,CAACH,IADH,EAELG,OAAO,CAACE,KAFH,EAGLF,OAAO,CAACG,SAAR,IAAqB,CAAC,IAAD,EAAO,IAAP,CAHhB,EAIL,KAAKL,QAJA,EAKLE,OAAO,CAACI,MALH,EAMLJ,OAAO,CAACK,eANH,CAAP;AAQD;;AAZmE","sourcesContent":["import { ApplicationType } from '@teambit/application';\nimport { ReactEnv } from './react.env';\nimport { ReactAppOptions } from './react-app-options';\nimport { ReactApp } from './react.application';\n\nexport class ReactAppType implements ApplicationType<ReactAppOptions> {\n constructor(readonly name: string, private reactEnv: ReactEnv) {}\n\n createApp(options: ReactAppOptions) {\n return new ReactApp(\n options.name,\n options.entry,\n options.portRange || [3000, 4000],\n this.reactEnv,\n options.deploy,\n options.prerenderRoutes\n );\n }\n}\n"]}
@@ -1,18 +0,0 @@
1
- import { Capsule } from '@teambit/isolator';
2
- import { Application, AppContext, DeployContext } from '@teambit/application';
3
- import { BuildContext } from '@teambit/builder';
4
- import { ReactEnv } from './react.env';
5
- import { ReactAppDeployContext } from './react-app-options';
6
- export declare class ReactApp implements Application {
7
- readonly name: string;
8
- readonly entry: string[];
9
- readonly portRange: number[];
10
- private reactEnv;
11
- readonly deploy?: ((context: ReactAppDeployContext, capsule: Capsule) => Promise<void>) | undefined;
12
- readonly prerenderRoutes?: string[] | undefined;
13
- constructor(name: string, entry: string[], portRange: number[], reactEnv: ReactEnv, deploy?: ((context: ReactAppDeployContext, capsule: Capsule) => Promise<void>) | undefined, prerenderRoutes?: string[] | undefined);
14
- applicationType: string;
15
- run(context: AppContext): Promise<number>;
16
- build(context: BuildContext, aspectId: string, appCapsule: Capsule): Promise<DeployContext>;
17
- private getDevServerContext;
18
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["react.application.ts"],"names":["ReactApp","constructor","name","entry","portRange","reactEnv","deploy","prerenderRoutes","run","context","devServerContext","getDevServerContext","devServer","getDevServer","configMutator","addTopLevel","historyApiFallback","index","disableDotRule","raw","output","publicPath","from","to","port","Port","getPort","listen","build","aspectId","appCapsule","env","publicDir","outputPath","path","distDir","getCompiler","entries","map","require","resolve","bundlerContext","Object","assign","targets","components","component","rootPath","bundler","getBundler","addPlugin","PrerenderSPAPlugin","staticDir","routes","postProcess","renderedRoute","originalRoute","deployContext","applicationType","title"],"mappings":"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","sourcesContent":["import PrerenderSPAPlugin from '@dreysolano/prerender-spa-plugin';\nimport { join, basename } from 'path';\nimport { Capsule } from '@teambit/isolator';\nimport { Application, AppContext, DeployContext } from '@teambit/application';\nimport { BuildContext } from '@teambit/builder';\nimport { Bundler, BundlerContext, DevServerContext } from '@teambit/bundler';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport { ReactEnv } from './react.env';\nimport { ReactAppDeployContext } from './react-app-options';\n\nexport class ReactApp implements Application {\n constructor(\n readonly name: string,\n readonly entry: string[],\n readonly portRange: number[],\n private reactEnv: ReactEnv,\n readonly deploy?: (context: ReactAppDeployContext, capsule: Capsule) => Promise<void>,\n readonly prerenderRoutes?: string[]\n ) {}\n\n applicationType = 'react';\n\n async run(context: AppContext): Promise<number> {\n const devServerContext = this.getDevServerContext(context);\n const devServer = this.reactEnv.getDevServer(devServerContext, [\n (configMutator) => {\n configMutator.addTopLevel('devServer', {\n historyApiFallback: {\n index: '/index.html',\n disableDotRule: true,\n },\n });\n\n if (!configMutator.raw.output) configMutator.raw.output = {};\n configMutator.raw.output.publicPath = '/';\n\n return configMutator;\n },\n ]);\n const [from, to] = this.portRange;\n const port = await Port.getPort(from, to);\n await devServer.listen(port);\n return port;\n }\n\n async build(context: BuildContext, aspectId: string, appCapsule: Capsule): Promise<DeployContext> {\n const reactEnv: ReactEnv = context.env;\n const publicDir = join('applications', this.name, 'build');\n const outputPath = join(appCapsule.path, publicDir);\n const { distDir } = reactEnv.getCompiler();\n const entries = this.entry.map((entry) => require.resolve(`${appCapsule.path}/${distDir}/${basename(entry)}`));\n const bundlerContext: BundlerContext = Object.assign(context, {\n targets: [\n {\n components: [appCapsule?.component],\n entries,\n outputPath,\n },\n ],\n entry: [],\n rootPath: '/',\n });\n const bundler: Bundler = await reactEnv.getBundler(bundlerContext, [\n (configMutator) => {\n configMutator.addTopLevel('output', { path: join(outputPath, 'public'), publicPath: `/` });\n configMutator.addPlugin(\n new PrerenderSPAPlugin({\n staticDir: join(outputPath, 'public'),\n routes: this.prerenderRoutes,\n postProcess(renderedRoute) {\n renderedRoute.outputPath = join(outputPath, 'public', `${renderedRoute.originalRoute}.html`);\n return renderedRoute;\n },\n })\n );\n return configMutator;\n },\n ]);\n await bundler.run();\n const deployContext = Object.assign(context, {\n applicationType: this.applicationType,\n aspectId,\n publicDir: join(appCapsule.path, publicDir, 'public'),\n });\n return deployContext;\n }\n\n private getDevServerContext(context: AppContext): DevServerContext {\n return Object.assign(context, {\n entry: this.entry,\n rootPath: '',\n publicPath: `public/${this.name}`,\n title: this.name,\n });\n }\n}\n"]}