๐ @bridge/fs
This module allows extensions to interact with the file system, contained inside of the user's bridge. folder. View Source Code
js
import { ... } from '@bridge/fs'
โก Functions
setup
TODO
- Signature:
setup(baseDirectory: AnyDirectoryHandle) - Returns:
void
js
setup(FileSystemDirectoryHandle) // TODO
getDirectoryHandle
TODO
The getDirectoryHandle method returns a directory handle for a subdirectory with the specified path within the directory handle on which the method is called (or base handle of the file system).
- Signature:
getDirectoryHandle(path: string, config: Partial<IGetHandleConfig>) - Returns:
Promise<AnyDirectoryHandle>
js
const rpPath = getCurrentRP() // From @bridge/env
//PLEASE CHECK THIS! I HAVE NO IDEA WHAT I AM DOING.
const config = new IGetHandleConfig() {
create: false
createOnce: false
}
//Get the file and load it as a handle. Set to not create the directory and file.
const file = await getDirectoryHandle(`${rpPath}/example`, config)
console.log(file)
getFileHandle
TODO
- Signature:
getFileHandle(path: string, create?: boolean) - Returns:
Promise<VirtualFileHandle | FileSystemFileHandle>
js
const rpPath = getCurrentRP() // From @bridge/env
//Get the file and load it as a handle. Set to not create the directory and file.
const file = await getFileHandle(`${rpPath}/manifest.json`, false)
console.log(file)
pathTo
TODO
- Signature:
pathTo(handle: AnyHandle) - Returns:
Promise<string | undefined>
js
pathTo(AnyHandle) //TODO
mkdir
The mkdir function creates a new directory at the path that is specified.
- Signature:
mkdir(path: string, config?: Partial<IMkdirConfig>) - Returns:
Promise<void>
js
const currentProject = getCurrentProject() // From @bridge/env
// This checks if we have a project selected or not. If a project isn't selected it will be a temporary project.
if (currentProject == '~local/projects/bridge-temp-project') {
console.log('You do not have a project selected! Please select a project.')
} else {
const rpPath = getCurrentRP() // From @bridge/env
// Checks if the resource pack exists.
if (await directoryExists(rpPath)) {
const dir = await mkdir(`${rpPath}/entities`) // Creates the directory inside of the resource pack.
console.log('Created directory')
} else {
console.log('Resource pack does not exist!')
}
}
TIP
If you specify a path that does not exist with mkdir. This will create the directory anyway. For example
js
mkdir(`${rpPath}/entities/example`)
Will create the whole directory even if entities folder does not exist. This is the same for rpPath variable.
readdir
The readdir function reads all of the content within the given directory unless otherwise specified in the config parameter.
- Signature:
readdir(path: string, config: { withFileTypes?: boolean }) - Returns:
Promise<string[]> | Promise<AnyHandle[]>
js
const rpPath = getCurrentRP() // From @bridge/env
const contents = await readdir(rpPath)
contents.forEach((element) => {
console.log(`Element: ${rpPath}/${element}`)
})
readFilesFromDir
The readFilesFromDir function reads all of the contents within the given directory including nested directories and returns the files inside.
- Signature:
readFilesFromDir(path: string, dirHandle: AnyDirectoryHandle | Promise<AnyDirectoryHandle>) - Returns:
Promise<{ kind: string; name: string; path: string }[]>
js
const rpPath = getCurrentRP() // From @bridge/env
const contents = await readFilesFromDir(rpPath)
contents.forEach((element) => {
console.log(
`File Info:\nName: ${element.name}\nKind: ${element.kind}\nPath: ${element.path}`
)
})
/*
File Info:
Name: example.json
Kind: file
Path: projects/Example/RP/attachables/example.json
*/
readFile
The readFile function reads a file at the specified path and returns it.
- Signature:
readFile(path: string) - Returns:
Promise<File>
js
const rpPath = getCurrentRP() // From @bridge/env
const file = await readFile(`${rpPath}/manifest.json`)
console.log(await file.text())
unlink
TODO
- Signature:
unlink(path: string) - Returns:
Promise<void>
js
//TODO
writeFile
The writeFile function writes to a file at the specified path.
- Signature:
writeFile(path: string, data: FileSystemWriteChunkType) - Returns:
Promise<FileSystemFileHandle>
js
//TODO
write
The write function writes data to a file by its file handle.
- Signature:
write(fileHandle: AnyFileHandle, data: FileSystemWriteChunkType) - Returns:
Promise<void>
js
//TODO
readJSON
The readJSON function reads a JSON file at a given path and returns the object data from the file. This uses json5 to parse the file data.
- Signature:
readJSON(path) - Returns:
Promise<any>
js
const rpPath = getCurrentRP() // From @bridge/env
const file = readJSON(`${rpPath}/manifest.json`)
console.log(file.header.uuid)
readJsonHandle
The readJsonHandle function reads a JSON file by its file handle. This uses json5 to parse the file data.
- Signature:
readJsonHandle(fileHandle: AnyFileHandle) - Returns:
Promise<any>
js
const rpPath = getCurrentRP() // From @bridge/env
//Get the file and load it as a handle
const file = await getFileHandle(`${rpPath}/manifest.json`, false)
//Read the json from the file
const result = await readJsonHandle(file)
console.log(result)
writeJSON
The writeJSON function writes a JavaScript object as JSON to a file.
- Signature:
writeJSON(path: string, data: any, beautify: boolean) - Returns:
Promise<FileSystemFileHandle | VirtualFileHandle>
js
const objectData = {
exampleKey: 'example',
}
const file = await writeJSON('example/example.json', objectData, true)
move
The move function moves a file or folder to a new location in the file system.
- Signature:
move(path: string, newPath: string) - Returns:
Promise<void>
js
const rpPath = await getCurrentRP() // From @bridge/env
//Move file
await move(`${rpPath}/example.json`, `${rpPath}/example/example.json`)
//Move folder
await move(`${rpPath}/textures`, `${rpPath}/example/textures`)
copyFile
The copyFile function copies the contents of a file to another existing file with the specified paths.
- Signature:
copyFile(originPath: string, destPath: string) - Returns:
Promise<AnyFileHandle>
js
//TODO
copyFileHandle
The copyFileHandle function copies the contents of a file to another existing file from the file system.
- Signature:
copyFileHandle(originHandle, destHandle) - Returns:
Promise<AnyFileHandle>
js
//TODO
copyFolder
The copyFolder function copies the contents of a folder to another existing folder by their file paths.
- Signature:
copyFolder(originPath: string, destPath: string) - Returns:
Promise<void>
js
//TODO
copyFolderByHandle
The copyFolderByHandle function copies the contents of a folder to another existing folder by their file handles.
- Signature:
copyFolderByHandle(originHandle: AnyDirectoryHandle, destHandle: AnyDirectoryHandle) - Returns:
Promise<void>
js
//TODO
loadFileHandleAsDataUrl
Read a file by its file handle as a URL.
- Signature:
loadFileHandleAsDataUrl(fileHandle: AnyFileHandle) - Returns:
Promise<string>
js
const rpPath = await getCurrentRP() // From @bridge/env
if (await directoryExists(rpPath)) {
const file = await getFileHandle(`${rpPath}/textures/example.png`, false)
console.log(await loadFileHandleAsDataUrl(file)) //data:image/png;base64,iVBORw0KGg...
}
fileExists
This function checks if the file in the path specified exists.
- Signature:
fileExists(path: string) - Returns:
Promise<boolean>
js
const exists = await fileExists('example/example.json')
if (exists) {
console.log('File exists!')
} else {
console.log("File doesn't exist!")
}
directoryExists
This function checks if the specified directory exists.
- Signature:
directoryExists(path: string) - Returns:
Promise<boolean>
js
const exists = await directoryExists('projects/example')
if (exists) {
console.log('Project exists!')
} else {
console.log('Project does not exist!')
}
directoryHandlesFromGlob
TODO
- Signature:
directoryHandlesFromGlob(glob: string, startPath?: string) - Returns:
Promise<AnyDirectoryHandle[]>
js
//TODO
๐ Interfaces
IGetHandleConfig
ts
export interface IGetHandleConfig {
create: boolean
createOnce: boolean
}
IMkdirConfig
ts
export interface IMkdirConfig {
recursive: boolean
}
๐งช Types
AnyDirectoryHandle
ts
export type AnyDirectoryHandle =
| FileSystemDirectoryHandle
| VirtualDirectoryHandle
AnyHandle
ts
export type AnyHandle =
| FileSystemFileHandle
| FileSystemDirectoryHandle
| VirtualHandle
AnyFileHandle
ts
export type AnyFileHandle = FileSystemFileHandle | VirtualFileHandle