diff --git a/chrome/content/zotero/xpcom/bluebirdShim.mjs b/chrome/content/zotero/xpcom/bluebirdShim.mjs new file mode 100644 index 0000000000..6ad95ade46 --- /dev/null +++ b/chrome/content/zotero/xpcom/bluebirdShim.mjs @@ -0,0 +1,5 @@ +export default class BluebirdShimPromise extends Promise { + static delay(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } +} diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js index e4ba8eba70..0b85255e66 100644 --- a/chrome/content/zotero/xpcom/zotero.js +++ b/chrome/content/zotero/xpcom/zotero.js @@ -23,18 +23,18 @@ ***** END LICENSE BLOCK ***** */ +const BluebirdShimPromise = ChromeUtils.importESModule('chrome://zotero/content/xpcom/bluebirdShim.mjs'); +const ZOTERO_CONFIG = ChromeUtils.importESModule('resource://zotero/config.mjs'); + // Commonly used imports accessible anywhere Components.utils.importGlobalProperties(["XMLHttpRequest"]); -Components.utils.import("resource://zotero/config.js"); var { OS } = ChromeUtils.importESModule("chrome://zotero/content/osfile.mjs"); -const { XPCOMUtils } = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); -XPCOMUtils.defineLazyModuleGetters(globalThis, { - AsyncShutdown: "resource://gre/modules/AsyncShutdown.jsm", - AppConstants: "resource://gre/modules/AppConstants.jsm", +ChromeUtils.defineESModuleGetters(globalThis, { + AsyncShutdown: "resource://gre/modules/AsyncShutdown.sys.mjs", + AppConstants: "resource://gre/modules/AppConstants.sys.mjs", }); const { CommandLineOptions } = ChromeUtils.importESModule("chrome://zotero/content/modules/commandLineOptions.mjs"); -Services.scriptloader.loadSubScript("resource://zotero/polyfill.js"); /* * Core functions @@ -72,7 +72,7 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js"); this.isMac; this.isWin; this.initialURL; // used by Schema to show the changelog on upgrades - this.Promise = require('resource://zotero/bluebird.js'); + this.Promise = BluebirdShimPromise; this.getMainWindow = function () { return Services.wm.getMostRecentWindow("navigator:browser"); diff --git a/chrome/content/zotero/zotero.mjs b/chrome/content/zotero/zotero.mjs index fa82f8598b..5015c03c92 100644 --- a/chrome/content/zotero/zotero.mjs +++ b/chrome/content/zotero/zotero.mjs @@ -159,7 +159,6 @@ const xpcomFilesLocal = [ 'translation/translators', ]; -Components.utils.import("resource://gre/modules/ComponentUtils.jsm"); const { CommandLineOptions } = ChromeUtils.importESModule("chrome://zotero/content/modules/commandLineOptions.mjs"); var instanceID = (new Date()).getTime(); @@ -169,8 +168,6 @@ var initCallbacks = []; var ZoteroContext = function() {} ZoteroContext.prototype = { - require, - /** * Shuts down Zotero, calls a callback (that may return a promise), * then reinitializes Zotero. Returns a promise that is resolved @@ -193,16 +190,13 @@ ZoteroContext.prototype = { } }; -const { XPCOMUtils } = ChromeUtils.import( - "resource://gre/modules/XPCOMUtils.jsm" -); -XPCOMUtils.defineLazyModuleGetters(ZoteroContext.prototype, { - setTimeout: "resource://gre/modules/Timer.jsm", - clearTimeout: "resource://gre/modules/Timer.jsm", - setInterval: "resource://gre/modules/Timer.jsm", - clearInterval: "resource://gre/modules/Timer.jsm", - requestIdleCallback: "resource://gre/modules/Timer.jsm", - cancelIdleCallback: "resource://gre/modules/Timer.jsm", +ChromeUtils.defineESModuleGetters(ZoteroContext.prototype, { + setTimeout: "resource://gre/modules/Timer.sys.mjs", + clearTimeout: "resource://gre/modules/Timer.sys.mjs", + setInterval: "resource://gre/modules/Timer.sys.mjs", + clearInterval: "resource://gre/modules/Timer.sys.mjs", + requestIdleCallback: "resource://gre/modules/Timer.sys.mjs", + cancelIdleCallback: "resource://gre/modules/Timer.sys.mjs", }); /** diff --git a/package-lock.json b/package-lock.json index 0e81f5db77..7385c99467 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "dependencies": { "@citeproc-rs/wasm": "^0.2.0", "ace-builds": "^1.4.12", - "bluebird": "^3.7.2", "classnames": "^2.2.6", "monaco-editor": "^0.47.0", "monacopilot": "^1.1.15", @@ -1982,11 +1981,6 @@ "file-uri-to-path": "1.0.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "node_modules/bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", @@ -10315,11 +10309,6 @@ "file-uri-to-path": "1.0.0" } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", diff --git a/package.json b/package.json index 3cd6ef5c15..b3e3c85d18 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "dependencies": { "@citeproc-rs/wasm": "^0.2.0", "ace-builds": "^1.4.12", - "bluebird": "^3.7.2", "classnames": "^2.2.6", "monaco-editor": "^0.47.0", "monacopilot": "^1.1.15", diff --git a/resource/bluebird b/resource/bluebird deleted file mode 120000 index 1f986172ff..0000000000 --- a/resource/bluebird +++ /dev/null @@ -1 +0,0 @@ -../node_modules/bluebird/js/release \ No newline at end of file diff --git a/resource/bluebird.js b/resource/bluebird.js deleted file mode 100644 index 4c22816cbd..0000000000 --- a/resource/bluebird.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -var EXPORTED_SYMBOLS = ['Promise']; - -var Promise = require('bluebird/promise')(); - -Promise.config({ - warnings: true, - longStackTraces: true, - cancellation: true -}); - -// Use our own stub to avoid the Bluebird deprecation warnings -Promise.defer = function() { - var deferred = {}; - deferred.promise = new Promise(function(resolve, reject) { - deferred.resolve = resolve; - deferred.reject = reject; - }); - return deferred; -} -// TEMP: Only turn on if debug logging enabled? -Promise.onPossiblyUnhandledRejection((e, promise) => { - if (e.handledRejection) { - return; - } - - dump('Possibly unhandled rejection:\n\n' - + (e.message - ? e.message + "\n\n" + e.stack.split(/\n/) - // Filter out internal Bluebird calls - .filter(line => !line.includes('bluebird')) - .join('\n') - : e) - + '\n'); - throw e; -}); - -module.exports = Promise; \ No newline at end of file diff --git a/resource/config.js b/resource/config.mjs similarity index 91% rename from resource/config.js rename to resource/config.mjs index 756887a2d3..78378c864a 100644 --- a/resource/config.js +++ b/resource/config.mjs @@ -34,9 +34,4 @@ var ZOTERO_CONFIG = { NEW_FEATURES_URL: 'https://www.zotero.org/blog/zotero-7/' }; -if (typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = ZOTERO_CONFIG; -} -else { - var EXPORTED_SYMBOLS = ["ZOTERO_CONFIG"]; -} +export default ZOTERO_CONFIG; diff --git a/resource/polyfill.js b/resource/polyfill.js deleted file mode 100644 index 1fa7339f5b..0000000000 --- a/resource/polyfill.js +++ /dev/null @@ -1,10 +0,0 @@ -if (!Object.values) { - const reduce = Function.bind.call(Function.call, Array.prototype.reduce); - const isEnumerable = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable); - const concat = Function.bind.call(Function.call, Array.prototype.concat); - const keys = Reflect.ownKeys; - - Object.values = function values(O) { - return reduce(keys(O), (v, k) => concat(v, typeof k === 'string' && isEnumerable(O, k) ? [O[k]] : []), []); - }; -} diff --git a/test/content/runtests.js b/test/content/runtests.js index 6f54969f43..76f125ac7f 100644 --- a/test/content/runtests.js +++ b/test/content/runtests.js @@ -1,4 +1,3 @@ -Services.scriptloader.loadSubScript("resource://zotero/polyfill.js"); var EventUtils = Components.utils.import("resource://zotero-unit/EventUtils.jsm"); var { FileUtils } = ChromeUtils.importESModule("resource://gre/modules/FileUtils.sys.mjs");