@zenithbuild/language 0.5.0-beta.2.1
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.
- package/.github/workflows/release.yml +261 -0
- package/.releaserc.json +73 -0
- package/.vscodeignore +9 -0
- package/CHANGELOG.md +80 -0
- package/LICENSE +21 -0
- package/README.md +57 -0
- package/RELEASE_NOTES.md +30 -0
- package/assets/logo.png +0 -0
- package/bun.lock +91 -0
- package/icons/zen.icns +0 -0
- package/icons/zenith-icon-theme.json +14 -0
- package/language-configuration.json +121 -0
- package/package.json +161 -0
- package/scripts/build.js +141 -0
- package/scripts/release.ts +571 -0
- package/src/extension.ts +147 -0
- package/syntaxes/zenith.tmLanguage.json +672 -0
- package/test/fixtures/grammar-test.zen +36 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# Zenith Automated Release Workflow
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# This workflow handles automated releases for all Zenith repositories.
|
|
5
|
+
#
|
|
6
|
+
# TRIGGERS:
|
|
7
|
+
# - Push to 'main' branch (analyzes commits for version bump)
|
|
8
|
+
# - Manual trigger via workflow_dispatch (with optional dry-run mode)
|
|
9
|
+
# - Tag creation (v*) for explicit version releases
|
|
10
|
+
#
|
|
11
|
+
# FEATURES:
|
|
12
|
+
# - Conventional Commits parsing for automatic version determination
|
|
13
|
+
# - Automatic CHANGELOG.md generation
|
|
14
|
+
# - GitHub Release creation
|
|
15
|
+
# - Optional NPM publishing
|
|
16
|
+
# - Commits updated files back to repo
|
|
17
|
+
# - Dry-run mode for testing
|
|
18
|
+
# - Monorepo support (detects changed packages)
|
|
19
|
+
#
|
|
20
|
+
# REQUIRED SECRETS:
|
|
21
|
+
# - NPM_TOKEN: For publishing to NPM (if enabled)
|
|
22
|
+
# - GITHUB_TOKEN: Automatically provided by GitHub Actions
|
|
23
|
+
# =============================================================================
|
|
24
|
+
|
|
25
|
+
name: Release
|
|
26
|
+
|
|
27
|
+
on:
|
|
28
|
+
push:
|
|
29
|
+
branches:
|
|
30
|
+
- main
|
|
31
|
+
tags:
|
|
32
|
+
- 'v*'
|
|
33
|
+
paths-ignore:
|
|
34
|
+
- '**.md'
|
|
35
|
+
- '.github/**'
|
|
36
|
+
- '!.github/workflows/release.yml'
|
|
37
|
+
|
|
38
|
+
workflow_dispatch:
|
|
39
|
+
inputs:
|
|
40
|
+
dry_run:
|
|
41
|
+
description: 'Dry run mode (no actual release)'
|
|
42
|
+
required: false
|
|
43
|
+
default: false
|
|
44
|
+
type: boolean
|
|
45
|
+
package:
|
|
46
|
+
description: 'Specific package to release (for monorepo, leave empty for auto-detect)'
|
|
47
|
+
required: false
|
|
48
|
+
default: ''
|
|
49
|
+
type: string
|
|
50
|
+
bump_type:
|
|
51
|
+
description: 'Force version bump type (leave empty for auto-detect from commits)'
|
|
52
|
+
required: false
|
|
53
|
+
default: ''
|
|
54
|
+
type: choice
|
|
55
|
+
options:
|
|
56
|
+
- ''
|
|
57
|
+
- patch
|
|
58
|
+
- minor
|
|
59
|
+
- major
|
|
60
|
+
publish_npm:
|
|
61
|
+
description: 'Publish to NPM'
|
|
62
|
+
required: false
|
|
63
|
+
default: true
|
|
64
|
+
type: boolean
|
|
65
|
+
|
|
66
|
+
# Prevent concurrent releases
|
|
67
|
+
concurrency:
|
|
68
|
+
group: release-${{ github.ref }}
|
|
69
|
+
cancel-in-progress: false
|
|
70
|
+
|
|
71
|
+
env:
|
|
72
|
+
BUN_VERSION: '1.1.38'
|
|
73
|
+
|
|
74
|
+
jobs:
|
|
75
|
+
# ==========================================================================
|
|
76
|
+
# Detect Changes (for monorepo support)
|
|
77
|
+
# ==========================================================================
|
|
78
|
+
detect-changes:
|
|
79
|
+
name: Detect Changed Packages
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
outputs:
|
|
82
|
+
packages: ${{ steps.detect.outputs.packages }}
|
|
83
|
+
has_changes: ${{ steps.detect.outputs.has_changes }}
|
|
84
|
+
steps:
|
|
85
|
+
- name: Checkout Repository
|
|
86
|
+
uses: actions/checkout@v4
|
|
87
|
+
with:
|
|
88
|
+
fetch-depth: 0
|
|
89
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
90
|
+
|
|
91
|
+
- name: Setup Bun
|
|
92
|
+
uses: oven-sh/setup-bun@v2
|
|
93
|
+
with:
|
|
94
|
+
bun-version: ${{ env.BUN_VERSION }}
|
|
95
|
+
|
|
96
|
+
- name: Detect Changed Packages
|
|
97
|
+
id: detect
|
|
98
|
+
run: |
|
|
99
|
+
# First, check if this is a single-package repo (package.json in root)
|
|
100
|
+
if [ -f "./package.json" ]; then
|
|
101
|
+
# Count subdirectories with package.json (excluding node_modules)
|
|
102
|
+
SUB_PACKAGES=$(find . -mindepth 2 -name "package.json" -not -path "*/node_modules/*" | wc -l)
|
|
103
|
+
|
|
104
|
+
if [ "$SUB_PACKAGES" -eq 0 ]; then
|
|
105
|
+
# Single package repo - always release from root
|
|
106
|
+
echo "Single package repository detected"
|
|
107
|
+
echo "packages=[\".\"]" >> $GITHUB_OUTPUT
|
|
108
|
+
echo "has_changes=true" >> $GITHUB_OUTPUT
|
|
109
|
+
exit 0
|
|
110
|
+
fi
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
# Monorepo detection
|
|
114
|
+
PACKAGES=$(find . -name "package.json" -not -path "*/node_modules/*" -not -path "*/.git/*" | xargs -I {} dirname {} | sed 's|^\./||' | grep -v "^$" | sort -u)
|
|
115
|
+
|
|
116
|
+
# For monorepos, detect which packages changed
|
|
117
|
+
CHANGED_PACKAGES="[]"
|
|
118
|
+
if [ "${{ github.event.inputs.package }}" != "" ]; then
|
|
119
|
+
CHANGED_PACKAGES="[\"${{ github.event.inputs.package }}\"]"
|
|
120
|
+
else
|
|
121
|
+
# Get changed files since last tag or in the current push
|
|
122
|
+
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
123
|
+
if [ -z "$LAST_TAG" ]; then
|
|
124
|
+
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git ls-files)
|
|
125
|
+
else
|
|
126
|
+
CHANGED_FILES=$(git diff --name-only $LAST_TAG HEAD)
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
# Match changed files to packages
|
|
130
|
+
CHANGED_PKGS=""
|
|
131
|
+
for pkg in $PACKAGES; do
|
|
132
|
+
MATCHED=false
|
|
133
|
+
if [ "$pkg" = "." ]; then
|
|
134
|
+
if [ -n "$CHANGED_FILES" ]; then MATCHED=true; fi
|
|
135
|
+
elif echo "$CHANGED_FILES" | grep -q "^$pkg/"; then
|
|
136
|
+
MATCHED=true
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
if [ "$MATCHED" = "true" ]; then
|
|
140
|
+
if [ -z "$CHANGED_PKGS" ]; then
|
|
141
|
+
CHANGED_PKGS="\"$pkg\""
|
|
142
|
+
else
|
|
143
|
+
CHANGED_PKGS="$CHANGED_PKGS, \"$pkg\""
|
|
144
|
+
fi
|
|
145
|
+
fi
|
|
146
|
+
done
|
|
147
|
+
CHANGED_PACKAGES="[$CHANGED_PKGS]"
|
|
148
|
+
fi
|
|
149
|
+
|
|
150
|
+
echo "packages=$CHANGED_PACKAGES" >> $GITHUB_OUTPUT
|
|
151
|
+
if [ "$CHANGED_PACKAGES" = "[]" ]; then
|
|
152
|
+
echo "has_changes=false" >> $GITHUB_OUTPUT
|
|
153
|
+
else
|
|
154
|
+
echo "has_changes=true" >> $GITHUB_OUTPUT
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
# ==========================================================================
|
|
159
|
+
# Release Job
|
|
160
|
+
# ==========================================================================
|
|
161
|
+
release:
|
|
162
|
+
name: Release
|
|
163
|
+
needs: detect-changes
|
|
164
|
+
if: needs.detect-changes.outputs.has_changes == 'true'
|
|
165
|
+
runs-on: ubuntu-latest
|
|
166
|
+
permissions:
|
|
167
|
+
contents: write
|
|
168
|
+
packages: write
|
|
169
|
+
|
|
170
|
+
strategy:
|
|
171
|
+
fail-fast: false
|
|
172
|
+
matrix:
|
|
173
|
+
package: ${{ fromJson(needs.detect-changes.outputs.packages) }}
|
|
174
|
+
|
|
175
|
+
steps:
|
|
176
|
+
- name: Checkout Repository
|
|
177
|
+
uses: actions/checkout@v4
|
|
178
|
+
with:
|
|
179
|
+
fetch-depth: 0
|
|
180
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
181
|
+
|
|
182
|
+
- name: Setup Bun
|
|
183
|
+
uses: oven-sh/setup-bun@v2
|
|
184
|
+
with:
|
|
185
|
+
bun-version: ${{ env.BUN_VERSION }}
|
|
186
|
+
|
|
187
|
+
- name: Configure Git
|
|
188
|
+
run: |
|
|
189
|
+
git config user.name "github-actions[bot]"
|
|
190
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
191
|
+
|
|
192
|
+
- name: Install Dependencies
|
|
193
|
+
working-directory: ${{ matrix.package }}
|
|
194
|
+
run: bun install
|
|
195
|
+
|
|
196
|
+
- name: Run Release Script
|
|
197
|
+
id: release
|
|
198
|
+
working-directory: ${{ matrix.package }}
|
|
199
|
+
env:
|
|
200
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
201
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
202
|
+
DRY_RUN: ${{ github.event.inputs.dry_run || 'false' }}
|
|
203
|
+
BUMP_TYPE: ${{ github.event.inputs.bump_type || '' }}
|
|
204
|
+
PUBLISH_NPM: ${{ github.event.inputs.publish_npm || 'true' }}
|
|
205
|
+
run: |
|
|
206
|
+
# Run the Bun release script
|
|
207
|
+
bun run scripts/release.ts
|
|
208
|
+
|
|
209
|
+
- name: Build Package
|
|
210
|
+
if: steps.release.outputs.should_release == 'true'
|
|
211
|
+
working-directory: ${{ matrix.package }}
|
|
212
|
+
run: |
|
|
213
|
+
if bun run build 2>/dev/null; then
|
|
214
|
+
echo "Build completed successfully"
|
|
215
|
+
else
|
|
216
|
+
echo "No build script found or build not required"
|
|
217
|
+
fi
|
|
218
|
+
|
|
219
|
+
- name: Commit Changes
|
|
220
|
+
if: steps.release.outputs.should_release == 'true' && github.event.inputs.dry_run != 'true'
|
|
221
|
+
working-directory: ${{ matrix.package }}
|
|
222
|
+
run: |
|
|
223
|
+
git add CHANGELOG.md package.json
|
|
224
|
+
git commit -m "chore(release): v${{ steps.release.outputs.new_version }} [skip ci]" || echo "No changes to commit"
|
|
225
|
+
git push
|
|
226
|
+
|
|
227
|
+
- name: Create GitHub Release
|
|
228
|
+
if: steps.release.outputs.should_release == 'true' && github.event.inputs.dry_run != 'true'
|
|
229
|
+
uses: softprops/action-gh-release@v2
|
|
230
|
+
with:
|
|
231
|
+
tag_name: v${{ steps.release.outputs.new_version }}
|
|
232
|
+
name: Release v${{ steps.release.outputs.new_version }}
|
|
233
|
+
body_path: ${{ matrix.package }}/RELEASE_NOTES.md
|
|
234
|
+
draft: false
|
|
235
|
+
prerelease: false
|
|
236
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
237
|
+
|
|
238
|
+
- name: Publish to NPM
|
|
239
|
+
if: steps.release.outputs.should_release == 'true' && github.event.inputs.dry_run != 'true' && (github.event.inputs.publish_npm == 'true' || github.event.inputs.publish_npm == '')
|
|
240
|
+
working-directory: ${{ matrix.package }}
|
|
241
|
+
run: |
|
|
242
|
+
# Check if package is not private
|
|
243
|
+
PRIVATE=$(cat package.json | bun -e "console.log(JSON.parse(await Bun.stdin.text()).private || false)")
|
|
244
|
+
if [ "$PRIVATE" = "false" ]; then
|
|
245
|
+
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
|
|
246
|
+
bun publish --access public || npm publish --access public
|
|
247
|
+
else
|
|
248
|
+
echo "Package is private, skipping NPM publish"
|
|
249
|
+
fi
|
|
250
|
+
|
|
251
|
+
- name: Summary
|
|
252
|
+
run: |
|
|
253
|
+
echo "## Release Summary" >> $GITHUB_STEP_SUMMARY
|
|
254
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
255
|
+
if [ "${{ github.event.inputs.dry_run }}" = "true" ]; then
|
|
256
|
+
echo "⚠️ **DRY RUN MODE** - No actual release was created" >> $GITHUB_STEP_SUMMARY
|
|
257
|
+
fi
|
|
258
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
259
|
+
echo "- **Package**: ${{ matrix.package }}" >> $GITHUB_STEP_SUMMARY
|
|
260
|
+
echo "- **Version**: ${{ steps.release.outputs.new_version }}" >> $GITHUB_STEP_SUMMARY
|
|
261
|
+
echo "- **Bump Type**: ${{ steps.release.outputs.bump_type }}" >> $GITHUB_STEP_SUMMARY
|
package/.releaserc.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"types": {
|
|
4
|
+
"feat": {
|
|
5
|
+
"title": "✨ Features",
|
|
6
|
+
"bump": "minor",
|
|
7
|
+
"description": "New features or functionality"
|
|
8
|
+
},
|
|
9
|
+
"fix": {
|
|
10
|
+
"title": "🐛 Bug Fixes",
|
|
11
|
+
"bump": "patch",
|
|
12
|
+
"description": "Bug fixes and corrections"
|
|
13
|
+
},
|
|
14
|
+
"perf": {
|
|
15
|
+
"title": "⚡ Performance Improvements",
|
|
16
|
+
"bump": "patch",
|
|
17
|
+
"description": "Performance optimizations"
|
|
18
|
+
},
|
|
19
|
+
"refactor": {
|
|
20
|
+
"title": "♻️ Code Refactoring",
|
|
21
|
+
"bump": "patch",
|
|
22
|
+
"description": "Code changes that neither fix bugs nor add features"
|
|
23
|
+
},
|
|
24
|
+
"docs": {
|
|
25
|
+
"title": "📚 Documentation",
|
|
26
|
+
"bump": null,
|
|
27
|
+
"description": "Documentation only changes"
|
|
28
|
+
},
|
|
29
|
+
"style": {
|
|
30
|
+
"title": "💄 Styles",
|
|
31
|
+
"bump": null,
|
|
32
|
+
"description": "Code style changes (formatting, whitespace)"
|
|
33
|
+
},
|
|
34
|
+
"test": {
|
|
35
|
+
"title": "✅ Tests",
|
|
36
|
+
"bump": null,
|
|
37
|
+
"description": "Adding or updating tests"
|
|
38
|
+
},
|
|
39
|
+
"build": {
|
|
40
|
+
"title": "📦 Build System",
|
|
41
|
+
"bump": "patch",
|
|
42
|
+
"description": "Build system or dependency changes"
|
|
43
|
+
},
|
|
44
|
+
"ci": {
|
|
45
|
+
"title": "🔧 CI Configuration",
|
|
46
|
+
"bump": null,
|
|
47
|
+
"description": "CI/CD configuration changes"
|
|
48
|
+
},
|
|
49
|
+
"chore": {
|
|
50
|
+
"title": "🔨 Chores",
|
|
51
|
+
"bump": null,
|
|
52
|
+
"description": "Maintenance tasks and other changes"
|
|
53
|
+
},
|
|
54
|
+
"revert": {
|
|
55
|
+
"title": "⏪ Reverts",
|
|
56
|
+
"bump": "patch",
|
|
57
|
+
"description": "Reverting previous commits"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"skipCI": [
|
|
61
|
+
"[skip ci]",
|
|
62
|
+
"[ci skip]",
|
|
63
|
+
"[no ci]",
|
|
64
|
+
"chore(release)"
|
|
65
|
+
],
|
|
66
|
+
"tagPrefix": "v",
|
|
67
|
+
"branches": {
|
|
68
|
+
"main": "latest",
|
|
69
|
+
"next": "next",
|
|
70
|
+
"beta": "beta",
|
|
71
|
+
"alpha": "alpha"
|
|
72
|
+
}
|
|
73
|
+
}
|
package/.vscodeignore
ADDED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.4.0] - 2026-02-04
|
|
9
|
+
|
|
10
|
+
### ✨ Features
|
|
11
|
+
|
|
12
|
+
- ****dev-server**: implement Phase 6 - Zero-Copy Dev Server Integration** (c5f68e2)
|
|
13
|
+
> Implement a high-performance, in-memory development server architecture for the Zenith Framework.
|
|
14
|
+
>
|
|
15
|
+
> - Phase 6 integration of Dev Server and AssetStore.
|
|
16
|
+
> - NAPI Controller and HMR loop implementation.
|
|
17
|
+
> - Workspace-wide alignment for Phase 6 completion.
|
|
18
|
+
|
|
19
|
+
### 📝 Other Changes
|
|
20
|
+
|
|
21
|
+
- **
|
|
22
|
+
6b09f56bc93f88c257d3438cef248d3ed2cbded2** ()
|
|
23
|
+
> chore(release): improve release notes legibility and synchronize workflows
|
|
24
|
+
- **
|
|
25
|
+
4e9d6996c8bf6cca78950f2eca32a2f6043b4144** ()
|
|
26
|
+
> chore: bump version to 0.4.6
|
|
27
|
+
- **
|
|
28
|
+
bc616575385b6ad29ee674df2f76dc5d66f9ada0** ()
|
|
29
|
+
> chore: bump version to 0.4.5
|
|
30
|
+
- **
|
|
31
|
+
a2918a92a8b0d918bfa5516efe65796decf4e988** ()
|
|
32
|
+
> ci: fix release workflow and apply updates
|
|
33
|
+
- **
|
|
34
|
+
0371750a7043e02cb8386199c3369bed3943de9f** ()
|
|
35
|
+
> chore: update zenith-language
|
|
36
|
+
- **** ()
|
|
37
|
+
|
|
38
|
+
## [0.4.7] - 2026-01-26
|
|
39
|
+
|
|
40
|
+
### 📝 Other Changes
|
|
41
|
+
|
|
42
|
+
- **** ()
|
|
43
|
+
|
|
44
|
+
## [0.4.0] - 2026-01-16
|
|
45
|
+
|
|
46
|
+
### ✨ Features
|
|
47
|
+
|
|
48
|
+
- **language**: update syntax grammar for new directives and reactive bindings (cb65c98)
|
|
49
|
+
|
|
50
|
+
### 🐛 Bug Fixes
|
|
51
|
+
|
|
52
|
+
- **release**: use appendFileSync for GitHub Actions output (c953f51)
|
|
53
|
+
|
|
54
|
+
### 📝 Other Changes
|
|
55
|
+
|
|
56
|
+
-
|
|
57
|
+
c1aa285dac910ec64f2240c849ff6c0d18b7cd2e ()
|
|
58
|
+
-
|
|
59
|
+
dc90df4092e298ffdce221f8127ae87b0aeed45c ()
|
|
60
|
+
-
|
|
61
|
+
18982c541782091455f32bb5c354e66a06c2938a ()
|
|
62
|
+
-
|
|
63
|
+
5a5046880d2afbc7df70abce0062c6a4be21859e ()
|
|
64
|
+
-
|
|
65
|
+
8627c68faf8cd28521675a6216dc7462c7deb2b2 ()
|
|
66
|
+
-
|
|
67
|
+
e06fdd9e3167f30671c559e98c3fb75088c7e1b6 ()
|
|
68
|
+
- 0.2.9 (de391df)
|
|
69
|
+
-
|
|
70
|
+
e0ad1cd02292af51ac321e7580ae9e534abd6c1b ()
|
|
71
|
+
-
|
|
72
|
+
e4ca2b1d2af81e1cf9876b0932cd3178b7d1bf7e ()
|
|
73
|
+
-
|
|
74
|
+
cff8202737008d97c6527703f51783583eae7e6f ()
|
|
75
|
+
-
|
|
76
|
+
645d159ba240aec6cb6cab5bf332743f6eed4fcd ()
|
|
77
|
+
-
|
|
78
|
+
52507461378cb8f2d87245b84924790a191879ad ()
|
|
79
|
+
- ()
|
|
80
|
+
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Zenith Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# zenith-language ⚡
|
|
2
|
+
|
|
3
|
+
VS Code extension providing world-class development support for the Zenith framework.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
`zenith-language` brings the Zenith development experience into VS Code. It provides syntax highlighting, intelligent code completion, and deep integration with the Zenith LSP to make building reactive apps a breeze.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Syntax Highlighting**: Expertly crafted TextMate grammar for `.zen` files, including embedded JavaScript, TypeScript, and CSS.
|
|
12
|
+
- **IntelliSense**: Smart completions for Zenith components, hooks, and reactive state.
|
|
13
|
+
- **Emmet Support**: Accelerated HTML development inside `.zen` templates.
|
|
14
|
+
- **Project Scaffolding**: Integrated support for starting new projects.
|
|
15
|
+
- **LSP Integration**: Leverages `@zenithbuild/language-server` for powerful diagnostics and refactoring.
|
|
16
|
+
- **Workspace Commands**:
|
|
17
|
+
- `Zenith: Run Contract Pack`
|
|
18
|
+
- `Zenith: Run Legacy Tests`
|
|
19
|
+
- `Zenith: Build`
|
|
20
|
+
- `Zenith: Restart Server`
|
|
21
|
+
|
|
22
|
+
## Settings
|
|
23
|
+
|
|
24
|
+
- `zenith.componentScripts`: `forbid` (default) or `allow`.
|
|
25
|
+
- `zenith.languageServer.path`: optional absolute or workspace-relative path override for the language server entry file.
|
|
26
|
+
|
|
27
|
+
The extension supports multi-root workspaces. Command execution prompts for the target workspace folder when multiple folders are open.
|
|
28
|
+
|
|
29
|
+
## Supported Extensions
|
|
30
|
+
|
|
31
|
+
- `.zen`
|
|
32
|
+
- `.zenx`
|
|
33
|
+
- `.zen.html`
|
|
34
|
+
|
|
35
|
+
## Recommended Settings
|
|
36
|
+
|
|
37
|
+
The extension automatically configures your editor for the best experience. For more details on customization, see the VS Code settings for Zenith.
|
|
38
|
+
|
|
39
|
+
## Development
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Clone the repository
|
|
43
|
+
git clone https://github.com/zenithbuild/zenith.git
|
|
44
|
+
|
|
45
|
+
# Navigate to language package
|
|
46
|
+
cd zenith-language
|
|
47
|
+
|
|
48
|
+
# Install dependencies
|
|
49
|
+
bun install
|
|
50
|
+
|
|
51
|
+
# Build the server and compile the extension
|
|
52
|
+
bun run build:all
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## License
|
|
56
|
+
|
|
57
|
+
MIT
|
package/RELEASE_NOTES.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 🚀 zenith-language v0.4.8
|
|
2
|
+
|
|
3
|
+
## [0.4.8] - 2026-02-15
|
|
4
|
+
|
|
5
|
+
### ✨ Tooling Updates
|
|
6
|
+
|
|
7
|
+
- Added multi-root-aware commands:
|
|
8
|
+
- Run Contract Pack
|
|
9
|
+
- Run Legacy Tests
|
|
10
|
+
- Build
|
|
11
|
+
- Restart Server
|
|
12
|
+
- Added `zenith.languageServer.path` setting for custom server path override.
|
|
13
|
+
- Added `zenith.componentScripts` setting surfaced in VS Code configuration and synchronized to the language server.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
bun add zenith-language@0.4.8
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
*or with npm:*
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install zenith-language@0.4.8
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
*Generated by Zenith Automated Release*
|
package/assets/logo.png
ADDED
|
Binary file
|
package/bun.lock
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 1,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "zenith-language",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"vscode-languageclient": "^9.0.1",
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@types/node": "^20.0.0",
|
|
12
|
+
"@types/vscode": "^1.80.0",
|
|
13
|
+
"esbuild": "^0.19.0",
|
|
14
|
+
"typescript": "^5.0.0",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
"packages": {
|
|
19
|
+
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="],
|
|
20
|
+
|
|
21
|
+
"@esbuild/android-arm": ["@esbuild/android-arm@0.19.12", "", { "os": "android", "cpu": "arm" }, "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w=="],
|
|
22
|
+
|
|
23
|
+
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.19.12", "", { "os": "android", "cpu": "arm64" }, "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA=="],
|
|
24
|
+
|
|
25
|
+
"@esbuild/android-x64": ["@esbuild/android-x64@0.19.12", "", { "os": "android", "cpu": "x64" }, "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew=="],
|
|
26
|
+
|
|
27
|
+
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.19.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g=="],
|
|
28
|
+
|
|
29
|
+
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.19.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A=="],
|
|
30
|
+
|
|
31
|
+
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.19.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA=="],
|
|
32
|
+
|
|
33
|
+
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.19.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg=="],
|
|
34
|
+
|
|
35
|
+
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.19.12", "", { "os": "linux", "cpu": "arm" }, "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w=="],
|
|
36
|
+
|
|
37
|
+
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.19.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA=="],
|
|
38
|
+
|
|
39
|
+
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.19.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA=="],
|
|
40
|
+
|
|
41
|
+
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.19.12", "", { "os": "linux", "cpu": "none" }, "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA=="],
|
|
42
|
+
|
|
43
|
+
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.19.12", "", { "os": "linux", "cpu": "none" }, "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w=="],
|
|
44
|
+
|
|
45
|
+
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.19.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg=="],
|
|
46
|
+
|
|
47
|
+
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.19.12", "", { "os": "linux", "cpu": "none" }, "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg=="],
|
|
48
|
+
|
|
49
|
+
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.19.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg=="],
|
|
50
|
+
|
|
51
|
+
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.19.12", "", { "os": "linux", "cpu": "x64" }, "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg=="],
|
|
52
|
+
|
|
53
|
+
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.19.12", "", { "os": "none", "cpu": "x64" }, "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA=="],
|
|
54
|
+
|
|
55
|
+
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.19.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw=="],
|
|
56
|
+
|
|
57
|
+
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.19.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA=="],
|
|
58
|
+
|
|
59
|
+
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.19.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A=="],
|
|
60
|
+
|
|
61
|
+
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.19.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ=="],
|
|
62
|
+
|
|
63
|
+
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.19.12", "", { "os": "win32", "cpu": "x64" }, "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA=="],
|
|
64
|
+
|
|
65
|
+
"@types/node": ["@types/node@20.19.27", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug=="],
|
|
66
|
+
|
|
67
|
+
"@types/vscode": ["@types/vscode@1.107.0", "", {}, "sha512-XS8YE1jlyTIowP64+HoN30OlC1H9xqSlq1eoLZUgFEC8oUTO6euYZxti1xRiLSfZocs4qytTzR6xCBYtioQTCg=="],
|
|
68
|
+
|
|
69
|
+
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
|
70
|
+
|
|
71
|
+
"brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
|
|
72
|
+
|
|
73
|
+
"esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="],
|
|
74
|
+
|
|
75
|
+
"minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],
|
|
76
|
+
|
|
77
|
+
"semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
|
|
78
|
+
|
|
79
|
+
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
80
|
+
|
|
81
|
+
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
|
82
|
+
|
|
83
|
+
"vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="],
|
|
84
|
+
|
|
85
|
+
"vscode-languageclient": ["vscode-languageclient@9.0.1", "", { "dependencies": { "minimatch": "^5.1.0", "semver": "^7.3.7", "vscode-languageserver-protocol": "3.17.5" } }, "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA=="],
|
|
86
|
+
|
|
87
|
+
"vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="],
|
|
88
|
+
|
|
89
|
+
"vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="],
|
|
90
|
+
}
|
|
91
|
+
}
|
package/icons/zen.icns
ADDED
|
Binary file
|