import * as vscode from "vscode"; import { spawn } from "node:child_process"; import { styleLockfile } from "./lockfile.style"; export type BunLockfile = vscode.CustomDocument & { readonly preview: string; }; export class BunLockfileEditorProvider implements vscode.CustomReadonlyEditorProvider { constructor(private context: vscode.ExtensionContext) {} async openCustomDocument( uri: vscode.Uri, openContext: vscode.CustomDocumentOpenContext, token: vscode.CancellationToken, ): Promise { const preview = await previewLockfile(uri, token); return { uri, preview, dispose() {}, }; } async resolveCustomEditor( document: BunLockfile, webviewPanel: vscode.WebviewPanel, token: vscode.CancellationToken, ): Promise { const { preview } = document; webviewPanel.webview.options = { localResourceRoots: [this.context.extensionUri], }; renderLockfile(webviewPanel, preview, this.context.extensionUri); } } function renderLockfile({ webview }: vscode.WebviewPanel, preview: string, extensionUri: vscode.Uri): void { const styleVSCodeUri = webview.asWebviewUri(vscode.Uri.joinPath(extensionUri, "assets", "vscode.css")); const lockfileContent = styleLockfile(preview); const lineNumbers: string[] = []; for (let i = 0; i < lockfileContent.split("\n").length; i++) { lineNumbers.push(`${i + 1}`); } webview.html = `
${lineNumbers.join("\n")}
${lockfileContent}
`; } function previewLockfile(uri: vscode.Uri, token?: vscode.CancellationToken): Promise { return new Promise((resolve, reject) => { const process = spawn("bun", [uri.fsPath], { stdio: ["ignore", "pipe", "pipe"], }); token?.onCancellationRequested(() => { process.kill(); }); let stdout = ""; process.stdout.on("data", (data: Buffer) => { stdout += data.toString(); }); let stderr = ""; process.stderr.on("data", (data: Buffer) => { stderr += data.toString(); }); process.on("error", error => { reject(error); }); process.on("exit", code => { if (code === 0) { resolve(stdout); } else { reject(new Error(`Bun exited with code: ${code}\n${stderr}`)); } }); }); } export function registerBunlockEditor(context: vscode.ExtensionContext): void { const viewType = "bun.lockb"; const provider = new BunLockfileEditorProvider(context); context.subscriptions.push( vscode.window.registerCustomEditorProvider(viewType, provider, { supportsMultipleEditorsPerDocument: true, webviewOptions: { enableFindWidget: true, retainContextWhenHidden: true, }, }), ); } ble-telemetry Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2022-02-07[ci] yarn formatGravatar matthewp 1-1/+1
2022-02-07[ci] update lockfile (#2543)Gravatar Fred K. Schott 1-171/+178
2022-02-07improve debug logs (#2537)Gravatar Fred K. Schott 3-4/+19
2022-02-07[ci] collect statsGravatar FredKSchott 1-0/+1
2022-02-06[ci] update lockfile (#2527)Gravatar Fred K. Schott 1-208/+238
2022-02-06[ci] collect statsGravatar FredKSchott 1-0/+1
2022-02-05[ci] collect statsGravatar FredKSchott 1-0/+1
2022-02-04[ci] yarn formatGravatar natemoo-re 1-2/+3
2022-02-04fix: HTML/SVG boolean attributes (#2538)Gravatar Nate Moore 2-3/+21
2022-02-04[ci] yarn formatGravatar matthewp 1-4/+2
2022-02-04fix: import local plugins into markdown (#2534)Gravatar Juan Martín Seery 9-22/+41
2022-02-04[ci] collect statsGravatar FredKSchott 1-0/+1
2022-02-03Append to list of HMR modules, don't override (#2532)Gravatar Matthew Phillips 2-1/+6
2022-02-03add back dev server host support (#2531)Gravatar Fred K. Schott 2-1/+14
2022-02-03simplify status code regexGravatar Fred K. Schott 2-87/+4
2022-02-03Adding StackUp Digital to the list of sponsors (#2521)Gravatar Astroalex 3-0/+10
2022-02-03[ci] collect statsGravatar FredKSchott 1-0/+1
2022-02-03[ci] yarn formatGravatar FredKSchott 2-3/+85
2022-02-02Handles all http error code file names the same as 404 files. (#2525)Gravatar Zade Viggers 2-4/+7
2022-02-02fix(sitemap): remove debug if sitemap disabled (#2514)Gravatar Mark Pinero 1-2/+2
2022-02-02[ci] update lockfile (#2515)Gravatar Fred K. Schott 1-276/+279
2022-02-02[ci] yarn formatGravatar matthewp 1-8/+8
2022-02-02[ci] release (next) (#2523)astro@0.23.0-next.1Gravatar github-actions[bot] 28-34/+41
2022-02-02[ci] yarn formatGravatar matthewp 2-17/+29
2022-02-02Fix support for scss in static build (#2522)Gravatar Matthew Phillips 6-20/+114
2022-02-02[ci] collect statsGravatar FredKSchott 1-0/+1
2022-02-01[ci] yarn formatGravatar matthewp 2-12/+12
2022-02-01[ci] release (next) (#2492)astro@0.23.0-next.0@astrojs/test-static-build-pkg@0.0.2@astrojs/markdown-remark@0.6.1-next.0Gravatar github-actions[bot] 31-43/+93
2022-02-01[ci] collect statsGravatar FredKSchott 1-0/+1
2022-01-31update congratsbot format againGravatar Fred K. Schott 1-1/+1
2022-01-31update congratsbot againGravatar Fred K. Schott 1-1/+1
2022-01-31Remove SVG animation on GitHub/NPM (#2512)Gravatar Nate Moore 1-21/+0
2022-01-31[ci] yarn formatGravatar natemoo-re 2-4/+6
2022-01-31Add Shiki as an alternative to Prism (#2497)Gravatar Juan Martín Seery 26-9/+356
2022-01-31Deprecate unescaped HTML inside of expressions (#2489)Gravatar Nate Moore 9-31/+74