@nbtca/docs 0.2.0 → 0.2.3

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 NBTCA
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Data-only library for the [NBTCA documents repository](https://github.com/nbtca/documents).
4
4
  Fetches directory listings and raw markdown files from GitHub with built-in TTL caching,
5
- stale-while-revalidate fallback, and rate-limit handling.
5
+ stale-on-error fallback, and rate-limit handling.
6
6
 
7
7
  Rendering is the consumer's job (e.g. `@nbtca/prompt`).
8
8
 
@@ -20,6 +20,7 @@ import { createDocsClient } from '@nbtca/docs';
20
20
  const docs = createDocsClient(); // defaults to nbtca/documents@main
21
21
 
22
22
  const items = await docs.listDir('tutorial'); // DocItem[]
23
+ const all = await docs.listAll(); // all markdown DocItem[]
23
24
  const md = await docs.getFile('repair/guide.md'); // string (raw markdown)
24
25
  ```
25
26
 
@@ -56,6 +57,10 @@ Filters out hidden files, non-markdown files, and repository metadata.
56
57
 
57
58
  Returns raw markdown as a string. Falls back to stale cache on network error.
58
59
 
60
+ ### `docs.listAll()`
61
+
62
+ Returns every markdown file in the repository through GitHub's recursive tree API.
63
+
59
64
  ### `DocsFetchError`
60
65
 
61
66
  Thrown when a fetch fails with no stale cache available. Has `.path` and `.status` fields.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA8CzE,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAyH5E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAsIzE,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAqL5E"}
package/dist/client.js CHANGED
@@ -14,7 +14,7 @@ const SKIP = new Set(['.github', '.husky', '.vitepress', '.vscode', 'node_module
14
14
  function filterAndSort(raw) {
15
15
  return raw
16
16
  .filter(i => !i.name.startsWith('.') && !SKIP.has(i.name) &&
17
- (i.type === 'dir' || i.name.endsWith('.md')))
17
+ (i.type === 'dir' || (i.type === 'file' && i.name.endsWith('.md'))))
18
18
  .map(i => ({ name: i.name, path: i.path, type: (i.type === 'dir' ? 'dir' : 'file') }))
19
19
  .sort((a, b) => {
20
20
  if (a.type !== b.type)
@@ -38,122 +38,252 @@ function filterTree(items) {
38
38
  }))
39
39
  .sort((a, b) => a.path.localeCompare(b.path));
40
40
  }
41
+ function copyItems(items) {
42
+ return items.map(item => ({ ...item }));
43
+ }
44
+ function encodePath(path) {
45
+ return path.split('/').map(encodeURIComponent).join('/');
46
+ }
47
+ function assertRepositoryPath(path, allowEmpty) {
48
+ if (allowEmpty && path === '')
49
+ return;
50
+ const parts = path.split('/');
51
+ if (path === ''
52
+ || path.startsWith('/')
53
+ || path.endsWith('/')
54
+ || path.includes('\\')
55
+ || parts.some(part => part === '' || part === '.' || part === '..')) {
56
+ throw new TypeError('path must be a normalized repository-relative path');
57
+ }
58
+ }
59
+ function assertRepositoryCoordinate(value, name) {
60
+ if (value === ''
61
+ || value !== value.trim()
62
+ || value === '.'
63
+ || value === '..'
64
+ || /[\/\\\u0000-\u001f\u007f]/.test(value)) {
65
+ throw new TypeError(`${name} must be a valid GitHub repository coordinate`);
66
+ }
67
+ }
68
+ function assertBranchRef(value) {
69
+ const parts = value.split('/');
70
+ if (value === ''
71
+ || value !== value.trim()
72
+ || value.includes('\\')
73
+ || /[\u0000-\u001f\u007f]/.test(value)
74
+ || parts.some(part => part === '' || part === '.' || part === '..')) {
75
+ throw new TypeError('branch must be a valid Git ref');
76
+ }
77
+ }
78
+ function cacheTtl(value, fallback, name) {
79
+ const ttl = value ?? fallback;
80
+ if (!Number.isFinite(ttl) || ttl < 0) {
81
+ throw new RangeError(`${name} must be a finite non-negative number`);
82
+ }
83
+ return ttl;
84
+ }
85
+ function isTransientStatus(status) {
86
+ return status === 408 || status === 429 || status >= 500;
87
+ }
88
+ function isRecord(value) {
89
+ return typeof value === 'object' && value !== null;
90
+ }
91
+ function isGitHubItem(value) {
92
+ return isRecord(value) && typeof value.name === 'string' &&
93
+ typeof value.path === 'string' && typeof value.type === 'string';
94
+ }
95
+ function isGitHubTreeItem(value) {
96
+ return isRecord(value) && typeof value.path === 'string' &&
97
+ typeof value.type === 'string';
98
+ }
99
+ function parseContentsResponse(value) {
100
+ if (!Array.isArray(value) || !value.every(isGitHubItem)) {
101
+ throw new TypeError('Invalid GitHub contents response');
102
+ }
103
+ return value;
104
+ }
105
+ function parseTreeResponse(value) {
106
+ if (!isRecord(value) || typeof value.truncated !== 'boolean' ||
107
+ !Array.isArray(value.tree) || !value.tree.every(isGitHubTreeItem)) {
108
+ throw new TypeError('Invalid GitHub tree response');
109
+ }
110
+ return { tree: value.tree, truncated: value.truncated };
111
+ }
41
112
  export function createDocsClient(options = {}) {
42
113
  const owner = options.owner ?? DEFAULTS.owner;
43
114
  const repo = options.repo ?? DEFAULTS.repo;
44
115
  const branch = options.branch ?? DEFAULTS.branch;
116
+ assertRepositoryCoordinate(owner, 'owner');
117
+ assertRepositoryCoordinate(repo, 'repo');
118
+ assertBranchRef(branch);
45
119
  const token = options.token ?? (typeof process !== 'undefined'
46
120
  ? (process.env['GITHUB_TOKEN'] ?? process.env['GH_TOKEN'])
47
121
  : undefined);
48
- const dirCache = new TtlCache(options.cacheTtlMs?.dir ?? DEFAULTS.dirTtlMs, 30);
49
- const fileCache = new TtlCache(options.cacheTtlMs?.file ?? DEFAULTS.fileTtlMs, 50);
50
- const treeCache = new TtlCache(options.cacheTtlMs?.dir ?? DEFAULTS.dirTtlMs, 1);
122
+ const apiRepoUrl = `https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`;
123
+ const rawRepoUrl = `https://raw.githubusercontent.com/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`;
124
+ const encodedBranch = encodeURIComponent(branch);
125
+ const dirTtlMs = cacheTtl(options.cacheTtlMs?.dir, DEFAULTS.dirTtlMs, 'cacheTtlMs.dir');
126
+ const fileTtlMs = cacheTtl(options.cacheTtlMs?.file, DEFAULTS.fileTtlMs, 'cacheTtlMs.file');
127
+ const dirCache = new TtlCache(dirTtlMs, 30);
128
+ const fileCache = new TtlCache(fileTtlMs, 50);
129
+ const treeCache = new TtlCache(dirTtlMs, 1);
130
+ const dirRequests = new Map();
131
+ const fileRequests = new Map();
132
+ const treeRequests = new Map();
133
+ let cacheGeneration = 0;
51
134
  function headers() {
52
135
  const h = { 'Accept': 'application/vnd.github.v3+json' };
53
136
  if (token)
54
137
  h['Authorization'] = `Bearer ${token}`;
55
138
  return h;
56
139
  }
57
- async function ghFetch(url, timeoutMs = 10000) {
140
+ async function withResponse(url, timeoutMs, consume) {
58
141
  const ctrl = new AbortController();
59
142
  const timer = setTimeout(() => ctrl.abort(), timeoutMs);
60
143
  try {
61
- const res = await fetch(url, { signal: ctrl.signal, headers: headers() });
62
- return res;
144
+ const response = await fetch(url, { signal: ctrl.signal, headers: headers() });
145
+ return await consume(response);
63
146
  }
64
147
  finally {
65
148
  clearTimeout(timer);
66
149
  }
67
150
  }
68
- async function listDir(path = '') {
69
- const key = path || '__root__';
70
- const hit = dirCache.get(key);
71
- if (hit)
72
- return hit;
73
- const url = `https://api.github.com/repos/${owner}/${repo}/contents/${path}?ref=${branch}`;
74
- let res;
151
+ function recoverFailure(cache, key, path, error, copy = value => value) {
152
+ const stale = cache.getStale(key);
153
+ if (stale !== undefined)
154
+ return copy(stale);
155
+ const message = error instanceof Error && error.name === 'AbortError'
156
+ ? 'Request timed out'
157
+ : String(error);
158
+ throw new DocsFetchError(path, null, message);
159
+ }
160
+ function shareRequest(requests, key, load) {
161
+ const pending = requests.get(key);
162
+ if (pending)
163
+ return pending;
164
+ const request = load();
165
+ const release = () => {
166
+ if (requests.get(key) === request)
167
+ requests.delete(key);
168
+ };
169
+ void request.then(release, release);
170
+ requests.set(key, request);
171
+ return request;
172
+ }
173
+ async function loadDir(path, key, generation) {
174
+ const url = `${apiRepoUrl}/contents/${encodePath(path)}?ref=${encodedBranch}`;
75
175
  try {
76
- res = await ghFetch(url);
176
+ return await withResponse(url, 10000, async (response) => {
177
+ if (!response.ok) {
178
+ const stale = dirCache.getStale(key);
179
+ if (isTransientStatus(response.status) && stale !== undefined)
180
+ return copyItems(stale);
181
+ throw new DocsFetchError(path, response.status, `HTTP ${response.status}`);
182
+ }
183
+ const data = parseContentsResponse(await response.json());
184
+ const items = filterAndSort(data);
185
+ if (generation === cacheGeneration)
186
+ dirCache.set(key, copyItems(items));
187
+ return items;
188
+ });
77
189
  }
78
- catch (err) {
79
- const stale = dirCache.getStale(key);
80
- if (stale)
81
- return stale;
82
- const msg = err instanceof Error && err.name === 'AbortError'
83
- ? 'Request timed out' : String(err);
84
- throw new DocsFetchError(path, null, msg);
190
+ catch (error) {
191
+ if (error instanceof DocsFetchError)
192
+ throw error;
193
+ return recoverFailure(dirCache, key, path, error, copyItems);
85
194
  }
86
- if (!res.ok) {
87
- const stale = dirCache.getStale(key);
88
- if (stale)
89
- return stale;
90
- throw new DocsFetchError(path, res.status, `HTTP ${res.status}`);
195
+ }
196
+ function listDir(path = '') {
197
+ try {
198
+ assertRepositoryPath(path, true);
91
199
  }
92
- const data = (await res.json());
93
- const items = filterAndSort(data);
94
- dirCache.set(key, items);
95
- return items;
200
+ catch (error) {
201
+ return Promise.reject(error);
202
+ }
203
+ const hit = dirCache.get(path);
204
+ if (hit)
205
+ return Promise.resolve(copyItems(hit));
206
+ return shareRequest(dirRequests, path, () => loadDir(path, path, cacheGeneration));
96
207
  }
97
- async function listAll() {
208
+ async function loadAll(generation) {
98
209
  const key = '__tree__';
99
- const hit = treeCache.get(key);
100
- if (hit)
101
- return hit;
102
- const url = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}?recursive=1`;
103
- let res;
210
+ const url = `${apiRepoUrl}/git/trees/${encodedBranch}?recursive=1`;
104
211
  try {
105
- res = await ghFetch(url, 20000);
212
+ return await withResponse(url, 20000, async (response) => {
213
+ if (!response.ok) {
214
+ const stale = treeCache.getStale(key);
215
+ if (isTransientStatus(response.status) && stale !== undefined)
216
+ return copyItems(stale);
217
+ throw new DocsFetchError('', response.status, `HTTP ${response.status}`);
218
+ }
219
+ const data = parseTreeResponse(await response.json());
220
+ if (data.truncated) {
221
+ const stale = treeCache.getStale(key);
222
+ if (stale !== undefined)
223
+ return copyItems(stale);
224
+ throw new DocsFetchError('', null, 'GitHub truncated the repository tree (too many files) -- results would be incomplete');
225
+ }
226
+ const items = filterTree(data.tree);
227
+ if (generation === cacheGeneration)
228
+ treeCache.set(key, copyItems(items));
229
+ return items;
230
+ });
106
231
  }
107
- catch (err) {
108
- const stale = treeCache.getStale(key);
109
- if (stale)
110
- return stale;
111
- const msg = err instanceof Error && err.name === 'AbortError'
112
- ? 'Request timed out' : String(err);
113
- throw new DocsFetchError('', null, msg);
232
+ catch (error) {
233
+ if (error instanceof DocsFetchError)
234
+ throw error;
235
+ return recoverFailure(treeCache, key, '', error, copyItems);
114
236
  }
115
- if (!res.ok) {
116
- const stale = treeCache.getStale(key);
117
- if (stale)
118
- return stale;
119
- throw new DocsFetchError('', res.status, `HTTP ${res.status}`);
120
- }
121
- const data = (await res.json());
122
- const items = filterTree(data.tree);
123
- treeCache.set(key, items);
124
- return items;
125
237
  }
126
- async function getFile(path) {
127
- const hit = fileCache.get(path);
238
+ function listAll() {
239
+ const key = '__tree__';
240
+ const hit = treeCache.get(key);
128
241
  if (hit)
129
- return hit;
130
- const url = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${path}`;
131
- let res;
242
+ return Promise.resolve(copyItems(hit));
243
+ return shareRequest(treeRequests, key, () => loadAll(cacheGeneration));
244
+ }
245
+ async function loadFile(path, generation) {
246
+ const url = `${rawRepoUrl}/${encodedBranch}/${encodePath(path)}`;
132
247
  try {
133
- res = await ghFetch(url, 15000);
248
+ return await withResponse(url, 15000, async (response) => {
249
+ if (!response.ok) {
250
+ const stale = fileCache.getStale(path);
251
+ if (isTransientStatus(response.status) && stale !== undefined)
252
+ return stale;
253
+ throw new DocsFetchError(path, response.status, `HTTP ${response.status}`);
254
+ }
255
+ const content = await response.text();
256
+ if (generation === cacheGeneration)
257
+ fileCache.set(path, content);
258
+ return content;
259
+ });
134
260
  }
135
- catch (err) {
136
- const stale = fileCache.getStale(path);
137
- if (stale)
138
- return stale;
139
- const msg = err instanceof Error && err.name === 'AbortError'
140
- ? 'Request timed out' : String(err);
141
- throw new DocsFetchError(path, null, msg);
261
+ catch (error) {
262
+ if (error instanceof DocsFetchError)
263
+ throw error;
264
+ return recoverFailure(fileCache, path, path, error);
142
265
  }
143
- if (!res.ok) {
144
- const stale = fileCache.getStale(path);
145
- if (stale)
146
- return stale;
147
- throw new DocsFetchError(path, res.status, `HTTP ${res.status}`);
266
+ }
267
+ function getFile(path) {
268
+ try {
269
+ assertRepositoryPath(path, false);
148
270
  }
149
- const content = await res.text();
150
- fileCache.set(path, content);
151
- return content;
271
+ catch (error) {
272
+ return Promise.reject(error);
273
+ }
274
+ const hit = fileCache.get(path);
275
+ if (hit !== undefined)
276
+ return Promise.resolve(hit);
277
+ return shareRequest(fileRequests, path, () => loadFile(path, cacheGeneration));
152
278
  }
153
279
  function clear() {
280
+ cacheGeneration += 1;
154
281
  dirCache.clear();
155
282
  fileCache.clear();
156
283
  treeCache.clear();
284
+ dirRequests.clear();
285
+ fileRequests.clear();
286
+ treeRequests.clear();
157
287
  }
158
288
  return { listDir, listAll, getFile, clear };
159
289
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,23 +1,29 @@
1
1
  {
2
2
  "name": "@nbtca/docs",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "Data-only library for the NBTCA documents repository",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
- "import": "./dist/index.js",
11
- "types": "./dist/index.d.ts"
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
12
  }
13
13
  },
14
+ "sideEffects": false,
14
15
  "files": [
15
16
  "dist"
16
17
  ],
17
18
  "scripts": {
19
+ "clean": "node --input-type=module --eval \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true })\"",
20
+ "prebuild": "npm run clean",
18
21
  "build": "tsc",
19
22
  "test": "vitest run",
20
- "prepublishOnly": "npm run build && npm test"
23
+ "precheck:package": "npm run build",
24
+ "check:package": "node scripts/check-package.mjs",
25
+ "check": "npm test && npm run check:package && npm audit --audit-level=moderate",
26
+ "prepublishOnly": "npm run check"
21
27
  },
22
28
  "keywords": [
23
29
  "nbtca",
@@ -26,12 +32,22 @@
26
32
  ],
27
33
  "repository": {
28
34
  "type": "git",
29
- "url": "https://github.com/nbtca/docs"
35
+ "url": "git+https://github.com/nbtca/docs.git"
30
36
  },
37
+ "bugs": {
38
+ "url": "https://github.com/nbtca/docs/issues"
39
+ },
40
+ "homepage": "https://github.com/nbtca/docs#readme",
31
41
  "license": "MIT",
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "engines": {
46
+ "node": ">=20.12.0"
47
+ },
32
48
  "devDependencies": {
33
49
  "@types/node": "^26.0.0",
34
50
  "typescript": "^5.4.0",
35
- "vitest": "^2.0.0"
51
+ "vitest": "^3.2.7"
36
52
  }
37
53
  }