@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
TypeScript
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 {};