node-pagefind 0.1.0 → 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/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAyEE,MAAM;kBACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBADjB,MAAM;sBACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBADjB,MAAM;sBACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBADjB,MAAM;sBACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BADjB,MAAM;0BACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BADjB,MAAM;0BACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBADjB,MAAM;sBACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BADjB,MAAM;0BACP,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BADjB,MAAM;0BACP,kBAAkB;;;;;;;;;;;;;;aAmElC,CAAC;AAEH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAyBA,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA0Mf,CAAC;AAEH,eAAe,WAAW,CAAC"}
package/dist/cli.js CHANGED
@@ -1,7 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import { __awaiter } from "tslib";
3
3
  import { cli } from 'cli-forge';
4
- import { createPagefindClient } from './pagefind.js';
4
+ import { PerformanceObserver } from 'perf_hooks';
5
+ import { createPagefindClient, printCacheInspection } from './pagefind.js';
6
+ function installPerfLogger() {
7
+ const measures = [];
8
+ const obs = new PerformanceObserver((list) => {
9
+ measures.push(...list.getEntries());
10
+ });
11
+ obs.observe({ entryTypes: ['measure'] });
12
+ process.on('beforeExit', () => {
13
+ obs.disconnect();
14
+ if (measures.length === 0)
15
+ return;
16
+ console.error('\n[perf] ─────────────────────────────');
17
+ for (const m of measures) {
18
+ console.error(`[perf] ${m.name.padEnd(10)} ${m.duration.toFixed(0)}ms`);
19
+ }
20
+ console.error('[perf] ─────────────────────────────');
21
+ });
22
+ }
5
23
  const pagefindCLI = cli('pagefind', {
6
24
  description: 'Query Pagefind search indices from Node.js',
7
25
  builder: (args) => args
@@ -23,6 +41,21 @@ const pagefindCLI = cli('pagefind', {
23
41
  .option('cachePath', {
24
42
  type: 'string',
25
43
  description: 'Custom cache directory for downloaded pagefind.js (bypasses version-based caching)',
44
+ })
45
+ .option('verbose', {
46
+ type: 'boolean',
47
+ default: false,
48
+ description: 'Log fetch events and cache details to stderr',
49
+ })
50
+ .option('skipCache', {
51
+ type: 'boolean',
52
+ default: false,
53
+ description: 'Skip all caching — always fetch from remote',
54
+ })
55
+ .middleware((opts) => {
56
+ if (opts.verbose) {
57
+ installPerfLogger();
58
+ }
26
59
  })
27
60
  .command('search', {
28
61
  description: 'Search the pagefind index',
@@ -46,31 +79,57 @@ const pagefindCLI = cli('pagefind', {
46
79
  type: 'number',
47
80
  default: 10,
48
81
  description: 'Maximum results to show',
82
+ })
83
+ .option('minScore', {
84
+ type: 'number',
85
+ default: 5,
86
+ description: 'Minimum score threshold (0-1) to include a result',
49
87
  }),
50
88
  handler: (opts) => __awaiter(void 0, void 0, void 0, function* () {
89
+ var _a, _b;
90
+ performance.mark('start');
51
91
  const client = createPagefindClient({
52
92
  path: opts.path,
53
93
  url: opts.url,
54
94
  cachePath: opts.cachePath,
95
+ verbose: opts.verbose,
96
+ skipCache: opts.skipCache,
55
97
  });
56
98
  yield client.init(opts.lang);
57
- const query = opts.query;
99
+ performance.mark('init');
100
+ performance.measure('init', 'start', 'init');
101
+ // When invoked via $0 alias, positionals land in unmatched
102
+ const query = (_a = opts.query) !== null && _a !== void 0 ? _a : (_b = opts.unmatched) === null || _b === void 0 ? void 0 : _b[0];
103
+ if (!query) {
104
+ console.error('Usage: pagefind search <query>');
105
+ process.exit(1);
106
+ }
58
107
  const result = yield client.search(query, {
59
108
  language: opts.lang,
60
109
  excerpt: opts.excerpt,
61
110
  limit: opts.limit,
62
111
  });
63
- if (result.results.length === 0) {
112
+ performance.mark('search');
113
+ performance.measure('search', 'init', 'search');
114
+ const candidates = result.results
115
+ .filter((r) => {
116
+ return !opts.minScore || r.score >= opts.minScore;
117
+ })
118
+ .slice(0, opts.limit);
119
+ if (candidates.length === 0) {
64
120
  console.log('No results found');
121
+ performance.measure('total', 'start');
65
122
  return { query, results: [] };
66
123
  }
67
124
  console.log(`\nFound ${result.results.length} result(s):\n`);
68
- const maxResults = opts.limit;
69
- const resolvedResults = [];
70
- for (const r of result.results.slice(0, maxResults)) {
71
- const data = yield r.data();
72
- resolvedResults.push({ score: r.score, data });
73
- console.log(`[${r.score.toFixed(2)}] ${data.meta.title}`);
125
+ const resolvedResults = yield Promise.all(candidates.map((r) => __awaiter(void 0, void 0, void 0, function* () {
126
+ return ({
127
+ score: r.score,
128
+ data: yield r.data(),
129
+ });
130
+ })));
131
+ for (const { score, data } of resolvedResults) {
132
+ console.log(`[${score.toFixed(2)}] ${data.meta.title}`);
74
133
  console.log(` URL: ${data.url}`);
75
134
  if (opts.excerpt && data.excerpt) {
76
135
  console.log(` ${data.excerpt
@@ -79,9 +138,13 @@ const pagefindCLI = cli('pagefind', {
79
138
  }
80
139
  console.log();
81
140
  }
82
- if (result.results.length > maxResults) {
83
- console.log(`... and ${result.results.length - maxResults} more results`);
141
+ const remaining = result.results.length - candidates.length;
142
+ if (remaining > 0) {
143
+ console.log(`... and ${remaining} more results`);
84
144
  }
145
+ performance.mark('resolve');
146
+ performance.measure('resolve', 'search', 'resolve');
147
+ performance.measure('total', 'start', 'resolve');
85
148
  return { query, results: resolvedResults };
86
149
  }),
87
150
  alias: ['$0'],
@@ -90,17 +153,23 @@ const pagefindCLI = cli('pagefind', {
90
153
  description: 'List available search filters',
91
154
  builder: (c) => c,
92
155
  handler: (opts) => __awaiter(void 0, void 0, void 0, function* () {
156
+ performance.mark('start');
93
157
  const client = createPagefindClient({
94
158
  path: opts.path,
95
159
  url: opts.url,
96
160
  cachePath: opts.cachePath,
161
+ verbose: opts.verbose,
162
+ skipCache: opts.skipCache,
97
163
  });
98
164
  yield client.init();
165
+ performance.mark('init');
166
+ performance.measure('init', 'start', 'init');
99
167
  const filters = yield client.filters();
100
168
  console.log('Available filters:');
101
169
  for (const [key, values] of Object.entries(filters)) {
102
170
  console.log(` ${key}: ${Object.keys(values).join(', ')}`);
103
171
  }
172
+ performance.measure('total', 'start');
104
173
  return filters;
105
174
  }),
106
175
  })
@@ -112,6 +181,8 @@ const pagefindCLI = cli('pagefind', {
112
181
  path: opts.path,
113
182
  url: opts.url,
114
183
  cachePath: opts.cachePath,
184
+ verbose: opts.verbose,
185
+ skipCache: opts.skipCache,
115
186
  });
116
187
  const info = client.getInfo();
117
188
  console.log(`Base URL: ${info.baseUrl}`);
@@ -119,6 +190,13 @@ const pagefindCLI = cli('pagefind', {
119
190
  console.log(`Initialized: ${info.initialized}`);
120
191
  return info;
121
192
  }),
193
+ })
194
+ .command('inspect-cache', {
195
+ description: 'Show information about the local pagefind cache',
196
+ builder: (c) => c,
197
+ handler: () => __awaiter(void 0, void 0, void 0, function* () {
198
+ return printCacheInspection();
199
+ }),
122
200
  }),
123
201
  });
124
202
  export default pagefindCLI;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}