15 Commits

Author SHA1 Message Date
d94d9e03cf 1.5.0 2022-01-23 21:33:36 +03:00
1ae0790319 add regenerator-runtime 2022-01-23 21:33:28 +03:00
729addc469 1.4.6 2021-06-06 16:52:20 +03:00
b718dd3b03 1.4.5 2021-06-06 12:34:57 +03:00
ff2f20aebe 1.4.4 2021-06-06 12:21:03 +03:00
1e76d60284 1.4.3 2021-05-30 21:20:58 +03:00
612f326515 history 2021-05-30 21:20:51 +03:00
fcb72a4547 1.4.2 2021-04-01 22:53:50 +03:00
a028c2b767 1.4.1 2021-01-11 20:22:16 +03:00
8ea30cb9a0 build for version 2021-01-11 20:22:06 +03:00
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
6 changed files with 57 additions and 44 deletions

29
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{ {
"name": "@ijl/fire.app", "name": "@ijl/fire.app",
"version": "1.3.0", "version": "1.5.0",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {

6
src/history.ts Normal file
View File

@@ -0,0 +1,6 @@
import { createBrowserHistory } from 'history'
const history = createBrowserHistory();
export default history;

View File

@@ -3,9 +3,11 @@ import "systemjs/dist/extras/amd";
import "systemjs/dist/extras/named-register"; import "systemjs/dist/extras/named-register";
import "systemjs/dist/extras/named-exports"; import "systemjs/dist/extras/named-exports";
import "systemjs/dist/extras/transform"; import "systemjs/dist/extras/transform";
import { createBrowserHistory } from 'history' import "regenerator-runtime/runtime";
import { Apps } from './apps' import { Apps } from './apps'
import { defineVirtualModule } from './virtual-module' import { defineVirtualModule } from './virtual-module'
import history from './history';
const systemJSImport = async (requestUrl: string) => { const systemJSImport = async (requestUrl: string) => {
const { default: component, mount, unmount } = await System.import( const { default: component, mount, unmount } = await System.import(
@@ -14,50 +16,38 @@ const systemJSImport = async (requestUrl: string) => {
return { component, mount, unmount } 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, features }) => { export default async ({ apps: rawApps, navigations, config, features }) => {
defineVirtualModule({ navigations, config, features }) defineVirtualModule({ navigations, config, features })
const apps = new Apps(rawApps) const apps = new Apps(rawApps)
const history = createBrowserHistory()
let prevPathname = window.location.pathname 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); mount(component.default);
history.listen((location) => { history.listen(async (location) => {
if (location.pathname !== prevPathname) { if (location.pathname !== prevPathname) {
prevPathname = location.pathname prevPathname = location.pathname
unmount() unmount()
const nextApp = await getApp();
nextApp.mount(nextApp.component.default)
unmount = nextApp.unmount;
} }
}) })
}; };

View File

@@ -1,10 +1,13 @@
import history from './history';
const createVirtualModule = ({ config, navigations, features }) => ({ const createVirtualModule = ({ config, navigations, features }) => ({
getConfig: () => config, getConfig: () => config,
getConfigValue: (pkg: string) => config[pkg], getConfigValue: (pkg: string) => config[pkg],
getNavigations: () => navigations, getNavigations: () => navigations,
getNavigationsValue: (pkg: string) => navigations[pkg], getNavigationsValue: (pkg: string) => navigations[pkg],
getAllFeatures: () => features, getAllFeatures: () => features,
getFeatures: (pkg: string) => features[pkg] getFeatures: (pkg: string) => features[pkg],
getHistory: () => history,
}) })
export const defineVirtualModule = (params) => { export const defineVirtualModule = (params) => {

View File

@@ -4,15 +4,6 @@
"dom", "dom",
"es7" "es7"
], ],
"baseUrl": ".",
"paths": {
"*": [
"*",
"src/*",
"lib/*",
"dist/*"
]
},
"outDir": "./dist/", "outDir": "./dist/",
"sourceMap": true, "sourceMap": true,
"esModuleInterop": true, "esModuleInterop": true,