mirror of
https://github.com/immich-app/yucca.git
synced 2026-09-30 21:37:50 +08:00
* feat: initial commit (mise, nest, restic-api) * ci: should use new nested tasks * chore: use absolute imports * chore: format * fix: absolute imports for jest * feat: REST API impl. with in-memory storage * feat: s3 storage backing (wip) * fix: use Range in S3 get object * feat: validate path parameters * chore: clean up checks * chore: remove TODO * docs: add descriptions to mise commands * feat: JWT auth * feat: load secrets from env (validate w. zod) * chore: set default compose variables * chore: add docker commands to mise * fix: don't eat JWT errors * fix: obfuscate s3 errors * chore: validate auth schema * feat: commit errors.ts * fix: return partial status if Range provided * chore: split jwt/payload validation errors * fix: check name is a sha256 hash * feat: streaming download * feat: streaming upload * feat: WORM / write once support * fix: don't obscure other S3 errors for checkBucket * refactor: more concise error types * test: service unit tests for app/auth; e2e for storage * chore: prettier ignore .dev folder * feat: interceptor for Restic JSON routes * test: app e2e tests (wip) * test: partial content response * chore: lint * refactor: use class-validator for auth dto * refactor: clean up constants through project * refactor: also update binary content type * fix: incorrect Basic parsing * fix: actually handle validation errors in auth dto * chore: delete .gitignore * fix: should use 403 not 405 in worm * chore: expose minio console for debug * feat: delete config route * fix: error consistency with restic reference * feat: validate sha256 on blob upload * fix: use bad request exception for mismatch * feat: initial work on full e2e test * fix: respond with correct headers for Range refactor: unify respond logic * test: backup & restore e2e test * feat: setup empty yucca-api project * feat: setup kysely for yucca-api & db repository * refactor: `utils.ts` -> `utils/s3.ts` * fix: shut down database after e2e test * chore: remove stray log * test: refactor getObject test * chore: add built wrapper for now * chore: add e2e/ to mise task * chore: format * fix: esm jest * feat: setup database migrator * feat: minimal template for frontend project * chore: add prettier-plugin-tailwindcss to workspace * chore: configure @immich/ui * feat: sdk for web, hook up sample * chore: add @oazapfts/runtime dependency * chore: ignore `yucca-sdk/src/fetch-client.ts` from eslint * chore: format * chore: move all CI check stages into mise config * test: mock $env/dynamic/publish for ui library * chore: format code * fix: correct restic API port in e2e test * chore: move tasks around * chore: use restic-wrapper from npm * chore: string * test: comprehensive e2e tests for restic API * test: cover new commands in e2e tests * test: worm-case for prune * feat: lingui for svelte * chore: ensure check runs lingui * chore: ignore locales from checks * chore: format/lint * chore: configure nix-ld for mise * chore: accept any no. of arguments for docker tasks/e2e * chore: different strategy for e2e clean up * chore: configure Git Town Signed-off-by: izzy <me@insrt.uk> * chore: add default.nix for mise Signed-off-by: izzy <me@insrt.uk> * chore: lost changes from parent Signed-off-by: izzy <me@insrt.uk> * fix: use valid language code --------- Signed-off-by: izzy <me@insrt.uk>
65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
import js from '@eslint/js';
|
|
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
|
|
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import typescriptEslint from 'typescript-eslint';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
|
|
export default typescriptEslint.config([
|
|
eslintPluginUnicorn.configs.recommended,
|
|
eslintPluginPrettierRecommended,
|
|
js.configs.recommended,
|
|
typescriptEslint.configs.recommended,
|
|
{
|
|
ignores: ['eslint.config.mjs', '.dev', 'web/.svelte-kit', 'web/src/locales', 'yucca-sdk/src/fetch-client.ts'],
|
|
},
|
|
{
|
|
languageOptions: {
|
|
parser: typescriptEslint.parser,
|
|
ecmaVersion: 5,
|
|
sourceType: 'module',
|
|
|
|
parserOptions: {
|
|
project: ['./*/tsconfig.json'],
|
|
tsconfigRootDir: path.dirname(__filename),
|
|
},
|
|
},
|
|
|
|
rules: {
|
|
'@typescript-eslint/interface-name-prefix': 'off',
|
|
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
'@typescript-eslint/no-explicit-any': 'off',
|
|
'@typescript-eslint/no-floating-promises': 'error',
|
|
'unicorn/prevent-abbreviations': 'off',
|
|
'unicorn/filename-case': 'off',
|
|
'unicorn/no-null': 'off',
|
|
'unicorn/prefer-top-level-await': 'off',
|
|
'unicorn/prefer-event-target': 'off',
|
|
'unicorn/no-thenable': 'off',
|
|
'unicorn/import-style': 'off',
|
|
'unicorn/prefer-structured-clone': 'off',
|
|
'unicorn/no-for-loop': 'off',
|
|
'@typescript-eslint/await-thenable': 'error',
|
|
'@typescript-eslint/no-misused-promises': 'error',
|
|
'require-await': 'off',
|
|
'@typescript-eslint/require-await': 'error',
|
|
curly: 2,
|
|
'prettier/prettier': 0,
|
|
'object-shorthand': ['error', 'always'],
|
|
|
|
'no-unexpected-multiline': 'off',
|
|
|
|
'@typescript-eslint/no-unused-vars': [
|
|
'warn',
|
|
{
|
|
argsIgnorePattern: '^_',
|
|
varsIgnorePattern: '^_',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
]);
|