@farris/api-wiki-toolchain 1.0.0

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.
Files changed (40) hide show
  1. package/dist/adapters/base.d.ts +17 -0
  2. package/dist/adapters/component.d.ts +4 -0
  3. package/dist/adapters/rest.d.ts +4 -0
  4. package/dist/adapters/sdk.d.ts +4 -0
  5. package/dist/bin/aw-cli.d.ts +2 -0
  6. package/dist/bin/aw-cli.js +889 -0
  7. package/dist/commands/adapt.d.ts +8 -0
  8. package/dist/commands/generate-catalog.d.ts +4 -0
  9. package/dist/commands/generate-docs.d.ts +6 -0
  10. package/dist/commands/merge.d.ts +5 -0
  11. package/dist/commands/validate.d.ts +4 -0
  12. package/dist/extractors/vue-extractor.d.ts +6 -0
  13. package/dist/generator/doc-generator.d.ts +27 -0
  14. package/dist/index.d.ts +5 -0
  15. package/dist/test-catalog/catalog.json +17 -0
  16. package/dist/test-catalog/dest-asset/1.1.0/index.json +1 -0
  17. package/dist/test-catalog/dest-asset/catalog.json +27 -0
  18. package/dist/test-catalog/dest-asset/versions.json +17 -0
  19. package/dist/test-catalog/meta/asset-a/1.0.0/index.json +1 -0
  20. package/dist/test-catalog/meta/asset-a/catalog.json +1 -0
  21. package/dist/test-catalog/meta/asset-a/versions.json +1 -0
  22. package/dist/test-catalog/meta/asset-b/catalog.json +1 -0
  23. package/dist/test-catalog/meta/asset-b/versions.json +1 -0
  24. package/dist/test-catalog/meta/catalog.json +16 -0
  25. package/dist/test-catalog/meta/search-index/asset-a.json +12 -0
  26. package/dist/test-catalog/search-index/asset-a.json +12 -0
  27. package/dist/test-catalog/src-asset/catalog.json +1 -0
  28. package/dist/test-catalog/src-asset/index.json +1 -0
  29. package/dist/test-output/comp-adapted/index.json +21 -0
  30. package/dist/test-output/comp-adapted/view.json +34 -0
  31. package/dist/test-output/comp-native.json +1 -0
  32. package/dist/test-output/rest-adapted/index.json +22 -0
  33. package/dist/test-output/rest-native.json +1 -0
  34. package/dist/test-output/sdk-adapted/index.json +40 -0
  35. package/dist/test-output/sdk-native.json +1 -0
  36. package/dist/test-validate/1.0.0/index.json +1 -0
  37. package/dist/test-validate/1.0.0-SNAPSHOT/index.json +1 -0
  38. package/dist/test-validate/1.0.0-strict/index.json +1 -0
  39. package/package.json +38 -0
  40. package/resources/javadoc-doclet.jar +0 -0
@@ -0,0 +1,8 @@
1
+ export interface AdaptOptions {
2
+ type: 'rest' | 'grpc' | 'graphql' | 'async' | 'component' | 'sdk';
3
+ input: string;
4
+ outputDir: string;
5
+ asset: string;
6
+ version: string;
7
+ }
8
+ export declare function adaptCommand(options: AdaptOptions): Promise<void>;
@@ -0,0 +1,4 @@
1
+ export interface GenerateCatalogOptions {
2
+ metaDir: string;
3
+ }
4
+ export declare function generateCatalogCommand(options: GenerateCatalogOptions): Promise<void>;
@@ -0,0 +1,6 @@
1
+ export interface GenerateDocsOptions {
2
+ dir: string;
3
+ layout?: string;
4
+ outputDir?: string;
5
+ }
6
+ export declare function generateDocsCommand(options: GenerateDocsOptions): Promise<void>;
@@ -0,0 +1,5 @@
1
+ export interface MergeOptions {
2
+ srcDir: string;
3
+ destDir: string;
4
+ }
5
+ export declare function mergeCommand(options: MergeOptions): Promise<void>;
@@ -0,0 +1,4 @@
1
+ export interface ValidateOptions {
2
+ dir: string;
3
+ }
4
+ export declare function validateCommand(options: ValidateOptions): Promise<void>;
@@ -0,0 +1,6 @@
1
+ export interface VueExtractorOptions {
2
+ tsconfigPath: string;
3
+ componentFiles: string[];
4
+ outputPath: string;
5
+ }
6
+ export declare function extractVueComponents(options: VueExtractorOptions): Promise<void>;
@@ -0,0 +1,27 @@
1
+ export interface LayoutColumn {
2
+ name: string;
3
+ key: string;
4
+ formatter?: 'code' | 'boolean' | 'badge' | 'link';
5
+ }
6
+ export interface LayoutSection {
7
+ id: string;
8
+ title: string;
9
+ type: 'text' | 'code_block' | 'table';
10
+ source?: string;
11
+ empty_placeholder?: string;
12
+ language?: string;
13
+ template?: string;
14
+ columns?: LayoutColumn[];
15
+ }
16
+ export interface LayoutDescriptor {
17
+ title?: string;
18
+ sections: LayoutSection[];
19
+ }
20
+ export declare class DocGenerator {
21
+ private layout;
22
+ constructor(layoutYaml?: string);
23
+ generate(data: any): string;
24
+ private renderTable;
25
+ private formatValue;
26
+ private getDefaultLayout;
27
+ }
@@ -0,0 +1,5 @@
1
+ export * from './commands/adapt.js';
2
+ export * from './commands/validate.js';
3
+ export * from './commands/generate-docs.js';
4
+ export * from './commands/merge.js';
5
+ export * from './commands/generate-catalog.js';
@@ -0,0 +1,17 @@
1
+ {
2
+ "assets": [
3
+ {
4
+ "name": "asset-a",
5
+ "asset_type": "rest",
6
+ "title": "Asset A",
7
+ "summary": "",
8
+ "versions": [
9
+ "1.0.0"
10
+ ],
11
+ "visibility": "internal",
12
+ "coordinates": {},
13
+ "relations": []
14
+ }
15
+ ],
16
+ "last_updated": "2026-07-09T12:18:11.592Z"
17
+ }
@@ -0,0 +1 @@
1
+ [{"urn":"rest:my-asset/GET//test","kind":"endpoint","doc_md":"docs/test.md"}]
@@ -0,0 +1,27 @@
1
+ {
2
+ "urn": "asset:my-asset",
3
+ "type": "rest",
4
+ "name": "新标题",
5
+ "description": "这是一个非常长且符合至少三十个字规则的合格新描述,用于测试合并功能。",
6
+ "owner": "team-x",
7
+ "visibility": "internal",
8
+ "lifecycle": "production",
9
+ "versions": [
10
+ "1.0.0",
11
+ "1.1.0"
12
+ ],
13
+ "coordinates": [
14
+ {
15
+ "type": "github",
16
+ "version": "1.0.0",
17
+ "repo": "https://github.com/my-org/my-asset"
18
+ }
19
+ ],
20
+ "relations": [
21
+ {
22
+ "type": "uses",
23
+ "target": "sdk:java:cache-lib"
24
+ }
25
+ ],
26
+ "deployments": {}
27
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "versions": [
3
+ "1.0.0",
4
+ "1.1.0"
5
+ ],
6
+ "latest": "1.1.0",
7
+ "assets": {
8
+ "1.0.0": {
9
+ "index.json": true,
10
+ "view.json": false
11
+ },
12
+ "1.1.0": {
13
+ "index.json": true,
14
+ "view.json": false
15
+ }
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ [{"urn":"rest:asset-a/GET//hello","name":"hello","title":"Hello Api","signature":"GET /hello","summary":"test"}]
@@ -0,0 +1 @@
1
+ {"urn":"asset:asset-a","type":"rest","name":"Asset A","description":"这是一个非常长且符合至少三十个字规则的合格新描述,用于测试合并功能。","owner":"team-a","visibility":"internal"}
@@ -0,0 +1 @@
1
+ {"versions":["1.0.0"],"latest":"1.0.0","assets":{"1.0.0":{"index.json":true}}}
@@ -0,0 +1 @@
1
+ {"urn":"asset:asset-b","type":"sdk","name":"Asset B","description":"这是一个非常长且符合至少三十个字规则的合格新描述,用于测试合并功能。","owner":"team-b","visibility":"restricted"}
@@ -0,0 +1 @@
1
+ {"versions":["1.0.0"],"latest":"1.0.0","assets":{"1.0.0":{"index.json":true}}}
@@ -0,0 +1,16 @@
1
+ {
2
+ "assets": [
3
+ {
4
+ "urn": "asset:asset-a",
5
+ "type": "rest",
6
+ "name": "Asset A",
7
+ "description": "这是一个非常长且符合至少三十个字规则的合格新描述,用于测试合并功能。",
8
+ "owner": "team-a",
9
+ "visibility": "internal",
10
+ "lifecycle": "production",
11
+ "latest": "1.0.0",
12
+ "dir": "asset-a"
13
+ }
14
+ ],
15
+ "updated_at": "2026-07-11T03:15:12.419Z"
16
+ }
@@ -0,0 +1,12 @@
1
+ [
2
+ {
3
+ "urn": "rest:asset-a/GET//hello",
4
+ "name": "hello",
5
+ "title": "Hello Api",
6
+ "signature": "GET /hello",
7
+ "summary": "test",
8
+ "tags": [],
9
+ "deprecated": false,
10
+ "version": "1.0.0"
11
+ }
12
+ ]
@@ -0,0 +1,12 @@
1
+ [
2
+ {
3
+ "urn": "rest:asset-a/GET//hello",
4
+ "name": "hello",
5
+ "title": "Hello Api",
6
+ "signature": "GET /hello",
7
+ "summary": "test",
8
+ "tags": [],
9
+ "deprecated": false,
10
+ "version": "1.0.0"
11
+ }
12
+ ]
@@ -0,0 +1 @@
1
+ {"urn":"asset:my-asset","type":"rest","versions":["1.1.0"],"name":"新标题","description":"这是一个非常长且符合至少三十个字规则的合格新描述,用于测试合并功能。","owner":"team-x","visibility":"internal"}
@@ -0,0 +1 @@
1
+ [{"urn":"rest:my-asset/GET//test","kind":"endpoint","doc_md":"docs/test.md"}]
@@ -0,0 +1,21 @@
1
+ [
2
+ {
3
+ "urn": "component:my-comp-lib/button",
4
+ "asset": "my-comp-lib",
5
+ "asset_type": "component",
6
+ "kind": "component",
7
+ "name": "button",
8
+ "title": "button",
9
+ "signature": "<button />",
10
+ "summary": "",
11
+ "version": "1.0.0",
12
+ "deprecated": false,
13
+ "pointer": "#/components/button",
14
+ "doc_md": "docs/button.md",
15
+ "provenance": {
16
+ "tier": "tool",
17
+ "tool": "vue-component-meta",
18
+ "confidence": "high"
19
+ }
20
+ }
21
+ ]
@@ -0,0 +1,34 @@
1
+ {
2
+ "component": "button",
3
+ "framework": "vue",
4
+ "version": "1.0.0",
5
+ "urn": "component:my-comp-lib/button",
6
+ "overview": "## button\n前端 Vue 组件。",
7
+ "examples": [],
8
+ "props": [
9
+ {
10
+ "name": "disabled",
11
+ "type": "boolean",
12
+ "default": "false",
13
+ "required": false,
14
+ "description": "是否禁用",
15
+ "deprecated": false
16
+ }
17
+ ],
18
+ "events": [
19
+ {
20
+ "name": "click",
21
+ "payload": "(e: MouseEvent) => void",
22
+ "description": "点击触发"
23
+ }
24
+ ],
25
+ "slots": [
26
+ {
27
+ "name": "default",
28
+ "scoped_props": "any",
29
+ "description": "默认内容"
30
+ }
31
+ ],
32
+ "methods": [],
33
+ "css_vars": []
34
+ }
@@ -0,0 +1 @@
1
+ {"button":{"filePath":"components/button/button.tsx","components":{"default":{"props":[{"name":"disabled","type":"boolean","default":"false","required":false,"description":"是否禁用"}],"events":[{"name":"click","type":"(e: MouseEvent) => void","description":"点击触发"}],"slots":[{"name":"default","type":"any","description":"默认内容"}],"exposed":[]}}}}
@@ -0,0 +1,22 @@
1
+ [
2
+ {
3
+ "urn": "rest:my-rest-service/GET//users/{id}",
4
+ "asset": "my-rest-service",
5
+ "asset_type": "rest",
6
+ "kind": "endpoint",
7
+ "name": "getUserById",
8
+ "title": "获取用户",
9
+ "signature": "GET /users/{id}",
10
+ "summary": "根据 ID 获取用户详情",
11
+ "tags": [],
12
+ "version": "1.0.0",
13
+ "deprecated": false,
14
+ "pointer": "#/paths/~1users~1{id}/get",
15
+ "doc_md": "docs/get-users-id.md",
16
+ "provenance": {
17
+ "tier": "tool",
18
+ "tool": "openapi-spec@3.0.1",
19
+ "confidence": "high"
20
+ }
21
+ }
22
+ ]
@@ -0,0 +1 @@
1
+ {"openapi":"3.0.1","paths":{"/users/{id}":{"get":{"summary":"获取用户","description":"根据 ID 获取用户详情","operationId":"getUserById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"成功"}}}}}}
@@ -0,0 +1,40 @@
1
+ [
2
+ {
3
+ "urn": "sdk:java:my-sdk-lib/com.inspures.caf.CacheService",
4
+ "asset": "my-sdk-lib",
5
+ "asset_type": "sdk",
6
+ "kind": "class",
7
+ "name": "CacheService",
8
+ "title": "缓存服务接口",
9
+ "signature": "public interface CacheService",
10
+ "summary": "缓存服务接口",
11
+ "version": "1.0.0",
12
+ "deprecated": false,
13
+ "pointer": "#/classes/com.inspures.caf.CacheService",
14
+ "doc_md": "docs/com.inspures.caf.CacheService.md",
15
+ "provenance": {
16
+ "tier": "tool",
17
+ "tool": "javadoc-doclet",
18
+ "confidence": "high"
19
+ }
20
+ },
21
+ {
22
+ "urn": "sdk:java:my-sdk-lib/com.inspures.caf.CacheService#get(java.lang.String)",
23
+ "asset": "my-sdk-lib",
24
+ "asset_type": "sdk",
25
+ "kind": "method",
26
+ "name": "get",
27
+ "title": "根据 Key 获取缓存",
28
+ "signature": "String get(String key)",
29
+ "summary": "根据 Key 获取缓存",
30
+ "version": "1.0.0",
31
+ "deprecated": false,
32
+ "pointer": "#/classes/com.inspures.caf.CacheService/methods/get(java.lang.String)",
33
+ "doc_md": "docs/com.inspures.caf.CacheService.md#get",
34
+ "provenance": {
35
+ "tier": "tool",
36
+ "tool": "javadoc-doclet",
37
+ "confidence": "high"
38
+ }
39
+ }
40
+ ]
@@ -0,0 +1 @@
1
+ {"classes":{"com.inspures.caf.CacheService":{"name":"CacheService","fullName":"com.inspures.caf.CacheService","kind":"interface","signature":"public interface CacheService","summary":"缓存服务接口","description":"提供基础的缓存读写能力","methods":{"get(java.lang.String)":{"name":"get","signature":"String get(String key)","returnType":"java.lang.String","returnDescription":"缓存的值","summary":"根据 Key 获取缓存","description":"根据 Key 获取缓存,如果没有则返回 null","parameters":[{"name":"key","type":"java.lang.String","description":"缓存键"}],"isDeprecated":false}}}}}
@@ -0,0 +1 @@
1
+ [{"urn":"rest:my-asset/GET//ok-path","asset":"my-asset","asset_type":"rest","kind":"endpoint","name":"ok","title":"Ok Title","signature":"GET /ok-path","summary":"这是一个非常长且符合至少三十个字规则的合格摘要说明,以便于大模型检索。","version":"1.0.0","deprecated":false,"pointer":"#/paths/~1ok-path/get","doc_md":"docs/ok.md","reviewed_by":"auditor","provenance":{"tier":"tool","tool":"test","confidence":"high"}}]
@@ -0,0 +1 @@
1
+ [{"urn":"rest:my-asset/GET//short","asset":"my-asset","asset_type":"rest","kind":"endpoint","name":"short","title":"Short Title","signature":"GET /short","summary":"太短了","version":"1.0.0","deprecated":false,"pointer":"#/paths/~1short/get","doc_md":"docs/short.md","reviewed_by":"auditor","provenance":{"tier":"tool","tool":"test","confidence":"high"}}]
@@ -0,0 +1 @@
1
+ [{"urn":"rest:my-asset/GET//short","asset":"my-asset","asset_type":"rest","kind":"endpoint","name":"short","title":"Short Title","signature":"GET /short","summary":"太短了","version":"1.0.0","deprecated":false,"pointer":"#/paths/~1short/get","doc_md":"docs/short.md","reviewed_by":"auditor","provenance":{"tier":"tool","tool":"test","confidence":"high"}}]
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@farris/api-wiki-toolchain",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "files": [
6
+ "dist",
7
+ "resources"
8
+ ],
9
+ "bin": {
10
+ "aw-cli": "./dist/bin/aw-cli.js"
11
+ },
12
+ "main": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "scripts": {
15
+ "build": "esbuild src/bin/aw-cli.ts --bundle --platform=node --format=esm --packages=external --outfile=dist/bin/aw-cli.js && tsc --emitDeclarationOnly && mvn -f ../javadoc-doclet/pom.xml clean package && node -e \"const fs = require('fs-extra'); fs.ensureDirSync('resources'); fs.copySync('../javadoc-doclet/target/javadoc-doclet-1.0.0.jar', 'resources/javadoc-doclet.jar');\"",
16
+ "test": "vitest run"
17
+ },
18
+ "dependencies": {
19
+ "@farris/api-wiki-contract-schema": "workspace:*",
20
+ "ajv": "^8.17.1",
21
+ "commander": "^12.1.0",
22
+ "ejs": "^3.1.10",
23
+ "fs-extra": "^11.3.0",
24
+ "js-yaml": "^4.1.0",
25
+ "vue": "^3.4.21",
26
+ "vue-component-meta": "^1.8.27"
27
+ },
28
+ "devDependencies": {
29
+ "@types/ejs": "^3.1.5",
30
+ "@types/fs-extra": "^11.0.4",
31
+ "@types/js-yaml": "^4.0.9",
32
+ "@types/node": "^18.19.121",
33
+ "esbuild": "^0.24.0",
34
+ "tsx": "^4.22.4",
35
+ "typescript": "^5.6.0",
36
+ "vitest": "^2.1.8"
37
+ }
38
+ }
Binary file