@teambit/react 0.0.621 → 0.0.629

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 (90) hide show
  1. package/__compositions-1642994756471.js +7 -0
  2. package/__overview-1642994756471.js +7 -0
  3. package/__preview-1642994756471.js +2 -0
  4. package/apps/web/deploy-context.ts +4 -0
  5. package/apps/web/index.ts +3 -0
  6. package/apps/web/react-app-options.ts +3 -3
  7. package/apps/web/react-build-result.ts +9 -0
  8. package/apps/web/react.application.ts +32 -34
  9. package/artifacts/env-template/public/141.js +1 -0
  10. package/artifacts/env-template/public/181.js +1 -0
  11. package/artifacts/env-template/public/283.js +1 -0
  12. package/artifacts/env-template/public/664.js +128 -0
  13. package/artifacts/env-template/public/743.js +1 -0
  14. package/artifacts/env-template/public/848.js +1 -0
  15. package/artifacts/env-template/public/assets-manifest.json +74 -0
  16. package/artifacts/env-template/public/compositions.68fc39172cbc486d5064.js +1 -0
  17. package/artifacts/env-template/public/compositions.html +2 -0
  18. package/artifacts/env-template/public/overview.8ab165bb03610b2e8c5b.js +1 -0
  19. package/artifacts/env-template/public/overview.html +2 -0
  20. package/artifacts/env-template/public/peers.23d97726152f744ec115.js +1 -0
  21. package/artifacts/env-template/public/preview-root.b33a2fef3cb8fc3d6479.js +1 -0
  22. package/artifacts/env-template/public/runtime.js +1 -0
  23. package/artifacts/env-template/public/service-worker.js +1 -0
  24. package/artifacts/env-template/public/static/css/664.50460623.css +1 -0
  25. package/artifacts/env-template/public/static/css/compositions.cd8be53f.css +1 -0
  26. package/artifacts/env-template/public/static/css/overview.71e25e30.css +1 -0
  27. package/artifacts/env-template/public/static/css/previewRoot.5ad41161.css +1 -0
  28. package/artifacts/env-template/public/workbox-ca45de73.js +1 -0
  29. package/artifacts/preview/teambit_react_react-preview.js +1 -0
  30. package/dist/apps/web/deploy-context.d.ts +3 -0
  31. package/dist/apps/web/deploy-context.js +3 -0
  32. package/dist/apps/web/deploy-context.js.map +1 -0
  33. package/dist/apps/web/index.d.ts +3 -0
  34. package/dist/apps/web/index.js +23 -0
  35. package/dist/apps/web/index.js.map +1 -0
  36. package/dist/apps/web/react-app-options.d.ts +2 -3
  37. package/dist/apps/web/react-app-options.js +0 -10
  38. package/dist/apps/web/react-app-options.js.map +1 -1
  39. package/dist/apps/web/react-build-result.d.ts +8 -0
  40. package/dist/apps/web/react-build-result.js +3 -0
  41. package/dist/apps/web/react-build-result.js.map +1 -0
  42. package/dist/apps/web/react.application.d.ts +7 -7
  43. package/dist/apps/web/react.application.js +41 -29
  44. package/dist/apps/web/react.application.js.map +1 -1
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/react.env.d.ts +10 -1
  48. package/dist/react.env.js +60 -8
  49. package/dist/react.env.js.map +1 -1
  50. package/dist/react.main.runtime.js +11 -11
  51. package/dist/react.main.runtime.js.map +1 -1
  52. package/dist/templates/react-app/files/app-root.js +7 -1
  53. package/dist/templates/react-app/files/app-root.js.map +1 -1
  54. package/dist/templates/react-app/files/compositions.js +1 -1
  55. package/dist/templates/react-app/files/compositions.js.map +1 -1
  56. package/dist/templates/workspace-common/files/workspace-config.js +1 -1
  57. package/dist/templates/workspace-common/files/workspace-config.js.map +1 -1
  58. package/dist/webpack/get-exposed-rules.d.ts +2 -0
  59. package/dist/webpack/get-exposed-rules.js +50 -0
  60. package/dist/webpack/get-exposed-rules.js.map +1 -0
  61. package/dist/webpack/get-externals.d.ts +1 -0
  62. package/dist/webpack/get-externals.js +42 -0
  63. package/dist/webpack/get-externals.js.map +1 -0
  64. package/dist/webpack/html.d.ts +2 -0
  65. package/dist/webpack/html.js +31 -0
  66. package/dist/webpack/html.js.map +1 -0
  67. package/dist/webpack/index.d.ts +1 -0
  68. package/dist/webpack/index.js +23 -0
  69. package/dist/webpack/index.js.map +1 -0
  70. package/dist/webpack/transformers.d.ts +2 -0
  71. package/dist/webpack/transformers.js +19 -0
  72. package/dist/webpack/transformers.js.map +1 -0
  73. package/dist/webpack/webpack.config.base.js +3 -5
  74. package/dist/webpack/webpack.config.base.js.map +1 -1
  75. package/dist/webpack/webpack.config.base.prod.d.ts +1 -1
  76. package/dist/webpack/webpack.config.base.prod.js +101 -80
  77. package/dist/webpack/webpack.config.base.prod.js.map +1 -1
  78. package/package-tar/teambit-react-0.0.629.tgz +0 -0
  79. package/package.json +38 -36
  80. package/templates/react-app/files/app-root.ts +7 -1
  81. package/templates/react-app/files/compositions.ts +1 -1
  82. package/templates/workspace-common/files/workspace-config.ts +1 -1
  83. package/webpack/get-exposed-rules.ts +12 -0
  84. package/webpack/get-externals.ts +8 -0
  85. package/webpack/html.ts +22 -0
  86. package/webpack/index.ts +1 -0
  87. package/webpack/transformers.ts +12 -0
  88. package/webpack/webpack.config.base.prod.ts +99 -81
  89. package/webpack/webpack.config.base.ts +3 -5
  90. package/package-tar/teambit-react-0.0.621.tgz +0 -0
@@ -1,7 +1,6 @@
1
1
  import { Bundler, DevServer } from '@teambit/bundler';
2
- import { DeployContext } from '@teambit/application';
3
- import { Capsule } from '@teambit/isolator';
4
2
  import { WebpackConfigTransformer } from '@teambit/webpack';
3
+ import { ReactDeployContext } from './deploy-context';
5
4
  export declare type ReactAppOptions = {
6
5
  /**
7
6
  * name of the application.
@@ -37,7 +36,7 @@ export declare type ReactAppOptions = {
37
36
  /**
38
37
  * deploy function.
39
38
  */
40
- deploy?: (context: DeployContext, Capsule: Capsule) => Promise<void>;
39
+ deploy?: (context: ReactDeployContext) => Promise<void>;
41
40
  /**
42
41
  * ranges of ports to use to run the app server.
43
42
  */
@@ -1,13 +1,3 @@
1
1
  "use strict";
2
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
3
  //# sourceMappingURL=react-app-options.js.map
@@ -1 +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
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -0,0 +1,8 @@
1
+ import { AppBuildResult } from '@teambit/application';
2
+ export declare type ReactAppBuildResult = {
3
+ /**
4
+ * the directory which includes the built application public assets.
5
+ * when using ssr, public dir is undefined.
6
+ */
7
+ publicDir?: string;
8
+ } & AppBuildResult;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ //# sourceMappingURL=react-build-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1,9 +1,9 @@
1
- import { Capsule } from '@teambit/isolator';
2
- import { Application, AppContext, AppBuildResult, DeployContext } from '@teambit/application';
3
- import { BuildContext } from '@teambit/builder';
1
+ import { Application, AppContext, AppBuildContext } from '@teambit/application';
4
2
  import { Bundler, DevServer } from '@teambit/bundler';
5
3
  import { WebpackConfigTransformer } from '@teambit/webpack';
6
4
  import { ReactEnv } from '../../react.env';
5
+ import { ReactAppBuildResult } from './react-build-result';
6
+ import { ReactDeployContext } from '.';
7
7
  export declare class ReactApp implements Application {
8
8
  readonly name: string;
9
9
  readonly entry: string[];
@@ -13,12 +13,12 @@ export declare class ReactApp implements Application {
13
13
  readonly bundler?: Bundler | undefined;
14
14
  readonly devServer?: DevServer | undefined;
15
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);
16
+ readonly deploy?: ((context: ReactDeployContext) => 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: ReactDeployContext) => Promise<void>) | undefined);
18
18
  readonly applicationType = "react-common-js";
19
+ readonly dir = "public";
19
20
  run(context: AppContext): Promise<number>;
20
- build(context: BuildContext, capsule: Capsule): Promise<AppBuildResult>;
21
- private getBlobPatterns;
21
+ build(context: AppBuildContext): Promise<ReactAppBuildResult>;
22
22
  private getBundler;
23
23
  private getDefaultBundler;
24
24
  private getPublicDir;
@@ -51,6 +51,16 @@ function _plugins() {
51
51
  return data;
52
52
  }
53
53
 
54
+ function _webpack() {
55
+ const data = require("../../webpack");
56
+
57
+ _webpack = function () {
58
+ return data;
59
+ };
60
+
61
+ return data;
62
+ }
63
+
54
64
  class ReactApp {
55
65
  constructor(name, entry, portRange, reactEnv, prerenderRoutes, bundler, devServer, transformers, deploy) {
56
66
  this.name = name;
@@ -63,6 +73,7 @@ class ReactApp {
63
73
  this.transformers = transformers;
64
74
  this.deploy = deploy;
65
75
  (0, _defineProperty2().default)(this, "applicationType", 'react-common-js');
76
+ (0, _defineProperty2().default)(this, "dir", 'public');
66
77
  }
67
78
 
68
79
  async run(context) {
@@ -90,34 +101,34 @@ class ReactApp {
90
101
  return port;
91
102
  }
92
103
 
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
- }
104
+ async build(context) {
105
+ const htmlConfig = [{
106
+ title: context.name,
107
+ templateContent: (0, _webpack().html)(context.name),
108
+ minify: false // filename: ''.html`,
102
109
 
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
+ Object.assign(context, {
112
+ html: htmlConfig
110
113
  });
111
-
112
- return _globs.filter(glob => !!glob);
114
+ const bundler = await this.getBundler(context);
115
+ await bundler.run();
116
+ return {
117
+ publicDir: `${this.getPublicDir()}/${this.dir}`
118
+ };
113
119
  }
114
120
 
115
- getBundler(context, capsule) {
121
+ getBundler(context) {
116
122
  if (this.bundler) return this.bundler;
117
- return this.getDefaultBundler(context, capsule);
123
+ return this.getDefaultBundler(context);
118
124
  }
119
125
 
120
- async getDefaultBundler(context, capsule) {
126
+ async getDefaultBundler(context) {
127
+ var _this$transformers;
128
+
129
+ const {
130
+ capsule
131
+ } = context;
121
132
  const reactEnv = context.env;
122
133
  const publicDir = this.getPublicDir();
123
134
  const outputPath = (0, _path().join)(capsule.path, publicDir);
@@ -125,7 +136,7 @@ class ReactApp {
125
136
  distDir
126
137
  } = reactEnv.getCompiler();
127
138
  const entries = this.entry.map(entry => require.resolve(`${capsule.path}/${distDir}/${(0, _path().basename)(entry)}`));
128
- const staticDir = (0, _path().join)(outputPath, 'public');
139
+ const staticDir = (0, _path().join)(outputPath, this.dir);
129
140
  const bundlerContext = Object.assign(context, {
130
141
  targets: [{
131
142
  components: [capsule === null || capsule === void 0 ? void 0 : capsule.component],
@@ -135,17 +146,18 @@ class ReactApp {
135
146
  entry: [],
136
147
  rootPath: '/'
137
148
  });
138
- const bundler = await reactEnv.getBundler(bundlerContext, [configMutator => {
139
- var _this$transformers;
140
149
 
141
- if ((_this$transformers = this.transformers) !== null && _this$transformers !== void 0 && _this$transformers.length) configMutator.addPlugin(this.transformers);
142
- configMutator.addTopLevel('output', {
150
+ const defaultTransformer = configMutator => {
151
+ const config = configMutator.addTopLevel('output', {
143
152
  path: staticDir,
144
153
  publicPath: `/`
145
154
  });
146
- if (this.prerenderRoutes) configMutator.addPlugin((0, _plugins().prerenderSPAPlugin)(this.prerenderRoutes, staticDir));
147
- return configMutator;
148
- }]);
155
+ if (this.prerenderRoutes) config.addPlugin((0, _plugins().prerenderSPAPlugin)(this.prerenderRoutes, staticDir));
156
+ return config;
157
+ };
158
+
159
+ const transformers = [defaultTransformer, ...((_this$transformers = this.transformers) !== null && _this$transformers !== void 0 ? _this$transformers : [])];
160
+ const bundler = await reactEnv.getBundler(bundlerContext, transformers);
149
161
  return bundler;
150
162
  }
151
163
 
@@ -1 +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"]}
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","htmlConfig","title","templateContent","minify","Object","assign","html","getBundler","publicDir","getPublicDir","dir","getDefaultBundler","capsule","env","outputPath","path","distDir","getCompiler","entries","map","require","resolve","staticDir","bundlerContext","targets","components","component","rootPath","defaultTransformer","config","addPlugin","applicationType"],"mappings":"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","sourcesContent":["import { join, basename } from 'path';\nimport { Application, AppContext, AppBuildContext } from '@teambit/application';\nimport { Bundler, DevServer, BundlerContext, DevServerContext, BundlerHtmlConfig } 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';\nimport { ReactAppBuildResult } from './react-build-result';\nimport { html } from '../../webpack';\nimport { ReactDeployContext } from '.';\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: ReactDeployContext) => Promise<void>\n ) {}\n\n readonly applicationType = 'react-common-js';\n readonly dir = 'public';\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: AppBuildContext): Promise<ReactAppBuildResult> {\n const htmlConfig: BundlerHtmlConfig[] = [\n {\n title: context.name,\n templateContent: html(context.name),\n minify: false,\n // filename: ''.html`,\n },\n ];\n Object.assign(context, { html: htmlConfig });\n const bundler = await this.getBundler(context);\n await bundler.run();\n return { publicDir: `${this.getPublicDir()}/${this.dir}` };\n }\n\n private getBundler(context: AppBuildContext) {\n if (this.bundler) return this.bundler;\n return this.getDefaultBundler(context);\n }\n private async getDefaultBundler(context: AppBuildContext) {\n const { capsule } = context;\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, this.dir);\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 defaultTransformer: WebpackConfigTransformer = (configMutator) => {\n const config = configMutator.addTopLevel('output', { path: staticDir, publicPath: `/` });\n if (this.prerenderRoutes) config.addPlugin(prerenderSPAPlugin(this.prerenderRoutes, staticDir));\n return config;\n };\n const transformers = [defaultTransformer, ...(this.transformers ?? [])];\n const bundler: Bundler = await reactEnv.getBundler(bundlerContext, transformers);\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,5 +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 './apps/web/react-app-options';
4
+ export type { ReactAppOptions, ReactDeployContext } from './apps/web';
5
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":";;;;;;;;;;;;;;;;;;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"]}
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, ReactDeployContext } from './apps/web';\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"]}
@@ -15,7 +15,7 @@ import { Linter, LinterContext } from '@teambit/linter';
15
15
  import { Formatter, FormatterContext } from '@teambit/formatter';
16
16
  import { SchemaExtractor } from '@teambit/schema';
17
17
  import { ReactMainConfig } from './react.main.runtime';
18
- export declare const AspectEnvType = "react";
18
+ export declare const ReactEnvType = "react";
19
19
  declare type GetBuildPipeModifiers = PipeServiceModifiersMap & {
20
20
  tsModifier?: PipeServiceModifier;
21
21
  };
@@ -116,6 +116,11 @@ export declare class ReactEnv implements TesterEnv, CompilerEnv, LinterEnv, DevE
116
116
  */
117
117
  getDevServer(context: DevServerContext, transformers?: WebpackConfigTransformer[]): DevServer;
118
118
  getBundler(context: BundlerContext, transformers?: WebpackConfigTransformer[]): Promise<Bundler>;
119
+ /**
120
+ * Get the peers configured by the env on the components + the host deps configured by the env
121
+ */
122
+ private getAllHostDeps;
123
+ getHostDependencies(): string[];
119
124
  /**
120
125
  * returns a path to a docs template.
121
126
  */
@@ -125,10 +130,14 @@ export declare class ReactEnv implements TesterEnv, CompilerEnv, LinterEnv, DevE
125
130
  * returns a paths to a function which mounts a given component to DOM
126
131
  */
127
132
  getMounter(): string;
133
+ getPreviewConfig(): {
134
+ splitComponentBundle: boolean;
135
+ };
128
136
  /**
129
137
  * define the package json properties to add to each component.
130
138
  */
131
139
  getPackageJsonProps(): import("@teambit/pkg").PackageJsonProps;
140
+ getNpmIgnore(): string[];
132
141
  /**
133
142
  * adds dependencies to all configured components.
134
143
  */
package/dist/react.env.js CHANGED
@@ -13,7 +13,7 @@ require("core-js/modules/es.string.replace.js");
13
13
  Object.defineProperty(exports, "__esModule", {
14
14
  value: true
15
15
  });
16
- exports.ReactEnv = exports.AspectEnvType = void 0;
16
+ exports.ReactEnvType = exports.ReactEnv = void 0;
17
17
 
18
18
  function _defineProperty2() {
19
19
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -55,6 +55,16 @@ function _componentModules() {
55
55
  return data;
56
56
  }
57
57
 
58
+ function _builder() {
59
+ const data = require("@teambit/builder");
60
+
61
+ _builder = function () {
62
+ return data;
63
+ };
64
+
65
+ return data;
66
+ }
67
+
58
68
  function _lodash() {
59
69
  const data = require("lodash");
60
70
 
@@ -155,12 +165,22 @@ function _webpackConfigComponent2() {
155
165
  return data;
156
166
  }
157
167
 
168
+ function _transformers() {
169
+ const data = require("./webpack/transformers");
170
+
171
+ _transformers = function () {
172
+ return data;
173
+ };
174
+
175
+ return data;
176
+ }
177
+
158
178
  // webpack configs for both components and envs
159
179
  // webpack configs for envs only
160
180
  // import devPreviewConfigFactory from './webpack/webpack.config.preview.dev';
161
181
  // webpack configs for components only
162
- const AspectEnvType = 'react';
163
- exports.AspectEnvType = AspectEnvType;
182
+ const ReactEnvType = 'react';
183
+ exports.ReactEnvType = ReactEnvType;
164
184
 
165
185
  const defaultTsConfig = require('./typescript/tsconfig.json');
166
186
 
@@ -331,19 +351,23 @@ class ReactEnv {
331
351
  const baseConfig = (0, _webpackConfig().default)(false);
332
352
  const envDevConfig = (0, _webpackConfigEnv().default)(context.id);
333
353
  const componentDevConfig = (0, _webpackConfigComponent2().default)(this.workspace.path, context.id);
354
+ const peers = this.getAllHostDeps();
355
+ const peerAliasesTransformer = (0, _transformers().generateAddAliasesFromPeersTransformer)(peers);
334
356
 
335
357
  const defaultTransformer = configMutator => {
336
358
  const merged = configMutator.merge([baseConfig, envDevConfig, componentDevConfig]);
337
359
  return merged;
338
360
  };
339
361
 
340
- return this.webpack.createDevServer(context, [defaultTransformer, ...transformers]);
362
+ return this.webpack.createDevServer(context, [defaultTransformer, peerAliasesTransformer, ...transformers]);
341
363
  }
342
364
 
343
365
  async getBundler(context, transformers = []) {
344
366
  // const fileMapPath = this.writeFileMap(context.components);
345
- const baseConfig = (0, _webpackConfig().default)(true);
346
- const baseProdConfig = (0, _webpackConfigBase().default)(); // const componentProdConfig = componentPreviewProdConfigFactory(fileMapPath);
367
+ const peers = this.getAllHostDeps();
368
+ const peerAliasesTransformer = (0, _transformers().generateAddAliasesFromPeersTransformer)(peers);
369
+ const baseConfig = (0, _webpackConfig().default)(!context.development);
370
+ const baseProdConfig = (0, _webpackConfigBase().default)(Boolean(context.externalizePeer), peers, context.development); // const componentProdConfig = componentPreviewProdConfigFactory(fileMapPath);
347
371
 
348
372
  const componentProdConfig = (0, _webpackConfigComponent().default)();
349
373
 
@@ -352,7 +376,21 @@ class ReactEnv {
352
376
  return merged;
353
377
  };
354
378
 
355
- return this.webpack.createPreviewBundler(context, [defaultTransformer, ...transformers]);
379
+ return this.webpack.createBundler(context, [defaultTransformer, peerAliasesTransformer, ...transformers]);
380
+ }
381
+ /**
382
+ * Get the peers configured by the env on the components + the host deps configured by the env
383
+ */
384
+
385
+
386
+ getAllHostDeps() {
387
+ const hostDeps = this.getHostDependencies();
388
+ const peers = Object.keys(this.getDependencies().peerDependencies).concat(hostDeps);
389
+ return peers;
390
+ }
391
+
392
+ getHostDependencies() {
393
+ return ['@teambit/mdx.ui.mdx-scope-context', '@mdx-js/react'];
356
394
  }
357
395
  /**
358
396
  * returns a path to a docs template.
@@ -369,6 +407,13 @@ class ReactEnv {
369
407
  getMounter() {
370
408
  return require.resolve('./mount');
371
409
  }
410
+
411
+ getPreviewConfig() {
412
+ return {
413
+ // strategyName: 'component',
414
+ splitComponentBundle: true
415
+ };
416
+ }
372
417
  /**
373
418
  * define the package json properties to add to each component.
374
419
  */
@@ -377,6 +422,13 @@ class ReactEnv {
377
422
  getPackageJsonProps() {
378
423
  return this.tsAspect.getPackageJsonProps();
379
424
  }
425
+
426
+ getNpmIgnore() {
427
+ // ignores only .ts files in the root directory, so d.ts files inside dists are unaffected.
428
+ // without this change, the package has "index.ts" file in the root, causing typescript to parse it instead of the
429
+ // d.ts files. (changing the "types" prop in the package.json file doesn't help).
430
+ return [`${_builder().CAPSULE_ARTIFACTS_DIR}/`];
431
+ }
380
432
  /**
381
433
  * adds dependencies to all configured components.
382
434
  */
@@ -428,7 +480,7 @@ class ReactEnv {
428
480
 
429
481
  async __getDescriptor() {
430
482
  return {
431
- type: AspectEnvType
483
+ type: ReactEnvType
432
484
  };
433
485
  }
434
486
 
@@ -1 +1 @@
1
- {"version":3,"sources":["react.env.ts"],"names":["AspectEnvType","defaultTsConfig","require","buildTsConfig","eslintConfig","prettierConfig","ReactEnv","constructor","jestAspect","tsAspect","compiler","webpack","workspace","pkg","tester","config","eslint","prettier","getTsConfig","targetTsConfig","getBuildTsConfig","getTester","jestConfigPath","jestModulePath","resolve","createTester","getTsCompilerOptions","mode","tsconfig","pathToSource","__dirname","replace","compileJs","compileJsx","types","getTsCompiler","transformers","tsModule","ts","tsCompileOptions","createCompiler","getCompiler","getLinter","context","defaultTransformer","configMutator","addExtensionTypes","allTransformers","createLinter","pluginPath","getFormatter","createFormatter","getFileMap","components","local","reduce","index","component","state","filesystem","files","forEach","file","path","id","toString","homepage","fullName","ComponentUrl","toUrl","writeFileMap","fileMap","Math","random","substr","JSON","stringify","getDevEnvId","ReactAspect","getSchemaExtractor","createSchemaExtractor","getDevServer","baseConfig","envDevConfig","componentDevConfig","merged","merge","createDevServer","getBundler","baseProdConfig","componentProdConfig","createPreviewBundler","getDocsTemplate","getMounter","getPackageJsonProps","getDependencies","dependencies","react","devDependencies","peerDependencies","getBuildPipe","modifiers","tsModifier","getCompilerTask","module","task","tsCompiler","createTask","__getDescriptor","type"],"mappings":"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","sourcesContent":["import ts, { TsConfigSourceFile } from 'typescript';\nimport { tmpdir } from 'os';\nimport { Component } from '@teambit/component';\nimport { ComponentUrl } from '@teambit/component.modules.component-url';\nimport { BuildTask } from '@teambit/builder';\nimport { merge } from 'lodash';\nimport { Bundler, BundlerContext, DevServer, DevServerContext } from '@teambit/bundler';\nimport { CompilerMain } from '@teambit/compiler';\nimport {\n BuilderEnv,\n CompilerEnv,\n DependenciesEnv,\n DevEnv,\n LinterEnv,\n PackageEnv,\n TesterEnv,\n FormatterEnv,\n PipeServiceModifier,\n PipeServiceModifiersMap,\n} from '@teambit/envs';\nimport { JestMain } from '@teambit/jest';\nimport { PkgMain } from '@teambit/pkg';\nimport { Tester, TesterMain } from '@teambit/tester';\nimport { TsConfigTransformer, TypescriptMain } from '@teambit/typescript';\nimport type { TypeScriptCompilerOptions } from '@teambit/typescript';\nimport { WebpackConfigTransformer, WebpackMain } from '@teambit/webpack';\nimport { Workspace } from '@teambit/workspace';\nimport { ESLintMain, EslintConfigTransformer } from '@teambit/eslint';\nimport { PrettierConfigTransformer, PrettierMain } from '@teambit/prettier';\nimport { Linter, LinterContext } from '@teambit/linter';\nimport { Formatter, FormatterContext } from '@teambit/formatter';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport type { ComponentMeta } from '@teambit/react.ui.highlighter.component-metadata.bit-component-meta';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { join, resolve } from 'path';\nimport { outputFileSync } from 'fs-extra';\n// Makes sure the @teambit/react.ui.docs-app is a dependency\n// TODO: remove this import once we can set policy from component to component with workspace version. Then set it via the component.json\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { ReactMainConfig } from './react.main.runtime';\nimport { ReactAspect } from './react.aspect';\n\n// webpack configs for both components and envs\nimport basePreviewConfigFactory from './webpack/webpack.config.base';\nimport basePreviewProdConfigFactory from './webpack/webpack.config.base.prod';\n\n// webpack configs for envs only\n// import devPreviewConfigFactory from './webpack/webpack.config.preview.dev';\nimport envPreviewDevConfigFactory from './webpack/webpack.config.env.dev';\n\n// webpack configs for components only\nimport componentPreviewProdConfigFactory from './webpack/webpack.config.component.prod';\nimport componentPreviewDevConfigFactory from './webpack/webpack.config.component.dev';\n\nexport const AspectEnvType = 'react';\nconst defaultTsConfig = require('./typescript/tsconfig.json');\nconst buildTsConfig = require('./typescript/tsconfig.build.json');\nconst eslintConfig = require('./eslint/eslintrc');\nconst prettierConfig = require('./prettier/prettier.config.js');\n\n// TODO: move to be taken from the key mode of compiler context\ntype CompilerMode = 'build' | 'dev';\n\ntype GetBuildPipeModifiers = PipeServiceModifiersMap & {\n tsModifier?: PipeServiceModifier;\n};\n\n/**\n * a component environment built for [React](https://reactjs.org) .\n */\nexport class ReactEnv\n implements TesterEnv, CompilerEnv, LinterEnv, DevEnv, BuilderEnv, DependenciesEnv, PackageEnv, FormatterEnv\n{\n constructor(\n /**\n * jest extension\n */\n private jestAspect: JestMain,\n\n /**\n * typescript extension.\n */\n private tsAspect: TypescriptMain,\n\n /**\n * compiler extension.\n */\n private compiler: CompilerMain,\n\n /**\n * webpack extension.\n */\n private webpack: WebpackMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * pkg extension.\n */\n private pkg: PkgMain,\n\n /**\n * tester extension\n */\n private tester: TesterMain,\n\n private config: ReactMainConfig,\n\n private eslint: ESLintMain,\n\n private prettier: PrettierMain\n ) {}\n\n getTsConfig(targetTsConfig?: TsConfigSourceFile): TsConfigSourceFile {\n return targetTsConfig ? merge({}, defaultTsConfig, targetTsConfig) : defaultTsConfig;\n }\n\n getBuildTsConfig(targetTsConfig?: TsConfigSourceFile): TsConfigSourceFile {\n return targetTsConfig ? merge({}, buildTsConfig, targetTsConfig) : buildTsConfig;\n }\n\n /**\n * returns a component tester.\n */\n getTester(jestConfigPath: string, jestModulePath?: string): Tester {\n const config = jestConfigPath || require.resolve('./jest/jest.config');\n return this.jestAspect.createTester(config, jestModulePath || require.resolve('jest'));\n }\n\n private getTsCompilerOptions(mode: CompilerMode = 'dev'): TypeScriptCompilerOptions {\n const tsconfig = mode === 'dev' ? defaultTsConfig : buildTsConfig;\n const pathToSource = pathNormalizeToLinux(__dirname).replace('/dist/', '/src/');\n const compileJs = true;\n const compileJsx = true;\n return {\n tsconfig,\n // TODO: @david please remove this line and refactor to be something that makes sense.\n types: [resolve(pathToSource, './typescript/style.d.ts'), resolve(pathToSource, './typescript/asset.d.ts')],\n compileJs,\n compileJsx,\n };\n }\n\n private getTsCompiler(mode: CompilerMode = 'dev', transformers: TsConfigTransformer[] = [], tsModule = ts) {\n const tsCompileOptions = this.getTsCompilerOptions(mode);\n return this.tsAspect.createCompiler(tsCompileOptions, transformers, tsModule);\n }\n\n getCompiler(transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.getTsCompiler('dev', transformers, tsModule);\n }\n\n /**\n * returns and configures the component linter.\n */\n getLinter(context: LinterContext, transformers: EslintConfigTransformer[] = []): Linter {\n const defaultTransformer: EslintConfigTransformer = (configMutator) => {\n configMutator.addExtensionTypes(['.md', '.mdx']);\n return configMutator;\n };\n\n const allTransformers = [defaultTransformer, ...transformers];\n\n return this.eslint.createLinter(\n context,\n {\n config: eslintConfig,\n // resolve all plugins from the react environment.\n pluginPath: __dirname,\n },\n allTransformers\n );\n }\n\n /**\n * returns and configures the component formatter.\n */\n getFormatter(context: FormatterContext, transformers: PrettierConfigTransformer[] = []): Formatter {\n return this.prettier.createFormatter(\n context,\n {\n config: prettierConfig,\n },\n transformers\n );\n }\n\n private getFileMap(components: Component[], local = false) {\n return components.reduce<{ [key: string]: ComponentMeta }>((index, component: Component) => {\n component.state.filesystem.files.forEach((file) => {\n index[file.path] = {\n id: component.id.toString(),\n homepage: local ? `/${component.id.fullName}` : ComponentUrl.toUrl(component.id),\n };\n });\n\n return index;\n }, {});\n }\n\n private writeFileMap(components: Component[], local?: boolean) {\n const fileMap = this.getFileMap(components, local);\n const path = join(tmpdir(), `${Math.random().toString(36).substr(2, 9)}.json`);\n outputFileSync(path, JSON.stringify(fileMap));\n return path;\n }\n\n /**\n * required for `bit start`\n */\n getDevEnvId(id?: string) {\n if (typeof id !== 'string') return ReactAspect.id;\n return id || ReactAspect.id;\n }\n\n /**\n * get a schema generator instance configured with the correct tsconfig.\n */\n getSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor {\n return this.tsAspect.createSchemaExtractor(this.getTsConfig(tsconfig));\n }\n\n /**\n * returns and configures the React component dev server.\n * required for `bit start`\n */\n getDevServer(context: DevServerContext, transformers: WebpackConfigTransformer[] = []): DevServer {\n const baseConfig = basePreviewConfigFactory(false);\n const envDevConfig = envPreviewDevConfigFactory(context.id);\n const componentDevConfig = componentPreviewDevConfigFactory(this.workspace.path, context.id);\n\n const defaultTransformer: WebpackConfigTransformer = (configMutator) => {\n const merged = configMutator.merge([baseConfig, envDevConfig, componentDevConfig]);\n return merged;\n };\n\n return this.webpack.createDevServer(context, [defaultTransformer, ...transformers]);\n }\n\n async getBundler(context: BundlerContext, transformers: WebpackConfigTransformer[] = []): Promise<Bundler> {\n // const fileMapPath = this.writeFileMap(context.components);\n const baseConfig = basePreviewConfigFactory(true);\n const baseProdConfig = basePreviewProdConfigFactory();\n // const componentProdConfig = componentPreviewProdConfigFactory(fileMapPath);\n const componentProdConfig = componentPreviewProdConfigFactory();\n\n const defaultTransformer: WebpackConfigTransformer = (configMutator) => {\n const merged = configMutator.merge([baseConfig, baseProdConfig, componentProdConfig]);\n return merged;\n };\n\n return this.webpack.createPreviewBundler(context, [defaultTransformer, ...transformers]);\n }\n\n /**\n * returns a path to a docs template.\n */\n getDocsTemplate() {\n return require.resolve('@teambit/react.ui.docs-app');\n }\n\n icon = 'https://static.bit.dev/extensions-icons/react.svg';\n\n /**\n * returns a paths to a function which mounts a given component to DOM\n */\n getMounter() {\n return require.resolve('./mount');\n }\n\n /**\n * define the package json properties to add to each component.\n */\n getPackageJsonProps() {\n return this.tsAspect.getPackageJsonProps();\n }\n\n /**\n * adds dependencies to all configured components.\n */\n getDependencies() {\n return {\n dependencies: {\n react: '-',\n 'react-dom': '-',\n 'core-js': '^3.0.0',\n },\n // TODO: add this only if using ts\n devDependencies: {\n react: '-',\n 'react-dom': '-',\n '@types/mocha': '-',\n '@types/node': '12.20.4',\n '@types/react': '^17.0.8',\n '@types/react-dom': '^17.0.5',\n '@types/jest': '^26.0.0',\n // '@types/react-router-dom': '^5.0.0', // TODO - should not be here (!)\n // This is added as dev dep since our jest file transformer uses babel plugins that require this to be installed\n '@babel/runtime': '7.12.18',\n '@types/testing-library__jest-dom': '5.9.5',\n },\n peerDependencies: {\n react: '^16.8.0 || ^17.0.0',\n 'react-dom': '^16.8.0 || ^17.0.0',\n },\n };\n }\n\n /**\n * returns the component build pipeline.\n */\n getBuildPipe(modifiers: GetBuildPipeModifiers = {}): BuildTask[] {\n const transformers: TsConfigTransformer[] =\n (modifiers?.tsModifier?.transformers as any as TsConfigTransformer[]) || [];\n return [this.getCompilerTask(transformers, modifiers?.tsModifier?.module || ts), this.tester.task];\n }\n\n private getCompilerTask(transformers: TsConfigTransformer[] = [], tsModule = ts) {\n const tsCompiler = this.getTsCompiler('build', transformers, tsModule);\n return this.compiler.createTask('TSCompiler', tsCompiler);\n }\n\n async __getDescriptor() {\n return {\n type: AspectEnvType,\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["react.env.ts"],"names":["ReactEnvType","defaultTsConfig","require","buildTsConfig","eslintConfig","prettierConfig","ReactEnv","constructor","jestAspect","tsAspect","compiler","webpack","workspace","pkg","tester","config","eslint","prettier","getTsConfig","targetTsConfig","getBuildTsConfig","getTester","jestConfigPath","jestModulePath","resolve","createTester","getTsCompilerOptions","mode","tsconfig","pathToSource","__dirname","replace","compileJs","compileJsx","types","getTsCompiler","transformers","tsModule","ts","tsCompileOptions","createCompiler","getCompiler","getLinter","context","defaultTransformer","configMutator","addExtensionTypes","allTransformers","createLinter","pluginPath","getFormatter","createFormatter","getFileMap","components","local","reduce","index","component","state","filesystem","files","forEach","file","path","id","toString","homepage","fullName","ComponentUrl","toUrl","writeFileMap","fileMap","Math","random","substr","JSON","stringify","getDevEnvId","ReactAspect","getSchemaExtractor","createSchemaExtractor","getDevServer","baseConfig","envDevConfig","componentDevConfig","peers","getAllHostDeps","peerAliasesTransformer","merged","merge","createDevServer","getBundler","development","baseProdConfig","Boolean","externalizePeer","componentProdConfig","createBundler","hostDeps","getHostDependencies","Object","keys","getDependencies","peerDependencies","concat","getDocsTemplate","getMounter","getPreviewConfig","splitComponentBundle","getPackageJsonProps","getNpmIgnore","CAPSULE_ARTIFACTS_DIR","dependencies","react","devDependencies","getBuildPipe","modifiers","tsModifier","getCompilerTask","module","task","tsCompiler","createTask","__getDescriptor","type"],"mappings":"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","sourcesContent":["import ts, { TsConfigSourceFile } from 'typescript';\nimport { tmpdir } from 'os';\nimport { Component } from '@teambit/component';\nimport { ComponentUrl } from '@teambit/component.modules.component-url';\nimport { BuildTask, CAPSULE_ARTIFACTS_DIR } from '@teambit/builder';\nimport { merge } from 'lodash';\nimport { Bundler, BundlerContext, DevServer, DevServerContext } from '@teambit/bundler';\nimport { CompilerMain } from '@teambit/compiler';\nimport {\n BuilderEnv,\n CompilerEnv,\n DependenciesEnv,\n DevEnv,\n LinterEnv,\n PackageEnv,\n TesterEnv,\n FormatterEnv,\n PipeServiceModifier,\n PipeServiceModifiersMap,\n} from '@teambit/envs';\nimport { JestMain } from '@teambit/jest';\nimport { PkgMain } from '@teambit/pkg';\nimport { Tester, TesterMain } from '@teambit/tester';\nimport { TsConfigTransformer, TypescriptMain } from '@teambit/typescript';\nimport type { TypeScriptCompilerOptions } from '@teambit/typescript';\nimport { WebpackConfigTransformer, WebpackMain } from '@teambit/webpack';\nimport { Workspace } from '@teambit/workspace';\nimport { ESLintMain, EslintConfigTransformer } from '@teambit/eslint';\nimport { PrettierConfigTransformer, PrettierMain } from '@teambit/prettier';\nimport { Linter, LinterContext } from '@teambit/linter';\nimport { Formatter, FormatterContext } from '@teambit/formatter';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport type { ComponentMeta } from '@teambit/react.ui.highlighter.component-metadata.bit-component-meta';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { join, resolve } from 'path';\nimport { outputFileSync } from 'fs-extra';\n// Makes sure the @teambit/react.ui.docs-app is a dependency\n// TODO: remove this import once we can set policy from component to component with workspace version. Then set it via the component.json\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { ReactMainConfig } from './react.main.runtime';\nimport { ReactAspect } from './react.aspect';\n\n// webpack configs for both components and envs\nimport basePreviewConfigFactory from './webpack/webpack.config.base';\nimport basePreviewProdConfigFactory from './webpack/webpack.config.base.prod';\n\n// webpack configs for envs only\n// import devPreviewConfigFactory from './webpack/webpack.config.preview.dev';\nimport envPreviewDevConfigFactory from './webpack/webpack.config.env.dev';\n\n// webpack configs for components only\nimport componentPreviewProdConfigFactory from './webpack/webpack.config.component.prod';\nimport componentPreviewDevConfigFactory from './webpack/webpack.config.component.dev';\nimport { generateAddAliasesFromPeersTransformer } from './webpack/transformers';\n\nexport const ReactEnvType = 'react';\nconst defaultTsConfig = require('./typescript/tsconfig.json');\nconst buildTsConfig = require('./typescript/tsconfig.build.json');\nconst eslintConfig = require('./eslint/eslintrc');\nconst prettierConfig = require('./prettier/prettier.config.js');\n\n// TODO: move to be taken from the key mode of compiler context\ntype CompilerMode = 'build' | 'dev';\n\ntype GetBuildPipeModifiers = PipeServiceModifiersMap & {\n tsModifier?: PipeServiceModifier;\n};\n\n/**\n * a component environment built for [React](https://reactjs.org) .\n */\nexport class ReactEnv\n implements TesterEnv, CompilerEnv, LinterEnv, DevEnv, BuilderEnv, DependenciesEnv, PackageEnv, FormatterEnv\n{\n constructor(\n /**\n * jest extension\n */\n private jestAspect: JestMain,\n\n /**\n * typescript extension.\n */\n private tsAspect: TypescriptMain,\n\n /**\n * compiler extension.\n */\n private compiler: CompilerMain,\n\n /**\n * webpack extension.\n */\n private webpack: WebpackMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * pkg extension.\n */\n private pkg: PkgMain,\n\n /**\n * tester extension\n */\n private tester: TesterMain,\n\n private config: ReactMainConfig,\n\n private eslint: ESLintMain,\n\n private prettier: PrettierMain\n ) {}\n\n getTsConfig(targetTsConfig?: TsConfigSourceFile): TsConfigSourceFile {\n return targetTsConfig ? merge({}, defaultTsConfig, targetTsConfig) : defaultTsConfig;\n }\n\n getBuildTsConfig(targetTsConfig?: TsConfigSourceFile): TsConfigSourceFile {\n return targetTsConfig ? merge({}, buildTsConfig, targetTsConfig) : buildTsConfig;\n }\n\n /**\n * returns a component tester.\n */\n getTester(jestConfigPath: string, jestModulePath?: string): Tester {\n const config = jestConfigPath || require.resolve('./jest/jest.config');\n return this.jestAspect.createTester(config, jestModulePath || require.resolve('jest'));\n }\n\n private getTsCompilerOptions(mode: CompilerMode = 'dev'): TypeScriptCompilerOptions {\n const tsconfig = mode === 'dev' ? defaultTsConfig : buildTsConfig;\n const pathToSource = pathNormalizeToLinux(__dirname).replace('/dist/', '/src/');\n const compileJs = true;\n const compileJsx = true;\n return {\n tsconfig,\n // TODO: @david please remove this line and refactor to be something that makes sense.\n types: [resolve(pathToSource, './typescript/style.d.ts'), resolve(pathToSource, './typescript/asset.d.ts')],\n compileJs,\n compileJsx,\n };\n }\n\n private getTsCompiler(mode: CompilerMode = 'dev', transformers: TsConfigTransformer[] = [], tsModule = ts) {\n const tsCompileOptions = this.getTsCompilerOptions(mode);\n return this.tsAspect.createCompiler(tsCompileOptions, transformers, tsModule);\n }\n\n getCompiler(transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.getTsCompiler('dev', transformers, tsModule);\n }\n\n /**\n * returns and configures the component linter.\n */\n getLinter(context: LinterContext, transformers: EslintConfigTransformer[] = []): Linter {\n const defaultTransformer: EslintConfigTransformer = (configMutator) => {\n configMutator.addExtensionTypes(['.md', '.mdx']);\n return configMutator;\n };\n\n const allTransformers = [defaultTransformer, ...transformers];\n\n return this.eslint.createLinter(\n context,\n {\n config: eslintConfig,\n // resolve all plugins from the react environment.\n pluginPath: __dirname,\n },\n allTransformers\n );\n }\n\n /**\n * returns and configures the component formatter.\n */\n getFormatter(context: FormatterContext, transformers: PrettierConfigTransformer[] = []): Formatter {\n return this.prettier.createFormatter(\n context,\n {\n config: prettierConfig,\n },\n transformers\n );\n }\n\n private getFileMap(components: Component[], local = false) {\n return components.reduce<{ [key: string]: ComponentMeta }>((index, component: Component) => {\n component.state.filesystem.files.forEach((file) => {\n index[file.path] = {\n id: component.id.toString(),\n homepage: local ? `/${component.id.fullName}` : ComponentUrl.toUrl(component.id),\n };\n });\n\n return index;\n }, {});\n }\n\n private writeFileMap(components: Component[], local?: boolean) {\n const fileMap = this.getFileMap(components, local);\n const path = join(tmpdir(), `${Math.random().toString(36).substr(2, 9)}.json`);\n outputFileSync(path, JSON.stringify(fileMap));\n return path;\n }\n\n /**\n * required for `bit start`\n */\n getDevEnvId(id?: string) {\n if (typeof id !== 'string') return ReactAspect.id;\n return id || ReactAspect.id;\n }\n\n /**\n * get a schema generator instance configured with the correct tsconfig.\n */\n getSchemaExtractor(tsconfig: TsConfigSourceFile): SchemaExtractor {\n return this.tsAspect.createSchemaExtractor(this.getTsConfig(tsconfig));\n }\n\n /**\n * returns and configures the React component dev server.\n * required for `bit start`\n */\n getDevServer(context: DevServerContext, transformers: WebpackConfigTransformer[] = []): DevServer {\n const baseConfig = basePreviewConfigFactory(false);\n const envDevConfig = envPreviewDevConfigFactory(context.id);\n const componentDevConfig = componentPreviewDevConfigFactory(this.workspace.path, context.id);\n const peers = this.getAllHostDeps();\n const peerAliasesTransformer = generateAddAliasesFromPeersTransformer(peers);\n\n const defaultTransformer: WebpackConfigTransformer = (configMutator) => {\n const merged = configMutator.merge([baseConfig, envDevConfig, componentDevConfig]);\n return merged;\n };\n\n return this.webpack.createDevServer(context, [defaultTransformer, peerAliasesTransformer, ...transformers]);\n }\n\n async getBundler(context: BundlerContext, transformers: WebpackConfigTransformer[] = []): Promise<Bundler> {\n // const fileMapPath = this.writeFileMap(context.components);\n const peers = this.getAllHostDeps();\n\n const peerAliasesTransformer = generateAddAliasesFromPeersTransformer(peers);\n const baseConfig = basePreviewConfigFactory(!context.development);\n const baseProdConfig = basePreviewProdConfigFactory(Boolean(context.externalizePeer), peers, context.development);\n // const componentProdConfig = componentPreviewProdConfigFactory(fileMapPath);\n const componentProdConfig = componentPreviewProdConfigFactory();\n\n const defaultTransformer: WebpackConfigTransformer = (configMutator) => {\n const merged = configMutator.merge([baseConfig, baseProdConfig, componentProdConfig]);\n return merged;\n };\n\n return this.webpack.createBundler(context, [defaultTransformer, peerAliasesTransformer, ...transformers]);\n }\n\n /**\n * Get the peers configured by the env on the components + the host deps configured by the env\n */\n private getAllHostDeps() {\n const hostDeps = this.getHostDependencies();\n const peers = Object.keys(this.getDependencies().peerDependencies).concat(hostDeps);\n return peers;\n }\n\n getHostDependencies(): string[] {\n return ['@teambit/mdx.ui.mdx-scope-context', '@mdx-js/react'];\n }\n\n /**\n * returns a path to a docs template.\n */\n getDocsTemplate() {\n return require.resolve('@teambit/react.ui.docs-app');\n }\n\n icon = 'https://static.bit.dev/extensions-icons/react.svg';\n\n /**\n * returns a paths to a function which mounts a given component to DOM\n */\n getMounter() {\n return require.resolve('./mount');\n }\n\n getPreviewConfig() {\n return {\n // strategyName: 'component',\n splitComponentBundle: true,\n };\n }\n\n /**\n * define the package json properties to add to each component.\n */\n getPackageJsonProps() {\n return this.tsAspect.getPackageJsonProps();\n }\n\n getNpmIgnore() {\n // ignores only .ts files in the root directory, so d.ts files inside dists are unaffected.\n // without this change, the package has \"index.ts\" file in the root, causing typescript to parse it instead of the\n // d.ts files. (changing the \"types\" prop in the package.json file doesn't help).\n return [`${CAPSULE_ARTIFACTS_DIR}/`];\n }\n\n /**\n * adds dependencies to all configured components.\n */\n getDependencies() {\n return {\n dependencies: {\n react: '-',\n 'react-dom': '-',\n 'core-js': '^3.0.0',\n },\n // TODO: add this only if using ts\n devDependencies: {\n react: '-',\n 'react-dom': '-',\n '@types/mocha': '-',\n '@types/node': '12.20.4',\n '@types/react': '^17.0.8',\n '@types/react-dom': '^17.0.5',\n '@types/jest': '^26.0.0',\n // '@types/react-router-dom': '^5.0.0', // TODO - should not be here (!)\n // This is added as dev dep since our jest file transformer uses babel plugins that require this to be installed\n '@babel/runtime': '7.12.18',\n '@types/testing-library__jest-dom': '5.9.5',\n },\n peerDependencies: {\n react: '^16.8.0 || ^17.0.0',\n 'react-dom': '^16.8.0 || ^17.0.0',\n },\n };\n }\n\n /**\n * returns the component build pipeline.\n */\n getBuildPipe(modifiers: GetBuildPipeModifiers = {}): BuildTask[] {\n const transformers: TsConfigTransformer[] =\n (modifiers?.tsModifier?.transformers as any as TsConfigTransformer[]) || [];\n return [this.getCompilerTask(transformers, modifiers?.tsModifier?.module || ts), this.tester.task];\n }\n\n private getCompilerTask(transformers: TsConfigTransformer[] = [], tsModule = ts) {\n const tsCompiler = this.getTsCompiler('build', transformers, tsModule);\n return this.compiler.createTask('TSCompiler', tsCompiler);\n }\n\n async __getDescriptor() {\n return {\n type: ReactEnvType,\n };\n }\n}\n"]}
@@ -213,30 +213,30 @@ function _react2() {
213
213
  return data;
214
214
  }
215
215
 
216
- function _react3() {
217
- const data = require("./apps/web/react.app-type");
216
+ function _web() {
217
+ const data = require("./apps/web");
218
218
 
219
- _react3 = function () {
219
+ _web = function () {
220
220
  return data;
221
221
  };
222
222
 
223
223
  return data;
224
224
  }
225
225
 
226
- function _react4() {
226
+ function _react3() {
227
227
  const data = require("./react.graphql");
228
228
 
229
- _react4 = function () {
229
+ _react3 = function () {
230
230
  return data;
231
231
  };
232
232
 
233
233
  return data;
234
234
  }
235
235
 
236
- function _react5() {
236
+ function _react4() {
237
237
  const data = require("./react.templates");
238
238
 
239
- _react5 = function () {
239
+ _react4 = function () {
240
240
  return data;
241
241
  };
242
242
 
@@ -554,11 +554,11 @@ class ReactMain {
554
554
  static async provider([envs, jestAspect, tsAspect, compiler, webpack, workspace, graphql, pkg, tester, eslint, prettier, application, generator], config) {
555
555
  const reactEnv = new (_react2().ReactEnv)(jestAspect, tsAspect, compiler, webpack, workspace, pkg, tester, config, eslint, prettier);
556
556
  const react = new ReactMain(reactEnv, envs, application, workspace);
557
- graphql.register((0, _react4().reactSchema)(react));
557
+ graphql.register((0, _react3().reactSchema)(react));
558
558
  envs.registerEnv(reactEnv);
559
- generator.registerComponentTemplate(_react5().componentTemplates);
560
- generator.registerWorkspaceTemplate(_react5().workspaceTemplates);
561
- application.registerAppType(new (_react3().ReactAppType)('react-app', reactEnv));
559
+ generator.registerComponentTemplate(_react4().componentTemplates);
560
+ generator.registerWorkspaceTemplate(_react4().workspaceTemplates);
561
+ application.registerAppType(new (_web().ReactAppType)('react-app', reactEnv));
562
562
  return react;
563
563
  }
564
564