@teambit/workspace 0.0.526 → 0.0.530
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/capsule.cmd.ts +9 -2
- package/dist/capsule.cmd.d.ts +2 -1
- package/dist/capsule.cmd.js +3 -1
- package/dist/capsule.cmd.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/on-component-events.d.ts +2 -2
- package/dist/watch/output-formatter.js +14 -3
- package/dist/watch/output-formatter.js.map +1 -1
- package/dist/watch/watch.cmd.d.ts +2 -4
- package/dist/watch/watch.cmd.js +17 -9
- package/dist/watch/watch.cmd.js.map +1 -1
- package/dist/watch/watcher.d.ts +8 -5
- package/dist/watch/watcher.js +37 -36
- package/dist/watch/watcher.js.map +1 -1
- package/dist/workspace.d.ts +10 -4
- package/dist/workspace.js +36 -4
- package/dist/workspace.js.map +1 -1
- package/dist/workspace.main.runtime.d.ts +2 -2
- package/dist/workspace.main.runtime.js +1 -1
- package/dist/workspace.main.runtime.js.map +1 -1
- package/dist/workspace.provider.d.ts +7 -3
- package/dist/workspace.provider.js +2 -2
- package/dist/workspace.provider.js.map +1 -1
- package/index.ts +1 -1
- package/on-component-events.ts +2 -1
- package/package-tar/teambit-workspace-0.0.530.tgz +0 -0
- package/package.json +40 -40
- package/watch/output-formatter.ts +8 -1
- package/watch/watch.cmd.tsx +14 -4
- package/watch/watcher.ts +27 -20
- package/workspace.main.runtime.ts +2 -1
- package/workspace.provider.ts +9 -4
- package/workspace.ts +38 -4
- package/package-tar/teambit-workspace-0.0.526.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["watcher.ts"],"names":["Watcher","constructor","workspace","pubsub","trackDirs","verbose","multipleWatchers","watch","opts","Boolean","watchAll","msgs","consumer","_verbose","createWatcher","watcher","fsWatcher","onStart","Promise","resolve","reject","process","env","BIT_LOG","onAll","on","onReady","filePath","startTime","Date","getTime","buildResults","handleChange","initiator","duration","onChange","onAdd","p","onUnlink","err","onError","endsWith","BIT_MAP","handleBitmapChanges","completeWatch","componentId","getComponentIdAndClearItsCache","logger","debug","executeWatchOperationsOnComponent","msg","error","console","message","previewsTrackDirs","_reloadConsumer","setTrackDirs","newDirs","Object","keys","removedDirs","results","length","add","addResults","dir","push","flat","unwatch","executeWatchOperationsOnRemove","chalk","bold","toString","pub","WorkspaceAspect","id","creatOnComponentRemovedEvent","triggerOnComponentRemove","isChange","isComponentWatchedExternally","get","idStr","creatOnComponentChangeEvent","creatOnComponentAddEvent","triggerOnComponentChange","triggerOnComponentAdd","OnComponentRemovedEvent","now","hook","OnComponentChangeEvent","OnComponentAddEvent","loader","stop","watcherData","find","m","componentIds","isEqual","_legacy","compilerId","relativeFile","getPathRelativeToConsumer","trackDir","findTrackDirByFilePathRecursively","clearComponentCache","component","componentMap","state","_consumer","getFilesRelativeToConsumer","parentDir","pathsToWatch","getPathsToWatch","chokidar","ignoreInitial","ignored","path","includes","sep","persistent","useFsEvents","componentsFromBitMap","bitMap","getAllComponents","COMPONENT_ORIGINS","AUTHORED","IMPORTED","all","map","bitId","getTrackDir","Error","resolveComponentId","paths","pathsAbsolute","toAbsolutePath"],"mappings":"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","sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport { dirname, sep } from 'path';\nimport { difference } from 'lodash';\nimport { ComponentID } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { BIT_MAP, COMPONENT_ORIGINS } from '@teambit/legacy/dist/constants';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport mapSeries from 'p-map-series';\nimport chalk from 'chalk';\nimport { ChildProcess } from 'child_process';\nimport chokidar, { FSWatcher } from 'chokidar';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\nimport { PathLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { WorkspaceAspect } from '../';\nimport { OnComponentChangeEvent, OnComponentAddEvent, OnComponentRemovedEvent } from '../events';\nimport { Workspace } from '../workspace';\nimport { OnComponentEventResult } from '../on-component-events';\n\nexport type WatcherProcessData = { watchProcess: ChildProcess; compilerId: BitId; componentIds: BitId[] };\n\nexport class Watcher {\n private fsWatcher: FSWatcher;\n constructor(\n private workspace: Workspace,\n private pubsub: PubsubMain,\n private trackDirs: { [dir: PathLinux]: ComponentID } = {},\n private verbose = false,\n private multipleWatchers: WatcherProcessData[] = []\n ) {}\n\n async watch(opts: { msgs; verbose?: boolean }) {\n this.verbose = Boolean(opts.verbose);\n await this.watchAll({ msgs: opts.msgs, verbose: this.verbose });\n }\n\n get consumer(): Consumer {\n return this.workspace.consumer;\n }\n\n async watchAll(opts?: { msgs; verbose?: boolean; initiator?: CompilationInitiator }) {\n // TODO: run build in the beginning of process (it's work like this in other envs)\n const _verbose = opts?.verbose || false;\n await this.createWatcher();\n const watcher = this.fsWatcher;\n opts?.msgs?.onStart(this.workspace);\n\n return new Promise((resolve, reject) => {\n // prefix your command with \"BIT_LOG=*\" to see all watch events\n if (process.env.BIT_LOG) {\n if (opts?.msgs?.onAll) watcher.on('all', opts?.msgs?.onAll);\n }\n watcher.on('ready', () => {\n opts?.msgs?.onReady(this.workspace, this.trackDirs, _verbose);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('change', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath, opts?.initiator)) || [];\n const duration = new Date().getTime() - startTime;\n opts?.msgs?.onChange(filePath, buildResults, _verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('add', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath)) || [];\n const duration = new Date().getTime() - startTime;\n opts?.msgs?.onAdd(filePath, buildResults, _verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('unlink', async (p) => {\n opts?.msgs?.onUnlink(p);\n await this.handleChange(p);\n });\n watcher.on('error', (err) => {\n opts?.msgs?.onError(err);\n reject(err);\n });\n });\n }\n\n private async handleChange(filePath: string, initiator?: CompilationInitiator): Promise<OnComponentEventResult[]> {\n try {\n if (filePath.endsWith(BIT_MAP)) {\n const buildResults = await this.handleBitmapChanges();\n this.completeWatch();\n return buildResults;\n }\n const componentId = await this.getComponentIdAndClearItsCache(filePath);\n if (!componentId) {\n logger.debug(`file ${filePath} is not part of any component, ignoring it`);\n return this.completeWatch();\n }\n\n const buildResults = await this.executeWatchOperationsOnComponent(componentId, true, initiator);\n this.completeWatch();\n return buildResults;\n } catch (err: any) {\n const msg = `watcher found an error while handling ${filePath}`;\n logger.error(msg, err);\n logger.console(`${msg}, ${err.message}`);\n return [];\n }\n }\n\n /**\n * if .bitmap changed, it's possible that a new component has been added. trigger onComponentAdd.\n */\n private async handleBitmapChanges(): Promise<OnComponentEventResult[]> {\n const previewsTrackDirs = { ...this.trackDirs };\n await this.workspace._reloadConsumer();\n await this.setTrackDirs();\n const newDirs: string[] = difference(Object.keys(this.trackDirs), Object.keys(previewsTrackDirs));\n const removedDirs: string[] = difference(Object.keys(previewsTrackDirs), Object.keys(this.trackDirs));\n const results: OnComponentEventResult[] = [];\n if (newDirs.length) {\n this.fsWatcher.add(newDirs);\n const addResults = await mapSeries(newDirs, (dir) =>\n this.executeWatchOperationsOnComponent(this.trackDirs[dir], false)\n );\n results.push(...addResults.flat());\n }\n if (removedDirs.length) {\n await this.fsWatcher.unwatch(removedDirs);\n await mapSeries(removedDirs, (dir) => this.executeWatchOperationsOnRemove(previewsTrackDirs[dir]));\n }\n return results;\n }\n\n private async executeWatchOperationsOnRemove(componentId: ComponentID) {\n logger.debug(`running OnComponentRemove hook for ${chalk.bold(componentId.toString())}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentRemovedEvent(componentId.toString()));\n await this.workspace.triggerOnComponentRemove(componentId);\n }\n\n private async executeWatchOperationsOnComponent(\n componentId: ComponentID,\n isChange = true,\n initiator?: CompilationInitiator\n ): Promise<OnComponentEventResult[]> {\n if (this.isComponentWatchedExternally(componentId)) {\n // update capsule, once done, it automatically triggers the external watcher\n await this.workspace.get(componentId);\n return [];\n }\n const idStr = componentId.toString();\n\n if (isChange) {\n logger.debug(`running OnComponentChange hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentChangeEvent(idStr, 'OnComponentChange'));\n } else {\n logger.debug(`running OnComponentAdd hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentAddEvent(idStr, 'OnComponentAdd'));\n }\n\n let buildResults: OnComponentEventResult[];\n try {\n buildResults = isChange\n ? await this.workspace.triggerOnComponentChange(componentId, initiator)\n : await this.workspace.triggerOnComponentAdd(componentId);\n } catch (err: any) {\n // do not exist the watch process on errors, just print them\n logger.console(err.message || err);\n return [];\n }\n if (buildResults && buildResults.length) {\n return buildResults;\n }\n logger.console(`${idStr} doesn't have a compiler, nothing to build`);\n return [];\n }\n\n private creatOnComponentRemovedEvent(idStr) {\n return new OnComponentRemovedEvent(Date.now(), idStr);\n }\n\n private creatOnComponentChangeEvent(idStr, hook) {\n return new OnComponentChangeEvent(Date.now(), idStr, hook);\n }\n\n private creatOnComponentAddEvent(idStr, hook) {\n return new OnComponentAddEvent(Date.now(), idStr, hook);\n }\n\n private completeWatch() {\n loader.stop();\n return [];\n }\n\n private isComponentWatchedExternally(componentId: ComponentID) {\n const watcherData = this.multipleWatchers.find((m) => m.componentIds.find((id) => id.isEqual(componentId._legacy)));\n if (watcherData) {\n logger.debug(`${componentId.toString()} is watched by ${watcherData.compilerId.toString()}`);\n return true;\n }\n return false;\n }\n\n /**\n * if a file was added/remove, once the component is loaded, it changes .bitmap, and then the\n * entire cache is invalidated and the consumer is reloaded.\n * when a file just changed, no need to reload the consumer, it is enough to just delete the\n * component from the cache (both, workspace and consumer)\n */\n private async getComponentIdAndClearItsCache(filePath: string): Promise<ComponentID | null> {\n const relativeFile = pathNormalizeToLinux(this.consumer.getPathRelativeToConsumer(filePath));\n const trackDir = this.findTrackDirByFilePathRecursively(relativeFile);\n if (!trackDir) {\n // the file is not part of any component. If it was a new component, or a new file of\n // existing component, then, handleBitmapChanges() should deal with it.\n return null;\n }\n const componentId = this.trackDirs[trackDir];\n this.workspace.clearComponentCache(componentId);\n const component = await this.workspace.get(componentId);\n const componentMap: ComponentMap = component.state._consumer.componentMap;\n if (componentMap.getFilesRelativeToConsumer().find((p) => p === relativeFile)) {\n return componentId;\n }\n // the file is inside the component dir but it's ignored. (e.g. it's in IGNORE_LIST)\n return null;\n }\n\n private findTrackDirByFilePathRecursively(filePath: string): string | null {\n if (this.trackDirs[filePath]) return filePath;\n const parentDir = dirname(filePath);\n if (parentDir === filePath) return null;\n return this.findTrackDirByFilePathRecursively(parentDir);\n }\n\n private async createWatcher() {\n const pathsToWatch = await this.getPathsToWatch();\n this.fsWatcher = chokidar.watch(pathsToWatch, {\n ignoreInitial: true,\n // Using the function way since the regular way not working as expected\n // It might be solved when upgrading to chokidar > 3.0.0\n // See:\n // https://github.com/paulmillr/chokidar/issues/773\n // https://github.com/paulmillr/chokidar/issues/492\n // https://github.com/paulmillr/chokidar/issues/724\n ignored: (path) => {\n // Ignore package.json temporarily since it cerates endless loop since it's re-written after each build\n if (path.includes(`${sep}node_modules${sep}`) || path.includes(`${sep}package.json`)) {\n return true;\n }\n return false;\n },\n persistent: true,\n useFsEvents: false,\n });\n }\n\n async setTrackDirs() {\n this.trackDirs = {};\n const componentsFromBitMap = this.consumer.bitMap.getAllComponents([\n COMPONENT_ORIGINS.AUTHORED,\n COMPONENT_ORIGINS.IMPORTED,\n ]);\n await Promise.all(\n componentsFromBitMap.map(async (componentMap) => {\n const bitId = componentMap.id;\n const trackDir = componentMap.getTrackDir();\n if (!trackDir) throw new Error(`${bitId.toString()} has no rootDir, which is invalid in Harmony`);\n const componentId = await this.workspace.resolveComponentId(bitId);\n this.trackDirs[trackDir] = componentId;\n })\n );\n }\n\n private async getPathsToWatch(): Promise<PathOsBasedAbsolute[]> {\n await this.setTrackDirs();\n const paths = [...Object.keys(this.trackDirs), BIT_MAP];\n const pathsAbsolute = paths.map((dir) => this.consumer.toAbsolutePath(dir));\n return pathsAbsolute;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["watcher.ts"],"names":["Watcher","constructor","workspace","pubsub","trackDirs","verbose","multipleWatchers","watch","opts","Boolean","watchAll","consumer","msgs","watchOpts","pathsToWatch","getPathsToWatch","componentIds","Object","values","triggerOnPreWatch","createWatcher","watcher","fsWatcher","onStart","Promise","resolve","reject","process","env","BIT_LOG","onAll","on","onReady","filePath","startTime","Date","getTime","buildResults","handleChange","initiator","duration","onChange","onAdd","p","onUnlink","err","onError","endsWith","BIT_MAP","handleBitmapChanges","completeWatch","componentId","getComponentIdAndClearItsCache","logger","debug","executeWatchOperationsOnComponent","msg","error","console","message","previewsTrackDirs","_reloadConsumer","setTrackDirs","newDirs","keys","removedDirs","results","length","add","addResults","dir","push","flat","unwatch","executeWatchOperationsOnRemove","chalk","bold","toString","pub","WorkspaceAspect","id","creatOnComponentRemovedEvent","triggerOnComponentRemove","files","isChange","isComponentWatchedExternally","get","idStr","creatOnComponentChangeEvent","creatOnComponentAddEvent","triggerOnComponentChange","triggerOnComponentAdd","OnComponentRemovedEvent","now","hook","OnComponentChangeEvent","OnComponentAddEvent","loader","stop","watcherData","find","m","isEqual","_legacy","compilerId","relativeFile","getPathRelativeToConsumer","trackDir","findTrackDirByFilePathRecursively","clearComponentCache","component","componentMap","state","_consumer","getFilesRelativeToConsumer","parentDir","chokidar","ignoreInitial","ignored","path","includes","sep","persistent","useFsEvents","componentsFromBitMap","bitMap","getAllComponents","COMPONENT_ORIGINS","AUTHORED","IMPORTED","all","map","bitId","getTrackDir","Error","resolveComponentId","paths","pathsAbsolute","toAbsolutePath"],"mappings":"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","sourcesContent":["import { PubsubMain } from '@teambit/pubsub';\nimport { dirname, sep } from 'path';\nimport { difference } from 'lodash';\nimport { ComponentID } from '@teambit/component';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { BIT_MAP, COMPONENT_ORIGINS } from '@teambit/legacy/dist/constants';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport { pathNormalizeToLinux } from '@teambit/legacy/dist/utils';\nimport mapSeries from 'p-map-series';\nimport chalk from 'chalk';\nimport { ChildProcess } from 'child_process';\nimport chokidar, { FSWatcher } from 'chokidar';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\nimport { PathLinux, PathOsBasedAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { CompilationInitiator } from '@teambit/compiler';\nimport { WorkspaceAspect } from '../';\nimport { OnComponentChangeEvent, OnComponentAddEvent, OnComponentRemovedEvent } from '../events';\nimport { Workspace } from '../workspace';\nimport { OnComponentEventResult } from '../on-component-events';\n\nexport type WatcherProcessData = { watchProcess: ChildProcess; compilerId: BitId; componentIds: BitId[] };\n\nexport type WatchOptions = { verbose?: boolean; checkTypes?: boolean; skipPreCompilation?: boolean };\n\nexport class Watcher {\n private fsWatcher: FSWatcher;\n constructor(\n private workspace: Workspace,\n private pubsub: PubsubMain,\n private trackDirs: { [dir: PathLinux]: ComponentID } = {},\n private verbose = false,\n private multipleWatchers: WatcherProcessData[] = []\n ) {}\n\n async watch(opts: { msgs } & WatchOptions) {\n this.verbose = Boolean(opts.verbose);\n await this.watchAll(opts);\n }\n\n get consumer(): Consumer {\n return this.workspace.consumer;\n }\n\n async watchAll(opts: { msgs; initiator?: CompilationInitiator } & WatchOptions) {\n const { msgs, ...watchOpts } = opts;\n // TODO: run build in the beginning of process (it's work like this in other envs)\n const pathsToWatch = await this.getPathsToWatch();\n const componentIds = Object.values(this.trackDirs);\n await this.workspace.triggerOnPreWatch(componentIds, watchOpts);\n await this.createWatcher(pathsToWatch);\n const watcher = this.fsWatcher;\n msgs?.onStart(this.workspace);\n\n return new Promise((resolve, reject) => {\n // prefix your command with \"BIT_LOG=*\" to see all watch events\n if (process.env.BIT_LOG) {\n if (msgs?.onAll) watcher.on('all', msgs?.onAll);\n }\n watcher.on('ready', () => {\n msgs?.onReady(this.workspace, this.trackDirs, this.verbose);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('change', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath, opts?.initiator)) || [];\n const duration = new Date().getTime() - startTime;\n msgs?.onChange(filePath, buildResults, this.verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('add', async (filePath) => {\n const startTime = new Date().getTime();\n const buildResults = (await this.handleChange(filePath)) || [];\n const duration = new Date().getTime() - startTime;\n msgs?.onAdd(filePath, buildResults, this.verbose, duration);\n });\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n watcher.on('unlink', async (p) => {\n msgs?.onUnlink(p);\n await this.handleChange(p);\n });\n watcher.on('error', (err) => {\n msgs?.onError(err);\n reject(err);\n });\n });\n }\n\n private async handleChange(filePath: string, initiator?: CompilationInitiator): Promise<OnComponentEventResult[]> {\n try {\n if (filePath.endsWith(BIT_MAP)) {\n const buildResults = await this.handleBitmapChanges();\n this.completeWatch();\n return buildResults;\n }\n const componentId = await this.getComponentIdAndClearItsCache(filePath);\n if (!componentId) {\n logger.debug(`file ${filePath} is not part of any component, ignoring it`);\n return this.completeWatch();\n }\n\n const buildResults = await this.executeWatchOperationsOnComponent(componentId, [filePath], true, initiator);\n this.completeWatch();\n return buildResults;\n } catch (err: any) {\n const msg = `watcher found an error while handling ${filePath}`;\n logger.error(msg, err);\n logger.console(`${msg}, ${err.message}`);\n return [];\n }\n }\n\n /**\n * if .bitmap changed, it's possible that a new component has been added. trigger onComponentAdd.\n */\n private async handleBitmapChanges(): Promise<OnComponentEventResult[]> {\n const previewsTrackDirs = { ...this.trackDirs };\n await this.workspace._reloadConsumer();\n await this.setTrackDirs();\n const newDirs: string[] = difference(Object.keys(this.trackDirs), Object.keys(previewsTrackDirs));\n const removedDirs: string[] = difference(Object.keys(previewsTrackDirs), Object.keys(this.trackDirs));\n const results: OnComponentEventResult[] = [];\n if (newDirs.length) {\n this.fsWatcher.add(newDirs);\n const addResults = await mapSeries(newDirs, async (dir) =>\n this.executeWatchOperationsOnComponent(this.trackDirs[dir], [], false)\n );\n results.push(...addResults.flat());\n }\n if (removedDirs.length) {\n await this.fsWatcher.unwatch(removedDirs);\n await mapSeries(removedDirs, (dir) => this.executeWatchOperationsOnRemove(previewsTrackDirs[dir]));\n }\n return results;\n }\n\n private async executeWatchOperationsOnRemove(componentId: ComponentID) {\n logger.debug(`running OnComponentRemove hook for ${chalk.bold(componentId.toString())}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentRemovedEvent(componentId.toString()));\n await this.workspace.triggerOnComponentRemove(componentId);\n }\n\n private async executeWatchOperationsOnComponent(\n componentId: ComponentID,\n files: string[],\n isChange = true,\n initiator?: CompilationInitiator\n ): Promise<OnComponentEventResult[]> {\n if (this.isComponentWatchedExternally(componentId)) {\n // update capsule, once done, it automatically triggers the external watcher\n await this.workspace.get(componentId);\n return [];\n }\n const idStr = componentId.toString();\n\n if (isChange) {\n logger.debug(`running OnComponentChange hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentChangeEvent(idStr, 'OnComponentChange'));\n } else {\n logger.debug(`running OnComponentAdd hook for ${chalk.bold(idStr)}`);\n this.pubsub.pub(WorkspaceAspect.id, this.creatOnComponentAddEvent(idStr, 'OnComponentAdd'));\n }\n\n let buildResults: OnComponentEventResult[];\n try {\n buildResults = isChange\n ? await this.workspace.triggerOnComponentChange(componentId, files, initiator)\n : await this.workspace.triggerOnComponentAdd(componentId);\n } catch (err: any) {\n // do not exit the watch process on errors, just print them\n const msg = `found an issue during onComponentChange or onComponentAdd hooks`;\n logger.error(msg, err);\n logger.console(`\\n${msg}: ${err.message || err}`);\n return [];\n }\n if (buildResults && buildResults.length) {\n return buildResults;\n }\n logger.console(`${idStr} doesn't have a compiler, nothing to build`);\n return [];\n }\n\n private creatOnComponentRemovedEvent(idStr) {\n return new OnComponentRemovedEvent(Date.now(), idStr);\n }\n\n private creatOnComponentChangeEvent(idStr, hook) {\n return new OnComponentChangeEvent(Date.now(), idStr, hook);\n }\n\n private creatOnComponentAddEvent(idStr, hook) {\n return new OnComponentAddEvent(Date.now(), idStr, hook);\n }\n\n private completeWatch() {\n loader.stop();\n return [];\n }\n\n private isComponentWatchedExternally(componentId: ComponentID) {\n const watcherData = this.multipleWatchers.find((m) => m.componentIds.find((id) => id.isEqual(componentId._legacy)));\n if (watcherData) {\n logger.debug(`${componentId.toString()} is watched by ${watcherData.compilerId.toString()}`);\n return true;\n }\n return false;\n }\n\n /**\n * if a file was added/remove, once the component is loaded, it changes .bitmap, and then the\n * entire cache is invalidated and the consumer is reloaded.\n * when a file just changed, no need to reload the consumer, it is enough to just delete the\n * component from the cache (both, workspace and consumer)\n */\n private async getComponentIdAndClearItsCache(filePath: string): Promise<ComponentID | null> {\n const relativeFile = pathNormalizeToLinux(this.consumer.getPathRelativeToConsumer(filePath));\n const trackDir = this.findTrackDirByFilePathRecursively(relativeFile);\n if (!trackDir) {\n // the file is not part of any component. If it was a new component, or a new file of\n // existing component, then, handleBitmapChanges() should deal with it.\n return null;\n }\n const componentId = this.trackDirs[trackDir];\n this.workspace.clearComponentCache(componentId);\n const component = await this.workspace.get(componentId);\n const componentMap: ComponentMap = component.state._consumer.componentMap;\n if (componentMap.getFilesRelativeToConsumer().find((p) => p === relativeFile)) {\n return componentId;\n }\n // the file is inside the component dir but it's ignored. (e.g. it's in IGNORE_LIST)\n return null;\n }\n\n private findTrackDirByFilePathRecursively(filePath: string): string | null {\n if (this.trackDirs[filePath]) return filePath;\n const parentDir = dirname(filePath);\n if (parentDir === filePath) return null;\n return this.findTrackDirByFilePathRecursively(parentDir);\n }\n\n private async createWatcher(pathsToWatch: string[]) {\n this.fsWatcher = chokidar.watch(pathsToWatch, {\n ignoreInitial: true,\n // Using the function way since the regular way not working as expected\n // It might be solved when upgrading to chokidar > 3.0.0\n // See:\n // https://github.com/paulmillr/chokidar/issues/773\n // https://github.com/paulmillr/chokidar/issues/492\n // https://github.com/paulmillr/chokidar/issues/724\n ignored: (path) => {\n // Ignore package.json temporarily since it cerates endless loop since it's re-written after each build\n if (path.includes(`${sep}node_modules${sep}`) || path.includes(`${sep}package.json`)) {\n return true;\n }\n return false;\n },\n persistent: true,\n useFsEvents: false,\n });\n }\n\n async setTrackDirs() {\n this.trackDirs = {};\n const componentsFromBitMap = this.consumer.bitMap.getAllComponents([\n COMPONENT_ORIGINS.AUTHORED,\n COMPONENT_ORIGINS.IMPORTED,\n ]);\n await Promise.all(\n componentsFromBitMap.map(async (componentMap) => {\n const bitId = componentMap.id;\n const trackDir = componentMap.getTrackDir();\n if (!trackDir) throw new Error(`${bitId.toString()} has no rootDir, which is invalid in Harmony`);\n const componentId = await this.workspace.resolveComponentId(bitId);\n this.trackDirs[trackDir] = componentId;\n })\n );\n }\n\n private async getPathsToWatch(): Promise<PathOsBasedAbsolute[]> {\n await this.setTrackDirs();\n const paths = [...Object.keys(this.trackDirs), BIT_MAP];\n const pathsAbsolute = paths.map((dir) => this.consumer.toAbsolutePath(dir));\n return pathsAbsolute;\n }\n}\n"]}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -27,9 +27,9 @@ import type { ComponentLog } from '@teambit/legacy/dist/scope/models/model-compo
|
|
|
27
27
|
import { CompilationInitiator } from '@teambit/compiler';
|
|
28
28
|
import { OnComponentAdd, OnComponentChange, OnComponentEventResult, OnComponentLoad, OnComponentRemove } from './on-component-events';
|
|
29
29
|
import { WorkspaceExtConfig } from './types';
|
|
30
|
-
import { Watcher } from './watch/watcher';
|
|
30
|
+
import { Watcher, WatchOptions } from './watch/watcher';
|
|
31
31
|
import { ComponentStatus } from './workspace-component/component-status';
|
|
32
|
-
import { OnComponentAddSlot, OnComponentChangeSlot, OnComponentLoadSlot, OnComponentRemoveSlot } from './workspace.provider';
|
|
32
|
+
import { OnComponentAddSlot, OnComponentChangeSlot, OnComponentLoadSlot, OnComponentRemoveSlot, OnPreWatch, OnPreWatchSlot } from './workspace.provider';
|
|
33
33
|
import { WorkspaceComponentLoader } from './workspace-component/workspace-component-loader';
|
|
34
34
|
export declare type EjectConfResult = {
|
|
35
35
|
configPath: string;
|
|
@@ -80,12 +80,13 @@ export declare class Workspace implements ComponentFactory {
|
|
|
80
80
|
private envs;
|
|
81
81
|
private onComponentAddSlot;
|
|
82
82
|
private onComponentRemoveSlot;
|
|
83
|
+
private onPreWatchSlot;
|
|
83
84
|
private graphql;
|
|
84
85
|
priority: boolean;
|
|
85
86
|
owner?: string;
|
|
86
87
|
componentsScopeDirsMap: ComponentScopeDirMap;
|
|
87
88
|
componentLoader: WorkspaceComponentLoader;
|
|
88
|
-
constructor(pubsub: PubsubMain, config: WorkspaceExtConfig, consumer: Consumer, scope: ScopeMain, componentAspect: ComponentMain, isolator: IsolatorMain, dependencyResolver: DependencyResolverMain, variants: VariantsMain, aspectLoader: AspectLoaderMain, logger: Logger, componentList: ComponentsList, harmony: Harmony, onComponentLoadSlot: OnComponentLoadSlot, onComponentChangeSlot: OnComponentChangeSlot, envs: EnvsMain, onComponentAddSlot: OnComponentAddSlot, onComponentRemoveSlot: OnComponentRemoveSlot, graphql: GraphqlMain);
|
|
89
|
+
constructor(pubsub: PubsubMain, config: WorkspaceExtConfig, consumer: Consumer, scope: ScopeMain, componentAspect: ComponentMain, isolator: IsolatorMain, dependencyResolver: DependencyResolverMain, variants: VariantsMain, aspectLoader: AspectLoaderMain, logger: Logger, componentList: ComponentsList, harmony: Harmony, onComponentLoadSlot: OnComponentLoadSlot, onComponentChangeSlot: OnComponentChangeSlot, envs: EnvsMain, onComponentAddSlot: OnComponentAddSlot, onComponentRemoveSlot: OnComponentRemoveSlot, onPreWatchSlot: OnPreWatchSlot, graphql: GraphqlMain);
|
|
89
90
|
private validateConfig;
|
|
90
91
|
readonly watcher: Watcher;
|
|
91
92
|
get path(): string;
|
|
@@ -95,6 +96,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
95
96
|
registerOnComponentChange(onComponentChangeFunc: OnComponentChange): this;
|
|
96
97
|
registerOnComponentAdd(onComponentAddFunc: OnComponentAdd): this;
|
|
97
98
|
registerOnComponentRemove(onComponentRemoveFunc: OnComponentRemove): this;
|
|
99
|
+
registerOnPreWatch(onPreWatchFunc: OnPreWatch): this;
|
|
98
100
|
get name(): string;
|
|
99
101
|
get icon(): string;
|
|
100
102
|
hasModifiedDependencies(component: Component): Promise<boolean>;
|
|
@@ -122,7 +124,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
122
124
|
getEnvSystemDescriptor(component: Component): Promise<AspectData>;
|
|
123
125
|
clearCache(): void;
|
|
124
126
|
clearComponentCache(id: ComponentID): void;
|
|
125
|
-
triggerOnComponentChange(id: ComponentID, initiator?: CompilationInitiator): Promise<OnComponentEventResult[]>;
|
|
127
|
+
triggerOnComponentChange(id: ComponentID, files: string[], initiator?: CompilationInitiator): Promise<OnComponentEventResult[]>;
|
|
126
128
|
triggerOnComponentAdd(id: ComponentID): Promise<OnComponentEventResult[]>;
|
|
127
129
|
triggerOnComponentRemove(id: ComponentID): Promise<OnComponentEventResult[]>;
|
|
128
130
|
getState(id: ComponentID, hash: string): Promise<import("@teambit/component").State>;
|
|
@@ -142,6 +144,9 @@ export declare class Workspace implements ComponentFactory {
|
|
|
142
144
|
componentDir(componentId: ComponentID, bitMapOptions?: GetBitMapComponentOptions, options?: {
|
|
143
145
|
relative: boolean;
|
|
144
146
|
}): PathOsBased;
|
|
147
|
+
componentPackageDir(component: Component, options?: {
|
|
148
|
+
relative: boolean;
|
|
149
|
+
}): string;
|
|
145
150
|
private componentDirFromLegacyId;
|
|
146
151
|
componentDirToAbsolute(relativeComponentDir: PathOsBasedRelative): PathOsBasedAbsolute;
|
|
147
152
|
componentDefaultScope(componentId: ComponentID): Promise<string | undefined>;
|
|
@@ -149,6 +154,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
149
154
|
get defaultScope(): string;
|
|
150
155
|
private componentDefaultScopeFromComponentDirAndNameWithoutConfigFile;
|
|
151
156
|
componentExtensions(componentId: ComponentID, componentFromScope?: Component): Promise<ExtensionDataList>;
|
|
157
|
+
triggerOnPreWatch(componentIds: ComponentID[], watchOpts: WatchOptions): Promise<void>;
|
|
152
158
|
private resolveExtensionListIds;
|
|
153
159
|
private isVendorComponentByComponentDir;
|
|
154
160
|
private componentConfigFile;
|
package/dist/workspace.js
CHANGED
|
@@ -409,7 +409,7 @@ class Workspace {
|
|
|
409
409
|
/**
|
|
410
410
|
* on component add slot.
|
|
411
411
|
*/
|
|
412
|
-
onComponentAddSlot, onComponentRemoveSlot, graphql) {
|
|
412
|
+
onComponentAddSlot, onComponentRemoveSlot, onPreWatchSlot, graphql) {
|
|
413
413
|
var _this$config;
|
|
414
414
|
|
|
415
415
|
this.pubsub = pubsub;
|
|
@@ -429,6 +429,7 @@ class Workspace {
|
|
|
429
429
|
this.envs = envs;
|
|
430
430
|
this.onComponentAddSlot = onComponentAddSlot;
|
|
431
431
|
this.onComponentRemoveSlot = onComponentRemoveSlot;
|
|
432
|
+
this.onPreWatchSlot = onPreWatchSlot;
|
|
432
433
|
this.graphql = graphql;
|
|
433
434
|
(0, _defineProperty2().default)(this, "priority", true);
|
|
434
435
|
(0, _defineProperty2().default)(this, "owner", void 0);
|
|
@@ -488,6 +489,11 @@ class Workspace {
|
|
|
488
489
|
this.onComponentRemoveSlot.register(onComponentRemoveFunc);
|
|
489
490
|
return this;
|
|
490
491
|
}
|
|
492
|
+
|
|
493
|
+
registerOnPreWatch(onPreWatchFunc) {
|
|
494
|
+
this.onPreWatchSlot.register(onPreWatchFunc);
|
|
495
|
+
return this;
|
|
496
|
+
}
|
|
491
497
|
/**
|
|
492
498
|
* name of the workspace as configured in either `workspace.json`.
|
|
493
499
|
* defaults to workspace root directory name.
|
|
@@ -717,7 +723,7 @@ class Workspace {
|
|
|
717
723
|
this.componentList = new (_componentsList().default)(this.consumer);
|
|
718
724
|
}
|
|
719
725
|
|
|
720
|
-
async triggerOnComponentChange(id, initiator) {
|
|
726
|
+
async triggerOnComponentChange(id, files, initiator) {
|
|
721
727
|
const component = await this.get(id); // if a new file was added, upon component-load, its .bitmap entry is updated to include the
|
|
722
728
|
// new file. write these changes to the .bitmap file so then other processes have access to
|
|
723
729
|
// this new file. If the .bitmap wasn't change, it won't do anything.
|
|
@@ -727,7 +733,7 @@ class Workspace {
|
|
|
727
733
|
|
|
728
734
|
const results = [];
|
|
729
735
|
await (0, _pMapSeries().default)(onChangeEntries, async ([extension, onChangeFunc]) => {
|
|
730
|
-
const onChangeResult = await onChangeFunc(component, initiator);
|
|
736
|
+
const onChangeResult = await onChangeFunc(component, files, initiator);
|
|
731
737
|
results.push({
|
|
732
738
|
extensionId: extension,
|
|
733
739
|
results: onChangeResult
|
|
@@ -747,8 +753,9 @@ class Workspace {
|
|
|
747
753
|
const onAddEntries = this.onComponentAddSlot.toArray(); // e.g. [ [ 'teambit.bit/compiler', [Function: bound onComponentChange] ] ]
|
|
748
754
|
|
|
749
755
|
const results = [];
|
|
756
|
+
const files = component.state.filesystem.files.map(file => file.path);
|
|
750
757
|
await (0, _pMapSeries().default)(onAddEntries, async ([extension, onAddFunc]) => {
|
|
751
|
-
const onAddResult = await onAddFunc(component);
|
|
758
|
+
const onAddResult = await onAddFunc(component, files);
|
|
752
759
|
results.push({
|
|
753
760
|
extensionId: extension,
|
|
754
761
|
results: onAddResult
|
|
@@ -947,6 +954,23 @@ class Workspace {
|
|
|
947
954
|
}) {
|
|
948
955
|
return this.componentDirFromLegacyId(componentId._legacy, bitMapOptions, options);
|
|
949
956
|
}
|
|
957
|
+
/**
|
|
958
|
+
* component's files in the workspace are symlinked to the node_modules, and a package.json file is generated on that
|
|
959
|
+
* package directory to simulate a valid node package.
|
|
960
|
+
* @returns the package directory inside the node_module.
|
|
961
|
+
* by default the absolute path, unless `options.relative` was set
|
|
962
|
+
*/
|
|
963
|
+
|
|
964
|
+
|
|
965
|
+
componentPackageDir(component, options = {
|
|
966
|
+
relative: false
|
|
967
|
+
}) {
|
|
968
|
+
const packageName = (0, _componentIdToPackageName().default)(component.state._consumer);
|
|
969
|
+
|
|
970
|
+
const packageDir = _path().default.join('node_modules', packageName);
|
|
971
|
+
|
|
972
|
+
return options.relative ? packageDir : this.consumer.toAbsolutePath(packageDir);
|
|
973
|
+
}
|
|
950
974
|
|
|
951
975
|
componentDirFromLegacyId(bitId, bitMapOptions, options = {
|
|
952
976
|
relative: false
|
|
@@ -1101,6 +1125,14 @@ class Workspace {
|
|
|
1101
1125
|
|
|
1102
1126
|
return mergedExtensions;
|
|
1103
1127
|
}
|
|
1128
|
+
|
|
1129
|
+
async triggerOnPreWatch(componentIds, watchOpts) {
|
|
1130
|
+
const components = await this.getMany(componentIds);
|
|
1131
|
+
const preWatchFunctions = this.onPreWatchSlot.values();
|
|
1132
|
+
await (0, _pMapSeries().default)(preWatchFunctions, async func => {
|
|
1133
|
+
await func(components, watchOpts);
|
|
1134
|
+
});
|
|
1135
|
+
}
|
|
1104
1136
|
/**
|
|
1105
1137
|
* This will mutate the entries with extensionId prop to have resolved legacy id
|
|
1106
1138
|
* This should be worked on the extension data list not the new aspect list
|