@teambit/isolator 0.0.737 → 0.0.738
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capsule/capsule.js.map +1 -1
- package/dist/capsule/container-exec.js.map +1 -1
- package/dist/capsule/container.js.map +1 -1
- package/dist/capsule/index.js.map +1 -1
- package/dist/capsule-list.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/isolator.aspect.js.map +1 -1
- package/dist/isolator.composition.js.map +1 -1
- package/dist/isolator.main.runtime.js.map +1 -1
- package/dist/network.js.map +1 -1
- package/dist/symlink-bit-legacy-to-capsules.js.map +1 -1
- package/dist/symlink-dependencies-to-capsules.js.map +1 -1
- package/package-tar/teambit-isolator-0.0.738.tgz +0 -0
- package/package.json +5 -5
- package/{preview-1652930732694.js → preview-1653227849497.js} +2 -2
- package/package-tar/teambit-isolator-0.0.737.tgz +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["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","data","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"],"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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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["ContainerExec","EventEmitter","constructor","_code","DuplexBufferStream","setStatus","status","emit","code","inspect","Promise","resolve","running","pid","abort","Error"],"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;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEe,MAAMA,aAAN,SAA4BC,sBAA5B,CAAyD;EACtEC,WAAW,CAASC,KAAa,GAAG,CAAzB,EAA4B;IACrC;IADqC,KAAnBA,KAAmB,GAAnBA,KAAmB;IAAA,gDAIV,KAAIC,6BAAJ,GAJU;IAAA,gDAKV,KAAIA,6BAAJ,GALU;IAAA,+CAMX,KAAIA,6BAAJ,GANW;EAEtC;;EAMDC,SAAS,CAACC,MAAD,EAAuB;IAC9B,KAAKH,KAAL,GAAaG,MAAb;IACA,KAAKC,IAAL,CAAU,OAAV;EACD;;EAEO,IAAJC,IAAI,GAAW;IACjB,OAAO,KAAKL,KAAZ;EACD;;EAEDM,OAAO,GAAwB;IAC7B,OAAOC,OAAO,CAACC,OAAR,CAAgB;MACrBC,OAAO,EAAE,IADY;MAErBC,GAAG,EAAE;IAFgB,CAAhB,CAAP;EAID;;EACDC,KAAK,GAAkB;IACrB,MAAM,IAAIC,KAAJ,CAAU,yBAAV,CAAN;EACD;;AA1BqE"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["debug","require","FsContainer","constructor","wrkDir","NodeFS","getPath","composePath","pathToCompose","path","join","outputFile","file","data","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"],"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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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as Capsule } from './capsule';\nexport { default as FsContainer } from './container';\nexport { default as ContainerExec } from './container-exec';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
|
package/dist/capsule-list.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["CapsuleList","Array","getCapsule","id","find","capsule","component","isEqual","getCapsuleByLegacyId","_legacy","getCapsuleIgnoreVersion","ignoreVersion","getCapsuleIgnoreScopeAndVersion","isEqualWithoutScopeAndVersion","getAllCapsuleDirs","map","path","getIdByPathInCapsule","pathInCapsule","normalizedPathInCapsule","normalize","found","getAllComponents","c","fromArray","capsules"],"sources":["capsule-list.ts"],"sourcesContent":["import type { Component, ComponentID } from '@teambit/component';\nimport { normalize } from 'path';\nimport { BitId } from '@teambit/legacy-bit-id';\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: BitId): Capsule | undefined {\n return this.find((capsule) => capsule.component.id._legacy.isEqual(id));\n }\n getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id, { ignoreVersion: true }));\n }\n getCapsuleIgnoreScopeAndVersion(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id._legacy.isEqualWithoutScopeAndVersion(id._legacy));\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 static fromArray(capsules: Capsule[]) {\n return new CapsuleList(...capsules);\n }\n}\n"],"mappings":";;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIe,MAAMA,WAAN,SAA0BC,KAA1B,CAAyC;EACtDC,UAAU,CAACC,EAAD,EAAuC;IAC/C,OAAO,KAAKC,IAAL,CAAWC,OAAD,IAAaA,OAAO,CAACC,SAAR,CAAkBH,EAAlB,CAAqBI,OAArB,CAA6BJ,EAA7B,CAAvB,CAAP;EACD;;EACDK,oBAAoB,CAACL,EAAD,EAAiC;IACnD,OAAO,KAAKC,IAAL,CAAWC,OAAD,IAAaA,OAAO,CAACC,SAAR,CAAkBH,EAAlB,CAAqBM,OAArB,CAA6BF,OAA7B,CAAqCJ,EAArC,CAAvB,CAAP;EACD;;EACDO,uBAAuB,CAACP,EAAD,EAAuC;IAC5D,OAAO,KAAKC,IAAL,CAAWC,OAAD,IAAaA,OAAO,CAACC,SAAR,CAAkBH,EAAlB,CAAqBI,OAArB,CAA6BJ,EAA7B,EAAiC;MAAEQ,aAAa,EAAE;IAAjB,CAAjC,CAAvB,CAAP;EACD;;EACDC,+BAA+B,CAACT,EAAD,EAAuC;IACpE,OAAO,KAAKC,IAAL,CAAWC,OAAD,IAAaA,OAAO,CAACC,SAAR,CAAkBH,EAAlB,CAAqBM,OAArB,CAA6BI,6BAA7B,CAA2DV,EAAE,CAACM,OAA9D,CAAvB,CAAP;EACD;;EACDK,iBAAiB,GAAa;IAC5B,OAAO,KAAKC,GAAL,CAAUV,OAAD,IAAaA,OAAO,CAACW,IAA9B,CAAP;EACD;;EACDC,oBAAoB,CAACC,aAAD,EAA4C;IAC9D,MAAMC,uBAAuB,GAAG,IAAAC,iBAAA,EAAUF,aAAV,CAAhC;IACA,MAAMG,KAAK,GAAG,KAAKjB,IAAL,CAAWC,OAAD,IAAac,uBAAuB,KAAK,IAAAC,iBAAA,EAAUf,OAAO,CAACW,IAAlB,CAAnD,CAAd;IACA,OAAOK,KAAK,GAAGA,KAAK,CAACf,SAAN,CAAgBH,EAAnB,GAAwB,IAApC;EACD;;EACDmB,gBAAgB,GAAgB;IAC9B,OAAO,KAAKP,GAAL,CAAUQ,CAAD,IAAOA,CAAC,CAACjB,SAAlB,CAAP;EACD;;EACe,OAATkB,SAAS,CAACC,QAAD,EAAsB;IACpC,OAAO,IAAIzB,WAAJ,CAAgB,GAAGyB,QAAnB,CAAP;EACD;;AA1BqD"}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { IsolateComponentsOptions } from './isolator.main.runtime';\nexport { Network } from './network';\nexport { FsContainer, Capsule, ContainerExec } from './capsule';\nexport type { IsolatorMain } from './isolator.main.runtime';\nexport { IsolatorAspect } from './isolator.aspect';\nexport { default as CapsuleList } from './capsule-list';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["IsolatorAspect","Aspect","create","id","dependencies","defaultConfig"],"sources":["isolator.aspect.ts"],"sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const IsolatorAspect = Aspect.create({\n id: 'teambit.component/isolator',\n dependencies: [],\n defaultConfig: {},\n});\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,cAAc,GAAGC,iBAAA,CAAOC,MAAP,CAAc;EAC1CC,EAAE,EAAE,4BADsC;EAE1CC,YAAY,EAAE,EAF4B;EAG1CC,aAAa,EAAE;AAH2B,CAAd,CAAvB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["isolator.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/isolator.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAV;IAAkBC,OAAO,EAAE,MAA3B;IAAmCC,cAAc,EAAE;EAAnD;AAAZ,gBACE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAT,CAAZ;EAA2B,GAAG,EAAC;AAA/B,EADF,CADK"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["isolator.main.runtime.ts"],"names":["DEFAULT_CAPSULES_BASE_DIR","path","join","CACHE_ROOT","DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphAspect","globalConfig","logger","createLogger","IsolatorAspect","id","isolator","constructor","graphBuilder","isolateComponents","seeders","opts","legacyScope","host","getHost","legacyLogger","debug","JSON","stringify","Object","assign","name","createGraphOpts","componentsToIsolate","seedersOnly","getMany","createGraph","baseDir","capsuleList","createCapsules","Network","getCapsulesRootDir","rootBaseDir","getGraphOpts","graph","getGraph","successorsSubgraph","map","toString","compsAndDeps","nodes","node","attr","existingCompsP","c","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","existingComps","Promise","all","cloneCapsule","originalCapsule","newBaseDir","network","component","clonedCapsule","seedersCapsules","fs","copy","components","config","capsulesDir","emptyRootDir","emptyDir","capsules","createCapsulesFromComponents","CapsuleList","fromArray","getExistingAsIs","skipIfExists","existingCapsules","filter","capsule","existsSync","length","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","installOptions","installInCapsules","cachePackagesOnCapsulesRoot","linkInCapsules","linkingOptions","forEach","capsuleWithPackageData","currentPackageJson","Error","writeFileSync","PACKAGE_JSON","isolateInstallOptions","installer","getInstaller","rootDir","cacheRootDirectory","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","packageManagerInstallOptions","overrides","capsulesOverrides","install","toComponentMap","linker","getLinker","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","link","legacyLink","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","isModified","push","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","allIds","BitIds","getCapsule","params","getComponentWriteParams","scope","componentWriter","ComponentWriter","populateComponentsFilesToWrite","dataToPersist","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","ids","bitMap","BitMap","writeToPath","origin","consumer","override","writePackageJson","writeConfig","ignoreBitDependencies","excludeRegistryPrefix","isolated","tuples","ComponentMap","create","list","workspacePath","workspaceCapsuleFolder","readdir","capsuleFullPaths","workspace","e","code","capsulesRootBaseDir","getRootDirOfAllCapsules","deleteCapsules","capsuleBaseDir","dirToDelete","remove","Capsule","createFromComponent","getSync","CFG_CAPSULES_ROOT_BASE_DIR","previousPackageJson","DEPENDENCIES_FIELDS","some","field","packageJsonPath","previousPackageJsonRaw","promises","readFile","encoding","parse","updateP","packageJson","getCurrentPackageJson","found","isEqual","packageJsonObject","currentVersion","getComponentPackageVersionWithCache","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","packageName","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","idStr","_componentsPackagesVersionCache","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","addRuntime"],"mappings":"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","sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { compact, pick } from 'lodash';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion } from '@teambit/component-package-version';\nimport { GraphAspect } from '@teambit/graph';\nimport type { GraphBuilder } from '@teambit/graph';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n} from '@teambit/dependency-resolver';\nimport legacyLogger from '@teambit/legacy/dist/logger/logger';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport {\n CACHE_ROOT,\n DEPENDENCIES_FIELDS,\n PACKAGE_JSON,\n CFG_CAPSULES_ROOT_BASE_DIR,\n} from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { importMultipleDistsArtifacts } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport BitMap from '@teambit/legacy/dist/consumer/bit-map';\nimport ComponentWriter, { ComponentWriterProps } from '@teambit/legacy/dist/consumer/component-ops/component-writer';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkBitLegacyToCapsules } from './symlink-bit-legacy-to-capsules';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nconst DEFAULT_CAPSULES_BASE_DIR = path.join(CACHE_ROOT, 'capsules'); // TODO: move elsewhere\n\nexport type ListResults = {\n workspace: string;\n capsules: string[];\n};\n\nexport type IsolateComponentsInstallOptions = {\n installPackages?: boolean; // default: true\n // TODO: add back when depResolver.getInstaller support it\n // packageManager?: string;\n dedupe?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n installPeersFromEnvs?: boolean;\n installTeambitBit?: boolean;\n packageManagerConfigRootDir?: string;\n};\n\ntype CreateGraphOptions = {\n /**\n * include components that exists in nested hosts. for example include components that exist in scope but not in the workspace\n */\n includeFromNestedHosts?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n};\n\nexport type IsolateComponentsOptions = CreateGraphOptions & {\n name?: string;\n /**\n * absolute path to put all the capsules dirs inside.\n */\n rootBaseDir?: string;\n\n /**\n * the capsule root-dir based on a *hash* of this baseDir, not on the baseDir itself.\n * A folder with this hash as its name will be created in the rootBaseDir\n * By default this value will be the host path\n */\n baseDir?: string;\n\n /**\n * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * installation options\n */\n installOptions?: IsolateComponentsInstallOptions;\n\n linkingOptions?: LinkingOptions;\n\n /**\n * delete the capsule rootDir first. it makes sure that the isolation process starts fresh with\n * no previous capsules. for build and tag this is true.\n */\n emptyRootDir?: boolean;\n\n /**\n * skip the reproduction of the capsule in case it exists.\n */\n skipIfExists?: boolean;\n\n /**\n * get existing capsule without doing any changes, no writes, no installations.\n */\n getExistingAsIs?: boolean;\n\n /**\n * place the package-manager cache on the capsule-root\n */\n cachePackagesOnCapsulesRoot?: boolean;\n\n /**\n * do not build graph with all dependencies. isolate the seeders only.\n */\n seedersOnly?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n packageManagerConfigRootDir?: string;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [DependencyResolverAspect, LoggerAspect, ComponentAspect, GraphAspect, GlobalConfigAspect];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n\n static async provider([dependencyResolver, loggerExtension, componentAspect, graphAspect, globalConfig]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphBuilder,\n GlobalConfigMain\n ]): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(dependencyResolver, logger, componentAspect, graphAspect, globalConfig);\n return isolator;\n }\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graphBuilder: GraphBuilder,\n private globalConfig: GlobalConfigMain\n ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions = {},\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n legacyLogger.debug(\n `isolatorExt, createNetwork ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n opts.baseDir = opts.baseDir || host.path;\n const capsuleList = await this.createCapsules(componentsToIsolate, opts, legacyScope);\n return new Network(capsuleList, seeders, this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir));\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graphBuilder.getGraph(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDeps = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsP = compsAndDeps.map(async (c) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(c.id, true);\n } else {\n existing = await host.hasId(c.id);\n }\n if (existing) return c;\n return undefined;\n });\n const existingComps = await Promise.all(existingCompsP);\n return compact(existingComps);\n }\n\n /**\n *\n * @param originalCapsule the capsule that contains the original component\n * @param newBaseDir relative path. (it will be saved inside `this.getRootDirOfAllCapsules()`. the final path of the capsule will be getRootDirOfAllCapsules() + newBaseDir + filenameify(component.id))\n * @returns a new capsule with the same content of the original capsule but with a new baseDir and all packages\n * installed in the newBaseDir.\n */\n async cloneCapsule(originalCapsule: Capsule, newBaseDir: string): Promise<Capsule> {\n const network = await this.isolateComponents([originalCapsule.component.id], { baseDir: newBaseDir });\n const clonedCapsule = network.seedersCapsules[0];\n await fs.copy(originalCapsule.path, clonedCapsule.path);\n return clonedCapsule;\n }\n\n /**\n * Create capsules for the provided components\n * do not use this outside directly, use isolate components which build the entire network\n * @param components\n * @param opts\n * @param legacyScope\n */\n private async createCapsules(\n components: Component[],\n opts: IsolateComponentsOptions,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n const config = { installPackages: true, ...opts };\n const capsulesDir = this.getCapsulesRootDir(opts.baseDir as string, opts.rootBaseDir);\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n const capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n const capsuleList = CapsuleList.fromArray(capsules);\n if (opts.getExistingAsIs) {\n return capsuleList;\n }\n\n if (opts.skipIfExists) {\n const existingCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => capsule.fs.existsSync('package.json'))\n );\n\n if (existingCapsules.length === capsuleList.length) return existingCapsules;\n }\n const capsulesWithPackagesData = await this.getCapsulesPreviousPackageJson(capsules);\n\n await this.writeComponentsInCapsules(components, capsuleList, legacyScope);\n await this.updateWithCurrentPackageJsonData(capsulesWithPackagesData, capsuleList);\n const installOptions = Object.assign({}, DEFAULT_ISOLATE_INSTALL_OPTIONS, opts.installOptions || {});\n if (installOptions.installPackages) {\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, opts.cachePackagesOnCapsulesRoot ?? false);\n await this.linkInCapsules(capsulesDir, capsuleList, capsulesWithPackagesData, opts.linkingOptions ?? {});\n }\n\n // rewrite the package-json with the component dependencies in it. the original package.json\n // that was written before, didn't have these dependencies in order for the package-manager to\n // be able to install them without crushing when the versions don't exist yet\n capsulesWithPackagesData.forEach((capsuleWithPackageData) => {\n const { currentPackageJson, capsule } = capsuleWithPackageData;\n if (!currentPackageJson)\n throw new Error(\n `isolator.createCapsules, unable to find currentPackageJson for ${capsule.component.id.toString()}`\n );\n capsuleWithPackageData.capsule.fs.writeFileSync(PACKAGE_JSON, JSON.stringify(currentPackageJson, null, 2));\n });\n\n return capsuleList;\n }\n\n private async installInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n isolateInstallOptions: IsolateComponentsInstallOptions,\n cachePackagesOnCapsulesRoot?: boolean\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n });\n // When using isolator we don't want to use the policy defined in the workspace directly,\n // we only want to instal deps from components and the peer from the workspace\n\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const installOptions: InstallOptions = {\n installTeambitBit: !!isolateInstallOptions.installTeambitBit,\n packageManagerConfigRootDir: isolateInstallOptions.packageManagerConfigRootDir,\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n };\n await installer.install(\n capsulesDir,\n peerOnlyPolicy,\n this.toComponentMap(capsuleList),\n installOptions,\n packageManagerInstallOptions\n );\n }\n\n private async linkInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[],\n linkingOptions: LinkingOptions\n ) {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n });\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n await linker.link(capsulesDir, peerOnlyPolicy, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n legacyLink: false,\n });\n await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n // TODO: this is a hack to have access to the bit bin project in order to access core extensions from user extension\n // TODO: remove this after exporting core extensions as components\n await symlinkBitLegacyToCapsules(capsulesWithModifiedPackageJson, this.logger);\n // await copyBitLegacyToCapsuleRoot(capsulesDir, this.logger);\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(components: Component[], capsuleList: CapsuleList, legacyScope?: Scope) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n const isModified = await component.isModified();\n if (isModified) modifiedComps.push(component);\n else unmodifiedComps.push(component);\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const params = this.getComponentWriteParams(component.state._consumer, allIds, legacyScope);\n if (await component.isModified()) {\n delete params.scope;\n }\n const componentWriter = new ComponentWriter(params);\n await componentWriter.populateComponentsFilesToWrite();\n await component.state._consumer.dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private getComponentWriteParams(\n component: ConsumerComponent,\n ids: BitIds,\n legacyScope?: Scope\n ): ComponentWriterProps {\n return {\n component,\n // @ts-ignore\n bitMap: new BitMap(undefined, undefined, undefined, false),\n writeToPath: '.',\n origin: 'IMPORTED',\n consumer: undefined,\n scope: legacyScope,\n override: false,\n writePackageJson: true,\n writeConfig: false,\n ignoreBitDependencies: ids,\n excludeRegistryPrefix: false,\n isolated: true,\n };\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(workspacePath: string): Promise<ListResults> {\n try {\n const workspaceCapsuleFolder = this.getCapsulesRootDir(workspacePath);\n const capsules = await fs.readdir(workspaceCapsuleFolder);\n const capsuleFullPaths = capsules.map((c) => path.join(workspaceCapsuleFolder, c));\n return {\n workspace: workspacePath,\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { workspace: workspacePath, capsules: [] };\n }\n throw e;\n }\n }\n\n getCapsulesRootDir(baseDir: string, rootBaseDir?: string): PathOsBasedAbsolute {\n const capsulesRootBaseDir = rootBaseDir || this.getRootDirOfAllCapsules();\n return path.join(capsulesRootBaseDir, hash(baseDir));\n }\n\n async deleteCapsules(capsuleBaseDir: string | null): Promise<string> {\n const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir(capsuleBaseDir) : this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n const capsules: Capsule[] = await Promise.all(\n components.map((component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n })\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getSync(CFG_CAPSULES_ROOT_BASE_DIR) || DEFAULT_CAPSULES_BASE_DIR;\n }\n\n private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n const updateP = capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n });\n return Promise.all(updateP);\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = await this.getComponentPackageVersionWithCache(component);\n // const newVersion = '0.0.1-new';\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = await this.getComponentPackageVersionWithCache(depCapsule?.component);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // unfortunately, component.packageJsonFile is not available here.\n // the reason is that `writeComponentsToCapsules` clones the component before writing them\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n private async getComponentPackageVersionWithCache(component: Component): Promise<string> {\n const idStr = component.id.toString();\n if (this._componentsPackagesVersionCache[idStr]) {\n return this._componentsPackagesVersionCache[idStr];\n }\n const version = await getComponentPackageVersion(component);\n this._componentsPackagesVersionCache[idStr] = version;\n return version;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"]}
|
1
|
+
{"version":3,"names":["DEFAULT_CAPSULES_BASE_DIR","path","join","CACHE_ROOT","DEFAULT_ISOLATE_INSTALL_OPTIONS","installPackages","dedupe","installPeersFromEnvs","copyPeerToRuntimeOnComponents","copyPeerToRuntimeOnRoot","IsolatorMain","provider","dependencyResolver","loggerExtension","componentAspect","graphAspect","globalConfig","logger","createLogger","IsolatorAspect","id","isolator","constructor","graphBuilder","isolateComponents","seeders","opts","legacyScope","host","getHost","legacyLogger","debug","JSON","stringify","Object","assign","name","createGraphOpts","pick","componentsToIsolate","seedersOnly","getMany","createGraph","baseDir","capsuleList","createCapsules","Network","getCapsulesRootDir","rootBaseDir","getGraphOpts","graph","getGraph","successorsSubgraph","map","toString","compsAndDeps","nodes","node","attr","existingCompsP","c","existing","includeFromNestedHosts","hasIdNested","hasId","undefined","existingComps","Promise","all","compact","cloneCapsule","originalCapsule","newBaseDir","network","component","clonedCapsule","seedersCapsules","fs","copy","components","config","capsulesDir","emptyRootDir","emptyDir","capsules","createCapsulesFromComponents","CapsuleList","fromArray","getExistingAsIs","skipIfExists","existingCapsules","filter","capsule","existsSync","length","capsulesWithPackagesData","getCapsulesPreviousPackageJson","writeComponentsInCapsules","updateWithCurrentPackageJsonData","installOptions","installInCapsules","cachePackagesOnCapsulesRoot","linkInCapsules","linkingOptions","forEach","capsuleWithPackageData","currentPackageJson","Error","writeFileSync","PACKAGE_JSON","isolateInstallOptions","installer","getInstaller","rootDir","cacheRootDirectory","peerOnlyPolicy","getWorkspacePeersOnlyPolicy","installTeambitBit","packageManagerConfigRootDir","packageManagerInstallOptions","overrides","capsulesOverrides","install","toComponentMap","linker","getLinker","capsulesWithModifiedPackageJson","getCapsulesWithModifiedPackageJson","link","legacyLink","symlinkOnCapsuleRoot","symlinkDependenciesToCapsules","symlinkBitLegacyToCapsules","packageJsonHasChanged","wereDependenciesInPackageJsonChanged","modifiedComps","unmodifiedComps","isModified","push","legacyUnmodifiedComps","state","_consumer","clone","legacyModifiedComps","legacyComponents","importMultipleDistsArtifacts","allIds","BitIds","getCapsule","params","getComponentWriteParams","scope","componentWriter","ComponentWriter","populateComponentsFilesToWrite","dataToPersist","persistAllToCapsule","keepExistingCapsule","workspacePolicy","getWorkspacePolicy","byLifecycleType","ids","bitMap","BitMap","writeToPath","origin","consumer","override","writePackageJson","writeConfig","ignoreBitDependencies","excludeRegistryPrefix","isolated","tuples","ComponentMap","create","list","workspacePath","workspaceCapsuleFolder","readdir","capsuleFullPaths","workspace","e","code","capsulesRootBaseDir","getRootDirOfAllCapsules","hash","deleteCapsules","capsuleBaseDir","dirToDelete","remove","Capsule","createFromComponent","getSync","CFG_CAPSULES_ROOT_BASE_DIR","previousPackageJson","DEPENDENCIES_FIELDS","some","field","equals","packageJsonPath","previousPackageJsonRaw","promises","readFile","encoding","parse","updateP","packageJson","getCurrentPackageJson","found","isEqual","packageJsonObject","currentVersion","getComponentPackageVersionWithCache","getComponentDepsManifest","dependencies","manifest","devDependencies","compDeps","toTypeArray","dep","depCapsule","componentId","version","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycle","entry","toManifest","packageName","deps","getDependencies","PackageJsonFile","loadFromCapsuleSync","addDependencies","packageJsonFile","addDevDependencies","addOrUpdateProperty","idStr","_componentsPackagesVersionCache","getComponentPackageVersion","MainRuntime","DependencyResolverAspect","LoggerAspect","ComponentAspect","GraphAspect","GlobalConfigAspect","addRuntime"],"sources":["isolator.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport { compact, pick } from 'lodash';\nimport { Component, ComponentMap, ComponentAspect, ComponentID } from '@teambit/component';\nimport type { ComponentMain, ComponentFactory } from '@teambit/component';\nimport { getComponentPackageVersion } from '@teambit/component-package-version';\nimport { GraphAspect } from '@teambit/graph';\nimport type { GraphBuilder } from '@teambit/graph';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n LinkingOptions,\n WorkspacePolicy,\n InstallOptions,\n DependencyList,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PackageManagerInstallOptions,\n} from '@teambit/dependency-resolver';\nimport legacyLogger from '@teambit/legacy/dist/logger/logger';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { BitIds } from '@teambit/legacy/dist/bit-id';\nimport LegacyScope from '@teambit/legacy/dist/scope/scope';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport {\n CACHE_ROOT,\n DEPENDENCIES_FIELDS,\n PACKAGE_JSON,\n CFG_CAPSULES_ROOT_BASE_DIR,\n} from '@teambit/legacy/dist/constants';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { importMultipleDistsArtifacts } from '@teambit/legacy/dist/consumer/component/sources/artifact-files';\nimport { PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { Scope } from '@teambit/legacy/dist/scope';\nimport fs from 'fs-extra';\nimport hash from 'object-hash';\nimport path from 'path';\nimport equals from 'ramda/src/equals';\nimport BitMap from '@teambit/legacy/dist/consumer/bit-map';\nimport ComponentWriter, { ComponentWriterProps } from '@teambit/legacy/dist/consumer/component-ops/component-writer';\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\nimport { IsolatorAspect } from './isolator.aspect';\nimport { symlinkBitLegacyToCapsules } from './symlink-bit-legacy-to-capsules';\nimport { symlinkOnCapsuleRoot, symlinkDependenciesToCapsules } from './symlink-dependencies-to-capsules';\nimport { Network } from './network';\n\nconst DEFAULT_CAPSULES_BASE_DIR = path.join(CACHE_ROOT, 'capsules'); // TODO: move elsewhere\n\nexport type ListResults = {\n workspace: string;\n capsules: string[];\n};\n\nexport type IsolateComponentsInstallOptions = {\n installPackages?: boolean; // default: true\n // TODO: add back when depResolver.getInstaller support it\n // packageManager?: string;\n dedupe?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n installPeersFromEnvs?: boolean;\n installTeambitBit?: boolean;\n packageManagerConfigRootDir?: string;\n};\n\ntype CreateGraphOptions = {\n /**\n * include components that exists in nested hosts. for example include components that exist in scope but not in the workspace\n */\n includeFromNestedHosts?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n};\n\nexport type IsolateComponentsOptions = CreateGraphOptions & {\n name?: string;\n /**\n * absolute path to put all the capsules dirs inside.\n */\n rootBaseDir?: string;\n\n /**\n * the capsule root-dir based on a *hash* of this baseDir, not on the baseDir itself.\n * A folder with this hash as its name will be created in the rootBaseDir\n * By default this value will be the host path\n */\n baseDir?: string;\n\n /**\n * create a new capsule with a random string attached to the path suffix\n */\n alwaysNew?: boolean;\n\n /**\n * installation options\n */\n installOptions?: IsolateComponentsInstallOptions;\n\n linkingOptions?: LinkingOptions;\n\n /**\n * delete the capsule rootDir first. it makes sure that the isolation process starts fresh with\n * no previous capsules. for build and tag this is true.\n */\n emptyRootDir?: boolean;\n\n /**\n * skip the reproduction of the capsule in case it exists.\n */\n skipIfExists?: boolean;\n\n /**\n * get existing capsule without doing any changes, no writes, no installations.\n */\n getExistingAsIs?: boolean;\n\n /**\n * place the package-manager cache on the capsule-root\n */\n cachePackagesOnCapsulesRoot?: boolean;\n\n /**\n * do not build graph with all dependencies. isolate the seeders only.\n */\n seedersOnly?: boolean;\n\n /**\n * Force specific host to get the component from.\n */\n host?: ComponentFactory;\n\n packageManagerConfigRootDir?: string;\n};\n\ntype CapsulePackageJsonData = {\n capsule: Capsule;\n currentPackageJson?: Record<string, any>;\n previousPackageJson: Record<string, any> | null;\n};\n\nconst DEFAULT_ISOLATE_INSTALL_OPTIONS: IsolateComponentsInstallOptions = {\n installPackages: true,\n dedupe: true,\n installPeersFromEnvs: true,\n copyPeerToRuntimeOnComponents: false,\n copyPeerToRuntimeOnRoot: true,\n};\n\nexport class IsolatorMain {\n static runtime = MainRuntime;\n static dependencies = [DependencyResolverAspect, LoggerAspect, ComponentAspect, GraphAspect, GlobalConfigAspect];\n static defaultConfig = {};\n _componentsPackagesVersionCache: { [idStr: string]: string } = {}; // cache packages versions of components\n\n static async provider([dependencyResolver, loggerExtension, componentAspect, graphAspect, globalConfig]: [\n DependencyResolverMain,\n LoggerMain,\n ComponentMain,\n GraphBuilder,\n GlobalConfigMain\n ]): Promise<IsolatorMain> {\n const logger = loggerExtension.createLogger(IsolatorAspect.id);\n const isolator = new IsolatorMain(dependencyResolver, logger, componentAspect, graphAspect, globalConfig);\n return isolator;\n }\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private logger: Logger,\n private componentAspect: ComponentMain,\n private graphBuilder: GraphBuilder,\n private globalConfig: GlobalConfigMain\n ) {}\n\n // TODO: the legacy scope used for the component writer, which then decide if it need to write the artifacts and dists\n // TODO: we should think of another way to provide it (maybe a new opts) then take the scope internally from the host\n async isolateComponents(\n seeders: ComponentID[],\n opts: IsolateComponentsOptions = {},\n legacyScope?: LegacyScope\n ): Promise<Network> {\n const host = this.componentAspect.getHost();\n legacyLogger.debug(\n `isolatorExt, createNetwork ${seeders.join(', ')}. opts: ${JSON.stringify(\n Object.assign({}, opts, { host: opts.host?.name })\n )}`\n );\n const createGraphOpts = pick(opts, ['includeFromNestedHosts', 'host']);\n const componentsToIsolate = opts.seedersOnly\n ? await host.getMany(seeders)\n : await this.createGraph(seeders, createGraphOpts);\n opts.baseDir = opts.baseDir || host.path;\n const capsuleList = await this.createCapsules(componentsToIsolate, opts, legacyScope);\n return new Network(capsuleList, seeders, this.getCapsulesRootDir(opts.baseDir, opts.rootBaseDir));\n }\n\n private async createGraph(seeders: ComponentID[], opts: CreateGraphOptions = {}): Promise<Component[]> {\n const host = this.componentAspect.getHost();\n const getGraphOpts = pick(opts, ['host']);\n const graph = await this.graphBuilder.getGraph(seeders, getGraphOpts);\n const successorsSubgraph = graph.successorsSubgraph(seeders.map((id) => id.toString()));\n const compsAndDeps = successorsSubgraph.nodes.map((node) => node.attr);\n // do not ignore the version here. a component might be in .bitmap with one version and\n // installed as a package with another version. we don't want them both.\n const existingCompsP = compsAndDeps.map(async (c) => {\n let existing;\n if (opts.includeFromNestedHosts) {\n existing = await host.hasIdNested(c.id, true);\n } else {\n existing = await host.hasId(c.id);\n }\n if (existing) return c;\n return undefined;\n });\n const existingComps = await Promise.all(existingCompsP);\n return compact(existingComps);\n }\n\n /**\n *\n * @param originalCapsule the capsule that contains the original component\n * @param newBaseDir relative path. (it will be saved inside `this.getRootDirOfAllCapsules()`. the final path of the capsule will be getRootDirOfAllCapsules() + newBaseDir + filenameify(component.id))\n * @returns a new capsule with the same content of the original capsule but with a new baseDir and all packages\n * installed in the newBaseDir.\n */\n async cloneCapsule(originalCapsule: Capsule, newBaseDir: string): Promise<Capsule> {\n const network = await this.isolateComponents([originalCapsule.component.id], { baseDir: newBaseDir });\n const clonedCapsule = network.seedersCapsules[0];\n await fs.copy(originalCapsule.path, clonedCapsule.path);\n return clonedCapsule;\n }\n\n /**\n * Create capsules for the provided components\n * do not use this outside directly, use isolate components which build the entire network\n * @param components\n * @param opts\n * @param legacyScope\n */\n private async createCapsules(\n components: Component[],\n opts: IsolateComponentsOptions,\n legacyScope?: Scope\n ): Promise<CapsuleList> {\n const config = { installPackages: true, ...opts };\n const capsulesDir = this.getCapsulesRootDir(opts.baseDir as string, opts.rootBaseDir);\n if (opts.emptyRootDir) {\n await fs.emptyDir(capsulesDir);\n }\n const capsules = await this.createCapsulesFromComponents(components, capsulesDir, config);\n const capsuleList = CapsuleList.fromArray(capsules);\n if (opts.getExistingAsIs) {\n return capsuleList;\n }\n\n if (opts.skipIfExists) {\n const existingCapsules = CapsuleList.fromArray(\n capsuleList.filter((capsule) => capsule.fs.existsSync('package.json'))\n );\n\n if (existingCapsules.length === capsuleList.length) return existingCapsules;\n }\n const capsulesWithPackagesData = await this.getCapsulesPreviousPackageJson(capsules);\n\n await this.writeComponentsInCapsules(components, capsuleList, legacyScope);\n await this.updateWithCurrentPackageJsonData(capsulesWithPackagesData, capsuleList);\n const installOptions = Object.assign({}, DEFAULT_ISOLATE_INSTALL_OPTIONS, opts.installOptions || {});\n if (installOptions.installPackages) {\n await this.installInCapsules(capsulesDir, capsuleList, installOptions, opts.cachePackagesOnCapsulesRoot ?? false);\n await this.linkInCapsules(capsulesDir, capsuleList, capsulesWithPackagesData, opts.linkingOptions ?? {});\n }\n\n // rewrite the package-json with the component dependencies in it. the original package.json\n // that was written before, didn't have these dependencies in order for the package-manager to\n // be able to install them without crushing when the versions don't exist yet\n capsulesWithPackagesData.forEach((capsuleWithPackageData) => {\n const { currentPackageJson, capsule } = capsuleWithPackageData;\n if (!currentPackageJson)\n throw new Error(\n `isolator.createCapsules, unable to find currentPackageJson for ${capsule.component.id.toString()}`\n );\n capsuleWithPackageData.capsule.fs.writeFileSync(PACKAGE_JSON, JSON.stringify(currentPackageJson, null, 2));\n });\n\n return capsuleList;\n }\n\n private async installInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n isolateInstallOptions: IsolateComponentsInstallOptions,\n cachePackagesOnCapsulesRoot?: boolean\n ) {\n const installer = this.dependencyResolver.getInstaller({\n rootDir: capsulesDir,\n cacheRootDirectory: cachePackagesOnCapsulesRoot ? capsulesDir : undefined,\n });\n // When using isolator we don't want to use the policy defined in the workspace directly,\n // we only want to instal deps from components and the peer from the workspace\n\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const installOptions: InstallOptions = {\n installTeambitBit: !!isolateInstallOptions.installTeambitBit,\n packageManagerConfigRootDir: isolateInstallOptions.packageManagerConfigRootDir,\n };\n\n const packageManagerInstallOptions: PackageManagerInstallOptions = {\n dedupe: isolateInstallOptions.dedupe,\n copyPeerToRuntimeOnComponents: isolateInstallOptions.copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot: isolateInstallOptions.copyPeerToRuntimeOnRoot,\n installPeersFromEnvs: isolateInstallOptions.installPeersFromEnvs,\n overrides: this.dependencyResolver.config.capsulesOverrides || this.dependencyResolver.config.overrides,\n };\n await installer.install(\n capsulesDir,\n peerOnlyPolicy,\n this.toComponentMap(capsuleList),\n installOptions,\n packageManagerInstallOptions\n );\n }\n\n private async linkInCapsules(\n capsulesDir: string,\n capsuleList: CapsuleList,\n capsulesWithPackagesData: CapsulePackageJsonData[],\n linkingOptions: LinkingOptions\n ) {\n const linker = this.dependencyResolver.getLinker({\n rootDir: capsulesDir,\n linkingOptions,\n });\n const peerOnlyPolicy = this.getWorkspacePeersOnlyPolicy();\n const capsulesWithModifiedPackageJson = this.getCapsulesWithModifiedPackageJson(capsulesWithPackagesData);\n await linker.link(capsulesDir, peerOnlyPolicy, this.toComponentMap(capsuleList), {\n ...linkingOptions,\n legacyLink: false,\n });\n await symlinkOnCapsuleRoot(capsuleList, this.logger, capsulesDir);\n await symlinkDependenciesToCapsules(capsulesWithModifiedPackageJson, capsuleList, this.logger);\n // TODO: this is a hack to have access to the bit bin project in order to access core extensions from user extension\n // TODO: remove this after exporting core extensions as components\n await symlinkBitLegacyToCapsules(capsulesWithModifiedPackageJson, this.logger);\n // await copyBitLegacyToCapsuleRoot(capsulesDir, this.logger);\n }\n\n private getCapsulesWithModifiedPackageJson(capsulesWithPackagesData: CapsulePackageJsonData[]) {\n const capsulesWithModifiedPackageJson: Capsule[] = capsulesWithPackagesData\n .filter((capsuleWithPackageData) => {\n const packageJsonHasChanged = this.wereDependenciesInPackageJsonChanged(capsuleWithPackageData);\n // @todo: when a component is tagged, it changes all package-json of its dependents, but it\n // should not trigger any \"npm install\" because they dependencies are symlinked by us\n return packageJsonHasChanged;\n })\n .map((capsuleWithPackageData) => capsuleWithPackageData.capsule);\n return capsulesWithModifiedPackageJson;\n }\n\n private async writeComponentsInCapsules(components: Component[], capsuleList: CapsuleList, legacyScope?: Scope) {\n const modifiedComps: Component[] = [];\n const unmodifiedComps: Component[] = [];\n await Promise.all(\n components.map(async (component) => {\n const isModified = await component.isModified();\n if (isModified) modifiedComps.push(component);\n else unmodifiedComps.push(component);\n })\n );\n const legacyUnmodifiedComps = unmodifiedComps.map((component) => component.state._consumer.clone());\n const legacyModifiedComps = modifiedComps.map((component) => component.state._consumer.clone());\n const legacyComponents = [...legacyUnmodifiedComps, ...legacyModifiedComps];\n if (legacyScope && unmodifiedComps.length) await importMultipleDistsArtifacts(legacyScope, legacyUnmodifiedComps);\n const allIds = BitIds.fromArray(legacyComponents.map((c) => c.id));\n await Promise.all(\n components.map(async (component) => {\n const capsule = capsuleList.getCapsule(component.id);\n if (!capsule) return;\n const params = this.getComponentWriteParams(component.state._consumer, allIds, legacyScope);\n if (await component.isModified()) {\n delete params.scope;\n }\n const componentWriter = new ComponentWriter(params);\n await componentWriter.populateComponentsFilesToWrite();\n await component.state._consumer.dataToPersist.persistAllToCapsule(capsule, { keepExistingCapsule: true });\n })\n );\n }\n\n private getWorkspacePeersOnlyPolicy(): WorkspacePolicy {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const peerOnlyPolicy = workspacePolicy.byLifecycleType('peer');\n return peerOnlyPolicy;\n }\n\n private getComponentWriteParams(\n component: ConsumerComponent,\n ids: BitIds,\n legacyScope?: Scope\n ): ComponentWriterProps {\n return {\n component,\n // @ts-ignore\n bitMap: new BitMap(undefined, undefined, undefined, false),\n writeToPath: '.',\n origin: 'IMPORTED',\n consumer: undefined,\n scope: legacyScope,\n override: false,\n writePackageJson: true,\n writeConfig: false,\n ignoreBitDependencies: ids,\n excludeRegistryPrefix: false,\n isolated: true,\n };\n }\n\n private toComponentMap(capsuleList: CapsuleList): ComponentMap<string> {\n const tuples: [Component, string][] = capsuleList.map((capsule) => {\n return [capsule.component, capsule.path];\n });\n\n return ComponentMap.create(tuples);\n }\n\n async list(workspacePath: string): Promise<ListResults> {\n try {\n const workspaceCapsuleFolder = this.getCapsulesRootDir(workspacePath);\n const capsules = await fs.readdir(workspaceCapsuleFolder);\n const capsuleFullPaths = capsules.map((c) => path.join(workspaceCapsuleFolder, c));\n return {\n workspace: workspacePath,\n capsules: capsuleFullPaths,\n };\n } catch (e: any) {\n if (e.code === 'ENOENT') {\n return { workspace: workspacePath, capsules: [] };\n }\n throw e;\n }\n }\n\n getCapsulesRootDir(baseDir: string, rootBaseDir?: string): PathOsBasedAbsolute {\n const capsulesRootBaseDir = rootBaseDir || this.getRootDirOfAllCapsules();\n return path.join(capsulesRootBaseDir, hash(baseDir));\n }\n\n async deleteCapsules(capsuleBaseDir: string | null): Promise<string> {\n const dirToDelete = capsuleBaseDir ? this.getCapsulesRootDir(capsuleBaseDir) : this.getRootDirOfAllCapsules();\n await fs.remove(dirToDelete);\n return dirToDelete;\n }\n\n private async createCapsulesFromComponents(\n components: Component[],\n baseDir: string,\n opts: IsolateComponentsOptions\n ): Promise<Capsule[]> {\n const capsules: Capsule[] = await Promise.all(\n components.map((component: Component) => {\n return Capsule.createFromComponent(component, baseDir, opts);\n })\n );\n return capsules;\n }\n\n private getRootDirOfAllCapsules(): string {\n return this.globalConfig.getSync(CFG_CAPSULES_ROOT_BASE_DIR) || DEFAULT_CAPSULES_BASE_DIR;\n }\n\n private wereDependenciesInPackageJsonChanged(capsuleWithPackageData: CapsulePackageJsonData): boolean {\n const { previousPackageJson, currentPackageJson } = capsuleWithPackageData;\n if (!previousPackageJson) return true;\n // @ts-ignore at this point, currentPackageJson is set\n return DEPENDENCIES_FIELDS.some((field) => !equals(previousPackageJson[field], currentPackageJson[field]));\n }\n\n private async getCapsulesPreviousPackageJson(capsules: Capsule[]): Promise<CapsulePackageJsonData[]> {\n return Promise.all(\n capsules.map(async (capsule) => {\n const packageJsonPath = path.join(capsule.path, 'package.json');\n let previousPackageJson: any = null;\n try {\n const previousPackageJsonRaw = await capsule.fs.promises.readFile(packageJsonPath, { encoding: 'utf8' });\n previousPackageJson = JSON.parse(previousPackageJsonRaw);\n } catch (e: any) {\n // package-json doesn't exist in the capsule, that's fine, it'll be considered as a cache miss\n }\n return {\n capsule,\n previousPackageJson,\n };\n })\n );\n }\n\n private async updateWithCurrentPackageJsonData(\n capsulesWithPackagesData: CapsulePackageJsonData[],\n capsules: CapsuleList\n ) {\n const updateP = capsules.map(async (capsule) => {\n const packageJson = await this.getCurrentPackageJson(capsule, capsules);\n const found = capsulesWithPackagesData.filter((c) => c.capsule.component.id.isEqual(capsule.component.id));\n if (!found.length) throw new Error(`updateWithCurrentPackageJsonData unable to find ${capsule.component.id}`);\n if (found.length > 1)\n throw new Error(\n `updateWithCurrentPackageJsonData found duplicate capsules: ${capsule.component.id.toString()}\"\"`\n );\n found[0].currentPackageJson = packageJson.packageJsonObject;\n });\n return Promise.all(updateP);\n }\n\n private async getCurrentPackageJson(capsule: Capsule, capsules: CapsuleList): Promise<PackageJsonFile> {\n const component: Component = capsule.component;\n const currentVersion = await this.getComponentPackageVersionWithCache(component);\n // const newVersion = '0.0.1-new';\n const getComponentDepsManifest = async (dependencies: DependencyList) => {\n const manifest = {\n dependencies: {},\n devDependencies: {},\n };\n const compDeps = dependencies.toTypeArray<ComponentDependency>('component');\n const promises = compDeps.map(async (dep) => {\n const depCapsule = capsules.getCapsule(dep.componentId);\n let version = dep.version;\n if (depCapsule) {\n version = await this.getComponentPackageVersionWithCache(depCapsule?.component);\n }\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[dep.lifecycle];\n const entry = dep.toManifest();\n if (entry) {\n manifest[keyName][entry.packageName] = version;\n }\n });\n await Promise.all(promises);\n return manifest;\n };\n const deps = await this.dependencyResolver.getDependencies(component);\n const manifest = await getComponentDepsManifest(deps);\n\n // unfortunately, component.packageJsonFile is not available here.\n // the reason is that `writeComponentsToCapsules` clones the component before writing them\n // also, don't use `PackageJsonFile.createFromComponent`, as it looses the intermediate changes\n // such as postInstall scripts for custom-module-resolution.\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n\n const addDependencies = (packageJsonFile: PackageJsonFile) => {\n packageJsonFile.addDependencies(manifest.dependencies);\n packageJsonFile.addDevDependencies(manifest.devDependencies);\n };\n addDependencies(packageJson);\n packageJson.addOrUpdateProperty('version', currentVersion);\n return packageJson;\n }\n\n private async getComponentPackageVersionWithCache(component: Component): Promise<string> {\n const idStr = component.id.toString();\n if (this._componentsPackagesVersionCache[idStr]) {\n return this._componentsPackagesVersionCache[idStr];\n }\n const version = await getComponentPackageVersion(component);\n this._componentsPackagesVersionCache[idStr] = version;\n return version;\n }\n}\n\nIsolatorAspect.addRuntime(IsolatorMain);\n"],"mappings":"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"}
|
package/dist/network.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["Network","constructor","_graphCapsules","seedersIds","_capsulesRootDir","seedersCapsules","capsules","map","seederId","capsule","graphCapsules","getCapsule","Error","toString","CapsuleList","fromArray","originalSeedersCapsules","getOriginalSeeders","getCapsulesToCompile","Promise","all","seederCapsule","component","id","isModified","compact","_originalSeeders","capsulesRootDir"],"sources":["network.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\nimport { PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { compact } from 'lodash';\nimport CapsuleList from './capsule-list';\n\n/**\n * collection of isolated components (capsules).\n * normally, \"seeders\" are the components that this network was created for.\n * \"graphCapsules\" is the graph created from the seeders and it includes also the dependencies.\n *\n * however, during \"bit build\"/\"bit tag\"/\"bit snap\", things are more complex because there is one more variable in the\n * picture, which is the \"env\". the Network is created per env.\n * in practice, for \"build-task\", a task is called per env, and the network passed to the task is relevant to that env.\n * the \"originalSeeders\" are the ones the network was created for, but only for this env.\n * the \"seeders\" are similar to the \"graphCapsules\" above, which contains also the dependencies, but only for this env.\n * the \"graphCapsules\" is the entire graph, including capsules from other envs.\n *\n * for example:\n * comp1 depends on comp2. comp1 env is \"react\". comp2 env is \"aspect\".\n *\n * when the user is running \"bit build comp1\", two `Network` instances will be created with the following:\n * Network for \"react\" env: originalSeeders: ['comp1'], seeders: ['comp1'], graphCapsules: ['comp1', 'comp2'].\n * Network for \"aspect\" env: originalSeeders: [], seeders: ['comp2'], graphCapsules: ['comp2'].\n *\n * on the other hand, when the user is running \"bit capsule create comp1\", only one `Network` instance is created:\n * Network: originalSeeders: ['comp1'], seeders: ['comp1'], graphCapsules: ['comp1', 'comp2'].\n *\n * (as a side note, another implementation was attempt to have the \"seeders\" as the original-seeders for build,\n * however, it's failed. see https://github.com/teambit/bit/pull/5407 for more details).\n */\nexport class Network {\n _originalSeeders: ComponentID[] | undefined;\n constructor(\n private _graphCapsules: CapsuleList,\n private seedersIds: ComponentID[],\n private _capsulesRootDir: string\n ) {}\n\n /**\n * for build-tasks (during bit build/tag/snap), this includes the component graph of the current env only.\n * otherwise, this includes the original components the network was created for.\n */\n get seedersCapsules(): CapsuleList {\n const capsules = this.seedersIds.map((seederId) => {\n const capsule = this.graphCapsules.getCapsule(seederId);\n if (!capsule) throw new Error(`unable to find ${seederId.toString()} in the capsule list`);\n return capsule;\n });\n return CapsuleList.fromArray(capsules);\n }\n\n /**\n * for build-tasks (during bit build/tag/snap), this includes the original components of the current env.\n * otherwise, this is the same as `this.seedersCapsules()`.\n */\n get originalSeedersCapsules(): CapsuleList {\n const capsules = this.getOriginalSeeders().map((seederId) => {\n const capsule = this.graphCapsules.getCapsule(seederId);\n if (!capsule) throw new Error(`unable to find ${seederId.toString()} in the capsule list`);\n return capsule;\n });\n return CapsuleList.fromArray(capsules);\n }\n\n /**\n * some of the capsules (non-modified) are written already with the dists files, so no need to re-compile them.\n * this method helps optimizing compilers that are running on the capsules.\n */\n async getCapsulesToCompile() {\n const originalSeedersCapsules = this.originalSeedersCapsules;\n const capsules = await Promise.all(\n this.seedersCapsules.map(async (seederCapsule) => {\n if (originalSeedersCapsules.getCapsule(seederCapsule.component.id)) {\n return seederCapsule;\n }\n const isModified = await seederCapsule.component.isModified();\n return isModified ? seederCapsule : null;\n })\n );\n return CapsuleList.fromArray(compact(capsules));\n }\n\n /**\n * originalSeeders are not always set (currently, only during build process), so if they're missing, just provide the\n * seeders, which are probably the original-seeders\n */\n private getOriginalSeeders(): ComponentID[] {\n return this._originalSeeders || this.seedersIds;\n }\n\n /**\n * all capsules, including the dependencies of the seeders. (even when they belong to another env)\n */\n get graphCapsules(): CapsuleList {\n return this._graphCapsules;\n }\n\n get capsulesRootDir(): PathOsBasedAbsolute {\n return this._capsulesRootDir;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,OAAN,CAAc;EAEnBC,WAAW,CACDC,cADC,EAEDC,UAFC,EAGDC,gBAHC,EAIT;IAAA,KAHQF,cAGR,GAHQA,cAGR;IAAA,KAFQC,UAER,GAFQA,UAER;IAAA,KADQC,gBACR,GADQA,gBACR;IAAA;EAAE;EAEJ;AACF;AACA;AACA;;;EACqB,IAAfC,eAAe,GAAgB;IACjC,MAAMC,QAAQ,GAAG,KAAKH,UAAL,CAAgBI,GAAhB,CAAqBC,QAAD,IAAc;MACjD,MAAMC,OAAO,GAAG,KAAKC,aAAL,CAAmBC,UAAnB,CAA8BH,QAA9B,CAAhB;MACA,IAAI,CAACC,OAAL,EAAc,MAAM,IAAIG,KAAJ,CAAW,kBAAiBJ,QAAQ,CAACK,QAAT,EAAoB,sBAAhD,CAAN;MACd,OAAOJ,OAAP;IACD,CAJgB,CAAjB;IAKA,OAAOK,sBAAA,CAAYC,SAAZ,CAAsBT,QAAtB,CAAP;EACD;EAED;AACF;AACA;AACA;;;EAC6B,IAAvBU,uBAAuB,GAAgB;IACzC,MAAMV,QAAQ,GAAG,KAAKW,kBAAL,GAA0BV,GAA1B,CAA+BC,QAAD,IAAc;MAC3D,MAAMC,OAAO,GAAG,KAAKC,aAAL,CAAmBC,UAAnB,CAA8BH,QAA9B,CAAhB;MACA,IAAI,CAACC,OAAL,EAAc,MAAM,IAAIG,KAAJ,CAAW,kBAAiBJ,QAAQ,CAACK,QAAT,EAAoB,sBAAhD,CAAN;MACd,OAAOJ,OAAP;IACD,CAJgB,CAAjB;IAKA,OAAOK,sBAAA,CAAYC,SAAZ,CAAsBT,QAAtB,CAAP;EACD;EAED;AACF;AACA;AACA;;;EAC4B,MAApBY,oBAAoB,GAAG;IAC3B,MAAMF,uBAAuB,GAAG,KAAKA,uBAArC;IACA,MAAMV,QAAQ,GAAG,MAAMa,OAAO,CAACC,GAAR,CACrB,KAAKf,eAAL,CAAqBE,GAArB,CAAyB,MAAOc,aAAP,IAAyB;MAChD,IAAIL,uBAAuB,CAACL,UAAxB,CAAmCU,aAAa,CAACC,SAAd,CAAwBC,EAA3D,CAAJ,EAAoE;QAClE,OAAOF,aAAP;MACD;;MACD,MAAMG,UAAU,GAAG,MAAMH,aAAa,CAACC,SAAd,CAAwBE,UAAxB,EAAzB;MACA,OAAOA,UAAU,GAAGH,aAAH,GAAmB,IAApC;IACD,CAND,CADqB,CAAvB;IASA,OAAOP,sBAAA,CAAYC,SAAZ,CAAsB,IAAAU,iBAAA,EAAQnB,QAAR,CAAtB,CAAP;EACD;EAED;AACF;AACA;AACA;;;EACUW,kBAAkB,GAAkB;IAC1C,OAAO,KAAKS,gBAAL,IAAyB,KAAKvB,UAArC;EACD;EAED;AACF;AACA;;;EACmB,IAAbO,aAAa,GAAgB;IAC/B,OAAO,KAAKR,cAAZ;EACD;;EAEkB,IAAfyB,eAAe,GAAwB;IACzC,OAAO,KAAKvB,gBAAZ;EACD;;AArEkB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["symlinkBitLegacyToCapsules","capsules","logger","debug","length","linksP","map","capsule","linkBitLegacyInCapsule","Promise","all","copyBitLegacyToCapsuleRoot","root","localBitLegacyPath","path","join","__dirname","targetPath","fs","copy","bitLegacyPath","wrkDir","getLocalBitLegacyPath","pathOutsideNodeModules","dirInIsolator","normalize","includes","replace","mkdirSync","e","remove","createSymlinkOrCopy"],"sources":["symlink-bit-legacy-to-capsules.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport createSymlinkOrCopy from '@teambit/legacy/dist/utils/fs/create-symlink-or-copy';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { Capsule } from './capsule';\n\nexport async function symlinkBitLegacyToCapsules(capsules: Capsule[], logger: Logger) {\n logger.debug(`symlink bit bin to capsules, ${capsules.length} capsules`);\n const linksP = capsules.map(async (capsule) => linkBitLegacyInCapsule(capsule));\n return Promise.all(linksP);\n}\n\nexport async function copyBitLegacyToCapsuleRoot(root: string, logger: Logger) {\n logger.debug(`symlink @teambit/legacy package to capsule root`);\n const localBitLegacyPath = path.join(__dirname, '@teambit/legacy/dist/..');\n const targetPath = path.join(root, './node_modules/@teambit/legacy');\n await fs.copy(localBitLegacyPath, targetPath);\n}\n\nasync function linkBitLegacyInCapsule(capsule: Capsule) {\n const bitLegacyPath = path.join(capsule.wrkDir, './node_modules/@teambit/legacy');\n const getLocalBitLegacyPath = () => {\n const pathOutsideNodeModules = path.join(__dirname, '@teambit/legacy/dist/..');\n const dirInIsolator = path.normalize('node_modules/@teambit/isolator/dist/@teambit/legacy');\n if (pathOutsideNodeModules.includes(dirInIsolator)) {\n return pathOutsideNodeModules.replace(dirInIsolator, '');\n }\n return pathOutsideNodeModules;\n // if (pathOutsideNodeModules.endsWith(`${path.sep}dist`)) {\n // return pathOutsideNodeModules;\n // }\n // if (__dirname.includes('build-harmony')) {\n // // for @teambit/legacy development, the cli extension is installed as a package in build-harmony directory\n // return path.join(__dirname.split('build-harmony')[0], 'dist');\n // }\n // throw new Error('unable to link @teambit/legacy to the capsule, the location of @teambit/legacy is unknown');\n };\n const localBitLegacyPath = getLocalBitLegacyPath();\n // if there are no deps, sometimes the node_modules folder is not created\n // and we need it in order to perform the linking\n try {\n capsule.fs.mkdirSync('node_modules');\n } catch (e: any) {\n // fail silently - we only need to create it if it doesn't already exist\n }\n\n // we use fs directly here rather than the capsule.fs because there are some edge cases\n // that the capsule fs does not deal with well (eg. identifying and deleting\n // a symlink rather than the what the symlink links to)\n await fs.remove(bitLegacyPath);\n createSymlinkOrCopy(localBitLegacyPath, bitLegacyPath);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAIO,eAAeA,0BAAf,CAA0CC,QAA1C,EAA+DC,MAA/D,EAA+E;EACpFA,MAAM,CAACC,KAAP,CAAc,gCAA+BF,QAAQ,CAACG,MAAO,WAA7D;EACA,MAAMC,MAAM,GAAGJ,QAAQ,CAACK,GAAT,CAAa,MAAOC,OAAP,IAAmBC,sBAAsB,CAACD,OAAD,CAAtD,CAAf;EACA,OAAOE,OAAO,CAACC,GAAR,CAAYL,MAAZ,CAAP;AACD;;AAEM,eAAeM,0BAAf,CAA0CC,IAA1C,EAAwDV,MAAxD,EAAwE;EAC7EA,MAAM,CAACC,KAAP,CAAc,iDAAd;;EACA,MAAMU,kBAAkB,GAAGC,eAAA,CAAKC,IAAL,CAAUC,SAAV,EAAqB,yBAArB,CAA3B;;EACA,MAAMC,UAAU,GAAGH,eAAA,CAAKC,IAAL,CAAUH,IAAV,EAAgB,gCAAhB,CAAnB;;EACA,MAAMM,kBAAA,CAAGC,IAAH,CAAQN,kBAAR,EAA4BI,UAA5B,CAAN;AACD;;AAED,eAAeT,sBAAf,CAAsCD,OAAtC,EAAwD;EACtD,MAAMa,aAAa,GAAGN,eAAA,CAAKC,IAAL,CAAUR,OAAO,CAACc,MAAlB,EAA0B,gCAA1B,CAAtB;;EACA,MAAMC,qBAAqB,GAAG,MAAM;IAClC,MAAMC,sBAAsB,GAAGT,eAAA,CAAKC,IAAL,CAAUC,SAAV,EAAqB,yBAArB,CAA/B;;IACA,MAAMQ,aAAa,GAAGV,eAAA,CAAKW,SAAL,CAAe,qDAAf,CAAtB;;IACA,IAAIF,sBAAsB,CAACG,QAAvB,CAAgCF,aAAhC,CAAJ,EAAoD;MAClD,OAAOD,sBAAsB,CAACI,OAAvB,CAA+BH,aAA/B,EAA8C,EAA9C,CAAP;IACD;;IACD,OAAOD,sBAAP,CANkC,CAOlC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACD,CAfD;;EAgBA,MAAMV,kBAAkB,GAAGS,qBAAqB,EAAhD,CAlBsD,CAmBtD;EACA;;EACA,IAAI;IACFf,OAAO,CAACW,EAAR,CAAWU,SAAX,CAAqB,cAArB;EACD,CAFD,CAEE,OAAOC,CAAP,EAAe,CACf;EACD,CAzBqD,CA2BtD;EACA;EACA;;;EACA,MAAMX,kBAAA,CAAGY,MAAH,CAAUV,aAAV,CAAN;EACA,IAAAW,8BAAA,EAAoBlB,kBAApB,EAAwCO,aAAxC;AACD"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["symlinkDependenciesToCapsules","capsules","capsuleList","logger","debug","length","Promise","all","map","capsule","symlinkComponent","component","state","_consumer","symlinkOnCapsuleRoot","capsuleRoot","modulesPath","path","join","symlinks","packageName","componentIdToPackageName","dest","src","relative","resolve","Symlink","id","_legacy","symlink","write","componentCapsule","getCapsuleIgnoreScopeAndVersion","ComponentID","Error","toString","allDeps","getAllDependenciesIds","depId","devCapsule","toStringWithoutVersion","devCapsulePath"],"sources":["symlink-dependencies-to-capsules.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\nimport { Logger } from '@teambit/logger';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport Symlink from '@teambit/legacy/dist/links/symlink';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport path from 'path';\n\nimport { Capsule } from './capsule';\nimport CapsuleList from './capsule-list';\n\nexport async function symlinkDependenciesToCapsules(capsules: Capsule[], capsuleList: CapsuleList, logger: Logger) {\n logger.debug(`symlinkDependenciesToCapsules, ${capsules.length} capsules`);\n await Promise.all(\n capsules.map((capsule) => {\n return symlinkComponent(capsule.component.state._consumer, capsuleList, logger);\n })\n );\n}\n\nexport async function symlinkOnCapsuleRoot(capsuleList: CapsuleList, logger: Logger, capsuleRoot: string) {\n const modulesPath = path.join(capsuleRoot, 'node_modules');\n const symlinks = capsuleList.map((capsule) => {\n const packageName = componentIdToPackageName(capsule.component.state._consumer);\n const dest = path.join(modulesPath, packageName);\n const src = path.relative(path.resolve(dest, '..'), capsule.path);\n\n return new Symlink(src, dest, capsule.component.id._legacy);\n });\n\n await Promise.all(symlinks.map((symlink) => symlink.write()));\n}\n\nasync function symlinkComponent(component: ConsumerComponent, capsuleList: CapsuleList, logger: Logger) {\n const componentCapsule = capsuleList.getCapsuleIgnoreScopeAndVersion(new ComponentID(component.id));\n if (!componentCapsule) throw new Error(`unable to find the capsule for ${component.id.toString()}`);\n const allDeps = component.getAllDependenciesIds();\n const symlinks = allDeps.map((depId: BitId) => {\n // TODO: this is dangerous - we might have 2 capsules for the same component with different version, then we might link to the wrong place\n const devCapsule = capsuleList.getCapsuleIgnoreScopeAndVersion(new ComponentID(depId));\n if (!devCapsule) {\n // happens when a dependency is not in the workspace. (it gets installed via the package manager)\n logger.debug(\n `symlinkComponentToCapsule: unable to find the capsule for ${depId.toStringWithoutVersion()}. skipping`\n );\n return null;\n }\n const packageName = componentIdToPackageName(devCapsule.component.state._consumer);\n const devCapsulePath = devCapsule.path;\n // @todo: this is a hack, the capsule should be the one responsible to symlink, this works only for FS capsules.\n const dest = path.join(componentCapsule.path, 'node_modules', packageName);\n // use relative symlink in capsules to make it really isolated from the machine fs\n const src = path.relative(path.resolve(dest, '..'), devCapsulePath);\n return new Symlink(src, dest, component.id);\n });\n\n await Promise.all(symlinks.map((symlink) => symlink && symlink.write()));\n}\n"],"mappings":"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"}
|
Binary file
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/isolator",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.738",
|
4
4
|
"homepage": "https://bit.dev/teambit/component/isolator",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.component",
|
8
8
|
"name": "isolator",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.738"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"fs-extra": "10.0.0",
|
@@ -23,13 +23,13 @@
|
|
23
23
|
"@babel/runtime": "7.12.18",
|
24
24
|
"core-js": "^3.0.0",
|
25
25
|
"@teambit/harmony": "0.3.3",
|
26
|
-
"@teambit/component": "0.0.
|
26
|
+
"@teambit/component": "0.0.738",
|
27
27
|
"@teambit/legacy-bit-id": "0.0.399",
|
28
28
|
"@teambit/cli": "0.0.491",
|
29
29
|
"@teambit/component-package-version": "0.0.396",
|
30
|
-
"@teambit/dependency-resolver": "0.0.
|
30
|
+
"@teambit/dependency-resolver": "0.0.738",
|
31
31
|
"@teambit/global-config": "0.0.493",
|
32
|
-
"@teambit/graph": "0.0.
|
32
|
+
"@teambit/graph": "0.0.738",
|
33
33
|
"@teambit/logger": "0.0.583"
|
34
34
|
},
|
35
35
|
"devDependencies": {
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.738/dist/isolator.composition.js')]
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_isolator@0.0.738/dist/isolator.docs.md')]
|
Binary file
|