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,77 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <meta name="swaggerizer-base" content="__SWAGGERIZER_BASE__" />
7
+ <title>swaggerizer · scenario control</title>
8
+ <link
9
+ rel="icon"
10
+ href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='8' fill='%230f766e'/%3E%3Ctext x='16' y='23' font-family='sans-serif' font-size='20' font-weight='700' text-anchor='middle' fill='white'%3ES%3C/text%3E%3C/svg%3E"
11
+ />
12
+ <link rel="stylesheet" href="__SWAGGERIZER_BASE__/app.css" />
13
+ </head>
14
+ <body>
15
+ <header class="topbar">
16
+ <div class="brand">
17
+ <span class="brand-mark" aria-hidden="true">s</span>
18
+ <div>
19
+ <h1>swaggerizer</h1>
20
+ <p class="brand-sub">Live scenario control</p>
21
+ </div>
22
+ </div>
23
+ <div class="stats" id="stats" aria-live="polite"></div>
24
+ <div class="actions">
25
+ <span class="conn" id="conn" title="Connection to the swaggerizer server">
26
+ <span class="conn-dot" aria-hidden="true"></span><span class="conn-text">Connecting…</span>
27
+ </span>
28
+ <button type="button" class="btn" id="reload-btn" title="Re-read spec files from disk">
29
+ Reload specs
30
+ </button>
31
+ <button type="button" class="btn btn-ghost" id="reset-all-btn" title="Restore every endpoint to its default response">
32
+ Reset all
33
+ </button>
34
+ </div>
35
+ </header>
36
+
37
+ <div class="layout">
38
+ <aside class="sidebar" aria-label="Specs and filters">
39
+ <section class="panel">
40
+ <h2 class="panel-title">Specs</h2>
41
+ <p class="panel-hint">Switch whole OpenAPI / Swagger files on or off. Where two enabled specs declare the same route, the one listed first wins.</p>
42
+ <ul class="spec-list" id="spec-list"></ul>
43
+ </section>
44
+
45
+ <section class="panel">
46
+ <h2 class="panel-title">Filter</h2>
47
+ <label class="field">
48
+ <span class="sr-only">Filter endpoints</span>
49
+ <input type="search" id="filter-text" placeholder="Route, operationId, tag or example…" autocomplete="off" />
50
+ </label>
51
+ <div class="method-filters" id="method-filters" role="group" aria-label="Filter by HTTP method"></div>
52
+ <label class="check">
53
+ <input type="checkbox" id="filter-modified" />
54
+ <span>Only changed from default</span>
55
+ </label>
56
+ </section>
57
+ </aside>
58
+
59
+ <main class="content" id="content" aria-live="off">
60
+ <div class="empty" id="loading">Loading scenarios…</div>
61
+ </main>
62
+
63
+ <aside class="activity" aria-label="Recent mock requests">
64
+ <div class="activity-head">
65
+ <h2 class="panel-title">Live requests</h2>
66
+ <button type="button" class="btn btn-small btn-ghost" id="clear-log-btn">Clear</button>
67
+ </div>
68
+ <ol class="log" id="log"></ol>
69
+ <p class="log-empty" id="log-empty">Requests to the mock API appear here as they happen.</p>
70
+ </aside>
71
+ </div>
72
+
73
+ <div class="toasts" id="toasts" role="status" aria-live="polite"></div>
74
+
75
+ <script src="__SWAGGERIZER_BASE__/app.js"></script>
76
+ </body>
77
+ </html>
@@ -0,0 +1,9 @@
1
+ export declare const UI_ASSETS: readonly ["index.html", "app.js", "app.css"];
2
+ export type UiAsset = (typeof UI_ASSETS)[number];
3
+ export declare function resolveUiDir(): string | null;
4
+ export interface UiAssetServer {
5
+ available: boolean;
6
+ serve: (asset: UiAsset, res: any) => void;
7
+ }
8
+ export declare function createUiAssetServer(basePath: string, uiDir?: string | null): UiAssetServer;
9
+ //# sourceMappingURL=ui-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-assets.d.ts","sourceRoot":"","sources":["../src/ui-assets.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,SAAS,8CAA+C,CAAC;AACtE,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AA8BjD,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAW5C;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,gBAAiB,GAAG,aAAa,CA2C3F"}
package/package.json CHANGED
@@ -1,6 +1,101 @@
1
1
  {
2
2
  "name": "swaggerizer",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.1",
4
+ "description": "A strategizer for OpenAPI/Swagger: live-switchable mock APIs with an admin page and debug menu, orval-generated clients and MSW mocks, and contract-change warnings before you regenerate",
5
+ "keywords": [
6
+ "openapi",
7
+ "swagger",
8
+ "mock",
9
+ "msw",
10
+ "orval",
11
+ "mock-server",
12
+ "api-mocking",
13
+ "contract-testing",
14
+ "breaking-changes"
15
+ ],
16
+ "main": "dist/index.js",
17
+ "module": "dist/index.mjs",
18
+ "types": "dist/index.d.ts",
19
+ "bin": {
20
+ "swaggerizer": "dist/cli.js"
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.mjs",
29
+ "require": "./dist/index.js"
30
+ },
31
+ "./msw": {
32
+ "types": "./dist/msw.d.ts",
33
+ "import": "./dist/msw.mjs",
34
+ "require": "./dist/msw.js"
35
+ },
36
+ "./debug-menu": {
37
+ "types": "./dist/debug-menu.d.ts",
38
+ "import": "./dist/debug-menu.mjs",
39
+ "require": "./dist/debug-menu.js"
40
+ },
41
+ "./config": {
42
+ "types": "./dist/config.d.ts",
43
+ "import": "./dist/config.mjs",
44
+ "require": "./dist/config.js"
45
+ },
46
+ "./package.json": "./package.json"
47
+ },
48
+ "scripts": {
49
+ "build": "rollup -c",
50
+ "typecheck": "tsc --noEmit",
51
+ "pretest": "npm run build",
52
+ "test": "tsx --test test/*.test.ts",
53
+ "prepare": "npm run build",
54
+ "example": "node ./dist/cli.js serve --folder ./example_specs --port 8080 --generated ./example_generated --watch",
55
+ "example:generate": "node ./dist/cli.js generate --folder ./example_specs --output ./example_generated --runtime-import ./src/msw --yes",
56
+ "example:diff": "node ./dist/cli.js diff --folder ./example_specs_next --output ./example_generated",
57
+ "example:browser": "node examples/browser/build.mjs"
58
+ },
59
+ "author": "James Bolton <james@james-bolton.com>",
60
+ "license": "MIT",
61
+ "engines": {
62
+ "node": ">=20"
63
+ },
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "git+https://github.com/jayjaybeeuk/swaggerizer.git"
67
+ },
68
+ "bugs": {
69
+ "url": "https://github.com/jayjaybeeuk/swaggerizer/issues"
70
+ },
71
+ "homepage": "https://github.com/jayjaybeeuk/swaggerizer#readme",
72
+ "dependencies": {
73
+ "@apidevtools/swagger-parser": "^13.1.0",
74
+ "jiti": "^2.7.0",
75
+ "orval": "^8.47.0",
76
+ "swagger2openapi": "^7.0.8",
77
+ "yargs": "^18.2.0"
78
+ },
79
+ "peerDependencies": {
80
+ "msw": "^2.0.0 || ^3.0.0"
81
+ },
82
+ "peerDependenciesMeta": {
83
+ "msw": {
84
+ "optional": true
85
+ }
86
+ },
87
+ "devDependencies": {
88
+ "@faker-js/faker": "^10.6.0",
89
+ "@rollup/plugin-node-resolve": "^16.0.3",
90
+ "@rollup/plugin-typescript": "^12.3.1",
91
+ "@types/node": "^26.6.6",
92
+ "@types/yargs": "^17.0.35",
93
+ "esbuild": "^0.28.2",
94
+ "msw": "^3.0.5",
95
+ "rollup": "^4.68.2",
96
+ "semantic-release": "^25.0.9",
97
+ "tslib": "^2.9.1",
98
+ "tsx": "^4.23.15",
99
+ "typescript": "^5.9.3"
100
+ }
101
+ }