js-i18n-language-server 0.1.0
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/CHANGELOG.md +168 -0
- package/README.md +40 -0
- package/binary-install.js +212 -0
- package/binary.js +126 -0
- package/install.js +4 -0
- package/npm-shrinkwrap.json +519 -0
- package/package.json +97 -0
- package/run-js-i18n-language-server.js +4 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
## [0.1.0] - 2026-01-25
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- Skip empty keys during validation
|
|
9
|
+
- Update default translation file pattern for nested structures
|
|
10
|
+
- Add delay before Progress End to avoid race condition
|
|
11
|
+
- Use channel-based Progress notification to fix race condition
|
|
12
|
+
- Move flag setting inside lock to prevent race condition
|
|
13
|
+
- Queue file updates during indexing to prevent data loss
|
|
14
|
+
- Resolve clippy warnings for static docs and function length
|
|
15
|
+
- Resolve clippy pedantic lint errors
|
|
16
|
+
- Resolve clippy lint warnings across test modules
|
|
17
|
+
- Use YAML frontmatter for path filtering
|
|
18
|
+
- Support complex object options in t() calls
|
|
19
|
+
- Remove unnecessary raw string hashes for nightly clippy
|
|
20
|
+
- Resolve clippy lints for nightly 1.95.0
|
|
21
|
+
- Correct release.toml format for cargo-release v0.25
|
|
22
|
+
- Use usage field for release task arguments
|
|
23
|
+
- Move MISE_ENV to job level for all steps
|
|
24
|
+
|
|
25
|
+
### Documentation
|
|
26
|
+
|
|
27
|
+
- Add custom settings project documentation
|
|
28
|
+
- Resolve TODO comments with proper documentation
|
|
29
|
+
- Add CLAUDE.md with path-specific rules for minimal startup context
|
|
30
|
+
- Expand testing rules with in-source test patterns
|
|
31
|
+
- Refactor rules for minimal startup context
|
|
32
|
+
- Add code comment policy
|
|
33
|
+
- Restructure documentation for developers and integrators
|
|
34
|
+
- Add initial CHANGELOG for v0.1.0 release
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
- Implement initial js-i18n-language-server
|
|
39
|
+
- Add configuration management system
|
|
40
|
+
- Implement workspace indexing system
|
|
41
|
+
- Add salsa-based architecture foundation
|
|
42
|
+
- Add IDE feature module stubs
|
|
43
|
+
- Define validation error types and error messages
|
|
44
|
+
- Implement complete configuration management and Backend integration
|
|
45
|
+
- Add Send trait and Default implementation to Salsa database
|
|
46
|
+
- Integrate Salsa database for incremental analysis
|
|
47
|
+
- Implement workspace reindexing and incremental updates
|
|
48
|
+
- Add Translation input and JSON flattening utility
|
|
49
|
+
- Add translation file indexing to workspace indexer
|
|
50
|
+
- Implement diagnostic generation for missing translation keys
|
|
51
|
+
- Add heuristic language detection from file paths
|
|
52
|
+
- Implement hover feature to display translations
|
|
53
|
+
- Add immediate diagnostics on file open
|
|
54
|
+
- Add references support for JSON translation files
|
|
55
|
+
- Add configurable indexing thread pool size
|
|
56
|
+
- Add Go to Definition support for translation keys
|
|
57
|
+
- Support Go to Definition from translation files
|
|
58
|
+
- Add completion support for translation keys
|
|
59
|
+
- Display multiple language translations in completion
|
|
60
|
+
- Support empty arguments t() for completion
|
|
61
|
+
- Add file watcher for translation files
|
|
62
|
+
- Add value position tracking for translation files
|
|
63
|
+
- Support hover in translation files
|
|
64
|
+
- Add required_languages and optional_languages settings
|
|
65
|
+
- Check translations per language with configurable filtering
|
|
66
|
+
- Add code action generation module
|
|
67
|
+
- Implement code action and execute command handlers
|
|
68
|
+
- Add VirtualTextConfig for translation decoration settings
|
|
69
|
+
- Add virtual_text module for translation decorations
|
|
70
|
+
- Add i18n.getDecorations command for virtual text support
|
|
71
|
+
- Send unused key diagnostics at initialization and on file changes
|
|
72
|
+
- Add primaryLanguages and currentLanguage settings
|
|
73
|
+
- Add tree-sitter queries for i18n patterns
|
|
74
|
+
- Add multi-query support and expand i18n pattern handling
|
|
75
|
+
- Add configurable key_separator support
|
|
76
|
+
- Add custom settings project for key_separator testing
|
|
77
|
+
- Implement config file change handling with progress notification
|
|
78
|
+
- Add SourceRange::contains and LSP type conversions
|
|
79
|
+
- Add collect_sorted_languages utility
|
|
80
|
+
- Add language priority sorting
|
|
81
|
+
- Add FileMatcher for centralized pattern matching
|
|
82
|
+
- Add delete_keys_from_json_text for key removal
|
|
83
|
+
- Add deleteUnusedKeys command for bulk cleanup
|
|
84
|
+
- Support global translation functions and method calls
|
|
85
|
+
- Add plural suffix support for i18next
|
|
86
|
+
- Add default_namespace setting
|
|
87
|
+
- Detect namespace from file path
|
|
88
|
+
- Add namespace support to type definitions
|
|
89
|
+
- Add array namespace and ns option support
|
|
90
|
+
- Add namespace fields to KeyUsage
|
|
91
|
+
- Add namespace filtering module
|
|
92
|
+
- Support array notation in child key matching
|
|
93
|
+
- Make glob patterns relative to config file directory
|
|
94
|
+
- Support real-time translation updates in editor
|
|
95
|
+
|
|
96
|
+
### Performance
|
|
97
|
+
|
|
98
|
+
- Implement true parallel execution with blocking thread pool
|
|
99
|
+
- Add query cache and reduce default thread count
|
|
100
|
+
|
|
101
|
+
### Refactor
|
|
102
|
+
|
|
103
|
+
- Consolidate error types and use LSP types
|
|
104
|
+
- Move analyzer to syntax module with salsa integration
|
|
105
|
+
- Improve workspace indexing implementation
|
|
106
|
+
- Remove unused Translation struct
|
|
107
|
+
- Extract common diagnostic logic into helper method
|
|
108
|
+
- Prioritize translations and limit concurrency to prevent cpu starvation
|
|
109
|
+
- Simplify logging by removing timing instrumentation
|
|
110
|
+
- Split capture names for get and call contexts
|
|
111
|
+
- Replace let chain with nested if-let
|
|
112
|
+
- Replace let chains with nested if-let expressions
|
|
113
|
+
- Use config-based pattern for file watching
|
|
114
|
+
- Extract common helper methods to reduce code duplication
|
|
115
|
+
- Extract ServerState from Backend
|
|
116
|
+
- Extract LSP handlers into dedicated modules
|
|
117
|
+
- Add explanatory comments to clippy allow attributes
|
|
118
|
+
- Add CaptureName enum, batch locks, and key_separator support
|
|
119
|
+
- Reduce clone() calls and shorten lock hold times
|
|
120
|
+
- Replace verbose trace logs with tracing::instrument
|
|
121
|
+
- Replace rolling file appender with configurable logging
|
|
122
|
+
- Restructure with separate projects per library
|
|
123
|
+
- Convert create_diagnostic_options to associated function
|
|
124
|
+
- Remove unnecessary dead_code allow
|
|
125
|
+
- Remove unused load_from_package_json function
|
|
126
|
+
- Use collect_sorted_languages for language resolution
|
|
127
|
+
- Use SourceRange type conversions
|
|
128
|
+
- Consolidate position_in_range into SourceRange::contains
|
|
129
|
+
- Add From trait and helper for tree-sitter conversion
|
|
130
|
+
- Split long function into smaller focused units
|
|
131
|
+
- Extract helper methods and simplify reindex_workspace
|
|
132
|
+
- Extract helpers for file edit operations
|
|
133
|
+
- Extract helpers and use or_else chain
|
|
134
|
+
- Introduce LanguagePriority enum for type-safe sorting
|
|
135
|
+
- Use functional style and idiomatic Rust patterns
|
|
136
|
+
- Simplify sorting logic and imports
|
|
137
|
+
- Migrate from mod.rs to modern Rust module style
|
|
138
|
+
- Simplify implementation
|
|
139
|
+
- Add #[deprecated] attribute to workspace_root()
|
|
140
|
+
- Simplify by removing config_dir abstraction
|
|
141
|
+
- Split config into development and CI environments
|
|
142
|
+
|
|
143
|
+
### Styling
|
|
144
|
+
|
|
145
|
+
- Translate comments to English
|
|
146
|
+
|
|
147
|
+
### Testing
|
|
148
|
+
|
|
149
|
+
- Improve test assertions with googletest matchers
|
|
150
|
+
- Migrate tests to googletest matchers
|
|
151
|
+
- Add comprehensive tests for detect_language_from_path
|
|
152
|
+
- Add unit tests for generate_hover_content
|
|
153
|
+
- Add boundary condition and config tests
|
|
154
|
+
- Add comprehensive workspace indexer tests
|
|
155
|
+
- Add comprehensive completion tests
|
|
156
|
+
- Add test for config_dir != workspace_root scenario
|
|
157
|
+
|
|
158
|
+
### Build
|
|
159
|
+
|
|
160
|
+
- Add salsa dependency and update configuration
|
|
161
|
+
- Add tree-sitter-json dependency
|
|
162
|
+
- Add num_cpus dependency for CPU core detection
|
|
163
|
+
|
|
164
|
+
### Deps
|
|
165
|
+
|
|
166
|
+
- Add jsonc-parser for CST-based JSON manipulation
|
|
167
|
+
|
|
168
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# js-i18n-language-server
|
|
2
|
+
|
|
3
|
+
[](https://github.com/nabekou29/js-i18n-language-server/actions/workflows/ci.yml)
|
|
4
|
+
[](https://codecov.io/gh/nabekou29/js-i18n-language-server)
|
|
5
|
+
|
|
6
|
+
Language Server for JavaScript/TypeScript i18n libraries.
|
|
7
|
+
|
|
8
|
+
Provides IDE features (completion, hover, diagnostics, etc.) for translation keys in i18next, react-i18next, and next-intl projects.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
cargo install --git https://github.com/nabekou29/js-i18n-language-server
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Or download from [GitHub Releases](https://github.com/nabekou29/js-i18n-language-server/releases).
|
|
17
|
+
|
|
18
|
+
## Configuration
|
|
19
|
+
|
|
20
|
+
Create `.js-i18n.json` in your project root:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"translationFiles": {
|
|
25
|
+
"filePattern": "**/locales/**/*.json"
|
|
26
|
+
},
|
|
27
|
+
"includePatterns": ["src/**/*.{ts,tsx}"],
|
|
28
|
+
"excludePatterns": ["node_modules/**"]
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Documentation
|
|
33
|
+
|
|
34
|
+
- [Configuration Reference](./docs/configuration.md) - All configuration options
|
|
35
|
+
- [LSP Features](./docs/lsp-features.md) - Standard methods and custom commands
|
|
36
|
+
- [Supported Syntax](./docs/supported-syntax.md) - Recognized code patterns
|
|
37
|
+
|
|
38
|
+
## License
|
|
39
|
+
|
|
40
|
+
MIT
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
const { createWriteStream, existsSync, mkdirSync, mkdtemp } = require("fs");
|
|
2
|
+
const { join, sep } = require("path");
|
|
3
|
+
const { spawnSync } = require("child_process");
|
|
4
|
+
const { tmpdir } = require("os");
|
|
5
|
+
|
|
6
|
+
const axios = require("axios");
|
|
7
|
+
const rimraf = require("rimraf");
|
|
8
|
+
const tmpDir = tmpdir();
|
|
9
|
+
|
|
10
|
+
const error = (msg) => {
|
|
11
|
+
console.error(msg);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
class Package {
|
|
16
|
+
constructor(platform, name, url, filename, zipExt, binaries) {
|
|
17
|
+
let errors = [];
|
|
18
|
+
if (typeof url !== "string") {
|
|
19
|
+
errors.push("url must be a string");
|
|
20
|
+
} else {
|
|
21
|
+
try {
|
|
22
|
+
new URL(url);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
errors.push(e);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (name && typeof name !== "string") {
|
|
28
|
+
errors.push("package name must be a string");
|
|
29
|
+
}
|
|
30
|
+
if (!name) {
|
|
31
|
+
errors.push("You must specify the name of your package");
|
|
32
|
+
}
|
|
33
|
+
if (binaries && typeof binaries !== "object") {
|
|
34
|
+
errors.push("binaries must be a string => string map");
|
|
35
|
+
}
|
|
36
|
+
if (!binaries) {
|
|
37
|
+
errors.push("You must specify the binaries in the package");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (errors.length > 0) {
|
|
41
|
+
let errorMsg =
|
|
42
|
+
"One or more of the parameters you passed to the Binary constructor are invalid:\n";
|
|
43
|
+
errors.forEach((error) => {
|
|
44
|
+
errorMsg += error;
|
|
45
|
+
});
|
|
46
|
+
errorMsg +=
|
|
47
|
+
'\n\nCorrect usage: new Package("my-binary", "https://example.com/binary/download.tar.gz", {"my-binary": "my-binary"})';
|
|
48
|
+
error(errorMsg);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
this.platform = platform;
|
|
52
|
+
this.url = url;
|
|
53
|
+
this.name = name;
|
|
54
|
+
this.filename = filename;
|
|
55
|
+
this.zipExt = zipExt;
|
|
56
|
+
this.installDirectory = join(__dirname, "node_modules", ".bin_real");
|
|
57
|
+
this.binaries = binaries;
|
|
58
|
+
|
|
59
|
+
if (!existsSync(this.installDirectory)) {
|
|
60
|
+
mkdirSync(this.installDirectory, { recursive: true });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
exists() {
|
|
65
|
+
for (const binaryName in this.binaries) {
|
|
66
|
+
const binRelPath = this.binaries[binaryName];
|
|
67
|
+
const binPath = join(this.installDirectory, binRelPath);
|
|
68
|
+
if (!existsSync(binPath)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
install(fetchOptions, suppressLogs = false) {
|
|
76
|
+
if (this.exists()) {
|
|
77
|
+
if (!suppressLogs) {
|
|
78
|
+
console.error(
|
|
79
|
+
`${this.name} is already installed, skipping installation.`,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
return Promise.resolve();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (existsSync(this.installDirectory)) {
|
|
86
|
+
rimraf.sync(this.installDirectory);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
mkdirSync(this.installDirectory, { recursive: true });
|
|
90
|
+
|
|
91
|
+
if (!suppressLogs) {
|
|
92
|
+
console.error(`Downloading release from ${this.url}`);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return axios({ ...fetchOptions, url: this.url, responseType: "stream" })
|
|
96
|
+
.then((res) => {
|
|
97
|
+
return new Promise((resolve, reject) => {
|
|
98
|
+
mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
|
|
99
|
+
let tempFile = join(directory, this.filename);
|
|
100
|
+
const sink = res.data.pipe(createWriteStream(tempFile));
|
|
101
|
+
sink.on("error", (err) => reject(err));
|
|
102
|
+
sink.on("close", () => {
|
|
103
|
+
if (/\.tar\.*/.test(this.zipExt)) {
|
|
104
|
+
const result = spawnSync("tar", [
|
|
105
|
+
"xf",
|
|
106
|
+
tempFile,
|
|
107
|
+
// The tarballs are stored with a leading directory
|
|
108
|
+
// component; we strip one component in the
|
|
109
|
+
// shell installers too.
|
|
110
|
+
"--strip-components",
|
|
111
|
+
"1",
|
|
112
|
+
"-C",
|
|
113
|
+
this.installDirectory,
|
|
114
|
+
]);
|
|
115
|
+
if (result.status == 0) {
|
|
116
|
+
resolve();
|
|
117
|
+
} else if (result.error) {
|
|
118
|
+
reject(result.error);
|
|
119
|
+
} else {
|
|
120
|
+
reject(
|
|
121
|
+
new Error(
|
|
122
|
+
`An error occurred untarring the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
|
|
123
|
+
),
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
} else if (this.zipExt == ".zip") {
|
|
127
|
+
let result;
|
|
128
|
+
if (this.platform.artifactName.includes("windows")) {
|
|
129
|
+
// Windows does not have "unzip" by default on many installations, instead
|
|
130
|
+
// we use Expand-Archive from powershell
|
|
131
|
+
result = spawnSync("powershell.exe", [
|
|
132
|
+
"-NoProfile",
|
|
133
|
+
"-NonInteractive",
|
|
134
|
+
"-Command",
|
|
135
|
+
`& {
|
|
136
|
+
param([string]$LiteralPath, [string]$DestinationPath)
|
|
137
|
+
Expand-Archive -LiteralPath $LiteralPath -DestinationPath $DestinationPath -Force
|
|
138
|
+
}`,
|
|
139
|
+
tempFile,
|
|
140
|
+
this.installDirectory,
|
|
141
|
+
]);
|
|
142
|
+
} else {
|
|
143
|
+
result = spawnSync("unzip", [
|
|
144
|
+
"-q",
|
|
145
|
+
tempFile,
|
|
146
|
+
"-d",
|
|
147
|
+
this.installDirectory,
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (result.status == 0) {
|
|
152
|
+
resolve();
|
|
153
|
+
} else if (result.error) {
|
|
154
|
+
reject(result.error);
|
|
155
|
+
} else {
|
|
156
|
+
reject(
|
|
157
|
+
new Error(
|
|
158
|
+
`An error occurred unzipping the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
|
|
159
|
+
),
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
reject(
|
|
164
|
+
new Error(`Unrecognized file extension: ${this.zipExt}`),
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
})
|
|
171
|
+
.then(() => {
|
|
172
|
+
if (!suppressLogs) {
|
|
173
|
+
console.error(`${this.name} has been installed!`);
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
.catch((e) => {
|
|
177
|
+
error(`Error fetching release: ${e.message}`);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
run(binaryName, fetchOptions) {
|
|
182
|
+
const promise = !this.exists()
|
|
183
|
+
? this.install(fetchOptions, true)
|
|
184
|
+
: Promise.resolve();
|
|
185
|
+
|
|
186
|
+
promise
|
|
187
|
+
.then(() => {
|
|
188
|
+
const [, , ...args] = process.argv;
|
|
189
|
+
|
|
190
|
+
const options = { cwd: process.cwd(), stdio: "inherit" };
|
|
191
|
+
|
|
192
|
+
const binRelPath = this.binaries[binaryName];
|
|
193
|
+
if (!binRelPath) {
|
|
194
|
+
error(`${binaryName} is not a known binary in ${this.name}`);
|
|
195
|
+
}
|
|
196
|
+
const binPath = join(this.installDirectory, binRelPath);
|
|
197
|
+
const result = spawnSync(binPath, args, options);
|
|
198
|
+
|
|
199
|
+
if (result.error) {
|
|
200
|
+
error(result.error);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
process.exit(result.status);
|
|
204
|
+
})
|
|
205
|
+
.catch((e) => {
|
|
206
|
+
error(e.message);
|
|
207
|
+
process.exit(1);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
module.exports.Package = Package;
|
package/binary.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const { Package } = require("./binary-install");
|
|
2
|
+
const os = require("os");
|
|
3
|
+
const cTable = require("console.table");
|
|
4
|
+
const libc = require("detect-libc");
|
|
5
|
+
const { configureProxy } = require("axios-proxy-builder");
|
|
6
|
+
|
|
7
|
+
const error = (msg) => {
|
|
8
|
+
console.error(msg);
|
|
9
|
+
process.exit(1);
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
name,
|
|
14
|
+
artifactDownloadUrl,
|
|
15
|
+
supportedPlatforms,
|
|
16
|
+
glibcMinimum,
|
|
17
|
+
} = require("./package.json");
|
|
18
|
+
|
|
19
|
+
const builderGlibcMajorVersion = glibcMinimum.major;
|
|
20
|
+
const builderGlibcMInorVersion = glibcMinimum.series;
|
|
21
|
+
|
|
22
|
+
const getPlatform = () => {
|
|
23
|
+
const rawOsType = os.type();
|
|
24
|
+
const rawArchitecture = os.arch();
|
|
25
|
+
|
|
26
|
+
// We want to use rust-style target triples as the canonical key
|
|
27
|
+
// for a platform, so translate the "os" library's concepts into rust ones
|
|
28
|
+
let osType = "";
|
|
29
|
+
switch (rawOsType) {
|
|
30
|
+
case "Windows_NT":
|
|
31
|
+
osType = "pc-windows-msvc";
|
|
32
|
+
break;
|
|
33
|
+
case "Darwin":
|
|
34
|
+
osType = "apple-darwin";
|
|
35
|
+
break;
|
|
36
|
+
case "Linux":
|
|
37
|
+
osType = "unknown-linux-gnu";
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let arch = "";
|
|
42
|
+
switch (rawArchitecture) {
|
|
43
|
+
case "x64":
|
|
44
|
+
arch = "x86_64";
|
|
45
|
+
break;
|
|
46
|
+
case "arm64":
|
|
47
|
+
arch = "aarch64";
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (rawOsType === "Linux") {
|
|
52
|
+
if (libc.familySync() == "musl") {
|
|
53
|
+
osType = "unknown-linux-musl-dynamic";
|
|
54
|
+
} else if (libc.isNonGlibcLinuxSync()) {
|
|
55
|
+
console.warn(
|
|
56
|
+
"Your libc is neither glibc nor musl; trying static musl binary instead",
|
|
57
|
+
);
|
|
58
|
+
osType = "unknown-linux-musl-static";
|
|
59
|
+
} else {
|
|
60
|
+
let libcVersion = libc.versionSync();
|
|
61
|
+
let splitLibcVersion = libcVersion.split(".");
|
|
62
|
+
let libcMajorVersion = splitLibcVersion[0];
|
|
63
|
+
let libcMinorVersion = splitLibcVersion[1];
|
|
64
|
+
if (
|
|
65
|
+
libcMajorVersion != builderGlibcMajorVersion ||
|
|
66
|
+
libcMinorVersion < builderGlibcMInorVersion
|
|
67
|
+
) {
|
|
68
|
+
// We can't run the glibc binaries, but we can run the static musl ones
|
|
69
|
+
// if they exist
|
|
70
|
+
console.warn(
|
|
71
|
+
"Your glibc isn't compatible; trying static musl binary instead",
|
|
72
|
+
);
|
|
73
|
+
osType = "unknown-linux-musl-static";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Assume the above succeeded and build a target triple to look things up with.
|
|
79
|
+
// If any of it failed, this lookup will fail and we'll handle it like normal.
|
|
80
|
+
let targetTriple = `${arch}-${osType}`;
|
|
81
|
+
let platform = supportedPlatforms[targetTriple];
|
|
82
|
+
|
|
83
|
+
if (!platform) {
|
|
84
|
+
error(
|
|
85
|
+
`Platform with type "${rawOsType}" and architecture "${rawArchitecture}" is not supported by ${name}.\nYour system must be one of the following:\n\n${Object.keys(
|
|
86
|
+
supportedPlatforms,
|
|
87
|
+
).join(",")}`,
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return platform;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const getPackage = () => {
|
|
95
|
+
const platform = getPlatform();
|
|
96
|
+
const url = `${artifactDownloadUrl}/${platform.artifactName}`;
|
|
97
|
+
let filename = platform.artifactName;
|
|
98
|
+
let ext = platform.zipExt;
|
|
99
|
+
let binary = new Package(platform, name, url, filename, ext, platform.bins);
|
|
100
|
+
|
|
101
|
+
return binary;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const install = (suppressLogs) => {
|
|
105
|
+
if (!artifactDownloadUrl || artifactDownloadUrl.length === 0) {
|
|
106
|
+
console.warn("in demo mode, not installing binaries");
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const package = getPackage();
|
|
110
|
+
const proxy = configureProxy(package.url);
|
|
111
|
+
|
|
112
|
+
return package.install(proxy, suppressLogs);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const run = (binaryName) => {
|
|
116
|
+
const package = getPackage();
|
|
117
|
+
const proxy = configureProxy(package.url);
|
|
118
|
+
|
|
119
|
+
package.run(binaryName, proxy);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
install,
|
|
124
|
+
run,
|
|
125
|
+
getPackage,
|
|
126
|
+
};
|
package/install.js
ADDED
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 3,
|
|
3
|
+
"name": "@js-i18n-language-server/js-i18n-language-server",
|
|
4
|
+
"packages": {
|
|
5
|
+
"": {
|
|
6
|
+
"bin": {
|
|
7
|
+
"js-i18n-language-server": "run-js-i18n-language-server.js"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"axios": "^1.13.2",
|
|
11
|
+
"axios-proxy-builder": "^0.1.2",
|
|
12
|
+
"console.table": "^0.10.0",
|
|
13
|
+
"detect-libc": "^2.1.2",
|
|
14
|
+
"rimraf": "^6.1.2"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"prettier": "^3.7.4"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=14",
|
|
21
|
+
"npm": ">=6"
|
|
22
|
+
},
|
|
23
|
+
"hasInstallScript": true,
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"name": "@js-i18n-language-server/js-i18n-language-server",
|
|
26
|
+
"version": "0.1.0"
|
|
27
|
+
},
|
|
28
|
+
"node_modules/@isaacs/balanced-match": {
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": "20 || >=22"
|
|
31
|
+
},
|
|
32
|
+
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
|
|
35
|
+
"version": "4.0.1"
|
|
36
|
+
},
|
|
37
|
+
"node_modules/@isaacs/brace-expansion": {
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@isaacs/balanced-match": "^4.0.1"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": "20 || >=22"
|
|
43
|
+
},
|
|
44
|
+
"integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
|
|
47
|
+
"version": "5.0.0"
|
|
48
|
+
},
|
|
49
|
+
"node_modules/asynckit": {
|
|
50
|
+
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
53
|
+
"version": "0.4.0"
|
|
54
|
+
},
|
|
55
|
+
"node_modules/axios": {
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"follow-redirects": "^1.15.6",
|
|
58
|
+
"form-data": "^4.0.4",
|
|
59
|
+
"proxy-from-env": "^1.1.0"
|
|
60
|
+
},
|
|
61
|
+
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
|
|
62
|
+
"license": "MIT",
|
|
63
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
|
|
64
|
+
"version": "1.13.2"
|
|
65
|
+
},
|
|
66
|
+
"node_modules/axios-proxy-builder": {
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"tunnel": "^0.0.6"
|
|
69
|
+
},
|
|
70
|
+
"integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
|
|
71
|
+
"license": "MIT",
|
|
72
|
+
"resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
|
|
73
|
+
"version": "0.1.2"
|
|
74
|
+
},
|
|
75
|
+
"node_modules/call-bind-apply-helpers": {
|
|
76
|
+
"dependencies": {
|
|
77
|
+
"es-errors": "^1.3.0",
|
|
78
|
+
"function-bind": "^1.1.2"
|
|
79
|
+
},
|
|
80
|
+
"engines": {
|
|
81
|
+
"node": ">= 0.4"
|
|
82
|
+
},
|
|
83
|
+
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
|
84
|
+
"license": "MIT",
|
|
85
|
+
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
|
86
|
+
"version": "1.0.2"
|
|
87
|
+
},
|
|
88
|
+
"node_modules/clone": {
|
|
89
|
+
"engines": {
|
|
90
|
+
"node": ">=0.8"
|
|
91
|
+
},
|
|
92
|
+
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
|
|
93
|
+
"license": "MIT",
|
|
94
|
+
"optional": true,
|
|
95
|
+
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
|
96
|
+
"version": "1.0.4"
|
|
97
|
+
},
|
|
98
|
+
"node_modules/combined-stream": {
|
|
99
|
+
"dependencies": {
|
|
100
|
+
"delayed-stream": "~1.0.0"
|
|
101
|
+
},
|
|
102
|
+
"engines": {
|
|
103
|
+
"node": ">= 0.8"
|
|
104
|
+
},
|
|
105
|
+
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
106
|
+
"license": "MIT",
|
|
107
|
+
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
108
|
+
"version": "1.0.8"
|
|
109
|
+
},
|
|
110
|
+
"node_modules/console.table": {
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"easy-table": "1.1.0"
|
|
113
|
+
},
|
|
114
|
+
"engines": {
|
|
115
|
+
"node": "> 0.10"
|
|
116
|
+
},
|
|
117
|
+
"integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
|
|
118
|
+
"license": "MIT",
|
|
119
|
+
"resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
|
|
120
|
+
"version": "0.10.0"
|
|
121
|
+
},
|
|
122
|
+
"node_modules/defaults": {
|
|
123
|
+
"dependencies": {
|
|
124
|
+
"clone": "^1.0.2"
|
|
125
|
+
},
|
|
126
|
+
"funding": {
|
|
127
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
128
|
+
},
|
|
129
|
+
"integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
|
|
130
|
+
"license": "MIT",
|
|
131
|
+
"optional": true,
|
|
132
|
+
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
|
|
133
|
+
"version": "1.0.4"
|
|
134
|
+
},
|
|
135
|
+
"node_modules/delayed-stream": {
|
|
136
|
+
"engines": {
|
|
137
|
+
"node": ">=0.4.0"
|
|
138
|
+
},
|
|
139
|
+
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
140
|
+
"license": "MIT",
|
|
141
|
+
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
142
|
+
"version": "1.0.0"
|
|
143
|
+
},
|
|
144
|
+
"node_modules/detect-libc": {
|
|
145
|
+
"engines": {
|
|
146
|
+
"node": ">=8"
|
|
147
|
+
},
|
|
148
|
+
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
|
149
|
+
"license": "Apache-2.0",
|
|
150
|
+
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
151
|
+
"version": "2.1.2"
|
|
152
|
+
},
|
|
153
|
+
"node_modules/dunder-proto": {
|
|
154
|
+
"dependencies": {
|
|
155
|
+
"call-bind-apply-helpers": "^1.0.1",
|
|
156
|
+
"es-errors": "^1.3.0",
|
|
157
|
+
"gopd": "^1.2.0"
|
|
158
|
+
},
|
|
159
|
+
"engines": {
|
|
160
|
+
"node": ">= 0.4"
|
|
161
|
+
},
|
|
162
|
+
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
|
163
|
+
"license": "MIT",
|
|
164
|
+
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
165
|
+
"version": "1.0.1"
|
|
166
|
+
},
|
|
167
|
+
"node_modules/easy-table": {
|
|
168
|
+
"integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
|
|
169
|
+
"license": "MIT",
|
|
170
|
+
"optionalDependencies": {
|
|
171
|
+
"wcwidth": ">=1.0.1"
|
|
172
|
+
},
|
|
173
|
+
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
|
|
174
|
+
"version": "1.1.0"
|
|
175
|
+
},
|
|
176
|
+
"node_modules/es-define-property": {
|
|
177
|
+
"engines": {
|
|
178
|
+
"node": ">= 0.4"
|
|
179
|
+
},
|
|
180
|
+
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
|
181
|
+
"license": "MIT",
|
|
182
|
+
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
|
183
|
+
"version": "1.0.1"
|
|
184
|
+
},
|
|
185
|
+
"node_modules/es-errors": {
|
|
186
|
+
"engines": {
|
|
187
|
+
"node": ">= 0.4"
|
|
188
|
+
},
|
|
189
|
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
|
190
|
+
"license": "MIT",
|
|
191
|
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
|
192
|
+
"version": "1.3.0"
|
|
193
|
+
},
|
|
194
|
+
"node_modules/es-object-atoms": {
|
|
195
|
+
"dependencies": {
|
|
196
|
+
"es-errors": "^1.3.0"
|
|
197
|
+
},
|
|
198
|
+
"engines": {
|
|
199
|
+
"node": ">= 0.4"
|
|
200
|
+
},
|
|
201
|
+
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
|
202
|
+
"license": "MIT",
|
|
203
|
+
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
|
204
|
+
"version": "1.1.1"
|
|
205
|
+
},
|
|
206
|
+
"node_modules/es-set-tostringtag": {
|
|
207
|
+
"dependencies": {
|
|
208
|
+
"es-errors": "^1.3.0",
|
|
209
|
+
"get-intrinsic": "^1.2.6",
|
|
210
|
+
"has-tostringtag": "^1.0.2",
|
|
211
|
+
"hasown": "^2.0.2"
|
|
212
|
+
},
|
|
213
|
+
"engines": {
|
|
214
|
+
"node": ">= 0.4"
|
|
215
|
+
},
|
|
216
|
+
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
|
217
|
+
"license": "MIT",
|
|
218
|
+
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
|
219
|
+
"version": "2.1.0"
|
|
220
|
+
},
|
|
221
|
+
"node_modules/follow-redirects": {
|
|
222
|
+
"engines": {
|
|
223
|
+
"node": ">=4.0"
|
|
224
|
+
},
|
|
225
|
+
"funding": [
|
|
226
|
+
{
|
|
227
|
+
"type": "individual",
|
|
228
|
+
"url": "https://github.com/sponsors/RubenVerborgh"
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
|
|
232
|
+
"license": "MIT",
|
|
233
|
+
"peerDependenciesMeta": {
|
|
234
|
+
"debug": {
|
|
235
|
+
"optional": true
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
|
|
239
|
+
"version": "1.15.6"
|
|
240
|
+
},
|
|
241
|
+
"node_modules/form-data": {
|
|
242
|
+
"dependencies": {
|
|
243
|
+
"asynckit": "^0.4.0",
|
|
244
|
+
"combined-stream": "^1.0.8",
|
|
245
|
+
"es-set-tostringtag": "^2.1.0",
|
|
246
|
+
"hasown": "^2.0.2",
|
|
247
|
+
"mime-types": "^2.1.12"
|
|
248
|
+
},
|
|
249
|
+
"engines": {
|
|
250
|
+
"node": ">= 6"
|
|
251
|
+
},
|
|
252
|
+
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
|
|
253
|
+
"license": "MIT",
|
|
254
|
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
|
|
255
|
+
"version": "4.0.4"
|
|
256
|
+
},
|
|
257
|
+
"node_modules/function-bind": {
|
|
258
|
+
"funding": {
|
|
259
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
260
|
+
},
|
|
261
|
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
262
|
+
"license": "MIT",
|
|
263
|
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
264
|
+
"version": "1.1.2"
|
|
265
|
+
},
|
|
266
|
+
"node_modules/get-intrinsic": {
|
|
267
|
+
"dependencies": {
|
|
268
|
+
"call-bind-apply-helpers": "^1.0.2",
|
|
269
|
+
"es-define-property": "^1.0.1",
|
|
270
|
+
"es-errors": "^1.3.0",
|
|
271
|
+
"es-object-atoms": "^1.1.1",
|
|
272
|
+
"function-bind": "^1.1.2",
|
|
273
|
+
"get-proto": "^1.0.1",
|
|
274
|
+
"gopd": "^1.2.0",
|
|
275
|
+
"has-symbols": "^1.1.0",
|
|
276
|
+
"hasown": "^2.0.2",
|
|
277
|
+
"math-intrinsics": "^1.1.0"
|
|
278
|
+
},
|
|
279
|
+
"engines": {
|
|
280
|
+
"node": ">= 0.4"
|
|
281
|
+
},
|
|
282
|
+
"funding": {
|
|
283
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
284
|
+
},
|
|
285
|
+
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
|
286
|
+
"license": "MIT",
|
|
287
|
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
|
288
|
+
"version": "1.3.0"
|
|
289
|
+
},
|
|
290
|
+
"node_modules/get-proto": {
|
|
291
|
+
"dependencies": {
|
|
292
|
+
"dunder-proto": "^1.0.1",
|
|
293
|
+
"es-object-atoms": "^1.0.0"
|
|
294
|
+
},
|
|
295
|
+
"engines": {
|
|
296
|
+
"node": ">= 0.4"
|
|
297
|
+
},
|
|
298
|
+
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
|
299
|
+
"license": "MIT",
|
|
300
|
+
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
|
301
|
+
"version": "1.0.1"
|
|
302
|
+
},
|
|
303
|
+
"node_modules/glob": {
|
|
304
|
+
"dependencies": {
|
|
305
|
+
"minimatch": "^10.1.1",
|
|
306
|
+
"minipass": "^7.1.2",
|
|
307
|
+
"path-scurry": "^2.0.0"
|
|
308
|
+
},
|
|
309
|
+
"engines": {
|
|
310
|
+
"node": "20 || >=22"
|
|
311
|
+
},
|
|
312
|
+
"funding": {
|
|
313
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
314
|
+
},
|
|
315
|
+
"integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
|
|
316
|
+
"license": "BlueOak-1.0.0",
|
|
317
|
+
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
|
|
318
|
+
"version": "13.0.0"
|
|
319
|
+
},
|
|
320
|
+
"node_modules/gopd": {
|
|
321
|
+
"engines": {
|
|
322
|
+
"node": ">= 0.4"
|
|
323
|
+
},
|
|
324
|
+
"funding": {
|
|
325
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
326
|
+
},
|
|
327
|
+
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
|
328
|
+
"license": "MIT",
|
|
329
|
+
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
|
330
|
+
"version": "1.2.0"
|
|
331
|
+
},
|
|
332
|
+
"node_modules/has-symbols": {
|
|
333
|
+
"engines": {
|
|
334
|
+
"node": ">= 0.4"
|
|
335
|
+
},
|
|
336
|
+
"funding": {
|
|
337
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
338
|
+
},
|
|
339
|
+
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
|
340
|
+
"license": "MIT",
|
|
341
|
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
|
342
|
+
"version": "1.1.0"
|
|
343
|
+
},
|
|
344
|
+
"node_modules/has-tostringtag": {
|
|
345
|
+
"dependencies": {
|
|
346
|
+
"has-symbols": "^1.0.3"
|
|
347
|
+
},
|
|
348
|
+
"engines": {
|
|
349
|
+
"node": ">= 0.4"
|
|
350
|
+
},
|
|
351
|
+
"funding": {
|
|
352
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
353
|
+
},
|
|
354
|
+
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
355
|
+
"license": "MIT",
|
|
356
|
+
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
|
357
|
+
"version": "1.0.2"
|
|
358
|
+
},
|
|
359
|
+
"node_modules/hasown": {
|
|
360
|
+
"dependencies": {
|
|
361
|
+
"function-bind": "^1.1.2"
|
|
362
|
+
},
|
|
363
|
+
"engines": {
|
|
364
|
+
"node": ">= 0.4"
|
|
365
|
+
},
|
|
366
|
+
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
|
367
|
+
"license": "MIT",
|
|
368
|
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
|
369
|
+
"version": "2.0.2"
|
|
370
|
+
},
|
|
371
|
+
"node_modules/lru-cache": {
|
|
372
|
+
"engines": {
|
|
373
|
+
"node": "20 || >=22"
|
|
374
|
+
},
|
|
375
|
+
"integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
|
|
376
|
+
"license": "BlueOak-1.0.0",
|
|
377
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
|
|
378
|
+
"version": "11.2.4"
|
|
379
|
+
},
|
|
380
|
+
"node_modules/math-intrinsics": {
|
|
381
|
+
"engines": {
|
|
382
|
+
"node": ">= 0.4"
|
|
383
|
+
},
|
|
384
|
+
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
|
385
|
+
"license": "MIT",
|
|
386
|
+
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
387
|
+
"version": "1.1.0"
|
|
388
|
+
},
|
|
389
|
+
"node_modules/mime-db": {
|
|
390
|
+
"engines": {
|
|
391
|
+
"node": ">= 0.6"
|
|
392
|
+
},
|
|
393
|
+
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
394
|
+
"license": "MIT",
|
|
395
|
+
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
396
|
+
"version": "1.52.0"
|
|
397
|
+
},
|
|
398
|
+
"node_modules/mime-types": {
|
|
399
|
+
"dependencies": {
|
|
400
|
+
"mime-db": "1.52.0"
|
|
401
|
+
},
|
|
402
|
+
"engines": {
|
|
403
|
+
"node": ">= 0.6"
|
|
404
|
+
},
|
|
405
|
+
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
|
406
|
+
"license": "MIT",
|
|
407
|
+
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
|
408
|
+
"version": "2.1.35"
|
|
409
|
+
},
|
|
410
|
+
"node_modules/minimatch": {
|
|
411
|
+
"dependencies": {
|
|
412
|
+
"@isaacs/brace-expansion": "^5.0.0"
|
|
413
|
+
},
|
|
414
|
+
"engines": {
|
|
415
|
+
"node": "20 || >=22"
|
|
416
|
+
},
|
|
417
|
+
"funding": {
|
|
418
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
419
|
+
},
|
|
420
|
+
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
|
|
421
|
+
"license": "BlueOak-1.0.0",
|
|
422
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
|
|
423
|
+
"version": "10.1.1"
|
|
424
|
+
},
|
|
425
|
+
"node_modules/minipass": {
|
|
426
|
+
"engines": {
|
|
427
|
+
"node": ">=16 || 14 >=14.17"
|
|
428
|
+
},
|
|
429
|
+
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
|
430
|
+
"license": "ISC",
|
|
431
|
+
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
|
432
|
+
"version": "7.1.2"
|
|
433
|
+
},
|
|
434
|
+
"node_modules/package-json-from-dist": {
|
|
435
|
+
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
|
|
436
|
+
"license": "BlueOak-1.0.0",
|
|
437
|
+
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
|
|
438
|
+
"version": "1.0.1"
|
|
439
|
+
},
|
|
440
|
+
"node_modules/path-scurry": {
|
|
441
|
+
"dependencies": {
|
|
442
|
+
"lru-cache": "^11.0.0",
|
|
443
|
+
"minipass": "^7.1.2"
|
|
444
|
+
},
|
|
445
|
+
"engines": {
|
|
446
|
+
"node": "20 || >=22"
|
|
447
|
+
},
|
|
448
|
+
"funding": {
|
|
449
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
450
|
+
},
|
|
451
|
+
"integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
|
|
452
|
+
"license": "BlueOak-1.0.0",
|
|
453
|
+
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
|
|
454
|
+
"version": "2.0.1"
|
|
455
|
+
},
|
|
456
|
+
"node_modules/prettier": {
|
|
457
|
+
"bin": {
|
|
458
|
+
"prettier": "bin/prettier.cjs"
|
|
459
|
+
},
|
|
460
|
+
"dev": true,
|
|
461
|
+
"engines": {
|
|
462
|
+
"node": ">=14"
|
|
463
|
+
},
|
|
464
|
+
"funding": {
|
|
465
|
+
"url": "https://github.com/prettier/prettier?sponsor=1"
|
|
466
|
+
},
|
|
467
|
+
"integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
|
|
468
|
+
"license": "MIT",
|
|
469
|
+
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
|
|
470
|
+
"version": "3.7.4"
|
|
471
|
+
},
|
|
472
|
+
"node_modules/proxy-from-env": {
|
|
473
|
+
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
|
474
|
+
"license": "MIT",
|
|
475
|
+
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
476
|
+
"version": "1.1.0"
|
|
477
|
+
},
|
|
478
|
+
"node_modules/rimraf": {
|
|
479
|
+
"bin": {
|
|
480
|
+
"rimraf": "dist/esm/bin.mjs"
|
|
481
|
+
},
|
|
482
|
+
"dependencies": {
|
|
483
|
+
"glob": "^13.0.0",
|
|
484
|
+
"package-json-from-dist": "^1.0.1"
|
|
485
|
+
},
|
|
486
|
+
"engines": {
|
|
487
|
+
"node": "20 || >=22"
|
|
488
|
+
},
|
|
489
|
+
"funding": {
|
|
490
|
+
"url": "https://github.com/sponsors/isaacs"
|
|
491
|
+
},
|
|
492
|
+
"integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
|
|
493
|
+
"license": "BlueOak-1.0.0",
|
|
494
|
+
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
|
|
495
|
+
"version": "6.1.2"
|
|
496
|
+
},
|
|
497
|
+
"node_modules/tunnel": {
|
|
498
|
+
"engines": {
|
|
499
|
+
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
|
500
|
+
},
|
|
501
|
+
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
|
502
|
+
"license": "MIT",
|
|
503
|
+
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
|
504
|
+
"version": "0.0.6"
|
|
505
|
+
},
|
|
506
|
+
"node_modules/wcwidth": {
|
|
507
|
+
"dependencies": {
|
|
508
|
+
"defaults": "^1.0.3"
|
|
509
|
+
},
|
|
510
|
+
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
|
511
|
+
"license": "MIT",
|
|
512
|
+
"optional": true,
|
|
513
|
+
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
|
514
|
+
"version": "1.0.1"
|
|
515
|
+
}
|
|
516
|
+
},
|
|
517
|
+
"requires": true,
|
|
518
|
+
"version": "0.1.0"
|
|
519
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifactDownloadUrl": "https://github.com/nabekou29/js-i18n-language-server/releases/download/v0.1.0",
|
|
3
|
+
"bin": {
|
|
4
|
+
"js-i18n-language-server": "run-js-i18n-language-server.js"
|
|
5
|
+
},
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"axios": "^1.13.2",
|
|
8
|
+
"axios-proxy-builder": "^0.1.2",
|
|
9
|
+
"console.table": "^0.10.0",
|
|
10
|
+
"detect-libc": "^2.1.2",
|
|
11
|
+
"rimraf": "^6.1.2"
|
|
12
|
+
},
|
|
13
|
+
"description": "A simple Language Server Protocol implementation in Rust",
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"prettier": "^3.7.4"
|
|
16
|
+
},
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=14",
|
|
19
|
+
"npm": ">=6"
|
|
20
|
+
},
|
|
21
|
+
"glibcMinimum": {
|
|
22
|
+
"major": 2,
|
|
23
|
+
"series": 35
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"development-tools",
|
|
27
|
+
"lsp",
|
|
28
|
+
"language-server",
|
|
29
|
+
"i18n",
|
|
30
|
+
"javascript"
|
|
31
|
+
],
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"name": "js-i18n-language-server",
|
|
34
|
+
"preferUnplugged": true,
|
|
35
|
+
"repository": "https://github.com/nabekou29/js-i18n-language-server",
|
|
36
|
+
"scripts": {
|
|
37
|
+
"fmt": "prettier --write **/*.js",
|
|
38
|
+
"fmt:check": "prettier --check **/*.js",
|
|
39
|
+
"postinstall": "node ./install.js"
|
|
40
|
+
},
|
|
41
|
+
"supportedPlatforms": {
|
|
42
|
+
"aarch64-apple-darwin": {
|
|
43
|
+
"artifactName": "js-i18n-language-server-aarch64-apple-darwin.tar.xz",
|
|
44
|
+
"bins": {
|
|
45
|
+
"js-i18n-language-server": "js-i18n-language-server"
|
|
46
|
+
},
|
|
47
|
+
"zipExt": ".tar.xz"
|
|
48
|
+
},
|
|
49
|
+
"aarch64-pc-windows-msvc": {
|
|
50
|
+
"artifactName": "js-i18n-language-server-x86_64-pc-windows-msvc.zip",
|
|
51
|
+
"bins": {
|
|
52
|
+
"js-i18n-language-server": "js-i18n-language-server.exe"
|
|
53
|
+
},
|
|
54
|
+
"zipExt": ".zip"
|
|
55
|
+
},
|
|
56
|
+
"aarch64-unknown-linux-gnu": {
|
|
57
|
+
"artifactName": "js-i18n-language-server-aarch64-unknown-linux-gnu.tar.xz",
|
|
58
|
+
"bins": {
|
|
59
|
+
"js-i18n-language-server": "js-i18n-language-server"
|
|
60
|
+
},
|
|
61
|
+
"zipExt": ".tar.xz"
|
|
62
|
+
},
|
|
63
|
+
"x86_64-apple-darwin": {
|
|
64
|
+
"artifactName": "js-i18n-language-server-x86_64-apple-darwin.tar.xz",
|
|
65
|
+
"bins": {
|
|
66
|
+
"js-i18n-language-server": "js-i18n-language-server"
|
|
67
|
+
},
|
|
68
|
+
"zipExt": ".tar.xz"
|
|
69
|
+
},
|
|
70
|
+
"x86_64-pc-windows-gnu": {
|
|
71
|
+
"artifactName": "js-i18n-language-server-x86_64-pc-windows-msvc.zip",
|
|
72
|
+
"bins": {
|
|
73
|
+
"js-i18n-language-server": "js-i18n-language-server.exe"
|
|
74
|
+
},
|
|
75
|
+
"zipExt": ".zip"
|
|
76
|
+
},
|
|
77
|
+
"x86_64-pc-windows-msvc": {
|
|
78
|
+
"artifactName": "js-i18n-language-server-x86_64-pc-windows-msvc.zip",
|
|
79
|
+
"bins": {
|
|
80
|
+
"js-i18n-language-server": "js-i18n-language-server.exe"
|
|
81
|
+
},
|
|
82
|
+
"zipExt": ".zip"
|
|
83
|
+
},
|
|
84
|
+
"x86_64-unknown-linux-gnu": {
|
|
85
|
+
"artifactName": "js-i18n-language-server-x86_64-unknown-linux-gnu.tar.xz",
|
|
86
|
+
"bins": {
|
|
87
|
+
"js-i18n-language-server": "js-i18n-language-server"
|
|
88
|
+
},
|
|
89
|
+
"zipExt": ".tar.xz"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"version": "0.1.0",
|
|
93
|
+
"volta": {
|
|
94
|
+
"node": "18.14.1",
|
|
95
|
+
"npm": "9.5.0"
|
|
96
|
+
}
|
|
97
|
+
}
|