@actions/languageservice 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 +131 -0
- package/dist/action.d.ts +28 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +36 -0
- package/dist/action.js.map +1 -0
- package/dist/complete.d.ts +15 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +203 -0
- package/dist/complete.js.map +1 -0
- package/dist/context/workflow-context.d.ts +15 -0
- package/dist/context/workflow-context.d.ts.map +1 -0
- package/dist/context/workflow-context.js +64 -0
- package/dist/context/workflow-context.js.map +1 -0
- package/dist/context-providers/config.d.ts +7 -0
- package/dist/context-providers/config.d.ts.map +1 -0
- package/dist/context-providers/config.js +2 -0
- package/dist/context-providers/config.js.map +1 -0
- package/dist/context-providers/default.d.ts +11 -0
- package/dist/context-providers/default.d.ts.map +1 -0
- package/dist/context-providers/default.js +88 -0
- package/dist/context-providers/default.js.map +1 -0
- package/dist/context-providers/descriptions.d.ts +15 -0
- package/dist/context-providers/descriptions.d.ts.map +1 -0
- package/dist/context-providers/descriptions.js +23 -0
- package/dist/context-providers/descriptions.js.map +1 -0
- package/dist/context-providers/descriptions.json +241 -0
- package/dist/context-providers/env.d.ts +4 -0
- package/dist/context-providers/env.d.ts.map +1 -0
- package/dist/context-providers/env.js +29 -0
- package/dist/context-providers/env.js.map +1 -0
- package/dist/context-providers/events/eventPayloads.d.ts +4 -0
- package/dist/context-providers/events/eventPayloads.d.ts.map +1 -0
- package/dist/context-providers/events/eventPayloads.js +111 -0
- package/dist/context-providers/events/eventPayloads.js.map +1 -0
- package/dist/context-providers/events/objects.json +26220 -0
- package/dist/context-providers/events/schedule.json +102 -0
- package/dist/context-providers/events/webhooks.json +124811 -0
- package/dist/context-providers/events/workflow_call.json +134 -0
- package/dist/context-providers/github.d.ts +5 -0
- package/dist/context-providers/github.d.ts.map +1 -0
- package/dist/context-providers/github.js +139 -0
- package/dist/context-providers/github.js.map +1 -0
- package/dist/context-providers/inputs.d.ts +4 -0
- package/dist/context-providers/inputs.d.ts.map +1 -0
- package/dist/context-providers/inputs.js +52 -0
- package/dist/context-providers/inputs.js.map +1 -0
- package/dist/context-providers/job.d.ts +4 -0
- package/dist/context-providers/job.d.ts.map +1 -0
- package/dist/context-providers/job.js +61 -0
- package/dist/context-providers/job.js.map +1 -0
- package/dist/context-providers/jobs.d.ts +4 -0
- package/dist/context-providers/jobs.d.ts.map +1 -0
- package/dist/context-providers/jobs.js +30 -0
- package/dist/context-providers/jobs.js.map +1 -0
- package/dist/context-providers/matrix.d.ts +4 -0
- package/dist/context-providers/matrix.d.ts.map +1 -0
- package/dist/context-providers/matrix.js +163 -0
- package/dist/context-providers/matrix.js.map +1 -0
- package/dist/context-providers/needs.d.ts +4 -0
- package/dist/context-providers/needs.d.ts.map +1 -0
- package/dist/context-providers/needs.js +56 -0
- package/dist/context-providers/needs.js.map +1 -0
- package/dist/context-providers/secrets.d.ts +5 -0
- package/dist/context-providers/secrets.d.ts.map +1 -0
- package/dist/context-providers/secrets.js +23 -0
- package/dist/context-providers/secrets.js.map +1 -0
- package/dist/context-providers/steps.d.ts +4 -0
- package/dist/context-providers/steps.d.ts.map +1 -0
- package/dist/context-providers/steps.js +35 -0
- package/dist/context-providers/steps.js.map +1 -0
- package/dist/context-providers/strategy.d.ts +4 -0
- package/dist/context-providers/strategy.d.ts.map +1 -0
- package/dist/context-providers/strategy.js +31 -0
- package/dist/context-providers/strategy.js.map +1 -0
- package/dist/description-providers/reusable-job-inputs.d.ts +5 -0
- package/dist/description-providers/reusable-job-inputs.d.ts.map +1 -0
- package/dist/description-providers/reusable-job-inputs.js +29 -0
- package/dist/description-providers/reusable-job-inputs.js.map +1 -0
- package/dist/document-links.d.ts +4 -0
- package/dist/document-links.d.ts.map +1 -0
- package/dist/document-links.js +73 -0
- package/dist/document-links.js.map +1 -0
- package/dist/expression-hover/expression-pos.d.ts +13 -0
- package/dist/expression-hover/expression-pos.d.ts.map +1 -0
- package/dist/expression-hover/expression-pos.js +41 -0
- package/dist/expression-hover/expression-pos.js.map +1 -0
- package/dist/expression-hover/pos-range.d.ts +3 -0
- package/dist/expression-hover/pos-range.d.ts.map +1 -0
- package/dist/expression-hover/pos-range.js +7 -0
- package/dist/expression-hover/pos-range.js.map +1 -0
- package/dist/expression-hover/visitor.d.ts +27 -0
- package/dist/expression-hover/visitor.d.ts.map +1 -0
- package/dist/expression-hover/visitor.js +116 -0
- package/dist/expression-hover/visitor.js.map +1 -0
- package/dist/expression-validation/error-dictionary.d.ts +13 -0
- package/dist/expression-validation/error-dictionary.d.ts.map +1 -0
- package/dist/expression-validation/error-dictionary.js +39 -0
- package/dist/expression-validation/error-dictionary.js.map +1 -0
- package/dist/expression-validation/functions.d.ts +9 -0
- package/dist/expression-validation/functions.d.ts.map +1 -0
- package/dist/expression-validation/functions.js +11 -0
- package/dist/expression-validation/functions.js.map +1 -0
- package/dist/hover.d.ts +16 -0
- package/dist/hover.d.ts.map +1 -0
- package/dist/hover.js +154 -0
- package/dist/hover.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/log.d.ts +39 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +48 -0
- package/dist/log.js.map +1 -0
- package/dist/nulltrace.d.ts +3 -0
- package/dist/nulltrace.d.ts.map +1 -0
- package/dist/nulltrace.js +3 -0
- package/dist/nulltrace.js.map +1 -0
- package/dist/utils/expression-detection.d.ts +3 -0
- package/dist/utils/expression-detection.d.ts.map +1 -0
- package/dist/utils/expression-detection.js +9 -0
- package/dist/utils/expression-detection.js.map +1 -0
- package/dist/utils/find-token.d.ts +23 -0
- package/dist/utils/find-token.d.ts.map +1 -0
- package/dist/utils/find-token.js +159 -0
- package/dist/utils/find-token.js.map +1 -0
- package/dist/utils/indentation-guesser.d.ts +16 -0
- package/dist/utils/indentation-guesser.d.ts.map +1 -0
- package/dist/utils/indentation-guesser.js +214 -0
- package/dist/utils/indentation-guesser.js.map +1 -0
- package/dist/utils/range.d.ts +5 -0
- package/dist/utils/range.d.ts.map +1 -0
- package/dist/utils/range.js +25 -0
- package/dist/utils/range.js.map +1 -0
- package/dist/utils/rel-char-pos.d.ts +4 -0
- package/dist/utils/rel-char-pos.d.ts.map +1 -0
- package/dist/utils/rel-char-pos.js +14 -0
- package/dist/utils/rel-char-pos.js.map +1 -0
- package/dist/utils/scalar-to-data.d.ts +4 -0
- package/dist/utils/scalar-to-data.d.ts.map +1 -0
- package/dist/utils/scalar-to-data.js +19 -0
- package/dist/utils/scalar-to-data.js.map +1 -0
- package/dist/utils/transform.d.ts +6 -0
- package/dist/utils/transform.d.ts.map +1 -0
- package/dist/utils/transform.js +66 -0
- package/dist/utils/transform.js.map +1 -0
- package/dist/utils/workflow-cache.d.ts +21 -0
- package/dist/utils/workflow-cache.d.ts.map +1 -0
- package/dist/utils/workflow-cache.js +52 -0
- package/dist/utils/workflow-cache.js.map +1 -0
- package/dist/validate-action.d.ts +6 -0
- package/dist/validate-action.d.ts.map +1 -0
- package/dist/validate-action.js +71 -0
- package/dist/validate-action.js.map +1 -0
- package/dist/validate.d.ts +20 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +162 -0
- package/dist/validate.js.map +1 -0
- package/dist/value-providers/config.d.ts +24 -0
- package/dist/value-providers/config.d.ts.map +1 -0
- package/dist/value-providers/config.js +6 -0
- package/dist/value-providers/config.js.map +1 -0
- package/dist/value-providers/default.d.ts +4 -0
- package/dist/value-providers/default.d.ts.map +1 -0
- package/dist/value-providers/default.js +38 -0
- package/dist/value-providers/default.js.map +1 -0
- package/dist/value-providers/definition.d.ts +4 -0
- package/dist/value-providers/definition.d.ts.map +1 -0
- package/dist/value-providers/definition.js +82 -0
- package/dist/value-providers/definition.js.map +1 -0
- package/dist/value-providers/needs.d.ts +4 -0
- package/dist/value-providers/needs.d.ts.map +1 -0
- package/dist/value-providers/needs.js +10 -0
- package/dist/value-providers/needs.js.map +1 -0
- package/dist/value-providers/reusable-job-inputs.d.ts +4 -0
- package/dist/value-providers/reusable-job-inputs.d.ts.map +1 -0
- package/dist/value-providers/reusable-job-inputs.js +29 -0
- package/dist/value-providers/reusable-job-inputs.js.map +1 -0
- package/dist/value-providers/reusable-job-secrets.d.ts +4 -0
- package/dist/value-providers/reusable-job-secrets.d.ts.map +1 -0
- package/dist/value-providers/reusable-job-secrets.js +41 -0
- package/dist/value-providers/reusable-job-secrets.js.map +1 -0
- package/dist/value-providers/strings-to-values.d.ts +3 -0
- package/dist/value-providers/strings-to-values.d.ts.map +1 -0
- package/dist/value-providers/strings-to-values.js +4 -0
- package/dist/value-providers/strings-to-values.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { data, DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { isBasicExpression, isMapping, isSequence, isString } from "@actions/workflow-parser";
|
|
3
|
+
import { Mode } from "./default";
|
|
4
|
+
export function getMatrixContext(workflowContext, mode) {
|
|
5
|
+
// https://docs.github.com/en/actions/learn-github-actions/contexts#matrix-context
|
|
6
|
+
const strategy = workflowContext.job?.strategy ?? workflowContext.reusableWorkflowJob?.strategy;
|
|
7
|
+
if (!strategy || !isMapping(strategy)) {
|
|
8
|
+
return new DescriptionDictionary();
|
|
9
|
+
}
|
|
10
|
+
const matrix = strategy.find("matrix");
|
|
11
|
+
if (!matrix || !isMapping(matrix)) {
|
|
12
|
+
// Matrix could be an expression, so there's no context we can provide
|
|
13
|
+
return new data.Null();
|
|
14
|
+
}
|
|
15
|
+
const properties = matrixProperties(matrix, mode);
|
|
16
|
+
if (!properties) {
|
|
17
|
+
// Matrix included an expression, so there's no context we can provide
|
|
18
|
+
return new data.Null();
|
|
19
|
+
}
|
|
20
|
+
const d = new DescriptionDictionary();
|
|
21
|
+
for (const [key, value] of properties) {
|
|
22
|
+
if (value === undefined) {
|
|
23
|
+
d.add(key, new data.Null());
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const a = new data.Array();
|
|
27
|
+
for (const v of value) {
|
|
28
|
+
a.add(new data.StringData(v));
|
|
29
|
+
}
|
|
30
|
+
d.add(key, a);
|
|
31
|
+
}
|
|
32
|
+
return d;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix
|
|
36
|
+
* A matrix property can come from:
|
|
37
|
+
* - An explicit matrix property key
|
|
38
|
+
* - A configuration included via the "include" property
|
|
39
|
+
*
|
|
40
|
+
* By definition, "exclude" can't add new keys to the matrix.
|
|
41
|
+
* Additionally, "include" and "exclude are not properties of the matrix
|
|
42
|
+
* If the matrix or "include" is an expression, we can't know the keys
|
|
43
|
+
*
|
|
44
|
+
* Examples:
|
|
45
|
+
* 1. Basic matrix
|
|
46
|
+
* matrix:
|
|
47
|
+
* version: [10, 12, 14]
|
|
48
|
+
* os: [ubuntu-latest, windows-latest]
|
|
49
|
+
*
|
|
50
|
+
* Keys: version, os
|
|
51
|
+
*
|
|
52
|
+
* 2. Matrix with "include"
|
|
53
|
+
* matrix:
|
|
54
|
+
* version: [10, 12, 14]
|
|
55
|
+
* os: [ubuntu-latest, windows-latest]
|
|
56
|
+
* include:
|
|
57
|
+
* - version: 10
|
|
58
|
+
* os: macos-latest
|
|
59
|
+
*
|
|
60
|
+
* Keys: version, os
|
|
61
|
+
*
|
|
62
|
+
* 3. Matrix with new properties in "include"
|
|
63
|
+
* matrix:
|
|
64
|
+
* include:
|
|
65
|
+
* - site: "production"
|
|
66
|
+
* datacenter: "site-a"
|
|
67
|
+
* - site: "staging"
|
|
68
|
+
* datacenter: "site-b"
|
|
69
|
+
*
|
|
70
|
+
* Keys: site, datacenter
|
|
71
|
+
*
|
|
72
|
+
* 4. Matrix with "exclude"
|
|
73
|
+
* matrix:
|
|
74
|
+
* os: [macos-latest, windows-latest]
|
|
75
|
+
* version: [12, 14, 16]
|
|
76
|
+
* environment: [staging, production]
|
|
77
|
+
* exclude:
|
|
78
|
+
* - os: macos-latest
|
|
79
|
+
* version: 12
|
|
80
|
+
* environment: production
|
|
81
|
+
* - os: windows-latest
|
|
82
|
+
* version: 16
|
|
83
|
+
*
|
|
84
|
+
* Keys: os, version, environment
|
|
85
|
+
*/
|
|
86
|
+
function matrixProperties(matrix, mode) {
|
|
87
|
+
const properties = new Map();
|
|
88
|
+
let include;
|
|
89
|
+
for (const pair of matrix) {
|
|
90
|
+
if (!isString(pair.key)) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const key = pair.key.value;
|
|
94
|
+
switch (key) {
|
|
95
|
+
case "include":
|
|
96
|
+
// If "include" is an expression, we can't know the full properties of the matrix
|
|
97
|
+
if (isBasicExpression(pair.value) || !isSequence(pair.value)) {
|
|
98
|
+
// Without the full properties of the matrix, we shouldn't validate anything
|
|
99
|
+
if (mode === Mode.Validation) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
include = pair.value;
|
|
107
|
+
break;
|
|
108
|
+
case "exclude":
|
|
109
|
+
break;
|
|
110
|
+
default: {
|
|
111
|
+
if (!isSequence(pair.value)) {
|
|
112
|
+
properties.set(key, undefined);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const values = new Set();
|
|
116
|
+
for (const value of pair.value) {
|
|
117
|
+
// The parser should coerce matrix values to strings, ignore expressions
|
|
118
|
+
if (isString(value)) {
|
|
119
|
+
values.add(value.value);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
properties.set(key, values);
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (include) {
|
|
128
|
+
for (const item of include) {
|
|
129
|
+
if (!isMapping(item)) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
for (const pair of item) {
|
|
133
|
+
addValueToProperties(properties, pair);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return properties;
|
|
138
|
+
}
|
|
139
|
+
function addValueToProperties(properties, pair) {
|
|
140
|
+
if (!isString(pair.key)) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const key = pair.key.value;
|
|
144
|
+
const value = isString(pair.value) ? pair.value.value : undefined;
|
|
145
|
+
if (!properties.has(key)) {
|
|
146
|
+
if (value === undefined) {
|
|
147
|
+
properties.set(key, undefined);
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
properties.set(key, new Set([value]));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (value === undefined) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const property = properties.get(key);
|
|
157
|
+
if (property !== undefined) {
|
|
158
|
+
property.add(value);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
properties.set(key, new Set([value]));
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=matrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../src/context-providers/matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"needs.d.ts","sourceRoot":"","sources":["../../src/context-providers/needs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAKjE,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAE5D,wBAAgB,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,qBAAqB,CAevF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { data, DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { isMapping, isScalar, isString } from "@actions/workflow-parser";
|
|
3
|
+
import { isJob } from "@actions/workflow-parser/model/type-guards";
|
|
4
|
+
export function getNeedsContext(workflowContext) {
|
|
5
|
+
const d = new DescriptionDictionary();
|
|
6
|
+
const job = workflowContext.job || workflowContext.reusableWorkflowJob;
|
|
7
|
+
if (!job?.needs) {
|
|
8
|
+
return d;
|
|
9
|
+
}
|
|
10
|
+
for (const jobID of job.needs) {
|
|
11
|
+
const job = workflowContext.template?.jobs.find(job => job.id.value === jobID.value);
|
|
12
|
+
d.add(jobID.value, needsJobContext(job));
|
|
13
|
+
}
|
|
14
|
+
return d;
|
|
15
|
+
}
|
|
16
|
+
function needsJobContext(job) {
|
|
17
|
+
// https://docs.github.com/en/actions/learn-github-actions/contexts#needs-context
|
|
18
|
+
const d = new DescriptionDictionary();
|
|
19
|
+
if (job) {
|
|
20
|
+
d.add("outputs", jobOutputs(job));
|
|
21
|
+
}
|
|
22
|
+
// Can be "success", "failure", "cancelled", or "skipped"
|
|
23
|
+
d.add("result", new data.Null());
|
|
24
|
+
return d;
|
|
25
|
+
}
|
|
26
|
+
function jobOutputs(job) {
|
|
27
|
+
const d = new DescriptionDictionary();
|
|
28
|
+
if (!job?.outputs) {
|
|
29
|
+
return d;
|
|
30
|
+
}
|
|
31
|
+
for (const output of job.outputs) {
|
|
32
|
+
if (!isString(output.key)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
d.add(output.key.value, ...jobOutput(job, output.value));
|
|
36
|
+
}
|
|
37
|
+
return d;
|
|
38
|
+
}
|
|
39
|
+
function jobOutput(job, outputValue) {
|
|
40
|
+
if (isJob(job)) {
|
|
41
|
+
// A regular workflow job won't have a description
|
|
42
|
+
return isScalar(outputValue)
|
|
43
|
+
? [new data.StringData(outputValue.toDisplayString()), undefined]
|
|
44
|
+
: [new data.Null(), undefined];
|
|
45
|
+
}
|
|
46
|
+
if (!isMapping(outputValue)) {
|
|
47
|
+
return [new data.Null(), undefined];
|
|
48
|
+
}
|
|
49
|
+
const description = outputValue.find("description");
|
|
50
|
+
const value = outputValue.find("value");
|
|
51
|
+
return [
|
|
52
|
+
value && isScalar(value) ? new data.StringData(value.toDisplayString()) : new data.Null(),
|
|
53
|
+
description && isString(description) ? description.value : undefined
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=needs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"needs.js","sourceRoot":"","sources":["../../src/context-providers/needs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { WorkflowContext } from "../context/workflow-context";
|
|
3
|
+
import { Mode } from "./default";
|
|
4
|
+
export declare function getSecretsContext(workflowContext: WorkflowContext, mode: Mode): DescriptionDictionary;
|
|
5
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/context-providers/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAG/B,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,qBAAqB,CAmBrG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { data, DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { StringData } from "@actions/expressions/data/string";
|
|
3
|
+
import { Mode } from "./default";
|
|
4
|
+
import { getDescription } from "./descriptions";
|
|
5
|
+
export function getSecretsContext(workflowContext, mode) {
|
|
6
|
+
const d = new DescriptionDictionary({
|
|
7
|
+
key: "GITHUB_TOKEN",
|
|
8
|
+
value: new data.StringData("***"),
|
|
9
|
+
description: getDescription("secrets", "GITHUB_TOKEN")
|
|
10
|
+
});
|
|
11
|
+
const eventsConfig = workflowContext?.template?.events;
|
|
12
|
+
if (eventsConfig?.workflow_call) {
|
|
13
|
+
// Unpredictable secrets may be passed in via a workflow_call trigger
|
|
14
|
+
d.complete = false;
|
|
15
|
+
if (mode === Mode.Completion) {
|
|
16
|
+
for (const [name, value] of Object.entries(eventsConfig.workflow_call.secrets || {})) {
|
|
17
|
+
d.add(name, new StringData(""), value.description);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return d;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/context-providers/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAC,UAAU,EAAC,MAAM,kCAAkC,CAAC;AAE5D,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,iBAAiB,CAAC,eAAgC,EAAE,IAAU;IAC5E,MAAM,CAAC,GAAG,IAAI,qBAAqB,CAAC;QAClC,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACjC,WAAW,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC;KACvD,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC;IACvD,IAAI,YAAY,EAAE,aAAa,EAAE;QAC/B,qEAAqE;QACrE,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;YAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;gBACpF,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;aACpD;SACF;KACF;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/context-providers/steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAG5D,wBAAgB,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,qBAAqB,CAsBvF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { data, DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { getDescription } from "./descriptions";
|
|
3
|
+
export function getStepsContext(workflowContext) {
|
|
4
|
+
const d = new DescriptionDictionary();
|
|
5
|
+
if (!workflowContext.job?.steps) {
|
|
6
|
+
return d;
|
|
7
|
+
}
|
|
8
|
+
const currentStep = workflowContext.step?.id;
|
|
9
|
+
for (const step of workflowContext.job.steps) {
|
|
10
|
+
// We can't reference context from the current step or later steps
|
|
11
|
+
if (currentStep && step.id === currentStep) {
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
14
|
+
if (isGenerated(step)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
d.add(step.id, stepContext());
|
|
18
|
+
}
|
|
19
|
+
return d;
|
|
20
|
+
}
|
|
21
|
+
function stepContext() {
|
|
22
|
+
// https://docs.github.com/en/actions/learn-github-actions/contexts#steps-context
|
|
23
|
+
const d = new DescriptionDictionary();
|
|
24
|
+
d.add("outputs", new data.Null(), getDescription("steps", "outputs"));
|
|
25
|
+
// Can be "success", "failure", "cancelled", or "skipped"
|
|
26
|
+
d.add("conclusion", new data.Null(), getDescription("steps", "conclusion"));
|
|
27
|
+
d.add("outcome", new data.Null(), getDescription("steps", "outcome"));
|
|
28
|
+
return d;
|
|
29
|
+
}
|
|
30
|
+
function isGenerated(step) {
|
|
31
|
+
// Steps need to explicitly set an ID to be referenced in the context
|
|
32
|
+
// Generated IDs always start with "__", which is not allowed by user-defined IDs
|
|
33
|
+
return step.id.startsWith("__");
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/context-providers/steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,eAAgC;IAC9D,MAAM,CAAC,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACtC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE;QAC/B,OAAO,CAAC,CAAC;KACV;IAED,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE;QAC5C,kEAAkE;QAClE,IAAI,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,EAAE;YAC1C,MAAM;SACP;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACrB,SAAS;SACV;QAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;KAC/B;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW;IAClB,iFAAiF;IACjF,MAAM,CAAC,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEtC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtE,yDAAyD;IACzD,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,IAAU;IAC7B,qEAAqE;IACrE,iFAAiF;IACjF,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/context-providers/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAG5D,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,qBAAqB,CAiC1F"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { data, DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { isMapping, isScalar, isString } from "@actions/workflow-parser";
|
|
3
|
+
import { scalarToData } from "../utils/scalar-to-data";
|
|
4
|
+
export function getStrategyContext(workflowContext) {
|
|
5
|
+
// https://docs.github.com/en/actions/learn-github-actions/contexts#strategy-context
|
|
6
|
+
const keys = ["fail-fast", "job-index", "job-total", "max-parallel"];
|
|
7
|
+
const strategy = workflowContext.job?.strategy ?? workflowContext.reusableWorkflowJob?.strategy;
|
|
8
|
+
if (!strategy || !isMapping(strategy)) {
|
|
9
|
+
return new DescriptionDictionary(...keys.map(key => {
|
|
10
|
+
return { key, value: new data.Null() };
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
const strategyContext = new DescriptionDictionary();
|
|
14
|
+
for (const pair of strategy) {
|
|
15
|
+
if (!isString(pair.key)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (!keys.includes(pair.key.value)) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const value = isScalar(pair.value) ? scalarToData(pair.value) : new data.Null();
|
|
22
|
+
strategyContext.add(pair.key.value, value);
|
|
23
|
+
}
|
|
24
|
+
for (const key of keys) {
|
|
25
|
+
if (!strategyContext.get(key)) {
|
|
26
|
+
strategyContext.add(key, new data.Null());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return strategyContext;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../src/context-providers/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAErD,MAAM,UAAU,kBAAkB,CAAC,eAAgC;IACjE,oFAAoF;IACpF,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAErE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,IAAI,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IAChG,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QACrC,OAAO,IAAI,qBAAqB,CAC9B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChB,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAC,CAAC;QACvC,CAAC,CAAC,CACH,CAAC;KACH;IAED,MAAM,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACvB,SAAS;SACV;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAClC,SAAS;SACV;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAChF,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC5C;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC7B,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC3C;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { WorkflowContext } from "../context/workflow-context";
|
|
2
|
+
import { TokenResult } from "../utils/find-token";
|
|
3
|
+
export declare function isReusableWorkflowJobInput(tokenResult: TokenResult): boolean;
|
|
4
|
+
export declare function getReusableWorkflowInputDescription(workflowContext: WorkflowContext, tokenResult: TokenResult): string;
|
|
5
|
+
//# sourceMappingURL=reusable-job-inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reusable-job-inputs.d.ts","sourceRoot":"","sources":["../../src/description-providers/reusable-job-inputs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAEhD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAM5E;AAED,wBAAgB,mCAAmC,CACjD,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,GACvB,MAAM,CAwBR"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { isMapping, isString } from "@actions/workflow-parser";
|
|
2
|
+
import { DESCRIPTION } from "@actions/workflow-parser/templates/template-constants";
|
|
3
|
+
export function isReusableWorkflowJobInput(tokenResult) {
|
|
4
|
+
return (tokenResult.parent?.definition?.key === "workflow-job-with" &&
|
|
5
|
+
tokenResult.token !== null &&
|
|
6
|
+
isString(tokenResult.token));
|
|
7
|
+
}
|
|
8
|
+
export function getReusableWorkflowInputDescription(workflowContext, tokenResult) {
|
|
9
|
+
const reusableWorkflowJob = workflowContext.reusableWorkflowJob;
|
|
10
|
+
if (!reusableWorkflowJob) {
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
13
|
+
const inputName = tokenResult.token && isString(tokenResult.token) && tokenResult.token.value;
|
|
14
|
+
if (!inputName) {
|
|
15
|
+
return "";
|
|
16
|
+
}
|
|
17
|
+
// Find the input description in the template, if any
|
|
18
|
+
if (reusableWorkflowJob["input-definitions"]) {
|
|
19
|
+
const definition = reusableWorkflowJob["input-definitions"].find(inputName);
|
|
20
|
+
if (definition && isMapping(definition)) {
|
|
21
|
+
const description = definition.find(DESCRIPTION);
|
|
22
|
+
if (description && isString(description)) {
|
|
23
|
+
return description.value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return "";
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=reusable-job-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reusable-job-inputs.js","sourceRoot":"","sources":["../../src/description-providers/reusable-job-inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,uDAAuD,CAAC;AAIlF,MAAM,UAAU,0BAA0B,CAAC,WAAwB;IACjE,OAAO,CACL,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,mBAAmB;QAC3D,WAAW,CAAC,KAAK,KAAK,IAAI;QAC1B,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,eAAgC,EAChC,WAAwB;IAExB,MAAM,mBAAmB,GAAG,eAAe,CAAC,mBAAmB,CAAC;IAEhE,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO,EAAE,CAAC;KACX;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9F,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,CAAC;KACX;IAED,qDAAqD;IACrD,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE;QAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE;YACvC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACxC,OAAO,WAAW,CAAC,KAAK,CAAC;aAC1B;SACF;KACF;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
2
|
+
import { DocumentLink } from "vscode-languageserver-types";
|
|
3
|
+
export declare function documentLinks(document: TextDocument, workspace: string | undefined): Promise<DocumentLink[]>;
|
|
4
|
+
//# sourceMappingURL=document-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-links.d.ts","sourceRoot":"","sources":["../src/document-links.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAMzD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA8ElH"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ErrorPolicy } from "@actions/workflow-parser/model/convert";
|
|
2
|
+
import { isJob, isReusableWorkflowJob } from "@actions/workflow-parser/model/type-guards";
|
|
3
|
+
import { parseFileReference } from "@actions/workflow-parser/workflows/file-reference";
|
|
4
|
+
import vscodeURI from "vscode-uri/lib/umd"; // work around issues with the vscode-uri package
|
|
5
|
+
import { actionUrl, parseActionReference } from "./action";
|
|
6
|
+
import { mapRange } from "./utils/range";
|
|
7
|
+
import { fetchOrConvertWorkflowTemplate, fetchOrParseWorkflow } from "./utils/workflow-cache";
|
|
8
|
+
export async function documentLinks(document, workspace) {
|
|
9
|
+
const file = {
|
|
10
|
+
name: document.uri,
|
|
11
|
+
content: document.getText()
|
|
12
|
+
};
|
|
13
|
+
const parsedWorkflow = fetchOrParseWorkflow(file, document.uri);
|
|
14
|
+
if (!parsedWorkflow?.value) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const template = await fetchOrConvertWorkflowTemplate(parsedWorkflow.context, parsedWorkflow.value, document.uri, undefined, {
|
|
18
|
+
errorPolicy: ErrorPolicy.TryConversion
|
|
19
|
+
});
|
|
20
|
+
const links = [];
|
|
21
|
+
for (const job of template?.jobs || []) {
|
|
22
|
+
if (!job) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (isJob(job)) {
|
|
26
|
+
// Add links to referenced actions
|
|
27
|
+
for (const step of job.steps || []) {
|
|
28
|
+
if ("uses" in step) {
|
|
29
|
+
const actionRef = parseActionReference(step.uses.value);
|
|
30
|
+
if (!actionRef) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const url = actionUrl(actionRef);
|
|
34
|
+
links.push({
|
|
35
|
+
range: mapRange(step.uses.range),
|
|
36
|
+
target: url,
|
|
37
|
+
tooltip: `Open action on GitHub`
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (isReusableWorkflowJob(job)) {
|
|
43
|
+
// Add links to referenced reusable workflows
|
|
44
|
+
const ref = parseFileReference(job.ref.value);
|
|
45
|
+
if ("repository" in ref) {
|
|
46
|
+
// Remote workflow
|
|
47
|
+
const url = actionUrl({
|
|
48
|
+
owner: ref.owner,
|
|
49
|
+
name: ref.repository,
|
|
50
|
+
path: ref.path,
|
|
51
|
+
ref: ref.version
|
|
52
|
+
});
|
|
53
|
+
links.push({
|
|
54
|
+
range: mapRange(job.ref.range),
|
|
55
|
+
target: url,
|
|
56
|
+
tooltip: `Open reusable workflow on GitHub`
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else if (workspace) {
|
|
60
|
+
// We need workspace information to generate this link
|
|
61
|
+
// Local workflow, generate workspace link
|
|
62
|
+
const workspaceURI = vscodeURI.URI.parse(workspace);
|
|
63
|
+
const refURI = vscodeURI.Utils.joinPath(workspaceURI, job.ref.value);
|
|
64
|
+
links.push({
|
|
65
|
+
range: mapRange(job.ref.range),
|
|
66
|
+
target: refURI.toString()
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return [...links];
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=document-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-links.js","sourceRoot":"","sources":["../src/document-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Pos } from "@actions/expressions/lexer";
|
|
2
|
+
import { TemplateToken } from "@actions/workflow-parser/templates/tokens/template-token";
|
|
3
|
+
import { Position, Range as LSPRange } from "vscode-languageserver-textdocument";
|
|
4
|
+
export type ExpressionPos = {
|
|
5
|
+
/** The expression that includes the position */
|
|
6
|
+
expression: string;
|
|
7
|
+
/** Adjusted position, pointing into the expression */
|
|
8
|
+
position: Pos;
|
|
9
|
+
/** Range of the expression in the document */
|
|
10
|
+
documentRange: LSPRange;
|
|
11
|
+
};
|
|
12
|
+
export declare function mapToExpressionPos(token: TemplateToken, position: Position): ExpressionPos | undefined;
|
|
13
|
+
//# sourceMappingURL=expression-pos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-pos.d.ts","sourceRoot":"","sources":["../../src/expression-hover/expression-pos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,4BAA4B,CAAC;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,0DAA0D,CAAC;AAEvF,OAAO,EAAC,QAAQ,EAAE,KAAK,IAAI,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAI/E,MAAM,MAAM,aAAa,GAAG;IAC1B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IAEnB,sDAAsD;IACtD,QAAQ,EAAE,GAAG,CAAC;IAEd,8CAA8C;IAC9C,aAAa,EAAE,QAAQ,CAAC;CACzB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,CAyCtG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isBasicExpression } from "@actions/workflow-parser/templates/tokens/type-guards";
|
|
2
|
+
import { mapRange } from "../utils/range";
|
|
3
|
+
import { posWithinRange } from "./pos-range";
|
|
4
|
+
export function mapToExpressionPos(token, position) {
|
|
5
|
+
const pos = {
|
|
6
|
+
line: position.line + 1,
|
|
7
|
+
column: position.character + 1
|
|
8
|
+
};
|
|
9
|
+
if (!isBasicExpression(token)) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
if (token.originalExpressions?.length) {
|
|
13
|
+
for (const originalExp of token.originalExpressions) {
|
|
14
|
+
// Find the original expression that contains the position
|
|
15
|
+
if (originalExp.expressionRange && posWithinRange(pos, originalExp.expressionRange)) {
|
|
16
|
+
const exprRange = mapRange(originalExp.expressionRange);
|
|
17
|
+
return {
|
|
18
|
+
expression: originalExp.expression,
|
|
19
|
+
// Adjust the position to point into the expression
|
|
20
|
+
position: {
|
|
21
|
+
line: pos.line - exprRange.start.line - 1,
|
|
22
|
+
column: pos.column - exprRange.start.character - 1
|
|
23
|
+
},
|
|
24
|
+
documentRange: exprRange
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const exprRange = mapRange(token.expressionRange);
|
|
31
|
+
return {
|
|
32
|
+
expression: token.expression,
|
|
33
|
+
// Adjust the position to point into the expression
|
|
34
|
+
position: {
|
|
35
|
+
line: pos.line - exprRange.start.line - 1,
|
|
36
|
+
column: pos.column - exprRange.start.character - 1
|
|
37
|
+
},
|
|
38
|
+
documentRange: exprRange
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=expression-pos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-pos.js","sourceRoot":"","sources":["../../src/expression-hover/expression-pos.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uDAAuD,CAAC;AAExF,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAa3C,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,QAAkB;IACzE,MAAM,GAAG,GAAQ;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC;QACvB,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC;KAC/B,CAAC;IAEF,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC7B,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE;QACrC,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,mBAAmB,EAAE;YACnD,0DAA0D;YAC1D,IAAI,WAAW,CAAC,eAAe,IAAI,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,eAAe,CAAC,EAAE;gBACnF,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAExD,OAAO;oBACL,UAAU,EAAE,WAAW,CAAC,UAAU;oBAClC,mDAAmD;oBACnD,QAAQ,EAAE;wBACR,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;wBACzC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;qBACnD;oBACD,aAAa,EAAE,SAAS;iBACzB,CAAC;aACH;SACF;QAED,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,mDAAmD;QACnD,QAAQ,EAAE;YACR,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;YACzC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;SACnD;QACD,aAAa,EAAE,SAAS;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pos-range.d.ts","sourceRoot":"","sources":["../../src/expression-hover/pos-range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,4BAA4B,CAAC;AAEtD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAO9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pos-range.js","sourceRoot":"","sources":["../../src/expression-hover/pos-range.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,GAAQ,EAAE,KAAY;IACnD,OAAO,CACL,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI;QAC5B,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI;QAC1B,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM;QAChC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { Binary, ContextAccess, Expr, ExprVisitor, FunctionCall, Grouping, IndexAccess, Logical, Unary } from "@actions/expressions/ast";
|
|
3
|
+
import { FunctionDefinition } from "@actions/expressions/funcs/info";
|
|
4
|
+
import { Pos, Range } from "@actions/expressions/lexer";
|
|
5
|
+
export type HoverResult = undefined | {
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
function: boolean;
|
|
9
|
+
range: Range;
|
|
10
|
+
};
|
|
11
|
+
export declare class HoverVisitor implements ExprVisitor<HoverResult> {
|
|
12
|
+
private pos;
|
|
13
|
+
private context;
|
|
14
|
+
private functions;
|
|
15
|
+
private ignorePosCheck;
|
|
16
|
+
constructor(pos: Pos, context: DescriptionDictionary, functions: Map<string, FunctionDefinition>);
|
|
17
|
+
hover(n: Expr): HoverResult;
|
|
18
|
+
visitLiteral(): HoverResult;
|
|
19
|
+
visitUnary(unary: Unary): HoverResult;
|
|
20
|
+
visitBinary(binary: Binary): HoverResult;
|
|
21
|
+
visitLogical(logical: Logical): HoverResult;
|
|
22
|
+
visitGrouping(grouping: Grouping): HoverResult;
|
|
23
|
+
visitContextAccess(contextAccess: ContextAccess): HoverResult;
|
|
24
|
+
visitIndexAccess(indexAccess: IndexAccess): HoverResult;
|
|
25
|
+
visitFunctionCall(functionCall: FunctionCall): HoverResult;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=visitor.d.ts.map
|