Skip to content

Commit b7c5208

Browse files
committed
refactor(plugins): restructure inspect/og/assets/code-server/data-inspector to app/ + src/{node,client-script} + playgrounds/
Apply the a11y layout to the five model-fitting plugins: - app/ holds the framework SPA (Vite-built into each --assets package) - src/node/ consolidates all node-side code (definition, setup, cli, rpc, constants/types/vite, engine/registry where present) - src/client-script/ holds the browser scripts (client runtime, and the injected page script for data-inspector), built by tsdown - playgrounds/ boots the built plugin via the play script; dev serves the panel with HMR + a live node bridge - rename ./client to ./client-script (and ./inject to ./client-script/page-script for data-inspector) - regenerate alias.ts, tsconfig.base.json paths, knip entries, and API snapshots
1 parent b8ebb85 commit b7c5208

290 files changed

Lines changed: 1790 additions & 1356 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎alias.ts‎

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,14 @@ export const alias = {
7878
'@devframes/json-render-ui/spa': r('json-render-ui/src/spa.ts'),
7979
'@devframes/json-render-ui': r('json-render-ui/src/index.ts'),
8080
'json-render/dashboard': fileURLToPath(new URL('./examples/json-render/src/dashboard.ts', import.meta.url)),
81-
'@devframes/plugin-code-server/client': p('code-server/src/client/index.ts'),
82-
'@devframes/plugin-code-server/node': p('code-server/src/node/index.ts'),
83-
'@devframes/plugin-code-server/constants': p('code-server/src/constants.ts'),
84-
'@devframes/plugin-code-server/types': p('code-server/src/types.ts'),
85-
'@devframes/plugin-code-server/rpc': p('code-server/src/rpc/index.ts'),
86-
'@devframes/plugin-code-server/cli': p('code-server/src/cli.ts'),
87-
'@devframes/plugin-code-server/vite': p('code-server/src/vite.ts'),
88-
'@devframes/plugin-code-server': p('code-server/src/index.ts'),
81+
'@devframes/plugin-code-server/client-script': p('code-server/src/client-script/client/index.ts'),
82+
'@devframes/plugin-code-server/node': p('code-server/src/node/setup.ts'),
83+
'@devframes/plugin-code-server/constants': p('code-server/src/node/constants.ts'),
84+
'@devframes/plugin-code-server/types': p('code-server/src/node/types.ts'),
85+
'@devframes/plugin-code-server/rpc': p('code-server/src/node/rpc/index.ts'),
86+
'@devframes/plugin-code-server/cli': p('code-server/src/node/cli.ts'),
87+
'@devframes/plugin-code-server/vite': p('code-server/src/node/vite.ts'),
88+
'@devframes/plugin-code-server': p('code-server/src/node/index.ts'),
8989
'@devframes/plugin-terminals/client': p('terminals/src/client/index.ts'),
9090
'@devframes/plugin-terminals/node': p('terminals/src/node/index.ts'),
9191
'@devframes/plugin-terminals/constants': p('terminals/src/constants.ts'),
@@ -98,25 +98,22 @@ export const alias = {
9898
'devframe/recipes/common-rpc-functions': r('devframe/src/recipes/common-rpc-functions.ts'),
9999
'devframe/client': r('devframe/src/client/index.ts'),
100100
'devframe': r('devframe/src'),
101-
'@devframes/plugin-data-inspector/client': p('data-inspector/src/client/index.ts'),
102-
'@devframes/plugin-data-inspector/node': p('data-inspector/src/node/index.ts'),
103-
'@devframes/plugin-data-inspector/registry': p('data-inspector/src/registry/index.ts'),
104-
'@devframes/plugin-data-inspector/engine': p('data-inspector/src/engine/index.ts'),
105-
'@devframes/plugin-data-inspector/inject': p('data-inspector/src/inject/index.ts'),
106-
'@devframes/plugin-data-inspector/cli': p('data-inspector/src/cli.ts'),
107-
'@devframes/plugin-data-inspector/vite': p('data-inspector/src/vite.ts'),
108-
'@devframes/plugin-data-inspector': p('data-inspector/src/index.ts'),
109-
'@devframes/plugin-inspect/client': p('inspect/src/client/index.ts'),
110-
'@devframes/plugin-inspect/node': p('inspect/src/node/index.ts'),
111-
'@devframes/plugin-inspect/cli': p('inspect/src/cli.ts'),
112-
'@devframes/plugin-inspect/vite': p('inspect/src/vite.ts'),
113-
'@devframes/plugin-inspect': p('inspect/src/index.ts'),
114-
'@devframes/plugin-og/client': p('og/src/client/index.ts'),
115-
'@devframes/plugin-og/node': p('og/src/node/index.ts'),
116-
'@devframes/plugin-og/rpc': p('og/src/rpc/index.ts'),
117-
'@devframes/plugin-og/cli': p('og/src/cli.ts'),
118-
'@devframes/plugin-og/vite': p('og/src/vite.ts'),
119-
'@devframes/plugin-og': p('og/src/index.ts'),
101+
'@devframes/plugin-data-inspector/client-script/page-script': p('data-inspector/src/client-script/page-script/index.ts'),
102+
'@devframes/plugin-data-inspector/client-script': p('data-inspector/src/client-script/client/index.ts'),
103+
'@devframes/plugin-data-inspector/node': p('data-inspector/src/node/setup.ts'),
104+
'@devframes/plugin-data-inspector/registry': p('data-inspector/src/node/registry/index.ts'),
105+
'@devframes/plugin-data-inspector/engine': p('data-inspector/src/node/engine/index.ts'),
106+
'@devframes/plugin-data-inspector/cli': p('data-inspector/src/node/cli.ts'),
107+
'@devframes/plugin-data-inspector': p('data-inspector/src/node/index.ts'),
108+
'@devframes/plugin-inspect/client-script': p('inspect/src/client-script/client/index.ts'),
109+
'@devframes/plugin-inspect/node': p('inspect/src/node/setup.ts'),
110+
'@devframes/plugin-inspect/cli': p('inspect/src/node/cli.ts'),
111+
'@devframes/plugin-inspect': p('inspect/src/node/index.ts'),
112+
'@devframes/plugin-og/client-script': p('og/src/client-script/client/index.ts'),
113+
'@devframes/plugin-og/node': p('og/src/node/setup.ts'),
114+
'@devframes/plugin-og/rpc': p('og/src/node/rpc/index.ts'),
115+
'@devframes/plugin-og/cli': p('og/src/node/cli.ts'),
116+
'@devframes/plugin-og': p('og/src/node/index.ts'),
120117
'@devframes/plugin-a11y/client-script/page-script': p('a11y/src/client-script/page-script/index.ts'),
121118
'@devframes/plugin-a11y/client-script': p('a11y/src/client-script/client/index.ts'),
122119
'@devframes/plugin-a11y/node': p('a11y/src/node/setup.ts'),
@@ -129,12 +126,11 @@ export const alias = {
129126
'@devframes/plugin-messages/cli': p('messages/src/cli.ts'),
130127
'@devframes/plugin-messages/vite': p('messages/src/vite.ts'),
131128
'@devframes/plugin-messages': p('messages/src/index.ts'),
132-
'@devframes/plugin-assets/client': p('assets/src/client/index.ts'),
133-
'@devframes/plugin-assets/node': p('assets/src/node/index.ts'),
134-
'@devframes/plugin-assets/rpc': p('assets/src/rpc/index.ts'),
135-
'@devframes/plugin-assets/cli': p('assets/src/cli.ts'),
136-
'@devframes/plugin-assets/vite': p('assets/src/vite.ts'),
137-
'@devframes/plugin-assets': p('assets/src/index.ts'),
129+
'@devframes/plugin-assets/client-script': p('assets/src/client-script/client/index.ts'),
130+
'@devframes/plugin-assets/node': p('assets/src/node/setup.ts'),
131+
'@devframes/plugin-assets/rpc': p('assets/src/node/rpc/index.ts'),
132+
'@devframes/plugin-assets/cli': p('assets/src/node/cli.ts'),
133+
'@devframes/plugin-assets': p('assets/src/node/index.ts'),
138134
'@devframes/service-git': s('git/src/index.ts'),
139135
'@devframes/service-open': s('open/src/index.ts'),
140136
'@devframes/service-shiki': s('shiki/src/index.ts'),

‎knip.jsonc‎

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@
1919
// the default export is the conventional single-devframe import. Service
2020
// packages (`create<X>Service`) follow the same rule.
2121
"ignoreIssues": {
22+
"plugins/*/src/node/index.ts": ["duplicates"],
2223
"plugins/*/src/index.ts": ["duplicates"],
2324
"services/*/src/index.ts": ["duplicates"],
2425
// Deprecated rename aliases (old name re-exported next to its canonical
2526
// replacement, kept for back-compat until the next major): the terms-page
2627
// renames left `createDevframeClientHost` → `createDevframeClientRuntime`
2728
// and `AGENT_DISCOVERY_FILE` → `DISCOVERY_FILE` aliases behind.
2829
"packages/hub/src/client/host.ts": ["duplicates"],
29-
"plugins/data-inspector/src/inject/index.ts": ["duplicates"]
30+
"plugins/data-inspector/src/client-script/page-script/index.ts": ["duplicates"]
3031
},
3132
"workspaces": {
3233
".": {
@@ -209,10 +210,12 @@
209210
// the monorepo. Repeat the `plugins/*` entry glob (a workspace config
210211
// replaces, not merges, it).
211212
"entry": [
212-
"src/{index,cli,vite,constants,types}.ts",
213-
"src/{client,node,rpc,inject,engine,registry}/index.ts"
213+
"src/node/{index,setup,cli}.ts",
214+
"src/node/rpc/index.ts",
215+
"src/client-script/client/index.ts",
216+
"app/**/*.stories.@(ts|tsx)"
214217
],
215-
"ignoreDependencies": ["@devframes/plugin-inspect--assets"]
218+
"ignoreDependencies": ["@devframes/plugin-inspect--assets", "@devframes/vite"]
216219
},
217220
"plugins/inspect/assets-pkg": {
218221
// Assets-only package: no source, just a prebuilt `dist` produced by
@@ -225,23 +228,45 @@
225228
// so knip can't see the dev-only workspace link. A workspace config
226229
// replaces (not merges) the `plugins/*` glob's `entry`, so repeat it.
227230
"plugins/og": {
228-
"entry": ["src/{index,cli,vite,constants,types}.ts", "src/{client,node,rpc,inject,engine,registry}/index.ts"],
229-
"ignoreDependencies": ["@devframes/plugin-og--assets"]
231+
"entry": [
232+
"src/node/{index,setup,cli}.ts",
233+
"src/node/rpc/index.ts",
234+
"src/client-script/client/index.ts",
235+
"app/**/*.stories.@(ts|tsx)"
236+
],
237+
"ignoreDependencies": ["@devframes/plugin-og--assets", "@devframes/vite"]
230238
},
231239
"plugins/og/assets-pkg": { "entry": [], "project": [] },
232240
"plugins/data-inspector": {
233-
"entry": ["src/{index,cli,vite,constants,types}.ts", "src/{client,node,rpc,inject,engine,registry}/index.ts"],
234-
"ignoreDependencies": ["@devframes/plugin-data-inspector--assets"]
241+
"entry": [
242+
"src/node/{index,setup,cli}.ts",
243+
"src/node/rpc/index.ts",
244+
"src/node/{engine,registry}/index.ts",
245+
"src/client-script/client/index.ts",
246+
"src/client-script/page-script/index.ts",
247+
"app/**/*.stories.@(ts|tsx)"
248+
],
249+
"ignoreDependencies": ["@devframes/plugin-data-inspector--assets", "@devframes/vite"]
235250
},
236251
"plugins/data-inspector/assets-pkg": { "entry": [], "project": [] },
237252
"plugins/code-server": {
238-
"entry": ["src/{index,cli,vite,constants,types}.ts", "src/{client,node,rpc,inject,engine,registry}/index.ts"],
253+
"entry": [
254+
"src/node/{index,setup,cli,constants,types,vite}.ts",
255+
"src/node/rpc/index.ts",
256+
"src/client-script/client/index.ts",
257+
"app/**/*.stories.@(ts|tsx)"
258+
],
239259
"ignoreDependencies": ["@devframes/plugin-code-server--assets"]
240260
},
241261
"plugins/code-server/assets-pkg": { "entry": [], "project": [] },
242262
"plugins/assets": {
243-
"entry": ["src/{index,cli,vite,constants,types}.ts", "src/{client,node,rpc,inject,engine,registry}/index.ts"],
244-
"ignoreDependencies": ["@devframes/plugin-assets--assets"]
263+
"entry": [
264+
"src/node/{index,setup,cli,constants,types}.ts",
265+
"src/node/rpc/index.ts",
266+
"src/client-script/client/index.ts",
267+
"app/**/*.stories.@(ts|tsx)"
268+
],
269+
"ignoreDependencies": ["@devframes/plugin-assets--assets", "@devframes/vite"]
245270
},
246271
"plugins/assets/assets-pkg": { "entry": [], "project": [] },
247272
"plugins/messages": {

‎plugins/a11y/app/vite.config.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { Plugin } from 'vite'
33
import { fileURLToPath } from 'node:url'
44
import createA11yDevframe from '@devframes/plugin-a11y'
55
import { initDevframe } from 'devframe/initiate'
6+
import { resolveBasePath } from 'devframe/internal'
67
import UnoCSS from 'unocss/vite'
78
import { defineConfig } from 'vite'
89
import solid from 'vite-plugin-solid'
@@ -21,7 +22,7 @@ function a11yDevBridge(): Plugin {
2122
apply: 'serve',
2223
configureServer(server) {
2324
const instance = initDevframe(devframe, {
24-
base: devframe.basePath,
25+
base: resolveBasePath(devframe, 'hosted'),
2526
distDir: false,
2627
server: server.httpServer as Server,
2728
auth: false,
@@ -42,7 +43,7 @@ function a11yDevBridge(): Plugin {
4243
* node side there with HMR.
4344
*/
4445
export default defineConfig(({ command }) => ({
45-
base: command === 'serve' ? createA11yDevframe().basePath : './',
46+
base: command === 'serve' ? resolveBasePath(createA11yDevframe(), 'hosted') : './',
4647
root: fileURLToPath(new URL('.', import.meta.url)),
4748
resolve: { alias },
4849
plugins: [solid(), UnoCSS(), a11yDevBridge()],

‎plugins/assets/.storybook/main.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { mergeConfig } from 'vite'
55
import { alias } from '../../../alias'
66

77
const config: StorybookConfig = {
8-
stories: ['../src/spa/app/**/*.stories.@(ts|tsx)'],
8+
stories: ['../{src,app}/**/*.stories.@(ts)'],
99
addons: ['@storybook/addon-docs', '@storybook/addon-a11y'],
1010
framework: {
1111
name: '@storybook/vue3-vite',
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import type { AssetInfo, AssetType } from '../../types'
2+
import type { AssetInfo, AssetType } from '@devframes/plugin-assets/client-script'
33
import ActionButton from '@antfu/design/components/Action/ActionButton.vue'
44
import FormTextInput from '@antfu/design/components/Form/FormTextInput.vue'
55
import OverlayModal from '@antfu/design/components/Overlay/OverlayModal.vue'

plugins/assets/src/spa/app/components/AssetDetails.stories.ts renamed to plugins/assets/app/app/components/AssetDetails.stories.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import type { AssetInfo } from '@devframes/plugin-assets/client-script'
12
import type { Meta, StoryObj } from '@storybook/vue3-vite'
2-
import type { AssetInfo } from '../../../types'
33
import AssetDetails from './AssetDetails.vue'
44

55
const SAMPLE_SVG = `data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300"><rect width="400" height="300" fill="#3a6a45"/></svg>')}`

plugins/assets/src/spa/app/components/AssetDetails.vue renamed to plugins/assets/app/app/components/AssetDetails.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script setup lang="ts">
2+
import type { AssetImageMeta, AssetInfo } from '@devframes/plugin-assets/client-script'
23
// Types-only: loads service-open's RPC/scope augmentations so the scoped
34
// `open.rpc.call('open-in-editor', …)` below is fully typed.
45
import type {} from '@devframes/service-open'
56
import type { DevframeRpcClient } from 'devframe/client'
6-
import type { AssetImageMeta, AssetInfo } from '../../../types'
77
import ActionButton from '@antfu/design/components/Action/ActionButton.vue'
88
import ActionIconButton from '@antfu/design/components/Action/ActionIconButton.vue'
99
import FormTextInput from '@antfu/design/components/Form/FormTextInput.vue'

plugins/assets/src/spa/app/components/AssetGrid.vue renamed to plugins/assets/app/app/components/AssetGrid.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import type { AssetInfo } from '../../../types'
2+
import type { AssetInfo } from '@devframes/plugin-assets/client-script'
33
import { computed } from 'vue'
44
import { groupByFolder } from '../utils/tree'
55
import AssetGridItem from './AssetGridItem.vue'

plugins/assets/src/spa/app/components/AssetGridItem.stories.ts renamed to plugins/assets/app/app/components/AssetGridItem.stories.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import type { AssetInfo } from '@devframes/plugin-assets/client-script'
12
import type { Meta, StoryObj } from '@storybook/vue3-vite'
2-
import type { AssetInfo } from '../../../types'
33
import AssetGridItem from './AssetGridItem.vue'
44

55
const SAMPLE_SVG = `data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><rect width="200" height="200" fill="#3a6a45"/></svg>')}`

plugins/assets/src/spa/app/components/AssetGridItem.vue renamed to plugins/assets/app/app/components/AssetGridItem.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import type { AssetInfo } from '../../../types'
2+
import type { AssetInfo } from '@devframes/plugin-assets/client-script'
33
import FormCheckbox from '@antfu/design/components/Form/FormCheckbox.vue'
44
import AssetPreview from './AssetPreview.vue'
55

0 commit comments

Comments
 (0)