Skip to content

Commit b3ae37e

Browse files
committed
fix: prefs.js parse, dont generate Zotero.Prefs types
1 parent 740dcaa commit b3ae37e

File tree

2 files changed

+40
-26
lines changed

2 files changed

+40
-26
lines changed

packages/scaffold/src/core/builder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ export default class Build extends Base {
279279
const matchs = [...content.matchAll(HTML_PREFERENCE_PATTERN)];
280280
for (const match of matchs) {
281281
const [matched, key] = match;
282-
if (!prefsWithoutPrefix[key] && !prefsWithoutPrefix[key]) {
282+
if (!(key in prefsWithoutPrefix) && !(key in prefsWithoutPrefix)) {
283283
this.logger.warn(`preference key '${key}' in ${path.replace(`${dist}/`, "")} not init in prefs.js`);
284284
continue;
285285
}

packages/scaffold/src/utils/prefs-manager.ts

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { readFile } from "node:fs/promises";
2-
import { isNotNil } from "es-toolkit";
32
import { outputFile } from "fs-extra/esm";
43
import { logger } from "./log.js";
54

@@ -20,27 +19,14 @@ export class PrefsManager {
2019
for (const match of matches) {
2120
const key = match[2].trim();
2221
const value = match[3].trim();
23-
this.prefs[key] = value;
22+
23+
this.setPref(key, value);
2424
};
2525
}
2626

2727
private render() {
2828
return Object.entries(this.prefs).map(([key, value]) => {
29-
if (!isNotNil(value))
30-
return "";
31-
32-
let cleanValue = "";
33-
if (typeof value === "boolean") {
34-
cleanValue = `${value}`;
35-
}
36-
else if (typeof value === "string") {
37-
cleanValue = value; // `${value.replace("\n", "\\n")}`;
38-
}
39-
else if (typeof value === "number") {
40-
cleanValue = value.toString();
41-
}
42-
43-
return `${this.namespace}("${key}", ${cleanValue});`;
29+
return `${this.namespace}("${key}", ${value});`;
4430
}).filter(c => !!c).join("\n");
4531
}
4632

@@ -57,7 +43,33 @@ export class PrefsManager {
5743
}
5844

5945
setPref(key: string, value: any) {
60-
this.prefs[key] = value;
46+
let cleanValue: any;
47+
if (value === null || value === undefined) {
48+
if (key in this.prefs)
49+
delete this.prefs[key];
50+
else
51+
return;
52+
}
53+
else if (value === "true") {
54+
cleanValue = true;
55+
}
56+
else if (value === "false") {
57+
cleanValue = false;
58+
}
59+
else if (typeof value === "boolean") {
60+
cleanValue = value;
61+
}
62+
else if (typeof value === "string") {
63+
cleanValue = value; // `${value.replace("\n", "\\n")}`;
64+
}
65+
else if (typeof value === "number") {
66+
cleanValue = value;
67+
}
68+
else {
69+
cleanValue = value;
70+
}
71+
72+
this.prefs[key] = cleanValue;
6173
};
6274

6375
setPrefs(prefs: Prefs) {
@@ -115,13 +127,15 @@ type PluginPrefKey<K extends keyof _PluginPrefsMap> = \`${prefix}.\${K}\`;
115127
type PluginPrefsMap = {
116128
[K in keyof _PluginPrefsMap as PluginPrefKey<K>]: _PluginPrefsMap[K]
117129
};
118-
119-
declare namespace _ZoteroTypes {
120-
interface Prefs {
121-
get: <K extends keyof PluginPrefsMap>(key: K, global?: boolean) => PluginPrefsMap[K];
122-
set: <K extends keyof PluginPrefsMap>(key: K, value: PluginPrefsMap[K], global?: boolean) => any;
123-
}
124-
}
125130
`;
126131
return dtsContent;
127132
}
133+
134+
const _backup = `
135+
// declare namespace _ZoteroTypes {
136+
// interface Prefs {
137+
// get: <K extends keyof PluginPrefsMap>(key: K, global?: boolean) => PluginPrefsMap[K];
138+
// set: <K extends keyof PluginPrefsMap>(key: K, value: PluginPrefsMap[K], global?: boolean) => any;
139+
// }
140+
// }
141+
`;

0 commit comments

Comments
 (0)