@actions/languageserver 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +134 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +8 -0
- package/dist/client.js.map +1 -0
- package/dist/commands.d.ts +4 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +5 -0
- package/dist/commands.js.map +1 -0
- package/dist/connection.d.ts +3 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +127 -0
- package/dist/connection.js.map +1 -0
- package/dist/context-providers/action-outputs.d.ts +5 -0
- package/dist/context-providers/action-outputs.d.ts.map +1 -0
- package/dist/context-providers/action-outputs.js +5 -0
- package/dist/context-providers/action-outputs.js.map +1 -0
- package/dist/context-providers/secrets.d.ts +8 -0
- package/dist/context-providers/secrets.d.ts.map +1 -0
- package/dist/context-providers/secrets.js +122 -0
- package/dist/context-providers/secrets.js.map +1 -0
- package/dist/context-providers/steps.d.ts +6 -0
- package/dist/context-providers/steps.d.ts.map +1 -0
- package/dist/context-providers/steps.js +60 -0
- package/dist/context-providers/steps.js.map +1 -0
- package/dist/context-providers/variables.d.ts +13 -0
- package/dist/context-providers/variables.d.ts.map +1 -0
- package/dist/context-providers/variables.js +120 -0
- package/dist/context-providers/variables.js.map +1 -0
- package/dist/context-providers.d.ts +6 -0
- package/dist/context-providers.d.ts.map +1 -0
- package/dist/context-providers.js +20 -0
- package/dist/context-providers.js.map +1 -0
- package/dist/description-provider.d.ts +5 -0
- package/dist/description-provider.d.ts.map +1 -0
- package/dist/description-provider.js +20 -0
- package/dist/description-provider.js.map +1 -0
- package/dist/description-providers/action-description.d.ts +5 -0
- package/dist/description-providers/action-description.d.ts.map +1 -0
- package/dist/description-providers/action-description.js +18 -0
- package/dist/description-providers/action-description.js.map +1 -0
- package/dist/description-providers/action-input.d.ts +6 -0
- package/dist/description-providers/action-input.d.ts.map +1 -0
- package/dist/description-providers/action-input.js +36 -0
- package/dist/description-providers/action-input.js.map +1 -0
- package/dist/file-provider.d.ts +5 -0
- package/dist/file-provider.d.ts.map +1 -0
- package/dist/file-provider.js +49 -0
- package/dist/file-provider.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/initializationOptions.d.ts +45 -0
- package/dist/initializationOptions.d.ts.map +1 -0
- package/dist/initializationOptions.js +2 -0
- package/dist/initializationOptions.js.map +1 -0
- package/dist/on-completion.d.ts +7 -0
- package/dist/on-completion.d.ts.map +1 -0
- package/dist/on-completion.js +15 -0
- package/dist/on-completion.js.map +1 -0
- package/dist/request.d.ts +7 -0
- package/dist/request.d.ts.map +1 -0
- package/dist/request.js +4 -0
- package/dist/request.js.map +1 -0
- package/dist/utils/action-metadata.d.ts +5 -0
- package/dist/utils/action-metadata.d.ts.map +1 -0
- package/dist/utils/action-metadata.js +56 -0
- package/dist/utils/action-metadata.js.map +1 -0
- package/dist/utils/cache.d.ts +14 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +35 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/error.d.ts +3 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +22 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/repo-permission.d.ts +6 -0
- package/dist/utils/repo-permission.d.ts.map +1 -0
- package/dist/utils/repo-permission.js +36 -0
- package/dist/utils/repo-permission.js.map +1 -0
- package/dist/utils/timer.d.ts +2 -0
- package/dist/utils/timer.d.ts.map +1 -0
- package/dist/utils/timer.js +12 -0
- package/dist/utils/timer.js.map +1 -0
- package/dist/utils/username.d.ts +4 -0
- package/dist/utils/username.d.ts.map +1 -0
- package/dist/utils/username.js +14 -0
- package/dist/utils/username.js.map +1 -0
- package/dist/value-providers/action-inputs.d.ts +8 -0
- package/dist/value-providers/action-inputs.d.ts.map +1 -0
- package/dist/value-providers/action-inputs.js +28 -0
- package/dist/value-providers/action-inputs.js.map +1 -0
- package/dist/value-providers/job-environment.d.ts +5 -0
- package/dist/value-providers/job-environment.d.ts.map +1 -0
- package/dist/value-providers/job-environment.js +21 -0
- package/dist/value-providers/job-environment.js.map +1 -0
- package/dist/value-providers/runs-on.d.ts +5 -0
- package/dist/value-providers/runs-on.d.ts.map +1 -0
- package/dist/value-providers/runs-on.js +34 -0
- package/dist/value-providers/runs-on.js.map +1 -0
- package/dist/value-providers.d.ts +6 -0
- package/dist/value-providers.d.ts.map +1 -0
- package/dist/value-providers.js +30 -0
- package/dist/value-providers.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { data, DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { StringData } from "@actions/expressions/data/index";
|
|
3
|
+
import { warn } from "@actions/languageservice/log";
|
|
4
|
+
import { isMapping, isString } from "@actions/workflow-parser";
|
|
5
|
+
import { errorStatus } from "../utils/error";
|
|
6
|
+
import { getRepoPermission } from "../utils/repo-permission";
|
|
7
|
+
export async function getVariables(workflowContext, octokit, cache, repo, defaultContext) {
|
|
8
|
+
const permission = await getRepoPermission(octokit, cache, repo);
|
|
9
|
+
if (permission === "none") {
|
|
10
|
+
const secretsContext = defaultContext || new DescriptionDictionary();
|
|
11
|
+
secretsContext.complete = false;
|
|
12
|
+
return secretsContext;
|
|
13
|
+
}
|
|
14
|
+
let environmentName;
|
|
15
|
+
if (workflowContext?.job?.environment) {
|
|
16
|
+
if (isString(workflowContext.job.environment)) {
|
|
17
|
+
environmentName = workflowContext.job.environment.value;
|
|
18
|
+
}
|
|
19
|
+
else if (isMapping(workflowContext.job.environment)) {
|
|
20
|
+
for (const x of workflowContext.job.environment) {
|
|
21
|
+
if (isString(x.key) && x.key.value === "name") {
|
|
22
|
+
if (isString(x.value)) {
|
|
23
|
+
environmentName = x.value.value;
|
|
24
|
+
}
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const variablesContext = defaultContext || new DescriptionDictionary();
|
|
31
|
+
const variables = await getRemoteVariables(octokit, cache, repo, environmentName);
|
|
32
|
+
// Build combined map of variables
|
|
33
|
+
const variablesMap = new Map();
|
|
34
|
+
variables.organizationVariables.forEach(variable => variablesMap.set(variable.key.toLowerCase(), {
|
|
35
|
+
key: variable.key,
|
|
36
|
+
value: new data.StringData(variable.value.coerceString()),
|
|
37
|
+
description: `${variable.value.coerceString()} - Organization variable`
|
|
38
|
+
}));
|
|
39
|
+
// Override org variables with repo variables
|
|
40
|
+
variables.repoVariables.forEach(variable => variablesMap.set(variable.key.toLowerCase(), {
|
|
41
|
+
key: variable.key,
|
|
42
|
+
value: new data.StringData(variable.value.coerceString()),
|
|
43
|
+
description: `${variable.value.coerceString()} - Repository variable`
|
|
44
|
+
}));
|
|
45
|
+
// Override repo variables with environment veriables (if defined)
|
|
46
|
+
variables.environmentVariables.forEach(variable => variablesMap.set(variable.key.toLowerCase(), {
|
|
47
|
+
key: variable.key,
|
|
48
|
+
value: new data.StringData(variable.value.coerceString()),
|
|
49
|
+
description: `${variable.value.coerceString()} - Variable for environment \`${environmentName || ""}\``
|
|
50
|
+
}));
|
|
51
|
+
// Sort variables by key and add to context
|
|
52
|
+
Array.from(variablesMap.values())
|
|
53
|
+
.sort((a, b) => a.key.localeCompare(b.key))
|
|
54
|
+
.forEach(variable => variablesContext?.add(variable.key, variable.value, variable.description));
|
|
55
|
+
return variablesContext;
|
|
56
|
+
}
|
|
57
|
+
export async function getRemoteVariables(octokit, cache, repo, environmentName) {
|
|
58
|
+
// Repo variables
|
|
59
|
+
return {
|
|
60
|
+
repoVariables: await cache.get(`${repo.owner}/${repo.name}/vars`, undefined, () => fetchVariables(octokit, repo.owner, repo.name)),
|
|
61
|
+
environmentVariables: (environmentName &&
|
|
62
|
+
(await cache.get(`${repo.owner}/${repo.name}/vars/environment/${environmentName}`, undefined, () => fetchEnvironmentVariables(octokit, repo.id, environmentName)))) ||
|
|
63
|
+
[],
|
|
64
|
+
organizationVariables: await cache.get(`${repo.owner}/vars`, undefined, () => fetchOrganizationVariables(octokit, repo))
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async function fetchVariables(octokit, owner, name) {
|
|
68
|
+
try {
|
|
69
|
+
return await octokit.paginate(octokit.actions.listRepoVariables, {
|
|
70
|
+
owner: owner,
|
|
71
|
+
repo: name,
|
|
72
|
+
per_page: 100
|
|
73
|
+
}, response => response.data.map(variable => {
|
|
74
|
+
return { key: variable.name, value: new StringData(variable.value) };
|
|
75
|
+
}));
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
console.log("Failure to retrieve variables: ", e);
|
|
79
|
+
throw e;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function fetchEnvironmentVariables(octokit, repositoryId, environmentName) {
|
|
83
|
+
try {
|
|
84
|
+
return await octokit.paginate(octokit.actions.listEnvironmentVariables, {
|
|
85
|
+
repository_id: repositoryId,
|
|
86
|
+
environment_name: environmentName,
|
|
87
|
+
per_page: 100
|
|
88
|
+
}, response => response.data.map(variable => {
|
|
89
|
+
return { key: variable.name, value: new StringData(variable.value) };
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
if (errorStatus(e) === 404) {
|
|
94
|
+
warn(`Environment ${environmentName} not found`);
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
console.log("Failure to retrieve environment variables: ", e);
|
|
98
|
+
throw e;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function fetchOrganizationVariables(octokit, repo) {
|
|
102
|
+
if (!repo.organizationOwned) {
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const variables = await octokit.paginate("GET /repos/{owner}/{repo}/actions/organization-variables", {
|
|
107
|
+
owner: repo.owner,
|
|
108
|
+
repo: repo.name,
|
|
109
|
+
per_page: 100
|
|
110
|
+
});
|
|
111
|
+
return variables.map(variable => {
|
|
112
|
+
return { key: variable.name, value: new StringData(variable.value) };
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
console.log("Failure to retrieve organization variables: ", e);
|
|
117
|
+
throw e;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../src/context-providers/variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ContextProviderConfig } from "@actions/languageservice";
|
|
2
|
+
import { Octokit } from "@octokit/rest";
|
|
3
|
+
import { RepositoryContext } from "./initializationOptions";
|
|
4
|
+
import { TTLCache } from "./utils/cache";
|
|
5
|
+
export declare function contextProviders(client: Octokit | undefined, repo: RepositoryContext | undefined, cache: TTLCache): ContextProviderConfig;
|
|
6
|
+
//# sourceMappingURL=context-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-providers.d.ts","sourceRoot":"","sources":["../src/context-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAItC,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,KAAK,EAAE,QAAQ,GACd,qBAAqB,CAsBvB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getSecrets } from "./context-providers/secrets";
|
|
2
|
+
import { getStepsContext } from "./context-providers/steps";
|
|
3
|
+
import { getVariables } from "./context-providers/variables";
|
|
4
|
+
export function contextProviders(client, repo, cache) {
|
|
5
|
+
if (!repo || !client) {
|
|
6
|
+
return { getContext: () => Promise.resolve(undefined) };
|
|
7
|
+
}
|
|
8
|
+
const getContext = async (name, defaultContext, workflowContext, mode) => {
|
|
9
|
+
switch (name) {
|
|
10
|
+
case "secrets":
|
|
11
|
+
return await getSecrets(workflowContext, client, cache, repo, defaultContext, mode);
|
|
12
|
+
case "vars":
|
|
13
|
+
return await getVariables(workflowContext, client, cache, repo, defaultContext);
|
|
14
|
+
case "steps":
|
|
15
|
+
return await getStepsContext(client, cache, defaultContext, workflowContext);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
return { getContext };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=context-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-providers.js","sourceRoot":"","sources":["../src/context-providers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAI3D,MAAM,UAAU,gBAAgB,CAC9B,MAA2B,EAC3B,IAAmC,EACnC,KAAe;IAEf,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;QACpB,OAAO,EAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAC,CAAC;KACvD;IAED,MAAM,UAAU,GAAG,KAAK,EACtB,IAAY,EACZ,cAAiD,EACjD,eAAgC,EAChC,IAAU,EACV,EAAE;QACF,QAAQ,IAAI,EAAE;YACZ,KAAK,SAAS;gBACZ,OAAO,MAAM,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACtF,KAAK,MAAM;gBACT,OAAO,MAAM,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAClF,KAAK,OAAO;gBACV,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;SAChF;IACH,CAAC,CAAC;IAEF,OAAO,EAAC,UAAU,EAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { DescriptionProvider } from "@actions/languageservice/hover";
|
|
2
|
+
import { Octokit } from "@octokit/rest";
|
|
3
|
+
import { TTLCache } from "./utils/cache";
|
|
4
|
+
export declare function descriptionProvider(client: Octokit | undefined, cache: TTLCache): DescriptionProvider;
|
|
5
|
+
//# sourceMappingURL=description-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-provider.d.ts","sourceRoot":"","sources":["../src/description-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,KAAK,EAAE,QAAQ,GAAG,mBAAmB,CAmBrG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getActionDescription } from "./description-providers/action-description";
|
|
2
|
+
import { getActionInputDescription } from "./description-providers/action-input";
|
|
3
|
+
export function descriptionProvider(client, cache) {
|
|
4
|
+
const getDescription = async (context, token, path) => {
|
|
5
|
+
if (!client || !context.step) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
const parent = path[path.length - 1];
|
|
9
|
+
if (parent.definition?.key === "step-with") {
|
|
10
|
+
return await getActionInputDescription(client, cache, context.step, token);
|
|
11
|
+
}
|
|
12
|
+
if (parent.definition?.key === "step-uses") {
|
|
13
|
+
return await getActionDescription(client, cache, context.step);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
getDescription
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=description-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-provider.js","sourceRoot":"","sources":["../src/description-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,oBAAoB,EAAC,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAC,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAG/E,MAAM,UAAU,mBAAmB,CAAC,MAA2B,EAAE,KAAe;IAC9E,MAAM,cAAc,GAA0C,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3F,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,WAAW,EAAE;YAC1C,OAAO,MAAM,yBAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5E;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,KAAK,WAAW,EAAE;YAC1C,OAAO,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SAChE;IACH,CAAC,CAAC;IAEF,OAAO;QACL,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Step } from "@actions/workflow-parser/model/workflow-template";
|
|
2
|
+
import { Octokit } from "@octokit/rest";
|
|
3
|
+
import { TTLCache } from "../utils/cache";
|
|
4
|
+
export declare function getActionDescription(client: Octokit, cache: TTLCache, step: Step): Promise<string | undefined>;
|
|
5
|
+
//# sourceMappingURL=action-description.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-description.d.ts","sourceRoot":"","sources":["../../src/description-providers/action-description.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,kDAAkD,CAAC;AACtE,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAExC,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAepH"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { actionUrl, parseActionReference } from "@actions/languageservice/action";
|
|
2
|
+
import { isActionStep } from "@actions/workflow-parser/model/type-guards";
|
|
3
|
+
import { fetchActionMetadata } from "../utils/action-metadata";
|
|
4
|
+
export async function getActionDescription(client, cache, step) {
|
|
5
|
+
if (!isActionStep(step)) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
const action = parseActionReference(step.uses.value);
|
|
9
|
+
if (!action) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const metadata = await fetchActionMetadata(client, cache, action);
|
|
13
|
+
if (!metadata?.name || !metadata?.description) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return `[**${metadata.name}**](${actionUrl(action)})\n\n${metadata.description}`;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=action-description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-description.js","sourceRoot":"","sources":["../../src/description-providers/action-description.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAC,YAAY,EAAC,MAAM,4CAA4C,CAAC;AAGxE,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAe,EAAE,KAAe,EAAE,IAAU;IACrF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;QAC7C,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,MAAM,QAAQ,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Step } from "@actions/workflow-parser/model/workflow-template";
|
|
2
|
+
import { TemplateToken } from "@actions/workflow-parser/templates/tokens/template-token";
|
|
3
|
+
import { Octokit } from "@octokit/rest";
|
|
4
|
+
import { TTLCache } from "../utils/cache";
|
|
5
|
+
export declare function getActionInputDescription(client: Octokit, cache: TTLCache, step: Step, token: TemplateToken): Promise<string | undefined>;
|
|
6
|
+
//# sourceMappingURL=action-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-input.d.ts","sourceRoot":"","sources":["../../src/description-providers/action-input.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,IAAI,EAAC,MAAM,kDAAkD,CAAC;AACtE,OAAO,EAAC,aAAa,EAAC,MAAM,0DAA0D,CAAC;AACvF,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAExC,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsC7B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { parseActionReference } from "@actions/languageservice/action";
|
|
2
|
+
import { isString } from "@actions/workflow-parser";
|
|
3
|
+
import { isActionStep } from "@actions/workflow-parser/model/type-guards";
|
|
4
|
+
import { fetchActionMetadata } from "../utils/action-metadata";
|
|
5
|
+
export async function getActionInputDescription(client, cache, step, token) {
|
|
6
|
+
if (!isActionStep(step)) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const action = parseActionReference(step.uses.value);
|
|
10
|
+
if (!action) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
const inputName = isString(token) && token.value;
|
|
14
|
+
if (!inputName) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const metadata = await fetchActionMetadata(client, cache, action);
|
|
18
|
+
if (!metadata?.inputs) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const input = metadata.inputs[inputName];
|
|
22
|
+
if (!input) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
let description = input.description;
|
|
26
|
+
const deprecated = input.deprecationMessage !== undefined;
|
|
27
|
+
if (deprecated) {
|
|
28
|
+
// Validation will include the deprecation message, so don't duplicate it here
|
|
29
|
+
description += `\n\n**Deprecated**`;
|
|
30
|
+
}
|
|
31
|
+
if (input.required) {
|
|
32
|
+
description += "\n\n**Required**";
|
|
33
|
+
}
|
|
34
|
+
return description;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=action-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-input.js","sourceRoot":"","sources":["../../src/description-providers/action-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAC,YAAY,EAAC,MAAM,4CAA4C,CAAC;AAIxE,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAe,EACf,KAAe,EACf,IAAU,EACV,KAAoB;IAEpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;IACjD,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;QACrB,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAEpC,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC;IAE1D,IAAI,UAAU,EAAE;QACd,8EAA8E;QAC9E,WAAW,IAAI,oBAAoB,CAAC;KACrC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,WAAW,IAAI,kBAAkB,CAAC;KACnC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FileProvider } from "@actions/workflow-parser/workflows/file-provider";
|
|
2
|
+
import { Octokit } from "@octokit/rest";
|
|
3
|
+
import { TTLCache } from "./utils/cache";
|
|
4
|
+
export declare function getFileProvider(client: Octokit | undefined, cache: TTLCache, workspace: string | undefined, readFile: (path: string) => Promise<string>): FileProvider | undefined;
|
|
5
|
+
//# sourceMappingURL=file-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-provider.d.ts","sourceRoot":"","sources":["../src/file-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kDAAkD,CAAC;AAE9E,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC1C,YAAY,GAAG,SAAS,CA+B1B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { fileIdentifier } from "@actions/workflow-parser/workflows/file-reference";
|
|
2
|
+
import path from "path";
|
|
3
|
+
export function getFileProvider(client, cache, workspace, readFile) {
|
|
4
|
+
if (!client && !workspace) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
getFileContent: async (ref) => {
|
|
9
|
+
if ("repository" in ref) {
|
|
10
|
+
if (!client) {
|
|
11
|
+
throw new Error("Remote file references are not supported with this configuration");
|
|
12
|
+
}
|
|
13
|
+
return await cache.get(`file-content-${fileIdentifier(ref)}`, undefined, () => fetchWorkflowFile(client, ref.owner, ref.repository, ref.path, ref.version));
|
|
14
|
+
}
|
|
15
|
+
if (!workspace) {
|
|
16
|
+
throw new Error("Local file references are not supported with this configuration");
|
|
17
|
+
}
|
|
18
|
+
const file = await readFile(path.join(workspace, ref.path));
|
|
19
|
+
if (!file) {
|
|
20
|
+
throw new Error(`File not found: ${ref.path}`);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
name: ref.path,
|
|
24
|
+
content: file
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async function fetchWorkflowFile(client, owner, repo, path, version) {
|
|
30
|
+
const resp = await client.repos.getContent({
|
|
31
|
+
owner,
|
|
32
|
+
repo,
|
|
33
|
+
path,
|
|
34
|
+
ref: version
|
|
35
|
+
});
|
|
36
|
+
// https://docs.github.com/rest/repos/contents?apiVersion=2022-11-28
|
|
37
|
+
// Ignore directories (array of files) and non-file content
|
|
38
|
+
if (resp.data === undefined ||
|
|
39
|
+
Array.isArray(resp.data) ||
|
|
40
|
+
resp.data.type !== "file" ||
|
|
41
|
+
resp.data.content === undefined) {
|
|
42
|
+
throw new Error("Not a file");
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
name: path,
|
|
46
|
+
content: Buffer.from(resp.data.content, "base64").toString("utf8")
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=file-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-provider.js","sourceRoot":"","sources":["../src/file-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAC,MAAM,mDAAmD,CAAC;AAEjF,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,KAAe,EACf,SAA6B,EAC7B,QAA2C;IAE3C,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE;QACzB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO;QACL,cAAc,EAAE,KAAK,EAAE,GAAG,EAAiB,EAAE;YAC3C,IAAI,YAAY,IAAI,GAAG,EAAE;gBACvB,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;iBACrF;gBAED,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,gBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAC5E,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAC5E,CAAC;aACH;YAED,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;aACpF;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;aAChD;YACD,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAAe,EACf,KAAa,EACb,IAAY,EACZ,IAAY,EACZ,OAAe;IAEf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACzC,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IAEH,oEAAoE;IACpE,2DAA2D;IAC3D,IACE,IAAI,CAAC,IAAI,KAAK,SAAS;QACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,EAC/B;QACA,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;KAC/B;IAED,OAAO;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;KACnE,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BrowserMessageReader, BrowserMessageWriter, createConnection as createBrowserConnection } from "vscode-languageserver/browser";
|
|
2
|
+
import { createConnection as createNodeConnection } from "vscode-languageserver/node";
|
|
3
|
+
import { initConnection } from "./connection";
|
|
4
|
+
/** Helper function determining whether we are executing with node runtime */
|
|
5
|
+
function isNode() {
|
|
6
|
+
return typeof process !== "undefined" && process.versions?.node != null;
|
|
7
|
+
}
|
|
8
|
+
function getConnection() {
|
|
9
|
+
if (isNode()) {
|
|
10
|
+
return createNodeConnection();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
const messageReader = new BrowserMessageReader(self);
|
|
14
|
+
const messageWriter = new BrowserMessageWriter(self);
|
|
15
|
+
return createBrowserConnection(messageReader, messageWriter);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
initConnection(getConnection());
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,IAAI,uBAAuB,EAC5C,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,gBAAgB,IAAI,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAE5C,6EAA6E;AAC7E,SAAS,MAAM;IACb,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;AAC1E,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,MAAM,EAAE,EAAE;QACZ,OAAO,oBAAoB,EAAE,CAAC;KAC/B;SAAM;QACL,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,uBAAuB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;KAC9D;AACH,CAAC;AAED,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LogLevel } from "@actions/languageservice/log";
|
|
2
|
+
export { LogLevel } from "@actions/languageservice/log";
|
|
3
|
+
export interface InitializationOptions {
|
|
4
|
+
/**
|
|
5
|
+
* GitHub token that will be used to retrieve additional information from github.com
|
|
6
|
+
*
|
|
7
|
+
* Requires the `repo` and `workflow` scopes
|
|
8
|
+
*/
|
|
9
|
+
sessionToken?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Optional user agent to use when making calls to github.com
|
|
12
|
+
*/
|
|
13
|
+
userAgent?: string;
|
|
14
|
+
/**
|
|
15
|
+
* List of repositories that the language server should be aware of
|
|
16
|
+
*/
|
|
17
|
+
repos?: RepositoryContext[];
|
|
18
|
+
/**
|
|
19
|
+
* Desired log level
|
|
20
|
+
*/
|
|
21
|
+
logLevel?: LogLevel;
|
|
22
|
+
}
|
|
23
|
+
export interface RepositoryContext {
|
|
24
|
+
/**
|
|
25
|
+
* Repository ID
|
|
26
|
+
*/
|
|
27
|
+
id: number;
|
|
28
|
+
/**
|
|
29
|
+
* Repository owner
|
|
30
|
+
*/
|
|
31
|
+
owner: string;
|
|
32
|
+
/**
|
|
33
|
+
* Indicates if the repository is owned by an organization
|
|
34
|
+
*/
|
|
35
|
+
organizationOwned: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Repository name
|
|
38
|
+
*/
|
|
39
|
+
name: string;
|
|
40
|
+
/**
|
|
41
|
+
* Local workspace uri
|
|
42
|
+
*/
|
|
43
|
+
workspaceUri: string;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=initializationOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializationOptions.d.ts","sourceRoot":"","sources":["../src/initializationOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializationOptions.js","sourceRoot":"","sources":["../src/initializationOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Octokit } from "@octokit/rest";
|
|
2
|
+
import { CompletionItem, Connection, Position } from "vscode-languageserver";
|
|
3
|
+
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
4
|
+
import { RepositoryContext } from "./initializationOptions";
|
|
5
|
+
import { TTLCache } from "./utils/cache";
|
|
6
|
+
export declare function onCompletion(connection: Connection, position: Position, document: TextDocument, client: Octokit | undefined, repoContext: RepositoryContext | undefined, cache: TTLCache): Promise<CompletionItem[]>;
|
|
7
|
+
//# sourceMappingURL=on-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-completion.d.ts","sourceRoot":"","sources":["../src/on-completion.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,oCAAoC,CAAC;AAGhE,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAGvC,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,WAAW,EAAE,iBAAiB,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ3B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { complete } from "@actions/languageservice/complete";
|
|
2
|
+
import { contextProviders } from "./context-providers";
|
|
3
|
+
import { getFileProvider } from "./file-provider";
|
|
4
|
+
import { Requests } from "./request";
|
|
5
|
+
import { valueProviders } from "./value-providers";
|
|
6
|
+
export async function onCompletion(connection, position, document, client, repoContext, cache) {
|
|
7
|
+
return await complete(document, position, {
|
|
8
|
+
valueProviderConfig: repoContext && valueProviders(client, repoContext, cache),
|
|
9
|
+
contextProviderConfig: repoContext && contextProviders(client, repoContext, cache),
|
|
10
|
+
fileProvider: getFileProvider(client, cache, repoContext?.workspaceUri, async (path) => {
|
|
11
|
+
return await connection.sendRequest(Requests.ReadFile, { path });
|
|
12
|
+
})
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=on-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-completion.js","sourceRoot":"","sources":["../src/on-completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAI3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,QAAkB,EAClB,QAAsB,EACtB,MAA2B,EAC3B,WAA0C,EAC1C,KAAe;IAEf,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACxC,mBAAmB,EAAE,WAAW,IAAI,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;QAC9E,qBAAqB,EAAE,WAAW,IAAI,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;QAClF,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACnF,OAAO,MAAM,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC;QACjE,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;CAEX,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
|
package/dist/request.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,kBAAkB;CACpB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ActionMetadata, ActionReference } from "@actions/languageservice/action";
|
|
2
|
+
import { Octokit } from "@octokit/rest";
|
|
3
|
+
import { TTLCache } from "./cache";
|
|
4
|
+
export declare function fetchActionMetadata(client: Octokit, cache: TTLCache, action: ActionReference): Promise<ActionMetadata | undefined>;
|
|
5
|
+
//# sourceMappingURL=action-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/action-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAE,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAElG,OAAO,EAAC,OAAO,EAA0B,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAGjC,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAUrC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { actionIdentifier } from "@actions/languageservice/action";
|
|
2
|
+
import { error } from "@actions/languageservice/log";
|
|
3
|
+
import { parse } from "yaml";
|
|
4
|
+
import { errorMessage, errorStatus } from "./error";
|
|
5
|
+
export async function fetchActionMetadata(client, cache, action) {
|
|
6
|
+
const metadata = await cache.get(`${actionIdentifier(action)}/action-metadata`, undefined, () => getActionMetadata(client, action));
|
|
7
|
+
if (!metadata) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
// https://docs.github.com/actions/creating-actions/metadata-syntax-for-github-actions
|
|
11
|
+
return parse(metadata);
|
|
12
|
+
}
|
|
13
|
+
async function getActionMetadata(client, action) {
|
|
14
|
+
let resp;
|
|
15
|
+
try {
|
|
16
|
+
resp = await fetchAction(client, action);
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
error(`Failed to fetch action metadata for ${actionIdentifier(action)}: '${errorMessage(e)}'`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// https://docs.github.com/rest/repos/contents?apiVersion=2022-11-28
|
|
23
|
+
// Ignore directories (array of files) and non-file content
|
|
24
|
+
if (resp.data === undefined || Array.isArray(resp.data) || resp.data.type !== "file") {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
if (resp.data.content === undefined) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return Buffer.from(resp.data.content, "base64").toString("utf8");
|
|
31
|
+
}
|
|
32
|
+
async function fetchAction(client, action) {
|
|
33
|
+
try {
|
|
34
|
+
return await client.repos.getContent({
|
|
35
|
+
owner: action.owner,
|
|
36
|
+
repo: action.name,
|
|
37
|
+
ref: action.ref,
|
|
38
|
+
path: action.path ? `${action.path}/action.yml` : "action.yml"
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
// If action.yml doesn't exist, try action.yaml
|
|
43
|
+
if (errorStatus(e) === 404) {
|
|
44
|
+
return await client.repos.getContent({
|
|
45
|
+
owner: action.owner,
|
|
46
|
+
repo: action.name,
|
|
47
|
+
ref: action.ref,
|
|
48
|
+
path: action.path ? `${action.path}/action.yaml` : "action.yaml"
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw e;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=action-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-metadata.js","sourceRoot":"","sources":["../../src/utils/action-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAkC,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAC,KAAK,EAAC,MAAM,8BAA8B,CAAC;AAEnD,OAAO,EAAC,KAAK,EAAC,MAAM,MAAM,CAAC;AAE3B,OAAO,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAe,EACf,KAAe,EACf,MAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,GAAG,EAAE,CAC9F,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAClC,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;IAED,sFAAsF;IACtF,OAAO,KAAK,CAAC,QAAQ,CAAmB,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAe,EAAE,MAAuB;IACvE,IAAI,IAAgE,CAAC;IACrE,IAAI;QACF,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,KAAK,CAAC,uCAAuC,gBAAgB,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/F,OAAO;KACR;IAED,oEAAoE;IACpE,2DAA2D;IAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;QACpF,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;QACnC,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAe,EAAE,MAAuB;IACjE,IAAI;QACF,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,YAAY;SAC/D,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,+CAA+C;QAC/C,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAC1B,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,aAAa;aACjE,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class TTLCache {
|
|
2
|
+
private defaultTTLinMS;
|
|
3
|
+
private cache;
|
|
4
|
+
constructor(defaultTTLinMS?: number);
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param key Key to cache value under
|
|
8
|
+
* @param ttlInMS How long is the content valid. If optional, default value will be used
|
|
9
|
+
* @param getter Function to retrieve content if not in cache
|
|
10
|
+
*/
|
|
11
|
+
get<T>(key: string, ttlInMS: number | undefined, getter: () => Promise<T>): Promise<T>;
|
|
12
|
+
clear(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAMA,qBAAa,QAAQ;IAGP,OAAO,CAAC,cAAc;IAFlC,OAAO,CAAC,KAAK,CAA0C;gBAEnC,cAAc,GAAE,MAAuB;IAE3D;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsB5F,KAAK,IAAI,IAAI;CAGd"}
|