offline-first, p2p synced, atproto enabled, feed reader
1{
2 "name": "feedline",
3 "private": true,
4 "version": "0.0.1",
5 "scripts": {
6 "dev": "pnpm run start:dev",
7 "lint": "wireit",
8 "types": "wireit",
9 "docs": "wireit",
10 "build": "wireit",
11 "test": "wireit",
12 "start:tests": "wireit",
13 "start:dev": "wireit",
14 "start:prod": "wireit"
15 },
16 "type": "module",
17 "imports": {
18 "#app/*": "./src/app/*",
19 "#lib/*": "./src/lib/*",
20 "#realm/*": "./src/realm/*",
21 "#feedline/*": "./src/feedline/*",
22 "#spec/*": "./src/spec/*"
23 },
24 "dependencies": {
25 "@kobalte/core": "^0.13.11",
26 "@mozilla/readability": "^0.6.0",
27 "@solid-primitives/date": "^2.1.4",
28 "@solid-primitives/event-dispatcher": "^0.1.1",
29 "@solid-primitives/event-listener": "^2.4.3",
30 "@solid-primitives/refs": "^1.1.2",
31 "@solid-primitives/transition-group": "^1.1.2",
32 "@solid-primitives/virtual": "^0.2.2",
33 "@solidjs/router": "^0.15.4",
34 "@tailwindcss/vite": "^4.1.18",
35 "@use-gesture/vanilla": "^10.3.1",
36 "bloom-filters": "^3.0.4",
37 "buffer": "^6.0.3",
38 "clsx": "^2.1.1",
39 "dexie": "^4.2.1",
40 "express": "^5.2.1",
41 "feedsmith": "^2.8.0",
42 "hash-wasm": "^4.12.0",
43 "idb": "^8.0.3",
44 "isomorphic-ws": "^5.0.0",
45 "jose": "^6.1.3",
46 "level": "^10.0.0",
47 "linkedom": "^0.18.12",
48 "motion": "^12.23.26",
49 "nanoid": "^5.1.6",
50 "postcss-preset-env": "^10.5.0",
51 "solid-js": "^1.9.10",
52 "solid-motionone": "^1.0.4",
53 "solid-transition-group": "^0.3.0",
54 "tailwind-merge": "^3.4.0",
55 "tailwindcss": "^4.1.18",
56 "ts-pattern": "^5.9.0",
57 "tsx": "^4.21.0",
58 "typedarray-to-buffer": "^4.0.0",
59 "webtorrent": "^2.8.5",
60 "workbox-cacheable-response": "^7.4.0",
61 "workbox-expiration": "^7.4.0",
62 "workbox-range-requests": "^7.4.0",
63 "workbox-routing": "^7.4.0",
64 "workbox-strategies": "^7.4.0",
65 "workbox-window": "^7.4.0",
66 "ws": "^8.18.3",
67 "zod": "^4.2.1"
68 },
69 "devDependencies": {
70 "@csstools/postcss-global-data": "^3.1.0",
71 "@eslint/compat": "^2.0.0",
72 "@eslint/css": "^0.14.1",
73 "@eslint/js": "^9.39.2",
74 "@eslint/json": "^0.14.0",
75 "@eslint/markdown": "^7.5.1",
76 "@faker-js/faker": "^10.1.0",
77 "@testing-library/jest-dom": "^6.9.1",
78 "@types/confusing-browser-globals": "^1.0.3",
79 "@types/express": "^5.0.6",
80 "@types/level": "^6.0.3",
81 "@types/node": "^24.10.4",
82 "@types/ws": "^8.18.1",
83 "@vitejs/plugin-basic-ssl": "^2.1.0",
84 "@vitest/coverage-v8": "^4.0.16",
85 "confusing-browser-globals": "^1.0.11",
86 "eslint": "^9.39.2",
87 "eslint-config-prettier": "^10.1.8",
88 "eslint-plugin-import-x": "^4.16.1",
89 "eslint-plugin-prettier": "^5.5.4",
90 "eslint-plugin-solid": "^0.14.5",
91 "eslint-plugin-tsdoc": "^0.5.0",
92 "globals": "^16.5.0",
93 "identity-obj-proxy": "^3.0.0",
94 "indexeddbshim": "^16.1.0",
95 "jsdom": "^27.3.0",
96 "memfs": "^4.51.1",
97 "prettier": "^3.7.4",
98 "prettier-plugin-organize-imports": "^4.3.0",
99 "solid-devtools": "^0.34.4",
100 "tw-animate-css": "^1.4.0",
101 "typedoc": "^0.28.15",
102 "typedoc-plugin-markdown": "^4.9.0",
103 "typedoc-plugin-mdn-links": "^5.0.10",
104 "typedoc-plugin-zod": "^1.4.3",
105 "typescript": "^5.9.3",
106 "typescript-eslint": "^8.50.0",
107 "typescript-eslint-language-service": "^5.0.5",
108 "typescript-language-server": "^5.1.3",
109 "vite": "^7.3.0",
110 "vite-bundle-analyzer": "^1.3.2",
111 "vite-plugin-checker": "^0.11.0",
112 "vite-plugin-node-polyfills": "^0.24.0",
113 "vite-plugin-pwa": "^1.2.0",
114 "vite-plugin-solid": "^2.11.10",
115 "vitest": "^4.0.16",
116 "wireit": "^0.14.12",
117 "workbox-core": "^7.4.0",
118 "workbox-precaching": "^7.4.0",
119 "workbox-sw": "^7.4.0",
120 "zod-schema-faker": "^2.0.2"
121 },
122 "wireit": {
123 "build": {
124 "command": "vite build",
125 "files": [
126 "src/**/*.{js,jsx,ts,tsx}",
127 "!src/**/*.spec.{js,jsx,ts,tsx}",
128 "vite.config.js",
129 "tsconfig.json"
130 ],
131 "output": [
132 "./dist/**"
133 ]
134 },
135 "docs": {
136 "command": "npx typedoc",
137 "files": [
138 "src/**/*.{js,jsx,ts,tsx}",
139 "typedoc.json"
140 ],
141 "output": [
142 "./doc/**"
143 ]
144 },
145 "lint": {
146 "command": "eslint --color --cache --cache-location .eslintcache .",
147 "files": [
148 "src/**/*.{ts,tsx}",
149 "eslint.config.js",
150 ".eslintignore"
151 ],
152 "output": []
153 },
154 "test": {
155 "command": "vitest run --coverage",
156 "files": [
157 "src/**/*.{ts,tsx}",
158 "vitest.config.ts",
159 "vitest.setup.ts"
160 ],
161 "output": [
162 "coverage/**"
163 ]
164 },
165 "types": {
166 "command": "tsc --build --pretty --noEmit",
167 "files": [
168 "src/**/*.{ts,tsx}",
169 "tsconfig.json"
170 ],
171 "output": [
172 ".tsbuildinfo"
173 ]
174 },
175 "run:client": {
176 "service": true,
177 "command": "vite"
178 },
179 "run:tests": {
180 "service": true,
181 "command": "vitest"
182 },
183 "run:backend": {
184 "service": true,
185 "command": "tsx --watch src/feedline/main.ts"
186 },
187 "start:tests": {
188 "service": true,
189 "command": "echo 'starting test services' && sleep 100d",
190 "dependencies": [
191 "run:tests"
192 ]
193 },
194 "start:dev": {
195 "service": true,
196 "command": "echo 'starting dev services' && sleep 100d",
197 "dependencies": [
198 "run:client",
199 "run:backend"
200 ]
201 },
202 "start:prod": {
203 "service": true,
204 "dependencies": [
205 "build"
206 ],
207 "command": "tsx src/feedline/main.ts"
208 }
209 }
210}