@typespec/compiler 0.67.0-dev.11 → 0.67.0-dev.12
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 +2 -2
- package/dist/src/core/binder.d.ts.map +1 -1
- package/dist/src/core/binder.js +17 -130
- package/dist/src/core/binder.js.map +1 -1
- package/dist/src/core/checker.d.ts +3 -8
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +30 -674
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/decorator-utils.d.ts.map +1 -1
- package/dist/src/core/decorator-utils.js +1 -3
- package/dist/src/core/decorator-utils.js.map +1 -1
- package/dist/src/core/diagnostics.d.ts +0 -6
- package/dist/src/core/diagnostics.d.ts.map +1 -1
- package/dist/src/core/diagnostics.js +2 -11
- package/dist/src/core/diagnostics.js.map +1 -1
- package/dist/src/core/inspector/symbol.d.ts.map +1 -1
- package/dist/src/core/inspector/symbol.js +9 -11
- package/dist/src/core/inspector/symbol.js.map +1 -1
- package/dist/src/core/messages.d.ts +20 -40
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +6 -10
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/name-resolver.d.ts.map +1 -1
- package/dist/src/core/name-resolver.js +12 -23
- package/dist/src/core/name-resolver.js.map +1 -1
- package/dist/src/core/parser.d.ts.map +1 -1
- package/dist/src/core/parser.js +0 -642
- package/dist/src/core/parser.js.map +1 -1
- package/dist/src/core/program.d.ts +1 -10
- package/dist/src/core/program.d.ts.map +1 -1
- package/dist/src/core/program.js +2 -7
- package/dist/src/core/program.js.map +1 -1
- package/dist/src/core/semantic-walker.d.ts.map +1 -1
- package/dist/src/core/semantic-walker.js +0 -9
- package/dist/src/core/semantic-walker.js.map +1 -1
- package/dist/src/core/state-accessors.d.ts +53 -12
- package/dist/src/core/state-accessors.d.ts.map +1 -1
- package/dist/src/core/state-accessors.js +75 -48
- package/dist/src/core/state-accessors.js.map +1 -1
- package/dist/src/core/type-relation-checker.d.ts.map +1 -1
- package/dist/src/core/type-relation-checker.js +3 -6
- package/dist/src/core/type-relation-checker.js.map +1 -1
- package/dist/src/core/type-utils.js +2 -2
- package/dist/src/core/type-utils.js.map +1 -1
- package/dist/src/core/types.d.ts +41 -274
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +24 -55
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/core/visibility/lifecycle.d.ts.map +1 -1
- package/dist/src/core/visibility/lifecycle.js +2 -11
- package/dist/src/core/visibility/lifecycle.js.map +1 -1
- package/dist/src/experimental/freeze-graph.d.ts.map +1 -1
- package/dist/src/experimental/freeze-graph.js +0 -3
- package/dist/src/experimental/freeze-graph.js.map +1 -1
- package/dist/src/experimental/mutators.d.ts +2 -2
- package/dist/src/experimental/mutators.d.ts.map +1 -1
- package/dist/src/experimental/mutators.js +0 -6
- package/dist/src/experimental/mutators.js.map +1 -1
- package/dist/src/experimental/typekit/kits/type.js +0 -3
- package/dist/src/experimental/typekit/kits/type.js.map +1 -1
- package/dist/src/formatter/print/needs-parens.d.ts.map +1 -1
- package/dist/src/formatter/print/needs-parens.js +0 -4
- package/dist/src/formatter/print/needs-parens.js.map +1 -1
- package/dist/src/formatter/print/printer.d.ts +4 -12
- package/dist/src/formatter/print/printer.d.ts.map +1 -1
- package/dist/src/formatter/print/printer.js +0 -187
- package/dist/src/formatter/print/printer.js.map +1 -1
- package/dist/src/index.d.ts +3 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +3 -3
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +14 -29
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/lib/examples.js +1 -5
- package/dist/src/lib/examples.js.map +1 -1
- package/dist/src/lib/tsp-index.d.ts.map +1 -1
- package/dist/src/lib/tsp-index.js +0 -1
- package/dist/src/lib/tsp-index.js.map +1 -1
- package/dist/src/server/classify.d.ts.map +1 -1
- package/dist/src/server/classify.js +0 -26
- package/dist/src/server/classify.js.map +1 -1
- package/dist/src/server/completion.js +1 -1
- package/dist/src/server/completion.js.map +1 -1
- package/dist/src/server/tmlanguage.d.ts.map +1 -1
- package/dist/src/server/tmlanguage.js +0 -125
- package/dist/src/server/tmlanguage.js.map +1 -1
- package/dist/src/server/type-signature.js +0 -11
- package/dist/src/server/type-signature.js.map +1 -1
- package/dist/typespec.tmLanguage +0 -342
- package/package.json +1 -1
- package/dist/src/core/helpers/projected-names-utils.d.ts +0 -20
- package/dist/src/core/helpers/projected-names-utils.d.ts.map +0 -1
- package/dist/src/core/helpers/projected-names-utils.js +0 -42
- package/dist/src/core/helpers/projected-names-utils.js.map +0 -1
- package/dist/src/core/projected-program.d.ts +0 -3
- package/dist/src/core/projected-program.d.ts.map +0 -1
- package/dist/src/core/projected-program.js +0 -4
- package/dist/src/core/projected-program.js.map +0 -1
- package/dist/src/core/projection-members.d.ts +0 -8
- package/dist/src/core/projection-members.d.ts.map +0 -1
- package/dist/src/core/projection-members.js +0 -382
- package/dist/src/core/projection-members.js.map +0 -1
- package/dist/src/core/projector.d.ts +0 -26
- package/dist/src/core/projector.d.ts.map +0 -1
- package/dist/src/core/projector.js +0 -572
- package/dist/src/core/projector.js.map +0 -1
|
@@ -1,572 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-deprecated */
|
|
2
|
-
import { createRekeyableMap, mutate } from "../utils/misc.js";
|
|
3
|
-
import { finishTypeForProgram } from "./checker.js";
|
|
4
|
-
import { compilerAssert } from "./diagnostics.js";
|
|
5
|
-
import { isProjectedProgram } from "./projected-program.js";
|
|
6
|
-
import { createStateAccessors } from "./state-accessors.js";
|
|
7
|
-
import { getParentTemplateNode, isNeverType, isTemplateInstance, isValue } from "./type-utils.js";
|
|
8
|
-
/**
|
|
9
|
-
* Creates a projector which returns a projected view of either the global namespace or the
|
|
10
|
-
* start node provided. Projecting a type effectively clones every type referenced underneath
|
|
11
|
-
* it. This is accomplished by doing a semantic walk of each type, cloning each type we find,
|
|
12
|
-
* and running projection code on the clone.
|
|
13
|
-
*
|
|
14
|
-
* Projectors can run multiple projections at once. In such cases, each projection is run
|
|
15
|
-
* on the same clone of the unprojected type. It is up to projections and the user to ensure
|
|
16
|
-
* that projections which depend on a particular shape are run when that shape is present (or
|
|
17
|
-
* else to ensure that their projections are tolerant to shape changes).
|
|
18
|
-
*
|
|
19
|
-
* The projector maintains its own state maps and sets. If a projection is active (i.e.
|
|
20
|
-
* program.currentProjector is set), then the projector's state will be returned instead
|
|
21
|
-
* of the program's state. This ensures that there is no overlap between projected and
|
|
22
|
-
* unprojected state. It also means that you cannot get state for nodes that are not
|
|
23
|
-
* part of the active projection.
|
|
24
|
-
*
|
|
25
|
-
* Note that decorators are run on namespaces prior to cloning any child types to align
|
|
26
|
-
* with the checker semantics, while projections are run after everything under the namespace
|
|
27
|
-
* is cloned. All other run decorators and projections after all child types are cloned and
|
|
28
|
-
* have their decorators run.
|
|
29
|
-
*/
|
|
30
|
-
export function createProjector(program, projections, startNode) {
|
|
31
|
-
const projectedTypes = new Map();
|
|
32
|
-
const checker = program.checker;
|
|
33
|
-
const neverType = checker.neverType;
|
|
34
|
-
const scope = [];
|
|
35
|
-
const projector = {
|
|
36
|
-
projectedTypes,
|
|
37
|
-
projections,
|
|
38
|
-
projectType,
|
|
39
|
-
parentProjector: isProjectedProgram(program) ? program.projector : undefined,
|
|
40
|
-
};
|
|
41
|
-
const projectedNamespaces = [];
|
|
42
|
-
let projectingNamespaces = false;
|
|
43
|
-
const projectedProgram = {
|
|
44
|
-
...program,
|
|
45
|
-
getGlobalNamespaceType: () => projector.projectedGlobalNamespace,
|
|
46
|
-
projector,
|
|
47
|
-
...createStateAccessors(program.stateMaps, program.stateSets, projector),
|
|
48
|
-
};
|
|
49
|
-
const targetGlobalNs = startNode
|
|
50
|
-
? startNode.projector
|
|
51
|
-
? startNode.projector.projectedGlobalNamespace
|
|
52
|
-
: program.checker.getGlobalNamespaceType()
|
|
53
|
-
: program.checker.getGlobalNamespaceType();
|
|
54
|
-
projectingNamespaces = true;
|
|
55
|
-
// Project the global namespace to get a reference.
|
|
56
|
-
projector.projectedGlobalNamespace = projectNamespace(targetGlobalNs, false);
|
|
57
|
-
// Then project the content
|
|
58
|
-
projectSubNamespaces(targetGlobalNs, projector.projectedGlobalNamespace);
|
|
59
|
-
projectingNamespaces = false;
|
|
60
|
-
// then project all the types
|
|
61
|
-
for (const ns of projectedNamespaces) {
|
|
62
|
-
projectNamespaceContents(ns);
|
|
63
|
-
}
|
|
64
|
-
projectType(targetGlobalNs);
|
|
65
|
-
projector.projectedStartNode = startNode
|
|
66
|
-
? projectedTypes.get(startNode)
|
|
67
|
-
: projector.projectedGlobalNamespace;
|
|
68
|
-
return projectedProgram;
|
|
69
|
-
function projectType(type) {
|
|
70
|
-
if (isValue(type)) {
|
|
71
|
-
if (type.valueKind === "EnumValue") {
|
|
72
|
-
// This is a hack. We project the enum itself, so we need to project enum values in order to prevent incoherence
|
|
73
|
-
// between projections that reference enum values and the enum/members themselves. If we project the enummember
|
|
74
|
-
// in the value and it results in something other than an enum member, we will give up and just return the value
|
|
75
|
-
// as is. Otherwise we'll return the projected member.
|
|
76
|
-
const projectedType = projectType(type.type);
|
|
77
|
-
const projectedMember = projectType(type.value);
|
|
78
|
-
if (projectedMember.kind === "EnumMember") {
|
|
79
|
-
return {
|
|
80
|
-
entityKind: "Value",
|
|
81
|
-
valueKind: "EnumValue",
|
|
82
|
-
type: projectedType,
|
|
83
|
-
value: projectedMember,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return type;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
return type;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (type.entityKind === "Indeterminate") {
|
|
95
|
-
return { entityKind: "Indeterminate", type: projectType(type.type) };
|
|
96
|
-
}
|
|
97
|
-
if (projectedTypes.has(type)) {
|
|
98
|
-
return projectedTypes.get(type);
|
|
99
|
-
}
|
|
100
|
-
scope.push(type);
|
|
101
|
-
const preProjected = applyPreProjection(type);
|
|
102
|
-
if (preProjected !== type) {
|
|
103
|
-
projectedTypes.set(type, preProjected);
|
|
104
|
-
scope.pop();
|
|
105
|
-
return preProjected;
|
|
106
|
-
}
|
|
107
|
-
let projected;
|
|
108
|
-
switch (type.kind) {
|
|
109
|
-
case "Namespace":
|
|
110
|
-
compilerAssert(projectingNamespaces, `Namespace ${type.name} should have already been projected.`);
|
|
111
|
-
projected = projectNamespace(type, false);
|
|
112
|
-
break;
|
|
113
|
-
case "Scalar":
|
|
114
|
-
projected = projectScalar(type);
|
|
115
|
-
break;
|
|
116
|
-
case "Model":
|
|
117
|
-
projected = projectModel(type);
|
|
118
|
-
break;
|
|
119
|
-
case "ModelProperty":
|
|
120
|
-
projected = projectModelProperty(type);
|
|
121
|
-
break;
|
|
122
|
-
case "Operation":
|
|
123
|
-
projected = projectOperation(type);
|
|
124
|
-
break;
|
|
125
|
-
case "Interface":
|
|
126
|
-
projected = projectInterface(type);
|
|
127
|
-
break;
|
|
128
|
-
case "Union":
|
|
129
|
-
projected = projectUnion(type);
|
|
130
|
-
break;
|
|
131
|
-
case "UnionVariant":
|
|
132
|
-
projected = projectUnionVariant(type);
|
|
133
|
-
break;
|
|
134
|
-
case "Tuple":
|
|
135
|
-
projected = projectTuple(type);
|
|
136
|
-
break;
|
|
137
|
-
case "Enum":
|
|
138
|
-
projected = projectEnum(type);
|
|
139
|
-
break;
|
|
140
|
-
case "EnumMember":
|
|
141
|
-
projected = projectEnumMember(type);
|
|
142
|
-
break;
|
|
143
|
-
default:
|
|
144
|
-
projected = type;
|
|
145
|
-
}
|
|
146
|
-
scope.pop();
|
|
147
|
-
return projected;
|
|
148
|
-
}
|
|
149
|
-
function projectSubNamespaces(ns, projectedNs) {
|
|
150
|
-
if (ns.namespaces.size === projectedNs.namespaces.size) {
|
|
151
|
-
// Sub namespace should already have been projected.
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
for (const [key, childNs] of ns.namespaces) {
|
|
155
|
-
const projected = projectNamespace(childNs);
|
|
156
|
-
if (projected.kind === "Namespace") {
|
|
157
|
-
// todo: check for never?
|
|
158
|
-
projectedNs.namespaces.set(key, projected);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
function projectNamespace(ns, projectSubNamespace = true) {
|
|
163
|
-
const alreadyProjected = projectedTypes.get(ns);
|
|
164
|
-
if (alreadyProjected) {
|
|
165
|
-
if (projectSubNamespace) {
|
|
166
|
-
projectSubNamespaces(ns, alreadyProjected);
|
|
167
|
-
}
|
|
168
|
-
return alreadyProjected;
|
|
169
|
-
}
|
|
170
|
-
const projectedNs = shallowClone(ns, {
|
|
171
|
-
namespaces: new Map(),
|
|
172
|
-
scalars: new Map(),
|
|
173
|
-
models: new Map(),
|
|
174
|
-
operations: new Map(),
|
|
175
|
-
interfaces: new Map(),
|
|
176
|
-
unions: new Map(),
|
|
177
|
-
enums: new Map(),
|
|
178
|
-
decorators: [],
|
|
179
|
-
});
|
|
180
|
-
projectedNs.decorators = projectDecorators(ns.decorators);
|
|
181
|
-
if (ns.namespace) {
|
|
182
|
-
projectedNs.namespace = projectNamespace(ns.namespace, false);
|
|
183
|
-
}
|
|
184
|
-
// ns run decorators before projecting anything inside them
|
|
185
|
-
finishTypeForProgram(projectedProgram, projectedNs);
|
|
186
|
-
if (projectSubNamespace) {
|
|
187
|
-
projectSubNamespaces(ns, projectedNs);
|
|
188
|
-
}
|
|
189
|
-
projectedNamespaces.push(ns);
|
|
190
|
-
return applyProjection(ns, projectedNs);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Projects the contents of a namespace, but not the namespace itself. The namespace itself
|
|
194
|
-
* is projected in an earlier phase.
|
|
195
|
-
*/
|
|
196
|
-
function projectNamespaceContents(ns) {
|
|
197
|
-
const projectedNs = projectedTypes.get(ns);
|
|
198
|
-
compilerAssert(projectedNs, "Should have projected namespace by now");
|
|
199
|
-
if (projectedNs.kind !== "Namespace") {
|
|
200
|
-
// we projected the namespace to something else so don't do any more work.
|
|
201
|
-
// this might happen if a namespace itself was added/removed/etc. and is
|
|
202
|
-
// projected to never.
|
|
203
|
-
return neverType;
|
|
204
|
-
}
|
|
205
|
-
for (const childModel of ns.models.values()) {
|
|
206
|
-
const projected = projectType(childModel);
|
|
207
|
-
if (projected.kind === "Model") {
|
|
208
|
-
projectedNs.models.set(projected.name, projected);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
for (const scalar of ns.scalars.values()) {
|
|
212
|
-
const projected = projectType(scalar);
|
|
213
|
-
if (projected.kind === "Scalar") {
|
|
214
|
-
projectedNs.scalars.set(projected.name, projected);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
for (const childOperation of ns.operations.values()) {
|
|
218
|
-
const projected = projectType(childOperation);
|
|
219
|
-
if (projected.kind === "Operation") {
|
|
220
|
-
projectedNs.operations.set(projected.name, projected);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
for (const childInterface of ns.interfaces.values()) {
|
|
224
|
-
const projected = projectType(childInterface);
|
|
225
|
-
if (projected.kind === "Interface") {
|
|
226
|
-
projectedNs.interfaces.set(projected.name, projected);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
for (const childUnion of ns.unions.values()) {
|
|
230
|
-
const projected = projectType(childUnion);
|
|
231
|
-
if (projected.kind === "Union") {
|
|
232
|
-
projectedNs.unions.set(projected.name, projected);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
for (const childEnum of ns.enums.values()) {
|
|
236
|
-
const projected = projectType(childEnum);
|
|
237
|
-
if (projected.kind === "Enum") {
|
|
238
|
-
projectedNs.enums.set(projected.name, projected);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
return projectedNs;
|
|
242
|
-
}
|
|
243
|
-
function projectModel(model) {
|
|
244
|
-
const properties = createRekeyableMap();
|
|
245
|
-
const projectedModel = shallowClone(model, {
|
|
246
|
-
properties,
|
|
247
|
-
derivedModels: [],
|
|
248
|
-
});
|
|
249
|
-
if (model.templateMapper) {
|
|
250
|
-
projectedModel.templateMapper = projectTemplateMapper(model.templateMapper);
|
|
251
|
-
}
|
|
252
|
-
if (model.baseModel) {
|
|
253
|
-
projectedModel.baseModel = projectType(model.baseModel);
|
|
254
|
-
}
|
|
255
|
-
if (model.sourceModel) {
|
|
256
|
-
projectedModel.sourceModel = projectType(model.sourceModel);
|
|
257
|
-
}
|
|
258
|
-
projectedModel.sourceModels = model.sourceModels.map((source) => {
|
|
259
|
-
return { ...source, model: projectType(source.model) };
|
|
260
|
-
});
|
|
261
|
-
if (model.indexer) {
|
|
262
|
-
const projectedValue = projectType(model.indexer.value);
|
|
263
|
-
projectedModel.indexer = {
|
|
264
|
-
key: projectType(model.indexer.key),
|
|
265
|
-
value: projectedValue,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
projectedTypes.set(model, projectedModel);
|
|
269
|
-
for (const prop of model.properties.values()) {
|
|
270
|
-
const projectedProp = projectType(prop);
|
|
271
|
-
if (projectedProp.kind === "ModelProperty") {
|
|
272
|
-
properties.set(projectedProp.name, projectedProp);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
projectedModel.decorators = projectDecorators(model.decorators);
|
|
276
|
-
if (shouldFinishType(model)) {
|
|
277
|
-
finishTypeForProgram(projectedProgram, projectedModel);
|
|
278
|
-
}
|
|
279
|
-
const projectedResult = applyProjection(model, projectedModel);
|
|
280
|
-
if (!isNeverType(projectedResult) &&
|
|
281
|
-
projectedResult.kind === "Model" &&
|
|
282
|
-
projectedResult.baseModel) {
|
|
283
|
-
projectedResult.baseModel.derivedModels ??= [];
|
|
284
|
-
projectedResult.baseModel.derivedModels.push(projectedModel);
|
|
285
|
-
}
|
|
286
|
-
return projectedResult;
|
|
287
|
-
}
|
|
288
|
-
function projectTemplateMapper(mapper) {
|
|
289
|
-
const projectedMapper = {
|
|
290
|
-
...mapper,
|
|
291
|
-
args: [],
|
|
292
|
-
map: new Map(),
|
|
293
|
-
};
|
|
294
|
-
for (const arg of mapper.args) {
|
|
295
|
-
mutate(projectedMapper.args).push(projectType(arg));
|
|
296
|
-
}
|
|
297
|
-
for (const [param, type] of mapper.map) {
|
|
298
|
-
projectedMapper.map.set(param, projectType(type));
|
|
299
|
-
}
|
|
300
|
-
return projectedMapper;
|
|
301
|
-
}
|
|
302
|
-
function projectScalar(scalar) {
|
|
303
|
-
const projectedScalar = shallowClone(scalar, {
|
|
304
|
-
derivedScalars: [],
|
|
305
|
-
});
|
|
306
|
-
if (scalar.templateMapper) {
|
|
307
|
-
projectedScalar.templateMapper = projectTemplateMapper(scalar.templateMapper);
|
|
308
|
-
}
|
|
309
|
-
if (scalar.baseScalar) {
|
|
310
|
-
projectedScalar.baseScalar = projectType(scalar.baseScalar);
|
|
311
|
-
}
|
|
312
|
-
projectedTypes.set(scalar, projectedScalar);
|
|
313
|
-
projectedScalar.decorators = projectDecorators(scalar.decorators);
|
|
314
|
-
if (shouldFinishType(scalar)) {
|
|
315
|
-
finishTypeForProgram(projectedProgram, projectedScalar);
|
|
316
|
-
}
|
|
317
|
-
const projectedResult = applyProjection(scalar, projectedScalar);
|
|
318
|
-
if (!isNeverType(projectedResult) &&
|
|
319
|
-
projectedResult.kind === "Scalar" &&
|
|
320
|
-
projectedResult.baseScalar) {
|
|
321
|
-
projectedResult.baseScalar.derivedScalars ??= [];
|
|
322
|
-
projectedResult.baseScalar.derivedScalars.push(projectedScalar);
|
|
323
|
-
}
|
|
324
|
-
return projectedResult;
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Returns true if we should finish a type. The only time we don't finish is when it's
|
|
328
|
-
* a template type, because we don't want to run decorators for templates.
|
|
329
|
-
*/
|
|
330
|
-
function shouldFinishType(type) {
|
|
331
|
-
const parentTemplate = type.node && getParentTemplateNode(type.node);
|
|
332
|
-
return !parentTemplate || isTemplateInstance(type);
|
|
333
|
-
}
|
|
334
|
-
function projectModelProperty(prop) {
|
|
335
|
-
const projectedType = projectType(prop.type);
|
|
336
|
-
const projectedDecs = projectDecorators(prop.decorators);
|
|
337
|
-
const projectedProp = shallowClone(prop, {
|
|
338
|
-
type: projectedType,
|
|
339
|
-
decorators: projectedDecs,
|
|
340
|
-
});
|
|
341
|
-
if (prop.sourceProperty) {
|
|
342
|
-
const sourceProperty = projectType(prop.sourceProperty);
|
|
343
|
-
projectedProp.sourceProperty = sourceProperty;
|
|
344
|
-
}
|
|
345
|
-
if (shouldFinishType(prop)) {
|
|
346
|
-
finishTypeForProgram(projectedProgram, projectedProp);
|
|
347
|
-
}
|
|
348
|
-
if (prop.model) {
|
|
349
|
-
projectedProp.model = projectType(prop.model);
|
|
350
|
-
}
|
|
351
|
-
return applyProjection(prop, projectedProp);
|
|
352
|
-
}
|
|
353
|
-
function projectOperation(op) {
|
|
354
|
-
const projectedOp = shallowClone(op, {});
|
|
355
|
-
projectedOp.parameters = projectType(op.parameters);
|
|
356
|
-
projectedOp.returnType = projectType(op.returnType);
|
|
357
|
-
projectedOp.decorators = projectDecorators(op.decorators);
|
|
358
|
-
if (op.templateMapper) {
|
|
359
|
-
projectedOp.templateMapper = projectTemplateMapper(op.templateMapper);
|
|
360
|
-
}
|
|
361
|
-
if (op.sourceOperation) {
|
|
362
|
-
projectedOp.sourceOperation = projectType(op.sourceOperation);
|
|
363
|
-
}
|
|
364
|
-
if (op.namespace) {
|
|
365
|
-
projectedOp.namespace = projectedNamespaceScope();
|
|
366
|
-
}
|
|
367
|
-
if (op.isFinished) {
|
|
368
|
-
finishTypeForProgram(projectedProgram, projectedOp);
|
|
369
|
-
}
|
|
370
|
-
if (op.interface) {
|
|
371
|
-
projectedOp.interface = projectType(op.interface);
|
|
372
|
-
}
|
|
373
|
-
return applyProjection(op, projectedOp);
|
|
374
|
-
}
|
|
375
|
-
function projectInterface(iface) {
|
|
376
|
-
const operations = createRekeyableMap();
|
|
377
|
-
const sourceInterfaces = [];
|
|
378
|
-
const projectedIface = shallowClone(iface, {
|
|
379
|
-
operations,
|
|
380
|
-
sourceInterfaces,
|
|
381
|
-
});
|
|
382
|
-
projectedIface.decorators = projectDecorators(iface.decorators);
|
|
383
|
-
if (iface.templateMapper) {
|
|
384
|
-
projectedIface.templateMapper = projectTemplateMapper(iface.templateMapper);
|
|
385
|
-
}
|
|
386
|
-
for (const op of iface.operations.values()) {
|
|
387
|
-
const projectedOp = projectType(op);
|
|
388
|
-
if (projectedOp.kind === "Operation") {
|
|
389
|
-
operations.set(projectedOp.name, projectedOp);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
for (const source of iface.sourceInterfaces) {
|
|
393
|
-
sourceInterfaces.push(projectType(source));
|
|
394
|
-
}
|
|
395
|
-
if (shouldFinishType(iface)) {
|
|
396
|
-
finishTypeForProgram(projectedProgram, projectedIface);
|
|
397
|
-
}
|
|
398
|
-
return applyProjection(iface, projectedIface);
|
|
399
|
-
}
|
|
400
|
-
function projectUnion(union) {
|
|
401
|
-
const variants = createRekeyableMap();
|
|
402
|
-
const projectedUnion = shallowClone(union, {
|
|
403
|
-
variants,
|
|
404
|
-
});
|
|
405
|
-
projectedUnion.decorators = projectDecorators(union.decorators);
|
|
406
|
-
if (union.templateMapper) {
|
|
407
|
-
projectedUnion.templateMapper = projectTemplateMapper(union.templateMapper);
|
|
408
|
-
}
|
|
409
|
-
for (const variant of union.variants.values()) {
|
|
410
|
-
const projectedVariant = projectType(variant);
|
|
411
|
-
if (projectedVariant.kind === "UnionVariant" && projectedVariant.type !== neverType) {
|
|
412
|
-
variants.set(projectedVariant.name, projectedVariant);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
if (shouldFinishType(union)) {
|
|
416
|
-
finishTypeForProgram(projectedProgram, projectedUnion);
|
|
417
|
-
}
|
|
418
|
-
return applyProjection(union, projectedUnion);
|
|
419
|
-
}
|
|
420
|
-
function projectUnionVariant(variant) {
|
|
421
|
-
const projectedType = projectType(variant.type);
|
|
422
|
-
const projectedDecs = projectDecorators(variant.decorators);
|
|
423
|
-
const projectedVariant = shallowClone(variant, {
|
|
424
|
-
type: projectedType,
|
|
425
|
-
decorators: projectedDecs,
|
|
426
|
-
});
|
|
427
|
-
finishTypeForProgram(projectedProgram, projectedVariant);
|
|
428
|
-
projectedVariant.union = projectType(variant.union);
|
|
429
|
-
return applyProjection(variant, projectedVariant);
|
|
430
|
-
}
|
|
431
|
-
function projectTuple(tuple) {
|
|
432
|
-
const values = [];
|
|
433
|
-
const projectedTuple = shallowClone(tuple, {
|
|
434
|
-
values,
|
|
435
|
-
});
|
|
436
|
-
for (const item of tuple.values) {
|
|
437
|
-
values.push(projectType(item));
|
|
438
|
-
}
|
|
439
|
-
return projectedTuple;
|
|
440
|
-
}
|
|
441
|
-
function projectEnum(e) {
|
|
442
|
-
const members = createRekeyableMap();
|
|
443
|
-
const projectedEnum = shallowClone(e, {
|
|
444
|
-
members,
|
|
445
|
-
});
|
|
446
|
-
projectedEnum.decorators = projectDecorators(e.decorators);
|
|
447
|
-
projectedTypes.set(e, projectedEnum);
|
|
448
|
-
for (const member of e.members.values()) {
|
|
449
|
-
const projectedMember = projectType(member);
|
|
450
|
-
if (projectedMember.kind === "EnumMember") {
|
|
451
|
-
members.set(projectedMember.name, projectedMember);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
finishTypeForProgram(projectedProgram, projectedEnum);
|
|
455
|
-
return applyProjection(e, projectedEnum);
|
|
456
|
-
}
|
|
457
|
-
function projectEnumMember(e) {
|
|
458
|
-
const decorators = projectDecorators(e.decorators);
|
|
459
|
-
const projectedMember = shallowClone(e, {
|
|
460
|
-
decorators,
|
|
461
|
-
});
|
|
462
|
-
finishTypeForProgram(projectedProgram, projectedMember);
|
|
463
|
-
projectedMember.enum = projectType(e.enum);
|
|
464
|
-
return applyProjection(e, projectedMember);
|
|
465
|
-
}
|
|
466
|
-
function projectDecorators(decs) {
|
|
467
|
-
const decorators = [];
|
|
468
|
-
for (const dec of decs) {
|
|
469
|
-
const args = [];
|
|
470
|
-
for (const arg of dec.args) {
|
|
471
|
-
const jsValue = typeof arg.jsValue === "object" && arg.jsValue !== null && "entityKind" in arg.jsValue
|
|
472
|
-
? projectType(arg.jsValue)
|
|
473
|
-
: arg.jsValue;
|
|
474
|
-
args.push({ ...arg, value: projectType(arg.value), jsValue });
|
|
475
|
-
}
|
|
476
|
-
decorators.push({ ...dec, args });
|
|
477
|
-
}
|
|
478
|
-
return decorators;
|
|
479
|
-
}
|
|
480
|
-
function getInScopeProjections() {
|
|
481
|
-
const candidates = new Set(projections);
|
|
482
|
-
const inScope = [];
|
|
483
|
-
let currentScope = namespaceScope();
|
|
484
|
-
outer: while (currentScope) {
|
|
485
|
-
for (const candidate of candidates) {
|
|
486
|
-
if (!candidate.scope || candidate.scope === currentScope) {
|
|
487
|
-
candidates.delete(candidate);
|
|
488
|
-
inScope.push(candidate);
|
|
489
|
-
if (candidates.size === 0) {
|
|
490
|
-
break outer;
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
currentScope = currentScope.namespace;
|
|
495
|
-
}
|
|
496
|
-
return inScope;
|
|
497
|
-
}
|
|
498
|
-
function namespaceScope() {
|
|
499
|
-
for (let i = scope.length - 1; i >= 0; i--) {
|
|
500
|
-
if (scope[i].namespace !== undefined) {
|
|
501
|
-
return scope[i].namespace;
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
return undefined;
|
|
505
|
-
}
|
|
506
|
-
function projectedNamespaceScope() {
|
|
507
|
-
const ns = namespaceScope();
|
|
508
|
-
if (!ns)
|
|
509
|
-
return ns;
|
|
510
|
-
return projectType(ns);
|
|
511
|
-
}
|
|
512
|
-
function applyProjection(baseType, projectedType) {
|
|
513
|
-
const inScopeProjections = getInScopeProjections();
|
|
514
|
-
for (const projectionApplication of inScopeProjections) {
|
|
515
|
-
const projectionsByName = baseType.projectionsByName(projectionApplication.projectionName);
|
|
516
|
-
if (projectionsByName.length === 0)
|
|
517
|
-
continue;
|
|
518
|
-
const targetNode = projectionApplication.direction === "from"
|
|
519
|
-
? projectionsByName[0].from
|
|
520
|
-
: projectionsByName[0].to;
|
|
521
|
-
if (targetNode) {
|
|
522
|
-
const projected = checker.project(projectedType, targetNode, projectionApplication.arguments);
|
|
523
|
-
if (projected !== projectedType) {
|
|
524
|
-
// override the projected type cache with the returned type
|
|
525
|
-
projectedTypes.set(baseType, projected);
|
|
526
|
-
return projected;
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
return projectedType;
|
|
531
|
-
}
|
|
532
|
-
function applyPreProjection(type) {
|
|
533
|
-
const inScopeProjections = getInScopeProjections();
|
|
534
|
-
for (const projectionApplication of inScopeProjections) {
|
|
535
|
-
const projectionsByName = type.projectionsByName(projectionApplication.projectionName);
|
|
536
|
-
if (projectionsByName.length === 0)
|
|
537
|
-
continue;
|
|
538
|
-
const targetNode = projectionApplication.direction === "from"
|
|
539
|
-
? projectionsByName[0].preFrom
|
|
540
|
-
: projectionsByName[0].preTo;
|
|
541
|
-
if (targetNode) {
|
|
542
|
-
return checker.project(type, targetNode, projectionApplication.arguments);
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
return type;
|
|
546
|
-
}
|
|
547
|
-
function shallowClone(type, additionalProps) {
|
|
548
|
-
const scopeProps = {};
|
|
549
|
-
if ("namespace" in type && type.namespace !== undefined) {
|
|
550
|
-
scopeProps.namespace = projectedNamespaceScope();
|
|
551
|
-
}
|
|
552
|
-
const clone = checker.createType({
|
|
553
|
-
...type,
|
|
554
|
-
...additionalProps,
|
|
555
|
-
...scopeProps,
|
|
556
|
-
projectionSource: type,
|
|
557
|
-
projectionBase: type.projectionBase ?? type,
|
|
558
|
-
projector,
|
|
559
|
-
});
|
|
560
|
-
if (type.kind === "Union") {
|
|
561
|
-
// create the options getter
|
|
562
|
-
Object.defineProperty(clone, "options", {
|
|
563
|
-
get() {
|
|
564
|
-
return Array.from(this.variants.values()).map((v) => v.type);
|
|
565
|
-
},
|
|
566
|
-
});
|
|
567
|
-
}
|
|
568
|
-
projectedTypes.set(type, clone);
|
|
569
|
-
return clone;
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
//# sourceMappingURL=projector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projector.js","sourceRoot":"","sources":["../../../src/core/projector.ts"],"names":[],"mappings":"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"}
|