zenstack 2.18.0 → 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 +1 -1
- package/cli/config.d.ts +1 -1
- package/cli/config.js +1 -2
- package/cli/config.js.map +1 -1
- package/documentation-cache.d.ts +48 -0
- package/documentation-cache.js +141 -0
- package/documentation-cache.js.map +1 -0
- package/extension.d.ts +4 -0
- package/extension.js +135 -0
- package/extension.js.map +1 -0
- package/language-server/main.js +49 -0
- package/language-server/main.js.map +1 -1
- package/package.json +68 -13
- package/plugins/enhancer/enhance/index.js +4 -3
- package/plugins/enhancer/enhance/index.js.map +1 -1
- package/plugins/zod/generator.d.ts +1 -0
- package/plugins/zod/generator.js +42 -28
- package/plugins/zod/generator.js.map +1 -1
- package/plugins/zod/transformer.js +14 -3
- package/plugins/zod/transformer.js.map +1 -1
- package/plugins/zod/utils/schema-gen.d.ts +1 -1
- package/plugins/zod/utils/schema-gen.js +15 -11
- package/plugins/zod/utils/schema-gen.js.map +1 -1
- package/release-notes-manager.d.ts +25 -0
- package/release-notes-manager.js +111 -0
- package/release-notes-manager.js.map +1 -0
- package/res/zmodel-preview-release-notes.html +91 -0
- package/zenstack-auth-provider.d.ts +32 -0
- package/zenstack-auth-provider.js +281 -0
- package/zenstack-auth-provider.js.map +1 -0
- package/zmodel-preview.d.ts +44 -0
- package/zmodel-preview.js +289 -0
- package/zmodel-preview.js.map +1 -0
|
@@ -6,7 +6,7 @@ const sdk_1 = require("@zenstackhq/sdk");
|
|
|
6
6
|
const ast_1 = require("@zenstackhq/sdk/ast");
|
|
7
7
|
const local_helpers_1 = require("@zenstackhq/runtime/local-helpers");
|
|
8
8
|
const enhancer_utils_1 = require("../../enhancer/enhancer-utils");
|
|
9
|
-
function makeFieldSchema(field) {
|
|
9
|
+
function makeFieldSchema(field, addDefaults = true) {
|
|
10
10
|
var _a, _b;
|
|
11
11
|
if ((0, ast_1.isDataModel)((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref)) {
|
|
12
12
|
if (field.type.array) {
|
|
@@ -14,7 +14,9 @@ function makeFieldSchema(field) {
|
|
|
14
14
|
return `z.array(z.unknown()).optional()`;
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
return field.type.optional
|
|
17
|
+
return field.type.optional
|
|
18
|
+
? `z.record(z.string(), z.unknown()).optional()`
|
|
19
|
+
: `z.record(z.string(), z.unknown())`;
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
22
|
let schema = makeZodSchema(field);
|
|
@@ -133,15 +135,17 @@ function makeFieldSchema(field) {
|
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
else {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
138
|
+
if (addDefaults) {
|
|
139
|
+
const schemaDefault = getFieldSchemaDefault(field);
|
|
140
|
+
if (schemaDefault !== undefined) {
|
|
141
|
+
if (field.type.type === 'BigInt') {
|
|
142
|
+
// we can't use the `n` BigInt literal notation, since it needs
|
|
143
|
+
// ES2020 or later, which TypeScript doesn't use by default
|
|
144
|
+
schema += `.default(BigInt("${schemaDefault}"))`;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
schema += `.default(${schemaDefault})`;
|
|
148
|
+
}
|
|
145
149
|
}
|
|
146
150
|
}
|
|
147
151
|
if (field.type.optional) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-gen.js","sourceRoot":"","sources":["../../../../src/plugins/zod/utils/schema-gen.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"schema-gen.js","sourceRoot":"","sources":["../../../../src/plugins/zod/utils/schema-gen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as vscode from 'vscode';
|
|
2
|
+
/**
|
|
3
|
+
* ReleaseNotesManager class handles release notes functionality
|
|
4
|
+
*/
|
|
5
|
+
export declare class ReleaseNotesManager implements vscode.Disposable {
|
|
6
|
+
private extensionContext;
|
|
7
|
+
private readonly zmodelPreviewReleaseNoteKey;
|
|
8
|
+
constructor(context: vscode.ExtensionContext);
|
|
9
|
+
/**
|
|
10
|
+
* Initialize and register commands, show release notes if first time
|
|
11
|
+
*/
|
|
12
|
+
initialize(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Show release notes on first activation of this version
|
|
15
|
+
*/
|
|
16
|
+
showReleaseNotesIfFirstTime(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Show release notes (can be called manually)
|
|
19
|
+
*/
|
|
20
|
+
showReleaseNotes(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Dispose of resources
|
|
23
|
+
*/
|
|
24
|
+
dispose(): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
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.ReleaseNotesManager = void 0;
|
|
46
|
+
const vscode = __importStar(require("vscode"));
|
|
47
|
+
/**
|
|
48
|
+
* ReleaseNotesManager class handles release notes functionality
|
|
49
|
+
*/
|
|
50
|
+
class ReleaseNotesManager {
|
|
51
|
+
constructor(context) {
|
|
52
|
+
this.zmodelPreviewReleaseNoteKey = 'zmodel-preview-release-note-shown';
|
|
53
|
+
this.extensionContext = context;
|
|
54
|
+
this.initialize();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Initialize and register commands, show release notes if first time
|
|
58
|
+
*/
|
|
59
|
+
initialize() {
|
|
60
|
+
this.showReleaseNotesIfFirstTime();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Show release notes on first activation of this version
|
|
64
|
+
*/
|
|
65
|
+
showReleaseNotesIfFirstTime() {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
// Show release notes if this is the first time activating this version
|
|
68
|
+
if (!this.extensionContext.globalState.get(this.zmodelPreviewReleaseNoteKey)) {
|
|
69
|
+
yield this.showReleaseNotes();
|
|
70
|
+
// Update the stored version to prevent showing again
|
|
71
|
+
yield this.extensionContext.globalState.update(this.zmodelPreviewReleaseNoteKey, true);
|
|
72
|
+
// Add this key to sync keys for cross-machine synchronization
|
|
73
|
+
this.extensionContext.globalState.setKeysForSync([this.zmodelPreviewReleaseNoteKey]);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Show release notes (can be called manually)
|
|
79
|
+
*/
|
|
80
|
+
showReleaseNotes() {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
try {
|
|
83
|
+
// Read the release notes HTML file
|
|
84
|
+
const releaseNotesPath = vscode.Uri.joinPath(this.extensionContext.extensionUri, 'bundle/res/zmodel-preview-release-notes.html');
|
|
85
|
+
const htmlBytes = yield vscode.workspace.fs.readFile(releaseNotesPath);
|
|
86
|
+
const htmlContent = Buffer.from(htmlBytes).toString('utf8');
|
|
87
|
+
// Create and show the release notes webview
|
|
88
|
+
const panel = vscode.window.createWebviewPanel('ZenstackReleaseNotes', 'ZenStack - New Feature Announcement!', vscode.ViewColumn.One, {
|
|
89
|
+
enableScripts: true,
|
|
90
|
+
retainContextWhenHidden: true,
|
|
91
|
+
});
|
|
92
|
+
panel.webview.html = htmlContent;
|
|
93
|
+
// Optional: Close the panel when user clicks outside or after some time
|
|
94
|
+
panel.onDidDispose(() => {
|
|
95
|
+
// Panel disposed
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error('Error showing release notes:', error);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Dispose of resources
|
|
105
|
+
*/
|
|
106
|
+
dispose() {
|
|
107
|
+
// Any cleanup if needed
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.ReleaseNotesManager = ReleaseNotesManager;
|
|
111
|
+
//# sourceMappingURL=release-notes-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-notes-manager.js","sourceRoot":"","sources":["../src/release-notes-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC;;GAEG;AACH,MAAa,mBAAmB;IAI5B,YAAY,OAAgC;QAF3B,gCAA2B,GAAG,mCAAmC,CAAC;QAG/E,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,UAAU;QACN,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACG,2BAA2B;;YAC7B,uEAAuE;YACvE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,qDAAqD;gBACrD,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;gBACvF,8DAA8D;gBAC9D,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACzF,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACG,gBAAgB;;YAClB,IAAI,CAAC;gBACD,mCAAmC;gBACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CACxC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAClC,8CAA8C,CACjD,CAAC;gBAEF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACvE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5D,4CAA4C;gBAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAC1C,sBAAsB,EACtB,sCAAsC,EACtC,MAAM,CAAC,UAAU,CAAC,GAAG,EACrB;oBACI,aAAa,EAAE,IAAI;oBACnB,uBAAuB,EAAE,IAAI;iBAChC,CACJ,CAAC;gBAEF,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;gBAEjC,wEAAwE;gBACxE,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;oBACpB,iBAAiB;gBACrB,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACH,OAAO;QACH,wBAAwB;IAC5B,CAAC;CACJ;AAvED,kDAuEC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<link href="https://cdn.jsdelivr.net/npm/@vscode/codicons@0.0.40/dist/codicon.min.css" rel="stylesheet" />
|
|
5
|
+
|
|
6
|
+
<style>
|
|
7
|
+
body {
|
|
8
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
9
|
+
padding: 20px;
|
|
10
|
+
max-width: 800px;
|
|
11
|
+
margin: 0 auto;
|
|
12
|
+
background-color: var(--vscode-editor-background);
|
|
13
|
+
color: var(--vscode-editor-foreground);
|
|
14
|
+
}
|
|
15
|
+
.header {
|
|
16
|
+
background-color: var(--vscode-button-background);
|
|
17
|
+
color: var(--vscode-button-foreground);
|
|
18
|
+
padding: 20px;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
text-align: center;
|
|
21
|
+
margin-bottom: 20px;
|
|
22
|
+
}
|
|
23
|
+
.feature {
|
|
24
|
+
background-color: var(--vscode-textBlockQuote-background);
|
|
25
|
+
border: 1px solid var(--vscode-textBlockQuote-border);
|
|
26
|
+
padding: 15px;
|
|
27
|
+
border-radius: 6px;
|
|
28
|
+
margin: 15px 0;
|
|
29
|
+
border-left: 4px solid var(--vscode-button-background);
|
|
30
|
+
}
|
|
31
|
+
.steps {
|
|
32
|
+
background-color: var(--vscode-textCodeBlock-background);
|
|
33
|
+
padding: 15px;
|
|
34
|
+
border-radius: 6px;
|
|
35
|
+
margin: 15px 0;
|
|
36
|
+
}
|
|
37
|
+
a {
|
|
38
|
+
color: var(--vscode-textLink-foreground);
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
}
|
|
41
|
+
a:hover {
|
|
42
|
+
text-decoration: underline;
|
|
43
|
+
color: var(--vscode-textLink-activeForeground);
|
|
44
|
+
}
|
|
45
|
+
</style>
|
|
46
|
+
</head>
|
|
47
|
+
<body>
|
|
48
|
+
<div class="header">
|
|
49
|
+
<h1>🎉 Introducing ZModel Documentation Preview</h1>
|
|
50
|
+
<p>Preview documentation directly from your ZModel powered by AI</p>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div class="feature">
|
|
54
|
+
<h3>📖 What's New</h3>
|
|
55
|
+
<p>
|
|
56
|
+
You can now preview comprehensive documentation for your ZModel files, just like you would preview a
|
|
57
|
+
markdown file.
|
|
58
|
+
</p>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="steps">
|
|
62
|
+
<h3>🚀 How to Use</h3>
|
|
63
|
+
<ol>
|
|
64
|
+
<li>Open your <code>.zmodel</code> file</li>
|
|
65
|
+
<li>
|
|
66
|
+
Click (<span class="codicon codicon-preview"></span>) in the editor toolbar, or simply press
|
|
67
|
+
<code>Cmd + Shift + V</code> (Mac) or
|
|
68
|
+
<code>Ctrl + Shift + V</code> (Windows)
|
|
69
|
+
</li>
|
|
70
|
+
<li>Sign in with ZenStack (one-time setup)</li>
|
|
71
|
+
<li>Enjoy your AI-generated documentation</li>
|
|
72
|
+
</ol>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div class="steps">
|
|
76
|
+
<h3>💡 Tips</h3>
|
|
77
|
+
<ul>
|
|
78
|
+
<li>Ensure your zmodel is error-free before generating.</li>
|
|
79
|
+
<li>Use your main zmodel file, which will include all imported models, for complete documentation.</li>
|
|
80
|
+
<li>
|
|
81
|
+
Add clear, descriptive comments in your ZModel. The more context you provide, the better the
|
|
82
|
+
results.
|
|
83
|
+
</li>
|
|
84
|
+
</ul>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<p style="text-align: center; color: var(--vscode-descriptionForeground); margin-top: 30px">
|
|
88
|
+
Happy coding with ZenStack! 🚀<br />
|
|
89
|
+
</p>
|
|
90
|
+
</body>
|
|
91
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,281 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zenstack-auth-provider.js","sourceRoot":"","sources":["../src/zenstack-auth-provider.ts"],"names":[],"mappings":"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"}
|