@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.
Files changed (46) hide show
  1. package/.github/workflows/publish.yml +36 -0
  2. package/LICENSE +674 -0
  3. package/README.md +5 -0
  4. package/dist/command/expand.d.ts +5 -0
  5. package/dist/command/expand.d.ts.map +1 -0
  6. package/dist/command/expand.js +193 -0
  7. package/dist/command/expand.js.map +1 -0
  8. package/dist/command/insert-page.d.ts +5 -0
  9. package/dist/command/insert-page.d.ts.map +1 -0
  10. package/dist/command/insert-page.js +32 -0
  11. package/dist/command/insert-page.js.map +1 -0
  12. package/dist/command/insert-range.d.ts +21 -0
  13. package/dist/command/insert-range.d.ts.map +1 -0
  14. package/dist/command/insert-range.js +61 -0
  15. package/dist/command/insert-range.js.map +1 -0
  16. package/dist/command/insert-reference.d.ts +4 -0
  17. package/dist/command/insert-reference.d.ts.map +1 -0
  18. package/dist/command/insert-reference.js +58 -0
  19. package/dist/command/insert-reference.js.map +1 -0
  20. package/dist/command.d.ts +25 -0
  21. package/dist/command.d.ts.map +1 -0
  22. package/dist/command.js +152 -0
  23. package/dist/command.js.map +1 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +123 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/model.d.ts +43 -0
  29. package/dist/model.d.ts.map +1 -0
  30. package/dist/model.js +157 -0
  31. package/dist/model.js.map +1 -0
  32. package/dist/resolve.d.ts +3 -0
  33. package/dist/resolve.d.ts.map +1 -0
  34. package/dist/resolve.js +95 -0
  35. package/dist/resolve.js.map +1 -0
  36. package/dist/sort.d.ts +20 -0
  37. package/dist/sort.d.ts.map +1 -0
  38. package/dist/sort.js +62 -0
  39. package/dist/sort.js.map +1 -0
  40. package/dist/util.d.ts +10 -0
  41. package/dist/util.d.ts.map +1 -0
  42. package/dist/util.js +17 -0
  43. package/dist/util.js.map +1 -0
  44. package/package.json +37 -0
  45. package/tsconfig.json +44 -0
  46. 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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"}
@@ -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,3 @@
1
+ import { type Index, type Key, type ResolvedKey } from "./model.js";
2
+ export declare function resolve(indexes: Index<Key>[]): Index<ResolvedKey>[];
3
+ //# sourceMappingURL=resolve.d.ts.map
@@ -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"}
@@ -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
@@ -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
@@ -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
+ }