@dxos/plugin-debug 0.8.4-main.c85a9c8dae → 0.8.4-main.dfabb4ec29
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/dist/lib/{browser/DebugGraph-7HXJ2PS2.mjs → neutral/DebugGraph-G4FWS57E.mjs} +4 -5
- package/dist/lib/neutral/DebugGraph-G4FWS57E.mjs.map +7 -0
- package/dist/lib/neutral/DebugObjectPanel-UJ63CV25.mjs +59 -0
- package/dist/lib/neutral/DebugObjectPanel-UJ63CV25.mjs.map +7 -0
- package/dist/lib/neutral/DebugPlugin.mjs +47 -0
- package/dist/lib/neutral/DebugPlugin.mjs.map +7 -0
- package/dist/lib/neutral/DebugPlugin.node.mjs +18 -0
- package/dist/lib/neutral/DebugPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/DebugSettings-Z3XADRNK.mjs +224 -0
- package/dist/lib/neutral/DebugSettings-Z3XADRNK.mjs.map +7 -0
- package/dist/lib/{browser/DebugSpaceObjectsPanel-7NRPLWZ4.mjs → neutral/DebugSpaceObjectsPanel-NISULU6U.mjs} +10 -26
- package/dist/lib/neutral/DebugSpaceObjectsPanel-NISULU6U.mjs.map +7 -0
- package/dist/lib/{browser/DebugStatus-COQGH37G.mjs → neutral/DebugStatus-YB3KFP7G.mjs} +35 -39
- package/dist/lib/neutral/DebugStatus-YB3KFP7G.mjs.map +7 -0
- package/dist/lib/{browser/DevtoolsOverviewContainer-C75NFVER.mjs → neutral/DevtoolsOverviewContainer-YX7Z3D2H.mjs} +9 -6
- package/dist/lib/neutral/DevtoolsOverviewContainer-YX7Z3D2H.mjs.map +7 -0
- package/dist/lib/neutral/SpaceGenerator-UBYB4NPD.mjs +143 -0
- package/dist/lib/neutral/SpaceGenerator-UBYB4NPD.mjs.map +7 -0
- package/dist/lib/{browser/Wireframe-KAGOKEFW.mjs → neutral/Wireframe-7SNRUKET.mjs} +8 -9
- package/dist/lib/neutral/Wireframe-7SNRUKET.mjs.map +7 -0
- package/dist/lib/{browser/app-graph-builder-LGUQNXHD.mjs → neutral/app-graph-builder-YPYHL2K5.mjs} +210 -258
- package/dist/lib/neutral/app-graph-builder-YPYHL2K5.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +15 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/{browser/chunk-A5H5GRV6.mjs → neutral/chunk-3OGPOE7H.mjs} +2 -2
- package/dist/lib/{browser/chunk-A5H5GRV6.mjs.map → neutral/chunk-3OGPOE7H.mjs.map} +3 -3
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/{browser/chunk-4UFQXPP7.mjs → neutral/chunk-NFIOTQRZ.mjs} +23 -12
- package/dist/lib/neutral/chunk-NFIOTQRZ.mjs.map +7 -0
- package/dist/lib/{browser/SpaceGenerator-SWSGJEEL.mjs → neutral/components/index.mjs} +60 -253
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +21 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +18 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +12 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/{browser/react-context-I3USIAF6.mjs → neutral/react-context-MUZ3KVLU.mjs} +6 -6
- package/dist/lib/neutral/react-context-MUZ3KVLU.mjs.map +7 -0
- package/dist/lib/{browser/react-surface-BTVNKKVQ.mjs → neutral/react-surface-NH2H63KW.mjs} +153 -176
- package/dist/lib/neutral/react-surface-NH2H63KW.mjs.map +7 -0
- package/dist/lib/{browser/settings-SLTQJJNF.mjs → neutral/settings-MPM6YUP4.mjs} +7 -11
- package/dist/lib/neutral/settings-MPM6YUP4.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +83 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +14 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/types/src/DebugPlugin.d.ts +2 -5
- package/dist/types/src/DebugPlugin.d.ts.map +1 -1
- package/dist/types/src/DebugPlugin.node.d.ts +5 -0
- package/dist/types/src/DebugPlugin.node.d.ts.map +1 -0
- package/dist/types/src/DebugPlugin.test.d.ts +2 -0
- package/dist/types/src/DebugPlugin.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +11 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
- package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/{settings/settings.d.ts → settings.d.ts} +2 -1
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.d.ts +11 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.d.ts.map +1 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts +99 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/DebugSettings/index.d.ts +2 -0
- package/dist/types/src/components/DebugSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +2 -2
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/draw-util.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +2 -2
- package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -1
- package/dist/types/src/containers/DebugGraph/index.d.ts +1 -2
- package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts +3 -4
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -1
- package/dist/types/src/containers/DebugObjectPanel/index.d.ts +1 -2
- package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +1 -2
- package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -1
- package/dist/types/src/containers/DebugStatus/index.d.ts +1 -2
- package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -1
- package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -1
- package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +1 -2
- package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts +3 -1
- package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceGenerator/index.d.ts +1 -2
- package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -1
- package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -1
- package/dist/types/src/containers/Wireframe/index.d.ts +1 -2
- package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +0 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +80 -61
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +8 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +69 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +115 -64
- package/src/DebugPlugin.node.ts +18 -0
- package/src/DebugPlugin.test.ts +29 -0
- package/src/DebugPlugin.tsx +9 -11
- package/src/capabilities/app-graph-builder.ts +405 -0
- package/src/capabilities/index.ts +6 -4
- package/src/capabilities/{react-context/react-context.tsx → react-context.tsx} +7 -2
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +169 -158
- package/src/capabilities/{settings/settings.ts → settings.ts} +4 -4
- package/src/components/DebugSettings/DebugSettings.stories.tsx +36 -0
- package/src/components/DebugSettings/DebugSettings.tsx +262 -0
- package/src/components/DebugSettings/index.ts +5 -0
- package/src/components/SpaceGenerator/ObjectGenerator.tsx +13 -15
- package/src/components/SpaceGenerator/draw-util.ts +8 -8
- package/src/components/SpaceGenerator/presets.ts +28 -50
- package/src/components/index.ts +4 -0
- package/src/containers/DebugGraph/DebugGraph.tsx +3 -2
- package/src/containers/DebugGraph/index.ts +1 -3
- package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +47 -16
- package/src/containers/DebugObjectPanel/index.ts +1 -3
- package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +10 -23
- package/src/containers/DebugSpaceObjectsPanel/index.ts +1 -3
- package/src/containers/DebugStatus/DebugStatus.tsx +41 -19
- package/src/containers/DebugStatus/index.ts +1 -3
- package/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx +8 -1
- package/src/containers/DevtoolsOverviewContainer/index.ts +1 -3
- package/src/containers/SpaceGenerator/SpaceGenerator.tsx +102 -103
- package/src/containers/SpaceGenerator/index.ts +1 -3
- package/src/containers/Wireframe/Wireframe.tsx +2 -6
- package/src/containers/Wireframe/index.ts +1 -3
- package/src/containers/index.ts +0 -1
- package/src/index.ts +1 -1
- package/src/meta.ts +1 -1
- package/src/plugin.ts +10 -0
- package/src/translations.ts +75 -60
- package/src/types/Settings.ts +16 -0
- package/src/{types.ts → types/index.ts} +15 -14
- package/dist/lib/browser/DebugGraph-7HXJ2PS2.mjs.map +0 -7
- package/dist/lib/browser/DebugObjectPanel-3TCDNUNW.mjs +0 -33
- package/dist/lib/browser/DebugObjectPanel-3TCDNUNW.mjs.map +0 -7
- package/dist/lib/browser/DebugSettings-JZMIUDYB.mjs +0 -174
- package/dist/lib/browser/DebugSettings-JZMIUDYB.mjs.map +0 -7
- package/dist/lib/browser/DebugSpaceObjectsPanel-7NRPLWZ4.mjs.map +0 -7
- package/dist/lib/browser/DebugStatus-COQGH37G.mjs.map +0 -7
- package/dist/lib/browser/DevtoolsOverviewContainer-C75NFVER.mjs.map +0 -7
- package/dist/lib/browser/SpaceGenerator-SWSGJEEL.mjs.map +0 -7
- package/dist/lib/browser/Wireframe-KAGOKEFW.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-LGUQNXHD.mjs.map +0 -7
- package/dist/lib/browser/chunk-4UFQXPP7.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -132
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-context-I3USIAF6.mjs.map +0 -7
- package/dist/lib/browser/react-surface-BTVNKKVQ.mjs.map +0 -7
- package/dist/lib/browser/settings-SLTQJJNF.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-context/index.d.ts +0 -7
- package/dist/types/src/capabilities/react-context/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-context/react-context.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -5
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/index.d.ts +0 -3
- package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
- package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +0 -10
- package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +0 -1
- package/dist/types/src/containers/DebugSettings/index.d.ts +0 -3
- package/dist/types/src/containers/DebugSettings/index.d.ts.map +0 -1
- package/dist/types/src/types.d.ts +0 -68
- package/dist/types/src/types.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -441
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/react-context/index.ts +0 -7
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/settings/index.ts +0 -7
- package/src/containers/DebugSettings/DebugSettings.tsx +0 -201
- package/src/containers/DebugSettings/index.ts +0 -7
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-context/react-context.d.ts → react-context.d.ts} +0 -0
package/src/translations.ts
CHANGED
|
@@ -3,73 +3,88 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type Resource } from '@dxos/react-ui';
|
|
6
|
+
import { translations as introspectTranslations } from '@dxos/react-ui-introspect/translations';
|
|
6
7
|
|
|
7
|
-
import { meta } from '
|
|
8
|
+
import { meta } from '#meta';
|
|
8
9
|
|
|
9
10
|
export const translations = [
|
|
11
|
+
...introspectTranslations,
|
|
10
12
|
{
|
|
11
13
|
'en-US': {
|
|
12
14
|
[meta.id]: {
|
|
13
|
-
'plugin
|
|
14
|
-
'settings
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
'debug
|
|
22
|
-
'debug
|
|
23
|
-
|
|
24
|
-
'settings
|
|
25
|
-
'settings
|
|
26
|
-
'settings
|
|
27
|
-
'settings
|
|
28
|
-
|
|
29
|
-
'settings
|
|
30
|
-
'settings
|
|
31
|
-
'settings
|
|
32
|
-
'settings
|
|
33
|
-
'settings
|
|
34
|
-
'settings
|
|
35
|
-
|
|
36
|
-
'settings
|
|
37
|
-
'settings
|
|
15
|
+
'plugin.name': 'Debug',
|
|
16
|
+
'settings.title': 'Debug settings',
|
|
17
|
+
'open-devtools.label': 'Open DevTools',
|
|
18
|
+
'devtools.label': 'DevTools',
|
|
19
|
+
'devtools-overview.label': 'Stats',
|
|
20
|
+
'space-objects.label': 'Database',
|
|
21
|
+
'debug.label': 'Debug',
|
|
22
|
+
'generate-objects.label': 'Generate Objects',
|
|
23
|
+
'debug-app-graph.label': 'App Graph',
|
|
24
|
+
'debug-tools-explorer.label': 'Tools Explorer',
|
|
25
|
+
|
|
26
|
+
'settings.wireframe.label': 'Show wireframes.',
|
|
27
|
+
'settings.wireframe.description': 'Overlay wireframe outlines on UI components for debugging layout.',
|
|
28
|
+
'settings.trace-all.label': 'Trace all requests (100% sampling).',
|
|
29
|
+
'settings.trace-all.description':
|
|
30
|
+
'Override the default 30% sampling rate to capture all traces. Requires page reload to take effect.',
|
|
31
|
+
'settings.tracing-panel.label': 'Open tracing panel.',
|
|
32
|
+
'settings.tracing-panel.description': 'Open the tracing dashboard to inspect captured spans.',
|
|
33
|
+
'settings.repair.label': 'Run repair tool.',
|
|
34
|
+
'settings.repair.description': 'Attempt to detect and fix inconsistencies in local data storage.',
|
|
35
|
+
'settings.download-diagnostics.label': 'Download diagnostics.',
|
|
36
|
+
'settings.download-diagnostics.description':
|
|
37
|
+
'Export a JSON file containing client diagnostics for troubleshooting.',
|
|
38
|
+
'settings.download-logs.label': 'Download log buffer.',
|
|
39
|
+
'settings.download-logs.description': 'Export the in-memory log buffer as an NDJSON file.',
|
|
40
|
+
'settings.uploaded.message': 'Settings uploaded.',
|
|
41
|
+
'settings.uploaded.description': 'URL copied to clipboard.',
|
|
42
|
+
'settings.choose-storage-adaptor.label': 'Storage adaptor (worker reload required).',
|
|
43
|
+
'settings.choose-storage-adaptor.description':
|
|
44
|
+
'Select the browser storage backend. Changing this requires a worker reload and may make existing data unavailable.',
|
|
45
|
+
'settings.repair-success.message': 'Repair succeeded',
|
|
46
|
+
'settings.repair-failed.message': 'Repair failed',
|
|
47
|
+
|
|
48
|
+
'settings.storage-adaptor.idb.label': 'IndexedDB',
|
|
49
|
+
'settings.storage-adaptor.opfs.label': 'OPFS',
|
|
50
|
+
'settings.storage-adapter.changed-alert.message':
|
|
38
51
|
'Warning: Swapping the storage adapter will make your data unavailable.',
|
|
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
|
-
'
|
|
52
|
+
|
|
53
|
+
'settings.data-store.label': 'Data Store',
|
|
54
|
+
|
|
55
|
+
'open-debug-panel.label': 'Show Debug',
|
|
56
|
+
'client.label': 'Client',
|
|
57
|
+
'config.label': 'Config',
|
|
58
|
+
'storage.label': 'Storage',
|
|
59
|
+
'logs.label': 'Logs',
|
|
60
|
+
'diagnostics.label': 'Diagnostics',
|
|
61
|
+
'tracing.label': 'Tracing',
|
|
62
|
+
'halo.label': 'HALO',
|
|
63
|
+
'identity.label': 'Identity',
|
|
64
|
+
'devices.label': 'Devices',
|
|
65
|
+
'keyring.label': 'Keyring',
|
|
66
|
+
'credentials.label': 'Credentials',
|
|
67
|
+
'echo.label': 'ECHO',
|
|
68
|
+
'spaces.label': 'Spaces',
|
|
69
|
+
'space.label': 'Space',
|
|
70
|
+
'feeds.label': 'Feeds',
|
|
71
|
+
'objects.label': 'Objects',
|
|
72
|
+
'schema.label': 'Schema',
|
|
73
|
+
'automerge.label': 'Automerge',
|
|
74
|
+
'queues.label': 'Queues',
|
|
75
|
+
'members.label': 'Members',
|
|
76
|
+
'metadata.label': 'Metadata',
|
|
77
|
+
'mesh.label': 'MESH',
|
|
78
|
+
'signal.label': 'Signal',
|
|
79
|
+
'swarm.label': 'Swarm',
|
|
80
|
+
'network.label': 'Network',
|
|
81
|
+
'agent.label': 'Agent',
|
|
82
|
+
'dashboard.label': 'Dashboard',
|
|
83
|
+
'search.label': 'Search',
|
|
84
|
+
'edge.label': 'EDGE',
|
|
85
|
+
'workflows.label': 'Workflows',
|
|
86
|
+
'traces.label': 'Traces',
|
|
87
|
+
'testing.label': 'Testing',
|
|
73
88
|
},
|
|
74
89
|
},
|
|
75
90
|
},
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import * as Schema from 'effect/Schema';
|
|
8
|
+
|
|
9
|
+
export const Settings = Schema.mutable(
|
|
10
|
+
Schema.Struct({
|
|
11
|
+
wireframe: Schema.optional(Schema.Boolean),
|
|
12
|
+
traceAll: Schema.optional(Schema.Boolean),
|
|
13
|
+
}),
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export interface Settings extends Schema.Schema.Type<typeof Settings> {}
|
|
@@ -3,13 +3,22 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type Atom } from '@effect-atom/atom-react';
|
|
6
|
-
import * as Schema from 'effect/Schema';
|
|
7
6
|
import { type Context, createContext } from 'react';
|
|
8
7
|
|
|
9
8
|
import { Capability } from '@dxos/app-framework';
|
|
10
9
|
import type { TimerCallback, TimerOptions } from '@dxos/async';
|
|
10
|
+
import { type IdbLogStore } from '@dxos/log-store-idb';
|
|
11
11
|
|
|
12
|
-
import { meta } from '
|
|
12
|
+
import { meta } from '#meta';
|
|
13
|
+
|
|
14
|
+
import * as Settings from './Settings';
|
|
15
|
+
|
|
16
|
+
export * as Settings from './Settings';
|
|
17
|
+
|
|
18
|
+
export type DebugPluginOptions = {
|
|
19
|
+
/** Shared persistent log store for capturing and downloading logs. */
|
|
20
|
+
logStore?: IdbLogStore;
|
|
21
|
+
};
|
|
13
22
|
|
|
14
23
|
export type DebugContextType = {
|
|
15
24
|
running: boolean;
|
|
@@ -23,21 +32,14 @@ export const DebugContext: Context<DebugContextType> = createContext<DebugContex
|
|
|
23
32
|
stop: () => {},
|
|
24
33
|
});
|
|
25
34
|
|
|
26
|
-
export const DebugSettingsSchema = Schema.mutable(
|
|
27
|
-
Schema.Struct({
|
|
28
|
-
wireframe: Schema.optional(Schema.Boolean),
|
|
29
|
-
}),
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
export interface DebugSettingsProps extends Schema.Schema.Type<typeof DebugSettingsSchema> {}
|
|
33
|
-
|
|
34
35
|
export namespace DebugCapabilities {
|
|
35
|
-
export const Settings = Capability.make<Atom.Writable<
|
|
36
|
+
export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.id}.capability.settings`);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
export namespace Devtools {
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
export const id = `${meta.id}.devtools`;
|
|
41
|
+
|
|
42
|
+
export const ToolsExplorer = `${Devtools.id}.tools-explorer`;
|
|
41
43
|
|
|
42
44
|
export namespace Client {
|
|
43
45
|
export const id = `${Devtools.id}.client`;
|
|
@@ -45,7 +47,6 @@ export namespace Devtools {
|
|
|
45
47
|
export const Storage = `${Devtools.Client.id}.storage`;
|
|
46
48
|
export const Logs = `${Devtools.Client.id}.logs`;
|
|
47
49
|
export const Diagnostics = `${Devtools.Client.id}.diagnostics`;
|
|
48
|
-
export const Tracing = `${Devtools.Client.id}.tracing`;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
export namespace Halo {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugGraph/DebugGraph.tsx", "../../../src/containers/DebugGraph/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { Tree } from '@dxos/devtools';\nimport { Graph } from '@dxos/plugin-graph';\n\nexport type DebugGraphProps = { graph: Graph.Graph; root: string };\nexport const DebugGraph: FC<DebugGraphProps> = ({ graph, root }) => {\n return <Tree data={Graph.toJSON(graph, root)} />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugGraph } from './DebugGraph';\n\nexport default DebugGraph;\n"],
|
|
5
|
-
"mappings": ";AAIA,OAAOA,WAAwB;AAE/B,SAASC,YAAY;AACrB,SAASC,aAAa;AAGf,IAAMC,aAAkC,CAAC,EAAEC,OAAOC,KAAI,MAAE;AAC7D,SAAO,sBAAA,cAACC,MAAAA;IAAKC,MAAMC,MAAMC,OAAOL,OAAOC,IAAAA;;AACzC;;;ACNA,IAAA,qBAAeK;",
|
|
6
|
-
"names": ["React", "Tree", "Graph", "DebugGraph", "graph", "root", "Tree", "data", "Graph", "toJSON", "DebugGraph"]
|
|
7
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// src/containers/DebugObjectPanel/DebugObjectPanel.tsx
|
|
2
|
-
import React, { useState } from "react";
|
|
3
|
-
import { ObjectsTree } from "@dxos/devtools";
|
|
4
|
-
import { Filter, Obj, Query } from "@dxos/echo";
|
|
5
|
-
import { useQuery } from "@dxos/react-client/echo";
|
|
6
|
-
import { Clipboard, Grid, Panel, ScrollArea } from "@dxos/react-ui";
|
|
7
|
-
import { Json } from "@dxos/react-ui-syntax-highlighter";
|
|
8
|
-
var DebugObjectPanel = ({ object }) => {
|
|
9
|
-
const db = Obj.getDatabase(object);
|
|
10
|
-
const [selectedId, setSelectedId] = useState(null);
|
|
11
|
-
const [selectedObject] = useQuery(db, Query.select(Filter.id(selectedId ?? object.id)).options({
|
|
12
|
-
deleted: "include"
|
|
13
|
-
}));
|
|
14
|
-
return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Panel.Root, null, /* @__PURE__ */ React.createElement(Panel.Content, {
|
|
15
|
-
asChild: true
|
|
16
|
-
}, /* @__PURE__ */ React.createElement(Grid, {
|
|
17
|
-
rows: db ? 2 : 1,
|
|
18
|
-
classNames: "divide-y divide-separator"
|
|
19
|
-
}, db && /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
|
|
20
|
-
db,
|
|
21
|
-
root: object,
|
|
22
|
-
onSelect: (entity) => setSelectedId(entity.id)
|
|
23
|
-
}))), /* @__PURE__ */ React.createElement(Json, {
|
|
24
|
-
data: selectedObject
|
|
25
|
-
})))));
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
// src/containers/DebugObjectPanel/index.ts
|
|
29
|
-
var DebugObjectPanel_default = DebugObjectPanel;
|
|
30
|
-
export {
|
|
31
|
-
DebugObjectPanel_default as default
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=DebugObjectPanel-3TCDNUNW.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugObjectPanel/DebugObjectPanel.tsx", "../../../src/containers/DebugObjectPanel/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { ObjectsTree } from '@dxos/devtools';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport type { ObjectId } from '@dxos/keys';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Grid, Panel, ScrollArea } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nexport type DebugObjectPanelProps = {\n object: Obj.Unknown;\n};\n\nexport const DebugObjectPanel = ({ object }: DebugObjectPanelProps) => {\n const db = Obj.getDatabase(object);\n\n const [selectedId, setSelectedId] = useState<ObjectId | null>(null);\n const [selectedObject] = useQuery(\n db,\n Query.select(Filter.id(selectedId ?? object.id)).options({ deleted: 'include' }),\n );\n\n return (\n <Clipboard.Provider>\n <Panel.Root>\n <Panel.Content asChild>\n <Grid rows={db ? 2 : 1} classNames='divide-y divide-separator'>\n {db && (\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree db={db} root={object} onSelect={(entity) => setSelectedId(entity.id)} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n )}\n <Json data={selectedObject} />\n </Grid>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DebugObjectPanel } from './DebugObjectPanel';\n\nexport default DebugObjectPanel;\n"],
|
|
5
|
-
"mappings": ";AAIA,OAAOA,SAASC,gBAAgB;AAEhC,SAASC,mBAAmB;AAC5B,SAASC,QAAQC,KAAKC,aAAa;AAEnC,SAASC,gBAAgB;AACzB,SAASC,WAAWC,MAAMC,OAAOC,kBAAkB;AACnD,SAASC,YAAY;AAMd,IAAMC,mBAAmB,CAAC,EAAEC,OAAM,MAAyB;AAChE,QAAMC,KAAKC,IAAIC,YAAYH,MAAAA;AAE3B,QAAM,CAACI,YAAYC,aAAAA,IAAiBC,SAA0B,IAAA;AAC9D,QAAM,CAACC,cAAAA,IAAkBC,SACvBP,IACAQ,MAAMC,OAAOC,OAAOC,GAAGR,cAAcJ,OAAOY,EAAE,CAAA,EAAGC,QAAQ;IAAEC,SAAS;EAAU,CAAA,CAAA;AAGhF,SACE,sBAAA,cAACC,UAAUC,UAAQ,MACjB,sBAAA,cAACC,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACC,MAAAA;IAAKC,MAAMrB,KAAK,IAAI;IAAGsB,YAAW;KAChCtB,MACC,sBAAA,cAACuB,WAAWN,MAAI,MACd,sBAAA,cAACM,WAAWC,UAAQ,MAClB,sBAAA,cAACC,aAAAA;IAAYzB;IAAQ0B,MAAM3B;IAAQ4B,UAAU,CAACC,WAAWxB,cAAcwB,OAAOjB,EAAE;QAItF,sBAAA,cAACkB,MAAAA;IAAKC,MAAMxB;;AAMxB;;;ACtCA,IAAA,2BAAeyB;",
|
|
6
|
-
"names": ["React", "useState", "ObjectsTree", "Filter", "Obj", "Query", "useQuery", "Clipboard", "Grid", "Panel", "ScrollArea", "Json", "DebugObjectPanel", "object", "db", "Obj", "getDatabase", "selectedId", "setSelectedId", "useState", "selectedObject", "useQuery", "Query", "select", "Filter", "id", "options", "deleted", "Clipboard", "Provider", "Panel", "Root", "Content", "asChild", "Grid", "rows", "classNames", "ScrollArea", "Viewport", "ObjectsTree", "root", "onSelect", "entity", "Json", "data", "DebugObjectPanel"]
|
|
7
|
-
}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
meta
|
|
3
|
-
} from "./chunk-A5H5GRV6.mjs";
|
|
4
|
-
|
|
5
|
-
// src/containers/DebugSettings/DebugSettings.tsx
|
|
6
|
-
import React, { useEffect, useState } from "react";
|
|
7
|
-
import { useCapabilities } from "@dxos/app-framework/ui";
|
|
8
|
-
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
9
|
-
import { SaveConfig, Storage, defs } from "@dxos/config";
|
|
10
|
-
import { log } from "@dxos/log";
|
|
11
|
-
import { useClient } from "@dxos/react-client";
|
|
12
|
-
import { Icon, IconButton, Input, Select, Toast, useFileDownload, useTranslation } from "@dxos/react-ui";
|
|
13
|
-
import { Settings } from "@dxos/react-ui-form";
|
|
14
|
-
import { setDeep } from "@dxos/util";
|
|
15
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/containers/DebugSettings/DebugSettings.tsx";
|
|
16
|
-
var StorageAdapters = {
|
|
17
|
-
opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,
|
|
18
|
-
idb: defs.Runtime.Client.Storage.StorageDriver.IDB
|
|
19
|
-
};
|
|
20
|
-
var DebugSettings = ({ settings, onSettingsChange, logBuffer }) => {
|
|
21
|
-
const { t } = useTranslation(meta.id);
|
|
22
|
-
const [toast, setToast] = useState();
|
|
23
|
-
const client = useClient();
|
|
24
|
-
const download = useFileDownload();
|
|
25
|
-
const [storageConfig, setStorageConfig] = useState({});
|
|
26
|
-
const [upload] = useCapabilities(AppCapabilities.FileUploader);
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
void Storage().then((config) => setStorageConfig(config));
|
|
29
|
-
}, []);
|
|
30
|
-
const handleToast = (toast2) => {
|
|
31
|
-
setToast(toast2);
|
|
32
|
-
const t2 = setTimeout(() => setToast(void 0), 5e3);
|
|
33
|
-
return () => clearTimeout(t2);
|
|
34
|
-
};
|
|
35
|
-
const handleDownload = async () => {
|
|
36
|
-
const data = await client.diagnostics();
|
|
37
|
-
const file = new Blob([
|
|
38
|
-
JSON.stringify(data, void 0, 2)
|
|
39
|
-
], {
|
|
40
|
-
type: "text/plain"
|
|
41
|
-
});
|
|
42
|
-
const fileName = `composer-${(/* @__PURE__ */ new Date()).toISOString().replace(/\W/g, "-")}.json`;
|
|
43
|
-
download(file, fileName);
|
|
44
|
-
if (upload) {
|
|
45
|
-
const info = await upload(client.spaces.default.db, new File([
|
|
46
|
-
file
|
|
47
|
-
], fileName));
|
|
48
|
-
if (!info) {
|
|
49
|
-
log.error("diagnostics failed to upload to IPFS", void 0, {
|
|
50
|
-
F: __dxlog_file,
|
|
51
|
-
L: 65,
|
|
52
|
-
S: void 0,
|
|
53
|
-
C: (f, a) => f(...a)
|
|
54
|
-
});
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
handleToast({
|
|
58
|
-
title: t("settings uploaded"),
|
|
59
|
-
description: t("settings uploaded to clipboard")
|
|
60
|
-
});
|
|
61
|
-
const url = client.config.values.runtime.services.ipfs.gateway + "/" + info.cid;
|
|
62
|
-
void navigator.clipboard.writeText(url);
|
|
63
|
-
handleToast({
|
|
64
|
-
title: t("settings uploaded"),
|
|
65
|
-
description: t("settings uploaded to clipboard")
|
|
66
|
-
});
|
|
67
|
-
log.info("diagnostics", {
|
|
68
|
-
url
|
|
69
|
-
}, {
|
|
70
|
-
F: __dxlog_file,
|
|
71
|
-
L: 80,
|
|
72
|
-
S: void 0,
|
|
73
|
-
C: (f, a) => f(...a)
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
const handleDownloadLogs = () => {
|
|
78
|
-
const ndjson = logBuffer.serialize();
|
|
79
|
-
const file = new Blob([
|
|
80
|
-
ndjson
|
|
81
|
-
], {
|
|
82
|
-
type: "application/x-ndjson"
|
|
83
|
-
});
|
|
84
|
-
const fileName = `composer-logs-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-")}.ndjson`;
|
|
85
|
-
download(file, fileName);
|
|
86
|
-
};
|
|
87
|
-
const handleRepair = async () => {
|
|
88
|
-
try {
|
|
89
|
-
const info = await client.repair();
|
|
90
|
-
setStorageConfig(await Storage());
|
|
91
|
-
handleToast({
|
|
92
|
-
title: t("settings repair success"),
|
|
93
|
-
description: JSON.stringify(info, void 0, 2)
|
|
94
|
-
});
|
|
95
|
-
} catch (err) {
|
|
96
|
-
handleToast({
|
|
97
|
-
title: t("settings repair failed"),
|
|
98
|
-
description: err.message
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
return /* @__PURE__ */ React.createElement(Settings.Root, null, /* @__PURE__ */ React.createElement(Settings.Section, {
|
|
103
|
-
title: t("settings title", {
|
|
104
|
-
ns: meta.id
|
|
105
|
-
})
|
|
106
|
-
}, /* @__PURE__ */ React.createElement(Settings.Group, null, /* @__PURE__ */ React.createElement(Settings.ItemInput, {
|
|
107
|
-
title: t("settings wireframe")
|
|
108
|
-
}, /* @__PURE__ */ React.createElement(Input.Switch, {
|
|
109
|
-
checked: settings.wireframe,
|
|
110
|
-
onCheckedChange: (checked) => onSettingsChange((s) => ({
|
|
111
|
-
...s,
|
|
112
|
-
wireframe: !!checked
|
|
113
|
-
}))
|
|
114
|
-
})), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
|
|
115
|
-
title: t("settings download diagnostics")
|
|
116
|
-
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
117
|
-
icon: "ph--download-simple--regular",
|
|
118
|
-
iconOnly: true,
|
|
119
|
-
label: t("settings download diagnostics"),
|
|
120
|
-
onClick: handleDownload
|
|
121
|
-
})), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
|
|
122
|
-
title: t("settings download logs")
|
|
123
|
-
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
124
|
-
icon: "ph--download-simple--regular",
|
|
125
|
-
iconOnly: true,
|
|
126
|
-
label: t("settings download logs"),
|
|
127
|
-
onClick: handleDownloadLogs
|
|
128
|
-
})), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
|
|
129
|
-
title: t("settings repair")
|
|
130
|
-
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
131
|
-
icon: "ph--first-aid-kit--regular",
|
|
132
|
-
iconOnly: true,
|
|
133
|
-
label: t("settings repair"),
|
|
134
|
-
onClick: handleRepair
|
|
135
|
-
})), toast && /* @__PURE__ */ React.createElement(Toast.Root, null, /* @__PURE__ */ React.createElement(Toast.Body, null, /* @__PURE__ */ React.createElement(Toast.Title, null, /* @__PURE__ */ React.createElement(Icon, {
|
|
136
|
-
icon: "ph--gift--duotone",
|
|
137
|
-
size: 5,
|
|
138
|
-
classNames: "inline mr-1"
|
|
139
|
-
}), /* @__PURE__ */ React.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React.createElement(Toast.Description, null, toast.description))), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
|
|
140
|
-
title: t("settings choose storage adaptor")
|
|
141
|
-
}, /* @__PURE__ */ React.createElement(Select.Root, {
|
|
142
|
-
value: Object.entries(StorageAdapters).find(([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore)?.[0],
|
|
143
|
-
onValueChange: (value) => {
|
|
144
|
-
if (confirm(t("settings storage adapter changed alert"))) {
|
|
145
|
-
updateConfig(storageConfig, setStorageConfig, [
|
|
146
|
-
"runtime",
|
|
147
|
-
"client",
|
|
148
|
-
"storage",
|
|
149
|
-
"dataStore"
|
|
150
|
-
], StorageAdapters[value]);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
|
|
154
|
-
placeholder: t("settings data store label")
|
|
155
|
-
}), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, Object.keys(StorageAdapters).map((key) => /* @__PURE__ */ React.createElement(Select.Option, {
|
|
156
|
-
key,
|
|
157
|
-
value: key
|
|
158
|
-
}, t(`settings storage adaptor ${key} label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))))));
|
|
159
|
-
};
|
|
160
|
-
var updateConfig = (config, setConfig, path, value) => {
|
|
161
|
-
const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));
|
|
162
|
-
setDeep(storageConfigCopy, path, value);
|
|
163
|
-
setConfig(storageConfigCopy);
|
|
164
|
-
queueMicrotask(async () => {
|
|
165
|
-
await SaveConfig(storageConfigCopy);
|
|
166
|
-
});
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
// src/containers/DebugSettings/index.ts
|
|
170
|
-
var DebugSettings_default = DebugSettings;
|
|
171
|
-
export {
|
|
172
|
-
DebugSettings_default as default
|
|
173
|
-
};
|
|
174
|
-
//# sourceMappingURL=DebugSettings-JZMIUDYB.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugSettings/DebugSettings.tsx", "../../../src/containers/DebugSettings/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';\nimport { type LogBuffer, log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Icon, IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { setDeep } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { type DebugSettingsProps } from '../../types';\n\ntype Toast = {\n title: string;\n description?: string;\n};\n\nconst StorageAdapters = {\n opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,\n idb: defs.Runtime.Client.Storage.StorageDriver.IDB,\n} as const;\n\nexport type DebugSettingsComponentProps = {\n settings: DebugSettingsProps;\n onSettingsChange: (fn: (current: DebugSettingsProps) => DebugSettingsProps) => void;\n logBuffer: LogBuffer;\n};\n\nexport const DebugSettings = ({ settings, onSettingsChange, logBuffer }: DebugSettingsComponentProps) => {\n const { t } = useTranslation(meta.id);\n const [toast, setToast] = useState<Toast>();\n const client = useClient();\n const download = useFileDownload();\n // TODO(mykola): Get updates from other places that change Config.\n const [storageConfig, setStorageConfig] = useState<ConfigProto>({});\n const [upload] = useCapabilities(AppCapabilities.FileUploader);\n\n useEffect(() => {\n void Storage().then((config) => setStorageConfig(config));\n }, []);\n\n const handleToast = (toast: Toast) => {\n setToast(toast);\n const t = setTimeout(() => setToast(undefined), 5_000);\n return () => clearTimeout(t);\n };\n\n const handleDownload = async () => {\n const data = await client.diagnostics();\n const file = new Blob([JSON.stringify(data, undefined, 2)], {\n type: 'text/plain',\n });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (upload) {\n const info = await upload(client.spaces.default.db, new File([file], fileName));\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({\n title: t('settings uploaded'),\n description: t('settings uploaded to clipboard'),\n });\n\n // TODO(nf): move to IpfsPlugin?\n const url = client.config.values.runtime!.services!.ipfs!.gateway + '/' + info.cid;\n void navigator.clipboard.writeText(url);\n handleToast({\n title: t('settings uploaded'),\n description: t('settings uploaded to clipboard'),\n });\n log.info('diagnostics', { url });\n }\n };\n\n const handleDownloadLogs = () => {\n const ndjson = logBuffer.serialize();\n const file = new Blob([ndjson], { type: 'application/x-ndjson' });\n const fileName = `composer-logs-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.ndjson`;\n download(file, fileName);\n };\n\n const handleRepair = async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({\n title: t('settings repair success'),\n description: JSON.stringify(info, undefined, 2),\n });\n } catch (err: any) {\n handleToast({\n title: t('settings repair failed'),\n description: err.message,\n });\n }\n };\n\n return (\n <Settings.Root>\n <Settings.Section title={t('settings title', { ns: meta.id })}>\n <Settings.Group>\n <Settings.ItemInput title={t('settings wireframe')}>\n <Input.Switch\n checked={settings.wireframe}\n onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, wireframe: !!checked }))}\n />\n </Settings.ItemInput>\n <Settings.ItemInput title={t('settings download diagnostics')}>\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings download diagnostics')}\n onClick={handleDownload}\n />\n </Settings.ItemInput>\n <Settings.ItemInput title={t('settings download logs')}>\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings download logs')}\n onClick={handleDownloadLogs}\n />\n </Settings.ItemInput>\n <Settings.ItemInput title={t('settings repair')}>\n <IconButton\n icon='ph--first-aid-kit--regular'\n iconOnly\n label={t('settings repair')}\n onClick={handleRepair}\n />\n </Settings.ItemInput>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Body>\n <Toast.Title>\n <Icon icon='ph--gift--duotone' size={5} classNames='inline mr-1' />\n <span>{toast.title}</span>\n </Toast.Title>\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\n </Toast.Body>\n </Toast.Root>\n )}\n\n <Settings.ItemInput title={t('settings choose storage adaptor')}>\n <Select.Root\n value={\n Object.entries(StorageAdapters).find(\n ([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,\n )?.[0]\n }\n onValueChange={(value) => {\n if (confirm(t('settings storage adapter changed alert'))) {\n updateConfig(\n storageConfig,\n setStorageConfig,\n ['runtime', 'client', 'storage', 'dataStore'],\n StorageAdapters[value as keyof typeof StorageAdapters],\n );\n }\n }}\n >\n <Select.TriggerButton placeholder={t('settings data store label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Object.keys(StorageAdapters).map((key) => (\n <Select.Option key={key} value={key}>\n {t(`settings storage adaptor ${key} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Settings.ItemInput>\n </Settings.Group>\n </Settings.Section>\n </Settings.Root>\n );\n};\n\nconst updateConfig = (config: ConfigProto, setConfig: (newConfig: ConfigProto) => void, path: string[], value: any) => {\n const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));\n setDeep(storageConfigCopy, path, value);\n setConfig(storageConfigCopy);\n queueMicrotask(async () => {\n await SaveConfig(storageConfigCopy);\n });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugSettings } from './DebugSettings';\n\nexport default DebugSettings;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useEffect", "useState", "useCapabilities", "AppCapabilities", "SaveConfig", "Storage", "defs", "log", "useClient", "Icon", "IconButton", "Input", "Select", "Toast", "useFileDownload", "useTranslation", "Settings", "setDeep", "StorageAdapters", "opfs", "defs", "Runtime", "Client", "Storage", "StorageDriver", "WEBFS", "idb", "IDB", "DebugSettings", "settings", "onSettingsChange", "logBuffer", "t", "useTranslation", "meta", "id", "toast", "setToast", "useState", "client", "useClient", "download", "useFileDownload", "storageConfig", "setStorageConfig", "upload", "useCapabilities", "AppCapabilities", "FileUploader", "useEffect", "then", "config", "handleToast", "setTimeout", "undefined", "clearTimeout", "handleDownload", "data", "diagnostics", "file", "Blob", "JSON", "stringify", "type", "fileName", "Date", "toISOString", "replace", "info", "spaces", "default", "db", "File", "log", "error", "title", "description", "url", "values", "runtime", "services", "ipfs", "gateway", "cid", "navigator", "clipboard", "writeText", "handleDownloadLogs", "ndjson", "serialize", "slice", "handleRepair", "repair", "err", "message", "Settings", "Root", "Section", "ns", "Group", "ItemInput", "Input", "Switch", "checked", "wireframe", "onCheckedChange", "s", "IconButton", "icon", "iconOnly", "label", "onClick", "Toast", "Body", "Title", "Icon", "size", "classNames", "span", "Description", "Select", "value", "Object", "entries", "find", "_name", "storage", "dataStore", "onValueChange", "confirm", "updateConfig", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "keys", "map", "key", "Option", "Arrow", "setConfig", "path", "storageConfigCopy", "parse", "setDeep", "queueMicrotask", "SaveConfig", "DebugSettings"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx", "../../../src/containers/DebugSpaceObjectsPanel/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { useLayout } from '@dxos/app-toolkit/ui';\nimport { ObjectsTree } from '@dxos/devtools';\nimport { type Database, Filter, Query } from '@dxos/echo';\nimport type { ObjectId } from '@dxos/keys';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { parseId, useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nexport const DebugSpaceObjectsPanel = () => {\n const layout = useLayout();\n const client = useCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n const space = spaceId ? client.spaces.get(spaceId) : undefined;\n if (!space) {\n return null;\n }\n\n return <DebugSpaceObjectsPanelMain database={space.db} />;\n};\n\nconst DebugSpaceObjectsPanelMain = ({ database }: { database: Database.Database }) => {\n const [selectedId, setSelectedId] = useState<ObjectId | null>(null);\n\n const [selectedObject] = useQuery(\n database,\n selectedId ? Query.select(Filter.id(selectedId)) : Query.select(Filter.nothing()),\n );\n\n return (\n <Clipboard.Provider>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <Input.Root>\n <Input.TextInput disabled placeholder='Search...' />\n </Input.Root>\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Grid rows={2} classNames='divide-y divide-separator'>\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree db={database} onSelect={(entity) => setSelectedId(entity.id)} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n {selectedObject && <Json classNames='p-1' data={selectedObject} />}\n </Grid>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DebugSpaceObjectsPanel } from './DebugSpaceObjectsPanel';\n\nexport default DebugSpaceObjectsPanel;\n"],
|
|
5
|
-
"mappings": ";AAIA,OAAOA,SAASC,gBAAgB;AAEhC,SAASC,qBAAqB;AAC9B,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAC5B,SAAwBC,QAAQC,aAAa;AAE7C,SAASC,0BAA0B;AACnC,SAASC,SAASC,gBAAgB;AAClC,SAASC,WAAWC,MAAMC,OAAOC,OAAOC,YAAYC,eAAe;AACnE,SAASC,YAAY;AAEd,IAAMC,yBAAyB,MAAA;AACpC,QAAMC,SAASC,UAAAA;AACf,QAAMC,SAASC,cAAcC,mBAAmBC,MAAM;AACtD,QAAM,EAAEC,QAAO,IAAKC,QAAQP,OAAOQ,SAAS;AAC5C,QAAMC,QAAQH,UAAUJ,OAAOQ,OAAOC,IAAIL,OAAAA,IAAWM;AACrD,MAAI,CAACH,OAAO;AACV,WAAO;EACT;AAEA,SAAO,sBAAA,cAACI,4BAAAA;IAA2BC,UAAUL,MAAMM;;AACrD;AAEA,IAAMF,6BAA6B,CAAC,EAAEC,SAAQ,MAAmC;AAC/E,QAAM,CAACE,YAAYC,aAAAA,IAAiBC,SAA0B,IAAA;AAE9D,QAAM,CAACC,cAAAA,IAAkBC,SACvBN,UACAE,aAAaK,MAAMC,OAAOC,OAAOC,GAAGR,UAAAA,CAAAA,IAAeK,MAAMC,OAAOC,OAAOE,QAAO,CAAA,CAAA;AAGhF,SACE,sBAAA,cAACC,UAAUC,UAAQ,MACjB,sBAAA,cAACC,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACD,QAAQD,MAAI,MACX,sBAAA,cAACG,MAAMH,MAAI,MACT,sBAAA,cAACG,MAAMC,WAAS;IAACC,UAAAA;IAASC,aAAY;SAI5C,sBAAA,cAACP,MAAMQ,SAAO;IAACL,SAAAA;KACb,sBAAA,cAACM,MAAAA;IAAKC,MAAM;IAAGC,YAAW;KACxB,sBAAA,cAACC,WAAWX,MAAI,MACd,sBAAA,cAACW,WAAWC,UAAQ,MAClB,sBAAA,cAACC,aAAAA;IAAY3B,IAAID;IAAU6B,UAAU,CAACC,WAAW3B,cAAc2B,OAAOpB,EAAE;QAG3EL,kBAAkB,sBAAA,cAAC0B,MAAAA;IAAKN,YAAW;IAAMO,MAAM3B;;AAM5D;;;ACrDA,IAAA,iCAAe4B;",
|
|
6
|
-
"names": ["React", "useState", "useCapability", "useLayout", "ObjectsTree", "Filter", "Query", "ClientCapabilities", "parseId", "useQuery", "Clipboard", "Grid", "Input", "Panel", "ScrollArea", "Toolbar", "Json", "DebugSpaceObjectsPanel", "layout", "useLayout", "client", "useCapability", "ClientCapabilities", "Client", "spaceId", "parseId", "workspace", "space", "spaces", "get", "undefined", "DebugSpaceObjectsPanelMain", "database", "db", "selectedId", "setSelectedId", "useState", "selectedObject", "useQuery", "Query", "select", "Filter", "id", "nothing", "Clipboard", "Provider", "Panel", "Root", "Toolbar", "asChild", "Input", "TextInput", "disabled", "placeholder", "Content", "Grid", "rows", "classNames", "ScrollArea", "Viewport", "ObjectsTree", "onSelect", "entity", "Json", "data", "DebugSpaceObjectsPanel"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugStatus/DebugStatus.tsx", "../../../src/containers/DebugStatus/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { TimeoutError } from '@dxos/async';\nimport { useActiveSpace } from '@dxos/plugin-space';\nimport { StatusBar } from '@dxos/plugin-status-bar';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Icon } from '@dxos/react-ui';\n\nconst styles = {\n success: 'text-sky-300 dark:text-green-700',\n warning: 'text-orange-300 dark:text-orange-600',\n error: 'text-red-300 dark:text-red-600',\n};\n\n// TODO(burdon): Move out of debug plugin.\n// TODO(burdon): Make pluggable (move indicators to relevant plugins).\n// TODO(burdon): Vault heartbeat indicator (global scope)?\n\n/**\n * Ensure light doesn't flicker immediately after start.\n */\n// TODO(burdon): Move to @dxos/async (debounce?)\nconst _timer = (cb: (err?: Error) => void, options?: { min?: number; max?: number }) => {\n const min = options?.min ?? 500;\n let start: number;\n let pending: NodeJS.Timeout;\n let timeout: NodeJS.Timeout;\n return {\n start: () => {\n start = Date.now();\n clearTimeout(pending);\n if (options?.max) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n cb(new TimeoutError(options.max));\n }, options.max);\n }\n },\n stop: () => {\n clearTimeout(timeout);\n const delta = Date.now() - start;\n if (delta < min) {\n pending = setTimeout(() => {\n cb();\n }, min - delta);\n }\n },\n };\n};\n\n/**\n * Global error handler.\n */\n// TODO(burdon): Integrate with Sentry?\nconst ErrorIndicator = () => {\n const [, forceUpdate] = useState({});\n const errorRef = useRef<Error>(null);\n useEffect(() => {\n const errorListener = (event: any) => {\n const error: Error = event.error ?? event.reason;\n if (errorRef.current !== error) {\n errorRef.current = error;\n forceUpdate({});\n }\n };\n\n // TODO(burdon): Register globally?\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/error_event\n window.addEventListener('error', errorListener);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n window.addEventListener('unhandledrejection', errorListener);\n\n return () => {\n window.removeEventListener('error', errorListener);\n window.removeEventListener('unhandledrejection', errorListener);\n };\n }, []);\n\n const handleReset = () => {\n errorRef.current = null;\n forceUpdate({});\n };\n\n if (errorRef.current) {\n return (\n <StatusBar.Button title={errorRef.current.message} onClick={handleReset}>\n <Icon icon='ph--warning-circle--duotone' size={4} classNames={styles.error} />\n </StatusBar.Button>\n );\n } else {\n return (\n <StatusBar.Item title='No errors.'>\n <Icon icon='ph--check--regular' size={4} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Swarm connection handler.\n */\nconst SwarmIndicator = () => {\n const [state, setState] = useState(0);\n const { swarm } = useNetworkStatus();\n useEffect(() => {\n setState(swarm === ConnectionState.ONLINE ? 0 : 1);\n }, [swarm]);\n\n if (state === 0) {\n return (\n <StatusBar.Item title='Connected to swarm.'>\n <Icon icon='ph--lightning--regular' size={4} />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item title='Disconnected from swarm.'>\n <Icon icon='ph--lightning-slash--regular' size={4} classNames={styles.warning} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Data saving indicator.\n */\n// TODO(burdon): Merge with SaveStatus.\nconst SavingIndicator = () => {\n const [state, _setState] = useState(0);\n const _space = useActiveSpace();\n // TODO(dmaretskyi): Fix this when we have save status for automerge.\n // useEffect(() => {\n // if (!space) {\n // return;\n // }\n // const { start, stop } = timer(() => setState(0), { min: 250 });\n // return space.db.pendingBatch.on(({ duration, error }) => {\n // if (error) {\n // setState(2);\n // stop();\n // } else if (duration === undefined) {\n // setState(1);\n // start();\n // } else {\n // stop();\n // }\n // });\n // }, [space]);\n\n switch (state) {\n case 2:\n return (\n <StatusBar.Item title='Edit not saved.'>\n <Icon icon='ph--circle--duotone' size={4} classNames={styles.warning} />\n </StatusBar.Item>\n );\n case 1:\n return (\n <StatusBar.Item title='Saving...'>\n <Icon icon='ph--circle--duotone' size={4} classNames={styles.success} />\n </StatusBar.Item>\n );\n case 0:\n default:\n return (\n <StatusBar.Item title='Modified indicator.'>\n <Icon icon='ph--circle--duotone' size={4} />\n </StatusBar.Item>\n );\n }\n};\n\nconst indicators = [SavingIndicator, SwarmIndicator, ErrorIndicator];\n\nexport const DebugStatus = () => {\n return (\n <>\n {indicators.map((Indicator) => (\n <Indicator key={Indicator.name} />\n ))}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugStatus } from './DebugStatus';\n\nexport default DebugStatus;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useEffect", "useRef", "useState", "TimeoutError", "useActiveSpace", "StatusBar", "ConnectionState", "useNetworkStatus", "Icon", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "window", "addEventListener", "removeEventListener", "handleReset", "StatusBar", "Button", "title", "message", "onClick", "Icon", "icon", "size", "classNames", "styles", "Item", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "warning", "SavingIndicator", "_setState", "_space", "useActiveSpace", "success", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "DebugStatus"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx", "../../../src/containers/DevtoolsOverviewContainer/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { StatsPanel, useStats } from '@dxos/devtools';\n\nexport const DevtoolsOverviewContainer = () => {\n const [stats, refreshStats] = useStats();\n\n return (\n <StatsPanel stats={stats} onRefresh={refreshStats}>\n <Surface.Surface role='devtools-overview' />\n </StatsPanel>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DevtoolsOverviewContainer } from './DevtoolsOverviewContainer';\n\nexport default DevtoolsOverviewContainer;\n"],
|
|
5
|
-
"mappings": ";AAIA,OAAOA,WAAW;AAElB,SAASC,eAAe;AACxB,SAASC,YAAYC,gBAAgB;AAE9B,IAAMC,4BAA4B,MAAA;AACvC,QAAM,CAACC,OAAOC,YAAAA,IAAgBC,SAAAA;AAE9B,SACE,sBAAA,cAACC,YAAAA;IAAWH;IAAcI,WAAWH;KACnC,sBAAA,cAACI,QAAQA,SAAO;IAACC,MAAK;;AAG5B;;;ACXA,IAAA,oCAAeC;",
|
|
6
|
-
"names": ["React", "Surface", "StatsPanel", "useStats", "DevtoolsOverviewContainer", "stats", "refreshStats", "useStats", "StatsPanel", "onRefresh", "Surface", "role", "DevtoolsOverviewContainer"]
|
|
7
|
-
}
|