mirror of
https://github.com/FJurmanovic/sugarr.git
synced 2026-11-10 23:31:08 +00:00
Scaffold TypeScript project and add core logger
This commit is contained in:
9
.eslintrc.cjs
Normal file
9
.eslintrc.cjs
Normal file
@@ -0,0 +1,9 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@typescript-eslint/parser',
|
||||
plugins: ['@typescript-eslint'],
|
||||
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'],
|
||||
env: { node: true, es2022: true },
|
||||
parserOptions: { ecmaVersion: 2022, sourceType: 'module' },
|
||||
ignorePatterns: ['dist', 'node_modules'],
|
||||
};
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -37,3 +37,7 @@ _testmain.go
|
||||
.zed
|
||||
|
||||
deploy.config
|
||||
|
||||
node_modules/
|
||||
dist/
|
||||
coverage/
|
||||
|
||||
6
.prettierrc.json
Normal file
6
.prettierrc.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"semi": true,
|
||||
"printWidth": 100,
|
||||
"trailingComma": "es5"
|
||||
}
|
||||
36
package.json
Normal file
36
package.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "sugarr",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"main": "dist/app/index.js",
|
||||
"scripts": {
|
||||
"dev": "tsx watch src/app/index.ts",
|
||||
"build": "tsc -p tsconfig.json",
|
||||
"start": "node dist/app/index.js",
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest",
|
||||
"lint": "eslint src test --ext .ts",
|
||||
"format": "prettier --write ."
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.5",
|
||||
"fastify": "^5.0.0",
|
||||
"langfuse": "^3.30.0",
|
||||
"node-cron": "^3.0.3",
|
||||
"openai": "^4.60.0",
|
||||
"pino": "^9.4.0",
|
||||
"zod": "^3.23.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.7.4",
|
||||
"@types/node-cron": "^3.0.11",
|
||||
"@typescript-eslint/eslint-plugin": "^8.8.0",
|
||||
"@typescript-eslint/parser": "^8.8.0",
|
||||
"eslint": "^8.57.0",
|
||||
"pino-pretty": "^11.2.2",
|
||||
"prettier": "^3.3.3",
|
||||
"tsx": "^4.19.1",
|
||||
"typescript": "^5.6.2",
|
||||
"vitest": "^2.1.1"
|
||||
}
|
||||
}
|
||||
3013
pnpm-lock.yaml
generated
Normal file
3013
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
12
src/core/logging/logger.ts
Normal file
12
src/core/logging/logger.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import pino from 'pino';
|
||||
|
||||
export type Logger = pino.Logger;
|
||||
|
||||
export function createLogger(name: string): Logger {
|
||||
const isProduction = process.env.NODE_ENV === 'production';
|
||||
return pino({
|
||||
name,
|
||||
level: process.env.LOG_LEVEL ?? 'info',
|
||||
transport: isProduction ? undefined : { target: 'pino-pretty' },
|
||||
});
|
||||
}
|
||||
11
test/core/logging/logger.test.ts
Normal file
11
test/core/logging/logger.test.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { createLogger } from '../../../src/core/logging/logger';
|
||||
|
||||
describe('createLogger', () => {
|
||||
it('creates a pino logger with the given name bound', () => {
|
||||
const logger = createLogger('test-logger');
|
||||
expect(logger.bindings().name).toBe('test-logger');
|
||||
expect(typeof logger.info).toBe('function');
|
||||
expect(typeof logger.error).toBe('function');
|
||||
});
|
||||
});
|
||||
17
tsconfig.json
Normal file
17
tsconfig.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"module": "CommonJS",
|
||||
"moduleResolution": "Node",
|
||||
"lib": ["ES2022"],
|
||||
"outDir": "dist",
|
||||
"rootDir": "src",
|
||||
"strict": true,
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"declaration": false,
|
||||
"sourceMap": true
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
8
vitest.config.ts
Normal file
8
vitest.config.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { defineConfig } from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
environment: 'node',
|
||||
include: ['test/**/*.test.ts'],
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user