swaggerizer 0.0.0-stage → 1.0.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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +359 -2
  3. package/dist/admin.d.ts +35 -0
  4. package/dist/admin.d.ts.map +1 -0
  5. package/dist/catalogue.d.ts +22 -0
  6. package/dist/catalogue.d.ts.map +1 -0
  7. package/dist/chunks/scenario-DXI-TbMN.mjs +371 -0
  8. package/dist/chunks/scenario-DXI-TbMN.mjs.map +1 -0
  9. package/dist/chunks/scenario-_ZBu5fJX.js +391 -0
  10. package/dist/chunks/scenario-_ZBu5fJX.js.map +1 -0
  11. package/dist/cli.d.ts +2 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +2977 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +100 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +129 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/config.mjs +120 -0
  20. package/dist/config.mjs.map +1 -0
  21. package/dist/contract.d.ts +60 -0
  22. package/dist/contract.d.ts.map +1 -0
  23. package/dist/debug-menu.d.ts +20 -0
  24. package/dist/debug-menu.d.ts.map +1 -0
  25. package/dist/debug-menu.js +238 -0
  26. package/dist/debug-menu.js.map +1 -0
  27. package/dist/debug-menu.mjs +236 -0
  28. package/dist/debug-menu.mjs.map +1 -0
  29. package/dist/generate.d.ts +74 -0
  30. package/dist/generate.d.ts.map +1 -0
  31. package/dist/index.d.ts +14 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +2397 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/index.mjs +2343 -0
  36. package/dist/index.mjs.map +1 -0
  37. package/dist/load-config.d.ts +15 -0
  38. package/dist/load-config.d.ts.map +1 -0
  39. package/dist/msw.d.ts +48 -0
  40. package/dist/msw.d.ts.map +1 -0
  41. package/dist/msw.js +324 -0
  42. package/dist/msw.js.map +1 -0
  43. package/dist/msw.mjs +317 -0
  44. package/dist/msw.mjs.map +1 -0
  45. package/dist/paths.d.ts +14 -0
  46. package/dist/paths.d.ts.map +1 -0
  47. package/dist/pull.d.ts +31 -0
  48. package/dist/pull.d.ts.map +1 -0
  49. package/dist/scenario.d.ts +86 -0
  50. package/dist/scenario.d.ts.map +1 -0
  51. package/dist/schema.d.ts +13 -0
  52. package/dist/schema.d.ts.map +1 -0
  53. package/dist/server.d.ts +83 -0
  54. package/dist/server.d.ts.map +1 -0
  55. package/dist/spec.d.ts +36 -0
  56. package/dist/spec.d.ts.map +1 -0
  57. package/dist/types.d.ts +175 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/ui/app.css +1119 -0
  60. package/dist/ui/app.js +806 -0
  61. package/dist/ui/index.html +77 -0
  62. package/dist/ui-assets.d.ts +9 -0
  63. package/dist/ui-assets.d.ts.map +1 -0
  64. package/package.json +99 -4
@@ -0,0 +1,236 @@
1
+ import { v as variantsOf } from './chunks/scenario-DXI-TbMN.mjs';
2
+
3
+ /*
4
+ * swaggerizer/debug-menu — a floating in-page menu for switching mock responses while you use your
5
+ * app. Framework-free and rendered in a shadow root so it never clashes with the host page styles.
6
+ *
7
+ * import { mountDebugMenu } from "swaggerizer/debug-menu";
8
+ * const mocks = createMocks();
9
+ * await setupWorker(...mocks.handlers).start();
10
+ * mountDebugMenu(mocks);
11
+ */
12
+ const PROXY = "__proxy__";
13
+ const CUSTOM = "__custom__";
14
+ const STYLE = `
15
+ :host { all: initial; }
16
+ * { box-sizing: border-box; }
17
+ .root { position: fixed; z-index: 2147483000; font: 13px/1.4 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: #17202b; }
18
+ .root.br { right: 16px; bottom: 16px; } .root.bl { left: 16px; bottom: 16px; }
19
+ .root.tr { right: 16px; top: 16px; } .root.tl { left: 16px; top: 16px; }
20
+ .launcher { display: inline-flex; align-items: center; gap: 6px; border: 0; border-radius: 999px; padding: 8px 14px; background: #0f766e; color: #fff; font: 600 13px/1 inherit; font-family: inherit; cursor: pointer; box-shadow: 0 4px 14px rgba(15, 23, 42, .25); }
21
+ .launcher:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible, textarea:focus-visible { outline: 2px solid #5eead4; outline-offset: 2px; }
22
+ .count { background: #fff; color: #115e59; border-radius: 999px; padding: 2px 7px; font-size: 11px; }
23
+ .panel { position: absolute; width: min(440px, calc(100vw - 32px)); max-height: min(640px, calc(100vh - 90px)); display: flex; flex-direction: column; background: #fff; border: 1px solid #dfe3e8; border-radius: 12px; box-shadow: 0 12px 40px rgba(15, 23, 42, .28); overflow: hidden; }
24
+ .br .panel, .bl .panel { bottom: 48px; } .tr .panel, .tl .panel { top: 48px; }
25
+ .br .panel, .tr .panel { right: 0; } .bl .panel, .tl .panel { left: 0; }
26
+ .head { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-bottom: 1px solid #dfe3e8; background: #f5f6f8; }
27
+ .head h2 { margin: 0; font-size: 14px; flex: 1; }
28
+ .src { font-size: 11px; color: #6b7685; }
29
+ .btn { white-space: nowrap; border: 1px solid #c7cdd5; background: #fff; color: #17202b; border-radius: 6px; padding: 4px 9px; font: inherit; font-size: 12px; cursor: pointer; }
30
+ .btn:hover { background: #f0f2f5; }
31
+ .btn.primary { background: #0f766e; border-color: #0f766e; color: #fff; }
32
+ .search { padding: 8px 12px; border-bottom: 1px solid #dfe3e8; }
33
+ .search input { width: 100%; padding: 6px 8px; border: 1px solid #c7cdd5; border-radius: 6px; font: inherit; }
34
+ .list { overflow: auto; padding: 4px 0 8px; }
35
+ .group { padding: 8px 12px 2px; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #6b7685; }
36
+ .op { padding: 8px 12px; border-top: 1px solid #f0f2f5; }
37
+ .op.mod { background: #e6f4f2; }
38
+ .row { display: flex; align-items: center; gap: 6px; min-width: 0; }
39
+ .m { font: 700 10px/1 ui-monospace, Menlo, monospace; padding: 3px 5px; border-radius: 4px; color: #fff; background: #6b7685; text-transform: uppercase; flex: none; }
40
+ .m.get { background: #1d4ed8; } .m.post { background: #15803d; } .m.put { background: #a15c00; } .m.patch { background: #7e22ce; } .m.delete { background: #b42318; }
41
+ .route { font-family: ui-monospace, Menlo, monospace; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
42
+ .controls { display: flex; gap: 6px; margin-top: 6px; }
43
+ select { flex: 1; min-width: 0; padding: 4px 6px; border: 1px solid #c7cdd5; border-radius: 6px; font: inherit; font-size: 12px; background: #fff; color: inherit; }
44
+ .delay { width: 76px; padding: 4px 6px; border: 1px solid #c7cdd5; border-radius: 6px; font: inherit; font-size: 12px; }
45
+ .custom { margin-top: 6px; display: grid; gap: 6px; }
46
+ .custom .row input { width: 80px; padding: 4px 6px; border: 1px solid #c7cdd5; border-radius: 6px; font: inherit; font-size: 12px; }
47
+ textarea { width: 100%; min-height: 90px; padding: 6px; border: 1px solid #c7cdd5; border-radius: 6px; font: 12px/1.4 ui-monospace, Menlo, monospace; resize: vertical; }
48
+ .err { color: #b42318; font-size: 12px; }
49
+ .empty { padding: 16px 12px; color: #6b7685; }
50
+ @media (prefers-color-scheme: dark) {
51
+ .root { color: #e6edf3; }
52
+ .panel { background: #151b23; border-color: #2a323d; }
53
+ .head { background: #1c232d; border-color: #2a323d; }
54
+ .search, .op { border-color: #2a323d; }
55
+ .op.mod { background: #0f2a28; }
56
+ .btn, select, .delay, .search input, textarea, .custom .row input { background: #0d1117; color: #e6edf3; border-color: #3a4350; }
57
+ .btn:hover { background: #1c232d; }
58
+ .btn.primary { background: #2dd4bf; border-color: #2dd4bf; color: #0d1117; }
59
+ .src, .group, .empty { color: #8b949e; }
60
+ }
61
+ `;
62
+ function el(tag, attrs = {}, ...children) {
63
+ const node = document.createElement(tag);
64
+ for (const [key, value] of Object.entries(attrs)) {
65
+ if (value === undefined || value === null || value === false)
66
+ continue;
67
+ if (key === "class")
68
+ node.className = value;
69
+ else if (key === "text")
70
+ node.textContent = value;
71
+ else if (key.startsWith("on"))
72
+ node.addEventListener(key.slice(2), value);
73
+ else if (key === "value" || key === "selected" || key === "checked")
74
+ node[key] = value;
75
+ else
76
+ node.setAttribute(key, value === true ? "" : String(value));
77
+ }
78
+ for (const child of children) {
79
+ if (child === null || child === undefined || child === false)
80
+ continue;
81
+ node.append(child);
82
+ }
83
+ return node;
84
+ }
85
+ function variantLabel(v) {
86
+ const name = v.kind === "generated" ? "generated" : v.kind === "empty" ? "no body" : v.example;
87
+ return `${v.code} · ${name}`;
88
+ }
89
+ function matchesShortcut(event, shortcut) {
90
+ const parts = shortcut.toLowerCase().split("+").map(p => p.trim());
91
+ const key = parts[parts.length - 1];
92
+ return (event.altKey === parts.includes("alt") &&
93
+ event.shiftKey === parts.includes("shift") &&
94
+ (event.ctrlKey || false) === parts.includes("ctrl") &&
95
+ (event.metaKey || false) === (parts.includes("meta") || parts.includes("cmd")) &&
96
+ (event.key.toLowerCase() === key || event.code.toLowerCase() === `key${key}`));
97
+ }
98
+ function mountDebugMenu(mocks, options = {}) {
99
+ if (typeof document === "undefined")
100
+ throw new Error("mountDebugMenu needs a browser document.");
101
+ const host = el("div", { "data-swaggerizer-debug-menu": "" });
102
+ const shadow = host.attachShadow({ mode: "open" });
103
+ const corner = { "bottom-right": "br", "bottom-left": "bl", "top-right": "tr", "top-left": "tl" }[options.position ?? "bottom-right"];
104
+ const root = el("div", { class: `root ${corner}` });
105
+ shadow.append(el("style", { text: STYLE }), root);
106
+ (options.container ?? document.body).append(host);
107
+ let isOpen = Boolean(options.open);
108
+ let filter = "";
109
+ const editing = new Map();
110
+ const errors = new Map();
111
+ const run = (key, work) => {
112
+ work.then(() => errors.delete(key), err => errors.set(key, err?.message ?? String(err))).then(render);
113
+ };
114
+ function opRow(op) {
115
+ const variants = variantsOf(op);
116
+ const current = op.mode === "proxy" ? PROXY : op.mode === "custom" ? CUSTOM : `${op.selectedCode}\u0000${op.selectedExample}`;
117
+ const select = el("select", {
118
+ "aria-label": `Response for ${op.method.toUpperCase()} ${op.route}`,
119
+ onchange: (e) => {
120
+ const value = e.target.value;
121
+ if (value === PROXY)
122
+ return run(op.key, mocks.select({ method: op.method, route: op.route, mode: "proxy" }));
123
+ if (value === CUSTOM)
124
+ return run(op.key, mocks.select({ method: op.method, route: op.route, mode: "custom" }));
125
+ const [code, example] = value.split("\u0000");
126
+ run(op.key, mocks.select({ method: op.method, route: op.route, code, example, mode: "mock" }));
127
+ }
128
+ }, ...variants.map(v => el("option", { value: `${v.code}\u0000${v.example}`, selected: current === `${v.code}\u0000${v.example}`, text: variantLabel(v) })), el("option", { value: CUSTOM, selected: current === CUSTOM, text: "Custom response…" }), el("option", { value: PROXY, selected: current === PROXY, text: "Real API (passthrough)" }));
129
+ const delay = el("input", {
130
+ class: "delay",
131
+ type: "number",
132
+ min: "0",
133
+ step: "100",
134
+ placeholder: "delay ms",
135
+ title: "Artificial latency in milliseconds",
136
+ "aria-label": `Delay for ${op.method.toUpperCase()} ${op.route}`,
137
+ value: op.delay ? String(op.delay) : "",
138
+ onchange: (e) => run(op.key, mocks.select({ method: op.method, route: op.route, delay: Number(e.target.value) || 0 }))
139
+ });
140
+ let custom = null;
141
+ if (op.mode === "custom") {
142
+ const draft = editing.get(op.key) ?? {
143
+ status: String(op.custom?.status ?? 200),
144
+ body: op.custom?.body === undefined ? "" : JSON.stringify(op.custom.body, null, 2)
145
+ };
146
+ const status = el("input", { type: "number", min: "100", max: "599", value: draft.status, "aria-label": "Status", oninput: (e) => editing.set(op.key, { ...draft, status: e.target.value }) });
147
+ const body = el("textarea", { spellcheck: "false", "aria-label": "Response body (JSON)", oninput: (e) => { draft.body = e.target.value; editing.set(op.key, draft); } });
148
+ body.value = draft.body;
149
+ custom = el("div", { class: "custom" }, el("div", { class: "row" }, el("span", { text: "Status" }), status, el("button", {
150
+ class: "btn primary",
151
+ type: "button",
152
+ text: "Apply",
153
+ onclick: () => {
154
+ editing.delete(op.key);
155
+ run(op.key, mocks.select({ method: op.method, route: op.route, mode: "custom", custom: { status: Number(status.value), body: body.value } }));
156
+ }
157
+ })), body);
158
+ }
159
+ return el("div", { class: `op${op.modified ? " mod" : ""}` }, el("div", { class: "row" }, el("span", { class: `m ${op.method}`, text: op.method }), el("span", { class: "route", title: op.summary || op.route, text: op.route }), op.modified ? el("button", { class: "btn", type: "button", text: "Reset", onclick: () => run(op.key, mocks.reset({ method: op.method, route: op.route })) }) : null), el("div", { class: "controls" }, select, delay), custom, errors.has(op.key) ? el("div", { class: "err", role: "alert", text: errors.get(op.key) }) : null);
160
+ }
161
+ function render() {
162
+ const active = shadow.activeElement;
163
+ // Don't rebuild under the user's cursor while they type in the custom-response editor.
164
+ if (active && (active.tagName === "TEXTAREA" || (active.tagName === "INPUT" && active.getAttribute("type") === "number")))
165
+ return;
166
+ const scroll = shadow.querySelector(".list")?.scrollTop ?? 0;
167
+ const ops = mocks.operations().filter(o => o.active);
168
+ const switched = ops.filter(o => o.modified).length;
169
+ const launcher = el("button", {
170
+ class: "launcher",
171
+ type: "button",
172
+ "aria-expanded": String(isOpen),
173
+ title: options.shortcut === false ? "Swaggerizer mocks" : `Swaggerizer mocks (${options.shortcut ?? "Alt+Shift+S"})`,
174
+ onclick: () => toggle()
175
+ }, "API mocks", switched ? el("span", { class: "count", text: String(switched) }) : null);
176
+ const children = [launcher];
177
+ if (isOpen) {
178
+ const q = filter.trim().toLowerCase();
179
+ const visible = ops.filter(o => !q || `${o.method} ${o.route} ${o.summary ?? ""} ${o.operationId ?? ""} ${o.tags.join(" ")}`.toLowerCase().includes(q));
180
+ const titles = new Map(mocks.manifests.map(m => [m.specId, m.title || m.specId]));
181
+ const list = el("div", { class: "list" });
182
+ let lastSpec = "";
183
+ for (const op of visible) {
184
+ if (op.specId !== lastSpec && mocks.manifests.length > 1) {
185
+ list.append(el("div", { class: "group", text: titles.get(op.specId) ?? op.specId }));
186
+ }
187
+ lastSpec = op.specId;
188
+ list.append(opRow(op));
189
+ }
190
+ if (visible.length === 0)
191
+ list.append(el("div", { class: "empty", text: ops.length ? "No operations match." : "No operations in the manifests." }));
192
+ const search = el("input", { type: "search", placeholder: "Filter operations…", value: filter, "aria-label": "Filter operations" });
193
+ search.addEventListener("input", () => {
194
+ filter = search.value;
195
+ render();
196
+ shadow.querySelector(".search input")?.focus();
197
+ });
198
+ children.push(el("div", { class: "panel", role: "dialog", "aria-label": options.title ?? "Swaggerizer mocks" }, el("div", { class: "head" }, el("h2", { text: options.title ?? "Swaggerizer" }), el("span", { class: "src", title: mocks.server ? `Choices are shared with ${mocks.server}` : "Choices are stored in this browser", text: mocks.server ? "synced" : "local" }), el("button", { class: "btn", type: "button", text: "Reset all", onclick: () => run("*", mocks.reset()) }), el("button", { class: "btn", type: "button", "aria-label": "Close", text: "✕", onclick: () => close() })), el("div", { class: "search" }, search), list));
199
+ requestAnimationFrame(() => {
200
+ const l = shadow.querySelector(".list");
201
+ if (l)
202
+ l.scrollTop = scroll;
203
+ });
204
+ }
205
+ root.replaceChildren(...children);
206
+ }
207
+ function open() { isOpen = true; render(); }
208
+ function close() { isOpen = false; render(); }
209
+ function toggle() { isOpen = !isOpen; render(); }
210
+ const onKey = (event) => {
211
+ if (options.shortcut !== false && matchesShortcut(event, options.shortcut ?? "Alt+Shift+S")) {
212
+ event.preventDefault();
213
+ toggle();
214
+ }
215
+ };
216
+ document.addEventListener("keydown", onKey);
217
+ const unsubscribe = mocks.subscribe(render);
218
+ const timer = mocks.server ? setInterval(() => { if (isOpen && !document.hidden)
219
+ void mocks.sync(); }, 2000) : undefined;
220
+ render();
221
+ return {
222
+ open,
223
+ close,
224
+ toggle,
225
+ destroy() {
226
+ document.removeEventListener("keydown", onKey);
227
+ unsubscribe();
228
+ if (timer)
229
+ clearInterval(timer);
230
+ host.remove();
231
+ }
232
+ };
233
+ }
234
+
235
+ export { mountDebugMenu };
236
+ //# sourceMappingURL=debug-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-menu.mjs","sources":["../src/debug-menu.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { type FailOn } from "./contract";
2
+ import { type AnalysedSpec } from "./spec";
3
+ import { type SpecConfig, type SwaggerizerConfig } from "./config";
4
+ import type { ChangeReport, SwaggerizerManifest } from "./types";
5
+ export interface GenerateOptions {
6
+ /** Spec files, folders and/or URLs. Optional when `config` declares the specs. */
7
+ specs?: string | string[];
8
+ /** Specs and per-spec settings from swaggerizer.config.ts. */
9
+ config?: SwaggerizerConfig;
10
+ /** Root folder for generated code; each spec gets its own sub-folder unless it sets `output`. */
11
+ output?: string;
12
+ /** orval client: fetch (default), axios, axios-functions, react-query, vue-query, svelte-query, swr, angular, hono, zod… */
13
+ client?: string;
14
+ /** Base URL baked into the generated client (orval `output.baseUrl`). */
15
+ baseUrl?: string;
16
+ /** Generate MSW handlers (default true). */
17
+ mock?: boolean;
18
+ /** Scenario choices saved by `swaggerizer serve --state-file` to embed as the mocks' defaults. */
19
+ stateFile?: string;
20
+ /** Change severity that needs confirmation before generating (default "breaking"). */
21
+ failOn?: FailOn;
22
+ /** Generate even when changes exceed `failOn`. */
23
+ yes?: boolean;
24
+ /** Only report changes; never write anything. */
25
+ check?: boolean;
26
+ /** Asked when changes exceed `failOn` and `yes` is not set. Resolve true to continue. */
27
+ confirm?: (reports: ChangeReport[]) => Promise<boolean>;
28
+ /** Module the generated code imports the runtime from (default "swaggerizer/msw"). A path starting with "." is resolved from the cwd. */
29
+ runtimeImport?: string;
30
+ /** Extra orval `output` options, merged over Swaggerizer's defaults. */
31
+ orval?: Record<string, unknown>;
32
+ /** Request headers for spec URLs (a spec config's own `headers` win). */
33
+ headers?: Record<string, string>;
34
+ verbose?: boolean;
35
+ silent?: boolean;
36
+ color?: boolean;
37
+ }
38
+ export interface GenerateResult {
39
+ reports: ChangeReport[];
40
+ /** Spec ids whose code was (re)generated. */
41
+ generated: string[];
42
+ /** True when generation was skipped (check mode, or changes were not confirmed). */
43
+ skipped: boolean;
44
+ blocked: boolean;
45
+ }
46
+ export interface SpecTarget {
47
+ id: string;
48
+ /** Local file or URL. */
49
+ input: string;
50
+ config: SpecConfig;
51
+ }
52
+ /** Every spec to work on: those declared in the config plus any extra files, folders or URLs. */
53
+ export declare function resolveTargets(specInputs: string | string[] | undefined, config?: SwaggerizerConfig): Promise<SpecTarget[]>;
54
+ /** Compares every spec with the snapshot saved at the last generation. */
55
+ export declare function checkChanges(specInputs: string | string[] | undefined, output: string | undefined, config?: SwaggerizerConfig, headers?: Record<string, string> | undefined): Promise<{
56
+ specs: Array<AnalysedSpec & {
57
+ config: SpecConfig;
58
+ }>;
59
+ reports: ChangeReport[];
60
+ }>;
61
+ /**
62
+ * Moves orval's MSW + faker files into the mocks folder (Nx-style repos keep mocks apart from
63
+ * shipped code) and points their imports back at the models.
64
+ */
65
+ export declare function moveMocks(id: string, dir: string, mocksDir: string): void;
66
+ /** Name of orval's aggregate `get<Title>Mock()` export in the generated `.msw.ts` file. */
67
+ export declare function findMockAggregate(source: string): string | undefined;
68
+ export declare function renderWrapper(spec: AnalysedSpec, manifest: SwaggerizerManifest, mockModule: string | undefined, aggregate: string | undefined, runtimeImport: string): string;
69
+ export declare function renderIndex(entries: Array<{
70
+ id: string;
71
+ clientModule: string;
72
+ }>, runtimeImport: string): string;
73
+ export declare function generate(options: GenerateOptions): Promise<GenerateResult>;
74
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1F,OAAO,EAAgC,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAe,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4HAA4H;IAC5H,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,yIAAyI;IACzI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAqCD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,iGAAiG;AACjG,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBjI;AAWD,0EAA0E;AAC1E,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACzC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAA2B,GAC5D,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC,YAAY,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAoC3F;AAqDD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUzE;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CA4B7K;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CA4B/G;AAgBD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAmFhF"}
@@ -0,0 +1,14 @@
1
+ export * from "./types";
2
+ export { createSwaggerizer, startSwaggerizer, type Swaggerizer, type SwaggerizerOptions } from "./server";
3
+ export { generate, checkChanges, findMockAggregate, type GenerateOptions, type GenerateResult } from "./generate";
4
+ export { buildContract, diffContracts, exceedsThreshold, formatReport, hasChanges, contractKey, type Contract, type ContractOperation, type ContractSchema, type FailOn } from "./contract";
5
+ export { analyseSpecFile, loadSpecFile, listSpecFiles, resolveSpecInputs, specIdFor, type AnalysedSpec, type LoadedSpec } from "./spec";
6
+ export { buildCatalogue, basePathsOf, serverUrlOf, statusForCode, normaliseMediaType } from "./catalogue";
7
+ export { applyAliases, applySelection, buildOperationStates, candidatePaths, relativeToBase, effectiveExample, matchOperation, operationKey, parseScenarioHeader, resolveResponse, variantsOf, SCENARIO_HEADER } from "./scenario";
8
+ export { sampleFromSchema } from "./schema";
9
+ export { CONTRACT_FILE, WRAPPER_FILE, outputDirs } from "./paths";
10
+ export * from "./config";
11
+ export { loadConfig, findConfigFile, aliasesFromTsconfig } from "./load-config";
12
+ export { pull, type PullOptions, type PullResult } from "./pull";
13
+ export { resolveTargets, moveMocks, type SpecTarget } from "./generate";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAClH,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxI,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC1G,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC"}