mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
Bug 1472821 - Support array of String for lazyRequireGetter r=nchevobbe,rcaliman
Differential Revision: https://phabricator.services.mozilla.com/D85268
This commit is contained in:
parent
419e9ccc2c
commit
3af62a1e27
@ -16,9 +16,17 @@ global.loader = {
|
||||
const module = fn();
|
||||
global[name] = module;
|
||||
},
|
||||
lazyRequireGetter: (context, name, module, destructure) => {
|
||||
const value = destructure ? require(module)[name] : require(module || name);
|
||||
global[name] = value;
|
||||
lazyRequireGetter: (context, names, module, destructure) => {
|
||||
if (!Array.isArray(names)) {
|
||||
names = [names];
|
||||
}
|
||||
|
||||
for (const name of names) {
|
||||
const value = destructure
|
||||
? require(module)[name]
|
||||
: require(module || name);
|
||||
global[name] = value;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -16,28 +16,34 @@ global.loader = {
|
||||
const module = fn();
|
||||
global[name] = module;
|
||||
},
|
||||
lazyRequireGetter: (obj, property, module, destructure) => {
|
||||
Object.defineProperty(obj, property, {
|
||||
get: () => {
|
||||
// Redefine this accessor property as a data property.
|
||||
// Delete it first, to rule out "too much recursion" in case obj is
|
||||
// a proxy whose defineProperty handler might unwittingly trigger this
|
||||
// getter again.
|
||||
delete obj[property];
|
||||
const value = destructure
|
||||
? require(module)[property]
|
||||
: require(module || property);
|
||||
Object.defineProperty(obj, property, {
|
||||
value,
|
||||
writable: true,
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
});
|
||||
return value;
|
||||
},
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
});
|
||||
lazyRequireGetter: (obj, properties, module, destructure) => {
|
||||
if (!Array.isArray(properties)) {
|
||||
properties = [properties];
|
||||
}
|
||||
|
||||
for (const property of properties) {
|
||||
Object.defineProperty(obj, property, {
|
||||
get: () => {
|
||||
// Redefine this accessor property as a data property.
|
||||
// Delete it first, to rule out "too much recursion" in case obj is
|
||||
// a proxy whose defineProperty handler might unwittingly trigger this
|
||||
// getter again.
|
||||
delete obj[property];
|
||||
const value = destructure
|
||||
? require(module)[property]
|
||||
: require(module || property);
|
||||
Object.defineProperty(obj, property, {
|
||||
value,
|
||||
writable: true,
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
});
|
||||
return value;
|
||||
},
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
});
|
||||
}
|
||||
},
|
||||
lazyImporter: () => {},
|
||||
};
|
||||
|
@ -60,7 +60,7 @@ global.loader = {
|
||||
global[name] = fn();
|
||||
} catch (_) {}
|
||||
},
|
||||
lazyRequireGetter: (context, name, _path, destruct) => {
|
||||
lazyRequireGetter: (context, names, _path, destruct) => {
|
||||
if (
|
||||
!_path ||
|
||||
_path.startsWith("resource://") ||
|
||||
@ -81,9 +81,15 @@ global.loader = {
|
||||
"devtools/client/shared/focus",
|
||||
];
|
||||
if (!excluded.includes(_path)) {
|
||||
// $FlowIgnore
|
||||
const module = require(_path);
|
||||
global[name] = destruct ? module[name] : module;
|
||||
if (!Array.isArray(names)) {
|
||||
names = [names];
|
||||
}
|
||||
|
||||
for (const name of names) {
|
||||
// $FlowIgnore
|
||||
const module = require(_path);
|
||||
global[name] = destruct ? module[name] : module;
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
@ -11,9 +11,17 @@ global.loader = {
|
||||
const module = fn();
|
||||
global[name] = module;
|
||||
},
|
||||
lazyRequireGetter: (context, name, module, destructure) => {
|
||||
const value = destructure ? require(module)[name] : require(module || name);
|
||||
global[name] = value;
|
||||
lazyRequireGetter: (context, names, module, destructure) => {
|
||||
if (!Array.isArray(names)) {
|
||||
names = [names];
|
||||
}
|
||||
|
||||
for (const name of names) {
|
||||
const value = destructure
|
||||
? require(module)[name]
|
||||
: require(module || name);
|
||||
global[name] = value;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -16,8 +16,16 @@ global.loader = {
|
||||
const module = fn();
|
||||
global[name] = module;
|
||||
},
|
||||
lazyRequireGetter: (context, name, module, destructure) => {
|
||||
const value = destructure ? require(module)[name] : require(module || name);
|
||||
global[name] = value;
|
||||
lazyRequireGetter: (context, names, module, destructure) => {
|
||||
if (!Array.isArray(names)) {
|
||||
names = [names];
|
||||
}
|
||||
|
||||
for (const name of names) {
|
||||
const value = destructure
|
||||
? require(module)[name]
|
||||
: require(module || name);
|
||||
global[name] = value;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
@ -213,21 +213,38 @@ BrowserLoaderBuilder.prototype = {
|
||||
* module. This enables delaying importing modules until the module is
|
||||
* actually used.
|
||||
*
|
||||
* @param Object obj
|
||||
* Several getters can be defined at once by providing an array of
|
||||
* properties and enabling destructuring.
|
||||
*
|
||||
* @param { Object } obj
|
||||
* The object to define the property on.
|
||||
* @param String property
|
||||
* The property name.
|
||||
* @param String module
|
||||
* @param { String | Array<String> } properties
|
||||
* String: Name of the property for the getter.
|
||||
* Array<String>: When destructure is true, properties can be an array of
|
||||
* strings to create several getters at once.
|
||||
* @param { String } module
|
||||
* The module path.
|
||||
* @param Boolean destructure
|
||||
* @param { Boolean } destructure
|
||||
* Pass true if the property name is a member of the module's exports.
|
||||
*/
|
||||
lazyRequireGetter: function(obj, property, module, destructure) {
|
||||
loader.lazyGetter(obj, property, () => {
|
||||
return destructure
|
||||
? this.require(module)[property]
|
||||
: this.require(module || property);
|
||||
});
|
||||
lazyRequireGetter: function(obj, properties, module, destructure) {
|
||||
if (Array.isArray(properties) && !destructure) {
|
||||
throw new Error(
|
||||
"Pass destructure=true to call lazyRequireGetter with an array of properties"
|
||||
);
|
||||
}
|
||||
|
||||
if (!Array.isArray(properties)) {
|
||||
properties = [properties];
|
||||
}
|
||||
|
||||
for (const property of properties) {
|
||||
loader.lazyGetter(obj, property, () => {
|
||||
return destructure
|
||||
? this.require(module)[property]
|
||||
: this.require(module || property);
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -46,12 +46,7 @@ global.loader = {
|
||||
global[name] = fn();
|
||||
} catch (_) {}
|
||||
},
|
||||
lazyRequireGetter: (context, name, path, destruct) => {
|
||||
if (path === "devtools/shared/async-storage") {
|
||||
global[
|
||||
name
|
||||
] = require("devtools/client/webconsole/test/node/fixtures/async-storage");
|
||||
}
|
||||
lazyRequireGetter: (context, names, path, destruct) => {
|
||||
const excluded = [
|
||||
"Debugger",
|
||||
"devtools/shared/event-emitter",
|
||||
@ -64,8 +59,20 @@ global.loader = {
|
||||
"devtools/client/shared/focus",
|
||||
];
|
||||
if (!excluded.includes(path)) {
|
||||
const module = require(path);
|
||||
global[name] = destruct ? module[name] : module;
|
||||
if (!Array.isArray(names)) {
|
||||
names = [names];
|
||||
}
|
||||
|
||||
for (const name of names) {
|
||||
if (path === "devtools/shared/async-storage") {
|
||||
global[
|
||||
name
|
||||
] = require("devtools/client/webconsole/test/node/fixtures/async-storage");
|
||||
} else {
|
||||
const module = require(path);
|
||||
global[name] = destruct ? module[name] : module;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
@ -165,21 +165,38 @@ function defineLazyModuleGetter(object, name, resource) {
|
||||
* module. This enables delaying importing modules until the module is
|
||||
* actually used.
|
||||
*
|
||||
* @param Object obj
|
||||
* Several getters can be defined at once by providing an array of
|
||||
* properties and enabling destructuring.
|
||||
*
|
||||
* @param { Object } obj
|
||||
* The object to define the property on.
|
||||
* @param String property
|
||||
* The property name.
|
||||
* @param String module
|
||||
* @param { String | Array<String> } properties
|
||||
* String: Name of the property for the getter.
|
||||
* Array<String>: When destructure is true, properties can be an array of
|
||||
* strings to create several getters at once.
|
||||
* @param { String } module
|
||||
* The module path.
|
||||
* @param Boolean destructure
|
||||
* @param { Boolean } destructure
|
||||
* Pass true if the property name is a member of the module's exports.
|
||||
*/
|
||||
function lazyRequireGetter(obj, property, module, destructure) {
|
||||
defineLazyGetter(obj, property, () => {
|
||||
return destructure
|
||||
? require(module)[property]
|
||||
: require(module || property);
|
||||
});
|
||||
function lazyRequireGetter(obj, properties, module, destructure) {
|
||||
if (Array.isArray(properties) && !destructure) {
|
||||
throw new Error(
|
||||
"Pass destructure=true to call lazyRequireGetter with an array of properties"
|
||||
);
|
||||
}
|
||||
|
||||
if (!Array.isArray(properties)) {
|
||||
properties = [properties];
|
||||
}
|
||||
|
||||
for (const property of properties) {
|
||||
defineLazyGetter(obj, property, () => {
|
||||
return destructure
|
||||
? require(module)[property]
|
||||
: require(module || property);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// List of pseudo modules exposed to all devtools modules.
|
||||
|
@ -354,13 +354,25 @@ var loader = {
|
||||
lazyServiceGetter: function() {
|
||||
throw new Error("Can't import XPCOM service from worker thread!");
|
||||
},
|
||||
lazyRequireGetter: function(obj, property, module, destructure) {
|
||||
Object.defineProperty(obj, property, {
|
||||
get: () =>
|
||||
destructure
|
||||
? worker.require(module)[property]
|
||||
: worker.require(module || property),
|
||||
});
|
||||
lazyRequireGetter: function(obj, properties, module, destructure) {
|
||||
if (Array.isArray(properties) && !destructure) {
|
||||
throw new Error(
|
||||
"Pass destructure=true to call lazyRequireGetter with an array of properties"
|
||||
);
|
||||
}
|
||||
|
||||
if (!Array.isArray(properties)) {
|
||||
properties = [properties];
|
||||
}
|
||||
|
||||
for (const property of properties) {
|
||||
Object.defineProperty(obj, property, {
|
||||
get: () =>
|
||||
destructure
|
||||
? worker.require(module)[property]
|
||||
: worker.require(module || property),
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user