@wavemaker/angular-codegen 11.1.0-next.24309 → 11.1.0-next.24312
Sign up to get free protection for your applications and to get access to all the features.
- angular-codegen/angular-app/build-scripts/post-build.js +30 -50
- angular-codegen/angular-app/package.json +1 -1
- angular-codegen/angular-app/src/assets/styles/css/wm-style.css +1 -1
- angular-codegen/dependencies/app.component.html +22 -0
- angular-codegen/dependencies/expression-parser.cjs.js +20263 -0
- angular-codegen/dependencies/pipe-provider.cjs.js +71744 -0
- angular-codegen/dependencies/transpilation-mobile.cjs.js +190 -59
- angular-codegen/dependencies/transpilation-web.cjs.js +190 -59
- angular-codegen/package.json +1 -1
- angular-codegen/src/codegen-cli.js +1 -1
- angular-codegen/src/expr-parser-utils.js +1 -0
- angular-codegen/src/gen-app-variables.js +1 -1
- angular-codegen/src/gen-components.js +1 -1
- angular-codegen/src/handlebar-helpers.js +1 -1
- angular-codegen/src/pages-util.js +1 -1
- angular-codegen/src/wm-utils.js +1 -1
- angular-codegen/templates/app.component.script.js.hbs +6 -1
- angular-codegen/templates/component.expressions.ts.hbs +3 -0
- angular-codegen/templates/expr-vs-fn.hbs +3 -0
- angular-codegen/templates/page/page.component.ts.hbs +7 -1
- angular-codegen/templates/partial/partial.component.ts.hbs +6 -0
- angular-codegen/templates/prefab/prefab.component.ts.hbs +6 -0
@@ -41328,9 +41328,12 @@ class ASTCompiler {
|
|
41328
41328
|
cleanup() {
|
41329
41329
|
this.ast = this.cAst = this.stmts = this.cStmts = this.declarations = this.pipes = this.pipeNameVsIsPureMap = undefined;
|
41330
41330
|
}
|
41331
|
-
compile() {
|
41331
|
+
compile(defOnly) {
|
41332
41332
|
this.extendCtxWithLocals();
|
41333
41333
|
this.addReturnStmt(this.build(this.ast));
|
41334
|
+
if (defOnly) {
|
41335
|
+
return { fnBody: this.fnBody(), fnArgs: this.fnArgs(), pipes: this.pipes };
|
41336
|
+
}
|
41334
41337
|
const fn = new Function(this.fnArgs(), this.fnBody());
|
41335
41338
|
let boundFn;
|
41336
41339
|
if (this.exprType === ExpressionType$1.Binding) {
|
@@ -41349,13 +41352,27 @@ const nullPipe = () => {
|
|
41349
41352
|
transform: noop$1$1
|
41350
41353
|
};
|
41351
41354
|
};
|
41355
|
+
let _cspEnabled;
|
41356
|
+
const isCSPEnabled = () => {
|
41357
|
+
if (typeof _cspEnabled !== 'undefined') {
|
41358
|
+
return _cspEnabled;
|
41359
|
+
}
|
41360
|
+
try {
|
41361
|
+
new Function();
|
41362
|
+
_cspEnabled = false;
|
41363
|
+
}
|
41364
|
+
catch (e) {
|
41365
|
+
_cspEnabled = true;
|
41366
|
+
}
|
41367
|
+
return _cspEnabled;
|
41368
|
+
};
|
41352
41369
|
let pipeProvider;
|
41353
41370
|
var ExpressionType$1;
|
41354
41371
|
(function (ExpressionType$$1) {
|
41355
41372
|
ExpressionType$$1[ExpressionType$$1["Binding"] = 0] = "Binding";
|
41356
41373
|
ExpressionType$$1[ExpressionType$$1["Action"] = 1] = "Action";
|
41357
41374
|
})(ExpressionType$1 || (ExpressionType$1 = {}));
|
41358
|
-
function $parseExpr(expr) {
|
41375
|
+
function $parseExpr(expr, defOnly) {
|
41359
41376
|
if (!pipeProvider) {
|
41360
41377
|
console.log('set pipe provider');
|
41361
41378
|
return noop$1$1;
|
@@ -41374,51 +41391,89 @@ function $parseExpr(expr) {
|
|
41374
41391
|
if (fn) {
|
41375
41392
|
return fn;
|
41376
41393
|
}
|
41377
|
-
const parser = new Parser$1(new Lexer);
|
41378
|
-
const ast = parser.parseBinding(expr, '', 0);
|
41379
41394
|
let boundFn;
|
41380
|
-
if (
|
41381
|
-
|
41382
|
-
|
41383
|
-
|
41384
|
-
|
41385
|
-
|
41386
|
-
|
41387
|
-
|
41388
|
-
|
41389
|
-
|
41390
|
-
|
41391
|
-
|
41392
|
-
|
41393
|
-
|
41394
|
-
|
41395
|
-
|
41395
|
+
if (!defOnly) {
|
41396
|
+
boundFn = getFnForBindExpr(expr);
|
41397
|
+
}
|
41398
|
+
// fallback to generate function in runtime. This will break if CSP is enabled
|
41399
|
+
if (!boundFn) {
|
41400
|
+
// If CSP enabled, function def not found from the generated fn expressions for the page.
|
41401
|
+
// Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html
|
41402
|
+
if (isCSPEnabled()) {
|
41403
|
+
boundFn = function (ctx, locals) {
|
41404
|
+
// handle internal bindings for wm widgets used inside a component
|
41405
|
+
let _ctx = Object.assign({}, locals);
|
41406
|
+
Object.setPrototypeOf(_ctx, ctx);
|
41407
|
+
return _.get(_ctx, expr);
|
41408
|
+
};
|
41409
|
+
}
|
41410
|
+
else {
|
41411
|
+
const parser = new Parser$1(new Lexer);
|
41412
|
+
const ast = parser.parseBinding(expr, '', 0);
|
41413
|
+
if (ast.errors.length) {
|
41414
|
+
fn = noop$1$1;
|
41415
|
+
boundFn = fn;
|
41416
|
+
}
|
41417
|
+
else {
|
41418
|
+
const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();
|
41419
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Binding, pipeNameVsIsPureMap);
|
41420
|
+
fn = astCompiler.compile(defOnly);
|
41421
|
+
if (defOnly) {
|
41422
|
+
return fn;
|
41423
|
+
}
|
41424
|
+
if (fn.usedPipes.length) {
|
41425
|
+
const pipeArgs = [];
|
41426
|
+
let hasPurePipe = false;
|
41427
|
+
for (const [pipeName] of fn.usedPipes) {
|
41428
|
+
const pipeInfo = pipeProvider.meta(pipeName);
|
41429
|
+
let pipeInstance;
|
41430
|
+
if (!pipeInfo) {
|
41431
|
+
pipeInstance = nullPipe;
|
41432
|
+
}
|
41433
|
+
else {
|
41434
|
+
if (pipeInfo.pure) {
|
41435
|
+
hasPurePipe = true;
|
41436
|
+
pipeInstance = purePipes.get(pipeName);
|
41437
|
+
}
|
41438
|
+
if (!pipeInstance) {
|
41439
|
+
pipeInstance = pipeProvider.getInstance(pipeName);
|
41440
|
+
}
|
41441
|
+
if (pipeInfo.pure) {
|
41442
|
+
purePipes.set(pipeName, pipeInstance);
|
41443
|
+
}
|
41444
|
+
}
|
41445
|
+
pipeArgs.push(pipeInstance);
|
41446
|
+
}
|
41447
|
+
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
41448
|
+
boundFn = fn.bind(undefined, ...pipeArgs);
|
41396
41449
|
}
|
41397
41450
|
else {
|
41398
|
-
|
41399
|
-
hasPurePipe = true;
|
41400
|
-
pipeInstance = purePipes.get(pipeName);
|
41401
|
-
}
|
41402
|
-
if (!pipeInstance) {
|
41403
|
-
pipeInstance = pipeProvider.getInstance(pipeName);
|
41404
|
-
}
|
41405
|
-
if (pipeInfo.pure) {
|
41406
|
-
purePipes.set(pipeName, pipeInstance);
|
41407
|
-
}
|
41451
|
+
boundFn = fn.bind(undefined, undefined);
|
41408
41452
|
}
|
41409
|
-
pipeArgs.push(pipeInstance);
|
41410
41453
|
}
|
41411
|
-
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
41412
|
-
boundFn = fn.bind(undefined, ...pipeArgs);
|
41413
|
-
}
|
41414
|
-
else {
|
41415
|
-
boundFn = fn.bind(undefined, undefined);
|
41416
41454
|
}
|
41417
41455
|
}
|
41418
41456
|
exprFnCache.set(expr, boundFn);
|
41419
41457
|
return boundFn;
|
41420
41458
|
}
|
41421
|
-
function
|
41459
|
+
function simpleFunctionEvaluator(expr, ctx, locals) {
|
41460
|
+
let _ctx = Object.assign({}, locals);
|
41461
|
+
Object.setPrototypeOf(_ctx, ctx);
|
41462
|
+
let parts = expr.split('(');
|
41463
|
+
let fnName = parts[0];
|
41464
|
+
let computedFn = _.get(ctx, fnName);
|
41465
|
+
if (computedFn) {
|
41466
|
+
let args = parts[1].replace(')', '');
|
41467
|
+
args = args.split(',');
|
41468
|
+
let computedArgs = [];
|
41469
|
+
args.forEach((arg) => {
|
41470
|
+
arg = arg && arg.trim();
|
41471
|
+
computedArgs.push(_.get(_ctx, arg));
|
41472
|
+
});
|
41473
|
+
return computedFn.bind(_ctx)(...computedArgs);
|
41474
|
+
}
|
41475
|
+
}
|
41476
|
+
function $parseEvent(expr, defOnly) {
|
41422
41477
|
if (!isString$1(expr)) {
|
41423
41478
|
return noop$1$1;
|
41424
41479
|
}
|
@@ -41430,16 +41485,80 @@ function $parseEvent(expr) {
|
|
41430
41485
|
if (fn) {
|
41431
41486
|
return fn;
|
41432
41487
|
}
|
41433
|
-
|
41434
|
-
|
41435
|
-
|
41436
|
-
|
41488
|
+
if (!defOnly) {
|
41489
|
+
fn = getFnForEventExpr(expr);
|
41490
|
+
}
|
41491
|
+
// fallback to generate function in runtime. This will break if CSP is enabled
|
41492
|
+
if (!fn) {
|
41493
|
+
if (isCSPEnabled()) {
|
41494
|
+
fn = simpleFunctionEvaluator.bind(undefined, expr);
|
41495
|
+
}
|
41496
|
+
else {
|
41497
|
+
const parser = new Parser$1(new Lexer);
|
41498
|
+
const ast = parser.parseAction(expr, '', 0);
|
41499
|
+
if (ast.errors.length) {
|
41500
|
+
return noop$1$1;
|
41501
|
+
}
|
41502
|
+
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
41503
|
+
fn = astCompiler.compile(defOnly);
|
41504
|
+
}
|
41437
41505
|
}
|
41438
|
-
const astCompiler = new ASTCompiler(ast.ast, ExpressionType$1.Action);
|
41439
|
-
fn = astCompiler.compile();
|
41440
41506
|
eventFnCache.set(expr, fn);
|
41441
41507
|
return fn;
|
41442
41508
|
}
|
41509
|
+
const fnNameMap = new Map();
|
41510
|
+
const getFnByExpr = (expr) => fnNameMap.get(expr);
|
41511
|
+
const fnExecutor = (expr, exprType) => {
|
41512
|
+
let fn = getFnByExpr(expr);
|
41513
|
+
if (!fn) {
|
41514
|
+
return;
|
41515
|
+
}
|
41516
|
+
const usedPipes = fn.usedPipes || [];
|
41517
|
+
if (exprType === ExpressionType$1.Binding) {
|
41518
|
+
fn = fn.bind(undefined, plus, minus, isDef, getPurePipeVal);
|
41519
|
+
}
|
41520
|
+
else {
|
41521
|
+
fn = fn.bind(undefined, plus, minus, isDef);
|
41522
|
+
}
|
41523
|
+
if (usedPipes.length) {
|
41524
|
+
const pipeArgs = [];
|
41525
|
+
let hasPurePipe = false;
|
41526
|
+
for (const [pipeName] of usedPipes) {
|
41527
|
+
const pipeInfo = pipeProvider.meta(pipeName);
|
41528
|
+
let pipeInstance;
|
41529
|
+
if (!pipeInfo) {
|
41530
|
+
pipeInstance = nullPipe;
|
41531
|
+
}
|
41532
|
+
else {
|
41533
|
+
if (pipeInfo.pure) {
|
41534
|
+
hasPurePipe = true;
|
41535
|
+
pipeInstance = purePipes.get(pipeName);
|
41536
|
+
}
|
41537
|
+
if (!pipeInstance) {
|
41538
|
+
pipeInstance = pipeProvider.getInstance(pipeName);
|
41539
|
+
}
|
41540
|
+
if (pipeInfo.pure) {
|
41541
|
+
purePipes.set(pipeName, pipeInstance);
|
41542
|
+
}
|
41543
|
+
}
|
41544
|
+
pipeArgs.push(pipeInstance);
|
41545
|
+
}
|
41546
|
+
pipeArgs.unshift(hasPurePipe ? new Map() : undefined);
|
41547
|
+
fn = fn.bind(undefined, ...pipeArgs);
|
41548
|
+
}
|
41549
|
+
else {
|
41550
|
+
if (exprType === ExpressionType$1.Binding) {
|
41551
|
+
fn = fn.bind(undefined, undefined);
|
41552
|
+
}
|
41553
|
+
}
|
41554
|
+
return fn;
|
41555
|
+
};
|
41556
|
+
const getFnForBindExpr = (expr) => {
|
41557
|
+
return fnExecutor(expr, ExpressionType$1.Binding);
|
41558
|
+
};
|
41559
|
+
const getFnForEventExpr = (expr) => {
|
41560
|
+
return fnExecutor(expr, ExpressionType$1.Action);
|
41561
|
+
};
|
41443
41562
|
|
41444
41563
|
const registry = new Map();
|
41445
41564
|
const watchIdGenerator = new IDGenerator('watch-id-');
|
@@ -42280,10 +42399,26 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
42280
42399
|
return Promise.resolve();
|
42281
42400
|
}
|
42282
42401
|
if (loadViaScriptTag) {
|
42283
|
-
return
|
42284
|
-
|
42285
|
-
script.
|
42286
|
-
|
42402
|
+
return new Promise((resolve, reject) => {
|
42403
|
+
let script = document.createElement('script');
|
42404
|
+
script.type = 'text/javascript';
|
42405
|
+
script.src = _url;
|
42406
|
+
script.async = false;
|
42407
|
+
if (script.readyState) { //IE
|
42408
|
+
script.onreadystatechange = () => {
|
42409
|
+
if (script.readyState === "loaded" || script.readyState === "complete") {
|
42410
|
+
script.onreadystatechange = null;
|
42411
|
+
resolve(true);
|
42412
|
+
}
|
42413
|
+
};
|
42414
|
+
}
|
42415
|
+
else { //Other browsers
|
42416
|
+
script.onload = () => {
|
42417
|
+
resolve(true);
|
42418
|
+
};
|
42419
|
+
}
|
42420
|
+
script.onerror = (error) => reject(error);
|
42421
|
+
document.getElementsByTagName('head')[0].appendChild(script);
|
42287
42422
|
});
|
42288
42423
|
}
|
42289
42424
|
else if (cacheable) {
|
@@ -42299,13 +42434,6 @@ const loadScript = (url, loadViaScriptTag, cacheable = false) => __awaiter$1(voi
|
|
42299
42434
|
.done(response => response)
|
42300
42435
|
.fail(reason => reason);
|
42301
42436
|
}
|
42302
|
-
// return fetch(_url)
|
42303
|
-
// .then(response => response.text())
|
42304
|
-
// .then(text => {
|
42305
|
-
// const script = document.createElement('script');
|
42306
|
-
// script.textContent = text;
|
42307
|
-
// document.head.appendChild(script);
|
42308
|
-
// });
|
42309
42437
|
});
|
42310
42438
|
const loadScripts = (urls = [], loadViaScriptTag = true) => __awaiter$1(void 0, void 0, void 0, function* () {
|
42311
42439
|
for (const url of urls) {
|
@@ -42335,7 +42463,8 @@ const setSessionStorageItem = (key, value) => {
|
|
42335
42463
|
* @param key string
|
42336
42464
|
*/
|
42337
42465
|
const getSessionStorageItem = key => {
|
42338
|
-
|
42466
|
+
// sanity check for this to work with ng-codegen
|
42467
|
+
let item = window && window.sessionStorage && window.sessionStorage.getItem(_WM_APP_PROJECT.id);
|
42339
42468
|
if (item) {
|
42340
42469
|
item = JSON.parse(item);
|
42341
42470
|
return item[key];
|
@@ -42559,6 +42688,7 @@ const processFilterExpBindNode = (context, filterExpressions) => {
|
|
42559
42688
|
const filter$ = new Subject();
|
42560
42689
|
const bindFilExpObj = (obj, targetNodeKey) => {
|
42561
42690
|
if (stringStartsWith(obj[targetNodeKey], 'bind:')) {
|
42691
|
+
// [Todo-CSP]: needs a check, where is this used
|
42562
42692
|
destroyFn($watch(obj[targetNodeKey].replace('bind:', ''), context, {}, (newVal, oldVal) => {
|
42563
42693
|
if ((newVal === oldVal && _.isUndefined(newVal)) || (_.isUndefined(newVal) && !_.isUndefined(oldVal))) {
|
42564
42694
|
return;
|
@@ -42802,6 +42932,7 @@ const triggerItemAction = (scope, item) => {
|
|
42802
42932
|
const linkTarget = item.target;
|
42803
42933
|
if (itemAction) {
|
42804
42934
|
if (!scope.itemActionFn) {
|
42935
|
+
//[Todo-CSP]: This will not work as function will be dynamic
|
42805
42936
|
scope.itemActionFn = $parseEvent(itemAction);
|
42806
42937
|
}
|
42807
42938
|
scope.itemActionFn(scope.userDefinedExecutionContext, Object.create(item));
|
@@ -44517,7 +44648,7 @@ const getRequiredProviders = (nodeDef, providers, nodeAttrs) => {
|
|
44517
44648
|
}
|
44518
44649
|
});
|
44519
44650
|
};
|
44520
|
-
const ɵ11 = getRequiredProviders;
|
44651
|
+
const ɵ11$1 = getRequiredProviders;
|
44521
44652
|
const DIMENSION_PROPS = ['padding', 'borderwidth', 'margin'];
|
44522
44653
|
const SEPARATOR = ' ', UNSET = 'unset';
|
44523
44654
|
const setDimensionProp = (cssObj, key, nv) => {
|
@@ -44552,7 +44683,7 @@ const setDimensionProp = (cssObj, key, nv) => {
|
|
44552
44683
|
cssObj[cssKey] = nv;
|
44553
44684
|
}
|
44554
44685
|
};
|
44555
|
-
const ɵ12 = setDimensionProp;
|
44686
|
+
const ɵ12$1 = setDimensionProp;
|
44556
44687
|
const processDimensionAttributes = attrMap => {
|
44557
44688
|
const attrKeys = Array.from(attrMap.keys());
|
44558
44689
|
attrKeys.forEach((attrKey) => {
|
@@ -47705,8 +47836,8 @@ exports.transpile = transpile;
|
|
47705
47836
|
exports.ɵ0 = ɵ0$h;
|
47706
47837
|
exports.ɵ1 = ɵ1$5;
|
47707
47838
|
exports.ɵ10 = ɵ10$1;
|
47708
|
-
exports.ɵ11 = ɵ11;
|
47709
|
-
exports.ɵ12 = ɵ12;
|
47839
|
+
exports.ɵ11 = ɵ11$1;
|
47840
|
+
exports.ɵ12 = ɵ12$1;
|
47710
47841
|
exports.ɵ13 = ɵ13;
|
47711
47842
|
exports.ɵ14 = ɵ14;
|
47712
47843
|
exports.ɵ2 = ɵ2$4;
|