lib-utils-ts
Version:
<img src="https://img.shields.io/npm/v/lib-utils-ts"/> <img src="https://img.shields.io/snyk/vulnerabilities/npm/lib-utils-ts"/> <img src="https://img.shields.io/npm/l/lib-utils-ts"/> <img src="https://img.shields.io/github/languages/top/devGnode/lib-util
82 lines (73 loc) • 3.32 kB
text/typescript
/****
* In this package no importation
* work in native js
*
* @Package: Method init the class
* @param target
* @constructor
*/
import {PackageException} from "./PackageException";
import {Class} from "../Class";
/***no import accepted**/
export class Package {
private static cleanUp(src:string):any{
let {Path} = require("../file/Path"),
actualPath:any = new Path(src);
if(process.env.PROJECT_SRC!==undefined)actualPath = new Path(process.env.PROJECT_SRC).relativize( actualPath );
if( /node_modules/.test( actualPath.toString() ) && process.env.PROJECT_ROOT!==undefined ){
actualPath = Path.get(process.env.PROJECT_ROOT).resolve(Path.get("node_modules")).relativize( actualPath );
}
if(/lib-utils-ts|jstrip/.test(actualPath.toString())){
actualPath = new Path(String(process.env["JSTRIP_HOME"])).getParent().relativize(actualPath);
}
return actualPath;
}
private static define(target:Object, value:Object):void{
Object.defineProperty( target,"@Package",{
configurable:false, enumerable:false,
writable:false, value:value
});
}
private static Package0(target:any):void{
let {ClassNotFoundException, NullPointerException} = require("../Exception"),
{System} = require("../lang/System"),
{Path} = require("../file/Path"),
element:string, actualPath:any,
packPath:string= new PackageException().getLines()[2];
// cannot find package
if(packPath===undefined||packPath===null) return target;
actualPath = Package.cleanUp(packPath);
// get class export
element = actualPath.getFileName().toString();
if(target[element]==null) throw new ClassNotFoundException(`Class '${element}' not found in '${target}'`);
// Error
if(Object.getOwnPropertyDescriptor(target[element], "@Package")!==undefined) return;
if(element===null||element===undefined){
throw new ClassNotFoundException(`Package Error ${actualPath.getParent().toForNamePath()}`);
}
if( target[element] === undefined ){
throw new ClassNotFoundException(`Class @${actualPath.toForNamePath()} was been badly implemented, no element found !`);
}
if( target[element] === null ){
throw new NullPointerException(`Class @${actualPath.toForNamePath()} return null value element`);
}
let p:string = actualPath.getParent().toForNamePath().length == 0 ? "" : actualPath.getParent().toForNamePath()+".";
/*try{console.log("Module loaded",p+element);}catch (e) {
System.out.println("Module loaded",p+element);
}*/
// Set descriptor
Package.define(target[element],actualPath.getParent().toForNamePath());
if(target[element].__static!=null) target[element].__static();
return target;
}
/***/
public static Package(target:any):void {Package.Package0(target);}
/***/
public static fromAnnotation(target:any):void {
Package.Package0(target);
}
/***/
public static fromClazzName(target:Object, packageSrc:string):void {
Package.define(target,Package.cleanUp(packageSrc).toForNamePath());
}
}