docspack 0.1.1 → 0.2.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/README.md +3 -2
- package/dist/build.js +92 -9
- package/dist/build.js.map +1 -1
- package/dist/cli.js +38 -10
- package/dist/cli.js.map +1 -1
- package/dist/db.d.ts +5 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +11 -2
- package/dist/db.js.map +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +47 -25
- package/dist/discovery.js.map +1 -1
- package/dist/doctor.d.ts +6 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +7 -3
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/search.d.ts +6 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +11 -3
- package/dist/search.js.map +1 -1
- package/dist/spec.d.ts +2 -0
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +3 -1
- package/dist/spec.js.map +1 -1
- package/dist/style.d.ts.map +1 -1
- package/dist/style.js +9 -2
- package/dist/style.js.map +1 -1
- package/package.json +1 -1
- package/src/build.ts +100 -9
- package/src/cli.ts +47 -10
- package/src/db.ts +11 -2
- package/src/discovery.ts +44 -22
- package/src/doctor.ts +13 -4
- package/src/index.ts +1 -0
- package/src/search.ts +17 -3
- package/src/spec.ts +3 -1
- package/src/style.ts +12 -2
package/dist/discovery.js
CHANGED
|
@@ -59,35 +59,57 @@ export async function projectPackageIds(cwd) {
|
|
|
59
59
|
const { packages } = await discoverPackages(cwd);
|
|
60
60
|
return packages.map((pkg) => pkg.id);
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Every docs package declared by this directory or by an ancestor of it. A workspace declares
|
|
64
|
+
* shared tooling in the repository root and its members inherit the install, so reading only
|
|
65
|
+
* `cwd/package.json` answers "this project has no documentation" for most monorepos — the same
|
|
66
|
+
* upward walk `resolvePackageDir` already does for the install.
|
|
67
|
+
*/
|
|
62
68
|
async function declaredDocsPackages(cwd) {
|
|
63
|
-
let raw;
|
|
64
|
-
try {
|
|
65
|
-
raw = await readFile(join(cwd, "package.json"), "utf8");
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
if (error.code === "ENOENT") {
|
|
69
|
-
throw new DocspackError(`No package.json found in ${cwd}`, {
|
|
70
|
-
hint: "Run docspack from a project directory, or pass --cwd <dir>.",
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
let parsed;
|
|
76
|
-
try {
|
|
77
|
-
parsed = JSON.parse(raw);
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
throw new DocspackError(`${join(cwd, "package.json")} is not valid JSON`, { cause: error });
|
|
81
|
-
}
|
|
82
|
-
const root = parsed;
|
|
83
69
|
const names = new Set();
|
|
84
|
-
|
|
85
|
-
|
|
70
|
+
let found = false;
|
|
71
|
+
let dir = cwd;
|
|
72
|
+
while (true) {
|
|
73
|
+
const path = join(dir, "package.json");
|
|
74
|
+
let raw;
|
|
75
|
+
try {
|
|
76
|
+
raw = await readFile(path, "utf8");
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error.code !== "ENOENT")
|
|
80
|
+
throw error;
|
|
81
|
+
const parent = dirname(dir);
|
|
82
|
+
if (parent === dir)
|
|
83
|
+
break;
|
|
84
|
+
dir = parent;
|
|
86
85
|
continue;
|
|
87
|
-
for (const name of Object.keys(field)) {
|
|
88
|
-
if (isDocsPackage(name))
|
|
89
|
-
names.add(name);
|
|
90
86
|
}
|
|
87
|
+
found = true;
|
|
88
|
+
let parsed;
|
|
89
|
+
try {
|
|
90
|
+
parsed = JSON.parse(raw);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new DocspackError(`${path} is not valid JSON`, { cause: error });
|
|
94
|
+
}
|
|
95
|
+
const manifest = parsed;
|
|
96
|
+
for (const field of [manifest.dependencies, manifest.devDependencies]) {
|
|
97
|
+
if (typeof field !== "object" || field === null)
|
|
98
|
+
continue;
|
|
99
|
+
for (const name of Object.keys(field)) {
|
|
100
|
+
if (isDocsPackage(name))
|
|
101
|
+
names.add(name);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const parent = dirname(dir);
|
|
105
|
+
if (parent === dir)
|
|
106
|
+
break;
|
|
107
|
+
dir = parent;
|
|
108
|
+
}
|
|
109
|
+
if (!found) {
|
|
110
|
+
throw new DocspackError(`No package.json found in ${cwd}`, {
|
|
111
|
+
hint: "Run docspack from a project directory, or pass --cwd <dir>.",
|
|
112
|
+
});
|
|
91
113
|
}
|
|
92
114
|
return [...names].sort();
|
|
93
115
|
}
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,aAAa,EAEb,SAAS,EACT,aAAa,GACd,MAAM,WAAW,CAAC;AAoBnB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,mDAAmD,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,QAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;YACjE,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,QAAQ,IAAI,aAAa,EAAE,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CACV,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAChD,CAAC,CAAC,GAAG,IAAI,WAAW,QAAQ,IAAI,aAAa,wBAAwB;gBACrE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACpB,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,2BAA2B,QAAQ,CAAC,OAAO,uBAAuB,OAAO,WAAW,OAAO,EAAE,CACrG,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5B,IAAI;YACJ,OAAO;YACP,GAAG;YACH,OAAO;YACP,QAAQ;YACR,OAAO,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,GAAW;IAC7C,IAAI,
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts
CHANGED
|
@@ -16,6 +16,12 @@ export interface DoctorOptions {
|
|
|
16
16
|
readonly dir: string;
|
|
17
17
|
/** Treat warnings as failures. Used by prepublishOnly and CI. */
|
|
18
18
|
readonly strict?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Also fail on prose style — filler and long sentences. Implies `strict`. Off by default
|
|
21
|
+
* because `--strict` is the gate `init` scaffolds, and prose written by a human is not a
|
|
22
|
+
* reason to block a first publish.
|
|
23
|
+
*/
|
|
24
|
+
readonly pedantic?: boolean;
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
21
27
|
* Checks a documentation package the way the indexer and a reviewer would. A broken docs package
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAMD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAwK7E"}
|
package/dist/doctor.js
CHANGED
|
@@ -14,6 +14,9 @@ const MIN_CHUNK_TOKENS = 30;
|
|
|
14
14
|
export async function runDoctor(options) {
|
|
15
15
|
const findings = [];
|
|
16
16
|
const llmsDir = join(options.dir, LLMS_DIR);
|
|
17
|
+
// Structural checks describe a package that will not retrieve properly; the two prose checks
|
|
18
|
+
// are opinions about writing. Only the first kind may block a publish by default.
|
|
19
|
+
const prose = options.pedantic === true ? "warn" : "info";
|
|
17
20
|
const pkg = await readJson(join(options.dir, "package.json"));
|
|
18
21
|
const manifest = await loadManifest(llmsDir, findings);
|
|
19
22
|
if (manifest === undefined) {
|
|
@@ -99,7 +102,7 @@ export async function runDoctor(options) {
|
|
|
99
102
|
.join(", ");
|
|
100
103
|
findings.push({
|
|
101
104
|
check: "filler",
|
|
102
|
-
severity:
|
|
105
|
+
severity: prose,
|
|
103
106
|
message: `chunk "${chunk.id}" contains narration a model does not need: ${listed}`,
|
|
104
107
|
where: chunk.file,
|
|
105
108
|
fix: "Delete it. Nobody searches for these words and they carry no fact.",
|
|
@@ -109,7 +112,7 @@ export async function runDoctor(options) {
|
|
|
109
112
|
if (long.length > 0) {
|
|
110
113
|
findings.push({
|
|
111
114
|
check: "long-sentence",
|
|
112
|
-
severity:
|
|
115
|
+
severity: prose,
|
|
113
116
|
message: `chunk "${chunk.id}" has ${plural(long.length, "sentence")} over 40 words`,
|
|
114
117
|
where: chunk.file,
|
|
115
118
|
fix: "Split them. One claim per sentence retrieves and reads better.",
|
|
@@ -157,7 +160,8 @@ export async function runDoctor(options) {
|
|
|
157
160
|
fix: "Run `docspack build`.",
|
|
158
161
|
});
|
|
159
162
|
}
|
|
160
|
-
const
|
|
163
|
+
const strict = options.strict === true || options.pedantic === true;
|
|
164
|
+
const failed = findings.some((finding) => finding.severity === "error" || (strict && finding.severity === "warn"));
|
|
161
165
|
return { ok: !failed, findings, chunks: manifest.chunks.length, tokens };
|
|
162
166
|
}
|
|
163
167
|
function plural(count, noun) {
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,aAAa,EAEb,aAAa,EACb,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export { type PreviewOptions, type PreviewResult, previewPackage } from "./previ
|
|
|
18
18
|
export { type Choice, defaultStreams, Prompter, type PromptStreams } from "./prompt.js";
|
|
19
19
|
export { DEFAULT_LIMIT, DEFAULT_MAX_TOKENS, type QueryHit, type QueryOptions, type QueryResult, queryDocs, renderAnswer, splitPackageId, } from "./search.js";
|
|
20
20
|
export { AGENTS_SNIPPET, FEEDBACK_SNIPPET } from "./snippet.js";
|
|
21
|
-
export { CHUNKS_DIR, type ChunkSpec, chunkId, estimateTokens, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, type PackageManifest, packageId, parseManifest, resolveChunkFile, SCHEMA_URL, serializeManifest, } from "./spec.js";
|
|
21
|
+
export { CHUNKS_DIR, type ChunkSpec, chunkId, estimateTokens, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, type PackageManifest, packageId, parseManifest, resolveChunkFile, SCHEMA_URL, SPEC_URL, serializeManifest, } from "./spec.js";
|
|
22
22
|
export { type BlockedFinding, type BlockedReason, issueUrl, prepareSubmission, type RoutedFinding, renderBody, type SubmitOptions, type SubmitReport, } from "./submit.js";
|
|
23
23
|
export { type SyncedPackage, type SyncOptions, type SyncResult, type SyncStatus, syncProject, } from "./sync.js";
|
|
24
24
|
export { type DriftFinding, type VerifiedPackage, type VerifyOptions, type VerifyReport, type VerifyStatus, verifyProject, } from "./verify.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EACL,KAAK,WAAW,EAChB,UAAU,EACV,KAAK,eAAe,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,EACL,oBAAoB,EACpB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,YAAY,EACZ,aAAa,EACb,KAAK,aAAa,EAClB,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,QAAQ,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,QAAQ,EACR,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,KAAK,YAAY,EACjB,SAAS,EACT,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,KAAK,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,SAAS,EACd,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EACb,KAAK,eAAe,EACpB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,QAAQ,EACR,iBAAiB,EACjB,KAAK,aAAa,EAClB,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ export { previewPackage } from "./preview.js";
|
|
|
18
18
|
export { defaultStreams, Prompter } from "./prompt.js";
|
|
19
19
|
export { DEFAULT_LIMIT, DEFAULT_MAX_TOKENS, queryDocs, renderAnswer, splitPackageId, } from "./search.js";
|
|
20
20
|
export { AGENTS_SNIPPET, FEEDBACK_SNIPPET } from "./snippet.js";
|
|
21
|
-
export { CHUNKS_DIR, chunkId, estimateTokens, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, packageId, parseManifest, resolveChunkFile, SCHEMA_URL, serializeManifest, } from "./spec.js";
|
|
21
|
+
export { CHUNKS_DIR, chunkId, estimateTokens, isCommunityPackage, isDocsPackage, isVendorPackage, LLMS_DIR, MANIFEST_FILE, packageId, parseManifest, resolveChunkFile, SCHEMA_URL, SPEC_URL, serializeManifest, } from "./spec.js";
|
|
22
22
|
export { issueUrl, prepareSubmission, renderBody, } from "./submit.js";
|
|
23
23
|
export { syncProject, } from "./sync.js";
|
|
24
24
|
export { verifyProject, } from "./verify.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAEL,UAAU,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAKhB,KAAK,EACL,oBAAoB,EACpB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,SAAS,GAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAsB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAGL,UAAU,EACV,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAiB,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAOL,QAAQ,EACR,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwC,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAEL,SAAS,EACT,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EAId,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAA2C,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAe,cAAc,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,aAAa,EACb,kBAAkB,EAIlB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,UAAU,EAEV,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EAEb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAGL,QAAQ,EACR,iBAAiB,EAEjB,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAML,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAEL,UAAU,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAKhB,KAAK,EACL,oBAAoB,EACpB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,SAAS,GAEV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAsB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAGL,UAAU,EACV,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAiB,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAOL,QAAQ,EACR,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwC,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAEL,SAAS,EACT,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EAId,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAA2C,cAAc,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAe,cAAc,EAAE,QAAQ,EAAsB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,aAAa,EACb,kBAAkB,EAIlB,SAAS,EACT,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,UAAU,EAEV,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EAEb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAGL,QAAQ,EACR,iBAAiB,EAEjB,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAML,aAAa,GACd,MAAM,aAAa,CAAC"}
|
package/dist/search.d.ts
CHANGED
|
@@ -26,6 +26,12 @@ export interface QueryResult {
|
|
|
26
26
|
readonly tokens: number;
|
|
27
27
|
/** True when any hit came from an unvetted community package. */
|
|
28
28
|
readonly untrusted: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Packages this project depends on that are installed but absent from the store. Nothing they
|
|
31
|
+
* document can match until `docspack sync` runs, which is a different answer from "nothing
|
|
32
|
+
* covers this question".
|
|
33
|
+
*/
|
|
34
|
+
readonly unindexed: readonly string[];
|
|
29
35
|
}
|
|
30
36
|
export declare function queryDocs(options: QueryOptions): Promise<QueryResult>;
|
|
31
37
|
/**
|
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhD,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhD,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4B3E;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBvE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAI5E"}
|
package/dist/search.js
CHANGED
|
@@ -5,9 +5,11 @@ export const DEFAULT_MAX_TOKENS = 3000;
|
|
|
5
5
|
export const DEFAULT_LIMIT = 3;
|
|
6
6
|
export async function queryDocs(options) {
|
|
7
7
|
const scoped = options.scoped !== false;
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const installed = scoped ? (await discoverPackages(options.cwd)).packages : undefined;
|
|
9
|
+
const packageIds = installed?.map((pkg) => pkg.id);
|
|
10
|
+
const unindexed = (installed ?? [])
|
|
11
|
+
.filter((pkg) => !options.store.hasPackage(pkg.id))
|
|
12
|
+
.map((pkg) => pkg.id);
|
|
11
13
|
const hits = options.store
|
|
12
14
|
.search(options.query, {
|
|
13
15
|
...(packageIds === undefined ? {} : { packageIds }),
|
|
@@ -25,6 +27,7 @@ export async function queryDocs(options) {
|
|
|
25
27
|
hits,
|
|
26
28
|
tokens: hits.reduce((total, hit) => total + hit.tokens, 0),
|
|
27
29
|
untrusted: hits.some((hit) => !hit.trusted),
|
|
30
|
+
unindexed,
|
|
28
31
|
};
|
|
29
32
|
}
|
|
30
33
|
const UNTRUSTED_NOTICE = "NOTE: results marked (community) come from an unverified @docspack-community package. " +
|
|
@@ -35,6 +38,11 @@ const UNTRUSTED_NOTICE = "NOTE: results marked (community) come from an unverifi
|
|
|
35
38
|
*/
|
|
36
39
|
export function renderAnswer(result, query) {
|
|
37
40
|
if (result.hits.length === 0) {
|
|
41
|
+
// Forgetting `sync` is the likeliest first mistake, and the tool can tell it apart from a
|
|
42
|
+
// question nothing covers: it can see what is installed and what is in the store.
|
|
43
|
+
if (result.unindexed.length > 0) {
|
|
44
|
+
return `No local documentation matched "${query}", and ${result.unindexed.join(", ")} ${result.unindexed.length === 1 ? "is" : "are"} installed but not indexed. Run \`docspack sync\`, then ask again.`;
|
|
45
|
+
}
|
|
38
46
|
return `No local documentation matched "${query}". The project may not depend on a docspack package covering it.`;
|
|
39
47
|
}
|
|
40
48
|
const sections = result.hits.map((hit) => {
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,qGAAqG;AACrG,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export declare const LLMS_DIR = ".llms";
|
|
|
3
3
|
export declare const MANIFEST_FILE = "manifest.json";
|
|
4
4
|
export declare const CHUNKS_DIR = "chunks";
|
|
5
5
|
export declare const SCHEMA_URL = "https://docspack.dev/schema/v1.json";
|
|
6
|
+
/** Prose specification of the package format. The hint on a validation failure points here. */
|
|
7
|
+
export declare const SPEC_URL = "https://docspack.dev/spec";
|
|
6
8
|
/** One retrievable unit of documentation. */
|
|
7
9
|
export interface ChunkSpec {
|
|
8
10
|
readonly id: string;
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,WAAW,CAAC;AACnC,eAAO,MAAM,UAAU,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,UAAU,CAAC;AAChC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,UAAU,WAAW,CAAC;AACnC,eAAO,MAAM,UAAU,wCAAwC,CAAC;AAChE,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AAEpD,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC;AAID,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,sDAAsD;AACtD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAStE;AAED,+FAA+F;AAC/F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAkD1E;AAcD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEnE"}
|
package/dist/spec.js
CHANGED
|
@@ -5,6 +5,8 @@ export const LLMS_DIR = ".llms";
|
|
|
5
5
|
export const MANIFEST_FILE = "manifest.json";
|
|
6
6
|
export const CHUNKS_DIR = "chunks";
|
|
7
7
|
export const SCHEMA_URL = "https://docspack.dev/schema/v1.json";
|
|
8
|
+
/** Prose specification of the package format. The hint on a validation failure points here. */
|
|
9
|
+
export const SPEC_URL = "https://docspack.dev/spec";
|
|
8
10
|
const CHUNK_ID = /^[a-z0-9][a-z0-9._-]*$/i;
|
|
9
11
|
/** Official vendor packages: `@stripe/docspack`. */
|
|
10
12
|
export function isVendorPackage(name) {
|
|
@@ -47,7 +49,7 @@ export function parseManifest(raw, where) {
|
|
|
47
49
|
// The explicit annotation is what lets TypeScript treat a `fail(...)` call as unreachable-after.
|
|
48
50
|
const fail = (message) => {
|
|
49
51
|
throw new DocspackError(`${where}: ${message}`, {
|
|
50
|
-
hint: `See the package specification: ${
|
|
52
|
+
hint: `See the package specification: ${SPEC_URL}`,
|
|
51
53
|
});
|
|
52
54
|
};
|
|
53
55
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
package/dist/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/style.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmCH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAcpD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAsB,GAAG,MAAM,EAAE,CAOxF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvD;AAKD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD"}
|
package/dist/style.js
CHANGED
|
@@ -31,6 +31,11 @@ const SENTENCE_SPLIT = /(?<=[.!?])\s+/;
|
|
|
31
31
|
/** A heading or list item starts a new unit, whatever the previous line ended with. */
|
|
32
32
|
const BLOCK_START = /\n(?=\s*(?:[-*+]\s|\d+\.\s|#{1,6}\s|\|))/;
|
|
33
33
|
const LONG_SENTENCE_WORDS = 40;
|
|
34
|
+
/**
|
|
35
|
+
* A word carries a letter or a digit. Stripped code leaves its punctuation behind, so counting
|
|
36
|
+
* everything between spaces reports an enumeration of forty code spans as a forty-word sentence.
|
|
37
|
+
*/
|
|
38
|
+
const WORD = /[\p{L}\p{N}]/u;
|
|
34
39
|
/** Filler phrases found in a document, with how often each occurs. */
|
|
35
40
|
export function findFiller(text) {
|
|
36
41
|
const prose = withoutCode(text);
|
|
@@ -56,7 +61,7 @@ export function findLongSentences(text, maxWords = LONG_SENTENCE_WORDS) {
|
|
|
56
61
|
.flatMap((block) => block.split(BLOCK_START))
|
|
57
62
|
.flatMap((block) => block.split(SENTENCE_SPLIT))
|
|
58
63
|
.map((sentence) => sentence.replace(/\s+/g, " ").trim())
|
|
59
|
-
.filter((sentence) => sentence.split(" ").filter(
|
|
64
|
+
.filter((sentence) => sentence.split(" ").filter((word) => WORD.test(word)).length > maxWords);
|
|
60
65
|
}
|
|
61
66
|
/**
|
|
62
67
|
* True when a chunk contains something concrete: a code block, an inline identifier, a list or a
|
|
@@ -77,11 +82,13 @@ export function contentFingerprint(text) {
|
|
|
77
82
|
.replace(/[^a-z0-9]+/g, " ")
|
|
78
83
|
.trim();
|
|
79
84
|
}
|
|
85
|
+
/** An authored directive, e.g. `<!-- docspack: tags=grid -->`. Metadata, not site boilerplate. */
|
|
86
|
+
const DIRECTIVE_LINE = /^\s*<!--\s*docspack:/i;
|
|
80
87
|
/** Removes lines a documentation site wraps around its content. */
|
|
81
88
|
export function stripBoilerplate(text) {
|
|
82
89
|
return text
|
|
83
90
|
.split("\n")
|
|
84
|
-
.filter((line) => !BOILERPLATE.some((pattern) => pattern.test(line)))
|
|
91
|
+
.filter((line) => DIRECTIVE_LINE.test(line) || !BOILERPLATE.some((pattern) => pattern.test(line)))
|
|
85
92
|
.join("\n");
|
|
86
93
|
}
|
|
87
94
|
/** Text with fenced and inline code removed, so prose rules never fire on a code sample. */
|
package/dist/style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+FAA+F;AAC/F,MAAM,MAAM,GAAG;IACb,6DAA6D;IAC7D,iGAAiG;IACjG,2DAA2D;IAC3D,sBAAsB;IACtB,mEAAmE;IACnE,4DAA4D;IAC5D,+DAA+D;IAC/D,4HAA4H;IAC5H,0EAA0E;IAC1E,0BAA0B;CAC3B,CAAC;AAEF,kFAAkF;AAClF,MAAM,WAAW,GAAG;IAClB,2CAA2C,EAAE,0BAA0B;IACvE,gCAAgC,EAAE,aAAa;IAC/C,sFAAsF;IACtF,kCAAkC;IAClC,yBAAyB;CAC1B,CAAC;AAEF,MAAM,cAAc,GAAG,eAAe,CAAC;AACvC,uFAAuF;AACvF,MAAM,WAAW,GAAG,0CAA0C,CAAC;AAC/D,MAAM,mBAAmB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/build.ts
CHANGED
|
@@ -408,8 +408,10 @@ function chunkDocuments(
|
|
|
408
408
|
: splitMarkdown(document.text, document.title, maxTokens);
|
|
409
409
|
|
|
410
410
|
for (const section of sections) {
|
|
411
|
-
const
|
|
412
|
-
const
|
|
411
|
+
const directives = readDirectives(section.body);
|
|
412
|
+
const body = withoutDuplicateHeading(directives.body, section.heading);
|
|
413
|
+
const id = uniqueId(chunkSlug(document.title, section.heading), taken);
|
|
414
|
+
const contents = `# ${section.heading}\n\n<!-- docspack: from ${document.origin} -->\n\n${body}\n`;
|
|
413
415
|
const file = `${CHUNKS_DIR}/${id}.md`;
|
|
414
416
|
|
|
415
417
|
files.push({ path: file, contents });
|
|
@@ -417,8 +419,20 @@ function chunkDocuments(
|
|
|
417
419
|
id,
|
|
418
420
|
file,
|
|
419
421
|
tokens: estimateTokens(contents),
|
|
420
|
-
tags:
|
|
421
|
-
|
|
422
|
+
// Directive tags first: they are the author aiming one chunk, and `uniqueWords` caps.
|
|
423
|
+
tags: uniqueWords([
|
|
424
|
+
...directives.tags,
|
|
425
|
+
document.title,
|
|
426
|
+
section.heading,
|
|
427
|
+
...(document.tags ?? []),
|
|
428
|
+
]),
|
|
429
|
+
entities: [
|
|
430
|
+
...new Set([
|
|
431
|
+
...(document.entities ?? []),
|
|
432
|
+
...directives.entities,
|
|
433
|
+
...extractEntities(body),
|
|
434
|
+
]),
|
|
435
|
+
],
|
|
422
436
|
});
|
|
423
437
|
}
|
|
424
438
|
}
|
|
@@ -508,13 +522,90 @@ function splitParagraphs(text: string, maxTokens: number): string[] {
|
|
|
508
522
|
return parts;
|
|
509
523
|
}
|
|
510
524
|
|
|
511
|
-
/**
|
|
525
|
+
/** A member access in inline code, e.g. `Stripe.setApiKey`. */
|
|
526
|
+
const DOTTED_ENTITY = /`([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)+)\(?\)?`/g;
|
|
527
|
+
/**
|
|
528
|
+
* An inline-code token that is an identifier on its own: `TwoColumn`, `useSlide`,
|
|
529
|
+
* `text-accent`. Component libraries name most of their surface without a dot, so requiring
|
|
530
|
+
* one made `verify` blind to them. Two words are required — a single capitalised word in a
|
|
531
|
+
* code span is as often a value as an API name.
|
|
532
|
+
*/
|
|
533
|
+
const BARE_ENTITY =
|
|
534
|
+
/`([A-Za-z][a-z0-9]*(?:[A-Z][A-Za-z0-9]*)+|[a-z][a-z0-9]*(?:-[a-z0-9]+)+)\(?\)?`/g;
|
|
535
|
+
|
|
536
|
+
const MAX_ENTITIES = 20;
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* Pulls the identifiers a section names out of its inline code.
|
|
540
|
+
*
|
|
541
|
+
* Member accesses and camel or Pascal names come first. A reference page often enumerates
|
|
542
|
+
* dozens of hyphenated variants — `token-0`, `token-1` — and letting those fill the cap would
|
|
543
|
+
* drop the component the page is actually about.
|
|
544
|
+
*/
|
|
512
545
|
function extractEntities(body: string): string[] {
|
|
513
|
-
const
|
|
514
|
-
|
|
515
|
-
|
|
546
|
+
const dotted = matchAll(body, DOTTED_ENTITY);
|
|
547
|
+
const bare = matchAll(body, BARE_ENTITY);
|
|
548
|
+
const ordered = [
|
|
549
|
+
...dotted,
|
|
550
|
+
...bare.filter((name) => !name.includes("-")),
|
|
551
|
+
...bare.filter((name) => name.includes("-")),
|
|
552
|
+
];
|
|
553
|
+
return [...new Set(ordered)].slice(0, MAX_ENTITIES);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
function matchAll(text: string, pattern: RegExp): string[] {
|
|
557
|
+
const found: string[] = [];
|
|
558
|
+
for (const match of text.matchAll(pattern)) {
|
|
559
|
+
if (match[1] !== undefined) found.push(match[1]);
|
|
516
560
|
}
|
|
517
|
-
return
|
|
561
|
+
return found;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
/** One authored override under a heading: `<!-- docspack: tags=grid,columns -->`. */
|
|
565
|
+
const DIRECTIVE = /^[ \t]*<!--[ \t]*docspack:[ \t]*(tags|entities)[ \t]*=([^>]*?)-->[ \t]*$/gim;
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Reads per-section directives and removes them from the body. Front matter belongs to a whole
|
|
569
|
+
* document, so a page of eighty sections cannot aim any one of them; this is that lever.
|
|
570
|
+
*/
|
|
571
|
+
function readDirectives(body: string): { body: string; tags: string[]; entities: string[] } {
|
|
572
|
+
const tags: string[] = [];
|
|
573
|
+
const entities: string[] = [];
|
|
574
|
+
|
|
575
|
+
const text = body.replace(DIRECTIVE, (_line, key: string, value: string) => {
|
|
576
|
+
const values = value
|
|
577
|
+
.split(",")
|
|
578
|
+
.map((item) => item.trim())
|
|
579
|
+
.filter((item) => item.length > 0);
|
|
580
|
+
(key.toLowerCase() === "tags" ? tags : entities).push(...values);
|
|
581
|
+
return "";
|
|
582
|
+
});
|
|
583
|
+
|
|
584
|
+
return { body: text.replace(/\n{3,}/g, "\n\n").trim(), tags, entities };
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* Drops a source `# Title` that repeats the heading being written above it. A single-`H1`
|
|
589
|
+
* document has no `##` to split at, so its heading falls back to the title and the body would
|
|
590
|
+
* otherwise open with the same line twice.
|
|
591
|
+
*/
|
|
592
|
+
function withoutDuplicateHeading(body: string, heading: string): string {
|
|
593
|
+
const [first = "", ...rest] = body.split("\n");
|
|
594
|
+
const match = /^#\s+(.+?)\s*$/.exec(first.trim());
|
|
595
|
+
if (match?.[1] === undefined) return body;
|
|
596
|
+
if (match[1].trim().toLowerCase() !== heading.trim().toLowerCase()) return body;
|
|
597
|
+
return rest.join("\n").trim();
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* The chunk id for a section. When the section heading is the document title — every
|
|
602
|
+
* single-`H1` page — concatenating the two stutters: `colours-colours`.
|
|
603
|
+
*/
|
|
604
|
+
function chunkSlug(title: string, heading: string): string {
|
|
605
|
+
const titleSlug = slugify(title, "chunk");
|
|
606
|
+
return slugify(heading, "chunk") === titleSlug
|
|
607
|
+
? titleSlug
|
|
608
|
+
: slugify(`${title}-${heading}`, "chunk");
|
|
518
609
|
}
|
|
519
610
|
|
|
520
611
|
/** Reduces a heading to a chunk id: lowercase, hyphen-separated, no path separators. */
|