-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpackage.json
More file actions
182 lines (182 loc) · 9.51 KB
/
Copy pathpackage.json
File metadata and controls
182 lines (182 loc) · 9.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
{
"name": "kroma",
"version": "0.0.0",
"private": true,
"description": "KROMA self-hosted, multi-platform video streaming (Rust server + web / Tizen / webOS clients). Direct-play HEVC everywhere.",
"author": "Maxime Scharwath <maxscharwath@gmail.com>",
"license": "GPL-2.0-or-later",
"repository": "https://github.com/maxscharwath/kroma",
"homepage": "https://kroma.tv",
"bugs": "https://github.com/maxscharwath/kroma/issues",
"workspaces": [
"packages/*",
"clients/*",
"apps/*",
"modules/*/ui"
],
"scripts": {
"ci": "bun packages/ci-tools/src/cli.ts",
"modules": "bun packages/module-tools/src/cli.ts",
"modules:gen": "bun run modules gen",
"modules:new": "bun run modules new",
"modules:validate": "bun run modules validate",
"modules:pack": "bun run modules pack",
"modules:watch": "bun run modules watch",
"modules:test": "bun run modules cargo test",
"modules:clippy": "bun run modules cargo clippy --all-targets",
"modules:check": "bun run modules:validate && bun run modules:gen && git diff --exit-code -- modules server/crates/kroma-modules-generated packages/modules-generated",
"tv": "bun packages/tv-installer/src/cli.ts",
"tv:probe": "bun packages/tv-probe/src/cli.ts",
"build:tv-cli": "bun run --filter '@kroma/tv-installer' compile",
"spec:index": "bun docs/spec/scripts/spec-index.ts",
"spec:check": "bun docs/spec/scripts/spec-index.ts --check",
"shots": "bun run --filter '@kroma/ui' shots",
"shots:pr": "bun packages/shots/src/cli.ts",
"kit:dom": "bun packages/ui/scripts/dom-audit.ts",
"kit:compiler": "bun packages/ui/scripts/compiler-coverage.ts",
"kit:fanout": "bun packages/ui/scripts/fanout-audit.ts",
"perf:scan": "bun packages/ui/scripts/perf-audit.ts",
"kit:perf": "KROMA_PERF=1 bun x vitest run --project audit packages/ui/audit/perf-report.test.tsx --reporter=dot --disable-console-intercept",
"store:art": "bun clients/tv-build/store-art.ts .store-art && python3 clients/tv-build/store-art.py .store-art",
"start": "bun run tizen:prepare && bun run dev",
"dev": "concurrently -k -n server,web,tv -c yellow,cyan,magenta \"bun run server:watch\" \"bun run dev:web\" \"VITE_KROMA_SERVER=http://localhost:4040 bun run dev:tizen\"",
"dev:webonly": "concurrently -k -n server,web -c yellow,cyan \"bun run server:watch\" \"bun run dev:web\"",
"dev:module": "concurrently -k -n server,web,module -c yellow,cyan,green \"KROMA_MODULE_HOT_RELOAD=1 bun run server:watch\" \"bun run dev:web\" \"bun run modules watch\"",
"dev:web": "bun run --filter '@kroma/web' dev",
"dev:site": "bun run --filter '@kroma/site' dev",
"dev:tizen": "bun run --filter '@kroma/tizen' dev",
"dev:tizen:device": "bash clients/tizen/scripts/dev-device.sh",
"dev:webos": "bun run --filter '@kroma/webos' dev",
"dev:tv-web": "bun run --filter '@kroma/tv-web' dev",
"dev:desktop": "bun run --filter '@kroma/desktop' dev",
"dev:mobile": "bun run --filter '@kroma/mobile' start",
"dev:kit": "bun run --filter '@kroma/kit' dev",
"kit:ios": "bun run --filter '@kroma/kit' ios",
"kit:android": "bun run --filter '@kroma/kit' android",
"kit:tv": "bun run --filter '@kroma/kit' ios:tv",
"kit:androidtv": "bun run --filter '@kroma/kit' android:tv",
"build:kit": "bun run --filter '@kroma/kit' build",
"deploy:kit": "bun run --filter '@kroma/kit' deploy",
"deploy:tv-web": "bun run --filter '@kroma/tv-web' deploy",
"deploy:site": "bun run --filter '@kroma/site' deploy",
"deploy:modules": "bun run --filter '@kroma/modules-site' deploy",
"deploy:packages": "bun run --filter '@kroma/package-source' deploy",
"build": "bun run --filter '*' build",
"build:web": "bun run --filter '@kroma/web' build",
"build:site": "bun run --filter '@kroma/site' build",
"build:tizen": "bun run --filter '@kroma/tizen' build",
"build:webos": "bun run --filter '@kroma/webos' build",
"build:tv-web": "bun run --filter '@kroma/tv-web' build",
"build:tv": "bun run --filter '@kroma/tizen' --filter '@kroma/webos' build",
"build:tv-native": "bun run --filter '@kroma/tv-native' bundle:check",
"build:mobile": "bun run --filter '@kroma/mobile' bundle:check",
"build:desktop": "bun run --filter '@kroma/desktop' build",
"deploy:tizen": "bun run --filter '@kroma/tizen' deploy",
"tizen:prepare": "bun run build:tizen && echo \"✓ Tizen app ready → clients/tizen/dist (package: cd clients/tizen && tizen build-web && tizen package -t wgt -s <cert-profile> -- dist)\"",
"typecheck": "bun run ci typecheck",
"test": "bun run test:codegen && vitest run",
"test:coverage": "bun run test:codegen && vitest run --coverage",
"test:codegen": "bun run --filter '@kroma/site' paraglide",
"test:bench": "vitest bench --run --project web",
"format": "biome format --write .",
"lint": "biome lint .",
"check": "biome check .",
"deadcode": "bun x knip@5 --no-progress",
"sonar:precheck": "git diff --name-only --diff-filter=ACMR origin/main...HEAD | bun packages/sonar-tools/src/precheck.ts",
"sonar:lint": "bun packages/sonar-tools/src/config-lint.ts",
"check:fix": "biome check --write .",
"server": "bun server/preflight.ts && cd server && cargo run",
"server:watch": "bun server/preflight.ts && bun server/dev.ts",
"server:build": "cd server && cargo build --release",
"prepare": "git config core.hooksPath .githooks || true",
"hooks:install": "git config core.hooksPath .githooks"
},
"devDependencies": {
"@biomejs/biome": "^2.5.8",
"@kroma/bundler": "workspace:*",
"@kroma/module-sdk": "workspace:*",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.2",
"@vitejs/plugin-react": "^6.0.5",
"@vitest/coverage-istanbul": "^4.1.10",
"abortcontroller-polyfill": "^1.7.8",
"concurrently": "^10.0.5",
"core-js": "^3.50.0",
"intersection-observer": "^0.12.2",
"jsdom": "^29.1.1",
"lightningcss": "^1.33.0",
"lodash": "^4.18.1",
"playwright": "^1.62.1",
"postcss": "^8.5.26",
"react": "19.2.8",
"react-dom": "19.2.8",
"react-native-web": "^0.21.2",
"typescript": "^7.0.2",
"vite": "8.2.1",
"vitest": "^4.1.10"
},
"packageManager": "bun@1.4.0",
"engines": {
"bun": ">=1.4.0"
},
"//react-native": [
"Every client runs the tvOS fork, so `react-native` is an ALIAS everywhere.",
"Both entries below exist for a reason a comment has to carry, because",
"neither is reachable from the workspace manifests that declare the alias.",
"",
"`overrides` forces the alias onto TRANSITIVE peers. The Expo modules,",
"reanimated, screens, gesture-handler and ~30 others declare",
"`react-native: *`, and bun satisfies a bare `*` from the registry - so",
"without this the tree carries TWO React Natives and those libraries link",
"against the non-tvOS one.",
"",
"The root dependency is what makes `expo prebuild` work. ReactNativeDependencies.podspec",
"locates its own package by running `require.resolve('react-native', {paths: [__dir__]})`",
"from inside bun's isolated store; the alias symlinks live in the WORKSPACES,",
"which that walk never visits. Node does check <repo>/node_modules on the way",
"up, so putting the alias here is what it finds. Without it the resolve throws,",
"the podspec's rescue falls back to `__dir__/../..` - a directory with no",
"package.json - and prebuild dies. That is what broke both .ipa builds in v0.1.34."
],
"overrides": {
"@types/react": "19.2.18",
"@types/react-dom": "19.2.4",
"react-native": "npm:react-native-tvos@0.86.0-2",
"vite": "8.2.1"
},
"dependencies": {
"expo-modules-core": "~57.0.11",
"react-native": "npm:react-native-tvos@0.86.0-2"
},
"patchedDependencies": {
"react-native-svg@15.15.4": "patches/react-native-svg-rnsvg-utils-alias-resolution.patch",
"react-native-svg@15.15.5": "patches/react-native-svg-rnsvg-utils-alias-resolution.patch",
"@expo/require-utils@57.0.4": "patches/@expo%2Frequire-utils@57.0.4.patch",
"expo-video@57.0.2": "patches/expo-video@57.0.2.patch"
},
"//overrides": [
"ONE copy of every type-bearing package, forced onto transitive peers.",
"These are structural types: two copies of @types/react in the tree make a",
"React.Ref from one of them un-assignable to a React.Ref from the other, and",
"two copies of vite make the config a shared factory returns un-assignable to",
"the UserConfig its caller imports. Neither is a real incompatibility - both",
"are the same version range resolved twice - so the fix is to collapse them",
"rather than to cast at the call site."
],
"//expo-modules-core": [
"A ROOT dependency for the same reason `react-native` below is one, and it is",
"not reachable from any workspace manifest either.",
"",
"`expo-constants` (and several other expo modules) import `expo-modules-core`",
"without DECLARING it - they assume the flat node_modules npm would have given",
"them. Bun's isolated store gives each package only what it declares, so the",
"import resolves against nothing and Metro fails the bundle outright.",
"",
"Metro resolves from the importing file, which lives in the store, and walks up:",
" .../node_modules/.bun/expo-constants@…/node_modules",
" .../node_modules/.bun/node_modules",
" <repo>/node_modules <- this entry",
"It never visits clients/mobile/node_modules, so declaring it on the app does",
"not help; the root is the first directory on that walk that we control."
]
}