@next-core/storyboard 0.1.1 → 0.2.0

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.
@@ -8,103 +8,104 @@ exports.traverseStoryboard = traverseStoryboard;
8
8
 
9
9
  /** Traverse a storyboard AST. */
10
10
  function traverseStoryboard(ast, callback) {
11
- traverseNode(ast, callback);
11
+ traverseNode(ast, callback, []);
12
12
  }
13
13
  /** Traverse any node(s) in storyboard AST. */
14
14
 
15
15
 
16
16
  function traverse(nodeOrNodes, callback) {
17
17
  if (Array.isArray(nodeOrNodes)) {
18
- traverseNodes(nodeOrNodes, callback);
18
+ traverseNodes(nodeOrNodes, callback, []);
19
19
  } else {
20
- traverseNode(nodeOrNodes, callback);
20
+ traverseNode(nodeOrNodes, callback, []);
21
21
  }
22
22
  }
23
23
 
24
- function traverseNodes(nodes, callback) {
24
+ function traverseNodes(nodes, callback, path) {
25
25
  if (!nodes) {
26
26
  return;
27
27
  }
28
28
 
29
29
  for (const node of nodes) {
30
- traverseNode(node, callback);
30
+ traverseNode(node, callback, path);
31
31
  }
32
32
  }
33
33
 
34
- function traverseNode(node, callback) {
34
+ function traverseNode(node, callback, path) {
35
35
  if (!node) {
36
36
  return;
37
37
  }
38
38
 
39
- callback(node);
39
+ callback(node, path);
40
+ const childPath = path.concat(node);
40
41
 
41
42
  switch (node.type) {
42
43
  case "Root":
43
- traverseNodes(node.routes, callback);
44
- traverseNodes(node.templates, callback);
44
+ traverseNodes(node.routes, callback, childPath);
45
+ traverseNodes(node.templates, callback, childPath);
45
46
  break;
46
47
 
47
48
  case "Route":
48
- traverseNodes(node.context, callback);
49
- traverseNode(node.redirect, callback);
50
- traverseNode(node.menu, callback);
51
- traverseNodes(node.providers, callback);
52
- traverseNodes(node.defineResolves, callback);
53
- traverseNodes(node.children, callback);
49
+ traverseNodes(node.context, callback, childPath);
50
+ traverseNode(node.redirect, callback, childPath);
51
+ traverseNode(node.menu, callback, childPath);
52
+ traverseNodes(node.providers, callback, childPath);
53
+ traverseNodes(node.defineResolves, callback, childPath);
54
+ traverseNodes(node.children, callback, childPath);
54
55
  break;
55
56
 
56
57
  case "Template":
57
- traverseNodes(node.bricks, callback);
58
- traverseNodes(node.context, callback);
58
+ traverseNodes(node.bricks, callback, childPath);
59
+ traverseNodes(node.context, callback, childPath);
59
60
  break;
60
61
 
61
62
  case "Brick":
62
- traverseNode(node.if, callback);
63
- traverseNodes(node.events, callback);
64
- traverseNodes(node.lifeCycle, callback);
65
- traverseNodes(node.useBrick, callback);
66
- traverseNodes(node.useBackend, callback);
67
- traverseNodes(node.context, callback);
68
- traverseNodes(node.children, callback);
63
+ traverseNode(node.if, callback, childPath);
64
+ traverseNodes(node.events, callback, childPath);
65
+ traverseNodes(node.lifeCycle, callback, childPath);
66
+ traverseNodes(node.useBrick, callback, childPath);
67
+ traverseNodes(node.useBackend, callback, childPath);
68
+ traverseNodes(node.context, callback, childPath);
69
+ traverseNodes(node.children, callback, childPath);
69
70
  break;
70
71
 
71
72
  case "Slot":
72
73
  case "UseBrickEntry":
73
74
  case "UseBackendEntry":
74
- traverseNodes(node.children, callback);
75
+ traverseNodes(node.children, callback, childPath);
75
76
  break;
76
77
 
77
78
  case "Context":
78
- traverseNode(node.resolve, callback);
79
- traverseNodes(node.onChange, callback);
79
+ traverseNode(node.resolve, callback, childPath);
80
+ traverseNodes(node.onChange, callback, childPath);
80
81
  break;
81
82
 
82
83
  case "ResolvableCondition":
83
84
  case "ResolvableMenu":
84
- traverseNode(node.resolve, callback);
85
+ traverseNode(node.resolve, callback, childPath);
85
86
  break;
86
87
 
87
88
  case "ResolveLifeCycle":
88
- traverseNodes(node.resolves, callback);
89
+ traverseNodes(node.resolves, callback, childPath);
89
90
  break;
90
91
 
91
92
  case "Event":
92
93
  case "EventCallback":
93
94
  case "SimpleLifeCycle":
94
95
  case "ConditionalEvent":
95
- traverseNodes(node.handlers, callback);
96
+ traverseNodes(node.handlers, callback, childPath);
96
97
  break;
97
98
 
98
99
  case "EventHandler":
99
- traverseNodes(node.callback, callback);
100
+ traverseNodes(node.callback, callback, childPath);
100
101
  break;
101
102
 
102
103
  case "ConditionalLifeCycle":
103
- traverseNodes(node.events, callback);
104
+ traverseNodes(node.events, callback, childPath);
104
105
  break;
105
106
 
106
107
  case "BrickMenu":
107
- traverseNode(node.brick, callback);
108
+ traverseNode(node.brick, callback, childPath);
108
109
  break;
109
110
 
110
111
  case "Resolvable":
@@ -1 +1 @@
1
- {"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","node","type","routes","templates","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","brick","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (node: StoryboardNode) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback);\n } else {\n traverseNode(nodeOrNodes, callback);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback);\n }\n}\n\nfunction traverseNode(node: StoryboardNode, callback: TraverseCallback): void {\n if (!node) {\n return;\n }\n callback(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback);\n traverseNodes(node.templates, callback);\n break;\n case \"Route\":\n traverseNodes(node.context, callback);\n traverseNode(node.redirect, callback);\n traverseNode(node.menu, callback);\n traverseNodes(node.providers, callback);\n traverseNodes(node.defineResolves, callback);\n traverseNodes(node.children, callback);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback);\n traverseNodes(node.context, callback);\n break;\n case \"Brick\":\n traverseNode(node.if, callback);\n traverseNodes(node.events, callback);\n traverseNodes(node.lifeCycle, callback);\n traverseNodes(node.useBrick, callback);\n traverseNodes(node.useBackend, callback);\n traverseNodes(node.context, callback);\n traverseNodes(node.children, callback);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback);\n traverseNodes(node.onChange, callback);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":";;;;;;;;AAIA;AACO,SAASA,kBAAT,CACLC,GADK,EAELC,QAFK,EAGC;EACNC,YAAY,CAACF,GAAD,EAAMC,QAAN,CAAZ;AACD;AAED;;;AACO,SAASE,QAAT,CACLC,WADK,EAELH,QAFK,EAGC;EACN,IAAII,KAAK,CAACC,OAAN,CAAcF,WAAd,CAAJ,EAAgC;IAC9BG,aAAa,CAACH,WAAD,EAAcH,QAAd,CAAb;EACD,CAFD,MAEO;IACLC,YAAY,CAACE,WAAD,EAAcH,QAAd,CAAZ;EACD;AACF;;AAED,SAASM,aAAT,CACEC,KADF,EAEEP,QAFF,EAGQ;EACN,IAAI,CAACO,KAAL,EAAY;IACV;EACD;;EACD,KAAK,MAAMC,IAAX,IAAmBD,KAAnB,EAA0B;IACxBN,YAAY,CAACO,IAAD,EAAOR,QAAP,CAAZ;EACD;AACF;;AAED,SAASC,YAAT,CAAsBO,IAAtB,EAA4CR,QAA5C,EAA8E;EAC5E,IAAI,CAACQ,IAAL,EAAW;IACT;EACD;;EACDR,QAAQ,CAACQ,IAAD,CAAR;;EACA,QAAQA,IAAI,CAACC,IAAb;IACE,KAAK,MAAL;MACEH,aAAa,CAACE,IAAI,CAACE,MAAN,EAAcV,QAAd,CAAb;MACAM,aAAa,CAACE,IAAI,CAACG,SAAN,EAAiBX,QAAjB,CAAb;MACA;;IACF,KAAK,OAAL;MACEM,aAAa,CAACE,IAAI,CAACI,OAAN,EAAeZ,QAAf,CAAb;MACAC,YAAY,CAACO,IAAI,CAACK,QAAN,EAAgBb,QAAhB,CAAZ;MACAC,YAAY,CAACO,IAAI,CAACM,IAAN,EAAYd,QAAZ,CAAZ;MACAM,aAAa,CAACE,IAAI,CAACO,SAAN,EAAiBf,QAAjB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACQ,cAAN,EAAsBhB,QAAtB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACS,QAAN,EAAgBjB,QAAhB,CAAb;MACA;;IACF,KAAK,UAAL;MACEM,aAAa,CAACE,IAAI,CAACU,MAAN,EAAclB,QAAd,CAAb;MACAM,aAAa,CAACE,IAAI,CAACI,OAAN,EAAeZ,QAAf,CAAb;MACA;;IACF,KAAK,OAAL;MACEC,YAAY,CAACO,IAAI,CAACW,EAAN,EAAUnB,QAAV,CAAZ;MACAM,aAAa,CAACE,IAAI,CAACY,MAAN,EAAcpB,QAAd,CAAb;MACAM,aAAa,CAACE,IAAI,CAACa,SAAN,EAAiBrB,QAAjB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACc,QAAN,EAAgBtB,QAAhB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACe,UAAN,EAAkBvB,QAAlB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACI,OAAN,EAAeZ,QAAf,CAAb;MACAM,aAAa,CAACE,IAAI,CAACS,QAAN,EAAgBjB,QAAhB,CAAb;MACA;;IACF,KAAK,MAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;MACEM,aAAa,CAACE,IAAI,CAACS,QAAN,EAAgBjB,QAAhB,CAAb;MACA;;IACF,KAAK,SAAL;MACEC,YAAY,CAACO,IAAI,CAACgB,OAAN,EAAexB,QAAf,CAAZ;MACAM,aAAa,CAACE,IAAI,CAACiB,QAAN,EAAgBzB,QAAhB,CAAb;MACA;;IACF,KAAK,qBAAL;IACA,KAAK,gBAAL;MACEC,YAAY,CAACO,IAAI,CAACgB,OAAN,EAAexB,QAAf,CAAZ;MACA;;IACF,KAAK,kBAAL;MACEM,aAAa,CAACE,IAAI,CAACkB,QAAN,EAAgB1B,QAAhB,CAAb;MACA;;IACF,KAAK,OAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;IACA,KAAK,kBAAL;MACEM,aAAa,CAACE,IAAI,CAACmB,QAAN,EAAgB3B,QAAhB,CAAb;MACA;;IACF,KAAK,cAAL;MACEM,aAAa,CAACE,IAAI,CAACR,QAAN,EAAgBA,QAAhB,CAAb;MACA;;IACF,KAAK,sBAAL;MACEM,aAAa,CAACE,IAAI,CAACY,MAAN,EAAcpB,QAAd,CAAb;MACA;;IACF,KAAK,WAAL;MACEC,YAAY,CAACO,IAAI,CAACoB,KAAN,EAAa5B,QAAb,CAAZ;MACA;;IACF,KAAK,YAAL;IACA,KAAK,WAAL;IACA,KAAK,YAAL;IACA,KAAK,kBAAL;IACA,KAAK,kBAAL;MACE;;IACF;MACE;MACA,IAAI6B,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;QAC1C;QACA;QACA,MAAM,IAAIC,KAAJ,CAAW,mCAAkCxB,IAAI,CAACC,IAAK,EAAvD,CAAN;MACD;;EArEL;AAuED"}
1
+ {"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","path","node","childPath","concat","type","routes","templates","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","brick","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (\n node: StoryboardNode,\n path: StoryboardNode[]\n) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback, []);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback, []);\n } else {\n traverseNode(nodeOrNodes, callback, []);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback, path);\n }\n}\n\nfunction traverseNode(\n node: StoryboardNode,\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!node) {\n return;\n }\n callback(node, path);\n const childPath = path.concat(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback, childPath);\n traverseNodes(node.templates, callback, childPath);\n break;\n case \"Route\":\n traverseNodes(node.context, callback, childPath);\n traverseNode(node.redirect, callback, childPath);\n traverseNode(node.menu, callback, childPath);\n traverseNodes(node.providers, callback, childPath);\n traverseNodes(node.defineResolves, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n break;\n case \"Brick\":\n traverseNode(node.if, callback, childPath);\n traverseNodes(node.events, callback, childPath);\n traverseNodes(node.lifeCycle, callback, childPath);\n traverseNodes(node.useBrick, callback, childPath);\n traverseNodes(node.useBackend, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback, childPath);\n traverseNodes(node.onChange, callback, childPath);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback, childPath);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback, childPath);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback, childPath);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback, childPath);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback, childPath);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback, childPath);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":";;;;;;;;AAOA;AACO,SAASA,kBAAT,CACLC,GADK,EAELC,QAFK,EAGC;EACNC,YAAY,CAACF,GAAD,EAAMC,QAAN,EAAgB,EAAhB,CAAZ;AACD;AAED;;;AACO,SAASE,QAAT,CACLC,WADK,EAELH,QAFK,EAGC;EACN,IAAII,KAAK,CAACC,OAAN,CAAcF,WAAd,CAAJ,EAAgC;IAC9BG,aAAa,CAACH,WAAD,EAAcH,QAAd,EAAwB,EAAxB,CAAb;EACD,CAFD,MAEO;IACLC,YAAY,CAACE,WAAD,EAAcH,QAAd,EAAwB,EAAxB,CAAZ;EACD;AACF;;AAED,SAASM,aAAT,CACEC,KADF,EAEEP,QAFF,EAGEQ,IAHF,EAIQ;EACN,IAAI,CAACD,KAAL,EAAY;IACV;EACD;;EACD,KAAK,MAAME,IAAX,IAAmBF,KAAnB,EAA0B;IACxBN,YAAY,CAACQ,IAAD,EAAOT,QAAP,EAAiBQ,IAAjB,CAAZ;EACD;AACF;;AAED,SAASP,YAAT,CACEQ,IADF,EAEET,QAFF,EAGEQ,IAHF,EAIQ;EACN,IAAI,CAACC,IAAL,EAAW;IACT;EACD;;EACDT,QAAQ,CAACS,IAAD,EAAOD,IAAP,CAAR;EACA,MAAME,SAAS,GAAGF,IAAI,CAACG,MAAL,CAAYF,IAAZ,CAAlB;;EACA,QAAQA,IAAI,CAACG,IAAb;IACE,KAAK,MAAL;MACEN,aAAa,CAACG,IAAI,CAACI,MAAN,EAAcb,QAAd,EAAwBU,SAAxB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACK,SAAN,EAAiBd,QAAjB,EAA2BU,SAA3B,CAAb;MACA;;IACF,KAAK,OAAL;MACEJ,aAAa,CAACG,IAAI,CAACM,OAAN,EAAef,QAAf,EAAyBU,SAAzB,CAAb;MACAT,YAAY,CAACQ,IAAI,CAACO,QAAN,EAAgBhB,QAAhB,EAA0BU,SAA1B,CAAZ;MACAT,YAAY,CAACQ,IAAI,CAACQ,IAAN,EAAYjB,QAAZ,EAAsBU,SAAtB,CAAZ;MACAJ,aAAa,CAACG,IAAI,CAACS,SAAN,EAAiBlB,QAAjB,EAA2BU,SAA3B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACU,cAAN,EAAsBnB,QAAtB,EAAgCU,SAAhC,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACW,QAAN,EAAgBpB,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,UAAL;MACEJ,aAAa,CAACG,IAAI,CAACY,MAAN,EAAcrB,QAAd,EAAwBU,SAAxB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACM,OAAN,EAAef,QAAf,EAAyBU,SAAzB,CAAb;MACA;;IACF,KAAK,OAAL;MACET,YAAY,CAACQ,IAAI,CAACa,EAAN,EAAUtB,QAAV,EAAoBU,SAApB,CAAZ;MACAJ,aAAa,CAACG,IAAI,CAACc,MAAN,EAAcvB,QAAd,EAAwBU,SAAxB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACe,SAAN,EAAiBxB,QAAjB,EAA2BU,SAA3B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACgB,QAAN,EAAgBzB,QAAhB,EAA0BU,SAA1B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACiB,UAAN,EAAkB1B,QAAlB,EAA4BU,SAA5B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACM,OAAN,EAAef,QAAf,EAAyBU,SAAzB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACW,QAAN,EAAgBpB,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,MAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;MACEJ,aAAa,CAACG,IAAI,CAACW,QAAN,EAAgBpB,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,SAAL;MACET,YAAY,CAACQ,IAAI,CAACkB,OAAN,EAAe3B,QAAf,EAAyBU,SAAzB,CAAZ;MACAJ,aAAa,CAACG,IAAI,CAACmB,QAAN,EAAgB5B,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,qBAAL;IACA,KAAK,gBAAL;MACET,YAAY,CAACQ,IAAI,CAACkB,OAAN,EAAe3B,QAAf,EAAyBU,SAAzB,CAAZ;MACA;;IACF,KAAK,kBAAL;MACEJ,aAAa,CAACG,IAAI,CAACoB,QAAN,EAAgB7B,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,OAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;IACA,KAAK,kBAAL;MACEJ,aAAa,CAACG,IAAI,CAACqB,QAAN,EAAgB9B,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,cAAL;MACEJ,aAAa,CAACG,IAAI,CAACT,QAAN,EAAgBA,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,sBAAL;MACEJ,aAAa,CAACG,IAAI,CAACc,MAAN,EAAcvB,QAAd,EAAwBU,SAAxB,CAAb;MACA;;IACF,KAAK,WAAL;MACET,YAAY,CAACQ,IAAI,CAACsB,KAAN,EAAa/B,QAAb,EAAuBU,SAAvB,CAAZ;MACA;;IACF,KAAK,YAAL;IACA,KAAK,WAAL;IACA,KAAK,YAAL;IACA,KAAK,kBAAL;IACA,KAAK,kBAAL;MACE;;IACF;MACE;MACA,IAAIsB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;QAC1C;QACA;QACA,MAAM,IAAIC,KAAJ,CAAW,mCAAkC1B,IAAI,CAACG,IAAK,EAAvD,CAAN;MACD;;EArEL;AAuED"}
@@ -1,101 +1,102 @@
1
1
  /** Traverse a storyboard AST. */
2
2
  export function traverseStoryboard(ast, callback) {
3
- traverseNode(ast, callback);
3
+ traverseNode(ast, callback, []);
4
4
  }
5
5
  /** Traverse any node(s) in storyboard AST. */
6
6
 
7
7
  export function traverse(nodeOrNodes, callback) {
8
8
  if (Array.isArray(nodeOrNodes)) {
9
- traverseNodes(nodeOrNodes, callback);
9
+ traverseNodes(nodeOrNodes, callback, []);
10
10
  } else {
11
- traverseNode(nodeOrNodes, callback);
11
+ traverseNode(nodeOrNodes, callback, []);
12
12
  }
13
13
  }
14
14
 
15
- function traverseNodes(nodes, callback) {
15
+ function traverseNodes(nodes, callback, path) {
16
16
  if (!nodes) {
17
17
  return;
18
18
  }
19
19
 
20
20
  for (var _node of nodes) {
21
- traverseNode(_node, callback);
21
+ traverseNode(_node, callback, path);
22
22
  }
23
23
  }
24
24
 
25
- function traverseNode(node, callback) {
25
+ function traverseNode(node, callback, path) {
26
26
  if (!node) {
27
27
  return;
28
28
  }
29
29
 
30
- callback(node);
30
+ callback(node, path);
31
+ var childPath = path.concat(node);
31
32
 
32
33
  switch (node.type) {
33
34
  case "Root":
34
- traverseNodes(node.routes, callback);
35
- traverseNodes(node.templates, callback);
35
+ traverseNodes(node.routes, callback, childPath);
36
+ traverseNodes(node.templates, callback, childPath);
36
37
  break;
37
38
 
38
39
  case "Route":
39
- traverseNodes(node.context, callback);
40
- traverseNode(node.redirect, callback);
41
- traverseNode(node.menu, callback);
42
- traverseNodes(node.providers, callback);
43
- traverseNodes(node.defineResolves, callback);
44
- traverseNodes(node.children, callback);
40
+ traverseNodes(node.context, callback, childPath);
41
+ traverseNode(node.redirect, callback, childPath);
42
+ traverseNode(node.menu, callback, childPath);
43
+ traverseNodes(node.providers, callback, childPath);
44
+ traverseNodes(node.defineResolves, callback, childPath);
45
+ traverseNodes(node.children, callback, childPath);
45
46
  break;
46
47
 
47
48
  case "Template":
48
- traverseNodes(node.bricks, callback);
49
- traverseNodes(node.context, callback);
49
+ traverseNodes(node.bricks, callback, childPath);
50
+ traverseNodes(node.context, callback, childPath);
50
51
  break;
51
52
 
52
53
  case "Brick":
53
- traverseNode(node.if, callback);
54
- traverseNodes(node.events, callback);
55
- traverseNodes(node.lifeCycle, callback);
56
- traverseNodes(node.useBrick, callback);
57
- traverseNodes(node.useBackend, callback);
58
- traverseNodes(node.context, callback);
59
- traverseNodes(node.children, callback);
54
+ traverseNode(node.if, callback, childPath);
55
+ traverseNodes(node.events, callback, childPath);
56
+ traverseNodes(node.lifeCycle, callback, childPath);
57
+ traverseNodes(node.useBrick, callback, childPath);
58
+ traverseNodes(node.useBackend, callback, childPath);
59
+ traverseNodes(node.context, callback, childPath);
60
+ traverseNodes(node.children, callback, childPath);
60
61
  break;
61
62
 
62
63
  case "Slot":
63
64
  case "UseBrickEntry":
64
65
  case "UseBackendEntry":
65
- traverseNodes(node.children, callback);
66
+ traverseNodes(node.children, callback, childPath);
66
67
  break;
67
68
 
68
69
  case "Context":
69
- traverseNode(node.resolve, callback);
70
- traverseNodes(node.onChange, callback);
70
+ traverseNode(node.resolve, callback, childPath);
71
+ traverseNodes(node.onChange, callback, childPath);
71
72
  break;
72
73
 
73
74
  case "ResolvableCondition":
74
75
  case "ResolvableMenu":
75
- traverseNode(node.resolve, callback);
76
+ traverseNode(node.resolve, callback, childPath);
76
77
  break;
77
78
 
78
79
  case "ResolveLifeCycle":
79
- traverseNodes(node.resolves, callback);
80
+ traverseNodes(node.resolves, callback, childPath);
80
81
  break;
81
82
 
82
83
  case "Event":
83
84
  case "EventCallback":
84
85
  case "SimpleLifeCycle":
85
86
  case "ConditionalEvent":
86
- traverseNodes(node.handlers, callback);
87
+ traverseNodes(node.handlers, callback, childPath);
87
88
  break;
88
89
 
89
90
  case "EventHandler":
90
- traverseNodes(node.callback, callback);
91
+ traverseNodes(node.callback, callback, childPath);
91
92
  break;
92
93
 
93
94
  case "ConditionalLifeCycle":
94
- traverseNodes(node.events, callback);
95
+ traverseNodes(node.events, callback, childPath);
95
96
  break;
96
97
 
97
98
  case "BrickMenu":
98
- traverseNode(node.brick, callback);
99
+ traverseNode(node.brick, callback, childPath);
99
100
  break;
100
101
 
101
102
  case "Resolvable":
@@ -1 +1 @@
1
- {"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","node","type","routes","templates","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","brick","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (node: StoryboardNode) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback);\n } else {\n traverseNode(nodeOrNodes, callback);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback);\n }\n}\n\nfunction traverseNode(node: StoryboardNode, callback: TraverseCallback): void {\n if (!node) {\n return;\n }\n callback(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback);\n traverseNodes(node.templates, callback);\n break;\n case \"Route\":\n traverseNodes(node.context, callback);\n traverseNode(node.redirect, callback);\n traverseNode(node.menu, callback);\n traverseNodes(node.providers, callback);\n traverseNodes(node.defineResolves, callback);\n traverseNodes(node.children, callback);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback);\n traverseNodes(node.context, callback);\n break;\n case \"Brick\":\n traverseNode(node.if, callback);\n traverseNodes(node.events, callback);\n traverseNodes(node.lifeCycle, callback);\n traverseNodes(node.useBrick, callback);\n traverseNodes(node.useBackend, callback);\n traverseNodes(node.context, callback);\n traverseNodes(node.children, callback);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback);\n traverseNodes(node.onChange, callback);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":"AAIA;AACA,OAAO,SAASA,kBAAT,CACLC,GADK,EAELC,QAFK,EAGC;EACNC,YAAY,CAACF,GAAD,EAAMC,QAAN,CAAZ;AACD;AAED;;AACA,OAAO,SAASE,QAAT,CACLC,WADK,EAELH,QAFK,EAGC;EACN,IAAII,KAAK,CAACC,OAAN,CAAcF,WAAd,CAAJ,EAAgC;IAC9BG,aAAa,CAACH,WAAD,EAAcH,QAAd,CAAb;EACD,CAFD,MAEO;IACLC,YAAY,CAACE,WAAD,EAAcH,QAAd,CAAZ;EACD;AACF;;AAED,SAASM,aAAT,CACEC,KADF,EAEEP,QAFF,EAGQ;EACN,IAAI,CAACO,KAAL,EAAY;IACV;EACD;;EACD,KAAK,IAAMC,KAAX,IAAmBD,KAAnB,EAA0B;IACxBN,YAAY,CAACO,KAAD,EAAOR,QAAP,CAAZ;EACD;AACF;;AAED,SAASC,YAAT,CAAsBO,IAAtB,EAA4CR,QAA5C,EAA8E;EAC5E,IAAI,CAACQ,IAAL,EAAW;IACT;EACD;;EACDR,QAAQ,CAACQ,IAAD,CAAR;;EACA,QAAQA,IAAI,CAACC,IAAb;IACE,KAAK,MAAL;MACEH,aAAa,CAACE,IAAI,CAACE,MAAN,EAAcV,QAAd,CAAb;MACAM,aAAa,CAACE,IAAI,CAACG,SAAN,EAAiBX,QAAjB,CAAb;MACA;;IACF,KAAK,OAAL;MACEM,aAAa,CAACE,IAAI,CAACI,OAAN,EAAeZ,QAAf,CAAb;MACAC,YAAY,CAACO,IAAI,CAACK,QAAN,EAAgBb,QAAhB,CAAZ;MACAC,YAAY,CAACO,IAAI,CAACM,IAAN,EAAYd,QAAZ,CAAZ;MACAM,aAAa,CAACE,IAAI,CAACO,SAAN,EAAiBf,QAAjB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACQ,cAAN,EAAsBhB,QAAtB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACS,QAAN,EAAgBjB,QAAhB,CAAb;MACA;;IACF,KAAK,UAAL;MACEM,aAAa,CAACE,IAAI,CAACU,MAAN,EAAclB,QAAd,CAAb;MACAM,aAAa,CAACE,IAAI,CAACI,OAAN,EAAeZ,QAAf,CAAb;MACA;;IACF,KAAK,OAAL;MACEC,YAAY,CAACO,IAAI,CAACW,EAAN,EAAUnB,QAAV,CAAZ;MACAM,aAAa,CAACE,IAAI,CAACY,MAAN,EAAcpB,QAAd,CAAb;MACAM,aAAa,CAACE,IAAI,CAACa,SAAN,EAAiBrB,QAAjB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACc,QAAN,EAAgBtB,QAAhB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACe,UAAN,EAAkBvB,QAAlB,CAAb;MACAM,aAAa,CAACE,IAAI,CAACI,OAAN,EAAeZ,QAAf,CAAb;MACAM,aAAa,CAACE,IAAI,CAACS,QAAN,EAAgBjB,QAAhB,CAAb;MACA;;IACF,KAAK,MAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;MACEM,aAAa,CAACE,IAAI,CAACS,QAAN,EAAgBjB,QAAhB,CAAb;MACA;;IACF,KAAK,SAAL;MACEC,YAAY,CAACO,IAAI,CAACgB,OAAN,EAAexB,QAAf,CAAZ;MACAM,aAAa,CAACE,IAAI,CAACiB,QAAN,EAAgBzB,QAAhB,CAAb;MACA;;IACF,KAAK,qBAAL;IACA,KAAK,gBAAL;MACEC,YAAY,CAACO,IAAI,CAACgB,OAAN,EAAexB,QAAf,CAAZ;MACA;;IACF,KAAK,kBAAL;MACEM,aAAa,CAACE,IAAI,CAACkB,QAAN,EAAgB1B,QAAhB,CAAb;MACA;;IACF,KAAK,OAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;IACA,KAAK,kBAAL;MACEM,aAAa,CAACE,IAAI,CAACmB,QAAN,EAAgB3B,QAAhB,CAAb;MACA;;IACF,KAAK,cAAL;MACEM,aAAa,CAACE,IAAI,CAACR,QAAN,EAAgBA,QAAhB,CAAb;MACA;;IACF,KAAK,sBAAL;MACEM,aAAa,CAACE,IAAI,CAACY,MAAN,EAAcpB,QAAd,CAAb;MACA;;IACF,KAAK,WAAL;MACEC,YAAY,CAACO,IAAI,CAACoB,KAAN,EAAa5B,QAAb,CAAZ;MACA;;IACF,KAAK,YAAL;IACA,KAAK,WAAL;IACA,KAAK,YAAL;IACA,KAAK,kBAAL;IACA,KAAK,kBAAL;MACE;;IACF;MACE;MACA,IAAI6B,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;QAC1C;QACA;QACA,MAAM,IAAIC,KAAJ,2CAA6CxB,IAAI,CAACC,IAAlD,EAAN;MACD;;EArEL;AAuED"}
1
+ {"version":3,"file":"traverseStoryboard.js","names":["traverseStoryboard","ast","callback","traverseNode","traverse","nodeOrNodes","Array","isArray","traverseNodes","nodes","path","node","childPath","concat","type","routes","templates","context","redirect","menu","providers","defineResolves","children","bricks","if","events","lifeCycle","useBrick","useBackend","resolve","onChange","resolves","handlers","brick","process","env","NODE_ENV","Error"],"sources":["../../src/traverseStoryboard.ts"],"sourcesContent":["import type { StoryboardNode, StoryboardNodeRoot } from \"./interfaces\";\n\nexport type TraverseCallback = (\n node: StoryboardNode,\n path: StoryboardNode[]\n) => void;\n\n/** Traverse a storyboard AST. */\nexport function traverseStoryboard(\n ast: StoryboardNodeRoot,\n callback: TraverseCallback\n): void {\n traverseNode(ast, callback, []);\n}\n\n/** Traverse any node(s) in storyboard AST. */\nexport function traverse(\n nodeOrNodes: StoryboardNode | StoryboardNode[],\n callback: TraverseCallback\n): void {\n if (Array.isArray(nodeOrNodes)) {\n traverseNodes(nodeOrNodes, callback, []);\n } else {\n traverseNode(nodeOrNodes, callback, []);\n }\n}\n\nfunction traverseNodes(\n nodes: StoryboardNode[],\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!nodes) {\n return;\n }\n for (const node of nodes) {\n traverseNode(node, callback, path);\n }\n}\n\nfunction traverseNode(\n node: StoryboardNode,\n callback: TraverseCallback,\n path: StoryboardNode[]\n): void {\n if (!node) {\n return;\n }\n callback(node, path);\n const childPath = path.concat(node);\n switch (node.type) {\n case \"Root\":\n traverseNodes(node.routes, callback, childPath);\n traverseNodes(node.templates, callback, childPath);\n break;\n case \"Route\":\n traverseNodes(node.context, callback, childPath);\n traverseNode(node.redirect, callback, childPath);\n traverseNode(node.menu, callback, childPath);\n traverseNodes(node.providers, callback, childPath);\n traverseNodes(node.defineResolves, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Template\":\n traverseNodes(node.bricks, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n break;\n case \"Brick\":\n traverseNode(node.if, callback, childPath);\n traverseNodes(node.events, callback, childPath);\n traverseNodes(node.lifeCycle, callback, childPath);\n traverseNodes(node.useBrick, callback, childPath);\n traverseNodes(node.useBackend, callback, childPath);\n traverseNodes(node.context, callback, childPath);\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Slot\":\n case \"UseBrickEntry\":\n case \"UseBackendEntry\":\n traverseNodes(node.children, callback, childPath);\n break;\n case \"Context\":\n traverseNode(node.resolve, callback, childPath);\n traverseNodes(node.onChange, callback, childPath);\n break;\n case \"ResolvableCondition\":\n case \"ResolvableMenu\":\n traverseNode(node.resolve, callback, childPath);\n break;\n case \"ResolveLifeCycle\":\n traverseNodes(node.resolves, callback, childPath);\n break;\n case \"Event\":\n case \"EventCallback\":\n case \"SimpleLifeCycle\":\n case \"ConditionalEvent\":\n traverseNodes(node.handlers, callback, childPath);\n break;\n case \"EventHandler\":\n traverseNodes(node.callback, callback, childPath);\n break;\n case \"ConditionalLifeCycle\":\n traverseNodes(node.events, callback, childPath);\n break;\n case \"BrickMenu\":\n traverseNode(node.brick, callback, childPath);\n break;\n case \"Resolvable\":\n case \"FalseMenu\":\n case \"StaticMenu\":\n case \"UnknownLifeCycle\":\n case \"LiteralCondition\":\n break;\n default:\n // istanbul ignore if\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n throw new Error(`Unhandled storyboard node type: ${node.type}`);\n }\n }\n}\n"],"mappings":"AAOA;AACA,OAAO,SAASA,kBAAT,CACLC,GADK,EAELC,QAFK,EAGC;EACNC,YAAY,CAACF,GAAD,EAAMC,QAAN,EAAgB,EAAhB,CAAZ;AACD;AAED;;AACA,OAAO,SAASE,QAAT,CACLC,WADK,EAELH,QAFK,EAGC;EACN,IAAII,KAAK,CAACC,OAAN,CAAcF,WAAd,CAAJ,EAAgC;IAC9BG,aAAa,CAACH,WAAD,EAAcH,QAAd,EAAwB,EAAxB,CAAb;EACD,CAFD,MAEO;IACLC,YAAY,CAACE,WAAD,EAAcH,QAAd,EAAwB,EAAxB,CAAZ;EACD;AACF;;AAED,SAASM,aAAT,CACEC,KADF,EAEEP,QAFF,EAGEQ,IAHF,EAIQ;EACN,IAAI,CAACD,KAAL,EAAY;IACV;EACD;;EACD,KAAK,IAAME,KAAX,IAAmBF,KAAnB,EAA0B;IACxBN,YAAY,CAACQ,KAAD,EAAOT,QAAP,EAAiBQ,IAAjB,CAAZ;EACD;AACF;;AAED,SAASP,YAAT,CACEQ,IADF,EAEET,QAFF,EAGEQ,IAHF,EAIQ;EACN,IAAI,CAACC,IAAL,EAAW;IACT;EACD;;EACDT,QAAQ,CAACS,IAAD,EAAOD,IAAP,CAAR;EACA,IAAME,SAAS,GAAGF,IAAI,CAACG,MAAL,CAAYF,IAAZ,CAAlB;;EACA,QAAQA,IAAI,CAACG,IAAb;IACE,KAAK,MAAL;MACEN,aAAa,CAACG,IAAI,CAACI,MAAN,EAAcb,QAAd,EAAwBU,SAAxB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACK,SAAN,EAAiBd,QAAjB,EAA2BU,SAA3B,CAAb;MACA;;IACF,KAAK,OAAL;MACEJ,aAAa,CAACG,IAAI,CAACM,OAAN,EAAef,QAAf,EAAyBU,SAAzB,CAAb;MACAT,YAAY,CAACQ,IAAI,CAACO,QAAN,EAAgBhB,QAAhB,EAA0BU,SAA1B,CAAZ;MACAT,YAAY,CAACQ,IAAI,CAACQ,IAAN,EAAYjB,QAAZ,EAAsBU,SAAtB,CAAZ;MACAJ,aAAa,CAACG,IAAI,CAACS,SAAN,EAAiBlB,QAAjB,EAA2BU,SAA3B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACU,cAAN,EAAsBnB,QAAtB,EAAgCU,SAAhC,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACW,QAAN,EAAgBpB,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,UAAL;MACEJ,aAAa,CAACG,IAAI,CAACY,MAAN,EAAcrB,QAAd,EAAwBU,SAAxB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACM,OAAN,EAAef,QAAf,EAAyBU,SAAzB,CAAb;MACA;;IACF,KAAK,OAAL;MACET,YAAY,CAACQ,IAAI,CAACa,EAAN,EAAUtB,QAAV,EAAoBU,SAApB,CAAZ;MACAJ,aAAa,CAACG,IAAI,CAACc,MAAN,EAAcvB,QAAd,EAAwBU,SAAxB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACe,SAAN,EAAiBxB,QAAjB,EAA2BU,SAA3B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACgB,QAAN,EAAgBzB,QAAhB,EAA0BU,SAA1B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACiB,UAAN,EAAkB1B,QAAlB,EAA4BU,SAA5B,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACM,OAAN,EAAef,QAAf,EAAyBU,SAAzB,CAAb;MACAJ,aAAa,CAACG,IAAI,CAACW,QAAN,EAAgBpB,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,MAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;MACEJ,aAAa,CAACG,IAAI,CAACW,QAAN,EAAgBpB,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,SAAL;MACET,YAAY,CAACQ,IAAI,CAACkB,OAAN,EAAe3B,QAAf,EAAyBU,SAAzB,CAAZ;MACAJ,aAAa,CAACG,IAAI,CAACmB,QAAN,EAAgB5B,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,qBAAL;IACA,KAAK,gBAAL;MACET,YAAY,CAACQ,IAAI,CAACkB,OAAN,EAAe3B,QAAf,EAAyBU,SAAzB,CAAZ;MACA;;IACF,KAAK,kBAAL;MACEJ,aAAa,CAACG,IAAI,CAACoB,QAAN,EAAgB7B,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,OAAL;IACA,KAAK,eAAL;IACA,KAAK,iBAAL;IACA,KAAK,kBAAL;MACEJ,aAAa,CAACG,IAAI,CAACqB,QAAN,EAAgB9B,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,cAAL;MACEJ,aAAa,CAACG,IAAI,CAACT,QAAN,EAAgBA,QAAhB,EAA0BU,SAA1B,CAAb;MACA;;IACF,KAAK,sBAAL;MACEJ,aAAa,CAACG,IAAI,CAACc,MAAN,EAAcvB,QAAd,EAAwBU,SAAxB,CAAb;MACA;;IACF,KAAK,WAAL;MACET,YAAY,CAACQ,IAAI,CAACsB,KAAN,EAAa/B,QAAb,EAAuBU,SAAvB,CAAZ;MACA;;IACF,KAAK,YAAL;IACA,KAAK,WAAL;IACA,KAAK,YAAL;IACA,KAAK,kBAAL;IACA,KAAK,kBAAL;MACE;;IACF;MACE;MACA,IAAIsB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;QAC1C;QACA;QACA,MAAM,IAAIC,KAAJ,2CAA6C1B,IAAI,CAACG,IAAlD,EAAN;MACD;;EArEL;AAuED"}
@@ -1,5 +1,5 @@
1
1
  import type { StoryboardNode, StoryboardNodeRoot } from "./interfaces";
2
- export declare type TraverseCallback = (node: StoryboardNode) => void;
2
+ export declare type TraverseCallback = (node: StoryboardNode, path: StoryboardNode[]) => void;
3
3
  /** Traverse a storyboard AST. */
4
4
  export declare function traverseStoryboard(ast: StoryboardNodeRoot, callback: TraverseCallback): void;
5
5
  /** Traverse any node(s) in storyboard AST. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/storyboard",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Parse storyboard as AST",
5
5
  "homepage": "https://github.com/easyops-cn/next-core/tree/master/packages/storyboard",
6
6
  "license": "GPL-3.0",
@@ -29,10 +29,10 @@
29
29
  },
30
30
  "sideEffects": false,
31
31
  "dependencies": {
32
- "@next-core/brick-types": "^2.81.7"
32
+ "@next-core/brick-types": "^2.81.8"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@next-core/build-next-libs": "^0.2.14"
36
36
  },
37
- "gitHead": "704077e40803c864322b53df4d292c8bc67cb169"
37
+ "gitHead": "430d0efb56fcc53abd043c4d1f86d6fb769dc639"
38
38
  }