update: ztoolkit init

This commit is contained in:
windingwind 2023-07-29 11:06:20 +08:00
parent a5517736fa
commit b48953f405
3 changed files with 21 additions and 17 deletions

View File

@ -83,7 +83,7 @@ function dateFormat(fmt, date) {
if (ret) { if (ret) {
fmt = fmt.replace( fmt = fmt.replace(
ret[1], ret[1],
ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0") ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"),
); );
} }
} }
@ -108,7 +108,7 @@ function renameLocaleFiles() {
if (localeSubFile.endsWith(".ftl")) { if (localeSubFile.endsWith(".ftl")) {
renameSync( renameSync(
path.join(localeSubDir, localeSubFile), path.join(localeSubDir, localeSubFile),
path.join(localeSubDir, `${config.addonRef}-${localeSubFile}`) path.join(localeSubDir, `${config.addonRef}-${localeSubFile}`),
); );
} }
} }
@ -126,13 +126,14 @@ function replaceString() {
const replaceTo = [author, description, homepage, version, buildTime]; const replaceTo = [author, description, homepage, version, buildTime];
replaceFrom.push( replaceFrom.push(
...Object.keys(config).map((k) => new RegExp(`__${k}__`, "g")) ...Object.keys(config).map((k) => new RegExp(`__${k}__`, "g")),
); );
replaceTo.push(...Object.values(config)); replaceTo.push(...Object.values(config));
const optionsAddon = { const optionsAddon = {
files: [ files: [
`${buildDir}/addon/**/*.xhtml`, `${buildDir}/addon/**/*.xhtml`,
`${buildDir}/addon/**/*.html`,
`${buildDir}/addon/**/*.json`, `${buildDir}/addon/**/*.json`,
`${buildDir}/addon/prefs.js`, `${buildDir}/addon/prefs.js`,
`${buildDir}/addon/manifest.json`, `${buildDir}/addon/manifest.json`,
@ -159,7 +160,7 @@ function replaceString() {
const prefixedLines = lines.map((line) => { const prefixedLines = lines.map((line) => {
// https://regex101.com/r/lQ9x5p/1 // https://regex101.com/r/lQ9x5p/1
const match = line.match( const match = line.match(
/^(?<message>[a-zA-Z]\S*)([ ]*=[ ]*)(?<pattern>.*)$/m /^(?<message>[a-zA-Z]\S*)([ ]*=[ ]*)(?<pattern>.*)$/m,
); );
if (match) { if (match) {
localeMessage.add(match.groups.message); localeMessage.add(match.groups.message);
@ -180,7 +181,7 @@ function replaceString() {
if (localeMessage.has(match[2])) { if (localeMessage.has(match[2])) {
input = input.replace( input = input.replace(
match[0], match[0],
`${match[1]}="${config.addonRef}-${match[2]}"` `${match[1]}="${config.addonRef}-${match[2]}"`,
); );
} else { } else {
localeMessageMiss.add(match[2]); localeMessageMiss.add(match[2]);
@ -196,14 +197,14 @@ function replaceString() {
.filter((f) => f.hasChanged) .filter((f) => f.hasChanged)
.map((f) => `${f.file} : ${f.numReplacements} / ${f.numMatches}`), .map((f) => `${f.file} : ${f.numReplacements} / ${f.numMatches}`),
replaceResultFlt.filter((f) => f.hasChanged).map((f) => `${f.file} : OK`), replaceResultFlt.filter((f) => f.hasChanged).map((f) => `${f.file} : OK`),
replaceResultXhtml.filter((f) => f.hasChanged).map((f) => `${f.file} : OK`) replaceResultXhtml.filter((f) => f.hasChanged).map((f) => `${f.file} : OK`),
); );
if (localeMessageMiss.size !== 0) { if (localeMessageMiss.size !== 0) {
console.warn( console.warn(
`[Build] [Warn] Fluent message [${new Array( `[Build] [Warn] Fluent message [${new Array(
...localeMessageMiss ...localeMessageMiss,
)}] do not exsit in addon's locale files.` )}] do not exsit in addon's locale files.`,
); );
} }
} }
@ -218,7 +219,7 @@ async function esbuild() {
target: "firefox102", target: "firefox102",
outfile: path.join( outfile: path.join(
buildDir, buildDir,
`addon/chrome/content/scripts/${config.addonRef}.js` `addon/chrome/content/scripts/${config.addonRef}.js`,
), ),
// Don't turn minify on // Don't turn minify on
// minify: true, // minify: true,
@ -229,7 +230,7 @@ async function main() {
console.log( console.log(
`[Build] BUILD_DIR=${buildDir}, VERSION=${version}, BUILD_TIME=${buildTime}, ENV=${[ `[Build] BUILD_DIR=${buildDir}, VERSION=${version}, BUILD_TIME=${buildTime}, ENV=${[
env.NODE_ENV, env.NODE_ENV,
]}` ]}`,
); );
clearFolder(buildDir); clearFolder(buildDir);
@ -238,7 +239,7 @@ async function main() {
if (isPreRelease) { if (isPreRelease) {
console.log( console.log(
"[Build] [Warn] Running in pre-release mode. update.json will not be replaced." "[Build] [Warn] Running in pre-release mode. update.json will not be replaced.",
); );
} else { } else {
copyFileSync("update-template.json", "update.json"); copyFileSync("update-template.json", "update.json");
@ -262,12 +263,12 @@ async function main() {
path.join(buildDir, `${name}.xpi`), path.join(buildDir, `${name}.xpi`),
{ {
ignoreBase: true, ignoreBase: true,
} },
); );
console.log("[Build] Addon pack OK"); console.log("[Build] Addon pack OK");
console.log( console.log(
`[Build] Finished in ${(new Date().getTime() - t.getTime()) / 1000} s.` `[Build] Finished in ${(new Date().getTime() - t.getTime()) / 1000} s.`,
); );
} }

View File

@ -29,7 +29,6 @@ async function onMainWindowLoad(win: Window): Promise<void> {
// Create ztoolkit for every window // Create ztoolkit for every window
const _ztoolkit = createZToolkit(); const _ztoolkit = createZToolkit();
addon.data.ztoolkit = _ztoolkit; addon.data.ztoolkit = _ztoolkit;
_globalThis.ztoolkit = _ztoolkit;
const popupWin = new ztoolkit.ProgressWindow(config.addonName, { const popupWin = new ztoolkit.ProgressWindow(config.addonName, {
closeOnClick: true, closeOnClick: true,

View File

@ -12,16 +12,20 @@ if (!basicTool.getGlobal("Zotero")[config.addonInstance]) {
defineGlobal("ZoteroPane"); defineGlobal("ZoteroPane");
defineGlobal("Zotero_Tabs"); defineGlobal("Zotero_Tabs");
_globalThis.addon = new Addon(); _globalThis.addon = new Addon();
_globalThis.ztoolkit = addon.data.ztoolkit; defineGlobal("ztoolkit", () => {
return _globalThis.addon.data.ztoolkit;
});
Zotero[config.addonInstance] = addon; Zotero[config.addonInstance] = addon;
// Trigger addon hook for initialization // Trigger addon hook for initialization
addon.hooks.onStartup(); addon.hooks.onStartup();
} }
function defineGlobal(name: Parameters<BasicTool["getGlobal"]>[0]) { function defineGlobal(name: Parameters<BasicTool["getGlobal"]>[0]): void;
function defineGlobal(name: string, getter: () => any): void;
function defineGlobal(name: string, getter?: () => any) {
Object.defineProperty(_globalThis, name, { Object.defineProperty(_globalThis, name, {
get() { get() {
return basicTool.getGlobal(name); return getter ? getter() : basicTool.getGlobal(name);
}, },
}); });
} }