@next-core/brick-utils 2.51.3 → 2.51.5

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.
@@ -20283,68 +20283,92 @@
20283
20283
 
20284
20284
  // Then, we remove dead conditions accordingly.
20285
20285
  traverse(ast, node => {
20286
- var rawContainer;
20287
- var conditionalNodes;
20288
- var rawKey;
20289
- var deleteEmptyArray = false;
20286
+ // let conditionalNodes: ConditionalStoryboardNode[];
20287
+ // let rawContainer: any;
20288
+ // let rawKey: string;
20289
+ // let deleteEmptyArray = false;
20290
+ // let isUseBrickEntry = false;
20291
+ // let keepConditionalHandlers = false;
20292
+
20290
20293
  switch (node.type) {
20291
20294
  case "Root":
20292
- conditionalNodes = node.routes;
20293
- rawContainer = node.raw;
20294
- rawKey = "routes";
20295
+ shakeConditionalNodes(node.routes, node.raw, "routes");
20295
20296
  break;
20296
20297
  case "Template":
20297
- conditionalNodes = node.bricks;
20298
- rawContainer = node.raw;
20299
- rawKey = "bricks";
20298
+ shakeConditionalNodes(node.bricks, node.raw, "bricks");
20300
20299
  break;
20301
20300
  case "Route":
20302
20301
  case "Slot":
20303
- conditionalNodes = node.children;
20304
- rawContainer = node.raw;
20305
- rawKey = node.raw.type === "routes" ? "routes" : "bricks";
20302
+ shakeConditionalNodes(node.children, node.raw, node.raw.type === "routes" ? "routes" : "bricks");
20306
20303
  break;
20307
20304
  case "Event":
20308
20305
  case "EventCallback":
20309
20306
  case "SimpleLifeCycle":
20310
20307
  case "ConditionalEvent":
20311
- conditionalNodes = node.handlers;
20312
- rawContainer = node.rawContainer;
20313
- rawKey = node.rawKey;
20314
- deleteEmptyArray = true;
20308
+ shakeConditionalNodes(node.handlers, node.rawContainer, node.rawKey, {
20309
+ deleteEmptyArray: true,
20310
+ keepConditionalHandlers: true
20311
+ });
20315
20312
  break;
20316
20313
  case "ResolveLifeCycle":
20317
- conditionalNodes = node.resolves;
20318
- rawContainer = node.rawContainer;
20319
- rawKey = node.rawKey;
20320
- deleteEmptyArray = true;
20314
+ shakeConditionalNodes(node.resolves, node.rawContainer, node.rawKey, {
20315
+ deleteEmptyArray: true
20316
+ });
20321
20317
  break;
20322
20318
  case "UseBrickEntry":
20323
- conditionalNodes = node.children;
20324
- rawContainer = node.rawContainer;
20325
- rawKey = node.rawKey;
20319
+ shakeConditionalNodes(node.children, node.rawContainer, node.rawKey, {
20320
+ isUseBrickEntry: true
20321
+ });
20322
+ break;
20323
+ case "EventHandler":
20324
+ shakeConditionalNodes(node.then, node.raw, "then");
20325
+ shakeConditionalNodes(node.else, node.raw, "else");
20326
20326
  break;
20327
20327
  }
20328
- shakeConditionalNodes(node, rawContainer, conditionalNodes, rawKey, deleteEmptyArray);
20329
20328
 
20330
20329
  // Remove unreachable context/state.
20331
- deleteEmptyArray = false;
20332
20330
  switch (node.type) {
20333
20331
  case "Route":
20334
20332
  case "Brick":
20335
20333
  case "Template":
20336
- rawContainer = node.raw;
20337
- rawKey = node.type === "Template" ? "state" : "context";
20338
- conditionalNodes = node.context;
20339
- break;
20334
+ shakeConditionalNodes(node.context, node.raw, node.type === "Template" ? "state" : "context");
20340
20335
  }
20341
- shakeConditionalNodes(node, rawContainer, conditionalNodes, rawKey, deleteEmptyArray);
20342
20336
  });
20343
20337
  }
20344
- function shakeConditionalNodes(node, rawContainer, conditionalNodes, rawKey, deleteEmptyArray) {
20345
- var removedNodes = lodash.remove(conditionalNodes, node => node.raw.if === false);
20338
+ function shakeConditionalNodes(conditionalNodes, rawContainer, rawKey) {
20339
+ var {
20340
+ deleteEmptyArray,
20341
+ isUseBrickEntry,
20342
+ keepConditionalHandlers
20343
+ } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
20344
+ var removedNodes = [];
20345
+ if (Array.isArray(conditionalNodes)) {
20346
+ for (var node of conditionalNodes) {
20347
+ var _else;
20348
+ if (keepConditionalHandlers && (_else = node.else) !== null && _else !== void 0 && _else.length) {
20349
+ switch (node.raw.if) {
20350
+ case false:
20351
+ node.then = node.else;
20352
+ node.else = [];
20353
+ node.raw.then = node.raw.else;
20354
+ delete node.raw.else;
20355
+ delete node.raw.if;
20356
+ continue;
20357
+ case true:
20358
+ case undefined:
20359
+ node.else = [];
20360
+ delete node.raw.else;
20361
+ continue;
20362
+ }
20363
+ }
20364
+ if (node.raw.if === false) {
20365
+ removedNodes.push(node);
20366
+ }
20367
+ }
20368
+ }
20369
+ lodash.pull(conditionalNodes, ...removedNodes);
20346
20370
  if (removedNodes.length > 0) {
20347
- if (node.type === "UseBrickEntry" && !Array.isArray(rawContainer[rawKey])) {
20371
+ if (isUseBrickEntry && !Array.isArray(rawContainer[rawKey])) {
20348
20372
  rawContainer[rawKey] = {
20349
20373
  brick: "div",
20350
20374
  if: false
@@ -20392,6 +20416,8 @@
20392
20416
  console.warn("[removed dead if]:", ifContainer.if, ifContainer);
20393
20417
  }
20394
20418
  ifContainer.if = false;
20419
+ } else if (isConstantLogical(expression, true, options)) {
20420
+ ifContainer.if = true;
20395
20421
  }
20396
20422
  return;
20397
20423
  }