@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>
814 lines (530 loc) • 20.9 kB
Markdown
# @shopify/theme-language-server-common
## 2.0.0
### Major Changes
- 4b574c1: [Breaking] Replace absolute path concerns with URIs
This implies a couple of changes:
- `Config` now holds a `rootUri` instead of `root` path.
- `loadConfig` injections needs to change their return value accordingly
- In checks,
- The context helper `absolutePath` has been replaced by `toUri`
- The context helper `relativePath` has been replaced by `toRelativePath`
- `SourceCode` objects now hold a `uri` instead of a `path`
- `toSourceCode` now accepts a `uri` instead of a `path`
- 4b574c1: [Breaking] Replace fs-based dependency injection by an AbstractFileSystem injection
```diff
+ class FileSystemImpl implements AbstractFileSystem {
+ /* ... */
+ }
startServer(worker, {
- findRootURI,
- fileExists,
- fileSize,
- getDefaultTranslationsFactory,
- getDefaultLocaleFactory,
- getDefaultSchemaTranslationsFactory,
- getDefaultSchemaLocaleFactory,
- getThemeSettingsSchemaForRootURI,
+ fs: new FileSystemImpl(),
loadConfig,
log,
themeDocset,
jsonValidationSet,
})
```
### Minor Changes
- 5fab0e9: Add on snippet rename automatic refactor support
When `snippets/*.liquid` files are renamed, we'll change all the old references to point to the new files:
- `{% render 'oldName' %}` -> `{% render 'newName' %}`
- `{% include 'oldName' %}` -> `{% include 'newName' %}`
- 5fab0e9: Add on asset rename automatic refactor support
When `assets/*` files are renamed, we'll change all the old references to point to the new files:
- `{{ 'oldName.js' | asset_url }}` -> `{{ 'newName.js' | asset_url }}`
- `{% echo 'oldName.js' | asset_url %}` -> `{% echo 'newName.js' | asset_url %}`
Works with `.(js|css).liquid` asset files as well.
### Patch Changes
- Updated dependencies [4b574c1]
- Updated dependencies [4b574c1]
- Updated dependencies [5fab0e9]
- @shopify/theme-check-common@3.0.0
## 1.14.0
### Minor Changes
- a0ba46d: Add Liquid tag snippet completion
- Accept the completion item for `if` and get `{% if ${1:condition} %}\n $0\n{% endif %}` with tabulated placeholders
- `${1:condition}` is the first placeholder, press tab to reach the next one
- `$0` is the last one
- This kind of completion works for every Liquid tag and is powered by the syntax snippets on https://shopify.dev
- The snippets are smart depending on context:
- Will infer whitespace stripping characters based on context
- Will not snippet complete `{%` and `%}` if inside a `{% liquid %}` tag
- Will not snippet complete if markup is already present in the tag definition
- e36ed42: Improve HTML attribute auto-completion
- Add `=""` to attributes that should have a value when relevant
- Override entire attribute even if the cursor was in the middle of it
- 9bff5bd: Support renaming liquid variable names
- only renames liquid variables enclosed within liquid tags
## 1.13.1
### Patch Changes
- c664d52: Fix HTML element close tag auto-insertion inside Liquid branches
- Updated dependencies [c664d52]
- @shopify/liquid-html-parser@2.0.5
- @shopify/theme-check-common@2.9.2
## 1.13.0
### Minor Changes
- b5a2fbc: Add HTML element name rename support
Press `F2` on an HTML element name to rename its open/close pairs in a safe manner. No setting required.
```liquid
{% # before rename %}
<div>
<!--
press F2 on this `div` and have both the open and close parts be renamed at the same time
-->
<div></div>
<div></div>
<div></div>
</div>
{% # after rename %}
<section>
<div></div>
<div></div>
<div></div>
</section>
```
- 474b859: Add linked editing support for HTML element names
Just like for [HTML in VS Code](https://code.visualstudio.com/updates/v1_52#_html), this feature is enabled by the `editor.linkedEditing` VS Code setting:
```json
"editor.linkedEditing": true
```
When enabled, this will make it so you can rename open/close pairs as you are typing.
- d1f9fef: Add support for HTML Element close tag auto-insertion
```liquid
{% # type this %}
<div>
{% # get this, with cursor at | %}
<div>|</div>
```
- a946a4e: Add tupled highlighting of HTML element names and Liquid blocks
When you hover over a HTML tag open, the close tag is highlighted and vice-versa.
```html
<div>
<!-- this div gets highlighted -->
<div></div>
</div>
<!-- with this one-->
```
When you hover over a Liquid block open, the close block is highlighted (and branches if any).
```liquid
{% # this if, elsif, else, endif all get highlighted together %}
{% if cond %}
{% elsif cond %}
{% else %}
{% endif %}
```
### Patch Changes
- 28a5d31: Fix completion of variables inside `{% liquid %}` tag expressions
- 264321f: Remove `endliquid` as suggested auto-completion
- f0f9ec2: Add syntax to hover definitions
Now when hovering over a liquid tag or filter we'll show syntax information if
we have it available.
- f96425e: Fixed autocomplete for snippets where the file contained multiple periods
- Updated dependencies [1c73710]
- Updated dependencies [d1f9fef]
- Updated dependencies [70e2241]
- @shopify/liquid-html-parser@2.0.4
- @shopify/theme-check-common@2.9.1
## 1.12.1
### Patch Changes
- Updated dependencies [457f9cb]
- Updated dependencies [edb7f2e]
- @shopify/theme-check-common@2.9.0
## 1.12.0
### Minor Changes
- d7c6204: Expose the `parseJSON` API in `@shopify/theme-language-server-common`
## 1.11.3
### Patch Changes
- Updated dependencies [bb79d83]
- @shopify/theme-check-common@2.7.0
## 1.11.2
### Patch Changes
- Updated dependencies [ff78229]
- @shopify/theme-check-common@2.6.0
## 1.11.1
### Patch Changes
- ec1fbd7: The comment object should be available to section files
- Updated dependencies [ec1fbd7]
- @shopify/theme-check-common@2.5.1
## 1.11.0
### Minor Changes
- 03b41e1: Breaking: `jsonValidationSet`'s schemas public API change
Now takes a function of the following signature:
```ts
interface JsonValidationSet = {
schemas: (context: 'theme' | 'app') => Promise<SchemaDefinition[]>
}
```
Reason being we want to support `fileMatch` overloading of `blocks/*.liquid` files and we needed a way to identify which context you're in.
Unfortunately, the JSON schema for `blocks/*.liquid` files in theme app extensions isn't the same one we have in themes. There doesn't seem to be a way to unify them either.
- 03b41e1: Add support for the schemas manifest on Shopify/theme-liquid-docs
Shopify/theme-liquid-docs now supports composable JSON schemas (with relative paths). To solve the `blocks/*.liquid` file match JSON schema overload depending on the context (`app` or `theme`), we defined two manifests that describe the schemas required by your solution and define the fileMatch rules:
- [manifest_theme.json](https://github.com/Shopify/theme-liquid-docs/blob/main/schemas/manifest_theme.json)
- [manifest_theme_app_extension.json](https://github.com/Shopify/theme-liquid-docs/blob/main/schemas/manifest_theme.json)
`@shopify/theme-check-docs-updater` now reads those manifests and downloads the tree of dependency that they require. We will no longer need to make new theme-tools releases whenever we add new schemas. We'll be able to dev them and their file associations directly from Shopify/theme-liquid-docs and have downstream consumers updated automatically (the same way docs are automatically updated).
- 03b41e1: Breaking: the `Config` object requires a `context` property.
This is mostly for internal use, but documented here anyway.
### Patch Changes
- Updated dependencies [03b41e1]
- Updated dependencies [03b41e1]
- Updated dependencies [03b41e1]
- @shopify/theme-check-common@2.5.0
## 1.10.0
### Minor Changes
- 767d223: Breaking: Redesign `jsonValidationSet` public API
(Only breaking for in-browser packages, node packages are still batteries-included)
Before:
```ts
type JsonValidationSet = {
sectionSchema(): Promise<string>;
translationSchema(): Promise<string>;
validateSectionSchema(): Promise<ValidateFunction>;
};
```
After:
```ts
type URI = string;
type SchemaDefinition = {
uri: string;
fileMatch?: string[];
schema: Promise<string>;
};
type JsonValidationSet = {
schemas: SchemaDefinition[];
};
```
We’re getting rid of [ajv](https://ajv.js.org/) and we’ll use [vscode-json-languageservice](https://github.com/microsoft/vscode-json-languageservice) in Theme Check instead. That dependency is required by the language server anyway, might as well reuse it instead of depending on a totally different solution for validation. We'll also get better reporting of Syntax Errors because the parser used by `vscode-json-languageservice` is better.
Moreover, this new design leaves space for `$ref` support.
### Patch Changes
- Updated dependencies [767d223]
- Updated dependencies [767d223]
- @shopify/theme-check-common@2.4.0
## 1.9.0
### Minor Changes
- 8e3c7e2: Make translation completion fuzzy
- 8e3c7e2: Add `t:` translation completion and hover support in section and theme block `{% schema %}` tags
- 8e3c7e2: Breaking: add `getDefaultSchema{Locale,Translations}(Factory)?` dependencies
To be used to power `MatchingTranslations` for [Schema translations](https://shopify.dev/docs/storefronts/themes/architecture/locales/schema-locale-files).
To be used to power Schema translations code completion and hover in section and theme block `{% schema %}` JSON blobs.
### Patch Changes
- 8e3c7e2: Theme translation completion now appends parameters
For example, if your translation look like this:
```json
{
"items": {
"one": "{{ count }} item",
"other": "{{ count }} items"
}
}
```
Then we’ll complete like this:
```liquid
{{ 'items' | t: count: count }}
```
- 8e3c7e2: Add `:` as a completion trigger character
- 8e3c7e2: Unify parseJSON usage
- 8e3c7e2: Fix offering of standard translations options when the default translation file is open
- Updated dependencies [8e3c7e2]
- Updated dependencies [8e3c7e2]
- Updated dependencies [8e3c7e2]
- @shopify/theme-check-common@2.3.0
## 1.8.3
### Patch Changes
- @shopify/theme-check-common@2.2.2
## 1.8.2
### Patch Changes
- Updated dependencies [8710bde]
- @shopify/theme-check-common@2.2.1
## 1.8.1
### Patch Changes
- @shopify/theme-check-common@2.2.0
## 1.8.0
### Minor Changes
- 042f1e0: Breaking: internal rename of `schemaValidators` to `jsonValidationSet`
This breaks the browser dependencies public API (for `startServer` and `runChecks`) and will thus require some code changes in those contexts.
The node packages absorb the dependency injection and are not breaking.
- 042f1e0: Add section schema and translation file JSON completion and hover support
JSON object authoring and editing should be better in the following contexts:
- `sections/*.liquid` `{% schema %}` bodies
- `locales/*.json` files
Hovering over any key in any translation file will show the path of the translation key (for easy copy and paste).
Pluralized strings and `_html` support is baked into the feature.
- a9ae65f: Add Language Server and Theme Check support for checkout.liquid objects
### Patch Changes
- Updated dependencies [042f1e0]
- Updated dependencies [a9ae65f]
- @shopify/theme-check-common@2.1.0
## 1.7.7
### Patch Changes
- @shopify/theme-check-common@2.0.4
## 1.7.6
### Patch Changes
- @shopify/theme-check-common@2.0.3
## 1.7.5
### Patch Changes
- 617b766: Add parser support for trailing commas at the end of Liquid tags and filters
- Updated dependencies [0990c47]
- Updated dependencies [617b766]
- @shopify/liquid-html-parser@2.0.3
- @shopify/theme-check-common@2.0.2
## 1.7.4
### Patch Changes
- Updated dependencies [fa02f1b]
- Updated dependencies [8f19b87]
- @shopify/liquid-html-parser@2.0.2
- @shopify/theme-check-common@2.0.1
## 1.7.3
### Patch Changes
- 7459e14: Fix hover for liquid schema and style tags
## 1.7.2
### Patch Changes
- 8451075: `package.json` and README cleanups
- Updated dependencies [8451075]
- Updated dependencies [8451075]
- @shopify/theme-check-common@2.0.0
- @shopify/liquid-html-parser@2.0.1
## 1.7.1
### Patch Changes
- Updated dependencies [636895f]
- Updated dependencies [636895f]
- Updated dependencies [aeb9b3f]
- Updated dependencies [636895f]
- @shopify/theme-check-common@1.22.0
- @shopify/liquid-html-parser@2.0.0
## 1.7.0
### Minor Changes
- 772a1ce: Update `translation-key-exists` check and intelligent code completion to always stay up-to-date with Shopify translation keys
- b05a6a8: Add support for the following Language Server configurations:
- `themeCheck.checkOnOpen`
- `themeCheck.checkOnSave`
- `themeCheck.checkOnChange`
This is mostly for backward compatibility and to not be annoying :)
### Patch Changes
- Updated dependencies [772a1ce]
- Updated dependencies [b05a6a8]
- @shopify/theme-check-common@1.21.0
## 1.6.0
### Minor Changes
- a120393: Add better auto-closing UX for Liquid pairs
- Type `{{` get `{{ | }}` (cursor at `|`)
- Type `{{-` get `{{- | -}}`
- Type `{%` get `{% | %}`
- Type `{%-` get `{%- | -%}`
- Add a `-` on one side, only that side is affected
- See [PR](https://github.com/Shopify/theme-tools/pull/242) for video
- Only for `shopifyLiquid.themeCheckNextDevPreview`
## 1.5.1
### Patch Changes
- 79b0549: Add `app` object support for theme app extensions
- Updated dependencies [79b0549]
- Updated dependencies [ac1deb4]
- @shopify/theme-check-common@1.20.1
## 1.5.0
### Minor Changes
- 78813ea: Add hover and completion support for theme, section and block settings
### Patch Changes
- 78813ea: Fix root finding for theme app extensions without a config file
- Updated dependencies [78813ea]
- @shopify/liquid-html-parser@1.1.1
- @shopify/theme-check-common@1.20.0
## 1.4.6
### Patch Changes
- Updated dependencies [d9f3063]
- @shopify/theme-check-common@1.19.0
## 1.4.5
### Patch Changes
- Updated dependencies [fe54680]
- Updated dependencies [e00c319]
- @shopify/theme-check-common@1.18.2
## 1.4.4
### Patch Changes
- aa33c5f: Fix hover, completion and `UndefinedObject` reporting of `{% increment var %}` and `{% decrement var %}`
- Updated dependencies [0d71145]
- Updated dependencies [aa33c5f]
- Updated dependencies [0d71145]
- @shopify/liquid-html-parser@1.1.0
- @shopify/theme-check-common@1.18.1
## 1.4.3
### Patch Changes
- dacdd9f: Add blocks/ files contextual completion, hover and UndefinedObject support
- Updated dependencies [96d4d5e]
- Updated dependencies [dacdd9f]
- @shopify/theme-check-common@1.18.0
## 1.4.2
### Patch Changes
- dbd5fb0: Fix document links and translation reporting for setups with custom root
## 1.4.1
### Patch Changes
- 54a9075: Revert the detail info in completion items, this causes weird things in VS Code
## 1.4.0
### Minor Changes
- b27d8c7: Fixed type definition of fileSize
### Patch Changes
- 23c84af: Change the completion item label for translation keys to include the quotes and translation filter
- 73a65e0: Add `detail` info to Liquid Completion Items
## 1.3.3
### Patch Changes
- Updated dependencies [2cf7a11]
- Updated dependencies [2cf7a11]
- @shopify/theme-check-common@1.17.0
## 1.3.2
### Patch Changes
- 8d35241: Fix `paginate` object completion, hover and `UndefinedObject` reporting
- 201f30c: Add support for `{% layout none %}`
- c0298e7: Fix `recommendations` completion, hover and `UndefinedObject` reporting
- 6fad756: Fix `predictive_search` completion, hover and `UndefinedObject` reporting
- fc86c91: Fix `form` object completion, hover and `UndefinedObject` reporting
- Updated dependencies [8d35241]
- Updated dependencies [201f30c]
- Updated dependencies [c0298e7]
- Updated dependencies [6fad756]
- Updated dependencies [fc86c91]
- @shopify/theme-check-common@1.16.1
## 1.3.1
### Patch Changes
- f35feb4: Fix available objects list of completion provider
- d71a5e2: Fix completion, hover and UndefinedObject reporting of tablerowloop and forloop variables
- Updated dependencies [279a464]
- Updated dependencies [d71a5e2]
- @shopify/theme-check-common@1.16.0
## 1.3.0
### Minor Changes
- eb630b1: Add Shopify Reference links at the bottom of Liquid Hover and Completion items
### Patch Changes
- Updated dependencies [6c2c00f]
- Updated dependencies [f1a642f]
- @shopify/theme-check-common@1.15.0
## 1.2.1
### Patch Changes
- Updated dependencies [b7514f4]
- @shopify/theme-check-common@1.14.1
## 1.2.0
### Minor Changes
- 380b273: Add `RenderSnippetCompletionProvider`
### Patch Changes
- Updated dependencies [beeb85f]
- Updated dependencies [a05aebb]
- @shopify/theme-check-common@1.14.0
## 1.1.0
### Minor Changes
- 7457f2c: Add `TranslationCompletionProvider`
- 7457f2c: Add `TranslationHoverProvider`
## 1.0.2
## 1.0.1
### Patch Changes
- 14b9ee2: Fixup package.json configs
- Updated dependencies [14b9ee2]
- @shopify/theme-check-common@1.13.1
## 1.0.0
### Major Changes
- 319bcf1: `@shopify/theme-language-server` initial release
### Minor Changes
- 25b79f0: Rename LiquidDrop -> LiquidVariableLookup
- acfac68: Rename `liquid-language-server-*` packages to `theme-language-server-*`
### Patch Changes
- 8cd0b54: Fix hover support for section objects
- f3cda64: Fixup LSP linting non LiquidHTML | JSON files
- 4bb4b8d: Fixup `end*` Liquid tag completion
- Updated dependencies [441a8c5]
- Updated dependencies [c00e929]
- Updated dependencies [972c26c]
- Updated dependencies [25b79f0]
- Updated dependencies [f3cda64]
- Updated dependencies [b1b8366]
- Updated dependencies [02f4731]
- Updated dependencies [c00e929]
- Updated dependencies [c00e929]
- Updated dependencies [12c794a]
- Updated dependencies [b1b8366]
- Updated dependencies [b1b8366]
- Updated dependencies [c00e929]
- @shopify/theme-check-common@1.13.0
- @shopify/liquid-html-parser@1.0.0
# @shopify/liquid-language-server-common
## 1.7.1
### Patch Changes
- e8d569d: Subscribe to open/close notifications
- Updated dependencies
- Updated dependencies [5479a63]
- Updated dependencies [5479a63]
- @shopify/theme-check-common@1.12.1
- @shopify/prettier-plugin-liquid@1.2.3
## 1.7.0
### Minor Changes
- 5ba20bd: Add HtmlAttributeValueCompletionProvider
- 5ba20bd: Implemented `fileSize` dependency to enable asset size checks
- 5ba20bd: Add documentation on hover for intelligent code completion
### Patch Changes
- Updated dependencies [5ba20bd]
- Updated dependencies [5ba20bd]
- Updated dependencies [5ba20bd]
- Updated dependencies [5ba20bd]
- Updated dependencies [5ba20bd]
- @shopify/theme-check-common@1.12.0
## 1.6.0
### Minor Changes
- 8f2270f: Fixed: type of docset entry data rendered
- 6bad30d: Introduce Intelligent Code Completion foundations + Liquid tags completion provider
- 57f28a6: Bump `@shopify/theme-check-common` to v1.9.0
### Patch Changes
- f369925: Add ObjectCompletionProvider
## 1.5.0
### Minor Changes
- 57f28a6: Bump `@shopify/theme-check-common` to v1.9.0
## 1.4.1
### Patch Changes
- 28c8f88: Bump theme-check-common to v1.7.1
## 1.4.0
### Minor Changes
- 0c50ec1: Bump theme-check to v1.6.0
- e0c131a: Breaking: `SourceCode` can take `ast: AST[T] | Error`, where `Error` is a parsing error
- 9e99728: Add `UnusedAssign`
- f99c896: Add `LiquidHTMLSyntaxError`
- e0c131a: Add `JSONSyntaxError`
- ccd5146: Add `DeprecatedLazysizes`
- c715fbe: Add `ImgWidthAndHeight`
- 9e99728: Add `RequiredLayoutThemeObject`
- edd8925: Add `DeprecateBgsizes`
- 08003be: Add support for Document Links
- 17668ba: Add suggestion quickfix support
- b2b0d5f: Add link to diagnostic documentation when available
- 17668ba: Add fix quickfix support
- 4e9d7c6: Add a "autofix" `source.fixAll` code action provider
- 2f86338: Add `themeCheck/runChecks` ExecuteCommandProvider
## 1.3.3
### Patch Changes
- 81ec8c2: Normalize paths and URIs across platforms
## 1.3.2
### Patch Changes
- d16de84: Bump theme-check-common to v1.5.1
## 1.3.1
### Patch Changes
- d63cadb: Bump theme-check-common to v1.4.1
## 1.3.0
### Minor Changes
- 6f5c92c: Start listening for workspace/did{Create,Rename,Delete}Files notifications
- Bump @shopify/theme-check-common to v1.4.0
- Adds new check: `TranslationKeyExists`
## 1.2.2
### Patch Changes
- Use buffer value of default translations before the injected value
## 1.2.1
### Patch Changes
- d4682a6: Reexport theme-check-common interfaces
## 1.2.0
### Minor Changes
- 19efbcf: Bump theme-check to v1.2.0
- Adds MatchingTranslations check
- Adds `{% # theme-check-disable %}`
## 1.1.0
### Minor Changes
- a35a0b1: Add Basic TextDocumentSync + PublishDiagnostic support
## 1.0.0
### Major Changes
- ed0e93e: Initial release