@typespec/openapi3 0.60.0-dev.5 → 0.60.0-dev.6

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.
Files changed (50) hide show
  1. package/dist/src/cli/actions/convert/convert-file.d.ts.map +1 -1
  2. package/dist/src/cli/actions/convert/convert-file.js +4 -2
  3. package/dist/src/cli/actions/convert/convert-file.js.map +1 -1
  4. package/dist/src/cli/actions/convert/convert.d.ts.map +1 -1
  5. package/dist/src/cli/actions/convert/convert.js +4 -2
  6. package/dist/src/cli/actions/convert/convert.js.map +1 -1
  7. package/dist/src/cli/actions/convert/generators/generate-main.d.ts +2 -1
  8. package/dist/src/cli/actions/convert/generators/generate-main.d.ts.map +1 -1
  9. package/dist/src/cli/actions/convert/generators/generate-main.js +4 -4
  10. package/dist/src/cli/actions/convert/generators/generate-main.js.map +1 -1
  11. package/dist/src/cli/actions/convert/generators/generate-model.d.ts +3 -3
  12. package/dist/src/cli/actions/convert/generators/generate-model.d.ts.map +1 -1
  13. package/dist/src/cli/actions/convert/generators/generate-model.js +26 -30
  14. package/dist/src/cli/actions/convert/generators/generate-model.js.map +1 -1
  15. package/dist/src/cli/actions/convert/generators/generate-namespace.d.ts +2 -1
  16. package/dist/src/cli/actions/convert/generators/generate-namespace.d.ts.map +1 -1
  17. package/dist/src/cli/actions/convert/generators/generate-namespace.js +4 -4
  18. package/dist/src/cli/actions/convert/generators/generate-namespace.js.map +1 -1
  19. package/dist/src/cli/actions/convert/generators/generate-operation.d.ts +2 -1
  20. package/dist/src/cli/actions/convert/generators/generate-operation.d.ts.map +1 -1
  21. package/dist/src/cli/actions/convert/generators/generate-operation.js +10 -14
  22. package/dist/src/cli/actions/convert/generators/generate-operation.js.map +1 -1
  23. package/dist/src/cli/actions/convert/generators/generate-service-info.d.ts.map +1 -1
  24. package/dist/src/cli/actions/convert/generators/generate-service-info.js +1 -3
  25. package/dist/src/cli/actions/convert/generators/generate-service-info.js.map +1 -1
  26. package/dist/src/cli/actions/convert/generators/generate-types.d.ts +12 -8
  27. package/dist/src/cli/actions/convert/generators/generate-types.d.ts.map +1 -1
  28. package/dist/src/cli/actions/convert/generators/generate-types.js +138 -109
  29. package/dist/src/cli/actions/convert/generators/generate-types.js.map +1 -1
  30. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.d.ts +3 -3
  31. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.d.ts.map +1 -1
  32. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.js +14 -27
  33. package/dist/src/cli/actions/convert/transforms/transform-component-parameters.js.map +1 -1
  34. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts +2 -2
  35. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.d.ts.map +1 -1
  36. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js +91 -96
  37. package/dist/src/cli/actions/convert/transforms/transform-component-schemas.js.map +1 -1
  38. package/dist/src/cli/actions/convert/transforms/transforms.d.ts +2 -2
  39. package/dist/src/cli/actions/convert/transforms/transforms.d.ts.map +1 -1
  40. package/dist/src/cli/actions/convert/transforms/transforms.js +6 -6
  41. package/dist/src/cli/actions/convert/transforms/transforms.js.map +1 -1
  42. package/dist/src/cli/actions/convert/utils/context.d.ts +9 -0
  43. package/dist/src/cli/actions/convert/utils/context.d.ts.map +1 -0
  44. package/dist/src/cli/actions/convert/utils/context.js +18 -0
  45. package/dist/src/cli/actions/convert/utils/context.js.map +1 -0
  46. package/dist/src/cli/actions/convert/utils/generate-namespace-name.d.ts +2 -0
  47. package/dist/src/cli/actions/convert/utils/generate-namespace-name.d.ts.map +1 -0
  48. package/dist/src/cli/actions/convert/utils/generate-namespace-name.js +4 -0
  49. package/dist/src/cli/actions/convert/utils/generate-namespace-name.js.map +1 -0
  50. package/package.json +1 -1
@@ -2,12 +2,141 @@ import { printIdentifier } from "@typespec/compiler";
2
2
  import { getDecoratorsForSchema } from "../utils/decorators.js";
3
3
  import { getScopeAndName } from "../utils/get-scope-and-name.js";
4
4
  import { generateDecorators } from "./generate-decorators.js";
5
- export function generateTypeFromSchema(schema) {
6
- return getTypeFromRefableSchema(schema);
7
- }
8
- function getTypeFromRefableSchema(schema) {
9
- const hasRef = "$ref" in schema;
10
- return hasRef ? getRefName(schema.$ref) : getTypeFromSchema(schema);
5
+ export class SchemaToExpressionGenerator {
6
+ rootNamespace;
7
+ constructor(rootNamespace) {
8
+ this.rootNamespace = rootNamespace;
9
+ }
10
+ generateTypeFromRefableSchema(schema, callingScope) {
11
+ const hasRef = "$ref" in schema;
12
+ return hasRef
13
+ ? this.getRefName(schema.$ref, callingScope)
14
+ : this.getTypeFromSchema(schema, callingScope);
15
+ }
16
+ generateArrayType(schema, callingScope) {
17
+ const items = schema.items;
18
+ if (!items) {
19
+ return "unknown[]";
20
+ }
21
+ if ("$ref" in items) {
22
+ return `${this.getRefName(items.$ref, callingScope)}[]`;
23
+ }
24
+ // Prettier will get rid of the extra parenthesis for us
25
+ return `(${this.getTypeFromSchema(items, callingScope)})[]`;
26
+ }
27
+ getRefName(ref, callingScope) {
28
+ const { scope, name } = this.getRefScopeAndName(ref, callingScope);
29
+ return [...scope, name].join(".");
30
+ }
31
+ getRefScopeAndName(ref, callingScope) {
32
+ const parts = ref.split("/");
33
+ const name = parts.pop() ?? "";
34
+ const componentType = parts.pop()?.toLowerCase() ?? "";
35
+ const scopeAndName = getScopeAndName(name);
36
+ switch (componentType) {
37
+ case "schemas":
38
+ if (callingScope.length) {
39
+ /*
40
+ Since schemas are generated in the file namespace,
41
+ need to reference them against the file namespace
42
+ to prevent name collisions.
43
+ Example:
44
+ namespace Service;
45
+ scalar Foo extends string;
46
+ namespace Parameters {
47
+ model Foo {
48
+ @query foo: Service.Foo
49
+ }
50
+ }
51
+ */
52
+ scopeAndName.scope.unshift(this.rootNamespace);
53
+ }
54
+ break;
55
+ case "parameters":
56
+ scopeAndName.scope.unshift("Parameters");
57
+ break;
58
+ }
59
+ return scopeAndName;
60
+ }
61
+ getTypeFromSchema(schema, callingScope) {
62
+ let type = "unknown";
63
+ if (schema.enum) {
64
+ type = getEnum(schema.enum);
65
+ }
66
+ else if (schema.anyOf) {
67
+ type = this.getAnyOfType(schema, callingScope);
68
+ }
69
+ else if (schema.type === "array") {
70
+ type = this.generateArrayType(schema, callingScope);
71
+ }
72
+ else if (schema.type === "boolean") {
73
+ type = "boolean";
74
+ }
75
+ else if (schema.type === "integer") {
76
+ type = getIntegerType(schema);
77
+ }
78
+ else if (schema.type === "number") {
79
+ type = getNumberType(schema);
80
+ }
81
+ else if (schema.type === "object") {
82
+ type = this.getObjectType(schema, callingScope);
83
+ }
84
+ else if (schema.oneOf) {
85
+ type = this.getOneOfType(schema, callingScope);
86
+ }
87
+ else if (schema.type === "string") {
88
+ type = getStringType(schema);
89
+ }
90
+ if (schema.nullable) {
91
+ type += ` | null`;
92
+ }
93
+ if (schema.default) {
94
+ type += ` = ${JSON.stringify(schema.default)}`;
95
+ }
96
+ return type;
97
+ }
98
+ getAnyOfType(schema, callingScope) {
99
+ const definitions = [];
100
+ for (const item of schema.anyOf ?? []) {
101
+ definitions.push(this.generateTypeFromRefableSchema(item, callingScope));
102
+ }
103
+ return definitions.join(" | ");
104
+ }
105
+ getOneOfType(schema, callingScope) {
106
+ const definitions = [];
107
+ for (const item of schema.oneOf ?? []) {
108
+ definitions.push(this.generateTypeFromRefableSchema(item, callingScope));
109
+ }
110
+ return definitions.join(" | ");
111
+ }
112
+ getObjectType(schema, callingScope) {
113
+ // If we have `additionalProperties`, treat that as an 'indexer' and convert to a record.
114
+ const recordType = typeof schema.additionalProperties === "object"
115
+ ? `Record<${this.generateTypeFromRefableSchema(schema.additionalProperties, callingScope)}>`
116
+ : "";
117
+ if (!schema.properties && recordType) {
118
+ return recordType;
119
+ }
120
+ const requiredProps = schema.required ?? [];
121
+ const props = [];
122
+ if (schema.properties) {
123
+ for (const name of Object.keys(schema.properties)) {
124
+ const decorators = generateDecorators(getDecoratorsForSchema(schema.properties[name]))
125
+ .map((d) => `${d}\n`)
126
+ .join("");
127
+ const isOptional = !requiredProps.includes(name) ? "?" : "";
128
+ props.push(`${decorators}${printIdentifier(name)}${isOptional}: ${this.generateTypeFromRefableSchema(schema.properties[name], callingScope)}`);
129
+ }
130
+ }
131
+ const propertyCount = Object.keys(props).length;
132
+ if (recordType && !propertyCount) {
133
+ return recordType;
134
+ }
135
+ else if (recordType && propertyCount) {
136
+ props.push(`...${recordType}`);
137
+ }
138
+ return `{${props.join("; ")}}`;
139
+ }
11
140
  }
12
141
  export function getTypeSpecPrimitiveFromSchema(schema) {
13
142
  if (schema.type === "boolean") {
@@ -24,107 +153,7 @@ export function getTypeSpecPrimitiveFromSchema(schema) {
24
153
  }
25
154
  return;
26
155
  }
27
- function getTypeFromSchema(schema) {
28
- let type = "unknown";
29
- if (schema.enum) {
30
- type = getEnum(schema.enum);
31
- }
32
- else if (schema.anyOf) {
33
- type = getAnyOfType(schema);
34
- }
35
- else if (schema.type === "array") {
36
- type = getArrayType(schema);
37
- }
38
- else if (schema.type === "boolean") {
39
- type = "boolean";
40
- }
41
- else if (schema.type === "integer") {
42
- type = getIntegerType(schema);
43
- }
44
- else if (schema.type === "number") {
45
- type = getNumberType(schema);
46
- }
47
- else if (schema.type === "object") {
48
- type = getObjectType(schema);
49
- }
50
- else if (schema.oneOf) {
51
- type = getOneOfType(schema);
52
- }
53
- else if (schema.type === "string") {
54
- type = getStringType(schema);
55
- }
56
- if (schema.nullable) {
57
- type += ` | null`;
58
- }
59
- if (schema.default) {
60
- type += ` = ${JSON.stringify(schema.default)}`;
61
- }
62
- return type;
63
- }
64
- export function getRefName(ref) {
65
- const { scope, name } = getRefScopeAndName(ref);
66
- return [...scope, name].join(".");
67
- }
68
- export function getRefScopeAndName(ref) {
69
- const parts = ref.split("/");
70
- const name = parts.pop() ?? "";
71
- const scopeAndName = getScopeAndName(name);
72
- return scopeAndName;
73
- }
74
- function getAnyOfType(schema) {
75
- const definitions = [];
76
- for (const item of schema.anyOf ?? []) {
77
- definitions.push(generateTypeFromSchema(item));
78
- }
79
- return definitions.join(" | ");
80
- }
81
- function getOneOfType(schema) {
82
- const definitions = [];
83
- for (const item of schema.oneOf ?? []) {
84
- definitions.push(generateTypeFromSchema(item));
85
- }
86
- return definitions.join(" | ");
87
- }
88
- function getObjectType(schema) {
89
- // If we have `additionalProperties`, treat that as an 'indexer' and convert to a record.
90
- const recordType = typeof schema.additionalProperties === "object"
91
- ? `Record<${getTypeFromRefableSchema(schema.additionalProperties)}>`
92
- : "";
93
- if (!schema.properties && recordType) {
94
- return recordType;
95
- }
96
- const requiredProps = schema.required ?? [];
97
- const props = [];
98
- if (schema.properties) {
99
- for (const name of Object.keys(schema.properties)) {
100
- const decorators = generateDecorators(getDecoratorsForSchema(schema.properties[name]))
101
- .map((d) => `${d}\n`)
102
- .join("");
103
- const isOptional = !requiredProps.includes(name) ? "?" : "";
104
- props.push(`${decorators}${printIdentifier(name)}${isOptional}: ${getTypeFromRefableSchema(schema.properties[name])}`);
105
- }
106
- }
107
- const propertyCount = Object.keys(props).length;
108
- if (recordType && !propertyCount) {
109
- return recordType;
110
- }
111
- else if (recordType && propertyCount) {
112
- props.push(`...${recordType}`);
113
- }
114
- return `{${props.join("; ")}}`;
115
- }
116
- export function getArrayType(schema) {
117
- const items = schema.items;
118
- if (!items) {
119
- return "unknown[]";
120
- }
121
- if ("$ref" in items) {
122
- return `${getRefName(items.$ref)}[]`;
123
- }
124
- // Prettier will get rid of the extra parenthesis for us
125
- return `(${getTypeFromSchema(items)})[]`;
126
- }
127
- export function getIntegerType(schema) {
156
+ function getIntegerType(schema) {
128
157
  const format = schema.format ?? "";
129
158
  switch (format) {
130
159
  case "int8":
@@ -142,7 +171,7 @@ export function getIntegerType(schema) {
142
171
  return "integer";
143
172
  }
144
173
  }
145
- export function getNumberType(schema) {
174
+ function getNumberType(schema) {
146
175
  const format = schema.format ?? "";
147
176
  switch (format) {
148
177
  case "decimal":
@@ -157,7 +186,7 @@ export function getNumberType(schema) {
157
186
  return "numeric";
158
187
  }
159
188
  }
160
- export function getStringType(schema) {
189
+ function getStringType(schema) {
161
190
  const format = schema.format ?? "";
162
191
  let type = "string";
163
192
  switch (format) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-types.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-types.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/generators/generate-types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { OpenAPI3Components } from "../../../../types.js";
2
- import { TypeSpecModel } from "../interfaces.js";
1
+ import { TypeSpecDataTypes } from "../interfaces.js";
2
+ import { Context } from "../utils/context.js";
3
3
  /**
4
4
  * Transforms #/components/parameters into TypeSpec models.
5
5
  * Overwrites properties of existing models if an existing model already exists.
@@ -8,5 +8,5 @@ import { TypeSpecModel } from "../interfaces.js";
8
8
  * @param parameters
9
9
  * @returns
10
10
  */
11
- export declare function transformComponentParameters(models: TypeSpecModel[], parameters?: OpenAPI3Components["parameters"]): void;
11
+ export declare function transformComponentParameters(context: Context, dataTypes: TypeSpecDataTypes[]): void;
12
12
  //# sourceMappingURL=transform-component-parameters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform-component-parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/transforms/transform-component-parameters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAIxE;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EAAE,EACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,GAC5C,IAAI,CAON"}
1
+ {"version":3,"file":"transform-component-parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/transforms/transform-component-parameters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAyB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,iBAAiB,EAAE,GAC7B,IAAI,CAQN"}
@@ -1,6 +1,6 @@
1
1
  import { printIdentifier } from "@typespec/compiler";
2
2
  import { getParameterDecorators } from "../utils/decorators.js";
3
- import { getScopeAndName, scopesMatch } from "../utils/get-scope-and-name.js";
3
+ import { getScopeAndName } from "../utils/get-scope-and-name.js";
4
4
  /**
5
5
  * Transforms #/components/parameters into TypeSpec models.
6
6
  * Overwrites properties of existing models if an existing model already exists.
@@ -9,39 +9,26 @@ import { getScopeAndName, scopesMatch } from "../utils/get-scope-and-name.js";
9
9
  * @param parameters
10
10
  * @returns
11
11
  */
12
- export function transformComponentParameters(models, parameters) {
12
+ export function transformComponentParameters(context, dataTypes) {
13
+ const parameters = context.openApi3Doc.components?.parameters;
13
14
  if (!parameters)
14
15
  return;
15
16
  for (const name of Object.keys(parameters)) {
16
17
  const parameter = parameters[name];
17
- transformComponentParameter(models, name, parameter);
18
+ transformComponentParameter(dataTypes, name, parameter);
18
19
  }
19
20
  }
20
- function transformComponentParameter(models, key, parameter) {
21
+ function transformComponentParameter(dataTypes, key, parameter) {
21
22
  const { name, scope } = getScopeAndName(key);
22
- // Get the model name this parameter belongs to
23
- const modelName = scope.length > 0 ? scope.pop() : name;
24
- // find a matching model, or create one if it doesn't exist
25
- let model = models.find((m) => m.name === modelName && scopesMatch(m.scope, scope));
26
- if (!model) {
27
- model = {
28
- kind: "model",
29
- scope,
30
- name: modelName,
31
- decorators: [],
32
- properties: [],
33
- };
34
- models.push(model);
35
- }
36
- const modelProperty = getModelPropertyFromParameter(parameter);
37
- // Check if the model already has a property of the matching name
38
- const propIndex = model.properties.findIndex((p) => p.name === modelProperty.name);
39
- if (propIndex >= 0) {
40
- model.properties[propIndex] = modelProperty;
41
- }
42
- else {
43
- model.properties.push(modelProperty);
44
- }
23
+ // Parameters should live in the root Parameters namespace
24
+ scope.unshift("Parameters");
25
+ dataTypes.push({
26
+ kind: "model",
27
+ scope,
28
+ name,
29
+ decorators: [],
30
+ properties: [getModelPropertyFromParameter(parameter)],
31
+ });
45
32
  }
46
33
  function getModelPropertyFromParameter(parameter) {
47
34
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"transform-component-parameters.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/transforms/transform-component-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAuB,EACvB,UAA6C;IAE7C,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,MAAuB,EACvB,GAAW,EACX,SAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC7C,+CAA+C;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzD,2DAA2D;IAC3D,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG;YACN,IAAI,EAAE,OAAO;YACb,KAAK;YACL,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,aAAa,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAE/D,iEAAiE;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,SAA4B;IACjE,OAAO;QACL,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;QACrC,UAAU,EAAE,CAAC,SAAS,CAAC,QAAQ;QAC/B,GAAG,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW;QAC1D,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC;QAC7C,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transform-component-parameters.js","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/transforms/transform-component-parameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAgB,EAChB,SAA8B;IAE9B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,2BAA2B,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,SAA8B,EAC9B,GAAW,EACX,SAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC7C,0DAA0D;IAC1D,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5B,SAAS,CAAC,IAAI,CAAC;QACb,IAAI,EAAE,OAAO;QACb,KAAK;QACL,IAAI;QACJ,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;KACvD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CAAC,SAA4B;IACjE,OAAO;QACL,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;QACrC,UAAU,EAAE,CAAC,SAAS,CAAC,QAAQ;QAC/B,GAAG,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW;QAC1D,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC;QAC7C,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- import { OpenAPI3Components } from "../../../../types.js";
2
1
  import { TypeSpecModel } from "../interfaces.js";
2
+ import { Context } from "../utils/context.js";
3
3
  /**
4
4
  * Transforms #/components/schemas into TypeSpec models.
5
5
  * Populates the provided `models` array in-place.
@@ -7,5 +7,5 @@ import { TypeSpecModel } from "../interfaces.js";
7
7
  * @param schemas
8
8
  * @returns
9
9
  */
10
- export declare function transformComponentSchemas(models: TypeSpecModel[], schemas?: OpenAPI3Components["schemas"]): void;
10
+ export declare function transformComponentSchemas(context: Context, models: TypeSpecModel[]): void;
11
11
  //# sourceMappingURL=transform-component-schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transform-component-schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/transforms/transform-component-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,sBAAsB,CAAC;AAQnF,OAAO,EAGL,aAAa,EAGd,MAAM,kBAAkB,CAAC;AAI1B;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACtC,IAAI,CAON"}
1
+ {"version":3,"file":"transform-component-schemas.d.ts","sourceRoot":"","sources":["../../../../../../src/cli/actions/convert/transforms/transform-component-schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,aAAa,EAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAoIzF"}
@@ -1,5 +1,4 @@
1
1
  import { printIdentifier } from "@typespec/compiler";
2
- import { getArrayType, getIntegerType, getNumberType, getRefName, getStringType, } from "../generators/generate-types.js";
3
2
  import { getDecoratorsForSchema } from "../utils/decorators.js";
4
3
  import { getScopeAndName } from "../utils/get-scope-and-name.js";
5
4
  /**
@@ -9,114 +8,110 @@ import { getScopeAndName } from "../utils/get-scope-and-name.js";
9
8
  * @param schemas
10
9
  * @returns
11
10
  */
12
- export function transformComponentSchemas(models, schemas) {
11
+ export function transformComponentSchemas(context, models) {
12
+ const schemas = context.openApi3Doc.components?.schemas;
13
13
  if (!schemas)
14
14
  return;
15
15
  for (const name of Object.keys(schemas)) {
16
16
  const schema = schemas[name];
17
17
  transformComponentSchema(models, name, schema);
18
18
  }
19
- }
20
- function transformComponentSchema(types, name, schema) {
21
- const kind = getTypeSpecKind(schema);
22
- switch (kind) {
23
- case "alias":
24
- return populateAlias(types, name, schema);
25
- case "enum":
26
- return populateEnum(types, name, schema);
27
- case "model":
28
- return populateModel(types, name, schema);
29
- case "union":
30
- return populateUnion(types, name, schema);
31
- case "scalar":
32
- return populateScalar(types, name, schema);
19
+ return;
20
+ function transformComponentSchema(types, name, schema) {
21
+ const kind = getTypeSpecKind(schema);
22
+ switch (kind) {
23
+ case "alias":
24
+ return populateAlias(types, name, schema);
25
+ case "enum":
26
+ return populateEnum(types, name, schema);
27
+ case "model":
28
+ return populateModel(types, name, schema);
29
+ case "union":
30
+ return populateUnion(types, name, schema);
31
+ case "scalar":
32
+ return populateScalar(types, name, schema);
33
+ }
33
34
  }
34
- }
35
- function populateAlias(types, name, schema) {
36
- if (!("$ref" in schema)) {
37
- return;
35
+ function populateAlias(types, rawName, schema) {
36
+ if (!("$ref" in schema)) {
37
+ return;
38
+ }
39
+ const { name, scope } = getScopeAndName(rawName);
40
+ types.push({
41
+ kind: "alias",
42
+ name,
43
+ scope,
44
+ doc: schema.description,
45
+ ref: context.getRefName(schema.$ref, scope),
46
+ });
38
47
  }
39
- types.push({
40
- kind: "alias",
41
- ...getScopeAndName(name),
42
- doc: schema.description,
43
- ref: getRefName(schema.$ref),
44
- });
45
- }
46
- function populateEnum(types, name, schema) {
47
- const tsEnum = {
48
- kind: "enum",
49
- ...getScopeAndName(name),
50
- decorators: getDecoratorsForSchema(schema),
51
- doc: schema.description,
52
- schema,
53
- };
54
- types.push(tsEnum);
55
- }
56
- function populateScalar(types, name, schema) {
57
- types.push({
58
- kind: "scalar",
59
- ...getScopeAndName(name),
60
- decorators: getDecoratorsForSchema(schema),
61
- doc: schema.description,
62
- schema,
63
- });
64
- }
65
- function populateUnion(types, name, schema) {
66
- const union = {
67
- kind: "union",
68
- ...getScopeAndName(name),
69
- decorators: getDecoratorsForSchema(schema),
70
- doc: schema.description,
71
- schema,
72
- };
73
- types.push(union);
74
- }
75
- function populateModel(types, name, schema) {
76
- const extendsParent = getModelExtends(schema);
77
- const isParent = getModelIs(schema);
78
- types.push({
79
- kind: "model",
80
- ...getScopeAndName(name),
81
- decorators: [...getDecoratorsForSchema(schema)],
82
- doc: schema.description,
83
- properties: getModelPropertiesFromObjectSchema(schema),
84
- additionalProperties: typeof schema.additionalProperties === "object" ? schema.additionalProperties : undefined,
85
- extends: extendsParent,
86
- is: isParent,
87
- type: schema.type,
88
- });
89
- }
90
- function getModelExtends(schema) {
91
- switch (schema.type) {
92
- case "boolean":
93
- return "boolean";
94
- case "integer":
95
- return getIntegerType(schema);
96
- case "number":
97
- return getNumberType(schema);
98
- case "string":
99
- return getStringType(schema);
48
+ function populateEnum(types, name, schema) {
49
+ const tsEnum = {
50
+ kind: "enum",
51
+ ...getScopeAndName(name),
52
+ decorators: getDecoratorsForSchema(schema),
53
+ doc: schema.description,
54
+ schema,
55
+ };
56
+ types.push(tsEnum);
100
57
  }
101
- if (schema.type !== "object" || !schema.allOf) {
102
- return;
58
+ function populateModel(types, rawName, schema) {
59
+ const { name, scope } = getScopeAndName(rawName);
60
+ const extendsParent = getModelExtends(schema, scope);
61
+ const isParent = getModelIs(schema, scope);
62
+ types.push({
63
+ kind: "model",
64
+ name,
65
+ scope,
66
+ decorators: [...getDecoratorsForSchema(schema)],
67
+ doc: schema.description,
68
+ properties: getModelPropertiesFromObjectSchema(schema),
69
+ additionalProperties: typeof schema.additionalProperties === "object" ? schema.additionalProperties : undefined,
70
+ extends: extendsParent,
71
+ is: isParent,
72
+ type: schema.type,
73
+ });
103
74
  }
104
- if (schema.allOf.length !== 1) {
105
- // TODO: Emit warning - can't extend more than 1 model
106
- return;
75
+ function populateUnion(types, name, schema) {
76
+ const union = {
77
+ kind: "union",
78
+ ...getScopeAndName(name),
79
+ decorators: getDecoratorsForSchema(schema),
80
+ doc: schema.description,
81
+ schema,
82
+ };
83
+ types.push(union);
107
84
  }
108
- const parent = schema.allOf[0];
109
- if (!parent || !("$ref" in parent)) {
110
- // TODO: Error getting parent - must be a reference, not expression
111
- return;
85
+ function populateScalar(types, name, schema) {
86
+ types.push({
87
+ kind: "scalar",
88
+ ...getScopeAndName(name),
89
+ decorators: getDecoratorsForSchema(schema),
90
+ doc: schema.description,
91
+ schema,
92
+ });
112
93
  }
113
- return getRefName(parent.$ref);
114
- }
115
- function getModelIs(schema) {
116
- if (schema.type !== "array") {
117
- return;
94
+ function getModelExtends(schema, callingScope) {
95
+ if (schema.type !== "object" || !schema.allOf) {
96
+ return;
97
+ }
98
+ if (schema.allOf.length !== 1) {
99
+ // TODO: Emit warning - can't extend more than 1 model
100
+ return;
101
+ }
102
+ const parent = schema.allOf[0];
103
+ if (!parent || !("$ref" in parent)) {
104
+ // TODO: Error getting parent - must be a reference, not expression
105
+ return;
106
+ }
107
+ return context.getRefName(parent.$ref, callingScope);
108
+ }
109
+ function getModelIs(schema, callingScope) {
110
+ if (schema.type !== "array") {
111
+ return;
112
+ }
113
+ return context.generateTypeFromRefableSchema(schema, callingScope);
118
114
  }
119
- return getArrayType(schema);
120
115
  }
121
116
  function getModelPropertiesFromObjectSchema({ properties, required = [], }) {
122
117
  if (!properties)