mirror of
https://github.com/sechan100/daily-routine-2.git
synced 2026-07-22 05:37:51 +00:00
refactor: shard 디렉토리 구조 변경
This commit is contained in:
parent
05fe3d3493
commit
ff0c499215
47 changed files with 76 additions and 76 deletions
62
.eslintrc
62
.eslintrc
|
|
@ -1,32 +1,32 @@
|
|||
{
|
||||
"root": true,
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"env": { "node": true },
|
||||
"plugins": [
|
||||
"@typescript-eslint",
|
||||
"react",
|
||||
"react-hooks",
|
||||
"fsd-import"
|
||||
],
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": ["off", {}],
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"@typescript-eslint/no-empty-interface": "off",
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"react-hooks/rules-of-hooks": "error", // Hooks의 규칙을 강제
|
||||
"react-hooks/exhaustive-deps": "warn", // 의존성 배열 검사
|
||||
"fsd-import/fsd-relative-path": "error",
|
||||
"fsd-import/public-api-imports": "error",
|
||||
"fsd-import/layer-imports": "error"
|
||||
}
|
||||
}
|
||||
"root": true,
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"env": { "node": true },
|
||||
"plugins": [
|
||||
"@typescript-eslint",
|
||||
"react",
|
||||
"react-hooks",
|
||||
"fsd-import"
|
||||
],
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": ["off", {}],
|
||||
"@typescript-eslint/ban-ts-comment": "off",
|
||||
"no-prototype-builtins": "off",
|
||||
"@typescript-eslint/no-empty-interface": "off",
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"react-hooks/rules-of-hooks": "error", // Hooks의 규칙을 강제
|
||||
"react-hooks/exhaustive-deps": "warn", // 의존성 배열 검사
|
||||
"fsd-import/fsd-relative-path": "error",
|
||||
"fsd-import/public-api-imports": "error",
|
||||
"fsd-import/layer-imports": "error"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import { plugin } from "@shared/plugin-service-locator"
|
||||
import { plugin } from "@shared/utils/plugin-service-locator"
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import TabNav from '@mui/material/Tabs';
|
|||
import { Icon } from "@shared/components/Icon";
|
||||
import { Day } from "@shared/period/day";
|
||||
import { Month } from "@shared/period/month";
|
||||
import { DrTabType, useTabRoute } from "@shared/use-tab-route";
|
||||
import { DrTabType, useTabRoute } from "@shared/tab/use-tab-route";
|
||||
import { useLeaf } from "@shared/view/use-leaf";
|
||||
import { useCallback, useEffect } from "react";
|
||||
import { MUIThemeProvider } from './MUIThemProvider';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { AchivementPage } from "@pages/achivement/AchivementPage";
|
||||
import { Month } from "@shared/period/month";
|
||||
import { useTabRoute } from "@shared/use-tab-route";
|
||||
import { useTabRoute } from "@shared/tab/use-tab-route";
|
||||
import { useMemo } from "react";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { CalendarPage } from "@pages/calendar";
|
||||
import { Month } from "@shared/period/month";
|
||||
import { useTabRoute } from "@shared/use-tab-route";
|
||||
import { useTabRoute } from "@shared/tab/use-tab-route";
|
||||
import { useMemo } from "react";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { useTabRoute } from "@shared/use-tab-route";
|
||||
import { useTabRoute } from "@shared/tab/use-tab-route";
|
||||
import { RoutineNotePage } from "@pages/routine-note";
|
||||
import { Day } from "@shared/period/day";
|
||||
import { useMemo } from "react";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { validateObsidianFileTitle } from "@shared/validation/validate-obsidian-file-title";
|
||||
import { validateObsidianFileTitle } from "@shared/utils/validate-obsidian-file-title";
|
||||
import { err, ok, Result } from "neverthrow";
|
||||
import { isTask, isTaskGroup, RoutineNote, Task, TaskGroup } from "./note.type";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { err, ok, Result } from "neverthrow";
|
||||
import { validateObsidianFileTitle } from "@shared/validation/validate-obsidian-file-title";
|
||||
import { validateObsidianFileTitle } from "@shared/utils/validate-obsidian-file-title";
|
||||
import { Routine } from "@entities/routine";
|
||||
import { RoutineNote, RoutineTask, Task, TodoTask } from "./note.type";
|
||||
import { NoteEntity } from "./note";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { Day, DayOfWeek } from "@shared/period/day";
|
||||
import { validateObsidianFileTitle } from "@shared/validation/validate-obsidian-file-title";
|
||||
import { validateObsidianFileTitle } from "@shared/utils/validate-obsidian-file-title";
|
||||
import { keys } from "lodash";
|
||||
import { err, Err, ok, Result } from "neverthrow";
|
||||
import { Routine, RoutineProperties } from "./routine.type";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { validateObsidianFileTitle } from "@shared/validation/validate-obsidian-file-title";
|
||||
import { validateObsidianFileTitle } from "@shared/utils/validate-obsidian-file-title";
|
||||
import { Err, err, ok, Result } from "neverthrow";
|
||||
import { RoutineGroupProperties } from "./routine.type";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/** @jsxImportSource @emotion/react */
|
||||
import { useMemo} from "react";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { Button } from "@shared/components/Button";
|
||||
import { WeekOption } from "./active-criteria-week";
|
||||
import { MonthOption } from "./active-criteria-month";
|
||||
import { TEXT_CSS } from "@shared/constants/text-style";
|
||||
import { TEXT_CSS } from "@shared/components/text-style";
|
||||
import { Routine, RoutineProperties } from "@entities/routine";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { css } from '@emotion/react';
|
|||
import { RoutineNote, Task, TaskEntity, TaskGroup, TaskState } from '@entities/note';
|
||||
import { useRoutineNote } from "@features/note";
|
||||
import { Touchable } from '@shared/components/Touchable';
|
||||
import { dr } from '@shared/daily-routine-bem';
|
||||
import { dr } from '@shared/utils/daily-routine-bem';
|
||||
import React, { useCallback, useEffect, useRef, useState } from "react";
|
||||
import { useTaskDnd } from '../dnd/use-task-dnd';
|
||||
import { changeTaskState } from '../model/change-task-state';
|
||||
|
|
@ -13,7 +13,7 @@ import { OptionIcon } from './OptionIcon';
|
|||
import { baseHeaderStyle, dragReadyStyle, draggingStyle, elementHeight, pressedStyle } from './base-element-style';
|
||||
import { DELAY_TOUCH_START } from '../dnd/dnd-context';
|
||||
import { Menu } from 'obsidian';
|
||||
import { isMobile } from '@shared/plugin-service-locator';
|
||||
import { isMobile } from '@shared/utils/plugin-service-locator';
|
||||
import { doConfirm } from '@shared/components/modal/confirm-modal';
|
||||
import { DR_SETTING } from '@app/settings/setting-provider';
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { RoutineNote, TaskEntity, TaskGroup } from '@entities/note';
|
|||
import { Accordion, AccordionDetails, AccordionSummary, accordionSummaryClasses } from '@mui/material';
|
||||
import { Icon } from '@shared/components/Icon';
|
||||
import { Touchable } from '@shared/components/Touchable';
|
||||
import { dr } from '@shared/daily-routine-bem';
|
||||
import { dr } from '@shared/utils/daily-routine-bem';
|
||||
import { useLeaf } from '@shared/view/use-leaf';
|
||||
import React, { useCallback, useEffect, useRef, useState } from "react";
|
||||
import { useGroupDnd } from '../dnd/use-group-dnd';
|
||||
|
|
@ -13,7 +13,7 @@ import { OptionIcon } from './OptionIcon';
|
|||
import { CancelLineName } from './CancelLineName';
|
||||
import { renderTask } from './render-task-widget';
|
||||
import { Menu } from 'obsidian';
|
||||
import { isMobile } from '@shared/plugin-service-locator';
|
||||
import { isMobile } from '@shared/utils/plugin-service-locator';
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/** @jsxImportSource @emotion/react */
|
||||
import { css } from "@emotion/react";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
|
||||
|
||||
const bem = dr("task-name");
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { css } from "@emotion/react";
|
||||
import { TaskState } from "@entities/note";
|
||||
import { Icon } from "@shared/components/Icon";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { useMemo } from "react";
|
||||
import { CSSTransition, SwitchTransition } from "react-transition-group";
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { useLeaf } from "@shared/view/use-leaf";
|
|||
import { CSSProperties, useEffect, useMemo, useRef } from 'react';
|
||||
import { useDragLayer } from 'react-dnd';
|
||||
import { TaskElDragItem } from '../dnd/drag-item';
|
||||
import { TEXT_CSS } from "@shared/constants/text-style";
|
||||
import { TEXT_CSS } from "@shared/components/text-style";
|
||||
import { css } from "@emotion/react";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
import { Plugin, moment } from 'obsidian';
|
||||
import { setPlugin } from '@shared/plugin-service-locator';
|
||||
import { setPlugin } from '@shared/utils/plugin-service-locator';
|
||||
import { DailyRoutinePluginSettings, DailyRoutineSettingTab, DEFAULT_SETTINGS } from '@app/settings/DailyRoutineSettingTab';
|
||||
import { DailyRoutineObsidianView } from './app';
|
||||
import { activateView } from '@shared/view/activate-view';
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { useRoutineNote } from "@features/note";
|
|||
import { renderTask, TaskDndContext } from '@features/task-el';
|
||||
import { Icon } from '@shared/components/Icon';
|
||||
import { MenuComponent } from "@shared/components/Menu";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { useStartRoutineModal } from '@widgets/routine';
|
||||
import { TaskGroupWidget, useCreateGroupModal } from '@widgets/task-group';
|
||||
import { useAddTodoModal } from '@widgets/todo';
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { css } from "@emotion/react";
|
||||
import { TextComponent } from "obsidian";
|
||||
import { useRef, useState, useEffect, memo } from "react";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { Button } from "./Button";
|
||||
import clsx from "clsx";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/** @jsxImportSource @emotion/react */
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import clsx from "clsx";
|
||||
import { ToggleComponent as ObsidianToggleComponent } from "obsidian";
|
||||
import { memo, useEffect, useRef } from "react";
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { useEffect, useRef } from "react";
|
||||
import { Button } from "../Button";
|
||||
import { Modal } from "obsidian";
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
import { createRoot } from "react-dom/client";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { Modal } from 'obsidian';
|
||||
import { plugin } from '@shared/plugin-service-locator';
|
||||
import { plugin } from '@shared/utils/plugin-service-locator';
|
||||
import { create } from 'zustand';
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { useEffect, useRef, useState } from "react";
|
||||
import { Button } from "../Button";
|
||||
import { Modal } from "obsidian";
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
import { createRoot } from "react-dom/client";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
/** @jsxImportSource @emotion/react */
|
||||
import { ToggleComponent } from "@shared/components/ToggleComponent";
|
||||
import { TEXT_CSS } from '../../constants/text-style';
|
||||
import { TEXT_CSS } from '../text-style';
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { ModalApi } from './create-modal';
|
||||
import { TextEditComponent } from "@shared/components/TextEditComponent"
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
import { DrTabType } from "@shared/use-tab-route";
|
||||
|
||||
|
||||
export const INITIAL_TAB: DrTabType = "note";
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
import { TFile, TFolder } from "obsidian";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import { TAbstractFile, TFile, TFolder } from "obsidian";
|
||||
import { TextInputSuggest } from "./suggest";
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
|
||||
|
||||
export class FileSuggest extends TextInputSuggest<TAbstractFile> {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import { ISuggestOwner, Scope } from "obsidian";
|
||||
import { createPopper, Instance as PopperInstance } from "@popperjs/core";
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
|
||||
const wrapAround = (value: number, size: number): number => {
|
||||
return ((value % size) + size) % size;
|
||||
|
|
|
|||
4
src/shared/tab/initial-tab.ts
Normal file
4
src/shared/tab/initial-tab.ts
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
import { DrTabType } from "@shared/tab/use-tab-route";
|
||||
|
||||
|
||||
export const INITIAL_TAB: DrTabType = "note";
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import { create } from "zustand";
|
||||
import { INITIAL_TAB } from "./constants/initial-tab";
|
||||
import { INITIAL_TAB } from "./initial-tab";
|
||||
|
||||
export type DrTabType = "calendar" | "note" | "achivement";
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import { WorkspaceLeaf } from "obsidian";
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
|
||||
/**
|
||||
* viewType에 해당하는 뷰를 활성화한다.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { DailyRoutineObsidianView } from "@app/obsidian-view";
|
||||
import { plugin } from "@shared/plugin-service-locator";
|
||||
import { plugin } from "@shared/utils/plugin-service-locator";
|
||||
import { createStoreContext } from "@shared/zustand/create-store-context";
|
||||
import { WorkspaceLeaf } from "obsidian";
|
||||
|
||||
|
|
|
|||
|
|
@ -3,12 +3,12 @@ import { Task } from "@entities/note";
|
|||
import { BaseCalendar } from "@shared/components/BaseCalendar";
|
||||
import { Day } from "@shared/period/day";
|
||||
import { Month } from "@shared/period/month";
|
||||
import { useAsync } from "@shared/use-async";
|
||||
import { useAsync } from "@shared/utils/use-async";
|
||||
import { useCallback, useMemo } from "react";
|
||||
import { CalendarTile } from "./CalendarTile";
|
||||
import { loadCalendar } from "../model/load-calendar";
|
||||
import { Tile } from "../model/types";
|
||||
import { useTabRoute } from "@shared/use-tab-route";
|
||||
import { useTabRoute } from "@shared/tab/use-tab-route";
|
||||
|
||||
|
||||
interface CalendarSlideProps {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/** @jsxImportSource @emotion/react */
|
||||
import { Day } from "@shared/period/day";
|
||||
import { Tile } from "../model/types"
|
||||
import { TEXT_CSS } from "@shared/constants/text-style";
|
||||
import { TEXT_CSS } from "@shared/components/text-style";
|
||||
import { Task } from "@entities/note";
|
||||
import { css } from "@emotion/react";
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { NoteEntity, noteRepository, RoutineNote } from '@entities/note';
|
|||
import { Day } from "@shared/period/day";
|
||||
import { BaseCalendar } from '@shared/components/BaseCalendar';
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { useTabRoute } from '@shared/use-tab-route';
|
||||
import { useTabRoute } from '@shared/tab/use-tab-route';
|
||||
import { Month } from '@shared/period/month';
|
||||
import { PerformanceCircle } from '@features/performance';
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { routineRepository } from "@entities/routine";
|
|||
import { RoutineOption, routineReducer, RoutineReducer } from "@features/routine";
|
||||
import { createModal, ModalApi } from "@shared/components/modal/create-modal";
|
||||
import { Modal } from "@shared/components/modal/styled";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { Notice } from "obsidian";
|
||||
import { useCallback, useReducer } from "react";
|
||||
import { createNewRoutine } from "../create-routine";
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { groupReducer, GroupReducer } from "@features/group";
|
|||
import { useRoutineMutationMerge } from "@features/merge-note";
|
||||
import { createModal, ModalApi } from "@shared/components/modal/create-modal";
|
||||
import { Modal } from "@shared/components/modal/styled";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { Notice } from "obsidian";
|
||||
import { useCallback, useReducer } from "react";
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { useRoutineNote } from "@features/note";
|
|||
import { Button } from "@shared/components/Button";
|
||||
import { createModal, ModalApi } from "@shared/components/modal/create-modal";
|
||||
import { Modal } from "@shared/components/modal/styled";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { useCallback, useMemo, useState } from "react";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { useRoutineNote } from '@features/note';
|
|||
import { Button } from '@shared/components/Button';
|
||||
import { createModal, ModalApi } from '@shared/components/modal/create-modal';
|
||||
import { Modal } from '@shared/components/modal/styled';
|
||||
import { dr } from '@shared/daily-routine-bem';
|
||||
import { dr } from '@shared/utils/daily-routine-bem';
|
||||
import { memo, useCallback, useMemo, useState } from "react";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { Day } from "@shared/period/day";
|
||||
import React, { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { DayNode } from "./types";
|
||||
import { dr } from "@shared/daily-routine-bem";
|
||||
import { dr } from "@shared/utils/daily-routine-bem";
|
||||
import { useLeaf } from "@shared/view/use-leaf";
|
||||
import { css } from "@emotion/react";
|
||||
import { useWeeksActiveDay } from "./WeeksContext";
|
||||
|
|
|
|||
Loading…
Reference in a new issue