update build

This commit is contained in:
Andrew Pareles
2024-11-06 19:45:02 -08:00
parent 2814c63765
commit 1c32d3a1c9
11 changed files with 1617 additions and 2264 deletions

View File

@ -55,7 +55,7 @@ const dirs = [
'.vscode/extensions/vscode-selfhost-test-provider',
// Void added these:
'extensions/void',
// 'extensions/void',
'void-imports',
];

1540
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -115,6 +115,7 @@
"yazl": "^2.4.3"
},
"devDependencies": {
"@anthropic-ai/sdk": "^0.32.1",
"@playwright/test": "^1.46.1",
"@swc/core": "1.3.62",
"@types/cookie": "^0.3.3",
@ -125,6 +126,8 @@
"@types/minimist": "^1.2.1",
"@types/mocha": "^9.1.1",
"@types/node": "20.x",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@types/sinon": "^10.0.2",
"@types/sinon-test": "^2.4.2",
"@types/trusted-types": "^1.0.6",
@ -198,6 +201,7 @@
"mocha-junit-reporter": "^2.2.1",
"mocha-multi-reporters": "^1.5.1",
"npm-run-all": "^4.1.5",
"openai": "^4.71.1",
"opn": "^6.0.0",
"original-fs": "^1.2.0",
"os-browserify": "^0.3.0",
@ -207,6 +211,8 @@
"postcss-nesting": "^12.0.2",
"pump": "^1.0.1",
"rcedit": "^1.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"rimraf": "^2.2.8",
"sinon": "^12.0.1",
"sinon-test": "^3.1.3",
@ -217,6 +223,7 @@
"ts-node": "^10.9.1",
"tsec": "0.2.7",
"tslib": "^2.6.3",
"tsup": "^8.3.5",
"typescript": "^5.7.0-dev.20240903",
"util": "^0.12.4",
"webpack": "^5.94.0",

View File

@ -1 +1 @@
dist/
void-imports/

View File

@ -0,0 +1,66 @@
import { Registry } from '../../../../platform/registry/common/platform.js';
import {
Extensions as ViewContainerExtensions, IViewContainersRegistry,
ViewContainerLocation, IViewsRegistry, Extensions as ViewExtensions,
} from '../../../common/views.js';
import * as nls from '../../../../nls.js';
import { VoidViewPane } from './voidViewPane.js';
import { Codicon } from '../../../../base/common/codicons.js';
import { localize } from '../../../../nls.js';
import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
import { ViewPaneContainer } from '../../../browser/parts/views/viewPaneContainer.js';
import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js';
import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';
const voidThemeIcon = Codicon.search;
const voidViewIcon = registerIcon('void-view-icon', voidThemeIcon, localize('voidViewIcon', 'View icon of the Void chat view.'));
// compare against search.contribution.ts and https://app.greptile.com/chat/w1nsmt3lauwzculipycpn?repo=github%3Amain%3Amicrosoft%2Fvscode
// and debug.contribution.ts, scm.contribution.ts (source control)
// called VIEWLET_ID in other places for some reason
const VIEW_CONTAINER_ID = 'workbench.view.void'
// Register view container
const viewContainerRegistry = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry);
const viewContainer = viewContainerRegistry.registerViewContainer({
id: VIEW_CONTAINER_ID,
title: nls.localize2('void', 'Void'), // this is used to say "Void" (Ctrl + L)
ctorDescriptor: new SyncDescriptor(ViewPaneContainer, [VIEW_CONTAINER_ID, { mergeViewWithContainerWhenSingleView: true }]),
hideIfEmpty: false,
icon: voidViewIcon,
order: 1,
}, ViewContainerLocation.AuxiliaryBar, { doNotRegisterOpenCommand: true, });
// Register search default location to the container (sidebar)
const viewsRegistry = Registry.as<IViewsRegistry>(ViewExtensions.ViewsRegistry);
viewsRegistry.registerViews([{
id: VIEW_CONTAINER_ID, // not sure if we can change this
hideByDefault: false, // start open
containerIcon: voidViewIcon,
name: nls.localize2('void chat', "Chat"), // this says ... : CHAT
ctorDescriptor: new SyncDescriptor(VoidViewPane),
canToggleVisibility: false,
canMoveView: true,
openCommandActionDescriptor: {
id: viewContainer.id,
keybindings: {
primary: KeyMod.CtrlCmd | KeyCode.KeyL, // we don't need to disable the original ctrl+L (probably because it brings panel into focus first)
},
order: 1
// mnemonicTitle: nls.localize({ key: 'miViewSearch', comment: ['&& denotes a mnemonic'] }, "&&Search"),
}
}], viewContainer);
// TODO can add a configuration for the user to choose config options - see search.contribution.ts

View File

@ -1,74 +1,3 @@
import { Registry } from '../../../../platform/registry/common/platform.js';
import {
Extensions as ViewContainerExtensions, IViewContainersRegistry,
ViewContainerLocation, IViewsRegistry, Extensions as ViewExtensions,
IViewDescriptor
} from '../../../../workbench/common/views.js';
import * as nls from '../../../../nls.js';
import { VoidViewPane } from '../../../../workbench/contrib/void/browser/voidViewPane.js';
import { Codicon } from '../../../../base/common/codicons.js';
import { localize } from '../../../../nls.js';
import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
import { ViewPaneContainer } from '../../../../workbench/browser/parts/views/viewPaneContainer.js';
import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js';
import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';
import * as React from './dist/openai.js'
console.log('React', React)
const voidViewIcon = registerIcon('void-view-icon', Codicon.search, localize('voidViewIcon', 'View icon of the Void chat view.'));
// compare against search.contribution.ts and https://app.greptile.com/chat/w1nsmt3lauwzculipycpn?repo=github%3Amain%3Amicrosoft%2Fvscode
// and debug.contribution.ts, scm.contribution.ts (source control)
const VIEW_CONTAINER_ID = 'workbench.view.void' // called VIEWLET_ID in other places for some reason
// Register view container
const viewContainerRegistry = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry);
const viewContainer = viewContainerRegistry.registerViewContainer({
id: VIEW_CONTAINER_ID,
title: nls.localize2('void', 'Void'), // this is used to say "Void" (Ctrl + L)
ctorDescriptor: new SyncDescriptor(ViewPaneContainer, [VIEW_CONTAINER_ID, { mergeViewWithContainerWhenSingleView: true }]),
hideIfEmpty: false,
icon: voidViewIcon,
order: 1,
}, ViewContainerLocation.AuxiliaryBar, { doNotRegisterOpenCommand: true });
// this is called a descriptor, but it's the actual View that gets used inside the view container
const VIEW_ID = VIEW_CONTAINER_ID // not sure if we can change this
const viewDescriptor: IViewDescriptor = {
id: VIEW_ID,
containerIcon: voidViewIcon,
name: nls.localize2('void chat', "Chat"), // this says ... : CHAT
ctorDescriptor: new SyncDescriptor(VoidViewPane),
canToggleVisibility: false,
canMoveView: true,
openCommandActionDescriptor: {
id: viewContainer.id,
keybindings: {
primary: KeyMod.CtrlCmd | KeyCode.KeyL, // we don't need to disable the original ctrl+L (probably because it brings panel into focus first)
},
order: 1
// mnemonicTitle: nls.localize({ key: 'miViewSearch', comment: ['&& denotes a mnemonic'] }, "&&Search"),
}
};
// Register search default location to the container (sidebar)
Registry.as<IViewsRegistry>(ViewExtensions.ViewsRegistry).registerViews([viewDescriptor], viewContainer);
// TODO can add a configuration for the user to choose config options - see search.contribution.ts
import './registerViewPane.js'

View File

@ -17,4 +17,4 @@ export const initPosthog = () => {
person_profiles: 'identified_only' // we only track events from identified users. We identify them in Sidebar
}
)
}
}

View File

@ -1,7 +1,7 @@
import { ViewPane } from '../../../../workbench/browser/parts/views/viewPane.js';
import { ViewPane } from '../../../browser/parts/views/viewPane.js';
// import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
// import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
@ -15,6 +15,8 @@ import { ViewPane } from '../../../../workbench/browser/parts/views/viewPane.js'
// import { IViewDescriptorService } from 'vs/workbench/common/views';
// import { IHoverService } from 'vs/platform/hover/browser/hover';
import React from './void-imports/react.js'
import { render } from './void-imports/react-dom.js'
export class VoidViewPane extends ViewPane {
@ -34,6 +36,24 @@ export class VoidViewPane extends ViewPane {
// super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService, hoverService);
// }
protected override renderBody(parent: HTMLElement): void {
super.renderBody(parent);
const x = <>
</>
render()
}
}
// register a singleton service that mounts the ViewPane here

View File

@ -1,4 +1,4 @@
import tsup from 'tsup'
import tsup from 'tsup' // Void added tsup as a dependency
import * as fs from 'fs'
import * as path from 'path'
@ -6,8 +6,8 @@ const buildFiles = (imports, to_be_built_folder) => {
// create a file with name importName that imports importName and immediately re-exports it
for (const importName of imports) {
const content = `\
export { default } from '${importName}'
export * from '${importName}'
import * as mod from '${importName}'
export default mod
`
const dir = path.dirname(importName);
const file = path.basename(importName);
@ -24,7 +24,7 @@ const compileFiles = async (imports, to_be_built_folder, outDir) => {
const fileEntries = imports.map((importName) => path.join(to_be_built_folder, `${importName}.ts`))
await tsup.build({
entry: fileEntries,
format: ['esm'],
format: ['cjs'],
sourcemap: false,
bundle: true,
clean: true,
@ -34,6 +34,9 @@ const compileFiles = async (imports, to_be_built_folder, outDir) => {
noExternal: [/.*/], // This bundles everything
platform: 'browser', // Important for browser compatibility
target: 'es2020',
banner: {
js: '/* eslint-disable */'
}
})
}
@ -43,6 +46,6 @@ fs.rmSync(to_be_built_folder, { recursive: true, force: true });
const imports = ['openai', '@anthropic-ai/sdk', 'react', 'react-dom']
buildFiles(imports, to_be_built_folder)
const OUT_DIR = '../src/vs/workbench/contrib/void/browser/dist'
const OUT_DIR = '../src/vs/workbench/contrib/void/browser/void-imports'
compileFiles(imports, to_be_built_folder, OUT_DIR)

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +0,0 @@
{
"name": "void-imports",
"main": "index.js",
"type": "module",
"scripts": {
"build": "node build-index.mjs"
},
"author": "",
"description": "",
"dependencies": {
"@anthropic-ai/sdk": "^0.32.1",
"openai": "^4.71.0",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"tsup": "^8.3.5",
"typescript": "^5.6.3"
}
}