chore/migrate-to-oxc #1
196
.agents/skills/migrate-oxlint/SKILL.md
Normal file
196
.agents/skills/migrate-oxlint/SKILL.md
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
---
|
||||||
|
name: migrate-oxlint
|
||||||
|
description: Guide for migrating a project from ESLint to Oxlint. Use when asked to migrate, convert, or switch a JavaScript/TypeScript project's linter from ESLint to Oxlint.
|
||||||
|
---
|
||||||
|
|
||||||
|
This skill guides you through migrating a JavaScript/TypeScript project from ESLint to [Oxlint](https://oxc.rs/docs/guide/usage/linter/).
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Oxlint is a high-performance linter that implements many popular ESLint rules natively in Rust. It can be used alongside ESLint or as a full replacement.
|
||||||
|
|
||||||
|
An official migration tool is available, and will be used by this skill: [`@oxlint/migrate`](https://github.com/oxc-project/oxlint-migrate)
|
||||||
|
|
||||||
|
## Step 1: Run Automated Migration
|
||||||
|
|
||||||
|
Run the migration tool in the project root:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @oxlint/migrate
|
||||||
|
```
|
||||||
|
|
||||||
|
This reads your ESLint flat config (`eslint.config.js` for example) and generates a `.oxlintrc.json` file from it. It will find your ESLint config file automatically in most cases.
|
||||||
|
|
||||||
|
See options below for more info.
|
||||||
|
|
||||||
|
### Key Options
|
||||||
|
|
||||||
|
| Option | Description |
|
||||||
|
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `--type-aware` | Include type-aware rules from `@typescript-eslint` (will require the `oxlint-tsgolint` package to be installed after migrating) |
|
||||||
|
| `--with-nursery` | Include experimental rules still under development, may not be fully stable or consistent with ESLint equivalents |
|
||||||
|
| `--js-plugins [bool]` | Enable/disable ESLint plugin migration via `jsPlugins` (default: enabled) |
|
||||||
|
| `--details` | List rules that could not be migrated |
|
||||||
|
| `--replace-eslint-comments` | Convert all `// eslint-disable` comments to `// oxlint-disable` |
|
||||||
|
| `--output-file <file>` | Specify a different output path (default: `.oxlintrc.json`) |
|
||||||
|
|
||||||
|
If your ESLint config is not at the default location, pass the path explicitly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @oxlint/migrate ./path/to/eslint.config.js
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2: Review Generated Config
|
||||||
|
|
||||||
|
After migration, review the generated `.oxlintrc.json`.
|
||||||
|
|
||||||
|
### Plugin Mapping
|
||||||
|
|
||||||
|
The migration tool automatically maps ESLint plugins to oxlint's built-in equivalents. The following table is for reference when reviewing the generated config:
|
||||||
|
|
||||||
|
| ESLint Plugin | Oxlint Plugin Name |
|
||||||
|
| --------------------------------------------------- | ------------------ |
|
||||||
|
| `@typescript-eslint/eslint-plugin` | `typescript` |
|
||||||
|
| `eslint-plugin-react` / `eslint-plugin-react-hooks` | `react` |
|
||||||
|
| `eslint-plugin-import` / `eslint-plugin-import-x` | `import` |
|
||||||
|
| `eslint-plugin-unicorn` | `unicorn` |
|
||||||
|
| `eslint-plugin-jsx-a11y` | `jsx-a11y` |
|
||||||
|
| `eslint-plugin-react-perf` | `react-perf` |
|
||||||
|
| `eslint-plugin-promise` | `promise` |
|
||||||
|
| `eslint-plugin-jest` | `jest` |
|
||||||
|
| `@vitest/eslint-plugin` | `vitest` |
|
||||||
|
| `eslint-plugin-jsdoc` | `jsdoc` |
|
||||||
|
| `eslint-plugin-next` | `nextjs` |
|
||||||
|
| `eslint-plugin-node` | `node` |
|
||||||
|
| `eslint-plugin-vue` | `vue` |
|
||||||
|
|
||||||
|
Default plugins (enabled when `plugins` field is omitted): `unicorn`, `typescript`, `oxc`.
|
||||||
|
Setting the `plugins` array explicitly overrides these defaults.
|
||||||
|
|
||||||
|
ESLint core rules are usable in oxlint without needing to configure a plugin in the config file.
|
||||||
|
|
||||||
|
### Rule Categories
|
||||||
|
|
||||||
|
Oxlint groups rules into categories for bulk configuration, though only `correctness` is enabled by default:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"categories": {
|
||||||
|
"correctness": "error",
|
||||||
|
"suspicious": "warn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Available categories: `correctness` (default: enabled), `suspicious`, `pedantic`, `perf`, `style`, `restriction`, `nursery`.
|
||||||
|
|
||||||
|
Individual rule settings in `rules` override category settings.
|
||||||
|
|
||||||
|
`@oxlint/migrate` will turn `correctness` off to avoid enabling additional rules that weren't enabled by your ESLint config. You can choose to enable additional categories after migration if desired.
|
||||||
|
|
||||||
|
### Check Unmigrated Rules
|
||||||
|
|
||||||
|
Run with `--details` to see which ESLint rules could not be migrated:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @oxlint/migrate --details
|
||||||
|
```
|
||||||
|
|
||||||
|
Review the output and decide whether to keep ESLint for those rules or not. Some rules may be mentioned in the output from `--details` as having equivalents in oxlint that were not automatically mapped by the migration tool. In those cases, consider enabling the equivalent oxlint rule manually after migration.
|
||||||
|
|
||||||
|
## Step 3: Install Oxlint
|
||||||
|
|
||||||
|
Install the core oxlint package (use `yarn install`, `pnpm install`, `vp install`, `bun install`, etc. depending on your package manager):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -D oxlint
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to add the `oxlint-tsgolint` package, if you intend to use type-aware rules that require TypeScript type information:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install -D oxlint-tsgolint
|
||||||
|
```
|
||||||
|
|
||||||
|
No other packages besides the above are needed by default, though you will need to keep/install any additional ESLint plugins that were migrated into `jsPlugins`. Do not add `@oxlint/migrate` to the package.json, it is meant for one-off usage.
|
||||||
|
|
||||||
|
## Step 4: Handle Unsupported Features
|
||||||
|
|
||||||
|
Some features require manual attention:
|
||||||
|
|
||||||
|
- Local plugins (relative path imports): Must be migrated manually to `jsPlugins`
|
||||||
|
- `eslint-plugin-prettier`: Supported, but very slow. It is recommended to use [oxfmt](https://oxc.rs/docs/guide/usage/formatter) instead, or switch to `prettier --check` as a separate step alongside oxlint.
|
||||||
|
- `settings` in override configs: Oxlint does not support `settings` inside `overrides` blocks.
|
||||||
|
- ESLint v9+ plugins: Not all work with oxlint's JS Plugins API, but the majority will.
|
||||||
|
|
||||||
|
### Local Plugins
|
||||||
|
|
||||||
|
If you have any custom ESLint rules in the project repo itself, you can migrate them manually after running the migration tool by adding them to the `jsPlugins` field in `.oxlintrc.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"jsPlugins": ["./path/to/my-plugin.js"],
|
||||||
|
"rules": {
|
||||||
|
"local-plugin/rule-name": "error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### External ESLint Plugins
|
||||||
|
|
||||||
|
For ESLint plugins without a built-in oxlint equivalent, use the `jsPlugins` field to load them:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"jsPlugins": ["eslint-plugin-custom"],
|
||||||
|
"rules": {
|
||||||
|
"custom/my-rule": "warn"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 5: Update CI and Scripts
|
||||||
|
|
||||||
|
Replace ESLint commands with oxlint. Path arguments are optional; oxlint defaults to the current working directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Before
|
||||||
|
npx eslint src/
|
||||||
|
npx eslint --fix src/
|
||||||
|
|
||||||
|
# After
|
||||||
|
npx oxlint src/
|
||||||
|
npx oxlint --fix src/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Common CLI Options
|
||||||
|
|
||||||
|
| ESLint | oxlint equivalent |
|
||||||
|
| ------------------------- | ---------------------------------------------- |
|
||||||
|
| `eslint .` | `oxlint` (default: lints the cwd) |
|
||||||
|
| `eslint src/` | `oxlint src/` |
|
||||||
|
| `eslint --fix` | `oxlint --fix` |
|
||||||
|
| `eslint --max-warnings 0` | `oxlint --deny-warnings` or `--max-warnings 0` |
|
||||||
|
| `eslint --format json` | `oxlint --format json` |
|
||||||
|
|
||||||
|
Additional oxlint options:
|
||||||
|
|
||||||
|
- `--tsconfig <path>`: Specify tsconfig.json path, likely unnecessary unless you have a non-standard name for `tsconfig.json`.
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- You can run alongside ESLint if necessary: Oxlint is designed to complement ESLint during migration, but with JS Plugins many projects can switch over fully without losing many rules.
|
||||||
|
- Disable comments work: `// eslint-disable` and `// eslint-disable-next-line` comments are supported by oxlint. Use `--replace-eslint-comments` when running @oxlint/migrate to convert them to `// oxlint-disable` equivalents if desired.
|
||||||
|
- List available rules: Run `npx oxlint --rules` to see all supported rules, or refer to the [rule documentation](https://oxc.rs/docs/guide/usage/linter/rules.html).
|
||||||
|
- Schema support: Add `"$schema": "./node_modules/oxlint/configuration_schema.json"` to `.oxlintrc.json` for editor autocompletion if the migration tool didn't do it automatically.
|
||||||
|
- Output formats: `default`, `stylish`, `json`, `github`, `gitlab`, `junit`, `checkstyle`, `unix`
|
||||||
|
- Ignore files: `.eslintignore` is supported by oxlint if you have it, but it's recommended to move any ignore patterns into the `ignorePatterns` field in `.oxlintrc.json` for consistency and simplicity. All files and paths ignored via a `.gitignore` file will be ignored by oxlint by default as well.
|
||||||
|
- If you ran the migration tool multiple times, remove the `.oxlintrc.json.bak` backup file created by the migration tool once you've finished migrating.
|
||||||
|
- If you are not using any JS Plugins and have replaced your ESLint configuration, you can remove all ESLint packages from your project dependencies.
|
||||||
|
- Ensure your editor is configured to use oxlint instead of ESLint for linting and error reporting. You may want to install the Oxc extension for your preferred editor. See https://oxc.rs/docs/guide/usage/linter/editors.html for more details.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [CLI Reference](https://oxc.rs/docs/guide/usage/linter/cli.html)
|
||||||
|
- [Config File Reference](https://oxc.rs/docs/guide/usage/linter/config-file-reference.html)
|
||||||
|
- [Complete Oxlint rule list and docs](https://oxc.rs/docs/guide/usage/linter/rules.html)
|
||||||
53
.eslintrc.js
53
.eslintrc.js
@@ -1,53 +0,0 @@
|
|||||||
require("@rushstack/eslint-patch/modern-module-resolution")
|
|
||||||
|
|
||||||
const DEV_TOOL_ACTIVATED =
|
|
||||||
process.env.NODE_ENV === "production" ? "warn" : "off"
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
env: {
|
|
||||||
node: true,
|
|
||||||
es2022: true,
|
|
||||||
},
|
|
||||||
extends: ["plugin:vue/vue3-essential", "@vue/eslint-config-typescript"],
|
|
||||||
plugins: ["simple-import-sort", "unused-imports"],
|
|
||||||
rules: {
|
|
||||||
"no-console": DEV_TOOL_ACTIVATED,
|
|
||||||
"no-debugger": DEV_TOOL_ACTIVATED,
|
|
||||||
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
||||||
"@typescript-eslint/camelcase": "off",
|
|
||||||
"prettier-vue/prettier": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
semi: false,
|
|
||||||
singleQuote: true,
|
|
||||||
trailingComma: "none",
|
|
||||||
arrowParens: "always",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"vue/no-v-html": "off",
|
|
||||||
"no-restricted-imports": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
name: "vue-demi",
|
|
||||||
importNames: ["computed"],
|
|
||||||
message: "Please use computed from vue instead.",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"simple-import-sort/imports": "error",
|
|
||||||
"simple-import-sort/exports": "error",
|
|
||||||
"unused-imports/no-unused-imports": "error",
|
|
||||||
},
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: [
|
|
||||||
"**/__tests__/*.{j,t}s?(x)",
|
|
||||||
"**/tests/unit/**/*.spec.{j,t}s?(x)",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}
|
|
||||||
9
.oxfmtrc.json
Normal file
9
.oxfmtrc.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"$schema": "./node_modules/oxfmt/configuration_schema.json",
|
||||||
|
"semi": false,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"printWidth": 80,
|
||||||
|
"sortPackageJson": false,
|
||||||
|
"ignorePatterns": []
|
||||||
|
}
|
||||||
40
.oxlintrc.json
Normal file
40
.oxlintrc.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
||||||
|
"plugins": ["typescript"],
|
||||||
|
"jsPlugins": [
|
||||||
|
"eslint-plugin-prettier-vue",
|
||||||
|
"eslint-plugin-simple-import-sort",
|
||||||
|
"eslint-plugin-unused-imports"
|
||||||
|
],
|
||||||
|
"categories": {
|
||||||
|
"correctness": "off"
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"builtin": true
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"no-restricted-imports": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"name": "vue-demi",
|
||||||
|
"importNames": ["computed"],
|
||||||
|
"message": "Please use computed from vue instead."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"simple-import-sort/imports": "error",
|
||||||
|
"simple-import-sort/exports": "error",
|
||||||
|
"unused-imports/no-unused-imports": "error"
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": ["**/*.vue"],
|
||||||
|
"rules": {
|
||||||
|
"unused-imports/no-unused-imports": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"semi": false
|
|
||||||
}
|
|
||||||
@@ -3,42 +3,43 @@
|
|||||||
// Script pour changer facilement le thème sombre de l'application Remanso
|
// Script pour changer facilement le thème sombre de l'application Remanso
|
||||||
// Usage: pnpm run theme:dark [theme-name]
|
// Usage: pnpm run theme:dark [theme-name]
|
||||||
|
|
||||||
import { readFileSync, writeFileSync } from "fs"
|
import { readFileSync, writeFileSync } from 'fs'
|
||||||
import { join } from "path"
|
import { join } from 'path'
|
||||||
import { commitTheme } from "./change-theme"
|
|
||||||
|
import { commitTheme } from './change-theme'
|
||||||
|
|
||||||
// Chemins vers les fichiers
|
// Chemins vers les fichiers
|
||||||
const themeConfigPath = join(__dirname, "..", "src", "theme.config.ts")
|
const themeConfigPath = join(__dirname, '..', 'src', 'theme.config.ts')
|
||||||
const appCssPath = join(__dirname, "..", "src", "styles", "app.css")
|
const appCssPath = join(__dirname, '..', 'src', 'styles', 'app.css')
|
||||||
|
|
||||||
// Vérifier les arguments
|
// Vérifier les arguments
|
||||||
if (process.argv.length < 3) {
|
if (process.argv.length < 3) {
|
||||||
console.log("Usage: pnpm run theme:dark [theme-name]")
|
console.log('Usage: pnpm run theme:dark [theme-name]')
|
||||||
console.log("Exemple: pnpm run theme:dark business")
|
console.log('Exemple: pnpm run theme:dark business')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mode fixé à dark pour ce script
|
// Mode fixé à dark pour ce script
|
||||||
const mode = "dark"
|
const mode = 'dark'
|
||||||
const newTheme = process.argv[2] // nom du nouveau thème
|
const newTheme = process.argv[2] // nom du nouveau thème
|
||||||
|
|
||||||
// Lire le contenu actuel du fichier de configuration
|
// Lire le contenu actuel du fichier de configuration
|
||||||
let themeConfigContent = readFileSync(themeConfigPath, "utf8")
|
let themeConfigContent = readFileSync(themeConfigPath, 'utf8')
|
||||||
|
|
||||||
// Remplacer la valeur du thème sombre
|
// Remplacer la valeur du thème sombre
|
||||||
themeConfigContent = themeConfigContent.replace(
|
themeConfigContent = themeConfigContent.replace(
|
||||||
/dark:\s*['"][^'"]*['"],/,
|
/dark:\s*['"][^'"]*['"],/,
|
||||||
`dark: '${newTheme}',`,
|
`dark: '${newTheme}',`
|
||||||
)
|
)
|
||||||
|
|
||||||
// Écrire le contenu mis à jour dans le fichier
|
// Écrire le contenu mis à jour dans le fichier
|
||||||
writeFileSync(themeConfigPath, themeConfigContent)
|
writeFileSync(themeConfigPath, themeConfigContent)
|
||||||
|
|
||||||
// Mettre à jour également le fichier app.css pour le thème --prefersdark
|
// Mettre à jour également le fichier app.css pour le thème --prefersdark
|
||||||
let appCssContent = readFileSync(appCssPath, "utf8")
|
let appCssContent = readFileSync(appCssPath, 'utf8')
|
||||||
appCssContent = appCssContent.replace(
|
appCssContent = appCssContent.replace(
|
||||||
/(\s+)([a-zA-Z0-9-]+)(\s+--prefersdark;)/,
|
/(\s+)([a-zA-Z0-9-]+)(\s+--prefersdark;)/,
|
||||||
`$1${newTheme}$3`,
|
`$1${newTheme}$3`
|
||||||
)
|
)
|
||||||
writeFileSync(appCssPath, appCssContent)
|
writeFileSync(appCssPath, appCssContent)
|
||||||
|
|
||||||
|
|||||||
@@ -3,51 +3,52 @@
|
|||||||
// Script pour changer facilement le thème clair de l'application Remanso
|
// Script pour changer facilement le thème clair de l'application Remanso
|
||||||
// Usage: pnpm run theme:light [theme-name]
|
// Usage: pnpm run theme:light [theme-name]
|
||||||
|
|
||||||
import { readFileSync, writeFileSync } from "fs"
|
import { readFileSync, writeFileSync } from 'fs'
|
||||||
import { join } from "path"
|
import { join } from 'path'
|
||||||
import { commitTheme } from "./change-theme"
|
|
||||||
|
import { commitTheme } from './change-theme'
|
||||||
|
|
||||||
// Chemins vers les fichiers
|
// Chemins vers les fichiers
|
||||||
const themeConfigPath = join(__dirname, "..", "src", "theme.config.ts")
|
const themeConfigPath = join(__dirname, '..', 'src', 'theme.config.ts')
|
||||||
const indexPath = join(__dirname, "..", "index.html")
|
const indexPath = join(__dirname, '..', 'index.html')
|
||||||
const appCssPath = join(__dirname, "..", "src", "styles", "app.css")
|
const appCssPath = join(__dirname, '..', 'src', 'styles', 'app.css')
|
||||||
|
|
||||||
// Vérifier les arguments
|
// Vérifier les arguments
|
||||||
if (process.argv.length < 3) {
|
if (process.argv.length < 3) {
|
||||||
console.log("Usage: pnpm run theme:light [theme-name]")
|
console.log('Usage: pnpm run theme:light [theme-name]')
|
||||||
console.log("Exemple: pnpm run theme:light cupcake")
|
console.log('Exemple: pnpm run theme:light cupcake')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mode fixé à light pour ce script
|
// Mode fixé à light pour ce script
|
||||||
const mode = "light"
|
const mode = 'light'
|
||||||
const newTheme = process.argv[2] // nom du nouveau thème
|
const newTheme = process.argv[2] // nom du nouveau thème
|
||||||
|
|
||||||
// Lire le contenu actuel du fichier de configuration
|
// Lire le contenu actuel du fichier de configuration
|
||||||
let themeConfigContent = readFileSync(themeConfigPath, "utf8")
|
let themeConfigContent = readFileSync(themeConfigPath, 'utf8')
|
||||||
|
|
||||||
// Remplacer la valeur du thème clair
|
// Remplacer la valeur du thème clair
|
||||||
themeConfigContent = themeConfigContent.replace(
|
themeConfigContent = themeConfigContent.replace(
|
||||||
/light:\s*['"][^'"]*['"],/,
|
/light:\s*['"][^'"]*['"],/,
|
||||||
`light: '${newTheme}',`,
|
`light: '${newTheme}',`
|
||||||
)
|
)
|
||||||
|
|
||||||
// Écrire le contenu mis à jour dans le fichier
|
// Écrire le contenu mis à jour dans le fichier
|
||||||
writeFileSync(themeConfigPath, themeConfigContent)
|
writeFileSync(themeConfigPath, themeConfigContent)
|
||||||
|
|
||||||
// Mettre à jour également le fichier index.html
|
// Mettre à jour également le fichier index.html
|
||||||
let indexContent = readFileSync(indexPath, "utf8")
|
let indexContent = readFileSync(indexPath, 'utf8')
|
||||||
indexContent = indexContent.replace(
|
indexContent = indexContent.replace(
|
||||||
/data-theme="[^"]*"/,
|
/data-theme="[^"]*"/,
|
||||||
`data-theme="${newTheme}"`,
|
`data-theme="${newTheme}"`
|
||||||
)
|
)
|
||||||
writeFileSync(indexPath, indexContent)
|
writeFileSync(indexPath, indexContent)
|
||||||
|
|
||||||
// Mettre à jour également le fichier app.css pour le thème --default
|
// Mettre à jour également le fichier app.css pour le thème --default
|
||||||
let appCssContent = readFileSync(appCssPath, "utf8")
|
let appCssContent = readFileSync(appCssPath, 'utf8')
|
||||||
appCssContent = appCssContent.replace(
|
appCssContent = appCssContent.replace(
|
||||||
/(\s+)([a-zA-Z0-9-]+)(\s+--default,)/,
|
/(\s+)([a-zA-Z0-9-]+)(\s+--default,)/,
|
||||||
`$1${newTheme}$3`,
|
`$1${newTheme}$3`
|
||||||
)
|
)
|
||||||
writeFileSync(appCssPath, appCssContent)
|
writeFileSync(appCssPath, appCssContent)
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
import { execSync } from "child_process"
|
import { execSync } from 'child_process'
|
||||||
|
|
||||||
export const commitTheme = (mode: string, newTheme: string) => {
|
export const commitTheme = (mode: string, newTheme: string) => {
|
||||||
// Créer un commit avec les changements
|
// Créer un commit avec les changements
|
||||||
try {
|
try {
|
||||||
// Ajouter tous les fichiers modifiés
|
// Ajouter tous les fichiers modifiés
|
||||||
execSync("git add .", { stdio: "inherit" })
|
execSync('git add .', { stdio: 'inherit' })
|
||||||
|
|
||||||
// Créer le commit avec le message approprié
|
// Créer le commit avec le message approprié
|
||||||
const commitMessage = `design: change ${mode} theme to ${newTheme}`
|
const commitMessage = `design: change ${mode} theme to ${newTheme}`
|
||||||
execSync(`git commit -m "${commitMessage}"`, { stdio: "inherit" })
|
execSync(`git commit -m "${commitMessage}"`, { stdio: 'inherit' })
|
||||||
|
|
||||||
console.log(`Commit créé avec succès: "${commitMessage}"`)
|
console.log(`Commit créé avec succès: "${commitMessage}"`)
|
||||||
|
|
||||||
execSync(`git push`, { stdio: "inherit" })
|
execSync(`git push`, { stdio: 'inherit' })
|
||||||
|
|
||||||
console.log(`Push sur origin`)
|
console.log(`Push sur origin`)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Erreur lors de la création du commit:", error)
|
console.error('Erreur lors de la création du commit:', error)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,10 @@ Rolldown's minifier drops the `while(`/`for(;` keyword when a `while (x in globa
|
|||||||
File: `node_modules/@ark/schema/out/shared/registry.js`
|
File: `node_modules/@ark/schema/out/shared/registry.js`
|
||||||
|
|
||||||
```js
|
```js
|
||||||
let _registryName = "$ark";
|
let _registryName = '$ark'
|
||||||
let suffix = 2;
|
let suffix = 2
|
||||||
while (_registryName in globalThis)
|
while (_registryName in globalThis) _registryName = `$ark${suffix++}`
|
||||||
_registryName = `$ark${suffix++}`;
|
export const registryName = _registryName
|
||||||
export const registryName = _registryName;
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Actual minified output
|
## Actual minified output
|
||||||
@@ -44,7 +43,10 @@ The `while(` keyword is missing. The orphaned `)` is a syntax error.
|
|||||||
## Expected output
|
## Expected output
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var dn=`$ark`,fn=2;for(;dn in globalThis;)dn=`$ark${fn++}`;var pn=dn;
|
var dn = `$ark`,
|
||||||
|
fn = 2
|
||||||
|
for (; dn in globalThis; ) dn = `$ark${fn++}`
|
||||||
|
var pn = dn
|
||||||
```
|
```
|
||||||
|
|
||||||
## Impact
|
## Impact
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ status = 200
|
|||||||
|
|
||||||
[[headers]]
|
[[headers]]
|
||||||
for = "/client-metadata.json"
|
for = "/client-metadata.json"
|
||||||
[headers.values]
|
[headers.values]
|
||||||
Access-Control-Allow-Origin = "*"
|
Access-Control-Allow-Origin = "*"
|
||||||
Content-Type = "application/json"
|
Content-Type = "application/json"
|
||||||
|
|
||||||
[[redirects]]
|
[[redirects]]
|
||||||
from = "/client-metadata.json"
|
from = "/client-metadata.json"
|
||||||
|
|||||||
@@ -8,7 +8,10 @@
|
|||||||
"serve": "vite preview",
|
"serve": "vite preview",
|
||||||
"test": "vitest",
|
"test": "vitest",
|
||||||
"types": "tsc --noEmit",
|
"types": "tsc --noEmit",
|
||||||
"lint": "eslint --ext .ts,.js,.vue --ignore-path .gitignore --fix src",
|
"lint": "oxlint",
|
||||||
|
"lint:fix": "oxlint --fix",
|
||||||
|
"fmt": "oxfmt",
|
||||||
|
"fmt:check": "oxfmt --check",
|
||||||
"prepare": "husky",
|
"prepare": "husky",
|
||||||
"theme:light": "esno _scripts/change-theme-light.ts",
|
"theme:light": "esno _scripts/change-theme-light.ts",
|
||||||
"theme:dark": "esno _scripts/change-theme-dark.ts",
|
"theme:dark": "esno _scripts/change-theme-dark.ts",
|
||||||
@@ -85,6 +88,8 @@
|
|||||||
"eslint-plugin-vue": "^10.8.0",
|
"eslint-plugin-vue": "^10.8.0",
|
||||||
"esno": "^4.8.0",
|
"esno": "^4.8.0",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
|
"oxfmt": "^0.42.0",
|
||||||
|
"oxlint": "^1.57.0",
|
||||||
"prettier": "^3.8.1",
|
"prettier": "^3.8.1",
|
||||||
"prettier-vue": "^1.1.2",
|
"prettier-vue": "^1.1.2",
|
||||||
"sass": "^1.98.0",
|
"sass": "^1.98.0",
|
||||||
|
|||||||
431
pnpm-lock.yaml
generated
431
pnpm-lock.yaml
generated
@@ -213,6 +213,12 @@ importers:
|
|||||||
husky:
|
husky:
|
||||||
specifier: ^9.1.7
|
specifier: ^9.1.7
|
||||||
version: 9.1.7
|
version: 9.1.7
|
||||||
|
oxfmt:
|
||||||
|
specifier: ^0.42.0
|
||||||
|
version: 0.42.0
|
||||||
|
oxlint:
|
||||||
|
specifier: ^1.57.0
|
||||||
|
version: 1.57.0
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.8.1
|
specifier: ^3.8.1
|
||||||
version: 3.8.1
|
version: 3.8.1
|
||||||
@@ -1405,6 +1411,250 @@ packages:
|
|||||||
'@oxc-project/types@0.120.0':
|
'@oxc-project/types@0.120.0':
|
||||||
resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==}
|
resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==}
|
||||||
|
|
||||||
|
'@oxfmt/binding-android-arm-eabi@0.42.0':
|
||||||
|
resolution: {integrity: sha512-dsqPTYsozeokRjlrt/b4E7Pj0z3eS3Eg74TWQuuKbjY4VttBmA88rB7d50Xrd+TZ986qdXCNeZRPEzZHAe+jow==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@oxfmt/binding-android-arm64@0.42.0':
|
||||||
|
resolution: {integrity: sha512-t+aAjHxcr5eOBphFHdg1ouQU9qmZZoRxnX7UOJSaTwSoKsb6TYezNKO0YbWytGXCECObRqNcUxPoPr0KaraAIg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@oxfmt/binding-darwin-arm64@0.42.0':
|
||||||
|
resolution: {integrity: sha512-ulpSEYMKg61C5bRMZinFHrKJYRoKGVbvMEXA5zM1puX3O9T6Q4XXDbft20yrDijpYWeuG59z3Nabt+npeTsM1A==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@oxfmt/binding-darwin-x64@0.42.0':
|
||||||
|
resolution: {integrity: sha512-ttxLKhQYPdFiM8I/Ri37cvqChE4Xa562nNOsZFcv1CKTVLeEozXjKuYClNvxkXmNlcF55nzM80P+CQkdFBu+uQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@oxfmt/binding-freebsd-x64@0.42.0':
|
||||||
|
resolution: {integrity: sha512-Og7QS3yI3tdIKYZ58SXik0rADxIk2jmd+/YvuHRyKULWpG4V2fR5V4hvKm624Mc0cQET35waPXiCQWvjQEjwYQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm-gnueabihf@0.42.0':
|
||||||
|
resolution: {integrity: sha512-jwLOw/3CW4H6Vxcry4/buQHk7zm9Ne2YsidzTL1kpiMe4qqrRCwev3dkyWe2YkFmP+iZCQ7zku4KwjcLRoh8ew==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm-musleabihf@0.42.0':
|
||||||
|
resolution: {integrity: sha512-XwXu2vkMtiq2h7tfvN+WA/9/5/1IoGAVCFPiiQUvcAuG3efR97KNcRGM8BetmbYouFotQ2bDal3yyjUx6IPsTg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm64-gnu@0.42.0':
|
||||||
|
resolution: {integrity: sha512-ea7s/XUJoT7ENAtUQDudFe3nkSM3e3Qpz4nJFRdzO2wbgXEcjnchKLEsV3+t4ev3r8nWxIYr9NRjPWtnyIFJVA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm64-musl@0.42.0':
|
||||||
|
resolution: {integrity: sha512-+JA0YMlSdDqmacygGi2REp57c3fN+tzARD8nwsukx9pkCHK+6DkbAA9ojS4lNKsiBjIW8WWa0pBrBWhdZEqfuw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-ppc64-gnu@0.42.0':
|
||||||
|
resolution: {integrity: sha512-VfnET0j4Y5mdfCzh5gBt0NK28lgn5DKx+8WgSMLYYeSooHhohdbzwAStLki9pNuGy51y4I7IoW8bqwAaCMiJQg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-riscv64-gnu@0.42.0':
|
||||||
|
resolution: {integrity: sha512-gVlCbmBkB0fxBWbhBj9rcxezPydsQHf4MFKeHoTSPicOQ+8oGeTQgQ8EeesSybWeiFPVRx3bgdt4IJnH6nOjAA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-riscv64-musl@0.42.0':
|
||||||
|
resolution: {integrity: sha512-zN5OfstL0avgt/IgvRu0zjQzVh/EPkcLzs33E9LMAzpqlLWiPWeMDZyMGFlSRGOdDjuNmlZBCgj0pFnK5u32TQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-s390x-gnu@0.42.0':
|
||||||
|
resolution: {integrity: sha512-9X6+H2L0qMc2sCAgO9HS03bkGLMKvOFjmEdchaFlany3vNZOjnVui//D8k/xZAtQv2vaCs1reD5KAgPoIU4msA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-x64-gnu@0.42.0':
|
||||||
|
resolution: {integrity: sha512-BajxJ6KQvMMdpXGPWhBGyjb2Jvx4uec0w+wi6TJZ6Tv7+MzPwe0pO8g5h1U0jyFgoaF7mDl6yKPW3ykWcbUJRw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-x64-musl@0.42.0':
|
||||||
|
resolution: {integrity: sha512-0wV284I6vc5f0AqAhgAbHU2935B4bVpncPoe5n/WzVZY/KnHgqxC8iSFGeSyLWEgstFboIcWkOPck7tqbdHkzA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
|
'@oxfmt/binding-openharmony-arm64@0.42.0':
|
||||||
|
resolution: {integrity: sha512-p4BG6HpGnhfgHk1rzZfyR6zcWkE7iLrWxyehHfXUy4Qa5j3e0roglFOdP/Nj5cJJ58MA3isQ5dlfkW2nNEpolw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [openharmony]
|
||||||
|
|
||||||
|
'@oxfmt/binding-win32-arm64-msvc@0.42.0':
|
||||||
|
resolution: {integrity: sha512-mn//WV60A+IetORDxYieYGAoQso4KnVRRjORDewMcod4irlRe0OSC7YPhhwaexYNPQz/GCFk+v9iUcZ2W22yxQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@oxfmt/binding-win32-ia32-msvc@0.42.0':
|
||||||
|
resolution: {integrity: sha512-3gWltUrvuz4LPJXWivoAxZ28Of2O4N7OGuM5/X3ubPXCEV8hmgECLZzjz7UYvSDUS3grfdccQwmjynm+51EFpw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@oxfmt/binding-win32-x64-msvc@0.42.0':
|
||||||
|
resolution: {integrity: sha512-Wg4TMAfQRL9J9AZevJ/ZNy3uyyDztDYQtGr4P8UyyzIhLhFrdSmz1J/9JT+rv0fiCDLaFOBQnj3f3K3+a5PzDQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@oxlint/binding-android-arm-eabi@1.57.0':
|
||||||
|
resolution: {integrity: sha512-C7EiyfAJG4B70496eV543nKiq5cH0o/xIh/ufbjQz3SIvHhlDDsyn+mRFh+aW8KskTyUpyH2LGWL8p2oN6bl1A==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@oxlint/binding-android-arm64@1.57.0':
|
||||||
|
resolution: {integrity: sha512-9i80AresjZ/FZf5xK8tKFbhQnijD4s1eOZw6/FHUwD59HEZbVLRc2C88ADYJfLZrF5XofWDiRX/Ja9KefCLy7w==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@oxlint/binding-darwin-arm64@1.57.0':
|
||||||
|
resolution: {integrity: sha512-0eUfhRz5L2yKa9I8k3qpyl37XK3oBS5BvrgdVIx599WZK63P8sMbg+0s4IuxmIiZuBK68Ek+Z+gcKgeYf0otsg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@oxlint/binding-darwin-x64@1.57.0':
|
||||||
|
resolution: {integrity: sha512-UvrSuzBaYOue+QMAcuDITe0k/Vhj6KZGjfnI6x+NkxBTke/VoM7ZisaxgNY0LWuBkTnd1OmeQfEQdQ48fRjkQg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@oxlint/binding-freebsd-x64@1.57.0':
|
||||||
|
resolution: {integrity: sha512-wtQq0dCoiw4bUwlsNVDJJ3pxJA218fOezpgtLKrbQqUtQJcM9yP8z+I9fu14aHg0uyAxIY+99toL6uBa2r7nxA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm-gnueabihf@1.57.0':
|
||||||
|
resolution: {integrity: sha512-qxFWl2BBBFcT4djKa+OtMdnLgoHEJXpqjyGwz8OhW35ImoCwR5qtAGqApNYce5260FQqoAHW8S8eZTjiX67Tsg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm-musleabihf@1.57.0':
|
||||||
|
resolution: {integrity: sha512-SQoIsBU7J0bDW15/f0/RvxHfY3Y0+eB/caKBQtNFbuerTiA6JCYx9P1MrrFTwY2dTm/lMgTSgskvCEYk2AtG/Q==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm64-gnu@1.57.0':
|
||||||
|
resolution: {integrity: sha512-jqxYd1W6WMeozsCmqe9Rzbu3SRrGTyGDAipRlRggetyYbUksJqJKvUNTQtZR/KFoJPb+grnSm5SHhdWrywv3RQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm64-musl@1.57.0':
|
||||||
|
resolution: {integrity: sha512-i66WyEPVEvq9bxRUCJ/MP5EBfnTDN3nhwEdFZFTO5MmLLvzngfWEG3NSdXQzTT3vk5B9i6C2XSIYBh+aG6uqyg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-ppc64-gnu@1.57.0':
|
||||||
|
resolution: {integrity: sha512-oMZDCwz4NobclZU3pH+V1/upVlJZiZvne4jQP+zhJwt+lmio4XXr4qG47CehvrW1Lx2YZiIHuxM2D4YpkG3KVA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-riscv64-gnu@1.57.0':
|
||||||
|
resolution: {integrity: sha512-uoBnjJ3MMEBbfnWC1jSFr7/nSCkcQYa72NYoNtLl1imshDnWSolYCjzb8LVCwYCCfLJXD+0gBLD7fyC14c0+0g==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-riscv64-musl@1.57.0':
|
||||||
|
resolution: {integrity: sha512-BdrwD7haPZ8a9KrZhKJRSj6jwCor+Z8tHFZ3PT89Y3Jq5v3LfMfEePeAmD0LOTWpiTmzSzdmyw9ijneapiVHKQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-s390x-gnu@1.57.0':
|
||||||
|
resolution: {integrity: sha512-BNs+7ZNsRstVg2tpNxAXfMX/Iv5oZh204dVyb8Z37+/gCh+yZqNTlg6YwCLIMPSk5wLWIGOaQjT0GUOahKYImw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-x64-gnu@1.57.0':
|
||||||
|
resolution: {integrity: sha512-AghS18w+XcENcAX0+BQGLiqjpqpaxKJa4cWWP0OWNLacs27vHBxu7TYkv9LUSGe5w8lOJHeMxcYfZNOAPqw2bg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-x64-musl@1.57.0':
|
||||||
|
resolution: {integrity: sha512-E/FV3GB8phu/Rpkhz5T96hAiJlGzn91qX5yj5gU754P5cmVGXY1Jw/VSjDSlZBCY3VHjsVLdzgdkJaomEmcNOg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
|
'@oxlint/binding-openharmony-arm64@1.57.0':
|
||||||
|
resolution: {integrity: sha512-xvZ2yZt0nUVfU14iuGv3V25jpr9pov5N0Wr28RXnHFxHCRxNDMtYPHV61gGLhN9IlXM96gI4pyYpLSJC5ClLCQ==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [openharmony]
|
||||||
|
|
||||||
|
'@oxlint/binding-win32-arm64-msvc@1.57.0':
|
||||||
|
resolution: {integrity: sha512-Z4D8Pd0AyHBKeazhdIXeUUy5sIS3Mo0veOlzlDECg6PhRRKgEsBJCCV1n+keUZtQ04OP+i7+itS3kOykUyNhDg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@oxlint/binding-win32-ia32-msvc@1.57.0':
|
||||||
|
resolution: {integrity: sha512-StOZ9nFMVKvevicbQfql6Pouu9pgbeQnu60Fvhz2S6yfMaii+wnueLnqQ5I1JPgNF0Syew4voBlAaHD13wH6tw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@oxlint/binding-win32-x64-msvc@1.57.0':
|
||||||
|
resolution: {integrity: sha512-6PuxhYgth8TuW0+ABPOIkGdBYw+qYGxgIdXPHSVpiCDm+hqTTWCmC739St1Xni0DJBt8HnSHTG67i1y6gr8qrA==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
'@parcel/watcher-android-arm64@2.5.0':
|
'@parcel/watcher-android-arm64@2.5.0':
|
||||||
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==}
|
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
@@ -5017,6 +5267,21 @@ packages:
|
|||||||
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
|
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
oxfmt@0.42.0:
|
||||||
|
resolution: {integrity: sha512-QhejGErLSMReNuZ6vxgFHDyGoPbjTRNi6uGHjy0cvIjOQFqD6xmr/T+3L41ixR3NIgzcNiJ6ylQKpvShTgDfqg==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
oxlint@1.57.0:
|
||||||
|
resolution: {integrity: sha512-DGFsuBX5MFZX9yiDdtKjTrYPq45CZ8Fft6qCltJITYZxfwYjVdGf/6wycGYTACloauwIPxUnYhBVeZbHvleGhw==}
|
||||||
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
oxlint-tsgolint: '>=0.15.0'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
oxlint-tsgolint:
|
||||||
|
optional: true
|
||||||
|
|
||||||
p-cancelable@0.3.0:
|
p-cancelable@0.3.0:
|
||||||
resolution: {integrity: sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==}
|
resolution: {integrity: sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -5907,6 +6172,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
|
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
|
||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
|
|
||||||
|
tinypool@2.1.0:
|
||||||
|
resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==}
|
||||||
|
engines: {node: ^20.0.0 || >=22.0.0}
|
||||||
|
|
||||||
tinyrainbow@2.0.0:
|
tinyrainbow@2.0.0:
|
||||||
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
|
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
@@ -7872,6 +8141,120 @@ snapshots:
|
|||||||
|
|
||||||
'@oxc-project/types@0.120.0': {}
|
'@oxc-project/types@0.120.0': {}
|
||||||
|
|
||||||
|
'@oxfmt/binding-android-arm-eabi@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-android-arm64@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-darwin-arm64@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-darwin-x64@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-freebsd-x64@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm-gnueabihf@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm-musleabihf@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm64-gnu@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-arm64-musl@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-ppc64-gnu@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-riscv64-gnu@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-riscv64-musl@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-s390x-gnu@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-x64-gnu@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-linux-x64-musl@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-openharmony-arm64@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-win32-arm64-msvc@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-win32-ia32-msvc@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxfmt/binding-win32-x64-msvc@0.42.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-android-arm-eabi@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-android-arm64@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-darwin-arm64@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-darwin-x64@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-freebsd-x64@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm-gnueabihf@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm-musleabihf@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm64-gnu@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-arm64-musl@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-ppc64-gnu@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-riscv64-gnu@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-riscv64-musl@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-s390x-gnu@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-x64-gnu@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-linux-x64-musl@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-openharmony-arm64@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-win32-arm64-msvc@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-win32-ia32-msvc@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@oxlint/binding-win32-x64-msvc@1.57.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@parcel/watcher-android-arm64@2.5.0':
|
'@parcel/watcher-android-arm64@2.5.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -11839,6 +12222,52 @@ snapshots:
|
|||||||
object-keys: 1.1.1
|
object-keys: 1.1.1
|
||||||
safe-push-apply: 1.0.0
|
safe-push-apply: 1.0.0
|
||||||
|
|
||||||
|
oxfmt@0.42.0:
|
||||||
|
dependencies:
|
||||||
|
tinypool: 2.1.0
|
||||||
|
optionalDependencies:
|
||||||
|
'@oxfmt/binding-android-arm-eabi': 0.42.0
|
||||||
|
'@oxfmt/binding-android-arm64': 0.42.0
|
||||||
|
'@oxfmt/binding-darwin-arm64': 0.42.0
|
||||||
|
'@oxfmt/binding-darwin-x64': 0.42.0
|
||||||
|
'@oxfmt/binding-freebsd-x64': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-arm-gnueabihf': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-arm-musleabihf': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-arm64-gnu': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-arm64-musl': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-ppc64-gnu': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-riscv64-gnu': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-riscv64-musl': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-s390x-gnu': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-x64-gnu': 0.42.0
|
||||||
|
'@oxfmt/binding-linux-x64-musl': 0.42.0
|
||||||
|
'@oxfmt/binding-openharmony-arm64': 0.42.0
|
||||||
|
'@oxfmt/binding-win32-arm64-msvc': 0.42.0
|
||||||
|
'@oxfmt/binding-win32-ia32-msvc': 0.42.0
|
||||||
|
'@oxfmt/binding-win32-x64-msvc': 0.42.0
|
||||||
|
|
||||||
|
oxlint@1.57.0:
|
||||||
|
optionalDependencies:
|
||||||
|
'@oxlint/binding-android-arm-eabi': 1.57.0
|
||||||
|
'@oxlint/binding-android-arm64': 1.57.0
|
||||||
|
'@oxlint/binding-darwin-arm64': 1.57.0
|
||||||
|
'@oxlint/binding-darwin-x64': 1.57.0
|
||||||
|
'@oxlint/binding-freebsd-x64': 1.57.0
|
||||||
|
'@oxlint/binding-linux-arm-gnueabihf': 1.57.0
|
||||||
|
'@oxlint/binding-linux-arm-musleabihf': 1.57.0
|
||||||
|
'@oxlint/binding-linux-arm64-gnu': 1.57.0
|
||||||
|
'@oxlint/binding-linux-arm64-musl': 1.57.0
|
||||||
|
'@oxlint/binding-linux-ppc64-gnu': 1.57.0
|
||||||
|
'@oxlint/binding-linux-riscv64-gnu': 1.57.0
|
||||||
|
'@oxlint/binding-linux-riscv64-musl': 1.57.0
|
||||||
|
'@oxlint/binding-linux-s390x-gnu': 1.57.0
|
||||||
|
'@oxlint/binding-linux-x64-gnu': 1.57.0
|
||||||
|
'@oxlint/binding-linux-x64-musl': 1.57.0
|
||||||
|
'@oxlint/binding-openharmony-arm64': 1.57.0
|
||||||
|
'@oxlint/binding-win32-arm64-msvc': 1.57.0
|
||||||
|
'@oxlint/binding-win32-ia32-msvc': 1.57.0
|
||||||
|
'@oxlint/binding-win32-x64-msvc': 1.57.0
|
||||||
|
|
||||||
p-cancelable@0.3.0: {}
|
p-cancelable@0.3.0: {}
|
||||||
|
|
||||||
p-finally@1.0.0: {}
|
p-finally@1.0.0: {}
|
||||||
@@ -12836,6 +13265,8 @@ snapshots:
|
|||||||
|
|
||||||
tinypool@1.1.1: {}
|
tinypool@1.1.1: {}
|
||||||
|
|
||||||
|
tinypool@2.1.0: {}
|
||||||
|
|
||||||
tinyrainbow@2.0.0: {}
|
tinyrainbow@2.0.0: {}
|
||||||
|
|
||||||
tinyspy@4.0.3: {}
|
tinyspy@4.0.3: {}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
plugins: { "@tailwindcss/postcss": {}, autoprefixer: {} },
|
plugins: { '@tailwindcss/postcss': {}, autoprefixer: {} }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,7 @@
|
|||||||
"client_id": "https://remanso.space/client-metadata.json",
|
"client_id": "https://remanso.space/client-metadata.json",
|
||||||
"client_name": "Remanso",
|
"client_name": "Remanso",
|
||||||
"client_uri": "https://remanso.space",
|
"client_uri": "https://remanso.space",
|
||||||
"redirect_uris": [
|
"redirect_uris": ["https://remanso.space/"],
|
||||||
"https://remanso.space/"
|
|
||||||
],
|
|
||||||
"scope": "atproto transition:generic",
|
"scope": "atproto transition:generic",
|
||||||
"grant_types": ["authorization_code", "refresh_token"],
|
"grant_types": ["authorization_code", "refresh_token"],
|
||||||
"response_types": ["code"],
|
"response_types": ["code"],
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import {
|
import {
|
||||||
defineConfig,
|
defineConfig,
|
||||||
minimal2023Preset as preset,
|
minimal2023Preset as preset
|
||||||
} from "@vite-pwa/assets-generator/config"
|
} from '@vite-pwa/assets-generator/config'
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
preset,
|
preset,
|
||||||
images: ["public/favicon.png"],
|
images: ['public/favicon.png']
|
||||||
})
|
})
|
||||||
|
|||||||
10
skills-lock.json
Normal file
10
skills-lock.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"skills": {
|
||||||
|
"migrate-oxlint": {
|
||||||
|
"source": "oxc-project/oxc",
|
||||||
|
"sourceType": "github",
|
||||||
|
"computedHash": "80ce5201b1ef52d6cabe553a4cacfd6e1db97bad99618216b9cf9318d11d7e64"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,67 +1,67 @@
|
|||||||
/** @type {import('tailwindcss').Config} */
|
/** @type {import('tailwindcss').Config} */
|
||||||
const dotenv = require("dotenv")
|
const dotenv = require('dotenv')
|
||||||
|
|
||||||
dotenv.config()
|
dotenv.config()
|
||||||
|
|
||||||
const defaultTitleStyles = Array.from(
|
const defaultTitleStyles = Array.from(
|
||||||
{ length: 6 },
|
{ length: 6 },
|
||||||
(_, k) => `h${k + 1}`,
|
(_, k) => `h${k + 1}`
|
||||||
).reduce(
|
).reduce(
|
||||||
(acc, heading) => ({
|
(acc, heading) => ({
|
||||||
...acc,
|
...acc,
|
||||||
[heading]: {
|
[heading]: {
|
||||||
"margin-top": "0",
|
'margin-top': '0',
|
||||||
"margin-bottom": "0.5em",
|
'margin-bottom': '0.5em'
|
||||||
},
|
}
|
||||||
}),
|
}),
|
||||||
{},
|
{}
|
||||||
)
|
)
|
||||||
|
|
||||||
const BOX_SHADOW = "6px"
|
const BOX_SHADOW = '6px'
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
content: ["./src/**/*.{vue,js,ts}"],
|
content: ['./src/**/*.{vue,js,ts}'],
|
||||||
theme: {
|
theme: {
|
||||||
extend: {
|
extend: {
|
||||||
typography: () => ({
|
typography: () => ({
|
||||||
DEFAULT: {
|
DEFAULT: {
|
||||||
css: {
|
css: {
|
||||||
...defaultTitleStyles,
|
...defaultTitleStyles,
|
||||||
"font-size": "13pt",
|
'font-size': '13pt',
|
||||||
"font-family": '"Libertinus Serif", serif',
|
'font-family': '"Libertinus Serif", serif',
|
||||||
p: {
|
p: {
|
||||||
"margin-top": "0.8em",
|
'margin-top': '0.8em',
|
||||||
"margin-bottom": "0.8em",
|
'margin-bottom': '0.8em',
|
||||||
"text-align": "left",
|
'text-align': 'left'
|
||||||
// "text-wrap": "balance",
|
// "text-wrap": "balance",
|
||||||
},
|
},
|
||||||
"img, video": {
|
'img, video': {
|
||||||
margin: "auto",
|
margin: 'auto',
|
||||||
"border-radius": "0.5rem",
|
'border-radius': '0.5rem',
|
||||||
"box-shadow":
|
'box-shadow':
|
||||||
"rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px",
|
'rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px',
|
||||||
"max-width": `calc(100% - 2 * ${BOX_SHADOW})`,
|
'max-width': `calc(100% - 2 * ${BOX_SHADOW})`
|
||||||
},
|
},
|
||||||
a: {
|
a: {
|
||||||
"font-weight": 600,
|
'font-weight': 600,
|
||||||
// "text-decoration": "wavy underline var(--color-contrast-content)",
|
// "text-decoration": "wavy underline var(--color-contrast-content)",
|
||||||
// "text-decoration-thickness": "0.1em",
|
// "text-decoration-thickness": "0.1em",
|
||||||
"text-decoration": "none",
|
'text-decoration': 'none',
|
||||||
color: "var(--color-accent)",
|
color: 'var(--color-accent)'
|
||||||
},
|
},
|
||||||
"a.btn-primary": {
|
'a.btn-primary': {
|
||||||
color: "var(--color-secondary-content)",
|
color: 'var(--color-secondary-content)'
|
||||||
},
|
},
|
||||||
"a:hover": {
|
'a:hover': {
|
||||||
"text-decoration": "underline",
|
'text-decoration': 'underline'
|
||||||
},
|
},
|
||||||
li: {
|
li: {
|
||||||
"margin-top": 0,
|
'margin-top': 0,
|
||||||
"margin-bottom": 0,
|
'margin-bottom': 0
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
}),
|
})
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
|
"moduleResolution": "bundler",
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"types": ["node", "vite/client", "vite-plugin-pwa/vue"],
|
"types": ["node", "vite/client", "vite-plugin-pwa/vue"],
|
||||||
"paths": {
|
"paths": {
|
||||||
|
|||||||
106
vite.config.mts
106
vite.config.mts
@@ -1,87 +1,87 @@
|
|||||||
import vue from "@vitejs/plugin-vue"
|
import vue from '@vitejs/plugin-vue'
|
||||||
import path from "path"
|
import path from 'path'
|
||||||
import { defineConfig, type UserConfigExport } from "vite"
|
import { defineConfig, type UserConfigExport } from 'vite'
|
||||||
import { VitePWA } from "vite-plugin-pwa"
|
import { VitePWA } from 'vite-plugin-pwa'
|
||||||
|
|
||||||
export default defineConfig(({ command }) => {
|
export default defineConfig(({ command }) => {
|
||||||
const config: UserConfigExport = {
|
const config: UserConfigExport = {
|
||||||
build: {
|
build: {
|
||||||
minify: "esbuild",
|
minify: 'esbuild'
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
VitePWA({
|
VitePWA({
|
||||||
registerType: "prompt",
|
registerType: 'prompt',
|
||||||
includeAssets: [
|
includeAssets: [
|
||||||
"favicon.ico",
|
'favicon.ico',
|
||||||
"apple-touch-icon.png",
|
'apple-touch-icon.png',
|
||||||
"apple-touch-icon-180x180.png",
|
'apple-touch-icon-180x180.png',
|
||||||
"favicon.png",
|
'favicon.png',
|
||||||
"pwa-64x64.png",
|
'pwa-64x64.png',
|
||||||
"pwa-192x192.png",
|
'pwa-192x192.png',
|
||||||
"pwa-512x512.png",
|
'pwa-512x512.png',
|
||||||
"masked-icon.png",
|
'masked-icon.png',
|
||||||
"maskable-icon-512x512.png",
|
'maskable-icon-512x512.png',
|
||||||
"monochrome-icon.png",
|
'monochrome-icon.png',
|
||||||
"assets/*.svg",
|
'assets/*.svg'
|
||||||
],
|
],
|
||||||
manifest: {
|
manifest: {
|
||||||
name: "Remanso",
|
name: 'Remanso',
|
||||||
short_name: "Remanso",
|
short_name: 'Remanso',
|
||||||
description: "Note taking & sharing app",
|
description: 'Note taking & sharing app',
|
||||||
background_color: "#ffa4c0",
|
background_color: '#ffa4c0',
|
||||||
theme_color: "#ffa4c0",
|
theme_color: '#ffa4c0',
|
||||||
icons: [
|
icons: [
|
||||||
{
|
{
|
||||||
src: "pwa-64x64.png",
|
src: 'pwa-64x64.png',
|
||||||
sizes: "64x64",
|
sizes: '64x64',
|
||||||
type: "image/png",
|
type: 'image/png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: "pwa-192x192.png",
|
src: 'pwa-192x192.png',
|
||||||
sizes: "192x192",
|
sizes: '192x192',
|
||||||
type: "image/png",
|
type: 'image/png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: "pwa-512x512.png",
|
src: 'pwa-512x512.png',
|
||||||
sizes: "512x512",
|
sizes: '512x512',
|
||||||
type: "image/png",
|
type: 'image/png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: "favicon.png",
|
src: 'favicon.png',
|
||||||
sizes: "1024x1024",
|
sizes: '1024x1024',
|
||||||
type: "image/png",
|
type: 'image/png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: "maskable-icon-512x512.png",
|
src: 'maskable-icon-512x512.png',
|
||||||
sizes: "512x512",
|
sizes: '512x512',
|
||||||
type: "image/png",
|
type: 'image/png',
|
||||||
purpose: "maskable",
|
purpose: 'maskable'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: "monochrome-icon.png",
|
src: 'monochrome-icon.png',
|
||||||
sizes: "1024x1024",
|
sizes: '1024x1024',
|
||||||
type: "image/png",
|
type: 'image/png',
|
||||||
purpose: "monochrome",
|
purpose: 'monochrome'
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
},
|
}
|
||||||
}),
|
})
|
||||||
],
|
],
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
"@": path.resolve(__dirname, "./src"),
|
'@': path.resolve(__dirname, './src'),
|
||||||
"node-fetch": "isomorphic-fetch",
|
'node-fetch': 'isomorphic-fetch'
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command === "serve") {
|
if (command === 'serve') {
|
||||||
config.define = {
|
config.define = {
|
||||||
global: {},
|
global: {}
|
||||||
}
|
}
|
||||||
config.server = {
|
config.server = {
|
||||||
host: "127.0.0.1",
|
host: '127.0.0.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user