@typespec/compiler 1.2.0-dev.6 → 1.2.0-dev.7
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/dist/manifest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-interpolation.d.ts","sourceRoot":"","sources":["../../../src/config/config-interpolation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAY,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAIL,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,mBAAmB,GACjC,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"config-interpolation.d.ts","sourceRoot":"","sources":["../../../src/config/config-interpolation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAY,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAIL,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,mBAAmB,GACjC,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC,CA6BzC;AAsCD,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,MAAM,EAAE,CAAC,EACT,mBAAmB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GACxE,CAAC,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC,CAwD5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createDiagnosticCollector
|
|
1
|
+
import { createDiagnosticCollector } from "../core/diagnostics.js";
|
|
2
2
|
import { createDiagnostic } from "../core/messages.js";
|
|
3
3
|
import { NoTarget } from "../core/types.js";
|
|
4
4
|
export function expandConfigVariables(config, expandOptions) {
|
|
@@ -7,44 +7,35 @@ export function expandConfigVariables(config, expandOptions) {
|
|
|
7
7
|
"project-root": config.projectRoot,
|
|
8
8
|
cwd: expandOptions.cwd,
|
|
9
9
|
};
|
|
10
|
-
const resolvedArgsParameters = diagnostics.pipe(resolveArgs(config.parameters, expandOptions.args
|
|
10
|
+
const resolvedArgsParameters = diagnostics.pipe(resolveArgs(config.parameters, expandOptions.args));
|
|
11
11
|
const commonVars = {
|
|
12
12
|
...builtInVars,
|
|
13
13
|
...resolvedArgsParameters,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
env: diagnostics.pipe(resolveArgs(config.environmentVariables, expandOptions.env, true)),
|
|
15
|
+
"output-dir": expandOptions.outputDir ?? config.outputDir ?? "{cwd}/tsp-output",
|
|
16
16
|
};
|
|
17
|
-
const
|
|
17
|
+
const resolvedCommonVars = diagnostics.pipe(resolveValues(commonVars));
|
|
18
|
+
const outputDir = resolvedCommonVars["output-dir"];
|
|
18
19
|
const result = { ...config, outputDir };
|
|
19
20
|
if (config.options) {
|
|
20
21
|
const options = {};
|
|
21
22
|
for (const [name, emitterOptions] of Object.entries(config.options)) {
|
|
22
|
-
const emitterVars = { ...
|
|
23
|
+
const emitterVars = { ...resolvedCommonVars, "output-dir": outputDir, "emitter-name": name };
|
|
23
24
|
options[name] = diagnostics.pipe(resolveValues(emitterOptions, emitterVars));
|
|
24
25
|
}
|
|
25
26
|
result.options = options;
|
|
26
27
|
}
|
|
27
28
|
return diagnostics.wrap(result);
|
|
28
29
|
}
|
|
29
|
-
function resolveArgs(declarations, args,
|
|
30
|
-
function tryGetValue(value) {
|
|
31
|
-
return typeof value === "string" ? value : undefined;
|
|
32
|
-
}
|
|
30
|
+
function resolveArgs(declarations, args, allowUnspecified = false) {
|
|
33
31
|
const unmatchedArgs = new Set(Object.keys(args ?? {}));
|
|
34
32
|
const result = {};
|
|
35
|
-
|
|
36
|
-
for (const [
|
|
37
|
-
const name = parentName ? `${parentName}.${declarationName}` : declarationName;
|
|
38
|
-
if (hasNestedValues(definition)) {
|
|
39
|
-
resolveNestedArgs(name, Object.entries(definition ?? {}));
|
|
40
|
-
}
|
|
33
|
+
if (declarations !== undefined) {
|
|
34
|
+
for (const [name, definition] of Object.entries(declarations)) {
|
|
41
35
|
unmatchedArgs.delete(name);
|
|
42
|
-
result[name] =
|
|
36
|
+
result[name] = args?.[name] ?? definition.default;
|
|
43
37
|
}
|
|
44
38
|
}
|
|
45
|
-
if (declarations !== undefined) {
|
|
46
|
-
resolveNestedArgs("", Object.entries(declarations ?? {}));
|
|
47
|
-
}
|
|
48
39
|
if (!allowUnspecified) {
|
|
49
40
|
const diagnostics = [...unmatchedArgs].map((unmatchedArg) => {
|
|
50
41
|
return createDiagnostic({
|
|
@@ -61,38 +52,37 @@ function hasNestedValues(value) {
|
|
|
61
52
|
return (value && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length > 0);
|
|
62
53
|
}
|
|
63
54
|
const VariableInterpolationRegex = /{([a-zA-Z-_.]+)}/g;
|
|
64
|
-
function resolveValue(value, predefinedVariables) {
|
|
65
|
-
const [result, diagnostics] = resolveValues({ value }, predefinedVariables);
|
|
66
|
-
return [result.value, diagnostics];
|
|
67
|
-
}
|
|
68
55
|
export function resolveValues(values, predefinedVariables = {}) {
|
|
69
56
|
const diagnostics = [];
|
|
70
57
|
const resolvedValues = {};
|
|
71
58
|
const resolvingValues = new Set();
|
|
59
|
+
function resolveValuePath(obj, path) {
|
|
60
|
+
return path.reduce((acc, key) => (acc && typeof acc === "object" ? acc[key] : undefined), obj);
|
|
61
|
+
}
|
|
72
62
|
function resolveValue(keys) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
value =
|
|
63
|
+
const keyPath = keys.join(".");
|
|
64
|
+
resolvingValues.add(keyPath);
|
|
65
|
+
let value = resolveValuePath(values, keys);
|
|
76
66
|
if (typeof value !== "string") {
|
|
77
67
|
if (hasNestedValues(value)) {
|
|
78
68
|
value = value;
|
|
79
69
|
const resultObject = {};
|
|
80
70
|
for (const [nestedKey] of Object.entries(value)) {
|
|
81
|
-
resolvingValues.add(nestedKey);
|
|
82
71
|
resultObject[nestedKey] = resolveValue(keys.concat(nestedKey));
|
|
83
72
|
}
|
|
73
|
+
resolvingValues.delete(keyPath);
|
|
84
74
|
return resultObject;
|
|
85
75
|
}
|
|
76
|
+
resolvingValues.delete(keyPath);
|
|
86
77
|
return value;
|
|
87
78
|
}
|
|
88
|
-
|
|
79
|
+
const replaced = value.replace(VariableInterpolationRegex, (_, expression) => {
|
|
89
80
|
return resolveExpression(expression) ?? `{${expression}}`;
|
|
90
81
|
});
|
|
82
|
+
resolvingValues.delete(keyPath);
|
|
83
|
+
return replaced;
|
|
91
84
|
}
|
|
92
85
|
function resolveExpression(expression) {
|
|
93
|
-
if (expression in resolvedValues) {
|
|
94
|
-
return resolvedValues[expression];
|
|
95
|
-
}
|
|
96
86
|
if (resolvingValues.has(expression)) {
|
|
97
87
|
diagnostics.push(createDiagnostic({
|
|
98
88
|
code: "config-circular-variable",
|
|
@@ -101,29 +91,10 @@ export function resolveValues(values, predefinedVariables = {}) {
|
|
|
101
91
|
}));
|
|
102
92
|
return undefined;
|
|
103
93
|
}
|
|
104
|
-
if (expression in values) {
|
|
105
|
-
return resolveValue([expression]);
|
|
106
|
-
}
|
|
107
|
-
let resolved = predefinedVariables;
|
|
108
|
-
if (expression in resolved) {
|
|
109
|
-
return resolved[expression];
|
|
110
|
-
}
|
|
111
94
|
const segments = expression.split(".");
|
|
112
|
-
|
|
113
|
-
resolved = resolved[segment];
|
|
114
|
-
if (resolved === undefined) {
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
if (typeof resolved === "string") {
|
|
119
|
-
return resolved;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
95
|
+
return resolveValue(segments) ?? resolveValuePath(predefinedVariables, segments);
|
|
124
96
|
}
|
|
125
97
|
for (const key of Object.keys(values)) {
|
|
126
|
-
resolvingValues.clear();
|
|
127
98
|
if (key in resolvedValues) {
|
|
128
99
|
continue;
|
|
129
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-interpolation.js","sourceRoot":"","sources":["../../../src/config/config-interpolation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"config-interpolation.js","sourceRoot":"","sources":["../../../src/config/config-interpolation.ts"],"names":[],"mappings":"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"}
|