@devframes/plugin-data-检查器
交互检查服务器侧的活式对象 。 其他发展框架和主机框架登记册 数据来源;工作台作曲 乔拉 (在拥有对象的进程中执行),使正常化的结果产生 发现.js 以类型徽章、形状面板、保存查询和可共享的 URL 状态构建视图。 深图一次扩展一个关卡( S)load deeper 按要求获取每个子树,一个可选的传票人每N秒重新运行一次查询,一个工具栏提供扩展/collaps-all并复制.
登记数据来源
登记处 进程全球: 从任何地方登记,在变形板挂起之前或之后:
import { registerDataSource } from '@devframes/plugin-data-inspector/registry'
registerDataSource({
id: 'my-plugin:state',
title: 'My plugin state',
description: 'The live state store',
data: () => store, // value or (async) factory; `static: true` memoizes
queries: [
{ title: 'Active entries', query: 'entries.mapEntries()' }
],
})
偏好零套件依赖的 Devframes 通过已键入上下文服务消耗同一商店 :
ctx.services.whenAvailable('devframes:plugin:data-inspector:sources', (sources) => {
sources.register({
id: 'my-plugin:state',
title: 'My state',
data: () => store
})
})
可证明来源
来源选择使用 writable: true: 在根视图上($),每个值会长出一个编辑负担,在您设置一个值(字符串 / 数字 / 布尔 / 无效 / 未定义 / JSON), 添加或删除条目, 或重命名密钥时打开一个侧面板; 变量被应用 位于活动对象的位置 通过 write RPC (中文(简体) ). 只读保留默认值; static: true 来源是被回忆的快照,并且总是只读(宣布两个报告) DP_DATA_INSPECTOR_0004) (中文(简体) ).
registerDataSource 返回控点; 调用 notifyChanged() 当数据在检查员之外更改时, 将视图重新连接运行, 或者通过 subscribe数字 :
const handle = registerDataSource({
id: 'my-plugin:state',
title: 'My plugin state',
data: () => store,
writable: true, // opt-in: the inspector may mutate the live object
subscribe: (notify) => { // optional: push the source's own change signal
store.on('change', notify)
return () => store.off('change', notify)
},
})
handle.notifyChanged() // or notify imperatively
挂载
// the default export is the factory; call it for an instance:
import createDataInspectorDevframe from '@devframes/plugin-data-inspector'
// Vite
import { devframeVite } from '@devframes/vite/single'
devframeVite(createDataInspectorDevframe())
独立的CLI
pnpx @devframes/plugin-data-inspector stats.json trace.jsonl # inspect local data files
pnpx @devframes/plugin-data-inspector build stats.json # self-contained static export
pnpx @devframes/plugin-data-inspector attach # attach to a process running the inject entry
静态导出嵌入了数据集并运行相同的查询引擎客户端,因此所保存的食谱保持可移植性.
附加到另一个节点进程
import { exposeDataInspector } from '@devframes/plugin-data-inspector/inject'
// pass sources inline, or register them separately beforehand
await exposeDataInspector({
sources: [
{
id: 'app:store',
title: 'App store',
data: () => store
}
],
})
或零代码更改:
DEVFRAME_DATA_INSPECTOR=1 node --import @devframes/plugin-data-inspector/inject server.js
在零码路径上,没有地方可以呼叫 registerDataSource自动登记 a globalThis 来源:将您想要检查的内容指定到全局对象上( q)globalThis.store = store)和查询其活性. 选择退出 DEVFRAME_DATA_INSPECTOR_GLOBAL=0。 。 。 .
插入条目绑定 127.0.0.1,需要defraft的信任握手 与每个运行的符号默认,并广告它的终点在 node_modules/.data-inspector/discovery.json,哪个 pnpx @devframes/plugin-data-inspector attach 自动取出.
[尖叫声] 一个连接的检查员对活的物体进行eval级的jora查询:查询可以引用可达到的函数作为自己的属性和取火器. 将注射端点像调试器端口一样处理:保持回回转并保持认证.
已保存的查询
食谱( R){ query, title?, description?, ...filters }(d) 坚持以两种方式进行: 工作空间 (承诺, getStorageDir('workspace')/data-inspector/queries.json(与团队分享) 项目 (逐笔离职 node_modules) (中文(简体) ).