@u1f992/vivliostyle-index 0.1.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/.github/workflows/publish.yml +36 -0
- package/LICENSE +674 -0
- package/README.md +5 -0
- package/dist/command/expand.d.ts +5 -0
- package/dist/command/expand.d.ts.map +1 -0
- package/dist/command/expand.js +193 -0
- package/dist/command/expand.js.map +1 -0
- package/dist/command/insert-page.d.ts +5 -0
- package/dist/command/insert-page.d.ts.map +1 -0
- package/dist/command/insert-page.js +32 -0
- package/dist/command/insert-page.js.map +1 -0
- package/dist/command/insert-range.d.ts +21 -0
- package/dist/command/insert-range.d.ts.map +1 -0
- package/dist/command/insert-range.js +61 -0
- package/dist/command/insert-range.js.map +1 -0
- package/dist/command/insert-reference.d.ts +4 -0
- package/dist/command/insert-reference.d.ts.map +1 -0
- package/dist/command/insert-reference.js +58 -0
- package/dist/command/insert-reference.js.map +1 -0
- package/dist/command.d.ts +25 -0
- package/dist/command.d.ts.map +1 -0
- package/dist/command.js +152 -0
- package/dist/command.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +123 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +43 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +157 -0
- package/dist/model.js.map +1 -0
- package/dist/resolve.d.ts +3 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +95 -0
- package/dist/resolve.js.map +1 -0
- package/dist/sort.d.ts +20 -0
- package/dist/sort.d.ts.map +1 -0
- package/dist/sort.js +62 -0
- package/dist/sort.js.map +1 -0
- package/dist/util.d.ts +10 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +17 -0
- package/dist/util.js.map +1 -0
- package/package.json +37 -0
- package/tsconfig.json +44 -0
- package/u1f992-vivliostyle-index-0.1.0.tgz +0 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { fromHtml } from "hast-util-from-html";
|
|
2
|
+
import { getAttribute } from "hast-util-get-attribute";
|
|
3
|
+
import { selectAll } from "hast-util-select";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import upath from "upath";
|
|
6
|
+
import { run, test } from "./command.js";
|
|
7
|
+
import { default as insertPage } from "./command/insert-page.js";
|
|
8
|
+
import { insertRangeStart, insertRangeEnd, deleteRangeStore, } from "./command/insert-range.js";
|
|
9
|
+
import { default as insertReference } from "./command/insert-reference.js";
|
|
10
|
+
import { default as expand } from "./command/expand.js";
|
|
11
|
+
import { resolve } from "./resolve.js";
|
|
12
|
+
import { throwError, touchSync } from "./util.js";
|
|
13
|
+
import { sort, byLocales, byListedOrder } from "./sort.js";
|
|
14
|
+
export { byLocales, byListedOrder };
|
|
15
|
+
export function defaultComparator(locales) {
|
|
16
|
+
return {
|
|
17
|
+
group: byLocales(locales),
|
|
18
|
+
mainEntry: byLocales(locales),
|
|
19
|
+
mainEntryLocator: byListedOrder,
|
|
20
|
+
mainEntrySee: byLocales(locales),
|
|
21
|
+
mainEntrySeeAlso: byLocales(locales),
|
|
22
|
+
subentry: byLocales(locales),
|
|
23
|
+
subentryLocator: byListedOrder,
|
|
24
|
+
subentrySee: byLocales(locales),
|
|
25
|
+
subentrySeeAlso: byLocales(locales),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function processEntry(root, indexes, relPath) {
|
|
29
|
+
selectAll("[data-index]", root)
|
|
30
|
+
.map((elem) => ({
|
|
31
|
+
elem,
|
|
32
|
+
data: getAttribute(elem, "data-index") ??
|
|
33
|
+
throwError([
|
|
34
|
+
"data === null: won't happen. it's likely a bug in selectAll() or getAttribute()",
|
|
35
|
+
]),
|
|
36
|
+
}))
|
|
37
|
+
.map(({ elem, data }) => ({
|
|
38
|
+
elem,
|
|
39
|
+
data,
|
|
40
|
+
cmd: [
|
|
41
|
+
insertPage,
|
|
42
|
+
insertRangeStart,
|
|
43
|
+
insertRangeEnd,
|
|
44
|
+
insertReference,
|
|
45
|
+
].find((cmd) => test(cmd, data)),
|
|
46
|
+
}))
|
|
47
|
+
.filter((obj) => !!obj.cmd)
|
|
48
|
+
.forEach(({ elem, data, cmd }) => run(cmd,
|
|
49
|
+
// @ts-expect-error branded
|
|
50
|
+
data, indexes, root, elem, relPath));
|
|
51
|
+
}
|
|
52
|
+
export const index = function ({ entryContext, indexEntryMap, comparators }) {
|
|
53
|
+
const ctx = upath.resolve(process.cwd(), entryContext ?? ".");
|
|
54
|
+
indexEntryMap = Object.fromEntries(Object.entries(indexEntryMap).map(([index, entries]) => [
|
|
55
|
+
upath.resolve(ctx, index),
|
|
56
|
+
entries.map((entry) => upath.resolve(ctx, entry)),
|
|
57
|
+
]));
|
|
58
|
+
const entryIndexMap = Object.entries(indexEntryMap).reduce((acc, [index, entries]) => {
|
|
59
|
+
entries.forEach((entry) => (acc[entry] ??= []).push(index));
|
|
60
|
+
return acc;
|
|
61
|
+
}, {});
|
|
62
|
+
const indexPaths = new Set(Object.keys(indexEntryMap));
|
|
63
|
+
const entryPaths = new Set(Object.keys(entryIndexMap));
|
|
64
|
+
return (tree, file) => {
|
|
65
|
+
if (this.data()["vfmIndex"]) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const root = tree;
|
|
69
|
+
const rawPath = file.path;
|
|
70
|
+
if (typeof rawPath === "undefined") {
|
|
71
|
+
console.warn("cannot extract index entries from anonymous files or expand indexes into anonymous files.");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const filePath = upath.resolve(rawPath);
|
|
75
|
+
if (entryPaths.has(filePath)) {
|
|
76
|
+
processEntry(root, [], null);
|
|
77
|
+
// trigger hot reload
|
|
78
|
+
entryIndexMap[filePath].filter((path) => path !== filePath).forEach(touchSync);
|
|
79
|
+
}
|
|
80
|
+
if (indexPaths.has(filePath)) {
|
|
81
|
+
const indexes = [];
|
|
82
|
+
const baseDir = upath.dirname(filePath);
|
|
83
|
+
indexEntryMap[filePath].map((path) => ({
|
|
84
|
+
path,
|
|
85
|
+
content: fs.readFileSync(path, {
|
|
86
|
+
encoding: "utf-8",
|
|
87
|
+
}),
|
|
88
|
+
}))
|
|
89
|
+
.map(({ path, content }) => {
|
|
90
|
+
let file;
|
|
91
|
+
this.data()["vfmIndex"] = {};
|
|
92
|
+
try {
|
|
93
|
+
file = this.processSync({
|
|
94
|
+
contents: content,
|
|
95
|
+
path: path,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
delete this.data()["vfmIndex"];
|
|
100
|
+
}
|
|
101
|
+
return { path, root: fromHtml(file.toString()) };
|
|
102
|
+
})
|
|
103
|
+
.forEach(({ path, root }) => processEntry(root, indexes, filePath === path
|
|
104
|
+
? null
|
|
105
|
+
: upath.relative(baseDir, upath.changeExt(path, ".html"))));
|
|
106
|
+
deleteRangeStore(indexes);
|
|
107
|
+
const resolved = sort(resolve(indexes), comparators);
|
|
108
|
+
selectAll("[data-index]", root)
|
|
109
|
+
.map((elem) => ({
|
|
110
|
+
elem,
|
|
111
|
+
data: getAttribute(elem, "data-index") ??
|
|
112
|
+
throwError([
|
|
113
|
+
"data === null: won't happen. it's likely a bug in selectAll() or getAttribute()",
|
|
114
|
+
]),
|
|
115
|
+
}))
|
|
116
|
+
.filter(({ data }) => test(expand, data))
|
|
117
|
+
.forEach(({ elem, data }) => run(expand,
|
|
118
|
+
// @ts-expect-error branded
|
|
119
|
+
data, resolved, root, elem, null));
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/model.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type IndexId = string;
|
|
2
|
+
export type ResolvedKey = [string, string];
|
|
3
|
+
export type UnresolvedKey = [string, null];
|
|
4
|
+
export type Key = ResolvedKey | UnresolvedKey;
|
|
5
|
+
export type HasKey<TKey extends Key> = {
|
|
6
|
+
key: TKey;
|
|
7
|
+
};
|
|
8
|
+
type PageLocator = string;
|
|
9
|
+
type RangeLocator = [PageLocator, PageLocator];
|
|
10
|
+
type Locator = PageLocator | RangeLocator;
|
|
11
|
+
type MainEntryReference<TKey extends Key> = [TKey, TKey];
|
|
12
|
+
type SubentryReference<TKey extends Key> = [TKey, TKey, TKey];
|
|
13
|
+
export type Reference<TKey extends Key> = MainEntryReference<TKey> | SubentryReference<TKey>;
|
|
14
|
+
declare const sequentialIdBrand: unique symbol;
|
|
15
|
+
type SequentialId = string & {
|
|
16
|
+
[sequentialIdBrand]: unknown;
|
|
17
|
+
};
|
|
18
|
+
type HasLocators = {
|
|
19
|
+
locators: [SequentialId, Locator, boolean][];
|
|
20
|
+
};
|
|
21
|
+
export declare function insertLocator(entry: HasLocators, locator: [Locator, boolean]): void;
|
|
22
|
+
type HasReferences<TKey extends Key> = {
|
|
23
|
+
see: [SequentialId, ...Reference<TKey>][];
|
|
24
|
+
seeAlso: [SequentialId, ...Reference<TKey>][];
|
|
25
|
+
};
|
|
26
|
+
export declare function insertReference<TKey extends Key>(entry: HasReferences<TKey>, type: "see" | "seeAlso", reference: Reference<TKey>): void;
|
|
27
|
+
export type EntryBase<TKey extends Key> = HasLocators & HasReferences<TKey>;
|
|
28
|
+
export type Subentry<TKey extends Key> = HasKey<TKey> & EntryBase<TKey>;
|
|
29
|
+
export type ParentOf<T> = {
|
|
30
|
+
children: T[];
|
|
31
|
+
};
|
|
32
|
+
export type MainEntry<TKey extends Key> = HasKey<TKey> & EntryBase<TKey> & ParentOf<Subentry<TKey>>;
|
|
33
|
+
export type Group<TKey extends Key> = HasKey<TKey> & ParentOf<MainEntry<TKey>>;
|
|
34
|
+
export type Index<TKey extends Key> = {
|
|
35
|
+
id: IndexId;
|
|
36
|
+
} & ParentOf<Group<TKey>>;
|
|
37
|
+
export declare function ensureIndex<TKey extends Key>(indexes: Index<TKey>[], id: IndexId): Index<TKey>;
|
|
38
|
+
export declare function toHastChildren(value: string): string;
|
|
39
|
+
export declare function hastChildrenToText(hastJson: string): string;
|
|
40
|
+
export declare function getChild<TKey extends Key, TChild extends HasKey<TKey>>(parent: ParentOf<TChild>, key: TKey): TChild | undefined;
|
|
41
|
+
export declare function ensureChild<TKey extends Key, TChild extends HasKey<TKey>>(parent: ParentOf<TChild>, key: TKey, init: Omit<TChild, "key">): TChild;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/dist/model.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { toText } from "hast-util-to-text";
|
|
2
|
+
const sequentialIdBrand = Symbol();
|
|
3
|
+
let counter = 0n;
|
|
4
|
+
function getId() {
|
|
5
|
+
counter++;
|
|
6
|
+
return counter.toString().padStart(16, "0");
|
|
7
|
+
}
|
|
8
|
+
export function insertLocator(entry, locator) {
|
|
9
|
+
entry.locators.push([getId(), ...locator]);
|
|
10
|
+
}
|
|
11
|
+
export function insertReference(entry, type, reference) {
|
|
12
|
+
entry[type].push([getId(), ...reference]);
|
|
13
|
+
}
|
|
14
|
+
export function ensureIndex(indexes, id) {
|
|
15
|
+
return (indexes.find((idx) => idx.id === id) ??
|
|
16
|
+
indexes[indexes.push({ id, children: [] }) - 1]);
|
|
17
|
+
}
|
|
18
|
+
export function toHastChildren(value) {
|
|
19
|
+
return JSON.stringify([{ type: "text", value }]);
|
|
20
|
+
}
|
|
21
|
+
export function hastChildrenToText(hastJson) {
|
|
22
|
+
return toText({
|
|
23
|
+
type: "element",
|
|
24
|
+
tagName: "span",
|
|
25
|
+
children: JSON.parse(hastJson),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function getChild(parent, key) {
|
|
29
|
+
return parent.children.find((child) => hastChildrenToText(child.key[0]) === hastChildrenToText(key[0]) &&
|
|
30
|
+
(key[1] === null || child.key[1] === key[1]));
|
|
31
|
+
}
|
|
32
|
+
export function ensureChild(parent, key, init) {
|
|
33
|
+
return (getChild(parent, key) ??
|
|
34
|
+
parent.children[parent.children.push({
|
|
35
|
+
key,
|
|
36
|
+
...init,
|
|
37
|
+
}) - 1]);
|
|
38
|
+
}
|
|
39
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
40
|
+
const example = [
|
|
41
|
+
{
|
|
42
|
+
id: ".",
|
|
43
|
+
children: [
|
|
44
|
+
{
|
|
45
|
+
key: [toHastChildren("し"), "し"],
|
|
46
|
+
children: [
|
|
47
|
+
{
|
|
48
|
+
key: [toHastChildren("自由利用"), "じゆうりよう"],
|
|
49
|
+
locators: [
|
|
50
|
+
[getId(), ["104", "108"], false],
|
|
51
|
+
[getId(), "112", false],
|
|
52
|
+
],
|
|
53
|
+
see: [],
|
|
54
|
+
seeAlso: [],
|
|
55
|
+
children: [],
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
key: [toHastChildren("そ"), "そ"],
|
|
61
|
+
children: [
|
|
62
|
+
{
|
|
63
|
+
key: [toHastChildren("相続"), "そうぞく"],
|
|
64
|
+
locators: [[getId(), "88", false]],
|
|
65
|
+
see: [],
|
|
66
|
+
seeAlso: [],
|
|
67
|
+
children: [
|
|
68
|
+
{
|
|
69
|
+
key: [toHastChildren("一身専属"), "いっしんせんぞく"],
|
|
70
|
+
locators: [[getId(), "76", false]],
|
|
71
|
+
see: [],
|
|
72
|
+
seeAlso: [],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
key: [toHastChildren("相続人"), "そうぞくにん"],
|
|
76
|
+
locators: [[getId(), ["90", "91"], false]],
|
|
77
|
+
see: [],
|
|
78
|
+
seeAlso: [],
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: [toHastChildren("ち"), "ち"],
|
|
86
|
+
children: [
|
|
87
|
+
{
|
|
88
|
+
key: [toHastChildren("知的財産権"), "ちてきざいさんけん"],
|
|
89
|
+
locators: [[getId(), ["56", "58"], false]],
|
|
90
|
+
see: [],
|
|
91
|
+
seeAlso: [],
|
|
92
|
+
children: [],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
key: [toHastChildren("著作権"), "ちょさくけん"],
|
|
96
|
+
locators: [
|
|
97
|
+
[getId(), "3", false],
|
|
98
|
+
[getId(), "8", false],
|
|
99
|
+
[getId(), ["33", "35"], false],
|
|
100
|
+
],
|
|
101
|
+
see: [],
|
|
102
|
+
seeAlso: [
|
|
103
|
+
[
|
|
104
|
+
getId(),
|
|
105
|
+
[toHastChildren("ち"), "ち"],
|
|
106
|
+
[toHastChildren("知的財産権"), "ちてきざいさんけん"],
|
|
107
|
+
],
|
|
108
|
+
],
|
|
109
|
+
children: [
|
|
110
|
+
{
|
|
111
|
+
key: [toHastChildren("――の使用"), "ちょさくけんのしよう"],
|
|
112
|
+
locators: [[getId(), "150", false]],
|
|
113
|
+
see: [],
|
|
114
|
+
seeAlso: [],
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
key: [toHastChildren("――の譲渡"), "ちょさくけんのじょうと"],
|
|
118
|
+
locators: [
|
|
119
|
+
[getId(), "42", false],
|
|
120
|
+
[getId(), ["100", "104"], false],
|
|
121
|
+
],
|
|
122
|
+
see: [],
|
|
123
|
+
seeAlso: [],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
key: [toHastChildren("――の制限"), "ちょさくけんのせいげん"],
|
|
127
|
+
locators: [],
|
|
128
|
+
see: [
|
|
129
|
+
[
|
|
130
|
+
getId(),
|
|
131
|
+
[toHastChildren("し"), "し"],
|
|
132
|
+
[toHastChildren("自由利用"), "じゆうりよう"],
|
|
133
|
+
],
|
|
134
|
+
],
|
|
135
|
+
seeAlso: [],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
key: [toHastChildren("――の相続"), "ちょさくけんのそうぞく"],
|
|
139
|
+
locators: [],
|
|
140
|
+
see: [],
|
|
141
|
+
seeAlso: [
|
|
142
|
+
[
|
|
143
|
+
getId(),
|
|
144
|
+
[toHastChildren("そ"), "そ"],
|
|
145
|
+
[toHastChildren("相続"), "そうぞく"],
|
|
146
|
+
[toHastChildren("一身専属"), "いっしんせんぞく"],
|
|
147
|
+
],
|
|
148
|
+
],
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,GAAG,EACR,KAAK,WAAW,EAIjB,MAAM,YAAY,CAAC;AAiGpB,wBAAgB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAuBnE"}
|
package/dist/resolve.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getChild, hastChildrenToText, } from "./model.js";
|
|
2
|
+
function resolveChildren(parent, mergeProps) {
|
|
3
|
+
const unresolved = [];
|
|
4
|
+
const resolved = [];
|
|
5
|
+
for (const child of parent.children) {
|
|
6
|
+
if (child.key[1] === null) {
|
|
7
|
+
unresolved.push(child);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
resolved.push(child);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
for (const u of unresolved) {
|
|
14
|
+
const existing = resolved.find((item) => hastChildrenToText(item.key[0]) === hastChildrenToText(u.key[0]));
|
|
15
|
+
if (existing) {
|
|
16
|
+
for (const prop of mergeProps) {
|
|
17
|
+
if (Array.isArray(existing[prop]) && Array.isArray(u[prop])) {
|
|
18
|
+
existing[prop].push(...u[prop]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const r = u;
|
|
24
|
+
r.key = [r.key[0], hastChildrenToText(r.key[0])];
|
|
25
|
+
resolved.push(r);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
parent.children = resolved;
|
|
29
|
+
}
|
|
30
|
+
function fillKey(key) {
|
|
31
|
+
key[1] = key[1] === null ? hastChildrenToText(key[0]) : key[1];
|
|
32
|
+
}
|
|
33
|
+
function resolveReferences(index) {
|
|
34
|
+
const references = [];
|
|
35
|
+
for (const group of index.children) {
|
|
36
|
+
for (const mainEntry of group.children) {
|
|
37
|
+
references.push(...mainEntry.see);
|
|
38
|
+
references.push(...mainEntry.seeAlso);
|
|
39
|
+
for (const subentry of mainEntry.children) {
|
|
40
|
+
references.push(...subentry.see);
|
|
41
|
+
references.push(...subentry.seeAlso);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (const reference of references) {
|
|
46
|
+
const [, groupKey, mainEntryKey, subentryKey] = reference;
|
|
47
|
+
const group = getChild(index, groupKey);
|
|
48
|
+
if (!group) {
|
|
49
|
+
console.warn(`index id=${index.id} does not contain group=[${groupKey[0]},${groupKey[1]}]. link will likely be invalid.`);
|
|
50
|
+
fillKey(groupKey);
|
|
51
|
+
fillKey(mainEntryKey);
|
|
52
|
+
if (subentryKey) {
|
|
53
|
+
fillKey(subentryKey);
|
|
54
|
+
}
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
groupKey[1] = group.key[1];
|
|
58
|
+
const mainEntry = getChild(group, mainEntryKey);
|
|
59
|
+
if (!mainEntry) {
|
|
60
|
+
console.warn(`index id=${index.id} does not contain group=[${groupKey[0]},${groupKey[1]}],mainEntry=[${mainEntryKey[0]},${mainEntryKey[1]}]. link will likely be invalid.`);
|
|
61
|
+
fillKey(mainEntryKey);
|
|
62
|
+
if (subentryKey) {
|
|
63
|
+
fillKey(subentryKey);
|
|
64
|
+
}
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
mainEntryKey[1] = mainEntry.key[1];
|
|
68
|
+
if (subentryKey) {
|
|
69
|
+
const subentry = getChild(mainEntry, subentryKey);
|
|
70
|
+
if (!subentry) {
|
|
71
|
+
console.warn(`index id=${index.id} does not contain group=[${groupKey[0]},${groupKey[1]}],mainEntry=[${mainEntryKey[0]},${mainEntryKey[1]}],subEntry=[${subentryKey[0]},${subentryKey[1]}]. link will likely be invalid.`);
|
|
72
|
+
fillKey(subentryKey);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
subentryKey[1] = subentry.key[1];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export function resolve(indexes) {
|
|
80
|
+
const newIndexes = structuredClone(indexes);
|
|
81
|
+
for (let i = 0; i < newIndexes.length; i++) {
|
|
82
|
+
const index = newIndexes[i];
|
|
83
|
+
resolveChildren(index, new Set(["children"]));
|
|
84
|
+
for (let j = 0; j < index.children.length; j++) {
|
|
85
|
+
const group = index.children[j];
|
|
86
|
+
resolveChildren(group, new Set(["children", "locators", "see", "seeAlso"]));
|
|
87
|
+
for (let k = 0; k < group.children.length; k++) {
|
|
88
|
+
resolveChildren(group.children[k], new Set(["locators", "see", "seeAlso"]));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
resolveReferences(index);
|
|
92
|
+
}
|
|
93
|
+
return newIndexes;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/sort.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Group, type HasKey, type Index, type IndexId, type MainEntry, type ResolvedKey, type Subentry } from "./model.js";
|
|
2
|
+
type Locator = MainEntry<ResolvedKey>["locators"][0];
|
|
3
|
+
type Reference = MainEntry<ResolvedKey>["see"][0];
|
|
4
|
+
type Comparator<T> = NonNullable<Parameters<Array<T>["sort"]>[0]>;
|
|
5
|
+
export type Comparators = Record<IndexId, {
|
|
6
|
+
group: Comparator<Group<ResolvedKey>>;
|
|
7
|
+
mainEntry: Comparator<MainEntry<ResolvedKey>>;
|
|
8
|
+
mainEntryLocator: Comparator<Locator>;
|
|
9
|
+
mainEntrySee: Comparator<Reference>;
|
|
10
|
+
mainEntrySeeAlso: Comparator<Reference>;
|
|
11
|
+
subentry: Comparator<Subentry<ResolvedKey>>;
|
|
12
|
+
subentryLocator: Comparator<Locator>;
|
|
13
|
+
subentrySee: Comparator<Reference>;
|
|
14
|
+
subentrySeeAlso: Comparator<Reference>;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const byListedOrder: Comparator<Locator> & Comparator<Reference>;
|
|
17
|
+
export declare function byLocales(locales: Intl.LocalesArgument): Comparator<HasKey<ResolvedKey>> & Comparator<Reference>;
|
|
18
|
+
export declare function sort(indexes: Index<ResolvedKey>[], comparators: Comparators): Index<ResolvedKey>[];
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=sort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AAEpB,KAAK,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,KAAK,UAAU,CAAC,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,OAAO,EACP;IACE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACtC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9C,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,gBAAgB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,eAAe,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;CACxC,CACF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,SAAS,CAGzC,CAAC;AAE9B,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,eAAe,GAC5B,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAoCzD;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,wBAwB3E"}
|
package/dist/sort.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { hastChildrenToText, } from "./model.js";
|
|
2
|
+
export const byListedOrder = (a, b) => a[0].localeCompare(b[0]);
|
|
3
|
+
export function byLocales(locales) {
|
|
4
|
+
const collator = new Intl.Collator(locales);
|
|
5
|
+
return function self(a, b) {
|
|
6
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
7
|
+
const groupKeyCompare = self({ key: a[1] }, { key: b[1] });
|
|
8
|
+
if (groupKeyCompare !== 0) {
|
|
9
|
+
return groupKeyCompare;
|
|
10
|
+
}
|
|
11
|
+
const mainKeyCompare = self({ key: a[2] }, { key: b[2] });
|
|
12
|
+
if (mainKeyCompare !== 0) {
|
|
13
|
+
return mainKeyCompare;
|
|
14
|
+
}
|
|
15
|
+
if (a[3] && b[3]) {
|
|
16
|
+
return self({ key: a[3] }, { key: b[3] });
|
|
17
|
+
}
|
|
18
|
+
if (a[3] && !b[3]) {
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
else if (!a[3] && b[3]) {
|
|
22
|
+
return -1;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (!Array.isArray(a) && !Array.isArray(b)) {
|
|
29
|
+
const key1Compare = collator.compare(a.key[1], b.key[1]);
|
|
30
|
+
return key1Compare !== 0
|
|
31
|
+
? key1Compare
|
|
32
|
+
: collator.compare(hastChildrenToText(a.key[0]), hastChildrenToText(b.key[0]));
|
|
33
|
+
}
|
|
34
|
+
return 0;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function sort(indexes, comparators) {
|
|
38
|
+
const newIndexes = structuredClone(indexes);
|
|
39
|
+
for (const index of newIndexes) {
|
|
40
|
+
const comparator = comparators[index.id];
|
|
41
|
+
if (!comparator) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
index.children.sort(comparator.group);
|
|
45
|
+
for (const group of index.children) {
|
|
46
|
+
group.children.sort(comparator.mainEntry);
|
|
47
|
+
for (const mainEntry of group.children) {
|
|
48
|
+
mainEntry.locators.sort(comparator.mainEntryLocator);
|
|
49
|
+
mainEntry.see.sort(comparator.mainEntrySee);
|
|
50
|
+
mainEntry.seeAlso.sort(comparator.mainEntrySeeAlso);
|
|
51
|
+
mainEntry.children.sort(comparator.subentry);
|
|
52
|
+
for (const subentry of mainEntry.children) {
|
|
53
|
+
subentry.locators.sort(comparator.subentryLocator);
|
|
54
|
+
subentry.see.sort(comparator.subentrySee);
|
|
55
|
+
subentry.seeAlso.sort(comparator.subentrySeeAlso);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return newIndexes;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=sort.js.map
|
package/dist/sort.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.js","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type CtorWith<TArgs extends unknown[]> = new (...args: TArgs) => Error;
|
|
2
|
+
export declare function throwError<TArgs extends unknown[]>(args: TArgs, { ctor }?: {
|
|
3
|
+
ctor?: CtorWith<TArgs>;
|
|
4
|
+
}): never;
|
|
5
|
+
/**
|
|
6
|
+
* https://qiita.com/Anders/items/b1a9f3dca3f9c3c17241
|
|
7
|
+
*/
|
|
8
|
+
export declare function touchSync(fileName: string): void;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,CAAC,KAAK,SAAS,OAAO,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC;AACvE,wBAAgB,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,EAChD,IAAI,EAAE,KAAK,EACX,EAAE,IAAI,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;CAAO,GACxC,KAAK,CAEP;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,QAOzC"}
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
export function throwError(args, { ctor } = {}) {
|
|
3
|
+
throw new (ctor ?? Error)(...args);
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* https://qiita.com/Anders/items/b1a9f3dca3f9c3c17241
|
|
7
|
+
*/
|
|
8
|
+
export function touchSync(fileName) {
|
|
9
|
+
try {
|
|
10
|
+
const time = new Date();
|
|
11
|
+
fs.utimesSync(fileName, time, time);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
fs.closeSync(fs.openSync(fileName, "w"));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,MAAM,UAAU,UAAU,CACxB,IAAW,EACX,EAAE,IAAI,KAAiC,EAAE;IAEzC,MAAM,IAAK,CAAC,IAAI,IAAI,KAAK,CAAqB,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@u1f992/vivliostyle-index",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "unified plugin that integrates automatic index generation into Vivliostyle CLI workflows.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"lint": "eslint --fix \"src/**/*.ts\"",
|
|
8
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"test": "node --test \"dist/**/*.test.js\"",
|
|
11
|
+
"example": "cd example && npx vivliostyle preview"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [],
|
|
14
|
+
"author": "Koutaro Mukai",
|
|
15
|
+
"license": "GPL-3.0-only",
|
|
16
|
+
"type": "module",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@eslint/js": "^9.34.0",
|
|
19
|
+
"@types/hast": "^2.3.10",
|
|
20
|
+
"@types/node": "^24.3.0",
|
|
21
|
+
"eslint": "^9.35.0",
|
|
22
|
+
"prettier": "^3.6.2",
|
|
23
|
+
"typescript": "^5.9.2",
|
|
24
|
+
"typescript-eslint": "^8.42.0",
|
|
25
|
+
"unified": "^9.0.0"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"ajv": "^8.17.1",
|
|
29
|
+
"hast-util-from-html": "^1.0.2",
|
|
30
|
+
"hast-util-get-attribute": "^1.0.0",
|
|
31
|
+
"hast-util-get-xpath": "^1.0.0",
|
|
32
|
+
"hast-util-select": "^5.0.5",
|
|
33
|
+
"hast-util-to-text": "^3.1.2",
|
|
34
|
+
"upath": "^2.0.1",
|
|
35
|
+
"yaml": "^2.8.1"
|
|
36
|
+
}
|
|
37
|
+
}
|