zenstack 2.18.1 → 2.19.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 ZenStack
3
+ Copyright (c) 2022-2025 ZenStack
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/cli/config.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import z from 'zod';
2
- declare const schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
2
+ declare const schema: z.ZodObject<{}, z.core.$strip>;
3
3
  export type ConfigType = z.infer<typeof schema>;
4
4
  export declare let config: ConfigType;
5
5
  /**
package/cli/config.js CHANGED
@@ -40,7 +40,6 @@ exports.config = void 0;
40
40
  exports.loadConfig = loadConfig;
41
41
  const fs_1 = __importDefault(require("fs"));
42
42
  const zod_1 = __importStar(require("zod"));
43
- const v3_1 = require("zod-validation-error/v3");
44
43
  const cli_error_1 = require("./cli-error");
45
44
  // TODO: future use
46
45
  const schema = zod_1.default.object({});
@@ -64,7 +63,7 @@ function loadConfig(filename) {
64
63
  throw new cli_error_1.CliError(`Config is not a valid JSON file: ${filename}`);
65
64
  }
66
65
  if (err instanceof zod_1.ZodError) {
67
- throw new cli_error_1.CliError(`Config file ${filename} is not valid: ${(0, v3_1.fromZodError)(err)}`);
66
+ throw new cli_error_1.CliError(`Config file ${filename} is not valid: ${err}`);
68
67
  }
69
68
  throw new cli_error_1.CliError(`Error loading config: ${filename}`);
70
69
  }
package/cli/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,gCAkBC;AAlCD,4CAAoB;AACpB,2CAAkC;AAClC,gDAAuD;AACvD,2CAAuC;AAEvC,mBAAmB;AACnB,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIjB,QAAA,MAAM,GAAe,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEjD;;;GAGG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACvC,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,cAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,8DAA8D;IAClE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,oBAAQ,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,oBAAQ,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,GAAG,YAAY,cAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,oBAAQ,CAAC,eAAe,QAAQ,kBAAkB,IAAA,iBAAY,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,oBAAQ,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,gCAkBC;AAjCD,4CAAoB;AACpB,2CAAkC;AAClC,2CAAuC;AAEvC,mBAAmB;AACnB,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIjB,QAAA,MAAM,GAAe,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEjD;;;GAGG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACvC,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,cAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,8DAA8D;IAClE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,oBAAQ,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,oBAAQ,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,GAAG,YAAY,cAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,oBAAQ,CAAC,eAAe,QAAQ,kBAAkB,GAAG,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,IAAI,oBAAQ,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC"}
@@ -0,0 +1,48 @@
1
+ import * as vscode from 'vscode';
2
+ /**
3
+ * DocumentationCache class handles persistent caching of ZModel documentation
4
+ * using VS Code's globalState for cross-session persistence
5
+ */
6
+ export declare class DocumentationCache implements vscode.Disposable {
7
+ private static readonly CACHE_DURATION_MS;
8
+ private static readonly CACHE_PREFIX;
9
+ private extensionContext;
10
+ private extensionVersion;
11
+ constructor(context: vscode.ExtensionContext);
12
+ /**
13
+ * Dispose of the cache resources (implements vscode.Disposable)
14
+ */
15
+ dispose(): void;
16
+ /**
17
+ * Get the cache prefix used for keys
18
+ */
19
+ getCachePrefix(): string;
20
+ /**
21
+ * Enable cache synchronization across machines via VS Code Settings Sync
22
+ */
23
+ private enableCacheSync;
24
+ /**
25
+ * Generate a cache key from request body with normalized content
26
+ */
27
+ private generateCacheKey;
28
+ /**
29
+ * Check if cache entry is still valid (not expired)
30
+ */
31
+ private isCacheValid;
32
+ /**
33
+ * Get cached response if available and valid
34
+ */
35
+ getCachedResponse(models: string[]): Promise<string | null>;
36
+ /**
37
+ * Cache a response for future use
38
+ */
39
+ setCachedResponse(models: string[], data: string): Promise<void>;
40
+ /**
41
+ * Clear expired cache entries from persistent storage
42
+ */
43
+ clearExpiredCache(): Promise<void>;
44
+ /**
45
+ * Clear all cache entries from persistent storage
46
+ */
47
+ clearAllCache(): Promise<void>;
48
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DocumentationCache = void 0;
13
+ const crypto_1 = require("crypto");
14
+ /**
15
+ * DocumentationCache class handles persistent caching of ZModel documentation
16
+ * using VS Code's globalState for cross-session persistence
17
+ */
18
+ class DocumentationCache {
19
+ constructor(context) {
20
+ this.extensionContext = context;
21
+ this.extensionVersion = context.extension.packageJSON.version;
22
+ // clear expired cache entries on initialization
23
+ this.clearExpiredCache();
24
+ }
25
+ /**
26
+ * Dispose of the cache resources (implements vscode.Disposable)
27
+ */
28
+ dispose() { }
29
+ /**
30
+ * Get the cache prefix used for keys
31
+ */
32
+ getCachePrefix() {
33
+ return DocumentationCache.CACHE_PREFIX;
34
+ }
35
+ /**
36
+ * Enable cache synchronization across machines via VS Code Settings Sync
37
+ */
38
+ enableCacheSync() {
39
+ const cacheKeys = this.extensionContext.globalState
40
+ .keys()
41
+ .filter((key) => key.startsWith(DocumentationCache.CACHE_PREFIX));
42
+ if (cacheKeys.length > 0) {
43
+ this.extensionContext.globalState.setKeysForSync(cacheKeys);
44
+ }
45
+ }
46
+ /**
47
+ * Generate a cache key from request body with normalized content
48
+ */
49
+ generateCacheKey(models) {
50
+ // Remove ALL whitespace characters from each model string for cache key generation
51
+ // This ensures identical content with different formatting uses the same cache
52
+ const normalizedModels = models.map((model) => model.replace(/\s/g, '')).sort();
53
+ const hash = (0, crypto_1.createHash)('sha512')
54
+ .update(JSON.stringify({ models: normalizedModels }))
55
+ .digest('hex');
56
+ return `${DocumentationCache.CACHE_PREFIX}${hash}`;
57
+ }
58
+ /**
59
+ * Check if cache entry is still valid (not expired)
60
+ */
61
+ isCacheValid(entry) {
62
+ return Date.now() - entry.timestamp < DocumentationCache.CACHE_DURATION_MS;
63
+ }
64
+ /**
65
+ * Get cached response if available and valid
66
+ */
67
+ getCachedResponse(models) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const cacheKey = this.generateCacheKey(models);
70
+ const entry = this.extensionContext.globalState.get(cacheKey);
71
+ if (entry && this.isCacheValid(entry)) {
72
+ console.log('Using cached documentation response from persistent storage');
73
+ return entry.data;
74
+ }
75
+ // Clean up expired entry if it exists
76
+ if (entry) {
77
+ yield this.extensionContext.globalState.update(cacheKey, undefined);
78
+ }
79
+ return null;
80
+ });
81
+ }
82
+ /**
83
+ * Cache a response for future use
84
+ */
85
+ setCachedResponse(models, data) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ const cacheKey = this.generateCacheKey(models);
88
+ const cacheEntry = {
89
+ data,
90
+ timestamp: Date.now(),
91
+ extensionVersion: this.extensionVersion,
92
+ };
93
+ yield this.extensionContext.globalState.update(cacheKey, cacheEntry);
94
+ // Update sync keys to include new cache entry
95
+ this.enableCacheSync();
96
+ });
97
+ }
98
+ /**
99
+ * Clear expired cache entries from persistent storage
100
+ */
101
+ clearExpiredCache() {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const now = Date.now();
104
+ let clearedCount = 0;
105
+ const allKeys = this.extensionContext.globalState.keys();
106
+ for (const key of allKeys) {
107
+ if (key.startsWith(DocumentationCache.CACHE_PREFIX)) {
108
+ const entry = this.extensionContext.globalState.get(key);
109
+ if ((entry === null || entry === void 0 ? void 0 : entry.extensionVersion) !== this.extensionVersion ||
110
+ now - entry.timestamp >= DocumentationCache.CACHE_DURATION_MS) {
111
+ yield this.extensionContext.globalState.update(key, undefined);
112
+ clearedCount++;
113
+ }
114
+ }
115
+ }
116
+ if (clearedCount > 0) {
117
+ console.log(`Cleared ${clearedCount} expired cache entries from persistent storage`);
118
+ }
119
+ });
120
+ }
121
+ /**
122
+ * Clear all cache entries from persistent storage
123
+ */
124
+ clearAllCache() {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ const allKeys = this.extensionContext.globalState.keys();
127
+ let clearedCount = 0;
128
+ for (const key of allKeys) {
129
+ if (key.startsWith(DocumentationCache.CACHE_PREFIX)) {
130
+ yield this.extensionContext.globalState.update(key, undefined);
131
+ clearedCount++;
132
+ }
133
+ }
134
+ console.log(`Cleared all cache entries from persistent storage (${clearedCount} items)`);
135
+ });
136
+ }
137
+ }
138
+ exports.DocumentationCache = DocumentationCache;
139
+ DocumentationCache.CACHE_DURATION_MS = 30 * 24 * 60 * 60 * 1000; // 30 days cache duration
140
+ DocumentationCache.CACHE_PREFIX = 'doc-cache.';
141
+ //# sourceMappingURL=documentation-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-cache.js","sourceRoot":"","sources":["../src/documentation-cache.ts"],"names":[],"mappings":"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"}
package/extension.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import * as vscode from 'vscode';
2
+ export declare function requireAuth(): Promise<vscode.AuthenticationSession | undefined>;
3
+ export declare function activate(context: vscode.ExtensionContext): void;
4
+ export declare function deactivate(): Thenable<void> | undefined;
package/extension.js ADDED
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.requireAuth = requireAuth;
46
+ exports.activate = activate;
47
+ exports.deactivate = deactivate;
48
+ const vscode = __importStar(require("vscode"));
49
+ const path = __importStar(require("path"));
50
+ const node_1 = require("vscode-languageclient/node");
51
+ const zenstack_auth_provider_1 = require("./zenstack-auth-provider");
52
+ const documentation_cache_1 = require("./documentation-cache");
53
+ const zmodel_preview_1 = require("./zmodel-preview");
54
+ const release_notes_manager_1 = require("./release-notes-manager");
55
+ // Global variables
56
+ let client;
57
+ // Utility to require authentication when needed
58
+ function requireAuth() {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ let session;
61
+ session = yield vscode.authentication.getSession(zenstack_auth_provider_1.AUTH_PROVIDER_ID, [], { createIfNone: false });
62
+ if (!session) {
63
+ const signIn = 'Sign in';
64
+ const selection = yield vscode.window.showWarningMessage('Please sign in to use this feature', signIn);
65
+ if (selection === signIn) {
66
+ try {
67
+ session = yield vscode.authentication.getSession(zenstack_auth_provider_1.AUTH_PROVIDER_ID, [], { createIfNone: true });
68
+ if (session) {
69
+ vscode.window.showInformationMessage('ZenStack sign-in successful!');
70
+ }
71
+ }
72
+ catch (e) {
73
+ vscode.window.showErrorMessage('ZenStack sign-in failed: ' + (e instanceof Error ? e.message : String(e)));
74
+ }
75
+ }
76
+ }
77
+ return session;
78
+ });
79
+ }
80
+ // This function is called when the extension is activated.
81
+ function activate(context) {
82
+ // Initialize and register the ZenStack authentication provider
83
+ context.subscriptions.push(new zenstack_auth_provider_1.ZenStackAuthenticationProvider(context));
84
+ // Start language client
85
+ client = startLanguageClient(context);
86
+ const documentationCache = new documentation_cache_1.DocumentationCache(context);
87
+ context.subscriptions.push(documentationCache);
88
+ context.subscriptions.push(new zmodel_preview_1.ZModelPreview(context, client, documentationCache));
89
+ context.subscriptions.push(new release_notes_manager_1.ReleaseNotesManager(context));
90
+ }
91
+ // This function is called when the extension is deactivated.
92
+ function deactivate() {
93
+ if (client) {
94
+ return client.stop();
95
+ }
96
+ return undefined;
97
+ }
98
+ function startLanguageClient(context) {
99
+ const serverModule = context.asAbsolutePath(path.join('bundle', 'language-server', 'main'));
100
+ // The debug options for the server
101
+ // --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging.
102
+ // By setting `process.env.DEBUG_BREAK` to a truthy value, the language server will wait until a debugger is attached.
103
+ const debugOptions = {
104
+ execArgv: [
105
+ '--nolazy',
106
+ `--inspect${process.env.DEBUG_BREAK ? '-brk' : ''}=${process.env.DEBUG_SOCKET || '6009'}`,
107
+ ],
108
+ };
109
+ // If the extension is launched in debug mode then the debug server options are used
110
+ // Otherwise the run options are used
111
+ const serverOptions = {
112
+ run: { module: serverModule, transport: node_1.TransportKind.ipc },
113
+ debug: {
114
+ module: serverModule,
115
+ transport: node_1.TransportKind.ipc,
116
+ options: debugOptions,
117
+ },
118
+ };
119
+ const fileSystemWatcher = vscode.workspace.createFileSystemWatcher('**/*.zmodel');
120
+ context.subscriptions.push(fileSystemWatcher);
121
+ // Options to control the language client
122
+ const clientOptions = {
123
+ documentSelector: [{ scheme: 'file', language: 'zmodel' }],
124
+ synchronize: {
125
+ // Notify the server about file changes to files contained in the workspace
126
+ fileEvents: fileSystemWatcher,
127
+ },
128
+ };
129
+ // Create the language client and start the client.
130
+ const client = new node_1.LanguageClient('zmodel', 'ZenStack Model', serverOptions, clientOptions);
131
+ // Start the client. This will also launch the server
132
+ void client.start();
133
+ return client;
134
+ }
135
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,kCAsBC;AAGD,4BAWC;AAGD,gCAKC;AAzDD,+CAAiC;AACjC,2CAA6B;AAE7B,qDAAiH;AACjH,qEAA4F;AAC5F,+DAA2D;AAC3D,qDAAiD;AACjD,mEAA8D;AAE9D,mBAAmB;AACnB,IAAI,MAAsB,CAAC;AAE3B,gDAAgD;AAChD,SAAsB,WAAW;;QAC7B,IAAI,OAAiD,CAAC;QAEtD,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,yCAAgB,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhG,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;YACvG,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACD,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,yCAAgB,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/F,IAAI,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;oBACzE,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAU,EAAE,CAAC;oBAClB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAC1B,2BAA2B,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7E,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AAED,2DAA2D;AAC3D,SAAgB,QAAQ,CAAC,OAAgC;IACrD,+DAA+D;IAC/D,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,uDAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;IAExE,wBAAwB;IACxB,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,kBAAkB,GAAG,IAAI,wCAAkB,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/C,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,8BAAa,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,2CAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,6DAA6D;AAC7D,SAAgB,UAAU;IACtB,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC;IACzD,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,mCAAmC;IACnC,8GAA8G;IAC9G,sHAAsH;IACtH,MAAM,YAAY,GAAG;QACjB,QAAQ,EAAE;YACN,UAAU;YACV,YAAY,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,EAAE;SAC5F;KACJ,CAAC;IAEF,oFAAoF;IACpF,qCAAqC;IACrC,MAAM,aAAa,GAAkB;QACjC,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAa,CAAC,GAAG,EAAE;QAC3D,KAAK,EAAE;YACH,MAAM,EAAE,YAAY;YACpB,SAAS,EAAE,oBAAa,CAAC,GAAG;YAC5B,OAAO,EAAE,YAAY;SACxB;KACJ,CAAC;IAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAClF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE9C,yCAAyC;IACzC,MAAM,aAAa,GAA0B;QACzC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC1D,WAAW,EAAE;YACT,2EAA2E;YAC3E,UAAU,EAAE,iBAAiB;SAChC;KACJ,CAAC;IAEF,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,qBAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAE5F,qDAAqD;IACrD,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;IACpB,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -1,13 +1,62 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  const langium_1 = require("langium");
4
13
  const node_1 = require("langium/node");
5
14
  const node_2 = require("vscode-languageserver/node");
15
+ const vscode_uri_1 = require("vscode-uri");
6
16
  const zmodel_module_1 = require("./zmodel-module");
17
+ const cli_util_1 = require("../cli/cli-util");
7
18
  // Create a connection to the client
8
19
  const connection = (0, node_2.createConnection)(node_2.ProposedFeatures.all);
9
20
  // Inject the shared services and language-specific services
10
21
  const { shared } = (0, zmodel_module_1.createZModelServices)(Object.assign({ connection }, node_1.NodeFileSystem));
22
+ // Add custom LSP request handlers
23
+ connection.onRequest('zenstack/getAllImportedZModelURIs', (params) => __awaiter(void 0, void 0, void 0, function* () {
24
+ try {
25
+ const uri = vscode_uri_1.URI.parse(params.textDocument.uri);
26
+ const document = shared.workspace.LangiumDocuments.getOrCreateDocument(uri);
27
+ // Ensure the document is parsed and built
28
+ if (!document.parseResult) {
29
+ yield shared.workspace.DocumentBuilder.build([document]);
30
+ }
31
+ // #region merge imported documents
32
+ const langiumDocuments = shared.workspace.LangiumDocuments;
33
+ // load all imports
34
+ const importedURIs = (0, cli_util_1.eagerLoadAllImports)(document, langiumDocuments);
35
+ const importedDocuments = importedURIs.map((uri) => langiumDocuments.getOrCreateDocument(uri));
36
+ // build the document together with standard library, plugin modules, and imported documents
37
+ yield shared.workspace.DocumentBuilder.build([document, ...importedDocuments], {
38
+ validationChecks: 'all',
39
+ });
40
+ const hasSyntaxErrors = [uri, ...importedURIs].some((uri) => {
41
+ var _a;
42
+ const doc = langiumDocuments.getOrCreateDocument(uri);
43
+ return (doc.parseResult.lexerErrors.length > 0 ||
44
+ doc.parseResult.parserErrors.length > 0 ||
45
+ ((_a = doc.diagnostics) === null || _a === void 0 ? void 0 : _a.some((e) => e.severity === 1)));
46
+ });
47
+ return {
48
+ hasSyntaxErrors,
49
+ importedURIs,
50
+ };
51
+ }
52
+ catch (error) {
53
+ console.error('Error getting imported ZModel file:', error);
54
+ return {
55
+ hasSyntaxErrors: true,
56
+ importedURIs: [],
57
+ };
58
+ }
59
+ }));
11
60
  // Start the language server with the shared services
12
61
  (0, langium_1.startLanguageServer)(shared);
13
62
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/language-server/main.ts"],"names":[],"mappings":";;AAAA,qCAA8C;AAC9C,uCAA8C;AAC9C,qDAAgF;AAChF,mDAAuD;AAEvD,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAoB,kBAAG,UAAU,IAAK,qBAAc,EAAG,CAAC;AAE3E,qDAAqD;AACrD,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/language-server/main.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAA8C;AAC9C,uCAA8C;AAC9C,qDAAgF;AAChF,2CAAiC;AACjC,mDAAuD;AACvD,8CAAsD;AAEtD,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAoB,kBAAG,UAAU,IAAK,qBAAc,EAAG,CAAC;AAE3E,kCAAkC;AAClC,UAAU,CAAC,SAAS,CAAC,mCAAmC,EAAE,CAAO,MAAyC,EAAE,EAAE;IAC1G,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,gBAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5E,0CAA0C;QAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAE3D,mBAAmB;QACnB,MAAM,YAAY,GAAG,IAAA,8BAAmB,EAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAErE,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/F,4FAA4F;QAC5F,MAAM,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,EAAE;YAC3E,gBAAgB,EAAE,KAAK;SAC1B,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;;YACxD,MAAM,GAAG,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,CACH,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gBACtC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;iBACvC,MAAA,GAAG,CAAC,WAAW,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAA,CACjD,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,eAAe;YACf,YAAY;SACf,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO;YACH,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,EAAE;SACnB,CAAC;IACN,CAAC;AACL,CAAC,CAAA,CAAC,CAAC;AAEH,qDAAqD;AACrD,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publisher": "zenstack",
4
4
  "displayName": "ZenStack Language Tools",
5
5
  "description": "FullStack enhancement for Prisma ORM: seamless integration from database to UI",
6
- "version": "2.18.1",
6
+ "version": "2.19.0",
7
7
  "author": {
8
8
  "name": "ZenStack Team"
9
9
  },
@@ -27,7 +27,7 @@
27
27
  "linkDirectory": true
28
28
  },
29
29
  "engines": {
30
- "vscode": "^1.63.0"
30
+ "vscode": "^1.99.3"
31
31
  },
32
32
  "categories": [
33
33
  "Programming Languages"
@@ -64,13 +64,68 @@
64
64
  "type": "boolean",
65
65
  "default": true,
66
66
  "description": "Use Prisma style indentation."
67
+ },
68
+ "zenstack.searchForExtensions": {
69
+ "type": "boolean",
70
+ "default": true,
71
+ "description": "Search for Mermaid extensions when viewing Mermaid source."
67
72
  }
68
73
  }
69
- }
74
+ },
75
+ "menus": {
76
+ "editor/title": [
77
+ {
78
+ "command": "zenstack.preview-zmodel",
79
+ "when": "editorLangId == zmodel",
80
+ "group": "navigation"
81
+ }
82
+ ],
83
+ "commandPalette": [
84
+ {
85
+ "command": "zenstack.preview-zmodel",
86
+ "when": "editorLangId == zmodel"
87
+ },
88
+ {
89
+ "command": "zenstack.clear-documentation-cache"
90
+ },
91
+ {
92
+ "command": "zenstack.logout"
93
+ }
94
+ ]
95
+ },
96
+ "commands": [
97
+ {
98
+ "command": "zenstack.preview-zmodel",
99
+ "title": "ZenStack: Preview ZModel Documentation",
100
+ "icon": "$(preview)"
101
+ },
102
+ {
103
+ "command": "zenstack.clear-documentation-cache",
104
+ "title": "ZenStack: Clear Documentation Cache",
105
+ "icon": "$(trash)"
106
+ },
107
+ {
108
+ "command": "zenstack.logout",
109
+ "title": "ZenStack: Logout",
110
+ "icon": "$(log-out)"
111
+ }
112
+ ],
113
+ "keybindings": [
114
+ {
115
+ "command": "zenstack.preview-zmodel",
116
+ "key": "ctrl+shift+v",
117
+ "mac": "cmd+shift+v",
118
+ "when": "editorLangId == zmodel"
119
+ }
120
+ ]
121
+ },
122
+ "activationEvents": [],
123
+ "capabilities": {
124
+ "untrustedWorkspaces": {
125
+ "supported": true
126
+ },
127
+ "virtualWorkspaces": true
70
128
  },
71
- "activationEvents": [
72
- "onLanguage:zmodel"
73
- ],
74
129
  "bin": {
75
130
  "zenstack": "bin/cli"
76
131
  },
@@ -98,22 +153,22 @@
98
153
  "vscode-languageserver-textdocument": "^1.0.7",
99
154
  "vscode-uri": "^3.0.6",
100
155
  "zod-validation-error": "^4.0.0",
101
- "@zenstackhq/language": "2.18.1",
102
- "@zenstackhq/sdk": "2.18.1"
156
+ "@zenstackhq/sdk": "2.19.0",
157
+ "@zenstackhq/language": "2.19.0"
103
158
  },
104
159
  "peerDependencies": {
105
- "prisma": "5.0.0 - 6.14.x",
106
- "zod": "^3.25.0"
160
+ "prisma": "5.0.0 - 6.16.x",
161
+ "zod": "^3.25.0 || ^4.0.0"
107
162
  },
108
163
  "devDependencies": {
109
- "@prisma/client": "6.14.x",
164
+ "@prisma/client": "6.16.x",
110
165
  "@types/async-exit-hook": "^2.0.0",
111
166
  "@types/pluralize": "^0.0.29",
112
167
  "@types/semver": "^7.3.13",
113
168
  "@types/strip-color": "^0.1.0",
114
169
  "@types/tmp": "^0.2.3",
115
170
  "@types/uuid": "^8.3.4",
116
- "@types/vscode": "^1.56.0",
171
+ "@types/vscode": "^1.99.3",
117
172
  "@vscode/vsce": "^3.5.0",
118
173
  "dotenv": "^16.0.3",
119
174
  "esbuild": "^0.24.0",
@@ -121,7 +176,7 @@
121
176
  "tmp": "^0.2.1",
122
177
  "tsc-alias": "^1.7.0",
123
178
  "vitest": "^0.29.7",
124
- "@zenstackhq/runtime": "2.18.1"
179
+ "@zenstackhq/runtime": "2.19.0"
125
180
  },
126
181
  "scripts": {
127
182
  "vscode:publish": "vsce publish --no-dependencies",
@@ -350,13 +350,14 @@ export type Enhanced<Client> =
350
350
  }
351
351
  getLogicalDMMF(logicalPrismaFile) {
352
352
  return __awaiter(this, void 0, void 0, function* () {
353
+ var _a;
353
354
  const dmmf = yield (0, prisma_1.getDMMF)({ datamodel: fs_1.default.readFileSync(logicalPrismaFile, { encoding: 'utf-8' }) });
354
355
  // make necessary fixes
355
356
  // fields that use `auth()` in `@default` are not handled by Prisma so in the DMMF
356
357
  // they may be incorrectly represented as required, we need to fix that for input types
357
358
  // also, if a FK field is of such case, its corresponding relation field should be optional
358
359
  const createInputPattern = new RegExp(`^(.+?)(Unchecked)?Create.*Input$`);
359
- for (const inputType of dmmf.schema.inputObjectTypes.prisma) {
360
+ for (const inputType of (_a = dmmf.schema.inputObjectTypes.prisma) !== null && _a !== void 0 ? _a : []) {
360
361
  const match = inputType.name.match(createInputPattern);
361
362
  const modelName = this.resolveName(match === null || match === void 0 ? void 0 : match[1]);
362
363
  if (modelName) {
@@ -475,7 +476,7 @@ export type Enhanced<Client> =
475
476
  if (!ts_morph_1.Node.isSyntaxList(syntaxList)) {
476
477
  throw new sdk_1.PluginError(__1.name, `Unexpected syntax list structure in ${fileName}`);
477
478
  }
478
- const statements = ['import $Types = runtime.Types;'];
479
+ const statements = [];
479
480
  // Add import for json-types if this model has JSON type fields
480
481
  const modelWithJsonFields = this.modelsWithJsonTypeFields.find((m) => m.name === d.name);
481
482
  if (modelWithJsonFields) {
@@ -791,7 +792,7 @@ export type Enhanced<Client> =
791
792
  // Check if the field in the source is optional (has a `?`)
792
793
  const isOptionalInSource = new RegExp(`(${field.name}\\?\\s*):`).test(source);
793
794
  if (isOptionalInSource) {
794
- replaceValue += ' | $Types.Skip';
795
+ replaceValue += ' | runtime.Types.Skip';
795
796
  }
796
797
  return source.replace(new RegExp(`(${field.name}\\??\\s*):[^\\n]+`), replaceValue);
797
798
  };