@yuhere/js-jsonrpc2 0.0.0-stage → 2.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 +277 -2
- package/SKILL.md +237 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +132 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/demo-methods.d.ts +10 -0
- package/dist/cli/demo-methods.d.ts.map +1 -0
- package/dist/cli/demo-methods.js +477 -0
- package/dist/cli/demo-methods.js.map +1 -0
- package/dist/cli/express.d.ts +2 -0
- package/dist/cli/express.d.ts.map +1 -0
- package/dist/cli/express.js +42 -0
- package/dist/cli/express.js.map +1 -0
- package/dist/cli/stdio.d.ts +2 -0
- package/dist/cli/stdio.d.ts.map +1 -0
- package/dist/cli/stdio.js +5 -0
- package/dist/cli/stdio.js.map +1 -0
- package/dist/core/Repository.d.ts +24 -0
- package/dist/core/Repository.d.ts.map +1 -0
- package/dist/core/Repository.js +153 -0
- package/dist/core/Repository.js.map +1 -0
- package/dist/core/convert.d.ts +4 -0
- package/dist/core/convert.d.ts.map +1 -0
- package/dist/core/convert.js +29 -0
- package/dist/core/convert.js.map +1 -0
- package/dist/core/descriptor.d.ts +27 -0
- package/dist/core/descriptor.d.ts.map +1 -0
- package/dist/core/descriptor.js +83 -0
- package/dist/core/descriptor.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/permission.d.ts +4 -0
- package/dist/core/permission.d.ts.map +1 -0
- package/dist/core/permission.js +18 -0
- package/dist/core/permission.js.map +1 -0
- package/dist/core/spec-check.d.ts +3 -0
- package/dist/core/spec-check.d.ts.map +1 -0
- package/dist/core/spec-check.js +11 -0
- package/dist/core/spec-check.js.map +1 -0
- package/dist/core/system-methods.d.ts +3 -0
- package/dist/core/system-methods.d.ts.map +1 -0
- package/dist/core/system-methods.js +76 -0
- package/dist/core/system-methods.js.map +1 -0
- package/dist/errors/RpcError.d.ts +9 -0
- package/dist/errors/RpcError.d.ts.map +1 -0
- package/dist/errors/RpcError.js +23 -0
- package/dist/errors/RpcError.js.map +1 -0
- package/dist/errors/codes.d.ts +7 -0
- package/dist/errors/codes.d.ts.map +1 -0
- package/dist/errors/codes.js +7 -0
- package/dist/errors/codes.js.map +1 -0
- package/dist/errors/index.d.ts +3 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +4 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/json/index.d.ts +19 -0
- package/dist/schema/json/index.d.ts.map +1 -0
- package/dist/schema/json/index.js +6 -0
- package/dist/schema/json/index.js.map +1 -0
- package/dist/schema/json/marker.d.ts +23 -0
- package/dist/schema/json/marker.d.ts.map +1 -0
- package/dist/schema/json/marker.js +27 -0
- package/dist/schema/json/marker.js.map +1 -0
- package/dist/schema/json/primitives.d.ts +202 -0
- package/dist/schema/json/primitives.d.ts.map +1 -0
- package/dist/schema/json/primitives.js +598 -0
- package/dist/schema/json/primitives.js.map +1 -0
- package/dist/schema/primitives.d.ts +25 -0
- package/dist/schema/primitives.d.ts.map +1 -0
- package/dist/schema/primitives.js +153 -0
- package/dist/schema/primitives.js.map +1 -0
- package/dist/schema/rpc.d.ts +21 -0
- package/dist/schema/rpc.d.ts.map +1 -0
- package/dist/schema/rpc.js +17 -0
- package/dist/schema/rpc.js.map +1 -0
- package/dist/schema/z/protocol.d.ts +9 -0
- package/dist/schema/z/protocol.d.ts.map +1 -0
- package/dist/schema/z/protocol.js +9 -0
- package/dist/schema/z/protocol.js.map +1 -0
- package/dist/schema/z/register.d.ts +9 -0
- package/dist/schema/z/register.d.ts.map +1 -0
- package/dist/schema/z/register.js +21 -0
- package/dist/schema/z/register.js.map +1 -0
- package/dist/stream/index.d.ts +3 -0
- package/dist/stream/index.d.ts.map +1 -0
- package/dist/stream/index.js +2 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/stringify-stream.d.ts +15 -0
- package/dist/stream/stringify-stream.d.ts.map +1 -0
- package/dist/stream/stringify-stream.js +322 -0
- package/dist/stream/stringify-stream.js.map +1 -0
- package/dist/stream/stringify.d.ts +19 -0
- package/dist/stream/stringify.d.ts.map +1 -0
- package/dist/stream/stringify.js +217 -0
- package/dist/stream/stringify.js.map +1 -0
- package/dist/transport/express/body.d.ts +9 -0
- package/dist/transport/express/body.d.ts.map +1 -0
- package/dist/transport/express/body.js +28 -0
- package/dist/transport/express/body.js.map +1 -0
- package/dist/transport/express/index.d.ts +3 -0
- package/dist/transport/express/index.d.ts.map +1 -0
- package/dist/transport/express/index.js +2 -0
- package/dist/transport/express/index.js.map +1 -0
- package/dist/transport/express/middleware.d.ts +12 -0
- package/dist/transport/express/middleware.d.ts.map +1 -0
- package/dist/transport/express/middleware.js +73 -0
- package/dist/transport/express/middleware.js.map +1 -0
- package/dist/transport/express/respond.d.ts +4 -0
- package/dist/transport/express/respond.d.ts.map +1 -0
- package/dist/transport/express/respond.js +125 -0
- package/dist/transport/express/respond.js.map +1 -0
- package/dist/transport/stdio/index.d.ts +2 -0
- package/dist/transport/stdio/index.d.ts.map +1 -0
- package/dist/transport/stdio/index.js +2 -0
- package/dist/transport/stdio/index.js.map +1 -0
- package/dist/transport/stdio/middleware.d.ts +34 -0
- package/dist/transport/stdio/middleware.d.ts.map +1 -0
- package/dist/transport/stdio/middleware.js +274 -0
- package/dist/transport/stdio/middleware.js.map +1 -0
- package/dist/transport/ws/index.d.ts +3 -0
- package/dist/transport/ws/index.d.ts.map +1 -0
- package/dist/transport/ws/index.js +3 -0
- package/dist/transport/ws/index.js.map +1 -0
- package/dist/transport/ws/middleware.d.ts +25 -0
- package/dist/transport/ws/middleware.d.ts.map +1 -0
- package/dist/transport/ws/middleware.js +209 -0
- package/dist/transport/ws/middleware.js.map +1 -0
- package/dist/transport/ws/standalone.d.ts +22 -0
- package/dist/transport/ws/standalone.d.ts.map +1 -0
- package/dist/transport/ws/standalone.js +39 -0
- package/dist/transport/ws/standalone.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/htdoc/assets/index-CQr-lnlD.js +9286 -0
- package/htdoc/assets/index-CQr-lnlD.js.map +1 -0
- package/htdoc/assets/index-hcP2-9jw.css +729 -0
- package/htdoc/index.html +13 -0
- package/package.json +89 -3
- package/webui/index.html +12 -0
- package/webui/src/App.tsx +56 -0
- package/webui/src/api/httpTransport.ts +148 -0
- package/webui/src/api/paramForm.ts +79 -0
- package/webui/src/api/rpc.ts +57 -0
- package/webui/src/api/schema.ts +12 -0
- package/webui/src/api/types.ts +16 -0
- package/webui/src/api/wsTransport.ts +305 -0
- package/webui/src/components/MethodDetail.tsx +43 -0
- package/webui/src/components/MethodTree.tsx +118 -0
- package/webui/src/components/SchemaForm.tsx +696 -0
- package/webui/src/components/SchemaView.tsx +151 -0
- package/webui/src/components/TestPanel.tsx +279 -0
- package/webui/src/components/Toolbar.tsx +70 -0
- package/webui/src/hooks/useMethodDetail.ts +61 -0
- package/webui/src/hooks/useMethods.ts +27 -0
- package/webui/src/main.tsx +13 -0
- package/webui/src/styles/geek.css +729 -0
- package/webui/src/theme/ThemeProvider.tsx +79 -0
- package/webui/src/vite-env.d.ts +1 -0
- package/webui/tsconfig.json +34 -0
- package/webui/tsconfig.node.json +13 -0
- package/webui/vite.config.ts +15 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
export type ThemeMode = 'system' | 'light' | 'dark';
|
|
4
|
+
type ResolvedTheme = 'light' | 'dark';
|
|
5
|
+
|
|
6
|
+
interface ThemeContextValue {
|
|
7
|
+
/** 用户选择的模式 */
|
|
8
|
+
mode: ThemeMode;
|
|
9
|
+
/** 实际生效的明/暗 */
|
|
10
|
+
resolved: ResolvedTheme;
|
|
11
|
+
setMode: (mode: ThemeMode) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const STORAGE_KEY = 'jsonrpc2.theme';
|
|
15
|
+
|
|
16
|
+
const ThemeContext = createContext<ThemeContextValue | null>(null);
|
|
17
|
+
|
|
18
|
+
function readStoredMode(): ThemeMode {
|
|
19
|
+
try {
|
|
20
|
+
const v = localStorage.getItem(STORAGE_KEY);
|
|
21
|
+
if (v === 'light' || v === 'dark' || v === 'system') return v;
|
|
22
|
+
} catch {
|
|
23
|
+
/* ignore */
|
|
24
|
+
}
|
|
25
|
+
return 'system';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function prefersDark(): boolean {
|
|
29
|
+
return typeof window !== 'undefined'
|
|
30
|
+
&& window.matchMedia?.('(prefers-color-scheme: dark)').matches;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function ThemeProvider({ children }: { children: React.ReactNode }) {
|
|
34
|
+
const [mode, setModeState] = useState<ThemeMode>(readStoredMode);
|
|
35
|
+
const [systemDark, setSystemDark] = useState<boolean>(prefersDark);
|
|
36
|
+
|
|
37
|
+
// 监听系统偏好变化(仅在 mode === 'system' 时影响 resolved)
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
const mql = window.matchMedia('(prefers-color-scheme: dark)');
|
|
40
|
+
const onChange = (e: MediaQueryListEvent) => setSystemDark(e.matches);
|
|
41
|
+
// 老浏览器 fallback
|
|
42
|
+
if (mql.addEventListener) mql.addEventListener('change', onChange);
|
|
43
|
+
else mql.addListener(onChange);
|
|
44
|
+
return () => {
|
|
45
|
+
if (mql.removeEventListener) mql.removeEventListener('change', onChange);
|
|
46
|
+
else mql.removeListener(onChange);
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
49
|
+
|
|
50
|
+
const resolved: ResolvedTheme = useMemo(() => {
|
|
51
|
+
if (mode === 'system') return systemDark ? 'dark' : 'light';
|
|
52
|
+
return mode;
|
|
53
|
+
}, [mode, systemDark]);
|
|
54
|
+
|
|
55
|
+
// 写到 <html data-theme>,并持久化
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
document.documentElement.setAttribute('data-theme', resolved);
|
|
58
|
+
try {
|
|
59
|
+
localStorage.setItem(STORAGE_KEY, mode);
|
|
60
|
+
} catch {
|
|
61
|
+
/* ignore */
|
|
62
|
+
}
|
|
63
|
+
}, [resolved, mode]);
|
|
64
|
+
|
|
65
|
+
const setMode = useCallback((m: ThemeMode) => setModeState(m), []);
|
|
66
|
+
|
|
67
|
+
const value = useMemo<ThemeContextValue>(
|
|
68
|
+
() => ({ mode, resolved, setMode }),
|
|
69
|
+
[mode, resolved, setMode],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function useTheme(): ThemeContextValue {
|
|
76
|
+
const ctx = useContext(ThemeContext);
|
|
77
|
+
if (!ctx) throw new Error('useTheme must be used within <ThemeProvider>');
|
|
78
|
+
return ctx;
|
|
79
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": [
|
|
6
|
+
"ES2020",
|
|
7
|
+
"DOM",
|
|
8
|
+
"DOM.Iterable"
|
|
9
|
+
],
|
|
10
|
+
"module": "ESNext",
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"moduleResolution": "bundler",
|
|
13
|
+
"allowImportingTsExtensions": true,
|
|
14
|
+
"resolveJsonModule": true,
|
|
15
|
+
"isolatedModules": true,
|
|
16
|
+
"noEmit": true,
|
|
17
|
+
"jsx": "react-jsx",
|
|
18
|
+
"strict": true,
|
|
19
|
+
"noUnusedLocals": true,
|
|
20
|
+
"noUnusedParameters": true,
|
|
21
|
+
"noFallthroughCasesInSwitch": true,
|
|
22
|
+
"types": [
|
|
23
|
+
"vite/client"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"include": [
|
|
27
|
+
"webui/src"
|
|
28
|
+
],
|
|
29
|
+
"references": [
|
|
30
|
+
{
|
|
31
|
+
"path": "./tsconfig.node.json"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
plugins: [react()],
|
|
6
|
+
root: "./webui",
|
|
7
|
+
base: './',
|
|
8
|
+
build: {
|
|
9
|
+
outDir: '../htdoc',
|
|
10
|
+
emptyOutDir: true,
|
|
11
|
+
sourcemap: true,
|
|
12
|
+
minify: false,
|
|
13
|
+
target: 'es2020',
|
|
14
|
+
},
|
|
15
|
+
});
|