mirror of https://github.com/webpack/webpack.git
test: added
This commit is contained in:
parent
ffaad7132f
commit
f36ae6c702
|
|
@ -0,0 +1,7 @@
|
|||
import { emitter } from "./emitter.js";
|
||||
|
||||
function App() {
|
||||
return emitter;
|
||||
}
|
||||
|
||||
export default App;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import { TinyEmitter } from 'tiny-emitter'
|
||||
|
||||
const emitter = new TinyEmitter()
|
||||
|
||||
emitter.on('hello', () => console.log('hello[service]'))
|
||||
|
||||
export {
|
||||
emitter,
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
it("should allow to import exposed modules sync", () => {
|
||||
return import("./App").then(({ default: App }) => {
|
||||
expect(App().e.hello).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
67
test/configCases/container/0-eager-shared/node_modules/tiny-emitter/index.js
generated
vendored
Normal file
67
test/configCases/container/0-eager-shared/node_modules/tiny-emitter/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
function E () {
|
||||
// Keep this empty so it's easier to inherit from
|
||||
// (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
|
||||
}
|
||||
|
||||
E.prototype = {
|
||||
on: function (name, callback, ctx) {
|
||||
var e = this.e || (this.e = {});
|
||||
|
||||
(e[name] || (e[name] = [])).push({
|
||||
fn: callback,
|
||||
ctx: ctx
|
||||
});
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
once: function (name, callback, ctx) {
|
||||
var self = this;
|
||||
function listener () {
|
||||
self.off(name, listener);
|
||||
callback.apply(ctx, arguments);
|
||||
};
|
||||
|
||||
listener._ = callback
|
||||
return this.on(name, listener, ctx);
|
||||
},
|
||||
|
||||
emit: function (name) {
|
||||
var data = [].slice.call(arguments, 1);
|
||||
var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
|
||||
var i = 0;
|
||||
var len = evtArr.length;
|
||||
|
||||
for (i; i < len; i++) {
|
||||
evtArr[i].fn.apply(evtArr[i].ctx, data);
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
off: function (name, callback) {
|
||||
var e = this.e || (this.e = {});
|
||||
var evts = e[name];
|
||||
var liveEvents = [];
|
||||
|
||||
if (evts && callback) {
|
||||
for (var i = 0, len = evts.length; i < len; i++) {
|
||||
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
|
||||
liveEvents.push(evts[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove event from queue to prevent memory leak
|
||||
// Suggested by https://github.com/lazd
|
||||
// Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
|
||||
|
||||
(liveEvents.length)
|
||||
? e[name] = liveEvents
|
||||
: delete e[name];
|
||||
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = E;
|
||||
module.exports.TinyEmitter = E;
|
||||
7
test/configCases/container/0-eager-shared/node_modules/tiny-emitter/package.json
generated
vendored
Normal file
7
test/configCases/container/0-eager-shared/node_modules/tiny-emitter/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"name": "tiny-emitter",
|
||||
"version": "2.1.0",
|
||||
"description": "A tiny (less than 1k) event emitter library",
|
||||
"main": "index.js",
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tiny-emitter": "^2.1.0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
const { dependencies } = require("./package.json");
|
||||
const { ModuleFederationPlugin } = require("../../../../").container;
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
optimization: {
|
||||
chunkIds: "named",
|
||||
moduleIds: "named"
|
||||
},
|
||||
plugins: [
|
||||
new ModuleFederationPlugin({
|
||||
name: "container",
|
||||
filename: "container.js",
|
||||
library: { type: "commonjs-module" },
|
||||
exposes: {
|
||||
"./emitter": {
|
||||
name: "emitter",
|
||||
import: "./emitter.js"
|
||||
}
|
||||
},
|
||||
shared: {
|
||||
...dependencies
|
||||
}
|
||||
})
|
||||
]
|
||||
};
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import TinyEmitter from 'tiny-emitter'
|
||||
|
||||
it("should load the component from container", () => {
|
||||
const emitter = new TinyEmitter()
|
||||
|
||||
emitter.on('hello', () => {})
|
||||
|
||||
expect(emitter.e.hello).toBeDefined();
|
||||
|
||||
return import('service/emitter').then(({ emitter }) => {
|
||||
expect(emitter.e.hello).toBeDefined();
|
||||
})
|
||||
});
|
||||
66
test/configCases/container/eager-shared/node_modules/tiny-emitter/index.js
generated
vendored
Normal file
66
test/configCases/container/eager-shared/node_modules/tiny-emitter/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
function E () {
|
||||
// Keep this empty so it's easier to inherit from
|
||||
// (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
|
||||
}
|
||||
|
||||
E.prototype = {
|
||||
on: function (name, callback, ctx) {
|
||||
var e = this.e || (this.e = {});
|
||||
|
||||
(e[name] || (e[name] = [])).push({
|
||||
fn: callback,
|
||||
ctx: ctx
|
||||
});
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
once: function (name, callback, ctx) {
|
||||
var self = this;
|
||||
function listener () {
|
||||
self.off(name, listener);
|
||||
callback.apply(ctx, arguments);
|
||||
};
|
||||
|
||||
listener._ = callback
|
||||
return this.on(name, listener, ctx);
|
||||
},
|
||||
|
||||
emit: function (name) {
|
||||
var data = [].slice.call(arguments, 1);
|
||||
var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
|
||||
var i = 0;
|
||||
var len = evtArr.length;
|
||||
|
||||
for (i; i < len; i++) {
|
||||
evtArr[i].fn.apply(evtArr[i].ctx, data);
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
off: function (name, callback) {
|
||||
var e = this.e || (this.e = {});
|
||||
var evts = e[name];
|
||||
var liveEvents = [];
|
||||
|
||||
if (evts && callback) {
|
||||
for (var i = 0, len = evts.length; i < len; i++) {
|
||||
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
|
||||
liveEvents.push(evts[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove event from queue to prevent memory leak
|
||||
// Suggested by https://github.com/lazd
|
||||
// Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
|
||||
|
||||
(liveEvents.length)
|
||||
? e[name] = liveEvents
|
||||
: delete e[name];
|
||||
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = E;
|
||||
7
test/configCases/container/eager-shared/node_modules/tiny-emitter/package.json
generated
vendored
Normal file
7
test/configCases/container/eager-shared/node_modules/tiny-emitter/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"name": "tiny-emitter",
|
||||
"version": "2.0.0",
|
||||
"description": "A tiny (less than 1k) event emitter library",
|
||||
"main": "index.js",
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tiny-emitter": "=2.0.0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
const { dependencies } = require("./package.json");
|
||||
const { ModuleFederationPlugin } = require("../../../../").container;
|
||||
|
||||
/** @type {import("../../../../").Configuration} */
|
||||
module.exports = {
|
||||
optimization: {
|
||||
chunkIds: "named",
|
||||
moduleIds: "named"
|
||||
},
|
||||
plugins: [
|
||||
new ModuleFederationPlugin({
|
||||
remoteType: "commonjs-module",
|
||||
remotes: {
|
||||
service: "../0-eager-shared/container.js"
|
||||
},
|
||||
shared: {
|
||||
"tiny-emitter": {
|
||||
eager: true,
|
||||
singleton: true,
|
||||
requiredVersion: dependencies["tiny-emitter"]
|
||||
}
|
||||
}
|
||||
})
|
||||
]
|
||||
};
|
||||
Loading…
Reference in New Issue