@zuplo/openapi-tools 6.65.8 → 6.66.2
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/constants.d.ts +13 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +25 -0
- package/dist/constants.js.map +1 -0
- package/dist/file-format.d.ts +59 -0
- package/dist/file-format.d.ts.map +1 -0
- package/dist/file-format.js +142 -0
- package/dist/file-format.js.map +1 -0
- package/dist/file-format.spec.d.ts +2 -0
- package/dist/file-format.spec.d.ts.map +1 -0
- package/dist/file-format.spec.js +289 -0
- package/dist/file-format.spec.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +32 -5
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +0 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/merge-fixtures.spec.d.ts +2 -0
- package/dist/merge-fixtures.spec.d.ts.map +1 -0
- package/dist/merge-fixtures.spec.js +181 -0
- package/dist/merge-fixtures.spec.js.map +1 -0
- package/dist/{openapi-utils.d.ts → merge.d.ts} +2 -22
- package/dist/merge.d.ts.map +1 -0
- package/dist/{openapi-utils.js → merge.js} +6 -186
- package/dist/merge.js.map +1 -0
- package/dist/merge.spec.d.ts +2 -0
- package/dist/merge.spec.d.ts.map +1 -0
- package/dist/merge.spec.js +399 -0
- package/dist/merge.spec.js.map +1 -0
- package/dist/operation-utils.d.ts +29 -0
- package/dist/operation-utils.d.ts.map +1 -0
- package/dist/operation-utils.js +123 -0
- package/dist/operation-utils.js.map +1 -0
- package/dist/overlay.d.ts +78 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +477 -0
- package/dist/overlay.js.map +1 -0
- package/dist/overlay.spec.d.ts +2 -0
- package/dist/overlay.spec.d.ts.map +1 -0
- package/dist/overlay.spec.js +697 -0
- package/dist/overlay.spec.js.map +1 -0
- package/dist/parsing.d.ts +17 -0
- package/dist/parsing.d.ts.map +1 -0
- package/dist/parsing.js +32 -0
- package/dist/parsing.js.map +1 -0
- package/dist/path-transform.d.ts +11 -0
- package/dist/path-transform.d.ts.map +1 -0
- package/dist/path-transform.js +51 -0
- package/dist/path-transform.js.map +1 -0
- package/dist/path-transform.spec.d.ts +2 -0
- package/dist/path-transform.spec.d.ts.map +1 -0
- package/dist/path-transform.spec.js +269 -0
- package/dist/path-transform.spec.js.map +1 -0
- package/dist/url-utils.d.ts +14 -0
- package/dist/url-utils.d.ts.map +1 -0
- package/dist/url-utils.js +40 -0
- package/dist/url-utils.js.map +1 -0
- package/dist/url-utils.spec.d.ts +2 -0
- package/dist/url-utils.spec.d.ts.map +1 -0
- package/dist/url-utils.spec.js +93 -0
- package/dist/url-utils.spec.js.map +1 -0
- package/dist/validation.d.ts +210 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +119 -0
- package/dist/validation.js.map +1 -0
- package/package.json +9 -10
- package/dist/index.spec.d.ts +0 -2
- package/dist/index.spec.d.ts.map +0 -1
- package/dist/index.spec.js +0 -526
- package/dist/index.spec.js.map +0 -1
- package/dist/openapi-utils.d.ts.map +0 -1
- package/dist/openapi-utils.js.map +0 -1
package/dist/interfaces.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { RouteConfiguration } from "@zuplo/runtime";
|
|
2
|
-
import { ErrorObject } from "ajv";
|
|
3
1
|
import { OpenAPIV3_1 } from "openapi-types";
|
|
2
|
+
/**
|
|
3
|
+
* Validation error object structure
|
|
4
|
+
* Simplified from AJV's ErrorObject for broader compatibility
|
|
5
|
+
*/
|
|
6
|
+
export interface ValidationError {
|
|
7
|
+
keyword: string;
|
|
8
|
+
instancePath: string;
|
|
9
|
+
schemaPath: string;
|
|
10
|
+
message?: string;
|
|
11
|
+
params?: Record<string, unknown>;
|
|
12
|
+
}
|
|
4
13
|
export interface ValidationResult {
|
|
5
14
|
isValid: boolean;
|
|
6
|
-
errors:
|
|
7
|
-
warnings:
|
|
15
|
+
errors: ValidationError[];
|
|
16
|
+
warnings: ValidationError[];
|
|
8
17
|
}
|
|
9
18
|
type Modify<T, R> = Omit<T, keyof R> & R;
|
|
10
19
|
export type ZuploHttpMethods = OpenAPIV3_1.HttpMethods | string;
|
|
@@ -36,7 +45,25 @@ export type PathMode = "open-api" | "url-pattern";
|
|
|
36
45
|
export type ZuploOpenApiOperationObject = Modify<OpenAPIV3_1.OperationObject<ZuploOpenApiOperationExtension>, {
|
|
37
46
|
operationId: string;
|
|
38
47
|
}>;
|
|
39
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Zuplo OpenAPI operation properties
|
|
50
|
+
* This is a subset of RouteConfiguration that can be specified in the OpenAPI document.
|
|
51
|
+
* Uses a flexible type to avoid dependency on @zuplo/runtime in the openapi-tools package.
|
|
52
|
+
*/
|
|
53
|
+
export interface ZuploOpenApiOperationProperties {
|
|
54
|
+
handler?: {
|
|
55
|
+
export: string;
|
|
56
|
+
module: string;
|
|
57
|
+
options?: Record<string, unknown>;
|
|
58
|
+
};
|
|
59
|
+
policies?: {
|
|
60
|
+
inbound?: unknown[];
|
|
61
|
+
outbound?: unknown[];
|
|
62
|
+
};
|
|
63
|
+
corsPolicy?: string;
|
|
64
|
+
rateLimitPolicy?: string;
|
|
65
|
+
[key: string]: unknown;
|
|
66
|
+
}
|
|
40
67
|
export interface ZuploOpenApiOperationExtension {
|
|
41
68
|
[ZUPLO_OPEN_API_ROUTE_KEY]?: ZuploOpenApiOperationProperties;
|
|
42
69
|
[OPEN_API_INTERNAL_PROPERTY_VENDOR_TAG]?: boolean;
|
package/dist/interfaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC;AAEhE,eAAO,MAAM,4BAA4B,YAAY,CAAC;AACtD,eAAO,MAAM,qCAAqC,eAAe,CAAC;AAClE,eAAO,MAAM,uBAAuB,gBACa,CAAC;AAClD,eAAO,MAAM,wBAAwB,iBACa,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,WAAW,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EACpD;IACE,KAAK,EAAE,uBAAuB,GAAG,SAAS,CAAC;CAC5C,CACF,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,MAAM,EACN,0BAA0B,GAAG,SAAS,CACvC,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAC7C,WAAW,CAAC,cAAc,CAAC,8BAA8B,CAAC,GACxD,6BAA6B,EAC/B;IACE,GAAG,CAAC,EAAE,2BAA2B,CAAC;IAClC,GAAG,CAAC,EAAE,2BAA2B,CAAC;IAClC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,KAAK,CAAC,EAAE,2BAA2B,CAAC;CACrC,CACF,CAAC;AACF,MAAM,WAAW,6BAA6B;IAC5C,CAAC,uBAAuB,CAAC,CAAC,EAAE,8BAA8B,CAAC;CAC5D;AACD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,QAAQ,CAAC;CACpB;AACD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,WAAW,CAAC,eAAe,CAAC,8BAA8B,CAAC,EAC3D;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CACxB,CAAC;AACF;;;;GAIG;AACH,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;KACtB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AACD,MAAM,WAAW,8BAA8B;IAC7C,CAAC,wBAAwB,CAAC,CAAC,EAAE,+BAA+B,CAAC;IAC7D,CAAC,qCAAqC,CAAC,CAAC,EAAE,OAAO,CAAC;CACnD"}
|
package/dist/interfaces.js
CHANGED
package/dist/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AACtD,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAY,CAAC;AAClE,MAAM,CAAC,MAAM,uBAAuB,GAClC,GAAG,4BAA4B,OAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,wBAAwB,GACnC,GAAG,4BAA4B,QAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-fixtures.spec.d.ts","sourceRoot":"","sources":["../src/merge-fixtures.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { describe, it } from "node:test";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { mergeOpenApiDocuments } from "./merge.js";
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = path.dirname(__filename);
|
|
9
|
+
// Test fixtures are in the package root
|
|
10
|
+
// When running from dist/, __dirname is packages/openapi-tools/dist
|
|
11
|
+
const testFixturesPath = path.join(__dirname, "..", "test-fixtures");
|
|
12
|
+
/**
|
|
13
|
+
* Determine merge options based on fixture directory name
|
|
14
|
+
*/
|
|
15
|
+
function getMergeOptionsFromFixtureName(fixtureName) {
|
|
16
|
+
// Check for operation-id merge mode
|
|
17
|
+
if (fixtureName.includes("operation-id")) {
|
|
18
|
+
return { mergeMode: "operation-id" };
|
|
19
|
+
}
|
|
20
|
+
// Check for path transformation options
|
|
21
|
+
if (fixtureName.includes("path-transformation-prepend")) {
|
|
22
|
+
return { mergeMode: "operation-id", prependServerPath: true };
|
|
23
|
+
}
|
|
24
|
+
// Default to path-method merge mode
|
|
25
|
+
return { mergeMode: "path-method" };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Recursively sort object keys for consistent comparison
|
|
29
|
+
* Also removes undefined values to match JSON.stringify behavior
|
|
30
|
+
*/
|
|
31
|
+
function sortObjectKeys(obj) {
|
|
32
|
+
if (obj === null || typeof obj !== "object") {
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(obj)) {
|
|
36
|
+
return obj.map(sortObjectKeys);
|
|
37
|
+
}
|
|
38
|
+
const sortedObj = {};
|
|
39
|
+
const keys = Object.keys(obj).sort();
|
|
40
|
+
for (const key of keys) {
|
|
41
|
+
const value = obj[key];
|
|
42
|
+
// Skip undefined values (matching JSON.stringify behavior)
|
|
43
|
+
if (value !== undefined) {
|
|
44
|
+
sortedObj[key] = sortObjectKeys(value);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return sortedObj;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Deep comparison that provides useful diff information
|
|
51
|
+
*/
|
|
52
|
+
function deepCompare(actual, expected, path = "") {
|
|
53
|
+
if (actual === expected) {
|
|
54
|
+
return { equal: true };
|
|
55
|
+
}
|
|
56
|
+
if (typeof actual !== typeof expected) {
|
|
57
|
+
return {
|
|
58
|
+
equal: false,
|
|
59
|
+
message: `Type mismatch at ${path || "root"}: expected ${typeof expected}, got ${typeof actual}`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (actual === null || expected === null) {
|
|
63
|
+
return {
|
|
64
|
+
equal: false,
|
|
65
|
+
message: `Null mismatch at ${path || "root"}: expected ${expected}, got ${actual}`,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (typeof actual !== "object") {
|
|
69
|
+
return {
|
|
70
|
+
equal: false,
|
|
71
|
+
message: `Value mismatch at ${path || "root"}: expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(actual) !== Array.isArray(expected)) {
|
|
75
|
+
return {
|
|
76
|
+
equal: false,
|
|
77
|
+
message: `Array/Object mismatch at ${path || "root"}`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(actual) && Array.isArray(expected)) {
|
|
81
|
+
if (actual.length !== expected.length) {
|
|
82
|
+
return {
|
|
83
|
+
equal: false,
|
|
84
|
+
message: `Array length mismatch at ${path || "root"}: expected ${expected.length}, got ${actual.length}`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
for (let i = 0; i < actual.length; i++) {
|
|
88
|
+
const result = deepCompare(actual[i], expected[i], `${path}[${i}]`);
|
|
89
|
+
if (!result.equal) {
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { equal: true };
|
|
94
|
+
}
|
|
95
|
+
const actualObj = actual;
|
|
96
|
+
const expectedObj = expected;
|
|
97
|
+
const actualKeys = Object.keys(actualObj).sort();
|
|
98
|
+
const expectedKeys = Object.keys(expectedObj).sort();
|
|
99
|
+
// Check for missing keys
|
|
100
|
+
for (const key of expectedKeys) {
|
|
101
|
+
if (!(key in actualObj)) {
|
|
102
|
+
return {
|
|
103
|
+
equal: false,
|
|
104
|
+
message: `Missing key at ${path ? `${path}.${key}` : key}`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Check for extra keys
|
|
109
|
+
for (const key of actualKeys) {
|
|
110
|
+
if (!(key in expectedObj)) {
|
|
111
|
+
return {
|
|
112
|
+
equal: false,
|
|
113
|
+
message: `Extra key at ${path ? `${path}.${key}` : key}`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Recursively compare values
|
|
118
|
+
for (const key of expectedKeys) {
|
|
119
|
+
const result = deepCompare(actualObj[key], expectedObj[key], path ? `${path}.${key}` : key);
|
|
120
|
+
if (!result.equal) {
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { equal: true };
|
|
125
|
+
}
|
|
126
|
+
describe("OpenAPI Merge Fixtures", async () => {
|
|
127
|
+
// Discover all fixture directories
|
|
128
|
+
let fixtureDirectories;
|
|
129
|
+
try {
|
|
130
|
+
const entries = await fs.readdir(testFixturesPath, { withFileTypes: true });
|
|
131
|
+
fixtureDirectories = entries
|
|
132
|
+
.filter((entry) => entry.isDirectory())
|
|
133
|
+
.map((entry) => entry.name)
|
|
134
|
+
.filter((name) => /^\d{2}-/.test(name)) // Only include numbered directories
|
|
135
|
+
.sort();
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.error("Failed to read test fixtures directory:", error);
|
|
139
|
+
fixtureDirectories = [];
|
|
140
|
+
}
|
|
141
|
+
for (const fixtureName of fixtureDirectories) {
|
|
142
|
+
it(`should merge correctly: ${fixtureName}`, async () => {
|
|
143
|
+
const fixtureDir = path.join(testFixturesPath, fixtureName);
|
|
144
|
+
// Read fixture files
|
|
145
|
+
const [sourceContent, destinationContent, expectedMergedContent] = await Promise.all([
|
|
146
|
+
fs.readFile(path.join(fixtureDir, "source.json"), "utf-8"),
|
|
147
|
+
fs.readFile(path.join(fixtureDir, "destination.json"), "utf-8"),
|
|
148
|
+
fs.readFile(path.join(fixtureDir, "merged.json"), "utf-8"),
|
|
149
|
+
]);
|
|
150
|
+
const source = JSON.parse(sourceContent);
|
|
151
|
+
const destination = JSON.parse(destinationContent);
|
|
152
|
+
const expectedMerged = JSON.parse(expectedMergedContent);
|
|
153
|
+
// Determine merge options from fixture name
|
|
154
|
+
const config = getMergeOptionsFromFixtureName(fixtureName);
|
|
155
|
+
const mergeOptions = {
|
|
156
|
+
mergeMode: config.mergeMode,
|
|
157
|
+
prependServerPath: config.prependServerPath,
|
|
158
|
+
prependPath: config.prependPath,
|
|
159
|
+
};
|
|
160
|
+
// Perform the merge
|
|
161
|
+
const { mergedDocument } = mergeOpenApiDocuments(destination, source, mergeOptions);
|
|
162
|
+
// Compare the merged result with the expected result
|
|
163
|
+
// Sort keys for consistent comparison
|
|
164
|
+
const sortedActual = sortObjectKeys(mergedDocument);
|
|
165
|
+
const sortedExpected = sortObjectKeys(expectedMerged);
|
|
166
|
+
const comparison = deepCompare(sortedActual, sortedExpected);
|
|
167
|
+
if (!comparison.equal) {
|
|
168
|
+
// Provide detailed diff for debugging
|
|
169
|
+
console.log("\n--- Fixture:", fixtureName, "---");
|
|
170
|
+
console.log("Merge options:", JSON.stringify(mergeOptions));
|
|
171
|
+
console.log("Difference:", comparison.message);
|
|
172
|
+
console.log("\nExpected:");
|
|
173
|
+
console.log(JSON.stringify(sortedExpected, null, 2));
|
|
174
|
+
console.log("\nActual:");
|
|
175
|
+
console.log(JSON.stringify(sortedActual, null, 2));
|
|
176
|
+
}
|
|
177
|
+
assert.ok(comparison.equal, `Merge result does not match expected: ${comparison.message}`);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=merge-fixtures.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-fixtures.spec.js","sourceRoot":"","sources":["../src/merge-fixtures.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OpenAPIV3_1 } from "openapi-types";
|
|
2
|
-
import { ZuploOpenApiDocument } from "./interfaces.js";
|
|
2
|
+
import { type ZuploOpenApiDocument } from "./interfaces.js";
|
|
3
3
|
export type MergeMode = "operation-id" | "path-method";
|
|
4
4
|
export interface MergeOptions {
|
|
5
5
|
/**
|
|
@@ -16,16 +16,6 @@ export interface MergeOptions {
|
|
|
16
16
|
*/
|
|
17
17
|
prependPath?: string;
|
|
18
18
|
}
|
|
19
|
-
export declare const OPERATION_PATH_MERGE_DELIMITER = ">";
|
|
20
|
-
export declare const parseOpenApiFile: (file: File) => Promise<ZuploOpenApiDocument | OpenAPIV3_1.Document<{}>>;
|
|
21
|
-
/**
|
|
22
|
-
* Extract pathname from the first server URL in an OpenAPI document
|
|
23
|
-
*/
|
|
24
|
-
export declare function extractServerPathname(document: OpenAPIV3_1.Document | ZuploOpenApiDocument): string;
|
|
25
|
-
/**
|
|
26
|
-
* Transform paths by prepending a server pathname to all path keys
|
|
27
|
-
*/
|
|
28
|
-
export declare function transformPathsWithServerPathname<T extends OpenAPIV3_1.Document | ZuploOpenApiDocument>(document: T, serverPathname: string): T;
|
|
29
19
|
export declare const mergeOpenApiDocuments: (originalDocument: ZuploOpenApiDocument, newDocument: OpenAPIV3_1.Document | ZuploOpenApiDocument, options: MergeMode | MergeOptions) => {
|
|
30
20
|
mergedDocument: ZuploOpenApiDocument;
|
|
31
21
|
created: Set<string>;
|
|
@@ -44,14 +34,4 @@ export declare const mergeOpenApiDocumentOnPathMethod: (originalDocument: ZuploO
|
|
|
44
34
|
merged: Set<string>;
|
|
45
35
|
retained: Set<string>;
|
|
46
36
|
};
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Add operation ID to any operations that don't have one, this makes
|
|
50
|
-
* onboarding smoother for new users
|
|
51
|
-
*/
|
|
52
|
-
export declare const addOperationIdsAsNecessary: (openApi: OpenAPIV3_1.Document | ZuploOpenApiDocument) => ZuploOpenApiDocument;
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
55
|
-
*/
|
|
56
|
-
export declare const removeOperationsWithoutAnId: (openApi: OpenAPIV3_1.Document | ZuploOpenApiDocument) => ZuploOpenApiDocument;
|
|
57
|
-
//# sourceMappingURL=openapi-utils.d.ts.map
|
|
37
|
+
//# sourceMappingURL=merge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAIL,KAAK,oBAAoB,EAI1B,MAAM,iBAAiB,CAAC;AAWzB,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,aAAa,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,eAAO,MAAM,qBAAqB,GAChC,kBAAkB,oBAAoB,EACtC,aAAa,WAAW,CAAC,QAAQ,GAAG,oBAAoB,EACxD,SAAS,SAAS,GAAG,YAAY;oBAyCjB,oBAAoB;aAC3B,GAAG,CAAC,MAAM,CAAC;YACZ,GAAG,CAAC,MAAM,CAAC;cACT,GAAG,CAAC,MAAM,CAAC;CATtB,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,kBAAkB,oBAAoB,EACtC,aAAa,oBAAoB,GAAG,WAAW,CAAC,QAAQ,KACvD;IACD,cAAc,EAAE,oBAAoB,CAAC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAsKvB,CAAC;AAwDF,eAAO,MAAM,gCAAgC,GAC3C,kBAAkB,oBAAoB,EACtC,aAAa,oBAAoB,GAAG,WAAW,CAAC,QAAQ,KACvD;IACD,cAAc,EAAE,oBAAoB,CAAC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAwEvB,CAAC"}
|
|
@@ -1,75 +1,10 @@
|
|
|
1
|
-
import yaml from "js-yaml";
|
|
2
1
|
import { v4 } from "uuid";
|
|
2
|
+
import { HTTP_METHODS } from "./constants.js";
|
|
3
3
|
import { OPEN_API_INTERNAL_PROPERTY_VENDOR_TAG, ZUPLO_OPEN_API_PATH_KEY, ZUPLO_OPEN_API_ROUTE_KEY, } from "./interfaces.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"delete",
|
|
9
|
-
"options",
|
|
10
|
-
"head",
|
|
11
|
-
"patch",
|
|
12
|
-
"trace",
|
|
13
|
-
];
|
|
14
|
-
export const OPERATION_PATH_MERGE_DELIMITER = ">";
|
|
15
|
-
export const parseOpenApiFile = async (file) => {
|
|
16
|
-
const fileText = await file.text();
|
|
17
|
-
const fileName = file.name;
|
|
18
|
-
if (fileName.endsWith(".json")) {
|
|
19
|
-
return JSON.parse(fileText);
|
|
20
|
-
}
|
|
21
|
-
return yaml.load(fileText);
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Extract pathname from the first server URL in an OpenAPI document
|
|
25
|
-
*/
|
|
26
|
-
export function extractServerPathname(document) {
|
|
27
|
-
if (!document.servers || document.servers.length === 0) {
|
|
28
|
-
return "";
|
|
29
|
-
}
|
|
30
|
-
const firstServer = document.servers[0];
|
|
31
|
-
if (!firstServer || !firstServer.url) {
|
|
32
|
-
return "";
|
|
33
|
-
}
|
|
34
|
-
try {
|
|
35
|
-
const url = new URL(firstServer.url);
|
|
36
|
-
return url.pathname === "/" ? "" : url.pathname;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
// If the URL is relative or malformed, treat it as a pathname
|
|
40
|
-
const serverUrl = firstServer.url;
|
|
41
|
-
// Remove query params and fragments if any
|
|
42
|
-
const pathname = serverUrl.split("?")[0].split("#")[0];
|
|
43
|
-
// If it doesn't start with /, it's likely a relative path, prepend /
|
|
44
|
-
return pathname.startsWith("/") ? pathname : `/${pathname}`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Transform paths by prepending a server pathname to all path keys
|
|
49
|
-
*/
|
|
50
|
-
export function transformPathsWithServerPathname(document, serverPathname) {
|
|
51
|
-
if (!serverPathname || serverPathname === "/" || !document.paths) {
|
|
52
|
-
return document;
|
|
53
|
-
}
|
|
54
|
-
// Ensure pathname starts with / and doesn't end with /
|
|
55
|
-
const normalizedPathname = serverPathname.startsWith("/")
|
|
56
|
-
? serverPathname
|
|
57
|
-
: `/${serverPathname}`;
|
|
58
|
-
const finalPathname = normalizedPathname.endsWith("/")
|
|
59
|
-
? normalizedPathname.slice(0, -1)
|
|
60
|
-
: normalizedPathname;
|
|
61
|
-
const transformedPaths = {};
|
|
62
|
-
for (const [path, pathItem] of Object.entries(document.paths)) {
|
|
63
|
-
if (pathItem) {
|
|
64
|
-
const newPath = `${finalPathname}${path}`;
|
|
65
|
-
transformedPaths[newPath] = pathItem;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
...document,
|
|
70
|
-
paths: transformedPaths,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
4
|
+
import { getAllOperationKeys, getOperationKey, indexOperationsById, } from "./operation-utils.js";
|
|
5
|
+
import { extractServerPathname, transformPathsWithServerPathname, } from "./path-transform.js";
|
|
6
|
+
// Use HTTP_METHODS from constants for internal consistency
|
|
7
|
+
const METHODS = HTTP_METHODS;
|
|
73
8
|
export const mergeOpenApiDocuments = (originalDocument, newDocument, options) => {
|
|
74
9
|
// Support backward compatibility with old API
|
|
75
10
|
const mergeOptions = typeof options === "string" ? { mergeMode: options } : options;
|
|
@@ -400,119 +335,4 @@ const mergeOperationObjects = (originalOperationObject, newOperationObject) => {
|
|
|
400
335
|
...newOperationObject,
|
|
401
336
|
};
|
|
402
337
|
};
|
|
403
|
-
|
|
404
|
-
return Object.entries(pathsObject).flatMap(([path, pathObject]) => {
|
|
405
|
-
const pathItemObject = pathObject;
|
|
406
|
-
const { get, put, post, delete: deleteOperation, options, head, patch, trace, } = pathItemObject;
|
|
407
|
-
const methods = [];
|
|
408
|
-
if (get) {
|
|
409
|
-
methods.push("get");
|
|
410
|
-
}
|
|
411
|
-
if (put) {
|
|
412
|
-
methods.push("put");
|
|
413
|
-
}
|
|
414
|
-
if (post) {
|
|
415
|
-
methods.push("post");
|
|
416
|
-
}
|
|
417
|
-
if (deleteOperation) {
|
|
418
|
-
methods.push("delete");
|
|
419
|
-
}
|
|
420
|
-
if (options) {
|
|
421
|
-
methods.push("options");
|
|
422
|
-
}
|
|
423
|
-
if (head) {
|
|
424
|
-
methods.push("head");
|
|
425
|
-
}
|
|
426
|
-
if (patch) {
|
|
427
|
-
methods.push("patch");
|
|
428
|
-
}
|
|
429
|
-
if (trace) {
|
|
430
|
-
methods.push("trace");
|
|
431
|
-
}
|
|
432
|
-
return methods.map((method) => getOperationKey(method, path));
|
|
433
|
-
});
|
|
434
|
-
};
|
|
435
|
-
export const getOperationKey = (method, path) => `${method}${OPERATION_PATH_MERGE_DELIMITER}${path}`;
|
|
436
|
-
/**
|
|
437
|
-
* Create an index of operations by their operationId
|
|
438
|
-
*
|
|
439
|
-
* @param openapiSpec The OpenAPI specification object
|
|
440
|
-
* @returns A map of operationId -> { path, method }
|
|
441
|
-
*/
|
|
442
|
-
const indexOperationsById = (openapiSpec) => {
|
|
443
|
-
const operationsIndex = {};
|
|
444
|
-
const paths = openapiSpec.paths;
|
|
445
|
-
if (paths) {
|
|
446
|
-
Object.entries(paths).forEach(([path, pathItem]) => {
|
|
447
|
-
if (pathItem) {
|
|
448
|
-
METHODS.forEach((method) => {
|
|
449
|
-
const operation = pathItem[method];
|
|
450
|
-
if (operation?.operationId) {
|
|
451
|
-
operationsIndex[operation.operationId] = {
|
|
452
|
-
path,
|
|
453
|
-
method,
|
|
454
|
-
};
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
}
|
|
458
|
-
});
|
|
459
|
-
}
|
|
460
|
-
return operationsIndex;
|
|
461
|
-
};
|
|
462
|
-
/**
|
|
463
|
-
* Add operation ID to any operations that don't have one, this makes
|
|
464
|
-
* onboarding smoother for new users
|
|
465
|
-
*/
|
|
466
|
-
export const addOperationIdsAsNecessary = (openApi) => {
|
|
467
|
-
const paths = openApi.paths;
|
|
468
|
-
if (!paths) {
|
|
469
|
-
return openApi;
|
|
470
|
-
}
|
|
471
|
-
for (const path of Object.keys(paths)) {
|
|
472
|
-
const pathItem = paths[path];
|
|
473
|
-
if (!pathItem) {
|
|
474
|
-
continue;
|
|
475
|
-
}
|
|
476
|
-
const methods = [
|
|
477
|
-
"get",
|
|
478
|
-
"put",
|
|
479
|
-
"post",
|
|
480
|
-
"delete",
|
|
481
|
-
"options",
|
|
482
|
-
"head",
|
|
483
|
-
"patch",
|
|
484
|
-
"trace",
|
|
485
|
-
];
|
|
486
|
-
for (const method of methods) {
|
|
487
|
-
const operation = pathItem[method];
|
|
488
|
-
if (operation && !operation.operationId) {
|
|
489
|
-
operation.operationId = v4();
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
return openApi;
|
|
494
|
-
};
|
|
495
|
-
/**
|
|
496
|
-
*
|
|
497
|
-
*/
|
|
498
|
-
export const removeOperationsWithoutAnId = (openApi) => {
|
|
499
|
-
const newDocument = { ...openApi };
|
|
500
|
-
const paths = newDocument.paths;
|
|
501
|
-
if (!paths) {
|
|
502
|
-
return openApi;
|
|
503
|
-
}
|
|
504
|
-
for (const path of Object.keys(paths)) {
|
|
505
|
-
const pathItem = paths[path];
|
|
506
|
-
if (!pathItem) {
|
|
507
|
-
continue;
|
|
508
|
-
}
|
|
509
|
-
for (const method of METHODS) {
|
|
510
|
-
const operation = pathItem[method];
|
|
511
|
-
if (operation && !operation.operationId) {
|
|
512
|
-
delete pathItem[method];
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
return openApi;
|
|
517
|
-
};
|
|
518
|
-
//# sourceMappingURL=openapi-utils.js.map
|
|
338
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAmB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,GAKzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAoB7B,2DAA2D;AAC3D,MAAM,OAAO,GAAG,YAAuC,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,gBAAsC,EACtC,WAAwD,EACxD,OAAiC,EACjC,EAAE;IACF,8CAA8C;IAC9C,MAAM,YAAY,GAChB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAEjE,yDAAyD;IACzD,IAAI,sBAAsB,GAAG,WAAW,CAAC;IACzC,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAC/D,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAC;QAC/C,CAAC;aAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,CAAC;YAC1C,iBAAiB,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,sBAAsB,GAAG,gCAAgC,CACvD,WAAW,EACX,iBAAiB,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;QAC9C,OAAO,iCAAiC,CACtC,gBAAgB,EAChB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IACD,OAAO,gCAAgC,CACrC,gBAAgB,EAChB,sBAAsB,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,gBAAsC,EACtC,WAAwD,EAMxD,EAAE;IACF,+CAA+C;IAC/C,MAAM,aAAa,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;IACnD,6CAA6C;IAC7C,MAAM,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;IAEzC,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,MAAM,MAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAgB,IAAI,GAAG,EAAE,CAAC;IAExC,+CAA+C;IAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAEZ,CAAC;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,+DAA+D;gBAC/D,OAAO;YACT,CAAC;YACD,MAAM,cAAc,GAAG,kBAAkB,EAAE,WAAW,CAAC;YACvD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,sEAAsE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,+DAA+D,CACzK,CAAC;YACJ,CAAC;YAED,MAAM,gCAAgC,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;YACvE,MAAM,6BAA6B,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAE1E,uDAAuD;YACvD,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACtC,wEAAwE;gBACxE,IAAI,6BAA6B,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CACb,cAAc,cAAc,4DAA4D,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,+GAA+G,CAC3O,CAAC;gBACJ,CAAC;gBAED,wEAAwE;gBACxE,uDAAuD;gBACvD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC5B,CAAC;gBACD,WAAW,CAAC,OAAO,CAAC,GAAG,iCAAiC,CACtD,WAAW,CAAC,OAAO,CAAC,EACpB,kBAAkB,EAClB,SAAS,CACV,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,kEAAkE;YAClE,mEAAmE;YACnE,sBAAsB;YACtB,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACnC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GACxC,gCAAgC,CAAC;gBACnC,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC5B,CAAC;gBACD,WAAW,CAAC,OAAO,CAAC,GAAG,iCAAiC,CACtD,WAAW,CAAC,OAAO,CAAC,EACpB,kBAAkB,EAClB,SAAS,EACT;oBACE,CAAC,wBAAwB,CAAC,EACxB,kBAAkB,EAAE,CAAC,wBAAwB,CAAC;oBAChD,CAAC,qCAAqC,CAAC,EACrC,kBAAkB,EAAE,CAAC,qCAAqC,CAAC;iBAC9D,CACF,CAAC;gBAEF,qEAAqE;gBACrE,gEAAgE;gBAChE,4DAA4D;gBAC5D,mDAAmD;gBACnD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,MAAM,wCAAwC,GAC5C,6BAA6B,EAAE,WAAW,CAAC;YAC7C,wEAAwE;YACxE,cAAc;YACd,IAAI,wCAAwC,KAAK,cAAc,EAAE,CAAC;gBAChE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GACxC,gCAAgC,CAAC;gBACnC,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC5B,CAAC;gBACD,WAAW,CAAC,OAAO,CAAC,GAAG,iCAAiC,CACtD,WAAW,CAAC,OAAO,CAAC,EACpB,kBAAkB,EAClB,SAAS,EACT;oBACE,CAAC,wBAAwB,CAAC,EACxB,kBAAkB,EAAE,CAAC,wBAAwB,CAAC;oBAChD,CAAC,qCAAqC,CAAC,EACrC,kBAAkB,EAAE,CAAC,qCAAqC,CAAC;iBAC9D,CACF,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,MAAM,IAAI,KAAK,CACb,cAAc,cAAc,4DAA4D,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,+GAA+G,CAC3O,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,8EAA8E;IAC9E,iEAAiE;IACjE,kEAAkE;IAClE,MAAM,cAAc,GAAyB;QAC3C,GAAG,gBAAgB;QACnB,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;QAC3E,KAAK,EAAE,WAAW;KACnB,CAAC;IACF,MAAM,gBAAgB,GAAG,eAAe,CACtC,gBAAgB,CAAC,UAAU,EAC3B,WAAW,CAAC,UAAU,CACvB,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACrB,cAAc,CAAC,UAAU,GAAG,gBAAgB,CAAC;IAC/C,CAAC;IACD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAC/C,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzB,cAAc,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACjD,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IACzC,CAAC;IACD,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,cAAc,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IACzD,CAAC;IACD,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAClC,cAAc,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC;IACnE,CAAC;IAED,OAAO;QACL,cAAc;QACd,OAAO;QACP,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,iCAAiC,GAAG,CACxC,eAA2C,EAC3C,kBAA6E,EAC7E,MAAkB,EAClB,uBAAwD,EAC5B,EAAE;IAC9B,sDAAsD;IACtD,MAAM,uBAAuB,GAAG,eAAe,CAC7C,kBAAkB,CACY,CAAC;IACjC,4CAA4C;IAC5C,IAAI,uBAAuB,EAAE,CAAC;QAC5B,MAAM,2BAA2B,GAC/B,wBAAwB,IAAI,kBAAkB;YAC5C,CAAC,CAAC,kBAAkB,CAAC,wBAAwB,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,2BAA2B,EAAE,CAAC;YAChC,uBAAuB,CAAC,wBAAwB,CAAC;gBAC/C,2BAA2B,CAAC;QAChC,CAAC;aAAM,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC7D,uBAAuB,CAAC,wBAAwB,CAAC;gBAC/C,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,0BAA0B,GAC9B,qCAAqC,IAAI,kBAAkB;YACzD,CAAC,CAAC,kBAAkB,CAAC,qCAAqC,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,0BAA0B,EAAE,CAAC;YAC/B,uBAAuB,CAAC,qCAAqC,CAAC;gBAC5D,0BAA0B,CAAC;QAC/B,CAAC;aAAM,IAAI,uBAAuB,CAAC,qCAAqC,CAAC,EAAE,CAAC;YAC1E,uBAAuB,CAAC,qCAAqC,CAAC;gBAC5D,uBAAuB,CAAC,qCAAqC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,8EAA8E;IAC9E,QAAQ;IACR,OAAO;QACL,GAAG,eAAe;QAClB,CAAC,MAAM,CAAC,EAAE,uBAAuB;KAClC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,gBAAsC,EACtC,WAAwD,EAMxD,EAAE;IACF,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,MAAM,MAAM,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEtC,IAAI,KAAK,GAAG,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAC9C,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YAClC,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;gBAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBACzB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;oBACrC,IAAI,SAAS,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBAC9D,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBACzB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;wBACxC,kBAAkB;wBAClB,OAAO;oBACT,CAAC;oBACD,IAAI,iBAAiB,IAAI,YAAY,EAAE,CAAC;wBACtC,oDAAoD;wBACpD,oBAAoB;wBACpB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;wBAC1C,OAAO;oBACT,CAAC;oBACD,IAAI,YAAY,EAAE,CAAC;wBACjB,wDAAwD;wBACxD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC,EACD,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAC7B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAgB,IAAI,GAAG,CACnC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAC1E,CACF,CAAC;IAEF,MAAM,cAAc,GAAyB;QAC3C,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;QAC3E,UAAU,EAAE,eAAe,CACzB,gBAAgB,CAAC,UAAU,EAC3B,WAAW,CAAC,UAAU,CACvB;QACD,iBAAiB,EACf,WAAW,CAAC,iBAAiB,IAAI,gBAAgB,CAAC,iBAAiB;QACrE,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO;QACxD,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ;QAC3D,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI;QAC/C,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,gBAAgB,CAAC,YAAY;QACvE,KAAK;KACN,CAAC;IACF,OAAO;QACL,cAAc;QACd,OAAO;QACP,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,kBAAiD,EACjD,aAA4C,EAC5C,EAAE;IACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,2EAA2E;IAC3E,cAAc;IACd,MAAM,EACJ,OAAO,EACP,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,OAAO,EACP,eAAe,EACf,KAAK,EACL,SAAS,EACT,SAAS,GACV,GAAG,kBAAkB,CAAC;IAEvB,MAAM,EACJ,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,gBAAgB,EAC/B,OAAO,EAAE,UAAU,EACnB,eAAe,EAAE,kBAAkB,EACnC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,YAAY,GACxB,GAAG,aAAa,CAAC;IAElB,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU;QAC7D,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY;QACvE,UAAU,EAAE,UAAU;YACpB,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,aAAa,EAAE;YACrC,CAAC,CAAC,aAAa;QACjB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW;QAClE,aAAa,EAAE,aAAa;YAC1B,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,gBAAgB,EAAE;YAC3C,CAAC,CAAC,gBAAgB;QACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU;QAC7D,eAAe,EAAE,eAAe;YAC9B,CAAC,CAAC,EAAE,GAAG,eAAe,EAAE,GAAG,kBAAkB,EAAE;YAC/C,CAAC,CAAC,kBAAkB;QACtB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ;QACnD,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY;QACvE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY;KACxE,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAC1B,eAAuB,EACvB,kBAA0B,EAC1B,EAAE;IACF,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,gBAA4C,EAC5C,WAAoE,EACxC,EAAE;IAC9B,MAAM,EACJ,OAAO,EACP,WAAW,EACX,GAAG,EACH,GAAG,EACH,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,OAAO,EACP,IAAI,EACJ,KAAK,EACL,KAAK,EACL,OAAO,EACP,UAAU,GACX,GAAG,gBAAgB,CAAC;IACrB,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAEtE,MAAM,oBAAoB,GACxB,OAAO,WAAW,KAAK,QAAQ;QAC/B,WAAW,KAAK,IAAI;QACpB,uBAAuB,IAAI,WAAW;QACpC,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC;QACtC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,EACJ,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,cAAc,EAC3B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,aAAa,GAC1B,GAAG,WAAW,CAAC;IAChB,OAAO;QACL,OAAO,EAAE,UAAU,IAAI,OAAO;QAC9B,WAAW,EAAE,cAAc,IAAI,WAAW;QAC1C,CAAC,uBAAuB,CAAC,EAAE,oBAAoB,IAAI,mBAAmB;QACtE,OAAO,EAAE,UAAU,IAAI,OAAO;QAC9B,UAAU,EAAE,aAAa,IAAI,UAAU;QACvC,GAAG,EAAE,qBAAqB,CAAC,GAAG,EAAE,eAAe,CAAC;QAChD,GAAG,EAAE,qBAAqB,CAAC,GAAG,EAAE,eAAe,CAAC;QAChD,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC;QACnD,MAAM,EAAE,qBAAqB,CAAC,eAAe,EAAE,kBAAkB,CAAC;QAClE,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAC5D,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC;QACnD,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,CAAC;QACtD,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,uBAAqD,EACrD,kBAA8E,EACrC,EAAE;IAC3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,6EAA6E;QAC7E,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,kEAAkE;IAClE,MAAM,uBAAuB,GAC3B,uBAAuB,EAAE,CAAC,wBAAwB,CAAC,CAAC;IACtD,MAAM,qBAAqB,GACzB,uBAAuB,EAAE,CAAC,qCAAqC,CAAC,CAAC;IACnE,OAAO;QACL,WAAW,EAAE,EAAE,EAAE;QACjB,CAAC,wBAAwB,CAAC,EAAE,uBAAuB;QACnD,CAAC,qCAAqC,CAAC,EAAE,qBAAqB;QAC9D,GAAG,kBAAkB;KACtB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.spec.d.ts","sourceRoot":"","sources":["../src/merge.spec.ts"],"names":[],"mappings":""}
|