35 Commits

Author SHA1 Message Date
322741e00c Document npm registry endpoints and auth gotchas
All checks were successful
continuous-integration/drone/push Build is passing
Add the exact pip/npm registry endpoints and secret names, the
scope-scoped (not global) registry requirement given Verdaccio's missing
uplink, the host-scoped _auth rule, the per-item Drone shell caveat, and
the Verdaccio storage uid/permissions gotcha behind the confusing
"404 no such package available" error on publish.
2026-10-21 01:31:07 +05:30
da1e46a921 Scope npm registry in drone template to @aetoskia
The registry was set globally (
egistry=...), which forced all public
transitive deps through the private Verdaccio. Verdaccio has no uplink,
so
pm install 404'd on public packages. Scope the registry to
@aetoskia:registry=... so public deps resolve from npmjs and only
@aetoskia/* go to the private registry.
2026-10-21 01:29:00 +05:30
08a9983984 Fix npm .npmrc: fold NPM_HOST into the same shell as its use
Drone runs each command list item in a separate shell, so a
standalone NPM_HOST= line is empty when the next item references it,
writing //:_auth= (wrong host) and causing a registry 401. Compute
NPM_HOST in the same | block that writes .npmrc.
2026-10-21 01:09:23 +05:30
e1e5daa30a Fix npm registry auth: use scoped //host/:_auth in .npmrc
npm rejects a bare _auth key (ERR_INVALID_AUTH) against a private
registry; derive the host from NPM_REPO_URL and write
//<host>/:_auth=<base64> instead.
2026-10-21 01:03:04 +05:30
5a1204fbcb Add npm backfill pipeline, shared htpasswd registry auth docs
All checks were successful
continuous-integration/drone/push Build is passing
- drone npm template gains backfill-npm-from-tags (mirrors PyPI)
- document the shared /auth/htpasswd credential model (npm + PyPI +
  docker) and Verdaccio's bcrypt requirement
- point doc-weaver source/path at ../react/doc-weaver
2026-10-21 00:57:08 +05:30
7f951f3fe7 fix: repair cp1252-mangled em-dashes and ellipsis in the reference-app wiki
All checks were successful
continuous-integration/drone/push Build is passing
All four 06_reference_app pages round-tripped U+2014 (em-dash) and U+2026
(ellipsis) through cp1252 during earlier PowerShell edits; restored the
characters and regenerated the wiki HTML + MCP modules.
2026-10-20 23:48:08 +05:30
a7f0576f1d fix: repair cp1252-mangled arrows in the reference-app pipelines page
All checks were successful
continuous-integration/drone/push Build is passing
PowerShell editing round-tripped the U+2192 arrows through cp1252 in
06_reference_app/03_pipelines_and_worker.md; restored them and regenerated
the wiki HTML + MCP module.
2026-10-20 15:25:17 +05:30
0857513fce Phase 10a: point the sample + react-openapi docs at the standards tree
- templates/app/openapi.yaml description no longer references react/vet
- react-openapi x- catalog docstring now names the standards sample as the
  reference application; refreshed the vendored react-openapi MCP module
2026-10-20 15:05:46 +05:30
b22e5ca432 Phase 9: retract vet as a standalone repo in the docs hub
- removed the vet entry from config.yml (port 8013) and repos.json (13 -> 12)
- dropped the collected vet/ site output (lib + mcp); collect.py no longer
  emits it
- inventory, drone and UI docs no longer list vet; the reference app now
  lives only inside standards (src/templates + the wiki walkthrough)
- homepage/_index refreshed

react/vet itself is deleted in a later phase (after .run configs land).
2026-10-20 15:02:30 +05:30
f8cf35de0e Phase 8: add the Reference App wiki walkthrough (06_reference_app)
- four pages walking the vet sample: overview, domain & API, pipelines &
  worker, spec-driven client admin
- mkdocs nav section, index + start-an-app cross links
- bundle now exposes the walkthrough as wiki_reference_app_* modules
2026-10-20 15:02:11 +05:30
0cb35d10a6 Phase 7: serve the vet sample from the template tools and docs
- build.py: _TEMPLATE_COMPONENTS rewritten around the vet sample (53 kinds —
  per-resource slices, jobs, worked appointment_reminder family, tests);
  seed tokens dropped from the manifest ('sample: vet' instead)
- registry.py: get_app_component(kind) no longer renames item/example seeds;
  prompts and tool docs updated to 'copy a slice and adapt'
- templates/README.md, 01_build_recipe, 40_ui_admin, wiki/03 updated off the
  old seed scheme; repo inventory/config now exclude vet (docs move under
  standards; react/vet itself is deleted in a later phase)
- regenerated MCP bundle, vendored templates, and site output
2026-10-20 14:58:17 +05:30
56aa1322fb Phase 6: replace app template with the vet sample domain + jobs slice, pipelines and worker
- templates/app now carries the vet server (parents/pets/treatments/vets/appointments)
- added domain/jobs slice with /jobs OpenAPI paths and Job schema (x- extensions)
- added pipelines/shared scaffold (loader, ports, registry) and the
  appointment_reminder family; worker.py dispatches jobs by kind
- wired init.py, config.py worker knobs, .env.example, docker-compose worker
- unit tests for jobs routes, the pipeline family and worker dispatch (12 passing)
2026-10-20 14:49:10 +05:30
6f6f0d6e6d chore: refresh collected sites — adopt vet, sync react-openapi bundle
collect.py run: adds the vet reference app (TypeDoc lib site + doc-weaver
MCP bundle), picks up the refreshed react-openapi specExtensions module from
Phase 1, and re-renders the docs homepage.
2026-10-20 13:00:11 +05:30
164aa413da feat: adopt vet as the full-stack reference app in the docs hub
Add react/vet (section: apps) serving its TypeDoc lib site and the
doc-weaver MCP bundle (docs/mcp, port 8013) alongside react-auth,
react-openapi and doc-weaver.
2026-10-20 12:03:34 +05:30
d7c344c9aa feat: full-stack MCP surface — client template, npm CI, 13 repos
- build.py: vendor templates/client into mcp/templates/client with
  client.json manifest (16 kinds); register drone-npm as a third CI shape
  (types: pypi/npm/docker); root *.py stale doc numbers fixed
- registry.py: registry://client resource + list_client_components /
  get_client_component / get_client_template tools; build prompt gains the
  client scaffold step (docs://modules/ui_admin); compliance prompt covers
  npm packages; drone docs describe all three shapes
- repos.json (+mcp): doc-weaver, react-auth, react-openapi (npm Type B,
  package.json version source), vet (app Type C, VERSION)
- docs: 90_drone_pipelines gains Type B npm section; 91_versioning covers
  package.json as a version source; 94_repository_inventory gains the npm
  package table and services/apps Type C; lib index updated

Verified: bundle regen (24 modules, client 16, drone 3, repos 13); registry
client readers exercised against the vendored bundle.
2026-10-20 12:02:31 +05:30
406affcfcf feat: renumber lib reference into 4-pillar anatomy
Renumber the 15 reference docs into pillar groups (recipe -> anatomy):
- 01 Build Recipe (entry), 02 Composition Root
- domains: 10 Layering Rules
- contract: 20 Spec-First Routing, 21 CRUD Template, 22 Auth Integration
- interfaces/infra: 30 Infra Adapters
- UI: 40 UI: Auto-Rendered Admin & Custom Pages (new; @aetoskia packages,
  client template, x- catalog via react-openapi MCP module)
- pipelines: 50 Pipeline Scaffold, 51 Worker & Progress, 52 Human-in-the-Loop
- delivery/meta: 90 Drone Pipelines, 91 Versioning & Changelog,
  92 Genericity Matrix, 93 Library Registry, 94 Repository Inventory

MCP module names are unchanged (NN_ prefix stripped); all cross-references
(wiki, templates, hooks, registry) updated; lib index rewritten pillar-first;
build recipe bootstraps the client template. Bundle + HTML sites regenerated.
2026-10-19 17:42:55 +05:30
e88005d936 feat: upgrade app template server from vet reference
- integer-id persistence: memory (default, zero-dep) + mongo_int repos
  selected by REPO_BACKEND via create_repo factory
- interfaces/_common.py: shared svc/dump/paginate/expand_ref/read_or_404
  helpers; item/job routes rebuilt on them (paginated {total,items} lists,
  PUT replace, 204 deletes, int path ids)
- interfaces/system: /health liveness probe (public)
- openapi.yaml rewritten to 3.1.0 with x- extensions on Item/Job
  (x-resource, x-primary-key, x-display-format, x-list-columns, x-label,
  x-order, x-hidden, x-filterable, x-sortable, x-autocomplete), auth-server
  x-* securityScheme wiring, shared error responses
- config/init/main: REPO_BACKEND knob, load_dotenv before spec build
Verified: 7/7 tests pass; live smoke test (/health ok, 401 without token)
2026-10-19 17:06:47 +05:30
ee954431cc feat: add client template (React admin + auth shell)
Generalized from the vet reference client:
- @aetoskia/react-auth + @aetoskia/react-openapi from npm.aetoskia.com
  (.npmrc), no local aliases
- generic Home (resource cards + live preview table), Header, Footer
- AppTheme/shared-theme with MUI v5 type shims
- VITE_API_BASE_URL / VITE_AUTH_BASE_URL env wiring
Verified: tsc --noEmit + vite build pass against built @aetoskia packages.
2026-10-19 16:55:08 +05:30
86243dbfff feat: add npm-lib Drone template for private npm publishing 2026-10-19 15:46:02 +05:30
854c23651e remove vet from docs hub and all files
Some checks reported errors
continuous-integration/drone/push Build was killed
2026-10-19 14:33:46 +05:30
bd6fca43aa docs: add react-auth, react-openapi, vet sites; update standards registry and MCP setup 2026-10-19 13:47:00 +05:30
a4f428b451 added favicon
All checks were successful
continuous-integration/drone/push Build is passing
2026-10-18 12:55:38 +05:30
a67edf4175 docs(standards): add MCP setup page covering all clients and servers
All checks were successful
continuous-integration/drone/push Build is passing
New wiki page documents the ten per-repo MCP servers (standards + libraries, ports 8001-8010) and per-client config for Claude Code, Codex, Antigravity, OpenCode, and PyCharm, each with linked localhost / mcp.aetoskia.com tabs.
2026-10-18 12:41:42 +05:30
4e310ae74d drone 8010 deployment
All checks were successful
continuous-integration/drone/push Build is passing
2026-10-18 00:00:13 +05:30
12a2493c6c doc-weaver init and cross wiki-lib links fixes
Some checks reported errors
continuous-integration/drone/push Build was killed
2026-10-17 23:59:31 +05:30
1af4fee63f docs: re-collect wiki sites (doc-forge, openapi-first)
All checks were successful
continuous-integration/drone/push Build is passing
Reflect rebuilt consumer wikis in the hub: doc-forge gains the MkDocs cross-kind link notes; openapi-first gains the codegen --template-style content. Purely cosmetic (toolchain escaping) and sitemap mtime deltas were left out.
2026-10-17 17:26:55 +05:30
a1b74e5086 docs(standards): rebase cross-kind wiki links via MkDocs hook
The standards wiki links to the sibling library reference with ../lib/... paths. Add src/hooks.py and enable it in mkdocs.wiki.yml so those links climb to the repo root and resolve to /standards/lib/... under directory URLs.
2026-10-17 17:22:37 +05:30
f2f09cf2c9 fixes
All checks were successful
continuous-integration/drone/push Build is passing
2026-10-17 04:41:34 +05:30
3092dab3c7 fix(standards): correct service-docker quality gate to use the private index
Authenticate the quality-gate pip install with the private index URL (scheme-stripped AUTH_URL, --index-url/--extra-index-url) instead of the broken --extra-index-url form, and guard against missing PIP_* secrets. Also drop the fetch-tags inline comments. Regenerated the mcp copy from src.
2026-10-17 04:38:44 +05:30
41135ea7e6 fix(standards): drop Drone template header comments; fix python-lib quality-gate auth 2026-10-17 04:25:58 +05:30
104bf3eb1e feat(standards): drop the site CI variant + require changelog reconciliation before release
- Remove the push-triggered build-and-deploy-site pipeline and every "site"
  reference; Type B is now a single tag-triggered service pipeline
  (service-docker.yaml).
- Inventory now covers packages + the auth-server service only (repos.json
  11 -> 9; docs/mcp are no longer part of the standard).
- Versioning standard: reconcile [Unreleased] against the last tag before
  promoting, and always show proposed entries to the user for approval.
- Update registry.py compliance/release text and list_repos types, build.py
  component descriptions, and rebuild the MCP bundle + lib/wiki HTML.
2026-10-17 00:41:52 +05:30
e33a6d6704 feat(standards): serve service version-wiring rule + bundle wiki pages in MCP
Versioning standard now states services must read their VERSION (e.g. a build arg) rather than hardcoding it; the compliance prompt repeats it. build_bundle also bundles src/wiki/** as wiki_-prefixed modules (e.g. docs://modules/wiki_development_releasing), so the release runbook is reachable from the MCP. Bundle grows to 22 modules.
2026-10-15 18:50:03 +05:30
5971f26c08 feat(standards): MR-based tag strategy + repository inventory (registry://repos)
Versioning standard now documents the MR flow: bump pyproject.toml/VERSION and promote CHANGELOG in the MR (referencing the version/tag, not a commit id), merge/squash, then tag the resulting commit. Adds the agent-assisted tagging procedure (wait for the go-ahead, find the version-bump commit, tag only it, ask the user to push) to both the reference page and the releasing wiki runbook. Adds the repo inventory (src/repos.json -> mcp/repos.json), the registry://repos resource + list_repos tool, the 15_repository_inventory lib page, and two MCP prompts: compliance (remediate repos) and release (agent tagging).
2026-10-15 14:39:21 +05:30
df03f41771 docs(standards): rebuild lib + wiki HTML for versioning/changelog and drone pages 2026-10-15 14:21:50 +05:30
8cc9631fe7 feat(standards): add versioning + changelog standard, release templates, and Drone version guard
Add lib page 11 (SemVer contract, pre-1.0 rule, tag==version invariant, Keep a Changelog), the releasing wiki runbook, and canonical release templates (CHANGELOG.md, VERSION). Vendor them into the MCP bundle as templates/release + release.json and expose registry://release with list/get tools. Add a changelog component to the app template. Enforce the tag<->version contract in both Drone shapes: Type A check-version and the backfill loop verify pyproject version; Type B adds a VERSION guard step.
2026-10-15 01:24:25 +05:30
652 changed files with 68820 additions and 3773 deletions

View File

@@ -76,6 +76,9 @@ steps:
-p 8007:8007 \ -p 8007:8007 \
-p 8008:8008 \ -p 8008:8008 \
-p 8009:8009 \ -p 8009:8009 \
-p 8010:8010 \
-p 8011:8011 \
-p 8012:8012 \
--restart always \ --restart always \
aetos/docs:latest aetos/docs:latest

View File

@@ -33,6 +33,9 @@ RUN rm -f /etc/nginx/sites-enabled/default
COPY _index /usr/share/nginx/html/ COPY _index /usr/share/nginx/html/
COPY openapi-first /usr/share/nginx/html/openapi-first COPY openapi-first /usr/share/nginx/html/openapi-first
COPY doc-forge /usr/share/nginx/html/doc-forge COPY doc-forge /usr/share/nginx/html/doc-forge
COPY doc-weaver /usr/share/nginx/html/doc-weaver
COPY react-auth /usr/share/nginx/html/react-auth
COPY react-openapi /usr/share/nginx/html/react-openapi
COPY dagpipe /usr/share/nginx/html/dagpipe COPY dagpipe /usr/share/nginx/html/dagpipe
COPY mail-intake /usr/share/nginx/html/mail-intake COPY mail-intake /usr/share/nginx/html/mail-intake
COPY omniread /usr/share/nginx/html/omniread COPY omniread /usr/share/nginx/html/omniread
@@ -47,6 +50,9 @@ COPY standards /usr/share/nginx/html/standards
# --- MCP bundles (one per repo under /app/<name>/mcp) ---------------------- # --- MCP bundles (one per repo under /app/<name>/mcp) ----------------------
COPY openapi-first/mcp /app/openapi-first/mcp COPY openapi-first/mcp /app/openapi-first/mcp
COPY doc-forge/mcp /app/doc-forge/mcp COPY doc-forge/mcp /app/doc-forge/mcp
COPY doc-weaver/mcp /app/doc-weaver/mcp
COPY react-auth/mcp /app/react-auth/mcp
COPY react-openapi/mcp /app/react-openapi/mcp
COPY dagpipe/mcp /app/dagpipe/mcp COPY dagpipe/mcp /app/dagpipe/mcp
COPY mail-intake/mcp /app/mail-intake/mcp COPY mail-intake/mcp /app/mail-intake/mcp
COPY omniread/mcp /app/omniread/mcp COPY omniread/mcp /app/omniread/mcp
@@ -55,6 +61,6 @@ COPY hexa/mcp /app/hexa/mcp
COPY mongo-ops/mcp /app/mongo-ops/mcp COPY mongo-ops/mcp /app/mongo-ops/mcp
COPY standards/mcp /app/standards/mcp COPY standards/mcp /app/standards/mcp
EXPOSE 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 9000 EXPOSE 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 9000
CMD ["python", "main.py"] CMD ["python", "main.py"]

5
_index/favicon.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="Aetoskia">
<rect width="64" height="64" rx="14" fill="#0d1117"/>
<rect x="1.75" y="1.75" width="60.5" height="60.5" rx="12.25" fill="none" stroke="#2dd4bf" stroke-opacity="0.35" stroke-width="2.5"/>
<path d="M32 13 L12.5 53 M32 13 L51.5 53 M21.5 40.5 H42.5" fill="none" stroke="#2dd4bf" stroke-width="7.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 451 B

View File

@@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aetoskia Developer Documentation</title> <title>Aetoskia Developer Documentation</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<style> <style>
:root { :root {
--bg: #0d1117; --bg: #0d1117;
@@ -155,6 +156,30 @@
<a href="/doc-forge/lib/" target="_blank">view lib</a> <a href="/doc-forge/lib/" target="_blank">view lib</a>
</div> </div>
</div> </div>
<div class="card">
<h3>Doc Weaver</h3>
<p>TypeScript documentation compiler using TypeDoc + JSDoc (RDFC), generating a TypeDoc site and a doc-forge-shaped MCP bundle for React packages.</p>
<div class="card-actions">
<a href="/doc-weaver/wiki/" target="_blank">view wiki</a>
<a href="/doc-weaver/lib/" target="_blank">view lib</a>
</div>
</div>
<div class="card">
<h3>React Auth</h3>
<p>JWT-backed React authentication UI — AuthProvider context, login/register screen, profile screens, and an axios client that carries bearer tokens and handles 401s.</p>
<div class="card-actions">
<a href="/react-auth/wiki/" target="_blank">view wiki</a>
<a href="/react-auth/lib/" target="_blank">view lib</a>
</div>
</div>
<div class="card">
<h3>React OpenAPI</h3>
<p>Spec-driven React admin UI — derives CRUD routes, tables, forms, foreign-key selects and SSE streams from an OpenAPI document at runtime.</p>
<div class="card-actions">
<a href="/react-openapi/wiki/" target="_blank">view wiki</a>
<a href="/react-openapi/lib/" target="_blank">view lib</a>
</div>
</div>
<div class="card"> <div class="card">
<h3>DAG Pipe</h3> <h3>DAG Pipe</h3>
<p>Deterministic pipeline framework for executing state transformations through a directed acyclic graph (DAG).</p> <p>Deterministic pipeline framework for executing state transformations through a directed acyclic graph (DAG).</p>

383
build.py
View File

@@ -99,13 +99,26 @@ def _read_title(path: Path) -> str:
return _module_name(path.stem).replace("_", " ").title() return _module_name(path.stem).replace("_", " ").title()
def _wiki_module_name(rel: Path) -> str:
"""Map a wiki page path to a namespaced module name.
``04_development/02_releasing.md`` -> ``wiki_development_releasing``; the
``wiki_`` prefix keeps wiki pages from colliding with lib modules (both have
an ``index``).
"""
parts = [NUM_PREFIX.sub("", part) or part for part in rel.with_suffix("").parts]
return "wiki_" + "_".join(parts)
def build_bundle(folder: Path, dry_run: bool = False) -> None: def build_bundle(folder: Path, dry_run: bool = False) -> None:
"""Regenerate ``<name>/mcp`` from ``folder/src/lib`` markdown. """Regenerate ``<name>/mcp`` from ``folder/src/lib`` and ``folder/src/wiki``.
The bundle mirrors the lib site (in the same way doc-forge's MCP output The bundle mirrors the lib site (in the same way doc-forge's MCP output
mirrors its lib documentation). Writes ``index.json``, ``nav.json`` and mirrors its lib documentation). Writes ``index.json``, ``nav.json`` and
``modules/*.json`` in the doc-forge MCP bundle shape. Hand-authored extras ``modules/*.json`` in the doc-forge MCP bundle shape. Hand-authored extras
(e.g. ``libraries.json``) are left untouched. (e.g. ``libraries.json``) are left untouched. Wiki pages (``src/wiki/**``)
are also bundled, under a ``wiki_`` namespaced module name, so the runbooks
are reachable from the MCP.
Args: Args:
folder (Path): The hub folder owning a ``src/lib``. folder (Path): The hub folder owning a ``src/lib``.
@@ -149,6 +162,17 @@ def build_bundle(folder: Path, dry_run: bool = False) -> None:
"title": _read_title(path), "title": _read_title(path),
}) })
wiki = folder / "src" / "wiki"
if wiki.is_dir():
for path in sorted(wiki.rglob("*.md")):
module = _wiki_module_name(path.relative_to(wiki))
write_module(module, path.read_text(encoding="utf-8"))
nav.append({
"module": module,
"resource": f"docs://modules/{module}",
"title": _read_title(path),
})
(out_dir / "nav.json").write_text( (out_dir / "nav.json").write_text(
json.dumps(nav, indent=2, ensure_ascii=False), encoding="utf-8" json.dumps(nav, indent=2, ensure_ascii=False), encoding="utf-8"
) )
@@ -170,43 +194,61 @@ def build_bundle(folder: Path, dry_run: bool = False) -> None:
# ── Template bundle ────────────────────────────────────────────────────────── # ── Template bundle ──────────────────────────────────────────────────────────
# Component kinds shipped in the vendored template. ``placeholder`` names the # Component kinds shipped in the vendored template. The template is the vet
# seed token an agent renames: "resource" -> item/Item, "family" -> example/ # sample: a concrete veterinary-clinic domain (parents, pets, treatments,
# Example; "" means ship as-is. # vets, appointments + a jobs queue for the worker). Agents copy slices and
# adapt them to their own domain — no seed-token renaming. ``placeholder`` is
# always "" and kept only for manifest-shape compatibility with the client /
# drone / release bundles.
_TEMPLATE_COMPONENTS: list[dict[str, str]] = [ _TEMPLATE_COMPONENTS: list[dict[str, str]] = [
# Per-resource slice (seed: item/Item). # Per-resource slices — copy one as the pattern for a new aggregate.
{"kind": "model", "path": "domain/item/models.py", "placeholder": "resource", # parents: simplest slice (no foreign keys).
"description": "Business Pydantic model for a resource."}, {"kind": "parent-model", "path": "domain/parents/models.py", "placeholder": "",
{"kind": "ports-db", "path": "domain/item/ports/db.py", "placeholder": "resource", "description": "Example domain model (parents — the simplest slice)."},
"description": "Document model + repository factory for a resource."}, {"kind": "parent-ports-db", "path": "domain/parents/ports/db.py", "placeholder": "",
{"kind": "ports-service", "path": "domain/item/ports/service.py", "placeholder": "resource", "description": "Example document model + repository factory."},
"description": "CRUD service wired through the DI library."}, {"kind": "parent-ports-service", "path": "domain/parents/ports/service.py", "placeholder": "",
{"kind": "converters", "path": "domain/item/ports/converters.py", "placeholder": "resource", "description": "Example CRUD service wired through the DI library."},
"description": "Optional pure converters between domain types."}, {"kind": "parent-routes", "path": "interfaces/parents/routes.py", "placeholder": "",
{"kind": "routes", "path": "interfaces/item/routes.py", "placeholder": "resource", "description": "Example thin HTTP handlers bound to operationIds."},
"description": "Thin HTTP handlers bound to operationIds."}, # pets: embedded list-of-refs + file upload.
{"kind": "pet-model", "path": "domain/pets/models.py", "placeholder": "",
"description": "Domain model with an embedded parents list."},
{"kind": "pet-ports-db", "path": "domain/pets/ports/db.py", "placeholder": "",
"description": "Populating document + repository factory (FK wiring)."},
{"kind": "pet-routes", "path": "interfaces/pets/routes.py", "placeholder": "",
"description": "Routes including the file-upload endpoint."},
# appointments: single FKs expanded on read, filtered list.
{"kind": "appointment-model", "path": "domain/appointments/models.py", "placeholder": "",
"description": "Domain model with single-id FKs + nested value objects."},
{"kind": "appointment-routes", "path": "interfaces/appointments/routes.py", "placeholder": "",
"description": "Routes with expand_ref FK handling and list filters."},
# jobs: the worker's queue (second resource shipped end to end).
{"kind": "job-model", "path": "domain/jobs/models.py", "placeholder": "",
"description": "Job queue model (the worker's unit of work)."},
{"kind": "job-ports-db", "path": "domain/jobs/ports/db.py", "placeholder": "",
"description": "Job repository factory."},
{"kind": "job-ports-service", "path": "domain/jobs/ports/service.py", "placeholder": "",
"description": "Job CRUD service."},
{"kind": "job-routes", "path": "interfaces/jobs/routes.py", "placeholder": "",
"description": "Job routes (enqueue/inspect via the API)."},
# Interface-layer shared files.
{"kind": "interface-common", "path": "interfaces/_common.py", "placeholder": "",
"description": "Shared helpers: svc resolution, dump, pagination, expand_ref."},
{"kind": "openapi-routes", "path": "interfaces/openapi.py", "placeholder": "", {"kind": "openapi-routes", "path": "interfaces/openapi.py", "placeholder": "",
"description": "Route registry: flat re-export of every handler namespace."}, "description": "Route registry: flat re-export of every handler namespace."},
{"kind": "auth", "path": "interfaces/auth/security.yaml", "placeholder": "", {"kind": "auth", "path": "interfaces/auth/security.yaml", "placeholder": "",
"description": "Mergeable bearerAuth security scheme + global security for openapi.yaml."}, "description": "Mergeable bearerAuth security scheme + global security for openapi.yaml."},
{"kind": "test-model", "path": "tests/unit/test_item_models.py", "placeholder": "resource", # Worked pipeline family (appointment_reminder) — the copy-me pattern.
"description": "Unit test for the resource model."}, {"kind": "pipeline-abc", "path": "pipelines/appointment_reminder/abc.py", "placeholder": "",
{"kind": "test-routes", "path": "tests/integration/test_item_routes.py", "placeholder": "resource",
"description": "Integration test at the HTTP edge."},
{"kind": "test-openapi-build", "path": "tests/integration/test_openapi_app_builds.py", "placeholder": "",
"description": "Generic test: every spec operationId resolves and the app builds."},
{"kind": "test-pipeline", "path": "tests/unit/test_item_sync.py", "placeholder": "",
"description": "Unit test for the smallest pipeline form."},
# Per-family pipeline scaffold (seed: example/Example).
{"kind": "pipeline-abc", "path": "pipelines/example/abc.py", "placeholder": "family",
"description": "Port contracts for a pipeline family."}, "description": "Port contracts for a pipeline family."},
{"kind": "pipeline-impl", "path": "pipelines/example/impl.py", "placeholder": "family", {"kind": "pipeline-impl", "path": "pipelines/appointment_reminder/impl.py", "placeholder": "",
"description": "Concrete stages, wired root, and family registration."}, "description": "Concrete stages, wired root, and family registration."},
{"kind": "pipeline-yaml", "path": "pipelines/example/pipeline.yaml", "placeholder": "family", {"kind": "pipeline-yaml", "path": "pipelines/appointment_reminder/pipeline.yaml", "placeholder": "",
"description": "Graph spec (nodes, edges, roots, schema)."}, "description": "Graph spec (nodes, edges, roots, schema)."},
{"kind": "pipeline-resources", "path": "pipelines/example/resources/pipeline.yaml", "placeholder": "family", {"kind": "pipeline-resources", "path": "pipelines/appointment_reminder/resources/pipeline.yaml", "placeholder": "",
"description": "Runtime spec consumed by the shared loader."}, "description": "Runtime spec consumed by the shared loader."},
{"kind": "pipeline-pattern", "path": "pipelines/example/resources/patterns/example.yaml", "placeholder": "family", {"kind": "pipeline-pattern", "path": "pipelines/appointment_reminder/resources/patterns/reminder.yaml", "placeholder": "",
"description": "Pattern/rule fragment merged by the loader."}, "description": "Pattern/rule fragment merged by the loader."},
# Shared pipeline scaffolding (ship as-is). # Shared pipeline scaffolding (ship as-is).
{"kind": "pipeline-ports", "path": "pipelines/shared/ports.py", "placeholder": "", {"kind": "pipeline-ports", "path": "pipelines/shared/ports.py", "placeholder": "",
@@ -215,30 +257,23 @@ _TEMPLATE_COMPONENTS: list[dict[str, str]] = [
"description": "Shared loader: DI wiring + pattern merge."}, "description": "Shared loader: DI wiring + pattern merge."},
{"kind": "pipeline-registry", "path": "pipelines/shared/registry.py", "placeholder": "", {"kind": "pipeline-registry", "path": "pipelines/shared/registry.py", "placeholder": "",
"description": "Shared registry: (kind, variant, mode) -> root class."}, "description": "Shared registry: (kind, variant, mode) -> root class."},
{"kind": "pipeline-simple", "path": "pipelines/item_sync.py", "placeholder": "",
"description": "Smallest pipeline form (plain async steps)."},
# Second resource slice (seed: job).
{"kind": "job-model", "path": "domain/job/models.py", "placeholder": "",
"description": "Seeded second resource model (job)."},
{"kind": "job-ports-db", "path": "domain/job/ports/db.py", "placeholder": "",
"description": "Seeded second resource repository (job)."},
{"kind": "job-ports-service", "path": "domain/job/ports/service.py", "placeholder": "",
"description": "Seeded second resource service (job)."},
{"kind": "job-routes", "path": "interfaces/job/routes.py", "placeholder": "",
"description": "Seeded second resource routes (job)."},
# Root / shared files (ship as-is). # Root / shared files (ship as-is).
{"kind": "config", "path": "config.py", "placeholder": "", {"kind": "config", "path": "config.py", "placeholder": "",
"description": "Settings dataclass + singleton."}, "description": "Settings dataclass + singleton (incl. worker knobs)."},
{"kind": "init", "path": "init.py", "placeholder": "", {"kind": "init", "path": "init.py", "placeholder": "",
"description": "Composition root (init/shutdown, get_svc)."}, "description": "Composition root (init/shutdown, resources dict)."},
{"kind": "main", "path": "main.py", "placeholder": "", {"kind": "main", "path": "main.py", "placeholder": "",
"description": "Spec-first app bootstrap + lifespan."}, "description": "Spec-first app bootstrap + lifespan."},
{"kind": "worker", "path": "worker.py", "placeholder": "", {"kind": "worker", "path": "worker.py", "placeholder": "",
"description": "Poll loop + job status machine."}, "description": "Poll loop + job dispatch by kind + status machine."},
{"kind": "openapi", "path": "openapi.yaml", "placeholder": "", {"kind": "openapi", "path": "openapi.yaml", "placeholder": "",
"description": "OpenAPI contract skeleton."}, "description": "OpenAPI contract (x- extensions drive the admin client)."},
{"kind": "pyproject", "path": "pyproject.toml", "placeholder": "", {"kind": "pyproject", "path": "pyproject.toml", "placeholder": "",
"description": "Packaging + dependency pins."}, "description": "Packaging + dependency pins."},
{"kind": "changelog", "path": "CHANGELOG.md", "placeholder": "",
"description": "Keep a Changelog file with an [Unreleased] section (versioning standard)."},
{"kind": "version-file", "path": "VERSION", "placeholder": "",
"description": "Single-line version file (service-docker CI checks tag == VERSION)."},
{"kind": "dockerfile", "path": "Dockerfile", "placeholder": "", {"kind": "dockerfile", "path": "Dockerfile", "placeholder": "",
"description": "API + worker image with private-index wiring."}, "description": "API + worker image with private-index wiring."},
{"kind": "dockerignore", "path": ".dockerignore", "placeholder": "", {"kind": "dockerignore", "path": ".dockerignore", "placeholder": "",
@@ -253,12 +288,18 @@ _TEMPLATE_COMPONENTS: list[dict[str, str]] = [
"description": "Mongo connection lifecycle."}, "description": "Mongo connection lifecycle."},
{"kind": "repo", "path": "infra/db/repos/mongo.py", "placeholder": "", {"kind": "repo", "path": "infra/db/repos/mongo.py", "placeholder": "",
"description": "Repository factory (base/populating/cached)."}, "description": "Repository factory (base/populating/cached)."},
{"kind": "repo-int", "path": "infra/db/repos/mongo_int.py", "placeholder": "",
"description": "Integer-id repository variants (create_repo factory)."},
{"kind": "repo-memory", "path": "infra/db/repos/memory.py", "placeholder": "",
"description": "In-memory repository flavour (zero-dependency demo store)."},
{"kind": "service-adapter", "path": "infra/adapters/service.py", "placeholder": "", {"kind": "service-adapter", "path": "infra/adapters/service.py", "placeholder": "",
"description": "Generic CRUD service adaptor."}, "description": "Generic CRUD service adaptor."},
{"kind": "http-cache", "path": "infra/http_cache.py", "placeholder": "", {"kind": "http-cache", "path": "infra/http_cache.py", "placeholder": "",
"description": "Response cache decorator + Redis store (generation invalidation)."}, "description": "Response cache decorator + Redis store (generation invalidation)."},
{"kind": "progress-bus", "path": "infra/adapters/sse.py", "placeholder": "", {"kind": "progress-bus", "path": "infra/adapters/sse.py", "placeholder": "",
"description": "In-memory SSE progress bus (keyed by an event attribute)."}, "description": "In-memory SSE progress bus (keyed by an event attribute)."},
{"kind": "actions-stream", "path": "infra/adapters/actions_stream.py", "placeholder": "",
"description": "Per-resource action stream (SSE) adaptor."},
{"kind": "kv-store", "path": "infra/adapters/kv.py", "placeholder": "", {"kind": "kv-store", "path": "infra/adapters/kv.py", "placeholder": "",
"description": "KV port + in-memory fallback + optional Redis adaptor."}, "description": "KV port + in-memory fallback + optional Redis adaptor."},
{"kind": "package-init", "path": "domain/__init__.py", "placeholder": "", {"kind": "package-init", "path": "domain/__init__.py", "placeholder": "",
@@ -267,6 +308,15 @@ _TEMPLATE_COMPONENTS: list[dict[str, str]] = [
"description": "Operator seed script."}, "description": "Operator seed script."},
{"kind": "script-drop", "path": "scripts/drop.py", "placeholder": "", {"kind": "script-drop", "path": "scripts/drop.py", "placeholder": "",
"description": "Operator drop script."}, "description": "Operator drop script."},
# Tests shipped with the sample.
{"kind": "test-openapi-build", "path": "tests/integration/test_openapi_app_builds.py", "placeholder": "",
"description": "Generic test: every spec operationId resolves and the app builds."},
{"kind": "test-jobs-routes", "path": "tests/unit/test_jobs_routes.py", "placeholder": "",
"description": "Unit test pattern for a resource's routes with service fakes."},
{"kind": "test-pipeline", "path": "tests/unit/test_appointment_reminder_pipeline.py", "placeholder": "",
"description": "Unit test pattern for a pipeline family."},
{"kind": "test-worker", "path": "tests/unit/test_worker.py", "placeholder": "",
"description": "Unit test pattern for worker dispatch and status transitions."},
] ]
@@ -277,7 +327,7 @@ def build_components_manifest(template_root: Path) -> dict[str, object]:
template_root (Path): The vendored ``templates/app`` directory. template_root (Path): The vendored ``templates/app`` directory.
Returns: Returns:
dict[str, object]: Manifest with the seed tokens and component entries. dict[str, object]: Manifest with the component entries.
""" """
components: list[dict[str, str]] = [] components: list[dict[str, str]] = []
for entry in _TEMPLATE_COMPONENTS: for entry in _TEMPLATE_COMPONENTS:
@@ -293,7 +343,7 @@ def build_components_manifest(template_root: Path) -> dict[str, object]:
return { return {
"project": "standards", "project": "standards",
"template": "templates/app", "template": "templates/app",
"seed": {"resource": "item", "family": "example"}, "sample": "vet",
"components": components, "components": components,
} }
@@ -336,16 +386,127 @@ def build_templates(folder: Path, dry_run: bool = False) -> None:
f"({len(manifest['components'])} components)") f"({len(manifest['components'])} components)")
# ── Client template bundle ────────────────────────────────────────────────────
# Component kinds shipped in the vendored React client template
# (``templates/client``): the Vite + MUI shell that pairs with ``templates/app``
# and renders the admin UI from the app's openapi.yaml via
# ``@aetoskia/react-openapi`` / ``@aetoskia/react-auth``. No seed tokens —
# ship as-is (see standards "40_ui_admin").
_CLIENT_COMPONENTS: list[dict[str, str]] = [
{"kind": "client-package", "path": "package.json", "placeholder": "",
"description": "npm manifest: @aetoskia deps, scripts (dev/build/preview)."},
{"kind": "client-npmrc", "path": ".npmrc", "placeholder": "",
"description": "Private registry auth pointing at npm.aetoskia.com."},
{"kind": "client-env", "path": ".env.example", "placeholder": "",
"description": "VITE_API_BASE_URL / VITE_AUTH_BASE_URL seed."},
{"kind": "client-vite-config", "path": "vite.config.ts", "placeholder": "",
"description": "Vite config (dev server, build)."},
{"kind": "client-tsconfig", "path": "tsconfig.json", "placeholder": "",
"description": "TypeScript config for the client."},
{"kind": "client-index-html", "path": "index.html", "placeholder": "",
"description": "HTML entry point."},
{"kind": "client-entry", "path": "src/main.jsx", "placeholder": "",
"description": "React entry: router + providers + theme."},
{"kind": "client-openapi-config", "path": "src/openapi-config.ts", "placeholder": "",
"description": "Points the admin renderer at the app spec + auth-server spec."},
{"kind": "client-home", "path": "src/Home.tsx", "placeholder": "",
"description": "Auto-listing home page (ResourceCard + LiveTable per resource)."},
{"kind": "client-header", "path": "src/Header.tsx", "placeholder": "",
"description": "App header bar (brand + nav)."},
{"kind": "client-footer", "path": "src/Footer.tsx", "placeholder": "",
"description": "App footer."},
{"kind": "client-vite-env", "path": "src/vite-env.d.ts", "placeholder": "",
"description": "Vite client type declarations."},
{"kind": "client-theme", "path": "src/shared-theme/AppTheme.tsx", "placeholder": "",
"description": "Theme provider wrapper (light/dark)."},
{"kind": "client-theme-config", "path": "src/shared-theme/themeConfig.ts", "placeholder": "",
"description": "Palette / typography tokens."},
{"kind": "client-theme-primitives", "path": "src/shared-theme/themePrimitives.ts", "placeholder": "",
"description": "MUI theme primitives (shadows, accents)."},
{"kind": "client-theme-shim", "path": "src/shared-theme/mui.d.ts", "placeholder": "",
"description": "MUI v5 type shims (Theme.vars, SelectClasses.focused)."},
]
def build_client_manifest(template_root: Path) -> dict[str, object]:
"""Describe every component in the vendored client template.
Args:
template_root (Path): The vendored ``templates/client`` directory.
Returns:
dict[str, object]: Manifest with the component entries.
"""
components: list[dict[str, str]] = []
for entry in _CLIENT_COMPONENTS:
rel = entry["path"]
if not (template_root / rel).exists():
raise SystemExit(f"[ERR] client component path missing from template: {rel}")
components.append({
"kind": entry["kind"],
"path": rel,
"placeholder": entry["placeholder"],
"description": entry["description"],
})
return {
"project": "standards",
"template": "templates/client",
"components": components,
}
def build_client_templates(folder: Path, dry_run: bool = False) -> None:
"""Vendor ``folder/src/templates/client`` into ``<name>/mcp/templates/client``.
Ships the React client skeleton (the auto-rendered admin shell) in the MCP
bundle so an agent can pull exact, current component code, and emits
``client.json`` describing the kinds. Excludes caches and lock files.
Args:
folder (Path): The hub folder owning ``src/templates/client``.
dry_run (bool): Print the plan without executing.
"""
name = folder.name
src = folder / "src" / "templates" / "client"
if not src.is_dir():
return
out_dir = folder / "mcp" / "templates" / "client"
if dry_run:
print(f"[CLT] {name} {src.relative_to(ROOT)}/** -> {out_dir.relative_to(ROOT)}/**")
return
if out_dir.exists():
shutil.rmtree(out_dir)
out_dir.parent.mkdir(parents=True, exist_ok=True)
shutil.copytree(
src, out_dir,
ignore=shutil.ignore_patterns(
"node_modules", "dist", ".ruff_cache", ".pytest_cache",
".mypy_cache", ".venv", "venv", ".git", "*.egg-info",
),
)
manifest = build_client_manifest(out_dir)
(folder / "mcp" / "client.json").write_text(
json.dumps(manifest, indent=2, ensure_ascii=False), encoding="utf-8"
)
print(f"[CLT] {name} client template vendored to {out_dir.relative_to(ROOT)}/ "
f"({len(manifest['components'])} components)")
# ── Drone standard bundle ───────────────────────────────────────────────────── # ── Drone standard bundle ─────────────────────────────────────────────────────
# The two CI shapes shipped in ``src/templates/drone``. There are exactly two # The CI shapes shipped in ``src/templates/drone``. There are exactly three
# types of ``.drone.yml`` in the org: a Python package (private PyPI) and a # types of ``.drone.yml`` in the org: a Python package (private PyPI), an npm
# Docker deployment (build / push / run). See standards "10_drone_pipelines". # package (private npm registry), and a Docker deployment (build / push / run).
# See standards "90_drone_pipelines".
_DRONE_COMPONENTS: list[dict[str, str]] = [ _DRONE_COMPONENTS: list[dict[str, str]] = [
{"kind": "drone-pypi", "path": "python-lib.yaml", "placeholder": "", {"kind": "drone-pypi", "path": "python-lib.yaml", "placeholder": "",
"description": "Drone pipeline: build + publish a Python package to the private PyPI index."}, "description": "Drone pipeline: build + publish a Python package to the private PyPI index."},
{"kind": "drone-npm", "path": "npm-lib.yaml", "placeholder": "",
"description": "Drone pipeline: build + publish an npm package to the private npm registry."},
{"kind": "drone-service", "path": "service-docker.yaml", "placeholder": "", {"kind": "drone-service", "path": "service-docker.yaml", "placeholder": "",
"description": "Drone pipeline: build, push, and deploy a Docker service or site."}, "description": "Drone pipeline: build, push, and deploy a Docker service."},
] ]
@@ -372,7 +533,7 @@ def build_drone_manifest(template_root: Path) -> dict[str, object]:
return { return {
"project": "standards", "project": "standards",
"template": "templates/drone", "template": "templates/drone",
"types": ["pypi", "docker"], "types": ["pypi", "npm", "docker"],
"components": components, "components": components,
} }
@@ -380,9 +541,9 @@ def build_drone_manifest(template_root: Path) -> dict[str, object]:
def build_drone_templates(folder: Path, dry_run: bool = False) -> None: def build_drone_templates(folder: Path, dry_run: bool = False) -> None:
"""Vendor ``folder/src/templates/drone`` into ``<name>/mcp/templates/drone``. """Vendor ``folder/src/templates/drone`` into ``<name>/mcp/templates/drone``.
Ships the two ``.drone.yml`` shapes (PyPI package, Docker deployment) in the Ships the three ``.drone.yml`` shapes (PyPI package, npm package, Docker
MCP bundle so an agent can pull the exact CI file, and emits ``drone.json`` deployment) in the MCP bundle so an agent can pull the exact CI file, and
describing them. emits ``drone.json`` describing them.
Args: Args:
folder (Path): The hub folder owning ``src/templates/drone``. folder (Path): The hub folder owning ``src/templates/drone``.
@@ -412,6 +573,115 @@ def build_drone_templates(folder: Path, dry_run: bool = False) -> None:
f"({len(manifest['components'])} components)") f"({len(manifest['components'])} components)")
# ── Release standard bundle ───────────────────────────────────────────────────
# The release artefacts shipped in ``src/templates/release``. One canonical
# changelog (Keep a Changelog + SemVer) and the service version file. See
# standards "91_versioning_and_changelog".
_RELEASE_COMPONENTS: list[dict[str, str]] = [
{"kind": "changelog", "path": "CHANGELOG.md", "placeholder": "",
"description": "Keep a Changelog skeleton: one [Unreleased] section + compare links."},
{"kind": "version-file", "path": "VERSION", "placeholder": "",
"description": "Single-line SemVer source of truth for services."},
]
def build_release_manifest(template_root: Path) -> dict[str, object]:
"""Describe every artefact in the vendored release standard.
Args:
template_root (Path): The vendored ``templates/release`` directory.
Returns:
dict[str, object]: Manifest with the component entries and the
tag == version invariant.
"""
components: list[dict[str, str]] = []
for entry in _RELEASE_COMPONENTS:
rel = entry["path"]
if not (template_root / rel).exists():
raise SystemExit(f"[ERR] release template missing: {rel}")
components.append({
"kind": entry["kind"],
"path": rel,
"placeholder": entry["placeholder"],
"description": entry["description"],
})
return {
"project": "standards",
"template": "templates/release",
"invariant": "git tag == version file (enforced by the Drone guard)",
"components": components,
}
def build_release_templates(folder: Path, dry_run: bool = False) -> None:
"""Vendor ``folder/src/templates/release`` into ``<name>/mcp/templates/release``.
Ships the canonical ``CHANGELOG.md`` and ``VERSION`` in the MCP bundle so an
agent can drop them into a repo, and emits ``release.json`` describing them.
Args:
folder (Path): The hub folder owning ``src/templates/release``.
dry_run (bool): Print the plan without executing.
"""
name = folder.name
src = folder / "src" / "templates" / "release"
if not src.is_dir():
return
out_dir = folder / "mcp" / "templates" / "release"
if dry_run:
print(f"[REL] {name} {src.relative_to(ROOT)}/** -> {out_dir.relative_to(ROOT)}/**")
return
if out_dir.exists():
shutil.rmtree(out_dir)
out_dir.parent.mkdir(parents=True, exist_ok=True)
shutil.copytree(
src, out_dir,
ignore=shutil.ignore_patterns("__pycache__", "*.pyc", ".git"),
)
manifest = build_release_manifest(out_dir)
(folder / "mcp" / "release.json").write_text(
json.dumps(manifest, indent=2, ensure_ascii=False), encoding="utf-8"
)
print(f"[REL] {name} release templates vendored to {out_dir.relative_to(ROOT)}/ "
f"({len(manifest['components'])} components)")
# ── Repository inventory bundle ───────────────────────────────────────────────
def build_repos(folder: Path, dry_run: bool = False) -> None:
"""Publish ``folder/src/repos.json`` as ``<name>/mcp/repos.json``.
The repository inventory (name, type, version source, Drone shape) is a
single hand-authored JSON file, surfaced to agents through the
``registry://repos`` resource and the ``list_repos`` tool. See standards
"94_repository_inventory".
Args:
folder (Path): The hub folder owning ``src/repos.json``.
dry_run (bool): Print the plan without executing.
"""
name = folder.name
src = folder / "src" / "repos.json"
if not src.is_file():
return
out = folder / "mcp" / "repos.json"
if dry_run:
print(f"[REP] {name} {src.relative_to(ROOT)} -> {out.relative_to(ROOT)}")
return
data = json.loads(src.read_text(encoding="utf-8"))
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(
json.dumps(data, indent=2, ensure_ascii=False), encoding="utf-8"
)
print(f"[REP] {name} repo inventory written to {out.relative_to(ROOT)} "
f"({len(data.get('repos', []))} repos)")
# ── CLI ────────────────────────────────────────────────────────────────────── # ── CLI ──────────────────────────────────────────────────────────────────────
@@ -431,7 +701,10 @@ def main() -> None:
for folder in folders: for folder in folders:
build_bundle(folder, dry_run=args.dry_run) build_bundle(folder, dry_run=args.dry_run)
build_templates(folder, dry_run=args.dry_run) build_templates(folder, dry_run=args.dry_run)
build_client_templates(folder, dry_run=args.dry_run)
build_drone_templates(folder, dry_run=args.dry_run) build_drone_templates(folder, dry_run=args.dry_run)
build_release_templates(folder, dry_run=args.dry_run)
build_repos(folder, dry_run=args.dry_run)
build_html(folder, dry_run=args.dry_run) build_html(folder, dry_run=args.dry_run)

View File

@@ -81,6 +81,7 @@ INDEX_TEMPLATE = r"""<!DOCTYPE html>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aetoskia Developer Documentation</title> <title>Aetoskia Developer Documentation</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<style> <style>
:root {{ :root {{
--bg: #0d1117; --bg: #0d1117;

View File

@@ -41,6 +41,36 @@ repos:
lib: site lib: site
mcp: { bundle: docs/mcp, server: docforge, port: 8001 } mcp: { bundle: docs/mcp, server: docforge, port: 8001 }
- name: doc-weaver
source: ../react/doc-weaver
title: Doc Weaver
description: TypeScript documentation compiler using TypeDoc + JSDoc (RDFC), generating a TypeDoc site and a doc-forge-shaped MCP bundle for React packages.
section: libraries
docs:
wiki: site
lib: site
mcp: { bundle: docs/mcp, server: doc-weaver, port: 8010 }
- name: react-auth
source: ../react/react-auth
title: React Auth
description: JWT-backed React authentication UI — AuthProvider context, login/register screen, profile screens, and an axios client that carries bearer tokens and handles 401s.
section: libraries
docs:
wiki: site
lib: site
mcp: { bundle: docs/mcp, server: react-auth, port: 8011 }
- name: react-openapi
source: ../react/react-openapi
title: React OpenAPI
description: Spec-driven React admin UI — derives CRUD routes, tables, forms, foreign-key selects and SSE streams from an OpenAPI document at runtime.
section: libraries
docs:
wiki: site
lib: site
mcp: { bundle: docs/mcp, server: react-openapi, port: 8012 }
- name: dagpipe - name: dagpipe
source: ../dagpipe source: ../dagpipe
title: DAG Pipe title: DAG Pipe

Binary file not shown.

View File

@@ -675,6 +675,15 @@
</span> </span>
</a> </a>
</li>
<li class="md-nav__item">
<a href="#cross-kind-links" class="md-nav__link">
<span class="md-ellipsis">
🔗 Cross-kind links
</span>
</a>
</li> </li>
<li class="md-nav__item"> <li class="md-nav__item">
@@ -782,6 +791,17 @@ built-in templates entirely.</p>
</ul> </ul>
<p>Commit <code>docs/mkdocs.{kind}.yml</code> so served docs are reproducible from source.</p> <p>Commit <code>docs/mkdocs.{kind}.yml</code> so served docs are reproducible from source.</p>
<hr /> <hr />
<h2 id="cross-kind-links">🔗 Cross-kind links</h2>
<p>Kinds are separate MkDocs sites served side by side under <code>/&lt;repo&gt;/&lt;kind&gt;/</code>,
so a wiki page may link to the library reference with a source-relative path
such as <code>../lib/13_library_registry/</code>. MkDocs only rewrites links that point
inside <code>docs_dir</code>; anything reaching a sibling kind is emitted verbatim and,
under <code>use_directory_urls</code>, resolves into <code>&lt;kind&gt;/&lt;kind&gt;/</code> and breaks.</p>
<p>The <code>docforge-linkfix</code> plugin (part of doc-forge, enabled in the wiki
template) fixes this at render time: it rewrites <code>../lib/</code>, <code>../api/</code>, and
<code>../wiki/</code> links to climb to the repository root, so they resolve correctly
however deeply the page is nested.</p>
<hr />
<h2 id="related">Related</h2> <h2 id="related">Related</h2>
<ul> <ul>
<li><a href="../04_mcp_guide/">04 – MCP Guide</a></li> <li><a href="../04_mcp_guide/">04 – MCP Guide</a></li>

File diff suppressed because one or more lines are too long

Binary file not shown.

1
doc-weaver/lib/.nojekyll Normal file
View File

@@ -0,0 +1 @@
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.

View File

@@ -0,0 +1 @@
window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzwMKVNfWAgCbHgqm"

View File

@@ -0,0 +1,22 @@
:root {
--light-code-background: #FFFFFF;
--dark-code-background: #1E1E1E;
}
@media (prefers-color-scheme: light) { :root {
--code-background: var(--light-code-background);
} }
@media (prefers-color-scheme: dark) { :root {
--code-background: var(--dark-code-background);
} }
:root[data-theme='light'] {
--code-background: var(--light-code-background);
}
:root[data-theme='dark'] {
--code-background: var(--dark-code-background);
}
pre, code { background: var(--code-background); }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
window.navigationData = "eJydmF1v2yAUhv+Ld9uubfqxtZftNE2bukZt76oqIjZOaG2wMK7WTfvvA2MTsOFAdpn4fZ9zfM6BQJ7+ZAL/EtlV1vI8O8gaJLbyQ82KrsLtkfzy41bUlXzySmiRXS0OsnxLqoJjml09GXPOqgrn4lbbwpwPg7A2Qo09O7k8Oz0++3tgiAUuUVeJxzZntCSbr4wD1EEsBnHZi0PkLyz/oR4BOJa/agXA0O8KU+pRA3Du1i+yIDCHjRqAs+QsDmqMKETaYIo5EvhbVyMqsVAzR+1WaQutjXFv8+Yet6zjOTgno7yWKVvyEN1ke9cIwihENskyIw1Ra0QoQBoeh9zyTa87WoAzIl9vPWqCnJvlA+ZvGFoAktOOmhDnHpeRuee4jMy96kX1hvXsLxUGovVa/X2jtUFuRx/fGyw7+L1lUM2lUEih7N+LFoaIfTlkCwBWL6l7SYhiJfXIZCMAmpWWYEnU+KwOzPik5hXxYlbyQdIG7o562dG8D2kY6rkLunDis1qtKv+7KMBqVCRls+7kdzfaAWS1g9oGIM2+4/twbcOM+2xvFXlz2AlSARUwkqQSwPvlPOUd3eeM1cRZKBB8VHuKYZejYqjAvD0aBvhQf/bXZtCuXG1SkUILiVCBeYlyOILrngQ8v0g8jLjVCoSaA4COhDbDpEiuGZ5ZVuDQwOpnSU3wnIUm9R9gRgiV2nMiCtK0MEKbnYuCuEEZ4bm/oar6U45STCDHl59OzhcWaOgaVPyxs0lNmP24vyFO0DpAHNQu+XThbOj+A707gxOsa4ImHJdKKDkqjZ+oxokR5kYwSvCwEgky8UG7J6JEkN+p+Y/yyPYpmyvXslzdmb/b6vgqOKEb//wY+8oI025xFWpbUr7fY2QvGPeNfHDHCFSrRo07pXH0YAHbrFzqRxrTvbJ2jNEAS8RFcCGE8b0N3Ib7C8lhEbpqWeydMqmd4UvRZAv0Rpi6oW0RuDSG6mRFmrmjJ60REyuYrd3nQOE57/cjDgeYmt2IJ4vP8OUw2BQniDHO+2FXqSUbikTH/ZdPC26EaQdz3IqHOTrU5B3cMUbX2n+FmFijQVS79ucrV2T31jfx9kj1rQ3f3FeDbrXTJfXA83+APZweqnHMJ1Jl/vwP60UCmw=="

View File

@@ -0,0 +1 @@
window.searchData = "eJy9nFtz27oRx7+L8urYwpVUHpvTTi+TNpNk+uLJZGSZTnSi21BS2tST734AEiR3uQsKlOQ+JbKwu38APywuBPU8Kbf/2U/e3D9Pvi83j5M38mayma+LyZvJvlzcLVbLu8V2vZ5vHveTm8mxXLkv1tvH46rY37kCX1yBL02B22+H9cqVWqzm+33hnE4mv24av1a3jh+Oy9Xj29qodfp03CwOy+2GcQvLMzFuJrt5WWwOnGQ2/r4ofxQj4sPyZ8cn7RprztRWXM+Xm7j6W/91ktghjXfrxe718bBcxTu/LZGq+2uxKcr5oXi32H0o9ttjuSj2A73Q+ecM07qjq0WcB+c1SUVT+PzIqJW5dh1sSdxHq+38sSj3d4efu+Jxu3hdf2Y7KxT9goum9lp53Hxyhr9tF3/fb2PcRUJg29MNF6kUq+uxeJofV4dP+8V287T8+pdtOU4btb+CPmlsKzDU/F+7Skorbrk5FOXTfDHcOdj4CsrEVHZt5+zKn++3TsoVdL2qvO0ab2M19lzGJB9CP11BL3D1QmKrfy4XGty8kMjd6vgVTCTny2wdvZDQ/ffl7s9luS3ffisW7vtrMOB9Ft7novP5QvK7wfbx4Gexrz+vO+Y6p9erAJ5r3GRSRBYC9VfD89Z0lgnTeXQB/7EE6y+vCTkLBU4nvaCLT7++Xg+/F4tDrLW7aHW5M+IlD3o21unx3TeLhf4O2zMpdLC4PPRufvg2LnSwuDz0fvl1Mz8cy5GtDs0uF+FGkxuBA0mJFwHNLhexLtYPbniPk9AZnSWgN9beVUnhtIK63KVjLY06EGsMdaEql3c4jD+2w4dFbKveSOhwKKEzOktAr8Pfl9u07BoK/n/SKww2Jr82tYkNsHrKGxm/szpPAjcLN1P4wGzcrB9Sd3iL7WrlAr/r1RHvonqusU1q37bi+Z2m29uv3Ba78vkejvBBKcTsOmr2883ysPxfkSaiKX2tlnjyreuC+YXQPyH5J5qib3eBHtXh96F4Qku2H/NyOX+IUBcKXxAZc+8s3FrVr15p6oXwt+W+tOWSzzgqU3/Q59XxTc25R3anK8zVZEDP+3l5iA3HuJrK6opa1vMd6vvTOoLFFTVULpZPPz8U88WY/kF2l+qJUfntuJ5vXnuLE1h2BceemP7VW/4GI8TqDmIQ4zENACrFrwBaryfOt1hpfeOLlY093UpXlXy6xSkkLs893RqhN+l06yKxQyuxEUJPrs4uErk9RpemIzTWXl5K4rVGzqvO0wtJHT4rHKE04azwIqHJZ4UjNI87K7xIfvpZ4XkZLOWscGwFYvOifwLWfDoxM8Kiw2eJYAZ6t9j96bh5jB86RPy3dmNmHVSZSOe5vxT/vUjMq8bFWEmdn3jS/nGZtNrB9YWd2FqniUvZaY8RKPP+Yzz/APPT9t3b963QEGlIZd/2CsQZIcHGfeNG9HFxAM8+z1X1Cjsb3YykmeADAN01p8tAm/3Ttlxfrhi6uqreSEKj5818NmvLjdt+ekUn1/ed785oDFVdHQaUfCQVTZXzcaDq52p6KPaHcxQhu0v1YCaqqyCBqPr/LBKh2Jeu2CARMOs4Ij9ix3CYMI5bg9M1ZdSfl19OykhOKlRS5ymWScrj5kxVteXFarSYaTWN3Mvq3+p5Fb6NRh1wHLmCQ0K4cuEw7fe63DnBBu7VkIChbLPlfBru5YGgkbsyJGCoXsJ+ZyBY/FSFxGuKVivhcMRzTsjoaQmJ2Ea6rI7RVUusST0xh+26ugt3TkC6GqcjYLF7aIpc0m/s/cFo17moJSh9TmByTZAEq0pc0Hgk23ON184054SIPOQhcUK5hAX1UMKKPsmhOasuWv/91EPagZD9RxRMoKdTlx4G3NPbJDQZurzUFDkzRO8hOhdi3RQ5M0T/sS0XY9eWOTPIcE+4CKd74vNN2E+/eZ74ydjlQveVvFW3M1f2aVmsHv3l9eYwctE+u3Hej9V/P4di/y788sMXrkvfTSc399MbLW+nZvb58819Y1x9Uf2h8dH9pTIU7pPgDAUxFMhQuk+SM5TEUCJD5T4pzlARQ4UMtfukb5S9zTWy08ROIzvjPpkbNb0Vbotuw3+QB0M8GOTBuk8ZE9kSO4vsMvcpZ+wyYpchu9x9mnFNlBPDHBnOfG9Om7oKwVV2RnzMMBEeELdiprIFhUn0aKpwUpwtwxMGSnhMBNfBgiIlMFPCkyIMZ0upEhgr4WkRlrOlZAmMlvCciMw3c656xhQqgakSHhbB8SEoWAKTJTwwYsbZUrgEpkt4ZuSUs6V8CQyY8KxIPmFQsAQmS3pYJEeWpGRJTJb0sEiOLEnJkr1UJaO9JJlshdGSnhY3mLhMR9mSmC3pcZEcl5KyJTFb0tMiLRuYsiUxW9LjIrmcJSlbErMlPS5u384FpnBJDJes4OLAlBQuieGSs2hrUbYkZktNYxVWlC2F2VIeF8VOn4rCpTBcyuOiBBeYsqV6U6GKgqmY2RCzpTwuihtNirKlMFvK06L4WZiypTBbyuOiuEStKFsKs6U8LYrrYkXRUhgt5WlR7IBQlC2F2VIeF5WxxhQuheHSnhfFZWpN4dIYLl3Bxc7mmsKlMVza86JZMjWlS2O6tOdFs7laU7p0b7FVrbbYBZ5mFlwYL+2B0SxemuKlMV7aE6N1s4jRhlvEaEqaxqRpD4/mpnVNSdOYNO3Z0Vwy0RQ0jUHTs9hSRFPONObMTGNLEUM5M5gzI6K5xFDODObMVJyxKd9QzgzmzFScsYQbypnBnBkdWwQZipnpLexNbBFkmBU9pszY2CLIULQMRst4Wky7zDbsMttQygymzHhwDJfADaXMYMqMB8ewI8xQzAzGzHpyDLuksZQzizmzIjbtWIqZxZhZD47hxoallFlMmfXcGG5sWAqZxZBZz41hk7+llFlMma32j+zYsBQz29s5enIMOzYss3vEnFnPi2Wzv6V0WUyX9cBYNvtbipfFeFkPjJXtpllxhFsKmsWgZR4dy60UMspZhjnLRKy/M8pZhjnLPDrWcHXPKGgZBi2r0hkXl3KWYc6yKplxYyOjmGUYs6xKZtwGJ6OUZZiyrNpJspopZFnvjCI6T2bMMQVmLIvOkxlFLMOIZbNYLsgoVxnmKp/GMmdOucoxV7lHhZOcU6xyjFXuQeGmqpxClWOochUbCTmlKsdU5dVCn7WlVOWYqrxa6HOtnFOqckxVXq3z2fpSqnJMVV7tITmac0pV3jv9im4hc+b8C1OVV8t8bjeWU6pyTNUsejwxo1SFP1VHuj+K8lA8/q0+2r2/r57ug4sVz5Mv4djXpeNwovw8cRn3zfOvX90xr/sETnr9dz5g9XMhi+bnPTpXwJNIctTcGy/r++adJ7dOb125pXiSr94Dlc6Z0p0zt/WrzB2SaU7Bc/XOY3c7zrWZqm2ztCpzj3JBC4J6CxEcp9W/Pe3vvEnZeZPT2m42TfXWPAEB/mbAXx4aMg0Z8NAG+AO1laG2btwl+mufnoCeBgQqGRzOUh0iaNwWryPQJrsIr82AOmagjgE+ldYHBbwRDxgBykSAT6dVsmBuqAKpU+A4dK9Jqzrz/B40JRgtOgtQp3Uz/3C5cw0atxnYacOQPv4HeoFXHdohS8M83CsFmQIgbtI6iYxikL6kSnLR/EgNgAaMjDQZ9T0a0CqgUUKbpIlZz3f9KmmQmHRaJgaXGkDrAj+mSUhpgws85wdzIahkFhJmnljL5i1v0HE56Lg03rnZC9RRhZa3aZDXz2wBBABsYWojGdKkCpnEpLr+gToCNJxN64D2LWlQVZCAVJoObviCWcqkdV71+gnwADrOyCQP9Y0K0PcgScvQazJt4DWvboB+A3pEyHMmbdi0tzFAKwNvuoE8Lc137716p328FMBLpdW1vgzaXioAXQBQ0Gld0L0DAbgEac+kDcHaza5+JxQIAp50GlW1J37RDapnx+g6VJeXQQUB7Da1E8lNINCHgFsV5uo8bQFa3fYEVQSessQe7N2rBCMAJEERmM3SRkD3fjmoJViRqLSZvZosmD0PXGKnO6qusHVOwIhs2nyEMzyFgQWHTRuELKESNJFMA4B5fwv0IABVhEqaRL/+R/w6T8BRYtc1PwcJAAD9P8YH+KnOzhkYy2lTX+OsRwEYMMkN0//FKdTkQFgiCeBHqAAKcF8/1hEnTMHmT68q99o49ArA0GmrB+Y1PJTz4Zo3LbmSN2FQB09Hz0bRN2OAV5A9bHprgsv3KH/I0fkDvB8EVMGtWVqm7t6oBgyDNCTCOsqkjTJ64RqoA2PNhhVwlljb3tV4oBXgIhqnadiEX4AF3TAqF3y+mexc7l0tN87i/vOvX38A0aEq0w==";

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>buildCommand | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_cli_commands.html">src/cli/commands</a></li><li><a href="src_cli_commands.buildCommand.html">buildCommand</a></li></ul><h1>Function buildCommand</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="buildcommand" class="tsd-anchor"></a><span class="tsd-kind-call-signature">buildCommand</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Command</span><a href="#buildcommand" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Build documentation.</p>
<p>Mirrors doc-forge's <code>build</code> command:
doc-weaver build --mcp --docs --module <entry></p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Command</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/cli/commands.ts:14</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>serveCommand | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_cli_commands.html">src/cli/commands</a></li><li><a href="src_cli_commands.serveCommand.html">serveCommand</a></li></ul><h1>Function serveCommand</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="servecommand" class="tsd-anchor"></a><span class="tsd-kind-call-signature">serveCommand</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Command</span><a href="#servecommand" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Serve documentation locally.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Command</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/cli/commands.ts:89</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>generateMcpResources | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_cli_mcp-utils.html">src/cli/mcp-utils</a></li><li><a href="src_cli_mcp-utils.generateMcpResources.html">generateMcpResources</a></li></ul><h1>Function generateMcpResources</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="generatemcpresources" class="tsd-anchor"></a><span class="tsd-kind-call-signature">generateMcpResources</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">typedocJson</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">projectName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">outDir</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#generatemcpresources" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Generate the doc-forge-compatible MCP bundle from TypeDoc reflection JSON.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">typedocJson</span>: <span class="tsd-signature-type">any</span></span></li><li><span><span class="tsd-kind-parameter">projectName</span>: <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">outDir</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/cli/mcp-utils.ts:7</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>serveMcp | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_cli_mcp-utils.html">src/cli/mcp-utils</a></li><li><a href="src_cli_mcp-utils.serveMcp.html">serveMcp</a></li></ul><h1>Function serveMcp</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="servemcp" class="tsd-anchor"></a><span class="tsd-kind-call-signature">serveMcp</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">module</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">mcpRoot</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#servemcp" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Serve a pre-generated MCP bundle over stdio/HTTP.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">module</span>: <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">mcpRoot</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/cli/mcp-utils.ts:27</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>defaultTsconfigFor | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_loaders_typedoc-loader.html">src/loaders/typedoc-loader</a></li><li><a href="src_loaders_typedoc-loader.defaultTsconfigFor.html">defaultTsconfigFor</a></li></ul><h1>Function defaultTsconfigFor</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="defaulttsconfigfor" class="tsd-anchor"></a><span class="tsd-kind-call-signature">defaultTsconfigFor</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">root</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#defaulttsconfigfor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Convenience: resolve tsconfig relative to a given project root.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">root</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/loaders/typedoc-loader.ts:59</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,4 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>runTypeDocJson | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_loaders_typedoc-loader.html">src/loaders/typedoc-loader</a></li><li><a href="src_loaders_typedoc-loader.runTypeDocJson.html">runTypeDocJson</a></li></ul><h1>Function runTypeDocJson</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="runtypedocjson" class="tsd-anchor"></a><span class="tsd-kind-call-signature">runTypeDocJson</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">opts</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/src_loaders_typedoc-loader.TypeDocOptions.html" class="tsd-signature-type tsd-kind-interface">TypeDocOptions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><a href="#runtypedocjson" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Run TypeDoc programmatically and return the serialized reflection JSON.</p>
<p>Mirrors doc-forge's static loader: no user code is executed for
documentation semantics; we rely on TypeScript's compiler API.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">opts</span>: <a href="../interfaces/src_loaders_typedoc-loader.TypeDocOptions.html" class="tsd-signature-type tsd-kind-interface">TypeDocOptions</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/loaders/typedoc-loader.ts:25</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,6 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>collectModules | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_models_typedoc.html">src/models/typedoc</a></li><li><a href="src_models_typedoc.collectModules.html">collectModules</a></li></ul><h1>Function collectModules</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="collectmodules" class="tsd-anchor"></a><span class="tsd-kind-call-signature">collectModules</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">project</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><a href="#collectmodules" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Recursively collect every Module-kind reflection in a TypeDoc project.</p>
<p>TypeDoc emits Module reflections for each resolved entry point (one per
source file/package). When a project has no module children (a single flat
entry point), the project itself is treated as a single module so that the
output always has at least one module - matching doc-forge's model.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">project</span>: <span class="tsd-signature-type">any</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/models/typedoc.ts:14</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>reflectionKindName | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_models_typedoc.html">src/models/typedoc</a></li><li><a href="src_models_typedoc.reflectionKindName.html">reflectionKindName</a></li></ul><h1>Function reflectionKindName</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="reflectionkindname" class="tsd-anchor"></a><span class="tsd-kind-call-signature">reflectionKindName</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">kind</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#reflectionkindname" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Human-readable name for a reflective kind (used in diagnostics).</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">kind</span>: <span class="tsd-signature-type">number</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/models/typedoc.ts:64</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>resolveModulePath | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_models_typedoc.html">src/models/typedoc</a></li><li><a href="src_models_typedoc.resolveModulePath.html">resolveModulePath</a></li></ul><h1>Function resolveModulePath</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="resolvemodulepath" class="tsd-anchor"></a><span class="tsd-kind-call-signature">resolveModulePath</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">mod</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">project</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#resolvemodulepath" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Derive a stable, filesystem-safe module path from a TypeDoc reflection.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">mod</span>: <span class="tsd-signature-type">any</span></span></li><li><span><span class="tsd-kind-parameter">project</span>: <span class="tsd-signature-type">any</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/models/typedoc.ts:31</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>sanitize | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_models_typedoc.html">src/models/typedoc</a></li><li><a href="src_models_typedoc.sanitize.html">sanitize</a></li></ul><h1>Function sanitize</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="sanitize" class="tsd-anchor"></a><span class="tsd-kind-call-signature">sanitize</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">value</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#sanitize" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Replace characters that are unsafe in a resource path / filename.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">value</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/models/typedoc.ts:55</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>classifyReact | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_docstring.html">src/renderers/docstring</a></li><li><a href="src_renderers_docstring.classifyReact.html">classifyReact</a></li></ul><h1>Function classifyReact</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="classifyreact" class="tsd-anchor"></a><span class="tsd-kind-call-signature">classifyReact</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">kind</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#classifyreact" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Classify a symbol as a React component or hook where possible.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">name</span>: <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">kind</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/docstring.ts:109</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>mapKind | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_docstring.html">src/renderers/docstring</a></li><li><a href="src_renderers_docstring.mapKind.html">mapKind</a></li></ul><h1>Function mapKind</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="mapkind" class="tsd-anchor"></a><span class="tsd-kind-call-signature">mapKind</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">kind</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#mapkind" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Map TypeDoc numerical ReflectionKind to doc-weaver DocKind.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">kind</span>: <span class="tsd-signature-type">number</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/docstring.ts:70</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,6 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>renderComment | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_docstring.html">src/renderers/docstring</a></li><li><a href="src_renderers_docstring.renderComment.html">renderComment</a></li></ul><h1>Function renderComment</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="rendercomment" class="tsd-anchor"></a><span class="tsd-kind-call-signature">renderComment</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">comment</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#rendercomment" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Convert a TypeDoc serialized comment into a Google-style markdown docstring.</p>
<p>TypeDoc stores comments as a list of display parts (text/code/inline-tag)
plus blockTags (e.g. @example, @returns, @param). This function renders
them back to a stable markdown string so both MkDocs and MCP consumers
receive the same human-readable documentation.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">comment</span>: <span class="tsd-signature-type">any</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/docstring.ts:11</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>renderParts | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_docstring.html">src/renderers/docstring</a></li><li><a href="src_renderers_docstring.renderParts.html">renderParts</a></li></ul><h1>Function renderParts</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="renderparts" class="tsd-anchor"></a><span class="tsd-kind-call-signature">renderParts</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">parts</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#renderparts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Render a list of TypeDoc comment display parts into markdown.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">parts</span>: <span class="tsd-signature-type">undefined</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/docstring.ts:55</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>bestSignature | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_signature.html">src/renderers/signature</a></li><li><a href="src_renderers_signature.bestSignature.html">bestSignature</a></li></ul><h1>Function bestSignature</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="bestsignature" class="tsd-anchor"></a><span class="tsd-kind-call-signature">bestSignature</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">ref</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#bestsignature" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Choose the best signature string for a reflection.</p>
<p>Functions/methods/constructors keep their declared signatures; variables
and properties expose their type; classes fall back to their name.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">ref</span>: <span class="tsd-signature-type">any</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/signature.ts:77</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>renderSignature | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_signature.html">src/renderers/signature</a></li><li><a href="src_renderers_signature.renderSignature.html">renderSignature</a></li></ul><h1>Function renderSignature</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="rendersignature" class="tsd-anchor"></a><span class="tsd-kind-call-signature">renderSignature</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">signature</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">fallbackName</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#rendersignature" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Render a function/call signature to a TypeScript-like string.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">signature</span>: <span class="tsd-signature-type">any</span></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">fallbackName</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/signature.ts:58</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>renderType | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_renderers_signature.html">src/renderers/signature</a></li><li><a href="src_renderers_signature.renderType.html">renderType</a></li></ul><h1>Function renderType</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><a id="rendertype" class="tsd-anchor"></a><span class="tsd-kind-call-signature">renderType</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">type</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#rendertype" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Render a TypeDoc type object to a compact TypeScript-like string.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">type</span>: <span class="tsd-signature-type">any</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/renderers/signature.ts:4</li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>DocKind | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_models.html">src/models</a></li><li><a href="src_models.DocKind.html">DocKind</a></li></ul><h1>Type Alias DocKind</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">DocKind</span><span class="tsd-signature-symbol">:</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;module&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;namespace&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;class&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;interface&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;enum&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;enum-member&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;type-alias&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;variable&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;function&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;method&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;accessor&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;property&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;constructor&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;signature&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;parameter&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;component&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;hook&quot;</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;unknown&quot;</span></div><div class="tsd-comment tsd-typography"><p>The set of documentable symbol kinds recognized by doc-weaver.</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/models/index.ts:11</li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,2 @@
<!DOCTYPE html><html class="default" lang="en" data-base=".."><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>RefKind | doc-weaver</title><meta name="description" content="Documentation for doc-weaver"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search"><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">doc-weaver</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">doc-weaver</a></li><li><a href="../modules/src_models_typedoc.html">src/models/typedoc</a></li><li><a href="src_models_typedoc.RefKind.html">RefKind</a></li></ul><h1>Variable RefKind<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">RefKind</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">typeof</span> <span class="tsd-signature-type">ReflectionKind</span><span class="tsd-signature-symbol"> = ReflectionKind</span></div><div class="tsd-comment tsd-typography"><p>Re-export TypeDoc's numeric reflection kinds for internal use.</p>
</div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in src/models/typedoc.ts:4</li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">doc-weaver</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

View File

@@ -0,0 +1,6 @@
{
"project": "doc-weaver",
"type": "docforge-model",
"modules_count": 12,
"source": "doc-weaver"
}

View File

@@ -0,0 +1,23 @@
{
"module": "cli.commands",
"content": {
"path": "cli.commands",
"docstring": "",
"objects": {
"buildCommand": {
"name": "buildCommand",
"kind": "function",
"path": "cli.commands.buildCommand",
"signature": "buildCommand(): Command",
"docstring": ""
},
"serveCommand": {
"name": "serveCommand",
"kind": "function",
"path": "cli.commands.serveCommand",
"signature": "serveCommand(): Command",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,16 @@
{
"module": "cli",
"content": {
"path": "cli",
"docstring": "",
"objects": {
"main": {
"name": "main",
"kind": "function",
"path": "cli.main",
"signature": "main(): void",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"module": "cli.mcp-utils",
"content": {
"path": "cli.mcp-utils",
"docstring": "",
"objects": {
"generateMcpResources": {
"name": "generateMcpResources",
"kind": "function",
"path": "cli.mcp-utils.generateMcpResources",
"signature": "generateMcpResources(typedocJson: any, projectName: undefined | string, outDir: string): Promise<void>",
"docstring": ""
},
"serveMcp": {
"name": "serveMcp",
"kind": "function",
"path": "cli.mcp-utils.serveMcp",
"signature": "serveMcp(module: string, mcpRoot: string): Promise<void>",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,135 @@
{
"module": "index",
"content": {
"path": "index",
"docstring": "",
"objects": {
"collectModules": {
"name": "collectModules",
"kind": "unknown",
"path": "index.collectModules",
"signature": "collectModules",
"docstring": ""
},
"defaultTsconfigFor": {
"name": "defaultTsconfigFor",
"kind": "unknown",
"path": "index.defaultTsconfigFor",
"signature": "defaultTsconfigFor",
"docstring": ""
},
"DocKind": {
"name": "DocKind",
"kind": "unknown",
"path": "index.DocKind",
"signature": "DocKind",
"docstring": ""
},
"DocModule": {
"name": "DocModule",
"kind": "unknown",
"path": "index.DocModule",
"signature": "DocModule",
"docstring": ""
},
"DocObject": {
"name": "DocObject",
"kind": "unknown",
"path": "index.DocObject",
"signature": "DocObject",
"docstring": ""
},
"DocProject": {
"name": "DocProject",
"kind": "unknown",
"path": "index.DocProject",
"signature": "DocProject",
"docstring": ""
},
"generateHumanDocs": {
"name": "generateHumanDocs",
"kind": "unknown",
"path": "index.generateHumanDocs",
"signature": "generateHumanDocs",
"docstring": ""
},
"generateMcpResources": {
"name": "generateMcpResources",
"kind": "unknown",
"path": "index.generateMcpResources",
"signature": "generateMcpResources",
"docstring": ""
},
"HumanDocsOptions": {
"name": "HumanDocsOptions",
"kind": "unknown",
"path": "index.HumanDocsOptions",
"signature": "HumanDocsOptions",
"docstring": ""
},
"main": {
"name": "main",
"kind": "unknown",
"path": "index.main",
"signature": "main",
"docstring": "# doc-weaver\n\nPublic library surface for doc-weaver, the TypeScript counterpart to\n`doc-forge`. It compiles TypeDoc reflection (built from TypeScript + JSDoc)\ninto two renderers:\n\n- a human-facing TypeDoc site (the MkDocs parallel), and\n- a machine-facing MCP JSON bundle (`index.json`, `nav.json`, `modules/`)\n whose shape is byte-compatible with `doc-forge`.\n\nProgrammatic usage:\n\n import { runTypeDocJson, TypeDocJsonToMCP } from 'doc-weaver';\n const json = await runTypeDocJson({ entryPoints: ['src/index.ts'] });\n const bundle = new TypeDocJsonToMCP(json, 'my-app').transform();"
},
"McpBundle": {
"name": "McpBundle",
"kind": "unknown",
"path": "index.McpBundle",
"signature": "McpBundle",
"docstring": ""
},
"MCPServer": {
"name": "MCPServer",
"kind": "unknown",
"path": "index.MCPServer",
"signature": "MCPServer",
"docstring": ""
},
"RefKind": {
"name": "RefKind",
"kind": "unknown",
"path": "index.RefKind",
"signature": "RefKind",
"docstring": ""
},
"resolveModulePath": {
"name": "resolveModulePath",
"kind": "unknown",
"path": "index.resolveModulePath",
"signature": "resolveModulePath",
"docstring": ""
},
"runTypeDocJson": {
"name": "runTypeDocJson",
"kind": "unknown",
"path": "index.runTypeDocJson",
"signature": "runTypeDocJson",
"docstring": ""
},
"serveMcp": {
"name": "serveMcp",
"kind": "unknown",
"path": "index.serveMcp",
"signature": "serveMcp",
"docstring": ""
},
"TypeDocJsonToMCP": {
"name": "TypeDocJsonToMCP",
"kind": "unknown",
"path": "index.TypeDocJsonToMCP",
"signature": "TypeDocJsonToMCP",
"docstring": ""
},
"TypeDocOptions": {
"name": "TypeDocOptions",
"kind": "unknown",
"path": "index.TypeDocOptions",
"signature": "TypeDocOptions",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,74 @@
{
"module": "loaders.typedoc-loader",
"content": {
"path": "loaders.typedoc-loader",
"docstring": "",
"objects": {
"TypeDocOptions": {
"name": "TypeDocOptions",
"kind": "interface",
"path": "loaders.typedoc-loader.TypeDocOptions",
"signature": "TypeDocOptions",
"docstring": "",
"members": {
"entryPoints": {
"name": "entryPoints",
"kind": "property",
"path": "loaders.typedoc-loader.TypeDocOptions.entryPoints",
"signature": "entryPoints: string[]",
"docstring": ""
},
"entryPointStrategy": {
"name": "entryPointStrategy",
"kind": "property",
"path": "loaders.typedoc-loader.TypeDocOptions.entryPointStrategy",
"signature": "entryPointStrategy: \"resolve\" | \"expand\" | \"merge\" | \"packages\"",
"docstring": "TypeDoc entry-point strategy. Defaults to 'resolve'."
},
"name": {
"name": "name",
"kind": "property",
"path": "loaders.typedoc-loader.TypeDocOptions.name",
"signature": "name: string",
"docstring": ""
},
"plugin": {
"name": "plugin",
"kind": "property",
"path": "loaders.typedoc-loader.TypeDocOptions.plugin",
"signature": "plugin: string[]",
"docstring": "Optional TypeDoc theme/plugin passthroughs"
},
"skipErrorChecking": {
"name": "skipErrorChecking",
"kind": "property",
"path": "loaders.typedoc-loader.TypeDocOptions.skipErrorChecking",
"signature": "skipErrorChecking: boolean",
"docstring": "Skip TypeScript error checking before conversion. Defaults to true so\r\ndocumentation still generates when a project has unrelated type errors."
},
"tsconfig": {
"name": "tsconfig",
"kind": "property",
"path": "loaders.typedoc-loader.TypeDocOptions.tsconfig",
"signature": "tsconfig: string",
"docstring": ""
}
}
},
"defaultTsconfigFor": {
"name": "defaultTsconfigFor",
"kind": "function",
"path": "loaders.typedoc-loader.defaultTsconfigFor",
"signature": "defaultTsconfigFor(root: string): string",
"docstring": ""
},
"runTypeDocJson": {
"name": "runTypeDocJson",
"kind": "function",
"path": "loaders.typedoc-loader.runTypeDocJson",
"signature": "runTypeDocJson(opts: TypeDocOptions): Promise<any>",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,120 @@
{
"module": "models",
"content": {
"path": "models",
"docstring": "",
"objects": {
"DocModule": {
"name": "DocModule",
"kind": "interface",
"path": "models.DocModule",
"signature": "DocModule",
"docstring": "A single module (typically one source file or package).",
"members": {
"docstring": {
"name": "docstring",
"kind": "property",
"path": "models.DocModule.docstring",
"signature": "docstring: string",
"docstring": ""
},
"objects": {
"name": "objects",
"kind": "property",
"path": "models.DocModule.objects",
"signature": "objects: Record<string, DocObject>",
"docstring": ""
},
"path": {
"name": "path",
"kind": "property",
"path": "models.DocModule.path",
"signature": "path: string",
"docstring": ""
}
}
},
"DocObject": {
"name": "DocObject",
"kind": "interface",
"path": "models.DocObject",
"signature": "DocObject",
"docstring": "A documentation object with an optional tree of members.",
"members": {
"docstring": {
"name": "docstring",
"kind": "property",
"path": "models.DocObject.docstring",
"signature": "docstring: string",
"docstring": ""
},
"kind": {
"name": "kind",
"kind": "property",
"path": "models.DocObject.kind",
"signature": "kind: DocKind",
"docstring": ""
},
"members": {
"name": "members",
"kind": "property",
"path": "models.DocObject.members",
"signature": "members: Record<string, DocObject>",
"docstring": ""
},
"name": {
"name": "name",
"kind": "property",
"path": "models.DocObject.name",
"signature": "name: string",
"docstring": ""
},
"path": {
"name": "path",
"kind": "property",
"path": "models.DocObject.path",
"signature": "path: string",
"docstring": ""
},
"signature": {
"name": "signature",
"kind": "property",
"path": "models.DocObject.signature",
"signature": "signature: string",
"docstring": ""
}
}
},
"DocProject": {
"name": "DocProject",
"kind": "interface",
"path": "models.DocProject",
"signature": "DocProject",
"docstring": "The root semantic model produced by the loader.",
"members": {
"modules": {
"name": "modules",
"kind": "property",
"path": "models.DocProject.modules",
"signature": "modules: DocModule[]",
"docstring": ""
},
"name": {
"name": "name",
"kind": "property",
"path": "models.DocProject.name",
"signature": "name: string",
"docstring": ""
}
}
},
"DocKind": {
"name": "DocKind",
"kind": "type-alias",
"path": "models.DocKind",
"signature": "DocKind: \"module\" | \"namespace\" | \"class\" | \"interface\" | \"enum\" | \"enum-member\" | \"type-alias\" | \"variable\" | \"function\" | \"method\" | \"accessor\" | \"property\" | \"constructor\" | \"signature\" | \"parameter\" | \"component\" | \"hook\" | \"unknown\"",
"docstring": "The set of documentable symbol kinds recognized by doc-weaver."
}
}
}
}

View File

@@ -0,0 +1,44 @@
{
"module": "models.typedoc",
"content": {
"path": "models.typedoc",
"docstring": "",
"objects": {
"RefKind": {
"name": "RefKind",
"kind": "component",
"path": "models.typedoc.RefKind",
"signature": "RefKind: typeof ReflectionKind",
"docstring": "Re-export TypeDoc's numeric reflection kinds for internal use."
},
"collectModules": {
"name": "collectModules",
"kind": "function",
"path": "models.typedoc.collectModules",
"signature": "collectModules(project: any): any[]",
"docstring": ""
},
"reflectionKindName": {
"name": "reflectionKindName",
"kind": "function",
"path": "models.typedoc.reflectionKindName",
"signature": "reflectionKindName(kind: number): string",
"docstring": ""
},
"resolveModulePath": {
"name": "resolveModulePath",
"kind": "function",
"path": "models.typedoc.resolveModulePath",
"signature": "resolveModulePath(mod: any, project: any): string",
"docstring": ""
},
"sanitize": {
"name": "sanitize",
"kind": "function",
"path": "models.typedoc.sanitize",
"signature": "sanitize(value: string): string",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,37 @@
{
"module": "renderers.docstring",
"content": {
"path": "renderers.docstring",
"docstring": "",
"objects": {
"classifyReact": {
"name": "classifyReact",
"kind": "function",
"path": "renderers.docstring.classifyReact",
"signature": "classifyReact(name: string, kind: string): string",
"docstring": ""
},
"mapKind": {
"name": "mapKind",
"kind": "function",
"path": "renderers.docstring.mapKind",
"signature": "mapKind(kind: number): string",
"docstring": ""
},
"renderComment": {
"name": "renderComment",
"kind": "function",
"path": "renderers.docstring.renderComment",
"signature": "renderComment(comment: any): string",
"docstring": ""
},
"renderParts": {
"name": "renderParts",
"kind": "function",
"path": "renderers.docstring.renderParts",
"signature": "renderParts(parts: undefined | any[]): string",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,81 @@
{
"module": "renderers.human-docs",
"content": {
"path": "renderers.human-docs",
"docstring": "",
"objects": {
"HumanDocsOptions": {
"name": "HumanDocsOptions",
"kind": "interface",
"path": "renderers.human-docs.HumanDocsOptions",
"signature": "HumanDocsOptions",
"docstring": "Generate the human-facing documentation site using TypeDoc.\n\nTypeDoc plays the same role for doc-weaver that MkDocs plays for\ndoc-forge: it renders the compiled model into a browsable site. The\nmachine-facing output (MCP JSON) is produced separately.",
"members": {
"entryPoints": {
"name": "entryPoints",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.entryPoints",
"signature": "entryPoints: string[]",
"docstring": ""
},
"entryPointStrategy": {
"name": "entryPointStrategy",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.entryPointStrategy",
"signature": "entryPointStrategy: \"resolve\" | \"expand\" | \"merge\" | \"packages\"",
"docstring": "TypeDoc entry-point strategy. Defaults to 'resolve'."
},
"name": {
"name": "name",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.name",
"signature": "name: string",
"docstring": ""
},
"options": {
"name": "options",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.options",
"signature": "options: string",
"docstring": "Optional path to a typedoc.json config."
},
"out": {
"name": "out",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.out",
"signature": "out: string",
"docstring": ""
},
"plugin": {
"name": "plugin",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.plugin",
"signature": "plugin: string[]",
"docstring": "Optional TypeDoc plugins (e.g. typedoc-plugin-markdown)."
},
"skipErrorChecking": {
"name": "skipErrorChecking",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.skipErrorChecking",
"signature": "skipErrorChecking: boolean",
"docstring": "Skip TypeScript error checking. Defaults to true."
},
"tsconfig": {
"name": "tsconfig",
"kind": "property",
"path": "renderers.human-docs.HumanDocsOptions.tsconfig",
"signature": "tsconfig: string",
"docstring": ""
}
}
},
"generateHumanDocs": {
"name": "generateHumanDocs",
"kind": "function",
"path": "renderers.human-docs.generateHumanDocs",
"signature": "generateHumanDocs(opts: HumanDocsOptions): Promise<string>",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,97 @@
{
"module": "renderers.mcp-renderer",
"content": {
"path": "renderers.mcp-renderer",
"docstring": "",
"objects": {
"TypeDocJsonToMCP": {
"name": "TypeDocJsonToMCP",
"kind": "class",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP",
"signature": "TypeDocJsonToMCP",
"docstring": "Transform a TypeDoc serialized reflection JSON into a doc-forge-compatible\nMCP bundle.\n\nThe produced shape matches doc-forge exactly:\n\n- `index.json` -> `{ project, type, modules_count, source }`\n- `nav.json` -> `[ { module, resource } ]` with `docs://modules/{module}`\n- `modules/*.json` -> `{ module, content: { path, docstring, objects } }`\n\nObjects are rendered recursively with\n`{ name, kind, path, signature, docstring, members? }`.",
"members": {
"constructor": {
"name": "constructor",
"kind": "constructor",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.constructor",
"signature": "TypeDocJsonToMCP(project: any, projectName?: string): TypeDocJsonToMCP",
"docstring": ""
},
"project": {
"name": "project",
"kind": "property",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.project",
"signature": "project: any",
"docstring": ""
},
"projectName": {
"name": "projectName",
"kind": "property",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.projectName",
"signature": "projectName: string",
"docstring": ""
},
"collectMembers": {
"name": "collectMembers",
"kind": "method",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.collectMembers",
"signature": "collectMembers(ref: any, parentPath: string): Record<string, unknown>",
"docstring": ""
},
"renderModule": {
"name": "renderModule",
"kind": "method",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.renderModule",
"signature": "renderModule(mod: any, modPath: string): Record<string, unknown>",
"docstring": ""
},
"renderObject": {
"name": "renderObject",
"kind": "method",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.renderObject",
"signature": "renderObject(ref: any, parentPath: string): Record<string, unknown>",
"docstring": ""
},
"transform": {
"name": "transform",
"kind": "method",
"path": "renderers.mcp-renderer.TypeDocJsonToMCP.transform",
"signature": "transform(): McpBundle",
"docstring": ""
}
}
},
"McpBundle": {
"name": "McpBundle",
"kind": "interface",
"path": "renderers.mcp-renderer.McpBundle",
"signature": "McpBundle",
"docstring": "",
"members": {
"index": {
"name": "index",
"kind": "property",
"path": "renderers.mcp-renderer.McpBundle.index",
"signature": "index: Record<string, unknown>",
"docstring": ""
},
"modules": {
"name": "modules",
"kind": "property",
"path": "renderers.mcp-renderer.McpBundle.modules",
"signature": "modules: Record<string, { content: Record<string, unknown>; module: string }>",
"docstring": ""
},
"nav": {
"name": "nav",
"kind": "property",
"path": "renderers.mcp-renderer.McpBundle.nav",
"signature": "nav: { module: string; resource: string }[]",
"docstring": ""
}
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
{
"module": "renderers.signature",
"content": {
"path": "renderers.signature",
"docstring": "",
"objects": {
"bestSignature": {
"name": "bestSignature",
"kind": "function",
"path": "renderers.signature.bestSignature",
"signature": "bestSignature(ref: any): string",
"docstring": ""
},
"renderSignature": {
"name": "renderSignature",
"kind": "function",
"path": "renderers.signature.renderSignature",
"signature": "renderSignature(signature: any, fallbackName?: string): string",
"docstring": ""
},
"renderType": {
"name": "renderType",
"kind": "function",
"path": "renderers.signature.renderType",
"signature": "renderType(type: any): string",
"docstring": ""
}
}
}
}

View File

@@ -0,0 +1,67 @@
{
"module": "servers.mcp-server",
"content": {
"path": "servers.mcp-server",
"docstring": "",
"objects": {
"MCPServer": {
"name": "MCPServer",
"kind": "class",
"path": "servers.mcp-server.MCPServer",
"signature": "MCPServer",
"docstring": "MCP server serving a pre-generated doc-weaver bundle.\n\nMirrors `docforge.servers.MCPServer`: it exposes read-only documentation\nresources and a single health-check tool.\n\nResources:\n- `docs://index` - project metadata\n- `docs://nav` - navigation structure\n- `docs://modules/{module}` - individual module documentation",
"members": {
"constructor": {
"name": "constructor",
"kind": "constructor",
"path": "servers.mcp-server.MCPServer.constructor",
"signature": "MCPServer(mcpRoot: string, name: string): MCPServer",
"docstring": ""
},
"mcpRoot": {
"name": "mcpRoot",
"kind": "property",
"path": "servers.mcp-server.MCPServer.mcpRoot",
"signature": "mcpRoot: string",
"docstring": ""
},
"server": {
"name": "server",
"kind": "property",
"path": "servers.mcp-server.MCPServer.server",
"signature": "server: McpServer",
"docstring": ""
},
"readJson": {
"name": "readJson",
"kind": "method",
"path": "servers.mcp-server.MCPServer.readJson",
"signature": "readJson(relPath: string, uri: string): { contents: { mimeType: string; text: string; uri: string }[] }",
"docstring": ""
},
"registerResources": {
"name": "registerResources",
"kind": "method",
"path": "servers.mcp-server.MCPServer.registerResources",
"signature": "registerResources(): void",
"docstring": ""
},
"registerTools": {
"name": "registerTools",
"kind": "method",
"path": "servers.mcp-server.MCPServer.registerTools",
"signature": "registerTools(): void",
"docstring": ""
},
"run": {
"name": "run",
"kind": "method",
"path": "servers.mcp-server.MCPServer.run",
"signature": "run(): Promise<void>",
"docstring": ""
}
}
}
}
}
}

50
doc-weaver/mcp/nav.json Normal file
View File

@@ -0,0 +1,50 @@
[
{
"module": "index",
"resource": "docs://modules/index"
},
{
"module": "cli",
"resource": "docs://modules/cli"
},
{
"module": "cli.commands",
"resource": "docs://modules/cli.commands"
},
{
"module": "cli.mcp-utils",
"resource": "docs://modules/cli.mcp-utils"
},
{
"module": "loaders.typedoc-loader",
"resource": "docs://modules/loaders.typedoc-loader"
},
{
"module": "models",
"resource": "docs://modules/models"
},
{
"module": "models.typedoc",
"resource": "docs://modules/models.typedoc"
},
{
"module": "renderers.docstring",
"resource": "docs://modules/renderers.docstring"
},
{
"module": "renderers.human-docs",
"resource": "docs://modules/renderers.human-docs"
},
{
"module": "renderers.mcp-renderer",
"resource": "docs://modules/renderers.mcp-renderer"
},
{
"module": "renderers.signature",
"resource": "docs://modules/renderers.signature"
},
{
"module": "servers.mcp-server",
"resource": "docs://modules/servers.mcp-server"
}
]

View File

@@ -0,0 +1,576 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="..">
<link rel="next" href="../02_rdfc/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.23">
<title>Overview - doc-weaver</title>
<link rel="stylesheet" href="../assets/stylesheets/main.84d31ad4.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style>
<link rel="stylesheet" href="https://unpkg.com/dracula-prism/dist/css/dracula-prism.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="blue-grey" data-md-color-accent="teal">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#library-overview" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="doc-weaver" class="md-header__button md-logo" aria-label="doc-weaver" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm11 3h5.5L15 1.5zM8 0h8l6 6v12c0 1.11-.89 2-2 2H8a2 2 0 0 1-2-2V2c0-1.11.89-2 2-2m9 16v-2H8v2zm3-4v-2H8v2z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
doc-weaver
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Overview
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href=".." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="./" class="md-tabs__link">
Overview
</a>
</li>
<li class="md-tabs__item">
<a href="../02_rdfc/" class="md-tabs__link">
RDFC Guide
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="doc-weaver" class="md-nav__button md-logo" aria-label="doc-weaver" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm11 3h5.5L15 1.5zM8 0h8l6 6v12c0 1.11-.89 2-2 2H8a2 2 0 0 1-2-2V2c0-1.11.89-2 2-2m9 16v-2H8v2zm3-4v-2H8v2z"/></svg>
</a>
doc-weaver
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Overview
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Overview
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#which-build-should-you-use" class="md-nav__link">
<span class="md-ellipsis">
🧭 Which Build Should You Use?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#architecture" class="md-nav__link">
<span class="md-ellipsis">
🏗️ Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#mcp-bundle-shape" class="md-nav__link">
<span class="md-ellipsis">
🔄 MCP bundle shape
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#read-next" class="md-nav__link">
<span class="md-ellipsis">
➡️ Read Next
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../02_rdfc/" class="md-nav__link">
<span class="md-ellipsis">
RDFC Guide
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="library-overview">Library Overview</h1>
<p><code>doc-weaver</code> turns RDFC-compliant TypeScript JSDoc into maintainable reference
documentation. It never edits source comments; it reads them, renders them, and
assembles documentation from all available material — exactly as <code>doc-forge</code>
does for Python docstrings.</p>
<p>Analysis is static: source is parsed by the TypeScript compiler API via TypeDoc
and is never executed.</p>
<hr />
<h2 id="which-build-should-you-use">🧭 Which Build Should You Use?</h2>
<table>
<thead>
<tr>
<th>Flag</th>
<th>Source</th>
<th>Output</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>--docs</code> (<code>--mkdocs</code>, <code>--lib</code>)</td>
<td>JSDoc comments</td>
<td><code>site/lib/**</code> TypeDoc HTML (the MkDocs parallel)</td>
</tr>
<tr>
<td><code>--mcp</code></td>
<td>JSDoc comments + model</td>
<td><code>docs/mcp/**</code> doc-forge-shaped JSON</td>
</tr>
<tr>
<td><code>--api</code></td>
<td>OpenAPI spec</td>
<td>reserved</td>
</tr>
<tr>
<td><code>--wiki</code></td>
<td>Hand-written markdown</td>
<td><code>docs/wiki/**</code> (unchanged)</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="architecture">🏗️ Architecture</h2>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span>
<span class="normal"><a href="#__codelineno-0-2">2</a></span>
<span class="normal"><a href="#__codelineno-0-3">3</a></span>
<span class="normal"><a href="#__codelineno-0-4">4</a></span>
<span class="normal"><a href="#__codelineno-0-5">5</a></span>
<span class="normal"><a href="#__codelineno-0-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>TypeScript + JSDoc
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> |
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a> TypeDoc (loader) -&gt; serialized reflection JSON
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a> |
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a> TypeDocJsonToMCP (renderer) -&gt; MCP bundle (docs/mcp/)
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a> generateHumanDocs (renderer) -&gt; TypeDoc HTML site (site/lib/)
</span></code></pre></div></td></tr></table></div>
<p>The MCP renderer and the human renderer never depend on each other: both read
the same serialized reflections, so the machine bundle and the human site can
never disagree about a symbol.</p>
<hr />
<h2 id="mcp-bundle-shape">🔄 MCP bundle shape</h2>
<p><code>docs/mcp/**</code> is a self-contained, machine-readable reference whose shape is
byte-compatible with <code>doc-forge</code>:</p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span>
<span class="normal"><a href="#__codelineno-1-2">2</a></span>
<span class="normal"><a href="#__codelineno-1-3">3</a></span>
<span class="normal"><a href="#__codelineno-1-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>docs/mcp/
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a> index.json { project, type: &quot;docforge-model&quot;, modules_count, source }
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a> nav.json [ { module, resource: &quot;docs://modules/&lt;module&gt;&quot; } ]
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a> modules/&lt;module&gt;.json { module, content: { path, docstring, objects } }
</span></code></pre></div></td></tr></table></div>
<p><code>doc-weaver serve --mcp --module doc-weaver</code> serves it over stdio. See the
<a href="../02_rdfc/">RDFC Guide</a> for how to write the JSDoc that fills it.</p>
<hr />
<h2 id="read-next">➡️ Read Next</h2>
<ul>
<li><a href="../02_rdfc/">02 – RDFC Guide</a></li>
</ul>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.sections", "navigation.expand", "navigation.top", "navigation.instant", "navigation.tracking", "navigation.indexes", "content.code.copy", "content.code.annotate", "content.tabs.link", "content.action.edit", "search.highlight", "search.share", "search.suggest", "navigation.tabs", "toc.integrate", "header.autohide", "content.code.select", "content.code.line_numbers", "content.tooltips"], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.f55a23d4.min.js"></script>
</body>
</html>

View File

@@ -0,0 +1,799 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../01_overview/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.23">
<title>RDFC Guide - doc-weaver</title>
<link rel="stylesheet" href="../assets/stylesheets/main.84d31ad4.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style>
<link rel="stylesheet" href="https://unpkg.com/dracula-prism/dist/css/dracula-prism.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="blue-grey" data-md-color-accent="teal">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#rdfc-guide" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="doc-weaver" class="md-header__button md-logo" aria-label="doc-weaver" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm11 3h5.5L15 1.5zM8 0h8l6 6v12c0 1.11-.89 2-2 2H8a2 2 0 0 1-2-2V2c0-1.11.89-2 2-2m9 16v-2H8v2zm3-4v-2H8v2z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
doc-weaver
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
RDFC Guide
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href=".." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../01_overview/" class="md-tabs__link">
Overview
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="./" class="md-tabs__link">
RDFC Guide
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="doc-weaver" class="md-nav__button md-logo" aria-label="doc-weaver" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm11 3h5.5L15 1.5zM8 0h8l6 6v12c0 1.11-.89 2-2 2H8a2 2 0 0 1-2-2V2c0-1.11.89-2 2-2m9 16v-2H8v2zm3-4v-2H8v2z"/></svg>
</a>
doc-weaver
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../01_overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
RDFC Guide
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
RDFC Guide
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
🧭 Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#module-file-level" class="md-nav__link">
<span class="md-ellipsis">
📦 Module (file) level
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#components" class="md-nav__link">
<span class="md-ellipsis">
📦 Components
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hooks" class="md-nav__link">
<span class="md-ellipsis">
📦 Hooks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#types-interfaces-and-members" class="md-nav__link">
<span class="md-ellipsis">
📦 Types, interfaces, and members
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#notes-subsection-grouping" class="md-nav__link">
<span class="md-ellipsis">
📦 Notes subsection grouping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#heading-map" class="md-nav__link">
<span class="md-ellipsis">
📦 Heading map
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#mapping-to-output-kinds" class="md-nav__link">
<span class="md-ellipsis">
📦 Mapping to output kinds
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#enforcement" class="md-nav__link">
<span class="md-ellipsis">
🛡️ Enforcement
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#related" class="md-nav__link">
<span class="md-ellipsis">
Related
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="rdfc-guide">RDFC Guide</h1>
<p>RDFC — the <strong>React Doc-forge Convention</strong> — is the TypeScript counterpart to
doc-forge's <strong>GSDFC</strong>. This page is the practical companion to the convention:
how to write JSDoc so it renders correctly in the TypeDoc site <strong>and</strong> stays
machine-parsable in the MCP bundle and by AI tooling.</p>
<hr />
<h2 id="overview">🧭 Overview</h2>
<ul>
<li>Documentation is the single source of truth and lives in JSDoc comments.</li>
<li><code>doc-weaver</code> compiles comments; it never rewrites or invents them.</li>
<li>Structure follows the TypeScript export hierarchy.</li>
<li>Every public export should have a complete and accurate JSDoc comment.</li>
<li>Types live in signatures; do not duplicate them in prose unless a tag
requires it.</li>
</ul>
<hr />
<h2 id="module-file-level">📦 Module (file) level</h2>
<p>Document the file with a leading block comment. It becomes the module
<code>docstring</code> in the MCP bundle.</p>
<div class="language-ts highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-0-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-0-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-0-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-0-10">10</a></span>
<span class="normal"><a href="#__codelineno-0-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cm">/**</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="cm"> * # Resource list</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="cm"> *</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="cm"> * Renders, filters, and paginates a resource collection.</span>
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="cm"> *</span>
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="cm"> * ---</span>
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="cm"> *</span>
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="cm"> * Notes:</span>
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a><span class="cm"> * - Reads configuration from the OpenAPI spec.</span>
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="cm"> * - Pagination is server-driven.</span>
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><span class="cm"> */</span>
</span></code></pre></div></td></tr></table></div>
<hr />
<h2 id="components">📦 Components</h2>
<p>Document the component function and its props. Components are classified
automatically as <code>kind: "component"</code> (PascalCase name).</p>
<div class="language-ts highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-1-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-1-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-1-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-1-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-1-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-1-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-1-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-1-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-1-10">10</a></span>
<span class="normal"><a href="#__codelineno-1-11">11</a></span>
<span class="normal"><a href="#__codelineno-1-12">12</a></span>
<span class="normal"><a href="#__codelineno-1-13">13</a></span>
<span class="normal"><a href="#__codelineno-1-14">14</a></span>
<span class="normal"><a href="#__codelineno-1-15">15</a></span>
<span class="normal"><a href="#__codelineno-1-16">16</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="cm">/**</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="cm"> * Render a single resource row with actions.</span>
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="cm"> *</span>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="cm"> * @param props - Component props.</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a><span class="cm"> * @param props.item - The resource record to display.</span>
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="cm"> * @param props.onSelect - Invoked when the row is selected.</span>
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7"></a><span class="cm"> * @returns The rendered row element.</span>
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8"></a><span class="cm"> *</span>
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9"></a><span class="cm"> * @example</span>
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10"></a><span class="cm"> * ```tsx</span>
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11"></a><span class="cm"> * &lt;ResourceList item={record} onSelect={handleSelect} /&gt;</span>
</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12"></a><span class="cm"> * ```</span>
</span><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13"></a><span class="cm"> */</span>
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14"></a><span class="k">export</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">ResourceList</span><span class="p">(</span><span class="nx">props</span><span class="o">:</span><span class="w"> </span><span class="kt">ListCellProps</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15"></a><span class="w"> </span><span class="c1">// ...</span>
</span><span id="__span-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16"></a><span class="p">}</span>
</span></code></pre></div></td></tr></table></div>
<hr />
<h2 id="hooks">📦 Hooks</h2>
<p>Hooks are classified automatically as <code>kind: "hook"</code> (name starts with <code>use</code>).</p>
<div class="language-ts highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-2-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-2-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-2-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-2-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-2-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-2-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-2-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-2-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-2-10">10</a></span>
<span class="normal"><a href="#__codelineno-2-11">11</a></span>
<span class="normal"><a href="#__codelineno-2-12">12</a></span>
<span class="normal"><a href="#__codelineno-2-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="cm">/**</span>
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a><span class="cm"> * Subscribe to server-sent events for an item.</span>
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a><span class="cm"> *</span>
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a><span class="cm"> * @param url - SSE endpoint, or `null` to disable.</span>
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5"></a><span class="cm"> * @param handlers - Event handlers keyed by event name.</span>
</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6"></a><span class="cm"> * @returns Connection state and the latest payload.</span>
</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7"></a><span class="cm"> *</span>
</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8"></a><span class="cm"> * @remarks</span>
</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9"></a><span class="cm"> * The subscription is torn down on unmount.</span>
</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10"></a><span class="cm"> */</span>
</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11"></a><span class="k">export</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">useItemSse</span><span class="p">(</span><span class="nx">url</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="nx">handlers</span><span class="o">:</span><span class="w"> </span><span class="kt">ItemSseHandlers</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-2-12"><a id="__codelineno-2-12" name="__codelineno-2-12"></a><span class="w"> </span><span class="c1">// ...</span>
</span><span id="__span-2-13"><a id="__codelineno-2-13" name="__codelineno-2-13"></a><span class="p">}</span>
</span></code></pre></div></td></tr></table></div>
<hr />
<h2 id="types-interfaces-and-members">📦 Types, interfaces, and members</h2>
<p>Document the type and each member. Members become nested <code>members</code> entries in
the MCP bundle.</p>
<div class="language-ts highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1"> 1</a></span>
<span class="normal"><a href="#__codelineno-3-2"> 2</a></span>
<span class="normal"><a href="#__codelineno-3-3"> 3</a></span>
<span class="normal"><a href="#__codelineno-3-4"> 4</a></span>
<span class="normal"><a href="#__codelineno-3-5"> 5</a></span>
<span class="normal"><a href="#__codelineno-3-6"> 6</a></span>
<span class="normal"><a href="#__codelineno-3-7"> 7</a></span>
<span class="normal"><a href="#__codelineno-3-8"> 8</a></span>
<span class="normal"><a href="#__codelineno-3-9"> 9</a></span>
<span class="normal"><a href="#__codelineno-3-10">10</a></span>
<span class="normal"><a href="#__codelineno-3-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="cm">/**</span>
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="cm"> * A single display field extracted from an OpenAPI schema.</span>
</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="cm"> */</span>
</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="k">export</span><span class="w"> </span><span class="kd">interface</span><span class="w"> </span><span class="nx">FieldConfig</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5"></a><span class="w"> </span><span class="cm">/** Property name in the payload. */</span>
</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6"></a><span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">;</span>
</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7"></a><span class="w"> </span><span class="cm">/** `x-edit-as: date` — edit a `date-time` field with a date input. */</span>
</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8"></a><span class="w"> </span><span class="nx">editAs?</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">;</span>
</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9"></a><span class="w"> </span><span class="cm">/** Schema-level `default` used to seed create-form state. */</span>
</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10"></a><span class="w"> </span><span class="nx">defaultValue?</span><span class="o">:</span><span class="w"> </span><span class="kt">unknown</span><span class="p">;</span>
</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11"></a><span class="p">}</span>
</span></code></pre></div></td></tr></table></div>
<hr />
<h2 id="notes-subsection-grouping">📦 Notes subsection grouping</h2>
<p>Group related information using labeled subsections (Markdown bold):</p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span>
<span class="normal"><a href="#__codelineno-4-2">2</a></span>
<span class="normal"><a href="#__codelineno-4-3">3</a></span>
<span class="normal"><a href="#__codelineno-4-4">4</a></span>
<span class="normal"><a href="#__codelineno-4-5">5</a></span>
<span class="normal"><a href="#__codelineno-4-6">6</a></span>
<span class="normal"><a href="#__codelineno-4-7">7</a></span>
<span class="normal"><a href="#__codelineno-4-8">8</a></span>
<span class="normal"><a href="#__codelineno-4-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a>Notes:
</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a> **Guarantees:**
</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3"></a>
</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4"></a> - deterministic output
</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5"></a>
</span><span id="__span-4-6"><a id="__codelineno-4-6" name="__codelineno-4-6"></a> **Lifecycle:**
</span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7"></a>
</span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8"></a> - created during initialization
</span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9"></a> - reused across renders
</span></code></pre></div></td></tr></table></div>
<hr />
<h2 id="heading-map">📦 Heading map</h2>
<p><code>doc-weaver</code> renders JSDoc block tags into stable markdown headings so both
TypeDoc and the MCP bundle agree:</p>
<table>
<thead>
<tr>
<th>JSDoc tag</th>
<th>Rendered heading</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>@param</code></td>
<td><code>**Parameters:**</code></td>
</tr>
<tr>
<td><code>@returns</code> / <code>@return</code></td>
<td><code>**Returns:**</code></td>
</tr>
<tr>
<td><code>@throws</code></td>
<td><code>**Throws:**</code></td>
</tr>
<tr>
<td><code>@example</code></td>
<td><code>**Example:**</code></td>
</tr>
<tr>
<td><code>@deprecated</code></td>
<td><code>**Deprecated:**</code></td>
</tr>
<tr>
<td><code>@see</code></td>
<td><code>**See also:**</code></td>
</tr>
<tr>
<td><code>@remarks</code></td>
<td><code>**Remarks:**</code></td>
</tr>
<tr>
<td><em>other</em></td>
<td><code>**@tag:**</code></td>
</tr>
</tbody>
</table>
<hr />
<h2 id="mapping-to-output-kinds">📦 Mapping to output kinds</h2>
<table>
<thead>
<tr>
<th>TS construct</th>
<th><code>kind</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>interface / type alias</td>
<td><code>interface</code> / <code>type-alias</code></td>
</tr>
<tr>
<td>function component (PascalCase)</td>
<td><code>component</code></td>
</tr>
<tr>
<td>custom hook (<code>use*</code>)</td>
<td><code>hook</code></td>
</tr>
<tr>
<td>plain function</td>
<td><code>function</code></td>
</tr>
<tr>
<td>object / class member</td>
<td><code>property</code> / <code>method</code></td>
</tr>
<tr>
<td>const / let / var</td>
<td><code>variable</code></td>
</tr>
</tbody>
</table>
<p>An explicit <code>@kind</code> tag overrides the inferred kind.</p>
<hr />
<h2 id="enforcement">🛡️ Enforcement</h2>
<p>Unlike doc-forge (which runs <code>pydoclint</code> in CI), <code>doc-weaver</code> performs no
signature linting: TypeDoc extracts whatever JSDoc is present. Keep comments
complete and accurate — they are the single source of truth for both the human
site and the machine bundle.</p>
<hr />
<h2 id="related">Related</h2>
<ul>
<li><a href="../01_overview/">01 – Overview</a></li>
</ul>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.sections", "navigation.expand", "navigation.top", "navigation.instant", "navigation.tracking", "navigation.indexes", "content.code.copy", "content.code.annotate", "content.tabs.link", "content.action.edit", "search.highlight", "search.share", "search.suggest", "navigation.tabs", "toc.integrate", "header.autohide", "content.code.select", "content.code.line_numbers", "content.tooltips"], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.f55a23d4.min.js"></script>
</body>
</html>

396
doc-weaver/wiki/404.html Normal file
View File

@@ -0,0 +1,396 @@
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="/assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.23">
<title>doc-weaver</title>
<link rel="stylesheet" href="/assets/stylesheets/main.84d31ad4.min.css">
<link rel="stylesheet" href="/assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style>
<link rel="stylesheet" href="https://unpkg.com/dracula-prism/dist/css/dracula-prism.css">
<script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="blue-grey" data-md-color-accent="teal">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="/." title="doc-weaver" class="md-header__button md-logo" aria-label="doc-weaver" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm11 3h5.5L15 1.5zM8 0h8l6 6v12c0 1.11-.89 2-2 2H8a2 2 0 0 1-2-2V2c0-1.11.89-2 2-2m9 16v-2H8v2zm3-4v-2H8v2z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
doc-weaver
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="/." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="/01_overview/" class="md-tabs__link">
Overview
</a>
</li>
<li class="md-tabs__item">
<a href="/02_rdfc/" class="md-tabs__link">
RDFC Guide
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="/." title="doc-weaver" class="md-nav__button md-logo" aria-label="doc-weaver" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4v18h16v2H4c-1.1 0-2-.9-2-2V4zm11 3h5.5L15 1.5zM8 0h8l6 6v12c0 1.11-.89 2-2 2H8a2 2 0 0 1-2-2V2c0-1.11.89-2 2-2m9 16v-2H8v2zm3-4v-2H8v2z"/></svg>
</a>
doc-weaver
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="/01_overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="/02_rdfc/" class="md-nav__link">
<span class="md-ellipsis">
RDFC Guide
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>404 - Not found</h1>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "/", "features": ["navigation.sections", "navigation.expand", "navigation.top", "navigation.instant", "navigation.tracking", "navigation.indexes", "content.code.copy", "content.code.annotate", "content.tabs.link", "content.action.edit", "search.highlight", "search.share", "search.suggest", "navigation.tabs", "toc.integrate", "header.autohide", "content.code.select", "content.code.line_numbers", "content.tooltips"], "search": "/assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="/assets/javascripts/bundle.f55a23d4.min.js"></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,18 @@
/*!
* Lunr languages, `Danish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWordFilter)},e.hy.wordCharacters="[A-Za-z԰-֏ff-ﭏ]",e.hy.trimmer=e.trimmerSupport.generateTrimmer(e.hy.wordCharacters),e.Pipeline.registerFunction(e.hy.trimmer,"trimmer-hy"),e.hy.stopWordFilter=e.generateStopWordFilter("դու և եք էիր էիք հետո նաև նրանք որը վրա է որ պիտի են այս մեջ ն իր ու ի այդ որոնք այն կամ էր մի ես համար այլ իսկ էին ենք հետ ին թ էինք մենք նրա նա դուք եմ էի ըստ որպես ում".split(" ")),e.Pipeline.registerFunction(e.hy.stopWordFilter,"stopWordFilter-hy"),e.hy.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.hy.stemmer,"stemmer-hy")}});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});

View File

@@ -0,0 +1 @@
module.exports=require("./lunr.ja");

View File

@@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.kn=function(){this.pipeline.reset(),this.pipeline.add(e.kn.trimmer,e.kn.stopWordFilter,e.kn.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.kn.stemmer))},e.kn.wordCharacters="ಀ-಄ಅ-ಔಕ-ಹಾ-ೌ಼-ಽೕ-ೖೝ-ೞೠ-ೡೢ-ೣ೤೥೦-೯ೱ-ೳ",e.kn.trimmer=e.trimmerSupport.generateTrimmer(e.kn.wordCharacters),e.Pipeline.registerFunction(e.kn.trimmer,"trimmer-kn"),e.kn.stopWordFilter=e.generateStopWordFilter("ಮತ್ತು ಈ ಒಂದು ರಲ್ಲಿ ಹಾಗೂ ಎಂದು ಅಥವಾ ಇದು ರ ಅವರು ಎಂಬ ಮೇಲೆ ಅವರ ತನ್ನ ಆದರೆ ತಮ್ಮ ನಂತರ ಮೂಲಕ ಹೆಚ್ಚು ನ ಆ ಕೆಲವು ಅನೇಕ ಎರಡು ಹಾಗು ಪ್ರಮುಖ ಇದನ್ನು ಇದರ ಸುಮಾರು ಅದರ ಅದು ಮೊದಲ ಬಗ್ಗೆ ನಲ್ಲಿ ರಂದು ಇತರ ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಸಹ ಸಾಮಾನ್ಯವಾಗಿ ನೇ ಹಲವಾರು ಹೊಸ ದಿ ಕಡಿಮೆ ಯಾವುದೇ ಹೊಂದಿದೆ ದೊಡ್ಡ ಅನ್ನು ಇವರು ಪ್ರಕಾರ ಇದೆ ಮಾತ್ರ ಕೂಡ ಇಲ್ಲಿ ಎಲ್ಲಾ ವಿವಿಧ ಅದನ್ನು ಹಲವು ರಿಂದ ಕೇವಲ ದ ದಕ್ಷಿಣ ಗೆ ಅವನ ಅತಿ ನೆಯ ಬಹಳ ಕೆಲಸ ಎಲ್ಲ ಪ್ರತಿ ಇತ್ಯಾದಿ ಇವು ಬೇರೆ ಹೀಗೆ ನಡುವೆ ಇದಕ್ಕೆ ಎಸ್ ಇವರ ಮೊದಲು ಶ್ರೀ ಮಾಡುವ ಇದರಲ್ಲಿ ರೀತಿಯ ಮಾಡಿದ ಕಾಲ ಅಲ್ಲಿ ಮಾಡಲು ಅದೇ ಈಗ ಅವು ಗಳು ಎ ಎಂಬುದು ಅವನು ಅಂದರೆ ಅವರಿಗೆ ಇರುವ ವಿಶೇಷ ಮುಂದೆ ಅವುಗಳ ಮುಂತಾದ ಮೂಲ ಬಿ ಮೀ ಒಂದೇ ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ ಮಾಡಿ ಅವರನ್ನು ಇದೇ ಯ ರೀತಿಯಲ್ಲಿ ಜೊತೆ ಅದರಲ್ಲಿ ಮಾಡಿದರು ನಡೆದ ಆಗ ಮತ್ತೆ ಪೂರ್ವ ಆತ ಬಂದ ಯಾವ ಒಟ್ಟು ಇತರೆ ಹಿಂದೆ ಪ್ರಮಾಣದ ಗಳನ್ನು ಕುರಿತು ಯು ಆದ್ದರಿಂದ ಅಲ್ಲದೆ ನಗರದ ಮೇಲಿನ ಏಕೆಂದರೆ ರಷ್ಟು ಎಂಬುದನ್ನು ಬಾರಿ ಎಂದರೆ ಹಿಂದಿನ ಆದರೂ ಆದ ಸಂಬಂಧಿಸಿದ ಮತ್ತೊಂದು ಸಿ ಆತನ ".split(" ")),e.kn.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.kn.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var n=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(n).split("|")},e.Pipeline.registerFunction(e.kn.stemmer,"stemmer-kn"),e.Pipeline.registerFunction(e.kn.stopWordFilter,"stopWordFilter-kn")}});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});

Some files were not shown because too many files have changed in this diff Show More