@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 +0 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parseStoryboard.js +5 -40
- package/dist/cjs/parseStoryboard.js.map +1 -1
- package/dist/cjs/traverseStoryboard.js +1 -22
- package/dist/cjs/traverseStoryboard.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parseStoryboard.js +5 -39
- package/dist/esm/parseStoryboard.js.map +1 -1
- package/dist/esm/traverseStoryboard.js +1 -20
- package/dist/esm/traverseStoryboard.js.map +1 -1
- package/package.json +4 -4
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;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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":"
|
|
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
|
-
}
|
|
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":"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"}
|
|
@@ -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":"
|
|
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/dist/esm/index.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
}
|
|
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":"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"}
|
|
@@ -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":"AAOA;AACA,OAAO,SAASA,
|
|
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.
|
|
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.
|
|
32
|
+
"@next-core/brick-types": "^2.82.2"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@next-core/build-next-libs": "^0.2.
|
|
35
|
+
"@next-core/build-next-libs": "^0.2.16"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "3c193d1472c22eb39b5435ba3ff246f3650760ec"
|
|
38
38
|
}
|