Complete residential site build with Docker Compose & Gitea Actions deployment
This commit is contained in:
+126
@@ -0,0 +1,126 @@
|
||||
# Custom Data for CSS Language Service
|
||||
|
||||
In VS Code, there are two ways of loading custom CSS datasets:
|
||||
|
||||
1. With setting `css.customData`
|
||||
```json
|
||||
"css.customData": [
|
||||
"./foo.css-data.json"
|
||||
]
|
||||
```
|
||||
2. With an extension that contributes `contributes.css.customData`
|
||||
|
||||
Both setting point to a list of JSON files. This document describes the shape of the JSON files.
|
||||
|
||||
You can read more about custom data at: https://github.com/microsoft/vscode-custom-data.
|
||||
|
||||
## Custom Data Format
|
||||
|
||||
### Overview
|
||||
|
||||
The JSON have one required property, `version`, and 4 other top level properties:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"version": 1.1,
|
||||
"properties": [],
|
||||
"atDirectives": [],
|
||||
"pseudoClasses": [],
|
||||
"pseudoElements": []
|
||||
}
|
||||
```
|
||||
|
||||
Version denotes the schema version you are using. The latest schema version is `V1.1`.
|
||||
|
||||
You can find other properties' shapes at [cssLanguageTypes.ts](../src/cssLanguageTypes.ts) or the [JSON Schema](./customData.schema.json).
|
||||
|
||||
You should suffix your custom data file with `.css-data.json`, so VS Code will load the most recent schema for the JSON file to offer auto completion and error checking.
|
||||
|
||||
### Format
|
||||
|
||||
All top-level properties share two basic properties, `name` and `description`. For example:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"version": 1.1,
|
||||
"properties": [
|
||||
{ "name": "foo", "description": "Foo property" }
|
||||
],
|
||||
"atDirectives": [
|
||||
{ "name": "@foo", "description": "Foo at directive" }
|
||||
],
|
||||
"pseudoClasses": [
|
||||
{ "name": ":foo", "description": "Foo pseudo class" }
|
||||
],
|
||||
"pseudoElements": [
|
||||
{ "name": "::foo", "description": "Foo pseudo elements" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
You can also specify 5 additional properties for them:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"properties": [
|
||||
{
|
||||
"name": "foo",
|
||||
"description": "Foo property",
|
||||
"browsers": [
|
||||
"E12",
|
||||
"S10",
|
||||
"C50",
|
||||
"IE10",
|
||||
"O37"
|
||||
],
|
||||
"baseline": {
|
||||
"status": "high",
|
||||
"baseline_low_date": "2015-09-30",
|
||||
"baseline_high_date": "2018-03-30"
|
||||
},
|
||||
"status": "standard",
|
||||
"references": [
|
||||
{
|
||||
"name": "My foo property reference",
|
||||
"url": "https://www.foo.com/property/foo"
|
||||
}
|
||||
],
|
||||
"relevance": 25
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- `browsers`: A list of supported browsers. The format is `browserName + version`. For example: `['E10', 'C30', 'FF20']`. Here are all browser names:
|
||||
```
|
||||
export let browserNames = {
|
||||
E: 'Edge',
|
||||
FF: 'Firefox',
|
||||
FFA: 'Firefox on Android',
|
||||
S: 'Safari',
|
||||
SM: 'Safari on iOS',
|
||||
C: 'Chrome',
|
||||
CA: 'Chrome on Android',
|
||||
IE: 'IE',
|
||||
O: 'Opera'
|
||||
};
|
||||
```
|
||||
The browser compatibility will be rendered at completion and hover. Items that is supported in only one browser are dropped from completion.
|
||||
|
||||
- `baseline`: An object containing [Baseline](https://web-platform-dx.github.io/web-features/) information about the feature's browser compatibility, as defined by the [WebDX Community Group](https://web-platform-dx.github.io/web-features/webdx-cg/).
|
||||
|
||||
- `status`: The Baseline status is either `"false"` (limited availability across major browsers), `"low"` (newly available across major browsers), or `"high"` (widely available across major browsers).
|
||||
|
||||
- `baseline_low_date`: A date in the format `YYYY-MM-DD` representing when the feature became newly available, or undefined if it hasn't yet reached that status.
|
||||
|
||||
- `baseline_high_date`: A date in the format `YYYY-MM-DD` representing when the feature became widely available, or undefined if it hasn't yet reached that status. The widely available date is always 30 months after the newly available date.
|
||||
|
||||
- `status`: The status of the item. The format is:
|
||||
```
|
||||
export type EntryStatus = 'standard' | 'experimental' | 'nonstandard' | 'obsolete';
|
||||
```
|
||||
The status will be rendered at the top of completion and hover. For example, `nonstandard` items are prefixed with the message `🚨️ Property is nonstandard. Avoid using it.`.
|
||||
|
||||
- `references`: A list of references. They will be displayed in Markdown form in completion and hover as `[Ref1 Name](Ref1 URL) | [Ref2 Name](Ref2 URL) | ...`.
|
||||
|
||||
- `relevance`: A number in the range [0, 100] used for sorting. Bigger number means more relevant and will be sorted first. Entries that do not specify a relevance will get 50 as default value.
|
||||
+307
@@ -0,0 +1,307 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "vscode-css-customdata",
|
||||
"version": 1.1,
|
||||
"title": "VS Code CSS Custom Data format",
|
||||
"description": "Format for loading Custom Data in VS Code's CSS support",
|
||||
"type": "object",
|
||||
"required": ["version"],
|
||||
"definitions": {
|
||||
"references": {
|
||||
"type": "object",
|
||||
"required": ["name", "url"],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the reference."
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"description": "The URL of the reference.",
|
||||
"pattern": "https?:\/\/",
|
||||
"patternErrorMessage": "URL should start with http:// or https://"
|
||||
}
|
||||
}
|
||||
},
|
||||
"markupDescription": {
|
||||
"type": "object",
|
||||
"required": ["kind", "value"],
|
||||
"properties": {
|
||||
"kind": {
|
||||
"type": "string",
|
||||
"description": "Whether `description.value` should be rendered as plaintext or markdown",
|
||||
"enum": ["plaintext", "markdown"]
|
||||
},
|
||||
"value": {
|
||||
"type": "string",
|
||||
"description": "Description shown in completion and hover"
|
||||
}
|
||||
}
|
||||
},
|
||||
"descriptor": {
|
||||
"type": "object",
|
||||
"required": ["name"],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the descriptor."
|
||||
},
|
||||
"description": {
|
||||
"description": "Description of at descriptor shown in completion and hover",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{ "$ref": "#/definitions/markupDescription" }
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/properties/properties/items/properties/status"
|
||||
},
|
||||
"browsers": {
|
||||
"$ref": "#/properties/properties/items/properties/browsers"
|
||||
},
|
||||
"references": {
|
||||
"type": "array",
|
||||
"description": "A list of references for the descriptor shown in completion and hover",
|
||||
"items": {
|
||||
"$ref": "#/definitions/references"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
"version": {
|
||||
"const": 1.1,
|
||||
"description": "The custom data version",
|
||||
"type": "number"
|
||||
},
|
||||
"properties": {
|
||||
"description": "Custom CSS properties",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name"],
|
||||
"defaultSnippets": [
|
||||
{
|
||||
"body": {
|
||||
"name": "$1",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Name of property"
|
||||
},
|
||||
"description": {
|
||||
"description": "Description of property shown in completion and hover",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{ "$ref": "#/definitions/markupDescription" }
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "Browser status",
|
||||
"enum": ["standard", "experimental", "nonstandard", "obsolete"]
|
||||
},
|
||||
"browsers": {
|
||||
"type": "array",
|
||||
"description": "Supported browsers",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "(E|FFA|FF|SM|S|CA|C|IE|O)([\\d|\\.]+)?",
|
||||
"patternErrorMessage": "Browser item must follow the format of `${browser}${version}`. `browser` is one of:\n- E: Edge\n- FF: Firefox\n- FM: Firefox Android\n- S: Safari\n- SM: Safari on iOS\n- C: Chrome\n- CM: Chrome on Android\n- IE: Internet Explorer\n- O: Opera"
|
||||
}
|
||||
},
|
||||
"baseline": {
|
||||
"type": "object",
|
||||
"description": "Baseline information for the feature",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "Baseline status",
|
||||
"enum": ["high", "low", "false"]
|
||||
},
|
||||
"baseline_low_date": {
|
||||
"type": "string",
|
||||
"description": "Date when the feature became newly supported in all major browsers",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
||||
"patternErrorMessage": "Date must be in the format of `YYYY-MM-DD`"
|
||||
},
|
||||
"baseline_high_date": {
|
||||
"type": "string",
|
||||
"description": "Date when the feature became widely supported in all major browsers",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
||||
"patternErrorMessage": "Date must be in the format of `YYYY-MM-DD`"
|
||||
}
|
||||
}
|
||||
},
|
||||
"references": {
|
||||
"type": "array",
|
||||
"description": "A list of references for the property shown in completion and hover",
|
||||
"items": {
|
||||
"$ref": "#/definitions/references"
|
||||
}
|
||||
},
|
||||
"relevance": {
|
||||
"type": "number",
|
||||
"description": "A number in the range [0, 100] used for sorting. Bigger number means more relevant and will be sorted first. Entries that do not specify a relevance will get 50 as default value.",
|
||||
"minimum": 0,
|
||||
"exclusiveMaximum": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"atDirectives": {
|
||||
"description": "Custom CSS at directives",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name"],
|
||||
"defaultSnippets": [
|
||||
{
|
||||
"body": {
|
||||
"name": "@$1",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Name of at directive",
|
||||
"pattern": "^@.+",
|
||||
"patternErrorMessage": "Pseudo class must start with `@`"
|
||||
},
|
||||
"description": {
|
||||
"description": "Description of at directive shown in completion and hover",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{ "$ref": "#/definitions/markupDescription" }
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/properties/properties/items/properties/status"
|
||||
},
|
||||
"browsers": {
|
||||
"$ref": "#/properties/properties/items/properties/browsers"
|
||||
},
|
||||
"references": {
|
||||
"type": "array",
|
||||
"description": "A list of references for the at-directive shown in completion and hover",
|
||||
"items": {
|
||||
"$ref": "#/definitions/references"
|
||||
}
|
||||
},
|
||||
"descriptors": {
|
||||
"type": "array",
|
||||
"description": "A list of descriptors for the at-directive, for example prefers-reduced-motion for @media",
|
||||
"items": {
|
||||
"$ref": "#/definitions/descriptor"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"pseudoClasses": {
|
||||
"description": "Custom CSS pseudo classes",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name"],
|
||||
"defaultSnippets": [
|
||||
{
|
||||
"body": {
|
||||
"name": ":$1",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Name of pseudo class",
|
||||
"pattern": "^:.+",
|
||||
"patternErrorMessage": "Pseudo class must start with `:`"
|
||||
},
|
||||
"description": {
|
||||
"description": "Description of pseudo class shown in completion and hover",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{ "$ref": "#/definitions/markupDescription" }
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/properties/properties/items/properties/status"
|
||||
},
|
||||
"browsers": {
|
||||
"$ref": "#/properties/properties/items/properties/browsers"
|
||||
},
|
||||
"references": {
|
||||
"type": "array",
|
||||
"description": "A list of references for the pseudo-class shown in completion and hover",
|
||||
"items": {
|
||||
"$ref": "#/definitions/references"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"pseudoElements": {
|
||||
"description": "Custom CSS pseudo elements",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name"],
|
||||
"defaultSnippets": [
|
||||
{
|
||||
"body": {
|
||||
"name": "::$1",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Name of pseudo element",
|
||||
"pattern": "^::.+",
|
||||
"patternErrorMessage": "Pseudo class must start with `::`"
|
||||
},
|
||||
"description": {
|
||||
"description": "Description of pseudo element shown in completion and hover",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{ "$ref": "#/definitions/markupDescription" }
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"$ref": "#/properties/properties/items/properties/status"
|
||||
},
|
||||
"browsers": {
|
||||
"$ref": "#/properties/properties/items/properties/browsers"
|
||||
},
|
||||
"references": {
|
||||
"type": "array",
|
||||
"description": "A list of references for the pseudo-element shown in completion and hover",
|
||||
"items": {
|
||||
"$ref": "#/definitions/references"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user