infrastructure-components
Version:
Infrastructure-Components configure the infrastructure of your React-App as part of your React-Components.
82 lines • 3.97 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = __importDefault(require("../types"));
const middleware_component_1 = require("../middleware/middleware-component");
const webapp_component_1 = require("../webapp/webapp-component");
const libs_1 = require("../libs");
const iso_plugin_1 = require("./iso-plugin");
const webapp_plugin_1 = require("../webapp/webapp-plugin");
const environment_plugin_1 = require("../environment/environment-plugin");
const datalayer_plugin_1 = require("../datalayer/datalayer-plugin");
const identity_plugin_1 = require("../identity/identity-plugin");
const authentication_plugin_1 = require("../authentication/authentication-plugin");
const datalayer_component_1 = require("../datalayer/datalayer-component");
const service_plugin_1 = require("../service/service-plugin");
const service_component_1 = require("../service/service-component");
const storage_component_1 = require("../storage/storage-component");
const storage_plugin_1 = require("../storage/storage-plugin");
exports.ISOMORPHIC_INSTANCE_TYPE = "IsomorphicComponent";
/**
* The IsomorphicApp is an infrastructure and must implement [[IInfrastructure]]
*
* @param props
*/
exports.default = (props) => {
//console.log ("isomorphic: ",props );
const infProps = {
// allows to identify this component as Infrastructure
infrastructureType: types_1.default.INFRASTRUCTURE_TYPE_CONFIGURATION,
instanceId: props.stackName,
instanceType: exports.ISOMORPHIC_INSTANCE_TYPE,
// only load plugins during compilation
createPlugins: (configPath, stage, parserMode) => props.infrastructureMode === "COMPILATION" ? [
// be able to process IsomorphicApps (as top-level-node)
iso_plugin_1.IsoPlugin({
parserMode: parserMode,
buildPath: props.buildPath,
configFilePath: configPath
}),
datalayer_plugin_1.DataLayerPlugin({
parserMode: parserMode,
buildPath: props.buildPath,
configFilePath: configPath,
}),
// isomorphic apps can have webapps (i.e. clients!)
webapp_plugin_1.WebAppPlugin({
parserMode: parserMode,
buildPath: props.buildPath,
configFilePath: configPath,
assetsPath: props.assetsPath
}),
service_plugin_1.ServicePlugin({}),
storage_plugin_1.StoragePlugin({
buildPath: props.buildPath,
parserMode: parserMode
}),
// isomorphic apps can have different environments
environment_plugin_1.EnvironmentPlugin({
stage: stage,
parserMode: parserMode
}),
identity_plugin_1.IdentityPlugin({}),
authentication_plugin_1.AuthenticationPlugin({}),
] : []
};
const isoProps = {
middlewares: libs_1.findComponentRecursively(props.children, middleware_component_1.isMiddleware),
webApps: libs_1.findComponentRecursively(props.children, webapp_component_1.isWebApp),
services: libs_1.findComponentRecursively(props.children, c => service_component_1.isService(c) || storage_component_1.isStorage(c)),
dataLayerId: libs_1.findComponentRecursively(props.children, datalayer_component_1.isDataLayer).reduce((res, dl) => res ? res : dl.id, undefined)
};
//console.log("webapps: ", isoProps.webApps)
return Object.assign(props, infProps, isoProps);
};
function isIsomorphicApp(component) {
return component !== undefined &&
component.instanceType === exports.ISOMORPHIC_INSTANCE_TYPE;
}
exports.isIsomorphicApp = isIsomorphicApp;
//# sourceMappingURL=iso-component.js.map
;