@azure-tools/typespec-ts 0.30.1 → 0.31.0-alpha.20240723.1
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/CHANGELOG.md +19 -0
- package/dist/src/contextManager.d.ts +4 -0
- package/dist/src/contextManager.d.ts.map +1 -1
- package/dist/src/contextManager.js.map +1 -1
- package/dist/src/framework/declaration.d.ts +9 -0
- package/dist/src/framework/declaration.d.ts.map +1 -0
- package/dist/src/framework/declaration.js +28 -0
- package/dist/src/framework/declaration.js.map +1 -0
- package/dist/src/framework/hooks/binder.d.ts +25 -0
- package/dist/src/framework/hooks/binder.d.ts.map +1 -0
- package/dist/src/framework/hooks/binder.js +168 -0
- package/dist/src/framework/hooks/binder.js.map +1 -0
- package/dist/src/framework/hooks/sdkTypes.d.ts +12 -0
- package/dist/src/framework/hooks/sdkTypes.d.ts.map +1 -0
- package/dist/src/framework/hooks/sdkTypes.js +67 -0
- package/dist/src/framework/hooks/sdkTypes.js.map +1 -0
- package/dist/src/framework/reference.d.ts +2 -0
- package/dist/src/framework/reference.d.ts.map +1 -0
- package/dist/src/framework/reference.js +8 -0
- package/dist/src/framework/reference.js.map +1 -0
- package/dist/src/framework/refkey.d.ts +7 -0
- package/dist/src/framework/refkey.d.ts.map +1 -0
- package/dist/src/framework/refkey.js +22 -0
- package/dist/src/framework/refkey.js.map +1 -0
- package/dist/src/framework/sample.d.ts +2 -0
- package/dist/src/framework/sample.d.ts.map +1 -0
- package/dist/src/framework/sample.js +71 -0
- package/dist/src/framework/sample.js.map +1 -0
- package/dist/src/framework/utils/tsmorph-helpers.d.ts +2 -0
- package/dist/src/framework/utils/tsmorph-helpers.d.ts.map +1 -0
- package/dist/src/framework/utils/tsmorph-helpers.js +2 -0
- package/dist/src/framework/utils/tsmorph-helpers.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +10 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +6 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/modular/buildClassicalClient.d.ts.map +1 -1
- package/dist/src/modular/buildClassicalClient.js +6 -5
- package/dist/src/modular/buildClassicalClient.js.map +1 -1
- package/dist/src/modular/buildClientContext.d.ts.map +1 -1
- package/dist/src/modular/buildClientContext.js +8 -4
- package/dist/src/modular/buildClientContext.js.map +1 -1
- package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
- package/dist/src/modular/buildCodeModel.js +22 -11
- package/dist/src/modular/buildCodeModel.js.map +1 -1
- package/dist/src/modular/buildOperations.d.ts +1 -2
- package/dist/src/modular/buildOperations.d.ts.map +1 -1
- package/dist/src/modular/buildOperations.js +3 -9
- package/dist/src/modular/buildOperations.js.map +1 -1
- package/dist/src/modular/buildRootIndex.js +1 -1
- package/dist/src/modular/buildRootIndex.js.map +1 -1
- package/dist/src/modular/buildSerializeUtils.d.ts.map +1 -1
- package/dist/src/modular/buildSerializeUtils.js +2 -1
- package/dist/src/modular/buildSerializeUtils.js.map +1 -1
- package/dist/src/modular/helpers/clientHelpers.d.ts +4 -0
- package/dist/src/modular/helpers/clientHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/clientHelpers.js +15 -1
- package/dist/src/modular/helpers/clientHelpers.js.map +1 -1
- package/dist/src/modular/helpers/namingHelpers.d.ts +1 -0
- package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/namingHelpers.js +3 -1
- package/dist/src/modular/helpers/namingHelpers.js.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/operationHelpers.js +60 -40
- package/dist/src/modular/helpers/operationHelpers.js.map +1 -1
- package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -1
- package/dist/src/modular/helpers/typeHelpers.js +6 -1
- package/dist/src/modular/helpers/typeHelpers.js.map +1 -1
- package/dist/src/modular/modularCodeModel.d.ts +2 -0
- package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.d.ts.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.js +3 -5
- package/dist/src/transform/transformApiVersionInfo.js.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.d.ts.map +1 -1
- package/dist/src/transform/transformHelperFunctionDetails.js +7 -10
- package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -1
- package/dist/src/transform/transformParameters.d.ts.map +1 -1
- package/dist/src/transform/transformParameters.js +5 -7
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/src/transform/transformPaths.d.ts.map +1 -1
- package/dist/src/transform/transformPaths.js +4 -6
- package/dist/src/transform/transformPaths.js.map +1 -1
- package/dist/src/transform/transformResponses.d.ts.map +1 -1
- package/dist/src/transform/transformResponses.js +70 -16
- package/dist/src/transform/transformResponses.js.map +1 -1
- package/dist/src/transform/transformSchemas.d.ts.map +1 -1
- package/dist/src/transform/transformSchemas.js +5 -6
- package/dist/src/transform/transformSchemas.js.map +1 -1
- package/dist/src/transform/transformTelemetryInfo.d.ts.map +1 -1
- package/dist/src/transform/transformTelemetryInfo.js +3 -6
- package/dist/src/transform/transformTelemetryInfo.js.map +1 -1
- package/dist/src/transform/transfromRLCOptions.d.ts.map +1 -1
- package/dist/src/transform/transfromRLCOptions.js +5 -6
- package/dist/src/transform/transfromRLCOptions.js.map +1 -1
- package/dist/src/utils/modelUtils.d.ts +3 -3
- package/dist/src/utils/modelUtils.d.ts.map +1 -1
- package/dist/src/utils/modelUtils.js +42 -24
- package/dist/src/utils/modelUtils.js.map +1 -1
- package/dist/src/utils/operationUtil.d.ts +2 -2
- package/dist/src/utils/operationUtil.d.ts.map +1 -1
- package/dist/src/utils/operationUtil.js +5 -7
- package/dist/src/utils/operationUtil.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +23 -23
- package/src/contextManager.ts +4 -0
- package/src/framework/declaration.ts +100 -0
- package/src/framework/hooks/binder.ts +259 -0
- package/src/framework/hooks/sdkTypes.ts +101 -0
- package/src/framework/reference.ts +9 -0
- package/src/framework/refkey.ts +28 -0
- package/src/framework/sample.ts +92 -0
- package/src/framework/utils/tsmorph-helpers.ts +0 -0
- package/src/index.ts +8 -10
- package/src/lib.ts +6 -0
- package/src/modular/buildClassicalClient.ts +11 -4
- package/src/modular/buildClientContext.ts +11 -5
- package/src/modular/buildCodeModel.ts +25 -21
- package/src/modular/buildOperations.ts +13 -41
- package/src/modular/buildRootIndex.ts +1 -1
- package/src/modular/buildSerializeUtils.ts +2 -1
- package/src/modular/helpers/clientHelpers.ts +25 -1
- package/src/modular/helpers/namingHelpers.ts +4 -1
- package/src/modular/helpers/operationHelpers.ts +86 -45
- package/src/modular/helpers/typeHelpers.ts +6 -1
- package/src/modular/modularCodeModel.ts +2 -0
- package/src/transform/transformApiVersionInfo.ts +3 -6
- package/src/transform/transformHelperFunctionDetails.ts +9 -9
- package/src/transform/transformParameters.ts +5 -6
- package/src/transform/transformPaths.ts +5 -9
- package/src/transform/transformResponses.ts +92 -19
- package/src/transform/transformSchemas.ts +6 -5
- package/src/transform/transformTelemetryInfo.ts +3 -5
- package/src/transform/transfromRLCOptions.ts +5 -10
- package/src/utils/modelUtils.ts +49 -39
- package/src/utils/operationUtil.ts +6 -12
- package/dist/src/modular/serialization/collectionUtils.d.ts +0 -3
- package/dist/src/modular/serialization/collectionUtils.d.ts.map +0 -1
- package/dist/src/modular/serialization/collectionUtils.js +0 -17
- package/dist/src/modular/serialization/collectionUtils.js.map +0 -1
- package/dist/src/modular/serialization/index.d.ts +0 -5
- package/dist/src/modular/serialization/index.d.ts.map +0 -1
- package/dist/src/modular/serialization/index.js +0 -155
- package/dist/src/modular/serialization/index.js.map +0 -1
- package/dist/src/modular/serialization/operationHelpers.d.ts +0 -37
- package/dist/src/modular/serialization/operationHelpers.d.ts.map +0 -1
- package/dist/src/modular/serialization/operationHelpers.js +0 -457
- package/dist/src/modular/serialization/operationHelpers.js.map +0 -1
- package/dist/src/modular/serialization/serializeArray.d.ts +0 -5
- package/dist/src/modular/serialization/serializeArray.d.ts.map +0 -1
- package/dist/src/modular/serialization/serializeArray.js +0 -33
- package/dist/src/modular/serialization/serializeArray.js.map +0 -1
- package/dist/src/modular/serialization/serializeDateTime.d.ts +0 -4
- package/dist/src/modular/serialization/serializeDateTime.d.ts.map +0 -1
- package/dist/src/modular/serialization/serializeDateTime.js +0 -19
- package/dist/src/modular/serialization/serializeDateTime.js.map +0 -1
- package/dist/src/modular/serialization/serializeHeaders.d.ts +0 -7
- package/dist/src/modular/serialization/serializeHeaders.d.ts.map +0 -1
- package/dist/src/modular/serialization/serializeHeaders.js +0 -44
- package/dist/src/modular/serialization/serializeHeaders.js.map +0 -1
- package/dist/src/modular/serialization/serializers.d.ts +0 -17
- package/dist/src/modular/serialization/serializers.d.ts.map +0 -1
- package/dist/src/modular/serialization/serializers.js +0 -175
- package/dist/src/modular/serialization/serializers.js.map +0 -1
- package/dist/src/modular/serialization/util.d.ts +0 -27
- package/dist/src/modular/serialization/util.d.ts.map +0 -1
- package/dist/src/modular/serialization/util.js +0 -115
- package/dist/src/modular/serialization/util.js.map +0 -1
- package/dist/src/reify/index.d.ts +0 -12
- package/dist/src/reify/index.d.ts.map +0 -1
- package/dist/src/reify/index.js +0 -22
- package/dist/src/reify/index.js.map +0 -1
- package/src/modular/serialization/collectionUtils.ts +0 -20
- package/src/modular/serialization/index.ts +0 -267
- package/src/modular/serialization/operationHelpers.ts +0 -659
- package/src/modular/serialization/serializeArray.ts +0 -51
- package/src/modular/serialization/serializeDateTime.ts +0 -22
- package/src/modular/serialization/serializeHeaders.ts +0 -64
- package/src/modular/serialization/serializers.ts +0 -304
- package/src/modular/serialization/util.ts +0 -171
- package/src/modular/static/karma.conf.cjs +0 -120
- package/src/reify/index.ts +0 -41
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
import { addImportToSpecifier, getResponseBaseName, getResponseTypeName, NameType } from "@azure-tools/rlc-common";
|
|
2
|
-
import { toPascalCase } from "../../utils/casingUtils.js";
|
|
3
|
-
import { getDocsFromDescription, getFixmeForMultilineDocs } from "../helpers/docsHelpers.js";
|
|
4
|
-
import { getClassicalLayerPrefix, getOperationName } from "../helpers/namingHelpers.js";
|
|
5
|
-
import { buildType } from "../helpers/typeHelpers.js";
|
|
6
|
-
import { UsageFlags } from "@typespec/compiler";
|
|
7
|
-
import _ from "lodash";
|
|
8
|
-
import { serializeType } from "../serialization/serializers.js";
|
|
9
|
-
import { isDefined } from "../serialization/util.js";
|
|
10
|
-
export function getRLCResponseType(rlcResponse) {
|
|
11
|
-
if (!(rlcResponse === null || rlcResponse === void 0 ? void 0 : rlcResponse.responses)) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
return rlcResponse === null || rlcResponse === void 0 ? void 0 : rlcResponse.responses.map((resp) => {
|
|
15
|
-
var _a;
|
|
16
|
-
const baseResponseName = getResponseBaseName(rlcResponse.operationGroup, rlcResponse.operationName, resp.statusCode);
|
|
17
|
-
// Get the information to build the Response Interface
|
|
18
|
-
return (_a = resp.predefinedName) !== null && _a !== void 0 ? _a : getResponseTypeName(baseResponseName);
|
|
19
|
-
}).join(" | ");
|
|
20
|
-
}
|
|
21
|
-
export function getRLCLroLogicalResponse(rlcResponse) {
|
|
22
|
-
var _a;
|
|
23
|
-
const logicalResponse = ((_a = rlcResponse === null || rlcResponse === void 0 ? void 0 : rlcResponse.responses) !== null && _a !== void 0 ? _a : []).filter((r) => r.predefinedName && r.predefinedName.endsWith(`LogicalResponse`));
|
|
24
|
-
return logicalResponse.length > 0
|
|
25
|
-
? logicalResponse[0].predefinedName
|
|
26
|
-
: "any";
|
|
27
|
-
}
|
|
28
|
-
export function getSendPrivateFunction(dpgContext, operation, clientType, serializerMap, runtimeImports) {
|
|
29
|
-
var _a;
|
|
30
|
-
const parameters = getOperationSignatureParameters(operation, clientType);
|
|
31
|
-
const { name } = getOperationName(operation);
|
|
32
|
-
const returnType = `StreamableMethod<${getRLCResponseType(operation.rlcResponse)}>`;
|
|
33
|
-
const functionStatement = {
|
|
34
|
-
isAsync: false,
|
|
35
|
-
isExported: true,
|
|
36
|
-
name: `_${name}Send`,
|
|
37
|
-
parameters,
|
|
38
|
-
returnType
|
|
39
|
-
};
|
|
40
|
-
const operationPath = operation.url;
|
|
41
|
-
const operationMethod = operation.method.toLowerCase();
|
|
42
|
-
const optionalParamName = (_a = parameters.filter((p) => { var _a; return (_a = p.type) === null || _a === void 0 ? void 0 : _a.toString().endsWith("OptionalParams"); })[0]) === null || _a === void 0 ? void 0 : _a.name;
|
|
43
|
-
const statements = [];
|
|
44
|
-
statements.push(`return context.path("${operationPath}", ${getPathParameters(operation)}).${operationMethod}({...operationOptionsToRequestParameters(${optionalParamName}), ${getRequestParameters(dpgContext, operation, serializerMap, runtimeImports)}}) ${operation.isOverload ? `as ${returnType}` : ``} ;`);
|
|
45
|
-
return {
|
|
46
|
-
...functionStatement,
|
|
47
|
-
statements
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
export function getDeserializePrivateFunction(dpgContext, operation, needSubClient, needUnexpectedHelper, runtimeImports, serializerMap) {
|
|
51
|
-
var _a, _b, _c, _d, _e;
|
|
52
|
-
const { name } = getOperationName(operation);
|
|
53
|
-
const parameters = [
|
|
54
|
-
{
|
|
55
|
-
name: "result",
|
|
56
|
-
type: getRLCResponseType(operation.rlcResponse)
|
|
57
|
-
}
|
|
58
|
-
];
|
|
59
|
-
// TODO: Support LRO + paging operation
|
|
60
|
-
// https://github.com/Azure/autorest.typescript/issues/2313
|
|
61
|
-
const isLroOnly = isLroOnlyOperation(operation);
|
|
62
|
-
// TODO: Support operation overloads
|
|
63
|
-
const response = operation.responses[0];
|
|
64
|
-
let returnType;
|
|
65
|
-
if (isLroOnly && operation.method.toLowerCase() !== "patch") {
|
|
66
|
-
returnType = buildLroReturnType(operation);
|
|
67
|
-
}
|
|
68
|
-
else if ((_a = response === null || response === void 0 ? void 0 : response.type) === null || _a === void 0 ? void 0 : _a.type) {
|
|
69
|
-
returnType = buildType(response.type.name, response.type, response.type.format);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
returnType = { name: "", type: "void" };
|
|
73
|
-
}
|
|
74
|
-
const functionStatement = {
|
|
75
|
-
isAsync: true,
|
|
76
|
-
isExported: true,
|
|
77
|
-
name: `_${name}Deserialize`,
|
|
78
|
-
parameters,
|
|
79
|
-
returnType: `Promise<${returnType.type}>`
|
|
80
|
-
};
|
|
81
|
-
const statements = [];
|
|
82
|
-
if (needUnexpectedHelper) {
|
|
83
|
-
statements.push(`if(${needSubClient ? "UnexpectedHelper." : ""}isUnexpected(result)){`, `throw createRestError(result);`, "}");
|
|
84
|
-
addImportToSpecifier("restClient", runtimeImports, "createRestError");
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
const validStatus = [
|
|
88
|
-
...new Set(operation.responses
|
|
89
|
-
.flatMap((r) => r.statusCodes)
|
|
90
|
-
.filter((s) => s !== "default"))
|
|
91
|
-
];
|
|
92
|
-
if (validStatus.length > 0) {
|
|
93
|
-
statements.push(`if(${validStatus
|
|
94
|
-
.map((s) => `result.status !== "${s}"`)
|
|
95
|
-
.join(" || ")}){`, `throw createRestError(result);`, "}");
|
|
96
|
-
addImportToSpecifier("restClient", runtimeImports, "createRestError");
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
let deserializedType = isLroOnly
|
|
100
|
-
? (_b = operation === null || operation === void 0 ? void 0 : operation.lroMetadata) === null || _b === void 0 ? void 0 : _b.finalResult
|
|
101
|
-
: (_c = response === null || response === void 0 ? void 0 : response.type) !== null && _c !== void 0 ? _c : "void"; // Is setting void here correct? We are handling the case where no response above but here we are
|
|
102
|
-
let hasLroSubPath = ((_d = operation === null || operation === void 0 ? void 0 : operation.lroMetadata) === null || _d === void 0 ? void 0 : _d.finalResultPath) !== undefined;
|
|
103
|
-
let deserializedRoot = hasLroSubPath
|
|
104
|
-
? `result.body.${(_e = operation === null || operation === void 0 ? void 0 : operation.lroMetadata) === null || _e === void 0 ? void 0 : _e.finalResultPath}`
|
|
105
|
-
: "result.body";
|
|
106
|
-
// TODO: Hard-coded for LRO PATCH case for now
|
|
107
|
-
// https://github.com/Azure/autorest.typescript/issues/2314
|
|
108
|
-
if (isLroOnly && operation.method.toLowerCase() === "patch") {
|
|
109
|
-
deserializedType = response.type;
|
|
110
|
-
hasLroSubPath = false;
|
|
111
|
-
deserializedRoot = "result.body";
|
|
112
|
-
}
|
|
113
|
-
if (isLroOnly) {
|
|
114
|
-
const lroLogicalResponse = getRLCLroLogicalResponse(operation.rlcResponse);
|
|
115
|
-
statements.push(`result = result as ${lroLogicalResponse};`);
|
|
116
|
-
if (hasLroSubPath) {
|
|
117
|
-
statements.push(`if(${deserializedRoot.split(".").join("?.")} === undefined) {
|
|
118
|
-
throw createRestError(\`Expected a result in the response at position "${deserializedRoot}"\`, result);
|
|
119
|
-
}
|
|
120
|
-
`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (isDefined(deserializedType === null || deserializedType === void 0 ? void 0 : deserializedType.tcgcType)) {
|
|
124
|
-
statements.push(`return ${deserializeResponseValue(dpgContext, serializerMap, deserializedType, deserializedRoot, runtimeImports)}`);
|
|
125
|
-
}
|
|
126
|
-
else if (returnType.type === "void") {
|
|
127
|
-
statements.push("return");
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
statements.push(`return result.body`);
|
|
131
|
-
}
|
|
132
|
-
return {
|
|
133
|
-
...functionStatement,
|
|
134
|
-
statements
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
export function getOperationSignatureParameters(operation, clientType) {
|
|
138
|
-
var _a;
|
|
139
|
-
const optionsType = getOperationOptionsName(operation, true);
|
|
140
|
-
const parameters = new Map();
|
|
141
|
-
operation.parameters
|
|
142
|
-
.filter((p) => p.implementation === "Method" &&
|
|
143
|
-
p.type.type !== "constant" &&
|
|
144
|
-
p.clientDefaultValue === undefined &&
|
|
145
|
-
!p.optional)
|
|
146
|
-
.map((p) => buildType(p.clientName, p.type, p.format))
|
|
147
|
-
.forEach((p) => {
|
|
148
|
-
parameters.set(p.name, p);
|
|
149
|
-
});
|
|
150
|
-
if (operation.bodyParameter) {
|
|
151
|
-
parameters.set((_a = operation.bodyParameter) === null || _a === void 0 ? void 0 : _a.clientName, {
|
|
152
|
-
hasQuestionToken: operation.bodyParameter.optional,
|
|
153
|
-
...buildType(operation.bodyParameter.clientName, operation.bodyParameter.type, operation.bodyParameter.type.format)
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
// Add context as the first parameter
|
|
157
|
-
const contextParam = { name: "context", type: clientType };
|
|
158
|
-
// Add the options parameter
|
|
159
|
-
const optionsParam = {
|
|
160
|
-
name: parameters.has("options") ? "optionalParams" : "options",
|
|
161
|
-
type: optionsType,
|
|
162
|
-
initializer: "{ requestOptions: {} }"
|
|
163
|
-
};
|
|
164
|
-
const finalParameters = [contextParam, ...parameters.values(), optionsParam];
|
|
165
|
-
return finalParameters;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* This operation builds and returns the function declaration for an operation.
|
|
169
|
-
*/
|
|
170
|
-
export function getOperationFunction(operation, clientType) {
|
|
171
|
-
var _a, _b;
|
|
172
|
-
if (isPagingOnlyOperation(operation)) {
|
|
173
|
-
// Case 1: paging-only operation
|
|
174
|
-
return getPagingOnlyOperationFunction(operation, clientType);
|
|
175
|
-
}
|
|
176
|
-
else if (isLroOnlyOperation(operation)) {
|
|
177
|
-
// Case 2: lro-only operation
|
|
178
|
-
return getLroOnlyOperationFunction(operation, clientType);
|
|
179
|
-
}
|
|
180
|
-
else if (isLroAndPagingOperation(operation)) {
|
|
181
|
-
// Case 3: both paging + lro operation is not supported yet so handle them as normal operation and customization may be needed
|
|
182
|
-
// https://github.com/Azure/autorest.typescript/issues/2313
|
|
183
|
-
}
|
|
184
|
-
// Extract required parameters
|
|
185
|
-
const parameters = getOperationSignatureParameters(operation, clientType);
|
|
186
|
-
// TODO: Support operation overloads
|
|
187
|
-
const response = operation.responses[0];
|
|
188
|
-
let returnType = { name: "", type: "void" };
|
|
189
|
-
if ((_a = response.type) === null || _a === void 0 ? void 0 : _a.type) {
|
|
190
|
-
const type = (_b = extractPagingType(response.type, operation.itemName)) !== null && _b !== void 0 ? _b : response.type;
|
|
191
|
-
returnType = buildType(type.name, type, type.format);
|
|
192
|
-
}
|
|
193
|
-
const { name, fixme = [] } = getOperationName(operation);
|
|
194
|
-
const functionStatement = {
|
|
195
|
-
docs: [
|
|
196
|
-
...getDocsFromDescription(operation.description),
|
|
197
|
-
...getFixmeForMultilineDocs(fixme)
|
|
198
|
-
],
|
|
199
|
-
isAsync: true,
|
|
200
|
-
isExported: true,
|
|
201
|
-
name,
|
|
202
|
-
propertyName: operation.name,
|
|
203
|
-
parameters,
|
|
204
|
-
returnType: `Promise<${returnType.type}>`
|
|
205
|
-
};
|
|
206
|
-
const statements = [];
|
|
207
|
-
statements.push(`const result = await _${name}Send(${parameters
|
|
208
|
-
.map((p) => p.name)
|
|
209
|
-
.join(", ")});`);
|
|
210
|
-
statements.push(`return _${name}Deserialize(result);`);
|
|
211
|
-
return {
|
|
212
|
-
...functionStatement,
|
|
213
|
-
statements
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
function getLroOnlyOperationFunction(operation, clientType) {
|
|
217
|
-
// Extract required parameters
|
|
218
|
-
const parameters = getOperationSignatureParameters(operation, clientType);
|
|
219
|
-
const returnType = buildLroReturnType(operation);
|
|
220
|
-
const { name, fixme = [] } = getOperationName(operation);
|
|
221
|
-
const functionStatement = {
|
|
222
|
-
docs: [
|
|
223
|
-
...getDocsFromDescription(operation.description),
|
|
224
|
-
...getFixmeForMultilineDocs(fixme)
|
|
225
|
-
],
|
|
226
|
-
isAsync: false,
|
|
227
|
-
isExported: true,
|
|
228
|
-
name,
|
|
229
|
-
propertyName: operation.name,
|
|
230
|
-
parameters,
|
|
231
|
-
returnType: `PollerLike<OperationState<${returnType.type}>, ${returnType.type}>`
|
|
232
|
-
};
|
|
233
|
-
const statements = [];
|
|
234
|
-
statements.push(`
|
|
235
|
-
return getLongRunningPoller(context, _${name}Deserialize, {
|
|
236
|
-
updateIntervalInMs: options?.updateIntervalInMs,
|
|
237
|
-
abortSignal: options?.abortSignal,
|
|
238
|
-
getInitialResponse: () => _${name}Send(${parameters
|
|
239
|
-
.map((p) => p.name)
|
|
240
|
-
.join(", ")})
|
|
241
|
-
}) as PollerLike<OperationState<${returnType.type}>, ${returnType.type}>;
|
|
242
|
-
`);
|
|
243
|
-
return {
|
|
244
|
-
...functionStatement,
|
|
245
|
-
statements
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
export function buildLroReturnType(operation) {
|
|
249
|
-
const metadata = operation.lroMetadata;
|
|
250
|
-
if (metadata !== undefined && metadata.finalResult !== undefined) {
|
|
251
|
-
const type = metadata.finalResult;
|
|
252
|
-
return buildType(type.name, type, type.format);
|
|
253
|
-
}
|
|
254
|
-
return { name: "", type: "void" };
|
|
255
|
-
}
|
|
256
|
-
export function getPagingOnlyOperationFunction(operation, clientType) {
|
|
257
|
-
var _a, _b;
|
|
258
|
-
// Extract required parameters
|
|
259
|
-
const parameters = getOperationSignatureParameters(operation, clientType);
|
|
260
|
-
// TODO: Support operation overloads
|
|
261
|
-
const response = operation.responses[0];
|
|
262
|
-
let returnType = { name: "", type: "void" };
|
|
263
|
-
if ((_a = response === null || response === void 0 ? void 0 : response.type) === null || _a === void 0 ? void 0 : _a.type) {
|
|
264
|
-
const type = (_b = extractPagingType(response.type, operation.itemName)) !== null && _b !== void 0 ? _b : response.type;
|
|
265
|
-
returnType = buildType(type.name, type, type.format);
|
|
266
|
-
}
|
|
267
|
-
const { name, fixme = [] } = getOperationName(operation);
|
|
268
|
-
const functionStatement = {
|
|
269
|
-
docs: [
|
|
270
|
-
...getDocsFromDescription(operation.description),
|
|
271
|
-
...getFixmeForMultilineDocs(fixme)
|
|
272
|
-
],
|
|
273
|
-
isAsync: false,
|
|
274
|
-
isExported: true,
|
|
275
|
-
name,
|
|
276
|
-
propertyName: operation.name,
|
|
277
|
-
parameters,
|
|
278
|
-
returnType: `PagedAsyncIterableIterator<${returnType.type}>`
|
|
279
|
-
};
|
|
280
|
-
const statements = [];
|
|
281
|
-
const options = [];
|
|
282
|
-
if (operation.itemName) {
|
|
283
|
-
options.push(`itemName: "${operation.itemName}"`);
|
|
284
|
-
}
|
|
285
|
-
if (operation.continuationTokenName) {
|
|
286
|
-
options.push(`nextLinkName: "${operation.continuationTokenName}"`);
|
|
287
|
-
}
|
|
288
|
-
statements.push(`return buildPagedAsyncIterator(
|
|
289
|
-
context,
|
|
290
|
-
() => _${name}Send(${parameters.map((p) => p.name).join(", ")}),
|
|
291
|
-
_${name}Deserialize,
|
|
292
|
-
${options.length > 0 ? `{${options.join(", ")}}` : ``}
|
|
293
|
-
);`);
|
|
294
|
-
return {
|
|
295
|
-
...functionStatement,
|
|
296
|
-
statements
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
function extractPagingType(type, itemName) {
|
|
300
|
-
var _a, _b, _c;
|
|
301
|
-
if (!itemName) {
|
|
302
|
-
return undefined;
|
|
303
|
-
}
|
|
304
|
-
const prop = (_b = ((_a = type.properties) !== null && _a !== void 0 ? _a : [])) === null || _b === void 0 ? void 0 : _b.filter((prop) => prop.restApiName === itemName).map((prop) => prop.type);
|
|
305
|
-
if (prop.length === 0) {
|
|
306
|
-
return undefined;
|
|
307
|
-
}
|
|
308
|
-
return ((_c = prop[0]) === null || _c === void 0 ? void 0 : _c.type) === "list" && prop[0].elementType
|
|
309
|
-
? prop[0].elementType
|
|
310
|
-
: undefined;
|
|
311
|
-
}
|
|
312
|
-
export function getOperationOptionsName(operation, includeGroupName = false) {
|
|
313
|
-
const prefix = includeGroupName && operation.name.indexOf("_") === -1
|
|
314
|
-
? getClassicalLayerPrefix(operation, NameType.Interface)
|
|
315
|
-
: "";
|
|
316
|
-
const optionName = `${prefix}${toPascalCase(operation.name)}OptionalParams`;
|
|
317
|
-
return optionName;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* This function build the request parameters that we will provide to the
|
|
321
|
-
* RLC internally. This will translate High Level parameters into the RLC ones.
|
|
322
|
-
* Figuring out what goes in headers, body, path and qsp.
|
|
323
|
-
*/
|
|
324
|
-
function getRequestParameters(dpgContext, operation, serializerMap, runtimeImports) {
|
|
325
|
-
if (!operation.parameters) {
|
|
326
|
-
return "";
|
|
327
|
-
}
|
|
328
|
-
const operationParameters = operation.parameters.filter((p) => p.implementation !== "Client" && !isContentType(p));
|
|
329
|
-
const contentTypeParameter = operation.parameters.find(isContentType);
|
|
330
|
-
const parametersImplementation = _.groupBy(operationParameters, (p) => p.location);
|
|
331
|
-
parametersImplementation["body"] = isDefined(operation.bodyParameter)
|
|
332
|
-
? [operation.bodyParameter]
|
|
333
|
-
: parametersImplementation["body"];
|
|
334
|
-
const params = [
|
|
335
|
-
...(contentTypeParameter
|
|
336
|
-
? [getContentTypeValue(contentTypeParameter)]
|
|
337
|
-
: []),
|
|
338
|
-
...[
|
|
339
|
-
[
|
|
340
|
-
["headers", "header"],
|
|
341
|
-
["queryParameters", "query"],
|
|
342
|
-
["body", "body"]
|
|
343
|
-
]
|
|
344
|
-
.map(([id, location]) => [id, parametersImplementation[location]])
|
|
345
|
-
.filter(([_, paramList]) => paramList === null || paramList === void 0 ? void 0 : paramList.length)
|
|
346
|
-
.flatMap(([id, paramList]) => paramList.map((i) => {
|
|
347
|
-
const initializer = serializeType({
|
|
348
|
-
dpgContext,
|
|
349
|
-
functionType: UsageFlags.Input,
|
|
350
|
-
serializerMap,
|
|
351
|
-
type: i.tcgcType,
|
|
352
|
-
valueExpr: id === "body" ? i.clientName : `options?.${i.clientName}`,
|
|
353
|
-
importCallback: (importType, importedName) => addImportToSpecifier(importType, runtimeImports, importedName)
|
|
354
|
-
});
|
|
355
|
-
return `${id}: ${initializer}`;
|
|
356
|
-
}))
|
|
357
|
-
]
|
|
358
|
-
];
|
|
359
|
-
return params.join(",\n");
|
|
360
|
-
}
|
|
361
|
-
function isContentType(param) {
|
|
362
|
-
return (param.location === "header" &&
|
|
363
|
-
param.restApiName.toLowerCase() === "content-type");
|
|
364
|
-
}
|
|
365
|
-
function getContentTypeValue(param) {
|
|
366
|
-
var _a;
|
|
367
|
-
const defaultValue = (_a = param.clientDefaultValue) !== null && _a !== void 0 ? _a : param.type.clientDefaultValue;
|
|
368
|
-
if (defaultValue) {
|
|
369
|
-
return `contentType: options.${param.clientName} as any ?? "${defaultValue}"`;
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
return `contentType: ${!param.optional
|
|
373
|
-
? "contentType"
|
|
374
|
-
: "options." + param.clientName + " as any"}`;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
/**
|
|
378
|
-
* Builds the assignment for when a property or parameter has a default value
|
|
379
|
-
*/
|
|
380
|
-
function getDefaultValue(param) {
|
|
381
|
-
var _a, _b;
|
|
382
|
-
return ((_a = param.clientDefaultValue) !== null && _a !== void 0 ? _a : param.type.clientDefaultValue) !==
|
|
383
|
-
undefined
|
|
384
|
-
? `${param.optional ? "??" : ""} "${(_b = param.clientDefaultValue) !== null && _b !== void 0 ? _b : param.type.clientDefaultValue}"`
|
|
385
|
-
: "";
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Extracts the path parameters
|
|
389
|
-
*/
|
|
390
|
-
function getPathParameters(operation) {
|
|
391
|
-
if (!operation.parameters) {
|
|
392
|
-
return "";
|
|
393
|
-
}
|
|
394
|
-
let pathParams = "";
|
|
395
|
-
for (const param of operation.parameters) {
|
|
396
|
-
if (param.location === "path") {
|
|
397
|
-
if (!param.optional) {
|
|
398
|
-
pathParams += `${pathParams !== "" ? "," : ""} ${param.clientName}`;
|
|
399
|
-
continue;
|
|
400
|
-
}
|
|
401
|
-
const defaultValue = getDefaultValue(param);
|
|
402
|
-
pathParams += `${pathParams !== "" ? "," : ""} options.${param.clientName}`;
|
|
403
|
-
if (defaultValue) {
|
|
404
|
-
pathParams += ` ?? "${defaultValue}"`;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
return pathParams;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* This function helps converting strings into JS complex types recursively.
|
|
412
|
-
* We need to drill down into Array elements to make sure that the element type is
|
|
413
|
-
* deserialized correctly
|
|
414
|
-
*/
|
|
415
|
-
function deserializeResponseValue(dpgContext, serializerMap, type, restValue, runtimeImports) {
|
|
416
|
-
return serializeType({
|
|
417
|
-
dpgContext,
|
|
418
|
-
functionType: UsageFlags.Output,
|
|
419
|
-
serializerMap,
|
|
420
|
-
type: type.tcgcType,
|
|
421
|
-
valueExpr: restValue,
|
|
422
|
-
importCallback: (importType, importedName) => addImportToSpecifier(importType, runtimeImports, importedName)
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
function isLroAndPagingOperation(op) {
|
|
426
|
-
return op.discriminator === "lropaging";
|
|
427
|
-
}
|
|
428
|
-
export function isLroOnlyOperation(op) {
|
|
429
|
-
return op.discriminator === "lro";
|
|
430
|
-
}
|
|
431
|
-
export function hasPagingOnlyOperation(clientOrCodeModel, needRLC = false) {
|
|
432
|
-
let clients = [];
|
|
433
|
-
if (clientOrCodeModel === null || clientOrCodeModel === void 0 ? void 0 : clientOrCodeModel.operationGroups) {
|
|
434
|
-
clients = [clientOrCodeModel];
|
|
435
|
-
}
|
|
436
|
-
else if (clientOrCodeModel === null || clientOrCodeModel === void 0 ? void 0 : clientOrCodeModel.clients) {
|
|
437
|
-
clients = clientOrCodeModel.clients;
|
|
438
|
-
}
|
|
439
|
-
return clients.some((c) => {
|
|
440
|
-
var _a;
|
|
441
|
-
return (needRLC ? c.rlcHelperDetails.hasPaging : false) ||
|
|
442
|
-
((_a = c.operationGroups) !== null && _a !== void 0 ? _a : []).some((og) => { var _a; return ((_a = og.operations) !== null && _a !== void 0 ? _a : []).some(isPagingOnlyOperation); });
|
|
443
|
-
});
|
|
444
|
-
}
|
|
445
|
-
export function isPagingOnlyOperation(op) {
|
|
446
|
-
return op.discriminator === "paging";
|
|
447
|
-
}
|
|
448
|
-
export function getAllAncestors(type) {
|
|
449
|
-
var _a;
|
|
450
|
-
const ancestors = [];
|
|
451
|
-
(_a = type === null || type === void 0 ? void 0 : type.parents) === null || _a === void 0 ? void 0 : _a.forEach((p) => {
|
|
452
|
-
ancestors.push(p);
|
|
453
|
-
ancestors.push(...getAllAncestors(p));
|
|
454
|
-
});
|
|
455
|
-
return ancestors;
|
|
456
|
-
}
|
|
457
|
-
//# sourceMappingURL=operationHelpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"operationHelpers.js","sourceRoot":"","sources":["../../../../src/modular/serialization/operationHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { SdkArrayType } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { SerializeTypeOptions } from "./serializers.js";
|
|
3
|
-
import { SerializerOutput } from "./util.js";
|
|
4
|
-
export declare function serializeArray(options: SerializeTypeOptions<SdkArrayType>): SerializerOutput;
|
|
5
|
-
//# sourceMappingURL=serializeArray.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeArray.d.ts","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeArray.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEb,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAiB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAkC,MAAM,WAAW,CAAC;AAE7E,wBAAgB,cAAc,CAC5B,OAAO,EAAE,oBAAoB,CAAC,YAAY,CAAC,GAC1C,gBAAgB,CAwClB"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { UsageFlags } from "@typespec/compiler";
|
|
2
|
-
import { serializeType } from "./serializers.js";
|
|
3
|
-
import { getModularTypeId, getRLCTypeId } from "./util.js";
|
|
4
|
-
export function serializeArray(options) {
|
|
5
|
-
var _a, _b;
|
|
6
|
-
const { dpgContext, functionType, serializerMap, type, valueExpr } = options;
|
|
7
|
-
const valueType = type.valueType;
|
|
8
|
-
const mapParameterId = "e";
|
|
9
|
-
const elementTypeName = functionType === UsageFlags.Input
|
|
10
|
-
? getModularTypeId(valueType)
|
|
11
|
-
: getRLCTypeId(dpgContext, valueType);
|
|
12
|
-
const serializedChildExpr = serializeType({
|
|
13
|
-
...options,
|
|
14
|
-
type: valueType,
|
|
15
|
-
valueExpr: mapParameterId
|
|
16
|
-
});
|
|
17
|
-
if (serializedChildExpr === mapParameterId) {
|
|
18
|
-
// mapping over identity function, so map is unnecessary
|
|
19
|
-
// arr.map((e) => e) -> arr
|
|
20
|
-
return valueExpr;
|
|
21
|
-
}
|
|
22
|
-
// arr.map((e) => f(e)) -> arr.map(f)
|
|
23
|
-
const unaryFunctionInvocation = /(?<functionName>\w+)\((?<childArgExpr>\w+)\)/;
|
|
24
|
-
const { functionName, childArgExpr } = (_b = (_a = serializedChildExpr.match(unaryFunctionInvocation)) === null || _a === void 0 ? void 0 : _a.groups) !== null && _b !== void 0 ? _b : {};
|
|
25
|
-
const mapArg = elementTypeName && (serializerMap === null || serializerMap === void 0 ? void 0 : serializerMap[elementTypeName])
|
|
26
|
-
? mapParameterId
|
|
27
|
-
: `${mapParameterId}: ${elementTypeName}`;
|
|
28
|
-
const mapFunction = childArgExpr === mapParameterId
|
|
29
|
-
? functionName
|
|
30
|
-
: `(${mapArg})=>(${serializedChildExpr})`;
|
|
31
|
-
return `${valueExpr}.map(${mapFunction})`;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=serializeArray.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeArray.js","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeArray.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAwB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAoB,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7E,MAAM,UAAU,cAAc,CAC5B,OAA2C;;IAE3C,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAwC,CAAC;IAChE,MAAM,cAAc,GAAG,GAAG,CAAC;IAE3B,MAAM,eAAe,GACnB,YAAY,KAAK,UAAU,CAAC,KAAK;QAC/B,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAC7B,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE1C,MAAM,mBAAmB,GAAG,aAAa,CAAC;QACxC,GAAG,OAAO;QACV,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,cAAc;KAC1B,CAAC,CAAC;IAEH,IAAI,mBAAmB,KAAK,cAAc,EAAE,CAAC;QAC3C,wDAAwD;QACxD,2BAA2B;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qCAAqC;IACrC,MAAM,uBAAuB,GAC3B,8CAA8C,CAAC;IAEjD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAClC,MAAA,MAAA,mBAAmB,CAAC,KAAK,CAAC,uBAAuB,CAAC,0CAAE,MAAM,mCAAI,EAAE,CAAC;IAEnE,MAAM,MAAM,GACV,eAAe,KAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,eAAe,CAAC,CAAA;QACjD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,cAAc,KAAK,eAAe,EAAE,CAAC;IAE9C,MAAM,WAAW,GACf,YAAY,KAAK,cAAc;QAC7B,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,MAAM,OAAO,mBAAmB,GAAG,CAAC;IAE9C,OAAO,GAAG,SAAS,QAAQ,WAAW,GAAG,CAAC;AAC5C,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { SdkDatetimeType } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { SerializeTypeOptions } from "./serializers.js";
|
|
3
|
-
export declare function serializeDatetime(options: SerializeTypeOptions<SdkDatetimeType>): string;
|
|
4
|
-
//# sourceMappingURL=serializeDateTime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeDateTime.d.ts","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeDateTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,oBAAoB,CAAC,eAAe,CAAC,GAC7C,MAAM,CAeR"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { UsageFlags } from "@typespec/compiler";
|
|
2
|
-
export function serializeDatetime(options) {
|
|
3
|
-
const { functionType, type, valueExpr } = options;
|
|
4
|
-
if (functionType === UsageFlags.Input) {
|
|
5
|
-
switch (type.encode) {
|
|
6
|
-
case "rfc7231":
|
|
7
|
-
return `(${valueExpr}).toUTCString()`;
|
|
8
|
-
case "unixTimestamp":
|
|
9
|
-
return `(${valueExpr}).getTime()`;
|
|
10
|
-
case "rfc3339":
|
|
11
|
-
default:
|
|
12
|
-
return `(${valueExpr}).toISOString()`;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return `new Date(${valueExpr})`;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=serializeDateTime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeDateTime.js","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeDateTime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,UAAU,iBAAiB,CAC/B,OAA8C;IAE9C,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAClD,IAAI,YAAY,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QACtC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,IAAI,SAAS,iBAAiB,CAAC;YACxC,KAAK,eAAe;gBAClB,OAAO,IAAI,SAAS,aAAa,CAAC;YACpC,KAAK,SAAS,CAAC;YACf;gBACE,OAAO,IAAI,SAAS,iBAAiB,CAAC;QAC1C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,SAAS,GAAG,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { SdkHeaderParameter } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { SerializeTypeOptions } from "./serializers.js";
|
|
3
|
-
import { SerializerOutput } from "./util.js";
|
|
4
|
-
export declare function serializeHeader(options: SerializeTypeOptions<SdkHeaderParameter & {
|
|
5
|
-
kind: "header";
|
|
6
|
-
}>): SerializerOutput;
|
|
7
|
-
//# sourceMappingURL=serializeHeaders.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeHeaders.d.ts","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAEnB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAiB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAK7C,wBAAgB,eAAe,CAC7B,OAAO,EAAE,oBAAoB,CAC3B,kBAAkB,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;CAChB,CACF,GACA,gBAAgB,CA+ClB"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { UsageFlags } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { serializeType } from "./serializers.js";
|
|
3
|
-
import { getCollectionSeparator } from "./collectionUtils.js";
|
|
4
|
-
import { serializeArray } from "./serializeArray.js";
|
|
5
|
-
import { isNumericTypeKind } from "../helpers/typeHelpers.js";
|
|
6
|
-
export function serializeHeader(options) {
|
|
7
|
-
const { type, functionType, valueExpr } = options;
|
|
8
|
-
// We need to handle arrays differently than other types.
|
|
9
|
-
// For headers arrays are serialized as a single string with a separator.
|
|
10
|
-
if (type.type.kind === "array") {
|
|
11
|
-
const separator = JSON.stringify(getCollectionSeparator(type.collectionFormat));
|
|
12
|
-
if (functionType === UsageFlags.Input) {
|
|
13
|
-
// Serialization
|
|
14
|
-
// Here we need to turn an array into a string with a separator.
|
|
15
|
-
// We can use the serializeArray function to do this.
|
|
16
|
-
const serializedArray = serializeArray({
|
|
17
|
-
...options,
|
|
18
|
-
type: type.type
|
|
19
|
-
});
|
|
20
|
-
// Now that we have serialized the array, we can join the elements with the separator.
|
|
21
|
-
return `${serializedArray}.join(${separator})`;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
// Deserialization
|
|
25
|
-
// Here we have a string that we need to split into an array.
|
|
26
|
-
const array = `${valueExpr}.split(${separator})`;
|
|
27
|
-
// No need to parse if the elements ar strings
|
|
28
|
-
if (type.type.valueType.kind === "string") {
|
|
29
|
-
return array;
|
|
30
|
-
}
|
|
31
|
-
if (isNumericTypeKind(type.type.valueType.kind) ||
|
|
32
|
-
type.type.valueType.kind === "boolean") {
|
|
33
|
-
return `${array}.map(e => JSON.parse(e))`;
|
|
34
|
-
}
|
|
35
|
-
return `${array}.map(e => ${serializeType({
|
|
36
|
-
...options,
|
|
37
|
-
type: type.type.valueType,
|
|
38
|
-
valueExpr: "e"
|
|
39
|
-
})})`;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return serializeType({ ...options, type: type.type });
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=serializeHeaders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeHeaders.js","sourceRoot":"","sources":["../../../../src/modular/serialization/serializeHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACX,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAwB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,UAAU,eAAe,CAC7B,OAIC;IAED,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAElD,yDAAyD;IACzD,yEAAyE;IACzE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAC9C,CAAC;QAEF,IAAI,YAAY,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;YACtC,gBAAgB;YAChB,gEAAgE;YAChE,qDAAqD;YACrD,MAAM,eAAe,GAAG,cAAc,CAAC;gBACrC,GAAG,OAAO;gBACV,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,sFAAsF;YACtF,OAAO,GAAG,eAAe,SAAS,SAAS,GAAG,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,6DAA6D;YAC7D,MAAM,KAAK,GAAG,GAAG,SAAS,UAAU,SAAS,GAAG,CAAC;YAEjD,8CAA8C;YAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IACE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EACtC,CAAC;gBACD,OAAO,GAAG,KAAK,0BAA0B,CAAC;YAC5C,CAAC;YAED,OAAO,GAAG,KAAK,aAAa,aAAa,CAAC;gBACxC,GAAG,OAAO;gBACV,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,GAAG;aACf,CAAC,GAAG,CAAC;QACR,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { ImportType } from "@azure-tools/rlc-common";
|
|
2
|
-
import { SdkContext, SdkEnumType, SdkModelPropertyType, SdkModelType, SdkType, SdkUnionType } from "@azure-tools/typespec-client-generator-core";
|
|
3
|
-
import { UsageFlags } from "@typespec/compiler";
|
|
4
|
-
import { SerializerMap, SerializerOutput } from "./util.js";
|
|
5
|
-
export interface SerializeTypeOptions<TCGCType extends SdkType | SdkModelPropertyType> {
|
|
6
|
-
dpgContext: SdkContext;
|
|
7
|
-
functionType: UsageFlags;
|
|
8
|
-
serializerMap?: SerializerMap;
|
|
9
|
-
type: TCGCType;
|
|
10
|
-
valueExpr: string;
|
|
11
|
-
importCallback: (importType: ImportType, importedName: string) => void;
|
|
12
|
-
}
|
|
13
|
-
export declare function serializeType<TCGCType extends SdkType | SdkModelPropertyType>(options: SerializeTypeOptions<TCGCType>): SerializerOutput;
|
|
14
|
-
export declare function serializeModelPropertiesInline(options: SerializeTypeOptions<SdkModelType>): string;
|
|
15
|
-
export declare function serializeUnionInline(options: SerializeTypeOptions<SdkUnionType>): string;
|
|
16
|
-
export declare function serializeEnumFunctionBody(options: SerializeTypeOptions<SdkEnumType>): string;
|
|
17
|
-
//# sourceMappingURL=serializers.d.ts.map
|