UNPKG

zenstack

Version:

FullStack enhancement for Prisma ORM: seamless integration from database to UI

135 lines 6.29 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.requireAuth = requireAuth; exports.activate = activate; exports.deactivate = deactivate; const vscode = __importStar(require("vscode")); const path = __importStar(require("path")); const node_1 = require("vscode-languageclient/node"); const zenstack_auth_provider_1 = require("./zenstack-auth-provider"); const documentation_cache_1 = require("./documentation-cache"); const zmodel_preview_1 = require("./zmodel-preview"); const release_notes_manager_1 = require("./release-notes-manager"); // Global variables let client; // Utility to require authentication when needed function requireAuth() { return __awaiter(this, void 0, void 0, function* () { let session; session = yield vscode.authentication.getSession(zenstack_auth_provider_1.AUTH_PROVIDER_ID, [], { createIfNone: false }); if (!session) { const signIn = 'Sign in'; const selection = yield vscode.window.showWarningMessage('Please sign in to use this feature', signIn); if (selection === signIn) { try { session = yield vscode.authentication.getSession(zenstack_auth_provider_1.AUTH_PROVIDER_ID, [], { createIfNone: true }); if (session) { vscode.window.showInformationMessage('ZenStack sign-in successful!'); } } catch (e) { vscode.window.showErrorMessage('ZenStack sign-in failed: ' + (e instanceof Error ? e.message : String(e))); } } } return session; }); } // This function is called when the extension is activated. function activate(context) { // Initialize and register the ZenStack authentication provider context.subscriptions.push(new zenstack_auth_provider_1.ZenStackAuthenticationProvider(context)); // Start language client client = startLanguageClient(context); const documentationCache = new documentation_cache_1.DocumentationCache(context); context.subscriptions.push(documentationCache); context.subscriptions.push(new zmodel_preview_1.ZModelPreview(context, client, documentationCache)); context.subscriptions.push(new release_notes_manager_1.ReleaseNotesManager(context)); } // This function is called when the extension is deactivated. function deactivate() { if (client) { return client.stop(); } return undefined; } function startLanguageClient(context) { const serverModule = context.asAbsolutePath(path.join('bundle', 'language-server', 'main')); // The debug options for the server // --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging. // By setting `process.env.DEBUG_BREAK` to a truthy value, the language server will wait until a debugger is attached. const debugOptions = { execArgv: [ '--nolazy', `--inspect${process.env.DEBUG_BREAK ? '-brk' : ''}=${process.env.DEBUG_SOCKET || '6009'}`, ], }; // If the extension is launched in debug mode then the debug server options are used // Otherwise the run options are used const serverOptions = { run: { module: serverModule, transport: node_1.TransportKind.ipc }, debug: { module: serverModule, transport: node_1.TransportKind.ipc, options: debugOptions, }, }; const fileSystemWatcher = vscode.workspace.createFileSystemWatcher('**/*.zmodel'); context.subscriptions.push(fileSystemWatcher); // Options to control the language client const clientOptions = { documentSelector: [{ scheme: 'file', language: 'zmodel' }], synchronize: { // Notify the server about file changes to files contained in the workspace fileEvents: fileSystemWatcher, }, }; // Create the language client and start the client. const client = new node_1.LanguageClient('zmodel', 'ZenStack Model', serverOptions, clientOptions); // Start the client. This will also launch the server void client.start(); return client; } //# sourceMappingURL=extension.js.map