@platformos/platformos-graph 0.0.6 → 0.0.8
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/CHANGELOG.md +18 -0
- package/dist/getWebComponentMap.js +1 -1
- package/dist/getWebComponentMap.js.map +1 -1
- package/dist/graph/augment.js +0 -3
- package/dist/graph/augment.js.map +1 -1
- package/dist/graph/build.d.ts +2 -2
- package/dist/graph/build.js +11 -8
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/module.d.ts +6 -9
- package/dist/graph/module.js +53 -117
- package/dist/graph/module.js.map +1 -1
- package/dist/graph/serialize.d.ts +2 -2
- package/dist/graph/serialize.js +2 -2
- package/dist/graph/serialize.js.map +1 -1
- package/dist/graph/test-helpers.d.ts +0 -13
- package/dist/graph/test-helpers.js +0 -10
- package/dist/graph/test-helpers.js.map +1 -1
- package/dist/graph/traverse.d.ts +3 -3
- package/dist/graph/traverse.js +19 -349
- package/dist/graph/traverse.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/toSourceCode.d.ts +1 -4
- package/dist/toSourceCode.js +8 -52
- package/dist/toSourceCode.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +21 -78
- package/dist/types.js.map +1 -1
- package/dist/utils/index.d.ts +0 -3
- package/dist/utils/index.js +0 -18
- package/dist/utils/index.js.map +1 -1
- package/fixtures/skeleton/{layout/theme.liquid → app/views/layouts/application.liquid} +3 -4
- package/fixtures/skeleton/app/views/pages/index.liquid +5 -0
- package/fixtures/skeleton/app/views/partials/header.liquid +3 -0
- package/package.json +7 -7
- package/src/getWebComponentMap.ts +1 -1
- package/src/graph/augment.ts +1 -13
- package/src/graph/build.spec.ts +31 -171
- package/src/graph/build.ts +18 -14
- package/src/graph/module.ts +59 -135
- package/src/graph/serialize.spec.ts +22 -29
- package/src/graph/serialize.ts +2 -2
- package/src/graph/test-helpers.ts +1 -18
- package/src/graph/traverse.ts +28 -501
- package/src/index.ts +3 -3
- package/src/toSourceCode.ts +14 -55
- package/src/types.ts +23 -100
- package/src/utils/index.ts +0 -24
- package/fixtures/skeleton/blocks/_private.liquid +0 -1
- package/fixtures/skeleton/blocks/_static.liquid +0 -10
- package/fixtures/skeleton/blocks/group.liquid +0 -27
- package/fixtures/skeleton/blocks/render-static.liquid +0 -22
- package/fixtures/skeleton/blocks/text.liquid +0 -14
- package/fixtures/skeleton/jsconfig.json +0 -9
- package/fixtures/skeleton/sections/custom-section.liquid +0 -6
- package/fixtures/skeleton/sections/header-group.json +0 -36
- package/fixtures/skeleton/sections/header.liquid +0 -1
- package/fixtures/skeleton/templates/index.json +0 -20
package/dist/graph/traverse.js
CHANGED
|
@@ -6,14 +6,14 @@ const liquid_html_parser_1 = require("@platformos/liquid-html-parser");
|
|
|
6
6
|
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
7
7
|
const utils_1 = require("../utils");
|
|
8
8
|
const module_1 = require("./module");
|
|
9
|
-
async function traverseModule(module,
|
|
9
|
+
async function traverseModule(module, appGraph, deps) {
|
|
10
10
|
// If the module is already traversed, skip it
|
|
11
|
-
if (
|
|
11
|
+
if (appGraph.modules[module.uri]) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
// Signal to all users that the file is being traversed
|
|
15
15
|
// This will prevent multiple traversals of the same file
|
|
16
|
-
|
|
16
|
+
appGraph.modules[module.uri] = module;
|
|
17
17
|
// Check if the module exists on disk
|
|
18
18
|
module.exists = await (0, utils_1.exists)(deps.fs, module.uri);
|
|
19
19
|
// If the module doesn't exist, we can't traverse it
|
|
@@ -22,25 +22,17 @@ async function traverseModule(module, themeGraph, deps) {
|
|
|
22
22
|
}
|
|
23
23
|
switch (module.type) {
|
|
24
24
|
case "Liquid" /* ModuleType.Liquid */: {
|
|
25
|
-
return traverseLiquidModule(module,
|
|
25
|
+
return traverseLiquidModule(module, appGraph, deps);
|
|
26
26
|
}
|
|
27
|
-
case "
|
|
28
|
-
return
|
|
29
|
-
}
|
|
30
|
-
case "JavaScript" /* ModuleType.JavaScript */: {
|
|
31
|
-
return; // TODO graph import/exports ?
|
|
32
|
-
}
|
|
33
|
-
case "CSS" /* ModuleType.Css */:
|
|
34
|
-
case "SVG" /* ModuleType.Svg */:
|
|
35
|
-
case "Image" /* ModuleType.Image */: {
|
|
36
|
-
return; // Nothing to do??
|
|
27
|
+
case "Asset" /* ModuleType.Asset */: {
|
|
28
|
+
return; // Nothing to traverse in assets
|
|
37
29
|
}
|
|
38
30
|
default: {
|
|
39
31
|
return (0, utils_1.assertNever)(module);
|
|
40
32
|
}
|
|
41
33
|
}
|
|
42
34
|
}
|
|
43
|
-
async function traverseLiquidModule(module,
|
|
35
|
+
async function traverseLiquidModule(module, appGraph, deps) {
|
|
44
36
|
const sourceCode = await deps.getSourceCode(module.uri);
|
|
45
37
|
if (sourceCode.ast instanceof Error)
|
|
46
38
|
return; // can't visit what you can't parse
|
|
@@ -58,32 +50,15 @@ async function traverseLiquidModule(module, themeGraph, deps) {
|
|
|
58
50
|
if (parentNode.filters[0] !== node)
|
|
59
51
|
return;
|
|
60
52
|
const asset = parentNode.expression.value;
|
|
61
|
-
const
|
|
62
|
-
if (!
|
|
53
|
+
const assetModule = (0, module_1.getAssetModule)(appGraph, asset);
|
|
54
|
+
if (!assetModule)
|
|
63
55
|
return;
|
|
64
56
|
return {
|
|
65
|
-
target:
|
|
57
|
+
target: assetModule,
|
|
66
58
|
sourceRange: [parentNode.position.start, parentNode.position.end],
|
|
67
59
|
};
|
|
68
60
|
}
|
|
69
61
|
},
|
|
70
|
-
// {% content_for 'block', type: 'staticBlockName', id: 'id' %}
|
|
71
|
-
ContentForMarkup: async (node, ancestors) => {
|
|
72
|
-
const parentNode = ancestors.at(-1);
|
|
73
|
-
if (node.contentForType.value !== 'block')
|
|
74
|
-
return;
|
|
75
|
-
const blockTypeArg = node.args.find((arg) => arg.name === 'type');
|
|
76
|
-
if (!blockTypeArg)
|
|
77
|
-
return;
|
|
78
|
-
const blockTypeValue = blockTypeArg.value;
|
|
79
|
-
if (blockTypeValue.type !== liquid_html_parser_1.NodeTypes.String)
|
|
80
|
-
return;
|
|
81
|
-
const blockType = blockTypeValue.value;
|
|
82
|
-
return {
|
|
83
|
-
target: (0, module_1.getThemeBlockModule)(themeGraph, blockType),
|
|
84
|
-
sourceRange: [parentNode.position.start, node.position.end],
|
|
85
|
-
};
|
|
86
|
-
},
|
|
87
62
|
// <custom-element></custom-element>
|
|
88
63
|
HtmlElement: async (node) => {
|
|
89
64
|
if (node.name.length !== 1)
|
|
@@ -98,11 +73,11 @@ async function traverseLiquidModule(module, themeGraph, deps) {
|
|
|
98
73
|
if (!result)
|
|
99
74
|
return;
|
|
100
75
|
const { assetName, range } = result;
|
|
101
|
-
const
|
|
102
|
-
if (!
|
|
76
|
+
const assetModule = (0, module_1.getAssetModule)(appGraph, assetName);
|
|
77
|
+
if (!assetModule)
|
|
103
78
|
return;
|
|
104
79
|
return {
|
|
105
|
-
target:
|
|
80
|
+
target: assetModule,
|
|
106
81
|
sourceRange: [node.blockStartPosition.start, nodeNameNode.position.end],
|
|
107
82
|
targetRange: range,
|
|
108
83
|
};
|
|
@@ -113,35 +88,11 @@ async function traverseLiquidModule(module, themeGraph, deps) {
|
|
|
113
88
|
const tag = ancestors.at(-1);
|
|
114
89
|
if (!(0, utils_1.isString)(snippet) && snippet.type === liquid_html_parser_1.NodeTypes.String) {
|
|
115
90
|
return {
|
|
116
|
-
target: (0, module_1.getPartialModule)(
|
|
91
|
+
target: (0, module_1.getPartialModule)(appGraph, snippet.value),
|
|
117
92
|
sourceRange: [tag.position.start, tag.position.end],
|
|
118
93
|
};
|
|
119
94
|
}
|
|
120
95
|
},
|
|
121
|
-
LiquidTag: async (node) => {
|
|
122
|
-
switch (node.name) {
|
|
123
|
-
// {% sections 'section-group' %}
|
|
124
|
-
case liquid_html_parser_1.NamedTags.sections: {
|
|
125
|
-
if (!(0, utils_1.isString)(node.markup)) {
|
|
126
|
-
const sectionGroupType = node.markup.value;
|
|
127
|
-
return {
|
|
128
|
-
target: (0, module_1.getSectionGroupModule)(themeGraph, sectionGroupType),
|
|
129
|
-
sourceRange: [node.position.start, node.position.end],
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
// {% section 'section' %}
|
|
134
|
-
case liquid_html_parser_1.NamedTags.section: {
|
|
135
|
-
if (!(0, utils_1.isString)(node.markup)) {
|
|
136
|
-
const sectionType = node.markup.value;
|
|
137
|
-
return {
|
|
138
|
-
target: (0, module_1.getSectionModule)(themeGraph, sectionType),
|
|
139
|
-
sourceRange: [node.position.start, node.position.end],
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
96
|
};
|
|
146
97
|
const references = await (0, platformos_check_common_1.visit)(sourceCode.ast, visitor);
|
|
147
98
|
for (const reference of references) {
|
|
@@ -150,293 +101,12 @@ async function traverseLiquidModule(module, themeGraph, deps) {
|
|
|
150
101
|
targetRange: reference.targetRange,
|
|
151
102
|
});
|
|
152
103
|
}
|
|
153
|
-
const modules =
|
|
154
|
-
const promises = modules.map((mod) => traverseModule(mod,
|
|
155
|
-
// Look at schema references if any
|
|
156
|
-
if (module.kind === "section" /* LiquidModuleKind.Section */) {
|
|
157
|
-
const sectionName = platformos_check_common_1.path.basename(module.uri, '.liquid');
|
|
158
|
-
const sectionSchema = await deps.getSectionSchema(sectionName);
|
|
159
|
-
promises.push(traverseLiquidSchema(sectionSchema, module, themeGraph, deps));
|
|
160
|
-
}
|
|
161
|
-
else if (module.kind === "block" /* LiquidModuleKind.Block */) {
|
|
162
|
-
const blockName = platformos_check_common_1.path.basename(module.uri, '.liquid');
|
|
163
|
-
const blockSchema = await deps.getBlockSchema(blockName);
|
|
164
|
-
promises.push(traverseLiquidSchema(blockSchema, module, themeGraph, deps));
|
|
165
|
-
}
|
|
166
|
-
return Promise.all(promises);
|
|
167
|
-
}
|
|
168
|
-
async function traverseLiquidSchema(schema, module, themeGraph, deps) {
|
|
169
|
-
if (!schema)
|
|
170
|
-
return;
|
|
171
|
-
const isSection = module.kind === "section" /* LiquidModuleKind.Section */;
|
|
172
|
-
const hasLocalBlocks = isSection && (await (0, utils_1.acceptsLocalBlocks)(platformos_check_common_1.path.basename(module.uri, '.liquid'), deps));
|
|
173
|
-
if (hasLocalBlocks)
|
|
174
|
-
return;
|
|
175
|
-
const { ast, validSchema } = schema;
|
|
176
|
-
if (validSchema instanceof Error || ast instanceof Error)
|
|
177
|
-
return;
|
|
178
|
-
const promises = [];
|
|
179
|
-
// Traverse the blocks
|
|
180
|
-
if (validSchema.blocks) {
|
|
181
|
-
promises.push(traverseSchemaBlocks(schema, module, ast, validSchema.blocks, themeGraph, deps));
|
|
182
|
-
}
|
|
183
|
-
// Traverse the presets
|
|
184
|
-
if (validSchema.presets) {
|
|
185
|
-
promises.push(traverseSchemaPresets(schema, module, ast, validSchema.presets, themeGraph, deps));
|
|
186
|
-
}
|
|
187
|
-
// Traverse section.default if it exists
|
|
188
|
-
if ('default' in validSchema && validSchema.default) {
|
|
189
|
-
promises.push(traverseSchemaDefault(schema, module, ast, validSchema.default, themeGraph, deps));
|
|
190
|
-
}
|
|
191
|
-
return Promise.all(promises);
|
|
192
|
-
}
|
|
193
|
-
async function traverseSchemaBlocks(schema, module, ast, blocks, themeGraph, deps) {
|
|
194
|
-
const promises = [];
|
|
195
|
-
for (const [i, blockDef] of Object.entries(blocks)) {
|
|
196
|
-
const nodePath = ['blocks', i];
|
|
197
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, nodePath);
|
|
198
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
199
|
-
if (!typeProperty)
|
|
200
|
-
continue;
|
|
201
|
-
const sourceRange = [
|
|
202
|
-
schema.offset + typeProperty.loc.start.offset,
|
|
203
|
-
schema.offset + typeProperty.loc.end.offset,
|
|
204
|
-
];
|
|
205
|
-
// blocks: [{ "type": "@theme" }, { "type": "custom-block" }]
|
|
206
|
-
switch (blockDef.type) {
|
|
207
|
-
case '@theme': {
|
|
208
|
-
const publicBlocks = await deps
|
|
209
|
-
.getThemeBlockNames()
|
|
210
|
-
.then((blocks) => blocks.filter((name) => !name.startsWith('_')));
|
|
211
|
-
for (const publicBlock of publicBlocks) {
|
|
212
|
-
const blockModule = (0, module_1.getThemeBlockModule)(themeGraph, platformos_check_common_1.path.basename(publicBlock, '.liquid'));
|
|
213
|
-
bind(module, blockModule, { sourceRange, type: 'indirect' });
|
|
214
|
-
promises.push(traverseModule(blockModule, themeGraph, deps));
|
|
215
|
-
}
|
|
216
|
-
break;
|
|
217
|
-
}
|
|
218
|
-
case '@app': {
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
default: {
|
|
222
|
-
const blockModule = (0, module_1.getThemeBlockModule)(themeGraph, blockDef.type);
|
|
223
|
-
bind(module, blockModule, { sourceRange });
|
|
224
|
-
promises.push(traverseModule(blockModule, themeGraph, deps));
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return Promise.all(promises);
|
|
229
|
-
}
|
|
230
|
-
async function traverseSchemaPresets(schema, module, ast, presets, themeGraph, deps) {
|
|
231
|
-
const promises = [];
|
|
232
|
-
for (const [i, preset] of presets.entries()) {
|
|
233
|
-
if (!('blocks' in preset))
|
|
234
|
-
continue;
|
|
235
|
-
// Iterate over array entries or object entries depending on how the blocks are defined
|
|
236
|
-
const iterator = Array.isArray(preset.blocks)
|
|
237
|
-
? preset.blocks.entries()
|
|
238
|
-
: Object.entries(preset.blocks);
|
|
239
|
-
for (const [keyOrIndex, block] of iterator) {
|
|
240
|
-
const nodePath = ['presets', i, 'blocks', keyOrIndex];
|
|
241
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, nodePath);
|
|
242
|
-
const blockModule = (0, module_1.getThemeBlockModule)(themeGraph, block.type);
|
|
243
|
-
if (!blockModule)
|
|
244
|
-
continue;
|
|
245
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
246
|
-
if (!typeProperty)
|
|
247
|
-
continue;
|
|
248
|
-
const sourceRange = [
|
|
249
|
-
schema.offset + typeProperty.loc.start.offset,
|
|
250
|
-
schema.offset + typeProperty.loc.end.offset,
|
|
251
|
-
];
|
|
252
|
-
bind(module, blockModule, { sourceRange, type: 'preset' });
|
|
253
|
-
promises.push(traverseModule(blockModule, themeGraph, deps));
|
|
254
|
-
if (block.blocks) {
|
|
255
|
-
promises.push(traverseSchemaPresetBlock(schema, module, ast, block.blocks, nodePath, themeGraph, deps));
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
return Promise.all(promises);
|
|
260
|
-
}
|
|
261
|
-
async function traverseSchemaPresetBlock(schema, module, ast, blocks, parentPath, themeGraph, deps) {
|
|
262
|
-
const promises = [];
|
|
263
|
-
// Iterate over array entries or object entries depending on how the blocks are defined
|
|
264
|
-
const iterator = Array.isArray(blocks) ? blocks.entries() : Object.entries(blocks);
|
|
265
|
-
for (const [keyOrIndex, block] of iterator) {
|
|
266
|
-
const nodePath = [...parentPath, 'blocks', keyOrIndex];
|
|
267
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, nodePath);
|
|
268
|
-
const blockModule = (0, module_1.getThemeBlockModule)(themeGraph, block.type);
|
|
269
|
-
if (!blockModule)
|
|
270
|
-
continue;
|
|
271
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
272
|
-
if (!typeProperty)
|
|
273
|
-
continue;
|
|
274
|
-
const sourceRange = [
|
|
275
|
-
schema.offset + typeProperty.loc.start.offset,
|
|
276
|
-
schema.offset + typeProperty.loc.end.offset,
|
|
277
|
-
];
|
|
278
|
-
bind(module, blockModule, { sourceRange, type: 'preset' });
|
|
279
|
-
promises.push(traverseModule(blockModule, themeGraph, deps));
|
|
280
|
-
if (block.blocks) {
|
|
281
|
-
promises.push(traverseSchemaPresetBlock(schema, module, ast, block.blocks, nodePath, themeGraph, deps));
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return Promise.all(promises);
|
|
285
|
-
}
|
|
286
|
-
async function traverseSchemaDefault(schema, module, ast, preset, themeGraph, deps) {
|
|
287
|
-
const promises = [];
|
|
288
|
-
if (!('blocks' in preset))
|
|
289
|
-
return;
|
|
290
|
-
// Iterate over array entries or object entries depending on how the blocks are defined
|
|
291
|
-
const iterator = Array.isArray(preset.blocks)
|
|
292
|
-
? preset.blocks.entries()
|
|
293
|
-
: Object.entries(preset.blocks);
|
|
294
|
-
for (const [keyOrIndex, block] of iterator) {
|
|
295
|
-
const nodePath = ['default', 'blocks', keyOrIndex];
|
|
296
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, nodePath);
|
|
297
|
-
const blockModule = (0, module_1.getThemeBlockModule)(themeGraph, block.type);
|
|
298
|
-
if (!blockModule)
|
|
299
|
-
continue;
|
|
300
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
301
|
-
if (!typeProperty)
|
|
302
|
-
continue;
|
|
303
|
-
const sourceRange = [
|
|
304
|
-
schema.offset + typeProperty.loc.start.offset,
|
|
305
|
-
schema.offset + typeProperty.loc.end.offset,
|
|
306
|
-
];
|
|
307
|
-
bind(module, blockModule, { sourceRange, type: 'preset' });
|
|
308
|
-
promises.push(traverseModule(blockModule, themeGraph, deps));
|
|
309
|
-
}
|
|
104
|
+
const modules = unique(references.map((ref) => ref.target));
|
|
105
|
+
const promises = modules.map((mod) => traverseModule(mod, appGraph, deps));
|
|
310
106
|
return Promise.all(promises);
|
|
311
107
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
if (sourceCode.type !== platformos_check_common_1.SourceCodeType.JSON)
|
|
315
|
-
throw (0, utils_1.unexpected)();
|
|
316
|
-
const ast = sourceCode.ast;
|
|
317
|
-
if (ast instanceof Error)
|
|
318
|
-
return; // can't visit what you can't parse
|
|
319
|
-
switch (module.kind) {
|
|
320
|
-
case "template" /* JsonModuleKind.Template */: {
|
|
321
|
-
// Should only happen once per template
|
|
322
|
-
const template = (0, platformos_check_common_1.parseJSON)(sourceCode.source);
|
|
323
|
-
const promises = [];
|
|
324
|
-
for (const [key, section] of Object.entries(template.sections)) {
|
|
325
|
-
const sectionType = section.type;
|
|
326
|
-
const path = ['sections', key];
|
|
327
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, path);
|
|
328
|
-
const sectionModule = (0, module_1.getSectionModule)(themeGraph, sectionType);
|
|
329
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
330
|
-
const start = typeProperty.loc.start.offset;
|
|
331
|
-
const end = typeProperty.loc.end.offset;
|
|
332
|
-
const sourceRange = [start, end];
|
|
333
|
-
// Link the template to the section
|
|
334
|
-
bind(module, sectionModule, { sourceRange });
|
|
335
|
-
promises.push(
|
|
336
|
-
// Traverse the section themeselves
|
|
337
|
-
traverseModule(sectionModule, themeGraph, deps),
|
|
338
|
-
// Link the blocks used in the section to the template
|
|
339
|
-
traverseSectionReferences(module, ast, path, section, themeGraph, deps));
|
|
340
|
-
}
|
|
341
|
-
// Link the template to the layout
|
|
342
|
-
const layout = template.layout;
|
|
343
|
-
const layoutModule = (0, module_1.getLayoutModule)(themeGraph, template.layout);
|
|
344
|
-
if (layoutModule) {
|
|
345
|
-
let sourceRange = undefined;
|
|
346
|
-
let indirect = true;
|
|
347
|
-
if (layout !== false && layout !== undefined) {
|
|
348
|
-
const layoutPath = ['layout'];
|
|
349
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, layoutPath);
|
|
350
|
-
sourceRange = [node.loc.start.offset, node.loc.end.offset];
|
|
351
|
-
indirect = false; // this is a direct reference to the layout
|
|
352
|
-
}
|
|
353
|
-
bind(module, layoutModule, { sourceRange, type: 'indirect' });
|
|
354
|
-
promises.push(traverseModule(layoutModule, themeGraph, deps));
|
|
355
|
-
}
|
|
356
|
-
return Promise.all(promises);
|
|
357
|
-
}
|
|
358
|
-
case "section-group" /* JsonModuleKind.SectionGroup */: {
|
|
359
|
-
const sectionGroup = (0, platformos_check_common_1.parseJSON)(sourceCode.source);
|
|
360
|
-
const promises = [];
|
|
361
|
-
for (const [key, section] of Object.entries(sectionGroup.sections)) {
|
|
362
|
-
const sectionType = section.type;
|
|
363
|
-
const path = ['sections', key];
|
|
364
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(ast, path);
|
|
365
|
-
const sectionModule = (0, module_1.getSectionModule)(themeGraph, sectionType);
|
|
366
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
367
|
-
const start = typeProperty.loc.start.offset;
|
|
368
|
-
const end = typeProperty.loc.end.offset;
|
|
369
|
-
const sourceRange = [start, end];
|
|
370
|
-
// Link the template to the section
|
|
371
|
-
bind(module, sectionModule, { sourceRange });
|
|
372
|
-
promises.push(
|
|
373
|
-
// Traverse the section themeselves
|
|
374
|
-
traverseModule(sectionModule, themeGraph, deps),
|
|
375
|
-
// Link the blocks used in the section to the template
|
|
376
|
-
traverseSectionReferences(module, ast, path, section, themeGraph, deps));
|
|
377
|
-
}
|
|
378
|
-
return Promise.all(promises);
|
|
379
|
-
}
|
|
380
|
-
default: {
|
|
381
|
-
return (0, utils_1.assertNever)(module.kind);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Traverses the actual references contained inside Template.Template['sections'] and Template.SectionGroup['sections'].
|
|
387
|
-
*
|
|
388
|
-
* Does nothing if the mode is not `GraphMode.Production`.
|
|
389
|
-
*/
|
|
390
|
-
async function traverseSectionReferences(source, // template or section group
|
|
391
|
-
sourceAst, nodePath = [], section, themeGraph, deps) {
|
|
392
|
-
if (!section.blocks)
|
|
393
|
-
return;
|
|
394
|
-
const sectionHasLocalBlocks = await (0, utils_1.acceptsLocalBlocks)(section.type, deps);
|
|
395
|
-
if (sectionHasLocalBlocks)
|
|
396
|
-
return;
|
|
397
|
-
const promises = [];
|
|
398
|
-
for (const [key, block] of Object.entries(section.blocks)) {
|
|
399
|
-
const blockType = block.type;
|
|
400
|
-
const blockModule = (0, module_1.getThemeBlockModule)(themeGraph, blockType);
|
|
401
|
-
const path = [...nodePath, 'blocks', key];
|
|
402
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(sourceAst, path);
|
|
403
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
404
|
-
const start = typeProperty.loc.start.offset;
|
|
405
|
-
const end = typeProperty.loc.end.offset;
|
|
406
|
-
const sourceRange = [start, end];
|
|
407
|
-
// Link the template to the block
|
|
408
|
-
bind(source, blockModule, { sourceRange });
|
|
409
|
-
promises.push(
|
|
410
|
-
// Traverse the block themselves
|
|
411
|
-
traverseModule(blockModule, themeGraph, deps),
|
|
412
|
-
// Traverse the block references
|
|
413
|
-
traverseBlockReferences(source, sourceAst, path, block, themeGraph, deps));
|
|
414
|
-
}
|
|
415
|
-
return Promise.all(promises);
|
|
416
|
-
}
|
|
417
|
-
async function traverseBlockReferences(source, // template or section group
|
|
418
|
-
sourceAst, nodePath = [], block, themeGraph, deps) {
|
|
419
|
-
if (!block.blocks)
|
|
420
|
-
return;
|
|
421
|
-
const promises = [];
|
|
422
|
-
for (const [key, childBlock] of Object.entries(block.blocks)) {
|
|
423
|
-
const childBlockType = childBlock.type;
|
|
424
|
-
const childBlockModule = (0, module_1.getThemeBlockModule)(themeGraph, childBlockType);
|
|
425
|
-
const path = [...nodePath, 'blocks', key];
|
|
426
|
-
const node = (0, platformos_check_common_1.nodeAtPath)(sourceAst, path);
|
|
427
|
-
const typeProperty = node.children.find((child) => child.key.value === 'type');
|
|
428
|
-
const start = typeProperty.loc.start.offset;
|
|
429
|
-
const end = typeProperty.loc.end.offset;
|
|
430
|
-
const sourceRange = [start, end];
|
|
431
|
-
// Link the template/section group to the block
|
|
432
|
-
bind(source, childBlockModule, { sourceRange });
|
|
433
|
-
promises.push(
|
|
434
|
-
// Traverse the child block themselves
|
|
435
|
-
traverseModule(childBlockModule, themeGraph, deps),
|
|
436
|
-
// Traverse the child block references
|
|
437
|
-
traverseBlockReferences(source, sourceAst, path, childBlock, themeGraph, deps));
|
|
438
|
-
}
|
|
439
|
-
return Promise.all(promises);
|
|
108
|
+
function unique(arr) {
|
|
109
|
+
return [...new Set(arr)];
|
|
440
110
|
}
|
|
441
111
|
/**
|
|
442
112
|
* The bind method is the method that links two modules together.
|
|
@@ -445,7 +115,7 @@ sourceAst, nodePath = [], block, themeGraph, deps) {
|
|
|
445
115
|
*
|
|
446
116
|
* This function mutates the source and target modules.
|
|
447
117
|
*/
|
|
448
|
-
function bind(source, target, { sourceRange, targetRange, type = 'direct', // the type of dependency, can be 'direct'
|
|
118
|
+
function bind(source, target, { sourceRange, targetRange, type = 'direct', // the type of dependency, can be 'direct' or 'indirect'
|
|
449
119
|
} = {}) {
|
|
450
120
|
const dependency = {
|
|
451
121
|
source: { uri: source.uri, range: sourceRange },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/graph/traverse.ts"],"names":[],"mappings":";;AAwCA,wCA6CC;AAohBD,oBAqBC;AA9nBD,uEAAsE;AACtE,iFAe6C;AAc7C,oCAAiG;AACjG,qCAOkB;AAEX,KAAK,UAAU,cAAc,CAClC,MAAmB,EACnB,UAAsB,EACtB,IAA2B;IAE3B,8CAA8C;IAC9C,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,uDAAuD;IACvD,yDAAyD;IACzD,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAExC,qCAAqC;IACrC,MAAM,CAAC,MAAM,GAAG,MAAM,IAAA,cAAM,EAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAElD,oDAAoD;IACpD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,qCAAsB,CAAC,CAAC,CAAC;YACvB,OAAO,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;QAED,iCAAoB,CAAC,CAAC,CAAC;YACrB,OAAO,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,6CAA0B,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,8BAA8B;QACxC,CAAC;QAED,gCAAoB;QACpB,gCAAoB;QACpB,mCAAqB,CAAC,CAAC,CAAC;YACtB,OAAO,CAAC,kBAAkB;QAC5B,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,IAAA,mBAAW,EAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAoB,EACpB,UAAsB,EACtB,IAA2B;IAE3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAExD,IAAI,UAAU,CAAC,GAAG,YAAY,KAAK;QAAE,OAAO,CAAC,mCAAmC;IAEhF,MAAM,OAAO,GAGT;QACF,+BAA+B;QAC/B,oCAAoC;QACpC,0CAA0C;QAC1C,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/E,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gBACpD,IAAI,UAAU,CAAC,IAAI,KAAK,8BAAS,CAAC,cAAc;oBAAE,OAAO;gBACzD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,8BAAS,CAAC,MAAM;oBAAE,OAAO;gBAC5D,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACjD,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;iBAClE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;YACrC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,OAAO;gBAAE,OAAO;YAClD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY;gBAAE,OAAO;YAE1B,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC;YAC1C,IAAI,cAAc,CAAC,IAAI,KAAK,8BAAS,CAAC,MAAM;gBAAE,OAAO;YAErD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC;YAEvC,OAAO;gBACL,MAAM,EAAE,IAAA,4BAAmB,EAAC,UAAU,EAAE,SAAS,CAAC;gBAClD,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;aAC5D,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACnC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,8BAAS,CAAC,QAAQ;gBAAE,OAAO;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,2BAA2B;YAEhE,MAAM,MAAM,GAAG,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;YACpC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACvE,WAAW,EAAE,KAAK;aACnB,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;YAC9B,IAAI,CAAC,IAAA,gBAAQ,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,8BAAS,CAAC,MAAM,EAAE,CAAC;gBAC5D,OAAO;oBACL,MAAM,EAAE,IAAA,yBAAgB,EAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC;oBACnD,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;iBACpD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACxB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,iCAAiC;gBACjC,KAAK,8BAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;wBAC3C,OAAO;4BACL,MAAM,EAAE,IAAA,8BAAqB,EAAC,UAAU,EAAE,gBAAgB,CAAC;4BAC3D,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;yBACtD,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,0BAA0B;gBAC1B,KAAK,8BAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;wBACtC,OAAO;4BACL,MAAM,EAAE,IAAA,yBAAgB,EAAC,UAAU,EAAE,WAAW,CAAC;4BACjD,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;yBACtD,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,IAAA,+BAAK,EAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAExD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE;YAC7B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7E,mCAAmC;IACnC,IAAI,MAAM,CAAC,IAAI,6CAA6B,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,8BAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,yCAA2B,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,8BAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAoD,EACpD,MAAoB,EACpB,UAAsB,EACtB,IAA2B;IAE3B,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,6CAA6B,CAAC;IAC3D,MAAM,cAAc,GAClB,SAAS,IAAI,CAAC,MAAM,IAAA,0BAAkB,EAAC,8BAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtF,IAAI,cAAc;QAAE,OAAO;IAE3B,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACpC,IAAI,WAAW,YAAY,KAAK,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO;IAEjE,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,sBAAsB;IACtB,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,uBAAuB;IACvB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CACX,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAClF,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACpD,QAAQ,CAAC,IAAI,CACX,qBAAqB,CACnB,MAAuB,EACvB,MAAM,EACN,GAAG,EACH,WAAW,CAAC,OAAO,EACnB,UAAU,EACV,IAAI,CACL,CACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAwC,EACxC,MAAoB,EACpB,GAAa,EACb,MAA4C,EAC5C,UAAsB,EACtB,IAA2B;IAE3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,QAAQ,CAAgB,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,WAAW,GAAU;YACzB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;YAC7C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;SAC5C,CAAC;QAEF,6DAA6D;QAC7D,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,GAAG,MAAM,IAAI;qBAC5B,kBAAkB,EAAE;qBACpB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;oBACvC,MAAM,WAAW,GAAG,IAAA,4BAAmB,EACrC,UAAU,EACV,8BAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CACtC,CAAC;oBACF,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBAC7D,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM;YACR,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAwC,EACxC,MAAoB,EACpB,GAAa,EACb,OAAwB,EACxB,UAAsB,EACtB,IAA2B;IAE3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;YAAE,SAAS;QAEpC,uFAAuF;QACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;QAEnC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,QAAQ,CAAgB,CAAC;YAEtD,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,WAAW;gBAAE,SAAS;YAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;YAC/E,IAAI,CAAC,YAAY;gBAAE,SAAS;YAE5B,MAAM,WAAW,GAAU;gBACzB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;gBAC7C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;aAC5C,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CACX,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CACzF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,MAAwC,EACxC,MAAoB,EACpB,GAAa,EACb,MAA6D,EAC7D,UAA+B,EAC/B,UAAsB,EACtB,IAA2B;IAE3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,uFAAuF;IACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnF,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,QAAQ,CAAgB,CAAC;QAEtD,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,WAAW,GAAU;YACzB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;YAC7C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;SAC5C,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CACX,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,MAAqB,EACrB,MAAoB,EACpB,GAAa,EACb,MAAuB,EACvB,UAAsB,EACtB,IAA2B;IAE3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;QAAE,OAAO;IAElC,uFAAuF;IACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;IAEnC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,QAAQ,CAAgB,CAAC;QAEtD,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,MAAM,WAAW,GAAU;YACzB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;YAC7C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;SAC5C,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,MAAkB,EAClB,UAAsB,EACtB,IAA2B;IAE3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,IAAI,KAAK,wCAAc,CAAC,IAAI;QAAE,MAAM,IAAA,kBAAU,GAAE,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC3B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,CAAC,mCAAmC;IAErE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,6CAA4B,CAAC,CAAC,CAAC;YAC7B,uCAAuC;YACvC,MAAM,QAAQ,GAAG,IAAA,mCAAS,EAAC,UAAU,CAAC,MAAM,CAAsB,CAAC;YACnE,MAAM,QAAQ,GAAoB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBACjC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,IAAI,CAAgB,CAAC;gBAClD,MAAM,aAAa,GAAG,IAAA,yBAAgB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAChE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAE,CAAC;gBAChF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBACxC,MAAM,WAAW,GAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACxC,mCAAmC;gBACnC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC7C,QAAQ,CAAC,IAAI;gBACX,mCAAmC;gBACnC,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC;gBAC/C,sDAAsD;gBACtD,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CACxE,CAAC;YACJ,CAAC;YAED,kCAAkC;YAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,WAAW,GAAsB,SAAS,CAAC;gBAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC;gBACpB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7C,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,UAAU,CAAE,CAAC;oBAC1C,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC3D,QAAQ,GAAG,KAAK,CAAC,CAAC,2CAA2C;gBAC/D,CAAC;gBACD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC9D,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,sDAAgC,CAAC,CAAC,CAAC;YACjC,MAAM,YAAY,GAAG,IAAA,mCAAS,EAAC,UAAU,CAAC,MAAM,CAA0B,CAAC;YAC3E,MAAM,QAAQ,GAAoB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;gBACjC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,GAAG,EAAE,IAAI,CAAgB,CAAC;gBAClD,MAAM,aAAa,GAAG,IAAA,yBAAgB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBAEhE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAE,CAAC;gBAChF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBACxC,MAAM,WAAW,GAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAExC,mCAAmC;gBACnC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC7C,QAAQ,CAAC,IAAI;gBACX,mCAAmC;gBACnC,cAAc,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC;gBAC/C,sDAAsD;gBACtD,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CACxE,CAAC;YACJ,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,IAAA,mBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,yBAAyB,CACtC,MAAmB,EAAE,4BAA4B;AACjD,SAAmB,EACnB,WAAqB,EAAE,EACvB,OAAyB,EACzB,UAAsB,EACtB,IAA2B;IAE3B,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAC5B,MAAM,qBAAqB,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,IAAI,qBAAqB;QAAE,OAAO;IAElC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,SAAS,EAAE,IAAI,CAAgB,CAAC;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAE,CAAC;QAChF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QACxC,MAAM,WAAW,GAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxC,iCAAiC;QACjC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI;QACX,gCAAgC;QAChC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC;QAC7C,gCAAgC;QAChC,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAmB,EAAE,4BAA4B;AACjD,SAAmB,EACnB,WAAqB,EAAE,EACvB,KAAqB,EACrB,UAAsB,EACtB,IAA2B;IAE3B,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO;IAE1B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;QACvC,MAAM,gBAAgB,GAAG,IAAA,4BAAmB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAA,oCAAU,EAAC,SAAS,EAAE,IAAI,CAAgB,CAAC;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAE,CAAC;QAChF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;QACxC,MAAM,WAAW,GAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxC,+CAA+C;QAC/C,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI;QACX,sCAAsC;QACtC,cAAc,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC;QAClD,sCAAsC;QACtC,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,IAAI,CAClB,MAAmB,EACnB,MAAmB,EACnB,EACE,WAAW,EACX,WAAW,EACX,IAAI,GAAG,QAAQ,EAAE,kEAAkE;KAKjF,EAAE;IAEN,MAAM,UAAU,GAAc;QAC5B,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;QAC/C,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;QAC/C,IAAI,EAAE,IAAI;KACX,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/graph/traverse.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { buildAppGraph } from './graph/build';
|
|
2
|
+
export { serializeAppGraph } from './graph/serialize';
|
|
3
3
|
export { getWebComponentMap, findWebComponentReferences } from './getWebComponentMap';
|
|
4
|
-
export {
|
|
4
|
+
export { parseJs, toSourceCode } from './toSourceCode';
|
|
5
5
|
export * from './types';
|
package/dist/index.js
CHANGED
|
@@ -14,18 +14,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
17
|
+
exports.toSourceCode = exports.parseJs = exports.findWebComponentReferences = exports.getWebComponentMap = exports.serializeAppGraph = exports.buildAppGraph = void 0;
|
|
18
18
|
var build_1 = require("./graph/build");
|
|
19
|
-
Object.defineProperty(exports, "
|
|
19
|
+
Object.defineProperty(exports, "buildAppGraph", { enumerable: true, get: function () { return build_1.buildAppGraph; } });
|
|
20
20
|
var serialize_1 = require("./graph/serialize");
|
|
21
|
-
Object.defineProperty(exports, "
|
|
21
|
+
Object.defineProperty(exports, "serializeAppGraph", { enumerable: true, get: function () { return serialize_1.serializeAppGraph; } });
|
|
22
22
|
var getWebComponentMap_1 = require("./getWebComponentMap");
|
|
23
23
|
Object.defineProperty(exports, "getWebComponentMap", { enumerable: true, get: function () { return getWebComponentMap_1.getWebComponentMap; } });
|
|
24
24
|
Object.defineProperty(exports, "findWebComponentReferences", { enumerable: true, get: function () { return getWebComponentMap_1.findWebComponentReferences; } });
|
|
25
25
|
var toSourceCode_1 = require("./toSourceCode");
|
|
26
|
-
Object.defineProperty(exports, "
|
|
27
|
-
Object.defineProperty(exports, "toJsSourceCode", { enumerable: true, get: function () { return toSourceCode_1.toJsSourceCode; } });
|
|
26
|
+
Object.defineProperty(exports, "parseJs", { enumerable: true, get: function () { return toSourceCode_1.parseJs; } });
|
|
28
27
|
Object.defineProperty(exports, "toSourceCode", { enumerable: true, get: function () { return toSourceCode_1.toSourceCode; } });
|
|
29
|
-
Object.defineProperty(exports, "toSvgSourceCode", { enumerable: true, get: function () { return toSourceCode_1.toSvgSourceCode; } });
|
|
30
28
|
__exportStar(require("./types"), exports);
|
|
31
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uCAA8C;AAArC,sGAAA,aAAa,OAAA;AACtB,+CAAsD;AAA7C,8GAAA,iBAAiB,OAAA;AAC1B,2DAAsF;AAA7E,wHAAA,kBAAkB,OAAA;AAAE,gIAAA,0BAA0B,OAAA;AACvD,+CAAuD;AAA9C,uGAAA,OAAO,OAAA;AAAE,4GAAA,YAAY,OAAA;AAC9B,0CAAwB"}
|
package/dist/toSourceCode.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { UriString } from '@platformos/platformos-check-common';
|
|
2
2
|
import { Program } from 'acorn';
|
|
3
|
-
import {
|
|
4
|
-
export declare function toCssSourceCode(uri: UriString, source: string): Promise<CssSourceCode>;
|
|
5
|
-
export declare function toSvgSourceCode(uri: UriString, source: string): Promise<SvgSourceCode>;
|
|
6
|
-
export declare function toJsSourceCode(uri: UriString, source: string): Promise<JsSourceCode>;
|
|
3
|
+
import { FileSourceCode } from './types';
|
|
7
4
|
export declare function parseJs(source: string): Program | Error;
|
|
8
5
|
export declare function toSourceCode(uri: UriString, source: string): Promise<FileSourceCode>;
|
package/dist/toSourceCode.js
CHANGED
|
@@ -1,46 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toCssSourceCode = toCssSourceCode;
|
|
4
|
-
exports.toSvgSourceCode = toSvgSourceCode;
|
|
5
|
-
exports.toJsSourceCode = toJsSourceCode;
|
|
6
3
|
exports.parseJs = parseJs;
|
|
7
4
|
exports.toSourceCode = toSourceCode;
|
|
8
5
|
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
9
6
|
const acorn_1 = require("acorn");
|
|
10
|
-
const types_1 = require("./types");
|
|
11
7
|
const utils_1 = require("./utils");
|
|
12
|
-
async function toCssSourceCode(uri, source) {
|
|
13
|
-
return {
|
|
14
|
-
type: 'css',
|
|
15
|
-
uri,
|
|
16
|
-
source,
|
|
17
|
-
ast: new Error('File parsing not implemented yet'), // Placeholder for CSS parsing
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
async function toSvgSourceCode(uri, source) {
|
|
21
|
-
return {
|
|
22
|
-
type: 'svg',
|
|
23
|
-
uri,
|
|
24
|
-
source,
|
|
25
|
-
ast: new Error('File parsing not implemented yet'), // Placeholder for SVG parsing
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
async function toImageSourceCode(uri, source) {
|
|
29
|
-
return {
|
|
30
|
-
type: 'image',
|
|
31
|
-
uri,
|
|
32
|
-
source,
|
|
33
|
-
ast: new Error('Image files are not parsed'),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
async function toJsSourceCode(uri, source) {
|
|
37
|
-
return {
|
|
38
|
-
type: 'javascript',
|
|
39
|
-
uri,
|
|
40
|
-
source,
|
|
41
|
-
ast: parseJs(source),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
8
|
function parseJs(source) {
|
|
45
9
|
try {
|
|
46
10
|
return (0, acorn_1.parse)(source, {
|
|
@@ -54,23 +18,15 @@ function parseJs(source) {
|
|
|
54
18
|
}
|
|
55
19
|
async function toSourceCode(uri, source) {
|
|
56
20
|
const extension = (0, utils_1.extname)(uri);
|
|
57
|
-
if (extension === 'json' ||
|
|
21
|
+
if (extension === 'json' ||
|
|
22
|
+
extension === 'liquid' ||
|
|
23
|
+
extension === 'graphql' ||
|
|
24
|
+
extension === 'yml' ||
|
|
25
|
+
extension === 'yaml') {
|
|
58
26
|
return (0, platformos_check_common_1.toSourceCode)(uri, source);
|
|
59
27
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
else if (extension === 'css') {
|
|
64
|
-
return toCssSourceCode(uri, source);
|
|
65
|
-
}
|
|
66
|
-
else if (extension === 'svg') {
|
|
67
|
-
return toCssSourceCode(uri, source);
|
|
68
|
-
}
|
|
69
|
-
else if (types_1.SUPPORTED_ASSET_IMAGE_EXTENSIONS.includes(extension)) {
|
|
70
|
-
return toImageSourceCode(uri, source);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
throw new Error(`Unknown source code type for ${uri}`);
|
|
74
|
-
}
|
|
28
|
+
const ast = extension === 'js' ? parseJs(source) : new Error('File parsing not implemented');
|
|
29
|
+
const assetSourceCode = { type: 'asset', uri, source, ast };
|
|
30
|
+
return assetSourceCode;
|
|
75
31
|
}
|
|
76
32
|
//# sourceMappingURL=toSourceCode.js.map
|
package/dist/toSourceCode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toSourceCode.js","sourceRoot":"","sources":["../src/toSourceCode.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"toSourceCode.js","sourceRoot":"","sources":["../src/toSourceCode.ts"],"names":[],"mappings":";;AASA,0BASC;AAED,oCAkBC;AAtCD,iFAI6C;AAC7C,iCAAqD;AAErD,mCAAkC;AAElC,SAAgB,OAAO,CAAC,MAAc;IACpC,IAAI,CAAC;QACH,OAAO,IAAA,aAAU,EAAC,MAAM,EAAE;YACxB,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,iCAAO,EAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAc,EAAE,MAAc;IAC/D,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;IAE/B,IACE,SAAS,KAAK,MAAM;QACpB,SAAS,KAAK,QAAQ;QACtB,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,KAAK;QACnB,SAAS,KAAK,MAAM,EACpB,CAAC;QACD,OAAO,IAAA,sCAAc,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GACP,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAEnF,MAAM,eAAe,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7E,OAAO,eAAe,CAAC;AACzB,CAAC"}
|