@ricsam/isolate-fs 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,4 @@
1
- // @bun @bun-cjs
2
- (function(exports, require, module, __filename, __dirname) {var __create = Object.create;
1
+ var __create = Object.create;
3
2
  var __getProtoOf = Object.getPrototypeOf;
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -809,6 +808,5 @@ async function setupFs(context, options) {
809
808
  }
810
809
  };
811
810
  }
812
- })
813
811
 
814
- //# debugId=DECD3C460550A25F64756E2164756E21
812
+ //# debugId=CC058BC7B9FC9E3564756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import ivm from \"isolated-vm\";\nimport { setupCore, clearAllInstanceState } from \"@ricsam/isolate-core\";\n\nexport { clearAllInstanceState };\n\n// ============================================================================\n// FileSystemHandler Interface\n// ============================================================================\n\nexport interface FileSystemHandler {\n /** Get or create a file handle at the given path */\n getFileHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void>;\n\n /** Get or create a directory handle at the given path */\n getDirectoryHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void>;\n\n /** Remove a file or directory at the given path */\n removeEntry(\n path: string,\n options?: { recursive?: boolean }\n ): Promise<void>;\n\n /** List contents of a directory */\n readDirectory(\n path: string\n ): Promise<Array<{ name: string; kind: \"file\" | \"directory\" }>>;\n\n /** Read file content */\n readFile(\n path: string\n ): Promise<{ data: Uint8Array; size: number; lastModified: number; type: string }>;\n\n /** Write data to a file */\n writeFile(\n path: string,\n data: Uint8Array,\n position?: number\n ): Promise<void>;\n\n /** Truncate a file to a specific size */\n truncateFile(path: string, size: number): Promise<void>;\n\n /** Get file metadata without reading content */\n getFileMetadata(\n path: string\n ): Promise<{ size: number; lastModified: number; type: string }>;\n}\n\nexport interface FsOptions {\n /** Get a file system handler for the given path */\n getDirectory(path: string): Promise<FileSystemHandler>;\n}\n\nexport interface FsHandle {\n dispose(): void;\n}\n\n// ============================================================================\n// Instance State Management\n// ============================================================================\n\nconst instanceStateMap = new WeakMap<ivm.Context, Map<number, unknown>>();\nlet nextInstanceId = 1;\n\nfunction getInstanceStateMapForContext(\n context: ivm.Context\n): Map<number, unknown> {\n let map = instanceStateMap.get(context);\n if (!map) {\n map = new Map();\n instanceStateMap.set(context, map);\n }\n return map;\n}\n\n// ============================================================================\n// State Types\n// ============================================================================\n\ninterface DirectoryHandleState {\n instanceId: number;\n path: string; // Path within handler's root, e.g., \"/\" or \"/subdir\"\n name: string; // Directory name, e.g., \"\" for root or \"subdir\"\n handler: FileSystemHandler; // Handler for this directory tree\n}\n\ninterface FileHandleState {\n instanceId: number;\n path: string; // Path within handler's root, e.g., \"/file.txt\"\n name: string; // File name, e.g., \"file.txt\"\n handler: FileSystemHandler; // Handler for this file\n}\n\ninterface WritableStreamState {\n instanceId: number;\n filePath: string; // Path to the file being written\n position: number; // Current write position (for seek)\n buffer: Uint8Array[]; // Buffered writes before close\n closed: boolean; // Whether stream has been closed\n handler: FileSystemHandler; // Handler for this stream\n}\n\n// ============================================================================\n// FileSystemDirectoryHandle Implementation\n// ============================================================================\n\nfunction setupFileSystemDirectoryHandle(\n context: ivm.Context,\n stateMap: Map<number, unknown>\n): void {\n const global = context.global;\n\n // Property getters\n global.setSync(\n \"__FileSystemDirectoryHandle_get_name\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n return state?.name ?? \"\";\n })\n );\n\n global.setSync(\n \"__FileSystemDirectoryHandle_get_path\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n return state?.path ?? \"/\";\n })\n );\n\n // getFileHandle - async reference\n const getFileHandleRef = new ivm.Reference(\n async (instanceId: number, name: string, optionsJson: string) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n const options = JSON.parse(optionsJson) as { create?: boolean };\n const childPath = state.path === \"/\" ? `/${name}` : `${state.path}/${name}`;\n\n try {\n await state.handler.getFileHandle(childPath, options);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n\n // Create file handle state with parent's handler\n const fileInstanceId = nextInstanceId++;\n const fileState: FileHandleState = {\n instanceId: fileInstanceId,\n path: childPath,\n name,\n handler: state.handler,\n };\n stateMap.set(fileInstanceId, fileState);\n\n return JSON.stringify({ instanceId: fileInstanceId });\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_getFileHandle_ref\", getFileHandleRef);\n\n // getDirectoryHandle - async reference\n const getDirectoryHandleRef = new ivm.Reference(\n async (instanceId: number, name: string, optionsJson: string) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n const options = JSON.parse(optionsJson) as { create?: boolean };\n const childPath = state.path === \"/\" ? `/${name}` : `${state.path}/${name}`;\n\n try {\n await state.handler.getDirectoryHandle(childPath, options);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n\n // Create directory handle state with parent's handler\n const dirInstanceId = nextInstanceId++;\n const dirState: DirectoryHandleState = {\n instanceId: dirInstanceId,\n path: childPath,\n name,\n handler: state.handler,\n };\n stateMap.set(dirInstanceId, dirState);\n\n return JSON.stringify({ instanceId: dirInstanceId });\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_getDirectoryHandle_ref\", getDirectoryHandleRef);\n\n // removeEntry - async reference\n const removeEntryRef = new ivm.Reference(\n async (instanceId: number, name: string, optionsJson: string) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n const options = JSON.parse(optionsJson) as { recursive?: boolean };\n const childPath = state.path === \"/\" ? `/${name}` : `${state.path}/${name}`;\n\n try {\n await state.handler.removeEntry(childPath, options);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_removeEntry_ref\", removeEntryRef);\n\n // readDirectory - async reference (for entries/keys/values)\n const readDirectoryRef = new ivm.Reference(async (instanceId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n try {\n const entries = await state.handler.readDirectory(state.path);\n\n // Create handle states for each entry and return with instance IDs\n const result = entries.map((entry) => {\n const entryId = nextInstanceId++;\n const entryPath = state.path === \"/\" ? `/${entry.name}` : `${state.path}/${entry.name}`;\n\n if (entry.kind === \"file\") {\n const fileState: FileHandleState = {\n instanceId: entryId,\n path: entryPath,\n name: entry.name,\n handler: state.handler,\n };\n stateMap.set(entryId, fileState);\n } else {\n const dirState: DirectoryHandleState = {\n instanceId: entryId,\n path: entryPath,\n name: entry.name,\n handler: state.handler,\n };\n stateMap.set(entryId, dirState);\n }\n\n return {\n name: entry.name,\n kind: entry.kind,\n instanceId: entryId,\n };\n });\n\n return JSON.stringify(result);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n });\n global.setSync(\"__FileSystemDirectoryHandle_readDirectory_ref\", readDirectoryRef);\n\n // isSameEntry - sync callback\n global.setSync(\n \"__FileSystemDirectoryHandle_isSameEntry\",\n new ivm.Callback((id1: number, id2: number) => {\n const state1 = stateMap.get(id1) as DirectoryHandleState | undefined;\n const state2 = stateMap.get(id2) as DirectoryHandleState | undefined;\n if (!state1 || !state2) return false;\n return state1.path === state2.path;\n })\n );\n\n // resolve - async reference\n const resolveRef = new ivm.Reference(\n async (instanceId: number, descendantId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n const descendantState = stateMap.get(descendantId) as\n | DirectoryHandleState\n | FileHandleState\n | undefined;\n\n if (!state || !descendantState) {\n return \"null\";\n }\n\n // Check if descendant is actually a descendant\n const basePath = state.path === \"/\" ? \"\" : state.path;\n if (!descendantState.path.startsWith(basePath + \"/\") && descendantState.path !== state.path) {\n return \"null\";\n }\n\n // Build path components\n const relativePath = descendantState.path.slice(basePath.length);\n const components = relativePath.split(\"/\").filter((c) => c.length > 0);\n\n return JSON.stringify(components);\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_resolve_ref\", resolveRef);\n\n // Inject FileSystemDirectoryHandle class\n const directoryHandleCode = `\n(function() {\n const _directoryHandleInstanceIds = new WeakMap();\n\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|NotFoundError|TypeMismatchError|InvalidModificationError|Error)\\\\](.*)$/);\n if (match) {\n if (['NotFoundError', 'TypeMismatchError', 'InvalidModificationError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n class FileSystemDirectoryHandle {\n constructor(path, name) {\n // Internal construction from instance ID\n if (typeof path === 'number' && name === null) {\n _directoryHandleInstanceIds.set(this, path);\n return;\n }\n const instanceId = __FileSystemDirectoryHandle_construct(path, name);\n _directoryHandleInstanceIds.set(this, instanceId);\n }\n\n static _fromInstanceId(instanceId) {\n return new FileSystemDirectoryHandle(instanceId, null);\n }\n\n _getInstanceId() {\n return _directoryHandleInstanceIds.get(this);\n }\n\n get kind() {\n return 'directory';\n }\n\n get name() {\n return __FileSystemDirectoryHandle_get_name(this._getInstanceId());\n }\n\n getFileHandle(name, options = {}) {\n try {\n const resultJson = __FileSystemDirectoryHandle_getFileHandle_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), name, JSON.stringify(options)]\n );\n const result = JSON.parse(resultJson);\n return FileSystemFileHandle._fromInstanceId(result.instanceId);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n getDirectoryHandle(name, options = {}) {\n try {\n const resultJson = __FileSystemDirectoryHandle_getDirectoryHandle_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), name, JSON.stringify(options)]\n );\n const result = JSON.parse(resultJson);\n return FileSystemDirectoryHandle._fromInstanceId(result.instanceId);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n removeEntry(name, options = {}) {\n try {\n __FileSystemDirectoryHandle_removeEntry_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), name, JSON.stringify(options)]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n async *entries() {\n let entriesJson;\n try {\n entriesJson = __FileSystemDirectoryHandle_readDirectory_ref.applySyncPromise(\n undefined,\n [this._getInstanceId()]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n const entries = JSON.parse(entriesJson);\n for (const entry of entries) {\n if (entry.kind === 'file') {\n yield [entry.name, FileSystemFileHandle._fromInstanceId(entry.instanceId)];\n } else {\n yield [entry.name, FileSystemDirectoryHandle._fromInstanceId(entry.instanceId)];\n }\n }\n }\n\n async *keys() {\n for await (const [name] of this.entries()) {\n yield name;\n }\n }\n\n async *values() {\n for await (const [, handle] of this.entries()) {\n yield handle;\n }\n }\n\n [Symbol.asyncIterator]() {\n return this.entries();\n }\n\n isSameEntry(other) {\n if (!(other instanceof FileSystemDirectoryHandle)) {\n return false;\n }\n return __FileSystemDirectoryHandle_isSameEntry(\n this._getInstanceId(),\n other._getInstanceId()\n );\n }\n\n resolve(possibleDescendant) {\n try {\n const resultJson = __FileSystemDirectoryHandle_resolve_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), possibleDescendant._getInstanceId()]\n );\n return resultJson === 'null' ? null : JSON.parse(resultJson);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n }\n\n globalThis.FileSystemDirectoryHandle = FileSystemDirectoryHandle;\n})();\n`;\n\n context.evalSync(directoryHandleCode);\n}\n\n// ============================================================================\n// FileSystemFileHandle Implementation\n// ============================================================================\n\nfunction setupFileSystemFileHandle(\n context: ivm.Context,\n stateMap: Map<number, unknown>\n): void {\n const global = context.global;\n\n // Property getters\n global.setSync(\n \"__FileSystemFileHandle_get_name\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n return state?.name ?? \"\";\n })\n );\n\n global.setSync(\n \"__FileSystemFileHandle_get_path\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n return state?.path ?? \"\";\n })\n );\n\n // getFile - async reference\n const getFileRef = new ivm.Reference(async (instanceId: number) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]File handle not found\");\n }\n\n try {\n const fileData = await state.handler.readFile(state.path);\n return JSON.stringify({\n name: state.name,\n data: Array.from(fileData.data),\n size: fileData.size,\n lastModified: fileData.lastModified,\n type: fileData.type,\n });\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n });\n global.setSync(\"__FileSystemFileHandle_getFile_ref\", getFileRef);\n\n // createWritable - async reference\n const createWritableRef = new ivm.Reference(\n async (instanceId: number, _optionsJson: string) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]File handle not found\");\n }\n\n // Create writable stream state with handler reference\n const streamInstanceId = nextInstanceId++;\n const streamState: WritableStreamState = {\n instanceId: streamInstanceId,\n filePath: state.path,\n position: 0,\n buffer: [],\n closed: false,\n handler: state.handler,\n };\n stateMap.set(streamInstanceId, streamState);\n\n return streamInstanceId;\n }\n );\n global.setSync(\"__FileSystemFileHandle_createWritable_ref\", createWritableRef);\n\n // isSameEntry - sync callback\n global.setSync(\n \"__FileSystemFileHandle_isSameEntry\",\n new ivm.Callback((id1: number, id2: number) => {\n const state1 = stateMap.get(id1) as FileHandleState | undefined;\n const state2 = stateMap.get(id2) as FileHandleState | undefined;\n if (!state1 || !state2) return false;\n return state1.path === state2.path;\n })\n );\n\n // Inject FileSystemFileHandle class\n const fileHandleCode = `\n(function() {\n const _fileHandleInstanceIds = new WeakMap();\n\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|NotFoundError|TypeMismatchError|InvalidModificationError|Error)\\\\](.*)$/);\n if (match) {\n if (['NotFoundError', 'TypeMismatchError', 'InvalidModificationError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n class FileSystemFileHandle {\n constructor(path, name) {\n // Internal construction from instance ID\n if (typeof path === 'number' && name === null) {\n _fileHandleInstanceIds.set(this, path);\n return;\n }\n const instanceId = __FileSystemFileHandle_construct(path, name);\n _fileHandleInstanceIds.set(this, instanceId);\n }\n\n static _fromInstanceId(instanceId) {\n return new FileSystemFileHandle(instanceId, null);\n }\n\n _getInstanceId() {\n return _fileHandleInstanceIds.get(this);\n }\n\n get kind() {\n return 'file';\n }\n\n get name() {\n return __FileSystemFileHandle_get_name(this._getInstanceId());\n }\n\n getFile() {\n try {\n const metadataJson = __FileSystemFileHandle_getFile_ref.applySyncPromise(\n undefined,\n [this._getInstanceId()]\n );\n const metadata = JSON.parse(metadataJson);\n // Create File object from metadata and content\n const content = new Uint8Array(metadata.data);\n return new File([content], metadata.name, {\n type: metadata.type,\n lastModified: metadata.lastModified\n });\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n createWritable(options = {}) {\n try {\n const streamId = __FileSystemFileHandle_createWritable_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), JSON.stringify(options)]\n );\n return FileSystemWritableFileStream._fromInstanceId(streamId);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n isSameEntry(other) {\n if (!(other instanceof FileSystemFileHandle)) {\n return false;\n }\n return __FileSystemFileHandle_isSameEntry(\n this._getInstanceId(),\n other._getInstanceId()\n );\n }\n }\n\n globalThis.FileSystemFileHandle = FileSystemFileHandle;\n})();\n`;\n\n context.evalSync(fileHandleCode);\n}\n\n// ============================================================================\n// FileSystemWritableFileStream Implementation\n// ============================================================================\n\nfunction setupFileSystemWritableFileStream(\n context: ivm.Context,\n stateMap: Map<number, unknown>\n): void {\n const global = context.global;\n\n // write - async reference\n const writeRef = new ivm.Reference(\n async (instanceId: number, bytesJson: string, position: number | null) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is closed\");\n }\n\n const bytes = JSON.parse(bytesJson) as number[];\n const data = new Uint8Array(bytes);\n\n // Update position if specified\n if (position !== null) {\n state.position = position;\n }\n\n // Write to handler\n try {\n await state.handler.writeFile(state.filePath, data, state.position);\n state.position += data.length;\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__FileSystemWritableFileStream_write_ref\", writeRef);\n\n // seek - sync callback\n global.setSync(\n \"__FileSystemWritableFileStream_seek\",\n new ivm.Callback((instanceId: number, position: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is closed\");\n }\n state.position = position;\n })\n );\n\n // truncate - async reference\n const truncateRef = new ivm.Reference(async (instanceId: number, size: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is closed\");\n }\n\n try {\n await state.handler.truncateFile(state.filePath, size);\n // Adjust position if it's beyond the new size\n if (state.position > size) {\n state.position = size;\n }\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n });\n global.setSync(\"__FileSystemWritableFileStream_truncate_ref\", truncateRef);\n\n // close - async reference\n const closeRef = new ivm.Reference(async (instanceId: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is already closed\");\n }\n\n state.closed = true;\n });\n global.setSync(\"__FileSystemWritableFileStream_close_ref\", closeRef);\n\n // abort - async reference\n const abortRef = new ivm.Reference(async (instanceId: number, _reason: string | null) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n\n state.closed = true;\n state.buffer = []; // Discard any buffered data\n });\n global.setSync(\"__FileSystemWritableFileStream_abort_ref\", abortRef);\n\n // locked - sync callback\n global.setSync(\n \"__FileSystemWritableFileStream_get_locked\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n return state ? !state.closed : false;\n })\n );\n\n // Inject FileSystemWritableFileStream class\n const writableStreamCode = `\n(function() {\n const _writableStreamInstanceIds = new WeakMap();\n\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|InvalidStateError|NotFoundError|Error)\\\\](.*)$/);\n if (match) {\n if (['InvalidStateError', 'NotFoundError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n class FileSystemWritableFileStream {\n constructor(instanceId) {\n _writableStreamInstanceIds.set(this, instanceId);\n }\n\n static _fromInstanceId(instanceId) {\n return new FileSystemWritableFileStream(instanceId);\n }\n\n _getInstanceId() {\n return _writableStreamInstanceIds.get(this);\n }\n\n write(data) {\n try {\n // Handle different data types\n let writeData;\n let position = null;\n let type = 'write';\n\n if (data && typeof data === 'object' && !ArrayBuffer.isView(data) &&\n !(data instanceof Blob) && !(data instanceof ArrayBuffer) &&\n !Array.isArray(data) && typeof data.type === 'string') {\n // WriteParams object: { type, data, position, size }\n type = data.type || 'write';\n if (type === 'seek') {\n return this.seek(data.position);\n }\n if (type === 'truncate') {\n return this.truncate(data.size);\n }\n writeData = data.data;\n position = data.position ?? null;\n } else {\n writeData = data;\n }\n\n // Convert data to bytes array for transfer\n let bytes;\n if (typeof writeData === 'string') {\n bytes = Array.from(new TextEncoder().encode(writeData));\n } else if (writeData instanceof Blob) {\n // Synchronously get blob bytes - use the internal callback\n const blobText = writeData.text ? writeData.text() : '';\n bytes = Array.from(new TextEncoder().encode(blobText));\n } else if (writeData instanceof ArrayBuffer) {\n bytes = Array.from(new Uint8Array(writeData));\n } else if (ArrayBuffer.isView(writeData)) {\n bytes = Array.from(new Uint8Array(writeData.buffer, writeData.byteOffset, writeData.byteLength));\n } else if (Array.isArray(writeData)) {\n bytes = writeData;\n } else {\n throw new TypeError('Invalid data type for write');\n }\n\n __FileSystemWritableFileStream_write_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), JSON.stringify(bytes), position]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n seek(position) {\n try {\n __FileSystemWritableFileStream_seek(this._getInstanceId(), position);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n truncate(size) {\n try {\n __FileSystemWritableFileStream_truncate_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), size]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n close() {\n try {\n __FileSystemWritableFileStream_close_ref.applySyncPromise(\n undefined,\n [this._getInstanceId()]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n abort(reason) {\n try {\n __FileSystemWritableFileStream_abort_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), reason ? String(reason) : null]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n get locked() {\n return __FileSystemWritableFileStream_get_locked(this._getInstanceId());\n }\n\n getWriter() {\n const stream = this;\n let released = false;\n let closedResolve;\n let closedReject;\n const closedPromise = new Promise((resolve, reject) => {\n closedResolve = resolve;\n closedReject = reject;\n });\n\n return {\n get closed() {\n return closedPromise;\n },\n get desiredSize() {\n return 1;\n },\n get ready() {\n return Promise.resolve();\n },\n write(chunk) {\n if (released) {\n return Promise.reject(new TypeError('Writer has been released'));\n }\n try {\n stream.write(chunk);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n },\n close() {\n if (released) {\n return Promise.reject(new TypeError('Writer has been released'));\n }\n try {\n stream.close();\n closedResolve();\n return Promise.resolve();\n } catch (err) {\n closedReject(err);\n return Promise.reject(err);\n }\n },\n abort(reason) {\n if (released) {\n return Promise.reject(new TypeError('Writer has been released'));\n }\n try {\n stream.abort(reason);\n closedReject(reason || new Error('Stream aborted'));\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n },\n releaseLock() {\n released = true;\n }\n };\n }\n }\n\n globalThis.FileSystemWritableFileStream = FileSystemWritableFileStream;\n})();\n`;\n\n context.evalSync(writableStreamCode);\n}\n\n// ============================================================================\n// Global getDirectory(path) Implementation\n// ============================================================================\n\nfunction setupGetDirectoryGlobal(\n context: ivm.Context,\n stateMap: Map<number, unknown>,\n options: FsOptions\n): void {\n const global = context.global;\n\n // getDirectory - async reference that creates directory handle at specified path\n const getDirectoryRef = new ivm.Reference(async (path: string) => {\n // Get handler for this path from the options factory\n const handler = await options.getDirectory(path);\n\n const instanceId = nextInstanceId++;\n // Path is \"/\" since handler is rooted at the requested path\n const state: DirectoryHandleState = {\n instanceId,\n path: \"/\",\n name: path.split(\"/\").filter(Boolean).pop() || \"\",\n handler,\n };\n stateMap.set(instanceId, state);\n return instanceId;\n });\n global.setSync(\"__getDirectory_ref\", getDirectoryRef);\n\n // Inject global getDirectory (async)\n const getDirectoryCode = `\n(function() {\n globalThis.getDirectory = async function(path) {\n const instanceId = await __getDirectory_ref.applySyncPromise(undefined, [path]);\n return FileSystemDirectoryHandle._fromInstanceId(instanceId);\n };\n})();\n`;\n context.evalSync(getDirectoryCode);\n}\n\n// ============================================================================\n// Main Setup Function\n// ============================================================================\n\n/**\n * Setup File System Access API in an isolated-vm context\n *\n * Provides an OPFS-compatible FileSystemDirectoryHandle API\n *\n * @example\n * const handle = await setupFs(context, {\n * getDirectory: async (path) => {\n * // Return a FileSystemHandler rooted at the given path\n * return createNodeFileSystemHandler(`./data${path}`);\n * }\n * });\n *\n * await context.eval(`\n * const root = await getDirectory(\"/uploads\");\n * const fileHandle = await root.getFileHandle(\"test.txt\", { create: true });\n * const writable = await fileHandle.createWritable();\n * await writable.write(\"hello world\");\n * await writable.close();\n * `);\n */\nexport async function setupFs(\n context: ivm.Context,\n options: FsOptions\n): Promise<FsHandle> {\n // Setup core APIs first (Blob, File, AbortController, Streams, etc.)\n await setupCore(context);\n\n const stateMap = getInstanceStateMapForContext(context);\n\n // Setup FileSystemDirectoryHandle\n setupFileSystemDirectoryHandle(context, stateMap);\n\n // Setup FileSystemFileHandle\n setupFileSystemFileHandle(context, stateMap);\n\n // Setup FileSystemWritableFileStream\n setupFileSystemWritableFileStream(context, stateMap);\n\n // Setup global getDirectory(path)\n setupGetDirectoryGlobal(context, stateMap, options);\n\n return {\n dispose() {\n // Clear state for this context\n stateMap.clear();\n },\n };\n}\n\n// Export node adapter\nexport { createNodeFileSystemHandler } from \"./node-adapter.cjs\";\nexport type { NodeFileSystemHandlerOptions } from \"./node-adapter.cjs\";\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "DECD3C460550A25F64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "CC058BC7B9FC9E3564756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,4 @@
1
- // @bun @bun-cjs
2
- (function(exports, require, module, __filename, __dirname) {var __create = Object.create;
1
+ var __create = Object.create;
3
2
  var __getProtoOf = Object.getPrototypeOf;
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -46,8 +45,8 @@ __export(exports_node_adapter, {
46
45
  createNodeFileSystemHandler: () => createNodeFileSystemHandler
47
46
  });
48
47
  module.exports = __toCommonJS(exports_node_adapter);
49
- var nodeFs = __toESM(require("fs"));
50
- var nodePath = __toESM(require("path"));
48
+ var nodeFs = __toESM(require("node:fs"));
49
+ var nodePath = __toESM(require("node:path"));
51
50
  var import_mime_types = require("mime-types");
52
51
  function createNodeFileSystemHandler(rootPath, options) {
53
52
  const fs = options?.fs ?? nodeFs;
@@ -225,6 +224,5 @@ function createNodeFileSystemHandler(rootPath, options) {
225
224
  }
226
225
  };
227
226
  }
228
- })
229
227
 
230
- //# debugId=7AC7CC40F407400764756E2164756E21
228
+ //# debugId=77DE8B80714C24D564756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import * as nodeFs from \"node:fs\";\nimport * as nodePath from \"node:path\";\nimport { lookup as mimeLookup } from \"mime-types\";\nimport type { FileSystemHandler } from \"./index.cjs\";\n\nexport interface NodeFileSystemHandlerOptions {\n /** Custom fs module (e.g., memfs for testing). Defaults to Node.js fs */\n fs?: typeof nodeFs;\n}\n\n/**\n * Create a FileSystemHandler backed by the Node.js filesystem\n *\n * @param rootPath - Absolute path to the root directory for the sandbox\n * @param options - Optional configuration\n * @returns FileSystemHandler implementation\n *\n * @example\n * import { createNodeFileSystemHandler } from \"@ricsam/isolate-fs\";\n *\n * const handler = createNodeFileSystemHandler(\"/tmp/sandbox\");\n *\n * // Use with createRuntime\n * const runtime = await createRuntime({\n * fs: { handler }\n * });\n */\nexport function createNodeFileSystemHandler(\n rootPath: string,\n options?: NodeFileSystemHandlerOptions\n): FileSystemHandler {\n const fs = options?.fs ?? nodeFs;\n const fsPromises = fs.promises;\n\n // Resolve the root path to ensure it's absolute\n const resolvedRoot = nodePath.resolve(rootPath);\n\n /**\n * Map a virtual path to a real filesystem path\n * Virtual paths always start with \"/\" and are relative to rootPath\n */\n function toRealPath(virtualPath: string): string {\n // Normalize the virtual path\n const normalized = nodePath.normalize(virtualPath);\n // Join with root, handling the leading slash\n const relativePath = normalized.startsWith(\"/\")\n ? normalized.slice(1)\n : normalized;\n return nodePath.join(resolvedRoot, relativePath);\n }\n\n /**\n * Map Node.js errors to DOMException-style error messages\n */\n function mapError(err: unknown, operation: string): Error {\n if (!(err instanceof Error)) {\n return new Error(`[Error]${operation} failed`);\n }\n\n const nodeError = err as NodeJS.ErrnoException;\n\n switch (nodeError.code) {\n case \"ENOENT\":\n return new Error(`[NotFoundError]${operation}: path not found`);\n case \"EISDIR\":\n return new Error(\n `[TypeMismatchError]${operation}: expected file but found directory`\n );\n case \"ENOTDIR\":\n return new Error(\n `[TypeMismatchError]${operation}: expected directory but found file`\n );\n case \"ENOTEMPTY\":\n return new Error(\n `[InvalidModificationError]${operation}: directory not empty`\n );\n case \"EEXIST\":\n return new Error(`[InvalidModificationError]${operation}: already exists`);\n case \"EACCES\":\n case \"EPERM\":\n return new Error(`[NotAllowedError]${operation}: permission denied`);\n default:\n return new Error(`[Error]${operation}: ${nodeError.message}`);\n }\n }\n\n /**\n * Get MIME type for a file based on extension\n */\n function getMimeType(filePath: string): string {\n const result = mimeLookup(filePath);\n return result || \"application/octet-stream\";\n }\n\n return {\n async getFileHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n if (stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]getFileHandle: expected file but found directory\"\n );\n }\n // File exists and is a file - success\n } catch (err) {\n const nodeError = err as NodeJS.ErrnoException;\n if (nodeError.code === \"ENOENT\") {\n if (options?.create) {\n // Create empty file\n await fsPromises.writeFile(realPath, \"\");\n return;\n }\n throw new Error(\"[NotFoundError]getFileHandle: file not found\");\n }\n throw mapError(err, \"getFileHandle\");\n }\n },\n\n async getDirectoryHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n if (!stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]getDirectoryHandle: expected directory but found file\"\n );\n }\n // Directory exists - success\n } catch (err) {\n const nodeError = err as NodeJS.ErrnoException;\n if (nodeError.code === \"ENOENT\") {\n if (options?.create) {\n // Create directory\n await fsPromises.mkdir(realPath, { recursive: true });\n return;\n }\n throw new Error(\n \"[NotFoundError]getDirectoryHandle: directory not found\"\n );\n }\n throw mapError(err, \"getDirectoryHandle\");\n }\n },\n\n async removeEntry(\n path: string,\n options?: { recursive?: boolean }\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n\n if (stats.isDirectory()) {\n if (options?.recursive) {\n // Use rm with recursive for non-empty directories\n await fsPromises.rm(realPath, { recursive: true });\n } else {\n // Try rmdir for empty directories (will fail if not empty)\n await fsPromises.rmdir(realPath);\n }\n } else {\n // Use unlink for files\n await fsPromises.unlink(realPath);\n }\n } catch (err) {\n throw mapError(err, \"removeEntry\");\n }\n },\n\n async readDirectory(\n path: string\n ): Promise<Array<{ name: string; kind: \"file\" | \"directory\" }>> {\n const realPath = toRealPath(path);\n\n try {\n const entries = await fsPromises.readdir(realPath, {\n withFileTypes: true,\n });\n\n return entries.map((entry) => ({\n name: entry.name,\n kind: entry.isDirectory() ? (\"directory\" as const) : (\"file\" as const),\n }));\n } catch (err) {\n throw mapError(err, \"readDirectory\");\n }\n },\n\n async readFile(\n path: string\n ): Promise<{\n data: Uint8Array;\n size: number;\n lastModified: number;\n type: string;\n }> {\n const realPath = toRealPath(path);\n\n try {\n const [data, stats] = await Promise.all([\n fsPromises.readFile(realPath),\n fsPromises.stat(realPath),\n ]);\n\n if (stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]readFile: expected file but found directory\"\n );\n }\n\n return {\n data: new Uint8Array(data),\n size: stats.size,\n lastModified: stats.mtimeMs,\n type: getMimeType(realPath),\n };\n } catch (err) {\n if (err instanceof Error && err.message.startsWith(\"[\")) {\n throw err;\n }\n throw mapError(err, \"readFile\");\n }\n },\n\n async writeFile(\n path: string,\n data: Uint8Array,\n position?: number\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n // Check file exists first (matches WHATWG semantics where file must exist via getFileHandle)\n await fsPromises.access(realPath);\n\n if (position !== undefined) {\n // Position-based write - need to use r+ to preserve existing content\n const fh = await fsPromises.open(realPath, \"r+\");\n try {\n await fh.write(data, 0, data.length, position);\n } finally {\n await fh.close();\n }\n } else {\n // Replace entire content\n await fsPromises.writeFile(realPath, data);\n }\n } catch (err) {\n throw mapError(err, \"writeFile\");\n }\n },\n\n async truncateFile(path: string, size: number): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n await fsPromises.truncate(realPath, size);\n } catch (err) {\n throw mapError(err, \"truncateFile\");\n }\n },\n\n async getFileMetadata(\n path: string\n ): Promise<{ size: number; lastModified: number; type: string }> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n\n if (stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]getFileMetadata: expected file but found directory\"\n );\n }\n\n return {\n size: stats.size,\n lastModified: stats.mtimeMs,\n type: getMimeType(realPath),\n };\n } catch (err) {\n if (err instanceof Error && err.message.startsWith(\"[\")) {\n throw err;\n }\n throw mapError(err, \"getFileMetadata\");\n }\n },\n };\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "7AC7CC40F407400764756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "77DE8B80714C24D564756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@ricsam/isolate-fs",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "type": "commonjs"
5
5
  }
@@ -1,4 +1,3 @@
1
- // @bun
2
1
  // packages/fs/src/index.ts
3
2
  import ivm from "isolated-vm";
4
3
  import { setupCore, clearAllInstanceState } from "@ricsam/isolate-core";
@@ -767,4 +766,4 @@ export {
767
766
  clearAllInstanceState
768
767
  };
769
768
 
770
- //# debugId=3C75679DEAD6C21A64756E2164756E21
769
+ //# debugId=B06E145B80AE177264756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import ivm from \"isolated-vm\";\nimport { setupCore, clearAllInstanceState } from \"@ricsam/isolate-core\";\n\nexport { clearAllInstanceState };\n\n// ============================================================================\n// FileSystemHandler Interface\n// ============================================================================\n\nexport interface FileSystemHandler {\n /** Get or create a file handle at the given path */\n getFileHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void>;\n\n /** Get or create a directory handle at the given path */\n getDirectoryHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void>;\n\n /** Remove a file or directory at the given path */\n removeEntry(\n path: string,\n options?: { recursive?: boolean }\n ): Promise<void>;\n\n /** List contents of a directory */\n readDirectory(\n path: string\n ): Promise<Array<{ name: string; kind: \"file\" | \"directory\" }>>;\n\n /** Read file content */\n readFile(\n path: string\n ): Promise<{ data: Uint8Array; size: number; lastModified: number; type: string }>;\n\n /** Write data to a file */\n writeFile(\n path: string,\n data: Uint8Array,\n position?: number\n ): Promise<void>;\n\n /** Truncate a file to a specific size */\n truncateFile(path: string, size: number): Promise<void>;\n\n /** Get file metadata without reading content */\n getFileMetadata(\n path: string\n ): Promise<{ size: number; lastModified: number; type: string }>;\n}\n\nexport interface FsOptions {\n /** Get a file system handler for the given path */\n getDirectory(path: string): Promise<FileSystemHandler>;\n}\n\nexport interface FsHandle {\n dispose(): void;\n}\n\n// ============================================================================\n// Instance State Management\n// ============================================================================\n\nconst instanceStateMap = new WeakMap<ivm.Context, Map<number, unknown>>();\nlet nextInstanceId = 1;\n\nfunction getInstanceStateMapForContext(\n context: ivm.Context\n): Map<number, unknown> {\n let map = instanceStateMap.get(context);\n if (!map) {\n map = new Map();\n instanceStateMap.set(context, map);\n }\n return map;\n}\n\n// ============================================================================\n// State Types\n// ============================================================================\n\ninterface DirectoryHandleState {\n instanceId: number;\n path: string; // Path within handler's root, e.g., \"/\" or \"/subdir\"\n name: string; // Directory name, e.g., \"\" for root or \"subdir\"\n handler: FileSystemHandler; // Handler for this directory tree\n}\n\ninterface FileHandleState {\n instanceId: number;\n path: string; // Path within handler's root, e.g., \"/file.txt\"\n name: string; // File name, e.g., \"file.txt\"\n handler: FileSystemHandler; // Handler for this file\n}\n\ninterface WritableStreamState {\n instanceId: number;\n filePath: string; // Path to the file being written\n position: number; // Current write position (for seek)\n buffer: Uint8Array[]; // Buffered writes before close\n closed: boolean; // Whether stream has been closed\n handler: FileSystemHandler; // Handler for this stream\n}\n\n// ============================================================================\n// FileSystemDirectoryHandle Implementation\n// ============================================================================\n\nfunction setupFileSystemDirectoryHandle(\n context: ivm.Context,\n stateMap: Map<number, unknown>\n): void {\n const global = context.global;\n\n // Property getters\n global.setSync(\n \"__FileSystemDirectoryHandle_get_name\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n return state?.name ?? \"\";\n })\n );\n\n global.setSync(\n \"__FileSystemDirectoryHandle_get_path\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n return state?.path ?? \"/\";\n })\n );\n\n // getFileHandle - async reference\n const getFileHandleRef = new ivm.Reference(\n async (instanceId: number, name: string, optionsJson: string) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n const options = JSON.parse(optionsJson) as { create?: boolean };\n const childPath = state.path === \"/\" ? `/${name}` : `${state.path}/${name}`;\n\n try {\n await state.handler.getFileHandle(childPath, options);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n\n // Create file handle state with parent's handler\n const fileInstanceId = nextInstanceId++;\n const fileState: FileHandleState = {\n instanceId: fileInstanceId,\n path: childPath,\n name,\n handler: state.handler,\n };\n stateMap.set(fileInstanceId, fileState);\n\n return JSON.stringify({ instanceId: fileInstanceId });\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_getFileHandle_ref\", getFileHandleRef);\n\n // getDirectoryHandle - async reference\n const getDirectoryHandleRef = new ivm.Reference(\n async (instanceId: number, name: string, optionsJson: string) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n const options = JSON.parse(optionsJson) as { create?: boolean };\n const childPath = state.path === \"/\" ? `/${name}` : `${state.path}/${name}`;\n\n try {\n await state.handler.getDirectoryHandle(childPath, options);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n\n // Create directory handle state with parent's handler\n const dirInstanceId = nextInstanceId++;\n const dirState: DirectoryHandleState = {\n instanceId: dirInstanceId,\n path: childPath,\n name,\n handler: state.handler,\n };\n stateMap.set(dirInstanceId, dirState);\n\n return JSON.stringify({ instanceId: dirInstanceId });\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_getDirectoryHandle_ref\", getDirectoryHandleRef);\n\n // removeEntry - async reference\n const removeEntryRef = new ivm.Reference(\n async (instanceId: number, name: string, optionsJson: string) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n const options = JSON.parse(optionsJson) as { recursive?: boolean };\n const childPath = state.path === \"/\" ? `/${name}` : `${state.path}/${name}`;\n\n try {\n await state.handler.removeEntry(childPath, options);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_removeEntry_ref\", removeEntryRef);\n\n // readDirectory - async reference (for entries/keys/values)\n const readDirectoryRef = new ivm.Reference(async (instanceId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]Directory handle not found\");\n }\n\n try {\n const entries = await state.handler.readDirectory(state.path);\n\n // Create handle states for each entry and return with instance IDs\n const result = entries.map((entry) => {\n const entryId = nextInstanceId++;\n const entryPath = state.path === \"/\" ? `/${entry.name}` : `${state.path}/${entry.name}`;\n\n if (entry.kind === \"file\") {\n const fileState: FileHandleState = {\n instanceId: entryId,\n path: entryPath,\n name: entry.name,\n handler: state.handler,\n };\n stateMap.set(entryId, fileState);\n } else {\n const dirState: DirectoryHandleState = {\n instanceId: entryId,\n path: entryPath,\n name: entry.name,\n handler: state.handler,\n };\n stateMap.set(entryId, dirState);\n }\n\n return {\n name: entry.name,\n kind: entry.kind,\n instanceId: entryId,\n };\n });\n\n return JSON.stringify(result);\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n });\n global.setSync(\"__FileSystemDirectoryHandle_readDirectory_ref\", readDirectoryRef);\n\n // isSameEntry - sync callback\n global.setSync(\n \"__FileSystemDirectoryHandle_isSameEntry\",\n new ivm.Callback((id1: number, id2: number) => {\n const state1 = stateMap.get(id1) as DirectoryHandleState | undefined;\n const state2 = stateMap.get(id2) as DirectoryHandleState | undefined;\n if (!state1 || !state2) return false;\n return state1.path === state2.path;\n })\n );\n\n // resolve - async reference\n const resolveRef = new ivm.Reference(\n async (instanceId: number, descendantId: number) => {\n const state = stateMap.get(instanceId) as DirectoryHandleState | undefined;\n const descendantState = stateMap.get(descendantId) as\n | DirectoryHandleState\n | FileHandleState\n | undefined;\n\n if (!state || !descendantState) {\n return \"null\";\n }\n\n // Check if descendant is actually a descendant\n const basePath = state.path === \"/\" ? \"\" : state.path;\n if (!descendantState.path.startsWith(basePath + \"/\") && descendantState.path !== state.path) {\n return \"null\";\n }\n\n // Build path components\n const relativePath = descendantState.path.slice(basePath.length);\n const components = relativePath.split(\"/\").filter((c) => c.length > 0);\n\n return JSON.stringify(components);\n }\n );\n global.setSync(\"__FileSystemDirectoryHandle_resolve_ref\", resolveRef);\n\n // Inject FileSystemDirectoryHandle class\n const directoryHandleCode = `\n(function() {\n const _directoryHandleInstanceIds = new WeakMap();\n\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|NotFoundError|TypeMismatchError|InvalidModificationError|Error)\\\\](.*)$/);\n if (match) {\n if (['NotFoundError', 'TypeMismatchError', 'InvalidModificationError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n class FileSystemDirectoryHandle {\n constructor(path, name) {\n // Internal construction from instance ID\n if (typeof path === 'number' && name === null) {\n _directoryHandleInstanceIds.set(this, path);\n return;\n }\n const instanceId = __FileSystemDirectoryHandle_construct(path, name);\n _directoryHandleInstanceIds.set(this, instanceId);\n }\n\n static _fromInstanceId(instanceId) {\n return new FileSystemDirectoryHandle(instanceId, null);\n }\n\n _getInstanceId() {\n return _directoryHandleInstanceIds.get(this);\n }\n\n get kind() {\n return 'directory';\n }\n\n get name() {\n return __FileSystemDirectoryHandle_get_name(this._getInstanceId());\n }\n\n getFileHandle(name, options = {}) {\n try {\n const resultJson = __FileSystemDirectoryHandle_getFileHandle_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), name, JSON.stringify(options)]\n );\n const result = JSON.parse(resultJson);\n return FileSystemFileHandle._fromInstanceId(result.instanceId);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n getDirectoryHandle(name, options = {}) {\n try {\n const resultJson = __FileSystemDirectoryHandle_getDirectoryHandle_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), name, JSON.stringify(options)]\n );\n const result = JSON.parse(resultJson);\n return FileSystemDirectoryHandle._fromInstanceId(result.instanceId);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n removeEntry(name, options = {}) {\n try {\n __FileSystemDirectoryHandle_removeEntry_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), name, JSON.stringify(options)]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n async *entries() {\n let entriesJson;\n try {\n entriesJson = __FileSystemDirectoryHandle_readDirectory_ref.applySyncPromise(\n undefined,\n [this._getInstanceId()]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n const entries = JSON.parse(entriesJson);\n for (const entry of entries) {\n if (entry.kind === 'file') {\n yield [entry.name, FileSystemFileHandle._fromInstanceId(entry.instanceId)];\n } else {\n yield [entry.name, FileSystemDirectoryHandle._fromInstanceId(entry.instanceId)];\n }\n }\n }\n\n async *keys() {\n for await (const [name] of this.entries()) {\n yield name;\n }\n }\n\n async *values() {\n for await (const [, handle] of this.entries()) {\n yield handle;\n }\n }\n\n [Symbol.asyncIterator]() {\n return this.entries();\n }\n\n isSameEntry(other) {\n if (!(other instanceof FileSystemDirectoryHandle)) {\n return false;\n }\n return __FileSystemDirectoryHandle_isSameEntry(\n this._getInstanceId(),\n other._getInstanceId()\n );\n }\n\n resolve(possibleDescendant) {\n try {\n const resultJson = __FileSystemDirectoryHandle_resolve_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), possibleDescendant._getInstanceId()]\n );\n return resultJson === 'null' ? null : JSON.parse(resultJson);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n }\n\n globalThis.FileSystemDirectoryHandle = FileSystemDirectoryHandle;\n})();\n`;\n\n context.evalSync(directoryHandleCode);\n}\n\n// ============================================================================\n// FileSystemFileHandle Implementation\n// ============================================================================\n\nfunction setupFileSystemFileHandle(\n context: ivm.Context,\n stateMap: Map<number, unknown>\n): void {\n const global = context.global;\n\n // Property getters\n global.setSync(\n \"__FileSystemFileHandle_get_name\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n return state?.name ?? \"\";\n })\n );\n\n global.setSync(\n \"__FileSystemFileHandle_get_path\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n return state?.path ?? \"\";\n })\n );\n\n // getFile - async reference\n const getFileRef = new ivm.Reference(async (instanceId: number) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]File handle not found\");\n }\n\n try {\n const fileData = await state.handler.readFile(state.path);\n return JSON.stringify({\n name: state.name,\n data: Array.from(fileData.data),\n size: fileData.size,\n lastModified: fileData.lastModified,\n type: fileData.type,\n });\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n });\n global.setSync(\"__FileSystemFileHandle_getFile_ref\", getFileRef);\n\n // createWritable - async reference\n const createWritableRef = new ivm.Reference(\n async (instanceId: number, _optionsJson: string) => {\n const state = stateMap.get(instanceId) as FileHandleState | undefined;\n if (!state) {\n throw new Error(\"[NotFoundError]File handle not found\");\n }\n\n // Create writable stream state with handler reference\n const streamInstanceId = nextInstanceId++;\n const streamState: WritableStreamState = {\n instanceId: streamInstanceId,\n filePath: state.path,\n position: 0,\n buffer: [],\n closed: false,\n handler: state.handler,\n };\n stateMap.set(streamInstanceId, streamState);\n\n return streamInstanceId;\n }\n );\n global.setSync(\"__FileSystemFileHandle_createWritable_ref\", createWritableRef);\n\n // isSameEntry - sync callback\n global.setSync(\n \"__FileSystemFileHandle_isSameEntry\",\n new ivm.Callback((id1: number, id2: number) => {\n const state1 = stateMap.get(id1) as FileHandleState | undefined;\n const state2 = stateMap.get(id2) as FileHandleState | undefined;\n if (!state1 || !state2) return false;\n return state1.path === state2.path;\n })\n );\n\n // Inject FileSystemFileHandle class\n const fileHandleCode = `\n(function() {\n const _fileHandleInstanceIds = new WeakMap();\n\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|NotFoundError|TypeMismatchError|InvalidModificationError|Error)\\\\](.*)$/);\n if (match) {\n if (['NotFoundError', 'TypeMismatchError', 'InvalidModificationError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n class FileSystemFileHandle {\n constructor(path, name) {\n // Internal construction from instance ID\n if (typeof path === 'number' && name === null) {\n _fileHandleInstanceIds.set(this, path);\n return;\n }\n const instanceId = __FileSystemFileHandle_construct(path, name);\n _fileHandleInstanceIds.set(this, instanceId);\n }\n\n static _fromInstanceId(instanceId) {\n return new FileSystemFileHandle(instanceId, null);\n }\n\n _getInstanceId() {\n return _fileHandleInstanceIds.get(this);\n }\n\n get kind() {\n return 'file';\n }\n\n get name() {\n return __FileSystemFileHandle_get_name(this._getInstanceId());\n }\n\n getFile() {\n try {\n const metadataJson = __FileSystemFileHandle_getFile_ref.applySyncPromise(\n undefined,\n [this._getInstanceId()]\n );\n const metadata = JSON.parse(metadataJson);\n // Create File object from metadata and content\n const content = new Uint8Array(metadata.data);\n return new File([content], metadata.name, {\n type: metadata.type,\n lastModified: metadata.lastModified\n });\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n createWritable(options = {}) {\n try {\n const streamId = __FileSystemFileHandle_createWritable_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), JSON.stringify(options)]\n );\n return FileSystemWritableFileStream._fromInstanceId(streamId);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n isSameEntry(other) {\n if (!(other instanceof FileSystemFileHandle)) {\n return false;\n }\n return __FileSystemFileHandle_isSameEntry(\n this._getInstanceId(),\n other._getInstanceId()\n );\n }\n }\n\n globalThis.FileSystemFileHandle = FileSystemFileHandle;\n})();\n`;\n\n context.evalSync(fileHandleCode);\n}\n\n// ============================================================================\n// FileSystemWritableFileStream Implementation\n// ============================================================================\n\nfunction setupFileSystemWritableFileStream(\n context: ivm.Context,\n stateMap: Map<number, unknown>\n): void {\n const global = context.global;\n\n // write - async reference\n const writeRef = new ivm.Reference(\n async (instanceId: number, bytesJson: string, position: number | null) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is closed\");\n }\n\n const bytes = JSON.parse(bytesJson) as number[];\n const data = new Uint8Array(bytes);\n\n // Update position if specified\n if (position !== null) {\n state.position = position;\n }\n\n // Write to handler\n try {\n await state.handler.writeFile(state.filePath, data, state.position);\n state.position += data.length;\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n }\n );\n global.setSync(\"__FileSystemWritableFileStream_write_ref\", writeRef);\n\n // seek - sync callback\n global.setSync(\n \"__FileSystemWritableFileStream_seek\",\n new ivm.Callback((instanceId: number, position: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is closed\");\n }\n state.position = position;\n })\n );\n\n // truncate - async reference\n const truncateRef = new ivm.Reference(async (instanceId: number, size: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is closed\");\n }\n\n try {\n await state.handler.truncateFile(state.filePath, size);\n // Adjust position if it's beyond the new size\n if (state.position > size) {\n state.position = size;\n }\n } catch (err) {\n if (err instanceof Error) {\n throw new Error(err.message);\n }\n throw err;\n }\n });\n global.setSync(\"__FileSystemWritableFileStream_truncate_ref\", truncateRef);\n\n // close - async reference\n const closeRef = new ivm.Reference(async (instanceId: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n if (state.closed) {\n throw new Error(\"[InvalidStateError]Stream is already closed\");\n }\n\n state.closed = true;\n });\n global.setSync(\"__FileSystemWritableFileStream_close_ref\", closeRef);\n\n // abort - async reference\n const abortRef = new ivm.Reference(async (instanceId: number, _reason: string | null) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n if (!state) {\n throw new Error(\"[InvalidStateError]Stream not found\");\n }\n\n state.closed = true;\n state.buffer = []; // Discard any buffered data\n });\n global.setSync(\"__FileSystemWritableFileStream_abort_ref\", abortRef);\n\n // locked - sync callback\n global.setSync(\n \"__FileSystemWritableFileStream_get_locked\",\n new ivm.Callback((instanceId: number) => {\n const state = stateMap.get(instanceId) as WritableStreamState | undefined;\n return state ? !state.closed : false;\n })\n );\n\n // Inject FileSystemWritableFileStream class\n const writableStreamCode = `\n(function() {\n const _writableStreamInstanceIds = new WeakMap();\n\n function __decodeError(err) {\n if (!(err instanceof Error)) return err;\n const match = err.message.match(/^\\\\[(TypeError|RangeError|InvalidStateError|NotFoundError|Error)\\\\](.*)$/);\n if (match) {\n if (['InvalidStateError', 'NotFoundError'].includes(match[1])) {\n return new DOMException(match[2], match[1]);\n }\n const ErrorType = globalThis[match[1]] || Error;\n return new ErrorType(match[2]);\n }\n return err;\n }\n\n class FileSystemWritableFileStream {\n constructor(instanceId) {\n _writableStreamInstanceIds.set(this, instanceId);\n }\n\n static _fromInstanceId(instanceId) {\n return new FileSystemWritableFileStream(instanceId);\n }\n\n _getInstanceId() {\n return _writableStreamInstanceIds.get(this);\n }\n\n write(data) {\n try {\n // Handle different data types\n let writeData;\n let position = null;\n let type = 'write';\n\n if (data && typeof data === 'object' && !ArrayBuffer.isView(data) &&\n !(data instanceof Blob) && !(data instanceof ArrayBuffer) &&\n !Array.isArray(data) && typeof data.type === 'string') {\n // WriteParams object: { type, data, position, size }\n type = data.type || 'write';\n if (type === 'seek') {\n return this.seek(data.position);\n }\n if (type === 'truncate') {\n return this.truncate(data.size);\n }\n writeData = data.data;\n position = data.position ?? null;\n } else {\n writeData = data;\n }\n\n // Convert data to bytes array for transfer\n let bytes;\n if (typeof writeData === 'string') {\n bytes = Array.from(new TextEncoder().encode(writeData));\n } else if (writeData instanceof Blob) {\n // Synchronously get blob bytes - use the internal callback\n const blobText = writeData.text ? writeData.text() : '';\n bytes = Array.from(new TextEncoder().encode(blobText));\n } else if (writeData instanceof ArrayBuffer) {\n bytes = Array.from(new Uint8Array(writeData));\n } else if (ArrayBuffer.isView(writeData)) {\n bytes = Array.from(new Uint8Array(writeData.buffer, writeData.byteOffset, writeData.byteLength));\n } else if (Array.isArray(writeData)) {\n bytes = writeData;\n } else {\n throw new TypeError('Invalid data type for write');\n }\n\n __FileSystemWritableFileStream_write_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), JSON.stringify(bytes), position]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n seek(position) {\n try {\n __FileSystemWritableFileStream_seek(this._getInstanceId(), position);\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n truncate(size) {\n try {\n __FileSystemWritableFileStream_truncate_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), size]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n close() {\n try {\n __FileSystemWritableFileStream_close_ref.applySyncPromise(\n undefined,\n [this._getInstanceId()]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n abort(reason) {\n try {\n __FileSystemWritableFileStream_abort_ref.applySyncPromise(\n undefined,\n [this._getInstanceId(), reason ? String(reason) : null]\n );\n } catch (err) {\n throw __decodeError(err);\n }\n }\n\n get locked() {\n return __FileSystemWritableFileStream_get_locked(this._getInstanceId());\n }\n\n getWriter() {\n const stream = this;\n let released = false;\n let closedResolve;\n let closedReject;\n const closedPromise = new Promise((resolve, reject) => {\n closedResolve = resolve;\n closedReject = reject;\n });\n\n return {\n get closed() {\n return closedPromise;\n },\n get desiredSize() {\n return 1;\n },\n get ready() {\n return Promise.resolve();\n },\n write(chunk) {\n if (released) {\n return Promise.reject(new TypeError('Writer has been released'));\n }\n try {\n stream.write(chunk);\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n },\n close() {\n if (released) {\n return Promise.reject(new TypeError('Writer has been released'));\n }\n try {\n stream.close();\n closedResolve();\n return Promise.resolve();\n } catch (err) {\n closedReject(err);\n return Promise.reject(err);\n }\n },\n abort(reason) {\n if (released) {\n return Promise.reject(new TypeError('Writer has been released'));\n }\n try {\n stream.abort(reason);\n closedReject(reason || new Error('Stream aborted'));\n return Promise.resolve();\n } catch (err) {\n return Promise.reject(err);\n }\n },\n releaseLock() {\n released = true;\n }\n };\n }\n }\n\n globalThis.FileSystemWritableFileStream = FileSystemWritableFileStream;\n})();\n`;\n\n context.evalSync(writableStreamCode);\n}\n\n// ============================================================================\n// Global getDirectory(path) Implementation\n// ============================================================================\n\nfunction setupGetDirectoryGlobal(\n context: ivm.Context,\n stateMap: Map<number, unknown>,\n options: FsOptions\n): void {\n const global = context.global;\n\n // getDirectory - async reference that creates directory handle at specified path\n const getDirectoryRef = new ivm.Reference(async (path: string) => {\n // Get handler for this path from the options factory\n const handler = await options.getDirectory(path);\n\n const instanceId = nextInstanceId++;\n // Path is \"/\" since handler is rooted at the requested path\n const state: DirectoryHandleState = {\n instanceId,\n path: \"/\",\n name: path.split(\"/\").filter(Boolean).pop() || \"\",\n handler,\n };\n stateMap.set(instanceId, state);\n return instanceId;\n });\n global.setSync(\"__getDirectory_ref\", getDirectoryRef);\n\n // Inject global getDirectory (async)\n const getDirectoryCode = `\n(function() {\n globalThis.getDirectory = async function(path) {\n const instanceId = await __getDirectory_ref.applySyncPromise(undefined, [path]);\n return FileSystemDirectoryHandle._fromInstanceId(instanceId);\n };\n})();\n`;\n context.evalSync(getDirectoryCode);\n}\n\n// ============================================================================\n// Main Setup Function\n// ============================================================================\n\n/**\n * Setup File System Access API in an isolated-vm context\n *\n * Provides an OPFS-compatible FileSystemDirectoryHandle API\n *\n * @example\n * const handle = await setupFs(context, {\n * getDirectory: async (path) => {\n * // Return a FileSystemHandler rooted at the given path\n * return createNodeFileSystemHandler(`./data${path}`);\n * }\n * });\n *\n * await context.eval(`\n * const root = await getDirectory(\"/uploads\");\n * const fileHandle = await root.getFileHandle(\"test.txt\", { create: true });\n * const writable = await fileHandle.createWritable();\n * await writable.write(\"hello world\");\n * await writable.close();\n * `);\n */\nexport async function setupFs(\n context: ivm.Context,\n options: FsOptions\n): Promise<FsHandle> {\n // Setup core APIs first (Blob, File, AbortController, Streams, etc.)\n await setupCore(context);\n\n const stateMap = getInstanceStateMapForContext(context);\n\n // Setup FileSystemDirectoryHandle\n setupFileSystemDirectoryHandle(context, stateMap);\n\n // Setup FileSystemFileHandle\n setupFileSystemFileHandle(context, stateMap);\n\n // Setup FileSystemWritableFileStream\n setupFileSystemWritableFileStream(context, stateMap);\n\n // Setup global getDirectory(path)\n setupGetDirectoryGlobal(context, stateMap, options);\n\n return {\n dispose() {\n // Clear state for this context\n stateMap.clear();\n },\n };\n}\n\n// Export node adapter\nexport { createNodeFileSystemHandler } from \"./node-adapter.mjs\";\nexport type { NodeFileSystemHandlerOptions } from \"./node-adapter.mjs\";\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "3C75679DEAD6C21A64756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "B06E145B80AE177264756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,7 +1,6 @@
1
- // @bun
2
1
  // packages/fs/src/node-adapter.ts
3
- import * as nodeFs from "fs";
4
- import * as nodePath from "path";
2
+ import * as nodeFs from "node:fs";
3
+ import * as nodePath from "node:path";
5
4
  import { lookup as mimeLookup } from "mime-types";
6
5
  function createNodeFileSystemHandler(rootPath, options) {
7
6
  const fs = options?.fs ?? nodeFs;
@@ -183,4 +182,4 @@ export {
183
182
  createNodeFileSystemHandler
184
183
  };
185
184
 
186
- //# debugId=5151C0EF31C138F164756E2164756E21
185
+ //# debugId=B6183C8F432695A964756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import * as nodeFs from \"node:fs\";\nimport * as nodePath from \"node:path\";\nimport { lookup as mimeLookup } from \"mime-types\";\nimport type { FileSystemHandler } from \"./index.mjs\";\n\nexport interface NodeFileSystemHandlerOptions {\n /** Custom fs module (e.g., memfs for testing). Defaults to Node.js fs */\n fs?: typeof nodeFs;\n}\n\n/**\n * Create a FileSystemHandler backed by the Node.js filesystem\n *\n * @param rootPath - Absolute path to the root directory for the sandbox\n * @param options - Optional configuration\n * @returns FileSystemHandler implementation\n *\n * @example\n * import { createNodeFileSystemHandler } from \"@ricsam/isolate-fs\";\n *\n * const handler = createNodeFileSystemHandler(\"/tmp/sandbox\");\n *\n * // Use with createRuntime\n * const runtime = await createRuntime({\n * fs: { handler }\n * });\n */\nexport function createNodeFileSystemHandler(\n rootPath: string,\n options?: NodeFileSystemHandlerOptions\n): FileSystemHandler {\n const fs = options?.fs ?? nodeFs;\n const fsPromises = fs.promises;\n\n // Resolve the root path to ensure it's absolute\n const resolvedRoot = nodePath.resolve(rootPath);\n\n /**\n * Map a virtual path to a real filesystem path\n * Virtual paths always start with \"/\" and are relative to rootPath\n */\n function toRealPath(virtualPath: string): string {\n // Normalize the virtual path\n const normalized = nodePath.normalize(virtualPath);\n // Join with root, handling the leading slash\n const relativePath = normalized.startsWith(\"/\")\n ? normalized.slice(1)\n : normalized;\n return nodePath.join(resolvedRoot, relativePath);\n }\n\n /**\n * Map Node.js errors to DOMException-style error messages\n */\n function mapError(err: unknown, operation: string): Error {\n if (!(err instanceof Error)) {\n return new Error(`[Error]${operation} failed`);\n }\n\n const nodeError = err as NodeJS.ErrnoException;\n\n switch (nodeError.code) {\n case \"ENOENT\":\n return new Error(`[NotFoundError]${operation}: path not found`);\n case \"EISDIR\":\n return new Error(\n `[TypeMismatchError]${operation}: expected file but found directory`\n );\n case \"ENOTDIR\":\n return new Error(\n `[TypeMismatchError]${operation}: expected directory but found file`\n );\n case \"ENOTEMPTY\":\n return new Error(\n `[InvalidModificationError]${operation}: directory not empty`\n );\n case \"EEXIST\":\n return new Error(`[InvalidModificationError]${operation}: already exists`);\n case \"EACCES\":\n case \"EPERM\":\n return new Error(`[NotAllowedError]${operation}: permission denied`);\n default:\n return new Error(`[Error]${operation}: ${nodeError.message}`);\n }\n }\n\n /**\n * Get MIME type for a file based on extension\n */\n function getMimeType(filePath: string): string {\n const result = mimeLookup(filePath);\n return result || \"application/octet-stream\";\n }\n\n return {\n async getFileHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n if (stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]getFileHandle: expected file but found directory\"\n );\n }\n // File exists and is a file - success\n } catch (err) {\n const nodeError = err as NodeJS.ErrnoException;\n if (nodeError.code === \"ENOENT\") {\n if (options?.create) {\n // Create empty file\n await fsPromises.writeFile(realPath, \"\");\n return;\n }\n throw new Error(\"[NotFoundError]getFileHandle: file not found\");\n }\n throw mapError(err, \"getFileHandle\");\n }\n },\n\n async getDirectoryHandle(\n path: string,\n options?: { create?: boolean }\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n if (!stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]getDirectoryHandle: expected directory but found file\"\n );\n }\n // Directory exists - success\n } catch (err) {\n const nodeError = err as NodeJS.ErrnoException;\n if (nodeError.code === \"ENOENT\") {\n if (options?.create) {\n // Create directory\n await fsPromises.mkdir(realPath, { recursive: true });\n return;\n }\n throw new Error(\n \"[NotFoundError]getDirectoryHandle: directory not found\"\n );\n }\n throw mapError(err, \"getDirectoryHandle\");\n }\n },\n\n async removeEntry(\n path: string,\n options?: { recursive?: boolean }\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n\n if (stats.isDirectory()) {\n if (options?.recursive) {\n // Use rm with recursive for non-empty directories\n await fsPromises.rm(realPath, { recursive: true });\n } else {\n // Try rmdir for empty directories (will fail if not empty)\n await fsPromises.rmdir(realPath);\n }\n } else {\n // Use unlink for files\n await fsPromises.unlink(realPath);\n }\n } catch (err) {\n throw mapError(err, \"removeEntry\");\n }\n },\n\n async readDirectory(\n path: string\n ): Promise<Array<{ name: string; kind: \"file\" | \"directory\" }>> {\n const realPath = toRealPath(path);\n\n try {\n const entries = await fsPromises.readdir(realPath, {\n withFileTypes: true,\n });\n\n return entries.map((entry) => ({\n name: entry.name,\n kind: entry.isDirectory() ? (\"directory\" as const) : (\"file\" as const),\n }));\n } catch (err) {\n throw mapError(err, \"readDirectory\");\n }\n },\n\n async readFile(\n path: string\n ): Promise<{\n data: Uint8Array;\n size: number;\n lastModified: number;\n type: string;\n }> {\n const realPath = toRealPath(path);\n\n try {\n const [data, stats] = await Promise.all([\n fsPromises.readFile(realPath),\n fsPromises.stat(realPath),\n ]);\n\n if (stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]readFile: expected file but found directory\"\n );\n }\n\n return {\n data: new Uint8Array(data),\n size: stats.size,\n lastModified: stats.mtimeMs,\n type: getMimeType(realPath),\n };\n } catch (err) {\n if (err instanceof Error && err.message.startsWith(\"[\")) {\n throw err;\n }\n throw mapError(err, \"readFile\");\n }\n },\n\n async writeFile(\n path: string,\n data: Uint8Array,\n position?: number\n ): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n // Check file exists first (matches WHATWG semantics where file must exist via getFileHandle)\n await fsPromises.access(realPath);\n\n if (position !== undefined) {\n // Position-based write - need to use r+ to preserve existing content\n const fh = await fsPromises.open(realPath, \"r+\");\n try {\n await fh.write(data, 0, data.length, position);\n } finally {\n await fh.close();\n }\n } else {\n // Replace entire content\n await fsPromises.writeFile(realPath, data);\n }\n } catch (err) {\n throw mapError(err, \"writeFile\");\n }\n },\n\n async truncateFile(path: string, size: number): Promise<void> {\n const realPath = toRealPath(path);\n\n try {\n await fsPromises.truncate(realPath, size);\n } catch (err) {\n throw mapError(err, \"truncateFile\");\n }\n },\n\n async getFileMetadata(\n path: string\n ): Promise<{ size: number; lastModified: number; type: string }> {\n const realPath = toRealPath(path);\n\n try {\n const stats = await fsPromises.stat(realPath);\n\n if (stats.isDirectory()) {\n throw new Error(\n \"[TypeMismatchError]getFileMetadata: expected file but found directory\"\n );\n }\n\n return {\n size: stats.size,\n lastModified: stats.mtimeMs,\n type: getMimeType(realPath),\n };\n } catch (err) {\n if (err instanceof Error && err.message.startsWith(\"[\")) {\n throw err;\n }\n throw mapError(err, \"getFileMetadata\");\n }\n },\n };\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "5151C0EF31C138F164756E2164756E21",
7
+ "mappings": ";AAAA;AACA;AACA,mBAAS;AAyBF,SAAS,2BAA2B,CACzC,UACA,SACmB;AAAA,EACnB,MAAM,KAAK,SAAS,MAAM;AAAA,EAC1B,MAAM,aAAa,GAAG;AAAA,EAGtB,MAAM,eAAwB,iBAAQ,QAAQ;AAAA,EAM9C,SAAS,UAAU,CAAC,aAA6B;AAAA,IAE/C,MAAM,aAAsB,mBAAU,WAAW;AAAA,IAEjD,MAAM,eAAe,WAAW,WAAW,GAAG,IAC1C,WAAW,MAAM,CAAC,IAClB;AAAA,IACJ,OAAgB,cAAK,cAAc,YAAY;AAAA;AAAA,EAMjD,SAAS,QAAQ,CAAC,KAAc,WAA0B;AAAA,IACxD,IAAI,EAAE,eAAe,QAAQ;AAAA,MAC3B,OAAO,IAAI,MAAM,UAAU,kBAAkB;AAAA,IAC/C;AAAA,IAEA,MAAM,YAAY;AAAA,IAElB,QAAQ,UAAU;AAAA,WACX;AAAA,QACH,OAAO,IAAI,MAAM,kBAAkB,2BAA2B;AAAA,WAC3D;AAAA,QACH,OAAO,IAAI,MACT,sBAAsB,8CACxB;AAAA,WACG;AAAA,QACH,OAAO,IAAI,MACT,sBAAsB,8CACxB;AAAA,WACG;AAAA,QACH,OAAO,IAAI,MACT,6BAA6B,gCAC/B;AAAA,WACG;AAAA,QACH,OAAO,IAAI,MAAM,6BAA6B,2BAA2B;AAAA,WACtE;AAAA,WACA;AAAA,QACH,OAAO,IAAI,MAAM,oBAAoB,8BAA8B;AAAA;AAAA,QAEnE,OAAO,IAAI,MAAM,UAAU,cAAc,UAAU,SAAS;AAAA;AAAA;AAAA,EAOlE,SAAS,WAAW,CAAC,UAA0B;AAAA,IAC7C,MAAM,SAAS,WAAW,QAAQ;AAAA,IAClC,OAAO,UAAU;AAAA;AAAA,EAGnB,OAAO;AAAA,SACC,cAAa,CACjB,MACA,UACe;AAAA,MACf,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,MAAM,QAAQ,MAAM,WAAW,KAAK,QAAQ;AAAA,QAC5C,IAAI,MAAM,YAAY,GAAG;AAAA,UACvB,MAAM,IAAI,MACR,qEACF;AAAA,QACF;AAAA,QAEA,OAAO,KAAK;AAAA,QACZ,MAAM,YAAY;AAAA,QAClB,IAAI,UAAU,SAAS,UAAU;AAAA,UAC/B,IAAI,UAAS,QAAQ;AAAA,YAEnB,MAAM,WAAW,UAAU,UAAU,EAAE;AAAA,YACvC;AAAA,UACF;AAAA,UACA,MAAM,IAAI,MAAM,8CAA8C;AAAA,QAChE;AAAA,QACA,MAAM,SAAS,KAAK,eAAe;AAAA;AAAA;AAAA,SAIjC,mBAAkB,CACtB,MACA,UACe;AAAA,MACf,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,MAAM,QAAQ,MAAM,WAAW,KAAK,QAAQ;AAAA,QAC5C,IAAI,CAAC,MAAM,YAAY,GAAG;AAAA,UACxB,MAAM,IAAI,MACR,0EACF;AAAA,QACF;AAAA,QAEA,OAAO,KAAK;AAAA,QACZ,MAAM,YAAY;AAAA,QAClB,IAAI,UAAU,SAAS,UAAU;AAAA,UAC/B,IAAI,UAAS,QAAQ;AAAA,YAEnB,MAAM,WAAW,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,YACpD;AAAA,UACF;AAAA,UACA,MAAM,IAAI,MACR,wDACF;AAAA,QACF;AAAA,QACA,MAAM,SAAS,KAAK,oBAAoB;AAAA;AAAA;AAAA,SAItC,YAAW,CACf,MACA,UACe;AAAA,MACf,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,MAAM,QAAQ,MAAM,WAAW,KAAK,QAAQ;AAAA,QAE5C,IAAI,MAAM,YAAY,GAAG;AAAA,UACvB,IAAI,UAAS,WAAW;AAAA,YAEtB,MAAM,WAAW,GAAG,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,UACnD,EAAO;AAAA,YAEL,MAAM,WAAW,MAAM,QAAQ;AAAA;AAAA,QAEnC,EAAO;AAAA,UAEL,MAAM,WAAW,OAAO,QAAQ;AAAA;AAAA,QAElC,OAAO,KAAK;AAAA,QACZ,MAAM,SAAS,KAAK,aAAa;AAAA;AAAA;AAAA,SAI/B,cAAa,CACjB,MAC8D;AAAA,MAC9D,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,MAAM,UAAU,MAAM,WAAW,QAAQ,UAAU;AAAA,UACjD,eAAe;AAAA,QACjB,CAAC;AAAA,QAED,OAAO,QAAQ,IAAI,CAAC,WAAW;AAAA,UAC7B,MAAM,MAAM;AAAA,UACZ,MAAM,MAAM,YAAY,IAAK,cAAyB;AAAA,QACxD,EAAE;AAAA,QACF,OAAO,KAAK;AAAA,QACZ,MAAM,SAAS,KAAK,eAAe;AAAA;AAAA;AAAA,SAIjC,SAAQ,CACZ,MAMC;AAAA,MACD,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,OAAO,MAAM,SAAS,MAAM,QAAQ,IAAI;AAAA,UACtC,WAAW,SAAS,QAAQ;AAAA,UAC5B,WAAW,KAAK,QAAQ;AAAA,QAC1B,CAAC;AAAA,QAED,IAAI,MAAM,YAAY,GAAG;AAAA,UACvB,MAAM,IAAI,MACR,gEACF;AAAA,QACF;AAAA,QAEA,OAAO;AAAA,UACL,MAAM,IAAI,WAAW,IAAI;AAAA,UACzB,MAAM,MAAM;AAAA,UACZ,cAAc,MAAM;AAAA,UACpB,MAAM,YAAY,QAAQ;AAAA,QAC5B;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,IAAI,eAAe,SAAS,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,UACvD,MAAM;AAAA,QACR;AAAA,QACA,MAAM,SAAS,KAAK,UAAU;AAAA;AAAA;AAAA,SAI5B,UAAS,CACb,MACA,MACA,UACe;AAAA,MACf,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QAEF,MAAM,WAAW,OAAO,QAAQ;AAAA,QAEhC,IAAI,aAAa,WAAW;AAAA,UAE1B,MAAM,KAAK,MAAM,WAAW,KAAK,UAAU,IAAI;AAAA,UAC/C,IAAI;AAAA,YACF,MAAM,GAAG,MAAM,MAAM,GAAG,KAAK,QAAQ,QAAQ;AAAA,oBAC7C;AAAA,YACA,MAAM,GAAG,MAAM;AAAA;AAAA,QAEnB,EAAO;AAAA,UAEL,MAAM,WAAW,UAAU,UAAU,IAAI;AAAA;AAAA,QAE3C,OAAO,KAAK;AAAA,QACZ,MAAM,SAAS,KAAK,WAAW;AAAA;AAAA;AAAA,SAI7B,aAAY,CAAC,MAAc,MAA6B;AAAA,MAC5D,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,MAAM,WAAW,SAAS,UAAU,IAAI;AAAA,QACxC,OAAO,KAAK;AAAA,QACZ,MAAM,SAAS,KAAK,cAAc;AAAA;AAAA;AAAA,SAIhC,gBAAe,CACnB,MAC+D;AAAA,MAC/D,MAAM,WAAW,WAAW,IAAI;AAAA,MAEhC,IAAI;AAAA,QACF,MAAM,QAAQ,MAAM,WAAW,KAAK,QAAQ;AAAA,QAE5C,IAAI,MAAM,YAAY,GAAG;AAAA,UACvB,MAAM,IAAI,MACR,uEACF;AAAA,QACF;AAAA,QAEA,OAAO;AAAA,UACL,MAAM,MAAM;AAAA,UACZ,cAAc,MAAM;AAAA,UACpB,MAAM,YAAY,QAAQ;AAAA,QAC5B;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,IAAI,eAAe,SAAS,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,UACvD,MAAM;AAAA,QACR;AAAA,QACA,MAAM,SAAS,KAAK,iBAAiB;AAAA;AAAA;AAAA,EAG3C;AAAA;",
8
+ "debugId": "B6183C8F432695A964756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@ricsam/isolate-fs",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "type": "module"
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ricsam/isolate-fs",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "main": "./dist/cjs/index.cjs",
5
5
  "types": "./dist/types/index.d.ts",
6
6
  "exports": {