@teambit/isolator 0.0.0-710513dbb594a4c63948a08b5d09d46c23cb406a → 0.0.0-71d1d8a0af4ce84673c1a8c8241db1f11d158d37

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> {
@@ -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
  /**
@@ -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 // @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":";;;;;;AAEA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,IAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,GAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,MAAA;EAAA,MAAAL,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAI,KAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,MAAA;EAAA,MAAAN,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAK,KAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,MAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,KAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAQ,WAAA;EAAA,MAAAR,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAO,UAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,eAAA;EAAA,MAAAT,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAQ,cAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6C,SAAAG,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,QAAAH,CAAA,EAAAI,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAP,CAAA,OAAAM,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAR,CAAA,GAAAI,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAX,CAAA,EAAAI,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAf,CAAA,aAAAI,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAG,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAArB,CAAA,EAAAM,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAJ,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAJ,CAAA,GAAAM,MAAA,CAAAgB,cAAA,CAAAtB,CAAA,EAAAI,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAA1B,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAuB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA9B,CAAA,QAAA2B,CAAA,GAAA3B,CAAA,CAAA+B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAE9B,MAAM8B,OAAO,SAASC,kBAAe,CAAe;EAEjEC,WAAWA;EACT;AACJ;AACA;EACcC,SAAsB;EAChC;AACJ;AACA;EACaC,EAAU;EACnB;AACJ;AACA;EACaC,OAAgB,GAAG,KAAIC,kBAAO,EAAC,CAAC;EACzC;AACJ;AACA;EACaC,KAAY,EACZC,SAAoB,EAC7B;IACA,KAAK,CAACL,SAAS,EAAEC,EAAE,EAAEC,OAAO,EAAEE,KAAK,CAAC;IAAC,KAf3BJ,SAAsB,GAAtBA,SAAsB;IAAA,KAIvBC,EAAU,GAAVA,EAAU;IAAA,KAIVC,OAAgB,GAAhBA,OAAgB;IAAA,KAIhBE,KAAY,GAAZA,KAAY;IAAA,KACZC,SAAoB,GAApBA,SAAoB;IAAAxB,eAAA;IAG7B,IAAI,CAACyB,OAAO,GAAGN,SAAS,CAACO,MAAM;EACjC;;EAEA;AACF;AACA;EACE,IAAIA,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACC,IAAI;EAClB;EAEA,IAAIA,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAAC,kBAAY,EAAC,IAAI,CAACH,OAAO,CAAC;EACnC;EAEAI,KAAKA,CAAA,EAAiB;IACpB,OAAO,IAAI,CAACV,SAAS,CAACU,KAAK,CAAC,CAAC;EAC/B;EAEA,MAAMC,QAAQA,CAACC,UAAkB,EAAEC,IAAS,EAAEC,IAAmB,EAAE;IACjE,OAAO,IAAI,CAACC,SAAS,CACnB;MACEC,OAAO,EAAE,CAAC,MAAM,EAAEJ,UAAU,EAAE,IAAIC,IAAI,CAACA,IAAI,IAAI,EAAE,CAAC,CAAC;MACnDI,GAAG,EAAE;IACP,CAAC,EACDH,IACF,CAAC;EACH;EAEA,MAAMC,SAASA,CAACG,IAAmB,EAAEJ,IAAI,GAAG,KAAIK,wBAAa,EAAC,CAAC,EAAE;IAC/D,OAAO,IAAI,CAACnB,SAAS,CAACc,IAAI,CAACI,IAAI,EAAEJ,IAAI,CAAC;EACxC;EAEAM,UAAUA,CAACC,IAAY,EAAErE,IAAS,EAAEsE,OAAa,EAAgB;IAC/D,OAAO,IAAI,CAACtB,SAAS,CAACoB,UAAU,CAACC,IAAI,EAAErE,IAAI,EAAEsE,OAAO,CAAC;EACvD;EAEAC,UAAUA,CAACC,GAAW,EAAgB;IACpC,OAAO,IAAI,CAACxB,SAAS,CAACuB,UAAU,CAACC,GAAG,CAAC;EACvC;EAEAC,OAAOA,CAACC,GAAW,EAAEC,IAAY,EAAgB;IAC/C,OAAO,IAAI,CAAC3B,SAAS,CAACyB,OAAO,CAACC,GAAG,EAAEC,IAAI,CAAC;EAC1C;;EAEA;EACA,MAAMC,OAAOA,CAACC,GAAW,EAAEP,OAAgD,EAAE;IAC3E;IACA,MAAMQ,WAAW,GAAG,MAAM,IAAI,CAAChB,IAAI,CAAC;MAAEE,OAAO,EAAEa,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC;MAAET;IAAQ,CAAC,CAAC;IACzE,IAAIU,MAAM,GAAG,EAAE;IACf,IAAIC,MAAM,GAAG,EAAE;IACf,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCN,WAAW,CAACE,MAAM,CAACK,EAAE,CAAC,MAAM,EAAGrF,IAAY,IAAK;QAC9CgF,MAAM,IAAIhF,IAAI;MAChB,CAAC,CAAC;MACF8E,WAAW,CAACE,MAAM,CAACK,EAAE,CAAC,OAAO,EAAGC,KAAa,IAAK;QAChD,OAAOF,MAAM,CAACE,KAAK,CAAC;MACtB,CAAC,CAAC;MACF;MACAR,WAAW,CAACO,EAAE,CAAC,OAAO,EAAE,MAAM;QAC5B,OAAOF,OAAO,CAAC;UAAEH,MAAM;UAAEC;QAAO,CAAC,CAAC;MACpC,CAAC,CAAC;MACFH,WAAW,CAACG,MAAM,CAACI,EAAE,CAAC,OAAO,EAAGC,KAAa,IAAK;QAChD,OAAOF,MAAM,CAACE,KAAK,CAAC;MACtB,CAAC,CAAC;MACFR,WAAW,CAACG,MAAM,CAACI,EAAE,CAAC,MAAM,EAAGrF,IAAY,IAAK;QAC9CiF,MAAM,IAAIjF,IAAI;MAChB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEuF,gBAAgBA,CAACf,GAAG,GAAG,GAAG,EAAEF,OAA8B,GAAG,CAAC,CAAC,EAAE;IAC/D,MAAMkB,KAAK,GAAGC,eAAI,CAACC,IAAI,CAAC,IAAI,EAAAjE,aAAA;MAAIwC,GAAG,EAAET,eAAI,CAACmC,IAAI,CAAC,IAAI,CAACnC,IAAI,EAAEgB,GAAG,CAAC;MAAEoB,KAAK,EAAE;IAAI,GAAKtB,OAAO,CAAE,CAAC;IAC1F,OAAOkB,KAAK,CAACK,GAAG,CAAExB,IAAI,IAAKb,eAAI,CAACmC,IAAI,CAACnB,GAAG,EAAEH,IAAI,CAAC,CAAC;EAClD;EAEA,OAAOyB,iBAAiBA,CAACzC,SAAoB,EAAE0C,MAA8C,GAAG,CAAC,CAAC,EAAE;IAClG,OAAOA,MAAM,CAACC,IAAI,IAAI,IAAAC,qBAAU,EAAC5C,SAAS,CAAC6C,EAAE,CAACC,QAAQ,CAAC,CAAC,EAAE;MAAEC,WAAW,EAAE;IAAI,CAAC,CAAC;EACjF;EAEA,OAAOC,iBAAiBA,CAAChD,SAAoB,EAAEiD,OAAe,EAAEP,MAA8C,GAAG,CAAC,CAAC,EAAE;IACnH,OAAOvC,eAAI,CAACmC,IAAI,CAACW,OAAO,EAAEzD,OAAO,CAACiD,iBAAiB,CAACzC,SAAS,EAAE0C,MAAM,CAAC,CAAC;EACzE;EAEA,aAAaQ,mBAAmBA,CAC9BlD,SAAoB,EACpBiD,OAAe,EACfP,MAA+B,GAAG,CAAC,CAAC,EAClB;IAClB;IACA,MAAMS,cAAc,GAAG3D,OAAO,CAACiD,iBAAiB,CAACzC,SAAS,EAAE0C,MAAM,CAAC;IACnE,MAAMxC,MAAM,GAAGC,eAAI,CAACmC,IAAI,CAACW,OAAO,EAAEP,MAAM,CAACU,SAAS,GAAG,GAAGD,cAAc,IAAI,IAAAE,UAAE,EAAC,CAAC,EAAE,GAAGF,cAAc,CAAC;IAClG,MAAMxD,SAAS,GAAG,KAAI2D,oBAAW,EAACpD,MAAM,CAAC;IACzC,MAAMqD,OAAO,GAAG,IAAI/D,OAAO,CAACG,SAAS,EAAEA,SAAS,CAACC,EAAE,EAAE,KAAIE,kBAAO,EAAC,CAAC,EAAE,KAAI0D,gBAAK,EAAC,CAAC,EAAExD,SAAS,CAAC;IAC3F,MAAMuD,OAAO,CAAClD,KAAK,CAAC,CAAC;IACrB,OAAOkD,OAAO;EAChB;AACF;AAACE,OAAA,CAAAlG,OAAA,GAAAiC,OAAA","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
  };
@@ -70,11 +70,6 @@ export type IsolateComponentsOptions = CreateGraphOptions & {
70
70
  * create a new capsule with a random string attached to the path suffix
71
71
  */
72
72
  alwaysNew?: boolean;
73
- /**
74
- * optimize capsule creation by using package manager for unmodified exported dependencies
75
- * instead of creating capsules for them. This is useful for build/tag/snap operations.
76
- */
77
- usePackagesForUnmodifiedDeps?: boolean;
78
73
  /**
79
74
  * If this is true -
80
75
  * the isolator will check if there are missing capsules in the base dir
@@ -286,9 +281,5 @@ export declare class IsolatorMain {
286
281
  * These dependencies can be installed as packages instead of creating capsules.
287
282
  */
288
283
  private filterUnmodifiedExportedDependencies;
289
- /**
290
- * Check if a component is exported (has been published to a remote scope)
291
- */
292
- private isComponentExported;
293
284
  }
294
285
  export {};
@@ -46,6 +46,13 @@ function _lodash() {
46
46
  };
47
47
  return data;
48
48
  }
49
+ function _harmonyModules() {
50
+ const data = require("@teambit/harmony.modules.feature-toggle");
51
+ _harmonyModules = function () {
52
+ return data;
53
+ };
54
+ return data;
55
+ }
49
56
  function _aspectLoader() {
50
57
  const data = require("@teambit/aspect-loader");
51
58
  _aspectLoader = function () {
@@ -137,9 +144,9 @@ function _legacy2() {
137
144
  };
138
145
  return data;
139
146
  }
140
- function _harmonyModules() {
147
+ function _harmonyModules2() {
141
148
  const data = require("@teambit/harmony.modules.concurrency");
142
- _harmonyModules = function () {
149
+ _harmonyModules2 = function () {
143
150
  return data;
144
151
  };
145
152
  return data;
@@ -290,9 +297,8 @@ class IsolatorMain {
290
297
  this.logger.debug(`isolateComponents, ${seeders.join(', ')}. opts: ${JSON.stringify(Object.assign({}, opts, {
291
298
  host: opts.host?.name
292
299
  }))}`);
293
- this.logger.console(`[OPTIMIZATION] isolateComponents called with seeders: ${seeders.join(', ')}, usePackagesForUnmodifiedDeps: ${opts.usePackagesForUnmodifiedDeps}`);
294
300
  const createGraphOpts = (0, _lodash().pick)(opts, ['includeFromNestedHosts', 'host']);
295
- const componentsToIsolate = opts.seedersOnly ? await host.getMany(seeders) : await this.createGraph(seeders, createGraphOpts, opts);
301
+ const componentsToIsolate = opts.seedersOnly ? await host.getMany(seeders) : await this.createGraph(seeders, createGraphOpts);
296
302
  this.logger.debug(`isolateComponents, total componentsToIsolate: ${componentsToIsolate.length}`);
297
303
  const seedersWithVersions = seeders.map(seeder => {
298
304
  if (seeder._legacy.hasVersion()) return seeder;
@@ -328,7 +334,7 @@ class IsolatorMain {
328
334
  }
329
335
  return new (_network().Network)(capsuleList, seedersWithVersions, capsuleDir);
330
336
  }
331
- async createGraph(seeders, opts = {}, isolateOpts) {
337
+ async createGraph(seeders, opts = {}) {
332
338
  const host = opts.host || this.componentAspect.getHost();
333
339
  const getGraphOpts = (0, _lodash().pick)(opts, ['host']);
334
340
  const graph = await this.graph.getGraphIds(seeders, getGraphOpts);
@@ -346,17 +352,15 @@ class IsolatorMain {
346
352
  if (existing) return id;
347
353
  return undefined;
348
354
  }));
349
- let componentsToInclude = (0, _lodash().compact)(existingCompsIds);
355
+ const componentsToInclude = (0, _lodash().compact)(existingCompsIds);
356
+ let filteredComps = await host.getMany(componentsToInclude);
350
357
 
351
358
  // Optimization: exclude unmodified exported dependencies from capsule creation
352
- if (isolateOpts?.usePackagesForUnmodifiedDeps) {
353
- const seederIds = seeders.map(id => id.toString());
354
- this.logger.console(`[OPTIMIZATION] Starting with ${componentsToInclude.length} components, seeders: ${seederIds.join(', ')}`);
355
- componentsToInclude = await this.filterUnmodifiedExportedDependencies(componentsToInclude, seederIds, host);
356
- this.logger.console(`[OPTIMIZATION] After filtering: ${componentsToInclude.length} components remaining`);
359
+ if (!(0, _harmonyModules().isFeatureEnabled)(_harmonyModules().DISABLE_CAPSULE_OPTIMIZATION)) {
360
+ filteredComps = await this.filterUnmodifiedExportedDependencies(filteredComps, seeders, host);
361
+ this.logger.debug(`[OPTIMIZATION] Before filtering: ${componentsToInclude.length}. After filtering: ${filteredComps.length} components remaining`);
357
362
  }
358
- const existingComps = await host.getMany(componentsToInclude);
359
- return existingComps;
363
+ return filteredComps;
360
364
  }
361
365
  registerMoveCapsuleOnProcessExit(datedCapsuleDir, targetCapsuleDir, cacheLockFileOnly = false) {
362
366
  this.logger.info(`registering process.on(exit) to move capsules from ${datedCapsuleDir} to ${targetCapsuleDir}`);
@@ -939,7 +943,7 @@ class IsolatorMain {
939
943
  const capsules = await (0, _pMap().default)(components, component => {
940
944
  return _capsule().Capsule.createFromComponent(component, baseDir, opts);
941
945
  }, {
942
- concurrency: (0, _harmonyModules().concurrentComponentsLimit)()
946
+ concurrency: (0, _harmonyModules2().concurrentComponentsLimit)()
943
947
  });
944
948
  return capsules;
945
949
  }
@@ -1171,68 +1175,44 @@ class IsolatorMain {
1171
1175
  * Filter out unmodified exported dependencies to optimize capsule creation.
1172
1176
  * These dependencies can be installed as packages instead of creating capsules.
1173
1177
  */
1174
- async filterUnmodifiedExportedDependencies(allComponentIds, seederIds, host) {
1175
- this.logger.debug(`filterUnmodifiedExportedDependencies: filtering ${allComponentIds.length} components`);
1176
- const components = await host.getMany(allComponentIds);
1178
+ async filterUnmodifiedExportedDependencies(components, seederIds, host) {
1179
+ this.logger.debug(`filterUnmodifiedExportedDependencies: filtering ${components.length} components`);
1180
+ const scope = this.componentAspect.getHost('teambit.scope/scope');
1181
+ // @ts-ignore it's there, but we can't have the type of ScopeMain here to not create a circular dependency
1182
+ const remotes = await scope.getRemoteScopes();
1177
1183
  const filtered = [];
1178
1184
  for (const component of components) {
1179
1185
  const componentIdStr = component.id.toString();
1180
- const isSeeder = seederIds.some(seederId => component.id.isEqual(_componentId().ComponentID.fromString(seederId), {
1186
+ const isSeeder = seederIds.some(seederId => component.id.isEqual(seederId, {
1181
1187
  ignoreVersion: true
1182
1188
  }));
1183
1189
  if (isSeeder) {
1184
1190
  // Always include seeders (modified components and their dependents)
1185
- filtered.push(component.id);
1186
- this.logger.console(`[OPTIMIZATION] Including seeder: ${componentIdStr}`);
1187
- } else {
1188
- // For dependencies, check if they are exported and unmodified
1189
- const isExported = await this.isComponentExported(component, host);
1190
- if (isExported) {
1191
- // This is an unmodified exported dependency - exclude from capsules
1192
- this.logger.console(`[OPTIMIZATION] Excluding unmodified exported dependency: ${componentIdStr}`);
1193
- } else {
1194
- // Not exported yet, include in capsules
1195
- filtered.push(component.id);
1196
- this.logger.console(`[OPTIMIZATION] Including non-exported dependency: ${componentIdStr}`);
1197
- }
1191
+ filtered.push(component);
1192
+ continue;
1198
1193
  }
1199
- }
1200
- this.logger.debug(`filterUnmodifiedExportedDependencies: kept ${filtered.length} out of ${allComponentIds.length} components`);
1201
- return filtered;
1202
- }
1194
+ // For dependencies, check if they are exported and unmodified
1203
1195
 
1204
- /**
1205
- * Check if a component is exported (has been published to a remote scope)
1206
- */
1207
- async isComponentExported(component, host) {
1208
- try {
1209
- // Use the workspace's isExported method if available
1210
- if ('isExported' in host && typeof host.isExported === 'function') {
1211
- const isExported = host.isExported(component.id);
1212
- this.logger.console(`[OPTIMIZATION] Component ${component.id.toString()} isExported (via workspace): ${isExported}`);
1213
- return isExported;
1196
+ // Check if component is modified
1197
+ // Normally, when running "bit build" with no args, only the seeders are modified, so this check is not needed.
1198
+ // However, when running "bit build comp1", comp1 might have modified dependencies. we want to include them.
1199
+ // In terms of performance, I checked on a big workspace, it costs zero time, because the modification data is cached.
1200
+ const isModified = await component.isModified();
1201
+ if (isModified) {
1202
+ // Always include modified components
1203
+ filtered.push(component);
1204
+ continue;
1214
1205
  }
1215
-
1216
- // Fallback: A component is considered exported if it has a valid version and exists in a remote scope
1217
- const hasVersion = component.id.hasVersion();
1218
- if (!hasVersion) {
1219
- this.logger.debug(`Component ${component.id.toString()} has no version, not exported`);
1220
- return false;
1206
+ const isPublished = component.get('teambit.pkg/pkg')?.config?.packageJson?.publishConfig;
1207
+ const canBeInstalled = host.isExported(component.id) && (remotes.isHub(component.id.scope) || isPublished);
1208
+ if (canBeInstalled) {
1209
+ this.logger.debug(`[OPTIMIZATION] Excluding unmodified exported dependency: ${componentIdStr}`);
1210
+ } else {
1211
+ filtered.push(component);
1221
1212
  }
1222
-
1223
- // Check if the component exists in the legacy scope (which tracks exported components)
1224
- const legacyComp = component.state._consumer;
1225
- const scope = legacyComp.scope;
1226
- this.logger.debug(`Component ${component.id.toString()}: scope=${scope}, hasVersion=${hasVersion}`);
1227
-
1228
- // If component has a scope name and version, it's likely exported
1229
- const isExported = !!(scope && hasVersion && scope !== 'workspace');
1230
- this.logger.debug(`Component ${component.id.toString()} isExported (fallback): ${isExported}`);
1231
- return isExported;
1232
- } catch (error) {
1233
- this.logger.debug(`Error checking if component ${component.id.toString()} is exported: ${error}`);
1234
- return false;
1235
1213
  }
1214
+ this.logger.debug(`filterUnmodifiedExportedDependencies: kept ${filtered.length} out of ${components.length} components`);
1215
+ return filtered;
1236
1216
  }
1237
1217
  }
1238
1218
  exports.IsolatorMain = IsolatorMain;