@enjoys/context-engine 1.0.0 → 1.0.2

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.
Files changed (112) hide show
  1. package/data/commands/adb.json +322 -0
  2. package/data/commands/alembic.json +301 -0
  3. package/data/commands/artisan.json +277 -0
  4. package/data/commands/atlas.json +426 -0
  5. package/data/commands/auth0.json +648 -0
  6. package/data/commands/bat.json +84 -0
  7. package/data/commands/btop.json +59 -0
  8. package/data/commands/bundle.json +321 -0
  9. package/data/commands/composer.json +507 -0
  10. package/data/commands/dart.json +216 -0
  11. package/data/commands/dbmate.json +257 -0
  12. package/data/commands/docker-compose.json +384 -0
  13. package/data/commands/drizzle-kit.json +217 -0
  14. package/data/commands/expo.json +65 -0
  15. package/data/commands/fastlane.json +243 -0
  16. package/data/commands/fd.json +86 -0
  17. package/data/commands/flutter.json +298 -0
  18. package/data/commands/flyway.json +261 -0
  19. package/data/commands/fzf.json +103 -0
  20. package/data/commands/gem.json +267 -0
  21. package/data/commands/htop.json +56 -0
  22. package/data/commands/jq.json +100 -0
  23. package/data/commands/k9s.json +62 -0
  24. package/data/commands/linux.json +3007 -0
  25. package/data/commands/liquibase.json +399 -0
  26. package/data/commands/manifest.json +619 -0
  27. package/data/commands/minikube.json +60 -0
  28. package/data/commands/ng.json +64 -0
  29. package/data/commands/nuxt.json +60 -0
  30. package/data/commands/nvim.json +91 -0
  31. package/data/commands/php.json +157 -0
  32. package/data/commands/pm2.json +259 -0
  33. package/data/commands/pod.json +175 -0
  34. package/data/commands/prisma.json +257 -0
  35. package/data/commands/rails.json +372 -0
  36. package/data/commands/rake.json +360 -0
  37. package/data/commands/react-native.json +57 -0
  38. package/data/commands/rg.json +103 -0
  39. package/data/commands/rspec.json +257 -0
  40. package/data/commands/ruby.json +108 -0
  41. package/data/commands/screen.json +101 -0
  42. package/data/commands/sequelize.json +342 -0
  43. package/data/commands/snyk.json +442 -0
  44. package/data/commands/sonar-scanner.json +219 -0
  45. package/data/commands/stripe.json +314 -0
  46. package/data/commands/symfony.json +449 -0
  47. package/data/commands/tmux.json +197 -0
  48. package/data/commands/top.json +61 -0
  49. package/data/commands/trivy.json +367 -0
  50. package/data/commands/twilio.json +382 -0
  51. package/data/commands/typeorm.json +262 -0
  52. package/data/commands/vim.json +85 -0
  53. package/data/commands/vue.json +60 -0
  54. package/data/commands/wp.json +857 -0
  55. package/data/commands/xcodebuild.json +141 -0
  56. package/data/commands/yq.json +57 -0
  57. package/data/completion/bash.json +1184 -0
  58. package/data/completion/c.json +1067 -0
  59. package/data/completion/cpp.json +824 -0
  60. package/data/completion/csharp.json +860 -0
  61. package/data/completion/dockerfile.json +536 -0
  62. package/data/completion/go.json +1346 -0
  63. package/data/completion/html.json +806 -0
  64. package/data/completion/java.json +1112 -0
  65. package/data/completion/javascript.json +914 -0
  66. package/data/completion/lua.json +968 -0
  67. package/data/completion/php.json +1535 -0
  68. package/data/completion/python.json +1427 -0
  69. package/data/completion/ruby.json +1531 -0
  70. package/data/completion/rust.json +698 -0
  71. package/data/completion/sql.json +887 -0
  72. package/data/completion/toml.json +428 -0
  73. package/data/completion/typescript.json +338 -0
  74. package/data/completion/yaml.json +563 -0
  75. package/data/defination/bash.json +565 -0
  76. package/data/defination/c.json +865 -0
  77. package/data/defination/cpp.json +348 -0
  78. package/data/defination/csharp.json +144 -0
  79. package/data/defination/dockerfile.json +113 -0
  80. package/data/defination/go.json +561 -0
  81. package/data/defination/html.json +559 -0
  82. package/data/defination/java.json +184 -0
  83. package/data/defination/javascript.json +265 -0
  84. package/data/defination/lua.json +181 -0
  85. package/data/defination/php.json +726 -0
  86. package/data/defination/python.json +717 -0
  87. package/data/defination/ruby.json +670 -0
  88. package/data/defination/rust.json +207 -0
  89. package/data/defination/sql.json +473 -0
  90. package/data/defination/toml.json +251 -0
  91. package/data/defination/typescript.json +29 -0
  92. package/data/defination/yaml.json +197 -0
  93. package/data/hover/bash.json +245 -0
  94. package/data/hover/c.json +265 -0
  95. package/data/hover/cpp.json +210 -0
  96. package/data/hover/csharp.json +290 -0
  97. package/data/hover/dockerfile.json +145 -0
  98. package/data/hover/go.json +580 -0
  99. package/data/hover/html.json +250 -0
  100. package/data/hover/java.json +395 -0
  101. package/data/hover/javascript.json +330 -0
  102. package/data/hover/lua.json +265 -0
  103. package/data/hover/php.json +300 -0
  104. package/data/hover/python.json +380 -0
  105. package/data/hover/ruby.json +265 -0
  106. package/data/hover/rust.json +275 -0
  107. package/data/hover/sql.json +230 -0
  108. package/data/hover/toml.json +145 -0
  109. package/data/hover/typescript.json +120 -0
  110. package/data/hover/yaml.json +165 -0
  111. package/data/manifest.json +242 -0
  112. package/package.json +1 -1
@@ -0,0 +1,145 @@
1
+ {
2
+ "language": "toml",
3
+ "hovers": {
4
+ "table": {
5
+ "contents": [
6
+ { "value": "```toml\n[table_name]\nkey1 = \"value1\"\nkey2 = 42\nkey3 = true\n```\nTables (also known as hash tables or dictionaries) are collections of key/value pairs. They are defined by headers in square brackets on a line by themselves. All key/value pairs beneath a header belong to that table until the next header or end of file." }
7
+ ]
8
+ },
9
+ "array_of_tables": {
10
+ "contents": [
11
+ { "value": "```toml\n[[products]]\nname = \"Hammer\"\nsku = 738594937\n\n[[products]]\nname = \"Nail\"\nsku = 284758393\n```\nAn array of tables is defined using double brackets `[[name]]`. Each header with the same name creates a new element in the array. Equivalent to an array of objects in JSON." }
12
+ ]
13
+ },
14
+ "key_value": {
15
+ "contents": [
16
+ { "value": "```toml\nkey = \"value\"\nbare_key = 42\n\"quoted key\" = true\n```\nKey/value pairs are the primary building block of a TOML document. Keys are on the left of the equals sign, values on the right. Keys may be bare (alphanumeric, dash, underscore) or quoted." }
17
+ ]
18
+ },
19
+ "dotted_key": {
20
+ "contents": [
21
+ { "value": "```toml\nfruit.apple.color = \"red\"\nfruit.apple.taste.sweet = true\n```\nDotted keys allow grouping properties using dots as separators. Each dot-separated part is a bare or quoted key. `fruit.apple.color` is equivalent to defining `[fruit.apple]` and setting `color`." }
22
+ ]
23
+ },
24
+ "inline_table": {
25
+ "contents": [
26
+ { "value": "```toml\npoint = { x = 1, y = 2 }\nanimal = { type.name = \"pug\" }\n```\nInline tables provide a compact syntax for expressing tables on a single line. They are enclosed in curly braces with comma-separated key/value pairs. Inline tables are intended to be self-contained and cannot be extended later." }
27
+ ]
28
+ },
29
+ "comment": {
30
+ "contents": [
31
+ { "value": "```toml\n# This is a full-line comment\nkey = \"value\" # This is an end-of-line comment\n```\nComments start with `#` and continue to the end of the line. They can appear on their own line or after a key/value pair. Comments cannot appear inside strings." }
32
+ ]
33
+ },
34
+ "string": {
35
+ "contents": [
36
+ { "value": "```toml\n# Basic string (allows escapes)\nbasic = \"Hello\\nWorld\"\n\n# Literal string (no escapes)\nliteral = 'C:\\Users\\path'\n\n# Multi-line basic\nmulti = \"\"\"\nRoses are red\nViolets are blue\"\"\"\n\n# Multi-line literal\nmulti_lit = '''\nNo escapes \\here\n'''\n```\nTOML has four types of strings: basic (\"), literal ('), multi-line basic (\"\"\"), and multi-line literal ('''). Basic strings support escape sequences; literal strings do not." }
37
+ ]
38
+ },
39
+ "integer": {
40
+ "contents": [
41
+ { "value": "```toml\ndecimal = 42\npositive = +99\nnegative = -17\nhex = 0xDEADBEEF\noctal = 0o755\nbinary = 0b11010110\nwith_sep = 1_000_000\n```\nIntegers are whole numbers. They support decimal, hexadecimal (0x), octal (0o), and binary (0b) representations. Underscores between digits are allowed for readability. 64-bit (signed long) range expected." }
42
+ ]
43
+ },
44
+ "float": {
45
+ "contents": [
46
+ { "value": "```toml\nfractional = 3.14\nexponent = 5e+22\nboth = 6.626e-34\nwith_sep = 224_617.445_991\ninfinity = inf\nnot_a_number = nan\n```\nFloats are IEEE 754 64-bit double-precision values. They can have a fractional part, exponent part (e/E), or both. Special values `inf`, `+inf`, `-inf`, `nan` are supported." }
47
+ ]
48
+ },
49
+ "boolean": {
50
+ "contents": [
51
+ { "value": "```toml\nenabled = true\ndebug = false\n```\nBooleans are always lowercase: `true` or `false`. No other casing is permitted." }
52
+ ]
53
+ },
54
+ "datetime": {
55
+ "contents": [
56
+ { "value": "```toml\n# Offset Date-Time (full RFC 3339)\nodt1 = 1979-05-27T07:32:00Z\nodt2 = 1979-05-27T00:32:00-07:00\n\n# Local Date-Time (no timezone)\nldt = 1979-05-27T07:32:00\n\n# Local Date\nld = 1979-05-27\n\n# Local Time\nlt = 07:32:00\n```\nTOML supports four date/time types: offset date-time (full instant), local date-time (no timezone), local date, and local time. All follow RFC 3339 formatting." }
57
+ ]
58
+ },
59
+ "array": {
60
+ "contents": [
61
+ { "value": "```toml\n# Inline array\ncolors = [\"red\", \"yellow\", \"green\"]\n\n# Multi-line array\naddresses = [\n \"192.168.1.1\",\n \"10.0.0.1\",\n]\n\n# Mixed types\nmixed = [1, \"two\", 3.0, true]\n\n# Nested arrays\nnested = [[1, 2], [3, 4]]\n```\nArrays are square brackets with comma-separated values. They can span multiple lines. A trailing comma is allowed. Arrays may contain mixed types and can be nested." }
62
+ ]
63
+ },
64
+ "package": {
65
+ "contents": [
66
+ { "value": "```toml\n[package]\nname = \"my-crate\"\nversion = \"0.1.0\"\nedition = \"2021\"\ndescription = \"A useful library\"\nlicense = \"MIT OR Apache-2.0\"\nauthors = [\"Jane Doe <jane@example.com>\"]\nrepository = \"https://github.com/user/repo\"\nrust-version = \"1.70\"\n```\n**Cargo.toml** — The `[package]` section defines Rust crate metadata including name, version, Rust edition, license, authors, and links." }
67
+ ]
68
+ },
69
+ "dependencies": {
70
+ "contents": [
71
+ { "value": "```toml\n[dependencies]\nserde = \"1.0\"\nserde_json = \"1.0\"\ntokio = { version = \"1\", features = [\"full\"] }\nmy-lib = { path = \"../my-lib\" }\nfork = { git = \"https://github.com/user/fork\", branch = \"main\" }\noptional-dep = { version = \"0.5\", optional = true }\n```\n**Cargo.toml** — The `[dependencies]` section lists crate dependencies. Values can be simple version strings or tables with version, features, path, git, branch, optional, and default-features." }
72
+ ]
73
+ },
74
+ "features": {
75
+ "contents": [
76
+ { "value": "```toml\n[features]\ndefault = [\"std\"]\nstd = []\nfull = [\"feature-a\", \"feature-b\", \"dep:optional-dep\"]\nfeature-a = []\nfeature-b = [\"feature-a\"]\n```\n**Cargo.toml** — The `[features]` section defines conditional compilation features. The `default` key lists features enabled by default. Use `dep:name` syntax to enable optional dependencies." }
77
+ ]
78
+ },
79
+ "workspace": {
80
+ "contents": [
81
+ { "value": "```toml\n[workspace]\nmembers = [\n \"crates/core\",\n \"crates/cli\",\n \"crates/utils\",\n]\nresolver = \"2\"\n\n[workspace.dependencies]\nserde = { version = \"1.0\", features = [\"derive\"] }\n```\n**Cargo.toml** — The `[workspace]` section manages multiple related Rust packages. They share a common `Cargo.lock`, output directory, and can share dependency versions via `[workspace.dependencies]`." }
82
+ ]
83
+ },
84
+ "profile": {
85
+ "contents": [
86
+ { "value": "```toml\n[profile.release]\nopt-level = 3\nlto = true\ncodegen-units = 1\nstrip = true\npanic = \"abort\"\n\n[profile.dev]\nopt-level = 0\ndebug = true\n```\n**Cargo.toml** — Profile sections customize compiler settings per build profile. `[profile.release]` is for optimized builds; `[profile.dev]` is the default for development. Key settings: opt-level, lto, debug, strip, panic." }
87
+ ]
88
+ },
89
+ "build-system": {
90
+ "contents": [
91
+ { "value": "```toml\n[build-system]\nrequires = [\"setuptools>=68.0\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n```\n**pyproject.toml** — The `[build-system]` table (PEP 517/518) declares what tools are needed to build the Python project. `requires` lists build dependencies and `build-backend` specifies the build backend entry point." }
92
+ ]
93
+ },
94
+ "project": {
95
+ "contents": [
96
+ { "value": "```toml\n[project]\nname = \"my-project\"\nversion = \"1.0.0\"\ndescription = \"A useful Python package\"\nrequires-python = \">=3.9\"\nlicense = { text = \"MIT\" }\nauthors = [\n { name = \"Jane Doe\", email = \"jane@example.com\" },\n]\ndependencies = [\n \"requests>=2.28\",\n \"click>=8.0\",\n]\n\n[project.urls]\nHomepage = \"https://example.com\"\nRepository = \"https://github.com/user/repo\"\n```\n**pyproject.toml** — The `[project]` table (PEP 621) provides standardized Python project metadata. It replaces setup.py/setup.cfg with a declarative format." }
97
+ ]
98
+ },
99
+ "tool.pytest": {
100
+ "contents": [
101
+ { "value": "```toml\n[tool.pytest.ini_options]\ntestpaths = [\"tests\"]\npython_files = [\"test_*.py\"]\npython_classes = [\"Test*\"]\naddopts = \"-v --tb=short --strict-markers\"\nmarkers = [\n \"slow: marks tests as slow\",\n \"integration: integration tests\",\n]\n```\n**pyproject.toml** — Pytest configuration via `[tool.pytest.ini_options]`. Replaces pytest.ini with testpaths, addopts, markers, filterwarnings, and more." }
102
+ ]
103
+ },
104
+ "tool.black": {
105
+ "contents": [
106
+ { "value": "```toml\n[tool.black]\nline-length = 88\ntarget-version = [\"py311\"]\ninclude = '\\.pyi?$'\nextend-exclude = '''/(\\n dist|build\\n)/'''\n```\n**pyproject.toml** — Black formatter configuration. Key options: line-length (default 88), target-version, include/exclude patterns, and skip-string-normalization." }
107
+ ]
108
+ },
109
+ "tool.ruff": {
110
+ "contents": [
111
+ { "value": "```toml\n[tool.ruff]\nline-length = 88\ntarget-version = \"py311\"\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"I\", \"N\", \"W\"]\nignore = [\"E501\"]\nfixable = [\"ALL\"]\n\n[tool.ruff.format]\nquote-style = \"double\"\n```\n**pyproject.toml** — Ruff linter/formatter configuration. A fast Python linter supporting hundreds of rules from flake8, isort, pyupgrade, and more." }
112
+ ]
113
+ },
114
+ "tool.mypy": {
115
+ "contents": [
116
+ { "value": "```toml\n[tool.mypy]\npython_version = \"3.11\"\nstrict = true\nwarn_return_any = true\ndisallow_untyped_defs = true\n\n[[tool.mypy.overrides]]\nmodule = \"tests.*\"\ndisallow_untyped_defs = false\n```\n**pyproject.toml** — Mypy type checker configuration. Supports strict mode, per-module overrides, and fine-grained error control." }
117
+ ]
118
+ },
119
+ "tool.poetry": {
120
+ "contents": [
121
+ { "value": "```toml\n[tool.poetry]\nname = \"my-project\"\nversion = \"0.1.0\"\ndescription = \"A Python project\"\nauthors = [\"Jane Doe <jane@example.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\npython = \"^3.9\"\nrequests = \"^2.28\"\n\n[tool.poetry.group.dev.dependencies]\npytest = \"^7.0\"\n```\n**pyproject.toml** — Poetry project manager configuration. Manages dependencies, virtual environments, and publishing. Uses semantic versioning with caret (^) and tilde (~) constraints." }
122
+ ]
123
+ },
124
+ "server": {
125
+ "contents": [
126
+ { "value": "```toml\n[server]\nhost = \"0.0.0.0\"\nport = 8080\nssl = true\ncert_file = \"certs/server.crt\"\nkey_file = \"certs/server.key\"\nworkers = 4\nread_timeout = 30\nwrite_timeout = 30\n```\nCommon server configuration pattern. Defines network binding, TLS/SSL settings, worker counts, and timeout values." }
127
+ ]
128
+ },
129
+ "database": {
130
+ "contents": [
131
+ { "value": "```toml\n[database]\nurl = \"postgres://user:pass@localhost:5432/mydb\"\npool_size = 10\nmax_idle = 5\ntimeout = 30\nssl_mode = \"require\"\n```\nCommon database configuration pattern. Defines connection URL (or DSN), connection pool settings, timeouts, and SSL mode." }
132
+ ]
133
+ },
134
+ "logging": {
135
+ "contents": [
136
+ { "value": "```toml\n[logging]\nlevel = \"info\"\nfile = \"logs/app.log\"\nformat = \"json\"\nmax_size = \"100MB\"\nmax_backups = 5\ncompress = true\n```\nCommon logging configuration pattern. Defines log level, output destination, format, and rotation policies." }
137
+ ]
138
+ },
139
+ "auth": {
140
+ "contents": [
141
+ { "value": "```toml\n[auth]\nsecret = \"your-jwt-secret-key\"\ntoken_expiry = 3600\nrefresh_expiry = 86400\nissuer = \"my-app\"\nalgorithm = \"HS256\"\n```\nCommon authentication configuration pattern. Defines JWT secret, token/refresh expiry durations, issuer, and signing algorithm." }
142
+ ]
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "language": "typescript",
3
+ "hovers": {
4
+ "interface": {
5
+ "contents": [
6
+ { "value": "```typescript\ninterface Name { ... }\n```\nDeclares a TypeScript interface — a structural type contract for objects. Interfaces can be extended, merged, and implemented by classes.\n\n```typescript\ninterface User {\n id: number;\n name: string;\n email?: string; // optional\n readonly createdAt: Date; // immutable\n}\n```" }
7
+ ]
8
+ },
9
+ "type": {
10
+ "contents": [
11
+ { "value": "```typescript\ntype Name = Type\n```\nCreates a type alias. Unlike interfaces, type aliases can represent unions, intersections, tuples, mapped types, and primitives.\n\n```typescript\ntype ID = string | number;\ntype Point = { x: number; y: number };\ntype Result<T, E = Error> = { ok: true; data: T } | { ok: false; error: E };\n```" }
12
+ ]
13
+ },
14
+ "enum": {
15
+ "contents": [
16
+ { "value": "```typescript\nenum Name { ... }\n```\nDefines a set of named constants. TypeScript supports numeric and string enums.\n\n```typescript\nenum Status { Active = 'ACTIVE', Inactive = 'INACTIVE' }\nenum Direction { Up, Down, Left, Right } // 0, 1, 2, 3\n```\n\n**Tip:** Use `const enum` for enums that should be fully erased at compile time." }
17
+ ]
18
+ },
19
+ "Record": {
20
+ "contents": [
21
+ { "value": "```typescript\ntype Record<K extends keyof any, T> = { [P in K]: T }\n```\nConstructs an object type whose property keys are `K` and values are `T`.\n\nUseful for dictionaries and lookup objects." }
22
+ ]
23
+ },
24
+ "Partial": {
25
+ "contents": [
26
+ { "value": "```typescript\ntype Partial<T> = { [P in keyof T]?: T[P] }\n```\nMakes all properties in `T` optional. Commonly used for update/patch operations." }
27
+ ]
28
+ },
29
+ "Required": {
30
+ "contents": [
31
+ { "value": "```typescript\ntype Required<T> = { [P in keyof T]-?: T[P] }\n```\nMakes all properties in `T` required (removes optional `?` modifier)." }
32
+ ]
33
+ },
34
+ "Readonly": {
35
+ "contents": [
36
+ { "value": "```typescript\ntype Readonly<T> = { readonly [P in keyof T]: T[P] }\n```\nMakes all properties in `T` readonly — assignments will cause a compile-time error." }
37
+ ]
38
+ },
39
+ "Pick": {
40
+ "contents": [
41
+ { "value": "```typescript\ntype Pick<T, K extends keyof T> = { [P in K]: T[P] }\n```\nConstructs a type by picking the set of properties `K` from `T`." }
42
+ ]
43
+ },
44
+ "Omit": {
45
+ "contents": [
46
+ { "value": "```typescript\ntype Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>\n```\nConstructs a type by removing the set of properties `K` from `T`." }
47
+ ]
48
+ },
49
+ "Exclude": {
50
+ "contents": [
51
+ { "value": "```typescript\ntype Exclude<T, U> = T extends U ? never : T\n```\nExcludes from `T` those types that are assignable to `U`." }
52
+ ]
53
+ },
54
+ "Extract": {
55
+ "contents": [
56
+ { "value": "```typescript\ntype Extract<T, U> = T extends U ? T : never\n```\nExtracts from `T` those types that are assignable to `U`." }
57
+ ]
58
+ },
59
+ "NonNullable": {
60
+ "contents": [
61
+ { "value": "```typescript\ntype NonNullable<T> = T & {}\n```\nExcludes `null` and `undefined` from `T`." }
62
+ ]
63
+ },
64
+ "ReturnType": {
65
+ "contents": [
66
+ { "value": "```typescript\ntype ReturnType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any\n```\nObtains the return type of a function type `T`." }
67
+ ]
68
+ },
69
+ "Parameters": {
70
+ "contents": [
71
+ { "value": "```typescript\ntype Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never\n```\nObtains the parameter types of a function type `T` as a tuple." }
72
+ ]
73
+ },
74
+ "Awaited": {
75
+ "contents": [
76
+ { "value": "```typescript\ntype Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T\n```\nRecursively unwraps the `Awaited` type of `Promise`-like types. Added in TypeScript 4.5." }
77
+ ]
78
+ },
79
+ "keyof": {
80
+ "contents": [
81
+ { "value": "```typescript\nkeyof Type\n```\nThe `keyof` operator takes an object type and produces a string or numeric literal union of its keys.\n\n```typescript\ntype Point = { x: number; y: number };\ntype P = keyof Point; // 'x' | 'y'\n```" }
82
+ ]
83
+ },
84
+ "as const": {
85
+ "contents": [
86
+ { "value": "```typescript\nexpression as const\n```\nConst assertion — infers the narrowest/most specific type possible. Array literals become `readonly` tuples, object literals get `readonly` properties, and string/number literals are not widened.\n\n```typescript\nconst arr = [1, 2, 3] as const; // readonly [1, 2, 3]\n```" }
87
+ ]
88
+ },
89
+ "satisfies": {
90
+ "contents": [
91
+ { "value": "```typescript\nexpression satisfies Type\n```\n*TypeScript 4.9+* — Validates that an expression's type matches `Type` without changing the inferred type. Useful for catching errors while preserving narrow types." }
92
+ ]
93
+ },
94
+ "infer": {
95
+ "contents": [
96
+ { "value": "```typescript\nT extends SomeType<infer U> ? U : Default\n```\nThe `infer` keyword is used within conditional types to declaratively introduce a new generic type variable to be inferred by TypeScript." }
97
+ ]
98
+ },
99
+ "never": {
100
+ "contents": [
101
+ { "value": "```typescript\ntype never\n```\nThe `never` type represents the type of values that never occur. Used for:\n- Functions that never return (throw or infinite loop)\n- Exhaustive checks in switch/if statements\n- The empty union type (impossible values)" }
102
+ ]
103
+ },
104
+ "unknown": {
105
+ "contents": [
106
+ { "value": "```typescript\ntype unknown\n```\nThe type-safe counterpart of `any`. A value of type `unknown` cannot be used until it is narrowed via type guards, assertions, or control flow analysis.\n\nPrefer `unknown` over `any` for values of uncertain type." }
107
+ ]
108
+ },
109
+ "readonly": {
110
+ "contents": [
111
+ { "value": "```typescript\nreadonly modifier\n```\nPrevents reassignment of a property or variable. For arrays, use `readonly T[]` or `ReadonlyArray<T>` to prevent mutation.\n\n```typescript\ninterface Config {\n readonly host: string;\n readonly port: number;\n}\n```" }
112
+ ]
113
+ },
114
+ "NoInfer": {
115
+ "contents": [
116
+ { "value": "```typescript\ntype NoInfer<T> = intrinsic\n```\n*TypeScript 5.4+* — Blocks inference from flowing to this type position. Forces TypeScript to infer `T` from other positions." }
117
+ ]
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,165 @@
1
+ {
2
+ "language": "yaml",
3
+ "hovers": {
4
+ "mapping": {
5
+ "contents": [
6
+ { "value": "```yaml\nkey: value\nnested:\n child: value\n```\nA mapping (dictionary/hash) of key-value pairs. Keys must be unique within a mapping. Mappings are the fundamental structure in YAML for associating names with values." }
7
+ ]
8
+ },
9
+ "sequence": {
10
+ "contents": [
11
+ { "value": "```yaml\nitems:\n - item1\n - item2\n - item3\n```\nA sequence (array/list) of ordered values. Each item starts with a dash `-` followed by a space. Sequences preserve insertion order." }
12
+ ]
13
+ },
14
+ "scalar": {
15
+ "contents": [
16
+ { "value": "```yaml\nplain: hello world\nsingle_quoted: 'no escapes'\ndouble_quoted: \"supports \\n escapes\"\n```\nA scalar is a single value — a string, number, boolean, or null. Scalars can be plain (unquoted), single-quoted (literal), or double-quoted (with escape sequences)." }
17
+ ]
18
+ },
19
+ "string": {
20
+ "contents": [
21
+ { "value": "```yaml\nplain: hello\nquoted: \"hello\\nworld\"\nliteral: 'hello'\n```\n**String** — A sequence of Unicode characters. Plain strings need no quotes. Double-quoted strings support escape sequences (`\\n`, `\\t`, `\\\\`). Single-quoted strings are literal." }
22
+ ]
23
+ },
24
+ "integer": {
25
+ "contents": [
26
+ { "value": "```yaml\ndecimal: 42\noctal: 0o52\nhex: 0x2A\n```\n**Integer** — Whole number value. YAML supports decimal, octal (0o prefix), and hexadecimal (0x prefix) notations." }
27
+ ]
28
+ },
29
+ "float": {
30
+ "contents": [
31
+ { "value": "```yaml\nfixed: 3.14\nexponential: 3.14e+0\ninfinity: .inf\nnot_a_number: .nan\n```\n**Float** — Floating-point number. Supports fixed-point, exponential notation, positive/negative infinity (`.inf`/`-.inf`), and not-a-number (`.nan`)." }
32
+ ]
33
+ },
34
+ "boolean": {
35
+ "contents": [
36
+ { "value": "```yaml\nenabled: true\ndisabled: false\n```\n**Boolean** — Represents true or false. In YAML 1.2 core schema, only `true` and `false` are boolean. YAML 1.1 also recognized `yes`/`no`, `on`/`off`." }
37
+ ]
38
+ },
39
+ "null": {
40
+ "contents": [
41
+ { "value": "```yaml\nexplicit: null\ntilde: ~\nempty:\n```\n**Null** — Represents the absence of a value. Can be expressed as `null`, `~` (tilde), or by leaving the value empty after the colon." }
42
+ ]
43
+ },
44
+ "timestamp": {
45
+ "contents": [
46
+ { "value": "```yaml\ndate: 2026-01-01\ndatetime: 2026-01-01T12:00:00Z\nwith_tz: 2026-01-01T12:00:00+05:30\n```\n**Timestamp** — Date and/or time in ISO 8601 format. Supports date-only, full datetime, and timezone offsets." }
47
+ ]
48
+ },
49
+ "binary": {
50
+ "contents": [
51
+ { "value": "```yaml\nicon: !!binary |\n R0lGODlhAQABAIAAAAAAAP///\n```\n**Binary** — Base64-encoded binary data using the `!!binary` tag. Used for embedding binary content like images or files in YAML." }
52
+ ]
53
+ },
54
+ "anchor": {
55
+ "contents": [
56
+ { "value": "```yaml\ndefaults: &defaults\n adapter: postgres\n host: localhost\n\nproduction:\n <<: *defaults\n database: prod_db\n```\n**Anchor (`&`)** — Marks a node for later reuse. Define with `&name` and reference with `*name`. Avoids data duplication across the document." }
57
+ ]
58
+ },
59
+ "alias": {
60
+ "contents": [
61
+ { "value": "```yaml\nbase: &base\n key: value\n\nderived: *base\n```\n**Alias (`*`)** — References a previously anchored node. The alias resolves to the exact same value. Use with `&name` anchors for DRY configurations." }
62
+ ]
63
+ },
64
+ "merge_key": {
65
+ "contents": [
66
+ { "value": "```yaml\ndefaults: &defaults\n timeout: 30\n retries: 3\n\nservice:\n <<: *defaults\n name: my-service\n```\n**Merge Key (`<<`)** — Merges key-value pairs from an anchored mapping into the current mapping. Local keys override merged ones. Supports merging multiple anchors: `<<: [*a, *b]`." }
67
+ ]
68
+ },
69
+ "document_start": {
70
+ "contents": [
71
+ { "value": "```yaml\n---\nfirst: document\n---\nsecond: document\n```\n**Document Start (`---`)** — Marks the beginning of a new YAML document. Required when a stream contains multiple documents. Optional for single-document files." }
72
+ ]
73
+ },
74
+ "document_end": {
75
+ "contents": [
76
+ { "value": "```yaml\nkey: value\n...\n```\n**Document End (`...`)** — Marks the end of a YAML document without starting a new one. Signals that no more content follows." }
77
+ ]
78
+ },
79
+ "comment": {
80
+ "contents": [
81
+ { "value": "```yaml\n# This is a comment\nkey: value # Inline comment\n```\n**Comment (`#`)** — Comments begin with `#` and continue to the end of the line. They are ignored by YAML parsers. Comments cannot appear inside scalars." }
82
+ ]
83
+ },
84
+ "literal_block_scalar": {
85
+ "contents": [
86
+ { "value": "```yaml\nscript: |\n #!/bin/bash\n echo \"hello\"\n echo \"world\"\n```\n**Literal Block Scalar (`|`)** — Preserves newlines exactly as written. Each line break in the block becomes a literal `\\n`. Ideal for scripts, code, or pre-formatted text." }
87
+ ]
88
+ },
89
+ "folded_block_scalar": {
90
+ "contents": [
91
+ { "value": "```yaml\ndescription: >\n This is a long\n description that\n will be folded.\n```\n**Folded Block Scalar (`>`)** — Folds newlines into spaces. Single newlines become spaces; blank lines become newlines. Useful for long text that should wrap." }
92
+ ]
93
+ },
94
+ "chomp_indicator": {
95
+ "contents": [
96
+ { "value": "```yaml\nstrip: |-\n no trailing newline\nkeep: |+\n trailing newlines kept\n\n\nclip: |\n single trailing newline\n```\n**Chomp Indicators** — Control trailing newlines in block scalars:\n- **Clip** (default, no indicator): Single trailing newline.\n- **Strip (`-`)**: No trailing newlines (`|-`, `>-`).\n- **Keep (`+`)**: All trailing newlines preserved (`|+`, `>+`)." }
97
+ ]
98
+ },
99
+ "flow_sequence": {
100
+ "contents": [
101
+ { "value": "```yaml\ncolors: [red, green, blue]\nnested: [[1, 2], [3, 4]]\n```\n**Flow Sequence** — Compact inline syntax for sequences using square brackets `[]` with comma-separated values. Equivalent to the block style with `-` items." }
102
+ ]
103
+ },
104
+ "flow_mapping": {
105
+ "contents": [
106
+ { "value": "```yaml\nperson: {name: John, age: 30}\n```\n**Flow Mapping** — Compact inline syntax for mappings using curly braces `{}` with comma-separated key-value pairs. Equivalent to the block style mapping." }
107
+ ]
108
+ },
109
+ "tag": {
110
+ "contents": [
111
+ { "value": "```yaml\nforced_string: !!str 123\nforced_int: !!int \"42\"\nforced_float: !!float \"3.14\"\n```\n**Tag (`!!type`)** — Explicitly specifies the data type of a value. Overrides automatic type resolution. Common tags: `!!str`, `!!int`, `!!float`, `!!bool`, `!!null`, `!!binary`, `!!seq`, `!!map`." }
112
+ ]
113
+ },
114
+ "complex_key": {
115
+ "contents": [
116
+ { "value": "```yaml\n? - key\n - part\n: value\n\n? {complex: key}\n: value\n```\n**Complex Key (`?`)** — Allows non-simple keys such as sequences, mappings, or multi-line values as mapping keys. Use `?` to introduce the key and `:` for the value." }
117
+ ]
118
+ },
119
+ "directive_yaml": {
120
+ "contents": [
121
+ { "value": "```yaml\n%YAML 1.2\n---\nkey: value\n```\n**%YAML Directive** — Specifies the YAML version for the document. Must appear before the document start marker `---`." }
122
+ ]
123
+ },
124
+ "directive_tag": {
125
+ "contents": [
126
+ { "value": "```yaml\n%TAG !custom! tag:example.com,2026:\n---\nvalue: !custom!type data\n```\n**%TAG Directive** — Defines a shorthand prefix for tag URIs. Allows abbreviated tag notation throughout the document." }
127
+ ]
128
+ },
129
+ "kubernetes_resource": {
130
+ "contents": [
131
+ { "value": "```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: my-app\n labels:\n app: my-app\nspec:\n replicas: 3\n ...\n```\n**Kubernetes Resource** — Standard K8s manifest structure with `apiVersion`, `kind`, `metadata`, and `spec`. Every Kubernetes object follows this pattern." }
132
+ ]
133
+ },
134
+ "docker_compose": {
135
+ "contents": [
136
+ { "value": "```yaml\nservices:\n web:\n image: nginx:latest\n ports:\n - \"8080:80\"\n volumes:\n - ./html:/usr/share/nginx/html\n```\n**Docker Compose Service** — Defines a containerized service with image, port mappings, volumes, environment variables, networks, and dependency declarations." }
137
+ ]
138
+ },
139
+ "github_actions": {
140
+ "contents": [
141
+ { "value": "```yaml\nname: CI\non:\n push:\n branches: [main]\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - run: npm test\n```\n**GitHub Actions Workflow** — Automates CI/CD with trigger events (`on`), jobs running on virtual machines, and steps that execute commands or reusable actions." }
142
+ ]
143
+ },
144
+ "github_actions_matrix": {
145
+ "contents": [
146
+ { "value": "```yaml\nstrategy:\n matrix:\n os: [ubuntu-latest, windows-latest]\n node: [18, 20, 22]\n fail-fast: false\n```\n**GitHub Actions Matrix** — Runs a job across multiple configurations. Each combination of matrix values creates a separate job instance. Use `fail-fast` to control early termination." }
147
+ ]
148
+ },
149
+ "cicd_pipeline": {
150
+ "contents": [
151
+ { "value": "```yaml\nstages:\n - build\n - test\n - deploy\n\nbuild_job:\n stage: build\n script:\n - make build\n artifacts:\n paths:\n - dist/\n```\n**CI/CD Pipeline** — Defines stages, jobs, scripts, artifacts, and caching for continuous integration and deployment. Common in GitLab CI, Azure Pipelines, and similar tools." }
152
+ ]
153
+ },
154
+ "multiline_strings": {
155
+ "contents": [
156
+ { "value": "```yaml\n# Literal (preserves newlines)\nscript: |\n line1\n line2\n\n# Folded (joins lines)\ntext: >\n long\n paragraph\n\n# Quoted (inline)\ninline: \"line1\\nline2\"\n```\n**Multi-line Strings** — YAML offers three approaches:\n- **Literal `|`**: Preserves all newlines.\n- **Folded `>`**: Joins lines with spaces.\n- **Quoted**: Uses escape sequences like `\\n`." }
157
+ ]
158
+ },
159
+ "indentation": {
160
+ "contents": [
161
+ { "value": "```yaml\nparent:\n child:\n grandchild: value\n```\n**Indentation** — YAML uses spaces (not tabs) for indentation to denote structure. The number of spaces is flexible but must be consistent within a level. Two spaces is the most common convention." }
162
+ ]
163
+ }
164
+ }
165
+ }