@teambit/isolator 0.0.0-7fa28665030050601a447ef37da81297a9339ead → 0.0.0-83508807662b7b437419adb1ae0e688afea66ed8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,15 @@
1
- import { NodeFS } from '@teambit/any-fs';
2
- import { Capsule as CapsuleTemplate, Console, Exec, State } from '@teambit/capsule';
3
- import { Component } from '@teambit/component';
1
+ import type { NodeFS } from '@teambit/any-fs';
2
+ import type { Exec } from '@teambit/capsule';
3
+ import { Capsule as CapsuleTemplate, Console, State } from '@teambit/capsule';
4
+ import type { Component } from '@teambit/component';
4
5
  import filenamify from 'filenamify';
5
6
  import { realpathSync } from 'fs';
6
7
  import glob from 'glob';
7
8
  import path from 'path';
8
9
  import { v4 } from 'uuid';
9
10
 
10
- import FsContainer, { BitExecOption } from './container';
11
+ import type { BitExecOption } from './container';
12
+ import FsContainer from './container';
11
13
  import ContainerExec from './container-exec';
12
14
 
13
15
  export default class Capsule extends CapsuleTemplate<Exec, NodeFS> {
@@ -89,7 +91,6 @@ export default class Capsule extends CapsuleTemplate<Exec, NodeFS> {
89
91
  execResults.stdout.on('error', (error: string) => {
90
92
  return reject(error);
91
93
  });
92
- // @ts-ignore
93
94
  execResults.on('close', () => {
94
95
  return resolve({ stdout, stderr });
95
96
  });
@@ -1,4 +1,5 @@
1
- import { DuplexBufferStream, Exec, ExecStatus } from '@teambit/capsule';
1
+ import type { Exec, ExecStatus } from '@teambit/capsule';
2
+ import { DuplexBufferStream } from '@teambit/capsule';
2
3
  import { EventEmitter } from 'events';
3
4
 
4
5
  export default class ContainerExec extends EventEmitter implements Exec {
@@ -1,9 +1,10 @@
1
- import { AnyFS, NodeFS } from '@teambit/any-fs';
2
- import { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';
1
+ import type { AnyFS } from '@teambit/any-fs';
2
+ import { NodeFS } from '@teambit/any-fs';
3
+ import type { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';
3
4
  import execa from 'execa';
4
5
  import fs from 'fs-extra';
5
6
  import * as path from 'path';
6
- import { Stream } from 'stream';
7
+ import type { Stream } from 'stream';
7
8
 
8
9
  import ContainerExec from './container-exec';
9
10
 
@@ -1,7 +1,9 @@
1
- import { NodeFS } from '@teambit/any-fs';
2
- import { Capsule as CapsuleTemplate, Console, Exec, State } from '@teambit/capsule';
3
- import { Component } from '@teambit/component';
4
- import FsContainer, { BitExecOption } from './container';
1
+ import type { NodeFS } from '@teambit/any-fs';
2
+ import type { Exec } from '@teambit/capsule';
3
+ import { Capsule as CapsuleTemplate, Console, State } from '@teambit/capsule';
4
+ import type { Component } from '@teambit/component';
5
+ import type { BitExecOption } from './container';
6
+ import FsContainer from './container';
5
7
  import ContainerExec from './container-exec';
6
8
  export default class Capsule extends CapsuleTemplate<Exec, NodeFS> {
7
9
  /**
@@ -34,7 +36,7 @@ export default class Capsule extends CapsuleTemplate<Exec, NodeFS> {
34
36
  /**
35
37
  * console for controlling process streams as stdout, stdin and stderr.
36
38
  */
37
- console: Console,
39
+ console: Console | undefined,
38
40
  /**
39
41
  * capsule's state.
40
42
  */
@@ -141,7 +141,6 @@ class Capsule extends _capsule().Capsule {
141
141
  execResults.stdout.on('error', error => {
142
142
  return reject(error);
143
143
  });
144
- // @ts-ignore
145
144
  execResults.on('close', () => {
146
145
  return resolve({
147
146
  stdout,
@@ -1 +1 @@
1
- {"version":3,"names":["_capsule","data","require","_filenamify","_interopRequireDefault","_fs","_glob","_path","_uuid","_container","_containerExec","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Capsule","CapsuleTemplate","constructor","container","fs","console","Console","state","component","_wrkDir","wrkDir","path","realpathSync","start","execNode","executable","args","exec","typedExec","command","cwd","opts","ContainerExec","outputFile","file","options","removePath","dir","symlink","src","dest","execute","cmd","execResults","split","stdout","stderr","Promise","resolve","reject","on","error","getAllFilesPaths","files","glob","sync","join","nodir","map","getCapsuleDirName","config","name","filenamify","id","toString","replacement","getCapsuleRootDir","baseDir","createFromComponent","capsuleDirName","alwaysNew","v4","FsContainer","capsule","State","exports"],"sources":["capsule.ts"],"sourcesContent":["import { NodeFS } from '@teambit/any-fs';\nimport { Capsule as CapsuleTemplate, Console, Exec, State } from '@teambit/capsule';\nimport { Component } from '@teambit/component';\nimport filenamify from 'filenamify';\nimport { realpathSync } from 'fs';\nimport glob from 'glob';\nimport path from 'path';\nimport { v4 } from 'uuid';\n\nimport FsContainer, { BitExecOption } from './container';\nimport ContainerExec from './container-exec';\n\nexport default class Capsule extends CapsuleTemplate<Exec, NodeFS> {\n private _wrkDir: string;\n constructor(\n /**\n * container implementation the capsule is being executed within.\n */\n protected container: FsContainer,\n /**\n * the capsule's file system.\n */\n readonly fs: NodeFS,\n /**\n * console for controlling process streams as stdout, stdin and stderr.\n */\n readonly console: Console = new Console(),\n /**\n * capsule's state.\n */\n readonly state: State,\n readonly component: Component\n ) {\n super(container, fs, console, state);\n this._wrkDir = container.wrkDir;\n }\n\n /**\n * @deprecated please use `this.path`\n */\n get wrkDir(): string {\n return this.path;\n }\n\n get path(): string {\n return realpathSync(this._wrkDir);\n }\n\n start(): Promise<any> {\n return this.container.start();\n }\n\n async execNode(executable: string, args: any, exec: ContainerExec) {\n return this.typedExec(\n {\n command: ['node', executable, ...(args.args || [])],\n cwd: '',\n },\n exec\n );\n }\n\n async typedExec(opts: BitExecOption, exec = new ContainerExec()) {\n return this.container.exec(opts, exec);\n }\n\n outputFile(file: string, data: any, options?: any): Promise<any> {\n return this.container.outputFile(file, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n return this.container.removePath(dir);\n }\n\n symlink(src: string, dest: string): Promise<any> {\n return this.container.symlink(src, dest);\n }\n\n // TODO: refactor this crap and simplify capsule API\n async execute(cmd: string, options?: Record<string, any> | null | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const execResults = await this.exec({ command: cmd.split(' '), options });\n let stdout = '';\n let stderr = '';\n return new Promise((resolve, reject) => {\n execResults.stdout.on('data', (data: string) => {\n stdout += data;\n });\n execResults.stdout.on('error', (error: string) => {\n return reject(error);\n });\n // @ts-ignore\n execResults.on('close', () => {\n return resolve({ stdout, stderr });\n });\n execResults.stderr.on('error', (error: string) => {\n return reject(error);\n });\n execResults.stderr.on('data', (data: string) => {\n stderr += data;\n });\n });\n }\n\n /**\n * @todo: fix.\n * it skips the capsule fs because for some reason `capsule.fs.promises.readdir` doesn't work\n * the same as `capsule.fs.readdir` and it doesn't have the capsule dir as pwd.\n *\n * returns the paths inside the capsule\n */\n getAllFilesPaths(dir = '.', options: { ignore?: string[] } = {}) {\n const files = glob.sync('**', { cwd: path.join(this.path, dir), nodir: true, ...options });\n return files.map((file) => path.join(dir, file));\n }\n\n static getCapsuleDirName(component: Component, config: { alwaysNew?: boolean; name?: string } = {}) {\n return config.name || filenamify(component.id.toString(), { replacement: '_' });\n }\n\n static getCapsuleRootDir(component: Component, baseDir: string, config: { alwaysNew?: boolean; name?: string } = {}) {\n return path.join(baseDir, Capsule.getCapsuleDirName(component, config));\n }\n\n static async createFromComponent(\n component: Component,\n baseDir: string,\n config: { alwaysNew?: boolean } = {}\n ): Promise<Capsule> {\n // TODO: make this a static method and combine with ComponentCapsule\n const capsuleDirName = Capsule.getCapsuleDirName(component, config);\n const wrkDir = path.join(baseDir, config.alwaysNew ? `${capsuleDirName}_${v4()}` : capsuleDirName);\n const container = new FsContainer(wrkDir);\n const capsule = new Capsule(container, container.fs, new Console(), new State(), component);\n await capsule.start();\n return capsule;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_capsule","data","require","_filenamify","_interopRequireDefault","_fs","_glob","_path","_uuid","_container","_containerExec","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Capsule","CapsuleTemplate","constructor","container","fs","console","Console","state","component","_wrkDir","wrkDir","path","realpathSync","start","execNode","executable","args","exec","typedExec","command","cwd","opts","ContainerExec","outputFile","file","options","removePath","dir","symlink","src","dest","execute","cmd","execResults","split","stdout","stderr","Promise","resolve","reject","on","error","getAllFilesPaths","files","glob","sync","join","nodir","map","getCapsuleDirName","config","name","filenamify","id","toString","replacement","getCapsuleRootDir","baseDir","createFromComponent","capsuleDirName","alwaysNew","v4","FsContainer","capsule","State","exports"],"sources":["capsule.ts"],"sourcesContent":["import type { NodeFS } from '@teambit/any-fs';\nimport type { Exec } from '@teambit/capsule';\nimport { Capsule as CapsuleTemplate, Console, State } from '@teambit/capsule';\nimport type { Component } from '@teambit/component';\nimport filenamify from 'filenamify';\nimport { realpathSync } from 'fs';\nimport glob from 'glob';\nimport path from 'path';\nimport { v4 } from 'uuid';\n\nimport type { BitExecOption } from './container';\nimport FsContainer from './container';\nimport ContainerExec from './container-exec';\n\nexport default class Capsule extends CapsuleTemplate<Exec, NodeFS> {\n private _wrkDir: string;\n constructor(\n /**\n * container implementation the capsule is being executed within.\n */\n protected container: FsContainer,\n /**\n * the capsule's file system.\n */\n readonly fs: NodeFS,\n /**\n * console for controlling process streams as stdout, stdin and stderr.\n */\n readonly console: Console = new Console(),\n /**\n * capsule's state.\n */\n readonly state: State,\n readonly component: Component\n ) {\n super(container, fs, console, state);\n this._wrkDir = container.wrkDir;\n }\n\n /**\n * @deprecated please use `this.path`\n */\n get wrkDir(): string {\n return this.path;\n }\n\n get path(): string {\n return realpathSync(this._wrkDir);\n }\n\n start(): Promise<any> {\n return this.container.start();\n }\n\n async execNode(executable: string, args: any, exec: ContainerExec) {\n return this.typedExec(\n {\n command: ['node', executable, ...(args.args || [])],\n cwd: '',\n },\n exec\n );\n }\n\n async typedExec(opts: BitExecOption, exec = new ContainerExec()) {\n return this.container.exec(opts, exec);\n }\n\n outputFile(file: string, data: any, options?: any): Promise<any> {\n return this.container.outputFile(file, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n return this.container.removePath(dir);\n }\n\n symlink(src: string, dest: string): Promise<any> {\n return this.container.symlink(src, dest);\n }\n\n // TODO: refactor this crap and simplify capsule API\n async execute(cmd: string, options?: Record<string, any> | null | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const execResults = await this.exec({ command: cmd.split(' '), options });\n let stdout = '';\n let stderr = '';\n return new Promise((resolve, reject) => {\n execResults.stdout.on('data', (data: string) => {\n stdout += data;\n });\n execResults.stdout.on('error', (error: string) => {\n return reject(error);\n });\n execResults.on('close', () => {\n return resolve({ stdout, stderr });\n });\n execResults.stderr.on('error', (error: string) => {\n return reject(error);\n });\n execResults.stderr.on('data', (data: string) => {\n stderr += data;\n });\n });\n }\n\n /**\n * @todo: fix.\n * it skips the capsule fs because for some reason `capsule.fs.promises.readdir` doesn't work\n * the same as `capsule.fs.readdir` and it doesn't have the capsule dir as pwd.\n *\n * returns the paths inside the capsule\n */\n getAllFilesPaths(dir = '.', options: { ignore?: string[] } = {}) {\n const files = glob.sync('**', { cwd: path.join(this.path, dir), nodir: true, ...options });\n return files.map((file) => path.join(dir, file));\n }\n\n static getCapsuleDirName(component: Component, config: { alwaysNew?: boolean; name?: string } = {}) {\n return config.name || filenamify(component.id.toString(), { replacement: '_' });\n }\n\n static getCapsuleRootDir(component: Component, baseDir: string, config: { alwaysNew?: boolean; name?: string } = {}) {\n return path.join(baseDir, Capsule.getCapsuleDirName(component, config));\n }\n\n static async createFromComponent(\n component: Component,\n baseDir: string,\n config: { alwaysNew?: boolean } = {}\n ): Promise<Capsule> {\n // TODO: make this a static method and combine with ComponentCapsule\n const capsuleDirName = Capsule.getCapsuleDirName(component, config);\n const wrkDir = path.join(baseDir, config.alwaysNew ? `${capsuleDirName}_${v4()}` : capsuleDirName);\n const container = new FsContainer(wrkDir);\n const capsule = new Capsule(container, container.fs, new Console(), new State(), component);\n await capsule.start();\n return capsule;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { DuplexBufferStream, Exec, ExecStatus } from '@teambit/capsule';
1
+ import type { Exec, ExecStatus } from '@teambit/capsule';
2
+ import { DuplexBufferStream } from '@teambit/capsule';
2
3
  import { EventEmitter } from 'events';
3
4
  export default class ContainerExec extends EventEmitter implements Exec {
4
5
  private _code;
@@ -1 +1 @@
1
- {"version":3,"names":["_capsule","data","require","_events","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ContainerExec","EventEmitter","constructor","_code","DuplexBufferStream","setStatus","status","emit","code","inspect","Promise","resolve","running","pid","abort","Error","exports","default"],"sources":["container-exec.ts"],"sourcesContent":["import { DuplexBufferStream, Exec, ExecStatus } from '@teambit/capsule';\nimport { EventEmitter } from 'events';\n\nexport default class ContainerExec extends EventEmitter implements Exec {\n constructor(private _code: number = 0) {\n super();\n }\n\n stdout: DuplexBufferStream = new DuplexBufferStream();\n stderr: DuplexBufferStream = new DuplexBufferStream();\n stdin: DuplexBufferStream = new DuplexBufferStream();\n\n setStatus(status: number): void {\n this._code = status;\n this.emit('close');\n }\n\n get code(): number {\n return this._code;\n }\n\n inspect(): Promise<ExecStatus> {\n return Promise.resolve({\n running: true,\n pid: 1,\n });\n }\n abort(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,QAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAG,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAEvB,MAAMgB,aAAa,SAASC,sBAAY,CAAiB;EACtEC,WAAWA,CAASC,KAAa,GAAG,CAAC,EAAE;IACrC,KAAK,CAAC,CAAC;IAAC,KADUA,KAAa,GAAbA,KAAa;IAAAtB,eAAA,iBAIJ,KAAIuB,6BAAkB,EAAC,CAAC;IAAAvB,eAAA,iBACxB,KAAIuB,6BAAkB,EAAC,CAAC;IAAAvB,eAAA,gBACzB,KAAIuB,6BAAkB,EAAC,CAAC;EAJpD;EAMAC,SAASA,CAACC,MAAc,EAAQ;IAC9B,IAAI,CAACH,KAAK,GAAGG,MAAM;IACnB,IAAI,CAACC,IAAI,CAAC,OAAO,CAAC;EACpB;EAEA,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACL,KAAK;EACnB;EAEAM,OAAOA,CAAA,EAAwB;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBC,OAAO,EAAE,IAAI;MACbC,GAAG,EAAE;IACP,CAAC,CAAC;EACJ;EACAC,KAAKA,CAAA,EAAkB;IACrB,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAACC,OAAA,CAAAC,OAAA,GAAAjB,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_capsule","data","require","_events","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ContainerExec","EventEmitter","constructor","_code","DuplexBufferStream","setStatus","status","emit","code","inspect","Promise","resolve","running","pid","abort","Error","exports","default"],"sources":["container-exec.ts"],"sourcesContent":["import type { Exec, ExecStatus } from '@teambit/capsule';\nimport { DuplexBufferStream } from '@teambit/capsule';\nimport { EventEmitter } from 'events';\n\nexport default class ContainerExec extends EventEmitter implements Exec {\n constructor(private _code: number = 0) {\n super();\n }\n\n stdout: DuplexBufferStream = new DuplexBufferStream();\n stderr: DuplexBufferStream = new DuplexBufferStream();\n stdin: DuplexBufferStream = new DuplexBufferStream();\n\n setStatus(status: number): void {\n this._code = status;\n this.emit('close');\n }\n\n get code(): number {\n return this._code;\n }\n\n inspect(): Promise<ExecStatus> {\n return Promise.resolve({\n running: true,\n pid: 1,\n });\n }\n abort(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,QAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAsC,SAAAG,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAEvB,MAAMgB,aAAa,SAASC,sBAAY,CAAiB;EACtEC,WAAWA,CAASC,KAAa,GAAG,CAAC,EAAE;IACrC,KAAK,CAAC,CAAC;IAAC,KADUA,KAAa,GAAbA,KAAa;IAAAtB,eAAA,iBAIJ,KAAIuB,6BAAkB,EAAC,CAAC;IAAAvB,eAAA,iBACxB,KAAIuB,6BAAkB,EAAC,CAAC;IAAAvB,eAAA,gBACzB,KAAIuB,6BAAkB,EAAC,CAAC;EAJpD;EAMAC,SAASA,CAACC,MAAc,EAAQ;IAC9B,IAAI,CAACH,KAAK,GAAGG,MAAM;IACnB,IAAI,CAACC,IAAI,CAAC,OAAO,CAAC;EACpB;EAEA,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACL,KAAK;EACnB;EAEAM,OAAOA,CAAA,EAAwB;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBC,OAAO,EAAE,IAAI;MACbC,GAAG,EAAE;IACP,CAAC,CAAC;EACJ;EACAC,KAAKA,CAAA,EAAkB;IACrB,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAACC,OAAA,CAAAC,OAAA,GAAAjB,aAAA","ignoreList":[]}
@@ -1,7 +1,8 @@
1
- import { AnyFS, NodeFS } from '@teambit/any-fs';
2
- import { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';
1
+ import type { AnyFS } from '@teambit/any-fs';
2
+ import { NodeFS } from '@teambit/any-fs';
3
+ import type { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';
3
4
  import execa from 'execa';
4
- import { Stream } from 'stream';
5
+ import type { Stream } from 'stream';
5
6
  import ContainerExec from './container-exec';
6
7
  export interface BitExecOption extends ExecOptions {
7
8
  cwd: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_anyFs","data","require","_execa","_interopRequireDefault","_fsExtra","path","_interopRequireWildcard","_containerExec","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","debug","FsContainer","constructor","wrkDir","NodeFS","getPath","composePath","pathToCompose","join","outputFile","file","options","filePath","fs","removePath","dir","pathToRemove","remove","symlink","src","dest","srcPath","destPath","ensureDir","dirname","ensureSymlink","exec","execOptions","ContainerExec","cwd","command","subprocessP","execa","shell","stdio","on","msg","emit","stderr","pipe","stdout","forEach","eventName","statusCode","setStatus","execP","hasError","Promise","resolve","reject","getContents","size","toString","terminal","process","env","SHELL","start","inspect","pause","resume","stop","ttl","destroy","log","Error","event","fn","exports"],"sources":["container.ts"],"sourcesContent":["import { AnyFS, NodeFS } from '@teambit/any-fs';\nimport { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';\nimport execa from 'execa';\nimport fs from 'fs-extra';\nimport * as path from 'path';\nimport { Stream } from 'stream';\n\nimport ContainerExec from './container-exec';\n\nconst debug = require('debug')('fs-container');\n\nexport interface BitExecOption extends ExecOptions {\n cwd: string;\n stdio?: 'pipe' | 'ipc' | 'ignore' | 'inherit' | Stream | number | undefined;\n}\nexport interface BitContainerConfig extends ContainerFactoryOptions {\n other?: string;\n}\n\nexport default class FsContainer implements Container<Exec, AnyFS> {\n id = 'FS Container';\n\n fs: NodeFS = new NodeFS(this.wrkDir);\n\n constructor(readonly wrkDir: string) {}\n\n // TODO: do we need this?\n public getPath() {\n return this.wrkDir;\n }\n\n private composePath(pathToCompose) {\n return path.join(this.getPath(), pathToCompose);\n }\n\n outputFile(file, data, options) {\n const filePath = this.composePath(file);\n debug(`writing file on ${filePath}`);\n return fs.outputFile(filePath, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n const pathToRemove = this.composePath(dir);\n return fs.remove(pathToRemove);\n }\n\n async symlink(src: string, dest: string): Promise<any> {\n const srcPath = this.composePath(src);\n const destPath = this.composePath(dest);\n await fs.ensureDir(path.dirname(destPath));\n return fs.ensureSymlink(srcPath, destPath);\n }\n\n async exec(execOptions: BitExecOption, exec = new ContainerExec()): Promise<ContainerExec> {\n const cwd = execOptions.cwd ? this.composePath(execOptions.cwd) : this.getPath();\n debug(`executing the following command: ${execOptions.command.join(' ')}, on cwd: ${cwd}`);\n const subprocessP = execa.command(execOptions.command.join(' '), {\n shell: true,\n cwd,\n stdio: ['ipc'],\n });\n\n // @TODO: FIX! This probably causes errors ad the promise is not handled properly!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n subprocessP.on('message', function (msg: any) {\n exec.emit('message', msg);\n });\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n subprocessP.stderr?.pipe(exec.stderr);\n subprocessP.stdout?.pipe(exec.stdout);\n ['close', 'exit'].forEach(function (eventName: string) {\n // @TODO: FIX! This probably causes errors ad the promise is not handled properly!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n subprocessP.on(eventName, function (statusCode) {\n exec.setStatus(statusCode);\n });\n });\n\n return exec;\n }\n\n async execP(execOptions: BitExecOption): Promise<string> {\n let hasError = false;\n const exec = await this.exec(execOptions);\n return new Promise((resolve, reject) => {\n exec.stdout.on('error', () => {\n hasError = true;\n });\n exec.on('close', () => {\n if (hasError) reject(exec.stderr.getContents!(exec.stderr.size).toString());\n resolve(exec.stdout.getContents!(exec.stdout.size).toString());\n });\n });\n }\n\n async terminal() {\n const cwd = this.getPath();\n return execa.command(process.env.SHELL || '/bin/zsh', { cwd, stdio: 'inherit' });\n }\n\n start(): Promise<void> {\n return fs.ensureDir(this.wrkDir);\n }\n // @ts-ignore\n async inspect(): Promise<ContainerStatus> {\n // todo: probably not needed for this container\n }\n async pause(): Promise<void> {\n // do nothing\n }\n async resume(): Promise<void> {\n // do nothing\n }\n // eslint-disable-next-line\n stop(ttl?: number | undefined): Promise<void> {\n return fs.remove(this.wrkDir);\n }\n async destroy(): Promise<void> {\n await this.stop();\n }\n log(): Promise<Exec> {\n throw new Error('Method not implemented.');\n }\n on(event: string, fn: (data: any) => void): void {\n return fn(event);\n // throw new Error('Method not implemented.');\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_anyFs","data","require","_execa","_interopRequireDefault","_fsExtra","path","_interopRequireWildcard","_containerExec","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","debug","FsContainer","constructor","wrkDir","NodeFS","getPath","composePath","pathToCompose","join","outputFile","file","options","filePath","fs","removePath","dir","pathToRemove","remove","symlink","src","dest","srcPath","destPath","ensureDir","dirname","ensureSymlink","exec","execOptions","ContainerExec","cwd","command","subprocessP","execa","shell","stdio","on","msg","emit","stderr","pipe","stdout","forEach","eventName","statusCode","setStatus","execP","hasError","Promise","resolve","reject","getContents","size","toString","terminal","process","env","SHELL","start","inspect","pause","resume","stop","ttl","destroy","log","Error","event","fn","exports"],"sources":["container.ts"],"sourcesContent":["import type { AnyFS } from '@teambit/any-fs';\nimport { NodeFS } from '@teambit/any-fs';\nimport type { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';\nimport execa from 'execa';\nimport fs from 'fs-extra';\nimport * as path from 'path';\nimport type { Stream } from 'stream';\n\nimport ContainerExec from './container-exec';\n\nconst debug = require('debug')('fs-container');\n\nexport interface BitExecOption extends ExecOptions {\n cwd: string;\n stdio?: 'pipe' | 'ipc' | 'ignore' | 'inherit' | Stream | number | undefined;\n}\nexport interface BitContainerConfig extends ContainerFactoryOptions {\n other?: string;\n}\n\nexport default class FsContainer implements Container<Exec, AnyFS> {\n id = 'FS Container';\n\n fs: NodeFS = new NodeFS(this.wrkDir);\n\n constructor(readonly wrkDir: string) {}\n\n // TODO: do we need this?\n public getPath() {\n return this.wrkDir;\n }\n\n private composePath(pathToCompose) {\n return path.join(this.getPath(), pathToCompose);\n }\n\n outputFile(file, data, options) {\n const filePath = this.composePath(file);\n debug(`writing file on ${filePath}`);\n return fs.outputFile(filePath, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n const pathToRemove = this.composePath(dir);\n return fs.remove(pathToRemove);\n }\n\n async symlink(src: string, dest: string): Promise<any> {\n const srcPath = this.composePath(src);\n const destPath = this.composePath(dest);\n await fs.ensureDir(path.dirname(destPath));\n return fs.ensureSymlink(srcPath, destPath);\n }\n\n async exec(execOptions: BitExecOption, exec = new ContainerExec()): Promise<ContainerExec> {\n const cwd = execOptions.cwd ? this.composePath(execOptions.cwd) : this.getPath();\n debug(`executing the following command: ${execOptions.command.join(' ')}, on cwd: ${cwd}`);\n const subprocessP = execa.command(execOptions.command.join(' '), {\n shell: true,\n cwd,\n stdio: ['ipc'],\n });\n\n // @TODO: FIX! This probably causes errors ad the promise is not handled properly!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n subprocessP.on('message', function (msg: any) {\n exec.emit('message', msg);\n });\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n subprocessP.stderr?.pipe(exec.stderr);\n subprocessP.stdout?.pipe(exec.stdout);\n ['close', 'exit'].forEach(function (eventName: string) {\n // @TODO: FIX! This probably causes errors ad the promise is not handled properly!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n subprocessP.on(eventName, function (statusCode) {\n exec.setStatus(statusCode);\n });\n });\n\n return exec;\n }\n\n async execP(execOptions: BitExecOption): Promise<string> {\n let hasError = false;\n const exec = await this.exec(execOptions);\n return new Promise((resolve, reject) => {\n exec.stdout.on('error', () => {\n hasError = true;\n });\n exec.on('close', () => {\n if (hasError) reject(exec.stderr.getContents!(exec.stderr.size).toString());\n resolve(exec.stdout.getContents!(exec.stdout.size).toString());\n });\n });\n }\n\n async terminal() {\n const cwd = this.getPath();\n return execa.command(process.env.SHELL || '/bin/zsh', { cwd, stdio: 'inherit' });\n }\n\n start(): Promise<void> {\n return fs.ensureDir(this.wrkDir);\n }\n // @ts-ignore\n async inspect(): Promise<ContainerStatus> {\n // todo: probably not needed for this container\n }\n async pause(): Promise<void> {\n // do nothing\n }\n async resume(): Promise<void> {\n // do nothing\n }\n // eslint-disable-next-line\n stop(ttl?: number | undefined): Promise<void> {\n return fs.remove(this.wrkDir);\n }\n async destroy(): Promise<void> {\n await this.stop();\n }\n log(): Promise<Exec> {\n throw new Error('Method not implemented.');\n }\n on(event: string, fn: (data: any) => void): void {\n return fn(event);\n // throw new Error('Method not implemented.');\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  import type { Component } from '@teambit/component';
2
- import { DependencyResolverMain } from '@teambit/dependency-resolver';
2
+ import type { DependencyResolverMain } from '@teambit/dependency-resolver';
3
3
  import { Graph } from '@teambit/graph.cleargraph';
4
- import { ComponentID } from '@teambit/component-id';
5
- import { Capsule } from './capsule';
4
+ import type { ComponentID } from '@teambit/component-id';
5
+ import type { Capsule } from './capsule';
6
6
  export default class CapsuleList extends Array<Capsule> {
7
7
  getCapsule(id: ComponentID): Capsule | undefined;
8
8
  getCapsuleByLegacyId(id: ComponentID): Capsule | undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["_graph","data","require","_path","CapsuleList","Array","getCapsule","id","find","capsule","component","isEqual","getCapsuleByLegacyId","getCapsuleIgnoreVersion","ignoreVersion","getAllCapsuleDirs","map","path","getIdByPathInCapsule","pathInCapsule","normalizedPathInCapsule","normalize","found","getAllComponents","c","getAllComponentIDs","getGraphIds","components","graph","Graph","forEach","comp","setNode","Node","toString","compIdsStr","deps","getDependencies","dep","includes","setEdge","Edge","type","toposort","depResolver","getPackageName","node","nodes","attr","depPkgName","hasNode","lifecycle","sortedSeeders","sortedCapsules","fromArray","capsules","capsuleUsePreviouslySavedDists","isModified","buildStatus","exports","default"],"sources":["capsule-list.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport { Dependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Edge, Graph, Node } from '@teambit/graph.cleargraph';\nimport { ComponentID } from '@teambit/component-id';\nimport { normalize } from 'path';\nimport { Capsule } from './capsule';\n\nexport default class CapsuleList extends Array<Capsule> {\n getCapsule(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleByLegacyId(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id, { ignoreVersion: true }));\n }\n getAllCapsuleDirs(): string[] {\n return this.map((capsule) => capsule.path);\n }\n getIdByPathInCapsule(pathInCapsule: string): ComponentID | null {\n const normalizedPathInCapsule = normalize(pathInCapsule);\n const found = this.find((capsule) => normalizedPathInCapsule === normalize(capsule.path));\n return found ? found.component.id : null;\n }\n getAllComponents(): Component[] {\n return this.map((c) => c.component);\n }\n getAllComponentIDs(): ComponentID[] {\n return this.map((c) => c.component.id);\n }\n getGraphIds(): Graph<Component, string> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n components.forEach((comp: Component) => graph.setNode(new Node(comp.id.toString(), comp)));\n const compIdsStr = components.map((c) => c.id.toString());\n\n components.forEach((comp) => {\n const deps = comp.getDependencies();\n deps.forEach((dep) => {\n if (compIdsStr.includes(dep.id)) {\n graph.setEdge(new Edge(comp.id.toString(), dep.id, dep.type));\n }\n });\n });\n\n return graph;\n }\n // Sort the capsules by their dependencies. The capsules with no dependencies will be first. Returns a new array.\n async toposort(depResolver: DependencyResolverMain): Promise<CapsuleList> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n // Build a graph with all the components from the current capsule list\n components.forEach((comp: Component) => graph.setNode(new Node(depResolver.getPackageName(comp), comp)));\n\n // Add edges between the components according to their interdependencies\n for (const node of graph.nodes) {\n // eslint-disable-next-line no-await-in-loop\n const deps = await depResolver.getDependencies(node.attr);\n deps.forEach((dep: Dependency) => {\n const depPkgName = dep.getPackageName?.();\n if (depPkgName && graph.hasNode(depPkgName)) {\n graph.setEdge(new Edge(node.id, depPkgName, dep.lifecycle));\n }\n });\n }\n\n const sortedSeeders = graph.toposort(true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const sortedCapsules: Capsule[] = sortedSeeders.map((node: Node<Component>) => this.getCapsule(node.attr.id)!);\n return CapsuleList.fromArray(sortedCapsules);\n }\n static fromArray(capsules: Capsule[]) {\n return new CapsuleList(...capsules);\n }\n /**\n * determines whether or not a capsule can theoretically use the dists saved in the last snap, rather than re-compile them.\n * practically, this optimization is used for components that have typescript as their compiler.\n */\n static async capsuleUsePreviouslySavedDists(component: Component): Promise<boolean> {\n const isModified = await component.isModified();\n return component.buildStatus === 'succeed' && !isModified;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graph","data","require","_path","CapsuleList","Array","getCapsule","id","find","capsule","component","isEqual","getCapsuleByLegacyId","getCapsuleIgnoreVersion","ignoreVersion","getAllCapsuleDirs","map","path","getIdByPathInCapsule","pathInCapsule","normalizedPathInCapsule","normalize","found","getAllComponents","c","getAllComponentIDs","getGraphIds","components","graph","Graph","forEach","comp","setNode","Node","toString","compIdsStr","deps","getDependencies","dep","includes","setEdge","Edge","type","toposort","depResolver","getPackageName","node","nodes","attr","depPkgName","hasNode","lifecycle","sortedSeeders","sortedCapsules","fromArray","capsules","capsuleUsePreviouslySavedDists","isModified","buildStatus","exports","default"],"sources":["capsule-list.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport type { Dependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Edge, Graph, Node } from '@teambit/graph.cleargraph';\nimport type { ComponentID } from '@teambit/component-id';\nimport { normalize } from 'path';\nimport type { Capsule } from './capsule';\n\nexport default class CapsuleList extends Array<Capsule> {\n getCapsule(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleByLegacyId(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id, { ignoreVersion: true }));\n }\n getAllCapsuleDirs(): string[] {\n return this.map((capsule) => capsule.path);\n }\n getIdByPathInCapsule(pathInCapsule: string): ComponentID | null {\n const normalizedPathInCapsule = normalize(pathInCapsule);\n const found = this.find((capsule) => normalizedPathInCapsule === normalize(capsule.path));\n return found ? found.component.id : null;\n }\n getAllComponents(): Component[] {\n return this.map((c) => c.component);\n }\n getAllComponentIDs(): ComponentID[] {\n return this.map((c) => c.component.id);\n }\n getGraphIds(): Graph<Component, string> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n components.forEach((comp: Component) => graph.setNode(new Node(comp.id.toString(), comp)));\n const compIdsStr = components.map((c) => c.id.toString());\n\n components.forEach((comp) => {\n const deps = comp.getDependencies();\n deps.forEach((dep) => {\n if (compIdsStr.includes(dep.id)) {\n graph.setEdge(new Edge(comp.id.toString(), dep.id, dep.type));\n }\n });\n });\n\n return graph;\n }\n // Sort the capsules by their dependencies. The capsules with no dependencies will be first. Returns a new array.\n async toposort(depResolver: DependencyResolverMain): Promise<CapsuleList> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n // Build a graph with all the components from the current capsule list\n components.forEach((comp: Component) => graph.setNode(new Node(depResolver.getPackageName(comp), comp)));\n\n // Add edges between the components according to their interdependencies\n for (const node of graph.nodes) {\n // eslint-disable-next-line no-await-in-loop\n const deps = await depResolver.getDependencies(node.attr);\n deps.forEach((dep: Dependency) => {\n const depPkgName = dep.getPackageName?.();\n if (depPkgName && graph.hasNode(depPkgName)) {\n graph.setEdge(new Edge(node.id, depPkgName, dep.lifecycle));\n }\n });\n }\n\n const sortedSeeders = graph.toposort(true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const sortedCapsules: Capsule[] = sortedSeeders.map((node: Node<Component>) => this.getCapsule(node.attr.id)!);\n return CapsuleList.fromArray(sortedCapsules);\n }\n static fromArray(capsules: Capsule[]) {\n return new CapsuleList(...capsules);\n }\n /**\n * determines whether or not a capsule can theoretically use the dists saved in the last snap, rather than re-compile them.\n * practically, this optimization is used for components that have typescript as their compiler.\n */\n static async capsuleUsePreviouslySavedDists(component: Component): Promise<boolean> {\n const isModified = await component.isModified();\n return component.buildStatus === 'succeed' && !isModified;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,17 +1,17 @@
1
- import { CLIMain } from '@teambit/cli';
2
- import { AspectLoaderMain } from '@teambit/aspect-loader';
1
+ import type { CLIMain } from '@teambit/cli';
2
+ import type { AspectLoaderMain } from '@teambit/aspect-loader';
3
3
  import type { ComponentMain, ComponentFactory } from '@teambit/component';
4
- import { GraphMain } from '@teambit/graph';
5
- import { SlotRegistry } from '@teambit/harmony';
6
- import { DependencyResolverMain, LinkingOptions, NodeLinker } from '@teambit/dependency-resolver';
7
- import { Logger, LoggerMain } from '@teambit/logger';
8
- import { ComponentID } from '@teambit/component-id';
9
- import { Scope as LegacyScope } from '@teambit/legacy.scope';
10
- import { GlobalConfigMain } from '@teambit/global-config';
11
- import { PathOsBasedAbsolute } from '@teambit/legacy.utils';
4
+ import type { GraphMain } from '@teambit/graph';
5
+ import type { SlotRegistry } from '@teambit/harmony';
6
+ import type { DependencyResolverMain, LinkingOptions, NodeLinker } from '@teambit/dependency-resolver';
7
+ import type { Logger, LoggerMain } from '@teambit/logger';
8
+ import type { ComponentID } from '@teambit/component-id';
9
+ import type { Scope as LegacyScope } from '@teambit/legacy.scope';
10
+ import type { GlobalConfigMain } from '@teambit/global-config';
11
+ import type { PathOsBasedAbsolute } from '@teambit/legacy.utils';
12
12
  import { Capsule } from './capsule';
13
13
  import { Network } from './network';
14
- import { ConfigStoreMain } from '@teambit/config-store';
14
+ import type { ConfigStoreMain } from '@teambit/config-store';
15
15
  export type ListResults = {
16
16
  capsules: string[];
17
17
  };
@@ -297,8 +297,6 @@ class IsolatorMain {
297
297
  this.logger.debug(`isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(Object.assign({}, opts, {
298
298
  host: opts.host?.name
299
299
  }))}`);
300
- const isOptimizationDisabled = (0, _harmonyModules().isFeatureEnabled)(_harmonyModules().DISABLE_CAPSULE_OPTIMIZATION);
301
- this.logger.console(`[OPTIMIZATION] isolateComponents called with seeders: ${seeders.join(', ')}, optimization-disabled: ${isOptimizationDisabled}`);
302
300
  const createGraphOpts = (0, _lodash().pick)(opts, ['includeFromNestedHosts', 'host']);
303
301
  const componentsToIsolate = opts.seedersOnly ? await host.getMany(seeders) : await this.createGraph(seeders, createGraphOpts);
304
302
  this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);
@@ -359,9 +357,8 @@ class IsolatorMain {
359
357
 
360
358
  // Optimization: exclude unmodified exported dependencies from capsule creation
361
359
  if (!(0, _harmonyModules().isFeatureEnabled)(_harmonyModules().DISABLE_CAPSULE_OPTIMIZATION)) {
362
- this.logger.console(`[OPTIMIZATION] Starting with ${componentsToInclude.length} components, seeders: ${seeders.join(', ')}`);
363
360
  filteredComps = await this.filterUnmodifiedExportedDependencies(filteredComps, seeders, host);
364
- this.logger.console(`[OPTIMIZATION] After filtering: ${filteredComps.length} components remaining`);
361
+ this.logger.debug(`[OPTIMIZATION] Before filtering: ${componentsToInclude.length}. After filtering: ${filteredComps.length} components remaining`);
365
362
  }
366
363
  return filteredComps;
367
364
  }
@@ -571,6 +568,10 @@ class IsolatorMain {
571
568
  const config = _objectSpread({
572
569
  installPackages: true
573
570
  }, opts);
571
+ if (opts.getExistingAsIs && !(await _fsExtra().default.pathExists(capsulesDir))) {
572
+ this.logger.console(`💡 Capsules directory not found: ${capsulesDir}. Automatically setting getExistingAsIs to false.`);
573
+ opts.getExistingAsIs = false;
574
+ }
574
575
  if (opts.emptyRootDir) {
575
576
  await _fsExtra().default.emptyDir(capsulesDir);
576
577
  }
@@ -1183,27 +1184,37 @@ class IsolatorMain {
1183
1184
  const scope = this.componentAspect.getHost('teambit.scope/scope');
1184
1185
  // @ts-ignore it's there, but we can't have the type of ScopeMain here to not create a circular dependency
1185
1186
  const remotes = await scope.getRemoteScopes();
1186
- const filtered = components.filter(component => {
1187
+ const filtered = [];
1188
+ for (const component of components) {
1187
1189
  const componentIdStr = component.id.toString();
1188
1190
  const isSeeder = seederIds.some(seederId => component.id.isEqual(seederId, {
1189
1191
  ignoreVersion: true
1190
1192
  }));
1191
1193
  if (isSeeder) {
1192
1194
  // Always include seeders (modified components and their dependents)
1193
- this.logger.console(`[OPTIMIZATION] Including seeder: ${componentIdStr}`);
1194
- return true;
1195
+ filtered.push(component);
1196
+ continue;
1195
1197
  }
1196
1198
  // For dependencies, check if they are exported and unmodified
1199
+
1200
+ // Check if component is modified
1201
+ // Normally, when running "bit build" with no args, only the seeders are modified, so this check is not needed.
1202
+ // However, when running "bit build comp1", comp1 might have modified dependencies. we want to include them.
1203
+ // In terms of performance, I checked on a big workspace, it costs zero time, because the modification data is cached.
1204
+ const isModified = await component.isModified();
1205
+ if (isModified) {
1206
+ // Always include modified components
1207
+ filtered.push(component);
1208
+ continue;
1209
+ }
1197
1210
  const isPublished = component.get('teambit.pkg/pkg')?.config?.packageJson?.publishConfig;
1198
1211
  const canBeInstalled = host.isExported(component.id) && (remotes.isHub(component.id.scope) || isPublished);
1199
1212
  if (canBeInstalled) {
1200
- // This is an unmodified exported dependency - exclude from capsules
1201
- this.logger.console(`[OPTIMIZATION] Excluding unmodified exported dependency: ${componentIdStr}`);
1202
- return false;
1213
+ this.logger.debug(`[OPTIMIZATION] Excluding unmodified exported dependency: ${componentIdStr}`);
1214
+ } else {
1215
+ filtered.push(component);
1203
1216
  }
1204
- this.logger.console(`[OPTIMIZATION] Including non-exported dependency: ${componentIdStr}`);
1205
- return true;
1206
- });
1217
+ }
1207
1218
  this.logger.debug(`filterUnmodifiedExportedDependencies: kept ${filtered.length} out of ${components.length} components`);
1208
1219
  return filtered;
1209
1220
  }