@teambit/workspace 0.0.529 → 0.0.530

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.
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export type { default as Workspace } from './workspace';
3
3
  export type { ResolvedComponent } from '@teambit/harmony.modules.resolved-component';
4
4
  export type { AlreadyExistsError as ComponentConfigFileAlreadyExistsError } from './component-config-file';
5
5
  export type { WorkspaceMain } from './workspace.main.runtime';
6
+ export type { WatchOptions } from './watch/watcher';
6
7
  export * from './events';
7
8
  export type { WorkspaceUI } from './workspace.ui.runtime';
8
9
  export type { SerializableResults, OnComponentEventResult } from './on-component-events';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["WorkspaceAspect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;eAIeA,4B","sourcesContent":["import { WorkspaceAspect } from './workspace.aspect';\n// eslint-disable-next-line import/prefer-default-export\nexport type { default as Workspace } from './workspace';\n// TODO: change to module path once track the utils folder\nexport type { ResolvedComponent } from '@teambit/harmony.modules.resolved-component';\nexport type { AlreadyExistsError as ComponentConfigFileAlreadyExistsError } from './component-config-file';\nexport type { WorkspaceMain } from './workspace.main.runtime';\n\nexport * from './events';\nexport type { WorkspaceUI } from './workspace.ui.runtime';\nexport type { SerializableResults, OnComponentEventResult } from './on-component-events';\nexport { ComponentStatus } from './workspace-component';\nexport { WorkspaceModelComponent } from './ui/workspace/workspace-model';\nexport { WorkspaceContext } from './ui/workspace/workspace-context';\nexport type { WorkspaceComponent } from './workspace-component';\n\nexport { WorkspaceAspect };\nexport default WorkspaceAspect;\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["WorkspaceAspect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;eAIeA,4B","sourcesContent":["import { WorkspaceAspect } from './workspace.aspect';\n// eslint-disable-next-line import/prefer-default-export\nexport type { default as Workspace } from './workspace';\n// TODO: change to module path once track the utils folder\nexport type { ResolvedComponent } from '@teambit/harmony.modules.resolved-component';\nexport type { AlreadyExistsError as ComponentConfigFileAlreadyExistsError } from './component-config-file';\nexport type { WorkspaceMain } from './workspace.main.runtime';\nexport type { WatchOptions } from './watch/watcher';\nexport * from './events';\nexport type { WorkspaceUI } from './workspace.ui.runtime';\nexport type { SerializableResults, OnComponentEventResult } from './on-component-events';\nexport { ComponentStatus } from './workspace-component';\nexport { WorkspaceModelComponent } from './ui/workspace/workspace-model';\nexport { WorkspaceContext } from './ui/workspace/workspace-context';\nexport type { WorkspaceComponent } from './workspace-component';\n\nexport { WorkspaceAspect };\nexport default WorkspaceAspect;\n"]}
@@ -4,8 +4,8 @@ export declare type SerializableResults = {
4
4
  results: any;
5
5
  toString: () => string;
6
6
  };
7
- export declare type OnComponentChange = (component: Component, initiator?: CompilationInitiator) => Promise<SerializableResults>;
8
- export declare type OnComponentAdd = (component: Component) => Promise<SerializableResults>;
7
+ export declare type OnComponentChange = (component: Component, files: string[], initiator?: CompilationInitiator) => Promise<SerializableResults>;
8
+ export declare type OnComponentAdd = (component: Component, files: string[]) => Promise<SerializableResults>;
9
9
  export declare type OnComponentRemove = (componentId: ComponentID) => Promise<SerializableResults>;
10
10
  export declare type OnComponentEventResult = {
11
11
  extensionId: string;
@@ -32,17 +32,28 @@ const formatWatchPathsSortByComponent = trackDirs => {
32
32
  ${_chalk().default.green('√')} SUCCESS\t${trackDirs[watchPath]}\n
33
33
  \t - ${watchPath}\n\n`, ` ${_chalk().default.underline('STATUS\t\tCOMPONENT ID')}\n`);
34
34
  };
35
+ /**
36
+ * todo: this was implemented incorrectly.
37
+ * the original idea of `SerializableResults` was to have each one of the aspects registered to the slot, the
38
+ * ability to have their own formatting to their results, and then `toString()` method to print them.
39
+ * Here, the printing is specifically to the Compiler aspect. It should move to where it belongs.
40
+ */
41
+
35
42
 
36
43
  exports.formatWatchPathsSortByComponent = formatWatchPathsSortByComponent;
37
44
 
38
45
  function formatCompileResults(compileResults, verbose) {
39
- if (!compileResults.length) return '';
40
- return compileResults.map(compileResult => {
46
+ if (!compileResults.length || !Array.isArray(compileResults)) return '';
47
+ return compileResults.filter(compileResult => {
41
48
  var _compileResult$result, _compileResult$result2;
42
49
 
50
+ return ((_compileResult$result = compileResult.results) === null || _compileResult$result === void 0 ? void 0 : _compileResult$result.results) && Array.isArray((_compileResult$result2 = compileResult.results) === null || _compileResult$result2 === void 0 ? void 0 : _compileResult$result2.results);
51
+ }).map(compileResult => {
52
+ var _compileResult$result3, _compileResult$result4;
53
+
43
54
  return {
44
55
  extensionId: compileResult.extensionId,
45
- resultsForExtension: (_compileResult$result = compileResult.results) === null || _compileResult$result === void 0 ? void 0 : (_compileResult$result2 = _compileResult$result.results) === null || _compileResult$result2 === void 0 ? void 0 : _compileResult$result2.map(resultForExtension => ({
56
+ resultsForExtension: (_compileResult$result3 = compileResult.results) === null || _compileResult$result3 === void 0 ? void 0 : (_compileResult$result4 = _compileResult$result3.results) === null || _compileResult$result4 === void 0 ? void 0 : _compileResult$result4.map(resultForExtension => ({
46
57
  component: resultForExtension.component,
47
58
  componentFilesAsString: verboseComponentFilesArrayToString(resultForExtension.buildResults)
48
59
  }))
@@ -1 +1 @@
1
- {"version":3,"sources":["output-formatter.ts"],"names":["verboseComponentFilesArrayToString","componentFiles","reduce","outputString","filePath","resultsForExtensionArrayToString","resultsForExtension","verbose","resultForExtension","chalk","green","component","componentFilesAsString","formatWatchPathsSortByComponent","trackDirs","Object","keys","watchPath","underline","formatCompileResults","compileResults","length","map","compileResult","extensionId","results","buildResults"],"mappings":";;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA,MAAMA,kCAAkC,GAAIC,cAAD,IAAoB;AAC7D,SAAOA,cAAc,CAACC,MAAf,CAAsB,CAACC,YAAD,EAAeC,QAAf,KAA6B,GAAED,YAAa,SAAQC,QAAS,IAAnF,EAAyF,EAAzF,CAAP;AACD,CAFD;;AAIA,MAAMC,gCAAgC,GAAG,CAACC,mBAAD,EAAsBC,OAAtB,KAAkC;AACzE,SAAOD,mBAAmB,CAACJ,MAApB,CACL,CAACC,YAAD,EAAeK,kBAAf,KACG,GAAEL,YAAa,GAAEM,iBAAMC,KAAN,CAAY,GAAZ,CAAiB,YAAWF,kBAAkB,CAACG,SAAU;AACjF,OAAOJ,OAAO,GAAGC,kBAAkB,CAACI,sBAAtB,GAA+C,EAAG,IAHvD,EAIL,EAJK,CAAP;AAMD,CAPD;;AASO,MAAMC,+BAA+B,GAAIC,SAAD,IAAe;AAC5D,SAAOC,MAAM,CAACC,IAAP,CAAYF,SAAZ,EAAuBZ,MAAvB,CACL,CAACC,YAAD,EAAec,SAAf,KACG,GAAEd,YAAa;AACtB,MAAMM,iBAAMC,KAAN,CAAY,GAAZ,CAAiB,aAAYI,SAAS,CAACG,SAAD,CAAY;AACxD,WAAWA,SAAU,MAJZ,EAKJ,IAAGR,iBAAMS,SAAN,CAAgB,wBAAhB,CAA0C,IALzC,CAAP;AAOD,CARM;;;;AAUA,SAASC,oBAAT,CAA8BC,cAA9B,EAAwEb,OAAxE,EAA0F;AAC/F,MAAI,CAACa,cAAc,CAACC,MAApB,EAA4B,OAAO,EAAP;AAC5B,SAAOD,cAAc,CAClBE,GADI,CACCC,aAAD;AAAA;;AAAA,WAAoB;AACvBC,MAAAA,WAAW,EAAED,aAAa,CAACC,WADJ;AAEvBlB,MAAAA,mBAAmB,2BAAEiB,aAAa,CAACE,OAAhB,oFAAE,sBAAuBA,OAAzB,2DAAE,uBAAgCH,GAAhC,CAAqCd,kBAAD,KAAyB;AAChFG,QAAAA,SAAS,EAAEH,kBAAkB,CAACG,SADkD;AAEhFC,QAAAA,sBAAsB,EAAEZ,kCAAkC,CAACQ,kBAAkB,CAACkB,YAApB;AAFsB,OAAzB,CAApC;AAFE,KAApB;AAAA,GADA,EAQJxB,MARI,CASH,CAACC,YAAD,EAAeoB,aAAf,KACG,GAAEpB,YAAa;AACxB,IAAIE,gCAAgC,CAACkB,aAAa,CAACjB,mBAAf,EAAoCC,OAApC,CAA6C,EAXxE,EAYF,IAAGE,iBAAMS,SAAN,CAAgB,sBAAhB,CAAwC,EAZzC,CAAP;AAcD","sourcesContent":["import chalk from 'chalk';\nimport { OnComponentEventResult } from '../on-component-events';\n\nconst verboseComponentFilesArrayToString = (componentFiles) => {\n return componentFiles.reduce((outputString, filePath) => `${outputString} \\t - ${filePath}\\n`, ``);\n};\n\nconst resultsForExtensionArrayToString = (resultsForExtension, verbose) => {\n return resultsForExtension.reduce(\n (outputString, resultForExtension) =>\n `${outputString}${chalk.green('√')}SUCCESS\\t${resultForExtension.component}\\n\n ${verbose ? resultForExtension.componentFilesAsString : ''}\\n`,\n ''\n );\n};\n\nexport const formatWatchPathsSortByComponent = (trackDirs) => {\n return Object.keys(trackDirs).reduce(\n (outputString, watchPath) =>\n `${outputString}\n ${chalk.green('√')} SUCCESS\\t${trackDirs[watchPath]}\\n\n \\t - ${watchPath}\\n\\n`,\n ` ${chalk.underline('STATUS\\t\\tCOMPONENT ID')}\\n`\n );\n};\n\nexport function formatCompileResults(compileResults: OnComponentEventResult[], verbose: boolean) {\n if (!compileResults.length) return '';\n return compileResults\n .map((compileResult) => ({\n extensionId: compileResult.extensionId,\n resultsForExtension: compileResult.results?.results?.map((resultForExtension) => ({\n component: resultForExtension.component,\n componentFilesAsString: verboseComponentFilesArrayToString(resultForExtension.buildResults),\n })),\n }))\n .reduce(\n (outputString, compileResult) =>\n `${outputString}\n ${resultsForExtensionArrayToString(compileResult.resultsForExtension, verbose)}`,\n ` ${chalk.underline('STATUS\\tCOMPONENT ID')}`\n );\n}\n"]}
1
+ {"version":3,"sources":["output-formatter.ts"],"names":["verboseComponentFilesArrayToString","componentFiles","reduce","outputString","filePath","resultsForExtensionArrayToString","resultsForExtension","verbose","resultForExtension","chalk","green","component","componentFilesAsString","formatWatchPathsSortByComponent","trackDirs","Object","keys","watchPath","underline","formatCompileResults","compileResults","length","Array","isArray","filter","compileResult","results","map","extensionId","buildResults"],"mappings":";;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA,MAAMA,kCAAkC,GAAIC,cAAD,IAAoB;AAC7D,SAAOA,cAAc,CAACC,MAAf,CAAsB,CAACC,YAAD,EAAeC,QAAf,KAA6B,GAAED,YAAa,SAAQC,QAAS,IAAnF,EAAyF,EAAzF,CAAP;AACD,CAFD;;AAIA,MAAMC,gCAAgC,GAAG,CAACC,mBAAD,EAAsBC,OAAtB,KAAkC;AACzE,SAAOD,mBAAmB,CAACJ,MAApB,CACL,CAACC,YAAD,EAAeK,kBAAf,KACG,GAAEL,YAAa,GAAEM,iBAAMC,KAAN,CAAY,GAAZ,CAAiB,YAAWF,kBAAkB,CAACG,SAAU;AACjF,OAAOJ,OAAO,GAAGC,kBAAkB,CAACI,sBAAtB,GAA+C,EAAG,IAHvD,EAIL,EAJK,CAAP;AAMD,CAPD;;AASO,MAAMC,+BAA+B,GAAIC,SAAD,IAAe;AAC5D,SAAOC,MAAM,CAACC,IAAP,CAAYF,SAAZ,EAAuBZ,MAAvB,CACL,CAACC,YAAD,EAAec,SAAf,KACG,GAAEd,YAAa;AACtB,MAAMM,iBAAMC,KAAN,CAAY,GAAZ,CAAiB,aAAYI,SAAS,CAACG,SAAD,CAAY;AACxD,WAAWA,SAAU,MAJZ,EAKJ,IAAGR,iBAAMS,SAAN,CAAgB,wBAAhB,CAA0C,IALzC,CAAP;AAOD,CARM;AAUP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASC,oBAAT,CAA8BC,cAA9B,EAAwEb,OAAxE,EAA0F;AAC/F,MAAI,CAACa,cAAc,CAACC,MAAhB,IAA0B,CAACC,KAAK,CAACC,OAAN,CAAcH,cAAd,CAA/B,EAA8D,OAAO,EAAP;AAC9D,SAAOA,cAAc,CAClBI,MADI,CACIC,aAAD;AAAA;;AAAA,WAAmB,0BAAAA,aAAa,CAACC,OAAd,gFAAuBA,OAAvB,KAAkCJ,KAAK,CAACC,OAAN,2BAAcE,aAAa,CAACC,OAA5B,2DAAc,uBAAuBA,OAArC,CAArD;AAAA,GADH,EAEJC,GAFI,CAECF,aAAD;AAAA;;AAAA,WAAoB;AACvBG,MAAAA,WAAW,EAAEH,aAAa,CAACG,WADJ;AAEvBtB,MAAAA,mBAAmB,4BAAEmB,aAAa,CAACC,OAAhB,qFAAE,uBAAuBA,OAAzB,2DAAE,uBAAgCC,GAAhC,CAAqCnB,kBAAD,KAAyB;AAChFG,QAAAA,SAAS,EAAEH,kBAAkB,CAACG,SADkD;AAEhFC,QAAAA,sBAAsB,EAAEZ,kCAAkC,CAACQ,kBAAkB,CAACqB,YAApB;AAFsB,OAAzB,CAApC;AAFE,KAApB;AAAA,GAFA,EASJ3B,MATI,CAUH,CAACC,YAAD,EAAesB,aAAf,KACG,GAAEtB,YAAa;AACxB,IAAIE,gCAAgC,CAACoB,aAAa,CAACnB,mBAAf,EAAoCC,OAApC,CAA6C,EAZxE,EAaF,IAAGE,iBAAMS,SAAN,CAAgB,sBAAhB,CAAwC,EAbzC,CAAP;AAeD","sourcesContent":["import chalk from 'chalk';\nimport { OnComponentEventResult } from '../on-component-events';\n\nconst verboseComponentFilesArrayToString = (componentFiles) => {\n return componentFiles.reduce((outputString, filePath) => `${outputString} \\t - ${filePath}\\n`, ``);\n};\n\nconst resultsForExtensionArrayToString = (resultsForExtension, verbose) => {\n return resultsForExtension.reduce(\n (outputString, resultForExtension) =>\n `${outputString}${chalk.green('√')}SUCCESS\\t${resultForExtension.component}\\n\n ${verbose ? resultForExtension.componentFilesAsString : ''}\\n`,\n ''\n );\n};\n\nexport const formatWatchPathsSortByComponent = (trackDirs) => {\n return Object.keys(trackDirs).reduce(\n (outputString, watchPath) =>\n `${outputString}\n ${chalk.green('√')} SUCCESS\\t${trackDirs[watchPath]}\\n\n \\t - ${watchPath}\\n\\n`,\n ` ${chalk.underline('STATUS\\t\\tCOMPONENT ID')}\\n`\n );\n};\n\n/**\n * todo: this was implemented incorrectly.\n * the original idea of `SerializableResults` was to have each one of the aspects registered to the slot, the\n * ability to have their own formatting to their results, and then `toString()` method to print them.\n * Here, the printing is specifically to the Compiler aspect. It should move to where it belongs.\n */\nexport function formatCompileResults(compileResults: OnComponentEventResult[], verbose: boolean) {\n if (!compileResults.length || !Array.isArray(compileResults)) return '';\n return compileResults\n .filter((compileResult) => compileResult.results?.results && Array.isArray(compileResult.results?.results))\n .map((compileResult) => ({\n extensionId: compileResult.extensionId,\n resultsForExtension: compileResult.results?.results?.map((resultForExtension) => ({\n component: resultForExtension.component,\n componentFilesAsString: verboseComponentFilesArrayToString(resultForExtension.buildResults),\n })),\n }))\n .reduce(\n (outputString, compileResult) =>\n `${outputString}\n ${resultsForExtensionArrayToString(compileResult.resultsForExtension, verbose)}`,\n ` ${chalk.underline('STATUS\\tCOMPONENT ID')}`\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Command, CommandOptions } from '@teambit/cli';
2
2
  import type { Logger } from '@teambit/logger';
3
3
  import type { PubsubMain } from '@teambit/pubsub';
4
- import { Watcher } from './watcher';
4
+ import { Watcher, WatchOptions } from './watcher';
5
5
  import { OnComponentEventResult } from '../on-component-events';
6
6
  export declare class WatchCommand implements Command {
7
7
  private pubsub;
@@ -25,7 +25,5 @@ export declare class WatchCommand implements Command {
25
25
  constructor(pubsub: PubsubMain, logger: Logger, watcher: Watcher);
26
26
  private registerToEvents;
27
27
  private eventsListener;
28
- report(cliArgs: [], { verbose }: {
29
- verbose?: boolean;
30
- }): Promise<string>;
28
+ report(cliArgs: [], watchOpts: WatchOptions): Promise<string>;
31
29
  }
@@ -59,7 +59,10 @@ function _outputFormatter() {
59
59
  return data;
60
60
  }
61
61
 
62
- // import IDs and events
62
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
63
+
64
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
65
+
63
66
  class WatchCommand {
64
67
  constructor(
65
68
  /**
@@ -81,6 +84,9 @@ class WatchCommand {
81
84
  onAll: (event, path) => this.logger.console(`Event: "${event}". Path: ${path}`),
82
85
  onStart: () => {},
83
86
  onReady: (workspace, watchPathsSortByComponent, verbose) => {
87
+ // eslint-disable-next-line no-console
88
+ console.clear();
89
+
84
90
  if (verbose) {
85
91
  this.logger.console((0, _outputFormatter().formatWatchPathsSortByComponent)(watchPathsSortByComponent));
86
92
  }
@@ -88,6 +94,9 @@ class WatchCommand {
88
94
  this.logger.console(_chalk().default.yellow(`Watching for component changes in workspace ${workspace.config.name} (${(0, _moment().default)().format('HH:mm:ss')})...\n`));
89
95
  },
90
96
  onChange: (filePath, buildResults, verbose, duration) => {
97
+ // eslint-disable-next-line no-console
98
+ console.clear();
99
+
91
100
  if (!buildResults.length) {
92
101
  this.logger.console(`The file ${filePath} has been changed, but nothing to compile.\n\n`);
93
102
  return;
@@ -99,6 +108,8 @@ class WatchCommand {
99
108
  this.logger.console(_chalk().default.yellow(`Watching for component changes (${(0, _moment().default)().format('HH:mm:ss')})...`));
100
109
  },
101
110
  onAdd: (filePath, buildResults, verbose, duration) => {
111
+ // eslint-disable-next-line no-console
112
+ console.clear();
102
113
  this.logger.console(`The file ${filePath} has been added.\n\n`);
103
114
  this.logger.console((0, _outputFormatter().formatCompileResults)(buildResults, verbose));
104
115
  this.logger.console(`Finished. (${duration}ms)`);
@@ -116,7 +127,7 @@ class WatchCommand {
116
127
  (0, _defineProperty2().default)(this, "alias", '');
117
128
  (0, _defineProperty2().default)(this, "group", 'development');
118
129
  (0, _defineProperty2().default)(this, "shortDescription", '');
119
- (0, _defineProperty2().default)(this, "options", [['v', 'verbose', 'showing npm verbose output for inspection and prints stack trace']]);
130
+ (0, _defineProperty2().default)(this, "options", [['v', 'verbose', 'showing npm verbose output for inspection and prints stack trace'], ['', 'skip-pre-compilation', 'skip the compilation step before starting to watch'], ['t', 'check-types', 'EXPERIMENTAL. for typescript files, load an tsserver instance to check types']]);
120
131
  (0, _defineProperty2().default)(this, "eventsListener", event => {
121
132
  switch (event.type) {
122
133
  case _compiler().CompilerErrorEvent.TYPE:
@@ -133,13 +144,10 @@ class WatchCommand {
133
144
  this.pubsub.sub(_compiler().CompilerAspect.id, this.eventsListener);
134
145
  }
135
146
 
136
- async report(cliArgs, {
137
- verbose = false
138
- }) {
139
- await this.watcher.watch({
140
- msgs: this.msgs,
141
- verbose
142
- });
147
+ async report(cliArgs, watchOpts) {
148
+ await this.watcher.watch(_objectSpread({
149
+ msgs: this.msgs
150
+ }, watchOpts));
143
151
  return 'watcher terminated';
144
152
  }
145
153
 
@@ -1 +1 @@
1
- {"version":3,"sources":["watch.cmd.tsx"],"names":["WatchCommand","constructor","pubsub","logger","watcher","onAll","event","path","console","onStart","onReady","workspace","watchPathsSortByComponent","verbose","chalk","yellow","config","name","format","onChange","filePath","buildResults","duration","length","onAdd","onUnlink","p","onError","err","type","CompilerErrorEvent","TYPE","data","error","registerToEvents","sub","CompilerAspect","id","eventsListener","report","cliArgs","watch","msgs"],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport moment from 'moment';\n\nimport { Command, CommandOptions } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport type { BitBaseEvent, PubsubMain } from '@teambit/pubsub';\n\n// import IDs and events\nimport { CompilerAspect, CompilerErrorEvent } from '@teambit/compiler';\n\nimport { Watcher } from './watcher';\nimport { formatCompileResults, formatWatchPathsSortByComponent } from './output-formatter';\nimport { OnComponentEventResult } from '../on-component-events';\n\nexport class WatchCommand implements Command {\n msgs = {\n onAll: (event, path) => this.logger.console(`Event: \"${event}\". Path: ${path}`),\n onStart: () => {},\n onReady: (workspace, watchPathsSortByComponent, verbose) => {\n if (verbose) {\n this.logger.console(formatWatchPathsSortByComponent(watchPathsSortByComponent));\n }\n this.logger.console(\n chalk.yellow(\n `Watching for component changes in workspace ${workspace.config.name} (${moment().format('HH:mm:ss')})...\\n`\n )\n );\n },\n onChange: (filePath: string, buildResults: OnComponentEventResult[], verbose: boolean, duration) => {\n if (!buildResults.length) {\n this.logger.console(`The file ${filePath} has been changed, but nothing to compile.\\n\\n`);\n return;\n }\n this.logger.console(`The file ${filePath} has been changed.\\n\\n`);\n this.logger.console(formatCompileResults(buildResults, verbose));\n this.logger.console(`Finished. (${duration}ms)`);\n this.logger.console(chalk.yellow(`Watching for component changes (${moment().format('HH:mm:ss')})...`));\n },\n onAdd: (filePath: string, buildResults: OnComponentEventResult[], verbose: boolean, duration) => {\n this.logger.console(`The file ${filePath} has been added.\\n\\n`);\n this.logger.console(formatCompileResults(buildResults, verbose));\n this.logger.console(`Finished. (${duration}ms)`);\n this.logger.console(chalk.yellow(`Watching for component changes (${moment().format('HH:mm:ss')})...`));\n },\n onUnlink: (p) => {\n this.logger.console(`file ${p} has been removed`);\n },\n onError: (err) => {\n this.logger.console(`Watcher error ${err}`);\n },\n };\n\n name = 'watch';\n description = 'watch a set of components';\n alias = '';\n group = 'development';\n shortDescription = '';\n options = [['v', 'verbose', 'showing npm verbose output for inspection and prints stack trace']] as CommandOptions;\n\n constructor(\n /**\n * logger extension.\n */\n private pubsub: PubsubMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * watcher extension.\n */\n private watcher: Watcher\n ) {\n this.registerToEvents();\n }\n\n private registerToEvents() {\n this.pubsub.sub(CompilerAspect.id, this.eventsListener);\n }\n\n private eventsListener = (event: BitBaseEvent<any>) => {\n switch (event.type) {\n case CompilerErrorEvent.TYPE:\n this.logger.console(`Watcher error ${event.data.error}, 'error'`);\n break;\n default:\n }\n };\n\n async report(cliArgs: [], { verbose = false }: { verbose?: boolean }) {\n await this.watcher.watch({ msgs: this.msgs, verbose });\n return 'watcher terminated';\n }\n}\n"]}
1
+ {"version":3,"sources":["watch.cmd.tsx"],"names":["WatchCommand","constructor","pubsub","logger","watcher","onAll","event","path","console","onStart","onReady","workspace","watchPathsSortByComponent","verbose","clear","chalk","yellow","config","name","format","onChange","filePath","buildResults","duration","length","onAdd","onUnlink","p","onError","err","type","CompilerErrorEvent","TYPE","data","error","registerToEvents","sub","CompilerAspect","id","eventsListener","report","cliArgs","watchOpts","watch","msgs"],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport moment from 'moment';\n\nimport { Command, CommandOptions } from '@teambit/cli';\nimport type { Logger } from '@teambit/logger';\nimport type { BitBaseEvent, PubsubMain } from '@teambit/pubsub';\n\n// import IDs and events\nimport { CompilerAspect, CompilerErrorEvent } from '@teambit/compiler';\n\nimport { Watcher, WatchOptions } from './watcher';\nimport { formatCompileResults, formatWatchPathsSortByComponent } from './output-formatter';\nimport { OnComponentEventResult } from '../on-component-events';\n\nexport class WatchCommand implements Command {\n msgs = {\n onAll: (event, path) => this.logger.console(`Event: \"${event}\". Path: ${path}`),\n onStart: () => {},\n onReady: (workspace, watchPathsSortByComponent, verbose) => {\n // eslint-disable-next-line no-console\n console.clear();\n if (verbose) {\n this.logger.console(formatWatchPathsSortByComponent(watchPathsSortByComponent));\n }\n this.logger.console(\n chalk.yellow(\n `Watching for component changes in workspace ${workspace.config.name} (${moment().format('HH:mm:ss')})...\\n`\n )\n );\n },\n onChange: (filePath: string, buildResults: OnComponentEventResult[], verbose: boolean, duration) => {\n // eslint-disable-next-line no-console\n console.clear();\n if (!buildResults.length) {\n this.logger.console(`The file ${filePath} has been changed, but nothing to compile.\\n\\n`);\n return;\n }\n this.logger.console(`The file ${filePath} has been changed.\\n\\n`);\n this.logger.console(formatCompileResults(buildResults, verbose));\n this.logger.console(`Finished. (${duration}ms)`);\n this.logger.console(chalk.yellow(`Watching for component changes (${moment().format('HH:mm:ss')})...`));\n },\n onAdd: (filePath: string, buildResults: OnComponentEventResult[], verbose: boolean, duration) => {\n // eslint-disable-next-line no-console\n console.clear();\n this.logger.console(`The file ${filePath} has been added.\\n\\n`);\n this.logger.console(formatCompileResults(buildResults, verbose));\n this.logger.console(`Finished. (${duration}ms)`);\n this.logger.console(chalk.yellow(`Watching for component changes (${moment().format('HH:mm:ss')})...`));\n },\n onUnlink: (p) => {\n this.logger.console(`file ${p} has been removed`);\n },\n onError: (err) => {\n this.logger.console(`Watcher error ${err}`);\n },\n };\n\n name = 'watch';\n description = 'watch a set of components';\n alias = '';\n group = 'development';\n shortDescription = '';\n options = [\n ['v', 'verbose', 'showing npm verbose output for inspection and prints stack trace'],\n ['', 'skip-pre-compilation', 'skip the compilation step before starting to watch'],\n ['t', 'check-types', 'EXPERIMENTAL. for typescript files, load an tsserver instance to check types'],\n ] as CommandOptions;\n\n constructor(\n /**\n * logger extension.\n */\n private pubsub: PubsubMain,\n\n /**\n * logger extension.\n */\n private logger: Logger,\n\n /**\n * watcher extension.\n */\n private watcher: Watcher\n ) {\n this.registerToEvents();\n }\n\n private registerToEvents() {\n this.pubsub.sub(CompilerAspect.id, this.eventsListener);\n }\n\n private eventsListener = (event: BitBaseEvent<any>) => {\n switch (event.type) {\n case CompilerErrorEvent.TYPE:\n this.logger.console(`Watcher error ${event.data.error}, 'error'`);\n break;\n default:\n }\n };\n\n async report(cliArgs: [], watchOpts: WatchOptions) {\n await this.watcher.watch({ msgs: this.msgs, ...watchOpts });\n return 'watcher terminated';\n }\n}\n"]}
@@ -12,6 +12,11 @@ export declare type WatcherProcessData = {
12
12
  compilerId: BitId;
13
13
  componentIds: BitId[];
14
14
  };
15
+ export declare type WatchOptions = {
16
+ verbose?: boolean;
17
+ checkTypes?: boolean;
18
+ skipPreCompilation?: boolean;
19
+ };
15
20
  export declare class Watcher {
16
21
  private workspace;
17
22
  private pubsub;
@@ -24,14 +29,12 @@ export declare class Watcher {
24
29
  }, verbose?: boolean, multipleWatchers?: WatcherProcessData[]);
25
30
  watch(opts: {
26
31
  msgs: any;
27
- verbose?: boolean;
28
- }): Promise<void>;
32
+ } & WatchOptions): Promise<void>;
29
33
  get consumer(): Consumer;
30
- watchAll(opts?: {
34
+ watchAll(opts: {
31
35
  msgs: any;
32
- verbose?: boolean;
33
36
  initiator?: CompilationInitiator;
34
- }): Promise<unknown>;
37
+ } & WatchOptions): Promise<unknown>;
35
38
  private handleChange;
36
39
  private handleBitmapChanges;
37
40
  private executeWatchOperationsOnRemove;
@@ -15,6 +15,16 @@ Object.defineProperty(exports, "__esModule", {
15
15
  });
16
16
  exports.Watcher = void 0;
17
17
 
18
+ function _objectWithoutProperties2() {
19
+ const data = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
20
+
21
+ _objectWithoutProperties2 = function () {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
18
28
  function _defineProperty2() {
19
29
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
30
 
@@ -151,10 +161,7 @@ class Watcher {
151
161
 
152
162
  async watch(opts) {
153
163
  this.verbose = Boolean(opts.verbose);
154
- await this.watchAll({
155
- msgs: opts.msgs,
156
- verbose: this.verbose
157
- });
164
+ await this.watchAll(opts);
158
165
  }
159
166
 
160
167
  get consumer() {
@@ -162,56 +169,47 @@ class Watcher {
162
169
  }
163
170
 
164
171
  async watchAll(opts) {
165
- var _opts$msgs;
172
+ const {
173
+ msgs
174
+ } = opts,
175
+ watchOpts = (0, _objectWithoutProperties2().default)(opts, ["msgs"]); // TODO: run build in the beginning of process (it's work like this in other envs)
166
176
 
167
- // TODO: run build in the beginning of process (it's work like this in other envs)
168
- const _verbose = (opts === null || opts === void 0 ? void 0 : opts.verbose) || false;
169
-
170
- await this.createWatcher();
177
+ const pathsToWatch = await this.getPathsToWatch();
178
+ const componentIds = Object.values(this.trackDirs);
179
+ await this.workspace.triggerOnPreWatch(componentIds, watchOpts);
180
+ await this.createWatcher(pathsToWatch);
171
181
  const watcher = this.fsWatcher;
172
- opts === null || opts === void 0 ? void 0 : (_opts$msgs = opts.msgs) === null || _opts$msgs === void 0 ? void 0 : _opts$msgs.onStart(this.workspace);
182
+ msgs === null || msgs === void 0 ? void 0 : msgs.onStart(this.workspace);
173
183
  return new Promise((resolve, reject) => {
174
184
  // prefix your command with "BIT_LOG=*" to see all watch events
175
185
  if (process.env.BIT_LOG) {
176
- var _opts$msgs2, _opts$msgs3;
177
-
178
- if (opts !== null && opts !== void 0 && (_opts$msgs2 = opts.msgs) !== null && _opts$msgs2 !== void 0 && _opts$msgs2.onAll) watcher.on('all', opts === null || opts === void 0 ? void 0 : (_opts$msgs3 = opts.msgs) === null || _opts$msgs3 === void 0 ? void 0 : _opts$msgs3.onAll);
186
+ if (msgs !== null && msgs !== void 0 && msgs.onAll) watcher.on('all', msgs === null || msgs === void 0 ? void 0 : msgs.onAll);
179
187
  }
180
188
 
181
189
  watcher.on('ready', () => {
182
- var _opts$msgs4;
183
-
184
- opts === null || opts === void 0 ? void 0 : (_opts$msgs4 = opts.msgs) === null || _opts$msgs4 === void 0 ? void 0 : _opts$msgs4.onReady(this.workspace, this.trackDirs, _verbose);
190
+ msgs === null || msgs === void 0 ? void 0 : msgs.onReady(this.workspace, this.trackDirs, this.verbose);
185
191
  }); // eslint-disable-next-line @typescript-eslint/no-misused-promises
186
192
 
187
193
  watcher.on('change', async filePath => {
188
- var _opts$msgs5;
189
-
190
194
  const startTime = new Date().getTime();
191
195
  const buildResults = (await this.handleChange(filePath, opts === null || opts === void 0 ? void 0 : opts.initiator)) || [];
192
196
  const duration = new Date().getTime() - startTime;
193
- opts === null || opts === void 0 ? void 0 : (_opts$msgs5 = opts.msgs) === null || _opts$msgs5 === void 0 ? void 0 : _opts$msgs5.onChange(filePath, buildResults, _verbose, duration);
197
+ msgs === null || msgs === void 0 ? void 0 : msgs.onChange(filePath, buildResults, this.verbose, duration);
194
198
  }); // eslint-disable-next-line @typescript-eslint/no-misused-promises
195
199
 
196
200
  watcher.on('add', async filePath => {
197
- var _opts$msgs6;
198
-
199
201
  const startTime = new Date().getTime();
200
202
  const buildResults = (await this.handleChange(filePath)) || [];
201
203
  const duration = new Date().getTime() - startTime;
202
- opts === null || opts === void 0 ? void 0 : (_opts$msgs6 = opts.msgs) === null || _opts$msgs6 === void 0 ? void 0 : _opts$msgs6.onAdd(filePath, buildResults, _verbose, duration);
204
+ msgs === null || msgs === void 0 ? void 0 : msgs.onAdd(filePath, buildResults, this.verbose, duration);
203
205
  }); // eslint-disable-next-line @typescript-eslint/no-misused-promises
204
206
 
205
207
  watcher.on('unlink', async p => {
206
- var _opts$msgs7;
207
-
208
- opts === null || opts === void 0 ? void 0 : (_opts$msgs7 = opts.msgs) === null || _opts$msgs7 === void 0 ? void 0 : _opts$msgs7.onUnlink(p);
208
+ msgs === null || msgs === void 0 ? void 0 : msgs.onUnlink(p);
209
209
  await this.handleChange(p);
210
210
  });
211
211
  watcher.on('error', err => {
212
- var _opts$msgs8;
213
-
214
- opts === null || opts === void 0 ? void 0 : (_opts$msgs8 = opts.msgs) === null || _opts$msgs8 === void 0 ? void 0 : _opts$msgs8.onError(err);
212
+ msgs === null || msgs === void 0 ? void 0 : msgs.onError(err);
215
213
  reject(err);
216
214
  });
217
215
  });
@@ -233,7 +231,7 @@ class Watcher {
233
231
  return this.completeWatch();
234
232
  }
235
233
 
236
- const buildResults = await this.executeWatchOperationsOnComponent(componentId, true, initiator);
234
+ const buildResults = await this.executeWatchOperationsOnComponent(componentId, [filePath], true, initiator);
237
235
  this.completeWatch();
238
236
  return buildResults;
239
237
  } catch (err) {
@@ -262,7 +260,7 @@ class Watcher {
262
260
 
263
261
  if (newDirs.length) {
264
262
  this.fsWatcher.add(newDirs);
265
- const addResults = await (0, _pMapSeries().default)(newDirs, dir => this.executeWatchOperationsOnComponent(this.trackDirs[dir], false));
263
+ const addResults = await (0, _pMapSeries().default)(newDirs, async dir => this.executeWatchOperationsOnComponent(this.trackDirs[dir], [], false));
266
264
  results.push(...addResults.flat());
267
265
  }
268
266
 
@@ -281,7 +279,7 @@ class Watcher {
281
279
  await this.workspace.triggerOnComponentRemove(componentId);
282
280
  }
283
281
 
284
- async executeWatchOperationsOnComponent(componentId, isChange = true, initiator) {
282
+ async executeWatchOperationsOnComponent(componentId, files, isChange = true, initiator) {
285
283
  if (this.isComponentWatchedExternally(componentId)) {
286
284
  // update capsule, once done, it automatically triggers the external watcher
287
285
  await this.workspace.get(componentId);
@@ -303,10 +301,14 @@ class Watcher {
303
301
  let buildResults;
304
302
 
305
303
  try {
306
- buildResults = isChange ? await this.workspace.triggerOnComponentChange(componentId, initiator) : await this.workspace.triggerOnComponentAdd(componentId);
304
+ buildResults = isChange ? await this.workspace.triggerOnComponentChange(componentId, files, initiator) : await this.workspace.triggerOnComponentAdd(componentId);
307
305
  } catch (err) {
308
- // do not exist the watch process on errors, just print them
309
- _logger().default.console(err.message || err);
306
+ // do not exit the watch process on errors, just print them
307
+ const msg = `found an issue during onComponentChange or onComponentAdd hooks`;
308
+
309
+ _logger().default.error(msg, err);
310
+
311
+ _logger().default.console(`\n${msg}: ${err.message || err}`);
310
312
 
311
313
  return [];
312
314
  }
@@ -387,8 +389,7 @@ class Watcher {
387
389
  return this.findTrackDirByFilePathRecursively(parentDir);
388
390
  }
389
391
 
390
- async createWatcher() {
391
- const pathsToWatch = await this.getPathsToWatch();
392
+ async createWatcher(pathsToWatch) {
392
393
  this.fsWatcher = _chokidar().default.watch(pathsToWatch, {
393
394
  ignoreInitial: true,
394
395
  // Using the function way since the regular way not working as expected
@@ -1 +1 @@
1
- {"version":3,"sources":["watcher.ts"],"names":["Watcher","constructor","workspace","pubsub","trackDirs","verbose","multipleWatchers","watch","opts","Boolean","watchAll","msgs","consumer","_verbose","createWatcher","watcher","fsWatcher","onStart","Promise","resolve","reject","process","env","BIT_LOG","onAll","on","onReady","filePath","startTime","Date","getTime","buildResults","handleChange","initiator","duration","onChange","onAdd","p","onUnlink","err","onError","endsWith","BIT_MAP","handleBitmapChanges","completeWatch","componentId","getComponentIdAndClearItsCache","logger","debug","executeWatchOperationsOnComponent","msg","error","console","message","previewsTrackDirs","_reloadConsumer","setTrackDirs","newDirs","Object","keys","removedDirs","results","length","add","addResults","dir","push","flat","unwatch","executeWatchOperationsOnRemove","chalk","bold","toString","pub","WorkspaceAspect","id","creatOnComponentRemovedEvent","triggerOnComponentRemove","isChange","isComponentWatchedExternally","get","idStr","creatOnComponentChangeEvent","creatOnComponentAddEvent","triggerOnComponentChange","triggerOnComponentAdd","OnComponentRemovedEvent","now","hook","OnComponentChangeEvent","OnComponentAddEvent","loader","stop","watcherData","find","m","componentIds","isEqual","_legacy","compilerId","relativeFile","getPathRelativeToConsumer","trackDir","findTrackDirByFilePathRecursively","clearComponentCache","component","componentMap","state","_consumer","getFilesRelativeToConsumer","parentDir","pathsToWatch","getPathsToWatch","chokidar","ignoreInitial","ignored","path","includes","sep","persistent","useFsEvents","componentsFromBitMap","bitMap","getAllComponents","COMPONENT_ORIGINS","AUTHORED","IMPORTED","all","map","bitId","getTrackDir","Error","resolveComponentId","paths","pathsAbsolute","toAbsolutePath"],"mappings":"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","sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport { dirname, sep } from 'path';\nimport { difference } from 'lodash';\nimport { ComponentID } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { BIT_MAP, COMPONENT_ORIGINS } from '@teambit/legacy/dist/constants';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport mapSeries from 'p-map-series';\nimport chalk from 'chalk';\nimport { ChildProcess } from 'child_process';\nimport chokidar, { FSWatcher } from 'chokidar';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\nimport { PathLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { WorkspaceAspect } from '../';\nimport { OnComponentChangeEvent, OnComponentAddEvent, OnComponentRemovedEvent } from '../events';\nimport { Workspace } from '../workspace';\nimport { OnComponentEventResult } from '../on-component-events';\n\nexport type WatcherProcessData = { watchProcess: ChildProcess; compilerId: BitId; componentIds: BitId[] };\n\nexport class Watcher {\n private fsWatcher: FSWatcher;\n constructor(\n private workspace: Workspace,\n private pubsub: PubsubMain,\n private trackDirs: { [dir: PathLinux]: ComponentID } = {},\n private verbose = false,\n private multipleWatchers: WatcherProcessData[] = []\n ) {}\n\n async watch(opts: { msgs; verbose?: boolean }) {\n this.verbose = Boolean(opts.verbose);\n await this.watchAll({ msgs: opts.msgs, verbose: this.verbose });\n }\n\n get consumer(): Consumer {\n return this.workspace.consumer;\n }\n\n async watchAll(opts?: { msgs; verbose?: boolean; initiator?: CompilationInitiator }) {\n // TODO: run build in the beginning of process (it's work like this in other envs)\n const _verbose = opts?.verbose || false;\n await this.createWatcher();\n const watcher = this.fsWatcher;\n opts?.msgs?.onStart(this.workspace);\n\n return new Promise((resolve, reject) => {\n // prefix your command with \"BIT_LOG=*\" to see all watch events\n if (process.env.BIT_LOG) {\n if (opts?.msgs?.onAll) watcher.on('all', opts?.msgs?.onAll);\n }\n watcher.on('ready', () => {\n opts?.msgs?.onReady(this.workspace, this.trackDirs, _verbose);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('change', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath, opts?.initiator)) || [];\n const duration = new Date().getTime() - startTime;\n opts?.msgs?.onChange(filePath, buildResults, _verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('add', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath)) || [];\n const duration = new Date().getTime() - startTime;\n opts?.msgs?.onAdd(filePath, buildResults, _verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('unlink', async (p) => {\n opts?.msgs?.onUnlink(p);\n await this.handleChange(p);\n });\n watcher.on('error', (err) => {\n opts?.msgs?.onError(err);\n reject(err);\n });\n });\n }\n\n private async handleChange(filePath: string, initiator?: CompilationInitiator): Promise<OnComponentEventResult[]> {\n try {\n if (filePath.endsWith(BIT_MAP)) {\n const buildResults = await this.handleBitmapChanges();\n this.completeWatch();\n return buildResults;\n }\n const componentId = await this.getComponentIdAndClearItsCache(filePath);\n if (!componentId) {\n logger.debug(`file ${filePath} is not part of any component, ignoring it`);\n return this.completeWatch();\n }\n\n const buildResults = await this.executeWatchOperationsOnComponent(componentId, true, initiator);\n this.completeWatch();\n return buildResults;\n } catch (err: any) {\n const msg = `watcher found an error while handling ${filePath}`;\n logger.error(msg, err);\n logger.console(`${msg}, ${err.message}`);\n return [];\n }\n }\n\n /**\n * if .bitmap changed, it's possible that a new component has been added. trigger onComponentAdd.\n */\n private async handleBitmapChanges(): Promise<OnComponentEventResult[]> {\n const previewsTrackDirs = { ...this.trackDirs };\n await this.workspace._reloadConsumer();\n await this.setTrackDirs();\n const newDirs: string[] = difference(Object.keys(this.trackDirs), Object.keys(previewsTrackDirs));\n const removedDirs: string[] = difference(Object.keys(previewsTrackDirs), Object.keys(this.trackDirs));\n const results: OnComponentEventResult[] = [];\n if (newDirs.length) {\n this.fsWatcher.add(newDirs);\n const addResults = await mapSeries(newDirs, (dir) =>\n this.executeWatchOperationsOnComponent(this.trackDirs[dir], false)\n );\n results.push(...addResults.flat());\n }\n if (removedDirs.length) {\n await this.fsWatcher.unwatch(removedDirs);\n await mapSeries(removedDirs, (dir) => this.executeWatchOperationsOnRemove(previewsTrackDirs[dir]));\n }\n return results;\n }\n\n private async executeWatchOperationsOnRemove(componentId: ComponentID) {\n logger.debug(`running OnComponentRemove hook for ${chalk.bold(componentId.toString())}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentRemovedEvent(componentId.toString()));\n await this.workspace.triggerOnComponentRemove(componentId);\n }\n\n private async executeWatchOperationsOnComponent(\n componentId: ComponentID,\n isChange = true,\n initiator?: CompilationInitiator\n ): Promise<OnComponentEventResult[]> {\n if (this.isComponentWatchedExternally(componentId)) {\n // update capsule, once done, it automatically triggers the external watcher\n await this.workspace.get(componentId);\n return [];\n }\n const idStr = componentId.toString();\n\n if (isChange) {\n logger.debug(`running OnComponentChange hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentChangeEvent(idStr, 'OnComponentChange'));\n } else {\n logger.debug(`running OnComponentAdd hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentAddEvent(idStr, 'OnComponentAdd'));\n }\n\n let buildResults: OnComponentEventResult[];\n try {\n buildResults = isChange\n ? await this.workspace.triggerOnComponentChange(componentId, initiator)\n : await this.workspace.triggerOnComponentAdd(componentId);\n } catch (err: any) {\n // do not exist the watch process on errors, just print them\n logger.console(err.message || err);\n return [];\n }\n if (buildResults && buildResults.length) {\n return buildResults;\n }\n logger.console(`${idStr} doesn't have a compiler, nothing to build`);\n return [];\n }\n\n private creatOnComponentRemovedEvent(idStr) {\n return new OnComponentRemovedEvent(Date.now(), idStr);\n }\n\n private creatOnComponentChangeEvent(idStr, hook) {\n return new OnComponentChangeEvent(Date.now(), idStr, hook);\n }\n\n private creatOnComponentAddEvent(idStr, hook) {\n return new OnComponentAddEvent(Date.now(), idStr, hook);\n }\n\n private completeWatch() {\n loader.stop();\n return [];\n }\n\n private isComponentWatchedExternally(componentId: ComponentID) {\n const watcherData = this.multipleWatchers.find((m) => m.componentIds.find((id) => id.isEqual(componentId._legacy)));\n if (watcherData) {\n logger.debug(`${componentId.toString()} is watched by ${watcherData.compilerId.toString()}`);\n return true;\n }\n return false;\n }\n\n /**\n * if a file was added/remove, once the component is loaded, it changes .bitmap, and then the\n * entire cache is invalidated and the consumer is reloaded.\n * when a file just changed, no need to reload the consumer, it is enough to just delete the\n * component from the cache (both, workspace and consumer)\n */\n private async getComponentIdAndClearItsCache(filePath: string): Promise<ComponentID | null> {\n const relativeFile = pathNormalizeToLinux(this.consumer.getPathRelativeToConsumer(filePath));\n const trackDir = this.findTrackDirByFilePathRecursively(relativeFile);\n if (!trackDir) {\n // the file is not part of any component. If it was a new component, or a new file of\n // existing component, then, handleBitmapChanges() should deal with it.\n return null;\n }\n const componentId = this.trackDirs[trackDir];\n this.workspace.clearComponentCache(componentId);\n const component = await this.workspace.get(componentId);\n const componentMap: ComponentMap = component.state._consumer.componentMap;\n if (componentMap.getFilesRelativeToConsumer().find((p) => p === relativeFile)) {\n return componentId;\n }\n // the file is inside the component dir but it's ignored. (e.g. it's in IGNORE_LIST)\n return null;\n }\n\n private findTrackDirByFilePathRecursively(filePath: string): string | null {\n if (this.trackDirs[filePath]) return filePath;\n const parentDir = dirname(filePath);\n if (parentDir === filePath) return null;\n return this.findTrackDirByFilePathRecursively(parentDir);\n }\n\n private async createWatcher() {\n const pathsToWatch = await this.getPathsToWatch();\n this.fsWatcher = chokidar.watch(pathsToWatch, {\n ignoreInitial: true,\n // Using the function way since the regular way not working as expected\n // It might be solved when upgrading to chokidar > 3.0.0\n // See:\n // https://github.com/paulmillr/chokidar/issues/773\n // https://github.com/paulmillr/chokidar/issues/492\n // https://github.com/paulmillr/chokidar/issues/724\n ignored: (path) => {\n // Ignore package.json temporarily since it cerates endless loop since it's re-written after each build\n if (path.includes(`${sep}node_modules${sep}`) || path.includes(`${sep}package.json`)) {\n return true;\n }\n return false;\n },\n persistent: true,\n useFsEvents: false,\n });\n }\n\n async setTrackDirs() {\n this.trackDirs = {};\n const componentsFromBitMap = this.consumer.bitMap.getAllComponents([\n COMPONENT_ORIGINS.AUTHORED,\n COMPONENT_ORIGINS.IMPORTED,\n ]);\n await Promise.all(\n componentsFromBitMap.map(async (componentMap) => {\n const bitId = componentMap.id;\n const trackDir = componentMap.getTrackDir();\n if (!trackDir) throw new Error(`${bitId.toString()} has no rootDir, which is invalid in Harmony`);\n const componentId = await this.workspace.resolveComponentId(bitId);\n this.trackDirs[trackDir] = componentId;\n })\n );\n }\n\n private async getPathsToWatch(): Promise<PathOsBasedAbsolute[]> {\n await this.setTrackDirs();\n const paths = [...Object.keys(this.trackDirs), BIT_MAP];\n const pathsAbsolute = paths.map((dir) => this.consumer.toAbsolutePath(dir));\n return pathsAbsolute;\n }\n}\n"]}
1
+ {"version":3,"sources":["watcher.ts"],"names":["Watcher","constructor","workspace","pubsub","trackDirs","verbose","multipleWatchers","watch","opts","Boolean","watchAll","consumer","msgs","watchOpts","pathsToWatch","getPathsToWatch","componentIds","Object","values","triggerOnPreWatch","createWatcher","watcher","fsWatcher","onStart","Promise","resolve","reject","process","env","BIT_LOG","onAll","on","onReady","filePath","startTime","Date","getTime","buildResults","handleChange","initiator","duration","onChange","onAdd","p","onUnlink","err","onError","endsWith","BIT_MAP","handleBitmapChanges","completeWatch","componentId","getComponentIdAndClearItsCache","logger","debug","executeWatchOperationsOnComponent","msg","error","console","message","previewsTrackDirs","_reloadConsumer","setTrackDirs","newDirs","keys","removedDirs","results","length","add","addResults","dir","push","flat","unwatch","executeWatchOperationsOnRemove","chalk","bold","toString","pub","WorkspaceAspect","id","creatOnComponentRemovedEvent","triggerOnComponentRemove","files","isChange","isComponentWatchedExternally","get","idStr","creatOnComponentChangeEvent","creatOnComponentAddEvent","triggerOnComponentChange","triggerOnComponentAdd","OnComponentRemovedEvent","now","hook","OnComponentChangeEvent","OnComponentAddEvent","loader","stop","watcherData","find","m","isEqual","_legacy","compilerId","relativeFile","getPathRelativeToConsumer","trackDir","findTrackDirByFilePathRecursively","clearComponentCache","component","componentMap","state","_consumer","getFilesRelativeToConsumer","parentDir","chokidar","ignoreInitial","ignored","path","includes","sep","persistent","useFsEvents","componentsFromBitMap","bitMap","getAllComponents","COMPONENT_ORIGINS","AUTHORED","IMPORTED","all","map","bitId","getTrackDir","Error","resolveComponentId","paths","pathsAbsolute","toAbsolutePath"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAQO,MAAMA,OAAN,CAAc;AAEnBC,EAAAA,WAAW,CACDC,SADC,EAEDC,MAFC,EAGDC,SAA4C,GAAG,EAH9C,EAIDC,OAAO,GAAG,KAJT,EAKDC,gBAAsC,GAAG,EALxC,EAMT;AAAA,SALQJ,SAKR,GALQA,SAKR;AAAA,SAJQC,MAIR,GAJQA,MAIR;AAAA,SAHQC,SAGR,GAHQA,SAGR;AAAA,SAFQC,OAER,GAFQA,OAER;AAAA,SADQC,gBACR,GADQA,gBACR;AAAA;AAAE;;AAEO,QAALC,KAAK,CAACC,IAAD,EAAgC;AACzC,SAAKH,OAAL,GAAeI,OAAO,CAACD,IAAI,CAACH,OAAN,CAAtB;AACA,UAAM,KAAKK,QAAL,CAAcF,IAAd,CAAN;AACD;;AAEW,MAARG,QAAQ,GAAa;AACvB,WAAO,KAAKT,SAAL,CAAeS,QAAtB;AACD;;AAEa,QAARD,QAAQ,CAACF,IAAD,EAAkE;AAC9E,UAAM;AAAEI,MAAAA;AAAF,QAAyBJ,IAA/B;AAAA,UAAiBK,SAAjB,4CAA+BL,IAA/B,YAD8E,CAE9E;;AACA,UAAMM,YAAY,GAAG,MAAM,KAAKC,eAAL,EAA3B;AACA,UAAMC,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAc,KAAKd,SAAnB,CAArB;AACA,UAAM,KAAKF,SAAL,CAAeiB,iBAAf,CAAiCH,YAAjC,EAA+CH,SAA/C,CAAN;AACA,UAAM,KAAKO,aAAL,CAAmBN,YAAnB,CAAN;AACA,UAAMO,OAAO,GAAG,KAAKC,SAArB;AACAV,IAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEW,OAAN,CAAc,KAAKrB,SAAnB;AAEA,WAAO,IAAIsB,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC;AACA,UAAIC,OAAO,CAACC,GAAR,CAAYC,OAAhB,EAAyB;AACvB,YAAIjB,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAEkB,KAAV,EAAiBT,OAAO,CAACU,EAAR,CAAW,KAAX,EAAkBnB,IAAlB,aAAkBA,IAAlB,uBAAkBA,IAAI,CAAEkB,KAAxB;AAClB;;AACDT,MAAAA,OAAO,CAACU,EAAR,CAAW,OAAX,EAAoB,MAAM;AACxBnB,QAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEoB,OAAN,CAAc,KAAK9B,SAAnB,EAA8B,KAAKE,SAAnC,EAA8C,KAAKC,OAAnD;AACD,OAFD,EALsC,CAQtC;;AACAgB,MAAAA,OAAO,CAACU,EAAR,CAAW,QAAX,EAAqB,MAAOE,QAAP,IAAoB;AACvC,cAAMC,SAAS,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAlB;AACA,cAAMC,YAAY,GAAG,CAAC,MAAM,KAAKC,YAAL,CAAkBL,QAAlB,EAA4BzB,IAA5B,aAA4BA,IAA5B,uBAA4BA,IAAI,CAAE+B,SAAlC,CAAP,KAAwD,EAA7E;AACA,cAAMC,QAAQ,GAAG,IAAIL,IAAJ,GAAWC,OAAX,KAAuBF,SAAxC;AACAtB,QAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAE6B,QAAN,CAAeR,QAAf,EAAyBI,YAAzB,EAAuC,KAAKhC,OAA5C,EAAqDmC,QAArD;AACD,OALD,EATsC,CAetC;;AACAnB,MAAAA,OAAO,CAACU,EAAR,CAAW,KAAX,EAAkB,MAAOE,QAAP,IAAoB;AACpC,cAAMC,SAAS,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAlB;AACA,cAAMC,YAAY,GAAG,CAAC,MAAM,KAAKC,YAAL,CAAkBL,QAAlB,CAAP,KAAuC,EAA5D;AACA,cAAMO,QAAQ,GAAG,IAAIL,IAAJ,GAAWC,OAAX,KAAuBF,SAAxC;AACAtB,QAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAE8B,KAAN,CAAYT,QAAZ,EAAsBI,YAAtB,EAAoC,KAAKhC,OAAzC,EAAkDmC,QAAlD;AACD,OALD,EAhBsC,CAsBtC;;AACAnB,MAAAA,OAAO,CAACU,EAAR,CAAW,QAAX,EAAqB,MAAOY,CAAP,IAAa;AAChC/B,QAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEgC,QAAN,CAAeD,CAAf;AACA,cAAM,KAAKL,YAAL,CAAkBK,CAAlB,CAAN;AACD,OAHD;AAIAtB,MAAAA,OAAO,CAACU,EAAR,CAAW,OAAX,EAAqBc,GAAD,IAAS;AAC3BjC,QAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAEkC,OAAN,CAAcD,GAAd;AACAnB,QAAAA,MAAM,CAACmB,GAAD,CAAN;AACD,OAHD;AAID,KA/BM,CAAP;AAgCD;;AAEyB,QAAZP,YAAY,CAACL,QAAD,EAAmBM,SAAnB,EAAwF;AAChH,QAAI;AACF,UAAIN,QAAQ,CAACc,QAAT,CAAkBC,oBAAlB,CAAJ,EAAgC;AAC9B,cAAMX,YAAY,GAAG,MAAM,KAAKY,mBAAL,EAA3B;AACA,aAAKC,aAAL;AACA,eAAOb,YAAP;AACD;;AACD,YAAMc,WAAW,GAAG,MAAM,KAAKC,8BAAL,CAAoCnB,QAApC,CAA1B;;AACA,UAAI,CAACkB,WAAL,EAAkB;AAChBE,0BAAOC,KAAP,CAAc,QAAOrB,QAAS,4CAA9B;;AACA,eAAO,KAAKiB,aAAL,EAAP;AACD;;AAED,YAAMb,YAAY,GAAG,MAAM,KAAKkB,iCAAL,CAAuCJ,WAAvC,EAAoD,CAAClB,QAAD,CAApD,EAAgE,IAAhE,EAAsEM,SAAtE,CAA3B;AACA,WAAKW,aAAL;AACA,aAAOb,YAAP;AACD,KAfD,CAeE,OAAOQ,GAAP,EAAiB;AACjB,YAAMW,GAAG,GAAI,yCAAwCvB,QAAS,EAA9D;;AACAoB,wBAAOI,KAAP,CAAaD,GAAb,EAAkBX,GAAlB;;AACAQ,wBAAOK,OAAP,CAAgB,GAAEF,GAAI,KAAIX,GAAG,CAACc,OAAQ,EAAtC;;AACA,aAAO,EAAP;AACD;AACF;AAED;AACF;AACA;;;AACmC,QAAnBV,mBAAmB,GAAsC;AACrE,UAAMW,iBAAiB,qBAAQ,KAAKxD,SAAb,CAAvB;;AACA,UAAM,KAAKF,SAAL,CAAe2D,eAAf,EAAN;AACA,UAAM,KAAKC,YAAL,EAAN;AACA,UAAMC,OAAiB,GAAG,0BAAW9C,MAAM,CAAC+C,IAAP,CAAY,KAAK5D,SAAjB,CAAX,EAAwCa,MAAM,CAAC+C,IAAP,CAAYJ,iBAAZ,CAAxC,CAA1B;AACA,UAAMK,WAAqB,GAAG,0BAAWhD,MAAM,CAAC+C,IAAP,CAAYJ,iBAAZ,CAAX,EAA2C3C,MAAM,CAAC+C,IAAP,CAAY,KAAK5D,SAAjB,CAA3C,CAA9B;AACA,UAAM8D,OAAiC,GAAG,EAA1C;;AACA,QAAIH,OAAO,CAACI,MAAZ,EAAoB;AAClB,WAAK7C,SAAL,CAAe8C,GAAf,CAAmBL,OAAnB;AACA,YAAMM,UAAU,GAAG,MAAM,2BAAUN,OAAV,EAAmB,MAAOO,GAAP,IAC1C,KAAKf,iCAAL,CAAuC,KAAKnD,SAAL,CAAekE,GAAf,CAAvC,EAA4D,EAA5D,EAAgE,KAAhE,CADuB,CAAzB;AAGAJ,MAAAA,OAAO,CAACK,IAAR,CAAa,GAAGF,UAAU,CAACG,IAAX,EAAhB;AACD;;AACD,QAAIP,WAAW,CAACE,MAAhB,EAAwB;AACtB,YAAM,KAAK7C,SAAL,CAAemD,OAAf,CAAuBR,WAAvB,CAAN;AACA,YAAM,2BAAUA,WAAV,EAAwBK,GAAD,IAAS,KAAKI,8BAAL,CAAoCd,iBAAiB,CAACU,GAAD,CAArD,CAAhC,CAAN;AACD;;AACD,WAAOJ,OAAP;AACD;;AAE2C,QAA9BQ,8BAA8B,CAACvB,WAAD,EAA2B;AACrEE,sBAAOC,KAAP,CAAc,sCAAqCqB,iBAAMC,IAAN,CAAWzB,WAAW,CAAC0B,QAAZ,EAAX,CAAmC,EAAtF;;AACA,SAAK1E,MAAL,CAAY2E,GAAZ,CAAgBC,oBAAgBC,EAAhC,EAAoC,KAAKC,4BAAL,CAAkC9B,WAAW,CAAC0B,QAAZ,EAAlC,CAApC;AACA,UAAM,KAAK3E,SAAL,CAAegF,wBAAf,CAAwC/B,WAAxC,CAAN;AACD;;AAE8C,QAAjCI,iCAAiC,CAC7CJ,WAD6C,EAE7CgC,KAF6C,EAG7CC,QAAQ,GAAG,IAHkC,EAI7C7C,SAJ6C,EAKV;AACnC,QAAI,KAAK8C,4BAAL,CAAkClC,WAAlC,CAAJ,EAAoD;AAClD;AACA,YAAM,KAAKjD,SAAL,CAAeoF,GAAf,CAAmBnC,WAAnB,CAAN;AACA,aAAO,EAAP;AACD;;AACD,UAAMoC,KAAK,GAAGpC,WAAW,CAAC0B,QAAZ,EAAd;;AAEA,QAAIO,QAAJ,EAAc;AACZ/B,wBAAOC,KAAP,CAAc,sCAAqCqB,iBAAMC,IAAN,CAAWW,KAAX,CAAkB,EAArE;;AACA,WAAKpF,MAAL,CAAY2E,GAAZ,CAAgBC,oBAAgBC,EAAhC,EAAoC,KAAKQ,2BAAL,CAAiCD,KAAjC,EAAwC,mBAAxC,CAApC;AACD,KAHD,MAGO;AACLlC,wBAAOC,KAAP,CAAc,mCAAkCqB,iBAAMC,IAAN,CAAWW,KAAX,CAAkB,EAAlE;;AACA,WAAKpF,MAAL,CAAY2E,GAAZ,CAAgBC,oBAAgBC,EAAhC,EAAoC,KAAKS,wBAAL,CAA8BF,KAA9B,EAAqC,gBAArC,CAApC;AACD;;AAED,QAAIlD,YAAJ;;AACA,QAAI;AACFA,MAAAA,YAAY,GAAG+C,QAAQ,GACnB,MAAM,KAAKlF,SAAL,CAAewF,wBAAf,CAAwCvC,WAAxC,EAAqDgC,KAArD,EAA4D5C,SAA5D,CADa,GAEnB,MAAM,KAAKrC,SAAL,CAAeyF,qBAAf,CAAqCxC,WAArC,CAFV;AAGD,KAJD,CAIE,OAAON,GAAP,EAAiB;AACjB;AACA,YAAMW,GAAG,GAAI,iEAAb;;AACAH,wBAAOI,KAAP,CAAaD,GAAb,EAAkBX,GAAlB;;AACAQ,wBAAOK,OAAP,CAAgB,KAAIF,GAAI,KAAIX,GAAG,CAACc,OAAJ,IAAed,GAAI,EAA/C;;AACA,aAAO,EAAP;AACD;;AACD,QAAIR,YAAY,IAAIA,YAAY,CAAC8B,MAAjC,EAAyC;AACvC,aAAO9B,YAAP;AACD;;AACDgB,sBAAOK,OAAP,CAAgB,GAAE6B,KAAM,4CAAxB;;AACA,WAAO,EAAP;AACD;;AAEON,EAAAA,4BAA4B,CAACM,KAAD,EAAQ;AAC1C,WAAO,KAAIK,iCAAJ,EAA4BzD,IAAI,CAAC0D,GAAL,EAA5B,EAAwCN,KAAxC,CAAP;AACD;;AAEOC,EAAAA,2BAA2B,CAACD,KAAD,EAAQO,IAAR,EAAc;AAC/C,WAAO,KAAIC,gCAAJ,EAA2B5D,IAAI,CAAC0D,GAAL,EAA3B,EAAuCN,KAAvC,EAA8CO,IAA9C,CAAP;AACD;;AAEOL,EAAAA,wBAAwB,CAACF,KAAD,EAAQO,IAAR,EAAc;AAC5C,WAAO,KAAIE,6BAAJ,EAAwB7D,IAAI,CAAC0D,GAAL,EAAxB,EAAoCN,KAApC,EAA2CO,IAA3C,CAAP;AACD;;AAEO5C,EAAAA,aAAa,GAAG;AACtB+C,sBAAOC,IAAP;;AACA,WAAO,EAAP;AACD;;AAEOb,EAAAA,4BAA4B,CAAClC,WAAD,EAA2B;AAC7D,UAAMgD,WAAW,GAAG,KAAK7F,gBAAL,CAAsB8F,IAAtB,CAA4BC,CAAD,IAAOA,CAAC,CAACrF,YAAF,CAAeoF,IAAf,CAAqBpB,EAAD,IAAQA,EAAE,CAACsB,OAAH,CAAWnD,WAAW,CAACoD,OAAvB,CAA5B,CAAlC,CAApB;;AACA,QAAIJ,WAAJ,EAAiB;AACf9C,wBAAOC,KAAP,CAAc,GAAEH,WAAW,CAAC0B,QAAZ,EAAuB,kBAAiBsB,WAAW,CAACK,UAAZ,CAAuB3B,QAAvB,EAAkC,EAA1F;;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AAC8C,QAA9BzB,8BAA8B,CAACnB,QAAD,EAAgD;AAC1F,UAAMwE,YAAY,GAAG,mCAAqB,KAAK9F,QAAL,CAAc+F,yBAAd,CAAwCzE,QAAxC,CAArB,CAArB;AACA,UAAM0E,QAAQ,GAAG,KAAKC,iCAAL,CAAuCH,YAAvC,CAAjB;;AACA,QAAI,CAACE,QAAL,EAAe;AACb;AACA;AACA,aAAO,IAAP;AACD;;AACD,UAAMxD,WAAW,GAAG,KAAK/C,SAAL,CAAeuG,QAAf,CAApB;AACA,SAAKzG,SAAL,CAAe2G,mBAAf,CAAmC1D,WAAnC;AACA,UAAM2D,SAAS,GAAG,MAAM,KAAK5G,SAAL,CAAeoF,GAAf,CAAmBnC,WAAnB,CAAxB;AACA,UAAM4D,YAA0B,GAAGD,SAAS,CAACE,KAAV,CAAgBC,SAAhB,CAA0BF,YAA7D;;AACA,QAAIA,YAAY,CAACG,0BAAb,GAA0Cd,IAA1C,CAAgDzD,CAAD,IAAOA,CAAC,KAAK8D,YAA5D,CAAJ,EAA+E;AAC7E,aAAOtD,WAAP;AACD,KAdyF,CAe1F;;;AACA,WAAO,IAAP;AACD;;AAEOyD,EAAAA,iCAAiC,CAAC3E,QAAD,EAAkC;AACzE,QAAI,KAAK7B,SAAL,CAAe6B,QAAf,CAAJ,EAA8B,OAAOA,QAAP;AAC9B,UAAMkF,SAAS,GAAG,qBAAQlF,QAAR,CAAlB;AACA,QAAIkF,SAAS,KAAKlF,QAAlB,EAA4B,OAAO,IAAP;AAC5B,WAAO,KAAK2E,iCAAL,CAAuCO,SAAvC,CAAP;AACD;;AAE0B,QAAb/F,aAAa,CAACN,YAAD,EAAyB;AAClD,SAAKQ,SAAL,GAAiB8F,oBAAS7G,KAAT,CAAeO,YAAf,EAA6B;AAC5CuG,MAAAA,aAAa,EAAE,IAD6B;AAE5C;AACA;AACA;AACA;AACA;AACA;AACAC,MAAAA,OAAO,EAAGC,IAAD,IAAU;AACjB;AACA,YAAIA,IAAI,CAACC,QAAL,CAAe,GAAEC,WAAI,eAAcA,WAAI,EAAvC,KAA6CF,IAAI,CAACC,QAAL,CAAe,GAAEC,WAAI,cAArB,CAAjD,EAAsF;AACpF,iBAAO,IAAP;AACD;;AACD,eAAO,KAAP;AACD,OAd2C;AAe5CC,MAAAA,UAAU,EAAE,IAfgC;AAgB5CC,MAAAA,WAAW,EAAE;AAhB+B,KAA7B,CAAjB;AAkBD;;AAEiB,QAAZ7D,YAAY,GAAG;AACnB,SAAK1D,SAAL,GAAiB,EAAjB;AACA,UAAMwH,oBAAoB,GAAG,KAAKjH,QAAL,CAAckH,MAAd,CAAqBC,gBAArB,CAAsC,CACjEC,+BAAkBC,QAD+C,EAEjED,+BAAkBE,QAF+C,CAAtC,CAA7B;AAIA,UAAMzG,OAAO,CAAC0G,GAAR,CACJN,oBAAoB,CAACO,GAArB,CAAyB,MAAOpB,YAAP,IAAwB;AAC/C,YAAMqB,KAAK,GAAGrB,YAAY,CAAC/B,EAA3B;AACA,YAAM2B,QAAQ,GAAGI,YAAY,CAACsB,WAAb,EAAjB;AACA,UAAI,CAAC1B,QAAL,EAAe,MAAM,IAAI2B,KAAJ,CAAW,GAAEF,KAAK,CAACvD,QAAN,EAAiB,8CAA9B,CAAN;AACf,YAAM1B,WAAW,GAAG,MAAM,KAAKjD,SAAL,CAAeqI,kBAAf,CAAkCH,KAAlC,CAA1B;AACA,WAAKhI,SAAL,CAAeuG,QAAf,IAA2BxD,WAA3B;AACD,KAND,CADI,CAAN;AASD;;AAE4B,QAAfpC,eAAe,GAAmC;AAC9D,UAAM,KAAK+C,YAAL,EAAN;AACA,UAAM0E,KAAK,GAAG,CAAC,GAAGvH,MAAM,CAAC+C,IAAP,CAAY,KAAK5D,SAAjB,CAAJ,EAAiC4C,oBAAjC,CAAd;AACA,UAAMyF,aAAa,GAAGD,KAAK,CAACL,GAAN,CAAW7D,GAAD,IAAS,KAAK3D,QAAL,CAAc+H,cAAd,CAA6BpE,GAA7B,CAAnB,CAAtB;AACA,WAAOmE,aAAP;AACD;;AAlQkB","sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport { dirname, sep } from 'path';\nimport { difference } from 'lodash';\nimport { ComponentID } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { BIT_MAP, COMPONENT_ORIGINS } from '@teambit/legacy/dist/constants';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport mapSeries from 'p-map-series';\nimport chalk from 'chalk';\nimport { ChildProcess } from 'child_process';\nimport chokidar, { FSWatcher } from 'chokidar';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\nimport { PathLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { WorkspaceAspect } from '../';\nimport { OnComponentChangeEvent, OnComponentAddEvent, OnComponentRemovedEvent } from '../events';\nimport { Workspace } from '../workspace';\nimport { OnComponentEventResult } from '../on-component-events';\n\nexport type WatcherProcessData = { watchProcess: ChildProcess; compilerId: BitId; componentIds: BitId[] };\n\nexport type WatchOptions = { verbose?: boolean; checkTypes?: boolean; skipPreCompilation?: boolean };\n\nexport class Watcher {\n private fsWatcher: FSWatcher;\n constructor(\n private workspace: Workspace,\n private pubsub: PubsubMain,\n private trackDirs: { [dir: PathLinux]: ComponentID } = {},\n private verbose = false,\n private multipleWatchers: WatcherProcessData[] = []\n ) {}\n\n async watch(opts: { msgs } & WatchOptions) {\n this.verbose = Boolean(opts.verbose);\n await this.watchAll(opts);\n }\n\n get consumer(): Consumer {\n return this.workspace.consumer;\n }\n\n async watchAll(opts: { msgs; initiator?: CompilationInitiator } & WatchOptions) {\n const { msgs, ...watchOpts } = opts;\n // TODO: run build in the beginning of process (it's work like this in other envs)\n const pathsToWatch = await this.getPathsToWatch();\n const componentIds = Object.values(this.trackDirs);\n await this.workspace.triggerOnPreWatch(componentIds, watchOpts);\n await this.createWatcher(pathsToWatch);\n const watcher = this.fsWatcher;\n msgs?.onStart(this.workspace);\n\n return new Promise((resolve, reject) => {\n // prefix your command with \"BIT_LOG=*\" to see all watch events\n if (process.env.BIT_LOG) {\n if (msgs?.onAll) watcher.on('all', msgs?.onAll);\n }\n watcher.on('ready', () => {\n msgs?.onReady(this.workspace, this.trackDirs, this.verbose);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('change', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath, opts?.initiator)) || [];\n const duration = new Date().getTime() - startTime;\n msgs?.onChange(filePath, buildResults, this.verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('add', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath)) || [];\n const duration = new Date().getTime() - startTime;\n msgs?.onAdd(filePath, buildResults, this.verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('unlink', async (p) => {\n msgs?.onUnlink(p);\n await this.handleChange(p);\n });\n watcher.on('error', (err) => {\n msgs?.onError(err);\n reject(err);\n });\n });\n }\n\n private async handleChange(filePath: string, initiator?: CompilationInitiator): Promise<OnComponentEventResult[]> {\n try {\n if (filePath.endsWith(BIT_MAP)) {\n const buildResults = await this.handleBitmapChanges();\n this.completeWatch();\n return buildResults;\n }\n const componentId = await this.getComponentIdAndClearItsCache(filePath);\n if (!componentId) {\n logger.debug(`file ${filePath} is not part of any component, ignoring it`);\n return this.completeWatch();\n }\n\n const buildResults = await this.executeWatchOperationsOnComponent(componentId, [filePath], true, initiator);\n this.completeWatch();\n return buildResults;\n } catch (err: any) {\n const msg = `watcher found an error while handling ${filePath}`;\n logger.error(msg, err);\n logger.console(`${msg}, ${err.message}`);\n return [];\n }\n }\n\n /**\n * if .bitmap changed, it's possible that a new component has been added. trigger onComponentAdd.\n */\n private async handleBitmapChanges(): Promise<OnComponentEventResult[]> {\n const previewsTrackDirs = { ...this.trackDirs };\n await this.workspace._reloadConsumer();\n await this.setTrackDirs();\n const newDirs: string[] = difference(Object.keys(this.trackDirs), Object.keys(previewsTrackDirs));\n const removedDirs: string[] = difference(Object.keys(previewsTrackDirs), Object.keys(this.trackDirs));\n const results: OnComponentEventResult[] = [];\n if (newDirs.length) {\n this.fsWatcher.add(newDirs);\n const addResults = await mapSeries(newDirs, async (dir) =>\n this.executeWatchOperationsOnComponent(this.trackDirs[dir], [], false)\n );\n results.push(...addResults.flat());\n }\n if (removedDirs.length) {\n await this.fsWatcher.unwatch(removedDirs);\n await mapSeries(removedDirs, (dir) => this.executeWatchOperationsOnRemove(previewsTrackDirs[dir]));\n }\n return results;\n }\n\n private async executeWatchOperationsOnRemove(componentId: ComponentID) {\n logger.debug(`running OnComponentRemove hook for ${chalk.bold(componentId.toString())}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentRemovedEvent(componentId.toString()));\n await this.workspace.triggerOnComponentRemove(componentId);\n }\n\n private async executeWatchOperationsOnComponent(\n componentId: ComponentID,\n files: string[],\n isChange = true,\n initiator?: CompilationInitiator\n ): Promise<OnComponentEventResult[]> {\n if (this.isComponentWatchedExternally(componentId)) {\n // update capsule, once done, it automatically triggers the external watcher\n await this.workspace.get(componentId);\n return [];\n }\n const idStr = componentId.toString();\n\n if (isChange) {\n logger.debug(`running OnComponentChange hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentChangeEvent(idStr, 'OnComponentChange'));\n } else {\n logger.debug(`running OnComponentAdd hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentAddEvent(idStr, 'OnComponentAdd'));\n }\n\n let buildResults: OnComponentEventResult[];\n try {\n buildResults = isChange\n ? await this.workspace.triggerOnComponentChange(componentId, files, initiator)\n : await this.workspace.triggerOnComponentAdd(componentId);\n } catch (err: any) {\n // do not exit the watch process on errors, just print them\n const msg = `found an issue during onComponentChange or onComponentAdd hooks`;\n logger.error(msg, err);\n logger.console(`\\n${msg}: ${err.message || err}`);\n return [];\n }\n if (buildResults && buildResults.length) {\n return buildResults;\n }\n logger.console(`${idStr} doesn't have a compiler, nothing to build`);\n return [];\n }\n\n private creatOnComponentRemovedEvent(idStr) {\n return new OnComponentRemovedEvent(Date.now(), idStr);\n }\n\n private creatOnComponentChangeEvent(idStr, hook) {\n return new OnComponentChangeEvent(Date.now(), idStr, hook);\n }\n\n private creatOnComponentAddEvent(idStr, hook) {\n return new OnComponentAddEvent(Date.now(), idStr, hook);\n }\n\n private completeWatch() {\n loader.stop();\n return [];\n }\n\n private isComponentWatchedExternally(componentId: ComponentID) {\n const watcherData = this.multipleWatchers.find((m) => m.componentIds.find((id) => id.isEqual(componentId._legacy)));\n if (watcherData) {\n logger.debug(`${componentId.toString()} is watched by ${watcherData.compilerId.toString()}`);\n return true;\n }\n return false;\n }\n\n /**\n * if a file was added/remove, once the component is loaded, it changes .bitmap, and then the\n * entire cache is invalidated and the consumer is reloaded.\n * when a file just changed, no need to reload the consumer, it is enough to just delete the\n * component from the cache (both, workspace and consumer)\n */\n private async getComponentIdAndClearItsCache(filePath: string): Promise<ComponentID | null> {\n const relativeFile = pathNormalizeToLinux(this.consumer.getPathRelativeToConsumer(filePath));\n const trackDir = this.findTrackDirByFilePathRecursively(relativeFile);\n if (!trackDir) {\n // the file is not part of any component. If it was a new component, or a new file of\n // existing component, then, handleBitmapChanges() should deal with it.\n return null;\n }\n const componentId = this.trackDirs[trackDir];\n this.workspace.clearComponentCache(componentId);\n const component = await this.workspace.get(componentId);\n const componentMap: ComponentMap = component.state._consumer.componentMap;\n if (componentMap.getFilesRelativeToConsumer().find((p) => p === relativeFile)) {\n return componentId;\n }\n // the file is inside the component dir but it's ignored. (e.g. it's in IGNORE_LIST)\n return null;\n }\n\n private findTrackDirByFilePathRecursively(filePath: string): string | null {\n if (this.trackDirs[filePath]) return filePath;\n const parentDir = dirname(filePath);\n if (parentDir === filePath) return null;\n return this.findTrackDirByFilePathRecursively(parentDir);\n }\n\n private async createWatcher(pathsToWatch: string[]) {\n this.fsWatcher = chokidar.watch(pathsToWatch, {\n ignoreInitial: true,\n // Using the function way since the regular way not working as expected\n // It might be solved when upgrading to chokidar > 3.0.0\n // See:\n // https://github.com/paulmillr/chokidar/issues/773\n // https://github.com/paulmillr/chokidar/issues/492\n // https://github.com/paulmillr/chokidar/issues/724\n ignored: (path) => {\n // Ignore package.json temporarily since it cerates endless loop since it's re-written after each build\n if (path.includes(`${sep}node_modules${sep}`) || path.includes(`${sep}package.json`)) {\n return true;\n }\n return false;\n },\n persistent: true,\n useFsEvents: false,\n });\n }\n\n async setTrackDirs() {\n this.trackDirs = {};\n const componentsFromBitMap = this.consumer.bitMap.getAllComponents([\n COMPONENT_ORIGINS.AUTHORED,\n COMPONENT_ORIGINS.IMPORTED,\n ]);\n await Promise.all(\n componentsFromBitMap.map(async (componentMap) => {\n const bitId = componentMap.id;\n const trackDir = componentMap.getTrackDir();\n if (!trackDir) throw new Error(`${bitId.toString()} has no rootDir, which is invalid in Harmony`);\n const componentId = await this.workspace.resolveComponentId(bitId);\n this.trackDirs[trackDir] = componentId;\n })\n );\n }\n\n private async getPathsToWatch(): Promise<PathOsBasedAbsolute[]> {\n await this.setTrackDirs();\n const paths = [...Object.keys(this.trackDirs), BIT_MAP];\n const pathsAbsolute = paths.map((dir) => this.consumer.toAbsolutePath(dir));\n return pathsAbsolute;\n }\n}\n"]}
@@ -27,9 +27,9 @@ import type { ComponentLog } from '@teambit/legacy/dist/scope/models/model-compo
27
27
  import { CompilationInitiator } from '@teambit/compiler';
28
28
  import { OnComponentAdd, OnComponentChange, OnComponentEventResult, OnComponentLoad, OnComponentRemove } from './on-component-events';
29
29
  import { WorkspaceExtConfig } from './types';
30
- import { Watcher } from './watch/watcher';
30
+ import { Watcher, WatchOptions } from './watch/watcher';
31
31
  import { ComponentStatus } from './workspace-component/component-status';
32
- import { OnComponentAddSlot, OnComponentChangeSlot, OnComponentLoadSlot, OnComponentRemoveSlot } from './workspace.provider';
32
+ import { OnComponentAddSlot, OnComponentChangeSlot, OnComponentLoadSlot, OnComponentRemoveSlot, OnPreWatch, OnPreWatchSlot } from './workspace.provider';
33
33
  import { WorkspaceComponentLoader } from './workspace-component/workspace-component-loader';
34
34
  export declare type EjectConfResult = {
35
35
  configPath: string;
@@ -80,12 +80,13 @@ export declare class Workspace implements ComponentFactory {
80
80
  private envs;
81
81
  private onComponentAddSlot;
82
82
  private onComponentRemoveSlot;
83
+ private onPreWatchSlot;
83
84
  private graphql;
84
85
  priority: boolean;
85
86
  owner?: string;
86
87
  componentsScopeDirsMap: ComponentScopeDirMap;
87
88
  componentLoader: WorkspaceComponentLoader;
88
- constructor(pubsub: PubsubMain, config: WorkspaceExtConfig, consumer: Consumer, scope: ScopeMain, componentAspect: ComponentMain, isolator: IsolatorMain, dependencyResolver: DependencyResolverMain, variants: VariantsMain, aspectLoader: AspectLoaderMain, logger: Logger, componentList: ComponentsList, harmony: Harmony, onComponentLoadSlot: OnComponentLoadSlot, onComponentChangeSlot: OnComponentChangeSlot, envs: EnvsMain, onComponentAddSlot: OnComponentAddSlot, onComponentRemoveSlot: OnComponentRemoveSlot, graphql: GraphqlMain);
89
+ constructor(pubsub: PubsubMain, config: WorkspaceExtConfig, consumer: Consumer, scope: ScopeMain, componentAspect: ComponentMain, isolator: IsolatorMain, dependencyResolver: DependencyResolverMain, variants: VariantsMain, aspectLoader: AspectLoaderMain, logger: Logger, componentList: ComponentsList, harmony: Harmony, onComponentLoadSlot: OnComponentLoadSlot, onComponentChangeSlot: OnComponentChangeSlot, envs: EnvsMain, onComponentAddSlot: OnComponentAddSlot, onComponentRemoveSlot: OnComponentRemoveSlot, onPreWatchSlot: OnPreWatchSlot, graphql: GraphqlMain);
89
90
  private validateConfig;
90
91
  readonly watcher: Watcher;
91
92
  get path(): string;
@@ -95,6 +96,7 @@ export declare class Workspace implements ComponentFactory {
95
96
  registerOnComponentChange(onComponentChangeFunc: OnComponentChange): this;
96
97
  registerOnComponentAdd(onComponentAddFunc: OnComponentAdd): this;
97
98
  registerOnComponentRemove(onComponentRemoveFunc: OnComponentRemove): this;
99
+ registerOnPreWatch(onPreWatchFunc: OnPreWatch): this;
98
100
  get name(): string;
99
101
  get icon(): string;
100
102
  hasModifiedDependencies(component: Component): Promise<boolean>;
@@ -122,7 +124,7 @@ export declare class Workspace implements ComponentFactory {
122
124
  getEnvSystemDescriptor(component: Component): Promise<AspectData>;
123
125
  clearCache(): void;
124
126
  clearComponentCache(id: ComponentID): void;
125
- triggerOnComponentChange(id: ComponentID, initiator?: CompilationInitiator): Promise<OnComponentEventResult[]>;
127
+ triggerOnComponentChange(id: ComponentID, files: string[], initiator?: CompilationInitiator): Promise<OnComponentEventResult[]>;
126
128
  triggerOnComponentAdd(id: ComponentID): Promise<OnComponentEventResult[]>;
127
129
  triggerOnComponentRemove(id: ComponentID): Promise<OnComponentEventResult[]>;
128
130
  getState(id: ComponentID, hash: string): Promise<import("@teambit/component").State>;
@@ -142,6 +144,9 @@ export declare class Workspace implements ComponentFactory {
142
144
  componentDir(componentId: ComponentID, bitMapOptions?: GetBitMapComponentOptions, options?: {
143
145
  relative: boolean;
144
146
  }): PathOsBased;
147
+ componentPackageDir(component: Component, options?: {
148
+ relative: boolean;
149
+ }): string;
145
150
  private componentDirFromLegacyId;
146
151
  componentDirToAbsolute(relativeComponentDir: PathOsBasedRelative): PathOsBasedAbsolute;
147
152
  componentDefaultScope(componentId: ComponentID): Promise<string | undefined>;
@@ -149,6 +154,7 @@ export declare class Workspace implements ComponentFactory {
149
154
  get defaultScope(): string;
150
155
  private componentDefaultScopeFromComponentDirAndNameWithoutConfigFile;
151
156
  componentExtensions(componentId: ComponentID, componentFromScope?: Component): Promise<ExtensionDataList>;
157
+ triggerOnPreWatch(componentIds: ComponentID[], watchOpts: WatchOptions): Promise<void>;
152
158
  private resolveExtensionListIds;
153
159
  private isVendorComponentByComponentDir;
154
160
  private componentConfigFile;