@domainlang/language 0.5.2 → 0.6.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/out/domain-lang-module.js +3 -1
- package/out/domain-lang-module.js.map +1 -1
- package/out/generated/ast.d.ts +24 -0
- package/out/generated/ast.js.map +1 -1
- package/out/generated/grammar.js +22 -32
- package/out/generated/grammar.js.map +1 -1
- package/out/index.d.ts +2 -5
- package/out/index.js +10 -6
- package/out/index.js.map +1 -1
- package/out/lsp/domain-lang-code-actions.js +14 -8
- package/out/lsp/domain-lang-code-actions.js.map +1 -1
- package/out/lsp/domain-lang-completion.d.ts +3 -0
- package/out/lsp/domain-lang-completion.js +41 -13
- package/out/lsp/domain-lang-completion.js.map +1 -1
- package/out/lsp/domain-lang-formatter.js +24 -18
- package/out/lsp/domain-lang-formatter.js.map +1 -1
- package/out/lsp/domain-lang-index-manager.d.ts +102 -0
- package/out/lsp/domain-lang-index-manager.js +221 -0
- package/out/lsp/domain-lang-index-manager.js.map +1 -0
- package/out/lsp/domain-lang-scope.js +31 -17
- package/out/lsp/domain-lang-scope.js.map +1 -1
- package/out/lsp/domain-lang-workspace-manager.d.ts +51 -9
- package/out/lsp/domain-lang-workspace-manager.js +86 -63
- package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
- package/out/lsp/hover/domain-lang-hover.d.ts +45 -1
- package/out/lsp/hover/domain-lang-hover.js +308 -232
- package/out/lsp/hover/domain-lang-hover.js.map +1 -1
- package/out/lsp/hover/domain-lang-keywords.d.ts +3 -7
- package/out/lsp/hover/domain-lang-keywords.js +115 -38
- package/out/lsp/hover/domain-lang-keywords.js.map +1 -1
- package/out/lsp/manifest-diagnostics.js +95 -50
- package/out/lsp/manifest-diagnostics.js.map +1 -1
- package/out/main.js +109 -17
- package/out/main.js.map +1 -1
- package/out/services/import-resolver.d.ts +16 -2
- package/out/services/import-resolver.js +37 -11
- package/out/services/import-resolver.js.map +1 -1
- package/out/services/types.d.ts +2 -2
- package/out/services/workspace-manager.d.ts +33 -31
- package/out/services/workspace-manager.js +92 -148
- package/out/services/workspace-manager.js.map +1 -1
- package/out/utils/document-utils.d.ts +41 -0
- package/out/utils/document-utils.js +64 -0
- package/out/utils/document-utils.js.map +1 -0
- package/out/utils/import-utils.d.ts +0 -17
- package/out/utils/import-utils.js +2 -32
- package/out/utils/import-utils.js.map +1 -1
- package/out/utils/manifest-utils.d.ts +56 -0
- package/out/utils/manifest-utils.js +119 -0
- package/out/utils/manifest-utils.js.map +1 -0
- package/out/validation/import.d.ts +1 -2
- package/out/validation/import.js +33 -20
- package/out/validation/import.js.map +1 -1
- package/package.json +1 -1
- package/src/domain-lang-module.ts +4 -1
- package/src/domain-lang.langium +37 -13
- package/src/generated/ast.ts +24 -0
- package/src/generated/grammar.ts +22 -32
- package/src/index.ts +12 -6
- package/src/lsp/domain-lang-code-actions.ts +13 -8
- package/src/lsp/domain-lang-completion.ts +61 -13
- package/src/lsp/domain-lang-formatter.ts +28 -23
- package/src/lsp/domain-lang-index-manager.ts +256 -0
- package/src/lsp/domain-lang-scope.ts +29 -17
- package/src/lsp/domain-lang-workspace-manager.ts +89 -66
- package/src/lsp/hover/domain-lang-hover.ts +332 -226
- package/src/lsp/hover/domain-lang-keywords.ts +129 -43
- package/src/lsp/manifest-diagnostics.ts +100 -59
- package/src/main.ts +127 -16
- package/src/services/import-resolver.ts +39 -11
- package/src/services/types.ts +2 -2
- package/src/services/workspace-manager.ts +101 -175
- package/src/utils/document-utils.ts +80 -0
- package/src/utils/import-utils.ts +2 -40
- package/src/utils/manifest-utils.ts +132 -0
- package/src/validation/import.ts +32 -22
- package/out/lsp/hover/ddd-pattern-explanations.d.ts +0 -50
- package/out/lsp/hover/ddd-pattern-explanations.js +0 -196
- package/out/lsp/hover/ddd-pattern-explanations.js.map +0 -1
- package/out/services/dependency-analyzer.d.ts +0 -58
- package/out/services/dependency-analyzer.js +0 -254
- package/out/services/dependency-analyzer.js.map +0 -1
- package/out/services/dependency-resolver.d.ts +0 -146
- package/out/services/dependency-resolver.js +0 -452
- package/out/services/dependency-resolver.js.map +0 -1
- package/out/services/git-url-resolver.browser.d.ts +0 -10
- package/out/services/git-url-resolver.browser.js +0 -19
- package/out/services/git-url-resolver.browser.js.map +0 -1
- package/out/services/git-url-resolver.d.ts +0 -158
- package/out/services/git-url-resolver.js +0 -416
- package/out/services/git-url-resolver.js.map +0 -1
- package/out/services/governance-validator.d.ts +0 -44
- package/out/services/governance-validator.js +0 -153
- package/out/services/governance-validator.js.map +0 -1
- package/out/services/semver.d.ts +0 -98
- package/out/services/semver.js +0 -195
- package/out/services/semver.js.map +0 -1
- package/src/lsp/hover/ddd-pattern-explanations.ts +0 -237
- package/src/services/dependency-analyzer.ts +0 -321
- package/src/services/dependency-resolver.ts +0 -551
- package/src/services/git-url-resolver.browser.ts +0 -26
- package/src/services/git-url-resolver.ts +0 -517
- package/src/services/governance-validator.ts +0 -177
- package/src/services/semver.ts +0 -213
|
@@ -7,17 +7,28 @@ import type { LockFile } from './types.js';
|
|
|
7
7
|
* Import Types (PRS-010):
|
|
8
8
|
* - Local relative: ./path, ../path → Directory-first resolution
|
|
9
9
|
* - Path aliases: @/path, @alias/path → Configurable in model.yaml paths section
|
|
10
|
-
* - External: owner/package
|
|
10
|
+
* - External: dependency key → Manifest dependencies (key can be owner/package or an alias that maps to source)
|
|
11
11
|
*
|
|
12
12
|
* Directory-First Resolution:
|
|
13
13
|
* - ./types → ./types/index.dlang → ./types.dlang
|
|
14
14
|
* - Module entry defaults to index.dlang (no model.yaml required)
|
|
15
|
+
*
|
|
16
|
+
* Performance:
|
|
17
|
+
* - Resolution results are cached per (document URI + specifier) pair
|
|
18
|
+
* - Cache is invalidated when model.yaml or model.lock changes
|
|
15
19
|
*/
|
|
16
20
|
export declare class ImportResolver {
|
|
17
21
|
private readonly workspaceManager;
|
|
22
|
+
private readonly resolverCache;
|
|
18
23
|
constructor(services: DomainLangServices);
|
|
24
|
+
/**
|
|
25
|
+
* Clears the import resolution cache.
|
|
26
|
+
* Call this when model.yaml or model.lock changes.
|
|
27
|
+
*/
|
|
28
|
+
clearCache(): void;
|
|
19
29
|
/**
|
|
20
30
|
* Resolve an import specifier relative to a Langium document.
|
|
31
|
+
* Results are cached for performance.
|
|
21
32
|
*/
|
|
22
33
|
resolveForDocument(document: LangiumDocument, specifier: string): Promise<URI>;
|
|
23
34
|
/**
|
|
@@ -37,7 +48,10 @@ export declare class ImportResolver {
|
|
|
37
48
|
/**
|
|
38
49
|
* Resolves an external dependency via manifest.
|
|
39
50
|
*
|
|
40
|
-
|
|
51
|
+
* Import specifier is a dependency key from model.yaml.
|
|
52
|
+
* - Recommended: key is owner/package.
|
|
53
|
+
* - Optional: key is an alias with an explicit source.
|
|
54
|
+
* The LSP only resolves to cached packages - no network calls.
|
|
41
55
|
*/
|
|
42
56
|
private resolveExternalDependency;
|
|
43
57
|
/**
|
|
@@ -7,22 +7,44 @@ import { URI } from 'langium';
|
|
|
7
7
|
* Import Types (PRS-010):
|
|
8
8
|
* - Local relative: ./path, ../path → Directory-first resolution
|
|
9
9
|
* - Path aliases: @/path, @alias/path → Configurable in model.yaml paths section
|
|
10
|
-
* - External: owner/package
|
|
10
|
+
* - External: dependency key → Manifest dependencies (key can be owner/package or an alias that maps to source)
|
|
11
11
|
*
|
|
12
12
|
* Directory-First Resolution:
|
|
13
13
|
* - ./types → ./types/index.dlang → ./types.dlang
|
|
14
14
|
* - Module entry defaults to index.dlang (no model.yaml required)
|
|
15
|
+
*
|
|
16
|
+
* Performance:
|
|
17
|
+
* - Resolution results are cached per (document URI + specifier) pair
|
|
18
|
+
* - Cache is invalidated when model.yaml or model.lock changes
|
|
15
19
|
*/
|
|
16
20
|
export class ImportResolver {
|
|
17
21
|
constructor(services) {
|
|
22
|
+
this.resolverCache = new Map();
|
|
18
23
|
this.workspaceManager = services.imports.WorkspaceManager;
|
|
19
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Clears the import resolution cache.
|
|
27
|
+
* Call this when model.yaml or model.lock changes.
|
|
28
|
+
*/
|
|
29
|
+
clearCache() {
|
|
30
|
+
this.resolverCache.clear();
|
|
31
|
+
}
|
|
20
32
|
/**
|
|
21
33
|
* Resolve an import specifier relative to a Langium document.
|
|
34
|
+
* Results are cached for performance.
|
|
22
35
|
*/
|
|
23
36
|
async resolveForDocument(document, specifier) {
|
|
37
|
+
// Check cache first (key: document URI + specifier)
|
|
38
|
+
const cacheKey = `${document.uri.toString()}|${specifier}`;
|
|
39
|
+
const cached = this.resolverCache.get(cacheKey);
|
|
40
|
+
if (cached) {
|
|
41
|
+
return cached;
|
|
42
|
+
}
|
|
43
|
+
// Resolve and cache
|
|
24
44
|
const baseDir = path.dirname(document.uri.fsPath);
|
|
25
|
-
|
|
45
|
+
const result = await this.resolveFrom(baseDir, specifier);
|
|
46
|
+
this.resolverCache.set(cacheKey, result);
|
|
47
|
+
return result;
|
|
26
48
|
}
|
|
27
49
|
/**
|
|
28
50
|
* Resolve an import specifier from a base directory (non-LSP contexts).
|
|
@@ -95,7 +117,10 @@ export class ImportResolver {
|
|
|
95
117
|
/**
|
|
96
118
|
* Resolves an external dependency via manifest.
|
|
97
119
|
*
|
|
98
|
-
|
|
120
|
+
* Import specifier is a dependency key from model.yaml.
|
|
121
|
+
* - Recommended: key is owner/package.
|
|
122
|
+
* - Optional: key is an alias with an explicit source.
|
|
123
|
+
* The LSP only resolves to cached packages - no network calls.
|
|
99
124
|
*/
|
|
100
125
|
async resolveExternalDependency(specifier) {
|
|
101
126
|
const manifest = await this.workspaceManager.getManifest();
|
|
@@ -111,16 +136,17 @@ export class ImportResolver {
|
|
|
111
136
|
throw new Error(`Dependency '${specifier}' not installed.\n` +
|
|
112
137
|
`Hint: Run 'dlang install' to fetch dependencies and generate model.lock.`);
|
|
113
138
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
139
|
+
// Use WorkspaceManager to resolve from cache (read-only, no network)
|
|
140
|
+
const resolved = await this.workspaceManager.resolveDependencyPath(specifier);
|
|
141
|
+
if (!resolved) {
|
|
142
|
+
throw new Error(`Dependency '${specifier}' not found in model.yaml or not installed.\n` +
|
|
117
143
|
`Hint: Add it to your dependencies:\n` +
|
|
118
144
|
` dependencies:\n` +
|
|
119
145
|
` ${specifier}:\n` +
|
|
120
|
-
` ref: v1.0.0`
|
|
146
|
+
` ref: v1.0.0\n` +
|
|
147
|
+
`Then run 'dlang install' to fetch it.`);
|
|
121
148
|
}
|
|
122
|
-
|
|
123
|
-
return git.resolve(mapped, { allowNetwork: false });
|
|
149
|
+
return URI.file(resolved);
|
|
124
150
|
}
|
|
125
151
|
/**
|
|
126
152
|
* Resolves a local path using directory-first resolution.
|
|
@@ -232,8 +258,8 @@ async function assertFileExists(filePath, original) {
|
|
|
232
258
|
await fs.access(filePath);
|
|
233
259
|
}
|
|
234
260
|
catch {
|
|
235
|
-
throw new Error(`Import file not found: '${original}'
|
|
236
|
-
`Resolved path: ${filePath}
|
|
261
|
+
throw new Error(`Import file not found: '${original}'.\n` +
|
|
262
|
+
`Resolved path: ${filePath}\n` +
|
|
237
263
|
`Hint: Check that the file exists and the path is correct.`);
|
|
238
264
|
}
|
|
239
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/services/import-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAwB,MAAM,SAAS,CAAC;AAKpD
|
|
1
|
+
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/services/import-resolver.ts"],"names":[],"mappings":"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"}
|
package/out/services/types.d.ts
CHANGED
|
@@ -156,8 +156,8 @@ export interface LockedDependency {
|
|
|
156
156
|
* @example
|
|
157
157
|
* ```yaml
|
|
158
158
|
* paths:
|
|
159
|
-
* "
|
|
160
|
-
* "@shared
|
|
159
|
+
* "@": "./src"
|
|
160
|
+
* "@shared": "./libs/shared"
|
|
161
161
|
* ```
|
|
162
162
|
*/
|
|
163
163
|
export type PathAliases = Readonly<Record<string, string>>;
|
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { LockFile, ModelManifest, PathAliases, WorkspaceManagerOptions } from './types.js';
|
|
1
|
+
import type { LockFile, ModelManifest, DependencySpec, ExtendedDependencySpec, PathAliases, WorkspaceManagerOptions } from './types.js';
|
|
3
2
|
/**
|
|
4
|
-
* Coordinates workspace discovery
|
|
3
|
+
* Coordinates workspace discovery and manifest/lock file reading.
|
|
4
|
+
*
|
|
5
|
+
* This is a read-only service for the LSP - it does NOT:
|
|
6
|
+
* - Generate lock files (use CLI: `dlang install`)
|
|
7
|
+
* - Download packages (use CLI: `dlang install`)
|
|
8
|
+
* - Make network requests
|
|
9
|
+
*
|
|
10
|
+
* The LSP uses this to:
|
|
11
|
+
* - Find the workspace root (where model.yaml is)
|
|
12
|
+
* - Read manifest configuration (path aliases, dependencies)
|
|
13
|
+
* - Read lock file (to resolve cached package locations)
|
|
5
14
|
*/
|
|
6
15
|
export declare class WorkspaceManager {
|
|
7
|
-
private readonly options;
|
|
8
16
|
private readonly manifestFiles;
|
|
9
17
|
private readonly lockFiles;
|
|
10
18
|
private workspaceRoot;
|
|
11
19
|
private lockFile;
|
|
12
|
-
private gitResolver;
|
|
13
|
-
private dependencyResolver;
|
|
14
20
|
private initializePromise;
|
|
15
21
|
private manifestCache;
|
|
16
22
|
constructor(options?: WorkspaceManagerOptions);
|
|
17
23
|
/**
|
|
18
|
-
* Finds the workspace root
|
|
24
|
+
* Finds the workspace root and loads any existing lock file.
|
|
19
25
|
* Repeated calls await the same initialization work.
|
|
20
26
|
*/
|
|
21
27
|
initialize(startPath: string): Promise<void>;
|
|
@@ -24,6 +30,11 @@ export declare class WorkspaceManager {
|
|
|
24
30
|
* @throws Error if {@link initialize} has not completed successfully.
|
|
25
31
|
*/
|
|
26
32
|
getWorkspaceRoot(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the project-local package cache directory.
|
|
35
|
+
* Per PRS-010: .dlang/packages/
|
|
36
|
+
*/
|
|
37
|
+
getCacheDir(): string;
|
|
27
38
|
/**
|
|
28
39
|
* Resolves the manifest file path within the workspace, if present.
|
|
29
40
|
*/
|
|
@@ -34,15 +45,12 @@ export declare class WorkspaceManager {
|
|
|
34
45
|
*/
|
|
35
46
|
getManifest(): Promise<ModelManifest | undefined>;
|
|
36
47
|
/**
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
ensureLockFile(): Promise<LockFile>;
|
|
40
|
-
/**
|
|
41
|
-
* Gets the currently cached lock file without refreshing from disk.
|
|
48
|
+
* Gets the currently cached lock file.
|
|
49
|
+
* Returns undefined if no lock file exists (run `dlang install` to create one).
|
|
42
50
|
*/
|
|
43
51
|
getLockFile(): Promise<LockFile | undefined>;
|
|
44
52
|
/**
|
|
45
|
-
* Reloads the lock file from disk
|
|
53
|
+
* Reloads the lock file from disk.
|
|
46
54
|
*/
|
|
47
55
|
refreshLockFile(): Promise<LockFile | undefined>;
|
|
48
56
|
/**
|
|
@@ -63,14 +71,6 @@ export declare class WorkspaceManager {
|
|
|
63
71
|
* Call this when model.lock changes.
|
|
64
72
|
*/
|
|
65
73
|
invalidateLockCache(): void;
|
|
66
|
-
/**
|
|
67
|
-
* Provides the shared git URL resolver configured with the current lock file.
|
|
68
|
-
*/
|
|
69
|
-
getGitResolver(): Promise<GitUrlResolver>;
|
|
70
|
-
/**
|
|
71
|
-
* Forces dependency resolution and regenerates lock files on disk.
|
|
72
|
-
*/
|
|
73
|
-
regenerateLockFile(): Promise<LockFile>;
|
|
74
74
|
/**
|
|
75
75
|
* Returns the path aliases from the manifest, if present.
|
|
76
76
|
*/
|
|
@@ -82,21 +82,20 @@ export declare class WorkspaceManager {
|
|
|
82
82
|
* In the new format, the key IS the owner/package, so source is derived from key
|
|
83
83
|
* ONLY for git dependencies (not for path-based local dependencies).
|
|
84
84
|
*/
|
|
85
|
-
|
|
85
|
+
normalizeDependency(key: string, dep: DependencySpec): ExtendedDependencySpec;
|
|
86
86
|
/**
|
|
87
|
-
* Resolves a
|
|
87
|
+
* Resolves a dependency import specifier to its cached package path.
|
|
88
88
|
*
|
|
89
|
-
* NEW FORMAT (PRS-010): Dependencies are keyed by owner/package directly
|
|
90
89
|
* @param specifier - Import specifier (owner/package format, may include subpaths)
|
|
91
|
-
* @returns
|
|
90
|
+
* @returns Path to the cached package entry point, or undefined if not found
|
|
91
|
+
*/
|
|
92
|
+
resolveDependencyPath(specifier: string): Promise<string | undefined>;
|
|
93
|
+
/**
|
|
94
|
+
* Reads the entry point from a cached package's model.yaml.
|
|
92
95
|
*/
|
|
93
|
-
|
|
96
|
+
private readPackageEntry;
|
|
94
97
|
private performInitialization;
|
|
95
98
|
private ensureInitialized;
|
|
96
|
-
private applyLockFile;
|
|
97
|
-
private generateLockFile;
|
|
98
|
-
private ensureDependencyResolver;
|
|
99
|
-
private writeJsonLockFile;
|
|
100
99
|
private loadLockFileFromDisk;
|
|
101
100
|
private tryReadLockFile;
|
|
102
101
|
private loadManifest;
|
|
@@ -117,7 +116,10 @@ export declare class WorkspaceManager {
|
|
|
117
116
|
*/
|
|
118
117
|
private validateLocalPath;
|
|
119
118
|
private parseJsonLockFile;
|
|
119
|
+
/**
|
|
120
|
+
* Finds workspace root by walking up from startPath looking for model.yaml.
|
|
121
|
+
* Uses configurable manifest files if specified in constructor options.
|
|
122
|
+
*/
|
|
120
123
|
private findWorkspaceRoot;
|
|
121
124
|
private containsManifest;
|
|
122
|
-
private fileExists;
|
|
123
125
|
}
|