@braydenyang/fdoc 0.1.0

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.
@@ -0,0 +1,335 @@
1
+ {
2
+ "components": {
3
+ "schemas": {
4
+ "CreatePetRequest": {
5
+ "type": "object",
6
+ "required": [
7
+ "name",
8
+ "status"
9
+ ],
10
+ "properties": {
11
+ "name": {
12
+ "type": "string"
13
+ },
14
+ "status": {
15
+ "type": "string"
16
+ },
17
+ "tags": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "string"
21
+ }
22
+ }
23
+ }
24
+ },
25
+ "ErrorResponse": {
26
+ "type": "object",
27
+ "properties": {
28
+ "code": {
29
+ "type": "integer",
30
+ "format": "int32"
31
+ },
32
+ "message": {
33
+ "type": "string"
34
+ }
35
+ }
36
+ },
37
+ "Pet": {
38
+ "type": "object",
39
+ "required": [
40
+ "name"
41
+ ],
42
+ "properties": {
43
+ "id": {
44
+ "type": "integer",
45
+ "format": "int64"
46
+ },
47
+ "name": {
48
+ "type": "string"
49
+ },
50
+ "status": {
51
+ "type": "string"
52
+ },
53
+ "tags": {
54
+ "type": "array",
55
+ "items": {
56
+ "type": "string"
57
+ }
58
+ }
59
+ }
60
+ }
61
+ },
62
+ "securitySchemes": {
63
+ "ApiKeyAuth": {
64
+ "type": "apiKey",
65
+ "name": "X-API-Key",
66
+ "in": "header"
67
+ }
68
+ }
69
+ },
70
+ "info": {
71
+ "title": "Pet Store API",
72
+ "description": "A sample Pet Store API demonstrating swag3 annotation support.",
73
+ "version": "1.0.0"
74
+ },
75
+ "openapi": "3.0.3",
76
+ "servers": [
77
+ {
78
+ "url": "https://localhost:8080/api/v1"
79
+ }
80
+ ],
81
+ "paths": {
82
+ "/pets": {
83
+ "get": {
84
+ "tags": [
85
+ "pets"
86
+ ],
87
+ "summary": "List all pets",
88
+ "description": "ListPets returns a list of pets, optionally filtered by status.",
89
+ "operationId": "listPets",
90
+ "parameters": [
91
+ {
92
+ "name": "status",
93
+ "in": "query",
94
+ "description": "filter by status (available, pending, sold)",
95
+ "schema": {
96
+ "type": "string"
97
+ }
98
+ },
99
+ {
100
+ "name": "limit",
101
+ "in": "query",
102
+ "description": "maximum number of results to return",
103
+ "schema": {
104
+ "type": "integer",
105
+ "format": "int64"
106
+ }
107
+ }
108
+ ],
109
+ "responses": {
110
+ "200": {
111
+ "description": "list of pets",
112
+ "content": {
113
+ "application/json": {
114
+ "schema": {
115
+ "type": "array",
116
+ "items": {
117
+ "$ref": "#/components/schemas/Pet"
118
+ }
119
+ }
120
+ }
121
+ }
122
+ },
123
+ "500": {
124
+ "description": "internal server error",
125
+ "content": {
126
+ "application/json": {
127
+ "schema": {
128
+ "$ref": "#/components/schemas/ErrorResponse"
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ },
135
+ "post": {
136
+ "tags": [
137
+ "pets"
138
+ ],
139
+ "summary": "Create a new pet",
140
+ "description": "CreatePet adds a new pet to the store.",
141
+ "operationId": "createPet",
142
+ "requestBody": {
143
+ "description": "pet to create",
144
+ "content": {
145
+ "application/json": {
146
+ "schema": {
147
+ "$ref": "#/components/schemas/CreatePetRequest"
148
+ }
149
+ }
150
+ },
151
+ "required": true
152
+ },
153
+ "responses": {
154
+ "201": {
155
+ "description": "created pet",
156
+ "content": {
157
+ "application/json": {
158
+ "schema": {
159
+ "$ref": "#/components/schemas/Pet"
160
+ }
161
+ }
162
+ }
163
+ },
164
+ "400": {
165
+ "description": "invalid request",
166
+ "content": {
167
+ "application/json": {
168
+ "schema": {
169
+ "$ref": "#/components/schemas/ErrorResponse"
170
+ }
171
+ }
172
+ }
173
+ }
174
+ },
175
+ "security": [
176
+ {
177
+ "ApiKeyAuth": []
178
+ }
179
+ ]
180
+ }
181
+ },
182
+ "/pets/{id}": {
183
+ "get": {
184
+ "tags": [
185
+ "pets"
186
+ ],
187
+ "summary": "Get a pet by ID",
188
+ "description": "GetPet returns a single pet by ID.",
189
+ "operationId": "getPet",
190
+ "parameters": [
191
+ {
192
+ "name": "id",
193
+ "in": "path",
194
+ "description": "pet ID",
195
+ "required": true,
196
+ "schema": {
197
+ "type": "integer",
198
+ "format": "int64"
199
+ }
200
+ }
201
+ ],
202
+ "responses": {
203
+ "200": {
204
+ "description": "the requested pet",
205
+ "content": {
206
+ "application/json": {
207
+ "schema": {
208
+ "$ref": "#/components/schemas/Pet"
209
+ }
210
+ }
211
+ }
212
+ },
213
+ "404": {
214
+ "description": "pet not found",
215
+ "content": {
216
+ "application/json": {
217
+ "schema": {
218
+ "$ref": "#/components/schemas/ErrorResponse"
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ },
225
+ "put": {
226
+ "tags": [
227
+ "pets"
228
+ ],
229
+ "summary": "Update an existing pet",
230
+ "description": "UpdatePet replaces an existing pet record.",
231
+ "operationId": "updatePet",
232
+ "parameters": [
233
+ {
234
+ "name": "id",
235
+ "in": "path",
236
+ "description": "pet ID",
237
+ "required": true,
238
+ "schema": {
239
+ "type": "integer",
240
+ "format": "int64"
241
+ }
242
+ }
243
+ ],
244
+ "requestBody": {
245
+ "description": "updated pet data",
246
+ "content": {
247
+ "application/json": {
248
+ "schema": {
249
+ "$ref": "#/components/schemas/CreatePetRequest"
250
+ }
251
+ }
252
+ },
253
+ "required": true
254
+ },
255
+ "responses": {
256
+ "200": {
257
+ "description": "updated pet",
258
+ "content": {
259
+ "application/json": {
260
+ "schema": {
261
+ "$ref": "#/components/schemas/Pet"
262
+ }
263
+ }
264
+ }
265
+ },
266
+ "404": {
267
+ "description": "pet not found",
268
+ "content": {
269
+ "application/json": {
270
+ "schema": {
271
+ "$ref": "#/components/schemas/ErrorResponse"
272
+ }
273
+ }
274
+ }
275
+ }
276
+ },
277
+ "security": [
278
+ {
279
+ "ApiKeyAuth": []
280
+ }
281
+ ]
282
+ },
283
+ "delete": {
284
+ "tags": [
285
+ "pets"
286
+ ],
287
+ "summary": "Delete a pet",
288
+ "description": "DeletePet removes a pet from the store.",
289
+ "operationId": "deletePet",
290
+ "parameters": [
291
+ {
292
+ "name": "id",
293
+ "in": "path",
294
+ "description": "pet ID",
295
+ "required": true,
296
+ "schema": {
297
+ "type": "integer",
298
+ "format": "int64"
299
+ }
300
+ }
301
+ ],
302
+ "responses": {
303
+ "204": {
304
+ "description": "pet deleted"
305
+ },
306
+ "404": {
307
+ "description": "pet not found",
308
+ "content": {
309
+ "application/json": {
310
+ "schema": {
311
+ "$ref": "#/components/schemas/ErrorResponse"
312
+ }
313
+ }
314
+ }
315
+ }
316
+ },
317
+ "security": [
318
+ {
319
+ "ApiKeyAuth": []
320
+ }
321
+ ]
322
+ }
323
+ }
324
+ },
325
+ "tags": [
326
+ {
327
+ "name": "pets",
328
+ "description": "Operations about pets"
329
+ },
330
+ {
331
+ "name": "store",
332
+ "description": "Store orders"
333
+ }
334
+ ]
335
+ }
@@ -0,0 +1 @@
1
+ .auth-editor[data-v-e4396512]{display:flex;flex-direction:column;gap:10px;padding:8px 0}.auth-row[data-v-e4396512]{display:flex;align-items:center;gap:12px}.auth-label[data-v-e4396512]{flex-shrink:0;width:72px;font-size:12px;color:var(--color-text-muted);text-align:right}.auth-input[data-v-e4396512]{flex:1;max-width:360px;font-family:var(--font-mono);font-size:12.5px}.app-header[data-v-b038409d]{display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 16px;border-bottom:1px solid var(--color-border);background-color:var(--color-bg);flex-shrink:0}.header-left[data-v-b038409d]{display:flex;align-items:center;gap:12px}.logo[data-v-b038409d]{font-size:15px;font-weight:600;color:var(--color-text);letter-spacing:-.01em}.spec-title[data-v-b038409d]{font-size:13px;color:var(--color-text-muted);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-right[data-v-b038409d]{display:flex;align-items:center;gap:12px}.server-wrap[data-v-b038409d]{display:flex;flex-direction:column;gap:8px;padding:4px;width:380px}.section-title[data-v-b038409d]{font-size:13px;font-weight:600;color:var(--color-text)}.section-desc[data-v-b038409d]{font-size:11px;color:var(--color-text-muted);margin-bottom:4px}.server-item[data-v-b038409d]{display:flex;flex-direction:column;gap:2px;padding:6px 0;border-top:1px solid var(--color-border)}.server-url[data-v-b038409d]{font-family:var(--font-mono);font-size:12px;color:var(--color-text);word-break:break-all}.server-desc[data-v-b038409d]{font-size:11px;color:var(--color-text-muted)}.global-auth-wrap[data-v-b038409d]{display:flex;flex-direction:column;gap:4px;padding:4px;width:360px}.sidebar[data-v-e40b2528]{width:var(--sidebar-width);flex-shrink:0;border-right:1px solid var(--color-border);background-color:var(--color-bg);display:flex;flex-direction:column;overflow:hidden;position:relative;transition:width .2s ease}.sidebar--collapsed[data-v-e40b2528]{width:40px}.sidebar-search[data-v-e40b2528]{padding:10px 12px;border-bottom:1px solid var(--color-border);flex-shrink:0}.sidebar-scroll[data-v-e40b2528]{flex:1}.sidebar-empty[data-v-e40b2528]{padding:40px 16px;color:var(--color-text-muted);font-size:12px;text-align:center}.menu-wrap[data-v-e40b2528]{width:100%}.sidebar-toggle[data-v-e40b2528]{position:absolute;bottom:12px;right:8px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;transition:color .12s,background-color .12s;z-index:1}.sidebar-toggle[data-v-e40b2528]:hover{color:var(--color-text);background:var(--color-bg-subtle)}.sidebar--collapsed .sidebar-toggle[data-v-e40b2528]{right:auto;left:50%;transform:translate(-50%)}.ep-info-panel[data-v-e40b2528]{position:fixed;left:calc(var(--sidebar-width) + 6px);z-index:9999;min-width:220px;max-width:320px;padding:10px 14px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg);box-shadow:0 4px 16px #0000001a;pointer-events:auto}[data-theme=dark] .ep-info-panel[data-v-e40b2528]{box-shadow:0 4px 20px #0006}.info-path-row[data-v-e40b2528]{display:flex;align-items:baseline;gap:6px;margin-bottom:8px}.info-method[data-v-e40b2528]{font-family:var(--font-mono);font-size:11px;font-weight:700;flex-shrink:0}.info-path[data-v-e40b2528]{font-family:var(--font-mono);font-size:12px;color:var(--color-text);word-break:break-all}.info-divider[data-v-e40b2528]{height:1px;background:var(--color-border);margin-bottom:8px}.info-field[data-v-e40b2528]{display:flex;gap:8px;font-size:12px;line-height:1.6;align-items:flex-start}.info-label[data-v-e40b2528]{flex-shrink:0;min-width:70px;font-size:11px;color:var(--color-text-muted)}.info-value[data-v-e40b2528]{color:var(--color-text);word-break:break-word}.info-fade-enter-active[data-v-e40b2528],.info-fade-leave-active[data-v-e40b2528]{transition:opacity .1s,transform .1s}.info-fade-enter-from[data-v-e40b2528],.info-fade-leave-to[data-v-e40b2528]{opacity:0;transform:translate(-4px)}.sidebar .n-submenu>.n-menu-item .n-menu-item-content__icon{display:none}.sidebar .n-submenu>.n-menu-item .n-menu-item-content-header{font-size:11px!important;font-weight:700!important;letter-spacing:.07em!important;text-transform:uppercase!important}.mi-root{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;width:100%}.mi-row{display:flex;align-items:baseline;gap:6px;min-width:0}.mi-method{font-family:var(--font-mono);font-size:10px;font-weight:700;flex-shrink:0;letter-spacing:.03em;line-height:1}.mi-primary{font-size:12px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.mi-secondary{font-family:var(--font-mono);font-size:11px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.55}.method-badge[data-v-6bc10dbf]{display:inline-block;width:52px;text-align:center;font-family:var(--font-mono);font-size:11px;font-weight:600;flex-shrink:0}.method-get[data-v-6bc10dbf]{color:var(--color-get)}.method-post[data-v-6bc10dbf]{color:var(--color-post)}.method-put[data-v-6bc10dbf]{color:var(--color-put)}.method-patch[data-v-6bc10dbf]{color:var(--color-patch)}.method-delete[data-v-6bc10dbf]{color:var(--color-delete)}.method-head[data-v-6bc10dbf],.method-options[data-v-6bc10dbf]{color:var(--color-head)}.copy-btn[data-v-9dc8e820]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:4px;background:transparent;color:var(--color-text-muted);cursor:pointer;transition:color .15s,background-color .15s;flex-shrink:0}.copy-btn[data-v-9dc8e820]:hover{color:var(--color-text);background:var(--color-bg-subtle)}.copy-btn--ok[data-v-9dc8e820],.copy-btn--ok[data-v-9dc8e820]:hover{color:#10b981}.schema-viewer[data-v-bb66e54d]{width:100%}.circular-hint[data-v-bb66e54d],.empty-hint[data-v-bb66e54d]{padding:8px 0;font-size:12px;color:var(--color-text-muted)}.circular-hint[data-v-bb66e54d]{color:#ef4444}.combiner-hint[data-v-bb66e54d]{display:flex;align-items:center;gap:6px;padding:8px 0;font-size:12px}.combiner-label[data-v-bb66e54d]{font-family:var(--font-mono);font-size:12px;font-weight:600;color:#64748b;background:#64748b18;padding:1px 6px;border-radius:4px}.combiner-count[data-v-bb66e54d]{color:var(--color-text-muted)}[data-v-bb66e54d] tr.row-depth-1 td{background-color:#6366f10f!important}[data-v-bb66e54d] tr.row-depth-2 td{background-color:#10b9810f!important}[data-v-bb66e54d] tr.row-depth-3 td{background-color:#f59e0b0f!important}[data-v-bb66e54d] tr.row-depth-4 td{background-color:#0ea5e90f!important}[data-v-bb66e54d] td:has(.n-data-table-expand-trigger),[data-v-bb66e54d] td:has(.n-data-table-expand-placeholder){display:flex!important;align-items:center!important}.pe[data-v-b1f9e80e]{border:1px solid var(--color-border);border-radius:6px;overflow:hidden;font-size:13px}.pe-header[data-v-b1f9e80e]{display:flex;align-items:center;height:32px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border);font-size:12px;color:var(--color-text-muted);font-weight:500}.pe-hcell[data-v-b1f9e80e]{display:flex;align-items:center;padding:0 8px}.pe-hcell--check[data-v-b1f9e80e]{width:36px;flex-shrink:0}.pe-hcell--key[data-v-b1f9e80e]{flex:0 0 180px}.pe-hcell--eq[data-v-b1f9e80e]{width:24px;flex-shrink:0;justify-content:center;color:transparent}.pe-hcell--val[data-v-b1f9e80e]{flex:1;min-width:0}.pe-hcell--act[data-v-b1f9e80e]{width:36px;flex-shrink:0}.pe-row[data-v-b1f9e80e]{display:flex;align-items:center;min-height:36px;border-bottom:1px solid var(--color-border);transition:background-color .12s}.pe-row[data-v-b1f9e80e]:last-of-type{border-bottom:1px solid var(--color-border)}.pe-row[data-v-b1f9e80e]:hover{background:var(--color-bg-subtle)}.pe-row--disabled[data-v-b1f9e80e]{opacity:.45}.pe-cell[data-v-b1f9e80e]{display:flex;align-items:center;padding:0 8px;min-height:36px}.pe-cell--check[data-v-b1f9e80e]{width:36px;flex-shrink:0;justify-content:center}.pe-cell--key[data-v-b1f9e80e]{flex:0 0 180px;border-right:1px solid var(--color-border)}.pe-cell--eq[data-v-b1f9e80e]{width:24px;flex-shrink:0;justify-content:center;font-family:var(--font-mono);font-size:12px;color:var(--color-text-muted)}.pe-cell--val[data-v-b1f9e80e]{flex:1;min-width:0}.pe-cell--act[data-v-b1f9e80e]{width:36px;flex-shrink:0;justify-content:center}.pe-input[data-v-b1f9e80e],.pe-autocomplete[data-v-b1f9e80e] .n-input{font-family:var(--font-mono);font-size:12.5px}.pe-autocomplete[data-v-b1f9e80e] .n-input .n-input__border,.pe-autocomplete[data-v-b1f9e80e] .n-input .n-input__state-border{border:none!important;box-shadow:none!important}.pe-del[data-v-b1f9e80e]{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:2px;border-radius:4px;cursor:pointer;color:#e5484d;opacity:0;transition:opacity .12s,background-color .12s}.pe-del[data-v-b1f9e80e]:disabled{color:#d1d5db;cursor:not-allowed}.pe-del[data-v-b1f9e80e]:not(:disabled):hover{background-color:#fee2e2}.pe-row:hover .pe-del[data-v-b1f9e80e]{opacity:1}.pe-add[data-v-b1f9e80e]{display:flex;align-items:center;gap:6px;height:34px;padding:0 12px;font-size:12px;color:var(--color-text-muted);cursor:pointer;transition:color .12s,background-color .12s}.pe-add[data-v-b1f9e80e]:hover{color:var(--color-primary, #2080f0);background:var(--color-bg-subtle)}.pe-add-icon[data-v-b1f9e80e]{width:14px;height:14px;flex-shrink:0}.jbe[data-v-4eb0272b]{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.jbe-toolbar[data-v-4eb0272b]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.jbe-hint[data-v-4eb0272b]{font-size:11px;color:var(--color-text-muted)}.jbe-hint--err[data-v-4eb0272b]{color:#ef4444}.jbe-wrap[data-v-4eb0272b]{padding:2px}.jbe-textarea[data-v-4eb0272b]{font-family:var(--font-mono);font-size:12.5px}.mp[data-v-dac4ff7c]{border:1px solid var(--color-border);border-radius:6px;overflow:hidden;font-size:13px}.mp-header[data-v-dac4ff7c]{display:flex;align-items:center;height:32px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border);font-size:12px;color:var(--color-text-muted);font-weight:500}.mp-hcell[data-v-dac4ff7c]{display:flex;align-items:center;padding:0 8px}.mp-hcell--check[data-v-dac4ff7c]{width:36px;flex-shrink:0}.mp-hcell--key[data-v-dac4ff7c]{flex:0 0 160px}.mp-hcell--type[data-v-dac4ff7c]{width:80px;flex-shrink:0}.mp-hcell--val[data-v-dac4ff7c]{flex:1;min-width:0}.mp-hcell--act[data-v-dac4ff7c]{width:36px;flex-shrink:0}.mp-row[data-v-dac4ff7c]{display:flex;align-items:center;min-height:36px;border-bottom:1px solid var(--color-border);transition:background-color .12s}.mp-row[data-v-dac4ff7c]:hover{background:var(--color-bg-subtle)}.mp-row--disabled[data-v-dac4ff7c]{opacity:.45}.mp-cell[data-v-dac4ff7c]{display:flex;align-items:center;padding:0 8px;min-height:36px}.mp-cell--check[data-v-dac4ff7c]{width:36px;flex-shrink:0;justify-content:center}.mp-cell--key[data-v-dac4ff7c]{flex:0 0 160px;border-right:1px solid var(--color-border)}.mp-cell--type[data-v-dac4ff7c]{width:80px;flex-shrink:0;border-right:1px solid var(--color-border)}.mp-cell--val[data-v-dac4ff7c]{flex:1;min-width:0}.mp-cell--act[data-v-dac4ff7c]{width:36px;flex-shrink:0;justify-content:center}.mp-input[data-v-dac4ff7c]{font-family:var(--font-mono);font-size:12.5px}.mp-file-row[data-v-dac4ff7c]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.mp-file-btn[data-v-dac4ff7c]{font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mp-file-size[data-v-dac4ff7c]{font-size:10px;color:var(--color-text-muted);flex-shrink:0}.mp-del[data-v-dac4ff7c]{display:flex;align-items:center;justify-content:center;background:none;border:none;padding:2px;border-radius:4px;cursor:pointer;color:#e5484d;opacity:0;transition:opacity .12s,background-color .12s}.mp-del[data-v-dac4ff7c]:hover{background-color:#fee2e2}.mp-row:hover .mp-del[data-v-dac4ff7c]{opacity:1}.mp-footer[data-v-dac4ff7c]{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 12px}.mp-add-btns[data-v-dac4ff7c]{display:flex;align-items:center;gap:0}.mp-add[data-v-dac4ff7c]{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--color-text-muted);cursor:pointer;padding:2px 8px;border-radius:4px;transition:color .12s,background-color .12s}.mp-add[data-v-dac4ff7c]:hover{color:var(--color-primary, #2080f0);background:var(--color-bg-subtle)}.mp-add-icon[data-v-dac4ff7c]{width:14px;height:14px;flex-shrink:0}.mp-divider[data-v-dac4ff7c]{width:1px;height:14px;background:var(--color-border);margin:0 4px}.mp-stats[data-v-dac4ff7c]{font-size:11px;color:var(--color-text-muted)}.xbe[data-v-893f3881]{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.xbe-toolbar[data-v-893f3881]{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.xbe-hint[data-v-893f3881]{font-size:11px;color:var(--color-text-muted)}.xbe-hint--err[data-v-893f3881]{color:#ef4444}.xbe-wrap[data-v-893f3881]{padding:2px}.xbe-textarea[data-v-893f3881]{font-family:var(--font-mono);font-size:12.5px}.bbe[data-v-eed78a60]{display:flex;flex-direction:column;gap:10px;padding:4px 0}.bbe-file[data-v-eed78a60]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:6px;font-size:12px;color:var(--color-text)}.bbe-name[data-v-eed78a60]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono)}.bbe-size[data-v-eed78a60]{color:var(--color-text-muted);flex-shrink:0}.bbe-clear[data-v-eed78a60]{background:none;border:none;cursor:pointer;color:var(--color-text-muted);padding:0;font-size:11px;line-height:1}.bbe-clear[data-v-eed78a60]:hover{color:#ef4444}.body-editor[data-v-aa464c78]{display:flex;flex-direction:column;gap:10px}.type-pills[data-v-aa464c78]{display:flex;align-items:center;gap:0;border:1px solid var(--color-border);border-radius:6px;overflow:hidden;background:var(--color-bg-subtle)}.pill[data-v-aa464c78]{flex:none;padding:5px 14px;font-size:12px;font-weight:500;line-height:1;color:var(--color-text-muted);background:transparent;border:none;border-right:1px solid var(--color-border);cursor:pointer;transition:color .12s,background-color .12s;white-space:nowrap}.pill[data-v-aa464c78]:last-child{border-right:none}.pill[data-v-aa464c78]:hover{color:var(--color-text);background:var(--color-bg)}.pill--active[data-v-aa464c78],.pill--active[data-v-aa464c78]:hover{color:#fff;background:var(--color-primary, #2080f0)}.editor-wrap[data-v-aa464c78]{padding-top:2px}.body-none[data-v-aa464c78]{padding:16px 0;font-size:12px;color:var(--color-text-muted)}.request-form[data-v-ce7ed1a9]{display:flex;flex-direction:column;gap:12px}.url-bar[data-v-ce7ed1a9]{display:flex;gap:0;align-items:stretch;border:1px solid var(--color-border);border-radius:6px;overflow:hidden;height:36px}.method-badge[data-v-ce7ed1a9]{display:flex;align-items:center;justify-content:center;min-width:64px;padding:0 12px;font-family:var(--font-mono);font-size:12px;font-weight:700;background:var(--color-bg-subtle);border-right:1px solid var(--color-border);flex-shrink:0;-webkit-user-select:none;user-select:none}.url-input[data-v-ce7ed1a9]{flex:1;font-family:var(--font-mono);font-size:13px}.url-input[data-v-ce7ed1a9] .n-input__border,.url-input[data-v-ce7ed1a9] .n-input__state-border{border:none!important;box-shadow:none!important}.send-btn[data-v-ce7ed1a9]{flex-shrink:0;border-radius:0;height:100%;min-width:64px;border:none;border-left:1px solid var(--color-border)}.req-toolbar[data-v-ce7ed1a9]{display:flex;align-items:center}.sub-tabs[data-v-ce7ed1a9]{margin-top:0}.tab-placeholder[data-v-ce7ed1a9]{padding:16px 0;font-size:12px;color:var(--color-text-muted)}.auth-hint[data-v-ce7ed1a9]{font-size:11px;color:var(--color-text-muted);margin-bottom:4px}.curl-wrap[data-v-ce7ed1a9]{position:relative}.curl-code[data-v-ce7ed1a9]{margin:0;padding:12px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:6px;font-family:var(--font-mono);font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-all;color:var(--color-text);max-height:400px;overflow:auto}.curl-actions[data-v-ce7ed1a9]{position:absolute;top:8px;right:8px}.tab-with-badge{display:inline-flex;align-items:center;gap:5px}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:1;border-radius:8px;color:#10b981;background:#10b98118}.json-highlight[data-v-aec27471]{position:relative;border-radius:6px;overflow:hidden;border:1px solid var(--color-border);background:var(--color-bg)}.toolbar[data-v-aec27471]{display:flex;align-items:center;justify-content:space-between;padding:4px 10px;border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle)}.lang-label[data-v-aec27471]{font-family:var(--font-mono);font-size:11px;color:var(--color-text-muted)}.copy-btn[data-v-aec27471]{font-size:12px;opacity:0;transition:opacity .12s}.json-highlight:hover .copy-btn[data-v-aec27471]{opacity:1}.code-wrap[data-v-aec27471]{overflow:auto;position:relative}.code-wrap.collapsed[data-v-aec27471]{max-height:480px;overflow:hidden}pre.hljs[data-v-aec27471]{margin:0;padding:12px 14px;font-family:var(--font-mono);font-size:12.5px;line-height:1.6;background:transparent!important;overflow:visible}.fade-mask[data-v-aec27471]{position:absolute;bottom:0;left:0;right:0;height:100px;background:linear-gradient(transparent,var(--color-bg));display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px}.collapse-btn-row[data-v-aec27471]{display:flex;justify-content:center;padding:6px;border-top:1px solid var(--color-border)}.image-view[data-v-b9fd1d77]{display:flex;flex-direction:column;gap:10px;padding:8px}.preview-img[data-v-b9fd1d77]{max-width:100%;max-height:400px;object-fit:contain;border-radius:4px;border:1px solid var(--color-border)}.meta[data-v-b9fd1d77]{font-size:12px}.download-link[data-v-b9fd1d77]{color:var(--color-primary);text-decoration:none}.download-link[data-v-b9fd1d77]:hover{text-decoration:underline}.raw-view[data-v-30120298]{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.toolbar[data-v-30120298]{display:flex;justify-content:space-between;align-items:center;padding:4px 10px;border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);font-size:11px}.hint[data-v-30120298]{font-family:var(--font-mono);color:var(--color-text-muted)}.raw-body[data-v-30120298]{margin:0;padding:12px 14px;font-family:var(--font-mono);font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-all;overflow-x:auto;background:var(--color-bg);color:var(--color-text)}.response-viewer[data-v-9c1034fa]{display:flex;flex-direction:column;gap:10px;min-height:120px}.state-center[data-v-9c1034fa]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 0}.state-hint[data-v-9c1034fa]{font-size:12px;color:var(--color-text-muted)}.status-bar[data-v-9c1034fa]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.body-wrap[data-v-9c1034fa]{padding-top:8px}.headers-pre[data-v-9c1034fa]{margin:0;padding:12px;font-family:var(--font-mono);font-size:12px;line-height:1.6;background:var(--color-bg-subtle);border-radius:6px;white-space:pre-wrap;color:var(--color-text-muted)}.history-list[data-v-3eb2aa31]{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.list-header[data-v-3eb2aa31]{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.list-title[data-v-3eb2aa31]{font-size:12px;font-weight:600;color:var(--color-text-muted)}.search-bar[data-v-3eb2aa31]{padding:6px 10px;border-bottom:1px solid var(--color-border)}.empty-state[data-v-3eb2aa31]{padding:20px 0;display:flex;justify-content:center}.history-item[data-v-3eb2aa31]{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 8px 6px 10px;cursor:pointer;border-bottom:1px solid var(--color-border);transition:background-color .1s}.history-item[data-v-3eb2aa31]:hover,.history-item--expanded[data-v-3eb2aa31]{background-color:var(--color-bg-subtle)}.item-left[data-v-3eb2aa31]{display:flex;align-items:center;gap:4px;min-width:0;flex:1}.item-path[data-v-3eb2aa31]{font-family:var(--font-mono);font-size:12px;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-right[data-v-3eb2aa31]{display:flex;align-items:center;gap:4px;flex-shrink:0}.item-status[data-v-3eb2aa31]{font-family:var(--font-mono);font-size:11px;font-weight:600}.item-duration[data-v-3eb2aa31]{font-size:11px;color:var(--color-text-muted);font-family:var(--font-mono)}.item-time[data-v-3eb2aa31]{font-size:10px;color:var(--color-text-muted);letter-spacing:-.02em}.action-btn[data-v-3eb2aa31]{opacity:0;transition:opacity .1s;color:var(--color-text-muted)}.del-btn[data-v-3eb2aa31]:hover{color:#ef4444!important}.history-item:hover .action-btn[data-v-3eb2aa31]{opacity:1}.history-detail[data-v-3eb2aa31]{border-bottom:1px solid var(--color-border);background:var(--color-bg)}.detail-section[data-v-3eb2aa31]{padding:8px 12px}.detail-section--response[data-v-3eb2aa31]{border-top:1px solid var(--color-border)}.detail-section-header[data-v-3eb2aa31]{display:flex;align-items:center;gap:8px;margin-bottom:8px}.detail-section-title[data-v-3eb2aa31]{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.detail-status-text[data-v-3eb2aa31]{font-family:var(--font-mono);font-size:11px;font-weight:600}.detail-duration[data-v-3eb2aa31]{font-family:var(--font-mono);font-size:11px;color:var(--color-text-muted);margin-left:auto}.detail-url[data-v-3eb2aa31]{display:flex;align-items:center;gap:4px;margin-bottom:6px;padding:4px 8px;background:var(--color-bg-subtle);border-radius:4px;border:1px solid var(--color-border)}.detail-url-text[data-v-3eb2aa31]{font-family:var(--font-mono);font-size:11px;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.detail-block[data-v-3eb2aa31]{margin-bottom:6px}.detail-block[data-v-3eb2aa31]:last-child{margin-bottom:0}.detail-block-header[data-v-3eb2aa31]{display:flex;align-items:center;justify-content:space-between;padding:2px 0;margin-bottom:2px}.detail-label[data-v-3eb2aa31]{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.detail-pre[data-v-3eb2aa31]{margin:0;padding:6px 8px;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--color-text);background:var(--color-code-bg);border:1px solid var(--color-border);border-radius:4px;white-space:pre-wrap;word-break:break-all;max-height:140px;overflow-y:auto}.debug-panel[data-v-06806249]{display:flex;flex-direction:column}.empty-state[data-v-06806249]{padding:32px 0;display:flex;justify-content:center}.panel-section[data-v-06806249]{padding:16px 0}.divider[data-v-06806249]{height:1px;background:var(--color-border)}.response-row[data-v-06806249]{display:flex;flex-direction:row;align-items:flex-start;gap:0;padding:16px 0}.response-main[data-v-06806249]{flex:1;min-width:0}.history-side[data-v-06806249]{display:flex;flex-direction:row;flex-shrink:0;border-left:1px solid var(--color-border);margin-left:12px;align-self:stretch}.history-toggle[data-v-06806249]{width:24px;height:100%;min-height:60px;border:none;background:var(--color-bg-subtle);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;padding:8px 0;color:var(--color-text-muted);transition:background-color .12s,color .12s}.history-toggle[data-v-06806249]:hover{background:var(--color-bg);color:var(--color-text)}.toggle-icon[data-v-06806249]{flex-shrink:0;transition:transform .2s ease}.toggle-icon--open[data-v-06806249]{transform:rotate(180deg)}.toggle-label[data-v-06806249]{writing-mode:vertical-rl;font-size:11px;font-weight:500;letter-spacing:.08em;color:var(--color-text-muted);-webkit-user-select:none;user-select:none}.history-body[data-v-06806249]{width:280px;padding-left:12px}.endpoint-detail[data-v-7c521787]{flex:1;height:100%}.detail-inner[data-v-7c521787]{padding:24px;min-height:100%;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;margin:16px}.endpoint-header[data-v-7c521787]{margin-bottom:20px}.endpoint-title-row[data-v-7c521787]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.endpoint-path[data-v-7c521787]{font-family:var(--font-mono);font-size:15px;color:var(--color-text);word-break:break-all}.endpoint-summary[data-v-7c521787]{font-size:14px;font-weight:500;color:var(--color-text);margin-bottom:4px}.endpoint-description[data-v-7c521787]{font-size:13px;color:var(--color-text-muted);line-height:1.6;white-space:pre-wrap}.detail-tabs[data-v-7c521787]{margin-top:4px}.tab-empty[data-v-7c521787]{padding:32px 0;display:flex;justify-content:center}.media-type-selector[data-v-7c521787]{display:flex;align-items:center;gap:10px;padding:12px 0}.schema-section[data-v-7c521787]{padding-top:8px}.param-group[data-v-7c521787]{margin-bottom:16px;border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.param-group[data-v-7c521787]:last-child{margin-bottom:0}.param-group-header[data-v-7c521787]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.param-group-header--clickable[data-v-7c521787]{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .12s}.param-group-header--clickable[data-v-7c521787]:hover{background:var(--color-bg-subtle-hover, var(--color-border))}.collapse-arrow[data-v-7c521787]{flex-shrink:0;color:var(--color-text-muted);transition:transform .2s}.collapse-arrow--collapsed[data-v-7c521787]{transform:rotate(-90deg)}.param-group-dot[data-v-7c521787]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.param-group-label[data-v-7c521787]{font-size:13px;font-weight:600;color:var(--color-text)}.param-group-count[data-v-7c521787]{font-size:11px;color:var(--color-text-muted);background:var(--color-bg);padding:0 6px;border-radius:8px;line-height:18px}.param-group[data-v-7c521787] .n-data-table{border-radius:0}.param-group[data-v-7c521787] .n-data-table .n-data-table-wrapper{border:none}.resp-media-tag[data-v-7c521787]{font-size:11px;font-family:var(--font-mono);color:#64748b;background:#64748b18;padding:1px 6px;border-radius:4px}.resp-desc-text[data-v-7c521787]{font-size:12px;color:var(--color-text-muted);margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.resp-no-schema[data-v-7c521787]{font-size:12px;color:var(--color-text-muted);padding:12px 16px}.param-group .example-block[data-v-7c521787]{margin-top:0;border-left:none;border-right:none;border-bottom:none;border-radius:0}.example-block[data-v-7c521787]{margin-top:16px;border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.example-header[data-v-7c521787]{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border)}.example-title[data-v-7c521787]{font-size:12px;font-weight:500;color:var(--color-text-muted)}.example-status[data-v-7c521787]{font-family:var(--font-mono);font-size:11px;color:#10b981;background:#10b98118;padding:1px 5px;border-radius:3px;margin-left:6px}.example-code[data-v-7c521787]{padding:12px;margin:0;font-family:var(--font-mono);font-size:12px;line-height:1.6;color:var(--color-text);background:var(--color-code-bg);overflow-x:auto;white-space:pre;max-height:400px}[data-v-7c521787] tr.row-depth-1 td{background-color:#6366f10f!important}[data-v-7c521787] tr.row-depth-2 td{background-color:#10b9810f!important}[data-v-7c521787] tr.row-depth-3 td{background-color:#f59e0b0f!important}[data-v-7c521787] tr.row-depth-4 td{background-color:#0ea5e90f!important}[data-v-7c521787] .n-data-table-td .n-ellipsis{max-width:calc(100% - var(--indent-offset, -1.2) * 20px - 24px)!important}.main-content[data-v-c1db5596]{flex:1;overflow-y:auto;background-color:var(--color-bg-subtle)}.state-center[data-v-c1db5596]{height:100%;display:flex;align-items:center;justify-content:center}.welcome-inner[data-v-c1db5596]{text-align:center}.welcome-title[data-v-c1db5596]{font-size:28px;font-weight:600;color:var(--color-text);margin-bottom:8px}.welcome-desc[data-v-c1db5596]{font-size:15px;color:var(--color-text-muted);margin-bottom:24px}.muted-hint[data-v-c1db5596]{font-size:13px;color:var(--color-text-muted)}.error-box[data-v-c1db5596]{text-align:center;max-width:480px}.drop-zone[data-v-a2ec0b82]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:200px;border:1.5px dashed var(--color-border);border-radius:8px;cursor:pointer;transition:border-color .15s,background-color .15s;position:relative;background-color:var(--color-bg-subtle)}.drop-zone[data-v-a2ec0b82]:hover,.drop-zone.dragging[data-v-a2ec0b82]{border-color:var(--color-primary);background-color:var(--color-primary-soft)}.drop-zone.dragging .drop-icon[data-v-a2ec0b82]{color:var(--color-primary)}.file-input[data-v-a2ec0b82]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%;height:100%}.drop-icon[data-v-a2ec0b82]{color:var(--color-text-muted);transition:color .15s}.drop-zone:hover .drop-icon[data-v-a2ec0b82]{color:var(--color-primary)}.drop-text[data-v-a2ec0b82]{font-size:13px;color:var(--color-text);font-weight:500}.drop-hint[data-v-a2ec0b82]{font-size:12px;color:var(--color-text-muted)}.url-tab[data-v-a2ec0b82]{display:flex;flex-direction:column;gap:8px;padding:4px 0}.url-actions[data-v-a2ec0b82]{display:flex;justify-content:flex-end;padding-top:6px}.app-root[data-v-5f3a51f0]{display:flex;flex-direction:column;height:100vh;overflow:hidden;background-color:var(--color-bg);color:var(--color-text)}.app-body[data-v-5f3a51f0]{display:flex;flex:1;overflow:hidden}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;width:100%}body{font-family:var(--font-sans);font-size:13px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--font-sans: "Inter", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--color-primary: #3b82f6;--color-primary-soft: #eff6ff;--color-bg: #ffffff;--color-bg-subtle: #f8fafc;--color-border: #e2e8f0;--color-text: #0f172a;--color-text-muted: #64748b;--color-code-bg: #f1f5f9;--color-success: #10b981;--color-success-soft: #ecfdf5;--color-warning: #f59e0b;--color-warning-soft: #fffbeb;--color-danger: #ef4444;--color-danger-soft: #fef2f2;--color-get: #10b981;--color-post: #3b82f6;--color-put: #f59e0b;--color-patch: #8b5cf6;--color-delete: #ef4444;--color-head: #94a3b8;--color-options: #94a3b8;--sidebar-width: 440px;--header-height: 44px}[data-theme=dark]{--color-primary: #60a5fa;--color-primary-soft: #1e3a5f;--color-bg: #0f1117;--color-bg-subtle: #161b27;--color-border: #1e2433;--color-text: #f1f5f9;--color-text-muted: #64748b;--color-code-bg: #161b27;--color-success: #34d399;--color-success-soft: #022c22;--color-warning: #fbbf24;--color-warning-soft: #1c1400;--color-danger: #f87171;--color-danger-soft: #2d0a0a;--color-get: #34d399;--color-post: #60a5fa;--color-put: #fbbf24;--color-patch: #a78bfa;--color-delete: #f87171}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.font-mono{font-family:var(--font-mono)}.text-muted{color:var(--color-text-muted)}:root .n-popover{--n-color: #ffffff !important;--n-text-color: #0f172a !important;--n-border-radius: 6px !important;--n-box-shadow: 0 4px 16px rgba(0, 0, 0, .08) !important}[data-theme=dark] .n-popover{--n-color: #1e2433 !important;--n-text-color: #e2e8f0 !important;--n-border-radius: 6px !important;--n-box-shadow: 0 4px 16px rgba(0, 0, 0, .4) !important}.fade-enter-active,.fade-leave-active{transition:opacity .1s ease-out}.fade-enter-from,.fade-leave-to{opacity:0}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@braydenyang/fdoc",
3
+ "version": "0.1.0",
4
+ "description": "Embeddable OpenAPI 3.x documentation & debug UI",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "openapi",
8
+ "swagger",
9
+ "docs",
10
+ "vue"
11
+ ],
12
+ "type": "module",
13
+ "files": [
14
+ "dist/lib"
15
+ ],
16
+ "dependencies": {
17
+ "highlight.js": "^11.10.0",
18
+ "naive-ui": "^2.40.3",
19
+ "pinia": "^2.2.6",
20
+ "vue": "^3.5.13",
21
+ "vue-router": "^4.5.0"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^25.5.0",
25
+ "@vitejs/plugin-vue": "^5.2.1",
26
+ "eslint": "^9.17.0",
27
+ "eslint-config-prettier": "^9.1.0",
28
+ "eslint-plugin-vue": "^9.32.0",
29
+ "prettier": "^3.4.2",
30
+ "typescript": "^5.7.2",
31
+ "typescript-eslint": "^8.19.1",
32
+ "unplugin-auto-import": "^0.18.6",
33
+ "unplugin-vue-components": "^0.27.5",
34
+ "vite": "^5.4.11",
35
+ "vite-plugin-html": "^3.2.2",
36
+ "vite-plugin-singlefile": "^2.3.0",
37
+ "vue-tsc": "^2.1.10"
38
+ },
39
+ "scripts": {
40
+ "dev": "vite",
41
+ "build": "vue-tsc --noEmit && vite build",
42
+ "build:cdn": "vue-tsc --noEmit && vite build --mode cdn",
43
+ "build:lib": "vue-tsc --noEmit && vite build --mode lib",
44
+ "preview": "vite preview",
45
+ "preview:cdn": "open dist/index.html",
46
+ "format": "prettier --write \"src/**/*.{ts,vue,css,json}\"",
47
+ "lint": "eslint src --ext .ts,.vue",
48
+ "lint:fix": "eslint src --ext .ts,.vue --fix",
49
+ "type-check": "vue-tsc --noEmit",
50
+ "release": "pnpm publish --access public --no-git-checks"
51
+ }
52
+ }