@domainlang/language 0.1.82 → 0.4.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/README.md +18 -18
- package/out/domain-lang-module.d.ts +2 -0
- package/out/domain-lang-module.js +11 -3
- package/out/domain-lang-module.js.map +1 -1
- package/out/generated/ast.d.ts +8 -19
- package/out/generated/ast.js +1 -10
- package/out/generated/ast.js.map +1 -1
- package/out/generated/grammar.d.ts +1 -1
- package/out/generated/grammar.js +28 -123
- package/out/generated/grammar.js.map +1 -1
- package/out/generated/module.d.ts +1 -1
- package/out/generated/module.js +1 -1
- package/out/index.d.ts +3 -0
- package/out/index.js +5 -0
- package/out/index.js.map +1 -1
- package/out/lsp/domain-lang-code-actions.d.ts +55 -0
- package/out/lsp/domain-lang-code-actions.js +143 -0
- package/out/lsp/domain-lang-code-actions.js.map +1 -0
- package/out/lsp/domain-lang-workspace-manager.d.ts +21 -0
- package/out/lsp/domain-lang-workspace-manager.js +93 -0
- package/out/lsp/domain-lang-workspace-manager.js.map +1 -0
- package/out/lsp/hover/domain-lang-hover.js +0 -4
- package/out/lsp/hover/domain-lang-hover.js.map +1 -1
- package/out/lsp/manifest-diagnostics.d.ts +82 -0
- package/out/lsp/manifest-diagnostics.js +230 -0
- package/out/lsp/manifest-diagnostics.js.map +1 -0
- package/out/sdk/index.d.ts +1 -1
- package/out/sdk/loader-node.d.ts +7 -3
- package/out/sdk/loader-node.js +24 -9
- package/out/sdk/loader-node.js.map +1 -1
- package/out/sdk/types.d.ts +0 -21
- package/out/services/dependency-analyzer.d.ts +3 -39
- package/out/services/dependency-analyzer.js +22 -47
- package/out/services/dependency-analyzer.js.map +1 -1
- package/out/services/dependency-resolver.d.ts +68 -45
- package/out/services/dependency-resolver.js +243 -43
- package/out/services/dependency-resolver.js.map +1 -1
- package/out/services/git-url-resolver.browser.d.ts +4 -12
- package/out/services/git-url-resolver.browser.js +5 -1
- package/out/services/git-url-resolver.browser.js.map +1 -1
- package/out/services/git-url-resolver.d.ts +22 -56
- package/out/services/git-url-resolver.js +70 -36
- package/out/services/git-url-resolver.js.map +1 -1
- package/out/services/governance-validator.d.ts +1 -37
- package/out/services/governance-validator.js +4 -10
- package/out/services/governance-validator.js.map +1 -1
- package/out/services/import-resolver.d.ts +65 -6
- package/out/services/import-resolver.js +223 -5
- package/out/services/import-resolver.js.map +1 -1
- package/out/services/performance-optimizer.d.ts +1 -1
- package/out/services/semver.d.ts +98 -0
- package/out/services/semver.js +195 -0
- package/out/services/semver.js.map +1 -0
- package/out/services/types.d.ts +340 -0
- package/out/services/types.js +46 -0
- package/out/services/types.js.map +1 -0
- package/out/services/workspace-manager.d.ts +57 -10
- package/out/services/workspace-manager.js +187 -21
- package/out/services/workspace-manager.js.map +1 -1
- package/out/syntaxes/domain-lang.monarch.js +1 -1
- package/out/syntaxes/domain-lang.monarch.js.map +1 -1
- package/out/utils/import-utils.d.ts +4 -12
- package/out/utils/import-utils.js +35 -135
- package/out/utils/import-utils.js.map +1 -1
- package/out/validation/constants.d.ts +103 -0
- package/out/validation/constants.js +141 -2
- package/out/validation/constants.js.map +1 -1
- package/out/validation/domain.js +46 -1
- package/out/validation/domain.js.map +1 -1
- package/out/validation/import.d.ts +46 -22
- package/out/validation/import.js +187 -85
- package/out/validation/import.js.map +1 -1
- package/out/validation/manifest.d.ts +144 -0
- package/out/validation/manifest.js +327 -0
- package/out/validation/manifest.js.map +1 -0
- package/out/validation/maps.js +10 -6
- package/out/validation/maps.js.map +1 -1
- package/out/validation/metadata.js +5 -1
- package/out/validation/metadata.js.map +1 -1
- package/package.json +8 -6
- package/src/domain-lang-module.ts +18 -6
- package/src/domain-lang.langium +7 -12
- package/src/generated/ast.ts +7 -20
- package/src/generated/grammar.ts +28 -123
- package/src/generated/module.ts +1 -1
- package/src/index.ts +7 -0
- package/src/lsp/domain-lang-code-actions.ts +189 -0
- package/src/lsp/domain-lang-workspace-manager.ts +104 -0
- package/src/lsp/hover/domain-lang-hover.ts +0 -2
- package/src/lsp/manifest-diagnostics.ts +290 -0
- package/src/sdk/index.ts +0 -2
- package/src/sdk/loader-node.ts +29 -9
- package/src/sdk/types.ts +0 -23
- package/src/services/dependency-analyzer.ts +24 -84
- package/src/services/dependency-resolver.ts +301 -84
- package/src/services/git-url-resolver.browser.ts +9 -14
- package/src/services/git-url-resolver.ts +86 -93
- package/src/services/governance-validator.ts +5 -47
- package/src/services/import-resolver.ts +270 -8
- package/src/services/performance-optimizer.ts +1 -1
- package/src/services/semver.ts +213 -0
- package/src/services/types.ts +415 -0
- package/src/services/workspace-manager.ts +237 -46
- package/src/utils/import-utils.ts +38 -160
- package/src/validation/constants.ts +182 -2
- package/src/validation/domain.ts +54 -1
- package/src/validation/import.ts +228 -104
- package/src/validation/manifest.ts +439 -0
- package/src/validation/maps.ts +10 -6
- package/src/validation/metadata.ts +5 -1
- package/src/syntaxes/domain-lang.monarch.ts +0 -29
|
@@ -10,55 +10,7 @@
|
|
|
10
10
|
* - Version pinning at repository level
|
|
11
11
|
*/
|
|
12
12
|
import { URI } from 'langium';
|
|
13
|
-
|
|
14
|
-
* Parsed git import with repository-level information.
|
|
15
|
-
*/
|
|
16
|
-
export interface GitImportInfo {
|
|
17
|
-
/** Original import string */
|
|
18
|
-
original: string;
|
|
19
|
-
/** Git platform (github, gitlab, bitbucket, or generic) */
|
|
20
|
-
platform: 'github' | 'gitlab' | 'bitbucket' | 'generic';
|
|
21
|
-
/** Repository owner/organization */
|
|
22
|
-
owner: string;
|
|
23
|
-
/** Repository name */
|
|
24
|
-
repo: string;
|
|
25
|
-
/** Version (tag, branch, or commit hash) */
|
|
26
|
-
version: string;
|
|
27
|
-
/** Full git repository URL */
|
|
28
|
-
repoUrl: string;
|
|
29
|
-
/** Package main entry point (from dlang.toml or default index.dlang) */
|
|
30
|
-
entryPoint: string;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Package metadata from model.yaml
|
|
34
|
-
*/
|
|
35
|
-
export interface PackageMetadata {
|
|
36
|
-
name?: string;
|
|
37
|
-
version?: string;
|
|
38
|
-
main?: string;
|
|
39
|
-
entry?: string;
|
|
40
|
-
exports?: Record<string, string>;
|
|
41
|
-
dependencies?: Record<string, string>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Lock file format (dlang.lock)
|
|
45
|
-
*
|
|
46
|
-
* Pins exact versions and commit hashes for all dependencies
|
|
47
|
-
* in the dependency tree. Ensures reproducible builds.
|
|
48
|
-
*/
|
|
49
|
-
export interface LockFile {
|
|
50
|
-
version: string;
|
|
51
|
-
dependencies: Record<string, LockedDependency>;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* A single locked dependency with pinned version and commit.
|
|
55
|
-
*/
|
|
56
|
-
export interface LockedDependency {
|
|
57
|
-
version: string;
|
|
58
|
-
resolved: string;
|
|
59
|
-
commit: string;
|
|
60
|
-
integrity?: string;
|
|
61
|
-
}
|
|
13
|
+
import type { GitImportInfo, LockFile } from './types.js';
|
|
62
14
|
/**
|
|
63
15
|
* Parses import URLs into structured git import information.
|
|
64
16
|
*
|
|
@@ -104,16 +56,23 @@ export declare class GitUrlParser {
|
|
|
104
56
|
* Resolves git repository imports to local entry point files.
|
|
105
57
|
*
|
|
106
58
|
* Implements a content-addressable cache:
|
|
107
|
-
* - Cache location:
|
|
108
|
-
* - Cache key:
|
|
59
|
+
* - Cache location: .dlang/packages/ (project-local, per PRS-010)
|
|
60
|
+
* - Cache key: {owner}/{repo}/{commit-hash}
|
|
109
61
|
* - Downloads entire repository on first use
|
|
110
|
-
* - Reads
|
|
62
|
+
* - Reads model.yaml to find entry point
|
|
111
63
|
* - Returns URI to entry point file
|
|
112
64
|
*/
|
|
113
65
|
export declare class GitUrlResolver {
|
|
114
66
|
private cacheDir;
|
|
115
67
|
private lockFile?;
|
|
116
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Creates a GitUrlResolver with a project-local cache directory.
|
|
70
|
+
*
|
|
71
|
+
* @param cacheDir - The cache directory path. Per PRS-010, this should be
|
|
72
|
+
* the project's `.dlang/packages/` directory for isolation
|
|
73
|
+
* and reproducibility (like node_modules).
|
|
74
|
+
*/
|
|
75
|
+
constructor(cacheDir: string);
|
|
117
76
|
/**
|
|
118
77
|
* Sets the lock file for dependency resolution.
|
|
119
78
|
*
|
|
@@ -133,13 +92,15 @@ export declare class GitUrlResolver {
|
|
|
133
92
|
* 3. Resolve version to commit hash (if not locked)
|
|
134
93
|
* 4. Check cache
|
|
135
94
|
* 5. Download repository if not cached
|
|
136
|
-
* 6. Read
|
|
95
|
+
* 6. Read model.yaml to find entry point
|
|
137
96
|
* 7. Return URI to entry point file
|
|
138
97
|
*
|
|
139
98
|
* @param importUrl - The git import URL
|
|
140
99
|
* @returns URI to the package's entry point file
|
|
141
100
|
*/
|
|
142
|
-
resolve(importUrl: string
|
|
101
|
+
resolve(importUrl: string, options?: {
|
|
102
|
+
allowNetwork?: boolean;
|
|
103
|
+
}): Promise<URI>;
|
|
143
104
|
/**
|
|
144
105
|
* Reads model.yaml to get the package entry point.
|
|
145
106
|
* Falls back to index.dlang if no model.yaml found.
|
|
@@ -160,7 +121,10 @@ export declare class GitUrlResolver {
|
|
|
160
121
|
/**
|
|
161
122
|
* Gets the local cache path for a git repository.
|
|
162
123
|
*
|
|
163
|
-
* Format:
|
|
124
|
+
* Format: .dlang/packages/{owner}/{repo}/{version}/
|
|
125
|
+
*
|
|
126
|
+
* Per PRS-010: Project-local cache structure mirrors the Design Considerations
|
|
127
|
+
* section showing `.dlang/packages/{owner}/{repo}/{version}/` layout.
|
|
164
128
|
*/
|
|
165
129
|
private getCachePath;
|
|
166
130
|
/**
|
|
@@ -179,6 +143,8 @@ export declare class GitUrlResolver {
|
|
|
179
143
|
clearCache(): Promise<void>;
|
|
180
144
|
/**
|
|
181
145
|
* Gets cache statistics (size, number of cached repos, etc.).
|
|
146
|
+
*
|
|
147
|
+
* Cache structure: .dlang/packages/{owner}/{repo}/{version}/
|
|
182
148
|
*/
|
|
183
149
|
getCacheStats(): Promise<{
|
|
184
150
|
totalSize: number;
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
import { URI } from 'langium';
|
|
13
13
|
import path from 'node:path';
|
|
14
14
|
import fs from 'node:fs/promises';
|
|
15
|
-
import os from 'node:os';
|
|
16
15
|
import { exec } from 'node:child_process';
|
|
17
16
|
import { promisify } from 'node:util';
|
|
18
17
|
import YAML from 'yaml';
|
|
@@ -59,7 +58,8 @@ export class GitUrlParser {
|
|
|
59
58
|
if (importStr.startsWith('https://') || importStr.startsWith('git://')) {
|
|
60
59
|
return this.parseFullUrl(importStr);
|
|
61
60
|
}
|
|
62
|
-
throw new Error(`Invalid git import URL: ${importStr}`
|
|
61
|
+
throw new Error(`Invalid git import URL: '${importStr}'.\n` +
|
|
62
|
+
`Hint: Use 'owner/repo' or 'owner/repo@version' format (e.g., 'domainlang/core@v1.0.0').`);
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Checks if string is GitHub shorthand format.
|
|
@@ -73,7 +73,8 @@ export class GitUrlParser {
|
|
|
73
73
|
static parseGitHubShorthand(importStr) {
|
|
74
74
|
const match = importStr.match(/^([a-zA-Z0-9-]+)\/([a-zA-Z0-9-_.]+)(?:@([^/]+))?$/);
|
|
75
75
|
if (!match) {
|
|
76
|
-
throw new Error(`Invalid GitHub shorthand format: ${importStr}`
|
|
76
|
+
throw new Error(`Invalid GitHub shorthand format: '${importStr}'.\n` +
|
|
77
|
+
`Hint: Use 'owner/repo' or 'owner/repo@version' format.`);
|
|
77
78
|
}
|
|
78
79
|
const [, owner, repo, version] = match;
|
|
79
80
|
const resolvedVersion = version || 'main';
|
|
@@ -84,7 +85,7 @@ export class GitUrlParser {
|
|
|
84
85
|
repo,
|
|
85
86
|
version: resolvedVersion,
|
|
86
87
|
repoUrl: `https://github.com/${owner}/${repo}`,
|
|
87
|
-
entryPoint: 'index.dlang', // Default, will be resolved from
|
|
88
|
+
entryPoint: 'index.dlang', // Default, will be resolved from model.yaml
|
|
88
89
|
};
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
@@ -152,22 +153,34 @@ export class GitUrlParser {
|
|
|
152
153
|
entryPoint: 'index.dlang',
|
|
153
154
|
};
|
|
154
155
|
}
|
|
155
|
-
throw new Error(`Unsupported git URL format: ${importStr}`
|
|
156
|
+
throw new Error(`Unsupported git URL format: '${importStr}'.\n` +
|
|
157
|
+
`Supported formats:\n` +
|
|
158
|
+
` • owner/repo (GitHub shorthand)\n` +
|
|
159
|
+
` • owner/repo@version\n` +
|
|
160
|
+
` • https://github.com/owner/repo\n` +
|
|
161
|
+
` • https://gitlab.com/owner/repo`);
|
|
156
162
|
}
|
|
157
163
|
}
|
|
158
164
|
/**
|
|
159
165
|
* Resolves git repository imports to local entry point files.
|
|
160
166
|
*
|
|
161
167
|
* Implements a content-addressable cache:
|
|
162
|
-
* - Cache location:
|
|
163
|
-
* - Cache key:
|
|
168
|
+
* - Cache location: .dlang/packages/ (project-local, per PRS-010)
|
|
169
|
+
* - Cache key: {owner}/{repo}/{commit-hash}
|
|
164
170
|
* - Downloads entire repository on first use
|
|
165
|
-
* - Reads
|
|
171
|
+
* - Reads model.yaml to find entry point
|
|
166
172
|
* - Returns URI to entry point file
|
|
167
173
|
*/
|
|
168
174
|
export class GitUrlResolver {
|
|
175
|
+
/**
|
|
176
|
+
* Creates a GitUrlResolver with a project-local cache directory.
|
|
177
|
+
*
|
|
178
|
+
* @param cacheDir - The cache directory path. Per PRS-010, this should be
|
|
179
|
+
* the project's `.dlang/packages/` directory for isolation
|
|
180
|
+
* and reproducibility (like node_modules).
|
|
181
|
+
*/
|
|
169
182
|
constructor(cacheDir) {
|
|
170
|
-
this.cacheDir = cacheDir
|
|
183
|
+
this.cacheDir = cacheDir;
|
|
171
184
|
}
|
|
172
185
|
/**
|
|
173
186
|
* Sets the lock file for dependency resolution.
|
|
@@ -190,13 +203,13 @@ export class GitUrlResolver {
|
|
|
190
203
|
* 3. Resolve version to commit hash (if not locked)
|
|
191
204
|
* 4. Check cache
|
|
192
205
|
* 5. Download repository if not cached
|
|
193
|
-
* 6. Read
|
|
206
|
+
* 6. Read model.yaml to find entry point
|
|
194
207
|
* 7. Return URI to entry point file
|
|
195
208
|
*
|
|
196
209
|
* @param importUrl - The git import URL
|
|
197
210
|
* @returns URI to the package's entry point file
|
|
198
211
|
*/
|
|
199
|
-
async resolve(importUrl) {
|
|
212
|
+
async resolve(importUrl, options = {}) {
|
|
200
213
|
const gitInfo = GitUrlParser.parse(importUrl);
|
|
201
214
|
// Check lock file for pinned version (handles transitive dependencies)
|
|
202
215
|
let commitHash;
|
|
@@ -206,12 +219,22 @@ export class GitUrlResolver {
|
|
|
206
219
|
commitHash = this.lockFile.dependencies[packageKey].commit;
|
|
207
220
|
}
|
|
208
221
|
else {
|
|
209
|
-
//
|
|
222
|
+
// No lock file entry - need to resolve dynamically
|
|
223
|
+
if (options.allowNetwork === false) {
|
|
224
|
+
// LSP mode: cannot perform network operations
|
|
225
|
+
throw new Error(`Dependency '${packageKey}' not installed.\n` +
|
|
226
|
+
`Hint: Run 'dlang install' to fetch dependencies and generate model.lock.`);
|
|
227
|
+
}
|
|
228
|
+
// CLI/dev mode: resolve version via network
|
|
210
229
|
commitHash = await this.resolveCommit(gitInfo);
|
|
211
230
|
}
|
|
212
231
|
// Check cache
|
|
213
232
|
const cachedPath = this.getCachePath(gitInfo, commitHash);
|
|
214
233
|
if (!(await this.existsInCache(cachedPath))) {
|
|
234
|
+
if (options.allowNetwork === false) {
|
|
235
|
+
throw new Error(`Dependency '${packageKey}' not installed.\n` +
|
|
236
|
+
`Hint: Run 'dlang install' to fetch dependencies.`);
|
|
237
|
+
}
|
|
215
238
|
// Download repository
|
|
216
239
|
await this.downloadRepo(gitInfo, commitHash, cachedPath);
|
|
217
240
|
}
|
|
@@ -220,7 +243,8 @@ export class GitUrlResolver {
|
|
|
220
243
|
const entryFile = path.join(cachedPath, entryPoint);
|
|
221
244
|
// Verify entry point exists
|
|
222
245
|
if (!(await this.existsInCache(entryFile))) {
|
|
223
|
-
throw new Error(`Entry point
|
|
246
|
+
throw new Error(`Entry point '${entryPoint}' not found in package '${gitInfo.owner}/${gitInfo.repo}@${gitInfo.version}'.\n` +
|
|
247
|
+
`Hint: Ensure the package has an entry point file (default: index.dlang).`);
|
|
224
248
|
}
|
|
225
249
|
return URI.file(entryFile);
|
|
226
250
|
}
|
|
@@ -233,8 +257,7 @@ export class GitUrlResolver {
|
|
|
233
257
|
try {
|
|
234
258
|
const yamlContent = await fs.readFile(yamlPath, 'utf-8');
|
|
235
259
|
const metadata = this.parseYaml(yamlContent);
|
|
236
|
-
|
|
237
|
-
return metadata.entry || metadata.main || 'index.dlang';
|
|
260
|
+
return metadata.entry ?? 'index.dlang';
|
|
238
261
|
}
|
|
239
262
|
catch {
|
|
240
263
|
// No model.yaml or parse error, use default
|
|
@@ -252,7 +275,6 @@ export class GitUrlResolver {
|
|
|
252
275
|
const parsed = YAML.parse(content);
|
|
253
276
|
return {
|
|
254
277
|
entry: parsed.model?.entry,
|
|
255
|
-
main: parsed.model?.main,
|
|
256
278
|
name: parsed.model?.name,
|
|
257
279
|
version: parsed.model?.version,
|
|
258
280
|
};
|
|
@@ -272,19 +294,25 @@ export class GitUrlResolver {
|
|
|
272
294
|
if (/^[0-9a-f]{7,40}$/i.test(gitInfo.version)) {
|
|
273
295
|
return gitInfo.version;
|
|
274
296
|
}
|
|
275
|
-
throw new Error(`Could not resolve version
|
|
297
|
+
throw new Error(`Could not resolve version '${gitInfo.version}' for ${gitInfo.repoUrl}.\n` +
|
|
298
|
+
`Hint: Check that the version (tag, branch, or commit) exists in the repository.`);
|
|
276
299
|
}
|
|
277
300
|
catch (error) {
|
|
278
|
-
throw new Error(`Failed to resolve git version ${gitInfo.version} for ${gitInfo.repoUrl}
|
|
301
|
+
throw new Error(`Failed to resolve git version '${gitInfo.version}' for ${gitInfo.repoUrl}.\n` +
|
|
302
|
+
`Error: ${error}\n` +
|
|
303
|
+
`Hint: Verify the repository URL is correct and accessible.`);
|
|
279
304
|
}
|
|
280
305
|
}
|
|
281
306
|
/**
|
|
282
307
|
* Gets the local cache path for a git repository.
|
|
283
308
|
*
|
|
284
|
-
* Format:
|
|
309
|
+
* Format: .dlang/packages/{owner}/{repo}/{version}/
|
|
310
|
+
*
|
|
311
|
+
* Per PRS-010: Project-local cache structure mirrors the Design Considerations
|
|
312
|
+
* section showing `.dlang/packages/{owner}/{repo}/{version}/` layout.
|
|
285
313
|
*/
|
|
286
314
|
getCachePath(gitInfo, commitHash) {
|
|
287
|
-
return path.join(this.cacheDir, gitInfo.
|
|
315
|
+
return path.join(this.cacheDir, gitInfo.owner, gitInfo.repo, commitHash);
|
|
288
316
|
}
|
|
289
317
|
/**
|
|
290
318
|
* Checks if a file or directory exists in the cache.
|
|
@@ -316,7 +344,9 @@ export class GitUrlResolver {
|
|
|
316
344
|
catch (error) {
|
|
317
345
|
await fs.rm(targetDir, { recursive: true, force: true });
|
|
318
346
|
const message = error instanceof Error ? error.message : String(error);
|
|
319
|
-
throw new Error(`Failed to download
|
|
347
|
+
throw new Error(`Failed to download package '${gitInfo.owner}/${gitInfo.repo}@${gitInfo.version}'.\n` +
|
|
348
|
+
`Error: ${message}\n` +
|
|
349
|
+
`Hint: Check your network connection and verify the repository URL is correct.`);
|
|
320
350
|
}
|
|
321
351
|
}
|
|
322
352
|
/**
|
|
@@ -327,26 +357,30 @@ export class GitUrlResolver {
|
|
|
327
357
|
}
|
|
328
358
|
/**
|
|
329
359
|
* Gets cache statistics (size, number of cached repos, etc.).
|
|
360
|
+
*
|
|
361
|
+
* Cache structure: .dlang/packages/{owner}/{repo}/{version}/
|
|
330
362
|
*/
|
|
331
363
|
async getCacheStats() {
|
|
332
364
|
let totalSize = 0;
|
|
333
365
|
let repoCount = 0;
|
|
334
366
|
try {
|
|
335
|
-
const
|
|
336
|
-
for (const
|
|
337
|
-
const
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
367
|
+
const owners = await fs.readdir(this.cacheDir);
|
|
368
|
+
for (const owner of owners) {
|
|
369
|
+
const ownerPath = path.join(this.cacheDir, owner);
|
|
370
|
+
const ownerStat = await fs.stat(ownerPath);
|
|
371
|
+
if (!ownerStat.isDirectory())
|
|
372
|
+
continue;
|
|
373
|
+
const repos = await fs.readdir(ownerPath);
|
|
374
|
+
for (const repo of repos) {
|
|
375
|
+
const repoPath = path.join(ownerPath, repo);
|
|
376
|
+
const repoStat = await fs.stat(repoPath);
|
|
377
|
+
if (!repoStat.isDirectory())
|
|
378
|
+
continue;
|
|
379
|
+
const versions = await fs.readdir(repoPath);
|
|
380
|
+
repoCount += versions.length;
|
|
381
|
+
for (const version of versions) {
|
|
382
|
+
const versionPath = path.join(repoPath, version);
|
|
383
|
+
totalSize += await this.getDirectorySize(versionPath);
|
|
350
384
|
}
|
|
351
385
|
}
|
|
352
386
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-url-resolver.js","sourceRoot":"","sources":["../../src/services/git-url-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"git-url-resolver.js","sourceRoot":"","sources":["../../src/services/git-url-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,39 +18,7 @@
|
|
|
18
18
|
* requireTeamOwnership: true
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
-
import type { LockFile } from './
|
|
22
|
-
export interface GovernancePolicy {
|
|
23
|
-
/** Allowed git domains (e.g., ['github.com/acme']) */
|
|
24
|
-
allowedSources?: string[];
|
|
25
|
-
/** Blocked packages or patterns */
|
|
26
|
-
blockedPackages?: string[];
|
|
27
|
-
/** Require stable versions only (no pre-release) */
|
|
28
|
-
requireStableVersions?: boolean;
|
|
29
|
-
/** Require team ownership metadata */
|
|
30
|
-
requireTeamOwnership?: boolean;
|
|
31
|
-
/** Allowed licenses */
|
|
32
|
-
allowedLicenses?: string[];
|
|
33
|
-
}
|
|
34
|
-
export interface GovernanceMetadata {
|
|
35
|
-
/** Team responsible for the model */
|
|
36
|
-
team?: string;
|
|
37
|
-
/** Contact email */
|
|
38
|
-
contact?: string;
|
|
39
|
-
/** Business domain */
|
|
40
|
-
domain?: string;
|
|
41
|
-
/** Compliance tags */
|
|
42
|
-
compliance?: string[];
|
|
43
|
-
}
|
|
44
|
-
export interface GovernanceViolation {
|
|
45
|
-
/** Type of violation */
|
|
46
|
-
type: 'blocked-source' | 'unstable-version' | 'missing-metadata' | 'license-violation';
|
|
47
|
-
/** Package that violates the policy */
|
|
48
|
-
packageKey: string;
|
|
49
|
-
/** Violation message */
|
|
50
|
-
message: string;
|
|
51
|
-
/** Severity: error or warning */
|
|
52
|
-
severity: 'error' | 'warning';
|
|
53
|
-
}
|
|
21
|
+
import type { LockFile, GovernancePolicy, GovernanceMetadata, GovernanceViolation } from './types.js';
|
|
54
22
|
/**
|
|
55
23
|
* Validates dependencies against organizational governance policies.
|
|
56
24
|
*/
|
|
@@ -69,10 +37,6 @@ export declare class GovernanceValidator {
|
|
|
69
37
|
* Generates an audit report for compliance tracking.
|
|
70
38
|
*/
|
|
71
39
|
generateAuditReport(lockFile: LockFile, workspaceRoot: string): Promise<string>;
|
|
72
|
-
/**
|
|
73
|
-
* Checks if a version is a pre-release.
|
|
74
|
-
*/
|
|
75
|
-
private isPreReleaseVersion;
|
|
76
40
|
}
|
|
77
41
|
/**
|
|
78
42
|
* Loads governance policy from model.yaml governance section.
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
import path from 'node:path';
|
|
22
22
|
import fs from 'node:fs/promises';
|
|
23
23
|
import YAML from 'yaml';
|
|
24
|
+
import { isPreRelease } from './semver.js';
|
|
24
25
|
/**
|
|
25
26
|
* Validates dependencies against organizational governance policies.
|
|
26
27
|
*/
|
|
@@ -61,11 +62,11 @@ export class GovernanceValidator {
|
|
|
61
62
|
}
|
|
62
63
|
// Check version stability
|
|
63
64
|
if (this.policy.requireStableVersions) {
|
|
64
|
-
if (
|
|
65
|
+
if (isPreRelease(locked.ref)) {
|
|
65
66
|
violations.push({
|
|
66
67
|
type: 'unstable-version',
|
|
67
68
|
packageKey,
|
|
68
|
-
message: `Pre-release
|
|
69
|
+
message: `Pre-release ref not allowed: ${locked.ref}`,
|
|
69
70
|
severity: 'error',
|
|
70
71
|
});
|
|
71
72
|
}
|
|
@@ -115,7 +116,7 @@ export class GovernanceValidator {
|
|
|
115
116
|
lines.push('');
|
|
116
117
|
lines.push('Dependencies:');
|
|
117
118
|
for (const [packageKey, locked] of Object.entries(lockFile.dependencies)) {
|
|
118
|
-
lines.push(` - ${packageKey}@${locked.
|
|
119
|
+
lines.push(` - ${packageKey}@${locked.ref}`);
|
|
119
120
|
lines.push(` Source: ${locked.resolved}`);
|
|
120
121
|
lines.push(` Commit: ${locked.commit}`);
|
|
121
122
|
}
|
|
@@ -132,13 +133,6 @@ export class GovernanceValidator {
|
|
|
132
133
|
}
|
|
133
134
|
return lines.join('\n');
|
|
134
135
|
}
|
|
135
|
-
/**
|
|
136
|
-
* Checks if a version is a pre-release.
|
|
137
|
-
*/
|
|
138
|
-
isPreReleaseVersion(version) {
|
|
139
|
-
const clean = version.replace(/^v/, '');
|
|
140
|
-
return /-(alpha|beta|rc|pre|dev|snapshot)/.test(clean);
|
|
141
|
-
}
|
|
142
136
|
}
|
|
143
137
|
/**
|
|
144
138
|
* Loads governance policy from model.yaml governance section.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance-validator.js","sourceRoot":"","sources":["../../src/services/governance-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"governance-validator.js","sourceRoot":"","sources":["../../src/services/governance-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,75 @@
|
|
|
1
|
-
import { URI } from 'langium';
|
|
1
|
+
import { URI, type LangiumDocument } from 'langium';
|
|
2
2
|
import type { DomainLangServices } from '../domain-lang-module.js';
|
|
3
|
-
import type { LockFile } from './
|
|
3
|
+
import type { LockFile } from './types.js';
|
|
4
4
|
/**
|
|
5
|
-
* ImportResolver resolves import statements using
|
|
5
|
+
* ImportResolver resolves import statements using manifest-centric rules (PRS-010).
|
|
6
|
+
*
|
|
7
|
+
* Import Types (PRS-010):
|
|
8
|
+
* - Local relative: ./path, ../path → Directory-first resolution
|
|
9
|
+
* - Path aliases: @/path, @alias/path → Configurable in model.yaml paths section
|
|
10
|
+
* - External: owner/package → Manifest dependencies
|
|
11
|
+
*
|
|
12
|
+
* Directory-First Resolution:
|
|
13
|
+
* - ./types → ./types/index.dlang → ./types.dlang
|
|
14
|
+
* - Module entry defaults to index.dlang (no model.yaml required)
|
|
6
15
|
*/
|
|
7
16
|
export declare class ImportResolver {
|
|
8
|
-
private workspaceManager;
|
|
17
|
+
private readonly workspaceManager;
|
|
9
18
|
constructor(services: DomainLangServices);
|
|
10
19
|
/**
|
|
11
|
-
* Resolve an import
|
|
20
|
+
* Resolve an import specifier relative to a Langium document.
|
|
12
21
|
*/
|
|
13
|
-
|
|
22
|
+
resolveForDocument(document: LangiumDocument, specifier: string): Promise<URI>;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve an import specifier from a base directory (non-LSP contexts).
|
|
25
|
+
*/
|
|
26
|
+
resolveFrom(baseDir: string, specifier: string): Promise<URI>;
|
|
27
|
+
/**
|
|
28
|
+
* Resolves a path alias import.
|
|
29
|
+
*
|
|
30
|
+
* @param specifier - Import specifier starting with @ (e.g., "@/lib", "@shared/types")
|
|
31
|
+
*/
|
|
32
|
+
private resolvePathAlias;
|
|
33
|
+
/**
|
|
34
|
+
* Finds the longest matching alias for a specifier.
|
|
35
|
+
*/
|
|
36
|
+
private findMatchingAlias;
|
|
37
|
+
/**
|
|
38
|
+
* Resolves an external dependency via manifest.
|
|
39
|
+
*
|
|
40
|
+
* NEW FORMAT (PRS-010): Import specifier is owner/package format.
|
|
41
|
+
*/
|
|
42
|
+
private resolveExternalDependency;
|
|
43
|
+
/**
|
|
44
|
+
* Resolves a local path using directory-first resolution.
|
|
45
|
+
*
|
|
46
|
+
* Per PRS-010 (updated design):
|
|
47
|
+
* - If path ends with .dlang → direct file import
|
|
48
|
+
* - If no extension → directory-first:
|
|
49
|
+
* 1. Try ./path/index.dlang (module default, no model.yaml required)
|
|
50
|
+
* 2. Try ./path.dlang (file fallback)
|
|
51
|
+
*/
|
|
52
|
+
private resolveLocalPath;
|
|
53
|
+
/**
|
|
54
|
+
* Directory-first resolution: ./types → ./types/index.dlang → ./types.dlang
|
|
55
|
+
*
|
|
56
|
+
* Module entry defaults to index.dlang without requiring model.yaml.
|
|
57
|
+
* If the directory has model.yaml with custom entry, use that.
|
|
58
|
+
*/
|
|
59
|
+
private resolveDirectoryFirst;
|
|
60
|
+
/**
|
|
61
|
+
* Reads the entry point from a module's model.yaml.
|
|
62
|
+
* Defaults to index.dlang if no manifest or no entry specified.
|
|
63
|
+
*/
|
|
64
|
+
private readModuleEntry;
|
|
65
|
+
/**
|
|
66
|
+
* Checks if a path is a directory.
|
|
67
|
+
*/
|
|
68
|
+
private isDirectory;
|
|
69
|
+
/**
|
|
70
|
+
* Checks if a file exists.
|
|
71
|
+
*/
|
|
72
|
+
private fileExists;
|
|
14
73
|
/**
|
|
15
74
|
* Get the current lock file (if loaded).
|
|
16
75
|
*/
|