@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.
- package/capsule/capsule.ts +6 -4
- package/capsule/container-exec.ts +2 -1
- package/capsule/container.ts +4 -3
- package/dist/capsule/capsule.d.ts +6 -4
- package/dist/capsule/capsule.js.map +1 -1
- package/dist/capsule/container-exec.d.ts +2 -1
- package/dist/capsule/container-exec.js.map +1 -1
- package/dist/capsule/container.d.ts +4 -3
- package/dist/capsule/container.js.map +1 -1
- package/dist/capsule-list.d.ts +3 -3
- package/dist/capsule-list.js.map +1 -1
- package/dist/isolator.main.runtime.d.ts +11 -20
- package/dist/isolator.main.runtime.js +44 -64
- package/dist/isolator.main.runtime.js.map +1 -1
- package/dist/network.d.ts +16 -7
- package/dist/network.js +14 -5
- package/dist/network.js.map +1 -1
- package/dist/{preview-1752263259534.js → preview-1753984897770.js} +2 -2
- package/dist/symlink-dependencies-to-capsules.d.ts +4 -4
- package/dist/symlink-dependencies-to-capsules.js.map +1 -1
- package/package.json +23 -22
package/capsule/capsule.ts
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
import { NodeFS } from '@teambit/any-fs';
|
2
|
-
import {
|
3
|
-
import {
|
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
|
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 {
|
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 {
|
package/capsule/container.ts
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
import { AnyFS
|
2
|
-
import {
|
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 {
|
3
|
-
import {
|
4
|
-
import
|
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":"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","ignoreList":[]}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import {
|
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 {
|
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
|
2
|
-
import {
|
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":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,SAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,QAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,KAAA;EAAA,MAAAL,IAAA,GAAAM,uBAAA,CAAAL,OAAA;EAAAI,IAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAO,eAAA;EAAA,MAAAP,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAM,cAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6C,SAAAM,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAN,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAG,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAAiB,cAAA,CAAAjB,CAAA,MAAAH,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAG,CAAA,IAAAkB,KAAA,EAAApB,CAAA,EAAAqB,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAxB,CAAA,CAAAG,CAAA,IAAAF,CAAA,EAAAD,CAAA;AAAA,SAAAoB,eAAAnB,CAAA,QAAAM,CAAA,GAAAkB,YAAA,CAAAxB,CAAA,uCAAAM,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAkB,aAAAxB,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAD,CAAA,GAAAC,CAAA,CAAAyB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAO,CAAA,GAAAP,CAAA,CAAAe,IAAA,CAAAd,CAAA,EAAAE,CAAA,uCAAAI,CAAA,SAAAA,CAAA,YAAAqB,SAAA,yEAAAzB,CAAA,GAAA0B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAE7C,MAAM8B,KAAK,GAAGtC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;AAU/B,MAAMuC,WAAW,CAAmC;EAKjEC,WAAWA,CAAUC,MAAc,EAAE;IAAA,KAAhBA,MAAc,GAAdA,MAAc;IAAAf,eAAA,aAJ9B,cAAc;IAAAA,eAAA,aAEN,KAAIgB,eAAM,EAAC,IAAI,CAACD,MAAM,CAAC;EAEE;;EAEtC;EACOE,OAAOA,CAAA,EAAG;IACf,OAAO,IAAI,CAACF,MAAM;EACpB;EAEQG,WAAWA,CAACC,aAAa,EAAE;IACjC,OAAOzC,IAAI,CAAD,CAAC,CAAC0C,IAAI,CAAC,IAAI,CAACH,OAAO,CAAC,CAAC,EAAEE,aAAa,CAAC;EACjD;EAEAE,UAAUA,CAACC,IAAI,EAAEjD,IAAI,EAAEkD,OAAO,EAAE;IAC9B,MAAMC,QAAQ,GAAG,IAAI,CAACN,WAAW,CAACI,IAAI,CAAC;IACvCV,KAAK,CAAC,mBAAmBY,QAAQ,EAAE,CAAC;IACpC,OAAOC,kBAAE,CAACJ,UAAU,CAACG,QAAQ,EAAEnD,IAAI,EAAEkD,OAAO,CAAC;EAC/C;EAEAG,UAAUA,CAACC,GAAW,EAAgB;IACpC,MAAMC,YAAY,GAAG,IAAI,CAACV,WAAW,CAACS,GAAG,CAAC;IAC1C,OAAOF,kBAAE,CAACI,MAAM,CAACD,YAAY,CAAC;EAChC;EAEA,MAAME,OAAOA,CAACC,GAAW,EAAEC,IAAY,EAAgB;IACrD,MAAMC,OAAO,GAAG,IAAI,CAACf,WAAW,CAACa,GAAG,CAAC;IACrC,MAAMG,QAAQ,GAAG,IAAI,CAAChB,WAAW,CAACc,IAAI,CAAC;IACvC,MAAMP,kBAAE,CAACU,SAAS,CAACzD,IAAI,CAAD,CAAC,CAAC0D,OAAO,CAACF,QAAQ,CAAC,CAAC;IAC1C,OAAOT,kBAAE,CAACY,aAAa,CAACJ,OAAO,EAAEC,QAAQ,CAAC;EAC5C;EAEA,MAAMI,IAAIA,CAACC,WAA0B,EAAED,IAAI,GAAG,KAAIE,wBAAa,EAAC,CAAC,EAA0B;IACzF,MAAMC,GAAG,GAAGF,WAAW,CAACE,GAAG,GAAG,IAAI,CAACvB,WAAW,CAACqB,WAAW,CAACE,GAAG,CAAC,GAAG,IAAI,CAACxB,OAAO,CAAC,CAAC;IAChFL,KAAK,CAAC,oCAAoC2B,WAAW,CAACG,OAAO,CAACtB,IAAI,CAAC,GAAG,CAAC,aAAaqB,GAAG,EAAE,CAAC;IAC1F,MAAME,WAAW,GAAGC,gBAAK,CAACF,OAAO,CAACH,WAAW,CAACG,OAAO,CAACtB,IAAI,CAAC,GAAG,CAAC,EAAE;MAC/DyB,KAAK,EAAE,IAAI;MACXJ,GAAG;MACHK,KAAK,EAAE,CAAC,KAAK;IACf,CAAC,CAAC;;IAEF;IACA;IACAH,WAAW,CAACI,EAAE,CAAC,SAAS,EAAE,UAAUC,GAAQ,EAAE;MAC5CV,IAAI,CAACW,IAAI,CAAC,SAAS,EAAED,GAAG,CAAC;IAC3B,CAAC,CAAC;IACF;IACAL,WAAW,CAACO,MAAM,EAAEC,IAAI,CAACb,IAAI,CAACY,MAAM,CAAC;IACrCP,WAAW,CAACS,MAAM,EAAED,IAAI,CAACb,IAAI,CAACc,MAAM,CAAC;IACrC,CAAC,OAAO,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,UAAUC,SAAiB,EAAE;MACrD;MACA;MACAX,WAAW,CAACI,EAAE,CAACO,SAAS,EAAE,UAAUC,UAAU,EAAE;QAC9CjB,IAAI,CAACkB,SAAS,CAACD,UAAU,CAAC;MAC5B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAOjB,IAAI;EACb;EAEA,MAAMmB,KAAKA,CAAClB,WAA0B,EAAmB;IACvD,IAAImB,QAAQ,GAAG,KAAK;IACpB,MAAMpB,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,CAACC,WAAW,CAAC;IACzC,OAAO,IAAIoB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCvB,IAAI,CAACc,MAAM,CAACL,EAAE,CAAC,OAAO,EAAE,MAAM;QAC5BW,QAAQ,GAAG,IAAI;MACjB,CAAC,CAAC;MACFpB,IAAI,CAACS,EAAE,CAAC,OAAO,EAAE,MAAM;QACrB,IAAIW,QAAQ,EAAEG,MAAM,CAACvB,IAAI,CAACY,MAAM,CAACY,WAAW,CAAExB,IAAI,CAACY,MAAM,CAACa,IAAI,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC;QAC3EJ,OAAO,CAACtB,IAAI,CAACc,MAAM,CAACU,WAAW,CAAExB,IAAI,CAACc,MAAM,CAACW,IAAI,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC;MAChE,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEA,MAAMC,QAAQA,CAAA,EAAG;IACf,MAAMxB,GAAG,GAAG,IAAI,CAACxB,OAAO,CAAC,CAAC;IAC1B,OAAO2B,gBAAK,CAACF,OAAO,CAACwB,OAAO,CAACC,GAAG,CAACC,KAAK,IAAI,UAAU,EAAE;MAAE3B,GAAG;MAAEK,KAAK,EAAE;IAAU,CAAC,CAAC;EAClF;EAEAuB,KAAKA,CAAA,EAAkB;IACrB,OAAO5C,kBAAE,CAACU,SAAS,CAAC,IAAI,CAACpB,MAAM,CAAC;EAClC;EACA;EACA,MAAMuD,OAAOA,CAAA,EAA6B;IACxC;EAAA;EAEF,MAAMC,KAAKA,CAAA,EAAkB;IAC3B;EAAA;EAEF,MAAMC,MAAMA,CAAA,EAAkB;IAC5B;EAAA;EAEF;EACAC,IAAIA,CAACC,GAAwB,EAAiB;IAC5C,OAAOjD,kBAAE,CAACI,MAAM,CAAC,IAAI,CAACd,MAAM,CAAC;EAC/B;EACA,MAAM4D,OAAOA,CAAA,EAAkB;IAC7B,MAAM,IAAI,CAACF,IAAI,CAAC,CAAC;EACnB;EACAG,GAAGA,CAAA,EAAkB;IACnB,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EACA9B,EAAEA,CAAC+B,KAAa,EAAEC,EAAuB,EAAQ;IAC/C,OAAOA,EAAE,CAACD,KAAK,CAAC;IAChB;EACF;AACF;AAACE,OAAA,CAAAzF,OAAA,GAAAsB,WAAA","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":[]}
|
package/dist/capsule-list.d.ts
CHANGED
@@ -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;
|
package/dist/capsule-list.js.map
CHANGED
@@ -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
|
147
|
+
function _harmonyModules2() {
|
141
148
|
const data = require("@teambit/harmony.modules.concurrency");
|
142
|
-
|
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
|
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 = {}
|
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
|
-
|
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 (
|
353
|
-
|
354
|
-
this.logger.
|
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
|
-
|
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,
|
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(
|
1175
|
-
this.logger.debug(`filterUnmodifiedExportedDependencies: filtering ${
|
1176
|
-
const
|
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(
|
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
|
1186
|
-
|
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
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
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
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
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;
|