@baiyibai-antora/extensions 1.0.11 → 1.0.12

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.
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @baiyibai-antora/extensions - trademark-it
3
+ *
4
+ * Scans the Antora content catalog for known trademark terms and injects a
5
+ * generated AsciiDoc partial containing only the trademarks found in each
6
+ * component-version. The partial is injected as:
7
+ *
8
+ * modules/ROOT/partials/generated-trademark-table.adoc
9
+ *
10
+ * Documents replace the old [type="trademarks"] table block with:
11
+ *
12
+ * include::partial$generated-trademark-table.adoc[]
13
+ *
14
+ * Configuration in antora-playbook.yml:
15
+ *
16
+ * antora:
17
+ * extensions:
18
+ * - require: '@baiyibai-antora/extensions/trademark-it'
19
+ * trademark_it:
20
+ * enabled: true
21
+ * # Antora resource ID of the trademark definition partial.
22
+ * # Format: [version@]component:module:family$relative
23
+ * trademark_file: 'ROOT:partial$trademark-table.adoc'
24
+ * # Name of the generated partial injected into every component-version.
25
+ * output_partial: 'generated-trademark-table.adoc'
26
+ * # Terms to exclude from detection, comma-separated (or as a YAML list).
27
+ * ignore: []
28
+ * # Column widths for the generated table (AsciiDoc cols attribute).
29
+ * cols: '22,78'
30
+ */
31
+ interface TrademarkItConfig {
32
+ enabled: boolean;
33
+ trademark_file: string;
34
+ output_partial: string;
35
+ ignore: string[];
36
+ cols: string;
37
+ }
38
+ interface TrademarkEntry {
39
+ /** Term as written in source, with symbol: e.g. "Apple®" */
40
+ primaryTerm: string;
41
+ /** Base term with symbol stripped: e.g. "Apple" */
42
+ baseTerm: string;
43
+ /** Full legal declaration sentence from the table */
44
+ declaration: string;
45
+ /** All base terms that resolve to this entry (includes baseTerm itself) */
46
+ combinedTerms: string[];
47
+ /** Human-readable list with Oxford comma */
48
+ combinedTermList: string;
49
+ /** Primary terms with symbols for display in left column */
50
+ combinedPrimaryTerms: string[];
51
+ }
52
+ interface AntoraLogger {
53
+ debug?: (msg: string) => void;
54
+ info?: (msg: string) => void;
55
+ warn?: (msg: string) => void;
56
+ error?: (msg: string) => void;
57
+ }
58
+ interface ExtensionEntry {
59
+ require?: string;
60
+ trademark_it?: Partial<TrademarkItConfig>;
61
+ trademarkIt?: Partial<TrademarkItConfig>;
62
+ trademarkit?: Partial<TrademarkItConfig>;
63
+ }
64
+ interface Playbook {
65
+ dir: string;
66
+ antora?: {
67
+ extensions?: ExtensionEntry[];
68
+ };
69
+ }
70
+ interface VirtualFileSrc {
71
+ path?: string;
72
+ family?: string;
73
+ component?: string;
74
+ version?: string;
75
+ module?: string;
76
+ relative?: string;
77
+ basename?: string;
78
+ stem?: string;
79
+ extname?: string;
80
+ editUrl?: string;
81
+ origin?: unknown;
82
+ mediaType?: string;
83
+ }
84
+ interface VirtualFile {
85
+ src: VirtualFileSrc;
86
+ contents: Buffer | Uint8Array;
87
+ pub?: unknown;
88
+ out?: unknown;
89
+ }
90
+ interface ContentCatalog {
91
+ getFiles: () => VirtualFile[];
92
+ addFile: (file: VirtualFile) => void;
93
+ }
94
+ interface Registry {
95
+ getLogger?: (name: string) => AntoraLogger;
96
+ once: (event: string, callback: (context: {
97
+ playbook: Playbook;
98
+ contentCatalog?: ContentCatalog;
99
+ }) => Promise<void>) => void;
100
+ }
101
+ export declare function formatList(terms: string[]): string;
102
+ /**
103
+ * Parse the trademark definition AsciiDoc file and return a map of
104
+ * baseTerm → TrademarkEntry. The ignore list (bare terms, no symbols)
105
+ * is applied here.
106
+ *
107
+ * Port of trademark-it.rb parse_trademarks + alias resolution.
108
+ */
109
+ export declare function parseTrademarks(asciidocText: string, ignore?: string[]): Map<string, TrademarkEntry>;
110
+ /**
111
+ * Scan source text for trademark terms. Returns the set of matched base
112
+ * terms (keys in the trademarks map).
113
+ */
114
+ export declare function findTrademarks(sourceText: string, trademarks: Map<string, TrademarkEntry>): Set<string>;
115
+ /**
116
+ * Generate the content of the injected partial.
117
+ *
118
+ * Entries are sorted alphabetically by base term (case-insensitive),
119
+ * matching the Ruby sorted_data behaviour.
120
+ */
121
+ export declare function generateTrademarkPartial(foundBaseTerms: Set<string>, trademarks: Map<string, TrademarkEntry>, cols?: string): string;
122
+ export declare function register(this: Registry, context?: Registry): void;
123
+ export {};
124
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/trademark-it/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,558 @@
1
+ "use strict";
2
+ /**
3
+ * @baiyibai-antora/extensions - trademark-it
4
+ *
5
+ * Scans the Antora content catalog for known trademark terms and injects a
6
+ * generated AsciiDoc partial containing only the trademarks found in each
7
+ * component-version. The partial is injected as:
8
+ *
9
+ * modules/ROOT/partials/generated-trademark-table.adoc
10
+ *
11
+ * Documents replace the old [type="trademarks"] table block with:
12
+ *
13
+ * include::partial$generated-trademark-table.adoc[]
14
+ *
15
+ * Configuration in antora-playbook.yml:
16
+ *
17
+ * antora:
18
+ * extensions:
19
+ * - require: '@baiyibai-antora/extensions/trademark-it'
20
+ * trademark_it:
21
+ * enabled: true
22
+ * # Antora resource ID of the trademark definition partial.
23
+ * # Format: [version@]component:module:family$relative
24
+ * trademark_file: 'ROOT:partial$trademark-table.adoc'
25
+ * # Name of the generated partial injected into every component-version.
26
+ * output_partial: 'generated-trademark-table.adoc'
27
+ * # Terms to exclude from detection, comma-separated (or as a YAML list).
28
+ * ignore: []
29
+ * # Column widths for the generated table (AsciiDoc cols attribute).
30
+ * cols: '22,78'
31
+ */
32
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
33
+ if (k2 === undefined) k2 = k;
34
+ var desc = Object.getOwnPropertyDescriptor(m, k);
35
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
36
+ desc = { enumerable: true, get: function() { return m[k]; } };
37
+ }
38
+ Object.defineProperty(o, k2, desc);
39
+ }) : (function(o, m, k, k2) {
40
+ if (k2 === undefined) k2 = k;
41
+ o[k2] = m[k];
42
+ }));
43
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
44
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
45
+ }) : function(o, v) {
46
+ o["default"] = v;
47
+ });
48
+ var __importStar = (this && this.__importStar) || (function () {
49
+ var ownKeys = function(o) {
50
+ ownKeys = Object.getOwnPropertyNames || function (o) {
51
+ var ar = [];
52
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
53
+ return ar;
54
+ };
55
+ return ownKeys(o);
56
+ };
57
+ return function (mod) {
58
+ if (mod && mod.__esModule) return mod;
59
+ var result = {};
60
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
61
+ __setModuleDefault(result, mod);
62
+ return result;
63
+ };
64
+ })();
65
+ Object.defineProperty(exports, "__esModule", { value: true });
66
+ exports.formatList = formatList;
67
+ exports.parseTrademarks = parseTrademarks;
68
+ exports.findTrademarks = findTrademarks;
69
+ exports.generateTrademarkPartial = generateTrademarkPartial;
70
+ exports.register = register;
71
+ const fs = __importStar(require("node:fs"));
72
+ // ---------------------------------------------------------------------------
73
+ // Logging helpers (mirrors vale-integration style)
74
+ // ---------------------------------------------------------------------------
75
+ function nowISO() {
76
+ return new Date().toISOString().split('T')[1].replace('Z', '');
77
+ }
78
+ function makeLogger(hostLogger) {
79
+ return {
80
+ debug: (m) => { if (hostLogger?.debug)
81
+ hostLogger.debug(m);
82
+ else
83
+ console.debug(m); },
84
+ info: (m) => { if (hostLogger?.info)
85
+ hostLogger.info(m);
86
+ else
87
+ console.log(m); },
88
+ warn: (m) => { if (hostLogger?.warn)
89
+ hostLogger.warn(m);
90
+ else
91
+ console.warn(m); },
92
+ error: (m) => { if (hostLogger?.error)
93
+ hostLogger.error(m);
94
+ else
95
+ console.error(m); },
96
+ event: (m) => console.log(`[${nowISO()}] \x1b[94mEVENT\x1b[0m (trademark-it): \x1b[94m${m}\x1b[0m`),
97
+ };
98
+ }
99
+ // ---------------------------------------------------------------------------
100
+ // Config helpers (mirrors vale-integration style)
101
+ // ---------------------------------------------------------------------------
102
+ function toBool(v, def) {
103
+ if (v === true)
104
+ return true;
105
+ if (v === false)
106
+ return false;
107
+ if (typeof v === 'string') {
108
+ const s = v.trim().toLowerCase();
109
+ if (['true', '1', 'yes', 'on'].includes(s))
110
+ return true;
111
+ if (['false', '0', 'no', 'off'].includes(s))
112
+ return false;
113
+ }
114
+ return def;
115
+ }
116
+ function pick(obj, keys, def) {
117
+ for (const k of keys) {
118
+ if (obj && obj[k] !== undefined)
119
+ return obj[k];
120
+ }
121
+ return def;
122
+ }
123
+ function ensureStringArray(v) {
124
+ if (Array.isArray(v))
125
+ return v.map(String);
126
+ if (typeof v === 'string' && v.trim())
127
+ return v.split(',').map((s) => s.trim()).filter(Boolean);
128
+ return [];
129
+ }
130
+ // ---------------------------------------------------------------------------
131
+ // Oxford-comma list formatter (port of format_combined_term_list in Ruby)
132
+ // ---------------------------------------------------------------------------
133
+ function formatList(terms) {
134
+ if (terms.length === 0)
135
+ return '';
136
+ if (terms.length === 1)
137
+ return terms[0];
138
+ if (terms.length === 2)
139
+ return `${terms[0]} and ${terms[1]}`;
140
+ return `${terms.slice(0, -1).join(', ')}, and ${terms[terms.length - 1]}`;
141
+ }
142
+ // ---------------------------------------------------------------------------
143
+ // AsciiDoc table parser (port of parse_trademarks in Ruby)
144
+ //
145
+ // Parses the 5-column trademark table:
146
+ // |Term |Trademark Statement |Date |Verified By |URL
147
+ //
148
+ // Alias detection: if the Statement column matches the bare text of another
149
+ // term key, the row is treated as a redirect (alias → canonical entry).
150
+ // ---------------------------------------------------------------------------
151
+ /**
152
+ * Strip ™ and ® symbols from a string.
153
+ */
154
+ function stripSymbols(s) {
155
+ return s.replace(/[™®]/g, '').trim();
156
+ }
157
+ /**
158
+ * Parse an AsciiDoc table into an array of string-cell rows.
159
+ * Handles the `|cell` style used in the trademark table.
160
+ *
161
+ * The table format is:
162
+ * |===
163
+ * |col0
164
+ * |col1
165
+ * ...
166
+ * |===
167
+ *
168
+ * Rows are separated by blank lines between cell groups, OR by having
169
+ * each cell on its own line (the style used in trademark-table.adoc).
170
+ * We collect all `|…` tokens after the header row and group them by
171
+ * the column count declared in the [cols=…] attribute.
172
+ */
173
+ function parseTrademarkTable(asciidocText) {
174
+ const rows = [];
175
+ // Find the table body between |=== delimiters.
176
+ const tableMatch = asciidocText.match(/\|={3,}([\s\S]*?)\|={3,}/);
177
+ if (!tableMatch)
178
+ return rows;
179
+ const tableBody = tableMatch[1];
180
+ // Determine column count from [cols="…"] attribute if present.
181
+ // Default to 5 (matching the trademark-table.adoc format).
182
+ let colCount = 5;
183
+ const colsMatch = asciidocText.match(/\[cols\s*=\s*["']([^"']+)["']/);
184
+ if (colsMatch) {
185
+ // Count comma-separated entries; handle repeat syntax like "3*1"
186
+ colCount = colsMatch[1].split(',').length;
187
+ }
188
+ // Extract all cell values. The trademark table uses two styles:
189
+ // • Header row — all cells inline on one line, each prefixed with |:
190
+ // |Term |Statement |Date |Verified By |URL
191
+ // • Data rows — one cell per line, each on its own line:
192
+ // |Apple®
193
+ // |Apple is a registered trademark…
194
+ //
195
+ // We detect inline multi-cell lines by splitting on | and checking whether
196
+ // more than one non-empty segment results.
197
+ const cells = [];
198
+ for (const raw of tableBody.split('\n')) {
199
+ const line = raw.trim();
200
+ if (!line || line === '|===')
201
+ continue;
202
+ if (!line.startsWith('|'))
203
+ continue;
204
+ // Split on | — the first segment before the leading | will be empty.
205
+ const parts = line.split('|').map((p) => p.trim()).filter((p) => p !== '');
206
+ if (parts.length > 1) {
207
+ // Inline multi-cell row (e.g. the header).
208
+ cells.push(...parts);
209
+ }
210
+ else {
211
+ // Single-cell-per-line row (all data rows).
212
+ cells.push(line.slice(1).trim());
213
+ }
214
+ }
215
+ // Group cells into rows of colCount.
216
+ for (let i = 0; i + colCount - 1 < cells.length; i += colCount) {
217
+ rows.push(cells.slice(i, i + colCount));
218
+ }
219
+ return rows;
220
+ }
221
+ /**
222
+ * Parse the trademark definition AsciiDoc file and return a map of
223
+ * baseTerm → TrademarkEntry. The ignore list (bare terms, no symbols)
224
+ * is applied here.
225
+ *
226
+ * Port of trademark-it.rb parse_trademarks + alias resolution.
227
+ */
228
+ function parseTrademarks(asciidocText, ignore = []) {
229
+ const trademarks = new Map();
230
+ // redirects[canonicalBase] = [aliasBase, ...]
231
+ const redirects = new Map();
232
+ const rows = parseTrademarkTable(asciidocText);
233
+ if (rows.length === 0)
234
+ return trademarks;
235
+ // Skip header row (options="header" means row[0] is the header).
236
+ const dataRows = rows.slice(1);
237
+ // Build the set of all base terms for redirect detection.
238
+ const allBaseTerms = new Set(dataRows.map((r) => stripSymbols(r[0])));
239
+ for (const row of dataRows) {
240
+ const term = row[0].trim(); // e.g. "Apple®"
241
+ const statement = row[1].trim(); // declaration or redirect target
242
+ const baseTerm = stripSymbols(term); // e.g. "Apple"
243
+ if (ignore.includes(baseTerm))
244
+ continue;
245
+ const statementBase = stripSymbols(statement); // strip symbols from statement for redirect test
246
+ if (allBaseTerms.has(statementBase) && statementBase !== baseTerm) {
247
+ // This row is an alias: statement column names another term key.
248
+ // e.g. |iOS® | Apple | → redirects["Apple"] += "iOS"
249
+ const existing = redirects.get(statementBase) ?? [];
250
+ existing.push(baseTerm);
251
+ redirects.set(statementBase, existing);
252
+ }
253
+ else {
254
+ trademarks.set(baseTerm, {
255
+ primaryTerm: term,
256
+ baseTerm,
257
+ declaration: statement,
258
+ combinedTerms: [baseTerm],
259
+ combinedTermList: baseTerm,
260
+ combinedPrimaryTerms: [term],
261
+ });
262
+ }
263
+ }
264
+ // Resolve redirects: merge aliases into their canonical entry.
265
+ for (const [canonical, aliases] of redirects) {
266
+ const entry = trademarks.get(canonical);
267
+ if (!entry)
268
+ continue;
269
+ // Combined terms: aliases first, then the canonical base term.
270
+ const combinedBases = [...aliases, canonical];
271
+ // Build combined primary terms (with symbols) by looking up each base.
272
+ // Aliases only exist as redirects — we need to find their original term
273
+ // strings. Re-scan rows to recover the symbol form.
274
+ const aliasTermMap = new Map();
275
+ for (const row of dataRows) {
276
+ const b = stripSymbols(row[0]);
277
+ if (aliases.includes(b))
278
+ aliasTermMap.set(b, row[0].trim());
279
+ }
280
+ const combinedPrimary = [...aliases.map((a) => aliasTermMap.get(a) ?? a), entry.primaryTerm];
281
+ entry.combinedTerms = combinedBases;
282
+ entry.combinedTermList = formatList(combinedBases);
283
+ entry.combinedPrimaryTerms = combinedPrimary;
284
+ }
285
+ // Ensure every entry has combinedTermList set (entries with no aliases).
286
+ for (const entry of trademarks.values()) {
287
+ if (entry.combinedTermList === entry.baseTerm) {
288
+ entry.combinedTermList = formatList(entry.combinedTerms);
289
+ entry.combinedPrimaryTerms = entry.combinedPrimaryTerms.length
290
+ ? entry.combinedPrimaryTerms
291
+ : [entry.primaryTerm];
292
+ }
293
+ }
294
+ return trademarks;
295
+ }
296
+ // ---------------------------------------------------------------------------
297
+ // Text scanner
298
+ //
299
+ // Scans raw AsciiDoc source text for trademark base terms using whole-word
300
+ // regex. Multi-word terms (e.g. "Final Cut Pro") are handled correctly.
301
+ // Returns the set of base terms found.
302
+ // ---------------------------------------------------------------------------
303
+ function escapeRegex(s) {
304
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
305
+ }
306
+ /**
307
+ * Scan source text for trademark terms. Returns the set of matched base
308
+ * terms (keys in the trademarks map).
309
+ */
310
+ function findTrademarks(sourceText, trademarks) {
311
+ const found = new Set();
312
+ for (const entry of trademarks.values()) {
313
+ // Check the canonical base term and every alias.
314
+ const termsToCheck = entry.combinedTerms;
315
+ for (const term of termsToCheck) {
316
+ const pattern = new RegExp(`\\b${escapeRegex(term)}\\b`, 'i');
317
+ if (pattern.test(sourceText)) {
318
+ found.add(entry.baseTerm);
319
+ break; // one match is enough for this canonical entry
320
+ }
321
+ }
322
+ }
323
+ return found;
324
+ }
325
+ // ---------------------------------------------------------------------------
326
+ // Declaration generator
327
+ //
328
+ // Port of the declaration-building logic in trademark_it() in Ruby.
329
+ // Builds the right-column text: combined term list + verb + declaration phrase.
330
+ // ---------------------------------------------------------------------------
331
+ /**
332
+ * Build the declaration text for the right column of the output table.
333
+ *
334
+ * Ruby original:
335
+ * declaration_phrase = data[:declaration].sub(/^.*?(?: is | are )/, '')
336
+ * if terms_count > 1
337
+ * declaration_phrase.gsub!(/\ba registered trademark\b/i, 'registered trademarks')
338
+ * declaration_phrase.gsub!(/\ba trademark\b/i, 'trademarks')
339
+ * end
340
+ * right_text = "#{combined_term_str} #{verb_phrase} #{declaration_phrase}".strip
341
+ */
342
+ function buildDeclaration(entry) {
343
+ const terms = entry.combinedTerms;
344
+ const count = terms.length;
345
+ const verb = count > 1 ? 'are' : 'is';
346
+ const termList = formatList(terms);
347
+ // Strip the original subject from the declaration sentence.
348
+ // e.g. "Apple is a registered trademark of Apple Inc."
349
+ // → "a registered trademark of Apple Inc."
350
+ let phrase = entry.declaration.replace(/^.*?(?= is | are )/, '').replace(/^ (is|are) /, '');
351
+ if (count > 1) {
352
+ phrase = phrase
353
+ .replace(/\ba registered trademark\b/gi, 'registered trademarks')
354
+ .replace(/\ba trademark\b/gi, 'trademarks');
355
+ }
356
+ return `${termList} ${verb} ${phrase}`.trim();
357
+ }
358
+ // ---------------------------------------------------------------------------
359
+ // AsciiDoc partial generator
360
+ // ---------------------------------------------------------------------------
361
+ /**
362
+ * Generate the content of the injected partial.
363
+ *
364
+ * Entries are sorted alphabetically by base term (case-insensitive),
365
+ * matching the Ruby sorted_data behaviour.
366
+ */
367
+ function generateTrademarkPartial(foundBaseTerms, trademarks, cols = '22,78') {
368
+ const matched = [...trademarks.values()]
369
+ .filter((e) => foundBaseTerms.has(e.baseTerm))
370
+ .sort((a, b) => a.baseTerm.toLowerCase().localeCompare(b.baseTerm.toLowerCase()));
371
+ if (matched.length === 0) {
372
+ return '// No trademark terms detected in this component.\n';
373
+ }
374
+ const lines = [
375
+ '// Auto-generated by antora-trademark-it. Do not edit.',
376
+ `[cols="${cols}", frame=none, grid=none]`,
377
+ '|===',
378
+ ];
379
+ for (const entry of matched) {
380
+ const leftCol = formatList(entry.combinedPrimaryTerms);
381
+ const rightCol = buildDeclaration(entry);
382
+ lines.push(`|${leftCol}`);
383
+ lines.push(`|${rightCol}`);
384
+ lines.push('');
385
+ }
386
+ lines.push('|===');
387
+ lines.push('');
388
+ return lines.join('\n');
389
+ }
390
+ // ---------------------------------------------------------------------------
391
+ // Antora extension entry point
392
+ // ---------------------------------------------------------------------------
393
+ function register(context) {
394
+ // Support both `this`-style and argument-style registration.
395
+ const ctx = context ?? this;
396
+ const logger = makeLogger(ctx.getLogger ? ctx.getLogger('trademark-it') : undefined);
397
+ let cfg = {
398
+ enabled: true,
399
+ trademark_file: 'ROOT:partial$trademark-table.adoc',
400
+ output_partial: 'generated-trademark-table.adoc',
401
+ ignore: [],
402
+ cols: '22,78',
403
+ };
404
+ ctx.once('playbookBuilt', async ({ playbook }) => {
405
+ const extEntry = (playbook?.antora?.extensions ?? []).find((ext) => {
406
+ const req = String(ext.require ?? '');
407
+ return req.includes('trademark-it') || req.includes('trademark_it');
408
+ }) ?? {};
409
+ const raw = extEntry.trademark_it ??
410
+ extEntry.trademarkIt ??
411
+ extEntry.trademarkit ??
412
+ {};
413
+ const rawRec = raw;
414
+ cfg = {
415
+ enabled: toBool(pick(rawRec, ['enabled'], cfg.enabled), cfg.enabled),
416
+ trademark_file: String(pick(rawRec, ['trademark_file', 'trademarkFile', 'trademarkfile'], cfg.trademark_file)),
417
+ output_partial: String(pick(rawRec, ['output_partial', 'outputPartial', 'outputpartial'], cfg.output_partial)),
418
+ ignore: ensureStringArray(pick(rawRec, ['ignore'], cfg.ignore)),
419
+ cols: String(pick(rawRec, ['cols'], cfg.cols)),
420
+ };
421
+ logger.debug(`trademark-it config: ${JSON.stringify(cfg)}`);
422
+ });
423
+ ctx.once('contentClassified', async ({ playbook, contentCatalog }) => {
424
+ if (!cfg.enabled) {
425
+ logger.debug('trademark-it disabled (skipped)');
426
+ return;
427
+ }
428
+ if (!contentCatalog) {
429
+ logger.error('contentCatalog is missing');
430
+ return;
431
+ }
432
+ logger.event('trademark-it starting');
433
+ // -----------------------------------------------------------------------
434
+ // 1. Locate and parse the trademark definition file.
435
+ // -----------------------------------------------------------------------
436
+ const trademarkFileContent = resolveTrademarkFile(cfg.trademark_file, contentCatalog, playbook, logger);
437
+ if (!trademarkFileContent) {
438
+ logger.error(`trademark-it: could not locate trademark file "${cfg.trademark_file}". Skipping.`);
439
+ return;
440
+ }
441
+ const trademarks = parseTrademarks(trademarkFileContent, cfg.ignore);
442
+ logger.debug(`trademark-it: parsed ${trademarks.size} canonical trademark entries`);
443
+ // -----------------------------------------------------------------------
444
+ // 2. Build list of component-versions present in the catalog.
445
+ // -----------------------------------------------------------------------
446
+ const componentVersions = getComponentVersions(contentCatalog);
447
+ logger.debug(`trademark-it: processing ${componentVersions.size} component-version(s)`);
448
+ // -----------------------------------------------------------------------
449
+ // 3. For each component-version: scan pages + partials, generate partial.
450
+ // -----------------------------------------------------------------------
451
+ for (const [component, versions] of componentVersions) {
452
+ for (const version of versions) {
453
+ const scanFiles = contentCatalog.getFiles().filter((f) => f.src.component === component &&
454
+ f.src.version === version &&
455
+ (f.src.family === 'page' || f.src.family === 'partial'));
456
+ if (scanFiles.length === 0)
457
+ continue;
458
+ // Concatenate all source text for this component-version.
459
+ const combinedText = scanFiles
460
+ .map((f) => f.contents.toString('utf8'))
461
+ .join('\n');
462
+ const found = findTrademarks(combinedText, trademarks);
463
+ logger.debug(`trademark-it: ${component}@${version} — scanned ${scanFiles.length} files, found ${found.size} trademark(s)`);
464
+ const partialContent = generateTrademarkPartial(found, trademarks, cfg.cols);
465
+ // -----------------------------------------------------------------------
466
+ // 4. Inject generated partial into catalog.
467
+ // -----------------------------------------------------------------------
468
+ const relative = cfg.output_partial;
469
+ const basename = relative.split('/').pop() ?? relative;
470
+ const stem = basename.replace(/\.[^.]+$/, '');
471
+ const extname = basename.includes('.') ? `.${basename.split('.').pop()}` : '';
472
+ contentCatalog.addFile({
473
+ contents: Buffer.from(partialContent, 'utf8'),
474
+ src: {
475
+ component,
476
+ version,
477
+ module: 'ROOT',
478
+ family: 'partial',
479
+ relative,
480
+ path: `modules/ROOT/partials/${relative}`,
481
+ basename,
482
+ stem,
483
+ extname,
484
+ mediaType: 'text/asciidoc',
485
+ origin: undefined,
486
+ },
487
+ });
488
+ logger.debug(`trademark-it: injected partial$${relative} into ${component}@${version}`);
489
+ }
490
+ }
491
+ logger.event('trademark-it finished');
492
+ });
493
+ }
494
+ // ---------------------------------------------------------------------------
495
+ // Helpers
496
+ // ---------------------------------------------------------------------------
497
+ /**
498
+ * Locate the trademark definition file.
499
+ *
500
+ * Tries three strategies in order:
501
+ * 1. Antora resource ID lookup via getFiles() filter.
502
+ * 2. Filesystem path (absolute or playbook-relative).
503
+ * 3. Filename-only match across all catalog partials.
504
+ */
505
+ function resolveTrademarkFile(trademarkFileRef, contentCatalog, playbook, logger) {
506
+ // Strategy 1: catalog lookup by partial path / resource ID components.
507
+ // Accept formats like: "ROOT:partial$trademark-table.adoc"
508
+ // or "1.0@trademarks:ROOT:partial$trademark-table.adoc"
509
+ const catalogFile = contentCatalog.getFiles().find((f) => {
510
+ if (f.src.family !== 'partial')
511
+ return false;
512
+ const rel = f.src.relative ?? '';
513
+ const resourceId = `${f.src.module ?? 'ROOT'}:partial$${rel}`;
514
+ // Match against the end of the provided ref so short refs work.
515
+ return (resourceId === trademarkFileRef ||
516
+ resourceId.endsWith(trademarkFileRef) ||
517
+ rel === trademarkFileRef ||
518
+ rel.endsWith(trademarkFileRef));
519
+ });
520
+ if (catalogFile) {
521
+ logger.debug(`trademark-it: trademark file resolved from catalog (${catalogFile.src.path})`);
522
+ return catalogFile.contents.toString('utf8');
523
+ }
524
+ // Strategy 2: filesystem path.
525
+ const fsPath = trademarkFileRef.startsWith('/')
526
+ ? trademarkFileRef
527
+ : `${playbook.dir}/${trademarkFileRef}`;
528
+ if (fs.existsSync(fsPath)) {
529
+ logger.debug(`trademark-it: trademark file resolved from filesystem (${fsPath})`);
530
+ return fs.readFileSync(fsPath, 'utf8');
531
+ }
532
+ // Strategy 3: basename-only match against all catalog partials.
533
+ const basename = trademarkFileRef.split(/[\\/]/).pop() ?? trademarkFileRef;
534
+ const fallback = contentCatalog.getFiles().find((f) => f.src.family === 'partial' && f.src.basename === basename);
535
+ if (fallback) {
536
+ logger.debug(`trademark-it: trademark file resolved by basename fallback (${fallback.src.path})`);
537
+ return fallback.contents.toString('utf8');
538
+ }
539
+ return null;
540
+ }
541
+ /**
542
+ * Derive the set of unique component-version pairs from the catalog.
543
+ * Returns a Map<component, Set<version>>.
544
+ */
545
+ function getComponentVersions(contentCatalog) {
546
+ const result = new Map();
547
+ for (const f of contentCatalog.getFiles()) {
548
+ const c = f.src.component;
549
+ const v = f.src.version;
550
+ if (!c || !v)
551
+ continue;
552
+ const versions = result.get(c) ?? new Set();
553
+ versions.add(v);
554
+ result.set(c, versions);
555
+ }
556
+ return result;
557
+ }
558
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/trademark-it/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baiyibai-antora/extensions",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "Antora extensions and AsciiDoc macros for Baiyibai documentation",
5
5
  "keywords": [
6
6
  "antora",
@@ -50,6 +50,10 @@
50
50
  "./list-of-site": {
51
51
  "require": "./dist/extensions/list-of-site/index.js",
52
52
  "types": "./dist/extensions/list-of-site/index.d.ts"
53
+ },
54
+ "./trademark-it": {
55
+ "require": "./dist/extensions/trademark-it/index.js",
56
+ "types": "./dist/extensions/trademark-it/index.d.ts"
53
57
  }
54
58
  },
55
59
  "files": [