@lepid-labs/weft-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/anchors/__tests__/markdown.test.d.ts +2 -0
- package/dist/anchors/__tests__/markdown.test.d.ts.map +1 -0
- package/dist/anchors/__tests__/markdown.test.js +130 -0
- package/dist/anchors/__tests__/markdown.test.js.map +1 -0
- package/dist/anchors/__tests__/openapi.test.d.ts +2 -0
- package/dist/anchors/__tests__/openapi.test.d.ts.map +1 -0
- package/dist/anchors/__tests__/openapi.test.js +115 -0
- package/dist/anchors/__tests__/openapi.test.js.map +1 -0
- package/dist/anchors/index.d.ts +35 -0
- package/dist/anchors/index.d.ts.map +1 -0
- package/dist/anchors/index.js +68 -0
- package/dist/anchors/index.js.map +1 -0
- package/dist/anchors/markdown.d.ts +15 -0
- package/dist/anchors/markdown.d.ts.map +1 -0
- package/dist/anchors/markdown.js +71 -0
- package/dist/anchors/markdown.js.map +1 -0
- package/dist/anchors/openapi.d.ts +24 -0
- package/dist/anchors/openapi.d.ts.map +1 -0
- package/dist/anchors/openapi.js +75 -0
- package/dist/anchors/openapi.js.map +1 -0
- package/dist/browser.d.ts +10 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +8 -0
- package/dist/browser.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +393 -0
- package/dist/config.js.map +1 -0
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +454 -0
- package/dist/config.test.js.map +1 -0
- package/dist/content.d.ts +37 -0
- package/dist/content.d.ts.map +1 -0
- package/dist/content.js +57 -0
- package/dist/content.js.map +1 -0
- package/dist/content.test.d.ts +2 -0
- package/dist/content.test.d.ts.map +1 -0
- package/dist/content.test.js +100 -0
- package/dist/content.test.js.map +1 -0
- package/dist/contributions.d.ts +64 -0
- package/dist/contributions.d.ts.map +1 -0
- package/dist/contributions.js +184 -0
- package/dist/contributions.js.map +1 -0
- package/dist/contributions.test.d.ts +2 -0
- package/dist/contributions.test.d.ts.map +1 -0
- package/dist/contributions.test.js +202 -0
- package/dist/contributions.test.js.map +1 -0
- package/dist/fetch/auth.d.ts +15 -0
- package/dist/fetch/auth.d.ts.map +1 -0
- package/dist/fetch/auth.js +38 -0
- package/dist/fetch/auth.js.map +1 -0
- package/dist/fetch/cache.d.ts +25 -0
- package/dist/fetch/cache.d.ts.map +1 -0
- package/dist/fetch/cache.js +68 -0
- package/dist/fetch/cache.js.map +1 -0
- package/dist/fetch/cache.test.d.ts +2 -0
- package/dist/fetch/cache.test.d.ts.map +1 -0
- package/dist/fetch/cache.test.js +73 -0
- package/dist/fetch/cache.test.js.map +1 -0
- package/dist/fetch/clone.d.ts +26 -0
- package/dist/fetch/clone.d.ts.map +1 -0
- package/dist/fetch/clone.js +105 -0
- package/dist/fetch/clone.js.map +1 -0
- package/dist/fetch/fetch.test.d.ts +2 -0
- package/dist/fetch/fetch.test.d.ts.map +1 -0
- package/dist/fetch/fetch.test.js +167 -0
- package/dist/fetch/fetch.test.js.map +1 -0
- package/dist/fetch/resolve.d.ts +34 -0
- package/dist/fetch/resolve.d.ts.map +1 -0
- package/dist/fetch/resolve.js +59 -0
- package/dist/fetch/resolve.js.map +1 -0
- package/dist/freshness.d.ts +29 -0
- package/dist/freshness.d.ts.map +1 -0
- package/dist/freshness.js +170 -0
- package/dist/freshness.js.map +1 -0
- package/dist/freshness.test.d.ts +2 -0
- package/dist/freshness.test.d.ts.map +1 -0
- package/dist/freshness.test.js +209 -0
- package/dist/freshness.test.js.map +1 -0
- package/dist/frontmatter.d.ts +15 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +24 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/frontmatter.test.d.ts +2 -0
- package/dist/frontmatter.test.d.ts.map +1 -0
- package/dist/frontmatter.test.js +54 -0
- package/dist/frontmatter.test.js.map +1 -0
- package/dist/git.d.ts +55 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +127 -0
- package/dist/git.js.map +1 -0
- package/dist/git.test.d.ts +2 -0
- package/dist/git.test.d.ts.map +1 -0
- package/dist/git.test.js +198 -0
- package/dist/git.test.js.map +1 -0
- package/dist/includes.d.ts +53 -0
- package/dist/includes.d.ts.map +1 -0
- package/dist/includes.js +73 -0
- package/dist/includes.js.map +1 -0
- package/dist/includes.test.d.ts +2 -0
- package/dist/includes.test.d.ts.map +1 -0
- package/dist/includes.test.js +106 -0
- package/dist/includes.test.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/links/__tests__/markdown.test.d.ts +2 -0
- package/dist/links/__tests__/markdown.test.d.ts.map +1 -0
- package/dist/links/__tests__/markdown.test.js +173 -0
- package/dist/links/__tests__/markdown.test.js.map +1 -0
- package/dist/links/__tests__/sidecar.test.d.ts +2 -0
- package/dist/links/__tests__/sidecar.test.d.ts.map +1 -0
- package/dist/links/__tests__/sidecar.test.js +238 -0
- package/dist/links/__tests__/sidecar.test.js.map +1 -0
- package/dist/links/index.d.ts +3 -0
- package/dist/links/index.d.ts.map +1 -0
- package/dist/links/index.js +3 -0
- package/dist/links/index.js.map +1 -0
- package/dist/links/markdown.d.ts +13 -0
- package/dist/links/markdown.d.ts.map +1 -0
- package/dist/links/markdown.js +93 -0
- package/dist/links/markdown.js.map +1 -0
- package/dist/links/sidecar.d.ts +12 -0
- package/dist/links/sidecar.d.ts.map +1 -0
- package/dist/links/sidecar.js +88 -0
- package/dist/links/sidecar.js.map +1 -0
- package/dist/manifest.d.ts +45 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +269 -0
- package/dist/manifest.js.map +1 -0
- package/dist/manifest.test.d.ts +2 -0
- package/dist/manifest.test.d.ts.map +1 -0
- package/dist/manifest.test.js +625 -0
- package/dist/manifest.test.js.map +1 -0
- package/dist/multi-repo.test.d.ts +2 -0
- package/dist/multi-repo.test.d.ts.map +1 -0
- package/dist/multi-repo.test.js +179 -0
- package/dist/multi-repo.test.js.map +1 -0
- package/dist/node-path.d.ts +13 -0
- package/dist/node-path.d.ts.map +1 -0
- package/dist/node-path.js +21 -0
- package/dist/node-path.js.map +1 -0
- package/dist/node-path.test.d.ts +2 -0
- package/dist/node-path.test.d.ts.map +1 -0
- package/dist/node-path.test.js +29 -0
- package/dist/node-path.test.js.map +1 -0
- package/dist/published-links.d.ts +16 -0
- package/dist/published-links.d.ts.map +1 -0
- package/dist/published-links.js +59 -0
- package/dist/published-links.js.map +1 -0
- package/dist/published-links.test.d.ts +2 -0
- package/dist/published-links.test.d.ts.map +1 -0
- package/dist/published-links.test.js +82 -0
- package/dist/published-links.test.js.map +1 -0
- package/dist/repos.d.ts +32 -0
- package/dist/repos.d.ts.map +1 -0
- package/dist/repos.js +46 -0
- package/dist/repos.js.map +1 -0
- package/dist/repos.test.d.ts +2 -0
- package/dist/repos.test.d.ts.map +1 -0
- package/dist/repos.test.js +61 -0
- package/dist/repos.test.js.map +1 -0
- package/dist/scalar-source.d.ts +15 -0
- package/dist/scalar-source.d.ts.map +1 -0
- package/dist/scalar-source.js +21 -0
- package/dist/scalar-source.js.map +1 -0
- package/dist/search.d.ts +14 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +59 -0
- package/dist/search.js.map +1 -0
- package/dist/service-concurrency.test.d.ts +2 -0
- package/dist/service-concurrency.test.d.ts.map +1 -0
- package/dist/service-concurrency.test.js +89 -0
- package/dist/service-concurrency.test.js.map +1 -0
- package/dist/service-history.test.d.ts +2 -0
- package/dist/service-history.test.d.ts.map +1 -0
- package/dist/service-history.test.js +76 -0
- package/dist/service-history.test.js.map +1 -0
- package/dist/service.d.ts +118 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +347 -0
- package/dist/service.js.map +1 -0
- package/dist/service.test.d.ts +2 -0
- package/dist/service.test.d.ts.map +1 -0
- package/dist/service.test.js +313 -0
- package/dist/service.test.js.map +1 -0
- package/dist/types.d.ts +403 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validate/__tests__/artifacts.test.d.ts +2 -0
- package/dist/validate/__tests__/artifacts.test.d.ts.map +1 -0
- package/dist/validate/__tests__/artifacts.test.js +167 -0
- package/dist/validate/__tests__/artifacts.test.js.map +1 -0
- package/dist/validate/__tests__/assertions.test.d.ts +2 -0
- package/dist/validate/__tests__/assertions.test.d.ts.map +1 -0
- package/dist/validate/__tests__/assertions.test.js +254 -0
- package/dist/validate/__tests__/assertions.test.js.map +1 -0
- package/dist/validate/__tests__/duplicates.test.d.ts +2 -0
- package/dist/validate/__tests__/duplicates.test.d.ts.map +1 -0
- package/dist/validate/__tests__/duplicates.test.js +130 -0
- package/dist/validate/__tests__/duplicates.test.js.map +1 -0
- package/dist/validate/__tests__/edge-resolution.test.d.ts +2 -0
- package/dist/validate/__tests__/edge-resolution.test.d.ts.map +1 -0
- package/dist/validate/__tests__/edge-resolution.test.js +279 -0
- package/dist/validate/__tests__/edge-resolution.test.js.map +1 -0
- package/dist/validate/__tests__/history.test.d.ts +2 -0
- package/dist/validate/__tests__/history.test.d.ts.map +1 -0
- package/dist/validate/__tests__/history.test.js +93 -0
- package/dist/validate/__tests__/history.test.js.map +1 -0
- package/dist/validate/__tests__/includes.test.d.ts +2 -0
- package/dist/validate/__tests__/includes.test.d.ts.map +1 -0
- package/dist/validate/__tests__/includes.test.js +93 -0
- package/dist/validate/__tests__/includes.test.js.map +1 -0
- package/dist/validate/__tests__/registry.test.d.ts +2 -0
- package/dist/validate/__tests__/registry.test.d.ts.map +1 -0
- package/dist/validate/__tests__/registry.test.js +78 -0
- package/dist/validate/__tests__/registry.test.js.map +1 -0
- package/dist/validate/__tests__/run.test.d.ts +2 -0
- package/dist/validate/__tests__/run.test.d.ts.map +1 -0
- package/dist/validate/__tests__/run.test.js +215 -0
- package/dist/validate/__tests__/run.test.js.map +1 -0
- package/dist/validate/history.d.ts +23 -0
- package/dist/validate/history.d.ts.map +1 -0
- package/dist/validate/history.js +45 -0
- package/dist/validate/history.js.map +1 -0
- package/dist/validate/index.d.ts +10 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +9 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/validate/registry.d.ts +27 -0
- package/dist/validate/registry.d.ts.map +1 -0
- package/dist/validate/registry.js +67 -0
- package/dist/validate/registry.js.map +1 -0
- package/dist/validate/rules/artifacts.d.ts +25 -0
- package/dist/validate/rules/artifacts.d.ts.map +1 -0
- package/dist/validate/rules/artifacts.js +87 -0
- package/dist/validate/rules/artifacts.js.map +1 -0
- package/dist/validate/rules/assertions.d.ts +19 -0
- package/dist/validate/rules/assertions.d.ts.map +1 -0
- package/dist/validate/rules/assertions.js +149 -0
- package/dist/validate/rules/assertions.js.map +1 -0
- package/dist/validate/rules/duplicates.d.ts +20 -0
- package/dist/validate/rules/duplicates.d.ts.map +1 -0
- package/dist/validate/rules/duplicates.js +0 -0
- package/dist/validate/rules/duplicates.js.map +1 -0
- package/dist/validate/rules/edge-resolution.d.ts +15 -0
- package/dist/validate/rules/edge-resolution.d.ts.map +1 -0
- package/dist/validate/rules/edge-resolution.js +185 -0
- package/dist/validate/rules/edge-resolution.js.map +1 -0
- package/dist/validate/rules/includes.d.ts +21 -0
- package/dist/validate/rules/includes.d.ts.map +1 -0
- package/dist/validate/rules/includes.js +112 -0
- package/dist/validate/rules/includes.js.map +1 -0
- package/dist/validate/run.d.ts +20 -0
- package/dist/validate/run.d.ts.map +1 -0
- package/dist/validate/run.js +90 -0
- package/dist/validate/run.js.map +1 -0
- package/dist/validate/types.d.ts +101 -0
- package/dist/validate/types.d.ts.map +1 -0
- package/dist/validate/types.js +2 -0
- package/dist/validate/types.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EACX,MAAM,EACN,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,GACV,MAAM,YAAY,CAAC"}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-safe exports from @lepid-labs/weft-core — no Node.js built-ins.
|
|
3
|
+
* Use this entry point in browser/embed builds.
|
|
4
|
+
*/
|
|
5
|
+
export { openApiOperationAnchor, openApiSchemaAnchor, parseOpenApiSpec, } from "./anchors/openapi.js";
|
|
6
|
+
export { nodeIdToDocPath } from "./node-path.js";
|
|
7
|
+
export { INCLUDES, INCLUDE_DEFAULTS, extractSection } from "./includes.js";
|
|
8
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { WeftConfig, WeftProjectRef } from "./types.js";
|
|
2
|
+
export declare const CONFIG_FILES: string[];
|
|
3
|
+
export declare const LOCAL_CONFIG_FILES: string[];
|
|
4
|
+
export declare function loadConfig(rootDir: string): Promise<WeftConfig>;
|
|
5
|
+
/** A resolved docs root — one per configured project, or one implicit root for `docsDir`. */
|
|
6
|
+
export interface DocsRoot {
|
|
7
|
+
/** Display name. Undefined for the implicit single root. */
|
|
8
|
+
name?: string;
|
|
9
|
+
/** Id namespace. Empty string for the implicit single root. */
|
|
10
|
+
slug: string;
|
|
11
|
+
/**
|
|
12
|
+
* Directory as configured, POSIX separators, no trailing slash. Relative to
|
|
13
|
+
* `rootDir` — or to `repo`'s checkout for a repo-backed root, so nothing
|
|
14
|
+
* derived from it embeds one machine's layout.
|
|
15
|
+
*/
|
|
16
|
+
dir: string;
|
|
17
|
+
/** Absolute directory path. */
|
|
18
|
+
absDir: string;
|
|
19
|
+
/** Repo identity (`org/repo`) the root was resolved through, when it was. */
|
|
20
|
+
repo?: string;
|
|
21
|
+
/** True when `absDir` lies outside `rootDir` — a docs root in another checkout. */
|
|
22
|
+
external: boolean;
|
|
23
|
+
/** Opt-in: write this root's manifest into its checkout even though it is external. */
|
|
24
|
+
manifestInRepo?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Kebab-case a project name into a URL-safe slug. */
|
|
27
|
+
export declare function slugify(name: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the configured docs roots. Without `projects` this is a single
|
|
30
|
+
* unnamespaced root over `docsDir` — node ids stay relative to it, exactly as
|
|
31
|
+
* before multi-project support existed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveDocsRoots(config: WeftConfig): DocsRoot[];
|
|
34
|
+
/** True when node ids are namespaced by project slug. */
|
|
35
|
+
export declare function isNamespaced(roots: DocsRoot[]): boolean;
|
|
36
|
+
/** Project records for the manifest. Empty unless namespaced. */
|
|
37
|
+
export declare function projectRefs(roots: DocsRoot[]): WeftProjectRef[];
|
|
38
|
+
/** Build a node id from a path relative to its root. */
|
|
39
|
+
export declare function nodeIdFor(root: DocsRoot, relPath: string): string;
|
|
40
|
+
/** Find the root containing an absolute path. Longest match wins, so nested roots work. */
|
|
41
|
+
export declare function rootForPath(roots: DocsRoot[], absPath: string): DocsRoot | undefined;
|
|
42
|
+
/** Split a node id into its owning root and the path relative to that root. */
|
|
43
|
+
export declare function rootForNodeId(roots: DocsRoot[], nodeId: string): {
|
|
44
|
+
root: DocsRoot;
|
|
45
|
+
relPath: string;
|
|
46
|
+
} | undefined;
|
|
47
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAe,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1E,eAAO,MAAM,YAAY,UAA8D,CAAC;AAExF,eAAO,MAAM,kBAAkB,UAAsD,CAAC;AAoPtF,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgDrE;AAED,6FAA6F;AAC7F,MAAM,WAAW,QAAQ;IACxB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,QAAQ,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAOD,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,EAAE,CAwE/D;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAEvD;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAQ/D;AAED,wDAAwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAQpF;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAC5B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAQjD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
4
|
+
import { parse } from "yaml";
|
|
5
|
+
import { EXTENSION_MAP } from "./anchors/index.js";
|
|
6
|
+
import { CONTRIBUTES_MODES, HEADING_SHIFTS } from "./includes.js";
|
|
7
|
+
import { REPO_IDENTITY, resolveRepos } from "./repos.js";
|
|
8
|
+
export const CONFIG_FILES = ["weft.config.yaml", "weft.config.yml", "weft.config.json"];
|
|
9
|
+
const LEGACY_CONFIG_FILES = ["weft.config.ts", "weft.config.js", "weft.config.mjs"];
|
|
10
|
+
export const LOCAL_CONFIG_FILES = ["weft.config.local.yaml", "weft.config.local.yml"];
|
|
11
|
+
/**
|
|
12
|
+
* Directories excluded from indexing by default.
|
|
13
|
+
*
|
|
14
|
+
* Build output under `docsDir` would otherwise be indexed as nodes alongside
|
|
15
|
+
* the sources it was generated from, so every document would appear twice.
|
|
16
|
+
* Only unambiguous output directory names are listed: `site`, `public`, `build`
|
|
17
|
+
* and `out` are all commonly *source* directories, so excluding them by default
|
|
18
|
+
* would silently hide real documents. Add those per project.
|
|
19
|
+
*/
|
|
20
|
+
const DEFAULTS = {
|
|
21
|
+
docsDir: "docs",
|
|
22
|
+
entryPoint: "docs/README.md",
|
|
23
|
+
ignore: ["**/node_modules/**", "**/dist/**", "**/_site/**", "**/_book/**", "**/.quarto/**"],
|
|
24
|
+
};
|
|
25
|
+
const STRING_KEYS = [
|
|
26
|
+
"docsDir",
|
|
27
|
+
"entryPoint",
|
|
28
|
+
"siteTitle",
|
|
29
|
+
"siteUrl",
|
|
30
|
+
"ogImage",
|
|
31
|
+
"styleUrl",
|
|
32
|
+
];
|
|
33
|
+
const STRING_ARRAY_KEYS = ["ignore", "docOrder", "contributions", "artifacts"];
|
|
34
|
+
const ENUM_KEYS = {
|
|
35
|
+
defaultTheme: ["light", "dark"],
|
|
36
|
+
layout: ["reader", "default"],
|
|
37
|
+
};
|
|
38
|
+
const KNOWN_KEYS = new Set([
|
|
39
|
+
...STRING_KEYS,
|
|
40
|
+
...STRING_ARRAY_KEYS,
|
|
41
|
+
...Object.keys(ENUM_KEYS),
|
|
42
|
+
"docOrderStrict",
|
|
43
|
+
"projects",
|
|
44
|
+
"repos",
|
|
45
|
+
"style",
|
|
46
|
+
"rules",
|
|
47
|
+
"extensions",
|
|
48
|
+
"includes",
|
|
49
|
+
]);
|
|
50
|
+
const INCLUDE_OPTION_VALUES = {
|
|
51
|
+
headingShift: HEADING_SHIFTS,
|
|
52
|
+
contributes: CONTRIBUTES_MODES,
|
|
53
|
+
};
|
|
54
|
+
const DOC_TYPES = ["markdown", "openapi"];
|
|
55
|
+
const RULE_SEVERITIES = ["error", "warn", "info", "off"];
|
|
56
|
+
function isStringArray(value) {
|
|
57
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
58
|
+
}
|
|
59
|
+
/** Validate the parsed config's top-level shape. `projects` entries are validated in resolveDocsRoots. */
|
|
60
|
+
function validateUserConfig(raw, file) {
|
|
61
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
62
|
+
throw new Error(`weft config: ${file} must contain a top-level mapping of options`);
|
|
63
|
+
}
|
|
64
|
+
const config = raw;
|
|
65
|
+
const fail = (key, expected) => new Error(`weft config: "${key}" must be ${expected} (in ${file})`);
|
|
66
|
+
for (const key of STRING_KEYS) {
|
|
67
|
+
if (key in config && typeof config[key] !== "string")
|
|
68
|
+
throw fail(key, "a string");
|
|
69
|
+
}
|
|
70
|
+
for (const key of STRING_ARRAY_KEYS) {
|
|
71
|
+
if (key in config && !isStringArray(config[key]))
|
|
72
|
+
throw fail(key, "an array of strings");
|
|
73
|
+
}
|
|
74
|
+
for (const [key, values] of Object.entries(ENUM_KEYS)) {
|
|
75
|
+
if (key in config && !values.includes(config[key])) {
|
|
76
|
+
throw fail(key, values.map((v) => `"${v}"`).join(" or "));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if ("docOrderStrict" in config && typeof config.docOrderStrict !== "boolean") {
|
|
80
|
+
throw fail("docOrderStrict", "a boolean");
|
|
81
|
+
}
|
|
82
|
+
if ("projects" in config && !Array.isArray(config.projects)) {
|
|
83
|
+
throw fail("projects", "an array");
|
|
84
|
+
}
|
|
85
|
+
if ("repos" in config)
|
|
86
|
+
validateRepos(config.repos, file);
|
|
87
|
+
if ("style" in config)
|
|
88
|
+
validateStyle(config.style, file);
|
|
89
|
+
if ("rules" in config) {
|
|
90
|
+
const rules = config.rules;
|
|
91
|
+
if (typeof rules !== "object" || rules === null || Array.isArray(rules)) {
|
|
92
|
+
throw fail("rules", "a mapping of rule id to severity");
|
|
93
|
+
}
|
|
94
|
+
// Unknown rule ids are left to the validation stage to report — a config
|
|
95
|
+
// may name a check that ships in a later version or in an external tool.
|
|
96
|
+
for (const [id, severity] of Object.entries(rules)) {
|
|
97
|
+
if (!RULE_SEVERITIES.includes(severity)) {
|
|
98
|
+
throw fail(`rules.${id}`, RULE_SEVERITIES.map((v) => `"${v}"`).join(", "));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if ("extensions" in config) {
|
|
103
|
+
const extensions = config.extensions;
|
|
104
|
+
if (typeof extensions !== "object" || extensions === null || Array.isArray(extensions)) {
|
|
105
|
+
throw fail("extensions", "a mapping of extension to doc type");
|
|
106
|
+
}
|
|
107
|
+
for (const [ext, docType] of Object.entries(extensions)) {
|
|
108
|
+
if (!ext.startsWith(".")) {
|
|
109
|
+
throw fail(`extensions["${ext}"]`, 'a key starting with "."');
|
|
110
|
+
}
|
|
111
|
+
if (!DOC_TYPES.includes(docType)) {
|
|
112
|
+
throw fail(`extensions["${ext}"]`, DOC_TYPES.map((v) => `"${v}"`).join(" or "));
|
|
113
|
+
}
|
|
114
|
+
// Additive only: remapping a built-in extension would silently change
|
|
115
|
+
// how every already-indexed file of that type parses. A value that
|
|
116
|
+
// agrees with the built-in mapping is fine — it only opts an
|
|
117
|
+
// unindexed-by-default type (e.g. .json) into scanning.
|
|
118
|
+
const builtin = EXTENSION_MAP[ext];
|
|
119
|
+
if (builtin && builtin !== docType) {
|
|
120
|
+
throw new Error(`weft config: "extensions[${ext}]" cannot remap ${ext} — it is a built-in extension parsed as "${builtin}" and built-in mappings cannot be overridden (in ${file})`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if ("includes" in config) {
|
|
125
|
+
const includes = config.includes;
|
|
126
|
+
if (typeof includes !== "object" || includes === null || Array.isArray(includes)) {
|
|
127
|
+
throw fail("includes", "a mapping of include options");
|
|
128
|
+
}
|
|
129
|
+
for (const [option, value] of Object.entries(includes)) {
|
|
130
|
+
const allowed = INCLUDE_OPTION_VALUES[option];
|
|
131
|
+
if (!allowed) {
|
|
132
|
+
throw fail(`includes.${option}`, Object.keys(INCLUDE_OPTION_VALUES)
|
|
133
|
+
.map((v) => `"${v}"`)
|
|
134
|
+
.join(" or "));
|
|
135
|
+
}
|
|
136
|
+
if (!allowed.includes(value)) {
|
|
137
|
+
throw fail(`includes.${option}`, allowed.map((v) => `"${v}"`).join(" or "));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
for (const key of Object.keys(config)) {
|
|
142
|
+
if (!KNOWN_KEYS.has(key)) {
|
|
143
|
+
console.warn(`weft config: ignoring unknown option "${key}" (in ${file})`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return config;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Shape only: a name, or a {dark, light} pair. Names are checked by the UI
|
|
150
|
+
* against the installed @nazuraki/styles manifest — core validating them
|
|
151
|
+
* would pin the theme roster to a core release and defeat `styleUrl`.
|
|
152
|
+
*/
|
|
153
|
+
function validateStyle(style, file) {
|
|
154
|
+
if (typeof style === "string" && style.length > 0)
|
|
155
|
+
return;
|
|
156
|
+
if (typeof style === "object" && style !== null && !Array.isArray(style)) {
|
|
157
|
+
const keys = Object.keys(style).sort();
|
|
158
|
+
const pair = style;
|
|
159
|
+
if (keys.join(",") === "dark,light" &&
|
|
160
|
+
typeof pair.dark === "string" &&
|
|
161
|
+
typeof pair.light === "string") {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
throw new Error(`weft config: "style" must be a style name or a {dark, light} pair of style names (in ${file})`);
|
|
166
|
+
}
|
|
167
|
+
function validateRepos(repos, file) {
|
|
168
|
+
if (typeof repos !== "object" || repos === null || Array.isArray(repos)) {
|
|
169
|
+
throw new Error(`weft config: "repos" must be a mapping of org/repo to a path (in ${file})`);
|
|
170
|
+
}
|
|
171
|
+
for (const [identity, path] of Object.entries(repos)) {
|
|
172
|
+
if (!REPO_IDENTITY.test(identity)) {
|
|
173
|
+
throw new Error(`weft config: repos key "${identity}" must be a repo identity of the form "org/repo" (in ${file})`);
|
|
174
|
+
}
|
|
175
|
+
if (typeof path !== "string" || path.length === 0) {
|
|
176
|
+
throw new Error(`weft config: "repos[${identity}]" must be a path (in ${file})`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const LOCAL_KEYS = new Set(["repos", "style", "styleUrl"]);
|
|
181
|
+
/**
|
|
182
|
+
* Read `weft.config.local.yaml`, which may set only per-machine options:
|
|
183
|
+
* `repos` (where checkouts live), and `style`/`styleUrl` (one developer
|
|
184
|
+
* previewing the corpus in a different ui-std-lib theme). Nothing else, so an
|
|
185
|
+
* option quietly diverging from the committed config cannot hide there.
|
|
186
|
+
* `repos` entries override committed ones per identity; `style`/`styleUrl`
|
|
187
|
+
* replace the committed values outright.
|
|
188
|
+
*/
|
|
189
|
+
async function loadLocalOverrides(absRoot) {
|
|
190
|
+
for (const file of LOCAL_CONFIG_FILES) {
|
|
191
|
+
const path = resolve(absRoot, file);
|
|
192
|
+
if (!existsSync(path))
|
|
193
|
+
continue;
|
|
194
|
+
let raw;
|
|
195
|
+
try {
|
|
196
|
+
raw = parse(await readFile(path, "utf8"));
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
throw new Error(`weft config: failed to parse ${file}: ${err.message}`);
|
|
200
|
+
}
|
|
201
|
+
if (raw === null || raw === undefined)
|
|
202
|
+
return undefined;
|
|
203
|
+
if (typeof raw !== "object" || Array.isArray(raw)) {
|
|
204
|
+
throw new Error(`weft config: ${file} must contain a top-level mapping`);
|
|
205
|
+
}
|
|
206
|
+
const local = raw;
|
|
207
|
+
for (const key of Object.keys(local)) {
|
|
208
|
+
if (!LOCAL_KEYS.has(key)) {
|
|
209
|
+
throw new Error(`weft config: ${file} may only set ${[...LOCAL_KEYS].map((k) => `"${k}"`).join(", ")} — move "${key}" to the committed config`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if ("repos" in local)
|
|
213
|
+
validateRepos(local.repos, file);
|
|
214
|
+
if ("style" in local)
|
|
215
|
+
validateStyle(local.style, file);
|
|
216
|
+
if ("styleUrl" in local && typeof local.styleUrl !== "string") {
|
|
217
|
+
throw new Error(`weft config: "styleUrl" must be a string (in ${file})`);
|
|
218
|
+
}
|
|
219
|
+
return local;
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
export async function loadConfig(rootDir) {
|
|
224
|
+
const absRoot = resolve(rootDir);
|
|
225
|
+
const local = await loadLocalOverrides(absRoot);
|
|
226
|
+
const withLocalOverrides = (config) => {
|
|
227
|
+
if (!local)
|
|
228
|
+
return config;
|
|
229
|
+
const merged = { ...config };
|
|
230
|
+
if (local.repos)
|
|
231
|
+
merged.repos = { ...config.repos, ...local.repos };
|
|
232
|
+
if (local.style)
|
|
233
|
+
merged.style = local.style;
|
|
234
|
+
if (local.styleUrl)
|
|
235
|
+
merged.styleUrl = local.styleUrl;
|
|
236
|
+
return merged;
|
|
237
|
+
};
|
|
238
|
+
for (const file of CONFIG_FILES) {
|
|
239
|
+
const configPath = resolve(absRoot, file);
|
|
240
|
+
if (!existsSync(configPath))
|
|
241
|
+
continue;
|
|
242
|
+
const source = await readFile(configPath, "utf8");
|
|
243
|
+
let raw;
|
|
244
|
+
try {
|
|
245
|
+
raw = parse(source);
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
throw new Error(`weft config: failed to parse ${file}: ${err.message}`);
|
|
249
|
+
}
|
|
250
|
+
return withLocalOverrides({
|
|
251
|
+
...DEFAULTS,
|
|
252
|
+
...validateUserConfig(raw ?? {}, file),
|
|
253
|
+
rootDir: absRoot,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
const legacy = LEGACY_CONFIG_FILES.find((file) => existsSync(resolve(absRoot, file)));
|
|
257
|
+
if (legacy) {
|
|
258
|
+
throw new Error([
|
|
259
|
+
`weft config: found ${legacy}, but JS/TS config files are no longer supported.`,
|
|
260
|
+
"Move your options to weft.config.yaml — same keys, written as YAML:",
|
|
261
|
+
"",
|
|
262
|
+
" docsDir: docs",
|
|
263
|
+
" docOrder:",
|
|
264
|
+
" - features.md",
|
|
265
|
+
"",
|
|
266
|
+
`Then delete ${legacy}. See the configuration docs for the full option list.`,
|
|
267
|
+
].join("\n"));
|
|
268
|
+
}
|
|
269
|
+
return withLocalOverrides({ ...DEFAULTS, rootDir: absRoot });
|
|
270
|
+
}
|
|
271
|
+
/** Normalize a configured directory to a POSIX, trailing-slash-free relative path. */
|
|
272
|
+
function normalizeDir(dir) {
|
|
273
|
+
return dir.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+$/, "");
|
|
274
|
+
}
|
|
275
|
+
/** Kebab-case a project name into a URL-safe slug. */
|
|
276
|
+
export function slugify(name) {
|
|
277
|
+
return name
|
|
278
|
+
.toLowerCase()
|
|
279
|
+
.trim()
|
|
280
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
281
|
+
.replace(/^-+|-+$/g, "");
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Resolve the configured docs roots. Without `projects` this is a single
|
|
285
|
+
* unnamespaced root over `docsDir` — node ids stay relative to it, exactly as
|
|
286
|
+
* before multi-project support existed.
|
|
287
|
+
*/
|
|
288
|
+
export function resolveDocsRoots(config) {
|
|
289
|
+
const { projects } = config;
|
|
290
|
+
const repos = resolveRepos(config.repos, config.rootDir);
|
|
291
|
+
const isExternal = (absDir) => {
|
|
292
|
+
const rel = relative(config.rootDir, absDir);
|
|
293
|
+
return rel.startsWith("..") || isAbsolute(rel);
|
|
294
|
+
};
|
|
295
|
+
if (projects === undefined) {
|
|
296
|
+
const absDir = resolve(config.rootDir, config.docsDir);
|
|
297
|
+
return [
|
|
298
|
+
{
|
|
299
|
+
slug: "",
|
|
300
|
+
dir: normalizeDir(config.docsDir),
|
|
301
|
+
absDir,
|
|
302
|
+
external: isExternal(absDir),
|
|
303
|
+
},
|
|
304
|
+
];
|
|
305
|
+
}
|
|
306
|
+
if (!Array.isArray(projects) || projects.length === 0) {
|
|
307
|
+
throw new Error('weft config: "projects" must be a non-empty array');
|
|
308
|
+
}
|
|
309
|
+
const seen = new Set();
|
|
310
|
+
return projects.map((project, i) => {
|
|
311
|
+
if (!project?.name)
|
|
312
|
+
throw new Error(`weft config: projects[${i}] is missing "name"`);
|
|
313
|
+
if (!project.docsDir) {
|
|
314
|
+
throw new Error(`weft config: project "${project.name}" is missing "docsDir"`);
|
|
315
|
+
}
|
|
316
|
+
if (project.repo !== undefined && !REPO_IDENTITY.test(project.repo)) {
|
|
317
|
+
throw new Error(`weft config: project "${project.name}" has a "repo" that is not an "org/repo" identity`);
|
|
318
|
+
}
|
|
319
|
+
if (project.manifestInRepo !== undefined && typeof project.manifestInRepo !== "boolean") {
|
|
320
|
+
throw new Error(`weft config: project "${project.name}": "manifestInRepo" must be a boolean`);
|
|
321
|
+
}
|
|
322
|
+
const slug = slugify(project.slug ?? project.name);
|
|
323
|
+
if (!slug) {
|
|
324
|
+
throw new Error(`weft config: project "${project.name}" resolves to an empty slug — set "slug" explicitly`);
|
|
325
|
+
}
|
|
326
|
+
if (seen.has(slug)) {
|
|
327
|
+
throw new Error(`weft config: duplicate project slug "${slug}"`);
|
|
328
|
+
}
|
|
329
|
+
seen.add(slug);
|
|
330
|
+
let baseDir = config.rootDir;
|
|
331
|
+
if (project.repo !== undefined) {
|
|
332
|
+
const checkout = repos.get(project.repo);
|
|
333
|
+
if (!checkout) {
|
|
334
|
+
throw new Error(`weft config: project "${project.name}" names repo "${project.repo}", which is not in the "repos" map — add it there, or to weft.config.local.yaml`);
|
|
335
|
+
}
|
|
336
|
+
baseDir = checkout;
|
|
337
|
+
}
|
|
338
|
+
const absDir = resolve(baseDir, project.docsDir);
|
|
339
|
+
return {
|
|
340
|
+
name: project.name,
|
|
341
|
+
slug,
|
|
342
|
+
dir: normalizeDir(project.docsDir),
|
|
343
|
+
absDir,
|
|
344
|
+
external: isExternal(absDir),
|
|
345
|
+
...(project.repo !== undefined ? { repo: project.repo } : {}),
|
|
346
|
+
...(project.manifestInRepo === true ? { manifestInRepo: true } : {}),
|
|
347
|
+
};
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
/** True when node ids are namespaced by project slug. */
|
|
351
|
+
export function isNamespaced(roots) {
|
|
352
|
+
return roots.some((root) => root.slug !== "");
|
|
353
|
+
}
|
|
354
|
+
/** Project records for the manifest. Empty unless namespaced. */
|
|
355
|
+
export function projectRefs(roots) {
|
|
356
|
+
if (!isNamespaced(roots))
|
|
357
|
+
return [];
|
|
358
|
+
return roots.map((root) => ({
|
|
359
|
+
name: root.name ?? root.slug,
|
|
360
|
+
slug: root.slug,
|
|
361
|
+
docsDir: root.dir,
|
|
362
|
+
...(root.repo !== undefined ? { repo: root.repo } : {}),
|
|
363
|
+
}));
|
|
364
|
+
}
|
|
365
|
+
/** Build a node id from a path relative to its root. */
|
|
366
|
+
export function nodeIdFor(root, relPath) {
|
|
367
|
+
const posix = relPath.split(sep).join("/");
|
|
368
|
+
return root.slug ? `${root.slug}/${posix}` : posix;
|
|
369
|
+
}
|
|
370
|
+
/** Find the root containing an absolute path. Longest match wins, so nested roots work. */
|
|
371
|
+
export function rootForPath(roots, absPath) {
|
|
372
|
+
let best;
|
|
373
|
+
for (const root of roots) {
|
|
374
|
+
const rel = relative(root.absDir, absPath);
|
|
375
|
+
if (rel.startsWith("..") || isAbsolute(rel))
|
|
376
|
+
continue;
|
|
377
|
+
if (!best || root.absDir.length > best.absDir.length)
|
|
378
|
+
best = root;
|
|
379
|
+
}
|
|
380
|
+
return best;
|
|
381
|
+
}
|
|
382
|
+
/** Split a node id into its owning root and the path relative to that root. */
|
|
383
|
+
export function rootForNodeId(roots, nodeId) {
|
|
384
|
+
for (const root of roots) {
|
|
385
|
+
if (!root.slug)
|
|
386
|
+
return { root, relPath: nodeId };
|
|
387
|
+
if (nodeId.startsWith(`${root.slug}/`)) {
|
|
388
|
+
return { root, relPath: nodeId.slice(root.slug.length + 1) };
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return undefined;
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":""}
|