@azure-tools/typespec-java 0.8.7 → 0.8.9
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/src/code-model-builder.d.ts +4 -4
- package/dist/src/code-model-builder.d.ts.map +1 -1
- package/dist/src/code-model-builder.js +88 -35
- package/dist/src/code-model-builder.js.map +1 -1
- package/dist/src/operation-utils.d.ts +4 -3
- package/dist/src/operation-utils.d.ts.map +1 -1
- package/dist/src/operation-utils.js +41 -19
- package/dist/src/operation-utils.js.map +1 -1
- package/dist/src/type-utils.d.ts +2 -1
- package/dist/src/type-utils.d.ts.map +1 -1
- package/dist/src/type-utils.js +56 -0
- package/dist/src/type-utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/readme.md +1 -1
- package/target/azure-typespec-extension-jar-with-dependencies.jar +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModelProperty, Operation, Program } from "@typespec/compiler";
|
|
1
|
+
import { ModelProperty, Operation, Program, Type, Union } from "@typespec/compiler";
|
|
2
2
|
import { HttpOperation } from "@typespec/http";
|
|
3
3
|
import { ApiVersions, Parameter } from "@autorest/codemodel";
|
|
4
4
|
import { LroMetadata } from "@azure-tools/typespec-azure-core";
|
|
@@ -8,8 +8,9 @@ import { EmitterOptions } from "./emitter.js";
|
|
|
8
8
|
export declare const specialHeaderNames: Set<string>;
|
|
9
9
|
export declare const originApiVersion = "modelerfour:synthesized/api-version";
|
|
10
10
|
export declare function loadExamples(program: Program, options: EmitterOptions): Promise<Map<Operation, any>>;
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function operationIsMultipleContentTypes(
|
|
11
|
+
export declare function operationIsJsonMergePatch(op: HttpOperation): boolean;
|
|
12
|
+
export declare function operationIsMultipleContentTypes(op: HttpOperation): boolean;
|
|
13
|
+
export declare function operationRefersUnion(program: Program, op: HttpOperation, cache: Map<Type, Union | null | undefined>): Union | null;
|
|
13
14
|
export declare function isPayloadProperty(program: Program, property: ModelProperty): boolean;
|
|
14
15
|
export declare function getClientApiVersions(client: CodeModelClient): ApiVersions | undefined;
|
|
15
16
|
export declare function getServiceVersion(client: CodeModelClient | CodeModel): ServiceVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-utils.d.ts","sourceRoot":"","sources":["../../src/operation-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"operation-utils.d.ts","sourceRoot":"","sources":["../../src/operation-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAkC,MAAM,oBAAoB,CAAC;AACpH,OAAO,EACL,aAAa,EAMd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAK9C,eAAO,MAAM,kBAAkB,aAM7B,CAAC;AAEH,eAAO,MAAM,gBAAgB,wCAAwC,CAAC;AAEtE,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAmD1G;AASD,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CASpE;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAa1E;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GACzC,KAAK,GAAG,IAAI,CA+Bd;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,WAM1E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CAMrF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,cAAc,CAcrF;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CA+BvG;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAcvE"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ignoreDiagnostics, resolvePath } from "@typespec/compiler";
|
|
2
2
|
import { getHeaderFieldName, getQueryParamName, getPathParamName, isStatusCode, getAllHttpServices, } from "@typespec/http";
|
|
3
3
|
import { resolveOperationId } from "@typespec/openapi";
|
|
4
4
|
import { Parameter } from "@autorest/codemodel";
|
|
5
5
|
import { ServiceVersion } from "./common/client.js";
|
|
6
6
|
import { getVersion } from "@typespec/versioning";
|
|
7
7
|
import { getNamespace, logWarning, pascalCase } from "./utils.js";
|
|
8
|
+
import { unionReferredByType } from "./type-utils.js";
|
|
8
9
|
export const specialHeaderNames = new Set([
|
|
9
10
|
"repeatability-request-id",
|
|
10
11
|
"repeatability-first-sent",
|
|
@@ -70,7 +71,7 @@ function pascalCaseForOperationId(name) {
|
|
|
70
71
|
.map((s) => pascalCase(s))
|
|
71
72
|
.join("_");
|
|
72
73
|
}
|
|
73
|
-
export function
|
|
74
|
+
export function operationIsJsonMergePatch(op) {
|
|
74
75
|
for (const param of op.parameters.parameters) {
|
|
75
76
|
if (param.type === "header" && param.name.toLowerCase() === "content-type") {
|
|
76
77
|
if (param.param.type.kind === "String" && param.param.type.value === "application/merge-patch+json") {
|
|
@@ -80,9 +81,9 @@ export function operationContainsJsonMergePatch(op) {
|
|
|
80
81
|
}
|
|
81
82
|
return false;
|
|
82
83
|
}
|
|
83
|
-
export function operationIsMultipleContentTypes(
|
|
84
|
-
if (
|
|
85
|
-
|
|
84
|
+
export function operationIsMultipleContentTypes(op) {
|
|
85
|
+
if (op.parameters.parameters &&
|
|
86
|
+
op.parameters.parameters.some((parameter) => {
|
|
86
87
|
var _a, _b, _c;
|
|
87
88
|
return (parameter === null || parameter === void 0 ? void 0 : parameter.type) === "header" &&
|
|
88
89
|
((_a = parameter === null || parameter === void 0 ? void 0 : parameter.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "content-type" &&
|
|
@@ -92,6 +93,39 @@ export function operationIsMultipleContentTypes(httpOperation) {
|
|
|
92
93
|
}
|
|
93
94
|
return false;
|
|
94
95
|
}
|
|
96
|
+
export function operationRefersUnion(program, op, cache) {
|
|
97
|
+
// request parameters
|
|
98
|
+
for (const parameter of op.parameters.parameters) {
|
|
99
|
+
const ret = unionReferredByType(program, parameter.param.type, cache);
|
|
100
|
+
if (ret) {
|
|
101
|
+
return ret;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// request body
|
|
105
|
+
if (op.parameters.body) {
|
|
106
|
+
if (op.parameters.body.parameter) {
|
|
107
|
+
const ret = unionReferredByType(program, op.parameters.body.parameter.type, cache);
|
|
108
|
+
if (ret) {
|
|
109
|
+
return ret;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (op.parameters.body.type) {
|
|
113
|
+
const ret = unionReferredByType(program, op.parameters.body.type, cache);
|
|
114
|
+
if (ret) {
|
|
115
|
+
return ret;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// response body
|
|
120
|
+
if (op.responses && op.responses.length > 0 && op.responses[0].type) {
|
|
121
|
+
const ret = unionReferredByType(program, op.responses[0].type, cache);
|
|
122
|
+
if (ret) {
|
|
123
|
+
return ret;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// TODO (weidxu): LRO response
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
95
129
|
export function isPayloadProperty(program, property) {
|
|
96
130
|
const headerInfo = getHeaderFieldName(program, property);
|
|
97
131
|
const queryInfo = getQueryParamName(program, property);
|
|
@@ -126,26 +160,14 @@ export function getServiceVersion(client) {
|
|
|
126
160
|
return new ServiceVersion(name, description);
|
|
127
161
|
}
|
|
128
162
|
export function isLroNewPollingStrategy(httpOperation, lroMetadata) {
|
|
129
|
-
// at present, checks if operation uses template from Azure.Core
|
|
130
|
-
const azureCoreLroSvs = [
|
|
131
|
-
"LongRunningResourceCreateOrReplace",
|
|
132
|
-
"LongRunningResourceCreateOrUpdate",
|
|
133
|
-
"LongRunningResourceDelete",
|
|
134
|
-
"LongRunningResourceAction",
|
|
135
|
-
"LongRunningRpcOperation",
|
|
136
|
-
];
|
|
137
163
|
const operation = httpOperation.operation;
|
|
138
164
|
let useNewStrategy = false;
|
|
139
165
|
if (lroMetadata.pollingInfo &&
|
|
140
166
|
lroMetadata.statusMonitorStep &&
|
|
141
167
|
lroMetadata.pollingInfo.responseModel.name === "OperationStatus" &&
|
|
142
168
|
getNamespace(lroMetadata.pollingInfo.responseModel) === "Azure.Core.Foundations") {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const sv = operation.node.signature.baseOperation.target.id.sv;
|
|
146
|
-
useNewStrategy = azureCoreLroSvs.includes(sv);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
169
|
+
useNewStrategy =
|
|
170
|
+
operation.sourceOperation !== undefined && getNamespace(operation.sourceOperation) === "Azure.Core";
|
|
149
171
|
}
|
|
150
172
|
if (!useNewStrategy) {
|
|
151
173
|
// following 2 pattern in LroMetadata requires new polling strategy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-utils.js","sourceRoot":"","sources":["../../src/operation-utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"operation-utils.js","sourceRoot":"","sources":["../../src/operation-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/type-utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EncodeData, IntrinsicScalarName, Model, Scalar, TemplatedTypeBase, Type, UnionVariant } from "@typespec/compiler";
|
|
1
|
+
import { EncodeData, IntrinsicScalarName, Model, Program, Scalar, TemplatedTypeBase, Type, Union, UnionVariant } from "@typespec/compiler";
|
|
2
2
|
import { DurationSchema } from "./common/schemas/time";
|
|
3
3
|
/** Acts as a cache for processing inputs.
|
|
4
4
|
*
|
|
@@ -28,4 +28,5 @@ export declare function isNullableType(type: Type): boolean;
|
|
|
28
28
|
export declare function isSameLiteralTypes(variants: UnionVariant[]): boolean;
|
|
29
29
|
export declare function getDurationFormat(encode: EncodeData): DurationSchema["format"];
|
|
30
30
|
export declare function hasScalarAsBase(type: Scalar, scalarName: IntrinsicScalarName): boolean;
|
|
31
|
+
export declare function unionReferredByType(program: Program, type: Type, cache: Map<Type, Union | null | undefined>): Union | null;
|
|
31
32
|
//# sourceMappingURL=type-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../src/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,MAAM,EACN,iBAAiB,EACjB,IAAI,EACJ,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,eAAe,CAAC,EAAE,EAAE,GAAG;IAEtB,OAAO,CAAC,SAAS;IAD7B,OAAO,CAAC,OAAO,CAAsB;gBACjB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG;IACrE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,SAAS;IAG5B,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG;IAI7B,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS;CAQxE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAOnF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE/D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAQ7F;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAgBvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAOlD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAQpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAc9E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAStF"}
|
|
1
|
+
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../src/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,IAAI,EACJ,KAAK,EACL,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,eAAe,CAAC,EAAE,EAAE,GAAG;IAEtB,OAAO,CAAC,SAAS;IAD7B,OAAO,CAAC,OAAO,CAAsB;gBACjB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG;IACrE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,SAAS;IAG5B,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG;IAI7B,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS;CAQxE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAOnF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE/D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAQ7F;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAgBvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAOlD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAQpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAc9E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAStF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GACzC,KAAK,GAAG,IAAI,CAoDd"}
|
package/dist/src/type-utils.js
CHANGED
|
@@ -109,4 +109,60 @@ export function hasScalarAsBase(type, scalarName) {
|
|
|
109
109
|
}
|
|
110
110
|
return false;
|
|
111
111
|
}
|
|
112
|
+
export function unionReferredByType(program, type, cache) {
|
|
113
|
+
if (cache.has(type)) {
|
|
114
|
+
const ret = cache.get(type);
|
|
115
|
+
if (ret) {
|
|
116
|
+
return ret;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
cache.set(type, undefined);
|
|
123
|
+
if (type.kind === "Union") {
|
|
124
|
+
// ref CodeModelBuilder.processUnionSchema
|
|
125
|
+
const nonNullVariants = Array.from(type.variants.values()).filter((it) => !isNullType(it.type));
|
|
126
|
+
if (nonNullVariants.length === 1) {
|
|
127
|
+
// Type | null, follow that Type
|
|
128
|
+
const ret = unionReferredByType(program, nonNullVariants[0], cache);
|
|
129
|
+
if (ret) {
|
|
130
|
+
cache.set(type, ret);
|
|
131
|
+
return ret;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if (isSameLiteralTypes(nonNullVariants)) {
|
|
135
|
+
// "literal1" | "literal2" -> Enum
|
|
136
|
+
cache.set(type, null);
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// found Union
|
|
141
|
+
cache.set(type, type);
|
|
142
|
+
return type;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (type.kind === "Model") {
|
|
146
|
+
if (type.indexer) {
|
|
147
|
+
// follow indexer (for Array/Record)
|
|
148
|
+
const ret = unionReferredByType(program, type.indexer.value, cache);
|
|
149
|
+
if (ret) {
|
|
150
|
+
cache.set(type, ret);
|
|
151
|
+
return ret;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// follow properties
|
|
155
|
+
for (const property of type.properties.values()) {
|
|
156
|
+
const ret = unionReferredByType(program, property.type, cache);
|
|
157
|
+
if (ret) {
|
|
158
|
+
cache.set(type, ret);
|
|
159
|
+
return ret;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
cache.set(type, null);
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
cache.set(type, null);
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
112
168
|
//# sourceMappingURL=type-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../src/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../src/type-utils.ts"],"names":[],"mappings":"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"}
|