{"_id":"@composy/router-vanilla","name":"@composy/router-vanilla","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@composy/router-vanilla","type":"module","version":"0.0.1","description":"Vanilla JS router adapter - DOM outlet + view system, part of LDesign Router","author":{"name":"ldesign"},"license":"MIT","homepage":"https://gitee.com/ldesign-v1/ldesign","repository":{"directory":"packages/router/packages/vanilla","type":"git","url":"https://gitee.com/ldesign-v1/ldesign.git"},"bugs":{"url":"https://gitee.com/ldesign-v1/ldesign/issues"},"keywords":["dom","outlet","router","typescript","vanilla"],"sideEffects":["**/*.css"],"exports":{".":{"types":"./es/index.d.ts","import":"./es/index.js","require":"./lib/index.cjs","default":"./es/index.js"},"./composables":{"types":"./es/composables/index.d.ts","import":"./es/composables/index.js","require":"./lib/composables/index.cjs","default":"./es/composables/index.js"},"./composables/*":{"types":"./es/composables/*.d.ts","import":"./es/composables/*.js","require":"./lib/composables/*.cjs","default":"./es/composables/*.js"},"./helpers":{"types":"./es/helpers/index.d.ts","import":"./es/helpers/index.js","require":"./lib/helpers/index.cjs","default":"./es/helpers/index.js"},"./helpers/*":{"types":"./es/helpers/*.d.ts","import":"./es/helpers/*.js","require":"./lib/helpers/*.cjs","default":"./es/helpers/*.js"},"./outlet":{"types":"./es/outlet/index.d.ts","import":"./es/outlet/index.js","require":"./lib/outlet/index.cjs","default":"./es/outlet/index.js"},"./outlet/*":{"types":"./es/outlet/*.d.ts","import":"./es/outlet/*.js","require":"./lib/outlet/*.cjs","default":"./es/outlet/*.js"},"./plugin":{"types":"./es/plugin/index.d.ts","import":"./es/plugin/index.js","require":"./lib/plugin/index.cjs","default":"./es/plugin/index.js"},"./plugin/*":{"types":"./es/plugin/*.d.ts","import":"./es/plugin/*.js","require":"./lib/plugin/*.cjs","default":"./es/plugin/*.js"},"./view":{"types":"./es/view/index.d.ts","import":"./es/view/index.js","require":"./lib/view/index.cjs","default":"./es/view/index.js"},"./view/*":{"types":"./es/view/*.d.ts","import":"./es/view/*.js","require":"./lib/view/*.cjs","default":"./es/view/*.js"},"./styles/transitions.css":"./es/styles/transitions.css","./package.json":"./package.json"},"main":"./lib/index.cjs","module":"./es/index.js","unpkg":"./dist/index.min.js","jsdelivr":"./dist/index.min.js","types":"./es/index.d.ts","scripts":{"build":"ldesign-builder build","build:watch":"ldesign-builder build --watch","dev":"ldesign-builder build --watch","clean":"rimraf es esm lib dist coverage .tsbuildinfo","lint":"eslint . --cache","lint:check":"eslint . --cache --max-warnings 0","lint:fix":"eslint . --cache --fix","test":"ltesting run:unit","test:run":"ltesting run:unit","type-check":"tsc -p tsconfig.typecheck.json --noEmit","type-check:watch":"tsc -p tsconfig.typecheck.json --noEmit --watch","test:watch":"ltesting run:unit --watch","test:coverage":"ltesting run:unit --coverage","test:changed":"ltesting run:unit --changed","test:failed":"ltesting run:unit --failed","test:ui":"ltesting dashboard"},"peerDependencies":{"@composy/engine-vanilla":"^0.0.1"},"peerDependenciesMeta":{"@composy/engine-vanilla":{"optional":true}},"dependencies":{"@composy/router-core":"^0.0.1"},"devDependencies":{"@antfu/eslint-config":"9.1.0","@composy/builder":"^0.0.1","@composy/engine-vanilla":"^0.0.1","@composy/testing":"^0.0.1","@types/node":"26.1.1","eslint":"10.7.0","jsdom":"29.1.1","rimraf":"^6.1.3","typescript":"5.9.3"},"typings":"./es/index.d.ts","browser":"./dist/index.js","_id":"@composy/router-vanilla@0.0.1","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-c6jHBwzfBXc8VfHxgdBBtXQmY+Lr31itqB1wr4KQwXn6ORw838etK/0idI/4JBYUZnz3djJzgVcM6EzJH0TiwQ==","shasum":"68e31c0e20b8074b622064cfa8936c410d53f733","tarball":"https://registry.npmjs.org/@composy/router-vanilla/-/router-vanilla-0.0.1.tgz","fileCount":115,"unpackedSize":592792,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE/93i6hTpH/MvaFwroswMbkRb05J6tfkf9hdDvOfwWuAiAAv6F4uUmRDEz3E3Vhdn/8sFrZHwYI9piwQ2wIOrUmCw=="}]},"_npmUser":{"name":"swimly","email":"979741120@qq.com"},"directories":{},"maintainers":[{"name":"swimly","email":"979741120@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/router-vanilla_0.0.1_1786949613300_0.637032104668432"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-17T06:53:32.703Z","0.0.1":"2026-08-17T06:53:33.440Z","modified":"2026-08-17T06:53:34.009Z"},"maintainers":[{"name":"swimly","email":"979741120@qq.com"}],"description":"Vanilla JS router adapter - DOM outlet + view system, part of LDesign Router","homepage":"https://gitee.com/ldesign-v1/ldesign","keywords":["dom","outlet","router","typescript","vanilla"],"repository":{"directory":"packages/router/packages/vanilla","type":"git","url":"https://gitee.com/ldesign-v1/ldesign.git"},"author":{"name":"ldesign"},"bugs":{"url":"https://gitee.com/ldesign-v1/ldesign/issues"},"license":"MIT","readme":"# @composy/router-vanilla\n\n> 面向 Vanilla JS 与 `@composy/engine-vanilla` 的路由适配层，负责把 `@composy/router-core`\n> 的能力接到 DOM Outlet、视图注册表和引擎服务容器中。\n\n## 包定位\n\n- **核心层不放这里**：路径匹配、守卫、中间件、history、缓存等框架无关能力仍来自\n  `@composy/router-core`。\n- **本包负责**：\n  - `createVanillaRouterPlugin()`\n  - `OutletManager`\n  - `ViewRegistry`\n  - helper 访问器\n  - composables 风格的快捷 API\n\n## 安装\n\n```bash\npnpm add @composy/router-vanilla @composy/router-core @composy/engine-vanilla\n```\n\n## 快速开始\n\n```typescript\nimport { createVanillaEngine } from '@composy/engine-vanilla'\nimport { createVanillaRouterPlugin, getRouter } from '@composy/router-vanilla'\nimport '@composy/router-vanilla/styles/transitions.css'\n\nconst engine = createVanillaEngine({\n  plugins: [\n    createVanillaRouterPlugin({\n      mode: 'hash',\n      outlet: '#router-outlet',\n      routes: [\n        { path: '/', component: HomeView },\n        {\n          path: '/settings',\n          component: SettingsLayoutView,\n          children: [\n            { path: 'profile', component: SettingsProfileView },\n            { path: 'security', component: SettingsSecurityView },\n          ],\n        },\n      ],\n    }),\n  ],\n})\n\nawait engine.mount('#app')\n\nconst router = getRouter(engine)\nawait router.push({ path: '/about' })\n```\n\n## 主要能力\n\n### `createVanillaRouterPlugin()`\n\n- 创建适用于 `@composy/engine-vanilla` 的路由插件。\n- 自动创建 history、router、view registry 与 outlet manager。\n- 默认启用与 `@composy/router-vue/styles/transitions.css` 同名的 `route-transition-*`\n  切换动画；需要样式时引入 `@composy/router-vanilla/styles/transitions.css`。\n- 安装后会在容器中注册：\n  - `router`\n  - `routerOutlet`\n  - `viewRegistry`\n\n### `ViewRegistry`\n\n- 管理路由与视图组件的映射关系。\n- 负责嵌套路由视图树的注册与查询；父视图内放置 `<div data-router-outlet></div>` 后即可渲染子路由。\n\n### `OutletManager`\n\n- 管理 DOM outlet 的注册和渲染。\n- 支持根级过渡动画和子路由过渡动画，动画 class 协议与 Vue 适配层保持一致。\n- 负责在导航结束后把目标视图渲染到对应 outlet。\n\n### Helpers\n\n- `getRouter(engine)`\n- `getOutlet(engine)`\n- `getViewRegistry(engine)`\n\n### Composables 风格 API\n\n- `useRouter()`\n- `useRoute()`\n- `navigate()`\n- `useHead()`\n- `createAuthGuard()`\n\n## 公开导出\n\n### 插件\n\n- `createVanillaRouterPlugin`\n- `VanillaRouterConfig`\n\n### 视图与 Outlet\n\n- `ViewRegistry`\n- `OutletManager`\n- `RouteMeta`\n- `OutletOptions`\n\n### Helpers 与 Composables\n\n- `getRouter`\n- `getOutlet`\n- `getViewRegistry`\n- `useRouter`\n- `useRoute`\n- `navigate`\n- `useHead`\n- `createAuthGuard`\n\n## 依赖关系\n\n- **运行时必需**：`@composy/router-core`\n- **运行时可选但推荐**：`@composy/engine-vanilla`\n- 如果不通过 engine 使用，就不需要依赖本包的插件与 helper 层。\n\n## 构建与校验\n\n在 `packages/router/packages/vanilla` 目录下：\n\n```bash\npnpm build\npnpm type-check\npnpm test\n```\n\n## License\n\nMIT © LDesign Team\n","readmeFilename":"README.md","_rev":"1-f40732112f1a73f09e7990683ac1588f"}