@wavemaker/angular-codegen 11.14.1-8.6337 → 11.14.1-9.6343

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.
@@ -99707,11 +99707,11 @@ const getRowActionAttrs = attrs => {
99707
99707
  return tmpl;
99708
99708
  };
99709
99709
 
99710
- const $RAF = window.requestAnimationFrame;
99710
+ const $RAF$1 = window.requestAnimationFrame;
99711
99711
  const $RAFQueue = [];
99712
99712
  const invokeLater = fn => {
99713
99713
  if (!$RAFQueue.length) {
99714
- $RAF(() => {
99714
+ $RAF$1(() => {
99715
99715
  $RAFQueue.forEach(f => f());
99716
99716
  $RAFQueue.length = 0;
99717
99717
  });
@@ -100253,223 +100253,70 @@ const getFnForEventExpr = (expr) => {
100253
100253
  return fnExecutor(expr, ExpressionType.Action);
100254
100254
  };
100255
100255
 
100256
- // Constants
100257
- const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
100258
- const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
100259
- const ARRAY_INDEX_PLACEHOLDER = '[$i]';
100260
- const ARRAY_INDEX_ZERO = '[0]';
100261
100256
  const registry = new Map();
100262
100257
  const watchIdGenerator = new IDGenerator('watch-id-');
100263
- const FIRST_TIME_WATCH = Object.freeze({});
100264
- /**
100265
- * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
100266
- */
100267
- const getWidgetId = (identifier) => {
100268
- if (!identifier || typeof identifier !== 'string') {
100269
- return null;
100270
- }
100271
- const match = identifier.match(WIDGET_ID_REGEX);
100272
- return match ? match[1] : null;
100273
- };
100274
- /**
100275
- * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
100276
- */
100277
- const getPropertyName = (identifier) => {
100278
- if (!identifier || typeof identifier !== 'string') {
100279
- return identifier;
100280
- }
100281
- const match = identifier.match(WIDGET_PROPERTY_REGEX);
100282
- return match ? match[1] : identifier;
100283
- };
100284
- /**
100285
- * Array consumer wrapper for array-based expressions
100286
- */
100258
+ const FIRST_TIME_WATCH = {};
100259
+ Object.freeze(FIRST_TIME_WATCH);
100287
100260
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
100288
- if (!isArray(newVal)) {
100289
- return;
100290
- }
100291
- let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
100292
- // Flatten if result is array of arrays
100293
- if (isArray(formattedData[0])) {
100294
- formattedData = flatten$1(formattedData);
100261
+ let data = newVal, formattedData;
100262
+ if (isArray(data)) {
100263
+ formattedData = data.map(function (datum) {
100264
+ return findValueOf(datum, restExpr);
100265
+ });
100266
+ // If resulting structure is an array of array, flatten it
100267
+ if (isArray(formattedData[0])) {
100268
+ formattedData = flatten$1(formattedData);
100269
+ }
100270
+ listenerFn(formattedData, oldVal);
100295
100271
  }
100296
- listenerFn(formattedData, oldVal);
100297
100272
  };
100298
- /**
100299
- * Updates watch info for array expressions
100300
- */
100301
- const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
100302
- const regex = /\[\$i\]/g;
100273
+ const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
100274
+ // listener doesn't accept array
100275
+ // replace all `[$i]` with `[0]` and return the expression
100276
+ let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
100303
100277
  if (!acceptsArray) {
100304
100278
  return {
100305
- expr: expr.replace(regex, ARRAY_INDEX_ZERO),
100306
- listener
100279
+ 'expr': expr.replace(regex, $0),
100280
+ 'listener': listener
100307
100281
  };
100308
100282
  }
100309
- const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
100310
- const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
100311
- const restExpr = expr.substring(lastIndex + 5);
100312
- const arrayConsumerFn = restExpr
100313
- ? arrayConsumer.bind(undefined, listener, restExpr)
100314
- : listener;
100283
+ // listener accepts array
100284
+ // replace all except the last `[$i]` with `[0]` and return the expression.
100285
+ var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
100286
+ if (restExpr) {
100287
+ arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
100288
+ }
100315
100289
  return {
100316
- expr: baseExpr,
100317
- listener: arrayConsumerFn
100290
+ 'expr': _expr,
100291
+ 'listener': arrayConsumerFn
100318
100292
  };
100319
100293
  };
100320
- /**
100321
- * Determines if an expression is static (doesn't need to be watched)
100322
- */
100323
- const STATIC_EXPRESSION_NAMES = [
100324
- "row.getProperty('investment')",
100325
- "row.getProperty('factsheetLink')",
100326
- "row.getProperty('isRebalanceEligible')"
100327
- ];
100328
- const isStaticExpression = (expr) => {
100329
- if (typeof expr !== 'string') {
100330
- return false;
100331
- }
100332
- const trimmedExpr = expr.trim();
100333
- // Expressions that always evaluate to localization strings
100334
- // if (trimmedExpr.includes('appLocale')) {
100335
- // return true;
100336
- // }
100337
- // Hard-coded static expression names
100338
- if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
100339
- return true;
100340
- }
100341
- return false;
100342
- };
100343
- /**
100344
- * Gets the scope type from the scope object
100345
- */
100346
- const getScopeType = ($scope) => {
100347
- if (!$scope) {
100348
- return null;
100349
- }
100350
- if ($scope.pageName)
100351
- return 'Page';
100352
- if ($scope.prefabName)
100353
- return 'Prefab';
100354
- if ($scope.partialName)
100355
- return 'Partial';
100356
- // Check for App scope
100357
- if ($scope.Variables !== undefined &&
100358
- $scope.Actions !== undefined &&
100359
- !$scope.pageName &&
100360
- !$scope.prefabName &&
100361
- !$scope.partialName) {
100362
- return 'App';
100363
- }
100364
- if ($scope.constructor?.name === 'AppRef') {
100365
- return 'App';
100366
- }
100367
- return null;
100368
- };
100369
- /**
100370
- * Gets scope name based on scope type
100371
- */
100372
- const getScopeName = ($scope, scopeType) => {
100373
- if (!scopeType || !$scope) {
100374
- return null;
100375
- }
100376
- switch (scopeType) {
100377
- case 'Prefab': return $scope.prefabName || null;
100378
- case 'Partial': return $scope.partialName || null;
100379
- case 'Page': return $scope.pageName || null;
100380
- default: return null;
100381
- }
100382
- };
100383
- /**
100384
- * Main watch function
100385
- */
100386
100294
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
100387
- // Handle array expressions
100388
- if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
100389
- const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
100295
+ if (expr.indexOf('[$i]') !== -1) {
100296
+ let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
100390
100297
  expr = watchInfo.expr;
100391
100298
  listener = watchInfo.listener;
100392
100299
  }
100393
- // Handle static expressions
100394
- if (isStaticExpression(expr)) {
100395
- try {
100396
- const fn = $parseExpr(expr);
100397
- const staticValue = fn($scope, $locals);
100398
- listener(staticValue, FIRST_TIME_WATCH);
100399
- }
100400
- catch (e) {
100401
- console.warn(`Error evaluating static expression '${expr}':`, e);
100402
- listener(undefined, FIRST_TIME_WATCH);
100403
- }
100404
- return () => { }; // No-op unsubscribe
100405
- }
100406
100300
  const fn = $parseExpr();
100407
- const scopeType = getScopeType($scope);
100408
- const scopeName = getScopeName($scope, scopeType);
100409
- const destroyFn = () => $unwatch(identifier);
100410
- const watchInfo = {
100411
- fn: fn.bind(null, $scope, $locals),
100301
+ registry.set(identifier, {
100302
+ fn: fn.bind(expr, $scope, $locals),
100412
100303
  listener,
100413
100304
  expr,
100414
100305
  last: FIRST_TIME_WATCH,
100415
100306
  doNotClone,
100416
- isMuted,
100417
- scopeType,
100418
- scopeName,
100419
- destroyFn
100420
- };
100421
- // Store in registry
100422
- const widgetId = getWidgetId(identifier);
100423
- if (widgetId) {
100424
- const propertyName = getPropertyName(identifier);
100425
- if (!registry.has(widgetId)) {
100426
- registry.set(widgetId, {});
100427
- }
100428
- const widgetGroup = registry.get(widgetId);
100429
- widgetGroup[propertyName] = watchInfo;
100430
- }
100431
- else {
100432
- registry.set(identifier, watchInfo);
100433
- }
100434
- return destroyFn;
100435
- };
100436
- /**
100437
- * Unwatches a single identifier
100438
- */
100439
- const $unwatch = (identifier) => {
100440
- const widgetId = getWidgetId(identifier);
100441
- if (widgetId) {
100442
- const propertyName = getPropertyName(identifier);
100443
- const widgetGroup = registry.get(widgetId);
100444
- //@ts-ignore
100445
- if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
100446
- const watchInfo = widgetGroup[propertyName];
100447
- if (watchInfo) {
100448
- delete widgetGroup[propertyName];
100449
- // Clean up empty widget groups
100450
- if (Object.keys(widgetGroup).length === 0) {
100451
- registry.delete(widgetId);
100452
- }
100453
- return true;
100454
- }
100455
- }
100456
- }
100457
- // Fallback to direct lookup
100458
- if (registry.has(identifier)) {
100459
- registry.delete(identifier);
100460
- return true;
100461
- }
100462
- return false;
100307
+ isMuted: isMuted
100308
+ });
100309
+ return () => $unwatch(identifier);
100463
100310
  };
100311
+ const $unwatch = identifier => registry.delete(identifier);
100312
+ window.watchRegistry = registry;
100464
100313
  const $appDigest = (() => {
100465
- return (force = false) => {
100314
+ return (force) => {
100466
100315
  {
100467
100316
  return;
100468
100317
  }
100469
100318
  };
100470
100319
  })();
100471
- // Export registry for debugging
100472
- window.watchRegistry = registry;
100473
100320
 
100474
100321
  var ComponentType;
100475
100322
  (function (ComponentType) {
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-codegen",
3
- "version": "11.14.1-8.6337",
3
+ "version": "11.14.1-9.6343",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/angular-codegen",
9
- "version": "11.14.1-8.6337",
9
+ "version": "11.14.1-9.6343",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
- "@wavemaker/angular-app": "11.14.1-8.6337",
12
+ "@wavemaker/angular-app": "11.14.1-9.6343",
13
13
  "archiver": "^7.0.1",
14
14
  "cheerio": "1.0.0-rc.12",
15
15
  "decode-uri-component": "^0.2.0",
@@ -1340,8 +1340,8 @@
1340
1340
  }
1341
1341
  },
1342
1342
  "node_modules/@types/node": {
1343
- "version": "24.10.1",
1344
- "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
1343
+ "version": "24.10.2",
1344
+ "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==",
1345
1345
  "dev": true,
1346
1346
  "license": "MIT",
1347
1347
  "dependencies": {
@@ -1376,8 +1376,8 @@
1376
1376
  "license": "MIT"
1377
1377
  },
1378
1378
  "node_modules/@wavemaker/angular-app": {
1379
- "version": "11.14.1-8.6337",
1380
- "integrity": "sha512-YkDT0UanjWKv53CLXr8v5AMB5aB7UWLT8N59Ozt8RroeBhBD4lbNnUsYf657QogOLtPJhKkj4KjnmuHROBtemw==",
1379
+ "version": "11.14.1-9.6343",
1380
+ "integrity": "sha512-RgoTu71qJ1NoPuU9KVMY2HxV6cUzgznghN13Sr5PJhrjvp9diaN36b8hlQ/INFOxZ6JpAdvSbLs1g73r+vIDPQ==",
1381
1381
  "dependencies": {
1382
1382
  "@angular/animations": "18.2.13",
1383
1383
  "@angular/common": "18.2.13",
@@ -1394,12 +1394,12 @@
1394
1394
  "@fullcalendar/list": "6.1.18",
1395
1395
  "@fullcalendar/timegrid": "6.1.18",
1396
1396
  "@metrichor/jmespath": "0.3.1",
1397
- "@wavemaker/app-ng-runtime": "11.14.1-8.6337",
1398
- "@wavemaker/custom-widgets-m3": "11.14.1-8.6337",
1397
+ "@wavemaker/app-ng-runtime": "11.14.1-9.6343",
1398
+ "@wavemaker/custom-widgets-m3": "11.14.1-9.6343",
1399
1399
  "@wavemaker/focus-trap": "1.0.1",
1400
- "@wavemaker/foundation-css": "11.14.1-8.6337",
1400
+ "@wavemaker/foundation-css": "11.14.1-9.6343",
1401
1401
  "@wavemaker/nvd3": "1.8.15",
1402
- "@wavemaker/variables": "11.14.1-8.6337",
1402
+ "@wavemaker/variables": "11.14.1-9.6343",
1403
1403
  "@ztree/ztree_v3": "3.5.48",
1404
1404
  "acorn": "^8.15.0",
1405
1405
  "angular-imask": "7.6.1",
@@ -1434,8 +1434,8 @@
1434
1434
  }
1435
1435
  },
1436
1436
  "node_modules/@wavemaker/app-ng-runtime": {
1437
- "version": "11.14.1-8.6337",
1438
- "integrity": "sha512-MxNZBps4dQ2jCvnDSgvjUYP35oWNx85tgN94ulgnYWKm50ud4skWs+Bgds7nqpzgAF67zZyMi1gwiu5b03lOlA==",
1437
+ "version": "11.14.1-9.6343",
1438
+ "integrity": "sha512-PIq0YquVfzeEdoh9GNAjOzn19B6rsPSI7/lSKpiPzF0bqaXAh9PYpRctYP+jcBiagbAUyoGxt6acqQHmSt7g3g==",
1439
1439
  "license": "MIT",
1440
1440
  "engines": {
1441
1441
  "node": ">=18.16.1",
@@ -1443,8 +1443,8 @@
1443
1443
  }
1444
1444
  },
1445
1445
  "node_modules/@wavemaker/custom-widgets-m3": {
1446
- "version": "11.14.1-8.6337",
1447
- "integrity": "sha512-WvAvdZJZ3hCuEA2maP/BLY7ToGUfFYXD8mUzjMrA8fp4Mdb4VyzQvZJh2XZLjPCo9CU78JoMGzFK97jwWKYnrQ==",
1446
+ "version": "11.14.1-9.6343",
1447
+ "integrity": "sha512-ZJ5FNQGZcssHjfoWycMQTTVTuQjfovDiOTT8j3QJzyi65cj62Yuam5CChemlBFc2OqocR2xfSmp3rfUHdYvWVA==",
1448
1448
  "license": "ISC"
1449
1449
  },
1450
1450
  "node_modules/@wavemaker/focus-trap": {
@@ -1457,8 +1457,8 @@
1457
1457
  }
1458
1458
  },
1459
1459
  "node_modules/@wavemaker/foundation-css": {
1460
- "version": "11.14.1-8.6337",
1461
- "integrity": "sha512-WkE64qSCQmeIAG8L0Qsqn3mTY2sSQxuoFbftMcuk67G57zuVdVfDIuMwO4DwxZYp5lOvOOQ+xGKwM69BC8xtUA==",
1460
+ "version": "11.14.1-9.6343",
1461
+ "integrity": "sha512-wxX/MMY/SiSpyqvN3jg9uCYeR+R65yWdlDM54I//z3IS8kDz/G1qeLvBWFi0h58yjaBCzfPS9fkMJ6I5eHV3Ew==",
1462
1462
  "license": "ISC",
1463
1463
  "dependencies": {
1464
1464
  "chroma-js": "^3.1.2"
@@ -1473,8 +1473,8 @@
1473
1473
  }
1474
1474
  },
1475
1475
  "node_modules/@wavemaker/variables": {
1476
- "version": "11.14.1-8.6337",
1477
- "integrity": "sha512-zOj4+VktLFY8mm/qIPh+PwK9TEVG0sglfrVM3bUE9l2iU3ei8ldd7E9AikSV1O/UWOYWAvbM9PMmQ9M9LCxOaA==",
1476
+ "version": "11.14.1-9.6343",
1477
+ "integrity": "sha512-pDZIpSRfDR0TUrplEsVIgh7MedlElrkeHqo0TyMH2XlfmwC5pR8EOukFPUYLpQP5QnaHHy7oLopz5JNG1drnsQ==",
1478
1478
  "license": "ISC",
1479
1479
  "dependencies": {
1480
1480
  "@metrichor/jmespath": "^0.3.1",
@@ -1909,8 +1909,8 @@
1909
1909
  "license": "MIT"
1910
1910
  },
1911
1911
  "node_modules/baseline-browser-mapping": {
1912
- "version": "2.9.2",
1913
- "integrity": "sha512-PxSsosKQjI38iXkmb3d0Y32efqyA0uW4s41u4IVBsLlWLhCiYNpH/AfNOVWRqCQBlD8TFJTz6OUWNd4DFJCnmw==",
1912
+ "version": "2.9.5",
1913
+ "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
1914
1914
  "dev": true,
1915
1915
  "license": "Apache-2.0",
1916
1916
  "bin": {
@@ -2190,8 +2190,8 @@
2190
2190
  }
2191
2191
  },
2192
2192
  "node_modules/caniuse-lite": {
2193
- "version": "1.0.30001759",
2194
- "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==",
2193
+ "version": "1.0.30001760",
2194
+ "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==",
2195
2195
  "dev": true,
2196
2196
  "funding": [
2197
2197
  {
@@ -3277,8 +3277,8 @@
3277
3277
  "license": "MIT"
3278
3278
  },
3279
3279
  "node_modules/electron-to-chromium": {
3280
- "version": "1.5.265",
3281
- "integrity": "sha512-B7IkLR1/AE+9jR2LtVF/1/6PFhY5TlnEHnlrKmGk7PvkJibg5jr+mLXLLzq3QYl6PA1T/vLDthQPqIPAlS/PPA==",
3280
+ "version": "1.5.267",
3281
+ "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
3282
3282
  "dev": true,
3283
3283
  "license": "ISC"
3284
3284
  },
@@ -5848,8 +5848,8 @@
5848
5848
  }
5849
5849
  },
5850
5850
  "node_modules/nwsapi": {
5851
- "version": "2.2.22",
5852
- "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==",
5851
+ "version": "2.2.23",
5852
+ "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==",
5853
5853
  "dev": true,
5854
5854
  "license": "MIT"
5855
5855
  },
package/package-lock.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-codegen",
3
- "version": "11.14.1-8.6337",
3
+ "version": "11.14.1-9.6343",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/angular-codegen",
9
- "version": "11.14.1-8.6337",
9
+ "version": "11.14.1-9.6343",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
- "@wavemaker/angular-app": "11.14.1-8.6337",
12
+ "@wavemaker/angular-app": "11.14.1-9.6343",
13
13
  "archiver": "^7.0.1",
14
14
  "cheerio": "1.0.0-rc.12",
15
15
  "decode-uri-component": "^0.2.0",
@@ -1340,8 +1340,8 @@
1340
1340
  }
1341
1341
  },
1342
1342
  "node_modules/@types/node": {
1343
- "version": "24.10.1",
1344
- "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
1343
+ "version": "24.10.2",
1344
+ "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==",
1345
1345
  "dev": true,
1346
1346
  "license": "MIT",
1347
1347
  "dependencies": {
@@ -1376,8 +1376,8 @@
1376
1376
  "license": "MIT"
1377
1377
  },
1378
1378
  "node_modules/@wavemaker/angular-app": {
1379
- "version": "11.14.1-8.6337",
1380
- "integrity": "sha512-YkDT0UanjWKv53CLXr8v5AMB5aB7UWLT8N59Ozt8RroeBhBD4lbNnUsYf657QogOLtPJhKkj4KjnmuHROBtemw==",
1379
+ "version": "11.14.1-9.6343",
1380
+ "integrity": "sha512-RgoTu71qJ1NoPuU9KVMY2HxV6cUzgznghN13Sr5PJhrjvp9diaN36b8hlQ/INFOxZ6JpAdvSbLs1g73r+vIDPQ==",
1381
1381
  "dependencies": {
1382
1382
  "@angular/animations": "18.2.13",
1383
1383
  "@angular/common": "18.2.13",
@@ -1394,12 +1394,12 @@
1394
1394
  "@fullcalendar/list": "6.1.18",
1395
1395
  "@fullcalendar/timegrid": "6.1.18",
1396
1396
  "@metrichor/jmespath": "0.3.1",
1397
- "@wavemaker/app-ng-runtime": "11.14.1-8.6337",
1398
- "@wavemaker/custom-widgets-m3": "11.14.1-8.6337",
1397
+ "@wavemaker/app-ng-runtime": "11.14.1-9.6343",
1398
+ "@wavemaker/custom-widgets-m3": "11.14.1-9.6343",
1399
1399
  "@wavemaker/focus-trap": "1.0.1",
1400
- "@wavemaker/foundation-css": "11.14.1-8.6337",
1400
+ "@wavemaker/foundation-css": "11.14.1-9.6343",
1401
1401
  "@wavemaker/nvd3": "1.8.15",
1402
- "@wavemaker/variables": "11.14.1-8.6337",
1402
+ "@wavemaker/variables": "11.14.1-9.6343",
1403
1403
  "@ztree/ztree_v3": "3.5.48",
1404
1404
  "acorn": "^8.15.0",
1405
1405
  "angular-imask": "7.6.1",
@@ -1434,8 +1434,8 @@
1434
1434
  }
1435
1435
  },
1436
1436
  "node_modules/@wavemaker/app-ng-runtime": {
1437
- "version": "11.14.1-8.6337",
1438
- "integrity": "sha512-MxNZBps4dQ2jCvnDSgvjUYP35oWNx85tgN94ulgnYWKm50ud4skWs+Bgds7nqpzgAF67zZyMi1gwiu5b03lOlA==",
1437
+ "version": "11.14.1-9.6343",
1438
+ "integrity": "sha512-PIq0YquVfzeEdoh9GNAjOzn19B6rsPSI7/lSKpiPzF0bqaXAh9PYpRctYP+jcBiagbAUyoGxt6acqQHmSt7g3g==",
1439
1439
  "license": "MIT",
1440
1440
  "engines": {
1441
1441
  "node": ">=18.16.1",
@@ -1443,8 +1443,8 @@
1443
1443
  }
1444
1444
  },
1445
1445
  "node_modules/@wavemaker/custom-widgets-m3": {
1446
- "version": "11.14.1-8.6337",
1447
- "integrity": "sha512-WvAvdZJZ3hCuEA2maP/BLY7ToGUfFYXD8mUzjMrA8fp4Mdb4VyzQvZJh2XZLjPCo9CU78JoMGzFK97jwWKYnrQ==",
1446
+ "version": "11.14.1-9.6343",
1447
+ "integrity": "sha512-ZJ5FNQGZcssHjfoWycMQTTVTuQjfovDiOTT8j3QJzyi65cj62Yuam5CChemlBFc2OqocR2xfSmp3rfUHdYvWVA==",
1448
1448
  "license": "ISC"
1449
1449
  },
1450
1450
  "node_modules/@wavemaker/focus-trap": {
@@ -1457,8 +1457,8 @@
1457
1457
  }
1458
1458
  },
1459
1459
  "node_modules/@wavemaker/foundation-css": {
1460
- "version": "11.14.1-8.6337",
1461
- "integrity": "sha512-WkE64qSCQmeIAG8L0Qsqn3mTY2sSQxuoFbftMcuk67G57zuVdVfDIuMwO4DwxZYp5lOvOOQ+xGKwM69BC8xtUA==",
1460
+ "version": "11.14.1-9.6343",
1461
+ "integrity": "sha512-wxX/MMY/SiSpyqvN3jg9uCYeR+R65yWdlDM54I//z3IS8kDz/G1qeLvBWFi0h58yjaBCzfPS9fkMJ6I5eHV3Ew==",
1462
1462
  "license": "ISC",
1463
1463
  "dependencies": {
1464
1464
  "chroma-js": "^3.1.2"
@@ -1473,8 +1473,8 @@
1473
1473
  }
1474
1474
  },
1475
1475
  "node_modules/@wavemaker/variables": {
1476
- "version": "11.14.1-8.6337",
1477
- "integrity": "sha512-zOj4+VktLFY8mm/qIPh+PwK9TEVG0sglfrVM3bUE9l2iU3ei8ldd7E9AikSV1O/UWOYWAvbM9PMmQ9M9LCxOaA==",
1476
+ "version": "11.14.1-9.6343",
1477
+ "integrity": "sha512-pDZIpSRfDR0TUrplEsVIgh7MedlElrkeHqo0TyMH2XlfmwC5pR8EOukFPUYLpQP5QnaHHy7oLopz5JNG1drnsQ==",
1478
1478
  "license": "ISC",
1479
1479
  "dependencies": {
1480
1480
  "@metrichor/jmespath": "^0.3.1",
@@ -1909,8 +1909,8 @@
1909
1909
  "license": "MIT"
1910
1910
  },
1911
1911
  "node_modules/baseline-browser-mapping": {
1912
- "version": "2.9.2",
1913
- "integrity": "sha512-PxSsosKQjI38iXkmb3d0Y32efqyA0uW4s41u4IVBsLlWLhCiYNpH/AfNOVWRqCQBlD8TFJTz6OUWNd4DFJCnmw==",
1912
+ "version": "2.9.5",
1913
+ "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
1914
1914
  "dev": true,
1915
1915
  "license": "Apache-2.0",
1916
1916
  "bin": {
@@ -2190,8 +2190,8 @@
2190
2190
  }
2191
2191
  },
2192
2192
  "node_modules/caniuse-lite": {
2193
- "version": "1.0.30001759",
2194
- "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==",
2193
+ "version": "1.0.30001760",
2194
+ "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==",
2195
2195
  "dev": true,
2196
2196
  "funding": [
2197
2197
  {
@@ -3277,8 +3277,8 @@
3277
3277
  "license": "MIT"
3278
3278
  },
3279
3279
  "node_modules/electron-to-chromium": {
3280
- "version": "1.5.265",
3281
- "integrity": "sha512-B7IkLR1/AE+9jR2LtVF/1/6PFhY5TlnEHnlrKmGk7PvkJibg5jr+mLXLLzq3QYl6PA1T/vLDthQPqIPAlS/PPA==",
3280
+ "version": "1.5.267",
3281
+ "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==",
3282
3282
  "dev": true,
3283
3283
  "license": "ISC"
3284
3284
  },
@@ -5848,8 +5848,8 @@
5848
5848
  }
5849
5849
  },
5850
5850
  "node_modules/nwsapi": {
5851
- "version": "2.2.22",
5852
- "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==",
5851
+ "version": "2.2.23",
5852
+ "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==",
5853
5853
  "dev": true,
5854
5854
  "license": "MIT"
5855
5855
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/angular-codegen",
3
- "version": "11.14.1-8.6337",
3
+ "version": "11.14.1-9.6343",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -15,7 +15,7 @@
15
15
  ".npmrc"
16
16
  ],
17
17
  "dependencies": {
18
- "@wavemaker/angular-app": "11.14.1-8.6337",
18
+ "@wavemaker/angular-app": "11.14.1-9.6343",
19
19
  "archiver": "^7.0.1",
20
20
  "cheerio": "1.0.0-rc.12",
21
21
  "decode-uri-component": "^0.2.0",
package/src/codegen.js CHANGED
@@ -1 +1 @@
1
- global._WM_APP_PROPERTIES={},global._WM_PACKAGE_PATH="./libraries",global.$=require("jquery"),global._=require("lodash");const cheerio=require("cheerio"),{deleteResource:deleteResource,getIndexHtmlPath:getIndexHtmlPath,getPagesDirPath:getPagesDirPath,readFile:readFile,searchFileByName:searchFileByName,writeFile:writeFile,readFileSync:readFileSync}=require("./wm-utils"),{createAppSkeleton:createApp}=require("./gen-app-skeleton"),{generateCodeGenModule:generateCodeGenModule,generateAppConfig:generateAppConfig}=require("./gen-app-codegen-module"),{generatePrefabConfigFile:generatePrefabConfigFile}=require("./gen-prefabs"),{generateAppRoutes:generateAppRoutes}=require("./gen-app-routes"),{generateAppJS:generateAppJS}=require("./gen-app-js"),{generateAppVariables:generateAppVariables}=require("./gen-app-variables"),{getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getAuthInfoConfig:getAuthInfoConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig}=require("./project-meta"),{generateTSConfig:generateTSConfig}=require("./gen-tsconfig"),{generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent}=require("./gen-components"),{generateWmProjectProperties:generateWmProjectProperties}=require("./gen-wm-project-properties"),{generateWmProjectPropertiesFromTarget:generateWmProjectPropertiesFromTarget,generateFontConfig:generateFontConfig,generateFavicon:generateFavicon,generateServiceDefs:generateServiceDefs,generateEslintConfig:generateEslintConfig}=require("./copy-utils"),{generateIndexHtml:generateIndexHtml}=require("./gen-index-html"),{updateAngularJSON:updateAngularJSON}=require("./update-angular-json"),{generatePwaFiles:generatePwaFiles}=require("./gen-pwa-files"),{generateLazyModuleRoutes:generateLazyModuleRoutes}=require("./gen-lazy-module-routes"),{createIntermediateAppSkeleton:createIntermediateAppSkeleton,generateLayoutsAndPages:generateLayoutsAndPages}=require("./gen-layouts"),getMarkupFiles=async e=>{const a=[];return searchFileByName(e+"/src/app",/\.html$/,e=>{a.push(e)}),a},isDynamicComponentUsedInMarkup=async e=>{const a=await readFile(e,"utf8");return cheerio.load(a)("form[wmForm][metadata],form[wmForm][metadata\\.bind],div[wmTable]:not(:has(*))").length>0},isDynamicComponentUsedInApp=async e=>{const a=await getMarkupFiles(e);return(await Promise.all(a.map(e=>isDynamicComponentUsedInMarkup(e)))).find(e=>e)},cleanPackageJSON=async(e,a)=>{const t=`${e}/package.json`;let r=readFileSync(t,!0);["@ampproject/rollup-plugin-closure-compiler","rollup","rollup-plugin-alias","rollup-plugin-commonjs","rollup-plugin-includepaths","rollup-plugin-multi-entry","rollup-plugin-node-resolve"].forEach(e=>{delete r.devDependencies[e]}),a||delete r.dependencies["@angular/service-worker"],await writeFile(t,JSON.stringify(r,null,4))},generateIntermediateApp=async(e,a)=>{console.time("create-intermediate-app"),await createIntermediateAppSkeleton(e,a),await generateLayoutsAndPages(a),console.timeEnd("create-intermediate-app")},generateSources=async(e,a,t,r,n,o,i)=>{console.time("generate app-sources"),await Promise.all([deleteResource(`${a}/src/app/layouts`),deleteResource(`${a}/src/app/pages`),deleteResource(`${a}/src/app/partials`),deleteResource(`${a}/src/app/prefabs`),deleteResource(`${a}/src/app/customwidgets`)]);const g=readFileSync(`${a}/angular.json`);global._WM_PACKAGE_PATH=g.includes("./node_modules/@wavemaker/app-ng-runtime/")?"./node_modules/@wavemaker/app-ng-runtime":"./libraries";const p=await getWmProjectProperties(e),s=await getThemesConfigProperties(e,p),l=await getSecurityConfig(e),c=await getAuthInfoConfig(e);let u;o&&(u=await getLayoutsConfig(e));const m=await getPagesConfig(e),d=await getPrefabConfigsUsedInApp(p,e);let P={};for(const a of d.keys())P[a]=await getPrefabPartialsConfig(e,a);await Promise.all([generateIndexHtml(e,a,p,t,r,i),generateWmProjectProperties(p,a),generateWmProjectPropertiesFromTarget(e,a),generateFontConfig(e,a),generateEslintConfig(e,a),generateFavicon(e,a),generateServiceDefs(e,a),generateAppRoutes(e,p,u,m,l,a,o,null!==l),generateLazyModuleRoutes(m,d,P,a),generatePrefabConfigFile(d,a),generateTSConfig(p,a),generateAppJS(e,a),generateAppVariables(e,a,n),generateComponents(e,p,u,m,l,d,a,P,n,o)]);const f=await isDynamicComponentUsedInApp(a),C={aot:!f,buildOptimizer:!f};await generateAppConfig(a,r,c,o,null!==l),await updateAngularJSON(e,a,p,s,m,d,t,C,P,r),await cleanPackageJSON(a,r),r&&await generatePwaFiles(e,a,p),console.timeEnd("generate app-sources")},createAppSkeleton=async(e,a,t,r)=>{console.time("create-angular-app"),await createApp(e,a,t,r),console.timeEnd("create-angular-app")},generatePage=async(e,a,t,r)=>{console.time("generate page",t);const n=getPagesDirPath(e),o=await getWmProjectProperties(e),i=await getPagesConfig(e),g=_.find(i,{name:t}),p="PAGE"===g.type?"pages":"partials";await deleteResource(`${a}/src/app/${p}/${t}`),await generatePagePartialComponent(n,o,g.name,g.type,a,void 0,void 0,r),console.timeEnd("generate page",t)};module.exports={generateIntermediateApp:generateIntermediateApp,generateSources:generateSources,createAppSkeleton:createAppSkeleton,generatePage:generatePage};
1
+ global._WM_APP_PROPERTIES={},global._WM_PACKAGE_PATH="./libraries",global.$=require("jquery"),global._=require("lodash");const cheerio=require("cheerio"),{deleteResource:deleteResource,getIndexHtmlPath:getIndexHtmlPath,getPagesDirPath:getPagesDirPath,readFile:readFile,searchFileByName:searchFileByName,writeFile:writeFile,readFileSync:readFileSync}=require("./wm-utils"),{createAppSkeleton:createApp}=require("./gen-app-skeleton"),{generateCodeGenModule:generateCodeGenModule,generateAppConfig:generateAppConfig}=require("./gen-app-codegen-module"),{generatePrefabConfigFile:generatePrefabConfigFile}=require("./gen-prefabs"),{generateAppRoutes:generateAppRoutes}=require("./gen-app-routes"),{generateAppJS:generateAppJS}=require("./gen-app-js"),{generateAppVariables:generateAppVariables}=require("./gen-app-variables"),{getWmProjectProperties:getWmProjectProperties,getThemesConfigProperties:getThemesConfigProperties,getSecurityConfig:getSecurityConfig,getAuthInfoConfig:getAuthInfoConfig,getLayoutsConfig:getLayoutsConfig,getPagesConfig:getPagesConfig,getPrefabConfigsUsedInApp:getPrefabConfigsUsedInApp,getPrefabPartialsConfig:getPrefabPartialsConfig}=require("./project-meta"),{generateTSConfig:generateTSConfig}=require("./gen-tsconfig"),{generateComponents:generateComponents,generatePagePartialComponent:generatePagePartialComponent}=require("./gen-components"),{generateWmProjectProperties:generateWmProjectProperties}=require("./gen-wm-project-properties"),{generateWmProjectPropertiesFromTarget:generateWmProjectPropertiesFromTarget,generateFontConfig:generateFontConfig,generateFavicon:generateFavicon,generateServiceDefs:generateServiceDefs,generateEslintConfig:generateEslintConfig}=require("./copy-utils"),{generateIndexHtml:generateIndexHtml}=require("./gen-index-html"),{updateAngularJSON:updateAngularJSON}=require("./update-angular-json"),{generatePwaFiles:generatePwaFiles}=require("./gen-pwa-files"),{generateLazyModuleRoutes:generateLazyModuleRoutes}=require("./gen-lazy-module-routes"),{createIntermediateAppSkeleton:createIntermediateAppSkeleton,generateLayoutsAndPages:generateLayoutsAndPages}=require("./gen-layouts"),getMarkupFiles=async e=>{const a=[];return searchFileByName(e+"/src/app",/\.html$/,e=>{a.push(e)}),a},isDynamicComponentUsedInMarkup=async e=>{const a=await readFile(e,"utf8");return cheerio.load(a)("form[wmForm][metadata],form[wmForm][metadata\\.bind],div[wmTable]:not(:has(*))").length>0},isDynamicComponentUsedInApp=async e=>{const a=await getMarkupFiles(e);return(await Promise.all(a.map(e=>isDynamicComponentUsedInMarkup(e)))).find(e=>e)},cleanPackageJSON=async(e,a)=>{const t=`${e}/package.json`;let r=readFileSync(t,!0);["@ampproject/rollup-plugin-closure-compiler","rollup","rollup-plugin-alias","rollup-plugin-commonjs","rollup-plugin-includepaths","rollup-plugin-multi-entry","rollup-plugin-node-resolve"].forEach(e=>{delete r.devDependencies[e]}),a||delete r.dependencies["@angular/service-worker"],await writeFile(t,JSON.stringify(r,null,4))},generateIntermediateApp=async(e,a)=>{console.time("create-intermediate-app"),await createIntermediateAppSkeleton(e,a),await generateLayoutsAndPages(a),console.timeEnd("create-intermediate-app")},generateSources=async(e,a,t,r,n,o,i)=>{console.time("generate app-sources"),await Promise.all([deleteResource(`${a}/src/app/layouts`),deleteResource(`${a}/src/app/pages`),deleteResource(`${a}/src/app/partials`),deleteResource(`${a}/src/app/prefabs`),deleteResource(`${a}/src/app/customwidgets`)]);const g=readFileSync(`${a}/angular.json`);global._WM_PACKAGE_PATH=g.includes("./node_modules/@wavemaker/app-ng-runtime/")?"./node_modules/@wavemaker/app-ng-runtime":"./libraries";const p=await getWmProjectProperties(e),s=await getThemesConfigProperties(e,p),l=await getSecurityConfig(e),c=await getAuthInfoConfig(e);let u;o&&(u=await getLayoutsConfig(e));const m=await getPagesConfig(e),d=await getPrefabConfigsUsedInApp(p,e);let P={};for(const a of d.keys())P[a]=await getPrefabPartialsConfig(e,a);await Promise.all([generateIndexHtml(e,a,p,t,r,i),generateWmProjectProperties(p,a),generateWmProjectPropertiesFromTarget(e,a),generateFontConfig(e,a),generateEslintConfig(e,a),generateFavicon(e,a),generateServiceDefs(e,a),generateAppRoutes(e,p,u,m,l,a,o,null!==l),generateLazyModuleRoutes(m,d,P,a),generatePrefabConfigFile(d,a),generateTSConfig(p,a),generateAppJS(e,a),generateAppVariables(e,a,n),generateComponents(e,p,u,m,l,d,a,P,n,o)]);const f=await isDynamicComponentUsedInApp(a),C={aot:!f,buildOptimizer:!f};await generateAppConfig(a,r,c,o,null!==l,n),await updateAngularJSON(e,a,p,s,m,d,t,C,P,r),await cleanPackageJSON(a,r),r&&await generatePwaFiles(e,a,p),console.timeEnd("generate app-sources")},createAppSkeleton=async(e,a,t,r)=>{console.time("create-angular-app"),await createApp(e,a,t,r),console.timeEnd("create-angular-app")},generatePage=async(e,a,t,r)=>{console.time("generate page",t);const n=getPagesDirPath(e),o=await getWmProjectProperties(e),i=await getPagesConfig(e),g=_.find(i,{name:t}),p="PAGE"===g.type?"pages":"partials";await deleteResource(`${a}/src/app/${p}/${t}`),await generatePagePartialComponent(n,o,g.name,g.type,a,void 0,void 0,r),console.timeEnd("generate page",t)};module.exports={generateIntermediateApp:generateIntermediateApp,generateSources:generateSources,createAppSkeleton:createAppSkeleton,generatePage:generatePage};
@@ -1 +1 @@
1
- const _get=require("lodash/get"),{writeFile:writeFile,isMobileProject:isMobileProject}=require("./wm-utils"),{getHandlebarTemplate:getHandlebarTemplate}=require("./handlebar-helpers"),generateCodeGenModule=async(e,a,r,t,n)=>{const o=getHandlebarTemplate("app-codegen-module")({wmProjectProperties:e,pagesConfig:a,prefabConfigMap:r,xsrfTokenHeaderName:_get(t,"csrfConfig.headerName","X-WM-XSRF-TOKEN")});await writeFile(`${n}/src/app/app-codegen.module.ts`,o)},generateAppConfig=async(e,a,r,t,n)=>{const o=getHandlebarTemplate("app-config-ts")({isPwa:a,xsrfTokenHeaderName:_get(r,"csrfConfig.headerName","X-WM-XSRF-TOKEN"),enableSpa:t,enableSecurity:n});await writeFile(`${e}/src/app/app.config.ts`,o)};module.exports={generateCodeGenModule:generateCodeGenModule,generateAppConfig:generateAppConfig};
1
+ const _get=require("lodash/get"),{writeFile:writeFile,isMobileProject:isMobileProject}=require("./wm-utils"),{getHandlebarTemplate:getHandlebarTemplate}=require("./handlebar-helpers"),generateCodeGenModule=async(e,a,r,t,n)=>{const o=getHandlebarTemplate("app-codegen-module")({wmProjectProperties:e,pagesConfig:a,prefabConfigMap:r,xsrfTokenHeaderName:_get(t,"csrfConfig.headerName","X-WM-XSRF-TOKEN")});await writeFile(`${n}/src/app/app-codegen.module.ts`,o)},generateAppConfig=async(e,a,r,t,n,o)=>{const i=getHandlebarTemplate("app-config-ts")({isPwa:a,xsrfTokenHeaderName:_get(r,"csrfConfig.headerName","X-WM-XSRF-TOKEN"),enableSpa:t,enableSecurity:n,isCSP:o});await writeFile(`${e}/src/app/app.config.ts`,i)};module.exports={generateCodeGenModule:generateCodeGenModule,generateAppConfig:generateAppConfig};
@@ -66,7 +66,13 @@ import { initPrefabConfig } from "./prefabs/prefab-config";
66
66
  {{#if isPwa}}
67
67
  import { ServiceWorkerModule } from "@angular/service-worker";
68
68
  import { environment } from "../environments/environment";
69
- {{/if}}
69
+ {{/if}}
70
+ {{#if isCSP}}
71
+ import { ɵSharedStylesHost } from '@angular/platform-browser';
72
+ import { ɵDomRendererFactory2 } from "@angular/platform-browser";
73
+ import { WMDomSharedStylesHost } from "@wm/runtime/base";
74
+ import { WMDomRendererFactory2 } from "@wm/runtime/base";
75
+ {{/if}}
70
76
 
71
77
  const wmModules = [
72
78
  importProvidersFrom(
@@ -168,6 +174,10 @@ export const appConfig: ApplicationConfig = {
168
174
  { provide: AbstractNavigationService, useClass: NavigationServiceImpl },
169
175
  { provide: AbstractToasterService, useClass: ToasterServiceImpl },
170
176
  { provide: DynamicComponentRefProvider, useClass: DynamicComponentRefProviderService, },
177
+ {{#if isCSP}}
178
+ { provide: ɵSharedStylesHost, useClass: WMDomSharedStylesHost },
179
+ { provide: ɵDomRendererFactory2, useClass: WMDomRendererFactory2 },
180
+ {{/if}}
171
181
  PageDirective,
172
182
  AppManagerService,
173
183
  DatePipe,