File tree Expand file tree Collapse file tree 4 files changed +38
-50
lines changed Expand file tree Collapse file tree 4 files changed +38
-50
lines changed Original file line number Diff line number Diff line change @@ -238,25 +238,16 @@ Relies on the `zotero-types` package to provide type declarations for `Zotero.Pr
238238You can also use the following helper to get or set preferences while omitting the prefix, simplifying your code.
239239
240240``` ts
241- const PREFS_PREFIX = " extensions.myPlugin" ;
242-
243- /**
244- * Get preference value.
245- * Wrapper of `Zotero.Prefs.get`.
246- * @param key
247- */
248- export function getPref<K extends keyof _PluginPrefsMap >(key : K ) {
249- return Zotero .Prefs .get (` ${PREFS_PREFIX }.${key } ` as PluginPrefKey <K >, true );
241+ const PREF_PREFIX = " extensions.myPlugin" ;
242+
243+ type PluginPrefsMap = _ZoteroTypes .Prefs [" PluginPrefsMap" ];
244+
245+ export function getPref<K extends keyof PluginPrefsMap >(key : K ) {
246+ return Zotero .Prefs .get (` ${PREF_PREFIX }.${key } ` , true ) as PluginPrefsMap [K ];
250247}
251248
252- /**
253- * Set preference value.
254- * Wrapper of `Zotero.Prefs.set`.
255- * @param key
256- * @param value
257- */
258- export function setPref<K extends keyof _PluginPrefsMap >(key : K , value : PluginPrefsMap [PluginPrefKey <K >]) {
259- return Zotero .Prefs .set (` ${PREFS_PREFIX }.${key } ` as PluginPrefKey <K >, value , true );
249+ export function setPref<K extends keyof PluginPrefsMap >(key : K , value : PluginPrefsMap [K ]) {
250+ return Zotero .Prefs .set (` ${PREF_PREFIX }.${key } ` , value , true );
260251}
261252```
262253
Original file line number Diff line number Diff line change @@ -259,7 +259,7 @@ export default class Build extends Base {
259259
260260 // Generate prefs.d.ts
261261 if ( dts ) {
262- const dtsContent = renderPluginPrefsDts ( prefsWithoutPrefix , prefix ) ;
262+ const dtsContent = renderPluginPrefsDts ( prefsWithoutPrefix ) ;
263263 await outputFile ( dts , dtsContent , "utf-8" ) ;
264264 }
265265
Original file line number Diff line number Diff line change @@ -203,27 +203,22 @@ describe("renderPluginPrefsDts", () => {
203203 "test.string" : "hello" ,
204204 "test.number" : 42 ,
205205 } ;
206- const prefix = "prefix" ;
207206
208207 const result = `// Generated by zotero-plugin-scaffold
209208/* prettier-ignore */
210209/* eslint-disable */
211210// @ts-nocheck
212211
213212// prettier-ignore
214- type _PluginPrefsMap = {
215- "test.string": string;
216- "test.number": number;
217- };
218-
219- // prettier-ignore
220- type PluginPrefKey<K extends keyof _PluginPrefsMap> = \`prefix.\${K}\`;
221-
222- // prettier-ignore
223- type PluginPrefsMap = {
224- [K in keyof _PluginPrefsMap as PluginPrefKey<K>]: _PluginPrefsMap[K]
225- };
213+ declare namespace _ZoteroTypes {
214+ interface Prefs {
215+ PluginPrefsMap: {
216+ "test.string": string;
217+ "test.number": number;
218+ };
219+ }
220+ }
226221` ;
227- expect ( renderPluginPrefsDts ( prefs , prefix ) ) . toBe ( result ) ;
222+ expect ( renderPluginPrefsDts ( prefs ) ) . toBe ( result ) ;
228223 } ) ;
229224} ) ;
Original file line number Diff line number Diff line change @@ -107,35 +107,37 @@ export class PrefsManager {
107107 }
108108}
109109
110- export function renderPluginPrefsDts ( prefs : Prefs , prefix : string ) {
111- const dtsContent = `// Generated by zotero-plugin-scaffold
110+ export function renderPluginPrefsDts ( prefs : Prefs ) {
111+ return `// Generated by zotero-plugin-scaffold
112112/* prettier-ignore */
113113/* eslint-disable */
114114// @ts-nocheck
115115
116116// prettier-ignore
117- type _PluginPrefsMap = {
118- ${ Object . entries ( prefs ) . map ( ( [ key , value ] ) => {
119- return `"${ key } ": ${ typeof value } ;` ;
120- } ) . join ( "\n " ) }
121- };
122-
123- // prettier-ignore
124- type PluginPrefKey<K extends keyof _PluginPrefsMap> = \`${ prefix } .\${K}\`;
125-
126- // prettier-ignore
127- type PluginPrefsMap = {
128- [K in keyof _PluginPrefsMap as PluginPrefKey<K>]: _PluginPrefsMap[K]
129- };
117+ declare namespace _ZoteroTypes {
118+ interface Prefs {
119+ PluginPrefsMap: {
120+ ${ Object . entries ( prefs ) . map ( ( [ key , value ] ) => {
121+ return `"${ key } ": ${ typeof value } ;` ;
122+ } ) . join ( "\n " ) }
123+ };
124+ }
125+ }
130126` ;
131- return dtsContent ;
132127}
133128
134- const _backup = `
129+ /** Backup */
130+ // // prettier-ignore
131+ // type PluginPrefKey<K extends keyof _PluginPrefsMap> = \`${prefix}.\${K}\`;
132+ //
133+ // // prettier-ignore
134+ // type PluginPrefsMap = {
135+ // [K in keyof _PluginPrefsMap as PluginPrefKey<K>]: _PluginPrefsMap[K]
136+ // };
137+ //
135138// declare namespace _ZoteroTypes {
136139// interface Prefs {
137140// get: <K extends keyof PluginPrefsMap>(key: K, global?: boolean) => PluginPrefsMap[K];
138141// set: <K extends keyof PluginPrefsMap>(key: K, value: PluginPrefsMap[K], global?: boolean) => any;
139142// }
140143// }
141- ` ;
You can’t perform that action at this time.
0 commit comments