Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 38 additions & 38 deletions esbuild.config.mjs
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
import esbuild from "esbuild";
import process from "process";
import builtins from "builtin-modules";
import esbuild from 'esbuild'
import process from 'process'
import { builtinModules } from 'node:module'

const banner =
`/*
const banner = `/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
`;
`

const prod = (process.argv[2] === "production");
const prod = process.argv[2] === 'production'

const context = await esbuild.context({
banner: {
js: banner,
},
entryPoints: ["src/main.ts"],
bundle: true,
external: [
"obsidian",
"electron",
"@codemirror/autocomplete",
"@codemirror/collab",
"@codemirror/commands",
"@codemirror/language",
"@codemirror/lint",
"@codemirror/search",
"@codemirror/state",
"@codemirror/view",
"@lezer/common",
"@lezer/highlight",
"@lezer/lr",
...builtins],
format: "cjs",
target: "es2018",
logLevel: "info",
sourcemap: prod ? false : "inline",
treeShaking: true,
outfile: "main.js",
minify: prod,
});
banner: {
js: banner,
},
entryPoints: ['src/main.ts'],
bundle: true,
external: [
'obsidian',
'electron',
'@codemirror/autocomplete',
'@codemirror/collab',
'@codemirror/commands',
'@codemirror/language',
'@codemirror/lint',
'@codemirror/search',
'@codemirror/state',
'@codemirror/view',
'@lezer/common',
'@lezer/highlight',
'@lezer/lr',
...builtinModules,
],
format: 'cjs',
target: 'es2018',
logLevel: 'info',
sourcemap: prod ? false : 'inline',
treeShaking: true,
outfile: 'main.js',
minify: prod,
})

if (prod) {
await context.rebuild();
process.exit(0);
await context.rebuild()
process.exit(0)
} else {
await context.watch();
await context.watch()
}
107 changes: 34 additions & 73 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,83 +1,44 @@
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import obsidianmd from 'eslint-plugin-obsidianmd';
// eslint.config.mjs
import { defineConfig } from 'eslint/config'
import globals from 'globals'
import tsparser from '@typescript-eslint/parser'
import obsidianmd from 'eslint-plugin-obsidianmd'

export default tseslint.config(
// Ignore patterns
{
ignores: ['main.js', 'node_modules/**', '.git/**', '*.config.js', 'package.json']
},

// Node.js config files (version-bump.mjs, esbuild.config.mjs)
{
files: ['*.mjs', '*.config.mjs'],
languageOptions: {
globals: {
process: 'readonly',
console: 'readonly',
__dirname: 'readonly',
__filename: 'readonly'
}
}
},

// Base ESLint recommended rules
eslint.configs.recommended,
export default defineConfig([
{ ignores: ['version-bump.mjs'] },

// TypeScript ESLint recommended rules
...tseslint.configs.recommended,

// Obsidian plugin recommended rules
...obsidianmd.configs.recommended,

// Custom rules and overrides
{
files: ['**/*.ts'],
languageOptions: {
parser: tseslint.parser,
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
parser: tsparser,
globals: {
// Node.js globals
console: 'readonly',
process: 'readonly',
Buffer: 'readonly',
__dirname: 'readonly',
__filename: 'readonly',
setTimeout: 'readonly',
clearTimeout: 'readonly',
// Browser globals
window: 'readonly',
document: 'readonly',
// Obsidian globals
moment: 'readonly',
createDiv: 'readonly'
}
...globals.browser,
...globals.node,
createDiv: 'readonly',
},
parserOptions: { project: './tsconfig.json' },
},

// languageOptions: {
// globals: {
// ...globals.browser,
// ...globals.node,
// createDiv: 'readonly',
// },
// parserOptions: {
// projectService: true,
// },
// },

rules: {
// Disable unused vars for function arguments
'@typescript-eslint/no-unused-vars': ['error', { args: 'none' }],
// Allow ts-comment for necessary cases (with descriptions)
'@typescript-eslint/ban-ts-comment': 'off',
// Allow prototype builtins
'no-prototype-builtins': 'off',
// Allow empty functions
'@typescript-eslint/no-empty-function': 'off',
// Disable overly strict type-safety rules for plugin development
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/restrict-template-expressions': 'off',
'@typescript-eslint/no-base-to-string': 'off',
// Allow builtin-modules for now
'depend/ban-dependencies': 'off',
// Configure sentence case rule with regex ignores for technical terms
'obsidianmd/ui/sentence-case': ['error', {
ignoreRegex: ['IGDB', 'API', 'ID', 'Twitch']
}]
}
}
);
'obsidianmd/ui/sentence-case': [
'error',
{
ignoreRegex: ['IGDB', 'API', 'ID', 'Twitch'],
},
],
},
},
])
20 changes: 9 additions & 11 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
"@types/node": "^20.12.7",
"@typescript-eslint/eslint-plugin": "^8.19.1",
"@typescript-eslint/parser": "^8.19.1",
"builtin-modules": "^4.0.0",
"esbuild": "^0.27.2",
"eslint": "^9.18.0",
"eslint-plugin-obsidianmd": "latest",
Expand Down
7 changes: 4 additions & 3 deletions prettier.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
* @type {import("prettier").Config}
*/
export default {
semi: false,
semi: true,
singleQuote: true,
printWidth: 100,
tabWidth: 2,
useTabs: false,
trailingComma: "es5",
trailingComma: 'es5',
bracketSpacing: true,
};
arrowParens: 'avoid',
}
4 changes: 2 additions & 2 deletions src/apis/IgdbApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export class IgdbApi {
},
})

const authResponse: IGDBAuthResponse = response.json
const authResponse = response.json as IGDBAuthResponse

if (!authResponse.access_token) {
throw new Error('Failed to authenticate with IGDB')
Expand Down Expand Up @@ -94,7 +94,7 @@ export class IgdbApi {
body: body,
})

const games: IGDBGame[] = response.json
const games = response.json as IGDBGame[]

// Check for error response (e.g., invalid token)
if ((games as unknown as { message?: string }).message) {
Expand Down
Loading