@teambit/workspace 0.0.526 → 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/capsule.cmd.ts +9 -2
- package/dist/capsule.cmd.d.ts +2 -1
- package/dist/capsule.cmd.js +3 -1
- package/dist/capsule.cmd.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/on-component-events.d.ts +2 -2
- package/dist/watch/output-formatter.js +14 -3
- package/dist/watch/output-formatter.js.map +1 -1
- package/dist/watch/watch.cmd.d.ts +2 -4
- package/dist/watch/watch.cmd.js +17 -9
- package/dist/watch/watch.cmd.js.map +1 -1
- package/dist/watch/watcher.d.ts +8 -5
- package/dist/watch/watcher.js +37 -36
- package/dist/watch/watcher.js.map +1 -1
- package/dist/workspace.d.ts +10 -4
- package/dist/workspace.js +36 -4
- package/dist/workspace.js.map +1 -1
- package/dist/workspace.main.runtime.d.ts +2 -2
- package/dist/workspace.main.runtime.js +1 -1
- package/dist/workspace.main.runtime.js.map +1 -1
- package/dist/workspace.provider.d.ts +7 -3
- package/dist/workspace.provider.js +2 -2
- package/dist/workspace.provider.js.map +1 -1
- package/index.ts +1 -1
- package/on-component-events.ts +2 -1
- package/package-tar/teambit-workspace-0.0.530.tgz +0 -0
- package/package.json +40 -40
- package/watch/output-formatter.ts +8 -1
- package/watch/watch.cmd.tsx +14 -4
- package/watch/watcher.ts +27 -20
- package/workspace.main.runtime.ts +2 -1
- package/workspace.provider.ts +9 -4
- package/workspace.ts +38 -4
- package/package-tar/teambit-workspace-0.0.526.tgz +0 -0
package/capsule.cmd.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { Workspace } from '.';
|
|
|
7
7
|
|
|
8
8
|
type CreateOpts = {
|
|
9
9
|
baseDir?: string;
|
|
10
|
+
rootBaseDir?: string;
|
|
10
11
|
alwaysNew?: boolean;
|
|
11
12
|
seedersOnly?: boolean;
|
|
12
13
|
id: string;
|
|
@@ -19,7 +20,12 @@ export class CapsuleCreateCmd implements Command {
|
|
|
19
20
|
group = 'capsules';
|
|
20
21
|
alias = '';
|
|
21
22
|
options = [
|
|
22
|
-
[
|
|
23
|
+
[
|
|
24
|
+
'b',
|
|
25
|
+
'base-dir <name>',
|
|
26
|
+
'set base dir of all capsules (hashed to create the base dir inside the root dir - host path by default)',
|
|
27
|
+
],
|
|
28
|
+
['r', 'root-base-dir <name>', 'set root base dir of all capsules (absolute path to use as root dir)'],
|
|
23
29
|
['a', 'always-new', 'create new environment for capsule'],
|
|
24
30
|
['s', 'seeders-only', 'create capsules for the seeders only (not for the entire graph)'],
|
|
25
31
|
['i', 'id <name>', 'reuse capsule of certain name'],
|
|
@@ -32,12 +38,13 @@ export class CapsuleCreateCmd implements Command {
|
|
|
32
38
|
|
|
33
39
|
async create(
|
|
34
40
|
[componentIds = []]: [string[]],
|
|
35
|
-
{ baseDir, alwaysNew = false, id, installPackages = false, seedersOnly = false }: CreateOpts
|
|
41
|
+
{ baseDir, rootBaseDir, alwaysNew = false, id, installPackages = false, seedersOnly = false }: CreateOpts
|
|
36
42
|
): Promise<CapsuleList> {
|
|
37
43
|
// @todo: why it is not an array?
|
|
38
44
|
if (componentIds && !Array.isArray(componentIds)) componentIds = [componentIds];
|
|
39
45
|
const capsuleOptions: IsolateComponentsOptions = {
|
|
40
46
|
baseDir,
|
|
47
|
+
rootBaseDir,
|
|
41
48
|
installOptions: { installPackages },
|
|
42
49
|
alwaysNew,
|
|
43
50
|
seedersOnly,
|
package/dist/capsule.cmd.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { CapsuleList, IsolatorMain } from '@teambit/isolator';
|
|
|
3
3
|
import { Workspace } from '.';
|
|
4
4
|
declare type CreateOpts = {
|
|
5
5
|
baseDir?: string;
|
|
6
|
+
rootBaseDir?: string;
|
|
6
7
|
alwaysNew?: boolean;
|
|
7
8
|
seedersOnly?: boolean;
|
|
8
9
|
id: string;
|
|
@@ -17,7 +18,7 @@ export declare class CapsuleCreateCmd implements Command {
|
|
|
17
18
|
alias: string;
|
|
18
19
|
options: CommandOptions;
|
|
19
20
|
constructor(workspace: Workspace, isolator: IsolatorMain);
|
|
20
|
-
create([componentIds]: [string[]], { baseDir, alwaysNew, id, installPackages, seedersOnly }: CreateOpts): Promise<CapsuleList>;
|
|
21
|
+
create([componentIds]: [string[]], { baseDir, rootBaseDir, alwaysNew, id, installPackages, seedersOnly }: CreateOpts): Promise<CapsuleList>;
|
|
21
22
|
report([componentIds]: [string[]], opts: CreateOpts): Promise<string>;
|
|
22
23
|
json([componentIds]: [string[]], opts: CreateOpts): Promise<{
|
|
23
24
|
id: string;
|
package/dist/capsule.cmd.js
CHANGED
|
@@ -43,11 +43,12 @@ class CapsuleCreateCmd {
|
|
|
43
43
|
(0, _defineProperty2().default)(this, "description", `create capsules`);
|
|
44
44
|
(0, _defineProperty2().default)(this, "group", 'capsules');
|
|
45
45
|
(0, _defineProperty2().default)(this, "alias", '');
|
|
46
|
-
(0, _defineProperty2().default)(this, "options", [['b', 'base-dir <name>', 'set base dir of all capsules'], ['a', 'always-new', 'create new environment for capsule'], ['s', 'seeders-only', 'create capsules for the seeders only (not for the entire graph)'], ['i', 'id <name>', 'reuse capsule of certain name'], ['j', 'json', 'json format'], ['d', 'install-packages', 'install packages by the package-manager'], ['p', 'package-manager <name>', 'npm, yarn or pnpm, default to npm']]);
|
|
46
|
+
(0, _defineProperty2().default)(this, "options", [['b', 'base-dir <name>', 'set base dir of all capsules (hashed to create the base dir inside the root dir - host path by default)'], ['r', 'root-base-dir <name>', 'set root base dir of all capsules (absolute path to use as root dir)'], ['a', 'always-new', 'create new environment for capsule'], ['s', 'seeders-only', 'create capsules for the seeders only (not for the entire graph)'], ['i', 'id <name>', 'reuse capsule of certain name'], ['j', 'json', 'json format'], ['d', 'install-packages', 'install packages by the package-manager'], ['p', 'package-manager <name>', 'npm, yarn or pnpm, default to npm']]);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
async create([componentIds = []], {
|
|
50
50
|
baseDir,
|
|
51
|
+
rootBaseDir,
|
|
51
52
|
alwaysNew = false,
|
|
52
53
|
id,
|
|
53
54
|
installPackages = false,
|
|
@@ -57,6 +58,7 @@ class CapsuleCreateCmd {
|
|
|
57
58
|
if (componentIds && !Array.isArray(componentIds)) componentIds = [componentIds];
|
|
58
59
|
const capsuleOptions = {
|
|
59
60
|
baseDir,
|
|
61
|
+
rootBaseDir,
|
|
60
62
|
installOptions: {
|
|
61
63
|
installPackages
|
|
62
64
|
},
|
package/dist/capsule.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["capsule.cmd.ts"],"names":["CapsuleCreateCmd","constructor","workspace","isolator","create","componentIds","baseDir","alwaysNew","id","installPackages","seedersOnly","Array","isArray","capsuleOptions","installOptions","includeFromNestedHosts","name","ids","resolveMultipleComponentIds","network","isolateComponents","capsules","graphCapsules","report","opts","capsuleOutput","map","capsule","chalk","bold","component","toString","path","join","title","length","green","json","c","CapsuleListCmd","list","workspaceCapsulesRootDir","scopeCapsulesRootDir","scopeAspectsCapsulesRootDir","getCapsulesRootDirs","cyan","rootDirs","getCapsulesRootDir","scope","getAspectCapsulePath","CapsuleCmd","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;
|
|
1
|
+
{"version":3,"sources":["capsule.cmd.ts"],"names":["CapsuleCreateCmd","constructor","workspace","isolator","create","componentIds","baseDir","rootBaseDir","alwaysNew","id","installPackages","seedersOnly","Array","isArray","capsuleOptions","installOptions","includeFromNestedHosts","name","ids","resolveMultipleComponentIds","network","isolateComponents","capsules","graphCapsules","report","opts","capsuleOutput","map","capsule","chalk","bold","component","toString","path","join","title","length","green","json","c","CapsuleListCmd","list","workspaceCapsulesRootDir","scopeCapsulesRootDir","scopeAspectsCapsulesRootDir","getCapsulesRootDirs","cyan","rootDirs","getCapsulesRootDir","scope","getAspectCapsulePath","CapsuleCmd","args"],"mappings":"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","sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { CapsuleList, IsolateComponentsOptions, IsolatorMain } from '@teambit/isolator';\nimport chalk from 'chalk';\n\nimport { Workspace } from '.';\n\ntype CreateOpts = {\n baseDir?: string;\n rootBaseDir?: string;\n alwaysNew?: boolean;\n seedersOnly?: boolean;\n id: string;\n installPackages?: boolean;\n};\n\nexport class CapsuleCreateCmd implements Command {\n name = 'create [componentIds...]';\n description = `create capsules`;\n group = 'capsules';\n alias = '';\n options = [\n [\n 'b',\n 'base-dir <name>',\n 'set base dir of all capsules (hashed to create the base dir inside the root dir - host path by default)',\n ],\n ['r', 'root-base-dir <name>', 'set root base dir of all capsules (absolute path to use as root dir)'],\n ['a', 'always-new', 'create new environment for capsule'],\n ['s', 'seeders-only', 'create capsules for the seeders only (not for the entire graph)'],\n ['i', 'id <name>', 'reuse capsule of certain name'],\n ['j', 'json', 'json format'],\n ['d', 'install-packages', 'install packages by the package-manager'],\n ['p', 'package-manager <name>', 'npm, yarn or pnpm, default to npm'],\n ] as CommandOptions;\n\n constructor(private workspace: Workspace, private isolator: IsolatorMain) {}\n\n async create(\n [componentIds = []]: [string[]],\n { baseDir, rootBaseDir, alwaysNew = false, id, installPackages = false, seedersOnly = false }: CreateOpts\n ): Promise<CapsuleList> {\n // @todo: why it is not an array?\n if (componentIds && !Array.isArray(componentIds)) componentIds = [componentIds];\n const capsuleOptions: IsolateComponentsOptions = {\n baseDir,\n rootBaseDir,\n installOptions: { installPackages },\n alwaysNew,\n seedersOnly,\n includeFromNestedHosts: true,\n name: id,\n };\n const ids = await this.workspace.resolveMultipleComponentIds(componentIds);\n const network = await this.isolator.isolateComponents(ids, capsuleOptions);\n const capsules = network.graphCapsules;\n return capsules;\n }\n\n async report([componentIds]: [string[]], opts: CreateOpts) {\n // @ts-ignore\n const capsules = await this.create(componentIds, opts);\n const capsuleOutput = capsules\n .map((capsule) => `${chalk.bold(capsule.component.id.toString())} - ${capsule.path}`)\n .join('\\n');\n const title = `${capsules.length} capsule(s) were created successfully`;\n return `${chalk.green(title)}\\n${capsuleOutput}`;\n }\n\n async json([componentIds]: [string[]], opts: CreateOpts) {\n // @ts-ignore\n const capsules = await this.create(componentIds, opts);\n return capsules.map((c) => ({\n id: c.component.id.toString(),\n path: c.path,\n }));\n }\n}\n\nexport class CapsuleListCmd implements Command {\n name = 'list';\n description = `list all capsules`;\n shortDescription = 'list all capsules';\n group = 'capsules';\n alias = '';\n options = [['j', 'json', 'json format']] as CommandOptions;\n\n constructor(private isolator: IsolatorMain, private workspace: Workspace) {}\n\n async report() {\n const list = await this.isolator.list(this.workspace.path);\n const { workspaceCapsulesRootDir, scopeCapsulesRootDir, scopeAspectsCapsulesRootDir } = this.getCapsulesRootDirs();\n // TODO: improve output\n return chalk.green(`found ${chalk.cyan(list.capsules.length.toString())} capsule(s) for workspace: ${chalk.cyan(\n list.workspace\n )}\nworkspace capsules root-dir: ${chalk.cyan(workspaceCapsulesRootDir)}\nscope capsules root-dir: ${chalk.cyan(scopeCapsulesRootDir)}\nscope's aspects capsules root-dir: ${chalk.cyan(scopeAspectsCapsulesRootDir)}\nuse --json to get the list of all workspace capsules`);\n }\n\n async json() {\n const list = await this.isolator.list(this.workspace.path);\n const rootDirs = this.getCapsulesRootDirs();\n return { ...list, ...rootDirs };\n }\n\n private getCapsulesRootDirs() {\n const workspaceCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.path);\n const scopeCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.path);\n const scopeAspectsCapsulesRootDir = this.isolator.getCapsulesRootDir(this.workspace.scope.getAspectCapsulePath());\n\n return { workspaceCapsulesRootDir, scopeCapsulesRootDir, scopeAspectsCapsulesRootDir };\n }\n}\n\nexport class CapsuleCmd implements Command {\n name = 'capsule <sub-command>';\n shortDescription = 'manage capsules';\n description = `manage capsules.\na capsule is a directory contains the component code, isolated from the workspace.\nnormally, capsules are created during the build process, the component files are copied and the packages are installed\nvia the configured package-manager. the purpose is to compile/test them in isolation to make sure they will work for\nother users after publishing/exporting them.`;\n alias = '';\n group = 'capsules';\n commands: Command[] = [];\n options = [] as CommandOptions;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async report(args: [string]) {\n // it should never be here. Yargs throws an error before reaching this method.\n return `Please specify a sub-command`;\n }\n}\n"]}
|
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';\
|
|
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.
|
|
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$
|
|
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","
|
|
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: [],
|
|
29
|
-
verbose?: boolean;
|
|
30
|
-
}): Promise<string>;
|
|
28
|
+
report(cliArgs: [], watchOpts: WatchOptions): Promise<string>;
|
|
31
29
|
}
|
package/dist/watch/watch.cmd.js
CHANGED
|
@@ -59,7 +59,10 @@ function _outputFormatter() {
|
|
|
59
59
|
return data;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAOA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA
|
|
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"]}
|
package/dist/watch/watcher.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/dist/watch/watcher.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
168
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
309
|
-
|
|
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
|