diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index f65e867ff..ab0e362cb 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -14,7 +14,6 @@ jobs: - run: just npm-install - run: just check-format - - run: just vscode deps - run: just vscode lint - run: just web install diff --git a/.github/workflows/vscode.yaml b/.github/workflows/vscode.yaml index f89d812cd..f5fe7d5f4 100644 --- a/.github/workflows/vscode.yaml +++ b/.github/workflows/vscode.yaml @@ -18,6 +18,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18.x + - run: just npm-install - id: get-date run: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash diff --git a/extensions/vscode/.vscodeignore b/extensions/vscode/.vscodeignore index b912f2440..6c5bcd9a5 100644 --- a/extensions/vscode/.vscodeignore +++ b/extensions/vscode/.vscodeignore @@ -1,3 +1,8 @@ +# Workaround for https://github.com/microsoft/vscode-vsce/issues/580 +../.. + +.* +.*/ .vscode/** .vscode-test/** src/** diff --git a/extensions/vscode/justfile b/extensions/vscode/justfile index 221ccb825..98b27e5fd 100644 --- a/extensions/vscode/justfile +++ b/extensions/vscode/justfile @@ -58,30 +58,11 @@ clean: rm -rf out just ./webviews/homeView/clean - -# Install dependencies -deps: - #!/usr/bin/env bash - set -eou pipefail - {{ _with_debug }} - - if [ {{ _ci }} = "true" ]; then - npm ci --no-audit --no-fund | sed 's/^/debug: /' - npm --prefix ./webviews/homeView ci --no-audit --no-fund | sed 's/^/debug: /' - else - npm install --no-audit --no-fund | sed 's/^/debug: /' - npm --prefix ./webviews/homeView install --no-audit --no-fund | sed 's/^/debug: /' - fi - just ./webviews/homeView/deps - - configure os="$(just ../../os)" arch="$(just ../../arch)": #!/usr/bin/env bash set -eou pipefail {{ _with_debug }} - just deps - echo "info: checking for compatible binary executable..." 1>&2 binary_executable=$(just ../../executable-path {{ os }} {{ arch }}) if ! [ -f "$binary_executable" ]; then diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 11a44ef32..7782e7b10 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -550,6 +550,7 @@ }, "dependencies": { "@hypersphere/omnibus": "0.1.6", + "@publishing-client/api": "^1.0.0", "@vscode/codicons": "^0.0.35", "axios": "^1.6.0", "eventsource": "^2.0.2", diff --git a/extensions/vscode/src/api/axios.d.ts b/extensions/vscode/src/api/axios.d.ts deleted file mode 100644 index e6dec3501..000000000 --- a/extensions/vscode/src/api/axios.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (C) 2023 by Posit Software, PBC. - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { AxiosRequestConfig } from "axios"; - -declare module "axios" { - interface AxiosRequestConfig { - ignoreCamelCase?: string[]; - } -} diff --git a/extensions/vscode/src/bus.ts b/extensions/vscode/src/bus.ts index 53ffbd0af..6fb772d06 100644 --- a/extensions/vscode/src/bus.ts +++ b/extensions/vscode/src/bus.ts @@ -1,7 +1,12 @@ // Copyright (C) 2024 by Posit Software, PBC. import { Omnibus, args } from "@hypersphere/omnibus"; -import { Account, Configuration, Deployment, PreDeployment } from "src/api"; +import { + Account, + Configuration, + Deployment, + PreDeployment, +} from "@publishing-client/api"; export const bus = Omnibus.builder() // activeDeploymentChanged: triggered if deployment name or value has changed diff --git a/extensions/vscode/src/events.ts b/extensions/vscode/src/events.ts index 0018107f3..d591bcf80 100644 --- a/extensions/vscode/src/events.ts +++ b/extensions/vscode/src/events.ts @@ -7,7 +7,7 @@ import { Disposable } from "vscode"; import EventSource from "eventsource"; import { Readable } from "stream"; -import { EventStreamMessage } from "src/api"; +import { EventStreamMessage } from "@publishing-client/api"; export type EventStreamRegistration = (message: EventStreamMessage) => void; diff --git a/extensions/vscode/src/extension.ts b/extensions/vscode/src/extension.ts index f3ded673b..791f8eae7 100644 --- a/extensions/vscode/src/extension.ts +++ b/extensions/vscode/src/extension.ts @@ -11,8 +11,9 @@ import { workspace, } from "vscode"; +import { useApi } from "@publishing-client/api"; + import * as ports from "src/ports"; -import { useApi } from "src/api"; import { Service } from "src/services"; import { ProjectTreeDataProvider } from "src/views/project"; import { DeploymentsTreeDataProvider } from "src/views/deployments"; diff --git a/extensions/vscode/src/multiStepInputs/deployProject.ts b/extensions/vscode/src/multiStepInputs/deployProject.ts index b87d1255a..db15caefb 100644 --- a/extensions/vscode/src/multiStepInputs/deployProject.ts +++ b/extensions/vscode/src/multiStepInputs/deployProject.ts @@ -16,7 +16,7 @@ import { useApi, isConfigurationError, Configuration, -} from "src/api"; +} from "@publishing-client/api"; import { getSummaryStringFromError } from "src/utils/errors"; import { deployProject } from "src/views/deployProgress"; import { EventStream } from "src/events"; diff --git a/extensions/vscode/src/multiStepInputs/initWorkspace.ts b/extensions/vscode/src/multiStepInputs/initWorkspace.ts index dcc0a8b05..c026d8310 100644 --- a/extensions/vscode/src/multiStepInputs/initWorkspace.ts +++ b/extensions/vscode/src/multiStepInputs/initWorkspace.ts @@ -17,7 +17,11 @@ import { window, } from "vscode"; -import { AccountAuthType, useApi, ConfigurationDetails } from "src/api"; +import { + AccountAuthType, + useApi, + ConfigurationDetails, +} from "@publishing-client/api"; import { getSummaryStringFromError } from "src/utils/errors"; import { untitledConfigurationName, diff --git a/extensions/vscode/src/multiStepInputs/newConfig.ts b/extensions/vscode/src/multiStepInputs/newConfig.ts index 9a7620d4b..f9d5a669a 100644 --- a/extensions/vscode/src/multiStepInputs/newConfig.ts +++ b/extensions/vscode/src/multiStepInputs/newConfig.ts @@ -17,7 +17,11 @@ import { window, } from "vscode"; -import { useApi, ConfigurationDetails, Configuration } from "src/api"; +import { + useApi, + ConfigurationDetails, + Configuration, +} from "@publishing-client/api"; import { getSummaryStringFromError } from "src/utils/errors"; import { untitledConfigurationName } from "src/utils/names"; import { isValidFilename } from "src/utils/files"; diff --git a/extensions/vscode/src/multiStepInputs/newDeployment.ts b/extensions/vscode/src/multiStepInputs/newDeployment.ts index 55d7dc17d..25b1f5e67 100644 --- a/extensions/vscode/src/multiStepInputs/newDeployment.ts +++ b/extensions/vscode/src/multiStepInputs/newDeployment.ts @@ -7,7 +7,7 @@ import { PreDeployment, isConfigurationError, useApi, -} from "src/api"; +} from "@publishing-client/api"; import { EventStream } from "src/events"; import { getSummaryStringFromError } from "src/utils/errors"; import { diff --git a/extensions/vscode/src/services.ts b/extensions/vscode/src/services.ts index 6939c7d19..9259ec134 100644 --- a/extensions/vscode/src/services.ts +++ b/extensions/vscode/src/services.ts @@ -2,8 +2,9 @@ import { ExtensionContext, Disposable } from "vscode"; +import { initApi } from "@publishing-client/api"; + import { HOST } from "src"; -import { initApi } from "src/api"; import { Server } from "src/servers"; export class Service implements Disposable { diff --git a/extensions/vscode/src/types/messages/hostToWebviewMessages.ts b/extensions/vscode/src/types/messages/hostToWebviewMessages.ts index 66e47651c..4013e4c31 100644 --- a/extensions/vscode/src/types/messages/hostToWebviewMessages.ts +++ b/extensions/vscode/src/types/messages/hostToWebviewMessages.ts @@ -6,7 +6,7 @@ import { Deployment, DeploymentFile, PreDeployment, -} from "../../api"; +} from "@publishing-client/api"; export enum HostToWebviewMessageType { // Sent from host to webviewView diff --git a/extensions/vscode/src/utils/files.ts b/extensions/vscode/src/utils/files.ts index b43c28ddd..fdeb00360 100644 --- a/extensions/vscode/src/utils/files.ts +++ b/extensions/vscode/src/utils/files.ts @@ -9,7 +9,7 @@ import { commands, } from "vscode"; -import { DeploymentFile } from "../api"; +import { DeploymentFile } from "@publishing-client/api"; export async function fileExists(fileUri: Uri): Promise { try { diff --git a/extensions/vscode/src/utils/names.ts b/extensions/vscode/src/utils/names.ts index aefa169f0..ed4ff3cdd 100644 --- a/extensions/vscode/src/utils/names.ts +++ b/extensions/vscode/src/utils/names.ts @@ -2,7 +2,7 @@ import { InputBoxValidationSeverity } from "vscode"; -import { useApi } from "src/api"; +import { useApi } from "@publishing-client/api"; import { isValidFilename } from "src/utils/files"; export async function untitledConfigurationName(): Promise { diff --git a/extensions/vscode/src/views/configurations.ts b/extensions/vscode/src/views/configurations.ts index f5558d62f..226b47ae1 100644 --- a/extensions/vscode/src/views/configurations.ts +++ b/extensions/vscode/src/views/configurations.ts @@ -22,7 +22,7 @@ import { Configuration, ConfigurationError, isConfigurationError, -} from "src/api"; +} from "@publishing-client/api"; import { confirmDelete, confirmReplace } from "src/dialogs"; import { getSummaryStringFromError } from "src/utils/errors"; diff --git a/extensions/vscode/src/views/credentials.ts b/extensions/vscode/src/views/credentials.ts index 5d51bf553..757a9457e 100644 --- a/extensions/vscode/src/views/credentials.ts +++ b/extensions/vscode/src/views/credentials.ts @@ -12,7 +12,7 @@ import { window, } from "vscode"; -import { Account, useApi } from "src/api"; +import { Account, useApi } from "@publishing-client/api"; import { getSummaryStringFromError } from "src/utils/errors"; const viewName = "posit.publisher.credentials"; diff --git a/extensions/vscode/src/views/deployProgress.ts b/extensions/vscode/src/views/deployProgress.ts index 72f5271ee..1e17d2fc4 100644 --- a/extensions/vscode/src/views/deployProgress.ts +++ b/extensions/vscode/src/views/deployProgress.ts @@ -1,7 +1,7 @@ // Copyright (C) 2024 by Posit Software, PBC. import { ProgressLocation, Uri, env, window } from "vscode"; -import { eventTypeToString, EventStreamMessage } from "src/api"; +import { eventTypeToString, EventStreamMessage } from "@publishing-client/api"; import { EventStream, UnregisterCallback } from "src/events"; export function deployProject(localID: string, stream: EventStream) { diff --git a/extensions/vscode/src/views/deployments.ts b/extensions/vscode/src/views/deployments.ts index fb91a609a..66144127b 100644 --- a/extensions/vscode/src/views/deployments.ts +++ b/extensions/vscode/src/views/deployments.ts @@ -25,7 +25,7 @@ import { isDeploymentError, isPreDeployment, useApi, -} from "src/api"; +} from "@publishing-client/api"; import { confirmForget } from "src/dialogs"; import { EventStream } from "src/events"; diff --git a/extensions/vscode/src/views/homeView.ts b/extensions/vscode/src/views/homeView.ts index e7c8e0f86..05ca1b2f9 100644 --- a/extensions/vscode/src/views/homeView.ts +++ b/extensions/vscode/src/views/homeView.ts @@ -29,7 +29,7 @@ import { isConfigurationError, isDeploymentError, useApi, -} from "src/api"; +} from "@publishing-client/api"; import { useBus } from "src/bus"; import { EventStream } from "src/events"; import { getSummaryStringFromError } from "src/utils/errors"; @@ -568,6 +568,7 @@ export class HomeViewProvider implements WebviewViewProvider { Uri.joinPath(this._extensionUri, "webviews", "homeView", "dist"), Uri.joinPath( this._extensionUri, + "../..", "node_modules", "@vscode", "codicons", @@ -616,6 +617,7 @@ export class HomeViewProvider implements WebviewViewProvider { ]); // The codicon css (and related tff file) are needing to be loaded for icons const codiconsUri = getUri(webview, extensionUri, [ + "../..", "node_modules", "@vscode", "codicons", diff --git a/extensions/vscode/src/views/logs.ts b/extensions/vscode/src/views/logs.ts index 05d691fcf..e0d042e96 100644 --- a/extensions/vscode/src/views/logs.ts +++ b/extensions/vscode/src/views/logs.ts @@ -17,7 +17,7 @@ import { import { EventStream, displayEventStreamMessage } from "src/events"; -import { EventStreamMessage } from "src/api"; +import { EventStreamMessage } from "@publishing-client/api"; enum LogStageStatus { notStarted, diff --git a/extensions/vscode/webviews/homeView/justfile b/extensions/vscode/webviews/homeView/justfile index de5a98cb2..19782708b 100644 --- a/extensions/vscode/webviews/homeView/justfile +++ b/extensions/vscode/webviews/homeView/justfile @@ -17,16 +17,3 @@ clean: {{ _with_debug }} rm -rf node_modules - - -# Install dependencies -deps: - #!/usr/bin/env bash - set -eou pipefail - {{ _with_debug }} - - if [ {{ _ci }} = "true" ]; then - npm ci --no-audit --no-fund | sed 's/^/debug: /' - else - npm install --no-audit --no-fund | sed 's/^/debug: /' - fi diff --git a/extensions/vscode/webviews/homeView/package.json b/extensions/vscode/webviews/homeView/package.json index ecf9ccef8..4bc1a8b24 100644 --- a/extensions/vscode/webviews/homeView/package.json +++ b/extensions/vscode/webviews/homeView/package.json @@ -7,6 +7,7 @@ "build": "vue-tsc --noEmit && vite build" }, "dependencies": { + "@publishing-client/api": "^1.0.0", "axios": "^1.6.0", "eventsource": "^2.0.2", "get-port": "5.1.1", diff --git a/extensions/vscode/webviews/homeView/src/components/EasyDeploy.vue b/extensions/vscode/webviews/homeView/src/components/EasyDeploy.vue index 0a6afac98..b37e60be5 100644 --- a/extensions/vscode/webviews/homeView/src/components/EasyDeploy.vue +++ b/extensions/vscode/webviews/homeView/src/components/EasyDeploy.vue @@ -140,10 +140,12 @@