zenstack 2.19.0 → 2.19.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/package.json +20 -4
- package/documentation-cache.d.ts +0 -48
- package/documentation-cache.js +0 -141
- package/documentation-cache.js.map +0 -1
- package/extension.d.ts +0 -4
- package/extension.js +0 -135
- package/extension.js.map +0 -1
- package/release-notes-manager.d.ts +0 -25
- package/release-notes-manager.js +0 -111
- package/release-notes-manager.js.map +0 -1
- package/res/zmodel-preview-release-notes.html +0 -91
- package/zenstack-auth-provider.d.ts +0 -32
- package/zenstack-auth-provider.js +0 -281
- package/zenstack-auth-provider.js.map +0 -1
- package/zmodel-preview.d.ts +0 -44
- package/zmodel-preview.js +0 -289
- package/zmodel-preview.js.map +0 -1
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import * as vscode from 'vscode';
|
|
2
|
-
export declare const AUTH_PROVIDER_ID = "ZenStack";
|
|
3
|
-
export declare const AUTH_URL = "https://accounts.zenstack.dev";
|
|
4
|
-
export declare const API_URL = "https://api.zenstack.dev";
|
|
5
|
-
export declare class ZenStackAuthenticationProvider implements vscode.AuthenticationProvider, vscode.Disposable {
|
|
6
|
-
private _onDidChangeSessions;
|
|
7
|
-
readonly onDidChangeSessions: vscode.Event<vscode.AuthenticationProviderAuthenticationSessionsChangeEvent>;
|
|
8
|
-
private _sessions;
|
|
9
|
-
private _context;
|
|
10
|
-
private _disposable;
|
|
11
|
-
private pendingAuth?;
|
|
12
|
-
constructor(context: vscode.ExtensionContext);
|
|
13
|
-
getSessions(_scopes?: readonly string[]): Promise<vscode.AuthenticationSession[]>;
|
|
14
|
-
createSession(scopes: readonly string[]): Promise<vscode.AuthenticationSession>;
|
|
15
|
-
removeSession(sessionId: string): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Log out all sessions
|
|
18
|
-
*/
|
|
19
|
-
logoutAllSessions(): Promise<void>;
|
|
20
|
-
private performLogin;
|
|
21
|
-
private generateState;
|
|
22
|
-
handleAuthCallback(callbackUri: vscode.Uri): Promise<void>;
|
|
23
|
-
private createSessionFromAccessToken;
|
|
24
|
-
private parseJWTClaims;
|
|
25
|
-
private getStoredSessions;
|
|
26
|
-
private storeSession;
|
|
27
|
-
private removeStoredSession;
|
|
28
|
-
/**
|
|
29
|
-
* Dispose the registered services
|
|
30
|
-
*/
|
|
31
|
-
dispose(): Promise<void>;
|
|
32
|
-
}
|
|
@@ -1,281 +0,0 @@
|
|
|
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.ZenStackAuthenticationProvider = exports.API_URL = exports.AUTH_URL = exports.AUTH_PROVIDER_ID = void 0;
|
|
46
|
-
const vscode = __importStar(require("vscode"));
|
|
47
|
-
exports.AUTH_PROVIDER_ID = 'ZenStack';
|
|
48
|
-
exports.AUTH_URL = 'https://accounts.zenstack.dev';
|
|
49
|
-
exports.API_URL = 'https://api.zenstack.dev';
|
|
50
|
-
class ZenStackAuthenticationProvider {
|
|
51
|
-
constructor(context) {
|
|
52
|
-
this._onDidChangeSessions = new vscode.EventEmitter();
|
|
53
|
-
this.onDidChangeSessions = this._onDidChangeSessions.event;
|
|
54
|
-
this._sessions = [];
|
|
55
|
-
this._context = context;
|
|
56
|
-
this._disposable = vscode.Disposable.from(vscode.authentication.registerAuthenticationProvider(exports.AUTH_PROVIDER_ID, 'ZenStack', this), vscode.window.registerUriHandler({
|
|
57
|
-
handleUri: (uri) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
if (uri.path === '/auth-callback') {
|
|
59
|
-
yield this.handleAuthCallback(uri);
|
|
60
|
-
}
|
|
61
|
-
}),
|
|
62
|
-
}),
|
|
63
|
-
// Register logout command
|
|
64
|
-
vscode.commands.registerCommand('zenstack.logout', () => __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
yield this.logoutAllSessions();
|
|
66
|
-
})));
|
|
67
|
-
}
|
|
68
|
-
getSessions(_scopes) {
|
|
69
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
// Check if we have stored sessions in VS Code's secret storage
|
|
71
|
-
const storedSessions = yield this.getStoredSessions();
|
|
72
|
-
this._sessions = storedSessions;
|
|
73
|
-
return this._sessions;
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
createSession(scopes) {
|
|
77
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
// Create a login flow
|
|
79
|
-
const session = yield this.performLogin(scopes);
|
|
80
|
-
if (session) {
|
|
81
|
-
this._sessions.push(session);
|
|
82
|
-
yield this.storeSession(session);
|
|
83
|
-
this._onDidChangeSessions.fire({
|
|
84
|
-
added: [session],
|
|
85
|
-
removed: [],
|
|
86
|
-
changed: [],
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
return session;
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
removeSession(sessionId) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
const sessionIndex = this._sessions.findIndex((s) => s.id === sessionId);
|
|
95
|
-
if (sessionIndex > -1) {
|
|
96
|
-
const session = this._sessions[sessionIndex];
|
|
97
|
-
this._sessions.splice(sessionIndex, 1);
|
|
98
|
-
yield this.removeStoredSession(sessionId);
|
|
99
|
-
this._onDidChangeSessions.fire({
|
|
100
|
-
added: [],
|
|
101
|
-
removed: [session],
|
|
102
|
-
changed: [],
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Log out all sessions
|
|
109
|
-
*/
|
|
110
|
-
logoutAllSessions() {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
if (this._sessions.length === 0) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
(yield this.getSessions()).forEach((s) => __awaiter(this, void 0, void 0, function* () { return yield this.removeSession(s.id); }));
|
|
116
|
-
vscode.window.showInformationMessage('Successfully logged out of ZenStack.');
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
performLogin(scopes) {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
// Create the authentication promise
|
|
122
|
-
return vscode.window.withProgress({
|
|
123
|
-
location: vscode.ProgressLocation.Notification,
|
|
124
|
-
title: 'Signing in to ZenStack',
|
|
125
|
-
cancellable: true,
|
|
126
|
-
}, (progress, token) => __awaiter(this, void 0, void 0, function* () {
|
|
127
|
-
return new Promise((resolve, reject) => {
|
|
128
|
-
// Handle cancellation
|
|
129
|
-
token.onCancellationRequested(() => {
|
|
130
|
-
if (this.pendingAuth) {
|
|
131
|
-
delete this.pendingAuth;
|
|
132
|
-
}
|
|
133
|
-
reject(new Error('User Cancelled'));
|
|
134
|
-
});
|
|
135
|
-
const isCursor = vscode.env.appName == 'Cursor';
|
|
136
|
-
let signInUrl = vscode.Uri.parse(new URL('/sign-in', exports.AUTH_URL).toString());
|
|
137
|
-
if (isCursor) {
|
|
138
|
-
signInUrl = signInUrl.with({
|
|
139
|
-
query: `redirect_url=${exports.API_URL}/oauth/oauth_callback?vscodeapp=cursor`,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
console.log('ZenStack sign-in URL:', signInUrl.toString());
|
|
143
|
-
// Store the state and resolve function for later use
|
|
144
|
-
this.pendingAuth = { resolve, reject, scopes };
|
|
145
|
-
// Open the ZenStack sign-in page in the user's default browser
|
|
146
|
-
vscode.env.openExternal(signInUrl).then(() => {
|
|
147
|
-
console.log('Opened ZenStack sign-in page in browser');
|
|
148
|
-
progress.report({ message: 'Waiting for return from browser...' });
|
|
149
|
-
}, (error) => {
|
|
150
|
-
if (this.pendingAuth) {
|
|
151
|
-
delete this.pendingAuth;
|
|
152
|
-
}
|
|
153
|
-
reject(new Error(`Failed to open sign-in page: ${error}`));
|
|
154
|
-
});
|
|
155
|
-
// 2 minutes timeout
|
|
156
|
-
setTimeout(() => {
|
|
157
|
-
if (this.pendingAuth) {
|
|
158
|
-
delete this.pendingAuth;
|
|
159
|
-
}
|
|
160
|
-
reject(new Error('Timeout'));
|
|
161
|
-
}, 120000);
|
|
162
|
-
});
|
|
163
|
-
}));
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
generateState() {
|
|
167
|
-
return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
|
|
168
|
-
}
|
|
169
|
-
// Handle authentication callback from ZenStack
|
|
170
|
-
handleAuthCallback(callbackUri) {
|
|
171
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
-
const query = new URLSearchParams(callbackUri.query);
|
|
173
|
-
const accessToken = query.get('access_token');
|
|
174
|
-
if (!this.pendingAuth) {
|
|
175
|
-
console.warn('No pending authentication found');
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
if (!accessToken) {
|
|
179
|
-
this.pendingAuth.reject(new Error('No access token received'));
|
|
180
|
-
delete this.pendingAuth;
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
try {
|
|
184
|
-
// Create session from the access token
|
|
185
|
-
const session = yield this.createSessionFromAccessToken(accessToken);
|
|
186
|
-
this.pendingAuth.resolve(session);
|
|
187
|
-
delete this.pendingAuth;
|
|
188
|
-
}
|
|
189
|
-
catch (error) {
|
|
190
|
-
if (this.pendingAuth) {
|
|
191
|
-
this.pendingAuth.reject(error instanceof Error ? error : new Error(String(error)));
|
|
192
|
-
delete this.pendingAuth;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
createSessionFromAccessToken(accessToken) {
|
|
198
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
-
try {
|
|
200
|
-
// Decode JWT to get claims
|
|
201
|
-
const claims = this.parseJWTClaims(accessToken);
|
|
202
|
-
return {
|
|
203
|
-
id: claims.jti || Math.random().toString(36),
|
|
204
|
-
accessToken: accessToken,
|
|
205
|
-
account: {
|
|
206
|
-
id: claims.sub || 'unknown',
|
|
207
|
-
label: claims.email || 'unknown@zenstack.dev',
|
|
208
|
-
},
|
|
209
|
-
scopes: [],
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
catch (error) {
|
|
213
|
-
throw new Error(`Failed to create session from access token: ${error}`);
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
parseJWTClaims(token) {
|
|
218
|
-
try {
|
|
219
|
-
// JWT tokens have 3 parts separated by dots: header.payload.signature
|
|
220
|
-
const parts = token.split('.');
|
|
221
|
-
if (parts.length !== 3) {
|
|
222
|
-
throw new Error('Invalid JWT format');
|
|
223
|
-
}
|
|
224
|
-
// Decode the payload (second part)
|
|
225
|
-
const payload = parts[1];
|
|
226
|
-
// Add padding if needed for base64 decoding
|
|
227
|
-
const paddedPayload = payload + '='.repeat((4 - (payload.length % 4)) % 4);
|
|
228
|
-
const decoded = atob(paddedPayload);
|
|
229
|
-
return JSON.parse(decoded);
|
|
230
|
-
}
|
|
231
|
-
catch (error) {
|
|
232
|
-
throw new Error(`Failed to parse JWT claims: ${error}`);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
getStoredSessions() {
|
|
236
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
237
|
-
try {
|
|
238
|
-
const stored = yield this._context.secrets.get('zenstack-auth-sessions');
|
|
239
|
-
return stored ? JSON.parse(stored) : [];
|
|
240
|
-
}
|
|
241
|
-
catch (error) {
|
|
242
|
-
console.error('Error retrieving stored sessions:', error);
|
|
243
|
-
return [];
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
storeSession(session) {
|
|
248
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
249
|
-
try {
|
|
250
|
-
const sessions = yield this.getStoredSessions();
|
|
251
|
-
sessions.push(session);
|
|
252
|
-
yield this._context.secrets.store('zenstack-auth-sessions', JSON.stringify(sessions));
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
console.error('Error storing session:', error);
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
removeStoredSession(sessionId) {
|
|
260
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
261
|
-
try {
|
|
262
|
-
const sessions = yield this.getStoredSessions();
|
|
263
|
-
const filteredSessions = sessions.filter((s) => s.id !== sessionId);
|
|
264
|
-
yield this._context.secrets.store('zenstack-auth-sessions', JSON.stringify(filteredSessions));
|
|
265
|
-
}
|
|
266
|
-
catch (error) {
|
|
267
|
-
console.error('Error removing stored session:', error);
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Dispose the registered services
|
|
273
|
-
*/
|
|
274
|
-
dispose() {
|
|
275
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
276
|
-
this._disposable.dispose();
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
exports.ZenStackAuthenticationProvider = ZenStackAuthenticationProvider;
|
|
281
|
-
//# sourceMappingURL=zenstack-auth-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zenstack-auth-provider.js","sourceRoot":"","sources":["../src/zenstack-auth-provider.ts"],"names":[],"mappings":"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"}
|
package/zmodel-preview.d.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import * as vscode from 'vscode';
|
|
2
|
-
import { LanguageClient } from 'vscode-languageclient/node';
|
|
3
|
-
import { DocumentationCache } from './documentation-cache';
|
|
4
|
-
/**
|
|
5
|
-
* ZModelPreview class handles ZModel file preview functionality
|
|
6
|
-
*/
|
|
7
|
-
export declare class ZModelPreview implements vscode.Disposable {
|
|
8
|
-
private documentationCache;
|
|
9
|
-
private languageClient;
|
|
10
|
-
private static DocRequestSchema;
|
|
11
|
-
constructor(context: vscode.ExtensionContext, client: LanguageClient, cache: DocumentationCache);
|
|
12
|
-
/**
|
|
13
|
-
* Initialize and register commands
|
|
14
|
-
*/
|
|
15
|
-
initialize(context: vscode.ExtensionContext): void;
|
|
16
|
-
/**
|
|
17
|
-
* Register ZModel preview commands
|
|
18
|
-
*/
|
|
19
|
-
private registerCommands;
|
|
20
|
-
/**
|
|
21
|
-
* Preview a ZModel file
|
|
22
|
-
*/
|
|
23
|
-
previewZModelFile(): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Get all imported ZModel URIs using the language server
|
|
26
|
-
*/
|
|
27
|
-
private getAllImportedZModelURIs;
|
|
28
|
-
/**
|
|
29
|
-
* Generate documentation for ZModel
|
|
30
|
-
*/
|
|
31
|
-
private generateZModelDocumentation;
|
|
32
|
-
/**
|
|
33
|
-
* Open markdown preview
|
|
34
|
-
*/
|
|
35
|
-
private openMarkdownPreview;
|
|
36
|
-
/**
|
|
37
|
-
* Check for Mermaid extensions
|
|
38
|
-
*/
|
|
39
|
-
private checkForMermaidExtensions;
|
|
40
|
-
/**
|
|
41
|
-
* Dispose of resources
|
|
42
|
-
*/
|
|
43
|
-
dispose(): void;
|
|
44
|
-
}
|
package/zmodel-preview.js
DELETED
|
@@ -1,289 +0,0 @@
|
|
|
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.ZModelPreview = void 0;
|
|
46
|
-
const vscode = __importStar(require("vscode"));
|
|
47
|
-
const path = __importStar(require("path"));
|
|
48
|
-
const os = __importStar(require("os"));
|
|
49
|
-
const zod_1 = require("zod");
|
|
50
|
-
const extension_1 = require("./extension");
|
|
51
|
-
const zenstack_auth_provider_1 = require("./zenstack-auth-provider");
|
|
52
|
-
/**
|
|
53
|
-
* ZModelPreview class handles ZModel file preview functionality
|
|
54
|
-
*/
|
|
55
|
-
class ZModelPreview {
|
|
56
|
-
constructor(context, client, cache) {
|
|
57
|
-
this.documentationCache = cache;
|
|
58
|
-
this.languageClient = client;
|
|
59
|
-
this.initialize(context);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Initialize and register commands
|
|
63
|
-
*/
|
|
64
|
-
initialize(context) {
|
|
65
|
-
this.registerCommands(context);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Register ZModel preview commands
|
|
69
|
-
*/
|
|
70
|
-
registerCommands(context) {
|
|
71
|
-
// Register the preview command for zmodel files
|
|
72
|
-
context.subscriptions.push(vscode.commands.registerCommand('zenstack.preview-zmodel', () => __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
yield this.previewZModelFile();
|
|
74
|
-
})));
|
|
75
|
-
// Register cache management commands
|
|
76
|
-
context.subscriptions.push(vscode.commands.registerCommand('zenstack.clear-documentation-cache', () => __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
yield this.documentationCache.clearAllCache();
|
|
78
|
-
vscode.window.showInformationMessage('ZenStack documentation cache cleared');
|
|
79
|
-
})));
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Preview a ZModel file
|
|
83
|
-
*/
|
|
84
|
-
previewZModelFile() {
|
|
85
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
const editor = vscode.window.activeTextEditor;
|
|
87
|
-
if (!editor) {
|
|
88
|
-
vscode.window.showErrorMessage('No active editor found.');
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
const document = editor.document;
|
|
92
|
-
if (!document.fileName.endsWith('.zmodel')) {
|
|
93
|
-
vscode.window.showErrorMessage('The active file is not a ZModel file.');
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Check authentication before proceeding
|
|
97
|
-
const session = yield (0, extension_1.requireAuth)();
|
|
98
|
-
if (!session) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
try {
|
|
102
|
-
this.checkForMermaidExtensions();
|
|
103
|
-
// Show progress indicator
|
|
104
|
-
yield vscode.window.withProgress({
|
|
105
|
-
location: vscode.ProgressLocation.Notification,
|
|
106
|
-
title: 'Generating ZModel documentation...',
|
|
107
|
-
cancellable: false,
|
|
108
|
-
}, () => __awaiter(this, void 0, void 0, function* () {
|
|
109
|
-
const markdownContent = yield this.generateZModelDocumentation(document);
|
|
110
|
-
if (markdownContent) {
|
|
111
|
-
yield this.openMarkdownPreview(markdownContent, document.fileName);
|
|
112
|
-
}
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
console.error('Error previewing ZModel:', error);
|
|
117
|
-
vscode.window.showErrorMessage(`Failed to preview ZModel: ${error instanceof Error ? error.message : String(error)}`);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get all imported ZModel URIs using the language server
|
|
123
|
-
*/
|
|
124
|
-
getAllImportedZModelURIs(document) {
|
|
125
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
if (!this.languageClient) {
|
|
127
|
-
throw new Error('Language client not initialized');
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
// Ensure the language server is ready
|
|
131
|
-
yield this.languageClient.start();
|
|
132
|
-
// Send the custom request to get all imported ZModel URIs
|
|
133
|
-
const result = yield this.languageClient.sendRequest('zenstack/getAllImportedZModelURIs', {
|
|
134
|
-
textDocument: {
|
|
135
|
-
uri: document.uri.toString(),
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
return result;
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
console.error('Error getting AST from language server:', error);
|
|
142
|
-
throw error;
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Generate documentation for ZModel
|
|
148
|
-
*/
|
|
149
|
-
generateZModelDocumentation(document) {
|
|
150
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
-
try {
|
|
152
|
-
const astInfo = yield this.getAllImportedZModelURIs(document);
|
|
153
|
-
if ((astInfo === null || astInfo === void 0 ? void 0 : astInfo.hasSyntaxErrors) !== false) {
|
|
154
|
-
vscode.window.showWarningMessage('Please fix the errors in the ZModel first');
|
|
155
|
-
return '';
|
|
156
|
-
}
|
|
157
|
-
const importedURIs = astInfo === null || astInfo === void 0 ? void 0 : astInfo.importedURIs;
|
|
158
|
-
// get vscode document from importedURIs
|
|
159
|
-
const importedModels = yield Promise.all(importedURIs.map((uri) => __awaiter(this, void 0, void 0, function* () {
|
|
160
|
-
try {
|
|
161
|
-
const fileUri = vscode.Uri.file(uri.path);
|
|
162
|
-
const fileContent = yield vscode.workspace.fs.readFile(fileUri);
|
|
163
|
-
const filePath = fileUri.path;
|
|
164
|
-
return { content: Buffer.from(fileContent).toString('utf8').trim(), path: filePath };
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
throw new Error(`Failed to read imported ZModel file at ${uri.path}: ${error instanceof Error ? error.message : String(error)}`);
|
|
168
|
-
}
|
|
169
|
-
})));
|
|
170
|
-
const allModels = [{ content: document.getText().trim(), path: document.uri.path }, ...importedModels];
|
|
171
|
-
const session = yield (0, extension_1.requireAuth)();
|
|
172
|
-
if (!session) {
|
|
173
|
-
throw new Error('Authentication required to generate documentation');
|
|
174
|
-
}
|
|
175
|
-
// Prepare request body
|
|
176
|
-
const requestBody = {
|
|
177
|
-
models: allModels,
|
|
178
|
-
environments: {
|
|
179
|
-
vscodeAppName: vscode.env.appName,
|
|
180
|
-
vscodeVersion: vscode.version,
|
|
181
|
-
vscodeAppHost: vscode.env.appHost,
|
|
182
|
-
osRelease: os.release(),
|
|
183
|
-
osType: os.type(),
|
|
184
|
-
},
|
|
185
|
-
};
|
|
186
|
-
const allModelsContent = allModels.map((m) => m.content);
|
|
187
|
-
// Check cache first
|
|
188
|
-
const cachedResponse = yield this.documentationCache.getCachedResponse(allModelsContent);
|
|
189
|
-
if (cachedResponse) {
|
|
190
|
-
return cachedResponse;
|
|
191
|
-
}
|
|
192
|
-
// record the time spent
|
|
193
|
-
const startTime = Date.now();
|
|
194
|
-
const apiResponse = yield fetch(`${zenstack_auth_provider_1.API_URL}/api/doc`, {
|
|
195
|
-
method: 'POST',
|
|
196
|
-
headers: {
|
|
197
|
-
'Content-Type': 'application/json',
|
|
198
|
-
authorization: session.accessToken,
|
|
199
|
-
},
|
|
200
|
-
body: JSON.stringify(requestBody),
|
|
201
|
-
});
|
|
202
|
-
console.log(`API request completed in ${Date.now() - startTime} ms`);
|
|
203
|
-
if (!apiResponse.ok) {
|
|
204
|
-
throw new Error(`API request failed: ${apiResponse.status} ${apiResponse.statusText}`);
|
|
205
|
-
}
|
|
206
|
-
const responseText = yield apiResponse.text();
|
|
207
|
-
// Cache the response
|
|
208
|
-
yield this.documentationCache.setCachedResponse(allModelsContent, responseText);
|
|
209
|
-
return responseText;
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
console.error('Error generating documentation:', error);
|
|
213
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
214
|
-
throw new Error(`Failed to generate documentation: ${errorMessage}`);
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Open markdown preview
|
|
220
|
-
*/
|
|
221
|
-
openMarkdownPreview(markdownContent, originalFileName) {
|
|
222
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
223
|
-
// Create a temporary markdown file with a descriptive name in the system temp folder
|
|
224
|
-
const baseName = path.basename(originalFileName, '.zmodel');
|
|
225
|
-
const tempFileName = `${baseName}-preview.md`;
|
|
226
|
-
const tempFilePath = path.join(os.tmpdir(), tempFileName);
|
|
227
|
-
const tempFile = vscode.Uri.file(tempFilePath);
|
|
228
|
-
try {
|
|
229
|
-
// Write the markdown content to the temp file
|
|
230
|
-
yield vscode.workspace.fs.writeFile(tempFile, new TextEncoder().encode(markdownContent));
|
|
231
|
-
// Open the markdown preview side by side
|
|
232
|
-
yield vscode.commands.executeCommand('markdown.showPreviewToSide', tempFile);
|
|
233
|
-
}
|
|
234
|
-
catch (error) {
|
|
235
|
-
console.error('Error creating markdown preview:', error);
|
|
236
|
-
throw new Error(`Failed to create markdown preview: ${error instanceof Error ? error.message : String(error)}`);
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Check for Mermaid extensions
|
|
242
|
-
*/
|
|
243
|
-
checkForMermaidExtensions() {
|
|
244
|
-
const setting = vscode.workspace.getConfiguration('zenstack').get('searchForExtensions');
|
|
245
|
-
if (setting !== false) {
|
|
246
|
-
const extensions = vscode.extensions.all.filter((extension) => ['markdown-mermaid', 'vscode-mermaid-chart', 'vscode-mermaid-preview'].some((name) => { var _a; return (_a = extension.packageJSON.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(name.toLowerCase()); }));
|
|
247
|
-
if (extensions.length === 0) {
|
|
248
|
-
const searchAction = 'Search';
|
|
249
|
-
const stopShowing = "Don't show again";
|
|
250
|
-
vscode.window
|
|
251
|
-
.showInformationMessage('Search for extensions to view mermaid chart in ZModel preview doc?', searchAction, stopShowing)
|
|
252
|
-
.then((selectedAction) => {
|
|
253
|
-
if (selectedAction === searchAction) {
|
|
254
|
-
vscode.commands.executeCommand('workbench.extensions.search', 'markdown-mermaid');
|
|
255
|
-
}
|
|
256
|
-
else if (selectedAction === stopShowing) {
|
|
257
|
-
vscode.workspace
|
|
258
|
-
.getConfiguration('zenstack')
|
|
259
|
-
.update('searchForExtensions', false, vscode.ConfigurationTarget.Global);
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Dispose of resources
|
|
267
|
-
*/
|
|
268
|
-
dispose() {
|
|
269
|
-
// Any cleanup if needed
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
exports.ZModelPreview = ZModelPreview;
|
|
273
|
-
// Schema for validating the request body
|
|
274
|
-
ZModelPreview.DocRequestSchema = zod_1.z.object({
|
|
275
|
-
models: zod_1.z.array(zod_1.z.object({
|
|
276
|
-
path: zod_1.z.string().optional(),
|
|
277
|
-
content: zod_1.z.string(),
|
|
278
|
-
})),
|
|
279
|
-
environments: zod_1.z
|
|
280
|
-
.object({
|
|
281
|
-
vscodeAppName: zod_1.z.string(),
|
|
282
|
-
vscodeVersion: zod_1.z.string(),
|
|
283
|
-
vscodeAppHost: zod_1.z.string(),
|
|
284
|
-
osRelease: zod_1.z.string(),
|
|
285
|
-
osType: zod_1.z.string(),
|
|
286
|
-
})
|
|
287
|
-
.optional(),
|
|
288
|
-
});
|
|
289
|
-
//# sourceMappingURL=zmodel-preview.js.map
|