UNPKG

@shopify/theme-language-server-common

Version:

<h1 align="center" style="position: relative;" > <br> <img src="https://github.com/Shopify/theme-check-vscode/blob/main/images/shopify_glyph.png?raw=true" alt="logo" width="141" height="160"> <br> Theme Language Server </h1>

37 lines (36 loc) 1.9 kB
import { SourceCodeType, SourceCode, SectionSchema, ThemeBlockSchema, AppBlockSchema } from '@shopify/theme-check-common'; import { TextDocument } from 'vscode-languageserver-textdocument'; import { DocDefinition } from '@shopify/theme-check-common'; /** Util type to add the common `textDocument` property to the SourceCode. */ type _AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = SourceCode<SCT> & { textDocument: TextDocument; }; /** JsonSourceCode + textDocument */ export type AugmentedJsonSourceCode = _AugmentedSourceCode<SourceCodeType.JSON>; /** * AugmentedLiquidSourceCode may hold the schema for the section or block. * * We'll use the SourceCode as the source of truth since we won't need to care * about cache invalidation and will mean we'll parse the schema at most once. */ export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.LiquidHtml> & { getSchema: () => Promise<SectionSchema | ThemeBlockSchema | AppBlockSchema | undefined>; getLiquidDoc: () => Promise<DocDefinition | undefined>; }; /** * AugmentedSourceCode is a union of the two augmented source codes. * * When passed a specific SourceCodeType, it will return the correct AugmentedSourceCode. * * @example * AugmentedSourceCode -> AugmentedJsonSourceCode | AugmentedLiquidSourceCode * AugmentedSourceCode<SourceCodeType.JSON> -> AugmentedJsonSourceCode * AugmentedSourceCode<SourceCodeType.LiquidHtml> -> AugmentedLiquidSourceCode */ export type AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = { [SourceCodeType.JSON]: AugmentedJsonSourceCode; [SourceCodeType.LiquidHtml]: AugmentedLiquidSourceCode; }[SCT]; export declare const isLiquidSourceCode: (file: AugmentedSourceCode) => file is AugmentedLiquidSourceCode; export declare const isJsonSourceCode: (file: AugmentedSourceCode) => file is AugmentedJsonSourceCode; export {};