@platformos/platformos-language-server-common 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/PropertyShapeInference.d.ts +18 -0
- package/dist/PropertyShapeInference.js +59 -1
- package/dist/PropertyShapeInference.js.map +1 -1
- package/dist/TypeSystem.js +225 -26
- package/dist/TypeSystem.js.map +1 -1
- package/dist/codeActions/CodeActionsProvider.d.ts +1 -1
- package/dist/completions/params/LiquidCompletionParams.js +3 -0
- package/dist/completions/params/LiquidCompletionParams.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @platformos/theme-language-server-common
|
|
2
2
|
|
|
3
|
+
## 0.0.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Beta release
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @platformos/liquid-html-parser@0.0.5
|
|
10
|
+
- @platformos/platformos-check-common@0.0.5
|
|
11
|
+
- @platformos/platformos-graph@0.0.5
|
|
12
|
+
|
|
3
13
|
## 0.0.4
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JsonHashLiteral, JsonArrayLiteral, LiquidExpression } from '@platformos/liquid-html-parser';
|
|
1
2
|
export interface PropertyShape {
|
|
2
3
|
kind: 'object' | 'array' | 'primitive';
|
|
3
4
|
/** For objects: map of property name to nested shape */
|
|
@@ -12,6 +13,10 @@ export interface LookupResult {
|
|
|
12
13
|
error?: 'unknown_property' | 'primitive_access';
|
|
13
14
|
errorAt?: number;
|
|
14
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Merge two shapes together, combining their properties
|
|
18
|
+
*/
|
|
19
|
+
export declare function mergeShapes(a: PropertyShape, b: PropertyShape): PropertyShape;
|
|
15
20
|
/**
|
|
16
21
|
* Infer shape from a parsed JSON value
|
|
17
22
|
*/
|
|
@@ -20,6 +25,19 @@ export declare function inferShapeFromJSON(value: unknown): PropertyShape;
|
|
|
20
25
|
* Try to parse a string as JSON and infer its shape
|
|
21
26
|
*/
|
|
22
27
|
export declare function inferShapeFromJSONString(jsonString: string): PropertyShape | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Optional callback to resolve expressions the shape inferrer can't handle
|
|
30
|
+
* (e.g. variable lookups that require the type system).
|
|
31
|
+
*/
|
|
32
|
+
export type ExpressionShapeResolver = (expr: LiquidExpression) => PropertyShape | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Infer shape from a JSON literal AST node (JsonHashLiteral or JsonArrayLiteral).
|
|
35
|
+
* This mirrors inferShapeFromJSON but walks AST nodes instead of parsed JS values.
|
|
36
|
+
*
|
|
37
|
+
* @param resolveExpression - Optional callback to resolve variable references and
|
|
38
|
+
* other expressions that require type system context.
|
|
39
|
+
*/
|
|
40
|
+
export declare function inferShapeFromJsonLiteral(node: JsonHashLiteral | JsonArrayLiteral, resolveExpression?: ExpressionShapeResolver): PropertyShape;
|
|
23
41
|
/**
|
|
24
42
|
* Extract response shape from GraphQL document content
|
|
25
43
|
* @param content - The GraphQL query/mutation content
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeShapes = mergeShapes;
|
|
3
4
|
exports.inferShapeFromJSON = inferShapeFromJSON;
|
|
4
5
|
exports.inferShapeFromJSONString = inferShapeFromJSONString;
|
|
6
|
+
exports.inferShapeFromJsonLiteral = inferShapeFromJsonLiteral;
|
|
5
7
|
exports.inferShapeFromGraphQL = inferShapeFromGraphQL;
|
|
6
8
|
exports.lookupPropertyPath = lookupPropertyPath;
|
|
7
9
|
exports.getAvailableProperties = getAvailableProperties;
|
|
@@ -12,6 +14,7 @@ exports.mergePropertyIntoShape = mergePropertyIntoShape;
|
|
|
12
14
|
const language_1 = require("graphql/language");
|
|
13
15
|
const graphql_1 = require("graphql");
|
|
14
16
|
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
17
|
+
const liquid_html_parser_1 = require("@platformos/liquid-html-parser");
|
|
15
18
|
/**
|
|
16
19
|
* Merge two shapes together, combining their properties
|
|
17
20
|
*/
|
|
@@ -91,6 +94,61 @@ function inferShapeFromJSONString(jsonString) {
|
|
|
91
94
|
}
|
|
92
95
|
return inferShapeFromJSON(parsed);
|
|
93
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Infer shape from a JSON literal AST node (JsonHashLiteral or JsonArrayLiteral).
|
|
99
|
+
* This mirrors inferShapeFromJSON but walks AST nodes instead of parsed JS values.
|
|
100
|
+
*
|
|
101
|
+
* @param resolveExpression - Optional callback to resolve variable references and
|
|
102
|
+
* other expressions that require type system context.
|
|
103
|
+
*/
|
|
104
|
+
function inferShapeFromJsonLiteral(node, resolveExpression) {
|
|
105
|
+
if (node.type === liquid_html_parser_1.NodeTypes.JsonHashLiteral) {
|
|
106
|
+
const properties = new Map();
|
|
107
|
+
for (const entry of node.entries) {
|
|
108
|
+
const key = getJsonKeyName(entry.key);
|
|
109
|
+
if (key !== undefined) {
|
|
110
|
+
properties.set(key, inferShapeFromExpression(entry.value, resolveExpression));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { kind: 'object', properties };
|
|
114
|
+
}
|
|
115
|
+
// JsonArrayLiteral
|
|
116
|
+
let itemShape;
|
|
117
|
+
for (const element of node.elements) {
|
|
118
|
+
const shape = inferShapeFromExpression(element, resolveExpression);
|
|
119
|
+
itemShape = itemShape ? mergeShapes(itemShape, shape) : shape;
|
|
120
|
+
}
|
|
121
|
+
return { kind: 'array', itemShape };
|
|
122
|
+
}
|
|
123
|
+
function getJsonKeyName(key) {
|
|
124
|
+
switch (key.type) {
|
|
125
|
+
case liquid_html_parser_1.NodeTypes.String:
|
|
126
|
+
return key.value;
|
|
127
|
+
case liquid_html_parser_1.NodeTypes.VariableLookup:
|
|
128
|
+
return key.name ?? undefined;
|
|
129
|
+
default:
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function inferShapeFromExpression(expr, resolveExpression) {
|
|
134
|
+
switch (expr.type) {
|
|
135
|
+
case liquid_html_parser_1.NodeTypes.JsonHashLiteral:
|
|
136
|
+
case liquid_html_parser_1.NodeTypes.JsonArrayLiteral:
|
|
137
|
+
return inferShapeFromJsonLiteral(expr, resolveExpression);
|
|
138
|
+
case liquid_html_parser_1.NodeTypes.String:
|
|
139
|
+
return { kind: 'primitive', primitiveType: 'string' };
|
|
140
|
+
case liquid_html_parser_1.NodeTypes.Number:
|
|
141
|
+
return { kind: 'primitive', primitiveType: 'number' };
|
|
142
|
+
case liquid_html_parser_1.NodeTypes.LiquidLiteral:
|
|
143
|
+
if (expr.value === null)
|
|
144
|
+
return { kind: 'primitive', primitiveType: 'null' };
|
|
145
|
+
if (typeof expr.value === 'boolean')
|
|
146
|
+
return { kind: 'primitive', primitiveType: 'boolean' };
|
|
147
|
+
return { kind: 'primitive' };
|
|
148
|
+
default:
|
|
149
|
+
return resolveExpression?.(expr) ?? { kind: 'primitive' };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
94
152
|
/**
|
|
95
153
|
* Unwrap NonNull and get the underlying type
|
|
96
154
|
*/
|
|
@@ -258,7 +316,7 @@ function shapeToTypeString(shape) {
|
|
|
258
316
|
return 'array';
|
|
259
317
|
}
|
|
260
318
|
if (shape.kind === 'object') {
|
|
261
|
-
return '
|
|
319
|
+
return 'hash';
|
|
262
320
|
}
|
|
263
321
|
return 'any';
|
|
264
322
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyShapeInference.js","sourceRoot":"","sources":["../src/PropertyShapeInference.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PropertyShapeInference.js","sourceRoot":"","sources":["../src/PropertyShapeInference.ts"],"names":[],"mappings":"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"}
|
package/dist/TypeSystem.js
CHANGED
|
@@ -346,41 +346,184 @@ async function buildSymbolsTable(partialAst, seedSymbolsTable, liquidDrops, grap
|
|
|
346
346
|
const typeRanges = await (0, platformos_check_common_2.visit)(partialAst, {
|
|
347
347
|
// {% assign x = foo.x | filter %}
|
|
348
348
|
// {% assign x = '{"a": 1}' | parse_json %}
|
|
349
|
+
// {% assign x = {a: 1, b: "hello"} %}
|
|
350
|
+
// {% assign x["key"] = value %}
|
|
351
|
+
// {% assign arr << item %}
|
|
349
352
|
async AssignMarkup(node) {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
353
|
+
const expression = node.value.expression;
|
|
354
|
+
let valueShape;
|
|
355
|
+
// Resolver for variable references inside JSON literals
|
|
356
|
+
const resolveExpr = (expr) => {
|
|
357
|
+
if (expr.type !== liquid_html_parser_1.NodeTypes.VariableLookup || !expr.name)
|
|
358
|
+
return undefined;
|
|
359
|
+
// Look up the variable's shape from already-processed assignments
|
|
360
|
+
const shapes = variableShapes.get(expr.name);
|
|
361
|
+
const shapeEntry = shapes
|
|
362
|
+
? findLastApplicableShape(shapes, node.position.start)
|
|
363
|
+
: undefined;
|
|
364
|
+
let shape = shapeEntry?.shape;
|
|
365
|
+
// Fall back to seedSymbolsTable
|
|
366
|
+
if (!shape && seedSymbolsTable[expr.name]) {
|
|
367
|
+
for (const tr of seedSymbolsTable[expr.name]) {
|
|
368
|
+
if (tr.range[0] < node.position.start) {
|
|
369
|
+
if (typeof tr.type !== 'string' && tr.type.kind === 'shape') {
|
|
370
|
+
shape = tr.type.shape;
|
|
371
|
+
}
|
|
372
|
+
else if (typeof tr.type === 'string' || tr.type.kind === 'array') {
|
|
373
|
+
shape = resolvedTypeToShape(tr.type);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
357
377
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
378
|
+
if (!shape)
|
|
379
|
+
return undefined;
|
|
380
|
+
// Resolve lookups (e.g. a.x or a["key"])
|
|
381
|
+
for (const lookup of expr.lookups) {
|
|
382
|
+
if (shape.kind === 'object' && lookup.type === liquid_html_parser_1.NodeTypes.String && shape.properties) {
|
|
383
|
+
const prop = shape.properties.get(lookup.value);
|
|
384
|
+
if (prop) {
|
|
385
|
+
shape = prop;
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
return undefined;
|
|
365
389
|
}
|
|
366
390
|
}
|
|
391
|
+
else if (shape.kind === 'array') {
|
|
392
|
+
if (lookup.type === liquid_html_parser_1.NodeTypes.Number ||
|
|
393
|
+
(lookup.type === liquid_html_parser_1.NodeTypes.String &&
|
|
394
|
+
(lookup.value === 'first' || lookup.value === 'last'))) {
|
|
395
|
+
shape = shape.itemShape;
|
|
396
|
+
if (!shape)
|
|
397
|
+
return undefined;
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
return undefined;
|
|
405
|
+
}
|
|
367
406
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
407
|
+
return shape;
|
|
408
|
+
};
|
|
409
|
+
// Case 1: JSON literal expression
|
|
410
|
+
if (expression.type === liquid_html_parser_1.NodeTypes.JsonHashLiteral ||
|
|
411
|
+
expression.type === liquid_html_parser_1.NodeTypes.JsonArrayLiteral) {
|
|
412
|
+
valueShape = (0, PropertyShapeInference_1.inferShapeFromJsonLiteral)(expression, resolveExpr);
|
|
413
|
+
}
|
|
414
|
+
// Case 2: parse_json / to_hash filter on a string
|
|
415
|
+
if (!valueShape) {
|
|
416
|
+
const hasParseJsonFilter = node.value.filters?.some((f) => f.name === 'parse_json' || f.name === 'to_hash');
|
|
417
|
+
if (hasParseJsonFilter) {
|
|
418
|
+
let jsonString;
|
|
419
|
+
if (expression.type === liquid_html_parser_1.NodeTypes.String) {
|
|
420
|
+
jsonString = expression.value;
|
|
421
|
+
}
|
|
422
|
+
if (!jsonString && node.value.filters) {
|
|
423
|
+
const defaultFilter = node.value.filters.find((f) => f.name === 'default');
|
|
424
|
+
if (defaultFilter &&
|
|
425
|
+
defaultFilter.args &&
|
|
426
|
+
defaultFilter.args.length > 0 &&
|
|
427
|
+
defaultFilter.args[0].type === liquid_html_parser_1.NodeTypes.String) {
|
|
428
|
+
jsonString = defaultFilter.args[0].value;
|
|
374
429
|
}
|
|
375
|
-
variableShapes.get(node.name).push({ shape, rangeEnd: node.position.end });
|
|
376
|
-
return {
|
|
377
|
-
identifier: node.name,
|
|
378
|
-
type: shapeType(shape),
|
|
379
|
-
range: [node.position.end],
|
|
380
|
-
};
|
|
381
430
|
}
|
|
431
|
+
if (jsonString) {
|
|
432
|
+
valueShape = (0, PropertyShapeInference_1.inferShapeFromJSONString)(jsonString) ?? undefined;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
// Case 3: Infer primitive shape for << and LHS lookup scenarios
|
|
437
|
+
if (!valueShape && ((node.lookups && node.lookups.length > 0) || node.operator === '<<')) {
|
|
438
|
+
if (expression.type === liquid_html_parser_1.NodeTypes.String) {
|
|
439
|
+
valueShape = { kind: 'primitive', primitiveType: 'string' };
|
|
440
|
+
}
|
|
441
|
+
else if (expression.type === liquid_html_parser_1.NodeTypes.Number) {
|
|
442
|
+
valueShape = { kind: 'primitive', primitiveType: 'number' };
|
|
443
|
+
}
|
|
444
|
+
else if (expression.type === liquid_html_parser_1.NodeTypes.LiquidLiteral) {
|
|
445
|
+
if (expression.value === null) {
|
|
446
|
+
valueShape = { kind: 'primitive', primitiveType: 'null' };
|
|
447
|
+
}
|
|
448
|
+
else if (typeof expression.value === 'boolean') {
|
|
449
|
+
valueShape = { kind: 'primitive', primitiveType: 'boolean' };
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
// Handle lookups on the LHS (assign x["key"] = value)
|
|
454
|
+
if (node.lookups && node.lookups.length > 0) {
|
|
455
|
+
const lookupPath = getAssignLookupPath(node.lookups);
|
|
456
|
+
if (lookupPath && lookupPath.length > 0) {
|
|
457
|
+
const existingShapes = variableShapes.get(node.name) || [];
|
|
458
|
+
const existingShapeEntry = findLastApplicableShape(existingShapes, node.position.start);
|
|
459
|
+
let baseShape;
|
|
460
|
+
if (existingShapeEntry) {
|
|
461
|
+
baseShape = existingShapeEntry.shape;
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
let existingType;
|
|
465
|
+
if (seedSymbolsTable[node.name]) {
|
|
466
|
+
for (const tr of seedSymbolsTable[node.name]) {
|
|
467
|
+
if (tr.range[0] < node.position.start) {
|
|
468
|
+
if (typeof tr.type !== 'string' && tr.type.kind === 'shape') {
|
|
469
|
+
existingType = tr.type;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
baseShape =
|
|
475
|
+
existingType && isShapeType(existingType)
|
|
476
|
+
? existingType.shape
|
|
477
|
+
: { kind: 'object', properties: new Map() };
|
|
478
|
+
}
|
|
479
|
+
const newShape = mergeNestedPropertyIntoShape(baseShape, lookupPath, valueShape ?? { kind: 'primitive' });
|
|
480
|
+
if (!variableShapes.has(node.name))
|
|
481
|
+
variableShapes.set(node.name, []);
|
|
482
|
+
variableShapes.get(node.name).push({ shape: newShape, rangeEnd: node.position.end });
|
|
483
|
+
return {
|
|
484
|
+
identifier: node.name,
|
|
485
|
+
type: shapeType(newShape),
|
|
486
|
+
range: [node.position.end],
|
|
487
|
+
};
|
|
382
488
|
}
|
|
383
489
|
}
|
|
490
|
+
// Handle << operator (array append)
|
|
491
|
+
if (node.operator === '<<') {
|
|
492
|
+
const itemShape = valueShape ?? { kind: 'primitive' };
|
|
493
|
+
const existingShapes = variableShapes.get(node.name) || [];
|
|
494
|
+
const existingShapeEntry = findLastApplicableShape(existingShapes, node.position.start);
|
|
495
|
+
let arrayShape;
|
|
496
|
+
if (existingShapeEntry?.shape.kind === 'array') {
|
|
497
|
+
const existing = existingShapeEntry.shape.itemShape;
|
|
498
|
+
arrayShape = {
|
|
499
|
+
kind: 'array',
|
|
500
|
+
itemShape: existing ? (0, PropertyShapeInference_1.mergeShapes)(existing, itemShape) : itemShape,
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
else {
|
|
504
|
+
arrayShape = { kind: 'array', itemShape };
|
|
505
|
+
}
|
|
506
|
+
if (!variableShapes.has(node.name))
|
|
507
|
+
variableShapes.set(node.name, []);
|
|
508
|
+
variableShapes.get(node.name).push({ shape: arrayShape, rangeEnd: node.position.end });
|
|
509
|
+
return {
|
|
510
|
+
identifier: node.name,
|
|
511
|
+
type: shapeType(arrayShape),
|
|
512
|
+
range: [node.position.end],
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
// Simple assignment with shape (JSON literal or parse_json)
|
|
516
|
+
if (valueShape) {
|
|
517
|
+
if (!variableShapes.has(node.name))
|
|
518
|
+
variableShapes.set(node.name, []);
|
|
519
|
+
variableShapes.get(node.name).push({ shape: valueShape, rangeEnd: node.position.end });
|
|
520
|
+
return {
|
|
521
|
+
identifier: node.name,
|
|
522
|
+
type: shapeType(valueShape),
|
|
523
|
+
range: [node.position.end],
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
// Default: lazy variable type
|
|
384
527
|
return {
|
|
385
528
|
identifier: node.name,
|
|
386
529
|
type: lazyVariable(node.value, node.position.start),
|
|
@@ -731,6 +874,15 @@ function inferType(thing, symbolsTable, objectMap, filtersMap) {
|
|
|
731
874
|
case liquid_html_parser_1.NodeTypes.Range: {
|
|
732
875
|
return arrayType('number');
|
|
733
876
|
}
|
|
877
|
+
// JSON literal expressions: {key: val} or [1, 2, 3]
|
|
878
|
+
case liquid_html_parser_1.NodeTypes.JsonHashLiteral:
|
|
879
|
+
case liquid_html_parser_1.NodeTypes.JsonArrayLiteral: {
|
|
880
|
+
const resolver = (expr) => {
|
|
881
|
+
const type = inferType(expr, symbolsTable, objectMap, filtersMap);
|
|
882
|
+
return resolvedTypeToShape(type);
|
|
883
|
+
};
|
|
884
|
+
return shapeType((0, PropertyShapeInference_1.inferShapeFromJsonLiteral)(thing, resolver));
|
|
885
|
+
}
|
|
734
886
|
// The type of the assign markup is the type of the right hand side.
|
|
735
887
|
// {% assign x = y.property | filter1 | filter2 %}
|
|
736
888
|
case liquid_html_parser_1.NodeTypes.AssignMarkup: {
|
|
@@ -996,6 +1148,34 @@ function shapeToType(shape) {
|
|
|
996
1148
|
}
|
|
997
1149
|
return exports.Untyped;
|
|
998
1150
|
}
|
|
1151
|
+
/**
|
|
1152
|
+
* Convert a resolved type back to a PropertyShape (inverse of shapeToType).
|
|
1153
|
+
* Used when embedding resolved variable types into JSON literal shapes.
|
|
1154
|
+
*/
|
|
1155
|
+
function resolvedTypeToShape(type) {
|
|
1156
|
+
if (typeof type === 'string') {
|
|
1157
|
+
switch (type) {
|
|
1158
|
+
case 'string':
|
|
1159
|
+
return { kind: 'primitive', primitiveType: 'string' };
|
|
1160
|
+
case 'number':
|
|
1161
|
+
return { kind: 'primitive', primitiveType: 'number' };
|
|
1162
|
+
case 'boolean':
|
|
1163
|
+
return { kind: 'primitive', primitiveType: 'boolean' };
|
|
1164
|
+
case exports.Untyped:
|
|
1165
|
+
case exports.Unknown:
|
|
1166
|
+
return undefined;
|
|
1167
|
+
default:
|
|
1168
|
+
return { kind: 'primitive' };
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
if (isShapeType(type))
|
|
1172
|
+
return type.shape;
|
|
1173
|
+
if (isArrayType(type)) {
|
|
1174
|
+
const itemShape = resolvedTypeToShape(type.valueType);
|
|
1175
|
+
return { kind: 'array', itemShape };
|
|
1176
|
+
}
|
|
1177
|
+
return undefined;
|
|
1178
|
+
}
|
|
999
1179
|
function inferPseudoTypePropertyType(curr, // settings
|
|
1000
1180
|
lookup, objectMap) {
|
|
1001
1181
|
const parentEntry = objectMap[curr];
|
|
@@ -1239,6 +1419,25 @@ function typeToDisplayString(type) {
|
|
|
1239
1419
|
return type.types.map((t) => typeToDisplayString(t)).join(' | ');
|
|
1240
1420
|
return 'unknown';
|
|
1241
1421
|
}
|
|
1422
|
+
/**
|
|
1423
|
+
* Extract the lookup path from assign lookups.
|
|
1424
|
+
* For {% assign a["key1"]["key2"] = value %}, returns ['key1', 'key2']
|
|
1425
|
+
*/
|
|
1426
|
+
function getAssignLookupPath(lookups) {
|
|
1427
|
+
const path = [];
|
|
1428
|
+
for (const lookup of lookups) {
|
|
1429
|
+
if (lookup.type === liquid_html_parser_1.NodeTypes.String) {
|
|
1430
|
+
path.push(lookup.value);
|
|
1431
|
+
}
|
|
1432
|
+
else if (lookup.type === liquid_html_parser_1.NodeTypes.Number) {
|
|
1433
|
+
path.push(`${lookup.value}`);
|
|
1434
|
+
}
|
|
1435
|
+
else {
|
|
1436
|
+
return undefined;
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
return path.length > 0 ? path : undefined;
|
|
1440
|
+
}
|
|
1242
1441
|
/**
|
|
1243
1442
|
* Extract the lookup path from a hash_assign target.
|
|
1244
1443
|
* For {% hash_assign a['key1']['key2'] = value %}, returns ['key1', 'key2']
|