docspack 0.3.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/agent.d.ts +48 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +243 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/artifact.d.ts +32 -0
  6. package/dist/artifact.d.ts.map +1 -0
  7. package/dist/artifact.js +78 -0
  8. package/dist/artifact.js.map +1 -0
  9. package/dist/build.d.ts.map +1 -1
  10. package/dist/build.js +75 -9
  11. package/dist/build.js.map +1 -1
  12. package/dist/changed.d.ts +31 -0
  13. package/dist/changed.d.ts.map +1 -0
  14. package/dist/changed.js +71 -0
  15. package/dist/changed.js.map +1 -0
  16. package/dist/cli.js +131 -10
  17. package/dist/cli.js.map +1 -1
  18. package/dist/coverage.d.ts +35 -0
  19. package/dist/coverage.d.ts.map +1 -0
  20. package/dist/coverage.js +64 -0
  21. package/dist/coverage.js.map +1 -0
  22. package/dist/db.d.ts +38 -2
  23. package/dist/db.d.ts.map +1 -1
  24. package/dist/db.js +109 -6
  25. package/dist/db.js.map +1 -1
  26. package/dist/discovery.d.ts +14 -0
  27. package/dist/discovery.d.ts.map +1 -1
  28. package/dist/discovery.js +31 -6
  29. package/dist/discovery.js.map +1 -1
  30. package/dist/doctor.d.ts.map +1 -1
  31. package/dist/doctor.js +90 -3
  32. package/dist/doctor.js.map +1 -1
  33. package/dist/document.d.ts +2 -0
  34. package/dist/document.d.ts.map +1 -1
  35. package/dist/document.js +7 -3
  36. package/dist/document.js.map +1 -1
  37. package/dist/help.d.ts.map +1 -1
  38. package/dist/help.js +65 -4
  39. package/dist/help.js.map +1 -1
  40. package/dist/index.d.ts +8 -3
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +7 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/mcp.d.ts.map +1 -1
  45. package/dist/mcp.js +3 -0
  46. package/dist/mcp.js.map +1 -1
  47. package/dist/preview.d.ts.map +1 -1
  48. package/dist/preview.js +1 -0
  49. package/dist/preview.js.map +1 -1
  50. package/dist/search.d.ts +17 -3
  51. package/dist/search.d.ts.map +1 -1
  52. package/dist/search.js +116 -21
  53. package/dist/search.js.map +1 -1
  54. package/dist/spec.d.ts +6 -0
  55. package/dist/spec.d.ts.map +1 -1
  56. package/dist/spec.js +12 -3
  57. package/dist/spec.js.map +1 -1
  58. package/dist/surface.d.ts +45 -0
  59. package/dist/surface.d.ts.map +1 -0
  60. package/dist/surface.js +208 -0
  61. package/dist/surface.js.map +1 -0
  62. package/dist/sync.d.ts +8 -1
  63. package/dist/sync.d.ts.map +1 -1
  64. package/dist/sync.js +50 -1
  65. package/dist/sync.js.map +1 -1
  66. package/dist/verify.d.ts +9 -0
  67. package/dist/verify.d.ts.map +1 -1
  68. package/dist/verify.js +55 -27
  69. package/dist/verify.js.map +1 -1
  70. package/package.json +1 -1
  71. package/src/agent.ts +308 -0
  72. package/src/artifact.ts +110 -0
  73. package/src/build.ts +103 -10
  74. package/src/changed.ts +99 -0
  75. package/src/cli.ts +167 -10
  76. package/src/coverage.ts +96 -0
  77. package/src/db.ts +168 -7
  78. package/src/discovery.ts +40 -5
  79. package/src/doctor.ts +100 -4
  80. package/src/document.ts +13 -4
  81. package/src/help.ts +65 -4
  82. package/src/index.ts +30 -0
  83. package/src/mcp.ts +3 -0
  84. package/src/preview.ts +1 -0
  85. package/src/search.ts +158 -24
  86. package/src/spec.ts +21 -3
  87. package/src/surface.ts +265 -0
  88. package/src/sync.ts +66 -2
  89. package/src/verify.ts +57 -27
package/dist/search.js CHANGED
@@ -1,8 +1,15 @@
1
- import { discoverPackages } from "./discovery.js";
2
- import { formatDocumentedLibrary, isCommunityPackage } from "./spec.js";
1
+ import { discoverLibraries, discoverPackages } from "./discovery.js";
2
+ import { chunkId, formatDocumentedLibrary, isCommunityPackage } from "./spec.js";
3
3
  /** Ceiling on how much context one query may return, per the blueprint's context-exhaustion rule. */
4
4
  export const DEFAULT_MAX_TOKENS = 3000;
5
5
  export const DEFAULT_LIMIT = 3;
6
+ /**
7
+ * How many declarations one answer may carry. A question names one or two things; more than
8
+ * that and the names are incidental, and pinning them would spend the budget on noise.
9
+ */
10
+ const MAX_DECLARATIONS = 2;
11
+ /** Below this a token is too short to be a name worth looking up: `c`, `id`. */
12
+ const MIN_SYMBOL = 3;
6
13
  export async function queryDocs(options) {
7
14
  const scoped = options.scoped !== false;
8
15
  const installed = scoped ? (await discoverPackages(options.cwd)).packages : undefined;
@@ -12,38 +19,113 @@ export async function queryDocs(options) {
12
19
  .map((pkg) => pkg.id);
13
20
  // Read from the installed manifests rather than the index: the store is a cache of chunk text,
14
21
  // and adding a column to it would make every existing store need a rebuild to answer this.
22
+ // Keyed by package id and by chunk id in the same map, because a chunk id already carries its
23
+ // package: `@acme/docspack@1.4.0/api-auth` cannot collide with `@acme/docspack@1.4.0`.
15
24
  const documented = new Map();
16
25
  for (const pkg of installed ?? []) {
17
26
  const documents = pkg.manifest.documents;
18
27
  if (documents !== undefined && documents.length > 0) {
19
28
  documented.set(pkg.id, documents.map(formatDocumentedLibrary));
20
29
  }
30
+ for (const chunk of pkg.manifest.chunks) {
31
+ if (chunk.documents === undefined || chunk.documents.length === 0)
32
+ continue;
33
+ documented.set(chunkId(pkg.id, chunk.id), chunk.documents.map(formatDocumentedLibrary));
34
+ }
21
35
  }
22
- const hits = options.store
36
+ const maxTokens = options.maxTokens ?? DEFAULT_MAX_TOKENS;
37
+ const prose = options.store
23
38
  .search(options.query, {
24
39
  ...(packageIds === undefined ? {} : { packageIds }),
25
40
  ...(options.packageFilter === undefined
26
41
  ? {}
27
42
  : { packageFilter: `%${options.packageFilter}%` }),
28
43
  limit: options.limit ?? DEFAULT_LIMIT,
29
- maxTokens: options.maxTokens ?? DEFAULT_MAX_TOKENS,
44
+ maxTokens,
45
+ // Declarations are addressed by name, never ranked against prose: a library exports far
46
+ // more names than its documentation has pages, and ranking them together would answer
47
+ // every question with type machinery.
48
+ kinds: ["docs"],
30
49
  })
31
- .map((hit) => {
32
- const { name, version } = splitPackageId(hit.packageId);
33
- const documents = documented.get(hit.packageId);
34
- return {
35
- ...hit,
36
- name,
37
- version,
38
- trusted: !isCommunityPackage(name),
39
- ...(documents === undefined ? {} : { documents }),
40
- };
41
- });
50
+ .map((hit) => toQueryHit(hit, "docs", documented));
51
+ const { declarations, undocumented } = options.artifacts === false
52
+ ? { declarations: [], undocumented: [] }
53
+ : await findDeclarations(options, prose, maxTokens);
54
+ // Declarations first: for an agent about to write a call, the signature at the installed
55
+ // version is the load-bearing line, and the prose explains it afterwards.
56
+ const hits = [...declarations, ...prose];
42
57
  return {
43
58
  hits,
44
59
  tokens: hits.reduce((total, hit) => total + hit.tokens, 0),
45
60
  untrusted: hits.some((hit) => !hit.trusted),
46
61
  unindexed,
62
+ undocumented,
63
+ };
64
+ }
65
+ /**
66
+ * Looks up the names a question used against the symbols the installed libraries export.
67
+ *
68
+ * Matching is case-sensitive on purpose. Someone asking about an API writes it as it is spelled,
69
+ * because they read it in a stack trace or an editor; matching loosely would let "how do I use
70
+ * data" pin hono's `Data` type ahead of the page that answers the question.
71
+ */
72
+ async function findDeclarations(options, prose, maxTokens) {
73
+ const scope = options.scoped === false
74
+ ? undefined
75
+ : (await discoverLibraries(options.cwd)).map((library) => `${library.name}@${library.version}`);
76
+ const declarations = [];
77
+ const undocumented = [];
78
+ let spent = prose.reduce((total, hit) => total + hit.tokens, 0);
79
+ for (const term of symbolTerms(options.query)) {
80
+ if (declarations.length >= MAX_DECLARATIONS)
81
+ break;
82
+ const found = options.store
83
+ .lookupSymbol(term, scope)
84
+ .filter((hit) => options.packageFilter === undefined || hit.packageId.includes(options.packageFilter));
85
+ if (found.length === 0)
86
+ continue;
87
+ // The documentation covers it, so the prose that just came back is the better answer.
88
+ if (prose.some((hit) => mentions(hit.content, term)))
89
+ continue;
90
+ undocumented.push(term);
91
+ // The name is exported and undocumented either way; whether a declaration can be shown for
92
+ // it is a separate question, and a package can export a name it declares nowhere readable.
93
+ const first = found[0];
94
+ if (first === undefined || first.chunkId.length === 0)
95
+ continue;
96
+ const chunk = options.store.chunk(first.chunkId);
97
+ if (chunk === undefined)
98
+ continue;
99
+ if (declarations.length > 0 && spent + chunk.tokens > maxTokens)
100
+ break;
101
+ declarations.push(toQueryHit(chunk, "artifact", new Map()));
102
+ spent += chunk.tokens;
103
+ }
104
+ return { declarations, undocumented };
105
+ }
106
+ /** Identifier-shaped words in a question, longest first so the specific name is tried first. */
107
+ function symbolTerms(query) {
108
+ const terms = query.match(/[A-Za-z_$][\w$]*/g) ?? [];
109
+ const unique = [...new Set(terms.filter((term) => term.length >= MIN_SYMBOL))];
110
+ return unique.sort((a, b) => b.length - a.length);
111
+ }
112
+ function mentions(content, name) {
113
+ return new RegExp(`(^|[^A-Za-z0-9_$])${escapeRegex(name)}([^A-Za-z0-9_$]|$)`).test(content);
114
+ }
115
+ function escapeRegex(value) {
116
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
117
+ }
118
+ function toQueryHit(hit, kind, documented) {
119
+ const { name, version } = splitPackageId(hit.packageId);
120
+ // The chunk's own libraries win: they are the narrower, and therefore the truer, claim.
121
+ const documents = documented.get(hit.chunkId) ?? documented.get(hit.packageId);
122
+ return {
123
+ ...hit,
124
+ name,
125
+ version,
126
+ kind,
127
+ trusted: !isCommunityPackage(name),
128
+ ...(documents === undefined ? {} : { documents }),
47
129
  };
48
130
  }
49
131
  const UNTRUSTED_NOTICE = "NOTE: results marked (community) come from an unverified @docspack-community package. " +
@@ -69,17 +151,30 @@ export function renderAnswer(result, query) {
69
151
  const describes = hit.documents === undefined || hit.documents.length === 0
70
152
  ? ""
71
153
  : ` · documents ${hit.documents.join(", ")}`;
72
- return [
73
- `## ${hit.chunkId}${trust}`,
74
- `Source: ${hit.name}@${hit.version} — ${hit.filePath}${describes}`,
75
- "",
76
- hit.content,
77
- ].join("\n");
154
+ const source = hit.kind === "artifact"
155
+ ? `Source: ${hit.name}@${hit.version} — declared in ${hit.filePath}, read from the installed package`
156
+ : `Source: ${hit.name}@${hit.version} — ${hit.filePath}${describes}`;
157
+ return [`## ${hit.chunkId}${trust}`, source, "", hit.content].join("\n");
78
158
  });
159
+ if (result.undocumented.length > 0)
160
+ sections.push(undocumentedNotice(result));
79
161
  if (result.untrusted)
80
162
  sections.push(UNTRUSTED_NOTICE);
81
163
  return sections.join("\n\n---\n\n");
82
164
  }
165
+ /**
166
+ * Saying what the documentation does *not* cover. A ranker always returns its best three matches
167
+ * and "best" is not "relevant", so without this an answer about a name nobody documented looks
168
+ * exactly like an answer about one they did.
169
+ */
170
+ function undocumentedNotice(result) {
171
+ const names = result.undocumented.map((name) => `\`${name}\``).join(", ");
172
+ const plural = result.undocumented.length === 1 ? "is" : "are";
173
+ const declared = result.hits.some((hit) => hit.kind === "artifact");
174
+ return declared
175
+ ? `NOTE: ${names} ${plural} exported by the installed library but mentioned in no documentation package here. The declaration above is the installed build's own, not prose anyone wrote.`
176
+ : `NOTE: ${names} ${plural} exported by the installed library but mentioned in no documentation package here.`;
177
+ }
83
178
  /** Splits `@stripe/docspack@2025.4.1` into its name and version. */
84
179
  export function splitPackageId(id) {
85
180
  const at = id.lastIndexOf("@");
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
package/dist/spec.d.ts CHANGED
@@ -14,6 +14,12 @@ export interface ChunkSpec {
14
14
  readonly tokens?: number;
15
15
  readonly tags: readonly string[];
16
16
  readonly entities: readonly string[];
17
+ /**
18
+ * What this chunk describes, when that is narrower than what the package describes. A
19
+ * repository publishing eighteen libraries at four versions from one documentation surface
20
+ * has a package-level answer that is true of the pack and useless about any one chunk.
21
+ */
22
+ readonly documents?: readonly DocumentedLibrary[];
17
23
  }
18
24
  /** A library release the package documents, e.g. `acme` at `1.4.0`. */
19
25
  export interface DocumentedLibrary {
@@ -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;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,kFAAkF;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,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;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAItE;AAED,qGAAqG;AACrG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAE1E;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,CAqD1E;AA+BD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAanE"}
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,kFAAkF;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACnD;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,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;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAItE;AAED,qGAAqG;AACrG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAE1E;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,CA6D1E;AA+BD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAiBnE"}
package/dist/spec.js CHANGED
@@ -77,7 +77,7 @@ export function parseManifest(raw, where) {
77
77
  fail('missing string field "version"');
78
78
  if (!Array.isArray(root.chunks))
79
79
  fail('missing "chunks" array');
80
- const documents = parseDocuments(root.documents, fail);
80
+ const packageDocuments = parseDocuments(root.documents, fail);
81
81
  const seen = new Set();
82
82
  const chunks = root.chunks.map((entry, index) => {
83
83
  if (typeof entry !== "object" || entry === null)
@@ -100,15 +100,22 @@ export function parseManifest(raw, where) {
100
100
  if (tokens !== undefined && (!Number.isInteger(tokens) || tokens < 1)) {
101
101
  return fail(`chunk "${id}" has an invalid "tokens" value; omit it to have it estimated`);
102
102
  }
103
+ const documents = parseDocuments(chunk.documents, fail);
103
104
  return {
104
105
  id,
105
106
  file,
106
107
  ...(typeof tokens === "number" ? { tokens } : {}),
107
108
  tags: stringArray(chunk.tags, `chunk "${id}" field "tags"`, fail),
108
109
  entities: stringArray(chunk.entities, `chunk "${id}" field "entities"`, fail),
110
+ ...(documents === undefined ? {} : { documents }),
109
111
  };
110
112
  });
111
- return { name, version, ...(documents === undefined ? {} : { documents }), chunks };
113
+ return {
114
+ name,
115
+ version,
116
+ ...(packageDocuments === undefined ? {} : { documents: packageDocuments }),
117
+ chunks,
118
+ };
112
119
  }
113
120
  /**
114
121
  * `["acme@1.4.0", "@acme/sdk@^2"]`. An array even for one library, because that is what the
@@ -140,7 +147,9 @@ export function serializeManifest(manifest) {
140
147
  name: manifest.name,
141
148
  version: manifest.version,
142
149
  ...(documents.length === 0 ? {} : { documents: documents.map(formatDocumentedLibrary) }),
143
- chunks: manifest.chunks,
150
+ chunks: manifest.chunks.map((chunk) => chunk.documents === undefined
151
+ ? chunk
152
+ : { ...chunk, documents: chunk.documents.map(formatDocumentedLibrary) }),
144
153
  }, null, 2)}\n`;
145
154
  }
146
155
  //# sourceMappingURL=spec.js.map
package/dist/spec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * One name a library publishes, and how a caller reaches it.
3
+ *
4
+ * This is a narrower reading of a package than [`readExportSurface`](./exports.ts), which
5
+ * collects every identifier in every `.d.ts` so that `verify` accuses as little as possible.
6
+ * Here the opposite is wanted: only what an entry point actually exports, because these names
7
+ * become answers, and an answer about a library's private type helps nobody.
8
+ */
9
+ export interface ExportedSymbol {
10
+ readonly name: string;
11
+ /** What a caller writes to import it, e.g. `hono/jwt`. */
12
+ readonly from: string;
13
+ /** Declaration file the name was read from, relative to the package root. */
14
+ readonly file: string;
15
+ }
16
+ export interface PublicSurface {
17
+ readonly name: string;
18
+ readonly version: string;
19
+ /** Subpaths of the `exports` map that resolve to a declaration file. */
20
+ readonly entryPoints: number;
21
+ readonly symbols: ReadonlyMap<string, ExportedSymbol>;
22
+ }
23
+ /**
24
+ * Reads what a library exports, starting from its `exports` map. Returns nothing when the
25
+ * package ships no type declarations, which is not an error: most of a project's dependencies
26
+ * are not the ones anybody asks questions about.
27
+ */
28
+ export declare function readPublicSurface(dir: string): Promise<PublicSurface | undefined>;
29
+ /**
30
+ * Every declaration in one file, with the JSDoc comment above it when there is one, keyed by the
31
+ * name it declares.
32
+ *
33
+ * One pass over the file rather than one per name. A generated declaration file can be megabytes
34
+ * and export hundreds of names, and scanning it once per name made indexing TypeScript itself
35
+ * take longer than everything else in a sync put together.
36
+ */
37
+ export declare function declarationsIn(source: string, limit?: number): Map<string, string>;
38
+ /**
39
+ * The declaration of one name, with the JSDoc comment above it when there is one. This is the
40
+ * text that answers a question the prose never covered.
41
+ */
42
+ export declare function declarationOf(source: string, name: string, limit?: number): string | undefined;
43
+ /** True when the declaration `declarationOf` returned carries a JSDoc comment. */
44
+ export declare function hasJsdoc(declaration: string): boolean;
45
+ //# sourceMappingURL=surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvD;AA6BD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAsBvF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAY7F;AAqBD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,SAAoB,GACxB,MAAM,GAAG,SAAS,CAEpB;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,208 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { dirname, join, relative, resolve, sep } from "node:path";
4
+ /** How far `export … from` chains are followed out of an entry point. */
5
+ const MAX_DEPTH = 6;
6
+ /** A package this large is generated, and reading all of it would dominate a sync. */
7
+ const MAX_FILES = 600;
8
+ const IDENTIFIER = /^[A-Za-z_$][\w$]*$/;
9
+ const DECLARATION = /export\s+(?:declare\s+)?(?:abstract\s+)?(?:class|function|const|let|var|interface|type|enum)\s+([A-Za-z_$][\w$]*)/g;
10
+ /**
11
+ * The same declaration, with the JSDoc comment above it captured as well.
12
+ *
13
+ * The comment body is written as "anything that is not the comment's end" rather than as a lazy
14
+ * run of any character. A lazy run expands across dozens of declarations to reach a distant
15
+ * comment terminator, and in a single global pass that swallows everything in between: on hono's
16
+ * 75kB type file it found 28 declarations where there are hundreds.
17
+ */
18
+ const DECLARED = /(\/\*\*(?:[^*]|\*(?!\/))*\*\/\s*)?export\s+(?:declare\s+)?(?:abstract\s+)?(?:class|function|const|let|var|interface|type|enum)\s+([A-Za-z_$][\w$]*)/g;
19
+ /** How much of a declaration is carried: long enough for a signature, short enough to rank. */
20
+ const DECLARATION_LIMIT = 400;
21
+ const EXPORT_LIST = /export\s*\{([^}]*)\}/g;
22
+ const REEXPORT = /export\s+(?:\*|\{[^}]*\})\s*(?:as\s+[A-Za-z_$][\w$]*\s*)?from\s+['"]([^'"]+)['"]/g;
23
+ /**
24
+ * Reads what a library exports, starting from its `exports` map. Returns nothing when the
25
+ * package ships no type declarations, which is not an error: most of a project's dependencies
26
+ * are not the ones anybody asks questions about.
27
+ */
28
+ export async function readPublicSurface(dir) {
29
+ const manifest = await readJson(join(dir, "package.json"));
30
+ if (manifest === undefined)
31
+ return undefined;
32
+ const symbols = new Map();
33
+ const name = typeof manifest.name === "string" ? manifest.name : "";
34
+ const budget = { files: MAX_FILES };
35
+ let entryPoints = 0;
36
+ for (const entry of entryPointsOf(manifest, dir, name)) {
37
+ entryPoints += 1;
38
+ await collect(entry.file, entry.specifier, dir, 0, new Set(), symbols, budget);
39
+ }
40
+ if (entryPoints === 0)
41
+ return undefined;
42
+ return {
43
+ name,
44
+ version: typeof manifest.version === "string" ? manifest.version : "",
45
+ entryPoints,
46
+ symbols,
47
+ };
48
+ }
49
+ /**
50
+ * Every declaration in one file, with the JSDoc comment above it when there is one, keyed by the
51
+ * name it declares.
52
+ *
53
+ * One pass over the file rather than one per name. A generated declaration file can be megabytes
54
+ * and export hundreds of names, and scanning it once per name made indexing TypeScript itself
55
+ * take longer than everything else in a sync put together.
56
+ */
57
+ export function declarationsIn(source, limit = DECLARATION_LIMIT) {
58
+ const found = new Map();
59
+ DECLARED.lastIndex = 0;
60
+ for (const match of source.matchAll(DECLARED)) {
61
+ const name = match[2];
62
+ if (name === undefined || found.has(name) || match.index === undefined)
63
+ continue;
64
+ const head = match[0];
65
+ const start = match.index + head.length;
66
+ const body = source.slice(start, start + limit);
67
+ found.set(name, head + trimToDeclaration(body, body.length === limit));
68
+ }
69
+ return found;
70
+ }
71
+ /**
72
+ * Cuts a declaration's body where the declaration ends.
73
+ *
74
+ * A fixed window runs into whatever follows it, so the body is cut at the next thing that starts
75
+ * at the left margin — another declaration, or the comment above one. What is left is a
76
+ * signature rather than a signature plus the first half of its neighbour.
77
+ */
78
+ function trimToDeclaration(body, truncated) {
79
+ // A declaration's continuation lines are indented, so an unindented keyword is a new statement.
80
+ const next = body.search(/\n(?:export|declare|type|interface|function|class|const|let|var|enum)\s|\n\/\*\*/);
81
+ if (next !== -1)
82
+ return body.slice(0, next);
83
+ if (!truncated)
84
+ return body;
85
+ // The window ran out mid-declaration. Ending on a whole line beats ending mid-identifier.
86
+ const lastLine = body.lastIndexOf("\n");
87
+ return lastLine === -1 ? body : `${body.slice(0, lastLine)}\n…`;
88
+ }
89
+ /**
90
+ * The declaration of one name, with the JSDoc comment above it when there is one. This is the
91
+ * text that answers a question the prose never covered.
92
+ */
93
+ export function declarationOf(source, name, limit = DECLARATION_LIMIT) {
94
+ return declarationsIn(source, limit).get(name);
95
+ }
96
+ /** True when the declaration `declarationOf` returned carries a JSDoc comment. */
97
+ export function hasJsdoc(declaration) {
98
+ return declaration.startsWith("/**");
99
+ }
100
+ function* entryPointsOf(manifest, dir, name) {
101
+ const exports = manifest.exports;
102
+ const entries = typeof exports === "object" && exports !== null
103
+ ? Object.entries(exports)
104
+ : [[".", { types: manifest.types ?? manifest.typings }]];
105
+ for (const [subpath, entry] of entries) {
106
+ const types = declarationTarget(entry);
107
+ if (types === undefined)
108
+ continue;
109
+ // A wildcard subpath names no single module a caller could import.
110
+ if (subpath.includes("*"))
111
+ continue;
112
+ const file = resolve(dir, types);
113
+ if (!existsSync(file))
114
+ continue;
115
+ yield { file, specifier: specifierFor(name, subpath) };
116
+ }
117
+ }
118
+ function specifierFor(name, subpath) {
119
+ if (subpath === "." || subpath === "")
120
+ return name;
121
+ return `${name}/${subpath.replace(/^\.\//, "")}`;
122
+ }
123
+ function declarationTarget(entry) {
124
+ if (typeof entry !== "object" || entry === null)
125
+ return undefined;
126
+ const record = entry;
127
+ if (typeof record.types === "string")
128
+ return record.types;
129
+ for (const key of ["import", "require", "default"]) {
130
+ const nested = record[key];
131
+ if (typeof nested === "object" && nested !== null) {
132
+ const types = nested.types;
133
+ if (typeof types === "string")
134
+ return types;
135
+ }
136
+ }
137
+ return undefined;
138
+ }
139
+ async function collect(file, specifier, root, depth, seen, into, budget) {
140
+ if (depth > MAX_DEPTH || budget.files <= 0 || seen.has(file) || !existsSync(file))
141
+ return;
142
+ seen.add(file);
143
+ budget.files -= 1;
144
+ let source;
145
+ try {
146
+ source = await readFile(file, "utf8");
147
+ }
148
+ catch {
149
+ return;
150
+ }
151
+ // The first entry point that publishes a name wins, so a name re-exported from several
152
+ // subpaths is attributed to the one listed first — which is the package's own ordering.
153
+ const record = (name) => {
154
+ if (!IDENTIFIER.test(name) || into.has(name))
155
+ return;
156
+ into.set(name, { name, from: specifier, file: relativePath(root, file) });
157
+ };
158
+ for (const match of source.matchAll(DECLARATION)) {
159
+ if (match[1] !== undefined)
160
+ record(match[1]);
161
+ }
162
+ for (const match of source.matchAll(EXPORT_LIST)) {
163
+ for (const entry of (match[1] ?? "").split(",")) {
164
+ // `export { internal as public }` publishes the second name.
165
+ const parts = entry.split(/\s+as\s+/);
166
+ record((parts[parts.length - 1] ?? "").trim().replace(/^type\s+/, ""));
167
+ }
168
+ }
169
+ for (const match of source.matchAll(REEXPORT)) {
170
+ const target = match[1];
171
+ // A bare specifier points into another package, whose names are not this one's to publish.
172
+ if (target === undefined || !target.startsWith("."))
173
+ continue;
174
+ const next = resolveDeclaration(resolve(dirname(file), target));
175
+ if (next !== undefined)
176
+ await collect(next, specifier, root, depth + 1, seen, into, budget);
177
+ }
178
+ }
179
+ /** `./external.cjs` inside a declaration file means `./external.d.cts`, not a JavaScript file. */
180
+ function resolveDeclaration(specifier) {
181
+ const base = specifier.replace(/\.(js|cjs|mjs)$/, "");
182
+ for (const candidate of [
183
+ `${base}.d.ts`,
184
+ `${base}.d.cts`,
185
+ `${base}.d.mts`,
186
+ join(base, "index.d.ts"),
187
+ join(base, "index.d.cts"),
188
+ ]) {
189
+ if (existsSync(candidate))
190
+ return candidate;
191
+ }
192
+ return undefined;
193
+ }
194
+ function relativePath(root, file) {
195
+ return relative(root, file).split(sep).join("/");
196
+ }
197
+ async function readJson(file) {
198
+ try {
199
+ const parsed = JSON.parse(await readFile(file, "utf8"));
200
+ if (typeof parsed !== "object" || parsed === null)
201
+ return undefined;
202
+ return parsed;
203
+ }
204
+ catch {
205
+ return undefined;
206
+ }
207
+ }
208
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
package/dist/sync.d.ts CHANGED
@@ -1,9 +1,15 @@
1
- import type { Store } from "./db.js";
1
+ import type { PackageKind, Store } from "./db.js";
2
2
  export interface SyncOptions {
3
3
  readonly cwd: string;
4
4
  readonly store: Store;
5
5
  /** Re-index packages that are already in the store. */
6
6
  readonly force?: boolean;
7
+ /**
8
+ * Also derive an index from each installed library's own type declarations. On by default:
9
+ * half of a library's exported names appear in no documentation anyone published, and the
10
+ * declarations are the only local answer for those.
11
+ */
12
+ readonly artifacts?: boolean;
7
13
  readonly onProgress?: (message: string) => void;
8
14
  }
9
15
  export type SyncStatus = "indexed" | "cached";
@@ -15,6 +21,7 @@ export interface SyncedPackage {
15
21
  readonly tokens: number;
16
22
  readonly status: SyncStatus;
17
23
  readonly trusted: boolean;
24
+ readonly kind: PackageKind;
18
25
  }
19
26
  export interface SyncResult {
20
27
  readonly packages: readonly SyncedPackage[];
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,KAAK,EAAE,MAAM,SAAS,CAAC;AAInD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAyC3E"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA6C3E"}