one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 6.65 kB
Source Map (JSON)
{"version":3,"file":"opfs.js","names":[],"sources":["esm/platform/file-system/opfs.js"],"sourcesContent":["const folders = [\"documents\", \"cache\", \"applicationSupport\", \"temporary\"];\nconst directories = Object.fromEntries(\n folders.map((name) => [name, `opfs://one/${name}/`])\n);\nfunction parts(uri) {\n const url = new URL(uri);\n if (url.protocol !== \"opfs:\" || url.host !== \"one\" || url.search || url.hash) {\n throw new Error(\"FileSystem: expected an opfs://one/ URI\");\n }\n const names = url.pathname.split(\"/\").filter(Boolean).map(decodeURIComponent);\n if (!folders.includes(names[0]) || names.some((name) => name === \".\" || name === \"..\" || /[/\\\\\\0]/.test(name))) {\n throw new Error(\"FileSystem: invalid path\");\n }\n return names;\n}\nasync function root() {\n if (!navigator.storage?.getDirectory)\n throw new Error(\"FileSystem: Origin Private File System is unavailable\");\n const handle = await navigator.storage.getDirectory();\n for (const name of folders) await handle.getDirectoryHandle(name, { create: true });\n return handle;\n}\nasync function parent(names, create = false) {\n let handle = await root();\n for (const name of names.slice(0, -1))\n handle = await handle.getDirectoryHandle(name, { create });\n return handle;\n}\nasync function entry(names) {\n const handle = await parent(names);\n const name = names.at(-1);\n try {\n return await handle.getFileHandle(name);\n } catch (error) {\n if (error.name !== \"TypeMismatchError\") throw error;\n return handle.getDirectoryHandle(name);\n }\n}\nasync function info(uri) {\n const names = parts(uri);\n try {\n const handle = await entry(names);\n if (handle.kind === \"directory\") return { uri, exists: true, isDirectory: true };\n const file = await handle.getFile();\n return {\n uri,\n exists: true,\n isDirectory: false,\n size: file.size,\n modifiedAt: file.lastModified\n };\n } catch (error) {\n if (error.name !== \"NotFoundError\") throw error;\n return { uri, exists: false, isDirectory: false };\n }\n}\nasync function write(handle, data) {\n const writable = await handle.createWritable();\n try {\n await writable.write(data);\n await writable.close();\n } catch (error) {\n await writable.abort().catch(() => {\n });\n throw error;\n }\n}\nasync function copyEntry(source, target, name) {\n if (source.kind === \"file\") {\n await write(\n await target.getFileHandle(name, { create: true }),\n await source.getFile()\n );\n } else {\n const directory = await target.getDirectoryHandle(name, { create: true });\n for await (const [childName, child] of source.entries())\n await copyEntry(child, directory, childName);\n }\n}\nasync function transfer(fromUri, toUri, move) {\n const from = parts(fromUri), to = parts(toUri);\n if (move && from.length === 1)\n throw new Error(\"FileSystem: app root directories are protected\");\n if (to.length <= from.length && to.every((name, i) => name === from[i]) || from.every((name, i) => name === to[i]))\n throw new Error(\"FileSystem: overlapping paths\");\n const source = await entry(from);\n if ((await info(toUri)).exists)\n throw new Error(\"FileSystem: destination already exists\");\n const destination = await parent(to);\n try {\n await copyEntry(source, destination, to.at(-1));\n } catch (error) {\n await destination.removeEntry(to.at(-1), { recursive: true }).catch(() => {\n });\n throw error;\n }\n if (move) await (await parent(from)).removeEntry(from.at(-1), { recursive: true });\n}\nlet tail = Promise.resolve();\nfunction serial(work) {\n const next = tail.then(work);\n tail = next.catch(() => {\n });\n return next;\n}\nexport {\n directories,\n entry,\n folders,\n info,\n parent,\n parts,\n root,\n serial,\n transfer,\n write\n};\n//# sourceMappingURL=opfs.js.map\n"],"mappings":"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"}