@atlaspack/fs 2.15.6 → 2.15.8

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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @atlaspack/fs
2
2
 
3
+ ## 2.15.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`ef3d622`](https://github.com/atlassian-labs/atlaspack/commit/ef3d6228f4e006702198a19c61e051d194d325cb), [`26aa9c5`](https://github.com/atlassian-labs/atlaspack/commit/26aa9c599d2be45ce1438a74c5fa22f39b9b554b), [`0501255`](https://github.com/atlassian-labs/atlaspack/commit/05012550da35b05ce7d356a8cc29311e7f9afdca)]:
8
+ - @atlaspack/workers@2.14.13
9
+ - @atlaspack/logger@2.14.11
10
+ - @atlaspack/feature-flags@2.18.1
11
+ - @atlaspack/utils@2.15.1
12
+ - @atlaspack/types-internal@2.14.11
13
+
14
+ ## 2.15.7
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [[`10fbcfb`](https://github.com/atlassian-labs/atlaspack/commit/10fbcfbfa49c7a83da5d7c40983e36e87f524a75), [`85c52d3`](https://github.com/atlassian-labs/atlaspack/commit/85c52d3f7717b3c84a118d18ab98cfbfd71dcbd2), [`e39c6cf`](https://github.com/atlassian-labs/atlaspack/commit/e39c6cf05f7e95ce5420dbcea66f401b1cbd397c)]:
19
+ - @atlaspack/feature-flags@2.18.0
20
+ - @atlaspack/utils@2.15.0
21
+ - @atlaspack/types-internal@2.14.10
22
+ - @atlaspack/workers@2.14.12
23
+
3
24
  ## 2.15.6
4
25
 
5
26
  ### Patch Changes
package/lib/browser.js CHANGED
@@ -62,7 +62,7 @@ $parcel$export($ce546cd73efa5b9e$exports, "File", () => $ce546cd73efa5b9e$export
62
62
 
63
63
 
64
64
  var $a29f1902b85e3e69$exports = {};
65
- $a29f1902b85e3e69$exports = JSON.parse("{\"name\":\"@atlaspack/fs\",\"version\":\"2.15.6\",\"description\":\"Blazing fast, zero configuration web application bundler\",\"license\":\"(MIT OR Apache-2.0)\",\"publishConfig\":{\"access\":\"public\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/atlassian-labs/atlaspack.git\"},\"main\":\"lib/index.js\",\"source\":\"src/index.js\",\"types\":\"index.d.ts\",\"engines\":{\"node\":\">= 16.0.0\"},\"targets\":{\"types\":false,\"main\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}},\"browser\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}}},\"scripts\":{\"build-ts\":\"mkdir -p lib && flow-to-ts src/types.js > lib/types.d.ts\",\"check-ts\":\"tsc --noEmit index.d.ts\"},\"dependencies\":{\"@atlaspack/build-cache\":\"2.13.3\",\"@atlaspack/feature-flags\":\"2.17.0\",\"@atlaspack/logger\":\"2.14.10\",\"@atlaspack/rust\":\"3.3.5\",\"@atlaspack/types-internal\":\"2.14.9\",\"@atlaspack/utils\":\"2.14.11\",\"@parcel/watcher\":\"^2.0.7\",\"@atlaspack/workers\":\"2.14.11\"},\"devDependencies\":{\"@atlaspack/watcher-watchman-js\":\"2.14.11\",\"graceful-fs\":\"^4.2.4\",\"ncp\":\"^2.0.0\",\"nullthrows\":\"^1.1.1\",\"utility-types\":\"^3.10.0\"},\"browser\":{\"@atlaspack/fs\":\"./lib/browser.js\",\"./src/NodeFS.js\":\"./src/NodeFS.browser.js\"},\"type\":\"commonjs\"}");
65
+ $a29f1902b85e3e69$exports = JSON.parse("{\"name\":\"@atlaspack/fs\",\"version\":\"2.15.8\",\"description\":\"Blazing fast, zero configuration web application bundler\",\"license\":\"(MIT OR Apache-2.0)\",\"publishConfig\":{\"access\":\"public\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/atlassian-labs/atlaspack.git\"},\"main\":\"lib/index.js\",\"source\":\"src/index.js\",\"types\":\"index.d.ts\",\"engines\":{\"node\":\">= 16.0.0\"},\"targets\":{\"types\":false,\"main\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}},\"browser\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}}},\"scripts\":{\"build-ts\":\"mkdir -p lib && flow-to-ts src/types.js > lib/types.d.ts\",\"check-ts\":\"tsc --noEmit index.d.ts\"},\"dependencies\":{\"@atlaspack/build-cache\":\"2.13.3\",\"@atlaspack/feature-flags\":\"2.18.1\",\"@atlaspack/logger\":\"2.14.11\",\"@atlaspack/rust\":\"3.3.5\",\"@atlaspack/types-internal\":\"2.14.11\",\"@atlaspack/utils\":\"2.15.1\",\"@parcel/watcher\":\"^2.0.7\",\"@atlaspack/workers\":\"2.14.13\"},\"devDependencies\":{\"@atlaspack/watcher-watchman-js\":\"2.14.13\",\"graceful-fs\":\"^4.2.4\",\"ncp\":\"^2.0.0\",\"nullthrows\":\"^1.1.1\",\"utility-types\":\"^3.10.0\"},\"browser\":{\"@atlaspack/fs\":\"./lib/browser.js\",\"./src/NodeFS.js\":\"./src/NodeFS.browser.js\"},\"type\":\"commonjs\"}");
66
66
 
67
67
 
68
68
 
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/core/fs/src/index.js","packages/core/fs/src/NodeFS.browser.js","packages/core/fs/src/MemoryFS.js","packages/core/fs/package.json","node_modules/nullthrows/nullthrows.js","packages/core/fs/src/find.js","packages/core/fs/src/OverlayFS.js","packages/core/fs/src/NodeVCSAwareFS.js"],"sourcesContent":["// @flow strict-local\nimport type {\n FilePath,\n FileSystem,\n FileOptions,\n} from '@atlaspack/types-internal';\nimport type {Readable, Writable} from 'stream';\n\nimport path from 'path';\nimport stream from 'stream';\nimport {promisify} from 'util';\n\nexport * from './NodeFS';\nexport * from './MemoryFS';\nexport * from './OverlayFS';\nexport * from './NodeVCSAwareFS';\n\nexport type {FileSystem, FileOptions};\n\nconst pipeline: (Readable, Writable) => Promise<void> = promisify(\n stream.pipeline,\n);\n\n// Recursively copies a directory from the sourceFS to the destinationFS\nexport async function ncp(\n sourceFS: FileSystem,\n source: FilePath,\n destinationFS: FileSystem,\n destination: FilePath,\n filter?: (filePath: FilePath) => boolean,\n) {\n await destinationFS.mkdirp(destination);\n let files = await sourceFS.readdir(source);\n for (let file of files) {\n if (filter && !filter(file)) {\n continue;\n }\n\n let sourcePath = path.join(source, file);\n let destPath = path.join(destination, file);\n let stats = await sourceFS.stat(sourcePath);\n if (stats.isFile()) {\n await pipeline(\n sourceFS.createReadStream(sourcePath),\n destinationFS.createWriteStream(destPath),\n );\n } else if (stats.isDirectory()) {\n await ncp(sourceFS, sourcePath, destinationFS, destPath, filter);\n }\n }\n}\n","// @flow\nimport type {FileSystem} from '@atlaspack/types-internal';\n\n// $FlowFixMe[prop-missing] handled by the throwing constructor\nexport class NodeFS implements FileSystem {\n constructor() {\n throw new Error(\"NodeFS isn't available in the browser\");\n }\n}\n","// @flow\n\nimport type {\n FilePath,\n FileSystem,\n FileOptions,\n ReaddirOptions,\n Encoding,\n} from '@atlaspack/types-internal';\nimport type {\n Event,\n Options as WatcherOptions,\n AsyncSubscription,\n} from '@parcel/watcher';\n\nimport path from 'path';\nimport {Readable, Writable} from 'stream';\nimport {registerSerializableClass} from '@atlaspack/build-cache';\nimport {SharedBuffer} from '@atlaspack/utils';\nimport packageJSON from '../package.json';\nimport WorkerFarm, {Handle} from '@atlaspack/workers';\nimport nullthrows from 'nullthrows';\nimport EventEmitter from 'events';\nimport {findAncestorFile, findNodeModule, findFirstFile} from './find';\n\nconst instances: Map<number, MemoryFS> = new Map();\nlet id = 0;\n\ntype HandleFunction = (...args: Array<any>) => any;\ntype SerializedMemoryFS = {\n id: number,\n handle: any,\n dirs: Map<FilePath, Directory>,\n files: Map<FilePath, File>,\n symlinks: Map<FilePath, FilePath>,\n ...\n};\n\ntype WorkerEvent = {|\n type: 'writeFile' | 'unlink' | 'mkdir' | 'symlink',\n path: FilePath,\n entry?: Entry,\n target?: FilePath,\n|};\n\ntype ResolveFunction = () => mixed;\n\nexport class MemoryFS implements FileSystem {\n dirs: Map<FilePath, Directory>;\n files: Map<FilePath, File>;\n symlinks: Map<FilePath, FilePath>;\n watchers: Map<FilePath, Set<Watcher>>;\n events: Array<Event>;\n id: number;\n handle: Handle;\n farm: WorkerFarm;\n _cwd: FilePath;\n _eventQueue: Array<Event>;\n _watcherTimer: TimeoutID;\n _numWorkerInstances: number = 0;\n _workerHandles: Array<Handle>;\n _workerRegisterResolves: Array<ResolveFunction> = [];\n _emitter: EventEmitter = new EventEmitter();\n\n constructor(workerFarm: WorkerFarm) {\n this.farm = workerFarm;\n this._cwd = path.resolve(path.sep);\n this.dirs = new Map([[this._cwd, new Directory()]]);\n this.files = new Map();\n this.symlinks = new Map();\n this.watchers = new Map();\n this.events = [];\n this.id = id++;\n this._workerHandles = [];\n this._eventQueue = [];\n instances.set(this.id, this);\n this._emitter.on('allWorkersRegistered', () => {\n for (let resolve of this._workerRegisterResolves) {\n resolve();\n }\n this._workerRegisterResolves = [];\n });\n }\n\n static deserialize(opts: SerializedMemoryFS): MemoryFS | WorkerFS {\n let existing = instances.get(opts.id);\n if (existing != null) {\n // Correct the count of worker instances since serialization assumes a new instance is created\n WorkerFarm.getWorkerApi().runHandle(opts.handle, [\n 'decrementWorkerInstance',\n [],\n ]);\n return existing;\n }\n\n let fs = new WorkerFS(opts.id, nullthrows(opts.handle));\n fs.dirs = opts.dirs;\n fs.files = opts.files;\n fs.symlinks = opts.symlinks;\n return fs;\n }\n\n serialize(): SerializedMemoryFS {\n if (!this.handle) {\n this.handle = this.farm.createReverseHandle(\n (fn: string, args: Array<mixed>) => {\n // $FlowFixMe\n return this[fn](...args);\n },\n );\n }\n\n // If a worker instance already exists, it will decrement this number\n this._numWorkerInstances++;\n\n return {\n $$raw: false,\n id: this.id,\n handle: this.handle,\n dirs: this.dirs,\n files: this.files,\n symlinks: this.symlinks,\n };\n }\n\n decrementWorkerInstance() {\n this._numWorkerInstances--;\n if (this._numWorkerInstances === this._workerHandles.length) {\n this._emitter.emit('allWorkersRegistered');\n }\n }\n\n cwd(): FilePath {\n return this._cwd;\n }\n\n chdir(dir: FilePath) {\n this._cwd = dir;\n }\n\n _normalizePath(filePath: FilePath, realpath: boolean = true): FilePath {\n filePath = path.normalize(filePath);\n if (!filePath.startsWith(this.cwd())) {\n filePath = path.resolve(this.cwd(), filePath);\n }\n\n // get realpath by following symlinks\n if (realpath) {\n let {root, dir, base} = path.parse(filePath);\n let parts = dir.slice(root.length).split(path.sep).concat(base);\n let res = root;\n for (let part of parts) {\n res = path.join(res, part);\n let symlink = this.symlinks.get(res);\n if (symlink) {\n res = symlink;\n }\n }\n\n return res;\n }\n\n return filePath;\n }\n\n async writeFile(\n filePath: FilePath,\n contents: Buffer | string,\n options?: ?FileOptions,\n ) {\n filePath = this._normalizePath(filePath);\n if (this.dirs.has(filePath)) {\n throw new FSError('EISDIR', filePath, 'is a directory');\n }\n\n let dir = path.dirname(filePath);\n if (!this.dirs.has(dir)) {\n throw new FSError('ENOENT', dir, 'does not exist');\n }\n\n let buffer = makeShared(contents);\n let file = this.files.get(filePath);\n let mode = (options && options.mode) || 0o666;\n if (file) {\n file.write(buffer, mode);\n this.files.set(filePath, file);\n } else {\n this.files.set(filePath, new File(buffer, mode));\n }\n\n await this._sendWorkerEvent({\n type: 'writeFile',\n path: filePath,\n entry: this.files.get(filePath),\n });\n\n this._triggerEvent({\n type: file ? 'update' : 'create',\n path: filePath,\n });\n }\n\n // eslint-disable-next-line require-await\n async readFile(filePath: FilePath, encoding?: Encoding): Promise<any> {\n return this.readFileSync(filePath, encoding);\n }\n\n readFileSync(filePath: FilePath, encoding?: Encoding): any {\n filePath = this._normalizePath(filePath);\n let file = this.files.get(filePath);\n if (file == null) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n\n let buffer = file.read();\n if (encoding) {\n return buffer.toString(encoding);\n }\n\n return buffer;\n }\n\n async copyFile(source: FilePath, destination: FilePath) {\n let contents = await this.readFile(source);\n await this.writeFile(destination, contents);\n }\n\n statSync(filePath: FilePath): Stat {\n filePath = this._normalizePath(filePath);\n\n let dir = this.dirs.get(filePath);\n if (dir) {\n return dir.stat();\n }\n\n let file = this.files.get(filePath);\n if (file == null) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n\n return file.stat();\n }\n\n // eslint-disable-next-line require-await\n async stat(filePath: FilePath): Promise<Stat> {\n return this.statSync(filePath);\n }\n\n readdirSync(dir: FilePath, opts?: ReaddirOptions): any {\n dir = this._normalizePath(dir);\n if (!this.dirs.has(dir)) {\n throw new FSError('ENOENT', dir, 'does not exist');\n }\n\n if (!dir.endsWith(path.sep)) {\n dir += path.sep;\n }\n\n let res = [];\n for (let [filePath, entry] of this.dirs) {\n if (filePath === dir) {\n continue;\n }\n if (\n filePath.startsWith(dir) &&\n filePath.indexOf(path.sep, dir.length) === -1\n ) {\n let name = filePath.slice(dir.length);\n if (opts?.withFileTypes) {\n res.push(new Dirent(name, entry));\n } else {\n res.push(name);\n }\n }\n }\n\n for (let [filePath, entry] of this.files) {\n if (\n filePath.startsWith(dir) &&\n filePath.indexOf(path.sep, dir.length) === -1\n ) {\n let name = filePath.slice(dir.length);\n if (opts?.withFileTypes) {\n res.push(new Dirent(name, entry));\n } else {\n res.push(name);\n }\n }\n }\n\n for (let [from] of this.symlinks) {\n if (from.startsWith(dir) && from.indexOf(path.sep, dir.length) === -1) {\n let name = from.slice(dir.length);\n if (opts?.withFileTypes) {\n res.push(new Dirent(name, {mode: S_IFLNK}));\n } else {\n res.push(name);\n }\n }\n }\n\n return res;\n }\n\n // eslint-disable-next-line require-await\n async readdir(dir: FilePath, opts?: ReaddirOptions): Promise<any> {\n return this.readdirSync(dir, opts);\n }\n\n async unlink(filePath: FilePath): Promise<void> {\n filePath = this._normalizePath(filePath);\n if (!this.files.has(filePath) && !this.dirs.has(filePath)) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n\n this.files.delete(filePath);\n this.dirs.delete(filePath);\n this.watchers.delete(filePath);\n\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n\n return Promise.resolve();\n }\n\n async mkdirp(dir: FilePath): Promise<void> {\n dir = this._normalizePath(dir);\n if (this.dirs.has(dir)) {\n return Promise.resolve();\n }\n\n if (this.files.has(dir)) {\n throw new FSError('ENOENT', dir, 'is not a directory');\n }\n\n let root = path.parse(dir).root;\n while (dir !== root) {\n if (this.dirs.has(dir)) {\n break;\n }\n\n this.dirs.set(dir, new Directory());\n await this._sendWorkerEvent({\n type: 'mkdir',\n path: dir,\n });\n\n this._triggerEvent({\n type: 'create',\n path: dir,\n });\n\n dir = path.dirname(dir);\n }\n\n return Promise.resolve();\n }\n\n async rimraf(filePath: FilePath): Promise<void> {\n filePath = this._normalizePath(filePath);\n\n if (this.dirs.has(filePath)) {\n let dir = filePath + path.sep;\n for (let filePath of this.files.keys()) {\n if (filePath.startsWith(dir)) {\n this.files.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n }\n }\n\n for (let dirPath of this.dirs.keys()) {\n if (dirPath.startsWith(dir)) {\n this.dirs.delete(dirPath);\n this.watchers.delete(dirPath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: dirPath,\n });\n }\n }\n\n for (let filePath of this.symlinks.keys()) {\n if (filePath.startsWith(dir)) {\n this.symlinks.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n }\n }\n\n this.dirs.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n } else if (this.files.has(filePath)) {\n this.files.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n }\n\n return Promise.resolve();\n }\n\n async ncp(source: FilePath, destination: FilePath) {\n source = this._normalizePath(source);\n\n if (this.dirs.has(source)) {\n if (!this.dirs.has(destination)) {\n this.dirs.set(destination, new Directory());\n await this._sendWorkerEvent({\n type: 'mkdir',\n path: destination,\n });\n\n this._triggerEvent({\n type: 'create',\n path: destination,\n });\n }\n\n let dir = source + path.sep;\n for (let dirPath of this.dirs.keys()) {\n if (dirPath.startsWith(dir)) {\n let destName = path.join(destination, dirPath.slice(dir.length));\n if (!this.dirs.has(destName)) {\n this.dirs.set(destName, new Directory());\n await this._sendWorkerEvent({\n type: 'mkdir',\n path: destination,\n });\n this._triggerEvent({\n type: 'create',\n path: destName,\n });\n }\n }\n }\n\n for (let [filePath, file] of this.files) {\n if (filePath.startsWith(dir)) {\n let destName = path.join(destination, filePath.slice(dir.length));\n let exists = this.files.has(destName);\n this.files.set(destName, file);\n await this._sendWorkerEvent({\n type: 'writeFile',\n path: destName,\n entry: file,\n });\n\n this._triggerEvent({\n type: exists ? 'update' : 'create',\n path: destName,\n });\n }\n }\n } else {\n await this.copyFile(source, destination);\n }\n }\n\n createReadStream(filePath: FilePath): ReadStream {\n return new ReadStream(this, filePath);\n }\n\n createWriteStream(filePath: FilePath, options: ?FileOptions): WriteStream {\n this.mkdirp(path.dirname(filePath));\n return new WriteStream(this, filePath, options);\n }\n\n realpathSync(filePath: FilePath): FilePath {\n return this._normalizePath(filePath);\n }\n\n // eslint-disable-next-line require-await\n async realpath(filePath: FilePath): Promise<FilePath> {\n return this.realpathSync(filePath);\n }\n\n async symlink(target: FilePath, path: FilePath) {\n target = this._normalizePath(target);\n path = this._normalizePath(path);\n this.symlinks.set(path, target);\n await this._sendWorkerEvent({\n type: 'symlink',\n path,\n target,\n });\n }\n\n existsSync(filePath: FilePath): boolean {\n filePath = this._normalizePath(filePath);\n return this.files.has(filePath) || this.dirs.has(filePath);\n }\n\n // eslint-disable-next-line require-await\n async exists(filePath: FilePath): Promise<boolean> {\n return this.existsSync(filePath);\n }\n\n _triggerEvent(event: Event) {\n this.events.push(event);\n if (this.watchers.size === 0) {\n return;\n }\n\n // Batch events\n this._eventQueue.push(event);\n clearTimeout(this._watcherTimer);\n\n this._watcherTimer = setTimeout(() => {\n let events = this._eventQueue;\n this._eventQueue = [];\n\n for (let [dir, watchers] of this.watchers) {\n if (!dir.endsWith(path.sep)) {\n dir += path.sep;\n }\n\n const relevantEvents = events.filter((event) =>\n event.path.startsWith(dir),\n );\n if (relevantEvents.length > 0) {\n for (let watcher of watchers) {\n watcher.trigger(relevantEvents);\n }\n }\n }\n }, 50);\n }\n\n _registerWorker(handle: Handle) {\n this._workerHandles.push(handle);\n if (this._numWorkerInstances === this._workerHandles.length) {\n this._emitter.emit('allWorkersRegistered');\n }\n }\n\n async _sendWorkerEvent(event: WorkerEvent) {\n // Wait for worker instances to register their handles\n while (this._workerHandles.length < this._numWorkerInstances) {\n await new Promise((resolve) =>\n this._workerRegisterResolves.push(resolve),\n );\n }\n\n await Promise.all(\n this._workerHandles.map((workerHandle) =>\n this.farm.workerApi.runHandle(workerHandle, [event]),\n ),\n );\n }\n\n watch(\n dir: FilePath,\n fn: (err: ?Error, events: Array<Event>) => mixed,\n opts: WatcherOptions,\n ): Promise<AsyncSubscription> {\n dir = this._normalizePath(dir);\n let watcher = new Watcher(fn, opts);\n let watchers = this.watchers.get(dir);\n if (!watchers) {\n watchers = new Set();\n this.watchers.set(dir, watchers);\n }\n\n watchers.add(watcher);\n\n return Promise.resolve({\n unsubscribe: () => {\n watchers = nullthrows(watchers);\n watchers.delete(watcher);\n\n if (watchers.size === 0) {\n this.watchers.delete(dir);\n }\n\n return Promise.resolve();\n },\n });\n }\n\n async getEventsSince(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<Array<Event>> {\n let contents = await this.readFile(snapshot, 'utf8');\n let len = Number(contents);\n let events = this.events.slice(len);\n let ignore = opts.ignore;\n if (ignore) {\n events = events.filter(\n (event) => !ignore.some((i) => event.path.startsWith(i + path.sep)),\n );\n }\n\n return events;\n }\n\n async writeSnapshot(dir: FilePath, snapshot: FilePath): Promise<void> {\n await this.mkdirp(path.dirname(snapshot));\n await this.writeFile(snapshot, '' + this.events.length);\n }\n\n findAncestorFile(\n fileNames: Array<string>,\n fromDir: FilePath,\n root: FilePath,\n ): ?FilePath {\n return findAncestorFile(this, fileNames, fromDir, root);\n }\n\n findNodeModule(moduleName: string, fromDir: FilePath): ?FilePath {\n return findNodeModule(this, moduleName, fromDir);\n }\n\n findFirstFile(filePaths: Array<FilePath>): ?FilePath {\n return findFirstFile(this, filePaths);\n }\n}\n\nclass Watcher {\n fn: (err: ?Error, events: Array<Event>) => mixed;\n options: WatcherOptions;\n\n constructor(\n fn: (err: ?Error, events: Array<Event>) => mixed,\n options: WatcherOptions,\n ) {\n this.fn = fn;\n this.options = options;\n }\n\n trigger(events: Array<Event>) {\n let ignore = this.options.ignore;\n if (ignore) {\n events = events.filter(\n (event) => !ignore.some((i) => event.path.startsWith(i + path.sep)),\n );\n }\n\n if (events.length > 0) {\n this.fn(null, events);\n }\n }\n}\n\nexport class FSError extends Error {\n code: string;\n path: FilePath;\n constructor(code: string, path: FilePath, message: string) {\n super(`${code}: ${path} ${message}`);\n this.name = 'FSError';\n this.code = code;\n this.path = path;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\n\nclass ReadStream extends Readable {\n fs: FileSystem;\n filePath: FilePath;\n reading: boolean;\n bytesRead: number;\n constructor(fs: FileSystem, filePath: FilePath) {\n super();\n this.fs = fs;\n this.filePath = filePath;\n this.reading = false;\n this.bytesRead = 0;\n }\n\n _read() {\n if (this.reading) {\n return;\n }\n\n this.reading = true;\n this.fs.readFile(this.filePath).then(\n (res) => {\n this.bytesRead += res.byteLength;\n this.push(res);\n this.push(null);\n },\n (err) => {\n this.emit('error', err);\n },\n );\n }\n}\n\nclass WriteStream extends Writable {\n fs: FileSystem;\n filePath: FilePath;\n options: ?FileOptions;\n buffer: Buffer;\n\n constructor(fs: FileSystem, filePath: FilePath, options: ?FileOptions) {\n super({emitClose: true, autoDestroy: true});\n this.fs = fs;\n this.filePath = filePath;\n this.options = options;\n this.buffer = Buffer.alloc(0);\n }\n\n _write(\n chunk: Buffer | string,\n encoding: any,\n callback: (error?: Error) => void,\n ) {\n let c = typeof chunk === 'string' ? Buffer.from(chunk, encoding) : chunk;\n this.buffer = Buffer.concat([this.buffer, c]);\n callback();\n }\n\n _final(callback: (error?: Error) => void) {\n this.fs\n .writeFile(this.filePath, this.buffer, this.options)\n .then(callback)\n .catch(callback);\n }\n}\n\nconst S_IFREG = 0o100000;\nconst S_IFDIR = 0o040000;\nconst S_IFLNK = 0o120000;\nconst S_IFMT = 0o170000;\n\nclass Entry {\n mode: number;\n atime: number;\n mtime: number;\n ctime: number;\n birthtime: number;\n constructor(mode: number) {\n this.mode = mode;\n let now = Date.now();\n this.atime = now;\n this.mtime = now;\n this.ctime = now;\n this.birthtime = now;\n }\n\n access() {\n let now = Date.now();\n this.atime = now;\n this.ctime = now;\n }\n\n modify(mode: number) {\n let now = Date.now();\n this.mtime = now;\n this.ctime = now;\n this.mode = mode;\n }\n\n getSize(): number {\n return 0;\n }\n\n stat(): Stat {\n return new Stat(this);\n }\n}\n\nclass Stat {\n dev: number = 0;\n ino: number = 0;\n mode: number;\n nlink: number = 0;\n uid: number = 0;\n gid: number = 0;\n rdev: number = 0;\n size: number;\n blksize: number = 0;\n blocks: number = 0;\n atimeMs: number;\n mtimeMs: number;\n ctimeMs: number;\n birthtimeMs: number;\n atime: Date;\n mtime: Date;\n ctime: Date;\n birthtime: Date;\n\n constructor(entry: Entry) {\n this.mode = entry.mode;\n this.size = entry.getSize();\n this.atimeMs = entry.atime;\n this.mtimeMs = entry.mtime;\n this.ctimeMs = entry.ctime;\n this.birthtimeMs = entry.birthtime;\n this.atime = new Date(entry.atime);\n this.mtime = new Date(entry.mtime);\n this.ctime = new Date(entry.ctime);\n this.birthtime = new Date(entry.birthtime);\n }\n\n isFile(): boolean {\n return Boolean(this.mode & S_IFREG);\n }\n\n isDirectory(): boolean {\n return Boolean(this.mode & S_IFDIR);\n }\n\n isBlockDevice(): boolean {\n return false;\n }\n\n isCharacterDevice(): boolean {\n return false;\n }\n\n isSymbolicLink(): boolean {\n return false;\n }\n\n isFIFO(): boolean {\n return false;\n }\n\n isSocket(): boolean {\n return false;\n }\n}\n\ninterface DirEntry {\n mode: number;\n}\n\nclass Dirent {\n name: string;\n #mode: number;\n\n constructor(name: string, entry: DirEntry) {\n this.name = name;\n this.#mode = entry.mode;\n }\n\n isFile(): boolean {\n return (this.#mode & S_IFMT) === S_IFREG;\n }\n\n isDirectory(): boolean {\n return (this.#mode & S_IFMT) === S_IFDIR;\n }\n\n isBlockDevice(): boolean {\n return false;\n }\n\n isCharacterDevice(): boolean {\n return false;\n }\n\n isSymbolicLink(): boolean {\n return (this.#mode & S_IFMT) === S_IFLNK;\n }\n\n isFIFO(): boolean {\n return false;\n }\n\n isSocket(): boolean {\n return false;\n }\n}\n\nexport class File extends Entry {\n buffer: Buffer;\n constructor(buffer: Buffer, mode: number) {\n super(S_IFREG | mode);\n this.buffer = buffer;\n }\n\n read(): Buffer {\n super.access();\n return Buffer.from(this.buffer);\n }\n\n write(buffer: Buffer, mode: number) {\n super.modify(S_IFREG | mode);\n this.buffer = buffer;\n }\n\n getSize(): number {\n return this.buffer.byteLength;\n }\n}\n\nclass Directory extends Entry {\n constructor() {\n super(S_IFDIR);\n }\n}\n\nexport function makeShared(contents: Buffer | string): Buffer {\n if (typeof contents !== 'string' && contents.buffer instanceof SharedBuffer) {\n return contents;\n }\n\n let contentsBuffer: Buffer | string = contents;\n // $FlowFixMe\n if (process.browser) {\n // For the polyfilled buffer module, it's faster to always convert once so that the subsequent\n // operations are fast (.byteLength and using .set instead of .write)\n contentsBuffer =\n contentsBuffer instanceof Buffer\n ? contentsBuffer\n : Buffer.from(contentsBuffer);\n }\n\n let length = Buffer.byteLength(contentsBuffer);\n let shared = new SharedBuffer(length);\n let buffer = Buffer.from(shared);\n if (length > 0) {\n if (typeof contentsBuffer === 'string') {\n buffer.write(contentsBuffer);\n } else {\n buffer.set(contentsBuffer);\n }\n }\n\n return buffer;\n}\n\nclass WorkerFS extends MemoryFS {\n id: number;\n handleFn: HandleFunction;\n\n constructor(id: number, handle: Handle) {\n // TODO Make this not a subclass\n // $FlowFixMe\n super();\n this.id = id;\n this.handleFn = (methodName, args) =>\n WorkerFarm.getWorkerApi().runHandle(handle, [methodName, args]);\n\n this.handleFn('_registerWorker', [\n WorkerFarm.getWorkerApi().createReverseHandle((event) => {\n switch (event.type) {\n case 'writeFile':\n this.files.set(event.path, event.entry);\n break;\n case 'unlink':\n this.files.delete(event.path);\n this.dirs.delete(event.path);\n this.symlinks.delete(event.path);\n break;\n case 'mkdir':\n this.dirs.set(event.path, new Directory());\n break;\n case 'symlink':\n this.symlinks.set(event.path, event.target);\n break;\n }\n }),\n ]);\n }\n\n static deserialize(opts: SerializedMemoryFS): MemoryFS {\n return nullthrows(instances.get(opts.id));\n }\n\n serialize(): SerializedMemoryFS {\n // $FlowFixMe\n return {\n id: this.id,\n };\n }\n\n writeFile(\n filePath: FilePath,\n contents: Buffer | string,\n options: ?FileOptions,\n ): Promise<void> {\n super.writeFile(filePath, contents, options);\n let buffer = makeShared(contents);\n return this.handleFn('writeFile', [filePath, buffer, options]);\n }\n\n unlink(filePath: FilePath): Promise<void> {\n super.unlink(filePath);\n return this.handleFn('unlink', [filePath]);\n }\n\n mkdirp(dir: FilePath): Promise<void> {\n super.mkdirp(dir);\n return this.handleFn('mkdirp', [dir]);\n }\n\n rimraf(filePath: FilePath): Promise<void> {\n super.rimraf(filePath);\n return this.handleFn('rimraf', [filePath]);\n }\n\n ncp(source: FilePath, destination: FilePath): Promise<void> {\n super.ncp(source, destination);\n return this.handleFn('ncp', [source, destination]);\n }\n\n symlink(target: FilePath, path: FilePath): Promise<void> {\n super.symlink(target, path);\n return this.handleFn('symlink', [target, path]);\n }\n}\n\nregisterSerializableClass(`${packageJSON.version}:MemoryFS`, MemoryFS);\nregisterSerializableClass(`${packageJSON.version}:WorkerFS`, WorkerFS);\nregisterSerializableClass(`${packageJSON.version}:Stat`, Stat);\nregisterSerializableClass(`${packageJSON.version}:File`, File);\nregisterSerializableClass(`${packageJSON.version}:Directory`, Directory);\n","{\n \"name\": \"@atlaspack/fs\",\n \"version\": \"2.15.6\",\n \"description\": \"Blazing fast, zero configuration web application bundler\",\n \"license\": \"(MIT OR Apache-2.0)\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/atlassian-labs/atlaspack.git\"\n },\n \"main\": \"lib/index.js\",\n \"source\": \"src/index.js\",\n \"types\": \"index.d.ts\",\n \"engines\": {\n \"node\": \">= 16.0.0\"\n },\n \"targets\": {\n \"types\": false,\n \"main\": {\n \"includeNodeModules\": {\n \"@atlaspack/build-cache\": false,\n \"@atlaspack/diagnostic\": false,\n \"@atlaspack/feature-flags\": false,\n \"@atlaspack/logger\": false,\n \"@atlaspack/rust\": false,\n \"@atlaspack/types-internal\": false,\n \"@atlaspack/utils\": false,\n \"@atlaspack/watcher-watchman-js\": false,\n \"@parcel/watcher\": false,\n \"@atlaspack/workers\": false\n }\n },\n \"browser\": {\n \"includeNodeModules\": {\n \"@atlaspack/build-cache\": false,\n \"@atlaspack/diagnostic\": false,\n \"@atlaspack/feature-flags\": false,\n \"@atlaspack/logger\": false,\n \"@atlaspack/rust\": false,\n \"@atlaspack/types-internal\": false,\n \"@atlaspack/utils\": false,\n \"@atlaspack/watcher-watchman-js\": false,\n \"@parcel/watcher\": false,\n \"@atlaspack/workers\": false\n }\n }\n },\n \"scripts\": {\n \"build-ts\": \"mkdir -p lib && flow-to-ts src/types.js > lib/types.d.ts\",\n \"check-ts\": \"tsc --noEmit index.d.ts\"\n },\n \"dependencies\": {\n \"@atlaspack/build-cache\": \"2.13.3\",\n \"@atlaspack/feature-flags\": \"2.17.0\",\n \"@atlaspack/logger\": \"2.14.10\",\n \"@atlaspack/rust\": \"3.3.5\",\n \"@atlaspack/types-internal\": \"2.14.9\",\n \"@atlaspack/utils\": \"2.14.11\",\n \"@parcel/watcher\": \"^2.0.7\",\n \"@atlaspack/workers\": \"2.14.11\"\n },\n \"devDependencies\": {\n \"@atlaspack/watcher-watchman-js\": \"2.14.11\",\n \"graceful-fs\": \"^4.2.4\",\n \"ncp\": \"^2.0.0\",\n \"nullthrows\": \"^1.1.1\",\n \"utility-types\": \"^3.10.0\"\n },\n \"browser\": {\n \"@atlaspack/fs\": \"./lib/browser.js\",\n \"./src/NodeFS.js\": \"./src/NodeFS.browser.js\"\n },\n \"type\": \"commonjs\"\n}\n","'use strict';\n\nfunction nullthrows(x, message) {\n if (x != null) {\n return x;\n }\n var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n error.framesToPop = 1; // Skip nullthrows's own stack frame.\n throw error;\n}\n\nmodule.exports = nullthrows;\nmodule.exports.default = nullthrows;\n\nObject.defineProperty(module.exports, '__esModule', {value: true});\n","// @flow\nimport type {FilePath, FileSystem} from '@atlaspack/types-internal';\nimport path from 'path';\n\nexport function findNodeModule(\n fs: FileSystem,\n moduleName: string,\n dir: FilePath,\n): ?FilePath {\n let {root} = path.parse(dir);\n while (dir !== root) {\n // Skip node_modules directories\n if (path.basename(dir) === 'node_modules') {\n dir = path.dirname(dir);\n }\n\n try {\n let moduleDir = path.join(dir, 'node_modules', moduleName);\n let stats = fs.statSync(moduleDir);\n if (stats.isDirectory()) {\n return moduleDir;\n }\n } catch (err) {\n // ignore\n }\n\n // Move up a directory\n dir = path.dirname(dir);\n }\n\n return null;\n}\n\nexport function findAncestorFile(\n fs: FileSystem,\n fileNames: Array<string>,\n dir: FilePath,\n root: FilePath,\n): ?FilePath {\n let {root: pathRoot} = path.parse(dir);\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (path.basename(dir) === 'node_modules') {\n return null;\n }\n\n for (const fileName of fileNames) {\n let filePath = path.join(dir, fileName);\n try {\n if (fs.statSync(filePath).isFile()) {\n return filePath;\n }\n } catch (err) {\n // ignore\n }\n }\n\n if (dir === root || dir === pathRoot) {\n break;\n }\n\n dir = path.dirname(dir);\n }\n\n return null;\n}\n\nexport function findFirstFile(\n fs: FileSystem,\n filePaths: Array<FilePath>,\n): ?FilePath {\n for (let filePath of filePaths) {\n try {\n if (fs.statSync(filePath).isFile()) {\n return filePath;\n }\n } catch (err) {\n // ignore\n }\n }\n}\n","// @flow\n\nimport type {Readable, Writable} from 'stream';\nimport type {\n FilePath,\n Encoding,\n FileOptions,\n FileSystem,\n ReaddirOptions,\n FileStats,\n} from '@atlaspack/types-internal';\nimport type {\n Event,\n Options as WatcherOptions,\n AsyncSubscription,\n} from '@parcel/watcher';\n\nimport {registerSerializableClass} from '@atlaspack/build-cache';\nimport WorkerFarm from '@atlaspack/workers';\nimport packageJSON from '../package.json';\nimport {findAncestorFile, findNodeModule, findFirstFile} from './find';\nimport {MemoryFS} from './MemoryFS';\n\nimport nullthrows from 'nullthrows';\nimport path from 'path';\n\nexport class OverlayFS implements FileSystem {\n deleted: Set<FilePath> = new Set();\n writable: FileSystem;\n readable: FileSystem;\n _cwd: FilePath;\n\n constructor(workerFarmOrFS: WorkerFarm | FileSystem, readable: FileSystem) {\n if (workerFarmOrFS instanceof WorkerFarm) {\n this.writable = new MemoryFS(workerFarmOrFS);\n } else {\n this.writable = workerFarmOrFS;\n }\n this.readable = readable;\n this._cwd = readable.cwd();\n }\n\n static deserialize(opts: any): OverlayFS {\n let fs = new OverlayFS(opts.writable, opts.readable);\n if (opts.deleted != null) fs.deleted = opts.deleted;\n return fs;\n }\n\n serialize(): {|\n $$raw: boolean,\n readable: FileSystem,\n writable: FileSystem,\n deleted: Set<FilePath>,\n |} {\n return {\n $$raw: false,\n writable: this.writable,\n readable: this.readable,\n deleted: this.deleted,\n };\n }\n\n _deletedThrows(filePath: FilePath): FilePath {\n filePath = this._normalizePath(filePath);\n if (this.deleted.has(filePath)) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n return filePath;\n }\n\n _checkExists(filePath: FilePath): FilePath {\n filePath = this._deletedThrows(filePath);\n if (!this.existsSync(filePath)) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n return filePath;\n }\n\n _isSymlink(filePath: FilePath): boolean {\n filePath = this._normalizePath(filePath);\n // Check the parts of the path to see if any are symlinks.\n let {root, dir, base} = path.parse(filePath);\n let segments = dir.slice(root.length).split(path.sep).concat(base);\n while (segments.length) {\n filePath = path.join(root, ...segments);\n let name = segments.pop();\n if (this.deleted.has(filePath)) {\n return false;\n } else if (\n this.writable instanceof MemoryFS &&\n this.writable.symlinks.has(filePath)\n ) {\n return true;\n } else {\n // HACK: Atlaspack fs does not provide `lstatSync`,\n // so we use `readdirSync` to check if the path is a symlink.\n let parent = path.resolve(filePath, '..');\n if (parent === filePath) {\n return false;\n }\n try {\n for (let dirent of this.readdirSync(parent, {withFileTypes: true})) {\n if (typeof dirent === 'string') {\n break; // {withFileTypes: true} not supported\n } else if (dirent.name === name) {\n if (dirent.isSymbolicLink()) {\n return true;\n }\n }\n }\n } catch (e) {\n if (e.code === 'ENOENT') {\n return false;\n }\n throw e;\n }\n }\n }\n\n return false;\n }\n\n async _copyPathForWrite(filePath: FilePath): Promise<FilePath> {\n filePath = await this._normalizePath(filePath);\n let dirPath = path.dirname(filePath);\n if (this.existsSync(dirPath) && !this.writable.existsSync(dirPath)) {\n await this.writable.mkdirp(dirPath);\n }\n return filePath;\n }\n\n _normalizePath(filePath: FilePath): FilePath {\n return path.resolve(this.cwd(), filePath);\n }\n\n // eslint-disable-next-line require-await\n async readFile(filePath: FilePath, encoding?: Encoding): Promise<any> {\n return this.readFileSync(filePath, encoding);\n }\n\n async writeFile(\n filePath: FilePath,\n contents: string | Buffer,\n options: ?FileOptions,\n ): Promise<void> {\n filePath = await this._copyPathForWrite(filePath);\n await this.writable.writeFile(filePath, contents, options);\n this.deleted.delete(filePath);\n }\n\n async copyFile(source: FilePath, destination: FilePath): Promise<void> {\n source = this._normalizePath(source);\n destination = await this._copyPathForWrite(destination);\n\n if (await this.writable.exists(source)) {\n await this.writable.writeFile(\n destination,\n await this.writable.readFile(source),\n );\n } else {\n await this.writable.writeFile(\n destination,\n await this.readable.readFile(source),\n );\n }\n\n this.deleted.delete(destination);\n }\n\n // eslint-disable-next-line require-await\n async stat(filePath: FilePath): Promise<FileStats> {\n return this.statSync(filePath);\n }\n\n async symlink(target: FilePath, filePath: FilePath): Promise<void> {\n target = this._normalizePath(target);\n filePath = this._normalizePath(filePath);\n await this.writable.symlink(target, filePath);\n this.deleted.delete(filePath);\n }\n\n async unlink(filePath: FilePath): Promise<void> {\n filePath = this._normalizePath(filePath);\n\n let toDelete = [filePath];\n\n if (this.writable instanceof MemoryFS && this._isSymlink(filePath)) {\n this.writable.symlinks.delete(filePath);\n } else if (this.statSync(filePath).isDirectory()) {\n let stack = [filePath];\n\n // Recursively add every descendant path to deleted.\n while (stack.length) {\n let root = nullthrows(stack.pop());\n for (let ent of this.readdirSync(root, {withFileTypes: true})) {\n if (typeof ent === 'string') {\n let childPath = path.join(root, ent);\n toDelete.push(childPath);\n if (this.statSync(childPath).isDirectory()) {\n stack.push(childPath);\n }\n } else {\n let childPath = path.join(root, ent.name);\n toDelete.push(childPath);\n if (ent.isDirectory()) {\n stack.push(childPath);\n }\n }\n }\n }\n }\n\n try {\n await this.writable.unlink(filePath);\n } catch (e) {\n if (e.code === 'ENOENT' && !this.readable.existsSync(filePath)) {\n throw e;\n }\n }\n\n for (let pathToDelete of toDelete) {\n this.deleted.add(pathToDelete);\n }\n }\n\n async mkdirp(dir: FilePath): Promise<void> {\n dir = this._normalizePath(dir);\n await this.writable.mkdirp(dir);\n\n if (this.deleted != null) {\n let root = path.parse(dir).root;\n while (dir !== root) {\n this.deleted.delete(dir);\n dir = path.dirname(dir);\n }\n }\n }\n\n async rimraf(filePath: FilePath): Promise<void> {\n try {\n await this.unlink(filePath);\n } catch (e) {\n // noop\n }\n }\n\n // eslint-disable-next-line require-await\n async ncp(source: FilePath, destination: FilePath): Promise<void> {\n // TODO: Implement this correctly.\n return this.writable.ncp(source, destination);\n }\n\n createReadStream(filePath: FilePath, opts?: ?FileOptions): Readable {\n filePath = this._deletedThrows(filePath);\n if (this.writable.existsSync(filePath)) {\n return this.writable.createReadStream(filePath, opts);\n }\n\n return this.readable.createReadStream(filePath, opts);\n }\n\n createWriteStream(path: FilePath, opts?: ?FileOptions): Writable {\n path = this._normalizePath(path);\n this.deleted.delete(path);\n return this.writable.createWriteStream(path, opts);\n }\n\n cwd(): FilePath {\n return this._cwd;\n }\n\n chdir(path: FilePath): void {\n this._cwd = this._checkExists(path);\n }\n\n // eslint-disable-next-line require-await\n async realpath(filePath: FilePath): Promise<FilePath> {\n return this.realpathSync(filePath);\n }\n\n readFileSync(filePath: FilePath, encoding?: Encoding): any {\n filePath = this.realpathSync(filePath);\n try {\n // $FlowFixMe[incompatible-call]\n return this.writable.readFileSync(filePath, encoding);\n } catch (err) {\n // $FlowFixMe[incompatible-call]\n return this.readable.readFileSync(filePath, encoding);\n }\n }\n\n statSync(filePath: FilePath): FileStats {\n filePath = this._normalizePath(filePath);\n try {\n return this.writable.statSync(filePath);\n } catch (e) {\n if (e.code === 'ENOENT' && this.existsSync(filePath)) {\n return this.readable.statSync(filePath);\n }\n throw e;\n }\n }\n\n realpathSync(filePath: FilePath): FilePath {\n filePath = this._deletedThrows(filePath);\n filePath = this._deletedThrows(this.writable.realpathSync(filePath));\n if (!this.writable.existsSync(filePath)) {\n return this.readable.realpathSync(filePath);\n }\n return filePath;\n }\n\n // eslint-disable-next-line require-await\n async exists(filePath: FilePath): Promise<boolean> {\n return this.existsSync(filePath);\n }\n\n existsSync(filePath: FilePath): boolean {\n filePath = this._normalizePath(filePath);\n if (this.deleted.has(filePath)) return false;\n\n try {\n filePath = this.realpathSync(filePath);\n } catch (err) {\n if (err.code !== 'ENOENT') throw err;\n }\n\n if (this.deleted.has(filePath)) return false;\n\n return (\n this.writable.existsSync(filePath) || this.readable.existsSync(filePath)\n );\n }\n\n // eslint-disable-next-line require-await\n async readdir(path: FilePath, opts?: ReaddirOptions): Promise<any> {\n return this.readdirSync(path, opts);\n }\n\n readdirSync(dir: FilePath, opts?: ReaddirOptions): any {\n dir = this.realpathSync(dir);\n // Read from both filesystems and merge the results\n let entries = new Map();\n\n try {\n for (let entry: any of this.writable.readdirSync(dir, opts)) {\n let filePath = path.join(dir, entry.name ?? entry);\n if (this.deleted.has(filePath)) continue;\n entries.set(filePath, entry);\n }\n } catch {\n // noop\n }\n\n try {\n for (let entry: any of this.readable.readdirSync(dir, opts)) {\n let filePath = path.join(dir, entry.name ?? entry);\n if (this.deleted.has(filePath)) continue;\n if (entries.has(filePath)) continue;\n entries.set(filePath, entry);\n }\n } catch {\n // noop\n }\n\n return Array.from(entries.values());\n }\n\n async watch(\n dir: FilePath,\n fn: (err: ?Error, events: Array<Event>) => mixed,\n opts: WatcherOptions,\n ): Promise<AsyncSubscription> {\n let writableSubscription = await this.writable.watch(dir, fn, opts);\n let readableSubscription = await this.readable.watch(dir, fn, opts);\n return {\n unsubscribe: async () => {\n await writableSubscription.unsubscribe();\n await readableSubscription.unsubscribe();\n },\n };\n }\n\n async getEventsSince(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<Array<Event>> {\n let writableEvents = await this.writable.getEventsSince(\n dir,\n snapshot,\n opts,\n );\n let readableEvents = await this.readable.getEventsSince(\n dir,\n snapshot,\n opts,\n );\n return [...writableEvents, ...readableEvents];\n }\n\n async writeSnapshot(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<void> {\n await this.writable.writeSnapshot(dir, snapshot, opts);\n }\n\n findAncestorFile(\n fileNames: Array<string>,\n fromDir: FilePath,\n root: FilePath,\n ): ?FilePath {\n return findAncestorFile(this, fileNames, fromDir, root);\n }\n\n findNodeModule(moduleName: string, fromDir: FilePath): ?FilePath {\n return findNodeModule(this, moduleName, fromDir);\n }\n\n findFirstFile(filePaths: Array<FilePath>): ?FilePath {\n return findFirstFile(this, filePaths);\n }\n}\n\nclass FSError extends Error {\n code: string;\n path: FilePath;\n constructor(code: string, path: FilePath, message: string) {\n super(`${code}: ${path} ${message}`);\n this.name = 'FSError';\n this.code = code;\n this.path = path;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\n\nregisterSerializableClass(`${packageJSON.version}:OverlayFS`, OverlayFS);\n","// @flow strict-local\n\nimport path from 'path';\nimport {NodeFS} from './NodeFS';\nimport {getVcsStateSnapshot, getEventsSince} from '@atlaspack/rust';\nimport type {FilePath} from '@atlaspack/types-internal';\nimport type {Event, Options as WatcherOptions} from '@parcel/watcher';\nimport {registerSerializableClass} from '@atlaspack/build-cache';\nimport logger, {instrumentAsync} from '@atlaspack/logger';\nimport {getFeatureFlagValue} from '@atlaspack/feature-flags';\n\n// $FlowFixMe\nimport packageJSON from '../package.json';\n\nexport interface NodeVCSAwareFSOptions {\n gitRepoPath: null | FilePath;\n excludePatterns: Array<string>;\n logEventDiff: null | ((watcherEvents: Event[], vcsEvents: Event[]) => void);\n}\n\nexport type SerializedNodeVCSAwareFS = NodeVCSAwareFSOptions;\n\nexport class NodeVCSAwareFS extends NodeFS {\n /**\n * These files are excluded from 'dirty file' tracking even if they are\n * modified.\n */\n #excludePatterns: Array<string>;\n /**\n * Logging function for the diff between watcher events and vcs events.\n */\n #logEventDiff: null | ((watcherEvents: Event[], vcsEvents: Event[]) => void);\n /**\n * The path of the git repository containing the project root. Null if the\n * project is not a git repository.\n */\n #gitRepoPath: null | FilePath;\n\n constructor(options: NodeVCSAwareFSOptions) {\n super();\n this.#excludePatterns = options.excludePatterns;\n this.#logEventDiff = options.logEventDiff;\n this.#gitRepoPath = options.gitRepoPath;\n }\n\n // $FlowFixMe[incompatible-extend] the serialization API is not happy with inheritance\n static deserialize(data: SerializedNodeVCSAwareFS): NodeVCSAwareFS {\n const fs = new NodeVCSAwareFS({\n excludePatterns: data.excludePatterns,\n logEventDiff: null,\n gitRepoPath: data.gitRepoPath,\n });\n return fs;\n }\n\n // $FlowFixMe[incompatible-extend] the serialization API is not happy with inheritance\n serialize(): SerializedNodeVCSAwareFS {\n return {\n excludePatterns: this.#excludePatterns,\n logEventDiff: null,\n gitRepoPath: this.#gitRepoPath,\n };\n }\n\n setGitRepoPath(gitRepoPath: null | FilePath) {\n this.#gitRepoPath = gitRepoPath;\n }\n\n async getEventsSince(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<Array<Event>> {\n const gitRepoPath = this.#gitRepoPath;\n if (gitRepoPath == null) {\n return this.watcher().getEventsSince(dir, snapshot, opts);\n }\n\n const {nativeSnapshotPath, vcsState} = await instrumentAsync(\n 'NodeVCSAwareFS.readSnapshot',\n async () => {\n // Note: can't use toString() directly, or it won't resolve the promise\n const snapshotFile = await this.readFile(snapshot);\n const snapshotFileContent = snapshotFile.toString();\n return JSON.parse(snapshotFileContent);\n },\n );\n let watcherEventsSince = [];\n\n const vcsEventsSince =\n vcsState != null\n ? (\n await instrumentAsync('NodeVCSAwareFS::rust.getEventsSince', () =>\n getEventsSince(gitRepoPath, vcsState, null),\n )\n ).map((e) => ({\n path: e.path,\n type: e.changeType,\n }))\n : null;\n\n if (getFeatureFlagValue('vcsMode') !== 'NEW' && vcsEventsSince != null) {\n watcherEventsSince = await instrumentAsync(\n 'NodeVCSAwareFS::watchman.getEventsSince',\n () => this.watcher().getEventsSince(dir, nativeSnapshotPath, opts),\n );\n this.#logEventDiff?.(watcherEventsSince, vcsEventsSince);\n }\n\n if (['NEW_AND_CHECK', 'NEW'].includes(getFeatureFlagValue('vcsMode'))) {\n if (vcsEventsSince == null) {\n logger.error({\n origin: '@atlaspack/fs',\n message:\n 'Missing VCS state. There was an error when writing the snapshot. Please clear your cache.',\n meta: {\n trackableEvent: 'vcs_state_snapshot_read_failed',\n },\n });\n\n return [];\n }\n\n return vcsEventsSince;\n }\n\n return watcherEventsSince;\n }\n\n async writeSnapshot(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<void> {\n const gitRepoPath = this.#gitRepoPath;\n if (gitRepoPath == null) {\n await this.watcher().writeSnapshot(dir, snapshot, opts);\n return;\n }\n\n const snapshotDirectory = path.dirname(snapshot);\n await this.mkdirp(snapshotDirectory);\n const filename = path.basename(snapshot, '.txt');\n const nativeSnapshotPath = path.join(\n snapshotDirectory,\n `${filename}.native-snapshot.txt`,\n );\n\n if (getFeatureFlagValue('vcsMode') !== 'NEW') {\n await instrumentAsync(\n 'NodeVCSAwareFS::watchman.writeSnapshot',\n async () => {\n await this.watcher().writeSnapshot(dir, nativeSnapshotPath, opts);\n },\n );\n }\n\n let vcsState = null;\n try {\n vcsState = await instrumentAsync(\n 'NodeVCSAwareFS::getVcsStateSnapshot',\n () => getVcsStateSnapshot(gitRepoPath, this.#excludePatterns),\n );\n\n logger.verbose({\n origin: '@atlaspack/fs',\n message: 'Expose VCS timing metrics',\n meta: {\n trackableEvent: 'vcs_timing_metrics',\n dirtyFilesExecutionTime: vcsState?.dirtyFilesExecutionTime,\n yarnStatesExecutionTime: vcsState?.yarnStatesExecutionTime,\n },\n });\n } catch (err) {\n logger.error({\n origin: '@atlaspack/fs',\n message: `Failed to get VCS state snapshot: ${err.message}`,\n meta: {\n trackableEvent: 'vcs_state_snapshot_failed',\n error: err,\n },\n });\n }\n\n const snapshotContents = {\n vcsState,\n nativeSnapshotPath,\n };\n await this.writeFile(snapshot, JSON.stringify(snapshotContents));\n }\n}\n\nregisterSerializableClass(\n `${packageJSON.version}:NodeVCSAwareFS`,\n NodeVCSAwareFS,\n);\n"],"names":["path","stream","promisify","pipeline","ncp","sourceFS","source","destinationFS","destination","filter","mkdirp","files","readdir","file","sourcePath","join","destPath","stats","stat","isFile","createReadStream","createWriteStream","isDirectory","NodeFS","constructor","Error","Readable","Writable","registerSerializableClass","SharedBuffer","packageJSON","WorkerFarm","Handle","nullthrows","EventEmitter","findAncestorFile","findNodeModule","findFirstFile","instances","Map","id","MemoryFS","_numWorkerInstances","_workerRegisterResolves","_emitter","workerFarm","farm","_cwd","resolve","sep","dirs","Directory","symlinks","watchers","events","_workerHandles","_eventQueue","set","on","deserialize","opts","existing","get","getWorkerApi","runHandle","handle","fs","WorkerFS","serialize","createReverseHandle","fn","args","$$raw","decrementWorkerInstance","length","emit","cwd","chdir","dir","_normalizePath","filePath","realpath","normalize","startsWith","root","base","parse","parts","slice","split","concat","res","part","symlink","writeFile","contents","options","has","FSError","dirname","buffer","makeShared","mode","write","File","_sendWorkerEvent","type","entry","_triggerEvent","readFile","encoding","readFileSync","read","toString","copyFile","statSync","readdirSync","endsWith","indexOf","name","withFileTypes","push","Dirent","from","S_IFLNK","unlink","delete","Promise","rimraf","keys","dirPath","destName","exists","ReadStream","WriteStream","realpathSync","target","existsSync","event","size","clearTimeout","_watcherTimer","setTimeout","relevantEvents","watcher","trigger","_registerWorker","all","map","workerHandle","workerApi","watch","Watcher","Set","add","unsubscribe","getEventsSince","snapshot","len","Number","ignore","some","i","writeSnapshot","fileNames","fromDir","moduleName","filePaths","code","message","captureStackTrace","reading","bytesRead","_read","then","byteLength","err","emitClose","autoDestroy","Buffer","alloc","_write","chunk","callback","c","_final","catch","S_IFREG","S_IFDIR","S_IFMT","Entry","now","Date","atime","mtime","ctime","birthtime","access","modify","getSize","Stat","dev","ino","nlink","uid","gid","rdev","blksize","blocks","atimeMs","mtimeMs","ctimeMs","birthtimeMs","Boolean","isBlockDevice","isCharacterDevice","isSymbolicLink","isFIFO","isSocket","contentsBuffer","process","browser","shared","handleFn","methodName","version","module","exports","JSON","basename","moduleDir","pathRoot","fileName","OverlayFS","deleted","workerFarmOrFS","readable","writable","_deletedThrows","_checkExists","_isSymlink","segments","pop","parent","dirent","e","_copyPathForWrite","toDelete","stack","ent","childPath","pathToDelete","entries","Array","values","writableSubscription","readableSubscription","writableEvents","readableEvents","getVcsStateSnapshot","logger","instrumentAsync","getFeatureFlagValue","NodeVCSAwareFS","excludePatterns","logEventDiff","gitRepoPath","data","setGitRepoPath","nativeSnapshotPath","vcsState","snapshotFile","snapshotFileContent","watcherEventsSince","vcsEventsSince","changeType","includes","error","origin","meta","trackableEvent","snapshotDirectory","filename","verbose","dirtyFilesExecutionTime","yarnStatesExecutionTime","snapshotContents","stringify"],"version":3,"file":"browser.js.map"}
1
+ {"mappings":"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","sources":["packages/core/fs/src/index.js","packages/core/fs/src/NodeFS.browser.js","packages/core/fs/src/MemoryFS.js","packages/core/fs/package.json","node_modules/nullthrows/nullthrows.js","packages/core/fs/src/find.js","packages/core/fs/src/OverlayFS.js","packages/core/fs/src/NodeVCSAwareFS.js"],"sourcesContent":["// @flow strict-local\nimport type {\n FilePath,\n FileSystem,\n FileOptions,\n} from '@atlaspack/types-internal';\nimport type {Readable, Writable} from 'stream';\n\nimport path from 'path';\nimport stream from 'stream';\nimport {promisify} from 'util';\n\nexport * from './NodeFS';\nexport * from './MemoryFS';\nexport * from './OverlayFS';\nexport * from './NodeVCSAwareFS';\n\nexport type {FileSystem, FileOptions};\n\nconst pipeline: (Readable, Writable) => Promise<void> = promisify(\n stream.pipeline,\n);\n\n// Recursively copies a directory from the sourceFS to the destinationFS\nexport async function ncp(\n sourceFS: FileSystem,\n source: FilePath,\n destinationFS: FileSystem,\n destination: FilePath,\n filter?: (filePath: FilePath) => boolean,\n) {\n await destinationFS.mkdirp(destination);\n let files = await sourceFS.readdir(source);\n for (let file of files) {\n if (filter && !filter(file)) {\n continue;\n }\n\n let sourcePath = path.join(source, file);\n let destPath = path.join(destination, file);\n let stats = await sourceFS.stat(sourcePath);\n if (stats.isFile()) {\n await pipeline(\n sourceFS.createReadStream(sourcePath),\n destinationFS.createWriteStream(destPath),\n );\n } else if (stats.isDirectory()) {\n await ncp(sourceFS, sourcePath, destinationFS, destPath, filter);\n }\n }\n}\n","// @flow\nimport type {FileSystem} from '@atlaspack/types-internal';\n\n// $FlowFixMe[prop-missing] handled by the throwing constructor\nexport class NodeFS implements FileSystem {\n constructor() {\n throw new Error(\"NodeFS isn't available in the browser\");\n }\n}\n","// @flow\n\nimport type {\n FilePath,\n FileSystem,\n FileOptions,\n ReaddirOptions,\n Encoding,\n} from '@atlaspack/types-internal';\nimport type {\n Event,\n Options as WatcherOptions,\n AsyncSubscription,\n} from '@parcel/watcher';\n\nimport path from 'path';\nimport {Readable, Writable} from 'stream';\nimport {registerSerializableClass} from '@atlaspack/build-cache';\nimport {SharedBuffer} from '@atlaspack/utils';\nimport packageJSON from '../package.json';\nimport WorkerFarm, {Handle} from '@atlaspack/workers';\nimport nullthrows from 'nullthrows';\nimport EventEmitter from 'events';\nimport {findAncestorFile, findNodeModule, findFirstFile} from './find';\n\nconst instances: Map<number, MemoryFS> = new Map();\nlet id = 0;\n\ntype HandleFunction = (...args: Array<any>) => any;\ntype SerializedMemoryFS = {\n id: number,\n handle: any,\n dirs: Map<FilePath, Directory>,\n files: Map<FilePath, File>,\n symlinks: Map<FilePath, FilePath>,\n ...\n};\n\ntype WorkerEvent = {|\n type: 'writeFile' | 'unlink' | 'mkdir' | 'symlink',\n path: FilePath,\n entry?: Entry,\n target?: FilePath,\n|};\n\ntype ResolveFunction = () => mixed;\n\nexport class MemoryFS implements FileSystem {\n dirs: Map<FilePath, Directory>;\n files: Map<FilePath, File>;\n symlinks: Map<FilePath, FilePath>;\n watchers: Map<FilePath, Set<Watcher>>;\n events: Array<Event>;\n id: number;\n handle: Handle;\n farm: WorkerFarm;\n _cwd: FilePath;\n _eventQueue: Array<Event>;\n _watcherTimer: TimeoutID;\n _numWorkerInstances: number = 0;\n _workerHandles: Array<Handle>;\n _workerRegisterResolves: Array<ResolveFunction> = [];\n _emitter: EventEmitter = new EventEmitter();\n\n constructor(workerFarm: WorkerFarm) {\n this.farm = workerFarm;\n this._cwd = path.resolve(path.sep);\n this.dirs = new Map([[this._cwd, new Directory()]]);\n this.files = new Map();\n this.symlinks = new Map();\n this.watchers = new Map();\n this.events = [];\n this.id = id++;\n this._workerHandles = [];\n this._eventQueue = [];\n instances.set(this.id, this);\n this._emitter.on('allWorkersRegistered', () => {\n for (let resolve of this._workerRegisterResolves) {\n resolve();\n }\n this._workerRegisterResolves = [];\n });\n }\n\n static deserialize(opts: SerializedMemoryFS): MemoryFS | WorkerFS {\n let existing = instances.get(opts.id);\n if (existing != null) {\n // Correct the count of worker instances since serialization assumes a new instance is created\n WorkerFarm.getWorkerApi().runHandle(opts.handle, [\n 'decrementWorkerInstance',\n [],\n ]);\n return existing;\n }\n\n let fs = new WorkerFS(opts.id, nullthrows(opts.handle));\n fs.dirs = opts.dirs;\n fs.files = opts.files;\n fs.symlinks = opts.symlinks;\n return fs;\n }\n\n serialize(): SerializedMemoryFS {\n if (!this.handle) {\n this.handle = this.farm.createReverseHandle(\n (fn: string, args: Array<mixed>) => {\n // $FlowFixMe\n return this[fn](...args);\n },\n );\n }\n\n // If a worker instance already exists, it will decrement this number\n this._numWorkerInstances++;\n\n return {\n $$raw: false,\n id: this.id,\n handle: this.handle,\n dirs: this.dirs,\n files: this.files,\n symlinks: this.symlinks,\n };\n }\n\n decrementWorkerInstance() {\n this._numWorkerInstances--;\n if (this._numWorkerInstances === this._workerHandles.length) {\n this._emitter.emit('allWorkersRegistered');\n }\n }\n\n cwd(): FilePath {\n return this._cwd;\n }\n\n chdir(dir: FilePath) {\n this._cwd = dir;\n }\n\n _normalizePath(filePath: FilePath, realpath: boolean = true): FilePath {\n filePath = path.normalize(filePath);\n if (!filePath.startsWith(this.cwd())) {\n filePath = path.resolve(this.cwd(), filePath);\n }\n\n // get realpath by following symlinks\n if (realpath) {\n let {root, dir, base} = path.parse(filePath);\n let parts = dir.slice(root.length).split(path.sep).concat(base);\n let res = root;\n for (let part of parts) {\n res = path.join(res, part);\n let symlink = this.symlinks.get(res);\n if (symlink) {\n res = symlink;\n }\n }\n\n return res;\n }\n\n return filePath;\n }\n\n async writeFile(\n filePath: FilePath,\n contents: Buffer | string,\n options?: ?FileOptions,\n ) {\n filePath = this._normalizePath(filePath);\n if (this.dirs.has(filePath)) {\n throw new FSError('EISDIR', filePath, 'is a directory');\n }\n\n let dir = path.dirname(filePath);\n if (!this.dirs.has(dir)) {\n throw new FSError('ENOENT', dir, 'does not exist');\n }\n\n let buffer = makeShared(contents);\n let file = this.files.get(filePath);\n let mode = (options && options.mode) || 0o666;\n if (file) {\n file.write(buffer, mode);\n this.files.set(filePath, file);\n } else {\n this.files.set(filePath, new File(buffer, mode));\n }\n\n await this._sendWorkerEvent({\n type: 'writeFile',\n path: filePath,\n entry: this.files.get(filePath),\n });\n\n this._triggerEvent({\n type: file ? 'update' : 'create',\n path: filePath,\n });\n }\n\n // eslint-disable-next-line require-await\n async readFile(filePath: FilePath, encoding?: Encoding): Promise<any> {\n return this.readFileSync(filePath, encoding);\n }\n\n readFileSync(filePath: FilePath, encoding?: Encoding): any {\n filePath = this._normalizePath(filePath);\n let file = this.files.get(filePath);\n if (file == null) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n\n let buffer = file.read();\n if (encoding) {\n return buffer.toString(encoding);\n }\n\n return buffer;\n }\n\n async copyFile(source: FilePath, destination: FilePath) {\n let contents = await this.readFile(source);\n await this.writeFile(destination, contents);\n }\n\n statSync(filePath: FilePath): Stat {\n filePath = this._normalizePath(filePath);\n\n let dir = this.dirs.get(filePath);\n if (dir) {\n return dir.stat();\n }\n\n let file = this.files.get(filePath);\n if (file == null) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n\n return file.stat();\n }\n\n // eslint-disable-next-line require-await\n async stat(filePath: FilePath): Promise<Stat> {\n return this.statSync(filePath);\n }\n\n readdirSync(dir: FilePath, opts?: ReaddirOptions): any {\n dir = this._normalizePath(dir);\n if (!this.dirs.has(dir)) {\n throw new FSError('ENOENT', dir, 'does not exist');\n }\n\n if (!dir.endsWith(path.sep)) {\n dir += path.sep;\n }\n\n let res = [];\n for (let [filePath, entry] of this.dirs) {\n if (filePath === dir) {\n continue;\n }\n if (\n filePath.startsWith(dir) &&\n filePath.indexOf(path.sep, dir.length) === -1\n ) {\n let name = filePath.slice(dir.length);\n if (opts?.withFileTypes) {\n res.push(new Dirent(name, entry));\n } else {\n res.push(name);\n }\n }\n }\n\n for (let [filePath, entry] of this.files) {\n if (\n filePath.startsWith(dir) &&\n filePath.indexOf(path.sep, dir.length) === -1\n ) {\n let name = filePath.slice(dir.length);\n if (opts?.withFileTypes) {\n res.push(new Dirent(name, entry));\n } else {\n res.push(name);\n }\n }\n }\n\n for (let [from] of this.symlinks) {\n if (from.startsWith(dir) && from.indexOf(path.sep, dir.length) === -1) {\n let name = from.slice(dir.length);\n if (opts?.withFileTypes) {\n res.push(new Dirent(name, {mode: S_IFLNK}));\n } else {\n res.push(name);\n }\n }\n }\n\n return res;\n }\n\n // eslint-disable-next-line require-await\n async readdir(dir: FilePath, opts?: ReaddirOptions): Promise<any> {\n return this.readdirSync(dir, opts);\n }\n\n async unlink(filePath: FilePath): Promise<void> {\n filePath = this._normalizePath(filePath);\n if (!this.files.has(filePath) && !this.dirs.has(filePath)) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n\n this.files.delete(filePath);\n this.dirs.delete(filePath);\n this.watchers.delete(filePath);\n\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n\n return Promise.resolve();\n }\n\n async mkdirp(dir: FilePath): Promise<void> {\n dir = this._normalizePath(dir);\n if (this.dirs.has(dir)) {\n return Promise.resolve();\n }\n\n if (this.files.has(dir)) {\n throw new FSError('ENOENT', dir, 'is not a directory');\n }\n\n let root = path.parse(dir).root;\n while (dir !== root) {\n if (this.dirs.has(dir)) {\n break;\n }\n\n this.dirs.set(dir, new Directory());\n await this._sendWorkerEvent({\n type: 'mkdir',\n path: dir,\n });\n\n this._triggerEvent({\n type: 'create',\n path: dir,\n });\n\n dir = path.dirname(dir);\n }\n\n return Promise.resolve();\n }\n\n async rimraf(filePath: FilePath): Promise<void> {\n filePath = this._normalizePath(filePath);\n\n if (this.dirs.has(filePath)) {\n let dir = filePath + path.sep;\n for (let filePath of this.files.keys()) {\n if (filePath.startsWith(dir)) {\n this.files.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n }\n }\n\n for (let dirPath of this.dirs.keys()) {\n if (dirPath.startsWith(dir)) {\n this.dirs.delete(dirPath);\n this.watchers.delete(dirPath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: dirPath,\n });\n }\n }\n\n for (let filePath of this.symlinks.keys()) {\n if (filePath.startsWith(dir)) {\n this.symlinks.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n }\n }\n\n this.dirs.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n } else if (this.files.has(filePath)) {\n this.files.delete(filePath);\n await this._sendWorkerEvent({\n type: 'unlink',\n path: filePath,\n });\n\n this._triggerEvent({\n type: 'delete',\n path: filePath,\n });\n }\n\n return Promise.resolve();\n }\n\n async ncp(source: FilePath, destination: FilePath) {\n source = this._normalizePath(source);\n\n if (this.dirs.has(source)) {\n if (!this.dirs.has(destination)) {\n this.dirs.set(destination, new Directory());\n await this._sendWorkerEvent({\n type: 'mkdir',\n path: destination,\n });\n\n this._triggerEvent({\n type: 'create',\n path: destination,\n });\n }\n\n let dir = source + path.sep;\n for (let dirPath of this.dirs.keys()) {\n if (dirPath.startsWith(dir)) {\n let destName = path.join(destination, dirPath.slice(dir.length));\n if (!this.dirs.has(destName)) {\n this.dirs.set(destName, new Directory());\n await this._sendWorkerEvent({\n type: 'mkdir',\n path: destination,\n });\n this._triggerEvent({\n type: 'create',\n path: destName,\n });\n }\n }\n }\n\n for (let [filePath, file] of this.files) {\n if (filePath.startsWith(dir)) {\n let destName = path.join(destination, filePath.slice(dir.length));\n let exists = this.files.has(destName);\n this.files.set(destName, file);\n await this._sendWorkerEvent({\n type: 'writeFile',\n path: destName,\n entry: file,\n });\n\n this._triggerEvent({\n type: exists ? 'update' : 'create',\n path: destName,\n });\n }\n }\n } else {\n await this.copyFile(source, destination);\n }\n }\n\n createReadStream(filePath: FilePath): ReadStream {\n return new ReadStream(this, filePath);\n }\n\n createWriteStream(filePath: FilePath, options: ?FileOptions): WriteStream {\n this.mkdirp(path.dirname(filePath));\n return new WriteStream(this, filePath, options);\n }\n\n realpathSync(filePath: FilePath): FilePath {\n return this._normalizePath(filePath);\n }\n\n // eslint-disable-next-line require-await\n async realpath(filePath: FilePath): Promise<FilePath> {\n return this.realpathSync(filePath);\n }\n\n async symlink(target: FilePath, path: FilePath) {\n target = this._normalizePath(target);\n path = this._normalizePath(path);\n this.symlinks.set(path, target);\n await this._sendWorkerEvent({\n type: 'symlink',\n path,\n target,\n });\n }\n\n existsSync(filePath: FilePath): boolean {\n filePath = this._normalizePath(filePath);\n return this.files.has(filePath) || this.dirs.has(filePath);\n }\n\n // eslint-disable-next-line require-await\n async exists(filePath: FilePath): Promise<boolean> {\n return this.existsSync(filePath);\n }\n\n _triggerEvent(event: Event) {\n this.events.push(event);\n if (this.watchers.size === 0) {\n return;\n }\n\n // Batch events\n this._eventQueue.push(event);\n clearTimeout(this._watcherTimer);\n\n this._watcherTimer = setTimeout(() => {\n let events = this._eventQueue;\n this._eventQueue = [];\n\n for (let [dir, watchers] of this.watchers) {\n if (!dir.endsWith(path.sep)) {\n dir += path.sep;\n }\n\n const relevantEvents = events.filter((event) =>\n event.path.startsWith(dir),\n );\n if (relevantEvents.length > 0) {\n for (let watcher of watchers) {\n watcher.trigger(relevantEvents);\n }\n }\n }\n }, 50);\n }\n\n _registerWorker(handle: Handle) {\n this._workerHandles.push(handle);\n if (this._numWorkerInstances === this._workerHandles.length) {\n this._emitter.emit('allWorkersRegistered');\n }\n }\n\n async _sendWorkerEvent(event: WorkerEvent) {\n // Wait for worker instances to register their handles\n while (this._workerHandles.length < this._numWorkerInstances) {\n await new Promise((resolve) =>\n this._workerRegisterResolves.push(resolve),\n );\n }\n\n await Promise.all(\n this._workerHandles.map((workerHandle) =>\n this.farm.workerApi.runHandle(workerHandle, [event]),\n ),\n );\n }\n\n watch(\n dir: FilePath,\n fn: (err: ?Error, events: Array<Event>) => mixed,\n opts: WatcherOptions,\n ): Promise<AsyncSubscription> {\n dir = this._normalizePath(dir);\n let watcher = new Watcher(fn, opts);\n let watchers = this.watchers.get(dir);\n if (!watchers) {\n watchers = new Set();\n this.watchers.set(dir, watchers);\n }\n\n watchers.add(watcher);\n\n return Promise.resolve({\n unsubscribe: () => {\n watchers = nullthrows(watchers);\n watchers.delete(watcher);\n\n if (watchers.size === 0) {\n this.watchers.delete(dir);\n }\n\n return Promise.resolve();\n },\n });\n }\n\n async getEventsSince(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<Array<Event>> {\n let contents = await this.readFile(snapshot, 'utf8');\n let len = Number(contents);\n let events = this.events.slice(len);\n let ignore = opts.ignore;\n if (ignore) {\n events = events.filter(\n (event) => !ignore.some((i) => event.path.startsWith(i + path.sep)),\n );\n }\n\n return events;\n }\n\n async writeSnapshot(dir: FilePath, snapshot: FilePath): Promise<void> {\n await this.mkdirp(path.dirname(snapshot));\n await this.writeFile(snapshot, '' + this.events.length);\n }\n\n findAncestorFile(\n fileNames: Array<string>,\n fromDir: FilePath,\n root: FilePath,\n ): ?FilePath {\n return findAncestorFile(this, fileNames, fromDir, root);\n }\n\n findNodeModule(moduleName: string, fromDir: FilePath): ?FilePath {\n return findNodeModule(this, moduleName, fromDir);\n }\n\n findFirstFile(filePaths: Array<FilePath>): ?FilePath {\n return findFirstFile(this, filePaths);\n }\n}\n\nclass Watcher {\n fn: (err: ?Error, events: Array<Event>) => mixed;\n options: WatcherOptions;\n\n constructor(\n fn: (err: ?Error, events: Array<Event>) => mixed,\n options: WatcherOptions,\n ) {\n this.fn = fn;\n this.options = options;\n }\n\n trigger(events: Array<Event>) {\n let ignore = this.options.ignore;\n if (ignore) {\n events = events.filter(\n (event) => !ignore.some((i) => event.path.startsWith(i + path.sep)),\n );\n }\n\n if (events.length > 0) {\n this.fn(null, events);\n }\n }\n}\n\nexport class FSError extends Error {\n code: string;\n path: FilePath;\n constructor(code: string, path: FilePath, message: string) {\n super(`${code}: ${path} ${message}`);\n this.name = 'FSError';\n this.code = code;\n this.path = path;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\n\nclass ReadStream extends Readable {\n fs: FileSystem;\n filePath: FilePath;\n reading: boolean;\n bytesRead: number;\n constructor(fs: FileSystem, filePath: FilePath) {\n super();\n this.fs = fs;\n this.filePath = filePath;\n this.reading = false;\n this.bytesRead = 0;\n }\n\n _read() {\n if (this.reading) {\n return;\n }\n\n this.reading = true;\n this.fs.readFile(this.filePath).then(\n (res) => {\n this.bytesRead += res.byteLength;\n this.push(res);\n this.push(null);\n },\n (err) => {\n this.emit('error', err);\n },\n );\n }\n}\n\nclass WriteStream extends Writable {\n fs: FileSystem;\n filePath: FilePath;\n options: ?FileOptions;\n buffer: Buffer;\n\n constructor(fs: FileSystem, filePath: FilePath, options: ?FileOptions) {\n super({emitClose: true, autoDestroy: true});\n this.fs = fs;\n this.filePath = filePath;\n this.options = options;\n this.buffer = Buffer.alloc(0);\n }\n\n _write(\n chunk: Buffer | string,\n encoding: any,\n callback: (error?: Error) => void,\n ) {\n let c = typeof chunk === 'string' ? Buffer.from(chunk, encoding) : chunk;\n this.buffer = Buffer.concat([this.buffer, c]);\n callback();\n }\n\n _final(callback: (error?: Error) => void) {\n this.fs\n .writeFile(this.filePath, this.buffer, this.options)\n .then(callback)\n .catch(callback);\n }\n}\n\nconst S_IFREG = 0o100000;\nconst S_IFDIR = 0o040000;\nconst S_IFLNK = 0o120000;\nconst S_IFMT = 0o170000;\n\nclass Entry {\n mode: number;\n atime: number;\n mtime: number;\n ctime: number;\n birthtime: number;\n constructor(mode: number) {\n this.mode = mode;\n let now = Date.now();\n this.atime = now;\n this.mtime = now;\n this.ctime = now;\n this.birthtime = now;\n }\n\n access() {\n let now = Date.now();\n this.atime = now;\n this.ctime = now;\n }\n\n modify(mode: number) {\n let now = Date.now();\n this.mtime = now;\n this.ctime = now;\n this.mode = mode;\n }\n\n getSize(): number {\n return 0;\n }\n\n stat(): Stat {\n return new Stat(this);\n }\n}\n\nclass Stat {\n dev: number = 0;\n ino: number = 0;\n mode: number;\n nlink: number = 0;\n uid: number = 0;\n gid: number = 0;\n rdev: number = 0;\n size: number;\n blksize: number = 0;\n blocks: number = 0;\n atimeMs: number;\n mtimeMs: number;\n ctimeMs: number;\n birthtimeMs: number;\n atime: Date;\n mtime: Date;\n ctime: Date;\n birthtime: Date;\n\n constructor(entry: Entry) {\n this.mode = entry.mode;\n this.size = entry.getSize();\n this.atimeMs = entry.atime;\n this.mtimeMs = entry.mtime;\n this.ctimeMs = entry.ctime;\n this.birthtimeMs = entry.birthtime;\n this.atime = new Date(entry.atime);\n this.mtime = new Date(entry.mtime);\n this.ctime = new Date(entry.ctime);\n this.birthtime = new Date(entry.birthtime);\n }\n\n isFile(): boolean {\n return Boolean(this.mode & S_IFREG);\n }\n\n isDirectory(): boolean {\n return Boolean(this.mode & S_IFDIR);\n }\n\n isBlockDevice(): boolean {\n return false;\n }\n\n isCharacterDevice(): boolean {\n return false;\n }\n\n isSymbolicLink(): boolean {\n return false;\n }\n\n isFIFO(): boolean {\n return false;\n }\n\n isSocket(): boolean {\n return false;\n }\n}\n\ninterface DirEntry {\n mode: number;\n}\n\nclass Dirent {\n name: string;\n #mode: number;\n\n constructor(name: string, entry: DirEntry) {\n this.name = name;\n this.#mode = entry.mode;\n }\n\n isFile(): boolean {\n return (this.#mode & S_IFMT) === S_IFREG;\n }\n\n isDirectory(): boolean {\n return (this.#mode & S_IFMT) === S_IFDIR;\n }\n\n isBlockDevice(): boolean {\n return false;\n }\n\n isCharacterDevice(): boolean {\n return false;\n }\n\n isSymbolicLink(): boolean {\n return (this.#mode & S_IFMT) === S_IFLNK;\n }\n\n isFIFO(): boolean {\n return false;\n }\n\n isSocket(): boolean {\n return false;\n }\n}\n\nexport class File extends Entry {\n buffer: Buffer;\n constructor(buffer: Buffer, mode: number) {\n super(S_IFREG | mode);\n this.buffer = buffer;\n }\n\n read(): Buffer {\n super.access();\n return Buffer.from(this.buffer);\n }\n\n write(buffer: Buffer, mode: number) {\n super.modify(S_IFREG | mode);\n this.buffer = buffer;\n }\n\n getSize(): number {\n return this.buffer.byteLength;\n }\n}\n\nclass Directory extends Entry {\n constructor() {\n super(S_IFDIR);\n }\n}\n\nexport function makeShared(contents: Buffer | string): Buffer {\n if (typeof contents !== 'string' && contents.buffer instanceof SharedBuffer) {\n return contents;\n }\n\n let contentsBuffer: Buffer | string = contents;\n // $FlowFixMe\n if (process.browser) {\n // For the polyfilled buffer module, it's faster to always convert once so that the subsequent\n // operations are fast (.byteLength and using .set instead of .write)\n contentsBuffer =\n contentsBuffer instanceof Buffer\n ? contentsBuffer\n : Buffer.from(contentsBuffer);\n }\n\n let length = Buffer.byteLength(contentsBuffer);\n let shared = new SharedBuffer(length);\n let buffer = Buffer.from(shared);\n if (length > 0) {\n if (typeof contentsBuffer === 'string') {\n buffer.write(contentsBuffer);\n } else {\n buffer.set(contentsBuffer);\n }\n }\n\n return buffer;\n}\n\nclass WorkerFS extends MemoryFS {\n id: number;\n handleFn: HandleFunction;\n\n constructor(id: number, handle: Handle) {\n // TODO Make this not a subclass\n // $FlowFixMe\n super();\n this.id = id;\n this.handleFn = (methodName, args) =>\n WorkerFarm.getWorkerApi().runHandle(handle, [methodName, args]);\n\n this.handleFn('_registerWorker', [\n WorkerFarm.getWorkerApi().createReverseHandle((event) => {\n switch (event.type) {\n case 'writeFile':\n this.files.set(event.path, event.entry);\n break;\n case 'unlink':\n this.files.delete(event.path);\n this.dirs.delete(event.path);\n this.symlinks.delete(event.path);\n break;\n case 'mkdir':\n this.dirs.set(event.path, new Directory());\n break;\n case 'symlink':\n this.symlinks.set(event.path, event.target);\n break;\n }\n }),\n ]);\n }\n\n static deserialize(opts: SerializedMemoryFS): MemoryFS {\n return nullthrows(instances.get(opts.id));\n }\n\n serialize(): SerializedMemoryFS {\n // $FlowFixMe\n return {\n id: this.id,\n };\n }\n\n writeFile(\n filePath: FilePath,\n contents: Buffer | string,\n options: ?FileOptions,\n ): Promise<void> {\n super.writeFile(filePath, contents, options);\n let buffer = makeShared(contents);\n return this.handleFn('writeFile', [filePath, buffer, options]);\n }\n\n unlink(filePath: FilePath): Promise<void> {\n super.unlink(filePath);\n return this.handleFn('unlink', [filePath]);\n }\n\n mkdirp(dir: FilePath): Promise<void> {\n super.mkdirp(dir);\n return this.handleFn('mkdirp', [dir]);\n }\n\n rimraf(filePath: FilePath): Promise<void> {\n super.rimraf(filePath);\n return this.handleFn('rimraf', [filePath]);\n }\n\n ncp(source: FilePath, destination: FilePath): Promise<void> {\n super.ncp(source, destination);\n return this.handleFn('ncp', [source, destination]);\n }\n\n symlink(target: FilePath, path: FilePath): Promise<void> {\n super.symlink(target, path);\n return this.handleFn('symlink', [target, path]);\n }\n}\n\nregisterSerializableClass(`${packageJSON.version}:MemoryFS`, MemoryFS);\nregisterSerializableClass(`${packageJSON.version}:WorkerFS`, WorkerFS);\nregisterSerializableClass(`${packageJSON.version}:Stat`, Stat);\nregisterSerializableClass(`${packageJSON.version}:File`, File);\nregisterSerializableClass(`${packageJSON.version}:Directory`, Directory);\n","{\n \"name\": \"@atlaspack/fs\",\n \"version\": \"2.15.8\",\n \"description\": \"Blazing fast, zero configuration web application bundler\",\n \"license\": \"(MIT OR Apache-2.0)\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/atlassian-labs/atlaspack.git\"\n },\n \"main\": \"lib/index.js\",\n \"source\": \"src/index.js\",\n \"types\": \"index.d.ts\",\n \"engines\": {\n \"node\": \">= 16.0.0\"\n },\n \"targets\": {\n \"types\": false,\n \"main\": {\n \"includeNodeModules\": {\n \"@atlaspack/build-cache\": false,\n \"@atlaspack/diagnostic\": false,\n \"@atlaspack/feature-flags\": false,\n \"@atlaspack/logger\": false,\n \"@atlaspack/rust\": false,\n \"@atlaspack/types-internal\": false,\n \"@atlaspack/utils\": false,\n \"@atlaspack/watcher-watchman-js\": false,\n \"@parcel/watcher\": false,\n \"@atlaspack/workers\": false\n }\n },\n \"browser\": {\n \"includeNodeModules\": {\n \"@atlaspack/build-cache\": false,\n \"@atlaspack/diagnostic\": false,\n \"@atlaspack/feature-flags\": false,\n \"@atlaspack/logger\": false,\n \"@atlaspack/rust\": false,\n \"@atlaspack/types-internal\": false,\n \"@atlaspack/utils\": false,\n \"@atlaspack/watcher-watchman-js\": false,\n \"@parcel/watcher\": false,\n \"@atlaspack/workers\": false\n }\n }\n },\n \"scripts\": {\n \"build-ts\": \"mkdir -p lib && flow-to-ts src/types.js > lib/types.d.ts\",\n \"check-ts\": \"tsc --noEmit index.d.ts\"\n },\n \"dependencies\": {\n \"@atlaspack/build-cache\": \"2.13.3\",\n \"@atlaspack/feature-flags\": \"2.18.1\",\n \"@atlaspack/logger\": \"2.14.11\",\n \"@atlaspack/rust\": \"3.3.5\",\n \"@atlaspack/types-internal\": \"2.14.11\",\n \"@atlaspack/utils\": \"2.15.1\",\n \"@parcel/watcher\": \"^2.0.7\",\n \"@atlaspack/workers\": \"2.14.13\"\n },\n \"devDependencies\": {\n \"@atlaspack/watcher-watchman-js\": \"2.14.13\",\n \"graceful-fs\": \"^4.2.4\",\n \"ncp\": \"^2.0.0\",\n \"nullthrows\": \"^1.1.1\",\n \"utility-types\": \"^3.10.0\"\n },\n \"browser\": {\n \"@atlaspack/fs\": \"./lib/browser.js\",\n \"./src/NodeFS.js\": \"./src/NodeFS.browser.js\"\n },\n \"type\": \"commonjs\"\n}\n","'use strict';\n\nfunction nullthrows(x, message) {\n if (x != null) {\n return x;\n }\n var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n error.framesToPop = 1; // Skip nullthrows's own stack frame.\n throw error;\n}\n\nmodule.exports = nullthrows;\nmodule.exports.default = nullthrows;\n\nObject.defineProperty(module.exports, '__esModule', {value: true});\n","// @flow\nimport type {FilePath, FileSystem} from '@atlaspack/types-internal';\nimport path from 'path';\n\nexport function findNodeModule(\n fs: FileSystem,\n moduleName: string,\n dir: FilePath,\n): ?FilePath {\n let {root} = path.parse(dir);\n while (dir !== root) {\n // Skip node_modules directories\n if (path.basename(dir) === 'node_modules') {\n dir = path.dirname(dir);\n }\n\n try {\n let moduleDir = path.join(dir, 'node_modules', moduleName);\n let stats = fs.statSync(moduleDir);\n if (stats.isDirectory()) {\n return moduleDir;\n }\n } catch (err) {\n // ignore\n }\n\n // Move up a directory\n dir = path.dirname(dir);\n }\n\n return null;\n}\n\nexport function findAncestorFile(\n fs: FileSystem,\n fileNames: Array<string>,\n dir: FilePath,\n root: FilePath,\n): ?FilePath {\n let {root: pathRoot} = path.parse(dir);\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (path.basename(dir) === 'node_modules') {\n return null;\n }\n\n for (const fileName of fileNames) {\n let filePath = path.join(dir, fileName);\n try {\n if (fs.statSync(filePath).isFile()) {\n return filePath;\n }\n } catch (err) {\n // ignore\n }\n }\n\n if (dir === root || dir === pathRoot) {\n break;\n }\n\n dir = path.dirname(dir);\n }\n\n return null;\n}\n\nexport function findFirstFile(\n fs: FileSystem,\n filePaths: Array<FilePath>,\n): ?FilePath {\n for (let filePath of filePaths) {\n try {\n if (fs.statSync(filePath).isFile()) {\n return filePath;\n }\n } catch (err) {\n // ignore\n }\n }\n}\n","// @flow\n\nimport type {Readable, Writable} from 'stream';\nimport type {\n FilePath,\n Encoding,\n FileOptions,\n FileSystem,\n ReaddirOptions,\n FileStats,\n} from '@atlaspack/types-internal';\nimport type {\n Event,\n Options as WatcherOptions,\n AsyncSubscription,\n} from '@parcel/watcher';\n\nimport {registerSerializableClass} from '@atlaspack/build-cache';\nimport WorkerFarm from '@atlaspack/workers';\nimport packageJSON from '../package.json';\nimport {findAncestorFile, findNodeModule, findFirstFile} from './find';\nimport {MemoryFS} from './MemoryFS';\n\nimport nullthrows from 'nullthrows';\nimport path from 'path';\n\nexport class OverlayFS implements FileSystem {\n deleted: Set<FilePath> = new Set();\n writable: FileSystem;\n readable: FileSystem;\n _cwd: FilePath;\n\n constructor(workerFarmOrFS: WorkerFarm | FileSystem, readable: FileSystem) {\n if (workerFarmOrFS instanceof WorkerFarm) {\n this.writable = new MemoryFS(workerFarmOrFS);\n } else {\n this.writable = workerFarmOrFS;\n }\n this.readable = readable;\n this._cwd = readable.cwd();\n }\n\n static deserialize(opts: any): OverlayFS {\n let fs = new OverlayFS(opts.writable, opts.readable);\n if (opts.deleted != null) fs.deleted = opts.deleted;\n return fs;\n }\n\n serialize(): {|\n $$raw: boolean,\n readable: FileSystem,\n writable: FileSystem,\n deleted: Set<FilePath>,\n |} {\n return {\n $$raw: false,\n writable: this.writable,\n readable: this.readable,\n deleted: this.deleted,\n };\n }\n\n _deletedThrows(filePath: FilePath): FilePath {\n filePath = this._normalizePath(filePath);\n if (this.deleted.has(filePath)) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n return filePath;\n }\n\n _checkExists(filePath: FilePath): FilePath {\n filePath = this._deletedThrows(filePath);\n if (!this.existsSync(filePath)) {\n throw new FSError('ENOENT', filePath, 'does not exist');\n }\n return filePath;\n }\n\n _isSymlink(filePath: FilePath): boolean {\n filePath = this._normalizePath(filePath);\n // Check the parts of the path to see if any are symlinks.\n let {root, dir, base} = path.parse(filePath);\n let segments = dir.slice(root.length).split(path.sep).concat(base);\n while (segments.length) {\n filePath = path.join(root, ...segments);\n let name = segments.pop();\n if (this.deleted.has(filePath)) {\n return false;\n } else if (\n this.writable instanceof MemoryFS &&\n this.writable.symlinks.has(filePath)\n ) {\n return true;\n } else {\n // HACK: Atlaspack fs does not provide `lstatSync`,\n // so we use `readdirSync` to check if the path is a symlink.\n let parent = path.resolve(filePath, '..');\n if (parent === filePath) {\n return false;\n }\n try {\n for (let dirent of this.readdirSync(parent, {withFileTypes: true})) {\n if (typeof dirent === 'string') {\n break; // {withFileTypes: true} not supported\n } else if (dirent.name === name) {\n if (dirent.isSymbolicLink()) {\n return true;\n }\n }\n }\n } catch (e) {\n if (e.code === 'ENOENT') {\n return false;\n }\n throw e;\n }\n }\n }\n\n return false;\n }\n\n async _copyPathForWrite(filePath: FilePath): Promise<FilePath> {\n filePath = await this._normalizePath(filePath);\n let dirPath = path.dirname(filePath);\n if (this.existsSync(dirPath) && !this.writable.existsSync(dirPath)) {\n await this.writable.mkdirp(dirPath);\n }\n return filePath;\n }\n\n _normalizePath(filePath: FilePath): FilePath {\n return path.resolve(this.cwd(), filePath);\n }\n\n // eslint-disable-next-line require-await\n async readFile(filePath: FilePath, encoding?: Encoding): Promise<any> {\n return this.readFileSync(filePath, encoding);\n }\n\n async writeFile(\n filePath: FilePath,\n contents: string | Buffer,\n options: ?FileOptions,\n ): Promise<void> {\n filePath = await this._copyPathForWrite(filePath);\n await this.writable.writeFile(filePath, contents, options);\n this.deleted.delete(filePath);\n }\n\n async copyFile(source: FilePath, destination: FilePath): Promise<void> {\n source = this._normalizePath(source);\n destination = await this._copyPathForWrite(destination);\n\n if (await this.writable.exists(source)) {\n await this.writable.writeFile(\n destination,\n await this.writable.readFile(source),\n );\n } else {\n await this.writable.writeFile(\n destination,\n await this.readable.readFile(source),\n );\n }\n\n this.deleted.delete(destination);\n }\n\n // eslint-disable-next-line require-await\n async stat(filePath: FilePath): Promise<FileStats> {\n return this.statSync(filePath);\n }\n\n async symlink(target: FilePath, filePath: FilePath): Promise<void> {\n target = this._normalizePath(target);\n filePath = this._normalizePath(filePath);\n await this.writable.symlink(target, filePath);\n this.deleted.delete(filePath);\n }\n\n async unlink(filePath: FilePath): Promise<void> {\n filePath = this._normalizePath(filePath);\n\n let toDelete = [filePath];\n\n if (this.writable instanceof MemoryFS && this._isSymlink(filePath)) {\n this.writable.symlinks.delete(filePath);\n } else if (this.statSync(filePath).isDirectory()) {\n let stack = [filePath];\n\n // Recursively add every descendant path to deleted.\n while (stack.length) {\n let root = nullthrows(stack.pop());\n for (let ent of this.readdirSync(root, {withFileTypes: true})) {\n if (typeof ent === 'string') {\n let childPath = path.join(root, ent);\n toDelete.push(childPath);\n if (this.statSync(childPath).isDirectory()) {\n stack.push(childPath);\n }\n } else {\n let childPath = path.join(root, ent.name);\n toDelete.push(childPath);\n if (ent.isDirectory()) {\n stack.push(childPath);\n }\n }\n }\n }\n }\n\n try {\n await this.writable.unlink(filePath);\n } catch (e) {\n if (e.code === 'ENOENT' && !this.readable.existsSync(filePath)) {\n throw e;\n }\n }\n\n for (let pathToDelete of toDelete) {\n this.deleted.add(pathToDelete);\n }\n }\n\n async mkdirp(dir: FilePath): Promise<void> {\n dir = this._normalizePath(dir);\n await this.writable.mkdirp(dir);\n\n if (this.deleted != null) {\n let root = path.parse(dir).root;\n while (dir !== root) {\n this.deleted.delete(dir);\n dir = path.dirname(dir);\n }\n }\n }\n\n async rimraf(filePath: FilePath): Promise<void> {\n try {\n await this.unlink(filePath);\n } catch (e) {\n // noop\n }\n }\n\n // eslint-disable-next-line require-await\n async ncp(source: FilePath, destination: FilePath): Promise<void> {\n // TODO: Implement this correctly.\n return this.writable.ncp(source, destination);\n }\n\n createReadStream(filePath: FilePath, opts?: ?FileOptions): Readable {\n filePath = this._deletedThrows(filePath);\n if (this.writable.existsSync(filePath)) {\n return this.writable.createReadStream(filePath, opts);\n }\n\n return this.readable.createReadStream(filePath, opts);\n }\n\n createWriteStream(path: FilePath, opts?: ?FileOptions): Writable {\n path = this._normalizePath(path);\n this.deleted.delete(path);\n return this.writable.createWriteStream(path, opts);\n }\n\n cwd(): FilePath {\n return this._cwd;\n }\n\n chdir(path: FilePath): void {\n this._cwd = this._checkExists(path);\n }\n\n // eslint-disable-next-line require-await\n async realpath(filePath: FilePath): Promise<FilePath> {\n return this.realpathSync(filePath);\n }\n\n readFileSync(filePath: FilePath, encoding?: Encoding): any {\n filePath = this.realpathSync(filePath);\n try {\n // $FlowFixMe[incompatible-call]\n return this.writable.readFileSync(filePath, encoding);\n } catch (err) {\n // $FlowFixMe[incompatible-call]\n return this.readable.readFileSync(filePath, encoding);\n }\n }\n\n statSync(filePath: FilePath): FileStats {\n filePath = this._normalizePath(filePath);\n try {\n return this.writable.statSync(filePath);\n } catch (e) {\n if (e.code === 'ENOENT' && this.existsSync(filePath)) {\n return this.readable.statSync(filePath);\n }\n throw e;\n }\n }\n\n realpathSync(filePath: FilePath): FilePath {\n filePath = this._deletedThrows(filePath);\n filePath = this._deletedThrows(this.writable.realpathSync(filePath));\n if (!this.writable.existsSync(filePath)) {\n return this.readable.realpathSync(filePath);\n }\n return filePath;\n }\n\n // eslint-disable-next-line require-await\n async exists(filePath: FilePath): Promise<boolean> {\n return this.existsSync(filePath);\n }\n\n existsSync(filePath: FilePath): boolean {\n filePath = this._normalizePath(filePath);\n if (this.deleted.has(filePath)) return false;\n\n try {\n filePath = this.realpathSync(filePath);\n } catch (err) {\n if (err.code !== 'ENOENT') throw err;\n }\n\n if (this.deleted.has(filePath)) return false;\n\n return (\n this.writable.existsSync(filePath) || this.readable.existsSync(filePath)\n );\n }\n\n // eslint-disable-next-line require-await\n async readdir(path: FilePath, opts?: ReaddirOptions): Promise<any> {\n return this.readdirSync(path, opts);\n }\n\n readdirSync(dir: FilePath, opts?: ReaddirOptions): any {\n dir = this.realpathSync(dir);\n // Read from both filesystems and merge the results\n let entries = new Map();\n\n try {\n for (let entry: any of this.writable.readdirSync(dir, opts)) {\n let filePath = path.join(dir, entry.name ?? entry);\n if (this.deleted.has(filePath)) continue;\n entries.set(filePath, entry);\n }\n } catch {\n // noop\n }\n\n try {\n for (let entry: any of this.readable.readdirSync(dir, opts)) {\n let filePath = path.join(dir, entry.name ?? entry);\n if (this.deleted.has(filePath)) continue;\n if (entries.has(filePath)) continue;\n entries.set(filePath, entry);\n }\n } catch {\n // noop\n }\n\n return Array.from(entries.values());\n }\n\n async watch(\n dir: FilePath,\n fn: (err: ?Error, events: Array<Event>) => mixed,\n opts: WatcherOptions,\n ): Promise<AsyncSubscription> {\n let writableSubscription = await this.writable.watch(dir, fn, opts);\n let readableSubscription = await this.readable.watch(dir, fn, opts);\n return {\n unsubscribe: async () => {\n await writableSubscription.unsubscribe();\n await readableSubscription.unsubscribe();\n },\n };\n }\n\n async getEventsSince(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<Array<Event>> {\n let writableEvents = await this.writable.getEventsSince(\n dir,\n snapshot,\n opts,\n );\n let readableEvents = await this.readable.getEventsSince(\n dir,\n snapshot,\n opts,\n );\n return [...writableEvents, ...readableEvents];\n }\n\n async writeSnapshot(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<void> {\n await this.writable.writeSnapshot(dir, snapshot, opts);\n }\n\n findAncestorFile(\n fileNames: Array<string>,\n fromDir: FilePath,\n root: FilePath,\n ): ?FilePath {\n return findAncestorFile(this, fileNames, fromDir, root);\n }\n\n findNodeModule(moduleName: string, fromDir: FilePath): ?FilePath {\n return findNodeModule(this, moduleName, fromDir);\n }\n\n findFirstFile(filePaths: Array<FilePath>): ?FilePath {\n return findFirstFile(this, filePaths);\n }\n}\n\nclass FSError extends Error {\n code: string;\n path: FilePath;\n constructor(code: string, path: FilePath, message: string) {\n super(`${code}: ${path} ${message}`);\n this.name = 'FSError';\n this.code = code;\n this.path = path;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\n\nregisterSerializableClass(`${packageJSON.version}:OverlayFS`, OverlayFS);\n","// @flow strict-local\n\nimport path from 'path';\nimport {NodeFS} from './NodeFS';\nimport {getVcsStateSnapshot, getEventsSince} from '@atlaspack/rust';\nimport type {FilePath} from '@atlaspack/types-internal';\nimport type {Event, Options as WatcherOptions} from '@parcel/watcher';\nimport {registerSerializableClass} from '@atlaspack/build-cache';\nimport logger, {instrumentAsync} from '@atlaspack/logger';\nimport {getFeatureFlagValue} from '@atlaspack/feature-flags';\n\n// $FlowFixMe\nimport packageJSON from '../package.json';\n\nexport interface NodeVCSAwareFSOptions {\n gitRepoPath: null | FilePath;\n excludePatterns: Array<string>;\n logEventDiff: null | ((watcherEvents: Event[], vcsEvents: Event[]) => void);\n}\n\nexport type SerializedNodeVCSAwareFS = NodeVCSAwareFSOptions;\n\nexport class NodeVCSAwareFS extends NodeFS {\n /**\n * These files are excluded from 'dirty file' tracking even if they are\n * modified.\n */\n #excludePatterns: Array<string>;\n /**\n * Logging function for the diff between watcher events and vcs events.\n */\n #logEventDiff: null | ((watcherEvents: Event[], vcsEvents: Event[]) => void);\n /**\n * The path of the git repository containing the project root. Null if the\n * project is not a git repository.\n */\n #gitRepoPath: null | FilePath;\n\n constructor(options: NodeVCSAwareFSOptions) {\n super();\n this.#excludePatterns = options.excludePatterns;\n this.#logEventDiff = options.logEventDiff;\n this.#gitRepoPath = options.gitRepoPath;\n }\n\n // $FlowFixMe[incompatible-extend] the serialization API is not happy with inheritance\n static deserialize(data: SerializedNodeVCSAwareFS): NodeVCSAwareFS {\n const fs = new NodeVCSAwareFS({\n excludePatterns: data.excludePatterns,\n logEventDiff: null,\n gitRepoPath: data.gitRepoPath,\n });\n return fs;\n }\n\n // $FlowFixMe[incompatible-extend] the serialization API is not happy with inheritance\n serialize(): SerializedNodeVCSAwareFS {\n return {\n excludePatterns: this.#excludePatterns,\n logEventDiff: null,\n gitRepoPath: this.#gitRepoPath,\n };\n }\n\n setGitRepoPath(gitRepoPath: null | FilePath) {\n this.#gitRepoPath = gitRepoPath;\n }\n\n async getEventsSince(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<Array<Event>> {\n const gitRepoPath = this.#gitRepoPath;\n if (gitRepoPath == null) {\n return this.watcher().getEventsSince(dir, snapshot, opts);\n }\n\n const {nativeSnapshotPath, vcsState} = await instrumentAsync(\n 'NodeVCSAwareFS.readSnapshot',\n async () => {\n // Note: can't use toString() directly, or it won't resolve the promise\n const snapshotFile = await this.readFile(snapshot);\n const snapshotFileContent = snapshotFile.toString();\n return JSON.parse(snapshotFileContent);\n },\n );\n let watcherEventsSince = [];\n\n const vcsEventsSince =\n vcsState != null\n ? (\n await instrumentAsync('NodeVCSAwareFS::rust.getEventsSince', () =>\n getEventsSince(gitRepoPath, vcsState, null),\n )\n ).map((e) => ({\n path: e.path,\n type: e.changeType,\n }))\n : null;\n\n if (getFeatureFlagValue('vcsMode') !== 'NEW' && vcsEventsSince != null) {\n watcherEventsSince = await instrumentAsync(\n 'NodeVCSAwareFS::watchman.getEventsSince',\n () => this.watcher().getEventsSince(dir, nativeSnapshotPath, opts),\n );\n this.#logEventDiff?.(watcherEventsSince, vcsEventsSince);\n }\n\n if (['NEW_AND_CHECK', 'NEW'].includes(getFeatureFlagValue('vcsMode'))) {\n if (vcsEventsSince == null) {\n logger.error({\n origin: '@atlaspack/fs',\n message:\n 'Missing VCS state. There was an error when writing the snapshot. Please clear your cache.',\n meta: {\n trackableEvent: 'vcs_state_snapshot_read_failed',\n },\n });\n\n return [];\n }\n\n return vcsEventsSince;\n }\n\n return watcherEventsSince;\n }\n\n async writeSnapshot(\n dir: FilePath,\n snapshot: FilePath,\n opts: WatcherOptions,\n ): Promise<void> {\n const gitRepoPath = this.#gitRepoPath;\n if (gitRepoPath == null) {\n await this.watcher().writeSnapshot(dir, snapshot, opts);\n return;\n }\n\n const snapshotDirectory = path.dirname(snapshot);\n await this.mkdirp(snapshotDirectory);\n const filename = path.basename(snapshot, '.txt');\n const nativeSnapshotPath = path.join(\n snapshotDirectory,\n `${filename}.native-snapshot.txt`,\n );\n\n if (getFeatureFlagValue('vcsMode') !== 'NEW') {\n await instrumentAsync(\n 'NodeVCSAwareFS::watchman.writeSnapshot',\n async () => {\n await this.watcher().writeSnapshot(dir, nativeSnapshotPath, opts);\n },\n );\n }\n\n let vcsState = null;\n try {\n vcsState = await instrumentAsync(\n 'NodeVCSAwareFS::getVcsStateSnapshot',\n () => getVcsStateSnapshot(gitRepoPath, this.#excludePatterns),\n );\n\n logger.verbose({\n origin: '@atlaspack/fs',\n message: 'Expose VCS timing metrics',\n meta: {\n trackableEvent: 'vcs_timing_metrics',\n dirtyFilesExecutionTime: vcsState?.dirtyFilesExecutionTime,\n yarnStatesExecutionTime: vcsState?.yarnStatesExecutionTime,\n },\n });\n } catch (err) {\n logger.error({\n origin: '@atlaspack/fs',\n message: `Failed to get VCS state snapshot: ${err.message}`,\n meta: {\n trackableEvent: 'vcs_state_snapshot_failed',\n error: err,\n },\n });\n }\n\n const snapshotContents = {\n vcsState,\n nativeSnapshotPath,\n };\n await this.writeFile(snapshot, JSON.stringify(snapshotContents));\n }\n}\n\nregisterSerializableClass(\n `${packageJSON.version}:NodeVCSAwareFS`,\n NodeVCSAwareFS,\n);\n"],"names":["path","stream","promisify","pipeline","ncp","sourceFS","source","destinationFS","destination","filter","mkdirp","files","readdir","file","sourcePath","join","destPath","stats","stat","isFile","createReadStream","createWriteStream","isDirectory","NodeFS","constructor","Error","Readable","Writable","registerSerializableClass","SharedBuffer","packageJSON","WorkerFarm","Handle","nullthrows","EventEmitter","findAncestorFile","findNodeModule","findFirstFile","instances","Map","id","MemoryFS","_numWorkerInstances","_workerRegisterResolves","_emitter","workerFarm","farm","_cwd","resolve","sep","dirs","Directory","symlinks","watchers","events","_workerHandles","_eventQueue","set","on","deserialize","opts","existing","get","getWorkerApi","runHandle","handle","fs","WorkerFS","serialize","createReverseHandle","fn","args","$$raw","decrementWorkerInstance","length","emit","cwd","chdir","dir","_normalizePath","filePath","realpath","normalize","startsWith","root","base","parse","parts","slice","split","concat","res","part","symlink","writeFile","contents","options","has","FSError","dirname","buffer","makeShared","mode","write","File","_sendWorkerEvent","type","entry","_triggerEvent","readFile","encoding","readFileSync","read","toString","copyFile","statSync","readdirSync","endsWith","indexOf","name","withFileTypes","push","Dirent","from","S_IFLNK","unlink","delete","Promise","rimraf","keys","dirPath","destName","exists","ReadStream","WriteStream","realpathSync","target","existsSync","event","size","clearTimeout","_watcherTimer","setTimeout","relevantEvents","watcher","trigger","_registerWorker","all","map","workerHandle","workerApi","watch","Watcher","Set","add","unsubscribe","getEventsSince","snapshot","len","Number","ignore","some","i","writeSnapshot","fileNames","fromDir","moduleName","filePaths","code","message","captureStackTrace","reading","bytesRead","_read","then","byteLength","err","emitClose","autoDestroy","Buffer","alloc","_write","chunk","callback","c","_final","catch","S_IFREG","S_IFDIR","S_IFMT","Entry","now","Date","atime","mtime","ctime","birthtime","access","modify","getSize","Stat","dev","ino","nlink","uid","gid","rdev","blksize","blocks","atimeMs","mtimeMs","ctimeMs","birthtimeMs","Boolean","isBlockDevice","isCharacterDevice","isSymbolicLink","isFIFO","isSocket","contentsBuffer","process","browser","shared","handleFn","methodName","version","module","exports","JSON","basename","moduleDir","pathRoot","fileName","OverlayFS","deleted","workerFarmOrFS","readable","writable","_deletedThrows","_checkExists","_isSymlink","segments","pop","parent","dirent","e","_copyPathForWrite","toDelete","stack","ent","childPath","pathToDelete","entries","Array","values","writableSubscription","readableSubscription","writableEvents","readableEvents","getVcsStateSnapshot","logger","instrumentAsync","getFeatureFlagValue","NodeVCSAwareFS","excludePatterns","logEventDiff","gitRepoPath","data","setGitRepoPath","nativeSnapshotPath","vcsState","snapshotFile","snapshotFileContent","watcherEventsSince","vcsEventsSince","changeType","includes","error","origin","meta","trackableEvent","snapshotDirectory","filename","verbose","dirtyFilesExecutionTime","yarnStatesExecutionTime","snapshotContents","stringify"],"version":3,"file":"browser.js.map"}
package/lib/index.js CHANGED
@@ -1018,7 +1018,7 @@ function $1e76aa5674175761$var$ncp(source, dest, options, callback) {
1018
1018
 
1019
1019
 
1020
1020
  var $d7f6ae9f917393f7$exports = {};
1021
- $d7f6ae9f917393f7$exports = JSON.parse("{\"name\":\"@atlaspack/fs\",\"version\":\"2.15.6\",\"description\":\"Blazing fast, zero configuration web application bundler\",\"license\":\"(MIT OR Apache-2.0)\",\"publishConfig\":{\"access\":\"public\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/atlassian-labs/atlaspack.git\"},\"main\":\"lib/index.js\",\"source\":\"src/index.js\",\"types\":\"index.d.ts\",\"engines\":{\"node\":\">= 16.0.0\"},\"targets\":{\"types\":false,\"main\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}},\"browser\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}}},\"scripts\":{\"build-ts\":\"mkdir -p lib && flow-to-ts src/types.js > lib/types.d.ts\",\"check-ts\":\"tsc --noEmit index.d.ts\"},\"dependencies\":{\"@atlaspack/build-cache\":\"2.13.3\",\"@atlaspack/feature-flags\":\"2.17.0\",\"@atlaspack/logger\":\"2.14.10\",\"@atlaspack/rust\":\"3.3.5\",\"@atlaspack/types-internal\":\"2.14.9\",\"@atlaspack/utils\":\"2.14.11\",\"@parcel/watcher\":\"^2.0.7\",\"@atlaspack/workers\":\"2.14.11\"},\"devDependencies\":{\"@atlaspack/watcher-watchman-js\":\"2.14.11\",\"graceful-fs\":\"^4.2.4\",\"ncp\":\"^2.0.0\",\"nullthrows\":\"^1.1.1\",\"utility-types\":\"^3.10.0\"},\"browser\":{\"@atlaspack/fs\":\"./lib/browser.js\",\"./src/NodeFS.js\":\"./src/NodeFS.browser.js\"},\"type\":\"commonjs\"}");
1021
+ $d7f6ae9f917393f7$exports = JSON.parse("{\"name\":\"@atlaspack/fs\",\"version\":\"2.15.8\",\"description\":\"Blazing fast, zero configuration web application bundler\",\"license\":\"(MIT OR Apache-2.0)\",\"publishConfig\":{\"access\":\"public\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/atlassian-labs/atlaspack.git\"},\"main\":\"lib/index.js\",\"source\":\"src/index.js\",\"types\":\"index.d.ts\",\"engines\":{\"node\":\">= 16.0.0\"},\"targets\":{\"types\":false,\"main\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}},\"browser\":{\"includeNodeModules\":{\"@atlaspack/build-cache\":false,\"@atlaspack/diagnostic\":false,\"@atlaspack/feature-flags\":false,\"@atlaspack/logger\":false,\"@atlaspack/rust\":false,\"@atlaspack/types-internal\":false,\"@atlaspack/utils\":false,\"@atlaspack/watcher-watchman-js\":false,\"@parcel/watcher\":false,\"@atlaspack/workers\":false}}},\"scripts\":{\"build-ts\":\"mkdir -p lib && flow-to-ts src/types.js > lib/types.d.ts\",\"check-ts\":\"tsc --noEmit index.d.ts\"},\"dependencies\":{\"@atlaspack/build-cache\":\"2.13.3\",\"@atlaspack/feature-flags\":\"2.18.1\",\"@atlaspack/logger\":\"2.14.11\",\"@atlaspack/rust\":\"3.3.5\",\"@atlaspack/types-internal\":\"2.14.11\",\"@atlaspack/utils\":\"2.15.1\",\"@parcel/watcher\":\"^2.0.7\",\"@atlaspack/workers\":\"2.14.13\"},\"devDependencies\":{\"@atlaspack/watcher-watchman-js\":\"2.14.13\",\"graceful-fs\":\"^4.2.4\",\"ncp\":\"^2.0.0\",\"nullthrows\":\"^1.1.1\",\"utility-types\":\"^3.10.0\"},\"browser\":{\"@atlaspack/fs\":\"./lib/browser.js\",\"./src/NodeFS.js\":\"./src/NodeFS.browser.js\"},\"type\":\"commonjs\"}");
1022
1022
 
1023
1023
 
1024
1024