/** * @internal */ public static function _buildAll($componentClasses) { $masterLayouts = "\$all-master-layouts: ();\n"; foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::hasSetting($c, 'masterLayout')) { $masterLayout = Kwc_Abstract::getSetting($c, 'masterLayout'); $f = new Kwf_Assets_Dependency_File(Kwf_Assets_ProviderList_Default::getInstance(), $masterLayout['layoutConfig']); $masterLayouts .= $f->getContentsSourceString() . "\n"; $masterLayouts .= "\$all-master-layouts: map-merge(\$all-master-layouts, \$master-layouts);\n"; } } $masterLayouts .= "\$master-layouts: \$all-master-layouts;\n"; $masterLayouts .= "\$all-master-layouts: null\n"; $file = "temp/scss-generated/config/_master-layouts.scss"; if (!is_dir(dirname($file))) { mkdir(dirname($file), 0777, true); } if (!file_exists($file) || file_get_contents($file) != $masterLayouts) { //only modify if actually changed file_put_contents($file, $masterLayouts); } foreach ($componentClasses as $cmp) { if (Kwc_Abstract::hasSetting($cmp, 'masterLayout')) { self::getInstance($cmp)->_build(); } } foreach ($componentClasses as $cmp) { if (Kwc_Abstract::hasSetting($cmp, 'masterLayout')) { //fills $_supportedContexts and $_supportedBoxContexts self::getInstance($cmp)->getSupportedContexts(); self::getInstance($cmp)->_getSupportedBoxesContexts(); } } $data = array('contexts' => self::$_supportedContexts, 'boxContexts' => self::$_supportedBoxContexts); file_put_contents('build/component/masterlayoutcontexts', serialize($data)); }
private function _buildPackageContents($mimeType) { foreach ($this->_providerList->getProviders() as $provider) { $provider->initialize(); } $packageMap = Kwf_SourceMaps_SourceMap::createEmptyMap(''); if ($mimeType == 'text/css' || $mimeType == 'text/css; ie8') { $packageMap->setMimeType('text/css'); } else { $packageMap->setMimeType('text/javascript'); } $trlData = array(); // ***** commonjs $commonJsData = $this->_getCommonJsData($mimeType); if ($commonJsData) { foreach ($commonJsData as &$i) { $data = $i['source']->getMapContentsData(false); if (isset($data->{'_x_org_koala-framework_trlData'})) { $trlData = array_merge($trlData, $data->{'_x_org_koala-framework_trlData'}); } $data->sourcesContent = $data->sources; //browser-pack needs sourcesContent, else it would ignore input source map. This is fake obviously and we'll drop it anyway after browser-pack finished if (isset($i['source']->getMapContentsData(false)->sources[0])) { $i['sourceFile'] = $i['source']->getMapContentsData(false)->sources[0]; } $i['source'] = $i['source']->getFileContentsInlineMap(false); } $contents = 'window.require = ' . Kwf_Assets_CommonJs_BrowserPack::pack(array_values($commonJsData)); $map = Kwf_SourceMaps_SourceMap::createFromInline($contents); $fileContents = $map->getFileContents(); $fileContents .= ";\n"; $map->setFileContents($fileContents); $data = $map->getMapContentsData(false); unset($data->sourcesContent); //drop fake sourcesContent (see comment above) if ($data->sources[0] == 'node_modules/browser-pack/_prelude.js') { $data->sources[0] = '/assets/web/node_modules/browser-pack/_prelude.js'; } $packageMap->concat($map); } // ***** non-commonjs, css $filterMimeType = $mimeType; if ($filterMimeType == 'text/css; ie8') { $filterMimeType = 'text/css'; } foreach ($this->_getFilteredUniqueDependencies($filterMimeType) as $dep) { if ($dep->getIncludeInPackage()) { if (!(($mimeType == 'text/javascript' || $mimeType == 'text/javascript; defer') && $dep->isCommonJsEntry())) { $map = $this->_getFilteredDependencyContents($dep, $mimeType); $data = $map->getMapContentsData(false); if (isset($data->{'_x_org_koala-framework_trlData'})) { $trlData = array_merge($trlData, $data->{'_x_org_koala-framework_trlData'}); } if (strpos($map->getFileContents(), "//@ sourceMappingURL=") !== false && strpos($map->getFileContents(), "//# sourceMappingURL=") !== false) { throw new Kwf_Exception("contents must not contain sourceMappingURL"); } $sourcesCount = 0; $packageData = $packageMap->getMapContentsData(false); if (isset($packageData->sources)) { $sourcesCount = count($packageData->sources); } unset($packageData); // $ret .= "/* *** $dep */\n"; // attention: commenting this in breaks source maps $packageMap->concat($map); if (isset($data->{'_x_org_koala-framework_sourcesContent'})) { $packageMapData = $packageMap->getMapContentsData(false); if (!isset($packageMapData->{'_x_org_koala-framework_sourcesContent'})) { $packageMapData->{'_x_org_koala-framework_sourcesContent'} = array(); } //copy sourcesContent to packageMap with $sourcesCount offset foreach ($data->{'_x_org_koala-framework_sourcesContent'} as $k => $i) { $packageMapData->{'_x_org_koala-framework_sourcesContent'}[$k + $sourcesCount] = $i; } } } } } if ($mimeType == 'text/javascript' || $mimeType == 'text/javascript; defer') { if ($uniquePrefix = Kwf_Config::getValue('application.uniquePrefix')) { $packageMap = Kwf_Assets_Package_Filter_UniquePrefix::filter($packageMap, $uniquePrefix); } } foreach ($this->getProviderList()->getFilters() as $filter) { if ($filter->getExecuteFor() == Kwf_Assets_Filter_Abstract::EXECUTE_FOR_PACKAGE && $filter->getMimeType() == $mimeType) { $packageMap = $filter->filter($packageMap); } } $data = $packageMap->getMapContentsData(false); $data->sourcesContent = array(); foreach ($data->sources as $k => $i) { if (substr($i, 0, 8) != '/assets/') { throw new Kwf_Exception("Source path doesn't start with /assets/: {$i}"); } $i = substr($i, 8); if (isset($data->{'_x_org_koala-framework_sourcesContent'}[$k])) { $data->sourcesContent[$k] = $data->{'_x_org_koala-framework_sourcesContent'}[$k]; } else { $i = new Kwf_Assets_Dependency_File($this->_providerList, $i); $data->sourcesContent[$k] = $i->getContentsSourceString(); } } return array('contents' => $packageMap, 'trlData' => $trlData); }