@limcpf/everything-is-a-markdown 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +193 -0
- package/bun.lock +163 -0
- package/package.json +36 -0
- package/src/build.ts +651 -0
- package/src/cli.ts +36 -0
- package/src/config.ts +203 -0
- package/src/dev.ts +132 -0
- package/src/markdown.ts +209 -0
- package/src/runtime/app.css +1254 -0
- package/src/runtime/app.js +1208 -0
- package/src/template.ts +156 -0
- package/src/types.ts +125 -0
- package/src/utils.ts +117 -0
- package/tsconfig.json +13 -0
package/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Everything-Is-A-Markdown (EIAM)
|
|
2
|
+
|
|
3
|
+
로컬 Markdown 볼트를 **파일 탐색기 UX 그대로** 웹에 공개할 수 있게 만드는 정적 블로그 빌더입니다.
|
|
4
|
+
|
|
5
|
+
- 문서 저장 구조(폴더/파일)를 그대로 살려서 탐색 경험을 제공합니다.
|
|
6
|
+
- `publish: true` 문서만 빌드해, 로컬 지식베이스와 공개 콘텐츠를 분리할 수 있습니다.
|
|
7
|
+
- 결과물은 순수 HTML/CSS/JS 정적 파일이라 배포가 단순합니다.
|
|
8
|
+
|
|
9
|
+
**왜 이 프로젝트인가**
|
|
10
|
+
- 파일 트리 + 브랜치 필터 + 본문 뷰를 하나의 화면에 결합해 "문서 저장소를 읽는 경험"을 만듭니다.
|
|
11
|
+
- 빌드 캐시(`.cache/build-index.json`)로 변경된 문서만 다시 렌더링해 반복 빌드가 빠릅니다.
|
|
12
|
+
- Obsidian 스타일 위키링크(`[[...]]`)를 지원해 기존 작성 습관을 크게 바꾸지 않아도 됩니다.
|
|
13
|
+
- 문서별 슬러그 고정 URL(`/path/to/doc/`)과 라우트 매핑(`manifest.json`)으로 정적 호스팅에 최적화되어 있습니다.
|
|
14
|
+
- 반응형 사이드바, 설정 팝업, 라이트/시스템/다크 테마 전환까지 기본 제공해 바로 운영 가능한 UI를 제공합니다.
|
|
15
|
+
|
|
16
|
+
**스크린샷 가이드 (원하는 이미지를 아래 설명으로 캡처해서 넣어주세요)**
|
|
17
|
+
- (대표 화면: 좌측 파일 트리, 우측 본문, 상단 브랜치 필터 pill이 함께 보이는 데스크톱 전체 화면)
|
|
18
|
+
- (브랜치 전환 화면: branch pill 선택 전/후로 목록이 바뀌는 상태)
|
|
19
|
+
- (설정 팝업 화면: 메뉴 버튼 위치 토글 + Light/System/Dark 테마 세그먼트가 보이는 화면)
|
|
20
|
+
- (다크 모드 화면: 동일 문서를 라이트/다크로 비교 가능한 화면)
|
|
21
|
+
- (모바일 화면: 하단 Files 버튼으로 사이드바를 열었을 때 오버레이 포함 화면)
|
|
22
|
+
|
|
23
|
+
**프로젝트 개요**
|
|
24
|
+
이 프로젝트는 로컬 Markdown 문서를 파일 트리 형태로 탐색하고, 정적 사이트로 빌드하는 File-System 스타일 블로그 생성기입니다.
|
|
25
|
+
|
|
26
|
+
**주요 기능**
|
|
27
|
+
- 파일 트리 기반 탐색 UI (폴더/파일 구조 유지)
|
|
28
|
+
- 문서별 슬러그 고정 URL 경로 생성 (`/path/to/doc/`)
|
|
29
|
+
- Shiki 기반 코드 하이라이팅
|
|
30
|
+
- Obsidian 스타일 위키링크 `[[...]]` 지원
|
|
31
|
+
- 라이트/시스템/다크 테마 전환 지원 (설정 팝업)
|
|
32
|
+
- NEW 배지, Recent 가상 폴더, 문서 메타 표시
|
|
33
|
+
- 증분 빌드 캐시(`.cache/build-index.json`)로 재빌드 최적화
|
|
34
|
+
|
|
35
|
+
**빠른 시작**
|
|
36
|
+
1. 의존성 설치
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
bun install
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
2. 샘플 볼트로 실행
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
bun run dev -- --vault ./test-vault --out ./dist
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
브라우저에서 `http://localhost:3000`으로 접속합니다.
|
|
49
|
+
|
|
50
|
+
**사용 방법**
|
|
51
|
+
스크립트는 `bun run`으로 실행합니다.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
bun run blog [build|dev|clean] [options]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
기본 명령
|
|
58
|
+
- `bun run build` : 정적 사이트 빌드
|
|
59
|
+
- `bun run dev` : 개발 서버 실행 + 변경 감지
|
|
60
|
+
- `bun run clean` : `dist`와 `.cache` 삭제
|
|
61
|
+
|
|
62
|
+
옵션
|
|
63
|
+
- `--vault <path>`: 마크다운 루트 디렉터리 (기본: `.`)
|
|
64
|
+
- `--out <path>`: 출력 디렉터리 (기본: `dist`)
|
|
65
|
+
- `--exclude <glob>`: 제외 패턴 (반복 가능, 기본 포함: `.obsidian/**`)
|
|
66
|
+
- `--new-within-days <n>`: NEW 배지 기준 일수 (기본: `7`)
|
|
67
|
+
- `--recent-limit <n>`: Recent 가상 폴더 노출 개수 (기본: `5`)
|
|
68
|
+
- `--menu-config <path>`: 상단 고정 메뉴(JSON) 설정 파일 경로
|
|
69
|
+
- `--port <n>`: dev 서버 포트 (기본: `3000`)
|
|
70
|
+
|
|
71
|
+
**릴리즈 단일파일 배포 (GitHub Actions)**
|
|
72
|
+
- 워크플로우 파일: `.github/workflows/release-single-file.yml`
|
|
73
|
+
- 동작: `bun run build` 결과인 `dist`를 단일 `.tar.gz` 파일로 묶어 Release asset으로 업로드
|
|
74
|
+
- 자동 실행: `v*` 태그 푸시 시 실행 (예: `v0.1.0`)
|
|
75
|
+
- 수동 실행: `Actions > Release Single File > Run workflow`에서 `tag`(필수), `asset_name`(선택) 입력
|
|
76
|
+
|
|
77
|
+
릴리즈 태그 생성 예시
|
|
78
|
+
```bash
|
|
79
|
+
git tag v0.1.0
|
|
80
|
+
git push origin v0.1.0
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**bunx 배포 (npm publish)**
|
|
84
|
+
- 워크플로우 파일: `.github/workflows/publish-bunx.yml`
|
|
85
|
+
- 동작: `v*` 태그 푸시 시 npm에 패키지 publish (`bun publish`)
|
|
86
|
+
- 전제: GitHub 저장소 `Settings > Secrets and variables > Actions`에 `NPM_TOKEN` 추가
|
|
87
|
+
- 검증: 태그 `vX.Y.Z`와 `package.json`의 `version`이 다르면 배포 실패
|
|
88
|
+
|
|
89
|
+
사용자 실행 예시
|
|
90
|
+
```bash
|
|
91
|
+
bunx @limcpf/everything-is-a-markdown build --vault ./vault --out ./dist
|
|
92
|
+
bunx @limcpf/everything-is-a-markdown dev --port 3000
|
|
93
|
+
|
|
94
|
+
# 축약 실행 (bin: eiam)
|
|
95
|
+
bunx --package @limcpf/everything-is-a-markdown eiam build --vault ./vault --out ./dist
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
예시
|
|
99
|
+
```bash
|
|
100
|
+
# 다른 볼트 경로로 빌드
|
|
101
|
+
bun run build -- --vault ../vault --out ./dist
|
|
102
|
+
|
|
103
|
+
# dev 서버 포트 변경
|
|
104
|
+
bun run dev -- --port 4000
|
|
105
|
+
|
|
106
|
+
# 제외 패턴 추가
|
|
107
|
+
bun run build -- --exclude "private/**" --exclude "**/drafts/**"
|
|
108
|
+
|
|
109
|
+
# 상단 고정 메뉴 추가
|
|
110
|
+
bun run build -- --menu-config ./menu.config.json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
고정 메뉴 설정 파일 예시 (`menu.config.json`)
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"pinnedMenu": {
|
|
117
|
+
"label": "NOTICE",
|
|
118
|
+
"sourceDir": "Log/(Blog)/Notice"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
- `label`: 탐색기에서 Recent 위에 표시할 고정 메뉴 이름
|
|
123
|
+
- `sourceDir`: vault 기준 실제 물리 디렉터리 경로 (해당 하위 문서만 고정 메뉴에 노출)
|
|
124
|
+
|
|
125
|
+
**설정 파일**
|
|
126
|
+
프로젝트 루트에 `blog.config.ts|js|mjs|cjs`를 두면 CLI 옵션과 병합됩니다.
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
// blog.config.ts
|
|
130
|
+
export default {
|
|
131
|
+
vaultDir: "./vault",
|
|
132
|
+
outDir: "dist",
|
|
133
|
+
exclude: [".obsidian/**", "private/**"],
|
|
134
|
+
ui: {
|
|
135
|
+
newWithinDays: 7,
|
|
136
|
+
recentLimit: 5,
|
|
137
|
+
},
|
|
138
|
+
markdown: {
|
|
139
|
+
wikilinks: true,
|
|
140
|
+
images: "omit-local", // "keep" | "omit-local"
|
|
141
|
+
gfm: true,
|
|
142
|
+
highlight: {
|
|
143
|
+
theme: "github-dark",
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**콘텐츠 작성 규칙**
|
|
150
|
+
- `publish: true`인 문서만 출력됩니다.
|
|
151
|
+
- `draft: true`면 출력에서 제외됩니다.
|
|
152
|
+
- `branch`를 지정하면 해당 브랜치 필터에서만 노출됩니다.
|
|
153
|
+
- `branch`가 없으면 "브랜치 분류 없음"으로 간주되어 기본 브랜치에서만 노출됩니다.
|
|
154
|
+
- 기본 브랜치 뷰는 `dev + 분류 없음`이며, 다른 브랜치는 해당 브랜치 글만 노출됩니다.
|
|
155
|
+
- `title`이 없으면 파일명에서 자동 생성됩니다.
|
|
156
|
+
- 생성일은 `date` 또는 `createdDate`를 사용합니다.
|
|
157
|
+
- 수정일은 `updatedDate`(`modifiedDate`/`lastModified`도 허용)를 사용합니다.
|
|
158
|
+
- 생성/수정일은 frontmatter에 값이 있을 때만 본문 메타에 표시됩니다.
|
|
159
|
+
- `tags`는 문자열 배열로 작성합니다.
|
|
160
|
+
|
|
161
|
+
```md
|
|
162
|
+
---
|
|
163
|
+
publish: true
|
|
164
|
+
branch: dev
|
|
165
|
+
title: My Post
|
|
166
|
+
date: "2024-10-24"
|
|
167
|
+
updatedDate: "2024-10-25T14:30:00"
|
|
168
|
+
description: Short summary
|
|
169
|
+
tags: ["dev", "blog"]
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
# Hello
|
|
173
|
+
본문 내용...
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**출력 구조**
|
|
177
|
+
- `dist/manifest.json`: 트리, 문서 메타, 라우팅 정보
|
|
178
|
+
- `dist/content/*.html`: 각 문서 본문 HTML
|
|
179
|
+
- `dist/_app/index.html`: 앱 셸
|
|
180
|
+
- `dist/<문서 slug 경로>/index.html`: 각 문서 경로
|
|
181
|
+
- `dist/assets/app.js`, `dist/assets/app.css`: 런타임 UI
|
|
182
|
+
|
|
183
|
+
**추가로 필요한 문서 목록**
|
|
184
|
+
- `LICENSE`: 라이선스 명시
|
|
185
|
+
- `CHANGELOG.md`: 버전별 변경 이력
|
|
186
|
+
- `CONTRIBUTING.md`: 개발/기여 가이드와 브랜치 규칙
|
|
187
|
+
- `CODE_OF_CONDUCT.md`: 커뮤니티 행동 강령
|
|
188
|
+
- `SECURITY.md`: 보안 취약점 신고 절차
|
|
189
|
+
- `docs/CONFIG.md`: 설정 옵션 상세 레퍼런스
|
|
190
|
+
- `docs/ARCHITECTURE.md`: 빌드 파이프라인과 런타임 구조 설명
|
|
191
|
+
- `docs/DEPLOYMENT.md`: 정적 호스팅 배포 가이드
|
|
192
|
+
- `docs/TROUBLESHOOTING.md`: 자주 발생하는 문제와 해결 방법
|
|
193
|
+
- `docs/FAQ.md`: 사용자 FAQ
|
package/bun.lock
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"workspaces": {
|
|
4
|
+
"": {
|
|
5
|
+
"name": "@limcpf/everything-is-a-markdown",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"chokidar": "^4.0.3",
|
|
8
|
+
"gray-matter": "^4.0.3",
|
|
9
|
+
"markdown-it": "^14.1.0",
|
|
10
|
+
"picomatch": "^4.0.2",
|
|
11
|
+
"shiki": "^3.2.1",
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/markdown-it": "^14.1.2",
|
|
15
|
+
"@types/picomatch": "^4.0.2",
|
|
16
|
+
"bun-types": "^1.3.8",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
"packages": {
|
|
21
|
+
"@shikijs/core": ["@shikijs/core@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA=="],
|
|
22
|
+
|
|
23
|
+
"@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw=="],
|
|
24
|
+
|
|
25
|
+
"@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA=="],
|
|
26
|
+
|
|
27
|
+
"@shikijs/langs": ["@shikijs/langs@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA=="],
|
|
28
|
+
|
|
29
|
+
"@shikijs/themes": ["@shikijs/themes@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g=="],
|
|
30
|
+
|
|
31
|
+
"@shikijs/types": ["@shikijs/types@3.22.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg=="],
|
|
32
|
+
|
|
33
|
+
"@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="],
|
|
34
|
+
|
|
35
|
+
"@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
|
|
36
|
+
|
|
37
|
+
"@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="],
|
|
38
|
+
|
|
39
|
+
"@types/markdown-it": ["@types/markdown-it@14.1.2", "", { "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" } }, "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog=="],
|
|
40
|
+
|
|
41
|
+
"@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="],
|
|
42
|
+
|
|
43
|
+
"@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="],
|
|
44
|
+
|
|
45
|
+
"@types/node": ["@types/node@25.2.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ=="],
|
|
46
|
+
|
|
47
|
+
"@types/picomatch": ["@types/picomatch@4.0.2", "", {}, "sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA=="],
|
|
48
|
+
|
|
49
|
+
"@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
|
|
50
|
+
|
|
51
|
+
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
|
|
52
|
+
|
|
53
|
+
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
|
|
54
|
+
|
|
55
|
+
"bun-types": ["bun-types@1.3.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q=="],
|
|
56
|
+
|
|
57
|
+
"ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="],
|
|
58
|
+
|
|
59
|
+
"character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="],
|
|
60
|
+
|
|
61
|
+
"character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="],
|
|
62
|
+
|
|
63
|
+
"chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
|
|
64
|
+
|
|
65
|
+
"comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
|
|
66
|
+
|
|
67
|
+
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
|
|
68
|
+
|
|
69
|
+
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
|
|
70
|
+
|
|
71
|
+
"entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
|
|
72
|
+
|
|
73
|
+
"esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="],
|
|
74
|
+
|
|
75
|
+
"extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="],
|
|
76
|
+
|
|
77
|
+
"gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="],
|
|
78
|
+
|
|
79
|
+
"hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="],
|
|
80
|
+
|
|
81
|
+
"hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="],
|
|
82
|
+
|
|
83
|
+
"html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="],
|
|
84
|
+
|
|
85
|
+
"is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="],
|
|
86
|
+
|
|
87
|
+
"js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="],
|
|
88
|
+
|
|
89
|
+
"kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
|
|
90
|
+
|
|
91
|
+
"linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="],
|
|
92
|
+
|
|
93
|
+
"markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="],
|
|
94
|
+
|
|
95
|
+
"mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="],
|
|
96
|
+
|
|
97
|
+
"mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="],
|
|
98
|
+
|
|
99
|
+
"micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="],
|
|
100
|
+
|
|
101
|
+
"micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="],
|
|
102
|
+
|
|
103
|
+
"micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="],
|
|
104
|
+
|
|
105
|
+
"micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="],
|
|
106
|
+
|
|
107
|
+
"micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="],
|
|
108
|
+
|
|
109
|
+
"oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="],
|
|
110
|
+
|
|
111
|
+
"oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="],
|
|
112
|
+
|
|
113
|
+
"picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
|
|
114
|
+
|
|
115
|
+
"property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="],
|
|
116
|
+
|
|
117
|
+
"punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="],
|
|
118
|
+
|
|
119
|
+
"readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
|
|
120
|
+
|
|
121
|
+
"regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="],
|
|
122
|
+
|
|
123
|
+
"regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="],
|
|
124
|
+
|
|
125
|
+
"regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="],
|
|
126
|
+
|
|
127
|
+
"section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="],
|
|
128
|
+
|
|
129
|
+
"shiki": ["shiki@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/engine-javascript": "3.22.0", "@shikijs/engine-oniguruma": "3.22.0", "@shikijs/langs": "3.22.0", "@shikijs/themes": "3.22.0", "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g=="],
|
|
130
|
+
|
|
131
|
+
"space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
|
|
132
|
+
|
|
133
|
+
"sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="],
|
|
134
|
+
|
|
135
|
+
"stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="],
|
|
136
|
+
|
|
137
|
+
"strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="],
|
|
138
|
+
|
|
139
|
+
"trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="],
|
|
140
|
+
|
|
141
|
+
"uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="],
|
|
142
|
+
|
|
143
|
+
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
144
|
+
|
|
145
|
+
"unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="],
|
|
146
|
+
|
|
147
|
+
"unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="],
|
|
148
|
+
|
|
149
|
+
"unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="],
|
|
150
|
+
|
|
151
|
+
"unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="],
|
|
152
|
+
|
|
153
|
+
"unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="],
|
|
154
|
+
|
|
155
|
+
"vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="],
|
|
156
|
+
|
|
157
|
+
"vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="],
|
|
158
|
+
|
|
159
|
+
"zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
|
|
160
|
+
|
|
161
|
+
"js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
|
|
162
|
+
}
|
|
163
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@limcpf/everything-is-a-markdown",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"eiam": "src/cli.ts"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"src",
|
|
11
|
+
"README.md",
|
|
12
|
+
"bun.lock",
|
|
13
|
+
"tsconfig.json"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"blog": "bun run src/cli.ts",
|
|
20
|
+
"build": "bun run src/cli.ts build",
|
|
21
|
+
"dev": "bun run src/cli.ts dev",
|
|
22
|
+
"clean": "bun run src/cli.ts clean"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"chokidar": "^4.0.3",
|
|
26
|
+
"gray-matter": "^4.0.3",
|
|
27
|
+
"markdown-it": "^14.1.0",
|
|
28
|
+
"picomatch": "^4.0.2",
|
|
29
|
+
"shiki": "^3.2.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/markdown-it": "^14.1.2",
|
|
33
|
+
"@types/picomatch": "^4.0.2",
|
|
34
|
+
"bun-types": "^1.3.8"
|
|
35
|
+
}
|
|
36
|
+
}
|