Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 729addc469 | |||
| b718dd3b03 | |||
| ff2f20aebe | |||
| 1e76d60284 | |||
| 612f326515 | |||
| fcb72a4547 | |||
| a028c2b767 | |||
| 8ea30cb9a0 | |||
| f6f5eab087 | |||
| 1a7309dc38 | |||
| 60300a769b | |||
| ed64c788d5 | |||
| c19d5fc0de | |||
|
|
f2209f6708 | ||
|
|
753eaada75 | ||
| fe6d5df006 |
18
dist/index.js
vendored
18
dist/index.js
vendored
@@ -78,7 +78,7 @@ var fireapp =
|
|||||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||||
/******/
|
/******/
|
||||||
/******/ // __webpack_public_path__
|
/******/ // __webpack_public_path__
|
||||||
/******/ __webpack_require__.p = "/fireapp/1.1.0/";
|
/******/ __webpack_require__.p = "/fireapp/1.4.2/";
|
||||||
/******/
|
/******/
|
||||||
/******/
|
/******/
|
||||||
/******/ // Load entry module and return exports
|
/******/ // Load entry module and return exports
|
||||||
@@ -237,6 +237,18 @@ eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ "./src/history.ts":
|
||||||
|
/*!************************!*\
|
||||||
|
!*** ./src/history.ts ***!
|
||||||
|
\************************/
|
||||||
|
/*! no static exports found */
|
||||||
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst history_1 = __webpack_require__(/*! history */ \"./node_modules/history/esm/history.js\");\nconst history = history_1.createBrowserHistory();\nexports.default = history;\n\n\n//# sourceURL=webpack://fireapp/./src/history.ts?");
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ "./src/main.ts":
|
/***/ "./src/main.ts":
|
||||||
/*!*********************!*\
|
/*!*********************!*\
|
||||||
!*** ./src/main.ts ***!
|
!*** ./src/main.ts ***!
|
||||||
@@ -245,7 +257,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass
|
|||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! systemjs/dist/system */ \"./node_modules/systemjs/dist/system.js\");\n__webpack_require__(/*! systemjs/dist/extras/amd */ \"./node_modules/systemjs/dist/extras/amd.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-register */ \"./node_modules/systemjs/dist/extras/named-register.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-exports */ \"./node_modules/systemjs/dist/extras/named-exports.js\");\n__webpack_require__(/*! systemjs/dist/extras/transform */ \"./node_modules/systemjs/dist/extras/transform.js\");\nconst history_1 = __webpack_require__(/*! history */ \"./node_modules/history/esm/history.js\");\nconst apps_1 = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\nconst virtual_module_1 = __webpack_require__(/*! ./virtual-module */ \"./src/virtual-module.ts\");\nconst systemJSImport = (requestUrl) => __awaiter(void 0, void 0, void 0, function* () {\n const { default: component, mount, unmount } = yield System.import(requestUrl);\n return { component, mount, unmount };\n});\n// const defaultNavigations = {\n// login: '/login',\n// main: '/main',\n// news: '/news',\n// org: '/org',\n// sections: '/sections',\n// 'news.details': '/news/{{id}}',\n// 'org.details': '/org/{{name}}',\n// 'sections.details': '/sections/{{name}}'\n// }\n// const defaultApps = {\n// login: { version: '1.0.0', name: 'login' },\n// main: { version: '1.0.1', name: 'main' },\n// news: { version: '1.0.0', name: 'news' },\n// org: { version: '1.0.0', name: 'org' },\n// sections: { version: '1.0.0', name: 'sections' }\n// }\nexports.default = ({ apps: rawApps, navigations, config }) => __awaiter(void 0, void 0, void 0, function* () {\n virtual_module_1.defineVirtualModule({ navigations, config });\n const apps = new apps_1.Apps(rawApps);\n const history = history_1.createBrowserHistory();\n let prevPathname = window.location.pathname;\n const app = apps.findApp(history.location.pathname);\n const publicPath = `/${app.name}/${app.version}`;\n __webpack_require__.p = `${config.baseUrl}${publicPath}${__webpack_require__.p}`;\n const appPath = `${config.baseUrl}${publicPath}/index.js`;\n const { component, mount, unmount } = yield systemJSImport(appPath);\n mount(component.default);\n history.listen((location) => {\n if (location.pathname !== prevPathname) {\n prevPathname = location.pathname;\n unmount();\n }\n });\n});\n\n\n//# sourceURL=webpack://fireapp/./src/main.ts?");
|
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! systemjs/dist/system */ \"./node_modules/systemjs/dist/system.js\");\n__webpack_require__(/*! systemjs/dist/extras/amd */ \"./node_modules/systemjs/dist/extras/amd.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-register */ \"./node_modules/systemjs/dist/extras/named-register.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-exports */ \"./node_modules/systemjs/dist/extras/named-exports.js\");\n__webpack_require__(/*! systemjs/dist/extras/transform */ \"./node_modules/systemjs/dist/extras/transform.js\");\nconst apps_1 = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\nconst virtual_module_1 = __webpack_require__(/*! ./virtual-module */ \"./src/virtual-module.ts\");\nconst history_1 = __importDefault(__webpack_require__(/*! ./history */ \"./src/history.ts\"));\nconst systemJSImport = (requestUrl) => __awaiter(void 0, void 0, void 0, function* () {\n const { default: component, mount, unmount } = yield System.import(requestUrl);\n return { component, mount, unmount };\n});\nexports.default = ({ apps: rawApps, navigations, config, features }) => __awaiter(void 0, void 0, void 0, function* () {\n virtual_module_1.defineVirtualModule({ navigations, config, features });\n const apps = new apps_1.Apps(rawApps);\n let prevPathname = window.location.pathname;\n function getApp() {\n return __awaiter(this, void 0, void 0, function* () {\n const app = apps.findApp(history_1.default.location.pathname);\n const publicPath = `/${app.name}/${app.version}`;\n __webpack_require__.p = `${config.baseUrl}${publicPath}${__webpack_require__.p}`;\n const appPath = `${config.baseUrl}${publicPath}/index.js`;\n const { component, mount, unmount } = yield systemJSImport(appPath);\n return { component, mount, unmount };\n });\n }\n let { component, mount, unmount } = yield getApp();\n mount(component.default);\n history_1.default.listen((location) => __awaiter(void 0, void 0, void 0, function* () {\n if (location.pathname !== prevPathname) {\n prevPathname = location.pathname;\n unmount();\n const nextApp = yield getApp();\n nextApp.mount(nextApp.component.default);\n unmount = nextApp.unmount;\n }\n }));\n});\n\n\n//# sourceURL=webpack://fireapp/./src/main.ts?");
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
@@ -257,7 +269,7 @@ eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _argument
|
|||||||
/***/ (function(module, exports, __webpack_require__) {
|
/***/ (function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createVirtualModule = ({ config, navigations }) => ({\n getConfig: () => config,\n getConfigValue: (key) => config[key],\n getNavigations: () => navigations,\n getNavigationsValue: (key) => navigations[key],\n});\nexports.defineVirtualModule = (params) => {\n const virtualModule = createVirtualModule(params);\n // @ts-ignore\n System.set('root.scope', Object.assign({}, virtualModule));\n};\n\n\n//# sourceURL=webpack://fireapp/./src/virtual-module.ts?");
|
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst history_1 = __importDefault(__webpack_require__(/*! ./history */ \"./src/history.ts\"));\nconst createVirtualModule = ({ config, navigations, features }) => ({\n getConfig: () => config,\n getConfigValue: (pkg) => config[pkg],\n getNavigations: () => navigations,\n getNavigationsValue: (pkg) => navigations[pkg],\n getAllFeatures: () => features,\n getFeatures: (pkg) => features[pkg],\n getHistory: () => history_1.default,\n});\nexports.defineVirtualModule = (params) => {\n const virtualModule = createVirtualModule(params);\n // @ts-ignore\n System.set('root.scope', Object.assign({}, virtualModule));\n};\n\n\n//# sourceURL=webpack://fireapp/./src/virtual-module.ts?");
|
||||||
|
|
||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "@ijl/fire.app",
|
"name": "@ijl/fire.app",
|
||||||
"version": "1.2.0",
|
"version": "1.4.6",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "nodemon ./stubs/server.js",
|
"start": "nodemon ./stubs/server.js",
|
||||||
"build": "webpack --mode development",
|
"build": "webpack --mode development"
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
},
|
||||||
"author": "innoavvlasov@gmail.com",
|
"author": "innoavvlasov@gmail.com",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
|||||||
6
src/history.ts
Normal file
6
src/history.ts
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import { createBrowserHistory } from 'history'
|
||||||
|
|
||||||
|
|
||||||
|
const history = createBrowserHistory();
|
||||||
|
|
||||||
|
export default history;
|
||||||
38
src/main.ts
38
src/main.ts
@@ -3,9 +3,9 @@ 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 { 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,34 +14,14 @@ const systemJSImport = async (requestUrl: string) => {
|
|||||||
return { component, mount, unmount }
|
return { component, mount, unmount }
|
||||||
}
|
}
|
||||||
|
|
||||||
// const defaultNavigations = {
|
export default async ({ apps: rawApps, navigations, config, features }) => {
|
||||||
// login: '/login',
|
defineVirtualModule({ navigations, config, features })
|
||||||
// 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 })
|
|
||||||
|
|
||||||
const apps = new Apps(rawApps)
|
const apps = new Apps(rawApps)
|
||||||
|
|
||||||
const history = createBrowserHistory()
|
|
||||||
|
|
||||||
let prevPathname = window.location.pathname
|
let prevPathname = window.location.pathname
|
||||||
|
|
||||||
|
async function getApp() {
|
||||||
const app = apps.findApp(history.location.pathname)
|
const app = apps.findApp(history.location.pathname)
|
||||||
|
|
||||||
const publicPath = `/${app.name}/${app.version}`
|
const publicPath = `/${app.name}/${app.version}`
|
||||||
@@ -52,12 +32,20 @@ export default async ({ apps: rawApps, navigations, config }) => {
|
|||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
const createVirtualModule = ({ config, navigations }) => ({
|
import history from './history';
|
||||||
|
|
||||||
|
const createVirtualModule = ({ config, navigations, features }) => ({
|
||||||
getConfig: () => config,
|
getConfig: () => config,
|
||||||
getConfigValue: (key) => config[key],
|
getConfigValue: (pkg: string) => config[pkg],
|
||||||
getNavigations: () => navigations,
|
getNavigations: () => navigations,
|
||||||
getNavigationsValue: (key) => navigations[key],
|
getNavigationsValue: (pkg: string) => navigations[pkg],
|
||||||
|
getAllFeatures: () => features,
|
||||||
|
getFeatures: (pkg: string) => features[pkg],
|
||||||
|
getHistory: () => history,
|
||||||
})
|
})
|
||||||
|
|
||||||
export const defineVirtualModule = (params) => {
|
export const defineVirtualModule = (params) => {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user