specVersion: '1.0'
metadata:
name: PersonSkills
type: application
server:
customMiddleware:
- name: odataProxy
beforeMiddleware: serveResources
builder:
bundles:
- bundleDefinition:
name: be/wl/PersonSkills/Component-preload.js
defaultFileTypes:
- ".js"
- ".json"
- ".xml"
- ".html"
- ".library"
sections:
- mode: raw
filters:
- be/wl/PersonSkills/regenerator-runtime/runtime.js
- mode: preload
filters:
- be/wl/PersonSkills/manifest.json
- be/wl/PersonSkills/controller/**
- be/wl/PersonSkills/Component.js
- be/wl/PersonSkills/i18n/**
- be/wl/PersonSkills/model/**
- be/wl/PersonSkills/ui5fixes/**
- be/wl/PersonSkills/util/**
- be/wl/PersonSkills/view/**
- be/wl/PersonSkills/libs/**
- be/wl/PersonSkills/test/**
- be/wl/PersonSkills/service/**
- be/wl/PersonSkills/state/**
- be/wl/PersonSkills/localService/**
resolve: false
sort: true
declareModules: false
bundleOptions:
optimize: true
usePredefineCalls: true
customTasks:
- name: babel
afterTask: replaceVersion
---
specVersion: "1.0"
kind: extension
type: server-middleware
metadata:
name: odataProxy
middleware:
path: lib/middleware/odataProxy.js
---
specVersion: "1.0"
kind: extension
type: task
metadata:
name: babel
task:
path: lib/tasks/babel.js
const colors = require('colors');
const emoji = require('node-emoji');
const babel = require("@babel/core");
const pathregen = require("regenerator-runtime/path").path;
const resourceFactory = require("@ui5/fs").resourceFactory;
const fs = require('fs');
const path = require("path");
const icons = ["hatching_chick", "baby_chick", "hatched_chick", "bird"];
const baseLogTask = "info".green + " babel:".magenta;
/**
* Custom task example
*
* @param {Object} parameters Parameters
* @param {module:@ui5/fs.DuplexCollection} parameters.workspace DuplexCollection to read and write files
* @param {module:@ui5/fs.AbstractReader} parameters.dependencies Reader or Collection to read dependency files
* @param {Object} parameters.options Options
* @param {string} parameters.options.projectName Project name
* @param {string} [parameters.options.configuration] Task configuration if given in ui5.yaml
* @returns {Promise<undefined>} Promise resolving with <code>undefined</code> once data has been written
*/
module.exports = async function ({
workspace,
dependencies,
options
}) {
const jsResources = await workspace.byGlob("**/*.js");
console.info("\n" + baseLogTask + "Add regenerator-runtime".green + emoji.get('palm_tree'));
//get path of Component
const componentResource = jsResources.find((jsResource) => jsResource.getPath().includes("Component.js"));
const toPath = componentResource.getPath();
const pathPrefix = toPath.replace("Component.js", "");
//get path of regenerator in node_modules
const pathRegenerator = pathregen.substr(pathregen.indexOf("node_modules") + 13).replace("\\", "/");
//build full path for regenerator in current project
const virtualPathRegenerator = pathPrefix + pathRegenerator;
//get code of regenereator
const runtimeCode = fs.readFileSync(pathregen, 'utf8');
//create resource
const runtimeResource = resourceFactory.createResource({
path: virtualPathRegenerator,
string: runtimeCode
});
//save regenerator to workspace
await workspace.write(runtimeResource);
console.info(baseLogTask + "Include regenerator-runtime".green + emoji.get('palm_tree'));
//add require regenerator for development prupose
let componentSource = await componentResource.getString();
const requirePath = virtualPathRegenerator.replace("/resources/", "").replace(".js", "");
componentSource = "// development mode: load the regenerator runtime synchronously\nif(!window.regeneratorRuntime){sap.ui.requireSync(\"" + requirePath + "\")}" + componentSource;
componentResource.setString(componentSource);
await workspace.write(componentResource);
console.info(baseLogTask + "Start tranformation".green + emoji.get('palm_tree'));
const filteredResources = jsResources.filter(resource => {
return (!resource.getPath().includes("/libs/"));
});
let iconIdx = 0;
const transformCode = async resource => {
var source = await resource.getString();
console.info(baseLogTask + "Transforming:".blue + emoji.get(icons[iconIdx]) + resource.getPath());
iconIdx = iconIdx >= (icons.length - 1) ? 0 : ++iconIdx;
var {code,map,ast} = babel.transformSync(source, {
presets: [["@babel/preset-env"]],
plugins: [["@babel/plugin-transform-modules-commonjs", {"strictMode": false}]]
});
resource.setString(code);
return resource;
};
const transformedResources = await Promise.all(filteredResources.map(resource => transformCode(resource)));
console.info(baseLogTask + "Tranformation finished".green + emoji.get('palm_tree'));
console.info(baseLogTask + "Start updating files".green);
await Promise.all(transformedResources.map((resource) => {
return workspace.write(resource);
}));
console.info(baseLogTask + "Updating files finished".green);
console.info(baseLogTask + "Babel task finished" + emoji.get('white_check_mark'))
};
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
37 | |
10 | |
6 | |
4 | |
3 | |
3 | |
3 | |
2 | |
2 | |
2 |