{"version":3,"file":"index.js","names":[],"sources":["esm/platform/file-system/index.js"],"sourcesContent":["import { Directory, File, FileHandle, FileMode, Paths } from \"./classes\";\nimport { directories, entry, info, parent, parts, serial, transfer, write } from \"./opfs\";\nconst operations = Object.freeze({\n  getDirectories: () => typeof window === \"undefined\" ? { documents: \"\", cache: \"\", applicationSupport: \"\", temporary: \"\" } : { ...directories },\n  getInfo: (uri) => typeof window === \"undefined\" ? Promise.resolve({ uri, exists: false, isDirectory: false }) : info(uri),\n  readDirectory: async (uri) => {\n    if (typeof window === \"undefined\") return [];\n    const names = parts(uri), handle = await entry(names);\n    if (handle.kind !== \"directory\") throw new Error(\"FileSystem: expected a directory\");\n    const entries = [];\n    for await (const [name, child] of handle.entries())\n      entries.push({\n        name,\n        uri: `opfs://one/${[...names, name].map(encodeURIComponent).join(\"/\")}${child.kind === \"directory\" ? \"/\" : \"\"}`,\n        isDirectory: child.kind === \"directory\"\n      });\n    return entries.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);\n  },\n  makeDirectory: async (uri, intermediates = true) => {\n    if (typeof window === \"undefined\") return;\n    const names = parts(uri);\n    await (await parent(names, intermediates)).getDirectoryHandle(names.at(-1), { create: true });\n  },\n  writeFile: async (uri, contents, encoding = \"utf8\") => {\n    if (typeof window === \"undefined\") return;\n    const names = parts(uri);\n    let data = contents;\n    if (encoding === \"base64\") {\n      if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(contents))\n        throw new Error(\"FileSystem: invalid base64 contents\");\n      data = Uint8Array.from(atob(contents), (char) => char.charCodeAt(0));\n    } else if (encoding !== \"utf8\") throw new Error(\"FileSystem: invalid encoding\");\n    await write(\n      await (await parent(names)).getFileHandle(names.at(-1), { create: true }),\n      data\n    );\n  },\n  copy: async (from, to) => {\n    if (typeof window !== \"undefined\") await transfer(from, to, false);\n  },\n  move: async (from, to) => {\n    if (typeof window !== \"undefined\") await transfer(from, to, true);\n  },\n  delete: async (uri) => {\n    if (typeof window === \"undefined\") return;\n    const names = parts(uri);\n    if (names.length === 1)\n      throw new Error(\"FileSystem: app root directories are protected\");\n    await (await parent(names)).removeEntry(names.at(-1), { recursive: true });\n  }\n});\nconst FileSystem = Object.freeze({\n  getDirectories: operations.getDirectories,\n  getInfo: (uri) => serial(() => operations.getInfo(uri)),\n  readDirectory: (uri) => serial(() => operations.readDirectory(uri)),\n  makeDirectory: (uri, intermediates = true) => serial(() => operations.makeDirectory(uri, intermediates)),\n  writeFile: (uri, contents, encoding = \"utf8\") => serial(() => operations.writeFile(uri, contents, encoding)),\n  copy: (from, to) => serial(() => operations.copy(from, to)),\n  move: (from, to) => serial(() => operations.move(from, to)),\n  delete: (uri) => serial(() => operations.delete(uri)),\n  File,\n  Directory,\n  Paths,\n  FileHandle,\n  FileMode\n});\nexport {\n  FileSystem\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":"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"}