@wavemaker/angular-codegen 11.0.1-next.139249 → 11.0.1-next.139253
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- angular-codegen/angular-app/package.json +1 -1
- angular-codegen/dependencies/expression-parser.cjs.js +92 -43
- angular-codegen/dependencies/pipe-provider.cjs.js +109 -53
- angular-codegen/dependencies/transpilation-mobile.cjs.js +111 -55
- angular-codegen/dependencies/transpilation-web.cjs.js +111 -55
- angular-codegen/package.json +1 -1
- angular-codegen/src/expr-parser-utils.js +1 -1
@@ -68,7 +68,7 @@
|
|
68
68
|
"tslib": "^2.0.0",
|
69
69
|
"x2js": "3.2.6",
|
70
70
|
"zone.js": "~0.10.3",
|
71
|
-
"@wavemaker/app-ng-runtime": "11.0.1-next.
|
71
|
+
"@wavemaker/app-ng-runtime": "11.0.1-next.139253"
|
72
72
|
},
|
73
73
|
"devDependencies": {
|
74
74
|
"@ampproject/rollup-plugin-closure-compiler": "0.8.5",
|
@@ -17570,6 +17570,21 @@ const nullPipe = () => {
|
|
17570
17570
|
};
|
17571
17571
|
};
|
17572
17572
|
const ɵ10 = nullPipe;
|
17573
|
+
let _cspEnabled;
|
17574
|
+
const isCSPEnabled = () => {
|
17575
|
+
if (typeof _cspEnabled !== 'undefined') {
|
17576
|
+
return _cspEnabled;
|
17577
|
+
}
|
17578
|
+
try {
|
17579
|
+
new Function();
|
17580
|
+
_cspEnabled = false;
|
17581
|
+
}
|
17582
|
+
catch (e) {
|
17583
|
+
_cspEnabled = true;
|
17584
|
+
}
|
17585
|
+
return _cspEnabled;
|
17586
|
+
};
|
17587
|
+
const ɵ11 = isCSPEnabled;
|
17573
17588
|
let pipeProvider;
|
17574
17589
|
function setPipeProvider(_pipeProvider) {
|
17575
17590
|
pipeProvider = _pipeProvider;
|
@@ -17604,53 +17619,82 @@ function $parseExpr(expr, defOnly) {
|
|
17604
17619
|
}
|
17605
17620
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
17606
17621
|
if (!boundFn) {
|
17607
|
-
|
17608
|
-
|
17609
|
-
if (
|
17610
|
-
|
17611
|
-
|
17622
|
+
// If CSP enabled, function def not found from the generated fn expressions for the page.
|
17623
|
+
// Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html
|
17624
|
+
if (isCSPEnabled()) {
|
17625
|
+
boundFn = function (ctx, locals) {
|
17626
|
+
// handle internal bindings for wm widgets used inside a component
|
17627
|
+
let _ctx = Object.assign({}, locals);
|
17628
|
+
Object.setPrototypeOf(_ctx, ctx);
|
17629
|
+
return _.get(_ctx, expr);
|
17630
|
+
};
|
17612
17631
|
}
|
17613
17632
|
else {
|
17614
|
-
const
|
17615
|
-
const
|
17616
|
-
|
17617
|
-
|
17618
|
-
|
17619
|
-
}
|
17620
|
-
|
17621
|
-
const
|
17622
|
-
|
17623
|
-
|
17624
|
-
|
17625
|
-
|
17626
|
-
|
17627
|
-
|
17628
|
-
|
17629
|
-
|
17630
|
-
|
17631
|
-
|
17632
|
-
|
17633
|
-
|
17634
|
-
|
17635
|
-
pipeInstance = pipeProvider.getInstance(pipeName);
|
17633
|
+
const parser = new Parser$1(new Lexer);
|
17634
|
+
const ast = parser.parseBinding(expr, '', 0);
|
17635
|
+
if (ast.errors.length) {
|
17636
|
+
fn = noop;
|
17637
|
+
boundFn = fn;
|
17638
|
+
}
|
17639
|
+
else {
|
17640
|
+
const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();
|
17641
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Binding, pipeNameVsIsPureMap);
|
17642
|
+
fn = astCompiler.compile(defOnly);
|
17643
|
+
if (defOnly) {
|
17644
|
+
return fn;
|
17645
|
+
}
|
17646
|
+
if (fn.usedPipes.length) {
|
17647
|
+
const pipeArgs = [];
|
17648
|
+
let hasPurePipe = false;
|
17649
|
+
for (const [pipeName] of fn.usedPipes) {
|
17650
|
+
const pipeInfo = pipeProvider.meta(pipeName);
|
17651
|
+
let pipeInstance;
|
17652
|
+
if (!pipeInfo) {
|
17653
|
+
pipeInstance = nullPipe;
|
17636
17654
|
}
|
17637
|
-
|
17638
|
-
|
17655
|
+
else {
|
17656
|
+
if (pipeInfo.pure) {
|
17657
|
+
hasPurePipe = true;
|
17658
|
+
pipeInstance = purePipes.get(pipeName);
|
17659
|
+
}
|
17660
|
+
if (!pipeInstance) {
|
17661
|
+
pipeInstance = pipeProvider.getInstance(pipeName);
|
17662
|
+
}
|
17663
|
+
if (pipeInfo.pure) {
|
17664
|
+
purePipes.set(pipeName, pipeInstance);
|
17665
|
+
}
|
17639
17666
|
}
|
17667
|
+
pipeArgs.push(pipeInstance);
|
17640
17668
|
}
|
17641
|
-
pipeArgs.
|
17669
|
+
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
17670
|
+
boundFn = fn.bind(undefined, ...pipeArgs);
|
17671
|
+
}
|
17672
|
+
else {
|
17673
|
+
boundFn = fn.bind(undefined, undefined);
|
17642
17674
|
}
|
17643
|
-
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
17644
|
-
boundFn = fn.bind(undefined, ...pipeArgs);
|
17645
|
-
}
|
17646
|
-
else {
|
17647
|
-
boundFn = fn.bind(undefined, undefined);
|
17648
17675
|
}
|
17649
17676
|
}
|
17650
17677
|
}
|
17651
17678
|
exprFnCache.set(expr, boundFn);
|
17652
17679
|
return boundFn;
|
17653
17680
|
}
|
17681
|
+
function simpleFunctionEvaluator(expr, ctx, locals) {
|
17682
|
+
let _ctx = Object.assign({}, locals);
|
17683
|
+
Object.setPrototypeOf(_ctx, ctx);
|
17684
|
+
let parts = expr.split('(');
|
17685
|
+
let fnName = parts[0];
|
17686
|
+
let computedFn = _.get(ctx, fnName);
|
17687
|
+
if (computedFn) {
|
17688
|
+
let args = parts[1].replace(')', '');
|
17689
|
+
args = args.split(',');
|
17690
|
+
let computedArgs = [];
|
17691
|
+
args.forEach((arg) => {
|
17692
|
+
arg = arg && arg.trim();
|
17693
|
+
computedArgs.push(_.get(_ctx, arg));
|
17694
|
+
});
|
17695
|
+
return computedFn.bind(_ctx)(...computedArgs);
|
17696
|
+
}
|
17697
|
+
}
|
17654
17698
|
function $parseEvent(expr, defOnly) {
|
17655
17699
|
if (!isString(expr)) {
|
17656
17700
|
return noop;
|
@@ -17668,13 +17712,18 @@ function $parseEvent(expr, defOnly) {
|
|
17668
17712
|
}
|
17669
17713
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
17670
17714
|
if (!fn) {
|
17671
|
-
|
17672
|
-
|
17673
|
-
|
17674
|
-
|
17715
|
+
if (isCSPEnabled()) {
|
17716
|
+
fn = simpleFunctionEvaluator.bind(undefined, expr);
|
17717
|
+
}
|
17718
|
+
else {
|
17719
|
+
const parser = new Parser$1(new Lexer);
|
17720
|
+
const ast = parser.parseAction(expr, '', 0);
|
17721
|
+
if (ast.errors.length) {
|
17722
|
+
return noop;
|
17723
|
+
}
|
17724
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
17725
|
+
fn = astCompiler.compile(defOnly);
|
17675
17726
|
}
|
17676
|
-
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
17677
|
-
fn = astCompiler.compile(defOnly);
|
17678
17727
|
}
|
17679
17728
|
eventFnCache.set(expr, fn);
|
17680
17729
|
return fn;
|
@@ -17688,7 +17737,6 @@ const getFnByExpr = (expr) => fnNameMap.get(expr);
|
|
17688
17737
|
const fnExecutor = (expr, exprType) => {
|
17689
17738
|
let fn = getFnByExpr(expr);
|
17690
17739
|
if (!fn) {
|
17691
|
-
console.warn("didn't find fn for the expr: ", expr, ". Falling back to runtime evaluation");
|
17692
17740
|
return;
|
17693
17741
|
}
|
17694
17742
|
const usedPipes = fn.usedPipes || [];
|
@@ -17731,7 +17779,7 @@ const fnExecutor = (expr, exprType) => {
|
|
17731
17779
|
}
|
17732
17780
|
return fn;
|
17733
17781
|
};
|
17734
|
-
const ɵ
|
17782
|
+
const ɵ12 = fnExecutor;
|
17735
17783
|
const getFnForBindExpr = (expr) => {
|
17736
17784
|
return fnExecutor(expr, ExpressionType$1.Binding);
|
17737
17785
|
};
|
@@ -17758,3 +17806,4 @@ exports.ɵ8 = ɵ8;
|
|
17758
17806
|
exports.ɵ9 = ɵ9;
|
17759
17807
|
exports.ɵ10 = ɵ10;
|
17760
17808
|
exports.ɵ11 = ɵ11;
|
17809
|
+
exports.ɵ12 = ɵ12;
|
@@ -42658,6 +42658,20 @@ const nullPipe = () => {
|
|
42658
42658
|
transform: noop$1$1
|
42659
42659
|
};
|
42660
42660
|
};
|
42661
|
+
let _cspEnabled;
|
42662
|
+
const isCSPEnabled = () => {
|
42663
|
+
if (typeof _cspEnabled !== 'undefined') {
|
42664
|
+
return _cspEnabled;
|
42665
|
+
}
|
42666
|
+
try {
|
42667
|
+
new Function();
|
42668
|
+
_cspEnabled = false;
|
42669
|
+
}
|
42670
|
+
catch (e) {
|
42671
|
+
_cspEnabled = true;
|
42672
|
+
}
|
42673
|
+
return _cspEnabled;
|
42674
|
+
};
|
42661
42675
|
let pipeProvider;
|
42662
42676
|
var ExpressionType$1;
|
42663
42677
|
(function (ExpressionType$$1) {
|
@@ -42689,53 +42703,82 @@ function $parseExpr(expr, defOnly) {
|
|
42689
42703
|
}
|
42690
42704
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
42691
42705
|
if (!boundFn) {
|
42692
|
-
|
42693
|
-
|
42694
|
-
if (
|
42695
|
-
|
42696
|
-
|
42706
|
+
// If CSP enabled, function def not found from the generated fn expressions for the page.
|
42707
|
+
// Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html
|
42708
|
+
if (isCSPEnabled()) {
|
42709
|
+
boundFn = function (ctx, locals) {
|
42710
|
+
// handle internal bindings for wm widgets used inside a component
|
42711
|
+
let _ctx = Object.assign({}, locals);
|
42712
|
+
Object.setPrototypeOf(_ctx, ctx);
|
42713
|
+
return _.get(_ctx, expr);
|
42714
|
+
};
|
42697
42715
|
}
|
42698
42716
|
else {
|
42699
|
-
const
|
42700
|
-
const
|
42701
|
-
|
42702
|
-
|
42703
|
-
|
42704
|
-
}
|
42705
|
-
|
42706
|
-
const
|
42707
|
-
|
42708
|
-
|
42709
|
-
|
42710
|
-
|
42711
|
-
|
42712
|
-
|
42713
|
-
|
42714
|
-
|
42715
|
-
|
42716
|
-
|
42717
|
-
|
42718
|
-
|
42719
|
-
|
42720
|
-
pipeInstance = pipeProvider.getInstance(pipeName);
|
42717
|
+
const parser = new Parser$1(new Lexer);
|
42718
|
+
const ast = parser.parseBinding(expr, '', 0);
|
42719
|
+
if (ast.errors.length) {
|
42720
|
+
fn = noop$1$1;
|
42721
|
+
boundFn = fn;
|
42722
|
+
}
|
42723
|
+
else {
|
42724
|
+
const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();
|
42725
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Binding, pipeNameVsIsPureMap);
|
42726
|
+
fn = astCompiler.compile(defOnly);
|
42727
|
+
if (defOnly) {
|
42728
|
+
return fn;
|
42729
|
+
}
|
42730
|
+
if (fn.usedPipes.length) {
|
42731
|
+
const pipeArgs = [];
|
42732
|
+
let hasPurePipe = false;
|
42733
|
+
for (const [pipeName] of fn.usedPipes) {
|
42734
|
+
const pipeInfo = pipeProvider.meta(pipeName);
|
42735
|
+
let pipeInstance;
|
42736
|
+
if (!pipeInfo) {
|
42737
|
+
pipeInstance = nullPipe;
|
42721
42738
|
}
|
42722
|
-
|
42723
|
-
|
42739
|
+
else {
|
42740
|
+
if (pipeInfo.pure) {
|
42741
|
+
hasPurePipe = true;
|
42742
|
+
pipeInstance = purePipes.get(pipeName);
|
42743
|
+
}
|
42744
|
+
if (!pipeInstance) {
|
42745
|
+
pipeInstance = pipeProvider.getInstance(pipeName);
|
42746
|
+
}
|
42747
|
+
if (pipeInfo.pure) {
|
42748
|
+
purePipes.set(pipeName, pipeInstance);
|
42749
|
+
}
|
42724
42750
|
}
|
42751
|
+
pipeArgs.push(pipeInstance);
|
42725
42752
|
}
|
42726
|
-
pipeArgs.
|
42753
|
+
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
42754
|
+
boundFn = fn.bind(undefined, ...pipeArgs);
|
42755
|
+
}
|
42756
|
+
else {
|
42757
|
+
boundFn = fn.bind(undefined, undefined);
|
42727
42758
|
}
|
42728
|
-
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
42729
|
-
boundFn = fn.bind(undefined, ...pipeArgs);
|
42730
|
-
}
|
42731
|
-
else {
|
42732
|
-
boundFn = fn.bind(undefined, undefined);
|
42733
42759
|
}
|
42734
42760
|
}
|
42735
42761
|
}
|
42736
42762
|
exprFnCache.set(expr, boundFn);
|
42737
42763
|
return boundFn;
|
42738
42764
|
}
|
42765
|
+
function simpleFunctionEvaluator(expr, ctx, locals) {
|
42766
|
+
let _ctx = Object.assign({}, locals);
|
42767
|
+
Object.setPrototypeOf(_ctx, ctx);
|
42768
|
+
let parts = expr.split('(');
|
42769
|
+
let fnName = parts[0];
|
42770
|
+
let computedFn = _.get(ctx, fnName);
|
42771
|
+
if (computedFn) {
|
42772
|
+
let args = parts[1].replace(')', '');
|
42773
|
+
args = args.split(',');
|
42774
|
+
let computedArgs = [];
|
42775
|
+
args.forEach((arg) => {
|
42776
|
+
arg = arg && arg.trim();
|
42777
|
+
computedArgs.push(_.get(_ctx, arg));
|
42778
|
+
});
|
42779
|
+
return computedFn.bind(_ctx)(...computedArgs);
|
42780
|
+
}
|
42781
|
+
}
|
42739
42782
|
function $parseEvent(expr, defOnly) {
|
42740
42783
|
if (!isString$1(expr)) {
|
42741
42784
|
return noop$1$1;
|
@@ -42753,13 +42796,18 @@ function $parseEvent(expr, defOnly) {
|
|
42753
42796
|
}
|
42754
42797
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
42755
42798
|
if (!fn) {
|
42756
|
-
|
42757
|
-
|
42758
|
-
|
42759
|
-
|
42799
|
+
if (isCSPEnabled()) {
|
42800
|
+
fn = simpleFunctionEvaluator.bind(undefined, expr);
|
42801
|
+
}
|
42802
|
+
else {
|
42803
|
+
const parser = new Parser$1(new Lexer);
|
42804
|
+
const ast = parser.parseAction(expr, '', 0);
|
42805
|
+
if (ast.errors.length) {
|
42806
|
+
return noop$1$1;
|
42807
|
+
}
|
42808
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
42809
|
+
fn = astCompiler.compile(defOnly);
|
42760
42810
|
}
|
42761
|
-
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
42762
|
-
fn = astCompiler.compile(defOnly);
|
42763
42811
|
}
|
42764
42812
|
eventFnCache.set(expr, fn);
|
42765
42813
|
return fn;
|
@@ -42769,7 +42817,6 @@ const getFnByExpr = (expr) => fnNameMap.get(expr);
|
|
42769
42817
|
const fnExecutor = (expr, exprType) => {
|
42770
42818
|
let fn = getFnByExpr(expr);
|
42771
42819
|
if (!fn) {
|
42772
|
-
console.warn("didn't find fn for the expr: ", expr, ". Falling back to runtime evaluation");
|
42773
42820
|
return;
|
42774
42821
|
}
|
42775
42822
|
const usedPipes = fn.usedPipes || [];
|
@@ -43657,10 +43704,26 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
43657
43704
|
return Promise.resolve();
|
43658
43705
|
}
|
43659
43706
|
if (loadViaScriptTag) {
|
43660
|
-
return
|
43661
|
-
|
43662
|
-
script.
|
43663
|
-
|
43707
|
+
return new Promise((resolve, reject) => {
|
43708
|
+
let script = document.createElement('script');
|
43709
|
+
script.type = 'text/javascript';
|
43710
|
+
script.src = _url;
|
43711
|
+
script.async = false;
|
43712
|
+
if (script.readyState) { //IE
|
43713
|
+
script.onreadystatechange = () => {
|
43714
|
+
if (script.readyState === "loaded" || script.readyState === "complete") {
|
43715
|
+
script.onreadystatechange = null;
|
43716
|
+
resolve(true);
|
43717
|
+
}
|
43718
|
+
};
|
43719
|
+
}
|
43720
|
+
else { //Other browsers
|
43721
|
+
script.onload = () => {
|
43722
|
+
resolve(true);
|
43723
|
+
};
|
43724
|
+
}
|
43725
|
+
script.onerror = (error) => reject(error);
|
43726
|
+
document.getElementsByTagName('head')[0].appendChild(script);
|
43664
43727
|
});
|
43665
43728
|
}
|
43666
43729
|
else if (cacheable) {
|
@@ -43676,13 +43739,6 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
43676
43739
|
.done(response => response)
|
43677
43740
|
.fail(reason => reason);
|
43678
43741
|
}
|
43679
|
-
// return fetch(_url)
|
43680
|
-
// .then(response => response.text())
|
43681
|
-
// .then(text => {
|
43682
|
-
// const script = document.createElement('script');
|
43683
|
-
// script.textContent = text;
|
43684
|
-
// document.head.appendChild(script);
|
43685
|
-
// });
|
43686
43742
|
});
|
43687
43743
|
const loadScripts = (urls = [], loadViaScriptTag = true) => __awaiter$1(void 0, void 0, void 0, function* () {
|
43688
43744
|
for (const url of urls) {
|
@@ -38646,6 +38646,20 @@ const nullPipe = () => {
|
|
38646
38646
|
transform: noop$1$1
|
38647
38647
|
};
|
38648
38648
|
};
|
38649
|
+
let _cspEnabled;
|
38650
|
+
const isCSPEnabled = () => {
|
38651
|
+
if (typeof _cspEnabled !== 'undefined') {
|
38652
|
+
return _cspEnabled;
|
38653
|
+
}
|
38654
|
+
try {
|
38655
|
+
new Function();
|
38656
|
+
_cspEnabled = false;
|
38657
|
+
}
|
38658
|
+
catch (e) {
|
38659
|
+
_cspEnabled = true;
|
38660
|
+
}
|
38661
|
+
return _cspEnabled;
|
38662
|
+
};
|
38649
38663
|
let pipeProvider;
|
38650
38664
|
var ExpressionType$1;
|
38651
38665
|
(function (ExpressionType$$1) {
|
@@ -38677,53 +38691,82 @@ function $parseExpr(expr, defOnly) {
|
|
38677
38691
|
}
|
38678
38692
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
38679
38693
|
if (!boundFn) {
|
38680
|
-
|
38681
|
-
|
38682
|
-
if (
|
38683
|
-
|
38684
|
-
|
38694
|
+
// If CSP enabled, function def not found from the generated fn expressions for the page.
|
38695
|
+
// Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html
|
38696
|
+
if (isCSPEnabled()) {
|
38697
|
+
boundFn = function (ctx, locals) {
|
38698
|
+
// handle internal bindings for wm widgets used inside a component
|
38699
|
+
let _ctx = Object.assign({}, locals);
|
38700
|
+
Object.setPrototypeOf(_ctx, ctx);
|
38701
|
+
return _.get(_ctx, expr);
|
38702
|
+
};
|
38685
38703
|
}
|
38686
38704
|
else {
|
38687
|
-
const
|
38688
|
-
const
|
38689
|
-
|
38690
|
-
|
38691
|
-
|
38692
|
-
}
|
38693
|
-
|
38694
|
-
const
|
38695
|
-
|
38696
|
-
|
38697
|
-
|
38698
|
-
|
38699
|
-
|
38700
|
-
|
38701
|
-
|
38702
|
-
|
38703
|
-
|
38704
|
-
|
38705
|
-
|
38706
|
-
|
38707
|
-
|
38708
|
-
pipeInstance = pipeProvider.getInstance(pipeName);
|
38705
|
+
const parser = new Parser$1(new Lexer);
|
38706
|
+
const ast = parser.parseBinding(expr, '', 0);
|
38707
|
+
if (ast.errors.length) {
|
38708
|
+
fn = noop$1$1;
|
38709
|
+
boundFn = fn;
|
38710
|
+
}
|
38711
|
+
else {
|
38712
|
+
const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();
|
38713
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Binding, pipeNameVsIsPureMap);
|
38714
|
+
fn = astCompiler.compile(defOnly);
|
38715
|
+
if (defOnly) {
|
38716
|
+
return fn;
|
38717
|
+
}
|
38718
|
+
if (fn.usedPipes.length) {
|
38719
|
+
const pipeArgs = [];
|
38720
|
+
let hasPurePipe = false;
|
38721
|
+
for (const [pipeName] of fn.usedPipes) {
|
38722
|
+
const pipeInfo = pipeProvider.meta(pipeName);
|
38723
|
+
let pipeInstance;
|
38724
|
+
if (!pipeInfo) {
|
38725
|
+
pipeInstance = nullPipe;
|
38709
38726
|
}
|
38710
|
-
|
38711
|
-
|
38727
|
+
else {
|
38728
|
+
if (pipeInfo.pure) {
|
38729
|
+
hasPurePipe = true;
|
38730
|
+
pipeInstance = purePipes.get(pipeName);
|
38731
|
+
}
|
38732
|
+
if (!pipeInstance) {
|
38733
|
+
pipeInstance = pipeProvider.getInstance(pipeName);
|
38734
|
+
}
|
38735
|
+
if (pipeInfo.pure) {
|
38736
|
+
purePipes.set(pipeName, pipeInstance);
|
38737
|
+
}
|
38712
38738
|
}
|
38739
|
+
pipeArgs.push(pipeInstance);
|
38713
38740
|
}
|
38714
|
-
pipeArgs.
|
38741
|
+
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
38742
|
+
boundFn = fn.bind(undefined, ...pipeArgs);
|
38743
|
+
}
|
38744
|
+
else {
|
38745
|
+
boundFn = fn.bind(undefined, undefined);
|
38715
38746
|
}
|
38716
|
-
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
38717
|
-
boundFn = fn.bind(undefined, ...pipeArgs);
|
38718
|
-
}
|
38719
|
-
else {
|
38720
|
-
boundFn = fn.bind(undefined, undefined);
|
38721
38747
|
}
|
38722
38748
|
}
|
38723
38749
|
}
|
38724
38750
|
exprFnCache.set(expr, boundFn);
|
38725
38751
|
return boundFn;
|
38726
38752
|
}
|
38753
|
+
function simpleFunctionEvaluator(expr, ctx, locals) {
|
38754
|
+
let _ctx = Object.assign({}, locals);
|
38755
|
+
Object.setPrototypeOf(_ctx, ctx);
|
38756
|
+
let parts = expr.split('(');
|
38757
|
+
let fnName = parts[0];
|
38758
|
+
let computedFn = _.get(ctx, fnName);
|
38759
|
+
if (computedFn) {
|
38760
|
+
let args = parts[1].replace(')', '');
|
38761
|
+
args = args.split(',');
|
38762
|
+
let computedArgs = [];
|
38763
|
+
args.forEach((arg) => {
|
38764
|
+
arg = arg && arg.trim();
|
38765
|
+
computedArgs.push(_.get(_ctx, arg));
|
38766
|
+
});
|
38767
|
+
return computedFn.bind(_ctx)(...computedArgs);
|
38768
|
+
}
|
38769
|
+
}
|
38727
38770
|
function $parseEvent(expr, defOnly) {
|
38728
38771
|
if (!isString$1(expr)) {
|
38729
38772
|
return noop$1$1;
|
@@ -38741,13 +38784,18 @@ function $parseEvent(expr, defOnly) {
|
|
38741
38784
|
}
|
38742
38785
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
38743
38786
|
if (!fn) {
|
38744
|
-
|
38745
|
-
|
38746
|
-
|
38747
|
-
|
38787
|
+
if (isCSPEnabled()) {
|
38788
|
+
fn = simpleFunctionEvaluator.bind(undefined, expr);
|
38789
|
+
}
|
38790
|
+
else {
|
38791
|
+
const parser = new Parser$1(new Lexer);
|
38792
|
+
const ast = parser.parseAction(expr, '', 0);
|
38793
|
+
if (ast.errors.length) {
|
38794
|
+
return noop$1$1;
|
38795
|
+
}
|
38796
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
38797
|
+
fn = astCompiler.compile(defOnly);
|
38748
38798
|
}
|
38749
|
-
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
38750
|
-
fn = astCompiler.compile(defOnly);
|
38751
38799
|
}
|
38752
38800
|
eventFnCache.set(expr, fn);
|
38753
38801
|
return fn;
|
@@ -38757,7 +38805,6 @@ const getFnByExpr = (expr) => fnNameMap.get(expr);
|
|
38757
38805
|
const fnExecutor = (expr, exprType) => {
|
38758
38806
|
let fn = getFnByExpr(expr);
|
38759
38807
|
if (!fn) {
|
38760
|
-
console.warn("didn't find fn for the expr: ", expr, ". Falling back to runtime evaluation");
|
38761
38808
|
return;
|
38762
38809
|
}
|
38763
38810
|
const usedPipes = fn.usedPipes || [];
|
@@ -39645,10 +39692,26 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
39645
39692
|
return Promise.resolve();
|
39646
39693
|
}
|
39647
39694
|
if (loadViaScriptTag) {
|
39648
|
-
return
|
39649
|
-
|
39650
|
-
script.
|
39651
|
-
|
39695
|
+
return new Promise((resolve, reject) => {
|
39696
|
+
let script = document.createElement('script');
|
39697
|
+
script.type = 'text/javascript';
|
39698
|
+
script.src = _url;
|
39699
|
+
script.async = false;
|
39700
|
+
if (script.readyState) { //IE
|
39701
|
+
script.onreadystatechange = () => {
|
39702
|
+
if (script.readyState === "loaded" || script.readyState === "complete") {
|
39703
|
+
script.onreadystatechange = null;
|
39704
|
+
resolve(true);
|
39705
|
+
}
|
39706
|
+
};
|
39707
|
+
}
|
39708
|
+
else { //Other browsers
|
39709
|
+
script.onload = () => {
|
39710
|
+
resolve(true);
|
39711
|
+
};
|
39712
|
+
}
|
39713
|
+
script.onerror = (error) => reject(error);
|
39714
|
+
document.getElementsByTagName('head')[0].appendChild(script);
|
39652
39715
|
});
|
39653
39716
|
}
|
39654
39717
|
else if (cacheable) {
|
@@ -39664,13 +39727,6 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
39664
39727
|
.done(response => response)
|
39665
39728
|
.fail(reason => reason);
|
39666
39729
|
}
|
39667
|
-
// return fetch(_url)
|
39668
|
-
// .then(response => response.text())
|
39669
|
-
// .then(text => {
|
39670
|
-
// const script = document.createElement('script');
|
39671
|
-
// script.textContent = text;
|
39672
|
-
// document.head.appendChild(script);
|
39673
|
-
// });
|
39674
39730
|
});
|
39675
39731
|
const loadScripts = (urls = [], loadViaScriptTag = true) => __awaiter$1(void 0, void 0, void 0, function* () {
|
39676
39732
|
for (const url of urls) {
|
@@ -41920,7 +41976,7 @@ const setDimensionProp = (cssObj, key, nv) => {
|
|
41920
41976
|
cssObj[cssKey] = nv;
|
41921
41977
|
}
|
41922
41978
|
};
|
41923
|
-
const ɵ12 = setDimensionProp;
|
41979
|
+
const ɵ12$1 = setDimensionProp;
|
41924
41980
|
const processDimensionAttributes = attrMap => {
|
41925
41981
|
const attrKeys = Array.from(attrMap.keys());
|
41926
41982
|
attrKeys.forEach((attrKey) => {
|
@@ -45074,7 +45130,7 @@ exports.ɵ0 = ɵ0$h;
|
|
45074
45130
|
exports.ɵ1 = ɵ1$5;
|
45075
45131
|
exports.ɵ10 = ɵ10$1;
|
45076
45132
|
exports.ɵ11 = ɵ11$1;
|
45077
|
-
exports.ɵ12 = ɵ12;
|
45133
|
+
exports.ɵ12 = ɵ12$1;
|
45078
45134
|
exports.ɵ13 = ɵ13;
|
45079
45135
|
exports.ɵ14 = ɵ14;
|
45080
45136
|
exports.ɵ2 = ɵ2$4;
|
@@ -38646,6 +38646,20 @@ const nullPipe = () => {
|
|
38646
38646
|
transform: noop$1$1
|
38647
38647
|
};
|
38648
38648
|
};
|
38649
|
+
let _cspEnabled;
|
38650
|
+
const isCSPEnabled = () => {
|
38651
|
+
if (typeof _cspEnabled !== 'undefined') {
|
38652
|
+
return _cspEnabled;
|
38653
|
+
}
|
38654
|
+
try {
|
38655
|
+
new Function();
|
38656
|
+
_cspEnabled = false;
|
38657
|
+
}
|
38658
|
+
catch (e) {
|
38659
|
+
_cspEnabled = true;
|
38660
|
+
}
|
38661
|
+
return _cspEnabled;
|
38662
|
+
};
|
38649
38663
|
let pipeProvider;
|
38650
38664
|
var ExpressionType$1;
|
38651
38665
|
(function (ExpressionType$$1) {
|
@@ -38677,53 +38691,82 @@ function $parseExpr(expr, defOnly) {
|
|
38677
38691
|
}
|
38678
38692
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
38679
38693
|
if (!boundFn) {
|
38680
|
-
|
38681
|
-
|
38682
|
-
if (
|
38683
|
-
|
38684
|
-
|
38694
|
+
// If CSP enabled, function def not found from the generated fn expressions for the page.
|
38695
|
+
// Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html
|
38696
|
+
if (isCSPEnabled()) {
|
38697
|
+
boundFn = function (ctx, locals) {
|
38698
|
+
// handle internal bindings for wm widgets used inside a component
|
38699
|
+
let _ctx = Object.assign({}, locals);
|
38700
|
+
Object.setPrototypeOf(_ctx, ctx);
|
38701
|
+
return _.get(_ctx, expr);
|
38702
|
+
};
|
38685
38703
|
}
|
38686
38704
|
else {
|
38687
|
-
const
|
38688
|
-
const
|
38689
|
-
|
38690
|
-
|
38691
|
-
|
38692
|
-
}
|
38693
|
-
|
38694
|
-
const
|
38695
|
-
|
38696
|
-
|
38697
|
-
|
38698
|
-
|
38699
|
-
|
38700
|
-
|
38701
|
-
|
38702
|
-
|
38703
|
-
|
38704
|
-
|
38705
|
-
|
38706
|
-
|
38707
|
-
|
38708
|
-
pipeInstance = pipeProvider.getInstance(pipeName);
|
38705
|
+
const parser = new Parser$1(new Lexer);
|
38706
|
+
const ast = parser.parseBinding(expr, '', 0);
|
38707
|
+
if (ast.errors.length) {
|
38708
|
+
fn = noop$1$1;
|
38709
|
+
boundFn = fn;
|
38710
|
+
}
|
38711
|
+
else {
|
38712
|
+
const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();
|
38713
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Binding, pipeNameVsIsPureMap);
|
38714
|
+
fn = astCompiler.compile(defOnly);
|
38715
|
+
if (defOnly) {
|
38716
|
+
return fn;
|
38717
|
+
}
|
38718
|
+
if (fn.usedPipes.length) {
|
38719
|
+
const pipeArgs = [];
|
38720
|
+
let hasPurePipe = false;
|
38721
|
+
for (const [pipeName] of fn.usedPipes) {
|
38722
|
+
const pipeInfo = pipeProvider.meta(pipeName);
|
38723
|
+
let pipeInstance;
|
38724
|
+
if (!pipeInfo) {
|
38725
|
+
pipeInstance = nullPipe;
|
38709
38726
|
}
|
38710
|
-
|
38711
|
-
|
38727
|
+
else {
|
38728
|
+
if (pipeInfo.pure) {
|
38729
|
+
hasPurePipe = true;
|
38730
|
+
pipeInstance = purePipes.get(pipeName);
|
38731
|
+
}
|
38732
|
+
if (!pipeInstance) {
|
38733
|
+
pipeInstance = pipeProvider.getInstance(pipeName);
|
38734
|
+
}
|
38735
|
+
if (pipeInfo.pure) {
|
38736
|
+
purePipes.set(pipeName, pipeInstance);
|
38737
|
+
}
|
38712
38738
|
}
|
38739
|
+
pipeArgs.push(pipeInstance);
|
38713
38740
|
}
|
38714
|
-
pipeArgs.
|
38741
|
+
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
38742
|
+
boundFn = fn.bind(undefined, ...pipeArgs);
|
38743
|
+
}
|
38744
|
+
else {
|
38745
|
+
boundFn = fn.bind(undefined, undefined);
|
38715
38746
|
}
|
38716
|
-
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
38717
|
-
boundFn = fn.bind(undefined, ...pipeArgs);
|
38718
|
-
}
|
38719
|
-
else {
|
38720
|
-
boundFn = fn.bind(undefined, undefined);
|
38721
38747
|
}
|
38722
38748
|
}
|
38723
38749
|
}
|
38724
38750
|
exprFnCache.set(expr, boundFn);
|
38725
38751
|
return boundFn;
|
38726
38752
|
}
|
38753
|
+
function simpleFunctionEvaluator(expr, ctx, locals) {
|
38754
|
+
let _ctx = Object.assign({}, locals);
|
38755
|
+
Object.setPrototypeOf(_ctx, ctx);
|
38756
|
+
let parts = expr.split('(');
|
38757
|
+
let fnName = parts[0];
|
38758
|
+
let computedFn = _.get(ctx, fnName);
|
38759
|
+
if (computedFn) {
|
38760
|
+
let args = parts[1].replace(')', '');
|
38761
|
+
args = args.split(',');
|
38762
|
+
let computedArgs = [];
|
38763
|
+
args.forEach((arg) => {
|
38764
|
+
arg = arg && arg.trim();
|
38765
|
+
computedArgs.push(_.get(_ctx, arg));
|
38766
|
+
});
|
38767
|
+
return computedFn.bind(_ctx)(...computedArgs);
|
38768
|
+
}
|
38769
|
+
}
|
38727
38770
|
function $parseEvent(expr, defOnly) {
|
38728
38771
|
if (!isString$1(expr)) {
|
38729
38772
|
return noop$1$1;
|
@@ -38741,13 +38784,18 @@ function $parseEvent(expr, defOnly) {
|
|
38741
38784
|
}
|
38742
38785
|
// fallback to generate function in runtime. This will break if CSP is enabled
|
38743
38786
|
if (!fn) {
|
38744
|
-
|
38745
|
-
|
38746
|
-
|
38747
|
-
|
38787
|
+
if (isCSPEnabled()) {
|
38788
|
+
fn = simpleFunctionEvaluator.bind(undefined, expr);
|
38789
|
+
}
|
38790
|
+
else {
|
38791
|
+
const parser = new Parser$1(new Lexer);
|
38792
|
+
const ast = parser.parseAction(expr, '', 0);
|
38793
|
+
if (ast.errors.length) {
|
38794
|
+
return noop$1$1;
|
38795
|
+
}
|
38796
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
38797
|
+
fn = astCompiler.compile(defOnly);
|
38748
38798
|
}
|
38749
|
-
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
38750
|
-
fn = astCompiler.compile(defOnly);
|
38751
38799
|
}
|
38752
38800
|
eventFnCache.set(expr, fn);
|
38753
38801
|
return fn;
|
@@ -38757,7 +38805,6 @@ const getFnByExpr = (expr) => fnNameMap.get(expr);
|
|
38757
38805
|
const fnExecutor = (expr, exprType) => {
|
38758
38806
|
let fn = getFnByExpr(expr);
|
38759
38807
|
if (!fn) {
|
38760
|
-
console.warn("didn't find fn for the expr: ", expr, ". Falling back to runtime evaluation");
|
38761
38808
|
return;
|
38762
38809
|
}
|
38763
38810
|
const usedPipes = fn.usedPipes || [];
|
@@ -39645,10 +39692,26 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
39645
39692
|
return Promise.resolve();
|
39646
39693
|
}
|
39647
39694
|
if (loadViaScriptTag) {
|
39648
|
-
return
|
39649
|
-
|
39650
|
-
script.
|
39651
|
-
|
39695
|
+
return new Promise((resolve, reject) => {
|
39696
|
+
let script = document.createElement('script');
|
39697
|
+
script.type = 'text/javascript';
|
39698
|
+
script.src = _url;
|
39699
|
+
script.async = false;
|
39700
|
+
if (script.readyState) { //IE
|
39701
|
+
script.onreadystatechange = () => {
|
39702
|
+
if (script.readyState === "loaded" || script.readyState === "complete") {
|
39703
|
+
script.onreadystatechange = null;
|
39704
|
+
resolve(true);
|
39705
|
+
}
|
39706
|
+
};
|
39707
|
+
}
|
39708
|
+
else { //Other browsers
|
39709
|
+
script.onload = () => {
|
39710
|
+
resolve(true);
|
39711
|
+
};
|
39712
|
+
}
|
39713
|
+
script.onerror = (error) => reject(error);
|
39714
|
+
document.getElementsByTagName('head')[0].appendChild(script);
|
39652
39715
|
});
|
39653
39716
|
}
|
39654
39717
|
else if (cacheable) {
|
@@ -39664,13 +39727,6 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
39664
39727
|
.done(response => response)
|
39665
39728
|
.fail(reason => reason);
|
39666
39729
|
}
|
39667
|
-
// return fetch(_url)
|
39668
|
-
// .then(response => response.text())
|
39669
|
-
// .then(text => {
|
39670
|
-
// const script = document.createElement('script');
|
39671
|
-
// script.textContent = text;
|
39672
|
-
// document.head.appendChild(script);
|
39673
|
-
// });
|
39674
39730
|
});
|
39675
39731
|
const loadScripts = (urls = [], loadViaScriptTag = true) => __awaiter$1(void 0, void 0, void 0, function* () {
|
39676
39732
|
for (const url of urls) {
|
@@ -41920,7 +41976,7 @@ const setDimensionProp = (cssObj, key, nv) => {
|
|
41920
41976
|
cssObj[cssKey] = nv;
|
41921
41977
|
}
|
41922
41978
|
};
|
41923
|
-
const ɵ12 = setDimensionProp;
|
41979
|
+
const ɵ12$1 = setDimensionProp;
|
41924
41980
|
const processDimensionAttributes = attrMap => {
|
41925
41981
|
const attrKeys = Array.from(attrMap.keys());
|
41926
41982
|
attrKeys.forEach((attrKey) => {
|
@@ -45074,7 +45130,7 @@ exports.ɵ0 = ɵ0$h;
|
|
45074
45130
|
exports.ɵ1 = ɵ1$5;
|
45075
45131
|
exports.ɵ10 = ɵ10$1;
|
45076
45132
|
exports.ɵ11 = ɵ11$1;
|
45077
|
-
exports.ɵ12 = ɵ12;
|
45133
|
+
exports.ɵ12 = ɵ12$1;
|
45078
45134
|
exports.ɵ13 = ɵ13;
|
45079
45135
|
exports.ɵ14 = ɵ14;
|
45080
45136
|
exports.ɵ2 = ɵ2$4;
|
angular-codegen/package.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
const{getHandlebarTemplate:getHandlebarTemplate,safeString:safeString}=require("./handlebar-helpers"),cheerio=require("cheerio");let processedPageExpr=[];const isDisplayExpressionAttr=e=>{return["displayexpression","displaylabel","displayimagesrc","nodelabel","nodeicon","nodechildren","nodeid","itemid","itemlabel","itemicon","itemaction","itembadge","itemchildren","itemlink","itemtarget","userrole","isactive"].includes(e)},checkIsCustomPipeExpression=function(e){let r=e.match(/(custom(\s*:))/g);return r&&r.length},updateBindExpressionForDisplayexpression=e=>{let r,t,n,s,
|
1
|
+
const{getHandlebarTemplate:getHandlebarTemplate,safeString:safeString}=require("./handlebar-helpers"),cheerio=require("cheerio");let processedPageExpr=[];const isDisplayExpressionAttr=e=>{return["displayexpression","displaylabel","displayimagesrc","nodelabel","nodeicon","nodechildren","nodeid","itemid","itemlabel","itemicon","itemaction","itembadge","itemchildren","itemlink","itemtarget","userrole","isactive"].includes(e)},checkIsCustomPipeExpression=function(e){let r=e.match(/(custom(\s*:))/g);return r&&r.length},updateBindExpressionForDisplayexpression=e=>{let r,t,n,i,s,a,o,l,p,d="";for(checkIsCustomPipeExpression(e)&&(e+=": __1"),e=e.replace(/\$\[data\[\$i\]/g,"$[__1"),n=0;n<e.length;n++)if(r=e[n],t=e[n+1],"$"===r&&"["===t){for(a=1,p=!1,o=!1,i=n+2;i<e.length;i++)if(" "!==(s=e[i])&&(p||(o='"'===e[i]||"'"===e[i],p=!0),"["===s?a++:"]"===s&&a--,!a)){l=e.substring(n+2,i),d+=o?"__1["+l+"]":l;break}n=i}else d+=r;return d},updateArrTypeExpr=(e,r,t)=>{let n=/\[\$i\]/g;return isArrayTypeProperty(r,t)?e.substr(0,e.lastIndexOf("[$i]")).replace("[$i]","[0]"):e.replace(n,"[0]")},isArrayTypeProperty=(e,r)=>{const t=r?r.attribs:{};return["dataset","dataoptions","customcolors"].includes(e)||"datavalue"===e&&void 0!==t.wmcheckbox||"selecteditem"===e&&void 0!==t.wmtable||"selecteditem"===e&&void 0!==t.wmlist||"datavalue"===e&&t.wmselect&&t.multiple},getFnForExpr=(e,r)=>{let t=(r=r||{}).isEvent,n=r.widgetNode,i=r.prop;if(t||-1===e.indexOf("[$i]")||(e=updateArrTypeExpr(e,i,n)),processedPageExpr.includes(e))return"";processedPageExpr.push(e);let s,a="";const o=require("../dependencies/expression-parser.cjs");s=t?o.$parseEvent(e,!0):o.$parseExpr(e,!0);const l=safeString(s.fnArgs),p=safeString(s.fnBody),d=s.pipes||[];d.forEach((e,r)=>{a+="["+e.reduce((e,r)=>"'"+e+"','"+r+"'")+"]"+(r<d.length?",":"")}),a=safeString(a);const c=safeString(e.replace(/"/g,'\\"'));return getHandlebarTemplate("expr-vs-fn")({expr:c,fnArgs:l,fnBody:p,fnPipes:a})+","},getExprForBinding=e=>{let r="";return"string"==typeof e&&e.startsWith("bind:")&&(r=getFnForExpr(e.replace("bind:",""))),r},generateFilterExprBindings=e=>{let r="";return e.rules&&_.forEach(e.rules,(e,t)=>{e.rules?r+=generateFilterExprBindings(e):("between"===e.matchMode&&(r+=getExprForBinding(e.secondvalue)),r+=getExprForBinding(e.value))}),r},getCRUDVariableExpressions=e=>{let r=e.dataBinding||{},t="";for(let e in r){(r[e]||[]).forEach(e=>{t+=getExprForBinding(e.value)})}return t},generateVariableExpressions=e=>{let r="";e=JSON.parse(e);const t=["onBefore","onBeforeUpdate","onResult","onBeforeOpen","onOpen","onBeforeMessageSend","onMessageReceive","onProgress","onError","onBeforeDatasetReady","onCanUpdate","onClick","onHide","onOk","onCancel","onBeforeClose","onClose","onTimerFire","onSuccess","onOnline","onOffline"];for(const n in e){const i=e[n];if("wm.LiveVariable"===i.category&&"read"===i.operation)r+=generateFilterExprBindings(i.filterExpressions);else if("wm.CrudVariable"===i.category)r+=getCRUDVariableExpressions(i);else{(i.dataBinding||[]).forEach(e=>{r+=getExprForBinding(e.value)})}t.forEach(e=>{i[e]&&(r+=getFnForExpr(i[e],{isEvent:!0}))})}return r},generateExtraWidgetBindings=(e,r)=>{let t="";switch(r){case"wmalertdialog":t+=getFnForExpr("oktext");break;case"wmconfirmdialog":t+=getFnForExpr("oktext"),t+=getFnForExpr("canceltext");break;case"wmtable":t+=e.attribs.rowngclass?getFnForExpr(e.attribs.rowngclass):"";break;case"wmtablecolumn":t+=e.attribs["col-ng-class"]?getFnForExpr(e.attribs["col-ng-class"]):""}return t},isActionTypeNode=e=>["wmtableaction","wmtablerowaction","wmformaction"].some(r=>void 0!==e.attribs[r]),generatePageExpressions=(e,r,t)=>{let n,i,s="";const a=cheerio.load(e);if(processedPageExpr.length=0,a("*").each((e,r)=>{for(let e in r.attribs)e.endsWith(".bind")?(i=e.replace(".bind",""),n=r.attribs[e],isDisplayExpressionAttr(i)&&(n=updateBindExpressionForDisplayexpression(n),console.log("++++++++displayexpressoin binding updated",n)),s+=getFnForExpr(n,{prop:i,widgetNode:r})):e.endsWith(".event")?(i=e.replace(".event",""),n=r.attribs[e],s+=getFnForExpr(n,{isEvent:!0})):"displayexpression"===e?(n=r.attribs[e],s+=getFnForExpr(n)):"action"===e&&isActionTypeNode(r)&&(n=r.attribs[e],console.warn("<<<<<<<<found action node",n),s+=getFnForExpr(n));["wmalertdialog","wmconfirmdialog","wmtable","wmtablecolumn"].forEach(e=>{void 0!==r.attribs[e]&&(s+=generateExtraWidgetBindings(r,e))})}),s+=generateVariableExpressions(r),t){const e=(t=JSON.parse(t.toString())).properties||{};Object.keys(e).forEach(r=>{let t=e[r];"string"==typeof t.value&&t.value.startsWith("bind:")&&(s+=getFnForExpr(t.value.replace("bind:","")))})}return s};module.exports={generatePageExpressions:generatePageExpressions,generateVariableExpressions:generateVariableExpressions};
|