@teambit/preview 1.0.588 → 1.0.592

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.588/dist/preview.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.588/dist/preview.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.592/dist/preview.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.592/dist/preview.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -11,6 +11,9 @@ type ServerState = {
11
11
  errors?: Error[];
12
12
  warnings?: Error[];
13
13
  results?: any[];
14
+ isStarted?: boolean;
15
+ isCompilationDone?: boolean;
16
+ isPendingPublish?: boolean;
14
17
  };
15
18
  type ServerStateMap = Record<string, ServerState>;
16
19
  export declare class PreviewStartPlugin implements StartPlugin {
@@ -27,6 +30,7 @@ export declare class PreviewStartPlugin implements StartPlugin {
27
30
  private pendingServers;
28
31
  constructor(workspace: Workspace, bundler: BundlerMain, ui: UiMain, pubsub: PubsubMain, logger: Logger, watcher: WatcherMain, graphql: GraphqlMain);
29
32
  onComponentServerStarted(componentServer: ComponentServer): Promise<void>;
33
+ private publishServerStarted;
30
34
  onNewDevServersCreated(servers: ComponentServer[]): Promise<void>;
31
35
  initiate(options: StartPluginOptions): Promise<void>;
32
36
  getProxy(): ProxyEntry[];
@@ -54,6 +54,8 @@ function _chalk() {
54
54
  return data;
55
55
  }
56
56
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
57
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
58
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
57
59
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
58
60
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
59
61
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -86,6 +88,9 @@ class PreviewStartPlugin {
86
88
  this.serversMap[startedEnvId] = componentServer;
87
89
  const wasPending = this.pendingServers.has(startedEnvId);
88
90
  this.pendingServers.delete(startedEnvId);
91
+ this.serversState[startedEnvId] = _objectSpread(_objectSpread({}, this.serversState[startedEnvId]), {}, {
92
+ isStarted: true
93
+ });
89
94
  const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);
90
95
  if (index >= 0) {
91
96
  this.previewServers[index] = componentServer;
@@ -96,16 +101,33 @@ class PreviewStartPlugin {
96
101
  if (uiServer) {
97
102
  uiServer.addComponentServerProxy(componentServer);
98
103
  if (wasPending) {
99
- await this.graphql.pubsub.publish(_bundler().ComponentServerStartedEvent, {
100
- componentServers: componentServer
101
- });
104
+ if (this.serversState[startedEnvId]?.isCompilationDone) {
105
+ await this.publishServerStarted(componentServer);
106
+ } else {
107
+ this.serversState[startedEnvId] = _objectSpread(_objectSpread({}, this.serversState[startedEnvId]), {}, {
108
+ isPendingPublish: true
109
+ });
110
+ this.logger.console(`Server ${startedEnvId} started but waiting for compilation to complete before publishing event.`);
111
+ }
102
112
  }
103
113
  }
104
114
  }
115
+ async publishServerStarted(server) {
116
+ await this.graphql.pubsub.publish(_bundler().ComponentServerStartedEvent, {
117
+ componentServers: server
118
+ });
119
+ }
105
120
  async onNewDevServersCreated(servers) {
106
121
  for (const server of servers) {
107
122
  const envId = server.context.envRuntime.id;
108
123
  this.pendingServers.set(envId, server);
124
+ this.serversState[envId] = {
125
+ isCompiling: false,
126
+ isReady: false,
127
+ isStarted: false,
128
+ isCompilationDone: false,
129
+ isPendingPublish: false
130
+ };
109
131
  try {
110
132
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
111
133
  server.listen();
@@ -120,7 +142,16 @@ class PreviewStartPlugin {
120
142
  // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.
121
143
  const previewServers = await this.bundler.devServer(components);
122
144
  previewServers.forEach(server => {
123
- this.serversMap[server.context.envRuntime.id] = server;
145
+ const envId = server.context.envRuntime.id;
146
+ this.serversMap[envId] = server;
147
+ this.serversState[envId] = {
148
+ isCompiling: false,
149
+ isReady: false,
150
+ isStarted: false,
151
+ isCompilationDone: false,
152
+ isPendingPublish: false
153
+ };
154
+
124
155
  // DON'T add wait! this promise never resolves, so it would stop the start process!
125
156
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
126
157
  server.listen();
@@ -175,9 +206,9 @@ class PreviewStartPlugin {
175
206
  });
176
207
  }
177
208
  handleOnStartCompiling(id) {
178
- this.serversState[id] = {
209
+ this.serversState[id] = _objectSpread(_objectSpread({}, this.serversState[id]), {}, {
179
210
  isCompiling: true
180
- };
211
+ });
181
212
  const spinnerId = getSpinnerId(id);
182
213
  const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));
183
214
  const exists = this.logger.multiSpinner.spinners[spinnerId];
@@ -188,12 +219,13 @@ class PreviewStartPlugin {
188
219
  }
189
220
  }
190
221
  handleOnDoneCompiling(id, results, showInternalUrls) {
191
- this.serversState[id] = {
222
+ this.serversState[id] = _objectSpread(_objectSpread({}, this.serversState[id]), {}, {
192
223
  isCompiling: false,
193
224
  isReady: true,
225
+ isCompilationDone: true,
194
226
  errors: results.errors,
195
227
  warnings: results.warnings
196
- };
228
+ });
197
229
  const previewServer = this.serversMap[id] || this.pendingServers.get(id);
198
230
  const spinnerId = getSpinnerId(id);
199
231
  const spinner = this.logger.multiSpinner.spinners[spinnerId];
@@ -220,6 +252,15 @@ class PreviewStartPlugin {
220
252
  }
221
253
  const noneAreCompiling = Object.values(this.serversState).every(x => !x.isCompiling);
222
254
  if (noneAreCompiling) this.setReady();
255
+ if (this.serversState[id]?.isPendingPublish) {
256
+ const server = this.serversMap[id];
257
+ if (server) {
258
+ this.serversState[id].isPendingPublish = false;
259
+ this.publishServerStarted(server).catch(err => {
260
+ this.logger.error(`failed to publish server started event for ${server.context.envRuntime.id}`, err);
261
+ });
262
+ }
263
+ }
223
264
  }
224
265
  get whenReady() {
225
266
  return this.readyPromise;
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_bundler","_previewCli","_previewCli2","_compiler","_watcher","_chalk","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","logger","watcher","graphql","Map","Promise","resolve","setReady","sub","BundlerAspect","id","event","type","NewDevServersCreatedEvent","TYPE","onNewDevServersCreated","componentsServers","ComponentsServerStartedEvent","onComponentServerStarted","componentsServer","componentServer","startedEnvId","context","envRuntime","serversMap","wasPending","pendingServers","has","delete","index","previewServers","findIndex","s","push","uiServer","getUIServer","addComponentServerProxy","publish","ComponentServerStartedEvent","componentServers","servers","server","envId","set","listen","err","error","initiate","options","listenToDevServers","showInternalUrls","components","getComponentsByUserInput","pattern","devServer","forEach","watch","spawnTSServer","checkTypes","CheckTypes","None","preCompile","compile","initiator","CompilationInitiator","Start","catch","msg","console","message","concat","getProxy","proxyConfigs","map","target","port","ws","flatten","SubscribeToEvents","onStart","handleOnStartCompiling","onDone","results","handleOnDoneCompiling","SubscribeToWebpackEvents","serversState","isCompiling","spinnerId","getSpinnerId","text","getSpinnerCompilingMessage","get","exists","multiSpinner","spinners","add","isReady","errors","warnings","previewServer","spinner","isActive","hasErrors","length","getWarningsWithoutIgnored","hasWarnings","url","getSpinnerDoneMessage","undefined","fail","warn","succeed","noneAreCompiling","values","every","x","whenReady","readyPromise","exports","IGNORE_WARNINGS","filter","warning","find","reg","match","verbose","prefix","chalk","cyan","includedEnvs","relatedContexts","stringifyIncludedEnvs","errorsTxt","join","errorsTxtWithTitle","red","warningsTxt","warningsTxtWithTitle","yellow","urlMessage"],"sources":["preview.start-plugin.tsx"],"sourcesContent":["import { flatten } from 'lodash';\nimport { BundlerAspect, BundlerMain, ComponentServer, ComponentServerStartedEvent, ComponentsServerStartedEvent, NewDevServersCreatedEvent } from '@teambit/bundler';\nimport { PubsubMain } from '@teambit/pubsub';\nimport { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';\nimport { Workspace } from '@teambit/workspace';\nimport { SubscribeToEvents } from '@teambit/preview.cli.dev-server-events-listener';\nimport { SubscribeToWebpackEvents } from '@teambit/preview.cli.webpack-events-listener';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { Logger } from '@teambit/logger';\nimport { CheckTypes, WatcherMain } from '@teambit/watcher';\nimport { GraphqlMain } from '@teambit/graphql';\nimport chalk from 'chalk';\n\ntype ServerState = {\n isCompiling?: boolean;\n isReady?: boolean;\n errors?: Error[];\n warnings?: Error[];\n results?: any[];\n};\n\ntype ServerStateMap = Record<string, ServerState>;\n\nexport class PreviewStartPlugin implements StartPlugin {\n previewServers: ComponentServer[] = [];\n serversState: ServerStateMap = {};\n serversMap: Record<string, ComponentServer> = {};\n private pendingServers: Map<string, ComponentServer> = new Map();\n\n constructor(\n private workspace: Workspace,\n private bundler: BundlerMain,\n private ui: UiMain,\n private pubsub: PubsubMain,\n private logger: Logger,\n private watcher: WatcherMain,\n private graphql: GraphqlMain\n ) {\n this.pubsub.sub(BundlerAspect.id, async (event) => {\n if (event.type === NewDevServersCreatedEvent.TYPE) {\n await this.onNewDevServersCreated(event.componentsServers);\n }\n if (event.type === ComponentsServerStartedEvent.TYPE) {\n await this.onComponentServerStarted(event.componentsServer);\n }\n });\n }\n\n async onComponentServerStarted(componentServer: ComponentServer) {\n const startedEnvId = componentServer.context.envRuntime.id;\n this.serversMap[startedEnvId] = componentServer;\n const wasPending = this.pendingServers.has(startedEnvId);\n this.pendingServers.delete(startedEnvId);\n\n const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);\n if (index >= 0) {\n this.previewServers[index] = componentServer;\n } else {\n this.previewServers.push(componentServer);\n }\n\n const uiServer = this.ui.getUIServer();\n\n if (uiServer) {\n uiServer.addComponentServerProxy(componentServer);\n if (wasPending) {\n await this.graphql.pubsub.publish(ComponentServerStartedEvent, {\n componentServers: componentServer,\n });\n }\n }\n }\n\n async onNewDevServersCreated(servers: ComponentServer[]) {\n for (const server of servers) {\n const envId = server.context.envRuntime.id;\n this.pendingServers.set(envId, server);\n try {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n } catch (err) {\n this.logger.error(`failed to start server for ${envId}`, err);\n }\n }\n }\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers(options.showInternalUrls);\n const components = await this.workspace.getComponentsByUserInput(!options.pattern, options.pattern);\n // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.\n const previewServers = await this.bundler.devServer(components);\n previewServers.forEach((server) => {\n this.serversMap[server.context.envRuntime.id] = server;\n // DON'T add wait! this promise never resolves, so it would stop the start process!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n });\n this.watcher\n .watch({\n spawnTSServer: true,\n checkTypes: CheckTypes.None,\n preCompile: false,\n compile: true,\n initiator: CompilationInitiator.Start,\n })\n .catch((err) => {\n const msg = `watcher found an error`;\n this.logger.error(msg, err);\n this.logger.console(`${msg}, ${err.message}`);\n });\n this.previewServers = this.previewServers.concat(previewServers);\n }\n\n getProxy(): ProxyEntry[] {\n const proxyConfigs = this.previewServers.map<ProxyEntry[]>((server) => {\n return [\n {\n context: [`/preview/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n },\n {\n context: [`/_hmr/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n ws: true,\n },\n ];\n });\n\n return flatten(proxyConfigs);\n }\n\n // TODO: this should be a part of the devServer\n private listenToDevServers(showInternalUrls?: boolean) {\n // keep state changes immutable!\n SubscribeToEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n // @deprecated\n // for legacy webpack bit report plugin\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n }\n\n private handleOnStartCompiling(id: string) {\n this.serversState[id] = { isCompiling: true };\n const spinnerId = getSpinnerId(id);\n const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));\n const exists = this.logger.multiSpinner.spinners[spinnerId];\n if (!exists) {\n this.logger.multiSpinner.add(spinnerId, { text });\n }\n }\n\n private handleOnDoneCompiling(id: string, results, showInternalUrls?: boolean) {\n this.serversState[id] = {\n isCompiling: false,\n isReady: true,\n errors: results.errors,\n warnings: results.warnings,\n };\n const previewServer = this.serversMap[id] || this.pendingServers.get(id);\n const spinnerId = getSpinnerId(id);\n const spinner = this.logger.multiSpinner.spinners[spinnerId];\n if (spinner && spinner.isActive()) {\n const errors = results.errors || [];\n const hasErrors = !!errors.length;\n const warnings = getWarningsWithoutIgnored(results.warnings);\n const hasWarnings = !!warnings.length;\n const url = `http://localhost:${previewServer.port}`;\n const text = getSpinnerDoneMessage(this.serversMap[id], errors, warnings, url, undefined, showInternalUrls);\n if (hasErrors) {\n this.logger.multiSpinner.fail(spinnerId, { text });\n } else if (hasWarnings) {\n this.logger.multiSpinner.warn(spinnerId, { text });\n } else {\n this.logger.multiSpinner.succeed(spinnerId, { text });\n }\n }\n\n const noneAreCompiling = Object.values(this.serversState).every((x) => !x.isCompiling);\n if (noneAreCompiling) this.setReady();\n }\n\n private setReady: () => void;\n private readyPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady(): Promise<void> {\n return this.readyPromise;\n }\n}\n\nfunction getWarningsWithoutIgnored(warnings?: Error[]): Error[] {\n if (!warnings || !warnings.length) return [];\n const IGNORE_WARNINGS = [\n // Webpack 5+ has no facility to disable this warning.\n // System.import is used in @angular/core for deprecated string-form lazy routes\n /System.import\\(\\) is deprecated and will be removed soon/i,\n // We need to include all the files in the compilation because we don't know what people will use in their compositions\n /is part of the TypeScript compilation but it's unused/i,\n // https://github.com/webpack-contrib/source-map-loader/blob/b2de4249c7431dd8432da607e08f0f65e9d64219/src/index.js#L83\n /Failed to parse source map from/,\n ];\n warnings.filter((warning) => !IGNORE_WARNINGS.find((reg) => warning?.message?.match(reg)));\n return warnings;\n}\n\nfunction getSpinnerId(envId: string) {\n return `preview-${envId}`;\n}\n\nfunction getSpinnerCompilingMessage(server: ComponentServer, verbose = false) {\n const prefix = 'COMPILING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = `on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n return `${prefix} ${envId} ${includedEnvs}`;\n}\n\nfunction getSpinnerDoneMessage(\n server: ComponentServer,\n errors: Error[],\n warnings: Error[],\n url: string,\n verbose = false,\n showInternalUrls?: boolean\n) {\n const hasErrors = !!errors.length;\n const hasWarnings = !!warnings.length;\n const prefix = hasErrors ? 'FAILED' : 'RUNNING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = ` on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n const errorsTxt = hasErrors ? errors.map((err) => err.message).join('\\n') : '';\n const errorsTxtWithTitle = hasErrors ? chalk.red(`\\nErrors:\\n${errorsTxt}`) : '';\n const warningsTxt = hasWarnings ? warnings.map((warning) => warning.message).join('\\n') : '';\n const warningsTxtWithTitle = hasWarnings ? chalk.yellow(`\\nWarnings:\\n${warningsTxt}`) : '';\n\n const urlMessage = hasErrors || !showInternalUrls ? '' : `at ${chalk.cyan(url)}`;\n return `${prefix} ${envId}${includedEnvs} ${urlMessage} ${errorsTxtWithTitle} ${warningsTxtWithTitle}`;\n}\n\nfunction stringifyIncludedEnvs(includedEnvs: string[] = [], verbose = false) {\n if (includedEnvs.length < 2) return '';\n if (includedEnvs.length > 2 && !verbose) return ` ${includedEnvs.length} other envs`;\n return includedEnvs.join(', ');\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","data","require","_bundler","_previewCli","_previewCli2","_compiler","_watcher","_chalk","_interopRequireDefault","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","PreviewStartPlugin","constructor","workspace","bundler","ui","pubsub","logger","watcher","graphql","Map","Promise","resolve","setReady","sub","BundlerAspect","id","event","type","NewDevServersCreatedEvent","TYPE","onNewDevServersCreated","componentsServers","ComponentsServerStartedEvent","onComponentServerStarted","componentsServer","componentServer","startedEnvId","context","envRuntime","serversMap","wasPending","pendingServers","has","delete","serversState","isStarted","index","previewServers","findIndex","s","uiServer","getUIServer","addComponentServerProxy","isCompilationDone","publishServerStarted","isPendingPublish","console","server","publish","ComponentServerStartedEvent","componentServers","servers","envId","set","isCompiling","isReady","listen","err","error","initiate","options","listenToDevServers","showInternalUrls","components","getComponentsByUserInput","pattern","devServer","watch","spawnTSServer","checkTypes","CheckTypes","None","preCompile","compile","initiator","CompilationInitiator","Start","catch","msg","message","concat","getProxy","proxyConfigs","map","target","port","ws","flatten","SubscribeToEvents","onStart","handleOnStartCompiling","onDone","results","handleOnDoneCompiling","SubscribeToWebpackEvents","spinnerId","getSpinnerId","text","getSpinnerCompilingMessage","get","exists","multiSpinner","spinners","add","errors","warnings","previewServer","spinner","isActive","hasErrors","getWarningsWithoutIgnored","hasWarnings","url","getSpinnerDoneMessage","undefined","fail","warn","succeed","noneAreCompiling","values","every","x","whenReady","readyPromise","exports","IGNORE_WARNINGS","warning","find","reg","match","verbose","prefix","chalk","cyan","includedEnvs","relatedContexts","stringifyIncludedEnvs","errorsTxt","join","errorsTxtWithTitle","red","warningsTxt","warningsTxtWithTitle","yellow","urlMessage"],"sources":["preview.start-plugin.tsx"],"sourcesContent":["import { flatten } from 'lodash';\nimport { BundlerAspect, BundlerMain, ComponentServer, ComponentServerStartedEvent, ComponentsServerStartedEvent, NewDevServersCreatedEvent } from '@teambit/bundler';\nimport { PubsubMain } from '@teambit/pubsub';\nimport { ProxyEntry, StartPlugin, StartPluginOptions, UiMain } from '@teambit/ui';\nimport { Workspace } from '@teambit/workspace';\nimport { SubscribeToEvents } from '@teambit/preview.cli.dev-server-events-listener';\nimport { SubscribeToWebpackEvents } from '@teambit/preview.cli.webpack-events-listener';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { Logger } from '@teambit/logger';\nimport { CheckTypes, WatcherMain } from '@teambit/watcher';\nimport { GraphqlMain } from '@teambit/graphql';\nimport chalk from 'chalk';\n\ntype ServerState = {\n isCompiling?: boolean;\n isReady?: boolean;\n errors?: Error[];\n warnings?: Error[];\n results?: any[];\n isStarted?: boolean;\n isCompilationDone?: boolean;\n isPendingPublish?: boolean;\n};\n\ntype ServerStateMap = Record<string, ServerState>;\n\nexport class PreviewStartPlugin implements StartPlugin {\n previewServers: ComponentServer[] = [];\n serversState: ServerStateMap = {};\n serversMap: Record<string, ComponentServer> = {};\n private pendingServers: Map<string, ComponentServer> = new Map();\n\n constructor(\n private workspace: Workspace,\n private bundler: BundlerMain,\n private ui: UiMain,\n private pubsub: PubsubMain,\n private logger: Logger,\n private watcher: WatcherMain,\n private graphql: GraphqlMain\n ) {\n this.pubsub.sub(BundlerAspect.id, async (event) => {\n if (event.type === NewDevServersCreatedEvent.TYPE) {\n await this.onNewDevServersCreated(event.componentsServers);\n }\n if (event.type === ComponentsServerStartedEvent.TYPE) {\n await this.onComponentServerStarted(event.componentsServer);\n }\n });\n }\n\n async onComponentServerStarted(componentServer: ComponentServer) {\n const startedEnvId = componentServer.context.envRuntime.id;\n this.serversMap[startedEnvId] = componentServer;\n const wasPending = this.pendingServers.has(startedEnvId);\n this.pendingServers.delete(startedEnvId);\n\n this.serversState[startedEnvId] = {\n ...this.serversState[startedEnvId],\n isStarted: true\n };\n\n const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);\n if (index >= 0) {\n this.previewServers[index] = componentServer;\n } else {\n this.previewServers.push(componentServer);\n }\n\n const uiServer = this.ui.getUIServer();\n if (uiServer) {\n uiServer.addComponentServerProxy(componentServer);\n \n if (wasPending) {\n if (this.serversState[startedEnvId]?.isCompilationDone) {\n await this.publishServerStarted(componentServer);\n } else {\n this.serversState[startedEnvId] = {\n ...this.serversState[startedEnvId],\n isPendingPublish: true\n };\n this.logger.console(`Server ${startedEnvId} started but waiting for compilation to complete before publishing event.`);\n }\n }\n }\n }\n\n private async publishServerStarted(server: ComponentServer) {\n await this.graphql.pubsub.publish(ComponentServerStartedEvent, {\n componentServers: server,\n });\n }\n\n async onNewDevServersCreated(servers: ComponentServer[]) {\n for (const server of servers) {\n const envId = server.context.envRuntime.id;\n this.pendingServers.set(envId, server);\n \n this.serversState[envId] = {\n isCompiling: false,\n isReady: false,\n isStarted: false,\n isCompilationDone: false,\n isPendingPublish: false\n };\n \n try {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n } catch (err) {\n this.logger.error(`failed to start server for ${envId}`, err);\n }\n }\n }\n\n async initiate(options: StartPluginOptions) {\n this.listenToDevServers(options.showInternalUrls);\n const components = await this.workspace.getComponentsByUserInput(!options.pattern, options.pattern);\n // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.\n const previewServers = await this.bundler.devServer(components);\n previewServers.forEach((server) => {\n const envId = server.context.envRuntime.id;\n this.serversMap[envId] = server;\n \n this.serversState[envId] = {\n isCompiling: false,\n isReady: false,\n isStarted: false,\n isCompilationDone: false,\n isPendingPublish: false\n };\n \n // DON'T add wait! this promise never resolves, so it would stop the start process!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n server.listen();\n });\n this.watcher\n .watch({\n spawnTSServer: true,\n checkTypes: CheckTypes.None,\n preCompile: false,\n compile: true,\n initiator: CompilationInitiator.Start,\n })\n .catch((err) => {\n const msg = `watcher found an error`;\n this.logger.error(msg, err);\n this.logger.console(`${msg}, ${err.message}`);\n });\n this.previewServers = this.previewServers.concat(previewServers);\n }\n\n getProxy(): ProxyEntry[] {\n const proxyConfigs = this.previewServers.map<ProxyEntry[]>((server) => {\n return [\n {\n context: [`/preview/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n },\n {\n context: [`/_hmr/${server.context.envRuntime.id}`],\n target: `http://localhost:${server.port}`,\n ws: true,\n },\n ];\n });\n\n return flatten(proxyConfigs);\n }\n\n // TODO: this should be a part of the devServer\n private listenToDevServers(showInternalUrls?: boolean) {\n // keep state changes immutable!\n SubscribeToEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n // @deprecated\n // for legacy webpack bit report plugin\n SubscribeToWebpackEvents(this.pubsub, {\n onStart: (id) => {\n this.handleOnStartCompiling(id);\n },\n onDone: (id, results) => {\n this.handleOnDoneCompiling(id, results, showInternalUrls);\n },\n });\n }\n\n private handleOnStartCompiling(id: string) {\n this.serversState[id] = { \n ...this.serversState[id],\n isCompiling: true \n };\n const spinnerId = getSpinnerId(id);\n const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));\n const exists = this.logger.multiSpinner.spinners[spinnerId];\n if (!exists) {\n this.logger.multiSpinner.add(spinnerId, { text });\n }\n }\n\n private handleOnDoneCompiling(id: string, results, showInternalUrls?: boolean) {\n this.serversState[id] = {\n ...this.serversState[id],\n isCompiling: false,\n isReady: true,\n isCompilationDone: true,\n errors: results.errors,\n warnings: results.warnings,\n };\n const previewServer = this.serversMap[id] || this.pendingServers.get(id);\n const spinnerId = getSpinnerId(id);\n const spinner = this.logger.multiSpinner.spinners[spinnerId];\n if (spinner && spinner.isActive()) {\n const errors = results.errors || [];\n const hasErrors = !!errors.length;\n const warnings = getWarningsWithoutIgnored(results.warnings);\n const hasWarnings = !!warnings.length;\n const url = `http://localhost:${previewServer.port}`;\n const text = getSpinnerDoneMessage(this.serversMap[id], errors, warnings, url, undefined, showInternalUrls);\n if (hasErrors) {\n this.logger.multiSpinner.fail(spinnerId, { text });\n } else if (hasWarnings) {\n this.logger.multiSpinner.warn(spinnerId, { text });\n } else {\n this.logger.multiSpinner.succeed(spinnerId, { text });\n }\n }\n\n const noneAreCompiling = Object.values(this.serversState).every((x) => !x.isCompiling);\n if (noneAreCompiling) this.setReady();\n if (this.serversState[id]?.isPendingPublish) {\n const server = this.serversMap[id];\n if (server) {\n this.serversState[id].isPendingPublish = false;\n this.publishServerStarted(server).catch((err) => {\n this.logger.error(`failed to publish server started event for ${server.context.envRuntime.id}`, err);\n });\n }\n }\n }\n\n private setReady: () => void;\n private readyPromise = new Promise<void>((resolve) => (this.setReady = resolve));\n get whenReady(): Promise<void> {\n return this.readyPromise;\n }\n}\n\nfunction getWarningsWithoutIgnored(warnings?: Error[]): Error[] {\n if (!warnings || !warnings.length) return [];\n const IGNORE_WARNINGS = [\n // Webpack 5+ has no facility to disable this warning.\n // System.import is used in @angular/core for deprecated string-form lazy routes\n /System.import\\(\\) is deprecated and will be removed soon/i,\n // We need to include all the files in the compilation because we don't know what people will use in their compositions\n /is part of the TypeScript compilation but it's unused/i,\n // https://github.com/webpack-contrib/source-map-loader/blob/b2de4249c7431dd8432da607e08f0f65e9d64219/src/index.js#L83\n /Failed to parse source map from/,\n ];\n warnings.filter((warning) => !IGNORE_WARNINGS.find((reg) => warning?.message?.match(reg)));\n return warnings;\n}\n\nfunction getSpinnerId(envId: string) {\n return `preview-${envId}`;\n}\n\nfunction getSpinnerCompilingMessage(server: ComponentServer, verbose = false) {\n const prefix = 'COMPILING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = `on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n return `${prefix} ${envId} ${includedEnvs}`;\n}\n\nfunction getSpinnerDoneMessage(\n server: ComponentServer,\n errors: Error[],\n warnings: Error[],\n url: string,\n verbose = false,\n showInternalUrls?: boolean\n) {\n const hasErrors = !!errors.length;\n const hasWarnings = !!warnings.length;\n const prefix = hasErrors ? 'FAILED' : 'RUNNING';\n const envId = chalk.cyan(server.context.envRuntime.id);\n let includedEnvs = '';\n if (server.context.relatedContexts && server.context.relatedContexts.length > 1) {\n includedEnvs = ` on behalf of ${chalk.cyan(stringifyIncludedEnvs(server.context.relatedContexts, verbose))}`;\n }\n const errorsTxt = hasErrors ? errors.map((err) => err.message).join('\\n') : '';\n const errorsTxtWithTitle = hasErrors ? chalk.red(`\\nErrors:\\n${errorsTxt}`) : '';\n const warningsTxt = hasWarnings ? warnings.map((warning) => warning.message).join('\\n') : '';\n const warningsTxtWithTitle = hasWarnings ? chalk.yellow(`\\nWarnings:\\n${warningsTxt}`) : '';\n\n const urlMessage = hasErrors || !showInternalUrls ? '' : `at ${chalk.cyan(url)}`;\n return `${prefix} ${envId}${includedEnvs} ${urlMessage} ${errorsTxtWithTitle} ${warningsTxtWithTitle}`;\n}\n\nfunction stringifyIncludedEnvs(includedEnvs: string[] = [], verbose = false) {\n if (includedEnvs.length < 2) return '';\n if (includedEnvs.length > 2 && !verbose) return ` ${includedEnvs.length} other envs`;\n return includedEnvs.join(', ');\n}"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/preview",
3
- "version": "1.0.588",
3
+ "version": "1.0.592",
4
4
  "homepage": "https://bit.cloud/teambit/preview/preview",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.preview",
8
8
  "name": "preview",
9
- "version": "1.0.588"
9
+ "version": "1.0.592"
10
10
  },
11
11
  "dependencies": {
12
12
  "mime": "2.5.2",
@@ -31,36 +31,36 @@
31
31
  "@teambit/bit-error": "0.0.404",
32
32
  "@teambit/preview.cli.dev-server-events-listener": "0.0.1",
33
33
  "@teambit/react.webpack.react-webpack": "1.0.42",
34
- "@teambit/express": "0.0.1264",
35
- "@teambit/logger": "0.0.1258",
34
+ "@teambit/express": "0.0.1268",
35
+ "@teambit/logger": "0.0.1262",
36
36
  "@teambit/ui-foundation.ui.pages.static-error": "0.0.106",
37
- "@teambit/builder": "1.0.588",
38
- "@teambit/bundler": "1.0.588",
39
- "@teambit/component": "1.0.588",
37
+ "@teambit/builder": "1.0.592",
38
+ "@teambit/bundler": "1.0.592",
39
+ "@teambit/component": "1.0.592",
40
40
  "@teambit/preview.ui.component-preview": "1.0.21",
41
- "@teambit/aspect-loader": "1.0.588",
42
- "@teambit/cli": "0.0.1165",
43
- "@teambit/dependency-resolver": "1.0.588",
44
- "@teambit/envs": "1.0.588",
41
+ "@teambit/aspect-loader": "1.0.592",
42
+ "@teambit/cli": "0.0.1169",
43
+ "@teambit/dependency-resolver": "1.0.592",
44
+ "@teambit/envs": "1.0.592",
45
45
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.500",
46
46
  "@teambit/legacy.constants": "0.0.11",
47
47
  "@teambit/toolbox.crypto.sha1": "0.0.7",
48
- "@teambit/ui": "1.0.588",
49
- "@teambit/isolator": "1.0.588",
48
+ "@teambit/ui": "1.0.592",
49
+ "@teambit/isolator": "1.0.592",
50
50
  "@teambit/harmony.modules.harmony-root-generator": "0.0.16",
51
51
  "@teambit/component.sources": "0.0.99",
52
52
  "@teambit/toolbox.path.path": "0.0.8",
53
- "@teambit/cache": "0.0.1258",
54
- "@teambit/graphql": "1.0.588",
53
+ "@teambit/cache": "0.0.1262",
54
+ "@teambit/graphql": "1.0.592",
55
55
  "@teambit/harmony.modules.feature-toggle": "0.0.19",
56
- "@teambit/pkg": "1.0.588",
57
- "@teambit/pubsub": "1.0.588",
58
- "@teambit/scope": "1.0.588",
59
- "@teambit/watcher": "1.0.588",
60
- "@teambit/workspace": "1.0.588",
61
- "@teambit/compiler": "1.0.588",
56
+ "@teambit/pkg": "1.0.592",
57
+ "@teambit/pubsub": "1.0.592",
58
+ "@teambit/scope": "1.0.592",
59
+ "@teambit/watcher": "1.0.592",
60
+ "@teambit/workspace": "1.0.592",
61
+ "@teambit/compiler": "1.0.592",
62
62
  "@teambit/preview.cli.webpack-events-listener": "0.0.177",
63
- "@teambit/webpack": "1.0.588"
63
+ "@teambit/webpack": "1.0.592"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/mime": "2.0.3",
@@ -17,6 +17,9 @@ type ServerState = {
17
17
  errors?: Error[];
18
18
  warnings?: Error[];
19
19
  results?: any[];
20
+ isStarted?: boolean;
21
+ isCompilationDone?: boolean;
22
+ isPendingPublish?: boolean;
20
23
  };
21
24
 
22
25
  type ServerStateMap = Record<string, ServerState>;
@@ -52,6 +55,11 @@ export class PreviewStartPlugin implements StartPlugin {
52
55
  const wasPending = this.pendingServers.has(startedEnvId);
53
56
  this.pendingServers.delete(startedEnvId);
54
57
 
58
+ this.serversState[startedEnvId] = {
59
+ ...this.serversState[startedEnvId],
60
+ isStarted: true
61
+ };
62
+
55
63
  const index = this.previewServers.findIndex(s => s.context.envRuntime.id === startedEnvId);
56
64
  if (index >= 0) {
57
65
  this.previewServers[index] = componentServer;
@@ -60,21 +68,42 @@ export class PreviewStartPlugin implements StartPlugin {
60
68
  }
61
69
 
62
70
  const uiServer = this.ui.getUIServer();
63
-
64
71
  if (uiServer) {
65
72
  uiServer.addComponentServerProxy(componentServer);
73
+
66
74
  if (wasPending) {
67
- await this.graphql.pubsub.publish(ComponentServerStartedEvent, {
68
- componentServers: componentServer,
69
- });
75
+ if (this.serversState[startedEnvId]?.isCompilationDone) {
76
+ await this.publishServerStarted(componentServer);
77
+ } else {
78
+ this.serversState[startedEnvId] = {
79
+ ...this.serversState[startedEnvId],
80
+ isPendingPublish: true
81
+ };
82
+ this.logger.console(`Server ${startedEnvId} started but waiting for compilation to complete before publishing event.`);
83
+ }
70
84
  }
71
85
  }
72
86
  }
73
87
 
88
+ private async publishServerStarted(server: ComponentServer) {
89
+ await this.graphql.pubsub.publish(ComponentServerStartedEvent, {
90
+ componentServers: server,
91
+ });
92
+ }
93
+
74
94
  async onNewDevServersCreated(servers: ComponentServer[]) {
75
95
  for (const server of servers) {
76
96
  const envId = server.context.envRuntime.id;
77
97
  this.pendingServers.set(envId, server);
98
+
99
+ this.serversState[envId] = {
100
+ isCompiling: false,
101
+ isReady: false,
102
+ isStarted: false,
103
+ isCompilationDone: false,
104
+ isPendingPublish: false
105
+ };
106
+
78
107
  try {
79
108
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
80
109
  server.listen();
@@ -90,7 +119,17 @@ export class PreviewStartPlugin implements StartPlugin {
90
119
  // TODO: logic for creating preview servers must be refactored to this aspect from the DevServer aspect.
91
120
  const previewServers = await this.bundler.devServer(components);
92
121
  previewServers.forEach((server) => {
93
- this.serversMap[server.context.envRuntime.id] = server;
122
+ const envId = server.context.envRuntime.id;
123
+ this.serversMap[envId] = server;
124
+
125
+ this.serversState[envId] = {
126
+ isCompiling: false,
127
+ isReady: false,
128
+ isStarted: false,
129
+ isCompilationDone: false,
130
+ isPendingPublish: false
131
+ };
132
+
94
133
  // DON'T add wait! this promise never resolves, so it would stop the start process!
95
134
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
96
135
  server.listen();
@@ -153,7 +192,10 @@ export class PreviewStartPlugin implements StartPlugin {
153
192
  }
154
193
 
155
194
  private handleOnStartCompiling(id: string) {
156
- this.serversState[id] = { isCompiling: true };
195
+ this.serversState[id] = {
196
+ ...this.serversState[id],
197
+ isCompiling: true
198
+ };
157
199
  const spinnerId = getSpinnerId(id);
158
200
  const text = getSpinnerCompilingMessage(this.serversMap[id] || this.pendingServers.get(id));
159
201
  const exists = this.logger.multiSpinner.spinners[spinnerId];
@@ -164,8 +206,10 @@ export class PreviewStartPlugin implements StartPlugin {
164
206
 
165
207
  private handleOnDoneCompiling(id: string, results, showInternalUrls?: boolean) {
166
208
  this.serversState[id] = {
209
+ ...this.serversState[id],
167
210
  isCompiling: false,
168
211
  isReady: true,
212
+ isCompilationDone: true,
169
213
  errors: results.errors,
170
214
  warnings: results.warnings,
171
215
  };
@@ -190,6 +234,15 @@ export class PreviewStartPlugin implements StartPlugin {
190
234
 
191
235
  const noneAreCompiling = Object.values(this.serversState).every((x) => !x.isCompiling);
192
236
  if (noneAreCompiling) this.setReady();
237
+ if (this.serversState[id]?.isPendingPublish) {
238
+ const server = this.serversMap[id];
239
+ if (server) {
240
+ this.serversState[id].isPendingPublish = false;
241
+ this.publishServerStarted(server).catch((err) => {
242
+ this.logger.error(`failed to publish server started event for ${server.context.envRuntime.id}`, err);
243
+ });
244
+ }
245
+ }
193
246
  }
194
247
 
195
248
  private setReady: () => void;
@@ -257,4 +310,4 @@ function stringifyIncludedEnvs(includedEnvs: string[] = [], verbose = false) {
257
310
  if (includedEnvs.length < 2) return '';
258
311
  if (includedEnvs.length > 2 && !verbose) return ` ${includedEnvs.length} other envs`;
259
312
  return includedEnvs.join(', ');
260
- }
313
+ }