@publisle/research 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/compiler/README.md +1 -1
- package/dist/native-install.d.ts.map +1 -1
- package/dist/native-install.js +5 -2
- package/dist/native-install.js.map +1 -1
- package/dist/native-node.d.ts +1 -0
- package/dist/native-node.d.ts.map +1 -1
- package/dist/native-node.js +20 -3
- package/dist/native-node.js.map +1 -1
- package/package.json +13 -13
- package/src/native-install.ts +12 -2
- package/src/native-node.ts +24 -3
package/LICENSE
CHANGED
package/compiler/README.md
CHANGED
|
@@ -47,7 +47,7 @@ package. Native execution retains `openin_any=p`. Both disable shell escape and
|
|
|
47
47
|
restrict output paths. Selection checks the LaTeX format before using a tagged
|
|
48
48
|
compiler.
|
|
49
49
|
Native tools remain supported; tagged output requires LaTeX 2025-11-01 or later.
|
|
50
|
-
See the [accessibility guide](https://github.com/
|
|
50
|
+
See the [accessibility guide](https://github.com/publisle/publisle/blob/main/docs/guides/accessibility.md) for the UA-2 fixture
|
|
51
51
|
gate and checksum-pinned veraPDF installation.
|
|
52
52
|
|
|
53
53
|
`cacert.pem` is the Mozilla CA bundle distributed by https://curl.se/ca/cacert.pem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-install.d.ts","sourceRoot":"","sources":["../src/native-install.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"native-install.d.ts","sourceRoot":"","sources":["../src/native-install.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,uBAAuB,QACoC,CAAC;AAUzE,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrE,CAAC;AACF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AACD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CA0EhF"}
|
package/dist/native-install.js
CHANGED
|
@@ -6,7 +6,10 @@ import { readFile, realpath, stat } from "node:fs/promises";
|
|
|
6
6
|
import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
7
7
|
import { parseJson, isPlainObject } from "@publisle/schema";
|
|
8
8
|
const require = createRequire(import.meta.url);
|
|
9
|
-
export const NATIVE_ARTIFACT_VERSION = researchPackage.
|
|
9
|
+
export const NATIVE_ARTIFACT_VERSION = researchPackage.optionalDependencies["@publisle/pdf-native-linux-x64"];
|
|
10
|
+
if (!/^\d+\.\d+\.\d+(?:-[a-zA-Z0-9.-]+)?$/u.test(NATIVE_ARTIFACT_VERSION) ||
|
|
11
|
+
!Object.values(researchPackage.optionalDependencies).every((version) => version === NATIVE_ARTIFACT_VERSION))
|
|
12
|
+
throw new Error("Native PDF dependencies must share one exact external version.");
|
|
10
13
|
export const NATIVE_PLATFORM_PACKAGES = {
|
|
11
14
|
"linux-x64": "@publisle/pdf-native-linux-x64",
|
|
12
15
|
"linux-arm64": "@publisle/pdf-native-linux-arm64",
|
|
@@ -29,7 +32,7 @@ export async function installedNativeCompiler() {
|
|
|
29
32
|
if (!isPlainObject(manifest) ||
|
|
30
33
|
manifest["name"] !== name ||
|
|
31
34
|
manifest["version"] !== NATIVE_ARTIFACT_VERSION)
|
|
32
|
-
throw new Error("Installed native PDF package version does not match
|
|
35
|
+
throw new Error("Installed native PDF package version does not match the pinned dependency.");
|
|
33
36
|
const artifact = parseJson(await readFile(resolve(root, "artifact.json")), {
|
|
34
37
|
maxBytes: 65536,
|
|
35
38
|
maxDepth: 8,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-install.js","sourceRoot":"","sources":["../src/native-install.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,eAAe,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"native-install.js","sourceRoot":"","sources":["../src/native-install.ts"],"names":[],"mappings":"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"}
|
package/dist/native-node.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface NativeCompileOptions extends Omit<NativePdfOptions, "fonts" | "
|
|
|
11
11
|
}
|
|
12
12
|
export interface NativeCompilerDiagnostic extends ResearchLoss {
|
|
13
13
|
readonly blockId?: string;
|
|
14
|
+
readonly blockIndex?: number;
|
|
14
15
|
}
|
|
15
16
|
export interface NativeCompileResult {
|
|
16
17
|
readonly pdf: Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-node.d.ts","sourceRoot":"","sources":["../src/native-node.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,oBAAoB;AACrB,OAAO,EAAkB,KAAK,YAAY,EAAE,qBAAqB;AAIjE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,gBAAgB,EAChB,OAAO,GAAG,QAAQ,CACnB;IACC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AACD,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"native-node.d.ts","sourceRoot":"","sources":["../src/native-node.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,oBAAoB;AACrB,OAAO,EAAkB,KAAK,YAAY,EAAE,qBAAqB;AAIjE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,gBAAgB,EAChB,OAAO,GAAG,QAAQ,CACnB;IACC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AACD,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,wFAAwF;AACxF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAC7C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyM9B"}
|
package/dist/native-node.js
CHANGED
|
@@ -87,10 +87,27 @@ export async function compileNativePdf(document, options) {
|
|
|
87
87
|
? String(cause.stdout)
|
|
88
88
|
: "";
|
|
89
89
|
let message = "Native PDF compilation failed.";
|
|
90
|
+
let diagnostics = [];
|
|
90
91
|
try {
|
|
91
92
|
const error = JSON.parse(stdout);
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
diagnostics = (error.diagnostics ?? [])
|
|
94
|
+
.slice(0, 30)
|
|
95
|
+
.filter((entry) => typeof entry.code === "string" &&
|
|
96
|
+
typeof entry.message === "string")
|
|
97
|
+
.map((entry) => ({
|
|
98
|
+
code: entry.code.slice(0, 100),
|
|
99
|
+
message: entry.message.slice(0, 300),
|
|
100
|
+
...(typeof entry.blockIndex === "number" &&
|
|
101
|
+
Number.isSafeInteger(entry.blockIndex) &&
|
|
102
|
+
entry.blockIndex >= 0
|
|
103
|
+
? {
|
|
104
|
+
blockIndex: entry.blockIndex,
|
|
105
|
+
blockId: source.blockIds[entry.blockIndex],
|
|
106
|
+
}
|
|
107
|
+
: {}),
|
|
108
|
+
}));
|
|
109
|
+
const detail = diagnostics
|
|
110
|
+
.map((entry) => `${entry.code}${entry.blockIndex === undefined ? "" : ` (${source.blockIds[entry.blockIndex] ?? "unknown block"})`}: ${entry.message}`)
|
|
94
111
|
.join("\n");
|
|
95
112
|
if (detail)
|
|
96
113
|
message = detail;
|
|
@@ -98,7 +115,7 @@ export async function compileNativePdf(document, options) {
|
|
|
98
115
|
catch {
|
|
99
116
|
/* Preserve the bounded process failure when no structured result exists. */
|
|
100
117
|
}
|
|
101
|
-
throw new Error(message, { cause });
|
|
118
|
+
throw Object.assign(new Error(message, { cause }), { diagnostics });
|
|
102
119
|
}
|
|
103
120
|
const report = JSON.parse(stdout);
|
|
104
121
|
if (report.ok !== true ||
|
package/dist/native-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-node.js","sourceRoot":"","sources":["../src/native-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EACL,SAAS,EACT,aAAa,GAId,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAqB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"native-node.js","sourceRoot":"","sources":["../src/native-node.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@publisle/research",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Citation resolution and BibTeX, CSL, LaTeX, JATS, and PDF export. Tooling only; readers must not import it.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"citeproc": "2.4.63",
|
|
36
36
|
"fflate": "0.8.3",
|
|
37
|
-
"@publisle/contracts": "^0.1.
|
|
38
|
-
"@publisle/
|
|
39
|
-
"@publisle/
|
|
40
|
-
"@publisle/template-sdk": "^0.1.
|
|
41
|
-
"@publisle/
|
|
37
|
+
"@publisle/contracts": "^0.1.3",
|
|
38
|
+
"@publisle/schema": "^0.1.2",
|
|
39
|
+
"@publisle/template-article": "^0.1.3",
|
|
40
|
+
"@publisle/template-sdk": "^0.1.5",
|
|
41
|
+
"@publisle/profiles": "^0.1.3"
|
|
42
42
|
},
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
@@ -57,16 +57,16 @@
|
|
|
57
57
|
},
|
|
58
58
|
"repository": {
|
|
59
59
|
"type": "git",
|
|
60
|
-
"url": "git+https://github.com/
|
|
60
|
+
"url": "git+https://github.com/publisle/publisle.git",
|
|
61
61
|
"directory": "packages/research"
|
|
62
62
|
},
|
|
63
|
-
"homepage": "https://github.com/
|
|
63
|
+
"homepage": "https://github.com/publisle/publisle#readme",
|
|
64
64
|
"optionalDependencies": {
|
|
65
|
-
"@publisle/pdf-native-linux-x64": "0.3.
|
|
66
|
-
"@publisle/pdf-native-linux-arm64": "0.3.
|
|
67
|
-
"@publisle/pdf-native-darwin-x64": "0.3.
|
|
68
|
-
"@publisle/pdf-native-
|
|
69
|
-
"@publisle/pdf-native-
|
|
65
|
+
"@publisle/pdf-native-linux-x64": "0.3.1",
|
|
66
|
+
"@publisle/pdf-native-linux-arm64": "0.3.1",
|
|
67
|
+
"@publisle/pdf-native-darwin-x64": "0.3.1",
|
|
68
|
+
"@publisle/pdf-native-darwin-arm64": "0.3.1",
|
|
69
|
+
"@publisle/pdf-native-win32-x64": "0.3.1"
|
|
70
70
|
},
|
|
71
71
|
"types": "./dist/index.d.ts"
|
|
72
72
|
}
|
package/src/native-install.ts
CHANGED
|
@@ -6,7 +6,17 @@ import { readFile, realpath, stat } from "node:fs/promises";
|
|
|
6
6
|
import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
7
7
|
import { parseJson, isPlainObject } from "@publisle/schema";
|
|
8
8
|
const require = createRequire(import.meta.url);
|
|
9
|
-
export const NATIVE_ARTIFACT_VERSION =
|
|
9
|
+
export const NATIVE_ARTIFACT_VERSION =
|
|
10
|
+
researchPackage.optionalDependencies["@publisle/pdf-native-linux-x64"];
|
|
11
|
+
if (
|
|
12
|
+
!/^\d+\.\d+\.\d+(?:-[a-zA-Z0-9.-]+)?$/u.test(NATIVE_ARTIFACT_VERSION) ||
|
|
13
|
+
!Object.values(researchPackage.optionalDependencies).every(
|
|
14
|
+
(version) => version === NATIVE_ARTIFACT_VERSION,
|
|
15
|
+
)
|
|
16
|
+
)
|
|
17
|
+
throw new Error(
|
|
18
|
+
"Native PDF dependencies must share one exact external version.",
|
|
19
|
+
);
|
|
10
20
|
export const NATIVE_PLATFORM_PACKAGES: Readonly<Record<string, string>> = {
|
|
11
21
|
"linux-x64": "@publisle/pdf-native-linux-x64",
|
|
12
22
|
"linux-arm64": "@publisle/pdf-native-linux-arm64",
|
|
@@ -40,7 +50,7 @@ export async function installedNativeCompiler(): Promise<InstalledNativeCompiler
|
|
|
40
50
|
manifest["version"] !== NATIVE_ARTIFACT_VERSION
|
|
41
51
|
)
|
|
42
52
|
throw new Error(
|
|
43
|
-
"Installed native PDF package version does not match
|
|
53
|
+
"Installed native PDF package version does not match the pinned dependency.",
|
|
44
54
|
);
|
|
45
55
|
const artifact = parseJson(await readFile(resolve(root, "artifact.json")), {
|
|
46
56
|
maxBytes: 65536,
|
package/src/native-node.ts
CHANGED
|
@@ -39,6 +39,7 @@ export interface NativeCompileOptions extends Omit<
|
|
|
39
39
|
}
|
|
40
40
|
export interface NativeCompilerDiagnostic extends ResearchLoss {
|
|
41
41
|
readonly blockId?: string;
|
|
42
|
+
readonly blockIndex?: number;
|
|
42
43
|
}
|
|
43
44
|
export interface NativeCompileResult {
|
|
44
45
|
readonly pdf: Uint8Array;
|
|
@@ -146,6 +147,7 @@ export async function compileNativePdf(
|
|
|
146
147
|
? String(cause.stdout)
|
|
147
148
|
: "";
|
|
148
149
|
let message = "Native PDF compilation failed.";
|
|
150
|
+
let diagnostics: NativeCompilerDiagnostic[] = [];
|
|
149
151
|
try {
|
|
150
152
|
const error = JSON.parse(stdout) as {
|
|
151
153
|
diagnostics?: {
|
|
@@ -154,8 +156,27 @@ export async function compileNativePdf(
|
|
|
154
156
|
blockIndex?: number;
|
|
155
157
|
}[];
|
|
156
158
|
};
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
diagnostics = (error.diagnostics ?? [])
|
|
160
|
+
.slice(0, 30)
|
|
161
|
+
.filter(
|
|
162
|
+
(entry) =>
|
|
163
|
+
typeof entry.code === "string" &&
|
|
164
|
+
typeof entry.message === "string",
|
|
165
|
+
)
|
|
166
|
+
.map((entry) => ({
|
|
167
|
+
code: entry.code.slice(0, 100),
|
|
168
|
+
message: entry.message.slice(0, 300),
|
|
169
|
+
...(typeof entry.blockIndex === "number" &&
|
|
170
|
+
Number.isSafeInteger(entry.blockIndex) &&
|
|
171
|
+
entry.blockIndex >= 0
|
|
172
|
+
? {
|
|
173
|
+
blockIndex: entry.blockIndex,
|
|
174
|
+
blockId: source.blockIds[entry.blockIndex],
|
|
175
|
+
}
|
|
176
|
+
: {}),
|
|
177
|
+
}));
|
|
178
|
+
const detail = diagnostics
|
|
179
|
+
.map(
|
|
159
180
|
(entry) =>
|
|
160
181
|
`${entry.code}${entry.blockIndex === undefined ? "" : ` (${source.blockIds[entry.blockIndex] ?? "unknown block"})`}: ${entry.message}`,
|
|
161
182
|
)
|
|
@@ -164,7 +185,7 @@ export async function compileNativePdf(
|
|
|
164
185
|
} catch {
|
|
165
186
|
/* Preserve the bounded process failure when no structured result exists. */
|
|
166
187
|
}
|
|
167
|
-
throw new Error(message, { cause });
|
|
188
|
+
throw Object.assign(new Error(message, { cause }), { diagnostics });
|
|
168
189
|
}
|
|
169
190
|
const report = JSON.parse(stdout) as {
|
|
170
191
|
ok?: boolean;
|