## Asset formats explained
### Images: - PNG images and external assets are stored in `assets/images` - SVG images are stored in `assets/icons` - CSS files in `assets/style` - Translations are in `assets/translations`
## JSON file formats: > [!NOTE] > Note: If a property is wrapped with square brackets (`[name]`), it means that the property is optional
### [`locales.json`](locales.json) This file contains a definition of the available locales and translations. The keys of the object are the locale codes, and the values are the locale objects, with the following properties: | Property | Type | Description | | :--------------- | :--------- | :--------------------------------------------------------- | | `name` | `string` | The name of the locale in the locale's language | | `nameEnglish` | `string` | The name of the locale in English | | `emoji` | `string` | The flag emoji of the locale | | `userscriptDesc` | `string` | The description of the userscript in the locale's language | | `authors` | `string[]` | The authors of the translations |
### [`plugins.json`](plugins.json) (Not fully implemented yet, but should still be filled out when a plugin is added) For the structure of this array of objects, see `type PluginObj` in [`src/types.ts`](../src/types.ts)
### [`require.json`](require.json) This file contains the npm libraries that are loaded into the runtime through the `@require` userscript directive. It's an array of objects, which each have one of the following sets of properties: Using npm and a CDN: | Property | Type | Description | | :---------- | :-------- | :------------------------------------------------------------------------------------ | | `pkgName` | `string` | The name of the npm package, as in `npm i ` | | `path` | `string` | The path to the file that should be loaded, relative to the library root dir | | `global` | `string` | The name of the global variable that the library exports | | `[baseUrl]` | `string` | Base URL of the CDN to use - `https://cdn.jsdelivr.net/npm/` by default | | `[link]` | `boolean` | Whether `npm link` is active and the library should instead be included in the bundle | Using a direct URL: | Property | Type | Description | | :------- | :-------- | :------------------------------------------------------------------------------------ | | `url` | `string` | URL to the file to include | | `global` | `string` | The name of the global variable that the library exports | | `[link]` | `boolean` | Whether `npm link` is active and the library should instead be included in the bundle |