19 Commits

Author SHA1 Message Date
f6f5eab087 1.4.0 2021-01-11 16:08:00 +03:00
1a7309dc38 get features from hbs 2021-01-11 16:07:53 +03:00
60300a769b 1.3.1 2020-12-10 20:55:41 +03:00
ed64c788d5 Merged in unmount-fix (pull request #1)
fixed unmount)

Approved-by: Andrey Vlasov
2020-12-10 17:49:21 +00:00
c19d5fc0de fixed unmount) 2020-12-10 20:11:25 +03:00
Andrey Vlasov
f2209f6708 1.3.0 2020-12-06 19:49:43 +03:00
Andrey Vlasov
753eaada75 add features 2020-12-06 19:49:08 +03:00
fe6d5df006 No test specified 2020-04-04 11:20:21 +03:00
d5e08e4178 1.2.0 2020-03-31 00:16:40 +03:00
14e5c02a03 fireapp 2020-03-31 00:16:30 +03:00
ac1e2a4df3 1.1.0 2020-03-31 00:08:19 +03:00
Andrey Vlasov
0636ce1ff2 fix virtual module 2020-03-29 12:49:07 +03:00
Andrey Vlasov
47839a963c 1.0.5 2020-03-29 10:53:19 +03:00
Andrey Vlasov
3683151cb2 build 2020-03-29 10:52:08 +03:00
Andrey Vlasov
033865105f 1.0.4 2020-03-28 23:37:51 +03:00
Andrey Vlasov
556c31c56c add entry 2020-03-28 23:37:43 +03:00
Andrey Vlasov
a008842899 1.0.3 2020-03-28 23:33:09 +03:00
Andrey Vlasov
84cf7b72a0 rename virtual module 2020-03-28 23:32:35 +03:00
Andrey Vlasov
03eec8c836 change license 2020-03-28 23:08:24 +03:00
5 changed files with 59 additions and 65 deletions

42
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,14 @@
{
"name": "@ijl/fire.app",
"version": "1.0.2",
"version": "1.4.0",
"description": "",
"main": "index.js",
"main": "dist/index.js",
"scripts": {
"start": "nodemon ./stubs/server.js",
"build": "webpack --mode development",
"test": "echo \"Error: no test specified\" && exit 1"
"build": "webpack --mode development"
},
"author": "innoavvlasov@gmail.com",
"license": "MIT",
"license": "ISC",
"devDependencies": {
"@types/node": "13.7.0",
"@types/systemjs": "6.1.0",

View File

@@ -1,4 +1,4 @@
import "systemjs/dist/s";
import "systemjs/dist/system";
import "systemjs/dist/extras/amd";
import "systemjs/dist/extras/named-register";
import "systemjs/dist/extras/named-exports";
@@ -14,27 +14,8 @@ const systemJSImport = async (requestUrl: string) => {
return { component, mount, unmount }
}
// const defaultNavigations = {
// login: '/login',
// main: '/main',
// news: '/news',
// org: '/org',
// sections: '/sections',
// 'news.details': '/news/{{id}}',
// 'org.details': '/org/{{name}}',
// 'sections.details': '/sections/{{name}}'
// }
// const defaultApps = {
// login: { version: '1.0.0', name: 'login' },
// main: { version: '1.0.1', name: 'main' },
// news: { version: '1.0.0', name: 'news' },
// org: { version: '1.0.0', name: 'org' },
// sections: { version: '1.0.0', name: 'sections' }
// }
export default async ({ apps: rawApps, navigations, config }) => {
defineVirtualModule({navigations, config})
export default async ({ apps: rawApps, navigations, config, features }) => {
defineVirtualModule({ navigations, config, features })
const apps = new Apps(rawApps)
@@ -42,22 +23,31 @@ export default async ({ apps: rawApps, navigations, config }) => {
let prevPathname = window.location.pathname
const app = apps.findApp(history.location.pathname)
async function getApp() {
const app = apps.findApp(history.location.pathname)
const publicPath = `/${app.name}/${app.version}`
const publicPath = `/${app.name}/${app.version}`
__webpack_public_path__ = `${config.baseUrl}${publicPath}${__webpack_public_path__}`
__webpack_public_path__ = `${config.baseUrl}${publicPath}${__webpack_public_path__}`
const appPath = `${config.baseUrl}${publicPath}/index.js`
const appPath = `${config.baseUrl}${publicPath}/index.js`
const { component, mount, unmount } = await systemJSImport(appPath);
const { component, mount, unmount } = await systemJSImport(appPath);
return { component, mount, unmount };
}
let { component, mount, unmount } = await getApp()
mount(component.default);
history.listen((location) => {
history.listen(async (location) => {
if (location.pathname !== prevPathname) {
prevPathname = location.pathname
unmount()
const nextApp = await getApp();
nextApp.mount(nextApp.component.default)
unmount = nextApp.unmount;
}
})
};

View File

@@ -1,12 +1,17 @@
const createVirtualModule = ({ config, navigations, features }) => ({
getConfig: () => config,
getConfigValue: (pkg: string) => config[pkg],
getNavigations: () => navigations,
getNavigationsValue: (pkg: string) => navigations[pkg],
getAllFeatures: () => features,
getFeatures: (pkg: string) => features[pkg]
})
export const defineVirtualModule = (params) => {
const virtualModule = createVirtualModule(params)
// @ts-ignore
global.define('root.scope.env', [], virtualModule)
System.set('root.scope', {
...virtualModule
});
}
const createVirtualModule = ({config, navigations}) => ({
getConfig: () => config,
getConfigValue: (key) => config[key],
getNavigations: () => navigations,
getNavigationsValue: (key) => navigations[key],
})

View File

@@ -11,10 +11,10 @@ module.exports = {
index: "./src/main.ts"
},
output: {
library: "bootstrap",
library: "fireapp",
path: path.resolve(__dirname, outputDirectory),
libraryExport: "default",
publicPath: `/boorstrap/${pkg.version}/`
publicPath: `/fireapp/${pkg.version}/`
},
plugins: [new CleanWebpackPlugin()],