@teambit/workspace 0.0.532 → 0.0.536

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
@@ -4,6 +4,7 @@ export type { ResolvedComponent } from '@teambit/harmony.modules.resolved-compon
4
4
  export type { AlreadyExistsError as ComponentConfigFileAlreadyExistsError } from './component-config-file';
5
5
  export type { WorkspaceMain } from './workspace.main.runtime';
6
6
  export type { WatchOptions } from './watch/watcher';
7
+ export { CheckTypes } from './watch/check-types';
7
8
  export * from './events';
8
9
  export type { WorkspaceUI } from './workspace.ui.runtime';
9
10
  export type { SerializableResults, OnComponentEventResult } from './on-component-events';
package/dist/index.js CHANGED
@@ -5,10 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var _exportNames = {
7
7
  WorkspaceAspect: true,
8
+ CheckTypes: true,
8
9
  ComponentStatus: true,
9
10
  WorkspaceModelComponent: true,
10
11
  WorkspaceContext: true
11
12
  };
13
+ Object.defineProperty(exports, "CheckTypes", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _checkTypes().CheckTypes;
17
+ }
18
+ });
12
19
  Object.defineProperty(exports, "ComponentStatus", {
13
20
  enumerable: true,
14
21
  get: function () {
@@ -45,6 +52,16 @@ function _workspace() {
45
52
  return data;
46
53
  }
47
54
 
55
+ function _checkTypes() {
56
+ const data = require("./watch/check-types");
57
+
58
+ _checkTypes = function () {
59
+ return data;
60
+ };
61
+
62
+ return data;
63
+ }
64
+
48
65
  var _events = require("./events");
49
66
 
50
67
  Object.keys(_events).forEach(function (key) {
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';\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"]}
1
+ {"version":3,"sources":["index.ts"],"names":["WorkspaceAspect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;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 { CheckTypes } from './watch/check-types';\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"]}
@@ -0,0 +1,5 @@
1
+ export declare enum CheckTypes {
2
+ None = 0,
3
+ EntireProject = 1,
4
+ ChangedFile = 2
5
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CheckTypes = void 0;
7
+ let CheckTypes;
8
+ exports.CheckTypes = CheckTypes;
9
+
10
+ (function (CheckTypes) {
11
+ CheckTypes[CheckTypes["None"] = 0] = "None";
12
+ CheckTypes[CheckTypes["EntireProject"] = 1] = "EntireProject";
13
+ CheckTypes[CheckTypes["ChangedFile"] = 2] = "ChangedFile";
14
+ })(CheckTypes || (exports.CheckTypes = CheckTypes = {}));
15
+
16
+ //# sourceMappingURL=check-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["check-types.ts"],"names":["CheckTypes"],"mappings":";;;;;;IAAYA,U;;;WAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U","sourcesContent":["export enum CheckTypes {\n None, // keep this. it equals zero. this way we can do \"if checkTypes() ... \"\n EntireProject,\n ChangedFile,\n}\n"]}
@@ -6,7 +6,7 @@ import { OnComponentEventResult } from '../on-component-events';
6
6
  export declare type WatchCmdOpts = {
7
7
  verbose?: boolean;
8
8
  skipPreCompilation?: boolean;
9
- checkTypes?: boolean;
9
+ checkTypes?: string | boolean;
10
10
  };
11
11
  export declare class WatchCommand implements Command {
12
12
  private pubsub;
@@ -59,6 +59,16 @@ function _outputFormatter() {
59
59
  return data;
60
60
  }
61
61
 
62
+ function _checkTypes() {
63
+ const data = require("./check-types");
64
+
65
+ _checkTypes = function () {
66
+ return data;
67
+ };
68
+
69
+ return data;
70
+ }
71
+
62
72
  // import IDs and events
63
73
  class WatchCommand {
64
74
  constructor(
@@ -81,8 +91,7 @@ class WatchCommand {
81
91
  onAll: (event, path) => this.logger.console(`Event: "${event}". Path: ${path}`),
82
92
  onStart: () => {},
83
93
  onReady: (workspace, watchPathsSortByComponent, verbose) => {
84
- // eslint-disable-next-line no-console
85
- console.clear();
94
+ clearOutdatedData();
86
95
 
87
96
  if (verbose) {
88
97
  this.logger.console((0, _outputFormatter().formatWatchPathsSortByComponent)(watchPathsSortByComponent));
@@ -91,8 +100,7 @@ class WatchCommand {
91
100
  this.logger.console(_chalk().default.yellow(`Watching for component changes in workspace ${workspace.config.name} (${(0, _moment().default)().format('HH:mm:ss')})...\n`));
92
101
  },
93
102
  onChange: (filePath, buildResults, verbose, duration) => {
94
- // eslint-disable-next-line no-console
95
- console.clear();
103
+ clearOutdatedData();
96
104
 
97
105
  if (!buildResults.length) {
98
106
  this.logger.console(`The file ${filePath} has been changed, but nothing to compile.\n\n`);
@@ -105,8 +113,7 @@ class WatchCommand {
105
113
  this.logger.console(_chalk().default.yellow(`Watching for component changes (${(0, _moment().default)().format('HH:mm:ss')})...`));
106
114
  },
107
115
  onAdd: (filePath, buildResults, verbose, duration) => {
108
- // eslint-disable-next-line no-console
109
- console.clear();
116
+ clearOutdatedData();
110
117
  this.logger.console(`The file ${filePath} has been added.\n\n`);
111
118
  this.logger.console((0, _outputFormatter().formatCompileResults)(buildResults, verbose));
112
119
  this.logger.console(`Finished. (${duration}ms)`);
@@ -124,7 +131,7 @@ class WatchCommand {
124
131
  (0, _defineProperty2().default)(this, "alias", '');
125
132
  (0, _defineProperty2().default)(this, "group", 'development');
126
133
  (0, _defineProperty2().default)(this, "shortDescription", '');
127
- (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']]);
134
+ (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 [string]', 'EXPERIMENTAL. show errors/warnings for types. options are [file, project] to investigate only changed file or entire project. defaults to project']]);
128
135
  (0, _defineProperty2().default)(this, "eventsListener", event => {
129
136
  switch (event.type) {
130
137
  case _compiler().CompilerErrorEvent.TYPE:
@@ -146,20 +153,48 @@ class WatchCommand {
146
153
  verbose,
147
154
  checkTypes
148
155
  } = watchCmdOpts;
156
+
157
+ const getCheckTypesEnum = () => {
158
+ switch (checkTypes) {
159
+ case undefined:
160
+ case false:
161
+ return _checkTypes().CheckTypes.None;
162
+
163
+ case 'project':
164
+ case true:
165
+ // project is the default
166
+ return _checkTypes().CheckTypes.EntireProject;
167
+
168
+ case 'file':
169
+ return _checkTypes().CheckTypes.ChangedFile;
170
+
171
+ default:
172
+ throw new Error(`check-types can be either "file" or "project". got "${checkTypes}"`);
173
+ }
174
+ };
175
+
149
176
  const watchOpts = {
150
177
  msgs: this.msgs,
151
178
  verbose,
152
179
  preCompile: !watchCmdOpts.skipPreCompilation,
153
- spawnTSServer: checkTypes,
180
+ spawnTSServer: Boolean(checkTypes),
154
181
  // if check-types is enabled, it must spawn the tsserver.
155
- checkTypes
182
+ checkTypes: getCheckTypesEnum()
156
183
  };
157
184
  await this.watcher.watchAll(watchOpts);
158
185
  return 'watcher terminated';
159
186
  }
160
187
 
161
188
  }
189
+ /**
190
+ * with console.clear() all history is deleted from the console. this function preserver the history.
191
+ */
192
+
162
193
 
163
194
  exports.WatchCommand = WatchCommand;
164
195
 
196
+ function clearOutdatedData() {
197
+ process.stdout.write('\x1Bc');
198
+ }
199
+
165
200
  //# sourceMappingURL=watch.cmd.js.map
@@ -1 +1 @@
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","watchCmdOpts","checkTypes","watchOpts","msgs","preCompile","skipPreCompilation","spawnTSServer","watchAll"],"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 type WatchCmdOpts = {\n verbose?: boolean;\n skipPreCompilation?: boolean;\n checkTypes?: boolean;\n};\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: [], watchCmdOpts: WatchCmdOpts) {\n const { verbose, checkTypes } = watchCmdOpts;\n const watchOpts: WatchOptions = {\n msgs: this.msgs,\n verbose,\n preCompile: !watchCmdOpts.skipPreCompilation,\n spawnTSServer: checkTypes, // if check-types is enabled, it must spawn the tsserver.\n checkTypes,\n };\n await this.watcher.watchAll(watchOpts);\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","clearOutdatedData","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","watchCmdOpts","checkTypes","getCheckTypesEnum","undefined","CheckTypes","None","EntireProject","ChangedFile","Error","watchOpts","msgs","preCompile","skipPreCompilation","spawnTSServer","Boolean","watchAll","process","stdout","write"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AANA;AAcO,MAAMA,YAAN,CAAsC;AAwD3CC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,MAJC;AAMT;AACJ;AACA;AACYC,EAAAA,MATC;AAWT;AACJ;AACA;AACYC,EAAAA,OAdC,EAeT;AAAA,SAXQF,MAWR,GAXQA,MAWR;AAAA,SANQC,MAMR,GANQA,MAMR;AAAA,SADQC,OACR,GADQA,OACR;AAAA,kDAtEK;AACLC,MAAAA,KAAK,EAAE,CAACC,KAAD,EAAQC,IAAR,KAAiB,KAAKJ,MAAL,CAAYK,OAAZ,CAAqB,WAAUF,KAAM,YAAWC,IAAK,EAArD,CADnB;AAELE,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFZ;AAGLC,MAAAA,OAAO,EAAE,CAACC,SAAD,EAAYC,yBAAZ,EAAuCC,OAAvC,KAAmD;AAC1DC,QAAAA,iBAAiB;;AACjB,YAAID,OAAJ,EAAa;AACX,eAAKV,MAAL,CAAYK,OAAZ,CAAoB,wDAAgCI,yBAAhC,CAApB;AACD;;AACD,aAAKT,MAAL,CAAYK,OAAZ,CACEO,iBAAMC,MAAN,CACG,+CAA8CL,SAAS,CAACM,MAAV,CAAiBC,IAAK,KAAI,yBAASC,MAAT,CAAgB,UAAhB,CAA4B,QADvG,CADF;AAKD,OAbI;AAcLC,MAAAA,QAAQ,EAAE,CAACC,QAAD,EAAmBC,YAAnB,EAA2DT,OAA3D,EAA6EU,QAA7E,KAA0F;AAClGT,QAAAA,iBAAiB;;AACjB,YAAI,CAACQ,YAAY,CAACE,MAAlB,EAA0B;AACxB,eAAKrB,MAAL,CAAYK,OAAZ,CAAqB,YAAWa,QAAS,gDAAzC;AACA;AACD;;AACD,aAAKlB,MAAL,CAAYK,OAAZ,CAAqB,YAAWa,QAAS,wBAAzC;AACA,aAAKlB,MAAL,CAAYK,OAAZ,CAAoB,6CAAqBc,YAArB,EAAmCT,OAAnC,CAApB;AACA,aAAKV,MAAL,CAAYK,OAAZ,CAAqB,cAAae,QAAS,KAA3C;AACA,aAAKpB,MAAL,CAAYK,OAAZ,CAAoBO,iBAAMC,MAAN,CAAc,mCAAkC,yBAASG,MAAT,CAAgB,UAAhB,CAA4B,MAA5E,CAApB;AACD,OAxBI;AAyBLM,MAAAA,KAAK,EAAE,CAACJ,QAAD,EAAmBC,YAAnB,EAA2DT,OAA3D,EAA6EU,QAA7E,KAA0F;AAC/FT,QAAAA,iBAAiB;AACjB,aAAKX,MAAL,CAAYK,OAAZ,CAAqB,YAAWa,QAAS,sBAAzC;AACA,aAAKlB,MAAL,CAAYK,OAAZ,CAAoB,6CAAqBc,YAArB,EAAmCT,OAAnC,CAApB;AACA,aAAKV,MAAL,CAAYK,OAAZ,CAAqB,cAAae,QAAS,KAA3C;AACA,aAAKpB,MAAL,CAAYK,OAAZ,CAAoBO,iBAAMC,MAAN,CAAc,mCAAkC,yBAASG,MAAT,CAAgB,UAAhB,CAA4B,MAA5E,CAApB;AACD,OA/BI;AAgCLO,MAAAA,QAAQ,EAAGC,CAAD,IAAO;AACf,aAAKxB,MAAL,CAAYK,OAAZ,CAAqB,QAAOmB,CAAE,mBAA9B;AACD,OAlCI;AAmCLC,MAAAA,OAAO,EAAGC,GAAD,IAAS;AAChB,aAAK1B,MAAL,CAAYK,OAAZ,CAAqB,iBAAgBqB,GAAI,EAAzC;AACD;AArCI,KAsEL;AAAA,kDA9BK,OA8BL;AAAA,yDA7BY,2BA6BZ;AAAA,mDA5BM,EA4BN;AAAA,mDA3BM,aA2BN;AAAA,8DA1BiB,EA0BjB;AAAA,qDAzBQ,CACR,CAAC,GAAD,EAAM,SAAN,EAAiB,kEAAjB,CADQ,EAER,CAAC,EAAD,EAAK,sBAAL,EAA6B,oDAA7B,CAFQ,EAGR,CACE,GADF,EAEE,sBAFF,EAGE,mJAHF,CAHQ,CAyBR;AAAA,4DAQwBvB,KAAD,IAA8B;AACrD,cAAQA,KAAK,CAACwB,IAAd;AACE,aAAKC,+BAAmBC,IAAxB;AACE,eAAK7B,MAAL,CAAYK,OAAZ,CAAqB,iBAAgBF,KAAK,CAAC2B,IAAN,CAAWC,KAAM,WAAtD;AACA;;AACF;AAJF;AAMD,KAfC;AACA,SAAKC,gBAAL;AACD;;AAEOA,EAAAA,gBAAgB,GAAG;AACzB,SAAKjC,MAAL,CAAYkC,GAAZ,CAAgBC,2BAAeC,EAA/B,EAAmC,KAAKC,cAAxC;AACD;;AAWW,QAANC,MAAM,CAACC,OAAD,EAAcC,YAAd,EAA0C;AACpD,UAAM;AAAE7B,MAAAA,OAAF;AAAW8B,MAAAA;AAAX,QAA0BD,YAAhC;;AACA,UAAME,iBAAiB,GAAG,MAAM;AAC9B,cAAQD,UAAR;AACE,aAAKE,SAAL;AACA,aAAK,KAAL;AACE,iBAAOC,yBAAWC,IAAlB;;AACF,aAAK,SAAL;AACA,aAAK,IAAL;AAAW;AACT,iBAAOD,yBAAWE,aAAlB;;AACF,aAAK,MAAL;AACE,iBAAOF,yBAAWG,WAAlB;;AACF;AACE,gBAAM,IAAIC,KAAJ,CAAW,uDAAsDP,UAAW,GAA5E,CAAN;AAVJ;AAYD,KAbD;;AAcA,UAAMQ,SAAuB,GAAG;AAC9BC,MAAAA,IAAI,EAAE,KAAKA,IADmB;AAE9BvC,MAAAA,OAF8B;AAG9BwC,MAAAA,UAAU,EAAE,CAACX,YAAY,CAACY,kBAHI;AAI9BC,MAAAA,aAAa,EAAEC,OAAO,CAACb,UAAD,CAJQ;AAIM;AACpCA,MAAAA,UAAU,EAAEC,iBAAiB;AALC,KAAhC;AAOA,UAAM,KAAKxC,OAAL,CAAaqD,QAAb,CAAsBN,SAAtB,CAAN;AACA,WAAO,oBAAP;AACD;;AAjH0C;AAoH7C;AACA;AACA;;;;;AACA,SAASrC,iBAAT,GAA6B;AAC3B4C,EAAAA,OAAO,CAACC,MAAR,CAAeC,KAAf,CAAqB,OAArB;AACD","sourcesContent":["import chalk from 'chalk';\nimport moment from 'moment';\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';\nimport { CheckTypes } from './check-types';\n\nexport type WatchCmdOpts = {\n verbose?: boolean;\n skipPreCompilation?: boolean;\n checkTypes?: string | boolean;\n};\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 clearOutdatedData();\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 clearOutdatedData();\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 clearOutdatedData();\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 [\n 't',\n 'check-types [string]',\n 'EXPERIMENTAL. show errors/warnings for types. options are [file, project] to investigate only changed file or entire project. defaults to project',\n ],\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: [], watchCmdOpts: WatchCmdOpts) {\n const { verbose, checkTypes } = watchCmdOpts;\n const getCheckTypesEnum = () => {\n switch (checkTypes) {\n case undefined:\n case false:\n return CheckTypes.None;\n case 'project':\n case true: // project is the default\n return CheckTypes.EntireProject;\n case 'file':\n return CheckTypes.ChangedFile;\n default:\n throw new Error(`check-types can be either \"file\" or \"project\". got \"${checkTypes}\"`);\n }\n };\n const watchOpts: WatchOptions = {\n msgs: this.msgs,\n verbose,\n preCompile: !watchCmdOpts.skipPreCompilation,\n spawnTSServer: Boolean(checkTypes), // if check-types is enabled, it must spawn the tsserver.\n checkTypes: getCheckTypesEnum(),\n };\n await this.watcher.watchAll(watchOpts);\n return 'watcher terminated';\n }\n}\n\n/**\n * with console.clear() all history is deleted from the console. this function preserver the history.\n */\nfunction clearOutdatedData() {\n process.stdout.write('\\x1Bc');\n}\n"]}
@@ -7,6 +7,7 @@ import { ChildProcess } from 'child_process';
7
7
  import { PathLinux } from '@teambit/legacy/dist/utils/path';
8
8
  import { CompilationInitiator } from '@teambit/compiler';
9
9
  import { Workspace } from '../workspace';
10
+ import { CheckTypes } from './check-types';
10
11
  export declare type WatcherProcessData = {
11
12
  watchProcess: ChildProcess;
12
13
  compilerId: BitId;
@@ -17,7 +18,7 @@ export declare type WatchOptions = {
17
18
  initiator?: CompilationInitiator;
18
19
  verbose?: boolean;
19
20
  spawnTSServer?: boolean;
20
- checkTypes?: boolean;
21
+ checkTypes?: CheckTypes;
21
22
  preCompile?: boolean;
22
23
  };
23
24
  export declare class Watcher {
@@ -1 +1 @@
1
- {"version":3,"sources":["watcher.ts"],"names":["Watcher","constructor","workspace","pubsub","trackDirs","verbose","multipleWatchers","consumer","watchAll","opts","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","watch","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 type WatchOptions = {\n msgs?: any;\n initiator?: CompilationInitiator;\n verbose?: boolean; // print watch events to the console. (also ts-server events if spawnTSServer is true)\n spawnTSServer?: boolean; // needed for check types and extract API/docs.\n checkTypes?: boolean; // if enabled, the spawnTSServer becomes true.\n preCompile?: boolean; // whether compile all components before start watching\n};\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 get consumer(): Consumer {\n return this.workspace.consumer;\n }\n\n async watchAll(opts: 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"]}
1
+ {"version":3,"sources":["watcher.ts"],"names":["Watcher","constructor","workspace","pubsub","trackDirs","verbose","multipleWatchers","consumer","watchAll","opts","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","watch","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';\nimport { CheckTypes } from './check-types';\n\nexport type WatcherProcessData = { watchProcess: ChildProcess; compilerId: BitId; componentIds: BitId[] };\n\nexport type WatchOptions = {\n msgs?: any;\n initiator?: CompilationInitiator;\n verbose?: boolean; // print watch events to the console. (also ts-server events if spawnTSServer is true)\n spawnTSServer?: boolean; // needed for check types and extract API/docs.\n checkTypes?: CheckTypes; // if enabled, the spawnTSServer becomes true.\n preCompile?: boolean; // whether compile all components before start watching\n};\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 get consumer(): Consumer {\n return this.workspace.consumer;\n }\n\n async watchAll(opts: 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"]}
package/dist/workspace.js CHANGED
@@ -901,7 +901,7 @@ class Workspace {
901
901
  const addResults = await addComponent.add(); // @todo: the legacy commands have `consumer.onDestroy()` on command completion, it writes the
902
902
  // .bitmap file. workspace needs a similar mechanism. once done, remove the next line.
903
903
 
904
- await this.consumer.bitMap.write(this.consumer.componentFsCache);
904
+ await this.writeBitMap();
905
905
  return addResults;
906
906
  }
907
907
  /**
@@ -1608,21 +1608,16 @@ your workspace.jsonc has this component-id set. you might want to remove/change
1608
1608
  verbose: false,
1609
1609
  merge: false,
1610
1610
  objectsOnly: true,
1611
- withEnvironments: false,
1612
1611
  override: false,
1613
1612
  writeDists: false,
1614
1613
  writeConfig: false,
1615
1614
  installNpmPackages: false,
1616
- writePackageJson: false,
1617
1615
  importDependenciesDirectly: false,
1618
1616
  importDependents: false
1619
1617
  };
1620
1618
 
1621
1619
  try {
1622
- const res = await (0, _consumer().importAction)({
1623
- tester: false,
1624
- compiler: false
1625
- }, importOptions, []);
1620
+ const res = await (0, _consumer().importAction)(importOptions, []);
1626
1621
  return res;
1627
1622
  } catch (err) {
1628
1623
  // TODO: this is a hack since the legacy throw an error, we should provide a way to not throw this error from the legacy