refactor: add src alias to @/
This commit is contained in:
parent
f4649e0dac
commit
2581a8e0e6
|
|
@ -25,7 +25,8 @@ npx vitest run -t "should detect horizontal win for X"
|
|||
|
||||
### Imports
|
||||
- Use **double quotes** for local imports, **single quotes** for npm packages
|
||||
- No path aliases — use relative `../` and `./` paths
|
||||
- Use `@/**/*` for `./src/**/*` import alias
|
||||
- Use `@/index` for code in `samples`
|
||||
|
||||
### Formatting
|
||||
- **4-space indentation**
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {entity, Entity} from "../utils/entity";
|
||||
import {entity, Entity} from "@/utils/entity";
|
||||
import {
|
||||
Command,
|
||||
CommandRegistry,
|
||||
|
|
@ -9,7 +9,7 @@ import {
|
|||
createCommandRunnerContext,
|
||||
parseCommandSchema,
|
||||
registerCommand
|
||||
} from "../utils/command";
|
||||
} from "@/utils/command";
|
||||
|
||||
export interface IGameContext<TState extends Record<string, unknown> = {} > {
|
||||
state: Entity<TState>;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import {Entity} from "../utils/entity";
|
||||
import {Entity} from "@/utils/entity";
|
||||
import {Region} from "./region";
|
||||
import {RNG} from "../utils/rng";
|
||||
import {RNG} from "@/utils/rng";
|
||||
|
||||
export type Part = {
|
||||
id: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import {Entity} from "../utils/entity";
|
||||
import {Entity} from "@/utils/entity";
|
||||
import {Part} from "./part";
|
||||
import {RNG} from "../utils/rng";
|
||||
import {RNG} from "@/utils/rng";
|
||||
|
||||
export type Region = {
|
||||
id: string;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
import {createGameCommandRegistry} from '../';
|
||||
import type { Part } from '../';
|
||||
import {Entity, entity} from "../";
|
||||
import {Region} from "../";
|
||||
import {createGameCommandRegistry, Part, Entity, entity, Region} from '@/index';
|
||||
|
||||
const BOARD_SIZE = 3;
|
||||
const MAX_TURNS = BOARD_SIZE * BOARD_SIZE;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import type {CommandResult, CommandRunner, CommandRunnerContext, PromptEvent} fr
|
|||
import { parseCommand } from './command-parse';
|
||||
import { applyCommandSchema } from './command-validate';
|
||||
import { parseCommandSchema } from './schema-parse';
|
||||
import {AsyncQueue} from "../async-queue";
|
||||
import {AsyncQueue} from "@/utils/async-queue";
|
||||
|
||||
export type CommandRegistry<TContext> = Map<string, CommandRunner<TContext, unknown>>;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { createGameContext, createGameCommand, createGameCommandRegistry, IGameContext } from '../../src/core/game';
|
||||
import { Entity } from '../../src/utils/entity';
|
||||
import type { PromptEvent } from '../../src/utils/command';
|
||||
import { createGameContext, createGameCommand, createGameCommandRegistry } from '@/core/game';
|
||||
import type { PromptEvent } from '@/utils/command';
|
||||
|
||||
type MyState = {
|
||||
score: number;
|
||||
|
|
@ -77,7 +76,7 @@ describe('createGameContext', () => {
|
|||
|
||||
describe('createGameCommand', () => {
|
||||
it('should run a command with access to game context', async () => {
|
||||
const { registry } = createGameCommandRegistry<Entity<{ marker: string }>>();
|
||||
const { registry } = createGameCommandRegistry<{ marker: string }>();
|
||||
const ctx = createGameContext(registry, { marker: '' });
|
||||
|
||||
createGameCommand(registry, 'set-marker <id>', async function (cmd) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { applyAlign, shuffle, type Region, type RegionAxis } from '../../src/core/region';
|
||||
import { createRNG } from '../../src/utils/rng';
|
||||
import { entity, Entity } from '../../src/utils/entity';
|
||||
import { type Part } from '../../src/core/part';
|
||||
import { applyAlign, shuffle, type Region, type RegionAxis } from '@/core/region';
|
||||
import { createRNG } from '@/utils/rng';
|
||||
import { entity, Entity } from '@/utils/entity';
|
||||
import { type Part } from '@/core/part';
|
||||
|
||||
describe('Region', () => {
|
||||
function createTestRegion(axes: RegionAxis[], parts: Part[]): Entity<Region> {
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@ import {
|
|||
createInitialState,
|
||||
TicTacToeState,
|
||||
WinnerType, PlayerType
|
||||
} from '../../src/samples/tic-tac-toe';
|
||||
import {Entity} from "../../src/utils/entity";
|
||||
import {createGameContext} from "../../src";
|
||||
import type { PromptEvent } from '../../src/utils/command';
|
||||
} from '@/samples/tic-tac-toe';
|
||||
import {Entity} from "@/utils/entity";
|
||||
import {createGameContext} from "@/";
|
||||
import type { PromptEvent } from '@/utils/command';
|
||||
|
||||
function createTestContext() {
|
||||
const ctx = createGameContext(registry, createInitialState);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { AsyncQueue } from '../../src/utils/async-queue';
|
||||
import { AsyncQueue } from '@/utils/async-queue';
|
||||
|
||||
describe('AsyncQueue', () => {
|
||||
describe('push', () => {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import {
|
|||
validateCommand,
|
||||
parseCommand,
|
||||
type CommandSchema,
|
||||
} from '../../src/utils/command';
|
||||
} from '@/utils/command';
|
||||
|
||||
describe('parseCommandSchema with inline-schema', () => {
|
||||
it('should parse schema with typed params', () => {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { parseCommandSchema } from '../../src/utils/command/schema-parse';
|
||||
import { parseCommandSchema } from '@/utils/command/schema-parse';
|
||||
import {
|
||||
createCommandRegistry,
|
||||
registerCommand,
|
||||
|
|
@ -10,8 +10,8 @@ import {
|
|||
createCommandRunnerContext,
|
||||
type CommandRegistry,
|
||||
type CommandRunnerContextExport,
|
||||
} from '../../src/utils/command/command-registry';
|
||||
import type { CommandRunner, PromptEvent } from '../../src/utils/command/command-runner';
|
||||
} from '@/utils/command/command-registry';
|
||||
import type { CommandRunner, PromptEvent } from '@/utils/command/command-runner';
|
||||
|
||||
type TestContext = {
|
||||
counter: number;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { parseCommand, parseCommandSchema, validateCommand } from '../../src/utils/command';
|
||||
import { parseCommand, parseCommandSchema, validateCommand } from '@/utils/command';
|
||||
|
||||
describe('parseCommandSchema', () => {
|
||||
it('should parse empty schema', () => {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { parseCommand, type Command } from '../../src/utils/command';
|
||||
import { parseCommand, type Command } from '@/utils/command';
|
||||
|
||||
describe('parseCommand', () => {
|
||||
it('should parse empty string', () => {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { createEntityCollection, Entity, entity } from '../../src/utils/entity';
|
||||
import { createEntityCollection, Entity, entity } from '@/utils/entity';
|
||||
|
||||
type TestEntity = {
|
||||
id: string;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { describe, it, expect } from 'vitest';
|
||||
import { createRNG } from '../../src/utils/rng';
|
||||
import { createRNG } from '@/utils/rng';
|
||||
|
||||
describe('createRNG', () => {
|
||||
it('should create RNG with default seed', () => {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,11 @@
|
|||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"outDir": "./dist",
|
||||
"rootDir": "./src"
|
||||
"rootDir": "./src",
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
}
|
||||
},
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["node_modules", "dist", "tests"]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import { defineConfig } from 'tsup';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const srcDir = fileURLToPath(new URL('./src', import.meta.url));
|
||||
|
||||
export default defineConfig({
|
||||
entry: ['src/index.ts'],
|
||||
|
|
@ -6,4 +9,9 @@ export default defineConfig({
|
|||
dts: true,
|
||||
clean: true,
|
||||
sourcemap: true,
|
||||
esbuildOptions(options) {
|
||||
options.alias = {
|
||||
'@': srcDir,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,4 +6,9 @@ export default defineConfig({
|
|||
environment: 'node',
|
||||
include: ['tests/**/*.test.ts'],
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@/': new URL('./src/', import.meta.url).pathname,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue