@azure-tools/typespec-autorest-canonical 0.3.0-dev.5 → 0.3.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.
@@ -1,163 +0,0 @@
1
- export function sortWithJsonSchema(value, jsonSchema, ref) {
2
- const schema = ref ? resolveJsonRef(ref, jsonSchema) : jsonSchema;
3
- return internalSort(value, schema, new JsonSchemaReader(jsonSchema));
4
- }
5
- function internalSort(value, relativeSchema, reader) {
6
- if (typeof value !== "object" || value === null) {
7
- return value;
8
- }
9
- const resolvedRelativeSchema = relativeSchema && resolveSchema(relativeSchema, reader);
10
- if (Array.isArray(value)) {
11
- const itemsSchema = resolvedRelativeSchema?.type === "array" ? resolvedRelativeSchema.items : undefined;
12
- return value.map((x) => internalSort(x, itemsSchema, reader));
13
- }
14
- const objectSchema = resolvedRelativeSchema;
15
- const properties = objectSchema?.properties && Object.keys(objectSchema.properties);
16
- const keys = Object.keys(value);
17
- const ordering = objectSchema?.["x-ordering"];
18
- if (ordering === "url") {
19
- keys.sort(compareUrl);
20
- }
21
- else if (ordering !== "keep") {
22
- keys.sort((a, b) => {
23
- if (properties) {
24
- const aIndex = properties.indexOf(a);
25
- const bIndex = properties.indexOf(b);
26
- if (aIndex !== -1 && bIndex !== -1) {
27
- return aIndex - bIndex;
28
- }
29
- else if (aIndex !== -1) {
30
- return -1;
31
- }
32
- else if (bIndex !== -1) {
33
- return 1;
34
- }
35
- }
36
- return defaultCompare(a, b);
37
- });
38
- }
39
- return keys.reduce((o, key) => {
40
- const v = value[key];
41
- const propertySchema = objectSchema?.properties?.[key] ??
42
- resolvePatternProperties(key, objectSchema?.patternProperties) ??
43
- resolveAdditionalProperties(objectSchema?.additionalProperties);
44
- if (propertySchema !== undefined) {
45
- o[key] = internalSort(v, propertySchema, reader);
46
- }
47
- else {
48
- o[key] = v;
49
- }
50
- return o;
51
- }, {});
52
- }
53
- /**
54
- * Default sort implementation for deterministic sorting.
55
- */
56
- function defaultCompare(a, b) {
57
- return +(a > b) || -(b > a);
58
- }
59
- /** Sort urls in a specific way so path with field show up before a fixed segment. */
60
- function compareUrl(leftPath, rightPath) {
61
- const leftParts = leftPath.split("/").slice(1);
62
- const rightParts = rightPath.split("/").slice(1);
63
- for (let i = 0; i < Math.max(leftParts.length, rightParts.length); i++) {
64
- // Have we exhausted the path parts of one of them?
65
- if (i === leftParts.length)
66
- return -1;
67
- if (i === rightParts.length)
68
- return 1;
69
- // Does this segment represent a path parameter (field) on either side?
70
- const leftIsField = leftParts[i][0] === "{";
71
- const rightIsField = rightParts[i][0] === "{";
72
- // If both are fields, try the next part regardless of the field name
73
- // since the field ordering is all that really matters
74
- if (leftIsField && rightIsField) {
75
- continue;
76
- }
77
- // If only one is a field, it automatically wins
78
- if (leftIsField || rightIsField) {
79
- return leftIsField ? -1 : 1;
80
- }
81
- // Sort lexicographically
82
- const result = defaultCompare(leftParts[i], rightParts[i]);
83
- if (result !== 0) {
84
- return result;
85
- }
86
- }
87
- // Must be the same
88
- return 0;
89
- }
90
- function resolveSchema(schema, reader) {
91
- if ("$ref" in schema) {
92
- return reader.resolveRef(schema.$ref);
93
- }
94
- else {
95
- return schema;
96
- }
97
- }
98
- function resolveJsonRef(ref, baseSchema) {
99
- const [file, path] = ref.split("#");
100
- if (file !== "") {
101
- throw new Error(`JsonSchemaSorter: Not supporting cross file ref: "${ref}".`);
102
- }
103
- const segments = path.split("/");
104
- let current = baseSchema;
105
- for (const segment of segments.slice(1)) {
106
- if (segment in current) {
107
- current = current[segment];
108
- }
109
- else {
110
- throw new Error(`JsonSchemaSorter: ref "${ref}" is invalid`);
111
- }
112
- }
113
- return current;
114
- }
115
- function resolvePatternProperties(key, patternProperties) {
116
- if (patternProperties === undefined) {
117
- return undefined;
118
- }
119
- for (const [pattern, schema] of Object.entries(patternProperties)) {
120
- if (key.match(pattern)) {
121
- return schema;
122
- }
123
- }
124
- return undefined;
125
- }
126
- function resolveAdditionalProperties(additionalProperties) {
127
- if (typeof additionalProperties === "boolean") {
128
- return undefined;
129
- }
130
- return additionalProperties;
131
- }
132
- class JsonSchemaReader {
133
- #doc;
134
- #defs = new Map();
135
- constructor(doc) {
136
- this.#doc = doc;
137
- if (doc.$defs) {
138
- for (const value of Object.values(doc.$defs)) {
139
- if ("$id" in value && value.$id) {
140
- this.#defs.set(value.$id, value);
141
- }
142
- }
143
- }
144
- }
145
- resolveRef(ref) {
146
- if (ref.includes("#")) {
147
- return resolveJsonRef(ref, this.#doc);
148
- }
149
- else {
150
- const schema = this.#defs.get(ref);
151
- if (schema === undefined) {
152
- throw new Error(`JsonSchemaSorter: Cannot find schema with $id ${ref}`);
153
- }
154
- if ("$ref" in schema) {
155
- return this.resolveRef(schema.$ref);
156
- }
157
- else {
158
- return schema;
159
- }
160
- }
161
- }
162
- }
163
- //# sourceMappingURL=sorter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sorter.js","sourceRoot":"","sources":["../../../src/json-schema-sorter/sorter.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { EmitContext } from "@typespec/compiler";
2
- import { AutorestCanonicalEmitterOptions } from "./lib.js";
3
- import { OpenAPI2Document } from "./types.js";
4
- export declare const canonicalVersion = "canonical";
5
- export declare const namespace = "AutorestCanonical";
6
- export declare function $onEmit(context: EmitContext<AutorestCanonicalEmitterOptions>): Promise<void>;
7
- export interface ResolvedAutorestCanonicalEmitterOptions {
8
- outputDir: string;
9
- outputFile: string;
10
- azureResourceProviderFolder?: string;
11
- /**
12
- * Set the newline character for emitting files.
13
- * @default lf
14
- */
15
- newLine?: "crlf" | "lf";
16
- /**
17
- * Omit unreachable types.
18
- * By default all types declared under the service namespace will be included. With this flag on only types references in an operation will be emitted.
19
- */
20
- omitUnreachableTypes?: boolean;
21
- /**
22
- * If the x-typespec-name extension should be included
23
- */
24
- includeXTypeSpecName: "inline-only" | "never";
25
- /**
26
- * Arm types dir
27
- */
28
- armTypesDir: string;
29
- }
30
- export declare function sortOpenAPIDocument(doc: OpenAPI2Document): OpenAPI2Document;
31
- //# sourceMappingURL=openapi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/openapi.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,WAAW,EAoEZ,MAAM,oBAAoB,CAAC;AA4C5B,OAAO,EAAE,+BAA+B,EAA+B,MAAM,UAAU,CAAC;AACxF,OAAO,EACL,gBAAgB,EAgBjB,MAAM,YAAY,CAAC;AAoBpB,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,SAAS,sBAAsB,CAAC;AAE7C,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,+BAA+B,CAAC,iBAsBlF;AAUD,MAAM,WAAW,uCAAuC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,oBAAoB,EAAE,aAAa,GAAG,OAAO,CAAC;IAE9C;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAs9DD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAS3E"}