languageserver: add .js extensions to imports (ESM prep) (#259)
This commit is contained in:
@@ -4,6 +4,27 @@
|
|||||||
|
|
||||||
This document outlines the plan to migrate from TypeScript's deprecated `"moduleResolution": "node"` (node10) to `"moduleResolution": "node16"` or `"nodenext"`. This change is necessary because the published ESM packages have extensionless imports that don't work correctly in modern ESM environments.
|
This document outlines the plan to migrate from TypeScript's deprecated `"moduleResolution": "node"` (node10) to `"moduleResolution": "node16"` or `"nodenext"`. This change is necessary because the published ESM packages have extensionless imports that don't work correctly in modern ESM environments.
|
||||||
|
|
||||||
|
## TL;DR - Remaining Work
|
||||||
|
|
||||||
|
- [x] expressions - Migrated ✅
|
||||||
|
- [x] workflow-parser - Migrated ✅
|
||||||
|
- [x] languageservice - Migrated ✅
|
||||||
|
- [x] languageserver - Add `.js` extensions to imports ✅
|
||||||
|
- [ ] languageserver - Update `tsconfig.build.json` to `moduleResolution: "node16"` (blocked by vscode-languageserver)
|
||||||
|
- [ ] languageserver - Upgrade `vscode-languageserver` to stable v10+ when released
|
||||||
|
|
||||||
|
**Blocker:** `vscode-languageserver@8.0.2` lacks ESM exports. Stable v10 with `exports` field needed.
|
||||||
|
|
||||||
|
### ⚠️ Important: `skipLibCheck: true` Required
|
||||||
|
|
||||||
|
All migrated packages use `skipLibCheck: true` in their `tsconfig.build.json`. This works around a TS2386 "Overload signatures must all be optional or required" error in `@types/node/module.d.ts`.
|
||||||
|
|
||||||
|
**Why can't we just fix the error?** The error is in `@types/node`, a third-party package maintained by DefinitelyTyped. We can't modify `node_modules`, and upstream fixes take time.
|
||||||
|
|
||||||
|
**Is `skipLibCheck` safe?** Yes. It only skips type checking of `.d.ts` files (declaration files from dependencies). Our own `.ts` source files are still fully type-checked. This is a common and recommended workaround for issues in third-party type definitions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Issues Fixed
|
## Issues Fixed
|
||||||
|
|
||||||
This migration will resolve the following issues:
|
This migration will resolve the following issues:
|
||||||
@@ -199,14 +220,13 @@ src/connection.ts(1,43): error TS2307: Cannot find module 'vscode-languageserver
|
|||||||
|
|
||||||
With `moduleResolution: "node16"`, TypeScript follows Node.js ESM resolution rules which require explicit `exports` for subpath imports like `vscode-languageserver/browser` and `vscode-languageserver/node`.
|
With `moduleResolution: "node16"`, TypeScript follows Node.js ESM resolution rules which require explicit `exports` for subpath imports like `vscode-languageserver/browser` and `vscode-languageserver/node`.
|
||||||
|
|
||||||
**Status:** Verified December 2025. Version 9.0.1 is available but ESM export support is not confirmed.
|
**Status:** Partial - `.js` extensions added, waiting for stable `vscode-languageserver` release with ESM exports to complete migration.
|
||||||
|
|
||||||
**Current Decision:** The languageserver package is **deferred** from this migration until the upstream `vscode-languageserver` package adds proper ESM exports. It will continue using the old `moduleResolution: "node"` configuration.
|
**Completed:** All relative imports in languageserver source files have been updated to use `.js` extensions. This is compatible with the current `moduleResolution: "node"` and will enable a seamless migration once a stable vscode-languageserver version with ESM exports is available.
|
||||||
|
|
||||||
**Options to resolve:**
|
**Options to resolve:**
|
||||||
- Wait for vscode-languageserver to add ESM exports
|
- Wait for stable vscode-languageserver v10+ with ESM exports
|
||||||
- Try upgrading to vscode-languageserver v9.x to see if exports were added
|
- Use pre-release `vscode-languageserver@10.0.0-next.16` (has proper exports but is unstable)
|
||||||
- Use a bundler to work around the module resolution
|
|
||||||
- Fork or patch the dependency
|
- Fork or patch the dependency
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -218,7 +238,7 @@ With `moduleResolution: "node16"`, TypeScript follows Node.js ESM resolution rul
|
|||||||
| expressions | 1068 | ✅ Migrated |
|
| expressions | 1068 | ✅ Migrated |
|
||||||
| workflow-parser | 292 | ✅ Migrated |
|
| workflow-parser | 292 | ✅ Migrated |
|
||||||
| languageservice | 452 | ✅ Migrated |
|
| languageservice | 452 | ✅ Migrated |
|
||||||
| languageserver | 6 files | ⏸️ Deferred (vscode-languageserver lacks ESM exports) |
|
| languageserver | 31 | 🔶 Partial (`.js` extensions added, awaiting stable vscode-languageserver) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -20,18 +20,18 @@ import {
|
|||||||
TextDocumentSyncKind
|
TextDocumentSyncKind
|
||||||
} from "vscode-languageserver";
|
} from "vscode-languageserver";
|
||||||
import {TextDocument} from "vscode-languageserver-textdocument";
|
import {TextDocument} from "vscode-languageserver-textdocument";
|
||||||
import {getClient} from "./client";
|
import {getClient} from "./client.js";
|
||||||
import {Commands} from "./commands";
|
import {Commands} from "./commands.js";
|
||||||
import {contextProviders} from "./context-providers";
|
import {contextProviders} from "./context-providers.js";
|
||||||
import {descriptionProvider} from "./description-provider";
|
import {descriptionProvider} from "./description-provider.js";
|
||||||
import {getFileProvider} from "./file-provider";
|
import {getFileProvider} from "./file-provider.js";
|
||||||
import {InitializationOptions, RepositoryContext} from "./initializationOptions";
|
import {InitializationOptions, RepositoryContext} from "./initializationOptions.js";
|
||||||
import {onCompletion} from "./on-completion";
|
import {onCompletion} from "./on-completion.js";
|
||||||
import {ReadFileRequest, Requests} from "./request";
|
import {ReadFileRequest, Requests} from "./request.js";
|
||||||
import {getActionsMetadataProvider} from "./utils/action-metadata";
|
import {getActionsMetadataProvider} from "./utils/action-metadata.js";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
import {timeOperation} from "./utils/timer";
|
import {timeOperation} from "./utils/timer.js";
|
||||||
import {valueProviders} from "./value-providers";
|
import {valueProviders} from "./value-providers.js";
|
||||||
|
|
||||||
export function initConnection(connection: Connection) {
|
export function initConnection(connection: Connection) {
|
||||||
const documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument);
|
const documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import {data, DescriptionDictionary} from "@actions/expressions";
|
import {data, DescriptionDictionary} from "@actions/expressions";
|
||||||
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
||||||
import {Mode} from "@actions/languageservice/context-providers/default";
|
import {Mode} from "@actions/languageservice/context-providers/default";
|
||||||
import {contextProviders} from "./context-providers";
|
import {contextProviders} from "./context-providers.js";
|
||||||
import {RepositoryContext} from "./initializationOptions";
|
import {RepositoryContext} from "./initializationOptions.js";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
|
|
||||||
describe("contextProviders", () => {
|
describe("contextProviders", () => {
|
||||||
const mockCache = new TTLCache();
|
const mockCache = new TTLCache();
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ import {ContextProviderConfig} from "@actions/languageservice";
|
|||||||
import {Mode} from "@actions/languageservice/context-providers/default";
|
import {Mode} from "@actions/languageservice/context-providers/default";
|
||||||
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {getSecrets} from "./context-providers/secrets";
|
import {getSecrets} from "./context-providers/secrets.js";
|
||||||
import {getStepsContext} from "./context-providers/steps";
|
import {getStepsContext} from "./context-providers/steps.js";
|
||||||
import {getVariables} from "./context-providers/variables";
|
import {getVariables} from "./context-providers/variables.js";
|
||||||
import {RepositoryContext} from "./initializationOptions";
|
import {RepositoryContext} from "./initializationOptions.js";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
|
|
||||||
export function contextProviders(
|
export function contextProviders(
|
||||||
client: Octokit | undefined,
|
client: Octokit | undefined,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {ActionOutputs, ActionReference} from "@actions/languageservice/action";
|
import {ActionOutputs, ActionReference} from "@actions/languageservice/action";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {fetchActionMetadata} from "../utils/action-metadata";
|
import {fetchActionMetadata} from "../utils/action-metadata.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
|
|
||||||
export async function getActionOutputs(
|
export async function getActionOutputs(
|
||||||
octokit: Octokit,
|
octokit: Octokit,
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import {warn} from "@actions/languageservice/log";
|
|||||||
import {isMapping, isString} from "@actions/workflow-parser";
|
import {isMapping, isString} from "@actions/workflow-parser";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
|
|
||||||
import {RepositoryContext} from "../initializationOptions";
|
import {RepositoryContext} from "../initializationOptions.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {errorStatus} from "../utils/error";
|
import {errorStatus} from "../utils/error.js";
|
||||||
import {getRepoPermission} from "../utils/repo-permission";
|
import {getRepoPermission} from "../utils/repo-permission.js";
|
||||||
|
|
||||||
export async function getSecrets(
|
export async function getSecrets(
|
||||||
workflowContext: WorkflowContext,
|
workflowContext: WorkflowContext,
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import {getStepsContext as getDefaultStepsContext} from "@actions/languageservic
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import fetchMock from "fetch-mock";
|
import fetchMock from "fetch-mock";
|
||||||
|
|
||||||
import {createWorkflowContext} from "../test-utils/workflow-context";
|
import {createWorkflowContext} from "../test-utils/workflow-context.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {getStepsContext} from "./steps";
|
import {getStepsContext} from "./steps.js";
|
||||||
|
|
||||||
const workflow = `
|
const workflow = `
|
||||||
name: Caching Primes
|
name: Caching Primes
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import {parseActionReference} from "@actions/languageservice/action";
|
|||||||
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
||||||
import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {getActionOutputs} from "./action-outputs";
|
import {getActionOutputs} from "./action-outputs.js";
|
||||||
|
|
||||||
export async function getStepsContext(
|
export async function getStepsContext(
|
||||||
octokit: Octokit,
|
octokit: Octokit,
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import {isMapping, isString} from "@actions/workflow-parser";
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {RequestError} from "@octokit/request-error";
|
import {RequestError} from "@octokit/request-error";
|
||||||
|
|
||||||
import {RepositoryContext} from "../initializationOptions";
|
import {RepositoryContext} from "../initializationOptions.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {errorStatus} from "../utils/error";
|
import {errorStatus} from "../utils/error.js";
|
||||||
import {getRepoPermission} from "../utils/repo-permission";
|
import {getRepoPermission} from "../utils/repo-permission.js";
|
||||||
|
|
||||||
export async function getVariables(
|
export async function getVariables(
|
||||||
workflowContext: WorkflowContext,
|
workflowContext: WorkflowContext,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import {DescriptionProvider} from "@actions/languageservice/hover";
|
import {DescriptionProvider} from "@actions/languageservice/hover";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {getActionDescription} from "./description-providers/action-description";
|
import {getActionDescription} from "./description-providers/action-description.js";
|
||||||
import {getActionInputDescription} from "./description-providers/action-input";
|
import {getActionInputDescription} from "./description-providers/action-input.js";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
|
|
||||||
export function descriptionProvider(client: Octokit | undefined, cache: TTLCache): DescriptionProvider {
|
export function descriptionProvider(client: Octokit | undefined, cache: TTLCache): DescriptionProvider {
|
||||||
const getDescription: DescriptionProvider["getDescription"] = async (context, token, path) => {
|
const getDescription: DescriptionProvider["getDescription"] = async (context, token, path) => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import fetchMock from "fetch-mock";
|
import fetchMock from "fetch-mock";
|
||||||
import {createWorkflowContext} from "../test-utils/workflow-context";
|
import {createWorkflowContext} from "../test-utils/workflow-context.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {getActionDescription} from "./action-description";
|
import {getActionDescription} from "./action-description.js";
|
||||||
import {actionsCheckoutMetadata} from "../test-utils/action-metadata";
|
import {actionsCheckoutMetadata} from "../test-utils/action-metadata.js";
|
||||||
|
|
||||||
const workflow = `
|
const workflow = `
|
||||||
name: Hello World
|
name: Hello World
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import {actionUrl, parseActionReference} from "@actions/languageservice/action";
|
|||||||
import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
||||||
import {Step} from "@actions/workflow-parser/model/workflow-template";
|
import {Step} from "@actions/workflow-parser/model/workflow-template";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {fetchActionMetadata} from "../utils/action-metadata";
|
import {fetchActionMetadata} from "../utils/action-metadata.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
|
|
||||||
export async function getActionDescription(client: Octokit, cache: TTLCache, step: Step): Promise<string | undefined> {
|
export async function getActionDescription(client: Octokit, cache: TTLCache, step: Step): Promise<string | undefined> {
|
||||||
if (!isActionStep(step)) {
|
if (!isActionStep(step)) {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import {StringToken} from "@actions/workflow-parser/templates/tokens/string-toke
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import fetchMock from "fetch-mock";
|
import fetchMock from "fetch-mock";
|
||||||
|
|
||||||
import {actionsCheckoutMetadata} from "../test-utils/action-metadata";
|
import {actionsCheckoutMetadata} from "../test-utils/action-metadata.js";
|
||||||
import {createWorkflowContext} from "../test-utils/workflow-context";
|
import {createWorkflowContext} from "../test-utils/workflow-context.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {getActionInputDescription} from "./action-input";
|
import {getActionInputDescription} from "./action-input.js";
|
||||||
|
|
||||||
const workflow = `
|
const workflow = `
|
||||||
name: Hello World
|
name: Hello World
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
|||||||
import {Step} from "@actions/workflow-parser/model/workflow-template";
|
import {Step} from "@actions/workflow-parser/model/workflow-template";
|
||||||
import {TemplateToken} from "@actions/workflow-parser/templates/tokens/template-token";
|
import {TemplateToken} from "@actions/workflow-parser/templates/tokens/template-token";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {fetchActionMetadata} from "../utils/action-metadata";
|
import {fetchActionMetadata} from "../utils/action-metadata.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
|
|
||||||
export async function getActionInputDescription(
|
export async function getActionInputDescription(
|
||||||
client: Octokit,
|
client: Octokit,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import {File} from "@actions/workflow-parser/workflows/file";
|
|||||||
import {FileProvider} from "@actions/workflow-parser/workflows/file-provider";
|
import {FileProvider} from "@actions/workflow-parser/workflows/file-provider";
|
||||||
import {fileIdentifier} from "@actions/workflow-parser/workflows/file-reference";
|
import {fileIdentifier} from "@actions/workflow-parser/workflows/file-reference";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
import * as vscodeURI from "vscode-uri";
|
import * as vscodeURI from "vscode-uri";
|
||||||
|
|
||||||
export function getFileProvider(
|
export function getFileProvider(
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
} from "vscode-languageserver/browser";
|
} from "vscode-languageserver/browser";
|
||||||
import {createConnection as createNodeConnection} from "vscode-languageserver/node";
|
import {createConnection as createNodeConnection} from "vscode-languageserver/node";
|
||||||
|
|
||||||
import {initConnection} from "./connection";
|
import {initConnection} from "./connection.js";
|
||||||
|
|
||||||
/** Helper function determining whether we are executing with node runtime */
|
/** Helper function determining whether we are executing with node runtime */
|
||||||
function isNode(): boolean {
|
function isNode(): boolean {
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import {complete} from "@actions/languageservice/complete";
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {CompletionItem, Connection, Position} from "vscode-languageserver";
|
import {CompletionItem, Connection, Position} from "vscode-languageserver";
|
||||||
import {TextDocument} from "vscode-languageserver-textdocument";
|
import {TextDocument} from "vscode-languageserver-textdocument";
|
||||||
import {contextProviders} from "./context-providers";
|
import {contextProviders} from "./context-providers.js";
|
||||||
import {getFileProvider} from "./file-provider";
|
import {getFileProvider} from "./file-provider.js";
|
||||||
import {RepositoryContext} from "./initializationOptions";
|
import {RepositoryContext} from "./initializationOptions.js";
|
||||||
import {Requests} from "./request";
|
import {Requests} from "./request.js";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
import {valueProviders} from "./value-providers";
|
import {valueProviders} from "./value-providers.js";
|
||||||
|
|
||||||
export async function onCompletion(
|
export async function onCompletion(
|
||||||
connection: Connection,
|
connection: Connection,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import fetchMock from "fetch-mock";
|
import fetchMock from "fetch-mock";
|
||||||
import {fetchActionMetadata} from "./action-metadata";
|
import {fetchActionMetadata} from "./action-metadata.js";
|
||||||
import {TTLCache} from "./cache";
|
import {TTLCache} from "./cache.js";
|
||||||
|
|
||||||
// A simplified version of the action.yml file from actions/checkout
|
// A simplified version of the action.yml file from actions/checkout
|
||||||
const actionMetadataContent = `
|
const actionMetadataContent = `
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import {ActionsMetadataProvider} from "@actions/languageservice";
|
|||||||
import {error} from "@actions/languageservice/log";
|
import {error} from "@actions/languageservice/log";
|
||||||
import {Octokit, RestEndpointMethodTypes} from "@octokit/rest";
|
import {Octokit, RestEndpointMethodTypes} from "@octokit/rest";
|
||||||
import {parse} from "yaml";
|
import {parse} from "yaml";
|
||||||
import {TTLCache} from "./cache";
|
import {TTLCache} from "./cache.js";
|
||||||
import {errorMessage, errorStatus} from "./error";
|
import {errorMessage, errorStatus} from "./error.js";
|
||||||
|
|
||||||
export function getActionsMetadataProvider(
|
export function getActionsMetadataProvider(
|
||||||
client: Octokit | undefined,
|
client: Octokit | undefined,
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import {error} from "@actions/languageservice/log";
|
import {error} from "@actions/languageservice/log";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {RepositoryContext} from "../initializationOptions";
|
import {RepositoryContext} from "../initializationOptions.js";
|
||||||
import {TTLCache} from "./cache";
|
import {TTLCache} from "./cache.js";
|
||||||
import {errorStatus} from "./error";
|
import {errorStatus} from "./error.js";
|
||||||
import {getUsername} from "./username";
|
import {getUsername} from "./username.js";
|
||||||
|
|
||||||
export type RepoPermission = "admin" | "write" | "read" | "none";
|
export type RepoPermission = "admin" | "write" | "read" | "none";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {TTLCache} from "./cache";
|
import {TTLCache} from "./cache.js";
|
||||||
|
|
||||||
export async function getUsername(octokit: Octokit, cache: TTLCache): Promise<string> {
|
export async function getUsername(octokit: Octokit, cache: TTLCache): Promise<string> {
|
||||||
return await cache.get(`/username`, undefined, () => fetchUsername(octokit));
|
return await cache.get(`/username`, undefined, () => fetchUsername(octokit));
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ import {ValueProviderConfig} from "@actions/languageservice";
|
|||||||
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
import {WorkflowContext} from "@actions/languageservice/context/workflow-context";
|
||||||
import {ValueProviderKind} from "@actions/languageservice/value-providers/config";
|
import {ValueProviderKind} from "@actions/languageservice/value-providers/config";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {RepositoryContext} from "./initializationOptions";
|
import {RepositoryContext} from "./initializationOptions.js";
|
||||||
import {TTLCache} from "./utils/cache";
|
import {TTLCache} from "./utils/cache.js";
|
||||||
import {getActionInputValues} from "./value-providers/action-inputs";
|
import {getActionInputValues} from "./value-providers/action-inputs.js";
|
||||||
import {getEnvironments} from "./value-providers/job-environment";
|
import {getEnvironments} from "./value-providers/job-environment.js";
|
||||||
import {getRunnerLabels} from "./value-providers/runs-on";
|
import {getRunnerLabels} from "./value-providers/runs-on.js";
|
||||||
|
|
||||||
export function valueProviders(
|
export function valueProviders(
|
||||||
client: Octokit | undefined,
|
client: Octokit | undefined,
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import {WorkflowContext} from "@actions/languageservice/context/workflow-context
|
|||||||
import {Value} from "@actions/languageservice/value-providers/config";
|
import {Value} from "@actions/languageservice/value-providers/config";
|
||||||
import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
import {isActionStep} from "@actions/workflow-parser/model/type-guards";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {fetchActionMetadata} from "../utils/action-metadata";
|
import {fetchActionMetadata} from "../utils/action-metadata.js";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
|
|
||||||
export async function getActionInputs(
|
export async function getActionInputs(
|
||||||
client: Octokit,
|
client: Octokit,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {Value} from "@actions/languageservice/value-providers/config";
|
import {Value} from "@actions/languageservice/value-providers/config";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
|
|
||||||
export async function getEnvironments(client: Octokit, cache: TTLCache, owner: string, name: string): Promise<Value[]> {
|
export async function getEnvironments(client: Octokit, cache: TTLCache, owner: string, name: string): Promise<Value[]> {
|
||||||
const environments = await cache.get(`${owner}/${name}/environments`, undefined, () =>
|
const environments = await cache.get(`${owner}/${name}/environments`, undefined, () =>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import {log} from "@actions/languageservice/log";
|
|||||||
import {Value} from "@actions/languageservice/value-providers/config";
|
import {Value} from "@actions/languageservice/value-providers/config";
|
||||||
import {DEFAULT_RUNNER_LABELS} from "@actions/languageservice/value-providers/default";
|
import {DEFAULT_RUNNER_LABELS} from "@actions/languageservice/value-providers/default";
|
||||||
import {Octokit} from "@octokit/rest";
|
import {Octokit} from "@octokit/rest";
|
||||||
import {TTLCache} from "../utils/cache";
|
import {TTLCache} from "../utils/cache.js";
|
||||||
import {errorMessage} from "../utils/error";
|
import {errorMessage} from "../utils/error.js";
|
||||||
|
|
||||||
// Limitation: getRunnerLabels returns default hosted labels and labels for repository self-hosted runners.
|
// Limitation: getRunnerLabels returns default hosted labels and labels for repository self-hosted runners.
|
||||||
// It doesn't return labels for organization runners visible to the repository.
|
// It doesn't return labels for organization runners visible to the repository.
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
"declaration": true,
|
"declaration": true,
|
||||||
"declarationMap": true,
|
"declarationMap": true,
|
||||||
"noEmit": false,
|
"noEmit": false,
|
||||||
"outDir": "./dist"
|
"outDir": "./dist",
|
||||||
|
"skipLibCheck": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user