@next-core/storyboard 0.3.0 → 0.3.2

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.
package/dist/cjs/index.js CHANGED
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _interfaces = require("./interfaces");
8
-
9
7
  Object.keys(_interfaces).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _interfaces[key]) return;
@@ -16,9 +14,7 @@ Object.keys(_interfaces).forEach(function (key) {
16
14
  }
17
15
  });
18
16
  });
19
-
20
17
  var _parseStoryboard = require("./parseStoryboard");
21
-
22
18
  Object.keys(_parseStoryboard).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (key in exports && exports[key] === _parseStoryboard[key]) return;
@@ -29,9 +25,7 @@ Object.keys(_parseStoryboard).forEach(function (key) {
29
25
  }
30
26
  });
31
27
  });
32
-
33
28
  var _traverseStoryboard = require("./traverseStoryboard");
34
-
35
29
  Object.keys(_traverseStoryboard).forEach(function (key) {
36
30
  if (key === "default" || key === "__esModule") return;
37
31
  if (key in exports && exports[key] === _traverseStoryboard[key]) return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -8,11 +8,9 @@ exports.parseRoutes = parseRoutes;
8
8
  exports.parseStoryboard = parseStoryboard;
9
9
  exports.parseTemplate = parseTemplate;
10
10
  exports.parseTemplates = parseTemplates;
11
-
12
11
  /** Parse storyboard as AST. */
13
12
  function parseStoryboard(storyboard) {
14
13
  var _storyboard$meta;
15
-
16
14
  return {
17
15
  type: "Root",
18
16
  raw: storyboard,
@@ -20,7 +18,6 @@ function parseStoryboard(storyboard) {
20
18
  templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates)
21
19
  };
22
20
  }
23
-
24
21
  /** Parse storyboard routes as AST. */
25
22
  function parseRoutes(routes, options) {
26
23
  if (Array.isArray(routes)) {
@@ -37,22 +34,18 @@ function parseRoutes(routes, options) {
37
34
  children: route.type === "routes" ? parseRoutes(route.routes, options) : parseBricks(route.bricks, options)
38
35
  }));
39
36
  }
40
-
41
37
  return [];
42
38
  }
43
- /** Parse storyboard templates as AST. */
44
-
45
39
 
40
+ /** Parse storyboard templates as AST. */
46
41
  function parseTemplates(templates) {
47
42
  if (Array.isArray(templates)) {
48
43
  return templates.map(parseTemplate);
49
44
  }
50
-
51
45
  return [];
52
46
  }
53
- /** Parse a storyboard template as AST. */
54
-
55
47
 
48
+ /** Parse a storyboard template as AST. */
56
49
  function parseTemplate(tpl) {
57
50
  return {
58
51
  type: "Template",
@@ -61,17 +54,14 @@ function parseTemplate(tpl) {
61
54
  context: parseContext(tpl.state)
62
55
  };
63
56
  }
64
-
65
57
  function parseBricks(bricks, options) {
66
58
  if (Array.isArray(bricks)) {
67
59
  return bricks.map(brick => parseBrick(brick, options));
68
60
  }
69
-
70
61
  return [];
71
62
  }
72
- /** Parse a storyboard brick as AST. */
73
-
74
63
 
64
+ /** Parse a storyboard brick as AST. */
75
65
  function parseBrick(brick, options) {
76
66
  return {
77
67
  type: "Brick",
@@ -87,7 +77,6 @@ function parseBrick(brick, options) {
87
77
  children: parseSlots(brick.slots, options)
88
78
  };
89
79
  }
90
-
91
80
  function parseCondition(condition) {
92
81
  if (isObject(condition)) {
93
82
  return {
@@ -95,16 +84,13 @@ function parseCondition(condition) {
95
84
  resolve: parseResolvable(condition)
96
85
  };
97
86
  }
98
-
99
87
  return {
100
88
  type: "LiteralCondition"
101
89
  };
102
90
  }
103
-
104
91
  function parseBrickProperties(props) {
105
92
  const useBrick = [];
106
93
  const useBackend = [];
107
-
108
94
  function walkBrickProperties(value) {
109
95
  if (Array.isArray(value)) {
110
96
  for (const item of value) {
@@ -113,7 +99,6 @@ function parseBrickProperties(props) {
113
99
  } else if (isObject(value)) {
114
100
  if (value.useBrick || value.useBackend) {
115
101
  var _value$useBackend;
116
-
117
102
  if (value.useBrick) {
118
103
  useBrick.push({
119
104
  type: "UseBrickEntry",
@@ -124,9 +109,7 @@ function parseBrickProperties(props) {
124
109
  })
125
110
  });
126
111
  }
127
-
128
112
  const provider = (_value$useBackend = value.useBackend) === null || _value$useBackend === void 0 ? void 0 : _value$useBackend.provider;
129
-
130
113
  if (typeof provider === "string") {
131
114
  useBackend.push({
132
115
  type: "UseBackendEntry",
@@ -144,14 +127,12 @@ function parseBrickProperties(props) {
144
127
  }
145
128
  }
146
129
  }
147
-
148
130
  walkBrickProperties(props);
149
131
  return {
150
132
  useBrick,
151
133
  useBackend
152
134
  };
153
135
  }
154
-
155
136
  function parseLifeCycles(lifeCycle) {
156
137
  if (isObject(lifeCycle)) {
157
138
  return Object.entries(lifeCycle).map(([name, conf]) => {
@@ -163,7 +144,6 @@ function parseLifeCycles(lifeCycle) {
163
144
  rawKey: name,
164
145
  resolves: Array.isArray(conf) ? conf.map(item => parseResolvable(item, true)).filter(Boolean) : undefined
165
146
  };
166
-
167
147
  case "onPageLoad":
168
148
  case "onPageLeave":
169
149
  case "onAnchorLoad":
@@ -181,7 +161,6 @@ function parseLifeCycles(lifeCycle) {
181
161
  rawKey: name,
182
162
  handlers: parseEventHandlers(conf)
183
163
  };
184
-
185
164
  case "onMessage":
186
165
  case "onScrollIntoView":
187
166
  return {
@@ -194,7 +173,6 @@ function parseLifeCycles(lifeCycle) {
194
173
  handlers: parseEventHandlers(item.handlers)
195
174
  }))
196
175
  };
197
-
198
176
  default:
199
177
  return {
200
178
  type: "UnknownLifeCycle"
@@ -203,7 +181,6 @@ function parseLifeCycles(lifeCycle) {
203
181
  });
204
182
  }
205
183
  }
206
-
207
184
  function parseSlots(slots, options) {
208
185
  if (isObject(slots)) {
209
186
  return Object.entries(slots).map(([slot, conf]) => ({
@@ -214,10 +191,8 @@ function parseSlots(slots, options) {
214
191
  children: conf.type === "routes" ? parseRoutes(conf.routes, options) : parseBricks(conf.bricks, options)
215
192
  }));
216
193
  }
217
-
218
194
  return [];
219
195
  }
220
-
221
196
  function parseEvents(events) {
222
197
  if (isObject(events)) {
223
198
  return Object.entries(events).map(([eventType, handlers]) => ({
@@ -228,7 +203,6 @@ function parseEvents(events) {
228
203
  }));
229
204
  }
230
205
  }
231
-
232
206
  function parseContext(contexts) {
233
207
  if (Array.isArray(contexts)) {
234
208
  return contexts.map(context => ({
@@ -239,18 +213,15 @@ function parseContext(contexts) {
239
213
  }));
240
214
  }
241
215
  }
242
-
243
216
  function parseMenu(menu) {
244
217
  if (menu === false) {
245
218
  return {
246
219
  type: "FalseMenu"
247
220
  };
248
221
  }
249
-
250
222
  if (!menu) {
251
223
  return;
252
224
  }
253
-
254
225
  switch (menu.type) {
255
226
  case "brick":
256
227
  return {
@@ -258,20 +229,17 @@ function parseMenu(menu) {
258
229
  raw: menu,
259
230
  brick: parseBrick(menu)
260
231
  };
261
-
262
232
  case "resolve":
263
233
  return {
264
234
  type: "ResolvableMenu",
265
235
  resolve: parseResolvable(menu.resolve)
266
236
  };
267
-
268
237
  default:
269
238
  return {
270
239
  type: "StaticMenu"
271
240
  };
272
241
  }
273
242
  }
274
-
275
243
  function parseResolvable(resolve, isConditional) {
276
244
  if (isObject(resolve)) {
277
245
  return {
@@ -281,7 +249,6 @@ function parseResolvable(resolve, isConditional) {
281
249
  };
282
250
  }
283
251
  }
284
-
285
252
  function parseEventHandlers(handlers) {
286
253
  return [].concat(handlers).filter(Boolean).map(handler => ({
287
254
  type: "EventHandler",
@@ -289,7 +256,6 @@ function parseEventHandlers(handlers) {
289
256
  raw: handler
290
257
  }));
291
258
  }
292
-
293
259
  function parseEventCallback(callback) {
294
260
  if (isObject(callback)) {
295
261
  return Object.entries(callback).map(([callbackType, handlers]) => ({
@@ -300,16 +266,15 @@ function parseEventCallback(callback) {
300
266
  }));
301
267
  }
302
268
  }
303
-
304
269
  function parseRouteProviders(providers) {
305
270
  if (Array.isArray(providers)) {
306
271
  return providers.map(provider => parseBrick(typeof provider === "string" ? {
307
272
  brick: provider
308
273
  } : provider));
309
274
  }
310
- } // Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744
311
-
275
+ }
312
276
 
277
+ // Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744
313
278
  function isObject(value) {
314
279
  const type = typeof value;
315
280
  return value != null && (type == "object" || type == "function");
@@ -1 +1 @@
1
- {"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(brick.slots as SlotsConf, options),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(brick.slots as SlotsConf, options),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n"],"mappings":";;;;;;;;;;AAyCA;AACO,SAASA,eAAe,CAACC,UAAsB,EAAsB;EAAA;EAC1E,OAAO;IACLC,IAAI,EAAE,MAAM;IACZC,GAAG,EAAEF,UAAU;IACfG,MAAM,EAAEC,WAAW,CAACJ,UAAU,CAACG,MAAM,CAAC;IACtCE,SAAS,EAAEC,cAAc,qBAACN,UAAU,CAACO,IAAI,qDAAf,iBAAiBC,eAAe;EAC5D,CAAC;AACH;AAOA;AACO,SAASJ,WAAW,CACzBD,MAAmB,EACnBM,OAAsB,EACC;EACvB,IAAIC,KAAK,CAACC,OAAO,CAACR,MAAM,CAAC,EAAE;IACzB,OAAOA,MAAM,CAACS,GAAG,CAAuBC,KAAK,KAAM;MACjDZ,IAAI,EAAE,OAAO;MACbC,GAAG,EAAEW,KAAK;MACV,IAAIJ,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,UAAU,GACnB,IAAI,GACJ;QACEC,OAAO,EAAEC,YAAY,CAACH,KAAK,CAACE,OAAO,CAAC;QACpCE,QAAQ,EAAEC,eAAe,CAACL,KAAK,CAACI,QAAQ,CAAgB;QACxDE,IAAI,EAAEC,SAAS,CAACP,KAAK,CAACM,IAAI,CAAC;QAC3BE,SAAS,EAAEC,mBAAmB,CAACT,KAAK,CAACQ,SAAS,CAAC;QAC/CE,cAAc,EAAEb,KAAK,CAACC,OAAO,CAACE,KAAK,CAACU,cAAc,CAAC,GAC/CV,KAAK,CAACU,cAAc,CACjBX,GAAG,CAAEY,IAAI,IAAKN,eAAe,CAACM,IAAI,CAAC,CAAC,CACpCC,MAAM,CAACC,OAAO,CAAC,GAClBC;MACN,CAAC,CAAC;MACNC,QAAQ,EACNf,KAAK,CAACZ,IAAI,KAAK,QAAQ,GACnBG,WAAW,CAACS,KAAK,CAACV,MAAM,EAAEM,OAAO,CAAC,GAClCoB,WAAW,CAAEhB,KAAK,CAAuBiB,MAAM,EAAErB,OAAO;IAChE,CAAC,CAAC,CAAC;EACL;EACA,OAAO,EAAE;AACX;;AAEA;AACO,SAASH,cAAc,CAC5BD,SAAyD,EAC/B;EAC1B,IAAIK,KAAK,CAACC,OAAO,CAACN,SAAS,CAAC,EAAE;IAC5B,OAAOA,SAAS,CAACO,GAAG,CAAyBmB,aAAa,CAAC;EAC7D;EACA,OAAO,EAAE;AACX;;AAEA;AACO,SAASA,aAAa,CAC3BC,GAA+C,EACvB;EACxB,OAAO;IACL/B,IAAI,EAAE,UAAU;IAChBC,GAAG,EAAE8B,GAAG;IACRF,MAAM,EAAED,WAAW,CAACG,GAAG,CAACF,MAAM,CAAC;IAC/Bf,OAAO,EAAEC,YAAY,CAACgB,GAAG,CAACC,KAAK;EACjC,CAAC;AACH;AAEA,SAASJ,WAAW,CAClBC,MAA0C,EAC1CrB,OAAsB,EACC;EACvB,IAAIC,KAAK,CAACC,OAAO,CAACmB,MAAM,CAAC,EAAE;IACzB,OAAOA,MAAM,CAAClB,GAAG,CAAEsB,KAAK,IAAKC,UAAU,CAACD,KAAK,EAAEzB,OAAO,CAAC,CAAC;EAC1D;EACA,OAAO,EAAE;AACX;;AAEA;AACO,SAAS0B,UAAU,CACxBD,KAAqC,EACrCzB,OAAsB,EACD;EACrB,OAAO;IACLR,IAAI,EAAE,OAAO;IACbC,GAAG,EAAEgC,KAAK;IACVE,UAAU,EAAE3B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B,UAAU;IAC/B,IAAI3B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,UAAU,GACnB,IAAI,GACJ;MACEuB,EAAE,EAAEC,cAAc,CAACJ,KAAK,CAACG,EAAE,CAAC;MAC5BE,MAAM,EAAEC,WAAW,CAACN,KAAK,CAACK,MAAM,CAAC;MACjCE,SAAS,EAAEC,eAAe,CAACR,KAAK,CAACO,SAAS,CAAC;MAC3C,GAAGE,oBAAoB,CAACT,KAAK,CAACU,UAAU,CAAC;MACzC7B,OAAO,EAAEC,YAAY,CAAEkB,KAAK,CAAenB,OAAO;IACpD,CAAC,CAAC;IACNa,QAAQ,EAAEiB,UAAU,CAACX,KAAK,CAACY,KAAK,EAAerC,OAAO;EACxD,CAAC;AACH;AAEA,SAAS6B,cAAc,CAACS,SAA0B,EAA2B;EAC3E,IAAIC,QAAQ,CAACD,SAAS,CAAC,EAAE;IACvB,OAAO;MACL9C,IAAI,EAAE,qBAAqB;MAC3BgD,OAAO,EAAE/B,eAAe,CAAC6B,SAAS;IACpC,CAAC;EACH;EACA,OAAO;IACL9C,IAAI,EAAE;EACR,CAAC;AACH;AAEA,SAAS0C,oBAAoB,CAACO,KAAc,EAG1C;EACA,MAAMC,QAAuC,GAAG,EAAE;EAClD,MAAMC,UAA2C,GAAG,EAAE;EAEtD,SAASC,mBAAmB,CAACC,KAAc,EAAQ;IACjD,IAAI5C,KAAK,CAACC,OAAO,CAAC2C,KAAK,CAAC,EAAE;MACxB,KAAK,MAAM9B,IAAI,IAAI8B,KAAK,EAAE;QACxBD,mBAAmB,CAAC7B,IAAI,CAAC;MAC3B;IACF,CAAC,MAAM,IAAIwB,QAAQ,CAACM,KAAK,CAAC,EAAE;MAC1B,IAAIA,KAAK,CAACH,QAAQ,IAAIG,KAAK,CAACF,UAAU,EAAE;QAAA;QACtC,IAAIE,KAAK,CAACH,QAAQ,EAAE;UAClBA,QAAQ,CAACI,IAAI,CAAC;YACZtD,IAAI,EAAE,eAAe;YACrBuD,YAAY,EAAEF,KAAK;YACnBG,MAAM,EAAE,UAAU;YAClB7B,QAAQ,EAAEC,WAAW,CAClB,EAAE,CAA0B6B,MAAM,CAACJ,KAAK,CAACH,QAAQ,CAAC,EACnD;cACEf,UAAU,EAAE;YACd,CAAC;UAEL,CAAC,CAAC;QACJ;QACA,MAAMuB,QAAQ,wBAAGL,KAAK,CAACF,UAAU,sDAAhB,kBAAkBO,QAAQ;QAC3C,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;UAChCP,UAAU,CAACG,IAAI,CAAC;YACdtD,IAAI,EAAE,iBAAiB;YACvBuD,YAAY,EAAEF,KAAK;YACnBG,MAAM,EAAE,YAAY;YACpB7B,QAAQ,EAAE,CAACO,UAAU,CAAC;cAAED,KAAK,EAAEyB;YAAS,CAAC,CAAC;UAC5C,CAAC,CAAC;QACJ;MACF,CAAC,MAAM;QACL,KAAK,MAAMnC,IAAI,IAAIoC,MAAM,CAACC,MAAM,CAACP,KAAK,CAAC,EAAE;UACvCD,mBAAmB,CAAC7B,IAAI,CAAC;QAC3B;MACF;IACF;EACF;EAEA6B,mBAAmB,CAACH,KAAK,CAAC;EAE1B,OAAO;IAAEC,QAAQ;IAAEC;EAAW,CAAC;AACjC;AAEA,SAASV,eAAe,CAACD,SAAyB,EAA6B;EAC7E,IAAIO,QAAQ,CAACP,SAAS,CAAC,EAAE;IACvB,OAAOmB,MAAM,CAACE,OAAO,CAACrB,SAAS,CAAC,CAAC7B,GAAG,CAClC,CAAC,CAACmD,IAAI,EAAEC,IAAI,CAAC,KAAK;MAChB,QAAQD,IAAI;QACV,KAAK,aAAa;UAChB,OAAO;YACL9D,IAAI,EAAE,kBAAkB;YACxBuD,YAAY,EAAEf,SAAS;YACvBgB,MAAM,EAAEM,IAAI;YACZE,QAAQ,EAAEvD,KAAK,CAACC,OAAO,CAACqD,IAAI,CAAC,GACzBA,IAAI,CACDpD,GAAG,CAAEY,IAAI,IAAKN,eAAe,CAACM,IAAI,EAAE,IAAI,CAAC,CAAC,CAC1CC,MAAM,CAACC,OAAO,CAAC,GAClBC;UACN,CAAC;QACH,KAAK,YAAY;QACjB,KAAK,aAAa;QAClB,KAAK,cAAc;QACnB,KAAK,gBAAgB;QACrB,KAAK,gBAAgB;QACrB,KAAK,kBAAkB;QACvB,KAAK,mBAAmB;QACxB,KAAK,SAAS;QACd,KAAK,WAAW;QAChB,KAAK,eAAe;UAClB,OAAO;YACL1B,IAAI,EAAE,iBAAiB;YACvB8D,IAAI;YACJP,YAAY,EAAEf,SAAS;YACvBgB,MAAM,EAAEM,IAAI;YACZG,QAAQ,EAAEC,kBAAkB,CAACH,IAAI;UACnC,CAAC;QACH,KAAK,WAAW;QAChB,KAAK,kBAAkB;UACrB,OAAO;YACL/D,IAAI,EAAE,sBAAsB;YAC5B8D,IAAI;YACJxB,MAAM,EAAG,EAAE,CACRmB,MAAM,CAACM,IAAI,CAAC,CACZvC,MAAM,CAACC,OAAO,CAAC,CACfd,GAAG,CAAkCY,IAAI,KAAM;cAC9CvB,IAAI,EAAE,kBAAkB;cACxBuD,YAAY,EAAEhC,IAAI;cAClBiC,MAAM,EAAE,UAAU;cAClBS,QAAQ,EAAEC,kBAAkB,CAAC3C,IAAI,CAAC0C,QAAQ;YAC5C,CAAC,CAAC;UACN,CAAC;QACH;UACE,OAAO;YAAEjE,IAAI,EAAE;UAAmB,CAAC;MAAC;IAE1C,CAAC,CACF;EACH;AACF;AAEA,SAAS4C,UAAU,CACjBC,KAAgB,EAChBrC,OAAsB,EACA;EACtB,IAAIuC,QAAQ,CAACF,KAAK,CAAC,EAAE;IACnB,OAAOc,MAAM,CAACE,OAAO,CAAChB,KAAK,CAAC,CAAClC,GAAG,CAAqB,CAAC,CAACwD,IAAI,EAAEJ,IAAI,CAAC,MAAM;MACtE/D,IAAI,EAAE,MAAM;MACZC,GAAG,EAAE8D,IAAI;MACTI,IAAI;MACJC,YAAY,EAAEL,IAAI,CAAC/D,IAAI,KAAK,QAAQ,GAAG,OAAO,GAAG,OAAO;MACxD2B,QAAQ,EACNoC,IAAI,CAAC/D,IAAI,KAAK,QAAQ,GAClBG,WAAW,CAAC4D,IAAI,CAAC7D,MAAM,EAAEM,OAAO,CAAC,GACjCoB,WAAW,CAACmC,IAAI,CAAClC,MAAM,EAAErB,OAAO;IACxC,CAAC,CAAC,CAAC;EACL;EACA,OAAO,EAAE;AACX;AAEA,SAAS+B,WAAW,CAACD,MAAsB,EAAyB;EAClE,IAAIS,QAAQ,CAACT,MAAM,CAAC,EAAE;IACpB,OAAOqB,MAAM,CAACE,OAAO,CAACvB,MAAM,CAAC,CAAC3B,GAAG,CAC/B,CAAC,CAAC0D,SAAS,EAAEJ,QAAQ,CAAC,MAAM;MAC1BjE,IAAI,EAAE,OAAO;MACbuD,YAAY,EAAEjB,MAAM;MACpBkB,MAAM,EAAEa,SAAS;MACjBJ,QAAQ,EAAEC,kBAAkB,CAACD,QAAQ;IACvC,CAAC,CAAC,CACH;EACH;AACF;AAEA,SAASlD,YAAY,CACnBuD,QAA+C,EACtB;EACzB,IAAI7D,KAAK,CAACC,OAAO,CAAC4D,QAAQ,CAAC,EAAE;IAC3B,OAAOA,QAAQ,CAAC3D,GAAG,CAAyBG,OAAO,KAAM;MACvDd,IAAI,EAAE,SAAS;MACfC,GAAG,EAAEa,OAAO;MACZkC,OAAO,EAAE/B,eAAe,CAACH,OAAO,CAACkC,OAAO,CAAC;MACzCuB,QAAQ,EAAEL,kBAAkB,CAACpD,OAAO,CAACyD,QAAQ;IAC/C,CAAC,CAAC,CAAC;EACL;AACF;AAEA,SAASpD,SAAS,CAACD,IAAc,EAAsB;EACrD,IAAIA,IAAI,KAAK,KAAK,EAAE;IAClB,OAAO;MAAElB,IAAI,EAAE;IAAY,CAAC;EAC9B;EACA,IAAI,CAACkB,IAAI,EAAE;IACT;EACF;EACA,QAAQA,IAAI,CAAClB,IAAI;IACf,KAAK,OAAO;MACV,OAAO;QACLA,IAAI,EAAE,WAAW;QACjBC,GAAG,EAAEiB,IAAI;QACTe,KAAK,EAAEC,UAAU,CAAChB,IAAI;MACxB,CAAC;IACH,KAAK,SAAS;MACZ,OAAO;QACLlB,IAAI,EAAE,gBAAgB;QACtBgD,OAAO,EAAE/B,eAAe,CAACC,IAAI,CAAC8B,OAAO;MACvC,CAAC;IACH;MACE,OAAO;QACLhD,IAAI,EAAE;MACR,CAAC;EAAC;AAER;AAEA,SAASiB,eAAe,CACtB+B,OAAoB,EACpBwB,aAAuB,EACG;EAC1B,IAAIzB,QAAQ,CAACC,OAAO,CAAC,EAAE;IACrB,OAAO;MACLhD,IAAI,EAAE,YAAY;MAClBC,GAAG,EAAE+C,OAAO;MACZwB;IACF,CAAC;EACH;AACF;AAEA,SAASN,kBAAkB,CACzBD,QAAiD,EACnB;EAC9B,OAAQ,EAAE,CACPR,MAAM,CAACQ,QAAQ,CAAC,CAChBzC,MAAM,CAACC,OAAO,CAAC,CACfd,GAAG,CAA8B8D,OAAO,KAAM;IAC7CzE,IAAI,EAAE,cAAc;IACpB0E,QAAQ,EAAEC,kBAAkB,CACzBF,OAAO,CAA6BC,QAAQ,CAC9C;IACDzE,GAAG,EAAEwE;EACP,CAAC,CAAC,CAAC;AACP;AAEA,SAASE,kBAAkB,CACzBD,QAAmC,EACJ;EAC/B,IAAI3B,QAAQ,CAAC2B,QAAQ,CAAC,EAAE;IACtB,OAAOf,MAAM,CAACE,OAAO,CAACa,QAAQ,CAAC,CAAC/D,GAAG,CACjC,CAAC,CAACiE,YAAY,EAAEX,QAAQ,CAAC,MAAM;MAC7BjE,IAAI,EAAE,eAAe;MACrBuD,YAAY,EAAEmB,QAA0B;MACxClB,MAAM,EAAEoB,YAAY;MACpBX,QAAQ,EAAEC,kBAAkB,CAACD,QAAQ;IACvC,CAAC,CAAC,CACH;EACH;AACF;AAEA,SAAS5C,mBAAmB,CAC1BD,SAA0B,EACH;EACvB,IAAIX,KAAK,CAACC,OAAO,CAACU,SAAS,CAAC,EAAE;IAC5B,OAAOA,SAAS,CAACT,GAAG,CAAuB+C,QAAQ,IACjDxB,UAAU,CAAC,OAAOwB,QAAQ,KAAK,QAAQ,GAAG;MAAEzB,KAAK,EAAEyB;IAAS,CAAC,GAAGA,QAAQ,CAAC,CAC1E;EACH;AACF;;AAEA;AACA,SAASX,QAAQ,CAACM,KAAc,EAAgC;EAC9D,MAAMrD,IAAI,GAAG,OAAOqD,KAAK;EACzB,OAAOA,KAAK,IAAI,IAAI,KAAKrD,IAAI,IAAI,QAAQ,IAAIA,IAAI,IAAI,UAAU,CAAC;AAClE"}
@@ -5,14 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.traverse = traverse;
7
7
  exports.traverseStoryboard = traverseStoryboard;
8
-
9
8
  /** Traverse a storyboard AST. */
10
9
  function traverseStoryboard(ast, callback) {
11
10
  traverseNode(ast, callback, []);
12
11
  }
13
- /** Traverse any node(s) in storyboard AST. */
14
-
15
12
 
13
+ /** Traverse any node(s) in storyboard AST. */
16
14
  function traverse(nodeOrNodes, callback) {
17
15
  if (Array.isArray(nodeOrNodes)) {
18
16
  traverseNodes(nodeOrNodes, callback, []);
@@ -20,31 +18,25 @@ function traverse(nodeOrNodes, callback) {
20
18
  traverseNode(nodeOrNodes, callback, []);
21
19
  }
22
20
  }
23
-
24
21
  function traverseNodes(nodes, callback, path) {
25
22
  if (!nodes) {
26
23
  return;
27
24
  }
28
-
29
25
  for (const node of nodes) {
30
26
  traverseNode(node, callback, path);
31
27
  }
32
28
  }
33
-
34
29
  function traverseNode(node, callback, path) {
35
30
  if (!node) {
36
31
  return;
37
32
  }
38
-
39
33
  callback(node, path);
40
34
  const childPath = path.concat(node);
41
-
42
35
  switch (node.type) {
43
36
  case "Root":
44
37
  traverseNodes(node.routes, callback, childPath);
45
38
  traverseNodes(node.templates, callback, childPath);
46
39
  break;
47
-
48
40
  case "Route":
49
41
  traverseNodes(node.context, callback, childPath);
50
42
  traverseNode(node.redirect, callback, childPath);
@@ -53,12 +45,10 @@ function traverseNode(node, callback, path) {
53
45
  traverseNodes(node.defineResolves, callback, childPath);
54
46
  traverseNodes(node.children, callback, childPath);
55
47
  break;
56
-
57
48
  case "Template":
58
49
  traverseNodes(node.bricks, callback, childPath);
59
50
  traverseNodes(node.context, callback, childPath);
60
51
  break;
61
-
62
52
  case "Brick":
63
53
  traverseNode(node.if, callback, childPath);
64
54
  traverseNodes(node.events, callback, childPath);
@@ -68,53 +58,43 @@ function traverseNode(node, callback, path) {
68
58
  traverseNodes(node.context, callback, childPath);
69
59
  traverseNodes(node.children, callback, childPath);
70
60
  break;
71
-
72
61
  case "Slot":
73
62
  case "UseBrickEntry":
74
63
  case "UseBackendEntry":
75
64
  traverseNodes(node.children, callback, childPath);
76
65
  break;
77
-
78
66
  case "Context":
79
67
  traverseNode(node.resolve, callback, childPath);
80
68
  traverseNodes(node.onChange, callback, childPath);
81
69
  break;
82
-
83
70
  case "ResolvableCondition":
84
71
  case "ResolvableMenu":
85
72
  traverseNode(node.resolve, callback, childPath);
86
73
  break;
87
-
88
74
  case "ResolveLifeCycle":
89
75
  traverseNodes(node.resolves, callback, childPath);
90
76
  break;
91
-
92
77
  case "Event":
93
78
  case "EventCallback":
94
79
  case "SimpleLifeCycle":
95
80
  case "ConditionalEvent":
96
81
  traverseNodes(node.handlers, callback, childPath);
97
82
  break;
98
-
99
83
  case "EventHandler":
100
84
  traverseNodes(node.callback, callback, childPath);
101
85
  break;
102
-
103
86
  case "ConditionalLifeCycle":
104
87
  traverseNodes(node.events, callback, childPath);
105
88
  break;
106
-
107
89
  case "BrickMenu":
108
90
  traverseNode(node.brick, callback, childPath);
109
91
  break;
110
-
111
92
  case "Resolvable":
112
93
  case "FalseMenu":
113
94
  case "StaticMenu":
114
95
  case "UnknownLifeCycle":
115
96
  case "LiteralCondition":
116
97
  break;
117
-
118
98
  default:
119
99
  // istanbul ignore if
120
100
  if (process.env.NODE_ENV === "development") {
@@ -122,7 +102,6 @@ function traverseNode(node, callback, path) {
122
102
  // @ts-expect-error
123
103
  throw new Error(`Unhandled storyboard node type: ${node.type}`);
124
104
  }
125
-
126
105
  }
127
106
  }
128
107
  //# sourceMappingURL=traverseStoryboard.js.map
@@ -1 +1 @@
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":"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"}
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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":"AAAA,cAAc,cAAd;AACA,cAAc,mBAAd;AACA,cAAc,sBAAd"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./interfaces\";\nexport * from \"./parseStoryboard\";\nexport * from \"./traverseStoryboard\";\n"],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,sBAAsB"}
@@ -1,9 +1,7 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
-
3
2
  /** Parse storyboard as AST. */
4
3
  export function parseStoryboard(storyboard) {
5
4
  var _storyboard$meta;
6
-
7
5
  return {
8
6
  type: "Root",
9
7
  raw: storyboard,
@@ -11,7 +9,6 @@ export function parseStoryboard(storyboard) {
11
9
  templates: parseTemplates((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.customTemplates)
12
10
  };
13
11
  }
14
-
15
12
  /** Parse storyboard routes as AST. */
16
13
  export function parseRoutes(routes, options) {
17
14
  if (Array.isArray(routes)) {
@@ -28,20 +25,18 @@ export function parseRoutes(routes, options) {
28
25
  children: route.type === "routes" ? parseRoutes(route.routes, options) : parseBricks(route.bricks, options)
29
26
  }));
30
27
  }
31
-
32
28
  return [];
33
29
  }
34
- /** Parse storyboard templates as AST. */
35
30
 
31
+ /** Parse storyboard templates as AST. */
36
32
  export function parseTemplates(templates) {
37
33
  if (Array.isArray(templates)) {
38
34
  return templates.map(parseTemplate);
39
35
  }
40
-
41
36
  return [];
42
37
  }
43
- /** Parse a storyboard template as AST. */
44
38
 
39
+ /** Parse a storyboard template as AST. */
45
40
  export function parseTemplate(tpl) {
46
41
  return {
47
42
  type: "Template",
@@ -50,17 +45,14 @@ export function parseTemplate(tpl) {
50
45
  context: parseContext(tpl.state)
51
46
  };
52
47
  }
53
-
54
48
  function parseBricks(bricks, options) {
55
49
  if (Array.isArray(bricks)) {
56
50
  return bricks.map(brick => parseBrick(brick, options));
57
51
  }
58
-
59
52
  return [];
60
53
  }
61
- /** Parse a storyboard brick as AST. */
62
-
63
54
 
55
+ /** Parse a storyboard brick as AST. */
64
56
  export function parseBrick(brick, options) {
65
57
  return _objectSpread(_objectSpread({
66
58
  type: "Brick",
@@ -76,7 +68,6 @@ export function parseBrick(brick, options) {
76
68
  children: parseSlots(brick.slots, options)
77
69
  });
78
70
  }
79
-
80
71
  function parseCondition(condition) {
81
72
  if (isObject(condition)) {
82
73
  return {
@@ -84,16 +75,13 @@ function parseCondition(condition) {
84
75
  resolve: parseResolvable(condition)
85
76
  };
86
77
  }
87
-
88
78
  return {
89
79
  type: "LiteralCondition"
90
80
  };
91
81
  }
92
-
93
82
  function parseBrickProperties(props) {
94
83
  var useBrick = [];
95
84
  var useBackend = [];
96
-
97
85
  function walkBrickProperties(value) {
98
86
  if (Array.isArray(value)) {
99
87
  for (var item of value) {
@@ -102,7 +90,6 @@ function parseBrickProperties(props) {
102
90
  } else if (isObject(value)) {
103
91
  if (value.useBrick || value.useBackend) {
104
92
  var _value$useBackend;
105
-
106
93
  if (value.useBrick) {
107
94
  useBrick.push({
108
95
  type: "UseBrickEntry",
@@ -113,9 +100,7 @@ function parseBrickProperties(props) {
113
100
  })
114
101
  });
115
102
  }
116
-
117
103
  var provider = (_value$useBackend = value.useBackend) === null || _value$useBackend === void 0 ? void 0 : _value$useBackend.provider;
118
-
119
104
  if (typeof provider === "string") {
120
105
  useBackend.push({
121
106
  type: "UseBackendEntry",
@@ -133,19 +118,16 @@ function parseBrickProperties(props) {
133
118
  }
134
119
  }
135
120
  }
136
-
137
121
  walkBrickProperties(props);
138
122
  return {
139
123
  useBrick,
140
124
  useBackend
141
125
  };
142
126
  }
143
-
144
127
  function parseLifeCycles(lifeCycle) {
145
128
  if (isObject(lifeCycle)) {
146
129
  return Object.entries(lifeCycle).map(_ref => {
147
130
  var [name, conf] = _ref;
148
-
149
131
  switch (name) {
150
132
  case "useResolves":
151
133
  return {
@@ -154,7 +136,6 @@ function parseLifeCycles(lifeCycle) {
154
136
  rawKey: name,
155
137
  resolves: Array.isArray(conf) ? conf.map(item => parseResolvable(item, true)).filter(Boolean) : undefined
156
138
  };
157
-
158
139
  case "onPageLoad":
159
140
  case "onPageLeave":
160
141
  case "onAnchorLoad":
@@ -172,7 +153,6 @@ function parseLifeCycles(lifeCycle) {
172
153
  rawKey: name,
173
154
  handlers: parseEventHandlers(conf)
174
155
  };
175
-
176
156
  case "onMessage":
177
157
  case "onScrollIntoView":
178
158
  return {
@@ -185,7 +165,6 @@ function parseLifeCycles(lifeCycle) {
185
165
  handlers: parseEventHandlers(item.handlers)
186
166
  }))
187
167
  };
188
-
189
168
  default:
190
169
  return {
191
170
  type: "UnknownLifeCycle"
@@ -194,7 +173,6 @@ function parseLifeCycles(lifeCycle) {
194
173
  });
195
174
  }
196
175
  }
197
-
198
176
  function parseSlots(slots, options) {
199
177
  if (isObject(slots)) {
200
178
  return Object.entries(slots).map(_ref2 => {
@@ -208,10 +186,8 @@ function parseSlots(slots, options) {
208
186
  };
209
187
  });
210
188
  }
211
-
212
189
  return [];
213
190
  }
214
-
215
191
  function parseEvents(events) {
216
192
  if (isObject(events)) {
217
193
  return Object.entries(events).map(_ref3 => {
@@ -225,7 +201,6 @@ function parseEvents(events) {
225
201
  });
226
202
  }
227
203
  }
228
-
229
204
  function parseContext(contexts) {
230
205
  if (Array.isArray(contexts)) {
231
206
  return contexts.map(context => ({
@@ -236,18 +211,15 @@ function parseContext(contexts) {
236
211
  }));
237
212
  }
238
213
  }
239
-
240
214
  function parseMenu(menu) {
241
215
  if (menu === false) {
242
216
  return {
243
217
  type: "FalseMenu"
244
218
  };
245
219
  }
246
-
247
220
  if (!menu) {
248
221
  return;
249
222
  }
250
-
251
223
  switch (menu.type) {
252
224
  case "brick":
253
225
  return {
@@ -255,20 +227,17 @@ function parseMenu(menu) {
255
227
  raw: menu,
256
228
  brick: parseBrick(menu)
257
229
  };
258
-
259
230
  case "resolve":
260
231
  return {
261
232
  type: "ResolvableMenu",
262
233
  resolve: parseResolvable(menu.resolve)
263
234
  };
264
-
265
235
  default:
266
236
  return {
267
237
  type: "StaticMenu"
268
238
  };
269
239
  }
270
240
  }
271
-
272
241
  function parseResolvable(resolve, isConditional) {
273
242
  if (isObject(resolve)) {
274
243
  return {
@@ -278,7 +247,6 @@ function parseResolvable(resolve, isConditional) {
278
247
  };
279
248
  }
280
249
  }
281
-
282
250
  function parseEventHandlers(handlers) {
283
251
  return [].concat(handlers).filter(Boolean).map(handler => ({
284
252
  type: "EventHandler",
@@ -286,7 +254,6 @@ function parseEventHandlers(handlers) {
286
254
  raw: handler
287
255
  }));
288
256
  }
289
-
290
257
  function parseEventCallback(callback) {
291
258
  if (isObject(callback)) {
292
259
  return Object.entries(callback).map(_ref4 => {
@@ -300,16 +267,15 @@ function parseEventCallback(callback) {
300
267
  });
301
268
  }
302
269
  }
303
-
304
270
  function parseRouteProviders(providers) {
305
271
  if (Array.isArray(providers)) {
306
272
  return providers.map(provider => parseBrick(typeof provider === "string" ? {
307
273
  brick: provider
308
274
  } : provider));
309
275
  }
310
- } // Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744
311
-
276
+ }
312
277
 
278
+ // Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744
313
279
  function isObject(value) {
314
280
  var type = typeof value;
315
281
  return value != null && (type == "object" || type == "function");
@@ -1 +1 @@
1
- {"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(brick.slots as SlotsConf, options),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parseStoryboard.js","names":["parseStoryboard","storyboard","type","raw","routes","parseRoutes","templates","parseTemplates","meta","customTemplates","options","Array","isArray","map","route","routesOnly","context","parseContext","redirect","parseResolvable","menu","parseMenu","providers","parseRouteProviders","defineResolves","item","filter","Boolean","undefined","children","parseBricks","bricks","parseTemplate","tpl","state","brick","parseBrick","isUseBrick","if","parseCondition","events","parseEvents","lifeCycle","parseLifeCycles","parseBrickProperties","properties","parseSlots","slots","condition","isObject","resolve","props","useBrick","useBackend","walkBrickProperties","value","push","rawContainer","rawKey","concat","provider","Object","values","entries","name","conf","resolves","handlers","parseEventHandlers","slot","childrenType","eventType","contexts","onChange","isConditional","handler","callback","parseEventCallback","callbackType"],"sources":["../../src/parseStoryboard.ts"],"sourcesContent":["import type {\n BrickConf,\n BrickEventHandler,\n BrickEventHandlerCallback,\n BrickEventsMap,\n BrickLifeCycle,\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateState,\n MenuConf,\n MessageConf,\n ProviderConf,\n ResolveConf,\n RouteConf,\n RouteConfOfBricks,\n ScrollIntoViewConf,\n SlotsConf,\n Storyboard,\n UseProviderEventHandler,\n UseSingleBrickConf,\n} from \"@next-core/brick-types\";\nimport type {\n StoryboardNodeBrick,\n StoryboardNodeCondition,\n StoryboardNodeConditionalEvent,\n StoryboardNodeContext,\n StoryboardNodeEvent,\n StoryboardNodeEventCallback,\n StoryboardNodeEventHandler,\n StoryboardNodeLifeCycle,\n StoryboardNodeMenu,\n StoryboardNodeResolvable,\n StoryboardNodeRoot,\n StoryboardNodeRoute,\n StoryboardNodeSlot,\n StoryboardNodeTemplate,\n StoryboardNodeUseBackendEntry,\n StoryboardNodeUseBrickEntry,\n} from \"./interfaces\";\n\n/** Parse storyboard as AST. */\nexport function parseStoryboard(storyboard: Storyboard): StoryboardNodeRoot {\n return {\n type: \"Root\",\n raw: storyboard,\n routes: parseRoutes(storyboard.routes),\n templates: parseTemplates(storyboard.meta?.customTemplates),\n };\n}\n\nexport interface ParseOptions {\n routesOnly?: boolean;\n isUseBrick?: boolean;\n}\n\n/** Parse storyboard routes as AST. */\nexport function parseRoutes(\n routes: RouteConf[],\n options?: ParseOptions\n): StoryboardNodeRoute[] {\n if (Array.isArray(routes)) {\n return routes.map<StoryboardNodeRoute>((route) => ({\n type: \"Route\",\n raw: route,\n ...(options?.routesOnly\n ? null\n : {\n context: parseContext(route.context),\n redirect: parseResolvable(route.redirect as ResolveConf),\n menu: parseMenu(route.menu),\n providers: parseRouteProviders(route.providers),\n defineResolves: Array.isArray(route.defineResolves)\n ? route.defineResolves\n .map((item) => parseResolvable(item))\n .filter(Boolean)\n : undefined,\n }),\n children:\n route.type === \"routes\"\n ? parseRoutes(route.routes, options)\n : parseBricks((route as RouteConfOfBricks).bricks, options),\n }));\n }\n return [];\n}\n\n/** Parse storyboard templates as AST. */\nexport function parseTemplates(\n templates: (CustomTemplate | CustomTemplateConstructor)[]\n): StoryboardNodeTemplate[] {\n if (Array.isArray(templates)) {\n return templates.map<StoryboardNodeTemplate>(parseTemplate);\n }\n return [];\n}\n\n/** Parse a storyboard template as AST. */\nexport function parseTemplate(\n tpl: CustomTemplate | CustomTemplateConstructor\n): StoryboardNodeTemplate {\n return {\n type: \"Template\",\n raw: tpl,\n bricks: parseBricks(tpl.bricks),\n context: parseContext(tpl.state),\n };\n}\n\nfunction parseBricks(\n bricks: BrickConf[] | UseSingleBrickConf[],\n options?: ParseOptions\n): StoryboardNodeBrick[] {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => parseBrick(brick, options));\n }\n return [];\n}\n\n/** Parse a storyboard brick as AST. */\nexport function parseBrick(\n brick: BrickConf | UseSingleBrickConf,\n options?: ParseOptions\n): StoryboardNodeBrick {\n return {\n type: \"Brick\",\n raw: brick,\n isUseBrick: options?.isUseBrick,\n ...(options?.routesOnly\n ? null\n : {\n if: parseCondition(brick.if),\n events: parseEvents(brick.events),\n lifeCycle: parseLifeCycles(brick.lifeCycle),\n ...parseBrickProperties(brick.properties),\n context: parseContext((brick as BrickConf).context),\n }),\n children: parseSlots(brick.slots as SlotsConf, options),\n } as StoryboardNodeBrick;\n}\n\nfunction parseCondition(condition: BrickConf[\"if\"]): StoryboardNodeCondition {\n if (isObject(condition)) {\n return {\n type: \"ResolvableCondition\",\n resolve: parseResolvable(condition),\n };\n }\n return {\n type: \"LiteralCondition\",\n };\n}\n\nfunction parseBrickProperties(props: unknown): {\n useBrick?: StoryboardNodeUseBrickEntry[];\n useBackend?: StoryboardNodeUseBackendEntry[];\n} {\n const useBrick: StoryboardNodeUseBrickEntry[] = [];\n const useBackend: StoryboardNodeUseBackendEntry[] = [];\n\n function walkBrickProperties(value: unknown): void {\n if (Array.isArray(value)) {\n for (const item of value) {\n walkBrickProperties(item);\n }\n } else if (isObject(value)) {\n if (value.useBrick || value.useBackend) {\n if (value.useBrick) {\n useBrick.push({\n type: \"UseBrickEntry\",\n rawContainer: value,\n rawKey: \"useBrick\",\n children: parseBricks(\n ([] as UseSingleBrickConf[]).concat(value.useBrick),\n {\n isUseBrick: true,\n }\n ),\n });\n }\n const provider = value.useBackend?.provider;\n if (typeof provider === \"string\") {\n useBackend.push({\n type: \"UseBackendEntry\",\n rawContainer: value,\n rawKey: \"useBackend\",\n children: [parseBrick({ brick: provider })],\n });\n }\n } else {\n for (const item of Object.values(value)) {\n walkBrickProperties(item);\n }\n }\n }\n }\n\n walkBrickProperties(props);\n\n return { useBrick, useBackend };\n}\n\nfunction parseLifeCycles(lifeCycle: BrickLifeCycle): StoryboardNodeLifeCycle[] {\n if (isObject(lifeCycle)) {\n return Object.entries(lifeCycle).map<StoryboardNodeLifeCycle>(\n ([name, conf]) => {\n switch (name) {\n case \"useResolves\":\n return {\n type: \"ResolveLifeCycle\",\n rawContainer: lifeCycle,\n rawKey: name,\n resolves: Array.isArray(conf)\n ? conf\n .map((item) => parseResolvable(item, true))\n .filter(Boolean)\n : undefined,\n };\n case \"onPageLoad\":\n case \"onPageLeave\":\n case \"onAnchorLoad\":\n case \"onAnchorUnload\":\n case \"onMessageClose\":\n case \"onBeforePageLoad\":\n case \"onBeforePageLeave\":\n case \"onMount\":\n case \"onUnmount\":\n case \"onMediaChange\":\n return {\n type: \"SimpleLifeCycle\",\n name,\n rawContainer: lifeCycle,\n rawKey: name,\n handlers: parseEventHandlers(conf),\n };\n case \"onMessage\":\n case \"onScrollIntoView\":\n return {\n type: \"ConditionalLifeCycle\",\n name,\n events: ([] as (MessageConf | ScrollIntoViewConf)[])\n .concat(conf)\n .filter(Boolean)\n .map<StoryboardNodeConditionalEvent>((item) => ({\n type: \"ConditionalEvent\",\n rawContainer: item,\n rawKey: \"handlers\",\n handlers: parseEventHandlers(item.handlers),\n })),\n };\n default:\n return { type: \"UnknownLifeCycle\" };\n }\n }\n );\n }\n}\n\nfunction parseSlots(\n slots: SlotsConf,\n options?: ParseOptions\n): StoryboardNodeSlot[] {\n if (isObject(slots)) {\n return Object.entries(slots).map<StoryboardNodeSlot>(([slot, conf]) => ({\n type: \"Slot\",\n raw: conf,\n slot,\n childrenType: conf.type === \"routes\" ? \"Route\" : \"Brick\",\n children:\n conf.type === \"routes\"\n ? parseRoutes(conf.routes, options)\n : parseBricks(conf.bricks, options),\n }));\n }\n return [];\n}\n\nfunction parseEvents(events: BrickEventsMap): StoryboardNodeEvent[] {\n if (isObject(events)) {\n return Object.entries(events).map<StoryboardNodeEvent>(\n ([eventType, handlers]) => ({\n type: \"Event\",\n rawContainer: events,\n rawKey: eventType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseContext(\n contexts: (ContextConf | CustomTemplateState)[]\n): StoryboardNodeContext[] {\n if (Array.isArray(contexts)) {\n return contexts.map<StoryboardNodeContext>((context) => ({\n type: \"Context\",\n raw: context,\n resolve: parseResolvable(context.resolve),\n onChange: parseEventHandlers(context.onChange),\n }));\n }\n}\n\nfunction parseMenu(menu: MenuConf): StoryboardNodeMenu {\n if (menu === false) {\n return { type: \"FalseMenu\" };\n }\n if (!menu) {\n return;\n }\n switch (menu.type) {\n case \"brick\":\n return {\n type: \"BrickMenu\",\n raw: menu,\n brick: parseBrick(menu),\n };\n case \"resolve\":\n return {\n type: \"ResolvableMenu\",\n resolve: parseResolvable(menu.resolve),\n };\n default:\n return {\n type: \"StaticMenu\",\n };\n }\n}\n\nfunction parseResolvable(\n resolve: ResolveConf,\n isConditional?: boolean\n): StoryboardNodeResolvable {\n if (isObject(resolve)) {\n return {\n type: \"Resolvable\",\n raw: resolve,\n isConditional,\n };\n }\n}\n\nfunction parseEventHandlers(\n handlers: BrickEventHandler | BrickEventHandler[]\n): StoryboardNodeEventHandler[] {\n return ([] as BrickEventHandler[])\n .concat(handlers)\n .filter(Boolean)\n .map<StoryboardNodeEventHandler>((handler) => ({\n type: \"EventHandler\",\n callback: parseEventCallback(\n (handler as UseProviderEventHandler).callback\n ),\n raw: handler,\n }));\n}\n\nfunction parseEventCallback(\n callback: BrickEventHandlerCallback\n): StoryboardNodeEventCallback[] {\n if (isObject(callback)) {\n return Object.entries(callback).map<StoryboardNodeEventCallback>(\n ([callbackType, handlers]) => ({\n type: \"EventCallback\",\n rawContainer: callback as BrickEventsMap,\n rawKey: callbackType,\n handlers: parseEventHandlers(handlers),\n })\n );\n }\n}\n\nfunction parseRouteProviders(\n providers?: ProviderConf[]\n): StoryboardNodeBrick[] {\n if (Array.isArray(providers)) {\n return providers.map<StoryboardNodeBrick>((provider) =>\n parseBrick(typeof provider === \"string\" ? { brick: provider } : provider)\n );\n }\n}\n\n// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nfunction isObject(value: unknown): value is Record<string, any> {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n"],"mappings":";AAyCA;AACA,OAAO,SAASA,eAAe,CAACC,UAAsB,EAAsB;EAAA;EAC1E,OAAO;IACLC,IAAI,EAAE,MAAM;IACZC,GAAG,EAAEF,UAAU;IACfG,MAAM,EAAEC,WAAW,CAACJ,UAAU,CAACG,MAAM,CAAC;IACtCE,SAAS,EAAEC,cAAc,qBAACN,UAAU,CAACO,IAAI,qDAAf,iBAAiBC,eAAe;EAC5D,CAAC;AACH;AAOA;AACA,OAAO,SAASJ,WAAW,CACzBD,MAAmB,EACnBM,OAAsB,EACC;EACvB,IAAIC,KAAK,CAACC,OAAO,CAACR,MAAM,CAAC,EAAE;IACzB,OAAOA,MAAM,CAACS,GAAG,CAAuBC,KAAK;MAC3CZ,IAAI,EAAE,OAAO;MACbC,GAAG,EAAEW;IAAK,GACNJ,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,UAAU,GACnB,IAAI,GACJ;MACEC,OAAO,EAAEC,YAAY,CAACH,KAAK,CAACE,OAAO,CAAC;MACpCE,QAAQ,EAAEC,eAAe,CAACL,KAAK,CAACI,QAAQ,CAAgB;MACxDE,IAAI,EAAEC,SAAS,CAACP,KAAK,CAACM,IAAI,CAAC;MAC3BE,SAAS,EAAEC,mBAAmB,CAACT,KAAK,CAACQ,SAAS,CAAC;MAC/CE,cAAc,EAAEb,KAAK,CAACC,OAAO,CAACE,KAAK,CAACU,cAAc,CAAC,GAC/CV,KAAK,CAACU,cAAc,CACjBX,GAAG,CAAEY,IAAI,IAAKN,eAAe,CAACM,IAAI,CAAC,CAAC,CACpCC,MAAM,CAACC,OAAO,CAAC,GAClBC;IACN,CAAC;MACLC,QAAQ,EACNf,KAAK,CAACZ,IAAI,KAAK,QAAQ,GACnBG,WAAW,CAACS,KAAK,CAACV,MAAM,EAAEM,OAAO,CAAC,GAClCoB,WAAW,CAAEhB,KAAK,CAAuBiB,MAAM,EAAErB,OAAO;IAAC,EAC/D,CAAC;EACL;EACA,OAAO,EAAE;AACX;;AAEA;AACA,OAAO,SAASH,cAAc,CAC5BD,SAAyD,EAC/B;EAC1B,IAAIK,KAAK,CAACC,OAAO,CAACN,SAAS,CAAC,EAAE;IAC5B,OAAOA,SAAS,CAACO,GAAG,CAAyBmB,aAAa,CAAC;EAC7D;EACA,OAAO,EAAE;AACX;;AAEA;AACA,OAAO,SAASA,aAAa,CAC3BC,GAA+C,EACvB;EACxB,OAAO;IACL/B,IAAI,EAAE,UAAU;IAChBC,GAAG,EAAE8B,GAAG;IACRF,MAAM,EAAED,WAAW,CAACG,GAAG,CAACF,MAAM,CAAC;IAC/Bf,OAAO,EAAEC,YAAY,CAACgB,GAAG,CAACC,KAAK;EACjC,CAAC;AACH;AAEA,SAASJ,WAAW,CAClBC,MAA0C,EAC1CrB,OAAsB,EACC;EACvB,IAAIC,KAAK,CAACC,OAAO,CAACmB,MAAM,CAAC,EAAE;IACzB,OAAOA,MAAM,CAAClB,GAAG,CAAEsB,KAAK,IAAKC,UAAU,CAACD,KAAK,EAAEzB,OAAO,CAAC,CAAC;EAC1D;EACA,OAAO,EAAE;AACX;;AAEA;AACA,OAAO,SAAS0B,UAAU,CACxBD,KAAqC,EACrCzB,OAAsB,EACD;EACrB;IACER,IAAI,EAAE,OAAO;IACbC,GAAG,EAAEgC,KAAK;IACVE,UAAU,EAAE3B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B;EAAU,GAC3B3B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEK,UAAU,GACnB,IAAI;IAEFuB,EAAE,EAAEC,cAAc,CAACJ,KAAK,CAACG,EAAE,CAAC;IAC5BE,MAAM,EAAEC,WAAW,CAACN,KAAK,CAACK,MAAM,CAAC;IACjCE,SAAS,EAAEC,eAAe,CAACR,KAAK,CAACO,SAAS;EAAC,GACxCE,oBAAoB,CAACT,KAAK,CAACU,UAAU,CAAC;IACzC7B,OAAO,EAAEC,YAAY,CAAEkB,KAAK,CAAenB,OAAO;EAAC,EACpD;IACLa,QAAQ,EAAEiB,UAAU,CAACX,KAAK,CAACY,KAAK,EAAerC,OAAO;EAAC;AAE3D;AAEA,SAAS6B,cAAc,CAACS,SAA0B,EAA2B;EAC3E,IAAIC,QAAQ,CAACD,SAAS,CAAC,EAAE;IACvB,OAAO;MACL9C,IAAI,EAAE,qBAAqB;MAC3BgD,OAAO,EAAE/B,eAAe,CAAC6B,SAAS;IACpC,CAAC;EACH;EACA,OAAO;IACL9C,IAAI,EAAE;EACR,CAAC;AACH;AAEA,SAAS0C,oBAAoB,CAACO,KAAc,EAG1C;EACA,IAAMC,QAAuC,GAAG,EAAE;EAClD,IAAMC,UAA2C,GAAG,EAAE;EAEtD,SAASC,mBAAmB,CAACC,KAAc,EAAQ;IACjD,IAAI5C,KAAK,CAACC,OAAO,CAAC2C,KAAK,CAAC,EAAE;MACxB,KAAK,IAAM9B,IAAI,IAAI8B,KAAK,EAAE;QACxBD,mBAAmB,CAAC7B,IAAI,CAAC;MAC3B;IACF,CAAC,MAAM,IAAIwB,QAAQ,CAACM,KAAK,CAAC,EAAE;MAC1B,IAAIA,KAAK,CAACH,QAAQ,IAAIG,KAAK,CAACF,UAAU,EAAE;QAAA;QACtC,IAAIE,KAAK,CAACH,QAAQ,EAAE;UAClBA,QAAQ,CAACI,IAAI,CAAC;YACZtD,IAAI,EAAE,eAAe;YACrBuD,YAAY,EAAEF,KAAK;YACnBG,MAAM,EAAE,UAAU;YAClB7B,QAAQ,EAAEC,WAAW,CAClB,EAAE,CAA0B6B,MAAM,CAACJ,KAAK,CAACH,QAAQ,CAAC,EACnD;cACEf,UAAU,EAAE;YACd,CAAC;UAEL,CAAC,CAAC;QACJ;QACA,IAAMuB,QAAQ,wBAAGL,KAAK,CAACF,UAAU,sDAAhB,kBAAkBO,QAAQ;QAC3C,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;UAChCP,UAAU,CAACG,IAAI,CAAC;YACdtD,IAAI,EAAE,iBAAiB;YACvBuD,YAAY,EAAEF,KAAK;YACnBG,MAAM,EAAE,YAAY;YACpB7B,QAAQ,EAAE,CAACO,UAAU,CAAC;cAAED,KAAK,EAAEyB;YAAS,CAAC,CAAC;UAC5C,CAAC,CAAC;QACJ;MACF,CAAC,MAAM;QACL,KAAK,IAAMnC,KAAI,IAAIoC,MAAM,CAACC,MAAM,CAACP,KAAK,CAAC,EAAE;UACvCD,mBAAmB,CAAC7B,KAAI,CAAC;QAC3B;MACF;IACF;EACF;EAEA6B,mBAAmB,CAACH,KAAK,CAAC;EAE1B,OAAO;IAAEC,QAAQ;IAAEC;EAAW,CAAC;AACjC;AAEA,SAASV,eAAe,CAACD,SAAyB,EAA6B;EAC7E,IAAIO,QAAQ,CAACP,SAAS,CAAC,EAAE;IACvB,OAAOmB,MAAM,CAACE,OAAO,CAACrB,SAAS,CAAC,CAAC7B,GAAG,CAClC,QAAkB;MAAA,IAAjB,CAACmD,IAAI,EAAEC,IAAI,CAAC;MACX,QAAQD,IAAI;QACV,KAAK,aAAa;UAChB,OAAO;YACL9D,IAAI,EAAE,kBAAkB;YACxBuD,YAAY,EAAEf,SAAS;YACvBgB,MAAM,EAAEM,IAAI;YACZE,QAAQ,EAAEvD,KAAK,CAACC,OAAO,CAACqD,IAAI,CAAC,GACzBA,IAAI,CACDpD,GAAG,CAAEY,IAAI,IAAKN,eAAe,CAACM,IAAI,EAAE,IAAI,CAAC,CAAC,CAC1CC,MAAM,CAACC,OAAO,CAAC,GAClBC;UACN,CAAC;QACH,KAAK,YAAY;QACjB,KAAK,aAAa;QAClB,KAAK,cAAc;QACnB,KAAK,gBAAgB;QACrB,KAAK,gBAAgB;QACrB,KAAK,kBAAkB;QACvB,KAAK,mBAAmB;QACxB,KAAK,SAAS;QACd,KAAK,WAAW;QAChB,KAAK,eAAe;UAClB,OAAO;YACL1B,IAAI,EAAE,iBAAiB;YACvB8D,IAAI;YACJP,YAAY,EAAEf,SAAS;YACvBgB,MAAM,EAAEM,IAAI;YACZG,QAAQ,EAAEC,kBAAkB,CAACH,IAAI;UACnC,CAAC;QACH,KAAK,WAAW;QAChB,KAAK,kBAAkB;UACrB,OAAO;YACL/D,IAAI,EAAE,sBAAsB;YAC5B8D,IAAI;YACJxB,MAAM,EAAG,EAAE,CACRmB,MAAM,CAACM,IAAI,CAAC,CACZvC,MAAM,CAACC,OAAO,CAAC,CACfd,GAAG,CAAkCY,IAAI,KAAM;cAC9CvB,IAAI,EAAE,kBAAkB;cACxBuD,YAAY,EAAEhC,IAAI;cAClBiC,MAAM,EAAE,UAAU;cAClBS,QAAQ,EAAEC,kBAAkB,CAAC3C,IAAI,CAAC0C,QAAQ;YAC5C,CAAC,CAAC;UACN,CAAC;QACH;UACE,OAAO;YAAEjE,IAAI,EAAE;UAAmB,CAAC;MAAC;IAE1C,CAAC,CACF;EACH;AACF;AAEA,SAAS4C,UAAU,CACjBC,KAAgB,EAChBrC,OAAsB,EACA;EACtB,IAAIuC,QAAQ,CAACF,KAAK,CAAC,EAAE;IACnB,OAAOc,MAAM,CAACE,OAAO,CAAChB,KAAK,CAAC,CAAClC,GAAG,CAAqB;MAAA,IAAC,CAACwD,IAAI,EAAEJ,IAAI,CAAC;MAAA,OAAM;QACtE/D,IAAI,EAAE,MAAM;QACZC,GAAG,EAAE8D,IAAI;QACTI,IAAI;QACJC,YAAY,EAAEL,IAAI,CAAC/D,IAAI,KAAK,QAAQ,GAAG,OAAO,GAAG,OAAO;QACxD2B,QAAQ,EACNoC,IAAI,CAAC/D,IAAI,KAAK,QAAQ,GAClBG,WAAW,CAAC4D,IAAI,CAAC7D,MAAM,EAAEM,OAAO,CAAC,GACjCoB,WAAW,CAACmC,IAAI,CAAClC,MAAM,EAAErB,OAAO;MACxC,CAAC;IAAA,CAAC,CAAC;EACL;EACA,OAAO,EAAE;AACX;AAEA,SAAS+B,WAAW,CAACD,MAAsB,EAAyB;EAClE,IAAIS,QAAQ,CAACT,MAAM,CAAC,EAAE;IACpB,OAAOqB,MAAM,CAACE,OAAO,CAACvB,MAAM,CAAC,CAAC3B,GAAG,CAC/B;MAAA,IAAC,CAAC0D,SAAS,EAAEJ,QAAQ,CAAC;MAAA,OAAM;QAC1BjE,IAAI,EAAE,OAAO;QACbuD,YAAY,EAAEjB,MAAM;QACpBkB,MAAM,EAAEa,SAAS;QACjBJ,QAAQ,EAAEC,kBAAkB,CAACD,QAAQ;MACvC,CAAC;IAAA,CAAC,CACH;EACH;AACF;AAEA,SAASlD,YAAY,CACnBuD,QAA+C,EACtB;EACzB,IAAI7D,KAAK,CAACC,OAAO,CAAC4D,QAAQ,CAAC,EAAE;IAC3B,OAAOA,QAAQ,CAAC3D,GAAG,CAAyBG,OAAO,KAAM;MACvDd,IAAI,EAAE,SAAS;MACfC,GAAG,EAAEa,OAAO;MACZkC,OAAO,EAAE/B,eAAe,CAACH,OAAO,CAACkC,OAAO,CAAC;MACzCuB,QAAQ,EAAEL,kBAAkB,CAACpD,OAAO,CAACyD,QAAQ;IAC/C,CAAC,CAAC,CAAC;EACL;AACF;AAEA,SAASpD,SAAS,CAACD,IAAc,EAAsB;EACrD,IAAIA,IAAI,KAAK,KAAK,EAAE;IAClB,OAAO;MAAElB,IAAI,EAAE;IAAY,CAAC;EAC9B;EACA,IAAI,CAACkB,IAAI,EAAE;IACT;EACF;EACA,QAAQA,IAAI,CAAClB,IAAI;IACf,KAAK,OAAO;MACV,OAAO;QACLA,IAAI,EAAE,WAAW;QACjBC,GAAG,EAAEiB,IAAI;QACTe,KAAK,EAAEC,UAAU,CAAChB,IAAI;MACxB,CAAC;IACH,KAAK,SAAS;MACZ,OAAO;QACLlB,IAAI,EAAE,gBAAgB;QACtBgD,OAAO,EAAE/B,eAAe,CAACC,IAAI,CAAC8B,OAAO;MACvC,CAAC;IACH;MACE,OAAO;QACLhD,IAAI,EAAE;MACR,CAAC;EAAC;AAER;AAEA,SAASiB,eAAe,CACtB+B,OAAoB,EACpBwB,aAAuB,EACG;EAC1B,IAAIzB,QAAQ,CAACC,OAAO,CAAC,EAAE;IACrB,OAAO;MACLhD,IAAI,EAAE,YAAY;MAClBC,GAAG,EAAE+C,OAAO;MACZwB;IACF,CAAC;EACH;AACF;AAEA,SAASN,kBAAkB,CACzBD,QAAiD,EACnB;EAC9B,OAAQ,EAAE,CACPR,MAAM,CAACQ,QAAQ,CAAC,CAChBzC,MAAM,CAACC,OAAO,CAAC,CACfd,GAAG,CAA8B8D,OAAO,KAAM;IAC7CzE,IAAI,EAAE,cAAc;IACpB0E,QAAQ,EAAEC,kBAAkB,CACzBF,OAAO,CAA6BC,QAAQ,CAC9C;IACDzE,GAAG,EAAEwE;EACP,CAAC,CAAC,CAAC;AACP;AAEA,SAASE,kBAAkB,CACzBD,QAAmC,EACJ;EAC/B,IAAI3B,QAAQ,CAAC2B,QAAQ,CAAC,EAAE;IACtB,OAAOf,MAAM,CAACE,OAAO,CAACa,QAAQ,CAAC,CAAC/D,GAAG,CACjC;MAAA,IAAC,CAACiE,YAAY,EAAEX,QAAQ,CAAC;MAAA,OAAM;QAC7BjE,IAAI,EAAE,eAAe;QACrBuD,YAAY,EAAEmB,QAA0B;QACxClB,MAAM,EAAEoB,YAAY;QACpBX,QAAQ,EAAEC,kBAAkB,CAACD,QAAQ;MACvC,CAAC;IAAA,CAAC,CACH;EACH;AACF;AAEA,SAAS5C,mBAAmB,CAC1BD,SAA0B,EACH;EACvB,IAAIX,KAAK,CAACC,OAAO,CAACU,SAAS,CAAC,EAAE;IAC5B,OAAOA,SAAS,CAACT,GAAG,CAAuB+C,QAAQ,IACjDxB,UAAU,CAAC,OAAOwB,QAAQ,KAAK,QAAQ,GAAG;MAAEzB,KAAK,EAAEyB;IAAS,CAAC,GAAGA,QAAQ,CAAC,CAC1E;EACH;AACF;;AAEA;AACA,SAASX,QAAQ,CAACM,KAAc,EAAgC;EAC9D,IAAMrD,IAAI,GAAG,OAAOqD,KAAK;EACzB,OAAOA,KAAK,IAAI,IAAI,KAAKrD,IAAI,IAAI,QAAQ,IAAIA,IAAI,IAAI,UAAU,CAAC;AAClE"}
@@ -2,8 +2,8 @@
2
2
  export function traverseStoryboard(ast, callback) {
3
3
  traverseNode(ast, callback, []);
4
4
  }
5
- /** Traverse any node(s) in storyboard AST. */
6
5
 
6
+ /** Traverse any node(s) in storyboard AST. */
7
7
  export function traverse(nodeOrNodes, callback) {
8
8
  if (Array.isArray(nodeOrNodes)) {
9
9
  traverseNodes(nodeOrNodes, callback, []);
@@ -11,31 +11,25 @@ export function traverse(nodeOrNodes, callback) {
11
11
  traverseNode(nodeOrNodes, callback, []);
12
12
  }
13
13
  }
14
-
15
14
  function traverseNodes(nodes, callback, path) {
16
15
  if (!nodes) {
17
16
  return;
18
17
  }
19
-
20
18
  for (var _node of nodes) {
21
19
  traverseNode(_node, callback, path);
22
20
  }
23
21
  }
24
-
25
22
  function traverseNode(node, callback, path) {
26
23
  if (!node) {
27
24
  return;
28
25
  }
29
-
30
26
  callback(node, path);
31
27
  var childPath = path.concat(node);
32
-
33
28
  switch (node.type) {
34
29
  case "Root":
35
30
  traverseNodes(node.routes, callback, childPath);
36
31
  traverseNodes(node.templates, callback, childPath);
37
32
  break;
38
-
39
33
  case "Route":
40
34
  traverseNodes(node.context, callback, childPath);
41
35
  traverseNode(node.redirect, callback, childPath);
@@ -44,12 +38,10 @@ function traverseNode(node, callback, path) {
44
38
  traverseNodes(node.defineResolves, callback, childPath);
45
39
  traverseNodes(node.children, callback, childPath);
46
40
  break;
47
-
48
41
  case "Template":
49
42
  traverseNodes(node.bricks, callback, childPath);
50
43
  traverseNodes(node.context, callback, childPath);
51
44
  break;
52
-
53
45
  case "Brick":
54
46
  traverseNode(node.if, callback, childPath);
55
47
  traverseNodes(node.events, callback, childPath);
@@ -59,53 +51,43 @@ function traverseNode(node, callback, path) {
59
51
  traverseNodes(node.context, callback, childPath);
60
52
  traverseNodes(node.children, callback, childPath);
61
53
  break;
62
-
63
54
  case "Slot":
64
55
  case "UseBrickEntry":
65
56
  case "UseBackendEntry":
66
57
  traverseNodes(node.children, callback, childPath);
67
58
  break;
68
-
69
59
  case "Context":
70
60
  traverseNode(node.resolve, callback, childPath);
71
61
  traverseNodes(node.onChange, callback, childPath);
72
62
  break;
73
-
74
63
  case "ResolvableCondition":
75
64
  case "ResolvableMenu":
76
65
  traverseNode(node.resolve, callback, childPath);
77
66
  break;
78
-
79
67
  case "ResolveLifeCycle":
80
68
  traverseNodes(node.resolves, callback, childPath);
81
69
  break;
82
-
83
70
  case "Event":
84
71
  case "EventCallback":
85
72
  case "SimpleLifeCycle":
86
73
  case "ConditionalEvent":
87
74
  traverseNodes(node.handlers, callback, childPath);
88
75
  break;
89
-
90
76
  case "EventHandler":
91
77
  traverseNodes(node.callback, callback, childPath);
92
78
  break;
93
-
94
79
  case "ConditionalLifeCycle":
95
80
  traverseNodes(node.events, callback, childPath);
96
81
  break;
97
-
98
82
  case "BrickMenu":
99
83
  traverseNode(node.brick, callback, childPath);
100
84
  break;
101
-
102
85
  case "Resolvable":
103
86
  case "FalseMenu":
104
87
  case "StaticMenu":
105
88
  case "UnknownLifeCycle":
106
89
  case "LiteralCondition":
107
90
  break;
108
-
109
91
  default:
110
92
  // istanbul ignore if
111
93
  if (process.env.NODE_ENV === "development") {
@@ -113,7 +95,6 @@ function traverseNode(node, callback, path) {
113
95
  // @ts-expect-error
114
96
  throw new Error("Unhandled storyboard node type: ".concat(node.type));
115
97
  }
116
-
117
98
  }
118
99
  }
119
100
  //# sourceMappingURL=traverseStoryboard.js.map
@@ -1 +1 @@
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":"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"}
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/storyboard",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
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.82.0"
32
+ "@next-core/brick-types": "^2.82.2"
33
33
  },
34
34
  "devDependencies": {
35
- "@next-core/build-next-libs": "^0.2.15"
35
+ "@next-core/build-next-libs": "^0.2.16"
36
36
  },
37
- "gitHead": "569c22743a56ab382a45477c4a787da887a3a4f3"
37
+ "gitHead": "3c193d1472c22eb39b5435ba3ff246f3650760ec"
38
38
  }