@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 @@
|
|
|
1
|
+
{"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../src/expression-hover/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAyD,MAAM,sBAAsB,CAAC;AACnH,OAAO,EACL,MAAM,EACN,aAAa,EACb,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EAEX,OAAO,EACP,KAAK,EACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,4BAA4B,CAAC;AAGtD,MAAM,MAAM,WAAW,GACnB,SAAS,GACT;IACE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEN,qBAAa,YAAa,YAAW,WAAW,CAAC,WAAW,CAAC;IAIzD,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,cAAc,CAAS;gBAGrB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAGpD,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW;IAI3B,YAAY,IAAI,WAAW;IAI3B,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW;IAIrC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAIxC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW;IAW3C,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW;IAI9C,kBAAkB,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW;IAe7D,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW;IAwDvD,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW;CAsB3D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Evaluator, isDescriptionDictionary, wellKnownFunctions } from "@actions/expressions";
|
|
2
|
+
import { Literal } from "@actions/expressions/ast";
|
|
3
|
+
import { posWithinRange } from "./pos-range";
|
|
4
|
+
export class HoverVisitor {
|
|
5
|
+
constructor(pos, context, functions) {
|
|
6
|
+
this.pos = pos;
|
|
7
|
+
this.context = context;
|
|
8
|
+
this.functions = functions;
|
|
9
|
+
this.ignorePosCheck = false;
|
|
10
|
+
}
|
|
11
|
+
hover(n) {
|
|
12
|
+
return n.accept(this);
|
|
13
|
+
}
|
|
14
|
+
visitLiteral() {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
visitUnary(unary) {
|
|
18
|
+
return this.hover(unary.expr);
|
|
19
|
+
}
|
|
20
|
+
visitBinary(binary) {
|
|
21
|
+
return this.hover(binary.left) || this.hover(binary.right);
|
|
22
|
+
}
|
|
23
|
+
visitLogical(logical) {
|
|
24
|
+
for (const arg of logical.args) {
|
|
25
|
+
const result = this.hover(arg);
|
|
26
|
+
if (result) {
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
visitGrouping(grouping) {
|
|
33
|
+
return this.hover(grouping.group);
|
|
34
|
+
}
|
|
35
|
+
visitContextAccess(contextAccess) {
|
|
36
|
+
if (this.ignorePosCheck || posWithinRange(this.pos, contextAccess.name.range)) {
|
|
37
|
+
const contextName = contextAccess.name.lexeme;
|
|
38
|
+
return {
|
|
39
|
+
label: contextName,
|
|
40
|
+
description: this.context.getDescription(contextName),
|
|
41
|
+
function: false,
|
|
42
|
+
range: contextAccess.name.range
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
visitIndexAccess(indexAccess) {
|
|
48
|
+
// Is the position within the index, so for example:
|
|
49
|
+
// github.event.test
|
|
50
|
+
// ^ - pos
|
|
51
|
+
if (!(indexAccess.index instanceof Literal)) {
|
|
52
|
+
// No support for context access of the form github[github.event]
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
if (!posWithinRange(this.pos, indexAccess.index.token.range)) {
|
|
56
|
+
// Try to get hover from the rest of the expression
|
|
57
|
+
return this.hover(indexAccess.expr);
|
|
58
|
+
}
|
|
59
|
+
const ev = new Evaluator(indexAccess.expr, this.context, this.functions);
|
|
60
|
+
const result = ev.evaluate();
|
|
61
|
+
if (!isDescriptionDictionary(result)) {
|
|
62
|
+
// No description to show
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const key = indexAccess.index.literal.coerceString();
|
|
66
|
+
const description = result.getDescription(key);
|
|
67
|
+
if (!description) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
// Calculate context access range for whole expression. For example:
|
|
71
|
+
// github.event.test
|
|
72
|
+
// ^ - pos
|
|
73
|
+
// should return the range:
|
|
74
|
+
// github.event.test
|
|
75
|
+
// ^^^^^^^^^^^^
|
|
76
|
+
this.ignorePosCheck = true;
|
|
77
|
+
try {
|
|
78
|
+
const contextHover = this.hover(indexAccess.expr);
|
|
79
|
+
if (!contextHover) {
|
|
80
|
+
throw new Error("Expected context hover to be defined");
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
label: key,
|
|
84
|
+
description: description,
|
|
85
|
+
function: false,
|
|
86
|
+
range: {
|
|
87
|
+
start: contextHover.range.start,
|
|
88
|
+
end: indexAccess.index.token.range.end
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
this.ignorePosCheck = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
visitFunctionCall(functionCall) {
|
|
97
|
+
if (posWithinRange(this.pos, functionCall.functionName.range)) {
|
|
98
|
+
const functionName = functionCall.functionName.lexeme.toLowerCase();
|
|
99
|
+
const f = this.functions.get(functionName) || wellKnownFunctions[functionName];
|
|
100
|
+
return {
|
|
101
|
+
label: f.name,
|
|
102
|
+
description: f.description,
|
|
103
|
+
function: true,
|
|
104
|
+
range: functionCall.functionName.range
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
for (const args of functionCall.args) {
|
|
108
|
+
const result = this.hover(args);
|
|
109
|
+
if (result) {
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/expression-hover/visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { data } from "@actions/expressions";
|
|
2
|
+
import { ExpressionData, Pair } from "@actions/expressions/data/expressiondata";
|
|
3
|
+
export declare class AccessError extends Error {
|
|
4
|
+
readonly keyName: string;
|
|
5
|
+
constructor(message: string, keyName: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class ErrorDictionary extends data.Dictionary {
|
|
8
|
+
constructor(...pairs: Pair[]);
|
|
9
|
+
complete: boolean;
|
|
10
|
+
get(key: string): ExpressionData | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare function wrapDictionary(d: data.Dictionary): ErrorDictionary;
|
|
13
|
+
//# sourceMappingURL=error-dictionary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-dictionary.d.ts","sourceRoot":"","sources":["../../src/expression-validation/error-dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAA0B,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAC,cAAc,EAAE,IAAI,EAAC,MAAM,0CAA0C,CAAC;AAE9E,qBAAa,WAAY,SAAQ,KAAK;aACS,OAAO,EAAE,MAAM;gBAAhD,OAAO,EAAE,MAAM,EAAkB,OAAO,EAAE,MAAM;CAG7D;AAED,qBAAa,eAAgB,SAAQ,IAAI,CAAC,UAAU;gBACtC,GAAG,KAAK,EAAE,IAAI,EAAE;IAGrB,QAAQ,UAAQ;IAEvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;CAU7C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,eAAe,CAelE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { data, isDescriptionDictionary } from "@actions/expressions";
|
|
2
|
+
import { isDictionary } from "@actions/expressions/data/dictionary";
|
|
3
|
+
export class AccessError extends Error {
|
|
4
|
+
constructor(message, keyName) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.keyName = keyName;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class ErrorDictionary extends data.Dictionary {
|
|
10
|
+
constructor(...pairs) {
|
|
11
|
+
super(...pairs);
|
|
12
|
+
this.complete = true;
|
|
13
|
+
}
|
|
14
|
+
get(key) {
|
|
15
|
+
const value = super.get(key);
|
|
16
|
+
if (value) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
if (this.complete) {
|
|
20
|
+
throw new AccessError(`Invalid context access: ${key}`, key);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function wrapDictionary(d) {
|
|
25
|
+
const e = new ErrorDictionary();
|
|
26
|
+
if (isDescriptionDictionary(d)) {
|
|
27
|
+
e.complete = d.complete;
|
|
28
|
+
}
|
|
29
|
+
for (const { key, value } of d.pairs()) {
|
|
30
|
+
if (isDictionary(value)) {
|
|
31
|
+
e.add(key, wrapDictionary(value));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
e.add(key, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return e;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=error-dictionary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-dictionary.js","sourceRoot":"","sources":["../../src/expression-validation/error-dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,sCAAsC,CAAC;AAGlE,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe,EAAkB,OAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,YAAO,GAAP,OAAO,CAAQ;IAE5D,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,IAAI,CAAC,UAAU;IAClD,YAAY,GAAG,KAAa;QAC1B,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QAEX,aAAQ,GAAG,IAAI,CAAC;IADvB,CAAC;IAGD,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,WAAW,CAAC,2BAA2B,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;SAC9D;IACH,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,CAAkB;IAC/C,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;IAChC,IAAI,uBAAuB,CAAC,CAAC,CAAC,EAAE;QAC9B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;KACzB;IAED,KAAK,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACpC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;YACvB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;SACnC;aAAM;YACL,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACnB;KACF;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { data } from "@actions/expressions";
|
|
2
|
+
export declare const validatorFunctions: Map<string, {
|
|
3
|
+
call: () => data.Dictionary;
|
|
4
|
+
name: string;
|
|
5
|
+
description?: string | undefined;
|
|
6
|
+
minArgs: number;
|
|
7
|
+
maxArgs: number;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/expression-validation/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAqB,MAAM,sBAAsB,CAAC;AAK9D,eAAO,MAAM,kBAAkB;;;;;;EAO9B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { data, wellKnownFunctions } from "@actions/expressions";
|
|
2
|
+
// Custom implementations for standard actions-expression functions used during validation and auto-completion.
|
|
3
|
+
// For example, for fromJson we'll most likely not have a valid input. In order to not throw, we'll always
|
|
4
|
+
// return an empty dictionary.
|
|
5
|
+
export const validatorFunctions = new Map(Object.entries({
|
|
6
|
+
fromjson: {
|
|
7
|
+
...wellKnownFunctions.fromjson,
|
|
8
|
+
call: () => new data.Dictionary()
|
|
9
|
+
}
|
|
10
|
+
}));
|
|
11
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/expression-validation/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAE9D,+GAA+G;AAC/G,0GAA0G;AAC1G,8BAA8B;AAC9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CACvC,MAAM,CAAC,OAAO,CAAC;IACb,QAAQ,EAAE;QACR,GAAG,kBAAkB,CAAC,QAAQ;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;KAClC;CACF,CAAC,CACH,CAAC"}
|
package/dist/hover.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TemplateToken } from "@actions/workflow-parser/templates/tokens/template-token";
|
|
2
|
+
import { FileProvider } from "@actions/workflow-parser/workflows/file-provider";
|
|
3
|
+
import { Position, TextDocument } from "vscode-languageserver-textdocument";
|
|
4
|
+
import { Hover } from "vscode-languageserver-types";
|
|
5
|
+
import { ContextProviderConfig } from "./context-providers/config";
|
|
6
|
+
import { WorkflowContext } from "./context/workflow-context";
|
|
7
|
+
export type HoverConfig = {
|
|
8
|
+
descriptionProvider?: DescriptionProvider;
|
|
9
|
+
contextProviderConfig?: ContextProviderConfig;
|
|
10
|
+
fileProvider?: FileProvider;
|
|
11
|
+
};
|
|
12
|
+
export type DescriptionProvider = {
|
|
13
|
+
getDescription(context: WorkflowContext, token: TemplateToken, path: TemplateToken[]): Promise<string | undefined>;
|
|
14
|
+
};
|
|
15
|
+
export declare function hover(document: TextDocument, position: Position, config?: HoverConfig): Promise<Hover | null>;
|
|
16
|
+
//# sourceMappingURL=hover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../src/hover.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,aAAa,EAAC,MAAM,0DAA0D,CAAC;AAGvF,OAAO,EAAC,YAAY,EAAC,MAAM,kDAAkD,CAAC;AAC9E,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAC,KAAK,EAAC,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAqB,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAa/E,MAAM,MAAM,WAAW,GAAG;IACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACpH,CAAC;AAEF,wBAAsB,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CA+EnH"}
|
package/dist/hover.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { data, Parser } from "@actions/expressions";
|
|
2
|
+
import { Lexer } from "@actions/expressions/lexer";
|
|
3
|
+
import { ErrorPolicy } from "@actions/workflow-parser/model/convert";
|
|
4
|
+
import { getCronDescription } from "@actions/workflow-parser/model/converter/cron";
|
|
5
|
+
import { splitAllowedContext } from "@actions/workflow-parser/templates/allowed-context";
|
|
6
|
+
import { isBasicExpression, isString } from "@actions/workflow-parser/templates/tokens/type-guards";
|
|
7
|
+
import { getContext, Mode } from "./context-providers/default";
|
|
8
|
+
import { getFunctionDescription } from "./context-providers/descriptions";
|
|
9
|
+
import { getWorkflowContext } from "./context/workflow-context";
|
|
10
|
+
import { getReusableWorkflowInputDescription, isReusableWorkflowJobInput } from "./description-providers/reusable-job-inputs";
|
|
11
|
+
import { mapToExpressionPos } from "./expression-hover/expression-pos";
|
|
12
|
+
import { HoverVisitor } from "./expression-hover/visitor";
|
|
13
|
+
import { info } from "./log";
|
|
14
|
+
import { isPotentiallyExpression } from "./utils/expression-detection";
|
|
15
|
+
import { findToken } from "./utils/find-token";
|
|
16
|
+
import { mapRange } from "./utils/range";
|
|
17
|
+
import { fetchOrConvertWorkflowTemplate, fetchOrParseWorkflow } from "./utils/workflow-cache";
|
|
18
|
+
export async function hover(document, position, config) {
|
|
19
|
+
const file = {
|
|
20
|
+
name: document.uri,
|
|
21
|
+
content: document.getText()
|
|
22
|
+
};
|
|
23
|
+
const parsedWorkflow = fetchOrParseWorkflow(file, document.uri);
|
|
24
|
+
if (!parsedWorkflow?.value) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const template = await fetchOrConvertWorkflowTemplate(parsedWorkflow.context, parsedWorkflow.value, document.uri, config, {
|
|
28
|
+
errorPolicy: ErrorPolicy.TryConversion,
|
|
29
|
+
fetchReusableWorkflowDepth: config?.fileProvider ? 1 : 0
|
|
30
|
+
});
|
|
31
|
+
const tokenResult = findToken(position, parsedWorkflow.value);
|
|
32
|
+
const { token, keyToken, parent } = tokenResult;
|
|
33
|
+
const tokenDefinitionInfo = (keyToken || parent || token)?.definitionInfo;
|
|
34
|
+
const workflowContext = getWorkflowContext(document.uri, template, tokenResult.path);
|
|
35
|
+
if (token && tokenDefinitionInfo) {
|
|
36
|
+
if (isBasicExpression(token) || isPotentiallyExpression(token)) {
|
|
37
|
+
info(`Calculating expression hover for token with definition ${tokenDefinitionInfo.definition.key}`);
|
|
38
|
+
const allowedContext = tokenDefinitionInfo.allowedContext || [];
|
|
39
|
+
const { namedContexts, functions } = splitAllowedContext(allowedContext);
|
|
40
|
+
const context = await getContext(namedContexts, config?.contextProviderConfig, workflowContext, Mode.Completion);
|
|
41
|
+
for (const func of functions) {
|
|
42
|
+
func.description = getFunctionDescription(func.name);
|
|
43
|
+
}
|
|
44
|
+
const exprPos = mapToExpressionPos(token, position);
|
|
45
|
+
if (exprPos) {
|
|
46
|
+
return expressionHover(exprPos, context, namedContexts, functions);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (!token?.definition) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
info(`Calculating hover for token with definition ${token.definition.key}`);
|
|
54
|
+
if (tokenResult.parent && isCronMappingValue(tokenResult)) {
|
|
55
|
+
const tokenValue = token.value;
|
|
56
|
+
const description = getCronDescription(tokenValue);
|
|
57
|
+
if (description) {
|
|
58
|
+
return {
|
|
59
|
+
contents: description,
|
|
60
|
+
range: mapRange(token.range)
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (tokenResult.parent && isReusableWorkflowJobInput(tokenResult)) {
|
|
65
|
+
let description = getReusableWorkflowInputDescription(workflowContext, tokenResult);
|
|
66
|
+
description = appendContext(description, token.definitionInfo?.allowedContext);
|
|
67
|
+
return {
|
|
68
|
+
contents: description,
|
|
69
|
+
range: mapRange(token.range)
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
let description = await getDescription(config, workflowContext, token, tokenResult.path);
|
|
73
|
+
description = appendContext(description, token.definitionInfo?.allowedContext);
|
|
74
|
+
return {
|
|
75
|
+
contents: description,
|
|
76
|
+
range: mapRange(token.range)
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function appendContext(description, allowedContext) {
|
|
80
|
+
if (!allowedContext || allowedContext.length == 0) {
|
|
81
|
+
return description;
|
|
82
|
+
}
|
|
83
|
+
const { namedContexts, functions } = splitAllowedContext(allowedContext);
|
|
84
|
+
let namedContextsString = "";
|
|
85
|
+
let functionsString = "";
|
|
86
|
+
if (namedContexts.length > 0) {
|
|
87
|
+
namedContextsString = `${description.length > 0 ? `\n\n` : ""}Available expression contexts: ${namedContexts
|
|
88
|
+
.map(x => `\`${x}\``)
|
|
89
|
+
.join(", ")}`;
|
|
90
|
+
}
|
|
91
|
+
if (functions.length > 0) {
|
|
92
|
+
functionsString = `${namedContexts.length > 0 ? `\n\n` : ""}Available expression functions: ${functions
|
|
93
|
+
.map(x => x.name)
|
|
94
|
+
.map(x => `\`${x}\``)
|
|
95
|
+
.join(", ")}`;
|
|
96
|
+
}
|
|
97
|
+
return `${description}${namedContextsString}${functionsString}`;
|
|
98
|
+
}
|
|
99
|
+
async function getDescription(config, workflowContext, token, path) {
|
|
100
|
+
const defaultDescription = token.description || "";
|
|
101
|
+
if (!config?.descriptionProvider) {
|
|
102
|
+
return defaultDescription;
|
|
103
|
+
}
|
|
104
|
+
const description = await config.descriptionProvider.getDescription(workflowContext, token, path);
|
|
105
|
+
return description || defaultDescription;
|
|
106
|
+
}
|
|
107
|
+
function isCronMappingValue(tokenResult) {
|
|
108
|
+
return (tokenResult.parent?.definition?.key === "cron-mapping" &&
|
|
109
|
+
!!tokenResult.token &&
|
|
110
|
+
isString(tokenResult.token) &&
|
|
111
|
+
tokenResult.token.value !== "cron");
|
|
112
|
+
}
|
|
113
|
+
function expressionHover(exprPos, context, namedContexts, functions) {
|
|
114
|
+
const { expression, position, documentRange } = exprPos;
|
|
115
|
+
try {
|
|
116
|
+
const l = new Lexer(expression);
|
|
117
|
+
const lr = l.lex();
|
|
118
|
+
const p = new Parser(lr.tokens, namedContexts, functions);
|
|
119
|
+
const expr = p.parse();
|
|
120
|
+
const functionMap = new Map();
|
|
121
|
+
for (const func of functions) {
|
|
122
|
+
functionMap.set(func.name.toLowerCase(), {
|
|
123
|
+
...func,
|
|
124
|
+
call: () => new data.Null()
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const hv = new HoverVisitor(position, context, functionMap);
|
|
128
|
+
const hoverResult = hv.hover(expr);
|
|
129
|
+
if (!hoverResult) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const exprRange = hoverResult.range;
|
|
133
|
+
return {
|
|
134
|
+
contents: hoverResult?.description || hoverResult?.label,
|
|
135
|
+
// Map the expression range back to a document range
|
|
136
|
+
range: {
|
|
137
|
+
start: {
|
|
138
|
+
line: documentRange.start.line + exprRange.start.line,
|
|
139
|
+
character: documentRange.start.character + exprRange.start.column
|
|
140
|
+
},
|
|
141
|
+
end: {
|
|
142
|
+
line: documentRange.start.line + exprRange.end.line,
|
|
143
|
+
character: documentRange.start.character + exprRange.end.column
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
// Hovering over an invalid expression should not cause an error here
|
|
150
|
+
info(`Encountered error trying to calculate expression hover: ${e.message}`);
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../src/hover.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { complete } from "./complete";
|
|
2
|
+
export { ContextProviderConfig } from "./context-providers/config";
|
|
3
|
+
export { documentLinks } from "./document-links";
|
|
4
|
+
export { hover } from "./hover";
|
|
5
|
+
export { Logger, LogLevel, registerLogger, setLogLevel } from "./log";
|
|
6
|
+
export { validate, ValidationConfig } from "./validate";
|
|
7
|
+
export { ValueProviderConfig, ValueProviderKind } from "./value-providers/config";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,OAAO,CAAC;AACpE,OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAC;AACtD,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { complete } from "./complete";
|
|
2
|
+
export { documentLinks } from "./document-links";
|
|
3
|
+
export { hover } from "./hover";
|
|
4
|
+
export { LogLevel, registerLogger, setLogLevel } from "./log";
|
|
5
|
+
export { validate } from "./validate";
|
|
6
|
+
export { ValueProviderKind } from "./value-providers/config";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAS,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAC,MAAM,OAAO,CAAC;AACpE,OAAO,EAAC,QAAQ,EAAmB,MAAM,YAAY,CAAC;AACtD,OAAO,EAAsB,iBAAiB,EAAC,MAAM,0BAA0B,CAAC"}
|
package/dist/log.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
Debug = 0,
|
|
3
|
+
Info = 1,
|
|
4
|
+
Warn = 2,
|
|
5
|
+
Error = 3
|
|
6
|
+
}
|
|
7
|
+
export interface Logger {
|
|
8
|
+
/**
|
|
9
|
+
* Show an error message.
|
|
10
|
+
*
|
|
11
|
+
* @param message The message to show.
|
|
12
|
+
*/
|
|
13
|
+
error(message: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Show a warning message.
|
|
16
|
+
*
|
|
17
|
+
* @param message The message to show.
|
|
18
|
+
*/
|
|
19
|
+
warn(message: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Show an information message.
|
|
22
|
+
*
|
|
23
|
+
* @param message The message to show.
|
|
24
|
+
*/
|
|
25
|
+
info(message: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Log a message.
|
|
28
|
+
*
|
|
29
|
+
* @param message The message to log.
|
|
30
|
+
*/
|
|
31
|
+
log(message: string): void;
|
|
32
|
+
}
|
|
33
|
+
export declare function registerLogger(l: Logger): void;
|
|
34
|
+
export declare function setLogLevel(ll: LogLevel): void;
|
|
35
|
+
export declare function log(message: string): void;
|
|
36
|
+
export declare function info(message: string): void;
|
|
37
|
+
export declare function warn(message: string): void;
|
|
38
|
+
export declare function error(message: string): void;
|
|
39
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAKD,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,QAEvC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,QAEvC;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQzC;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ1C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ1C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ3C"}
|
package/dist/log.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export var LogLevel;
|
|
2
|
+
(function (LogLevel) {
|
|
3
|
+
LogLevel[LogLevel["Debug"] = 0] = "Debug";
|
|
4
|
+
LogLevel[LogLevel["Info"] = 1] = "Info";
|
|
5
|
+
LogLevel[LogLevel["Warn"] = 2] = "Warn";
|
|
6
|
+
LogLevel[LogLevel["Error"] = 3] = "Error";
|
|
7
|
+
})(LogLevel || (LogLevel = {}));
|
|
8
|
+
const loggers = [];
|
|
9
|
+
let logLevel = LogLevel.Warn;
|
|
10
|
+
export function registerLogger(l) {
|
|
11
|
+
loggers.push(l);
|
|
12
|
+
}
|
|
13
|
+
export function setLogLevel(ll) {
|
|
14
|
+
logLevel = ll;
|
|
15
|
+
}
|
|
16
|
+
export function log(message) {
|
|
17
|
+
if (logLevel > LogLevel.Debug) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
for (const l of loggers) {
|
|
21
|
+
l.log(message);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function info(message) {
|
|
25
|
+
if (logLevel > LogLevel.Info) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
for (const l of loggers) {
|
|
29
|
+
l.info(message);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function warn(message) {
|
|
33
|
+
if (logLevel > LogLevel.Warn) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const l of loggers) {
|
|
37
|
+
l.warn(message);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function error(message) {
|
|
41
|
+
if (logLevel > LogLevel.Error) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
for (const l of loggers) {
|
|
45
|
+
l.error(message);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=log.js.map
|
package/dist/log.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,OAAO,GAAa,EAAE,CAAC;AAC7B,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;AA6B7B,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAY;IACtC,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE;QAC7B,OAAO;KACR;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAChB;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE;QAC5B,OAAO;KACR;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjB;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE;QAC5B,OAAO;KACR;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjB;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE;QAC7B,OAAO;KACR;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAClB;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nulltrace.d.ts","sourceRoot":"","sources":["../src/nulltrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,iDAAiD,CAAC;AAEvF,eAAO,MAAM,SAAS,wBAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nulltrace.js","sourceRoot":"","sources":["../src/nulltrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,iDAAiD,CAAC;AAEvF,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-detection.d.ts","sourceRoot":"","sources":["../../src/utils/expression-detection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAE9E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAKrE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { isString } from "@actions/workflow-parser";
|
|
2
|
+
import { DefinitionType } from "@actions/workflow-parser/templates/schema/definition-type";
|
|
3
|
+
import { OPEN_EXPRESSION } from "@actions/workflow-parser/templates/template-constants";
|
|
4
|
+
export function isPotentiallyExpression(token) {
|
|
5
|
+
const isAlwaysExpression = token.definition?.definitionType === DefinitionType.String && token.definition.isExpression;
|
|
6
|
+
const containsExpression = isString(token) && token.value != null && token.value.indexOf(OPEN_EXPRESSION) >= 0;
|
|
7
|
+
return isAlwaysExpression || containsExpression;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=expression-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-detection.js","sourceRoot":"","sources":["../../src/utils/expression-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,2DAA2D,CAAC;AAEzF,OAAO,EAAC,eAAe,EAAC,MAAM,uDAAuD,CAAC;AAGtF,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,MAAM,kBAAkB,GACtB,KAAK,CAAC,UAAU,EAAE,cAAc,KAAK,cAAc,CAAC,MAAM,IAAK,KAAK,CAAC,UAA+B,CAAC,YAAY,CAAC;IACpH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/G,OAAO,kBAAkB,IAAI,kBAAkB,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TemplateToken } from "@actions/workflow-parser/templates/tokens/index";
|
|
2
|
+
import { Position } from "vscode-languageserver-textdocument";
|
|
3
|
+
export declare function findInnerToken(pos: Position, root?: TemplateToken): TemplateToken | null;
|
|
4
|
+
export type TokenResult = {
|
|
5
|
+
parent: TemplateToken | null;
|
|
6
|
+
keyToken: TemplateToken | null;
|
|
7
|
+
token: TemplateToken | null;
|
|
8
|
+
path: TemplateToken[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Find a token at the given position in the document.
|
|
12
|
+
*
|
|
13
|
+
* If the position is within
|
|
14
|
+
* - the key of a mapping, parent will be the mapping, keyToken will be null, and token will be the key.
|
|
15
|
+
* - the value of a mapping, parent will be the mapping, keyToken will be the key for the value, and token will be the value
|
|
16
|
+
* - a sequence item, parent will be the sequence, keyToken will be null, and token will be the item
|
|
17
|
+
*
|
|
18
|
+
* @param pos Position within the document for which to find a token
|
|
19
|
+
* @param root Root node
|
|
20
|
+
* @returns Token result
|
|
21
|
+
*/
|
|
22
|
+
export declare function findToken(pos: Position, root?: TemplateToken): TokenResult;
|
|
23
|
+
//# sourceMappingURL=find-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-token.d.ts","sourceRoot":"","sources":["../../src/utils/find-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAI9E,OAAO,EAAC,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAE5D,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,wBAGjE;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAE5B,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,WAAW,CAmG1E"}
|