@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.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.preview_preview@1.0.
|
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
|
-
|
100
|
-
|
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
|
-
|
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.
|
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.
|
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.
|
35
|
-
"@teambit/logger": "0.0.
|
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.
|
38
|
-
"@teambit/bundler": "1.0.
|
39
|
-
"@teambit/component": "1.0.
|
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.
|
42
|
-
"@teambit/cli": "0.0.
|
43
|
-
"@teambit/dependency-resolver": "1.0.
|
44
|
-
"@teambit/envs": "1.0.
|
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.
|
49
|
-
"@teambit/isolator": "1.0.
|
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.
|
54
|
-
"@teambit/graphql": "1.0.
|
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.
|
57
|
-
"@teambit/pubsub": "1.0.
|
58
|
-
"@teambit/scope": "1.0.
|
59
|
-
"@teambit/watcher": "1.0.
|
60
|
-
"@teambit/workspace": "1.0.
|
61
|
-
"@teambit/compiler": "1.0.
|
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.
|
63
|
+
"@teambit/webpack": "1.0.592"
|
64
64
|
},
|
65
65
|
"devDependencies": {
|
66
66
|
"@types/mime": "2.0.3",
|
package/preview.start-plugin.tsx
CHANGED
@@ -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
|
-
|
68
|
-
|
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
|
-
|
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] = {
|
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
|
+
}
|